//===- DataLayoutImporter.h - LLVM to MLIR data layout conversion -*- C++ -*-=// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // This file implements the translation between the LLVMIR data layout and the // corresponding MLIR representation. // //===----------------------------------------------------------------------===// #ifndef MLIR_LIB_TARGET_LLVMIR_DATALAYOUTIMPORTER_H_ #define MLIR_LIB_TARGET_LLVMIR_DATALAYOUTIMPORTER_H_ #include "mlir/Dialect/LLVMIR/LLVMTypes.h" #include "mlir/IR/BuiltinAttributes.h" #include "mlir/Interfaces/DataLayoutInterfaces.h" namespace llvm { class StringRef; class DataLayout; } // namespace llvm namespace mlir { class FloatType; class MLIRContext; class Operation; namespace LLVM { class LLVMFuncOp; namespace detail { /// Returns a supported MLIR floating point type of the given bit width or /// null if the bit width is not supported. FloatType getFloatType(MLIRContext *context, unsigned width); /// Helper class that translates an LLVM data layout to an MLIR data layout /// specification. Only integer, float, pointer, alloca memory space, stack /// alignment, and endianness entries are translated. The class also returns all /// entries from the default data layout specification found in the language /// reference (https://llvm.org/docs/LangRef.html#data-layout) if they are not /// overwritten by the provided data layout. class DataLayoutImporter { … }; } // namespace detail } // namespace LLVM } // namespace mlir #endif // MLIR_LIB_TARGET_LLVMIR_DATALAYOUTIMPORTER_H_