//===- TypeConverter.h - Convert builtin to LLVM dialect types --*- 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 // //===----------------------------------------------------------------------===// // // Provides a type converter configuration for converting most builtin types to // LLVM dialect types. // //===----------------------------------------------------------------------===// #ifndef MLIR_CONVERSION_LLVMCOMMON_TYPECONVERTER_H #define MLIR_CONVERSION_LLVMCOMMON_TYPECONVERTER_H #include "mlir/Conversion/LLVMCommon/LoweringOptions.h" #include "mlir/IR/BuiltinTypes.h" #include "mlir/Transforms/DialectConversion.h" namespace mlir { class DataLayoutAnalysis; class FunctionOpInterface; class LowerToLLVMOptions; namespace LLVM { class LLVMDialect; class LLVMPointerType; class LLVMFunctionType; class LLVMStructType; } // namespace LLVM /// Conversion from types to the LLVM IR dialect. class LLVMTypeConverter : public TypeConverter { … }; /// Callback to convert function argument types. It converts a MemRef function /// argument to a list of non-aggregate types containing descriptor /// information, and an UnrankedmemRef function argument to a list containing /// the rank and a pointer to a descriptor struct. LogicalResult structFuncArgTypeConverter(const LLVMTypeConverter &converter, Type type, SmallVectorImpl<Type> &result); /// Callback to convert function argument types. It converts MemRef function /// arguments to bare pointers to the MemRef element type. LogicalResult barePtrFuncArgTypeConverter(const LLVMTypeConverter &converter, Type type, SmallVectorImpl<Type> &result); } // namespace mlir #endif // MLIR_CONVERSION_LLVMCOMMON_TYPECONVERTER_H