/*===- TableGen'erated file -------------------------------------*- C++ -*-===*\ |* *| |* AttrDef Declarations *| |* *| |* Automatically generated file, do not edit! *| |* *| \*===----------------------------------------------------------------------===*/ #ifdef GET_ATTRDEF_CLASSES #undef GET_ATTRDEF_CLASSES namespace mlir { class AsmParser; class AsmPrinter; } // namespace mlir namespace mlir::LLVM { /// LLVM address space /// The `address_space` attribute represents an LLVM address space. It takes an /// unsigned integer parameter that specifies the address space number. /// /// Different address spaces in LLVM can have different properties: /// - Address space 0 is the default/generic address space /// - Other address spaces may have specific semantics (e.g., shared memory, /// constant memory, etc.) depending on the target architecture /// /// Example: /// /// ```mlir /// // Address space 0 (default) /// #llvm.address_space<0> /// /// // Address space 1 (e.g., global memory on some targets) /// #llvm.address_space<1> /// /// // Address space 3 (e.g., shared memory on some GPU targets) /// #llvm.address_space<3> /// ``` class AddressSpaceAttr; class CConvAttr; class ComdatAttr; class LinkageAttr; class FramePointerKindAttr; /// This attribute defines vectorization specific loop annotations that map to /// the "!llvm.loop.vectorize" metadata. class LoopVectorizeAttr; /// This attribute defines interleaving specific loop annotations that map to /// the "!llvm.loop.interleave" metadata. class LoopInterleaveAttr; /// This attribute defines unrolling specific loop annotations that map to /// the "!llvm.loop.unroll" metadata. class LoopUnrollAttr; /// This attribute defines "unroll and jam" specific loop annotations that map to /// the "!llvm.loop.unroll_and_jam" metadata. class LoopUnrollAndJamAttr; /// This attribute encapsulates loop invariant code motion (licm) specific loop /// annotations. The fields correspond to the "!llvm.licm.disable" and the /// "!llvm.loop.licm_versioning.disable" metadata. class LoopLICMAttr; /// This attribute defines distribution specific loop annotations that map to /// the "!llvm.loop.distribute" metadata. class LoopDistributeAttr; /// This attribute defines pipelining specific loop annotations that map to /// the "!llvm.loop.pipeline" metadata. class LoopPipelineAttr; /// This attribute defines pipelining specific loop annotations that map to /// the "!llvm.loop.peeled" metadata. class LoopPeeledAttr; /// This attribute defines pipelining specific loop annotations that map to /// the "!llvm.loop.unswitch" metadata. class LoopUnswitchAttr; /// This attributes encapsulates "loop metadata". It is meant to decorate /// branches that are "latches" (loop backedges) and maps to the `!llvm.loop` /// metadatas: https://llvm.org/docs/LangRef.html#llvm-loop /// It stores annotations in attribute parameters and groups related options in /// nested attributes to provide structured access. class LoopAnnotationAttr; class DIExpressionElemAttr; class DIExpressionAttr; class DINullTypeAttr; class DIBasicTypeAttr; class DICompileUnitAttr; class DICompositeTypeAttr; class DIDerivedTypeAttr; class DIFileAttr; class DIGlobalVariableExpressionAttr; class DIGlobalVariableAttr; class DILexicalBlockAttr; class DILexicalBlockFileAttr; class DILocalVariableAttr; class DISubprogramAttr; class DIModuleAttr; class DINamespaceAttr; class DIImportedEntityAttr; class DIAnnotationAttr; class DISubrangeAttr; class DICommonBlockAttr; class DIGenericSubrangeAttr; class DISubroutineTypeAttr; class DILabelAttr; class DIStringTypeAttr; class MemoryEffectsAttr; class DenormalFPEnvAttr; /// LLVM dialect alias scope domain metadata /// Defines a domain that may be associated with an alias scope. /// /// See the following link for more details: /// https://llvm.org/docs/LangRef.html#noalias-and-alias-scope-metadata class AliasScopeDomainAttr; /// LLVM dialect alias scope /// Defines an alias scope that can be attached to a memory-accessing operation. /// Such scopes can be used in combination with `noalias` metadata to indicate /// that sets of memory-affecting operations in one scope do not alias with /// memory-affecting operations in another scope. /// /// Example: /// ```mlir /// #domain = #llvm.alias_scope_domain, description = "Optional domain description"> /// #scope1 = #llvm.alias_scope, domain = #domain> /// #scope2 = #llvm.alias_scope, domain = #domain, description = "Optional scope description"> /// llvm.func @foo(%ptr1 : !llvm.ptr) { /// %c0 = llvm.mlir.constant(0 : i32) : i32 /// %c4 = llvm.mlir.constant(4 : i32) : i32 /// %1 = llvm.ptrtoint %ptr1 : !llvm.ptr to i32 /// %2 = llvm.add %1, %c1 : i32 /// %ptr2 = llvm.inttoptr %2 : i32 to !llvm.ptr /// llvm.store %c0, %ptr1 { alias_scopes = [#scope1], llvm.noalias = [#scope2] } : i32, !llvm.ptr /// llvm.store %c4, %ptr2 { alias_scopes = [#scope2], llvm.noalias = [#scope1] } : i32, !llvm.ptr /// llvm.return /// } /// ``` /// /// The first attribute can either be a DistinctAttr or a StringAttr. /// /// See the following link for more details: /// https://llvm.org/docs/LangRef.html#noalias-and-alias-scope-metadata class AliasScopeAttr; /// LLVM dialect access group metadata /// Defines an access group metadata that can be set on any instruction /// that potentially accesses memory via the `AccessGroupOpInterface` or on /// branch instructions in the loop latch block via the `parallelAccesses` /// parameter of `LoopAnnotationAttr`. /// /// See the following link for more details: /// https://llvm.org/docs/LangRef.html#llvm-access-group-metadata class AccessGroupAttr; /// LLVM dialect TBAA root metadata /// Defines a TBAA root node. /// /// Example: /// ```mlir /// #cpp_root = #llvm.tbaa_root /// #other_root = #llvm.tbaa_root /// ``` /// /// See the following link for more details: /// https://llvm.org/docs/LangRef.html#tbaa-metadata class TBAARootAttr; class TBAAMemberAttr; /// LLVM dialect TBAA type metadata /// Defines a TBAA node describing a type. /// /// Example: /// ```mlir /// #tbaa_root = #llvm.tbaa_root /// #tbaa_type_desc1 = #llvm.tbaa_type_desc}> /// #tbaa_type_desc2 = #llvm.tbaa_type_desc}> /// #tbaa_type_desc3 = #llvm.tbaa_type_desc, <#tbaa_type_desc2, 8>}> /// #tbaa_type_desc4 = #llvm.tbaa_type_desc}> /// #tbaa_type_desc5 = #llvm.tbaa_type_desc, <#tbaa_type_desc4, 4>}> /// ``` /// /// See the following link for more details: /// https://llvm.org/docs/LangRef.html#tbaa-metadata class TBAATypeDescriptorAttr; /// LLVM dialect TBAA tag metadata /// Defines a TBAA node describing a memory access. /// /// Example: /// ```mlir /// #tbaa_root = #llvm.tbaa_root /// #tbaa_type_desc1 = #llvm.tbaa_type_desc}> /// #tbaa_type_desc2 = #llvm.tbaa_type_desc}> /// #tbaa_type_desc3 = #llvm.tbaa_type_desc, <#tbaa_type_desc4, 4>}> /// #tbaa_tag = #llvm.tbaa_tag /// ``` /// /// See the following link for more details: /// https://llvm.org/docs/LangRef.html#tbaa-metadata class TBAATagAttr; /// MLIR wrapper around a prefix:suffix MMRA tag /// Defines a single memory model relaxation annotation (MMRA) entry /// with prefix `$prefix` and suffix `$suffix`. This corresponds directly /// to a LLVM `!{prefix, suffix}` metadata tuple, which is often written /// `prefix:shuffix` as shorthand. /// /// Example: /// ```mlir /// #mmra_tag = #llvm.mmmra_tag<"amdgpu-synchronize-as":"local"> /// #mmra_tag1 = #llvm.mmra_tag<"foo":"bar"> /// ``` /// /// Either one MMRA tag or an array of them may be added to any LLVM /// operation that operates on memory. /// /// ```mlir /// %v = llvm.load %ptr {llvm.mmra = #mmra_tag} : !llvm.ptr -> i8 /// llvm.store %v, %ptr2 {llvm.mmra [#mmra_tag, #mmra_tag1]} : i8, !llvm.ptr /// ``` /// /// See the following link for more details: /// https://llvm.org/docs/MemoryModelRelaxationAnnotations.html class MMRATagAttr; /// A range of two integers, corresponding to LLVM's ConstantRange /// A pair of two integers, mapping to the ConstantRange structure in LLVM IR, /// which is allowed to wrap or be empty. /// /// The range represented is [Lower, Upper), and is either signed or unsigned /// depending on context. /// /// `lower` and `upper` must have the same width. /// /// Syntax: /// ``` /// `<` `i`(width($lower)) $lower `,` $upper `>` /// ``` class ConstantRangeAttr; class VScaleRangeAttr; /// LLVM target features attribute /// Represents the LLVM target features as a list that can be checked within /// passes/rewrites. /// /// Example: /// ```mlir /// #llvm.target_features<["+sme", "+sve", "+sme-f64f64"]> /// ``` /// /// Then within a pass or rewrite the features active at an op can be queried: /// /// ```c++ /// auto targetFeatures = LLVM::TargetFeaturesAttr::featuresAt(op); /// /// if (!targetFeatures.contains("+sme-f64f64")) /// return failure(); /// ``` class TargetFeaturesAttr; /// LLVM target info: triple, chip, features /// An attribute to hold LLVM target information, specifying LLVM's target /// `triple` string, the target `chip` string (i.e. the `cpu` string), and /// target `features` string as an attribute. The latter is optional. /// /// Responds to DLTI-queries on the keys: /// * A query for `"triple"` returns the `StringAttr` for the `triple`. /// * A query for `"chip"` returns the `StringAttr` for the `chip`/`cpu`. /// * A query for `"features"` returns the `StringAttr`, if provided. class TargetAttr; class UndefAttr; class PoisonAttr; class DSOLocalEquivalentAttr; class BlockTagAttr; /// Describes a block address identified by a pair of `$function` and `$tag`. class BlockAddressAttr; /// Explicit vectorization compiler hint /// A hint to the compiler that indicates most operations used in the function /// are explictly vectorized using a particular vector type. `$hint` is the /// vector or scalar type in particular. `$is_signed` can be used with integer /// types to state whether the type is signed. class VecTypeHintAttr; class ZeroAttr; class TailCallKindAttr; /// GPU workgroup attribution information /// GPU workgroup attributions are `gpu.func` attributes encoding memory /// allocations in the workgroup address space. These might be encoded as /// `llvm.ptr` function arguments in our dialect, but then type and size /// information would be dropped. This attribute can be attached to `llvm.ptr` /// function arguments encoding GPU workgroup attributions to mark them as /// arguments encoding workgroup attributions and keeping type and size /// information in our dialect. class WorkgroupAttributionAttr; /// LLVM dereferenceable attribute /// Defines `dereferenceable` or `dereferenceable_or_null` metadata that can /// be set via the `DereferenceableOpInterface` on an `inttoptr` operation or /// on a `load` operation which loads a pointer. The attribute is used to /// denote that the result of these operations is dereferenceable up to a /// certain number of bytes, represented by `$bytes`. The optional `$mayBeNull` /// parameter is set to true if the attribute defines `dereferenceable_or_null` /// metadata. /// /// See the following links for more details: /// https://llvm.org/docs/LangRef.html#dereferenceable-metadata /// https://llvm.org/docs/LangRef.html#dereferenceable-or-null-metadata class DereferenceableAttr; /// LLVM module flag metadata /// Represents a single entry of llvm.module.flags metadata /// (llvm::Module::ModuleFlagEntry in LLVM). The first element is a behavior /// flag described by `ModFlagBehaviorAttr`, the second is a string ID /// and third is the value of the flag. Supported keys and values include: /// - Arbitrary `key`s holding integer constants, integer-like dialect /// attributes, strings, or non-empty string arrays. /// - Domain specific keys (e.g "CG Profile"), holding lists of supported /// module flag values (e.g. `llvm.cgprofile_entry`). /// /// Example: /// ```mlir /// llvm.module_flags [ /// #llvm.mlir.module_flag, /// #llvm.mlir.module_flag, /// #llvm.mlir.module_flag, /// #llvm.cgprofile_entry, /// #llvm.cgprofile_entry /// ] /// >] /// ``` class ModuleFlagAttr; /// CG profile module flag entry /// Describes a single entry for a CG profile module flag. Example: /// ```mlir /// llvm.module_flags [ /// #llvm.mlir.module_flag, /// ... /// ]>] /// ``` class ModuleFlagCGProfileEntryAttr; /// ProfileSummary detailed information /// Contains detailed information pertinent to "ProfileSummary" attribute. /// A `#llvm.profile_summary` may contain several of it. /// ```mlir /// llvm.module_flags [ ... /// detailed_summary = /// , /// /// ``` class ModuleFlagProfileSummaryDetailedAttr; /// ProfileSummary module flag /// Describes ProfileSummary gathered data in a module. Example: /// ```mlir /// llvm.module_flags [#llvm.mlir.module_flag, /// /// >>] /// ``` class ModuleFlagProfileSummaryAttr; /// LLVM dependent libraries attribute /// Represents the list of dependent libraries for the current module. /// This attribute is used to specify the libraries that the module depends /// on, and it can be used for linking purposes. /// /// See the following links for more details: /// https://llvm.org/docs/LangRef.html#dependent-libs-named-metadata class DependentLibrariesAttr; class UWTableKindAttr; /// LLVM metadata string /// Wraps a string as an LLVM metadata node, corresponding to /// `llvm::MDString` in LLVM IR. /// /// Example: /// ```mlir /// #llvm.md_string<"foo.buffer"> /// ``` class MDStringAttr; /// LLVM constant-as-metadata /// Wraps an attribute as an LLVM metadata node, corresponding to /// `llvm::ConstantAsMetadata` wrapping a `llvm::Constant*` in LLVM IR. /// Currently, only integers/IntegerAttrs supported. /// /// Example: /// ```mlir /// #llvm.md_const<42 : i32> /// ``` class MDConstantAttr; /// LLVM function-as-metadata /// References a function (or global) symbol as LLVM metadata, corresponding /// to `llvm::ValueAsMetadata::get(function)` in LLVM IR. /// /// Example: /// ```mlir /// #llvm.md_func<@my_kernel> /// ``` class MDFuncAttr; /// LLVM metadata node /// Represents an LLVM metadata node. The operands /// can be any combination of metadata attributes: `#llvm.md_string`, /// `#llvm.md_const`, `#llvm.md_func`, or nested `#llvm.md_node`. /// /// Example: /// ```mlir /// #llvm.md_node<#llvm.md_const<0 : i32>, #llvm.md_string<"foo.buffer">> /// #llvm.md_node<> /// ``` class MDNodeAttr; /// LLVM integer overflow flags /// Enum cases: /// * none (`none`) /// * nsw (`nsw`) /// * nuw (`nuw`) class IntegerOverflowFlagsAttr; /// LLVM fastmath flags class FastmathFlagsAttr; namespace detail { struct AddressSpaceAttrStorage; } // namespace detail class AddressSpaceAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.address_space"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static AddressSpaceAttr get(::mlir::MLIRContext *context, unsigned addressSpace); static constexpr ::llvm::StringLiteral getMnemonic() { return {"address_space"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; unsigned getAddressSpace() const; bool isValidLoad(::mlir::Type type, ::mlir::ptr::AtomicOrdering ordering, std::optional alignment, const ::mlir::DataLayout *dataLayout, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError) const; bool isValidStore(::mlir::Type type, ::mlir::ptr::AtomicOrdering ordering, std::optional alignment, const ::mlir::DataLayout *dataLayout, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError) const; bool isValidAtomicOp(::mlir::ptr::AtomicBinOp op, ::mlir::Type type, ::mlir::ptr::AtomicOrdering ordering, std::optional alignment, const ::mlir::DataLayout *dataLayout, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError) const; bool isValidAtomicXchg(::mlir::Type type, ::mlir::ptr::AtomicOrdering successOrdering, ::mlir::ptr::AtomicOrdering failureOrdering, std::optional alignment, const ::mlir::DataLayout *dataLayout, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError) const; bool isValidAddrSpaceCast(::mlir::Type tgt, ::mlir::Type src, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError) const; bool isValidPtrIntCast(::mlir::Type intLikeTy, ::mlir::Type ptrLikeTy, ::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError) const; }; namespace detail { struct CConvAttrStorage; } // namespace detail class CConvAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.cconv"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static CConvAttr get(::mlir::MLIRContext *context, CConv CallingConv); static constexpr ::llvm::StringLiteral getMnemonic() { return {"cconv"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; CConv getCallingConv() const; }; namespace detail { struct ComdatAttrStorage; } // namespace detail class ComdatAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.comdat"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static ComdatAttr get(::mlir::MLIRContext *context, comdat::Comdat comdat); static constexpr ::llvm::StringLiteral getMnemonic() { return {"comdat"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; comdat::Comdat getComdat() const; }; namespace detail { struct LinkageAttrStorage; } // namespace detail class LinkageAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.linkage"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static LinkageAttr get(::mlir::MLIRContext *context, linkage::Linkage linkage); static constexpr ::llvm::StringLiteral getMnemonic() { return {"linkage"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; linkage::Linkage getLinkage() const; }; namespace detail { struct FramePointerKindAttrStorage; } // namespace detail class FramePointerKindAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.framePointerKind"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static FramePointerKindAttr get(::mlir::MLIRContext *context, framePointerKind::FramePointerKind framePointerKind); static constexpr ::llvm::StringLiteral getMnemonic() { return {"framePointerKind"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; framePointerKind::FramePointerKind getFramePointerKind() const; }; namespace detail { struct LoopVectorizeAttrStorage; } // namespace detail class LoopVectorizeAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.loop_vectorize"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static LoopVectorizeAttr get(::mlir::MLIRContext *context, BoolAttr disable, BoolAttr predicateEnable, BoolAttr scalableEnable, IntegerAttr width, LoopAnnotationAttr followupVectorized, LoopAnnotationAttr followupEpilogue, LoopAnnotationAttr followupAll); static constexpr ::llvm::StringLiteral getMnemonic() { return {"loop_vectorize"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; BoolAttr getDisable() const; BoolAttr getPredicateEnable() const; BoolAttr getScalableEnable() const; IntegerAttr getWidth() const; LoopAnnotationAttr getFollowupVectorized() const; LoopAnnotationAttr getFollowupEpilogue() const; LoopAnnotationAttr getFollowupAll() const; ::mlir::OpAsmAliasResult getAlias(::llvm::raw_ostream &os) const; }; namespace detail { struct LoopInterleaveAttrStorage; } // namespace detail class LoopInterleaveAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.loop_interleave"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static LoopInterleaveAttr get(::mlir::MLIRContext *context, IntegerAttr count); static constexpr ::llvm::StringLiteral getMnemonic() { return {"loop_interleave"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; IntegerAttr getCount() const; ::mlir::OpAsmAliasResult getAlias(::llvm::raw_ostream &os) const; }; namespace detail { struct LoopUnrollAttrStorage; } // namespace detail class LoopUnrollAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.loop_unroll"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static LoopUnrollAttr get(::mlir::MLIRContext *context, BoolAttr disable, IntegerAttr count, BoolAttr runtimeDisable, BoolAttr full, LoopAnnotationAttr followupUnrolled, LoopAnnotationAttr followupRemainder, LoopAnnotationAttr followupAll); static constexpr ::llvm::StringLiteral getMnemonic() { return {"loop_unroll"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; BoolAttr getDisable() const; IntegerAttr getCount() const; BoolAttr getRuntimeDisable() const; BoolAttr getFull() const; LoopAnnotationAttr getFollowupUnrolled() const; LoopAnnotationAttr getFollowupRemainder() const; LoopAnnotationAttr getFollowupAll() const; ::mlir::OpAsmAliasResult getAlias(::llvm::raw_ostream &os) const; }; namespace detail { struct LoopUnrollAndJamAttrStorage; } // namespace detail class LoopUnrollAndJamAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.loop_unroll_and_jam"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static LoopUnrollAndJamAttr get(::mlir::MLIRContext *context, BoolAttr disable, IntegerAttr count, LoopAnnotationAttr followupOuter, LoopAnnotationAttr followupInner, LoopAnnotationAttr followupRemainderOuter, LoopAnnotationAttr followupRemainderInner, LoopAnnotationAttr followupAll); static constexpr ::llvm::StringLiteral getMnemonic() { return {"loop_unroll_and_jam"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; BoolAttr getDisable() const; IntegerAttr getCount() const; LoopAnnotationAttr getFollowupOuter() const; LoopAnnotationAttr getFollowupInner() const; LoopAnnotationAttr getFollowupRemainderOuter() const; LoopAnnotationAttr getFollowupRemainderInner() const; LoopAnnotationAttr getFollowupAll() const; ::mlir::OpAsmAliasResult getAlias(::llvm::raw_ostream &os) const; }; namespace detail { struct LoopLICMAttrStorage; } // namespace detail class LoopLICMAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.loop_licm"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static LoopLICMAttr get(::mlir::MLIRContext *context, BoolAttr disable, BoolAttr versioningDisable); static constexpr ::llvm::StringLiteral getMnemonic() { return {"loop_licm"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; BoolAttr getDisable() const; BoolAttr getVersioningDisable() const; ::mlir::OpAsmAliasResult getAlias(::llvm::raw_ostream &os) const; }; namespace detail { struct LoopDistributeAttrStorage; } // namespace detail class LoopDistributeAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.loop_distribute"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static LoopDistributeAttr get(::mlir::MLIRContext *context, BoolAttr disable, LoopAnnotationAttr followupCoincident, LoopAnnotationAttr followupSequential, LoopAnnotationAttr followupFallback, LoopAnnotationAttr followupAll); static constexpr ::llvm::StringLiteral getMnemonic() { return {"loop_distribute"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; BoolAttr getDisable() const; LoopAnnotationAttr getFollowupCoincident() const; LoopAnnotationAttr getFollowupSequential() const; LoopAnnotationAttr getFollowupFallback() const; LoopAnnotationAttr getFollowupAll() const; ::mlir::OpAsmAliasResult getAlias(::llvm::raw_ostream &os) const; }; namespace detail { struct LoopPipelineAttrStorage; } // namespace detail class LoopPipelineAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.loop_pipeline"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static LoopPipelineAttr get(::mlir::MLIRContext *context, BoolAttr disable, IntegerAttr initiationinterval); static constexpr ::llvm::StringLiteral getMnemonic() { return {"loop_pipeline"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; BoolAttr getDisable() const; IntegerAttr getInitiationinterval() const; ::mlir::OpAsmAliasResult getAlias(::llvm::raw_ostream &os) const; }; namespace detail { struct LoopPeeledAttrStorage; } // namespace detail class LoopPeeledAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.loop_peeled"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static LoopPeeledAttr get(::mlir::MLIRContext *context, IntegerAttr count); static constexpr ::llvm::StringLiteral getMnemonic() { return {"loop_peeled"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; IntegerAttr getCount() const; ::mlir::OpAsmAliasResult getAlias(::llvm::raw_ostream &os) const; }; namespace detail { struct LoopUnswitchAttrStorage; } // namespace detail class LoopUnswitchAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.loop_unswitch"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static LoopUnswitchAttr get(::mlir::MLIRContext *context, BoolAttr partialDisable); static constexpr ::llvm::StringLiteral getMnemonic() { return {"loop_unswitch"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; BoolAttr getPartialDisable() const; ::mlir::OpAsmAliasResult getAlias(::llvm::raw_ostream &os) const; }; namespace detail { struct LoopAnnotationAttrStorage; } // namespace detail class LoopAnnotationAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.loop_annotation"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static LoopAnnotationAttr get(::mlir::MLIRContext *context, BoolAttr disableNonforced, LoopVectorizeAttr vectorize, LoopInterleaveAttr interleave, LoopUnrollAttr unroll, LoopUnrollAndJamAttr unrollAndJam, LoopLICMAttr licm, LoopDistributeAttr distribute, LoopPipelineAttr pipeline, LoopPeeledAttr peeled, LoopUnswitchAttr unswitch, BoolAttr mustProgress, BoolAttr isVectorized, FusedLoc startLoc, FusedLoc endLoc, ::llvm::ArrayRef parallelAccesses); static constexpr ::llvm::StringLiteral getMnemonic() { return {"loop_annotation"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; BoolAttr getDisableNonforced() const; LoopVectorizeAttr getVectorize() const; LoopInterleaveAttr getInterleave() const; LoopUnrollAttr getUnroll() const; LoopUnrollAndJamAttr getUnrollAndJam() const; LoopLICMAttr getLicm() const; LoopDistributeAttr getDistribute() const; LoopPipelineAttr getPipeline() const; LoopPeeledAttr getPeeled() const; LoopUnswitchAttr getUnswitch() const; BoolAttr getMustProgress() const; BoolAttr getIsVectorized() const; FusedLoc getStartLoc() const; FusedLoc getEndLoc() const; ::llvm::ArrayRef getParallelAccesses() const; ::mlir::OpAsmAliasResult getAlias(::llvm::raw_ostream &os) const; }; namespace detail { struct DIExpressionElemAttrStorage; } // namespace detail class DIExpressionElemAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.di_expression_elem"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static DIExpressionElemAttr get(::mlir::MLIRContext *context, unsigned opcode, ::llvm::ArrayRef arguments); static constexpr ::llvm::StringLiteral getMnemonic() { return {"di_expression_elem"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; unsigned getOpcode() const; ::llvm::ArrayRef getArguments() const; }; namespace detail { struct DIExpressionAttrStorage; } // namespace detail class DIExpressionAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.di_expression"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static DIExpressionAttr get(::mlir::MLIRContext *context, ::llvm::ArrayRef operations); static DIExpressionAttr get(::mlir::MLIRContext *context); static constexpr ::llvm::StringLiteral getMnemonic() { return {"di_expression"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; ::llvm::ArrayRef getOperations() const; }; class DINullTypeAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.di_null_type"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static constexpr ::llvm::StringLiteral getMnemonic() { return {"di_null_type"}; } ::mlir::OpAsmAliasResult getAlias(::llvm::raw_ostream &os) const; }; namespace detail { struct DIBasicTypeAttrStorage; } // namespace detail class DIBasicTypeAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.di_basic_type"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static DIBasicTypeAttr get(::mlir::MLIRContext *context, unsigned tag, StringAttr name, uint64_t sizeInBits, unsigned encoding); static DIBasicTypeAttr get(::mlir::MLIRContext *context, unsigned tag, const Twine &name, uint64_t sizeInBits, unsigned encoding); static constexpr ::llvm::StringLiteral getMnemonic() { return {"di_basic_type"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; unsigned getTag() const; StringAttr getName() const; uint64_t getSizeInBits() const; unsigned getEncoding() const; ::mlir::OpAsmAliasResult getAlias(::llvm::raw_ostream &os) const; }; namespace detail { struct DICompileUnitAttrStorage; } // namespace detail class DICompileUnitAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; /// Requirements of DIRecursiveTypeAttrInterface. /// @{ /// Get a copy of this attr but with the recursive ID set to `recId`. DIRecursiveTypeAttrInterface withRecId(DistinctAttr recId); /// Build a rec-self instance using the provided `recId`. static DIRecursiveTypeAttrInterface getRecSelf(DistinctAttr recId); /// @} static constexpr ::llvm::StringLiteral name = "llvm.di_compile_unit"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static DICompileUnitAttr get(::mlir::MLIRContext *context, DistinctAttr recId, bool isRecSelf, DistinctAttr id, unsigned sourceLanguage, DIFileAttr file, StringAttr producer, bool isOptimized, DIEmissionKind emissionKind, bool isDebugInfoForProfiling, DINameTableKind nameTableKind, StringAttr splitDebugFilename, ::llvm::ArrayRef importedEntities); static DICompileUnitAttr get(DistinctAttr id, unsigned sourceLanguage, DIFileAttr file, StringAttr producer, bool isOptimized, DIEmissionKind emissionKind, bool isDebugInfoForProfiling = false, DINameTableKind nameTableKind = DINameTableKind::Default, StringAttr splitDebugFilename = {}, ArrayRef importedEntities = {}); static constexpr ::llvm::StringLiteral getMnemonic() { return {"di_compile_unit"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; DistinctAttr getRecId() const; bool getIsRecSelf() const; DistinctAttr getId() const; unsigned getSourceLanguage() const; DIFileAttr getFile() const; StringAttr getProducer() const; bool getIsOptimized() const; DIEmissionKind getEmissionKind() const; bool getIsDebugInfoForProfiling() const; DINameTableKind getNameTableKind() const; StringAttr getSplitDebugFilename() const; ::llvm::ArrayRef getImportedEntities() const; ::mlir::OpAsmAliasResult getAlias(::llvm::raw_ostream &os) const; }; namespace detail { struct DICompositeTypeAttrStorage; } // namespace detail class DICompositeTypeAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; /// Requirements of DIRecursiveTypeAttrInterface. /// @{ /// Get a copy of this type attr but with the recursive ID set to `recId`. DIRecursiveTypeAttrInterface withRecId(DistinctAttr recId); /// Build a rec-self instance using the provided `recId`. static DIRecursiveTypeAttrInterface getRecSelf(DistinctAttr recId); /// @} static constexpr ::llvm::StringLiteral name = "llvm.di_composite_type"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static DICompositeTypeAttr get(::mlir::MLIRContext *context, DistinctAttr recId, bool isRecSelf, unsigned tag, StringAttr name, DIFileAttr file, uint32_t line, DIScopeAttr scope, DITypeAttr baseType, DIFlags flags, uint64_t sizeInBits, uint64_t alignInBits, DIExpressionAttr dataLocation, DIExpressionAttr rank, DIExpressionAttr allocated, DIExpressionAttr associated, StringAttr identifier, DIDerivedTypeAttr discriminator, ::llvm::ArrayRef elements); static DICompositeTypeAttr get(::mlir::MLIRContext *context, unsigned tag, StringAttr name, DIFileAttr file, uint32_t line, DIScopeAttr scope, DITypeAttr baseType, DIFlags flags, uint64_t sizeInBits, uint64_t alignInBits, DIExpressionAttr dataLocation, DIExpressionAttr rank, DIExpressionAttr allocated, DIExpressionAttr associated, StringAttr identifier, DIDerivedTypeAttr discriminator, ArrayRef elements); static constexpr ::llvm::StringLiteral getMnemonic() { return {"di_composite_type"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; DistinctAttr getRecId() const; bool getIsRecSelf() const; unsigned getTag() const; StringAttr getName() const; DIFileAttr getFile() const; uint32_t getLine() const; DIScopeAttr getScope() const; DITypeAttr getBaseType() const; DIFlags getFlags() const; uint64_t getSizeInBits() const; uint64_t getAlignInBits() const; DIExpressionAttr getDataLocation() const; DIExpressionAttr getRank() const; DIExpressionAttr getAllocated() const; DIExpressionAttr getAssociated() const; StringAttr getIdentifier() const; DIDerivedTypeAttr getDiscriminator() const; ::llvm::ArrayRef getElements() const; ::mlir::OpAsmAliasResult getAlias(::llvm::raw_ostream &os) const; }; namespace detail { struct DIDerivedTypeAttrStorage; } // namespace detail class DIDerivedTypeAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.di_derived_type"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; using Base::getChecked; static DIDerivedTypeAttr get(::mlir::MLIRContext *context, unsigned tag, StringAttr name, DIFileAttr file, uint32_t line, DIScopeAttr scope, DITypeAttr baseType, uint64_t sizeInBits, uint32_t alignInBits, uint64_t offsetInBits, std::optional dwarfAddressSpace, DIFlags flags, Attribute extraData); static DIDerivedTypeAttr getChecked(::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError, ::mlir::MLIRContext *context, unsigned tag, StringAttr name, DIFileAttr file, uint32_t line, DIScopeAttr scope, DITypeAttr baseType, uint64_t sizeInBits, uint32_t alignInBits, uint64_t offsetInBits, std::optional dwarfAddressSpace, DIFlags flags, Attribute extraData); static ::llvm::LogicalResult verify(::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError, unsigned tag, StringAttr name, DIFileAttr file, uint32_t line, DIScopeAttr scope, DITypeAttr baseType, uint64_t sizeInBits, uint32_t alignInBits, uint64_t offsetInBits, std::optional dwarfAddressSpace, DIFlags flags, Attribute extraData); static ::llvm::LogicalResult verifyInvariants(::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError, unsigned tag, StringAttr name, DIFileAttr file, uint32_t line, DIScopeAttr scope, DITypeAttr baseType, uint64_t sizeInBits, uint32_t alignInBits, uint64_t offsetInBits, std::optional dwarfAddressSpace, DIFlags flags, Attribute extraData); static constexpr ::llvm::StringLiteral getMnemonic() { return {"di_derived_type"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; unsigned getTag() const; StringAttr getName() const; DIFileAttr getFile() const; uint32_t getLine() const; DIScopeAttr getScope() const; DITypeAttr getBaseType() const; uint64_t getSizeInBits() const; uint32_t getAlignInBits() const; uint64_t getOffsetInBits() const; std::optional getDwarfAddressSpace() const; DIFlags getFlags() const; Attribute getExtraData() const; ::mlir::OpAsmAliasResult getAlias(::llvm::raw_ostream &os) const; }; namespace detail { struct DIFileAttrStorage; } // namespace detail class DIFileAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.di_file"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static DIFileAttr get(::mlir::MLIRContext *context, StringAttr name, StringAttr directory); static DIFileAttr get(::mlir::MLIRContext *context, StringRef name, StringRef directory); static constexpr ::llvm::StringLiteral getMnemonic() { return {"di_file"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; StringAttr getName() const; StringAttr getDirectory() const; ::mlir::OpAsmAliasResult getAlias(::llvm::raw_ostream &os) const; }; namespace detail { struct DIGlobalVariableExpressionAttrStorage; } // namespace detail class DIGlobalVariableExpressionAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.di_global_variable_expression"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static DIGlobalVariableExpressionAttr get(::mlir::MLIRContext *context, DIGlobalVariableAttr var, DIExpressionAttr expr); static constexpr ::llvm::StringLiteral getMnemonic() { return {"di_global_variable_expression"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; DIGlobalVariableAttr getVar() const; DIExpressionAttr getExpr() const; ::mlir::OpAsmAliasResult getAlias(::llvm::raw_ostream &os) const; }; namespace detail { struct DIGlobalVariableAttrStorage; } // namespace detail class DIGlobalVariableAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.di_global_variable"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static DIGlobalVariableAttr get(::mlir::MLIRContext *context, DIScopeAttr scope, StringAttr name, StringAttr linkageName, DIFileAttr file, unsigned line, DITypeAttr type, bool isLocalToUnit, bool isDefined, unsigned alignInBits); static constexpr ::llvm::StringLiteral getMnemonic() { return {"di_global_variable"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; DIScopeAttr getScope() const; StringAttr getName() const; StringAttr getLinkageName() const; DIFileAttr getFile() const; unsigned getLine() const; DITypeAttr getType() const; bool getIsLocalToUnit() const; bool getIsDefined() const; unsigned getAlignInBits() const; ::mlir::OpAsmAliasResult getAlias(::llvm::raw_ostream &os) const; }; namespace detail { struct DILexicalBlockAttrStorage; } // namespace detail class DILexicalBlockAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.di_lexical_block"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static DILexicalBlockAttr get(::mlir::MLIRContext *context, DIScopeAttr scope, DIFileAttr file, unsigned line, unsigned column); static DILexicalBlockAttr get(DIScopeAttr scope, DIFileAttr file, unsigned line, unsigned column); static constexpr ::llvm::StringLiteral getMnemonic() { return {"di_lexical_block"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; DIScopeAttr getScope() const; DIFileAttr getFile() const; unsigned getLine() const; unsigned getColumn() const; ::mlir::OpAsmAliasResult getAlias(::llvm::raw_ostream &os) const; }; namespace detail { struct DILexicalBlockFileAttrStorage; } // namespace detail class DILexicalBlockFileAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.di_lexical_block_file"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static DILexicalBlockFileAttr get(::mlir::MLIRContext *context, DIScopeAttr scope, DIFileAttr file, unsigned discriminator); static DILexicalBlockFileAttr get(DIScopeAttr scope, DIFileAttr file, unsigned discriminator); static constexpr ::llvm::StringLiteral getMnemonic() { return {"di_lexical_block_file"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; DIScopeAttr getScope() const; DIFileAttr getFile() const; unsigned getDiscriminator() const; ::mlir::OpAsmAliasResult getAlias(::llvm::raw_ostream &os) const; }; namespace detail { struct DILocalVariableAttrStorage; } // namespace detail class DILocalVariableAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.di_local_variable"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static DILocalVariableAttr get(::mlir::MLIRContext *context, DIScopeAttr scope, StringAttr name, DIFileAttr file, unsigned line, unsigned arg, unsigned alignInBits, DITypeAttr type, DIFlags flags); static DILocalVariableAttr get(DIScopeAttr scope, StringRef name, DIFileAttr file, unsigned line, unsigned arg, unsigned alignInBits, DITypeAttr type, DIFlags flags); static constexpr ::llvm::StringLiteral getMnemonic() { return {"di_local_variable"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; DIScopeAttr getScope() const; StringAttr getName() const; DIFileAttr getFile() const; unsigned getLine() const; unsigned getArg() const; unsigned getAlignInBits() const; DITypeAttr getType() const; DIFlags getFlags() const; ::mlir::OpAsmAliasResult getAlias(::llvm::raw_ostream &os) const; }; namespace detail { struct DISubprogramAttrStorage; } // namespace detail class DISubprogramAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; /// Requirements of DIRecursiveTypeAttrInterface. /// @{ /// Get a copy of this type attr but with the recursive ID set to `recId`. DIRecursiveTypeAttrInterface withRecId(DistinctAttr recId); /// Build a rec-self instance using the provided `recId`. static DIRecursiveTypeAttrInterface getRecSelf(DistinctAttr recId); /// @} static constexpr ::llvm::StringLiteral name = "llvm.di_subprogram"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static DISubprogramAttr get(::mlir::MLIRContext *context, DistinctAttr recId, bool isRecSelf, DistinctAttr id, DICompileUnitAttr compileUnit, DIScopeAttr scope, StringAttr name, StringAttr linkageName, DIFileAttr file, unsigned line, unsigned scopeLine, DISubprogramFlags subprogramFlags, DISubroutineTypeAttr type, ::llvm::ArrayRef retainedNodes, ::llvm::ArrayRef annotations); static DISubprogramAttr get(::mlir::MLIRContext *context, DistinctAttr id, DICompileUnitAttr compileUnit, DIScopeAttr scope, StringAttr name, StringAttr linkageName, DIFileAttr file, unsigned line, unsigned scopeLine, DISubprogramFlags subprogramFlags, DISubroutineTypeAttr type, ArrayRef retainedNodes, ArrayRef annotations); static constexpr ::llvm::StringLiteral getMnemonic() { return {"di_subprogram"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; DistinctAttr getRecId() const; bool getIsRecSelf() const; DistinctAttr getId() const; DICompileUnitAttr getCompileUnit() const; DIScopeAttr getScope() const; StringAttr getName() const; StringAttr getLinkageName() const; DIFileAttr getFile() const; unsigned getLine() const; unsigned getScopeLine() const; DISubprogramFlags getSubprogramFlags() const; DISubroutineTypeAttr getType() const; ::llvm::ArrayRef getRetainedNodes() const; ::llvm::ArrayRef getAnnotations() const; ::mlir::OpAsmAliasResult getAlias(::llvm::raw_ostream &os) const; }; namespace detail { struct DIModuleAttrStorage; } // namespace detail class DIModuleAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.di_module"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static DIModuleAttr get(::mlir::MLIRContext *context, DIFileAttr file, DIScopeAttr scope, StringAttr name, StringAttr configMacros, StringAttr includePath, StringAttr apinotes, unsigned line, bool isDecl); static constexpr ::llvm::StringLiteral getMnemonic() { return {"di_module"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; DIFileAttr getFile() const; DIScopeAttr getScope() const; StringAttr getName() const; StringAttr getConfigMacros() const; StringAttr getIncludePath() const; StringAttr getApinotes() const; unsigned getLine() const; bool getIsDecl() const; ::mlir::OpAsmAliasResult getAlias(::llvm::raw_ostream &os) const; }; namespace detail { struct DINamespaceAttrStorage; } // namespace detail class DINamespaceAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.di_namespace"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static DINamespaceAttr get(::mlir::MLIRContext *context, StringAttr name, DIScopeAttr scope, bool exportSymbols); static constexpr ::llvm::StringLiteral getMnemonic() { return {"di_namespace"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; StringAttr getName() const; DIScopeAttr getScope() const; bool getExportSymbols() const; ::mlir::OpAsmAliasResult getAlias(::llvm::raw_ostream &os) const; }; namespace detail { struct DIImportedEntityAttrStorage; } // namespace detail class DIImportedEntityAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.di_imported_entity"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static DIImportedEntityAttr get(::mlir::MLIRContext *context, unsigned tag, DIScopeAttr scope, DINodeAttr entity, DIFileAttr file, unsigned line, StringAttr name, ::llvm::ArrayRef elements); static constexpr ::llvm::StringLiteral getMnemonic() { return {"di_imported_entity"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; unsigned getTag() const; DIScopeAttr getScope() const; DINodeAttr getEntity() const; DIFileAttr getFile() const; unsigned getLine() const; StringAttr getName() const; ::llvm::ArrayRef getElements() const; ::mlir::OpAsmAliasResult getAlias(::llvm::raw_ostream &os) const; }; namespace detail { struct DIAnnotationAttrStorage; } // namespace detail class DIAnnotationAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.di_annotation"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static DIAnnotationAttr get(::mlir::MLIRContext *context, StringAttr name, StringAttr value); static constexpr ::llvm::StringLiteral getMnemonic() { return {"di_annotation"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; StringAttr getName() const; StringAttr getValue() const; }; namespace detail { struct DISubrangeAttrStorage; } // namespace detail class DISubrangeAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.di_subrange"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static DISubrangeAttr get(::mlir::MLIRContext *context, ::mlir::Attribute count, ::mlir::Attribute lowerBound, ::mlir::Attribute upperBound, ::mlir::Attribute stride); static constexpr ::llvm::StringLiteral getMnemonic() { return {"di_subrange"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; ::mlir::Attribute getCount() const; ::mlir::Attribute getLowerBound() const; ::mlir::Attribute getUpperBound() const; ::mlir::Attribute getStride() const; }; namespace detail { struct DICommonBlockAttrStorage; } // namespace detail class DICommonBlockAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.di_common_block"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static DICommonBlockAttr get(::mlir::MLIRContext *context, DIScopeAttr scope, DIGlobalVariableAttr decl, StringAttr name, DIFileAttr file, unsigned line); static constexpr ::llvm::StringLiteral getMnemonic() { return {"di_common_block"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; DIScopeAttr getScope() const; DIGlobalVariableAttr getDecl() const; StringAttr getName() const; DIFileAttr getFile() const; unsigned getLine() const; ::mlir::OpAsmAliasResult getAlias(::llvm::raw_ostream &os) const; }; namespace detail { struct DIGenericSubrangeAttrStorage; } // namespace detail class DIGenericSubrangeAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.di_generic_subrange"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static DIGenericSubrangeAttr get(::mlir::MLIRContext *context, ::mlir::Attribute count, ::mlir::Attribute lowerBound, ::mlir::Attribute upperBound, ::mlir::Attribute stride); static constexpr ::llvm::StringLiteral getMnemonic() { return {"di_generic_subrange"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; ::mlir::Attribute getCount() const; ::mlir::Attribute getLowerBound() const; ::mlir::Attribute getUpperBound() const; ::mlir::Attribute getStride() const; }; namespace detail { struct DISubroutineTypeAttrStorage; } // namespace detail class DISubroutineTypeAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.di_subroutine_type"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static DISubroutineTypeAttr get(::mlir::MLIRContext *context, unsigned callingConvention, ::llvm::ArrayRef types); static DISubroutineTypeAttr get(::mlir::MLIRContext *context, ArrayRef types); static constexpr ::llvm::StringLiteral getMnemonic() { return {"di_subroutine_type"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; unsigned getCallingConvention() const; ::llvm::ArrayRef getTypes() const; ::mlir::OpAsmAliasResult getAlias(::llvm::raw_ostream &os) const; }; namespace detail { struct DILabelAttrStorage; } // namespace detail class DILabelAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.di_label"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static DILabelAttr get(::mlir::MLIRContext *context, DIScopeAttr scope, StringAttr name, DIFileAttr file, unsigned line); static DILabelAttr get(DIScopeAttr scope, StringRef name, DIFileAttr file, unsigned line); static constexpr ::llvm::StringLiteral getMnemonic() { return {"di_label"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; DIScopeAttr getScope() const; StringAttr getName() const; DIFileAttr getFile() const; unsigned getLine() const; ::mlir::OpAsmAliasResult getAlias(::llvm::raw_ostream &os) const; }; namespace detail { struct DIStringTypeAttrStorage; } // namespace detail class DIStringTypeAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.di_string_type"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static DIStringTypeAttr get(::mlir::MLIRContext *context, unsigned tag, StringAttr name, uint64_t sizeInBits, uint32_t alignInBits, DIVariableAttr stringLength, DIExpressionAttr stringLengthExp, DIExpressionAttr stringLocationExp, unsigned encoding); static constexpr ::llvm::StringLiteral getMnemonic() { return {"di_string_type"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; unsigned getTag() const; StringAttr getName() const; uint64_t getSizeInBits() const; uint32_t getAlignInBits() const; DIVariableAttr getStringLength() const; DIExpressionAttr getStringLengthExp() const; DIExpressionAttr getStringLocationExp() const; unsigned getEncoding() const; ::mlir::OpAsmAliasResult getAlias(::llvm::raw_ostream &os) const; }; namespace detail { struct MemoryEffectsAttrStorage; } // namespace detail class MemoryEffectsAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; bool isReadWrite(); static constexpr ::llvm::StringLiteral name = "llvm.memory_effects"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static MemoryEffectsAttr get(::mlir::MLIRContext *context, ModRefInfo other, ModRefInfo argMem, ModRefInfo inaccessibleMem, ModRefInfo errnoMem, ModRefInfo targetMem0, ModRefInfo targetMem1); static MemoryEffectsAttr get(::mlir::MLIRContext *context, ArrayRef memInfoArgs); static constexpr ::llvm::StringLiteral getMnemonic() { return {"memory_effects"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; ModRefInfo getOther() const; ModRefInfo getArgMem() const; ModRefInfo getInaccessibleMem() const; ModRefInfo getErrnoMem() const; ModRefInfo getTargetMem0() const; ModRefInfo getTargetMem1() const; }; namespace detail { struct DenormalFPEnvAttrStorage; } // namespace detail class DenormalFPEnvAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.denormal_fpenv"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static DenormalFPEnvAttr get(::mlir::MLIRContext *context, DenormalModeKind default_output_mode, DenormalModeKind default_input_mode, DenormalModeKind float_output_mode, DenormalModeKind float_input_mode); static constexpr ::llvm::StringLiteral getMnemonic() { return {"denormal_fpenv"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; DenormalModeKind getDefaultOutputMode() const; DenormalModeKind getDefaultInputMode() const; DenormalModeKind getFloatOutputMode() const; DenormalModeKind getFloatInputMode() const; }; namespace detail { struct AliasScopeDomainAttrStorage; } // namespace detail class AliasScopeDomainAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.alias_scope_domain"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static AliasScopeDomainAttr get(::mlir::MLIRContext *context, Attribute id, StringAttr description); static AliasScopeDomainAttr get(::mlir::MLIRContext *context, StringAttr description = {}); static constexpr ::llvm::StringLiteral getMnemonic() { return {"alias_scope_domain"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; Attribute getId() const; StringAttr getDescription() const; ::mlir::OpAsmAliasResult getAlias(::llvm::raw_ostream &os) const; }; namespace detail { struct AliasScopeAttrStorage; } // namespace detail class AliasScopeAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.alias_scope"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; using Base::getChecked; static AliasScopeAttr get(::mlir::MLIRContext *context, Attribute id, AliasScopeDomainAttr domain, StringAttr description); static AliasScopeAttr getChecked(::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError, ::mlir::MLIRContext *context, Attribute id, AliasScopeDomainAttr domain, StringAttr description); static AliasScopeAttr get(AliasScopeDomainAttr domain, StringAttr description = {}); static AliasScopeAttr getChecked(::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError, AliasScopeDomainAttr domain, StringAttr description = {}); static ::llvm::LogicalResult verify(::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError, Attribute id, AliasScopeDomainAttr domain, StringAttr description); static ::llvm::LogicalResult verifyInvariants(::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError, Attribute id, AliasScopeDomainAttr domain, StringAttr description); static constexpr ::llvm::StringLiteral getMnemonic() { return {"alias_scope"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; Attribute getId() const; AliasScopeDomainAttr getDomain() const; StringAttr getDescription() const; ::mlir::OpAsmAliasResult getAlias(::llvm::raw_ostream &os) const; }; namespace detail { struct AccessGroupAttrStorage; } // namespace detail class AccessGroupAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.access_group"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static AccessGroupAttr get(::mlir::MLIRContext *context, DistinctAttr id); static AccessGroupAttr get(::mlir::MLIRContext *context); static constexpr ::llvm::StringLiteral getMnemonic() { return {"access_group"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; DistinctAttr getId() const; ::mlir::OpAsmAliasResult getAlias(::llvm::raw_ostream &os) const; }; namespace detail { struct TBAARootAttrStorage; } // namespace detail class TBAARootAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.tbaa_root"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static TBAARootAttr get(::mlir::MLIRContext *context, StringAttr id); static constexpr ::llvm::StringLiteral getMnemonic() { return {"tbaa_root"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; StringAttr getId() const; ::mlir::OpAsmAliasResult getAlias(::llvm::raw_ostream &os) const; }; namespace detail { struct TBAAMemberAttrStorage; } // namespace detail class TBAAMemberAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.tbaa_member"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static TBAAMemberAttr get(::mlir::MLIRContext *context, TBAANodeAttr typeDesc, int64_t offset); static TBAAMemberAttr get(TBAANodeAttr typeDesc, int64_t offset); static constexpr ::llvm::StringLiteral getMnemonic() { return {"tbaa_member"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; TBAANodeAttr getTypeDesc() const; int64_t getOffset() const; }; namespace detail { struct TBAATypeDescriptorAttrStorage; } // namespace detail class TBAATypeDescriptorAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.tbaa_type_desc"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static TBAATypeDescriptorAttr get(::mlir::MLIRContext *context, ::llvm::StringRef id, ::llvm::ArrayRef members); static constexpr ::llvm::StringLiteral getMnemonic() { return {"tbaa_type_desc"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; ::llvm::StringRef getId() const; ::llvm::ArrayRef getMembers() const; ::mlir::OpAsmAliasResult getAlias(::llvm::raw_ostream &os) const; }; namespace detail { struct TBAATagAttrStorage; } // namespace detail class TBAATagAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.tbaa_tag"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static TBAATagAttr get(::mlir::MLIRContext *context, TBAATypeDescriptorAttr base_type, TBAATypeDescriptorAttr access_type, int64_t offset, bool constant); static TBAATagAttr get(TBAATypeDescriptorAttr baseType, TBAATypeDescriptorAttr accessType, int64_t offset); static constexpr ::llvm::StringLiteral getMnemonic() { return {"tbaa_tag"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; TBAATypeDescriptorAttr getBaseType() const; TBAATypeDescriptorAttr getAccessType() const; int64_t getOffset() const; bool getConstant() const; ::mlir::OpAsmAliasResult getAlias(::llvm::raw_ostream &os) const; }; namespace detail { struct MMRATagAttrStorage; } // namespace detail class MMRATagAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.mmra_tag"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static MMRATagAttr get(::mlir::MLIRContext *context, ::llvm::StringRef prefix, ::llvm::StringRef suffix); static constexpr ::llvm::StringLiteral getMnemonic() { return {"mmra_tag"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; ::llvm::StringRef getPrefix() const; ::llvm::StringRef getSuffix() const; ::mlir::OpAsmAliasResult getAlias(::llvm::raw_ostream &os) const; }; namespace detail { struct ConstantRangeAttrStorage; } // namespace detail class ConstantRangeAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.constant_range"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; using Base::getChecked; static ConstantRangeAttr get(::mlir::MLIRContext *context, ::llvm::APInt lower, ::llvm::APInt upper); static ConstantRangeAttr getChecked(::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError, ::mlir::MLIRContext *context, ::llvm::APInt lower, ::llvm::APInt upper); static ConstantRangeAttr get(::mlir::MLIRContext *context, uint32_t bitWidth, int64_t lower, int64_t upper); static ConstantRangeAttr getChecked(::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError, ::mlir::MLIRContext *context, uint32_t bitWidth, int64_t lower, int64_t upper); static ::llvm::LogicalResult verify(::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError, ::llvm::APInt lower, ::llvm::APInt upper); static ::llvm::LogicalResult verifyInvariants(::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError, ::llvm::APInt lower, ::llvm::APInt upper); static constexpr ::llvm::StringLiteral getMnemonic() { return {"constant_range"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; const ::llvm::APInt &getLower() const; const ::llvm::APInt &getUpper() const; }; namespace detail { struct VScaleRangeAttrStorage; } // namespace detail class VScaleRangeAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.vscale_range"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static VScaleRangeAttr get(::mlir::MLIRContext *context, IntegerAttr minRange, IntegerAttr maxRange); static constexpr ::llvm::StringLiteral getMnemonic() { return {"vscale_range"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; IntegerAttr getMinRange() const; IntegerAttr getMaxRange() const; }; namespace detail { struct TargetFeaturesAttrStorage; } // namespace detail class TargetFeaturesAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; /// Checks if a feature is contained within the features list. /// Note: Using a StringAttr allows doing pointer-comparisons. bool contains(::mlir::StringAttr feature) const; bool contains(::llvm::StringRef feature) const; bool nullOrEmpty() const { // Checks if this attribute is null, or the features are empty. return !bool(*this) || getFeatures().empty(); } /// Returns the list of features as an LLVM-compatible string. std::string getFeaturesString() const; /// Finds the target features on the parent FunctionOpInterface. /// Note: This assumes the attribute name matches the return value of /// `getAttributeName()`. static TargetFeaturesAttr featuresAt(Operation* op); /// Canonical name for this attribute within MLIR. static constexpr StringLiteral getAttributeName() { return StringLiteral("target_features"); } /// Returns the attribute associated with the key. FailureOr query(DataLayoutEntryKey key); static constexpr ::llvm::StringLiteral name = "llvm.target_features"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; using Base::getChecked; static TargetFeaturesAttr get(::mlir::MLIRContext *context, ::llvm::ArrayRef features); static TargetFeaturesAttr getChecked(::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError, ::mlir::MLIRContext *context, ::llvm::ArrayRef features); static TargetFeaturesAttr get(::mlir::MLIRContext *context, ::llvm::StringRef features); static TargetFeaturesAttr getChecked(::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError, ::mlir::MLIRContext *context, ::llvm::StringRef features); static TargetFeaturesAttr get(::mlir::MLIRContext *context, ::llvm::ArrayRef<::llvm::StringRef> features); static TargetFeaturesAttr getChecked(::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError, ::mlir::MLIRContext *context, ::llvm::ArrayRef<::llvm::StringRef> features); static ::llvm::LogicalResult verify(::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError, ::llvm::ArrayRef features); static ::llvm::LogicalResult verifyInvariants(::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError, ::llvm::ArrayRef features); static constexpr ::llvm::StringLiteral getMnemonic() { return {"target_features"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; ::llvm::ArrayRef getFeatures() const; }; namespace detail { struct TargetAttrStorage; } // namespace detail class TargetAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; FailureOr query(DataLayoutEntryKey key); static constexpr ::llvm::StringLiteral name = "llvm.target"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static TargetAttr get(::mlir::MLIRContext *context, StringAttr triple, StringAttr chip, TargetFeaturesAttr features); static constexpr ::llvm::StringLiteral getMnemonic() { return {"target"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; StringAttr getTriple() const; StringAttr getChip() const; TargetFeaturesAttr getFeatures() const; }; class UndefAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.undef"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static constexpr ::llvm::StringLiteral getMnemonic() { return {"undef"}; } }; class PoisonAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.poison"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static constexpr ::llvm::StringLiteral getMnemonic() { return {"poison"}; } }; namespace detail { struct DSOLocalEquivalentAttrStorage; } // namespace detail class DSOLocalEquivalentAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.dso_local_equivalent"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static DSOLocalEquivalentAttr get(::mlir::MLIRContext *context, FlatSymbolRefAttr sym); static constexpr ::llvm::StringLiteral getMnemonic() { return {"dso_local_equivalent"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; FlatSymbolRefAttr getSym() const; }; namespace detail { struct BlockTagAttrStorage; } // namespace detail class BlockTagAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.blocktag"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static BlockTagAttr get(::mlir::MLIRContext *context, uint32_t id); static constexpr ::llvm::StringLiteral getMnemonic() { return {"blocktag"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; uint32_t getId() const; }; namespace detail { struct BlockAddressAttrStorage; } // namespace detail class BlockAddressAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.blockaddress"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static BlockAddressAttr get(::mlir::MLIRContext *context, FlatSymbolRefAttr function, BlockTagAttr tag); static constexpr ::llvm::StringLiteral getMnemonic() { return {"blockaddress"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; FlatSymbolRefAttr getFunction() const; BlockTagAttr getTag() const; }; namespace detail { struct VecTypeHintAttrStorage; } // namespace detail class VecTypeHintAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.vec_type_hint"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static VecTypeHintAttr get(::mlir::MLIRContext *context, TypeAttr hint, bool is_signed); static constexpr ::llvm::StringLiteral getMnemonic() { return {"vec_type_hint"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; TypeAttr getHint() const; bool getIsSigned() const; }; class ZeroAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.zero"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static constexpr ::llvm::StringLiteral getMnemonic() { return {"zero"}; } }; namespace detail { struct TailCallKindAttrStorage; } // namespace detail class TailCallKindAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.tailcallkind"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static TailCallKindAttr get(::mlir::MLIRContext *context, TailCallKind tailCallKind); static constexpr ::llvm::StringLiteral getMnemonic() { return {"tailcallkind"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; TailCallKind getTailCallKind() const; }; namespace detail { struct WorkgroupAttributionAttrStorage; } // namespace detail class WorkgroupAttributionAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.mlir.workgroup_attribution"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static WorkgroupAttributionAttr get(::mlir::MLIRContext *context, IntegerAttr num_elements, TypeAttr element_type); static constexpr ::llvm::StringLiteral getMnemonic() { return {"mlir.workgroup_attribution"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; IntegerAttr getNumElements() const; TypeAttr getElementType() const; }; namespace detail { struct DereferenceableAttrStorage; } // namespace detail class DereferenceableAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.dereferenceable"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static DereferenceableAttr get(::mlir::MLIRContext *context, uint64_t bytes, bool mayBeNull); static constexpr ::llvm::StringLiteral getMnemonic() { return {"dereferenceable"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; uint64_t getBytes() const; bool getMayBeNull() const; }; namespace detail { struct ModuleFlagAttrStorage; } // namespace detail class ModuleFlagAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.mlir.module_flag"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; using Base::getChecked; static ModuleFlagAttr get(::mlir::MLIRContext *context, ModFlagBehavior behavior, StringAttr key, Attribute value); static ModuleFlagAttr getChecked(::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError, ::mlir::MLIRContext *context, ModFlagBehavior behavior, StringAttr key, Attribute value); static ::llvm::LogicalResult verify(::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError, ModFlagBehavior behavior, StringAttr key, Attribute value); static ::llvm::LogicalResult verifyInvariants(::llvm::function_ref<::mlir::InFlightDiagnostic()> emitError, ModFlagBehavior behavior, StringAttr key, Attribute value); static constexpr ::llvm::StringLiteral getMnemonic() { return {"mlir.module_flag"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; ModFlagBehavior getBehavior() const; StringAttr getKey() const; Attribute getValue() const; ::mlir::LLVM::ModFlagBehavior getModuleFlagBehavior() const; ::mlir::StringAttr getModuleFlagKey() const; ::mlir::Attribute getModuleFlagValue() const; }; namespace detail { struct ModuleFlagCGProfileEntryAttrStorage; } // namespace detail class ModuleFlagCGProfileEntryAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.cgprofile_entry"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static ModuleFlagCGProfileEntryAttr get(::mlir::MLIRContext *context, FlatSymbolRefAttr from, FlatSymbolRefAttr to, uint64_t count); static constexpr ::llvm::StringLiteral getMnemonic() { return {"cgprofile_entry"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; FlatSymbolRefAttr getFrom() const; FlatSymbolRefAttr getTo() const; uint64_t getCount() const; }; namespace detail { struct ModuleFlagProfileSummaryDetailedAttrStorage; } // namespace detail class ModuleFlagProfileSummaryDetailedAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.profile_summary_detailed"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static ModuleFlagProfileSummaryDetailedAttr get(::mlir::MLIRContext *context, uint32_t cut_off, uint64_t min_count, uint32_t num_counts); static constexpr ::llvm::StringLiteral getMnemonic() { return {"profile_summary_detailed"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; uint32_t getCutOff() const; uint64_t getMinCount() const; uint32_t getNumCounts() const; }; namespace detail { struct ModuleFlagProfileSummaryAttrStorage; } // namespace detail class ModuleFlagProfileSummaryAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.profile_summary"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static ModuleFlagProfileSummaryAttr get(::mlir::MLIRContext *context, ProfileSummaryFormatKind format, uint64_t total_count, uint64_t max_count, uint64_t max_internal_count, uint64_t max_function_count, uint64_t num_counts, uint64_t num_functions, std::optional is_partial_profile, FloatAttr partial_profile_ratio, ::llvm::ArrayRef detailed_summary); static constexpr ::llvm::StringLiteral getMnemonic() { return {"profile_summary"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; ProfileSummaryFormatKind getFormat() const; uint64_t getTotalCount() const; uint64_t getMaxCount() const; uint64_t getMaxInternalCount() const; uint64_t getMaxFunctionCount() const; uint64_t getNumCounts() const; uint64_t getNumFunctions() const; std::optional getIsPartialProfile() const; FloatAttr getPartialProfileRatio() const; ::llvm::ArrayRef getDetailedSummary() const; }; namespace detail { struct DependentLibrariesAttrStorage; } // namespace detail class DependentLibrariesAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.dependent_libraries"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static DependentLibrariesAttr get(::mlir::MLIRContext *context, ::llvm::ArrayRef libs); static constexpr ::llvm::StringLiteral getMnemonic() { return {"dependent_libraries"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; ::llvm::ArrayRef getLibs() const; }; namespace detail { struct UWTableKindAttrStorage; } // namespace detail class UWTableKindAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.uwtableKind"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static UWTableKindAttr get(::mlir::MLIRContext *context, uwtable::UWTableKind uwtableKind); static constexpr ::llvm::StringLiteral getMnemonic() { return {"uwtableKind"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; uwtable::UWTableKind getUwtableKind() const; }; namespace detail { struct MDStringAttrStorage; } // namespace detail class MDStringAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.md_string"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static MDStringAttr get(::mlir::MLIRContext *context, StringAttr value); static constexpr ::llvm::StringLiteral getMnemonic() { return {"md_string"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; StringAttr getValue() const; }; namespace detail { struct MDConstantAttrStorage; } // namespace detail class MDConstantAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.md_const"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static MDConstantAttr get(::mlir::MLIRContext *context, Attribute value); static constexpr ::llvm::StringLiteral getMnemonic() { return {"md_const"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; Attribute getValue() const; }; namespace detail { struct MDFuncAttrStorage; } // namespace detail class MDFuncAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.md_func"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static MDFuncAttr get(::mlir::MLIRContext *context, FlatSymbolRefAttr name); static constexpr ::llvm::StringLiteral getMnemonic() { return {"md_func"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; FlatSymbolRefAttr getName() const; }; namespace detail { struct MDNodeAttrStorage; } // namespace detail class MDNodeAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.md_node"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static MDNodeAttr get(::mlir::MLIRContext *context, ::llvm::ArrayRef operands); static constexpr ::llvm::StringLiteral getMnemonic() { return {"md_node"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; ::llvm::ArrayRef getOperands() const; }; namespace detail { struct IntegerOverflowFlagsAttrStorage; } // namespace detail class IntegerOverflowFlagsAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.overflow"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static IntegerOverflowFlagsAttr get(::mlir::MLIRContext *context, ::mlir::LLVM::IntegerOverflowFlags value); static constexpr ::llvm::StringLiteral getMnemonic() { return {"overflow"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; ::mlir::LLVM::IntegerOverflowFlags getValue() const; }; namespace detail { struct FastmathFlagsAttrStorage; } // namespace detail class FastmathFlagsAttr : public ::mlir::Attribute::AttrBase { public: using Base::Base; static constexpr ::llvm::StringLiteral name = "llvm.fastmath"; static constexpr ::llvm::StringLiteral dialectName = "llvm"; static FastmathFlagsAttr get(::mlir::MLIRContext *context, ::mlir::LLVM::FastmathFlags value); static constexpr ::llvm::StringLiteral getMnemonic() { return {"fastmath"}; } static ::mlir::Attribute parse(::mlir::AsmParser &odsParser, ::mlir::Type odsType); void print(::mlir::AsmPrinter &odsPrinter) const; ::mlir::LLVM::FastmathFlags getValue() const; }; } // namespace mlir::LLVM MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::AddressSpaceAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::CConvAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::ComdatAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::LinkageAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::FramePointerKindAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::LoopVectorizeAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::LoopInterleaveAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::LoopUnrollAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::LoopUnrollAndJamAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::LoopLICMAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::LoopDistributeAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::LoopPipelineAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::LoopPeeledAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::LoopUnswitchAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::LoopAnnotationAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::DIExpressionElemAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::DIExpressionAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::DINullTypeAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::DIBasicTypeAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::DICompileUnitAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::DICompositeTypeAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::DIDerivedTypeAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::DIFileAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::DIGlobalVariableExpressionAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::DIGlobalVariableAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::DILexicalBlockAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::DILexicalBlockFileAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::DILocalVariableAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::DISubprogramAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::DIModuleAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::DINamespaceAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::DIImportedEntityAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::DIAnnotationAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::DISubrangeAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::DICommonBlockAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::DIGenericSubrangeAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::DISubroutineTypeAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::DILabelAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::DIStringTypeAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::MemoryEffectsAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::DenormalFPEnvAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::AliasScopeDomainAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::AliasScopeAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::AccessGroupAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::TBAARootAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::TBAAMemberAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::TBAATypeDescriptorAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::TBAATagAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::MMRATagAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::ConstantRangeAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::VScaleRangeAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::TargetFeaturesAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::TargetAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::UndefAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::PoisonAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::DSOLocalEquivalentAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::BlockTagAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::BlockAddressAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::VecTypeHintAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::ZeroAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::TailCallKindAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::WorkgroupAttributionAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::DereferenceableAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::ModuleFlagAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::ModuleFlagCGProfileEntryAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::ModuleFlagProfileSummaryDetailedAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::ModuleFlagProfileSummaryAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::DependentLibrariesAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::UWTableKindAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::MDStringAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::MDConstantAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::MDFuncAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::MDNodeAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::IntegerOverflowFlagsAttr) MLIR_DECLARE_EXPLICIT_TYPE_ID(::mlir::LLVM::FastmathFlagsAttr) #endif // GET_ATTRDEF_CLASSES