/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\ |* *| |* Interface Declarations *| |* *| |* Automatically generated file, do not edit! *| |* *| \*===----------------------------------------------------------------------===*/ namespace mlir { /// Interface for operations that can have a data layout specification attached. /// /// The `DataLayout` object, which can be used for data layout queries, can be /// constructed for such operations. The absence of a data layout specification /// must be handled without failing. /// /// Concrete operations must implement the hook returning the data layout /// specification. They may optionally override the methods used in data layout /// queries, default implementations of which provide predefined answers for /// built-in types and dispatch to the type interface for all other types. These /// methods must be idempotent, that is return the same result on repeated /// queries with the same parameters. They are declared static and therefore /// have no access to the operation or its attributes. Instead, they receive a /// list of data layout entries relevant to the request. The entries are known /// to have passed the spec and entry verifier. class DataLayoutOpInterface; } // namespace mlir namespace mlir { /// Interface for operations that can have a data layout specification attached. /// /// The `DataLayout` object, which can be used for data layout queries, can be /// constructed for such operations. The absence of a data layout specification /// must be handled without failing. /// /// Concrete operations must implement the hook returning the data layout /// specification. They may optionally override the methods used in data layout /// queries, default implementations of which provide predefined answers for /// built-in types and dispatch to the type interface for all other types. These /// methods must be idempotent, that is return the same result on repeated /// queries with the same parameters. They are declared static and therefore /// have no access to the operation or its attributes. Instead, they receive a /// list of data layout entries relevant to the request. The entries are known /// to have passed the spec and entry verifier. namespace detail { struct DataLayoutOpInterfaceInterfaceTraits { struct Concept { /// The methods defined by the interface. ::mlir::DataLayoutSpecInterface (*getDataLayoutSpec)(const Concept *impl, ::mlir::Operation *); ::mlir::TargetSystemSpecInterface (*getTargetSystemSpec)(const Concept *impl, ::mlir::Operation *); ::llvm::TypeSize (*getTypeSize)(::mlir::Type, const ::mlir::DataLayout &, ::mlir::DataLayoutEntryListRef); ::llvm::TypeSize (*getTypeSizeInBits)(::mlir::Type, const ::mlir::DataLayout &, ::mlir::DataLayoutEntryListRef); uint64_t (*getTypeABIAlignment)(::mlir::Type, const ::mlir::DataLayout &, ::mlir::DataLayoutEntryListRef); uint64_t (*getTypePreferredAlignment)(::mlir::Type, const ::mlir::DataLayout &, ::mlir::DataLayoutEntryListRef); std::optional (*getIndexBitwidth)(::mlir::Type, const ::mlir::DataLayout &, ::mlir::DataLayoutEntryListRef); ::mlir::Attribute (*getEndianness)(::mlir::DataLayoutEntryInterface); ::mlir::Attribute (*getDefaultMemorySpace)(::mlir::DataLayoutEntryInterface); ::mlir::Attribute (*getAllocaMemorySpace)(::mlir::DataLayoutEntryInterface); ::mlir::Attribute (*getManglingMode)(::mlir::DataLayoutEntryInterface); ::mlir::Attribute (*getProgramMemorySpace)(::mlir::DataLayoutEntryInterface); ::mlir::Attribute (*getGlobalMemorySpace)(::mlir::DataLayoutEntryInterface); uint64_t (*getStackAlignment)(::mlir::DataLayoutEntryInterface); Attribute (*getFunctionPointerAlignment)(::mlir::DataLayoutEntryInterface); Attribute (*getLegalIntWidths)(::mlir::DataLayoutEntryInterface); std::optional (*getDevicePropertyValue)(::mlir::DataLayoutEntryInterface); }; template class Model : public Concept { public: using Interface = ::mlir::DataLayoutOpInterface; Model() : Concept{getDataLayoutSpec, getTargetSystemSpec, getTypeSize, getTypeSizeInBits, getTypeABIAlignment, getTypePreferredAlignment, getIndexBitwidth, getEndianness, getDefaultMemorySpace, getAllocaMemorySpace, getManglingMode, getProgramMemorySpace, getGlobalMemorySpace, getStackAlignment, getFunctionPointerAlignment, getLegalIntWidths, getDevicePropertyValue} {} static inline ::mlir::DataLayoutSpecInterface getDataLayoutSpec(const Concept *impl, ::mlir::Operation *tablegen_opaque_val); static inline ::mlir::TargetSystemSpecInterface getTargetSystemSpec(const Concept *impl, ::mlir::Operation *tablegen_opaque_val); static inline ::llvm::TypeSize getTypeSize(::mlir::Type type, const ::mlir::DataLayout & dataLayout, ::mlir::DataLayoutEntryListRef params); static inline ::llvm::TypeSize getTypeSizeInBits(::mlir::Type type, const ::mlir::DataLayout & dataLayout, ::mlir::DataLayoutEntryListRef params); static inline uint64_t getTypeABIAlignment(::mlir::Type type, const ::mlir::DataLayout & dataLayout, ::mlir::DataLayoutEntryListRef params); static inline uint64_t getTypePreferredAlignment(::mlir::Type type, const ::mlir::DataLayout & dataLayout, ::mlir::DataLayoutEntryListRef params); static inline std::optional getIndexBitwidth(::mlir::Type type, const ::mlir::DataLayout & dataLayout, ::mlir::DataLayoutEntryListRef params); static inline ::mlir::Attribute getEndianness(::mlir::DataLayoutEntryInterface entry); static inline ::mlir::Attribute getDefaultMemorySpace(::mlir::DataLayoutEntryInterface entry); static inline ::mlir::Attribute getAllocaMemorySpace(::mlir::DataLayoutEntryInterface entry); static inline ::mlir::Attribute getManglingMode(::mlir::DataLayoutEntryInterface entry); static inline ::mlir::Attribute getProgramMemorySpace(::mlir::DataLayoutEntryInterface entry); static inline ::mlir::Attribute getGlobalMemorySpace(::mlir::DataLayoutEntryInterface entry); static inline uint64_t getStackAlignment(::mlir::DataLayoutEntryInterface entry); static inline Attribute getFunctionPointerAlignment(::mlir::DataLayoutEntryInterface entry); static inline Attribute getLegalIntWidths(::mlir::DataLayoutEntryInterface entry); static inline std::optional getDevicePropertyValue(::mlir::DataLayoutEntryInterface entry); }; template class FallbackModel : public Concept { public: using Interface = ::mlir::DataLayoutOpInterface; FallbackModel() : Concept{getDataLayoutSpec, getTargetSystemSpec, getTypeSize, getTypeSizeInBits, getTypeABIAlignment, getTypePreferredAlignment, getIndexBitwidth, getEndianness, getDefaultMemorySpace, getAllocaMemorySpace, getManglingMode, getProgramMemorySpace, getGlobalMemorySpace, getStackAlignment, getFunctionPointerAlignment, getLegalIntWidths, getDevicePropertyValue} {} static inline ::mlir::DataLayoutSpecInterface getDataLayoutSpec(const Concept *impl, ::mlir::Operation *tablegen_opaque_val); static inline ::mlir::TargetSystemSpecInterface getTargetSystemSpec(const Concept *impl, ::mlir::Operation *tablegen_opaque_val); static inline ::llvm::TypeSize getTypeSize(::mlir::Type type, const ::mlir::DataLayout & dataLayout, ::mlir::DataLayoutEntryListRef params); static inline ::llvm::TypeSize getTypeSizeInBits(::mlir::Type type, const ::mlir::DataLayout & dataLayout, ::mlir::DataLayoutEntryListRef params); static inline uint64_t getTypeABIAlignment(::mlir::Type type, const ::mlir::DataLayout & dataLayout, ::mlir::DataLayoutEntryListRef params); static inline uint64_t getTypePreferredAlignment(::mlir::Type type, const ::mlir::DataLayout & dataLayout, ::mlir::DataLayoutEntryListRef params); static inline std::optional getIndexBitwidth(::mlir::Type type, const ::mlir::DataLayout & dataLayout, ::mlir::DataLayoutEntryListRef params); static inline ::mlir::Attribute getEndianness(::mlir::DataLayoutEntryInterface entry); static inline ::mlir::Attribute getDefaultMemorySpace(::mlir::DataLayoutEntryInterface entry); static inline ::mlir::Attribute getAllocaMemorySpace(::mlir::DataLayoutEntryInterface entry); static inline ::mlir::Attribute getManglingMode(::mlir::DataLayoutEntryInterface entry); static inline ::mlir::Attribute getProgramMemorySpace(::mlir::DataLayoutEntryInterface entry); static inline ::mlir::Attribute getGlobalMemorySpace(::mlir::DataLayoutEntryInterface entry); static inline uint64_t getStackAlignment(::mlir::DataLayoutEntryInterface entry); static inline Attribute getFunctionPointerAlignment(::mlir::DataLayoutEntryInterface entry); static inline Attribute getLegalIntWidths(::mlir::DataLayoutEntryInterface entry); static inline std::optional getDevicePropertyValue(::mlir::DataLayoutEntryInterface entry); }; template class ExternalModel : public FallbackModel { public: using ConcreteEntity = ConcreteOp; static ::llvm::TypeSize getTypeSize(::mlir::Type type, const ::mlir::DataLayout &dataLayout, ::mlir::DataLayoutEntryListRef params); static ::llvm::TypeSize getTypeSizeInBits(::mlir::Type type, const ::mlir::DataLayout &dataLayout, ::mlir::DataLayoutEntryListRef params); static uint64_t getTypeABIAlignment(::mlir::Type type, const ::mlir::DataLayout &dataLayout, ::mlir::DataLayoutEntryListRef params); static uint64_t getTypePreferredAlignment(::mlir::Type type, const ::mlir::DataLayout &dataLayout, ::mlir::DataLayoutEntryListRef params); static std::optional getIndexBitwidth(::mlir::Type type, const ::mlir::DataLayout &dataLayout, ::mlir::DataLayoutEntryListRef params); static ::mlir::Attribute getEndianness(::mlir::DataLayoutEntryInterface entry); static ::mlir::Attribute getDefaultMemorySpace(::mlir::DataLayoutEntryInterface entry); static ::mlir::Attribute getAllocaMemorySpace(::mlir::DataLayoutEntryInterface entry); static ::mlir::Attribute getManglingMode(::mlir::DataLayoutEntryInterface entry); static ::mlir::Attribute getProgramMemorySpace(::mlir::DataLayoutEntryInterface entry); static ::mlir::Attribute getGlobalMemorySpace(::mlir::DataLayoutEntryInterface entry); static uint64_t getStackAlignment(::mlir::DataLayoutEntryInterface entry); static Attribute getFunctionPointerAlignment(::mlir::DataLayoutEntryInterface entry); static Attribute getLegalIntWidths(::mlir::DataLayoutEntryInterface entry); static std::optional getDevicePropertyValue(::mlir::DataLayoutEntryInterface entry); }; }; template struct DataLayoutOpInterfaceTrait; } // namespace detail class DataLayoutOpInterface : public ::mlir::OpInterface { public: using ::mlir::OpInterface::OpInterface; template struct Trait : public detail::DataLayoutOpInterfaceTrait {}; /// Returns the data layout specification for this op, or null if it does not exist. ::mlir::DataLayoutSpecInterface getDataLayoutSpec(); /// Returns the target system desc specification for this op, or null if it does not exist. ::mlir::TargetSystemSpecInterface getTargetSystemSpec(); /// Returns the size of the given type computed using the relevant entries. The data layout object can be used for recursive queries. ::llvm::TypeSize getTypeSize(::mlir::Type type, const ::mlir::DataLayout & dataLayout, ::mlir::DataLayoutEntryListRef params); /// Returns the size of the given type in bits computed using the relevant entries. The data layout object can be used for recursive queries. ::llvm::TypeSize getTypeSizeInBits(::mlir::Type type, const ::mlir::DataLayout & dataLayout, ::mlir::DataLayoutEntryListRef params); /// Returns the alignment required by the ABI for the given type computed using the relevant entries. The data layout object can be used for recursive queries. uint64_t getTypeABIAlignment(::mlir::Type type, const ::mlir::DataLayout & dataLayout, ::mlir::DataLayoutEntryListRef params); /// Returns the alignment preferred by the given type computed using the relevant entries. The data layoutobject can be used for recursive queries. uint64_t getTypePreferredAlignment(::mlir::Type type, const ::mlir::DataLayout & dataLayout, ::mlir::DataLayoutEntryListRef params); /// Returns the bitwidth that should be used when performing index computations for the type computed using the relevant entries. The data layout object can be used for recursive queries. std::optional getIndexBitwidth(::mlir::Type type, const ::mlir::DataLayout & dataLayout, ::mlir::DataLayoutEntryListRef params); /// Returns the endianness used by the ABI computed using the relevant entries. The data layout object can be used for recursive queries. ::mlir::Attribute getEndianness(::mlir::DataLayoutEntryInterface entry); /// Returns the memory space used by the ABI computed using the relevant entries. The data layout object can be used for recursive queries. ::mlir::Attribute getDefaultMemorySpace(::mlir::DataLayoutEntryInterface entry); /// Returns the memory space used by the ABI computed using the relevant entries. The data layout object can be used for recursive queries. ::mlir::Attribute getAllocaMemorySpace(::mlir::DataLayoutEntryInterface entry); /// Returns the mangling mode computed using the relevant entries. The data layout object can be used for recursive queries. ::mlir::Attribute getManglingMode(::mlir::DataLayoutEntryInterface entry); /// Returns the memory space used by the ABI computed using the relevant entries. The data layout object can be used for recursive queries. ::mlir::Attribute getProgramMemorySpace(::mlir::DataLayoutEntryInterface entry); /// Returns the memory space used by the ABI computed using the relevant entries. The data layout object can be used for recursive queries. ::mlir::Attribute getGlobalMemorySpace(::mlir::DataLayoutEntryInterface entry); /// Returns the natural stack alignment in bits computed using the relevant entries. The data layout object can be used for recursive queries. uint64_t getStackAlignment(::mlir::DataLayoutEntryInterface entry); /// Returns the function pointer alignment in bits computed using the relevant entries. The data layout object can be used for recursive queries. Attribute getFunctionPointerAlignment(::mlir::DataLayoutEntryInterface entry); /// Returns the legal int widths, each width in bits computed using the relevant entries. The data layout object can be used for recursive queries. Attribute getLegalIntWidths(::mlir::DataLayoutEntryInterface entry); /// Returns the value of the property, if the property is defined. Otherwise, it returns std::nullopt. std::optional getDevicePropertyValue(::mlir::DataLayoutEntryInterface entry); }; } // namespace mlir namespace mlir::detail { template struct DataLayoutOpInterfaceTrait : public ::mlir::OpInterface::Trait { /// Returns the size of the given type computed using the relevant entries. The data layout object can be used for recursive queries. static ::llvm::TypeSize getTypeSize(::mlir::Type type, const ::mlir::DataLayout & dataLayout, ::mlir::DataLayoutEntryListRef params) { ::llvm::TypeSize bits = ConcreteOp::getTypeSizeInBits(type, dataLayout, params); return ::mlir::detail::divideCeil(bits, 8u); } /// Returns the size of the given type in bits computed using the relevant entries. The data layout object can be used for recursive queries. static ::llvm::TypeSize getTypeSizeInBits(::mlir::Type type, const ::mlir::DataLayout & dataLayout, ::mlir::DataLayoutEntryListRef params) { return ::mlir::detail::getDefaultTypeSizeInBits(type, dataLayout, params); } /// Returns the alignment required by the ABI for the given type computed using the relevant entries. The data layout object can be used for recursive queries. static uint64_t getTypeABIAlignment(::mlir::Type type, const ::mlir::DataLayout & dataLayout, ::mlir::DataLayoutEntryListRef params) { return ::mlir::detail::getDefaultABIAlignment(type, dataLayout, params); } /// Returns the alignment preferred by the given type computed using the relevant entries. The data layoutobject can be used for recursive queries. static uint64_t getTypePreferredAlignment(::mlir::Type type, const ::mlir::DataLayout & dataLayout, ::mlir::DataLayoutEntryListRef params) { return ::mlir::detail::getDefaultPreferredAlignment(type, dataLayout, params); } /// Returns the bitwidth that should be used when performing index computations for the type computed using the relevant entries. The data layout object can be used for recursive queries. static std::optional getIndexBitwidth(::mlir::Type type, const ::mlir::DataLayout & dataLayout, ::mlir::DataLayoutEntryListRef params) { return ::mlir::detail::getDefaultIndexBitwidth(type, dataLayout, params); } /// Returns the endianness used by the ABI computed using the relevant entries. The data layout object can be used for recursive queries. static ::mlir::Attribute getEndianness(::mlir::DataLayoutEntryInterface entry) { return ::mlir::detail::getDefaultEndianness(entry); } /// Returns the memory space used by the ABI computed using the relevant entries. The data layout object can be used for recursive queries. static ::mlir::Attribute getDefaultMemorySpace(::mlir::DataLayoutEntryInterface entry) { return ::mlir::detail::getDefaultMemorySpace(entry); } /// Returns the memory space used by the ABI computed using the relevant entries. The data layout object can be used for recursive queries. static ::mlir::Attribute getAllocaMemorySpace(::mlir::DataLayoutEntryInterface entry) { return ::mlir::detail::getDefaultAllocaMemorySpace(entry); } /// Returns the mangling mode computed using the relevant entries. The data layout object can be used for recursive queries. static ::mlir::Attribute getManglingMode(::mlir::DataLayoutEntryInterface entry) { return ::mlir::detail::getDefaultManglingMode(entry); } /// Returns the memory space used by the ABI computed using the relevant entries. The data layout object can be used for recursive queries. static ::mlir::Attribute getProgramMemorySpace(::mlir::DataLayoutEntryInterface entry) { return ::mlir::detail::getDefaultProgramMemorySpace(entry); } /// Returns the memory space used by the ABI computed using the relevant entries. The data layout object can be used for recursive queries. static ::mlir::Attribute getGlobalMemorySpace(::mlir::DataLayoutEntryInterface entry) { return ::mlir::detail::getDefaultGlobalMemorySpace(entry); } /// Returns the natural stack alignment in bits computed using the relevant entries. The data layout object can be used for recursive queries. static uint64_t getStackAlignment(::mlir::DataLayoutEntryInterface entry) { return ::mlir::detail::getDefaultStackAlignment(entry); } /// Returns the function pointer alignment in bits computed using the relevant entries. The data layout object can be used for recursive queries. static Attribute getFunctionPointerAlignment(::mlir::DataLayoutEntryInterface entry) { return ::mlir::detail::getDefaultFunctionPointerAlignment(entry); } /// Returns the legal int widths, each width in bits computed using the relevant entries. The data layout object can be used for recursive queries. static Attribute getLegalIntWidths(::mlir::DataLayoutEntryInterface entry) { return ::mlir::detail::getDefaultLegalIntWidths(entry); } /// Returns the value of the property, if the property is defined. Otherwise, it returns std::nullopt. static std::optional getDevicePropertyValue(::mlir::DataLayoutEntryInterface entry) { return ::mlir::detail::getDevicePropertyValue(entry); } static ::llvm::LogicalResult verifyTrait(::mlir::Operation *op) { return ::mlir::detail::verifyDataLayoutOp(op); } }; } // namespace mlir::detail namespace mlir { template ::mlir::DataLayoutSpecInterface detail::DataLayoutOpInterfaceInterfaceTraits::Model::getDataLayoutSpec(const Concept *impl, ::mlir::Operation *tablegen_opaque_val) { return (llvm::cast(tablegen_opaque_val)).getDataLayoutSpec(); } template ::mlir::TargetSystemSpecInterface detail::DataLayoutOpInterfaceInterfaceTraits::Model::getTargetSystemSpec(const Concept *impl, ::mlir::Operation *tablegen_opaque_val) { return (llvm::cast(tablegen_opaque_val)).getTargetSystemSpec(); } template ::llvm::TypeSize detail::DataLayoutOpInterfaceInterfaceTraits::Model::getTypeSize(::mlir::Type type, const ::mlir::DataLayout & dataLayout, ::mlir::DataLayoutEntryListRef params) { return ConcreteOp::getTypeSize(type, dataLayout, params); } template ::llvm::TypeSize detail::DataLayoutOpInterfaceInterfaceTraits::Model::getTypeSizeInBits(::mlir::Type type, const ::mlir::DataLayout & dataLayout, ::mlir::DataLayoutEntryListRef params) { return ConcreteOp::getTypeSizeInBits(type, dataLayout, params); } template uint64_t detail::DataLayoutOpInterfaceInterfaceTraits::Model::getTypeABIAlignment(::mlir::Type type, const ::mlir::DataLayout & dataLayout, ::mlir::DataLayoutEntryListRef params) { return ConcreteOp::getTypeABIAlignment(type, dataLayout, params); } template uint64_t detail::DataLayoutOpInterfaceInterfaceTraits::Model::getTypePreferredAlignment(::mlir::Type type, const ::mlir::DataLayout & dataLayout, ::mlir::DataLayoutEntryListRef params) { return ConcreteOp::getTypePreferredAlignment(type, dataLayout, params); } template std::optional detail::DataLayoutOpInterfaceInterfaceTraits::Model::getIndexBitwidth(::mlir::Type type, const ::mlir::DataLayout & dataLayout, ::mlir::DataLayoutEntryListRef params) { return ConcreteOp::getIndexBitwidth(type, dataLayout, params); } template ::mlir::Attribute detail::DataLayoutOpInterfaceInterfaceTraits::Model::getEndianness(::mlir::DataLayoutEntryInterface entry) { return ConcreteOp::getEndianness(entry); } template ::mlir::Attribute detail::DataLayoutOpInterfaceInterfaceTraits::Model::getDefaultMemorySpace(::mlir::DataLayoutEntryInterface entry) { return ConcreteOp::getDefaultMemorySpace(entry); } template ::mlir::Attribute detail::DataLayoutOpInterfaceInterfaceTraits::Model::getAllocaMemorySpace(::mlir::DataLayoutEntryInterface entry) { return ConcreteOp::getAllocaMemorySpace(entry); } template ::mlir::Attribute detail::DataLayoutOpInterfaceInterfaceTraits::Model::getManglingMode(::mlir::DataLayoutEntryInterface entry) { return ConcreteOp::getManglingMode(entry); } template ::mlir::Attribute detail::DataLayoutOpInterfaceInterfaceTraits::Model::getProgramMemorySpace(::mlir::DataLayoutEntryInterface entry) { return ConcreteOp::getProgramMemorySpace(entry); } template ::mlir::Attribute detail::DataLayoutOpInterfaceInterfaceTraits::Model::getGlobalMemorySpace(::mlir::DataLayoutEntryInterface entry) { return ConcreteOp::getGlobalMemorySpace(entry); } template uint64_t detail::DataLayoutOpInterfaceInterfaceTraits::Model::getStackAlignment(::mlir::DataLayoutEntryInterface entry) { return ConcreteOp::getStackAlignment(entry); } template Attribute detail::DataLayoutOpInterfaceInterfaceTraits::Model::getFunctionPointerAlignment(::mlir::DataLayoutEntryInterface entry) { return ConcreteOp::getFunctionPointerAlignment(entry); } template Attribute detail::DataLayoutOpInterfaceInterfaceTraits::Model::getLegalIntWidths(::mlir::DataLayoutEntryInterface entry) { return ConcreteOp::getLegalIntWidths(entry); } template std::optional detail::DataLayoutOpInterfaceInterfaceTraits::Model::getDevicePropertyValue(::mlir::DataLayoutEntryInterface entry) { return ConcreteOp::getDevicePropertyValue(entry); } template ::mlir::DataLayoutSpecInterface detail::DataLayoutOpInterfaceInterfaceTraits::FallbackModel::getDataLayoutSpec(const Concept *impl, ::mlir::Operation *tablegen_opaque_val) { return static_cast(impl)->getDataLayoutSpec(tablegen_opaque_val); } template ::mlir::TargetSystemSpecInterface detail::DataLayoutOpInterfaceInterfaceTraits::FallbackModel::getTargetSystemSpec(const Concept *impl, ::mlir::Operation *tablegen_opaque_val) { return static_cast(impl)->getTargetSystemSpec(tablegen_opaque_val); } template ::llvm::TypeSize detail::DataLayoutOpInterfaceInterfaceTraits::FallbackModel::getTypeSize(::mlir::Type type, const ::mlir::DataLayout & dataLayout, ::mlir::DataLayoutEntryListRef params) { return ConcreteOp::getTypeSize(type, dataLayout, params); } template ::llvm::TypeSize detail::DataLayoutOpInterfaceInterfaceTraits::FallbackModel::getTypeSizeInBits(::mlir::Type type, const ::mlir::DataLayout & dataLayout, ::mlir::DataLayoutEntryListRef params) { return ConcreteOp::getTypeSizeInBits(type, dataLayout, params); } template uint64_t detail::DataLayoutOpInterfaceInterfaceTraits::FallbackModel::getTypeABIAlignment(::mlir::Type type, const ::mlir::DataLayout & dataLayout, ::mlir::DataLayoutEntryListRef params) { return ConcreteOp::getTypeABIAlignment(type, dataLayout, params); } template uint64_t detail::DataLayoutOpInterfaceInterfaceTraits::FallbackModel::getTypePreferredAlignment(::mlir::Type type, const ::mlir::DataLayout & dataLayout, ::mlir::DataLayoutEntryListRef params) { return ConcreteOp::getTypePreferredAlignment(type, dataLayout, params); } template std::optional detail::DataLayoutOpInterfaceInterfaceTraits::FallbackModel::getIndexBitwidth(::mlir::Type type, const ::mlir::DataLayout & dataLayout, ::mlir::DataLayoutEntryListRef params) { return ConcreteOp::getIndexBitwidth(type, dataLayout, params); } template ::mlir::Attribute detail::DataLayoutOpInterfaceInterfaceTraits::FallbackModel::getEndianness(::mlir::DataLayoutEntryInterface entry) { return ConcreteOp::getEndianness(entry); } template ::mlir::Attribute detail::DataLayoutOpInterfaceInterfaceTraits::FallbackModel::getDefaultMemorySpace(::mlir::DataLayoutEntryInterface entry) { return ConcreteOp::getDefaultMemorySpace(entry); } template ::mlir::Attribute detail::DataLayoutOpInterfaceInterfaceTraits::FallbackModel::getAllocaMemorySpace(::mlir::DataLayoutEntryInterface entry) { return ConcreteOp::getAllocaMemorySpace(entry); } template ::mlir::Attribute detail::DataLayoutOpInterfaceInterfaceTraits::FallbackModel::getManglingMode(::mlir::DataLayoutEntryInterface entry) { return ConcreteOp::getManglingMode(entry); } template ::mlir::Attribute detail::DataLayoutOpInterfaceInterfaceTraits::FallbackModel::getProgramMemorySpace(::mlir::DataLayoutEntryInterface entry) { return ConcreteOp::getProgramMemorySpace(entry); } template ::mlir::Attribute detail::DataLayoutOpInterfaceInterfaceTraits::FallbackModel::getGlobalMemorySpace(::mlir::DataLayoutEntryInterface entry) { return ConcreteOp::getGlobalMemorySpace(entry); } template uint64_t detail::DataLayoutOpInterfaceInterfaceTraits::FallbackModel::getStackAlignment(::mlir::DataLayoutEntryInterface entry) { return ConcreteOp::getStackAlignment(entry); } template Attribute detail::DataLayoutOpInterfaceInterfaceTraits::FallbackModel::getFunctionPointerAlignment(::mlir::DataLayoutEntryInterface entry) { return ConcreteOp::getFunctionPointerAlignment(entry); } template Attribute detail::DataLayoutOpInterfaceInterfaceTraits::FallbackModel::getLegalIntWidths(::mlir::DataLayoutEntryInterface entry) { return ConcreteOp::getLegalIntWidths(entry); } template std::optional detail::DataLayoutOpInterfaceInterfaceTraits::FallbackModel::getDevicePropertyValue(::mlir::DataLayoutEntryInterface entry) { return ConcreteOp::getDevicePropertyValue(entry); } template ::llvm::TypeSize detail::DataLayoutOpInterfaceInterfaceTraits::ExternalModel::getTypeSize(::mlir::Type type, const ::mlir::DataLayout &dataLayout, ::mlir::DataLayoutEntryListRef params) { ::llvm::TypeSize bits = ConcreteOp::getTypeSizeInBits(type, dataLayout, params); return ::mlir::detail::divideCeil(bits, 8u); } template ::llvm::TypeSize detail::DataLayoutOpInterfaceInterfaceTraits::ExternalModel::getTypeSizeInBits(::mlir::Type type, const ::mlir::DataLayout &dataLayout, ::mlir::DataLayoutEntryListRef params) { return ::mlir::detail::getDefaultTypeSizeInBits(type, dataLayout, params); } template uint64_t detail::DataLayoutOpInterfaceInterfaceTraits::ExternalModel::getTypeABIAlignment(::mlir::Type type, const ::mlir::DataLayout &dataLayout, ::mlir::DataLayoutEntryListRef params) { return ::mlir::detail::getDefaultABIAlignment(type, dataLayout, params); } template uint64_t detail::DataLayoutOpInterfaceInterfaceTraits::ExternalModel::getTypePreferredAlignment(::mlir::Type type, const ::mlir::DataLayout &dataLayout, ::mlir::DataLayoutEntryListRef params) { return ::mlir::detail::getDefaultPreferredAlignment(type, dataLayout, params); } template std::optional detail::DataLayoutOpInterfaceInterfaceTraits::ExternalModel::getIndexBitwidth(::mlir::Type type, const ::mlir::DataLayout &dataLayout, ::mlir::DataLayoutEntryListRef params) { return ::mlir::detail::getDefaultIndexBitwidth(type, dataLayout, params); } template ::mlir::Attribute detail::DataLayoutOpInterfaceInterfaceTraits::ExternalModel::getEndianness(::mlir::DataLayoutEntryInterface entry) { return ::mlir::detail::getDefaultEndianness(entry); } template ::mlir::Attribute detail::DataLayoutOpInterfaceInterfaceTraits::ExternalModel::getDefaultMemorySpace(::mlir::DataLayoutEntryInterface entry) { return ::mlir::detail::getDefaultMemorySpace(entry); } template ::mlir::Attribute detail::DataLayoutOpInterfaceInterfaceTraits::ExternalModel::getAllocaMemorySpace(::mlir::DataLayoutEntryInterface entry) { return ::mlir::detail::getDefaultAllocaMemorySpace(entry); } template ::mlir::Attribute detail::DataLayoutOpInterfaceInterfaceTraits::ExternalModel::getManglingMode(::mlir::DataLayoutEntryInterface entry) { return ::mlir::detail::getDefaultManglingMode(entry); } template ::mlir::Attribute detail::DataLayoutOpInterfaceInterfaceTraits::ExternalModel::getProgramMemorySpace(::mlir::DataLayoutEntryInterface entry) { return ::mlir::detail::getDefaultProgramMemorySpace(entry); } template ::mlir::Attribute detail::DataLayoutOpInterfaceInterfaceTraits::ExternalModel::getGlobalMemorySpace(::mlir::DataLayoutEntryInterface entry) { return ::mlir::detail::getDefaultGlobalMemorySpace(entry); } template uint64_t detail::DataLayoutOpInterfaceInterfaceTraits::ExternalModel::getStackAlignment(::mlir::DataLayoutEntryInterface entry) { return ::mlir::detail::getDefaultStackAlignment(entry); } template Attribute detail::DataLayoutOpInterfaceInterfaceTraits::ExternalModel::getFunctionPointerAlignment(::mlir::DataLayoutEntryInterface entry) { return ::mlir::detail::getDefaultFunctionPointerAlignment(entry); } template Attribute detail::DataLayoutOpInterfaceInterfaceTraits::ExternalModel::getLegalIntWidths(::mlir::DataLayoutEntryInterface entry) { return ::mlir::detail::getDefaultLegalIntWidths(entry); } template std::optional detail::DataLayoutOpInterfaceInterfaceTraits::ExternalModel::getDevicePropertyValue(::mlir::DataLayoutEntryInterface entry) { return ::mlir::detail::getDevicePropertyValue(entry); } } // namespace mlir