-
Notifications
You must be signed in to change notification settings - Fork 13.6k
[mlir-c] expand the mlir llvm dialect C api with more attributes/enums #84453
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
@llvm/pr-subscribers-mlir-core @llvm/pr-subscribers-mlir-llvm Author: Edgar (edg-l) ChangesThis is kind of a followup to #83992 Full diff: https://github.com/llvm/llvm-project/pull/84453.diff 3 Files Affected:
diff --git a/mlir/include/mlir-c/Dialect/LLVM.h b/mlir/include/mlir-c/Dialect/LLVM.h
index d823afb659c8db..68c502b1ca6b9c 100644
--- a/mlir/include/mlir-c/Dialect/LLVM.h
+++ b/mlir/include/mlir-c/Dialect/LLVM.h
@@ -227,12 +227,54 @@ MLIR_CAPI_EXPORTED MlirAttribute mlirLLVMDIBasicTypeAttrGet(
MlirContext ctx, unsigned int tag, MlirAttribute name, uint64_t sizeInBits,
MlirLLVMTypeEncoding encoding);
+enum MlirLLVMDIFlags {
+ MlirLLVMDIFlagsZero = 0,
+ MlirLLVMDIFlagsBit0 = 1,
+ MlirLLVMDIFlagsBit1 = 2,
+ MlirLLVMDIFlagsPrivate = 1,
+ MlirLLVMDIFlagsProtected = 2,
+ MlirLLVMDIFlagsPublic = 3,
+ MlirLLVMDIFlagsFwdDecl = 4,
+ MlirLLVMDIFlagsAppleBlock = 8,
+ MlirLLVMDIFlagsReservedBit4 = 16,
+ MlirLLVMDIFlagsVirtual = 32,
+ MlirLLVMDIFlagsArtificial = 64,
+ MlirLLVMDIFlagsExplicit = 128,
+ MlirLLVMDIFlagsPrototyped = 256,
+ MlirLLVMDIFlagsObjcClassComplete = 512,
+ MlirLLVMDIFlagsObjectPointer = 1024,
+ MlirLLVMDIFlagsVector = 2048,
+ MlirLLVMDIFlagsStaticMember = 4096,
+ MlirLLVMDIFlagsLValueReference = 8192,
+ MlirLLVMDIFlagsRValueReference = 16384,
+ MlirLLVMDIFlagsExportSymbols = 32768,
+ MlirLLVMDIFlagsSingleInheritance = 65536,
+ MlirLLVMDIFlagsMultipleInheritance = 65536,
+ MlirLLVMDIFlagsVirtualInheritance = 65536,
+ MlirLLVMDIFlagsIntroducedVirtual = 262144,
+ MlirLLVMDIFlagsBitField = 524288,
+ MlirLLVMDIFlagsNoReturn = 1048576,
+ MlirLLVMDIFlagsTypePassByValue = 4194304,
+ MlirLLVMDIFlagsTypePassByReference = 8388608,
+ MlirLLVMDIFlagsEnumClass = 16777216,
+ MlirLLVMDIFlagsThunk = 33554432,
+ MlirLLVMDIFlagsNonTrivial = 67108864,
+ MlirLLVMDIFlagsBigEndian = 134217728,
+ MlirLLVMDIFlagsLittleEndian = 268435456,
+ MlirLLVMDIFlagsAllCallsDescribed = 536870912,
+};
+typedef enum MlirLLVMDIFlags MlirLLVMDIFlags;
+
+/// Creates a LLVM DIFlags attribute.
+MLIR_CAPI_EXPORTED MlirAttribute mlirLLVMDIFlagsAttrGet(MlirContext ctx,
+ MlirLLVMDIFlags value);
+
/// Creates a LLVM DICompositeType attribute.
MLIR_CAPI_EXPORTED MlirAttribute mlirLLVMDICompositeTypeAttrGet(
MlirContext ctx, unsigned int tag, MlirAttribute name, MlirAttribute file,
- uint32_t line, MlirAttribute scope, MlirAttribute baseType, int64_t flags,
- uint64_t sizeInBits, uint64_t alignInBits, intptr_t nElements,
- MlirAttribute const *elements);
+ uint32_t line, MlirAttribute scope, MlirAttribute baseType,
+ MlirLLVMDIFlags flags, uint64_t sizeInBits, uint64_t alignInBits,
+ intptr_t nElements, MlirAttribute const *elements);
/// Creates a LLVM DIDerivedType attribute.
MLIR_CAPI_EXPORTED MlirAttribute mlirLLVMDIDerivedTypeAttrGet(
@@ -263,10 +305,6 @@ MLIR_CAPI_EXPORTED MlirAttribute mlirLLVMDICompileUnitAttrGet(
MlirAttribute file, MlirAttribute producer, bool isOptimized,
MlirLLVMDIEmissionKind emissionKind);
-/// Creates a LLVM DIFlags attribute.
-MLIR_CAPI_EXPORTED MlirAttribute mlirLLVMDIFlagsAttrGet(MlirContext ctx,
- uint64_t value);
-
/// Creates a LLVM DILexicalBlock attribute.
MLIR_CAPI_EXPORTED MlirAttribute mlirLLVMDILexicalBlockAttrGet(
MlirContext ctx, MlirAttribute scope, MlirAttribute file, unsigned int line,
@@ -283,12 +321,33 @@ MLIR_CAPI_EXPORTED MlirAttribute mlirLLVMDILocalVariableAttrGet(
MlirAttribute diFile, unsigned int line, unsigned int arg,
unsigned int alignInBits, MlirAttribute diType);
+/// Creates a LLVM DINamespaceAttr attribute.
+MLIR_CAPI_EXPORTED MlirAttribute mlirLLVMDINamespaceAttrGet(MlirContext ctx,
+ MlirAttribute name,
+ MlirAttribute scope,
+ bool exportSymbols);
+
+enum MlirLLVMDISubprogramFlags {
+ MlirLLVMDISubprogramFlagsVirtual = 1,
+ MlirLLVMDISubprogramFlagsPureVirtual = 2,
+ MlirLLVMDISubprogramFlagsLocalToUnit = 4,
+ MlirLLVMDISubprogramFlagsDefinition = 8,
+ MlirLLVMDISubprogramFlagsOptimized = 16,
+ MlirLLVMDISubprogramFlagsPure = 32,
+ MlirLLVMDISubprogramFlagsElemental = 64,
+ MlirLLVMDISubprogramFlagsRecursive = 128,
+ MlirLLVMDISubprogramFlagsMainSubprogram = 256,
+ MlirLLVMDISubprogramFlagsDeleted = 512,
+ MlirLLVMDISubprogramFlagsObjCDirect = 2048,
+};
+typedef enum MlirLLVMDISubprogramFlags MlirLLVMDISubprogramFlags;
+
/// Creates a LLVM DISubprogramAttr attribute.
MLIR_CAPI_EXPORTED MlirAttribute mlirLLVMDISubprogramAttrGet(
MlirContext ctx, MlirAttribute id, MlirAttribute compileUnit,
MlirAttribute scope, MlirAttribute name, MlirAttribute linkageName,
MlirAttribute file, unsigned int line, unsigned int scopeLine,
- uint64_t subprogramFlags, MlirAttribute type);
+ MlirLLVMDISubprogramFlags subprogramFlags, MlirAttribute type);
/// Gets the scope from this DISubprogramAttr.
MLIR_CAPI_EXPORTED MlirAttribute
@@ -314,6 +373,18 @@ mlirLLVMDISubprogramAttrGetFile(MlirAttribute diSubprogram);
MLIR_CAPI_EXPORTED MlirAttribute
mlirLLVMDISubprogramAttrGetType(MlirAttribute diSubprogram);
+/// Gets the linkage name from this DISubprogramAttr.
+MLIR_CAPI_EXPORTED MlirIdentifier
+mlirLLVMDISubprogramAttrGetLinkageName(MlirAttribute diSubprogram);
+
+/// Gets the name from this DISubprogramAttr.
+MLIR_CAPI_EXPORTED MlirIdentifier
+mlirLLVMDISubprogramAttrGetName(MlirAttribute diSubprogram);
+
+/// Gets the subprogram flags from this DISubprogramAttr.
+MLIR_CAPI_EXPORTED MlirLLVMDISubprogramFlags
+mlirLLVMDISubprogramAttrGetSubprogramFlags(MlirAttribute diSubprogram);
+
/// Creates a LLVM DISubroutineTypeAttr attribute.
MLIR_CAPI_EXPORTED MlirAttribute
mlirLLVMDISubroutineTypeAttrGet(MlirContext ctx, unsigned int callingConvention,
@@ -329,6 +400,175 @@ MLIR_CAPI_EXPORTED MlirAttribute mlirLLVMDIModuleAttrGet(
MLIR_CAPI_EXPORTED MlirAttribute
mlirLLVMDIModuleAttrGetScope(MlirAttribute diModule);
+/// Gets the api notes of this DIModuleAttr.
+MLIR_CAPI_EXPORTED MlirIdentifier
+mlirLLVMDIModuleAttrGetApinotes(MlirAttribute diModule);
+
+/// Gets the config macros of this DIModuleAttr.
+MLIR_CAPI_EXPORTED MlirIdentifier
+mlirLLVMDIModuleAttrGetConfigMacros(MlirAttribute diModule);
+
+/// Gets the file of this DIModuleAttr.
+MLIR_CAPI_EXPORTED MlirAttribute
+mlirLLVMDIModuleAttrGetFile(MlirAttribute diModule);
+
+/// Gets the include path of this DIModuleAttr.
+MLIR_CAPI_EXPORTED MlirIdentifier
+mlirLLVMDIModuleAttrGetIncludePath(MlirAttribute diModule);
+
+/// Gets whether this DIModuleAttr is a declaration.
+MLIR_CAPI_EXPORTED bool mlirLLVMDIModuleAttrGetIsDecl(MlirAttribute diModule);
+
+/// Creates a LLVM DISubrange attribute.
+///
+/// All parameters have the type IntegerAttr.
+MLIR_CAPI_EXPORTED MlirAttribute mlirLLVMDISubrangeAttrGet(
+ MlirContext ctx, MlirAttribute count, MlirAttribute lowerBound,
+ MlirAttribute upperBound, MlirAttribute stride);
+
+enum MlirLLVMAtomicOrdering {
+ MlirLLVMAtomicOrderingNot_atomic = 0,
+ MlirLLVMAtomicOrderingUnordered = 1,
+ MlirLLVMAtomicOrderingMonotonic = 2,
+ MlirLLVMAtomicOrderingAcquire = 4,
+ MlirLLVMAtomicOrderingRelease = 5,
+ MlirLLVMAtomicOrderingAcq_rel = 6,
+ MlirLLVMAtomicOrderingSeq_cst = 7,
+};
+typedef enum MlirLLVMAtomicOrdering MlirLLVMAtomicOrdering;
+
+/// Creates a LLVM AtomicOrderingAttr.
+MLIR_CAPI_EXPORTED MlirAttribute
+mlirLLVMAtomicOrderingAttrGet(MlirContext ctx, MlirLLVMAtomicOrdering ordering);
+
+enum MlirLLVMAtomicBinOp {
+ MlirLLVMAtomicBinOpxchg = 0,
+ MlirLLVMAtomicBinOpadd = 1,
+ MlirLLVMAtomicBinOpsub = 2,
+ MlirLLVMAtomicBinOp_and = 3,
+ MlirLLVMAtomicBinOpnand = 4,
+ MlirLLVMAtomicBinOp_or = 5,
+ MlirLLVMAtomicBinOp_xor = 6,
+ MlirLLVMAtomicBinOpmax = 7,
+ MlirLLVMAtomicBinOpmin = 8,
+ MlirLLVMAtomicBinOpumax = 9,
+ MlirLLVMAtomicBinOpumin = 10,
+ MlirLLVMAtomicBinOpfadd = 11,
+ MlirLLVMAtomicBinOpfsub = 12,
+ MlirLLVMAtomicBinOpfmax = 13,
+ MlirLLVMAtomicBinOpfmin = 14,
+ MlirLLVMAtomicBinOpuinc_wrap = 15,
+ MlirLLVMAtomicBinOpudec_wrap = 16,
+};
+typedef enum MlirLLVMAtomicBinOp MlirLLVMAtomicBinOp;
+
+/// Creates a LLVM AtomicBinOpAttr.
+MLIR_CAPI_EXPORTED MlirAttribute
+mlirLLVMAtomicBinOpAttrGet(MlirContext ctx, MlirLLVMAtomicBinOp val);
+
+enum MlirLLVMVisibility {
+ MlirLLVMVisibilityDefault = 0,
+ MlirLLVMVisibilityHidden = 1,
+ MlirLLVMVisibilityProtected = 2,
+};
+typedef enum MlirLLVMVisibility MlirLLVMVisibility;
+
+/// Creates a LLVM VisibilityAttr.
+MLIR_CAPI_EXPORTED MlirAttribute
+mlirLLVMVisibilityAttrGet(MlirContext ctx, MlirLLVMVisibility visibility);
+
+enum MlirLLVMUnnamedAddr {
+ MlirLLVMUnnamedAddrNone = 0,
+ MlirLLVMUnnamedAddrLocal = 1,
+ MlirLLVMUnnamedAddrGlobal = 2,
+};
+typedef enum MlirLLVMUnnamedAddr MlirLLVMUnnamedAddr;
+
+/// Creates a LLVM UnnamedAddrAttr.
+MLIR_CAPI_EXPORTED MlirAttribute
+mlirLLVMUnnamedAddrAttrGet(MlirContext ctx, MlirLLVMUnnamedAddr val);
+
+enum MlirLLVMICmpPredicate {
+ MlirLLVMICmpPredicateEq = 0,
+ MlirLLVMICmpPredicateNe = 1,
+ MlirLLVMICmpPredicateSlt = 2,
+ MlirLLVMICmpPredicateSle = 3,
+ MlirLLVMICmpPredicateSgt = 4,
+ MlirLLVMICmpPredicateSge = 5,
+ MlirLLVMICmpPredicateUlt = 6,
+ MlirLLVMICmpPredicateUle = 7,
+ MlirLLVMICmpPredicateUgt = 8,
+ MlirLLVMICmpPredicateUge = 9,
+};
+typedef enum MlirLLVMICmpPredicate MlirLLVMICmpPredicate;
+
+/// Creates a LLVM ICmpPredicateAttr.
+MLIR_CAPI_EXPORTED MlirAttribute
+mlirLLVMICmpPredicateAttrGet(MlirContext ctx, MlirLLVMICmpPredicate val);
+
+enum MlirLLVMFCmpPredicate {
+ MlirLLVMFCmpPredicate_false = 0,
+ MlirLLVMFCmpPredicateOeq = 1,
+ MlirLLVMFCmpPredicateOgt = 2,
+ MlirLLVMFCmpPredicateOge = 3,
+ MlirLLVMFCmpPredicateOlt = 4,
+ MlirLLVMFCmpPredicateOle = 5,
+ MlirLLVMFCmpPredicateOne = 6,
+ MlirLLVMFCmpPredicateOrd = 7,
+ MlirLLVMFCmpPredicateUeq = 8,
+ MlirLLVMFCmpPredicateUgt = 9,
+ MlirLLVMFCmpPredicateUge = 10,
+ MlirLLVMFCmpPredicateUlt = 11,
+ MlirLLVMFCmpPredicateUle = 12,
+ MlirLLVMFCmpPredicateUne = 13,
+ MlirLLVMFCmpPredicateUno = 14,
+ MlirLLVMFCmpPredicate_true = 15,
+};
+typedef enum MlirLLVMFCmpPredicate MlirLLVMFCmpPredicate;
+/// Creates a LLVM FCmpPredicateAttr.
+MLIR_CAPI_EXPORTED MlirAttribute
+mlirLLVMFCmpPredicateAttrGet(MlirContext ctx, MlirLLVMFCmpPredicate val);
+
+enum MlirLLVMFramePointerKind {
+ MlirLLVMFramePointerKindNone = 0,
+ MlirLLVMFramePointerKindNonLeaf = 1,
+ MlirLLVMFramePointerKindAll = 2,
+};
+typedef enum MlirLLVMFramePointerKind MlirLLVMFramePointerKind;
+
+/// Creates a LLVM FramePointerKindAttr.
+MLIR_CAPI_EXPORTED MlirAttribute
+mlirLLVMFramePointerKindAttrGet(MlirContext ctx, MlirLLVMFramePointerKind val);
+
+enum MlirLLVMFastmathFlags {
+ MlirLLVMFastmathFlagsNone = 0,
+ MlirLLVMFastmathFlagsNnan = 1,
+ MlirLLVMFastmathFlagsNinf = 2,
+ MlirLLVMFastmathFlagsNsz = 4,
+ MlirLLVMFastmathFlagsArcp = 8,
+ MlirLLVMFastmathFlagsContract = 16,
+ MlirLLVMFastmathFlagsAfn = 32,
+ MlirLLVMFastmathFlagsReassoc = 64,
+ MlirLLVMFastmathFlagsFast = 127,
+};
+typedef enum MlirLLVMFastmathFlags MlirLLVMFastmathFlags;
+
+/// Creates a LLVM FastmathFlagsAttr.
+MLIR_CAPI_EXPORTED MlirAttribute
+mlirLLVMFastmathFlagsAttrGet(MlirContext ctx, MlirLLVMFastmathFlags val);
+
+enum MlirLLVMModRefInfo {
+ MlirLLVMModRefInfoNoModRef = 0,
+ MlirLLVMModRefInfoRef = 1,
+ MlirLLVMModRefInfoMod = 2,
+ MlirLLVMModRefInfoModRef = 3,
+};
+typedef enum MlirLLVMModRefInfo MlirLLVMModRefInfo;
+
+/// Creates a LLVM ModRefInfoAttr.
+MLIR_CAPI_EXPORTED MlirAttribute
+mlirLLVMModRefInfoAttrGet(MlirContext ctx, MlirLLVMModRefInfo val);
+
#ifdef __cplusplus
}
#endif
diff --git a/mlir/lib/CAPI/Dialect/LLVM.cpp b/mlir/lib/CAPI/Dialect/LLVM.cpp
index 2d938ce5f4834c..16bf1590fea007 100644
--- a/mlir/lib/CAPI/Dialect/LLVM.cpp
+++ b/mlir/lib/CAPI/Dialect/LLVM.cpp
@@ -14,7 +14,6 @@
#include "mlir/Dialect/LLVMIR/LLVMAttrs.h"
#include "mlir/Dialect/LLVMIR/LLVMDialect.h"
#include "mlir/Dialect/LLVMIR/LLVMTypes.h"
-#include "llvm-c/Core.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/SmallVectorExtras.h"
@@ -153,9 +152,9 @@ MlirAttribute mlirLLVMDIBasicTypeAttrGet(MlirContext ctx, unsigned int tag,
MlirAttribute mlirLLVMDICompositeTypeAttrGet(
MlirContext ctx, unsigned int tag, MlirAttribute name, MlirAttribute file,
- uint32_t line, MlirAttribute scope, MlirAttribute baseType, int64_t flags,
- uint64_t sizeInBits, uint64_t alignInBits, intptr_t nElements,
- MlirAttribute const *elements) {
+ uint32_t line, MlirAttribute scope, MlirAttribute baseType,
+ MlirLLVMDIFlags flags, uint64_t sizeInBits, uint64_t alignInBits,
+ intptr_t nElements, MlirAttribute const *elements) {
SmallVector<Attribute> elementsStorage;
elementsStorage.reserve(nElements);
@@ -203,6 +202,14 @@ MlirAttribute mlirLLVMDIFileAttrGet(MlirContext ctx, MlirAttribute name,
cast<StringAttr>(unwrap(directory))));
}
+MlirAttribute mlirLLVMDINamespaceAttrGet(MlirContext ctx, MlirAttribute name,
+ MlirAttribute scope,
+ bool exportSymbols) {
+ return wrap(DINamespaceAttr::get(unwrap(ctx), cast<StringAttr>(unwrap(name)),
+ cast<DIScopeAttr>(unwrap(scope)),
+ exportSymbols));
+}
+
MlirAttribute
mlirLLVMDICompileUnitAttrGet(MlirContext ctx, MlirAttribute id,
unsigned int sourceLanguage, MlirAttribute file,
@@ -214,7 +221,7 @@ mlirLLVMDICompileUnitAttrGet(MlirContext ctx, MlirAttribute id,
isOptimized, DIEmissionKind(emissionKind)));
}
-MlirAttribute mlirLLVMDIFlagsAttrGet(MlirContext ctx, uint64_t value) {
+MlirAttribute mlirLLVMDIFlagsAttrGet(MlirContext ctx, MlirLLVMDIFlags value) {
return wrap(DIFlagsAttr::get(unwrap(ctx), DIFlags(value)));
}
@@ -265,7 +272,7 @@ MlirAttribute mlirLLVMDISubprogramAttrGet(
MlirContext ctx, MlirAttribute id, MlirAttribute compileUnit,
MlirAttribute scope, MlirAttribute name, MlirAttribute linkageName,
MlirAttribute file, unsigned int line, unsigned int scopeLine,
- uint64_t subprogramFlags, MlirAttribute type) {
+ MlirLLVMDISubprogramFlags subprogramFlags, MlirAttribute type) {
return wrap(DISubprogramAttr::get(
unwrap(ctx), cast<DistinctAttr>(unwrap(id)),
cast<DICompileUnitAttr>(unwrap(compileUnit)),
@@ -300,6 +307,21 @@ MlirAttribute mlirLLVMDISubprogramAttrGetType(MlirAttribute diSubprogram) {
return wrap(cast<DISubprogramAttr>(unwrap(diSubprogram)).getType());
}
+MlirIdentifier
+mlirLLVMDISubprogramAttrGetLinkageName(MlirAttribute diSubprogram) {
+ return wrap(cast<DISubprogramAttr>(unwrap(diSubprogram)).getLinkageName());
+}
+
+MlirIdentifier mlirLLVMDISubprogramAttrGetName(MlirAttribute diSubprogram) {
+ return wrap(cast<DISubprogramAttr>(unwrap(diSubprogram)).getName());
+}
+
+MlirLLVMDISubprogramFlags
+mlirLLVMDISubprogramAttrGetSubprogramFlags(MlirAttribute diSubprogram) {
+ return static_cast<MlirLLVMDISubprogramFlags>(
+ cast<DISubprogramAttr>(unwrap(diSubprogram)).getSubprogramFlags());
+}
+
MlirAttribute mlirLLVMDIModuleAttrGet(MlirContext ctx, MlirAttribute file,
MlirAttribute scope, MlirAttribute name,
MlirAttribute configMacros,
@@ -317,3 +339,79 @@ MlirAttribute mlirLLVMDIModuleAttrGet(MlirContext ctx, MlirAttribute file,
MlirAttribute mlirLLVMDIModuleAttrGetScope(MlirAttribute diModule) {
return wrap(cast<DIModuleAttr>(unwrap(diModule)).getScope());
}
+
+MlirIdentifier mlirLLVMDIModuleAttrGetApinotes(MlirAttribute diModule) {
+ return wrap(cast<DIModuleAttr>(unwrap(diModule)).getApinotes());
+}
+
+MlirIdentifier mlirLLVMDIModuleAttrGetConfigMacros(MlirAttribute diModule) {
+ return wrap(cast<DIModuleAttr>(unwrap(diModule)).getConfigMacros());
+}
+
+MlirAttribute mlirLLVMDIModuleAttrGetFile(MlirAttribute diModule) {
+ return wrap(cast<DIModuleAttr>(unwrap(diModule)).getFile());
+}
+
+MlirIdentifier mlirLLVMDIModuleAttrGetIncludePath(MlirAttribute diModule) {
+ return wrap(cast<DIModuleAttr>(unwrap(diModule)).getIncludePath());
+}
+
+bool mlirLLVMDIModuleAttrGetIsDecl(MlirAttribute diModule) {
+ return cast<DIModuleAttr>(unwrap(diModule)).getIsDecl();
+}
+
+MlirAttribute mlirLLVMDISubrangeAttrGet(MlirContext ctx, MlirAttribute count,
+ MlirAttribute lowerBound,
+ MlirAttribute upperBound,
+ MlirAttribute stride) {
+ return wrap(DISubrangeAttr::get(unwrap(ctx), cast<IntegerAttr>(unwrap(count)),
+ cast<IntegerAttr>(unwrap(lowerBound)),
+ cast<IntegerAttr>(unwrap(upperBound)),
+ cast<IntegerAttr>(unwrap(stride))));
+}
+
+MlirAttribute mlirLLVMAtomicOrderingAttrGet(MlirContext ctx,
+ MlirLLVMAtomicOrdering ordering) {
+ return wrap(AtomicOrderingAttr::get(unwrap(ctx), AtomicOrdering(ordering)));
+}
+
+MlirAttribute mlirLLVMAtomicBinOpAttrGet(MlirContext ctx,
+ MlirLLVMAtomicBinOp val) {
+ return wrap(AtomicBinOpAttr::get(unwrap(ctx), AtomicBinOp(val)));
+}
+
+MlirAttribute mlirLLVMVisibilityAttrGet(MlirContext ctx,
+ MlirLLVMVisibility visibility) {
+ return wrap(VisibilityAttr::get(unwrap(ctx), Visibility(visibility)));
+}
+
+MlirAttribute mlirLLVMUnnamedAddrAttrGet(MlirContext ctx,
+ MlirLLVMUnnamedAddr val) {
+ return wrap(UnnamedAddrAttr::get(unwrap(ctx), UnnamedAddr(val)));
+}
+
+MlirAttribute mlirLLVMICmpPredicateAttrGet(MlirContext ctx,
+ MlirLLVMICmpPredicate val) {
+ return wrap(ICmpPredicateAttr::get(unwrap(ctx), ICmpPredicate(val)));
+}
+
+MlirAttribute mlirLLVMFCmpPredicateAttrGet(MlirContext ctx,
+ MlirLLVMFCmpPredicate val) {
+ return wrap(FCmpPredicateAttr::get(unwrap(ctx), FCmpPredicate(val)));
+}
+
+MlirAttribute mlirLLVMFramePointerKindAttrGet(MlirContext ctx,
+ MlirLLVMFramePointerKind val) {
+ return wrap(FramePointerKindAttr::get(
+ unwrap(ctx), framePointerKind::FramePointerKind(val)));
+}
+
+MlirAttribute mlirLLVMFastmathFlagsAttrGet(MlirContext ctx,
+ MlirLLVMFastmathFlags val) {
+ return wrap(FastmathFlagsAttr::get(unwrap(ctx), FastmathFlags(val)));
+}
+
+MlirAttribute mlirLLVMModRefInfoAttrGet(MlirContext ctx,
+ MlirLLVMModRefInfo val) {
+ return wrap(ModRefInfoAttr::get(unwrap(ctx), ModRefInfo(val)));
+}
diff --git a/mlir/test/CAPI/llvm.c b/mlir/test/CAPI/llvm.c
index 2fd98b29f487c8..06c9f83f6ce1dd 100644
--- a/mlir/test/CAPI/llvm.c
+++ b/mlir/test/CAPI/llvm.c
@@ -332,6 +332,17 @@ static void testDebugInfoAttributes(MlirContext ctx) {
// CHECK: #llvm.di_expression<[(1)]>
mlirAttributeDump(mlirLLVMDIExpressionAttrGet(ctx, 1, &expression_elem));
+
+ // CHECK: #llvm.di_namespace<{{.*}}>
+ mlirAttributeDump(mlirLLVMDINamespaceAttrGet(ctx, foo, compile_unit, true));
+
+ MlirType type = mlirIntegerTypeGet(ctx, 64);
+
+ // CHECK: #llvm.di_subrange<count = 1 : i64, lowerBound = 1 : i64, upperBound
+ // CHECK-SAME: = 10 : i64, stride = 1 : i64>
+ mlirAttributeDump(mlirLLVMDISubrangeAttrGet(
+ ctx, mlirIntegerAttrGet(type, 1), mlirIntegerAttrGet(type, 1),
+ mlirIntegerAttrGet(type, 10), mlirIntegerAttrGet(type, 1)));
}
int main(void) {
|
eec8a2c
to
384536b
Compare
Could someone check this PR? i resolved the conflicts |
Is there really no way to get these just straight from the corresponding LLVM enums? Maybe I'm saying something dumb and they're not enums in LLVM? |
+1, I'd rather get these from LLVM if possible. If not, please comment why. We can also consider extending LLVM C API to expose these. |
cf6d76f
to
782825f
Compare
Tried to do it, first time making tablegen stuff, hope its good |
09c8635
to
124d776
Compare
124d776
to
274647c
Compare
This is kind of a followup to #83992