[Mlir-commits] [mlir] [MLIR][LLVM] add metadata attrs and `llvm.named_metadata` op (PR #186703)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Sun Mar 15 14:10:48 PDT 2026
github-actions[bot] wrote:
<!--LLVM CODE FORMAT COMMENT: {clang-format}-->
:warning: C/C++ code formatter, clang-format found issues in your code. :warning:
<details>
<summary>
You can test this locally with the following command:
</summary>
``````````bash
git-clang-format --diff origin/main HEAD --extensions cpp,h -- mlir/include/mlir-c/Dialect/LLVM.h mlir/lib/Bindings/Python/DialectLLVM.cpp mlir/lib/CAPI/Dialect/LLVM.cpp mlir/lib/Target/LLVMIR/Dialect/LLVMIR/LLVMToLLVMIRTranslation.cpp --diff_from_common_commit
``````````
:warning:
The reproduction instructions above might return results for more than one PR
in a stack if you are using a stacked PR workflow. You can limit the results by
changing `origin/main` to the base branch/commit you want to compare against.
:warning:
</details>
<details>
<summary>
View the diff from clang-format here.
</summary>
``````````diff
diff --git a/mlir/lib/Bindings/Python/DialectLLVM.cpp b/mlir/lib/Bindings/Python/DialectLLVM.cpp
index 3f9442adf..073387aac 100644
--- a/mlir/lib/Bindings/Python/DialectLLVM.cpp
+++ b/mlir/lib/Bindings/Python/DialectLLVM.cpp
@@ -26,8 +26,7 @@ using namespace mlir::python::nanobind_adaptors;
namespace mlir {
namespace python {
-namespace
-MLIR_BINDINGS_PYTHON_DOMAIN {
+namespace MLIR_BINDINGS_PYTHON_DOMAIN {
namespace llvm {
//===--------------------------------------------------------------------===//
// StructType
@@ -286,16 +285,15 @@ struct MDStringAttr : PyConcreteAttribute<MDStringAttr> {
c.def_static(
"get",
[](const std::string &value, DefaultingPyMlirContext context) {
- return MDStringAttr(context->getRef(),
- mlirLLVMMDStringAttrGet(
- context.get()->get(),
- mlirStringRefCreate(value.data(),
- value.size())));
+ return MDStringAttr(
+ context->getRef(),
+ mlirLLVMMDStringAttrGet(
+ context.get()->get(),
+ mlirStringRefCreate(value.data(), value.size())));
},
"value"_a, nb::kw_only(), "context"_a = nb::none());
c.def_prop_ro("value", [](const MDStringAttr &self) {
- MlirStringRef ref =
- mlirLLVMMDStringAttrGetValue(self);
+ MlirStringRef ref = mlirLLVMMDStringAttrGetValue(self);
return nb::str(ref.data, ref.length);
});
}
@@ -337,9 +335,9 @@ struct MDFuncAttr : PyConcreteAttribute<MDFuncAttr> {
MlirAttribute symRef = mlirFlatSymbolRefAttrGet(
context.get()->get(),
mlirStringRefCreate(name.data(), name.size()));
- return MDFuncAttr(context->getRef(),
- mlirLLVMMDFuncAttrGet(context.get()->get(),
- symRef));
+ return MDFuncAttr(
+ context->getRef(),
+ mlirLLVMMDFuncAttrGet(context.get()->get(), symRef));
},
"name"_a, nb::kw_only(), "context"_a = nb::none());
c.def_prop_ro("name", [](const MDFuncAttr &self) {
@@ -364,22 +362,21 @@ struct MDNodeAttr : PyConcreteAttribute<MDNodeAttr> {
DefaultingPyMlirContext context) {
std::vector<MlirAttribute> operands_(operands.size());
std::copy(operands.begin(), operands.end(), operands_.begin());
- return MDNodeAttr(
- context->getRef(),
- mlirLLVMMDNodeAttrGet(context.get()->get(), operands_.size(),
- operands_.data()));
+ return MDNodeAttr(context->getRef(),
+ mlirLLVMMDNodeAttrGet(context.get()->get(),
+ operands_.size(),
+ operands_.data()));
},
"operands"_a, nb::kw_only(), "context"_a = nb::none());
c.def_prop_ro("num_operands", [](const MDNodeAttr &self) {
return mlirLLVMMDNodeAttrGetNumOperands(self);
});
- c.def("__getitem__",
- [](const MDNodeAttr &self, intptr_t index) {
- intptr_t n = mlirLLVMMDNodeAttrGetNumOperands(self);
- if (index < 0 || index >= n)
- throw nb::index_error("MDNodeAttr operand index out of range");
- return mlirLLVMMDNodeAttrGetOperand(self, index);
- });
+ c.def("__getitem__", [](const MDNodeAttr &self, intptr_t index) {
+ intptr_t n = mlirLLVMMDNodeAttrGetNumOperands(self);
+ if (index < 0 || index >= n)
+ throw nb::index_error("MDNodeAttr operand index out of range");
+ return mlirLLVMMDNodeAttrGetOperand(self, index);
+ });
c.def("__len__", [](const MDNodeAttr &self) {
return mlirLLVMMDNodeAttrGetNumOperands(self);
});
diff --git a/mlir/lib/CAPI/Dialect/LLVM.cpp b/mlir/lib/CAPI/Dialect/LLVM.cpp
index 8f46a60f5..f05529ba2 100644
--- a/mlir/lib/CAPI/Dialect/LLVM.cpp
+++ b/mlir/lib/CAPI/Dialect/LLVM.cpp
@@ -100,7 +100,7 @@ intptr_t mlirLLVMFunctionTypeGetNumInputs(MlirType type) {
MlirType mlirLLVMFunctionTypeGetInput(MlirType type, intptr_t pos) {
assert(pos >= 0 && "pos in array must be positive");
return wrap(llvm::cast<LLVM::LLVMFunctionType>(unwrap(type))
- .getParamType(static_cast<unsigned>(pos)));
+ .getParamType(static_cast<unsigned>(pos)));
}
MlirType mlirLLVMFunctionTypeGetReturnType(MlirType type) {
@@ -191,7 +191,7 @@ MlirLogicalResult mlirLLVMStructTypeSetBody(MlirType structType,
SmallVector<Type> fields;
return wrap(
cast<LLVM::LLVMStructType>(unwrap(structType))
- .setBody(unwrapList(nFieldTypes, fieldTypes, fields), isPacked));
+ .setBody(unwrapList(nFieldTypes, fieldTypes, fields), isPacked));
}
MlirAttribute mlirLLVMDIExpressionElemAttrGet(MlirContext ctx,
@@ -541,9 +541,8 @@ MlirStringRef mlirLLVMDIAnnotationAttrGetName(void) {
//===----------------------------------------------------------------------===//
MlirAttribute mlirLLVMMDStringAttrGet(MlirContext ctx, MlirStringRef value) {
- return wrap(
- MDStringAttr::get(unwrap(ctx),
- StringAttr::get(unwrap(ctx), unwrap(value))));
+ return wrap(MDStringAttr::get(unwrap(ctx),
+ StringAttr::get(unwrap(ctx), unwrap(value))));
}
bool mlirLLVMAttrIsAMDStringAttr(MlirAttribute attr) {
@@ -560,8 +559,8 @@ MlirStringRef mlirLLVMMDStringAttrGetValue(MlirAttribute attr) {
MlirAttribute mlirLLVMMDConstantAttrGet(MlirContext ctx,
MlirAttribute integerAttr) {
- return wrap(MDConstantAttr::get(unwrap(ctx),
- cast<IntegerAttr>(unwrap(integerAttr))));
+ return wrap(
+ MDConstantAttr::get(unwrap(ctx), cast<IntegerAttr>(unwrap(integerAttr))));
}
bool mlirLLVMAttrIsAMDConstantAttr(MlirAttribute attr) {
@@ -598,9 +597,8 @@ MlirAttribute mlirLLVMMDNodeAttrGet(MlirContext ctx, intptr_t nOperands,
SmallVector<Attribute> attrStorage;
attrStorage.reserve(nOperands);
return wrap(MDNodeAttr::get(
- unwrap(ctx),
- ArrayAttr::get(unwrap(ctx),
- unwrapList(nOperands, operands, attrStorage))));
+ unwrap(ctx), ArrayAttr::get(unwrap(ctx), unwrapList(nOperands, operands,
+ attrStorage))));
}
bool mlirLLVMAttrIsAMDNodeAttr(MlirAttribute attr) {
@@ -615,7 +613,6 @@ intptr_t mlirLLVMMDNodeAttrGetNumOperands(MlirAttribute attr) {
return cast<MDNodeAttr>(unwrap(attr)).getOperands().size();
}
-MlirAttribute mlirLLVMMDNodeAttrGetOperand(MlirAttribute attr,
- intptr_t index) {
+MlirAttribute mlirLLVMMDNodeAttrGetOperand(MlirAttribute attr, intptr_t index) {
return wrap(cast<MDNodeAttr>(unwrap(attr)).getOperands()[index]);
}
diff --git a/mlir/lib/Target/LLVMIR/Dialect/LLVMIR/LLVMToLLVMIRTranslation.cpp b/mlir/lib/Target/LLVMIR/Dialect/LLVMIR/LLVMToLLVMIRTranslation.cpp
index 9e758e9fd..7853d0a54 100644
--- a/mlir/lib/Target/LLVMIR/Dialect/LLVMIR/LLVMToLLVMIRTranslation.cpp
+++ b/mlir/lib/Target/LLVMIR/Dialect/LLVMIR/LLVMToLLVMIRTranslation.cpp
@@ -166,8 +166,8 @@ convertCallLLVMIntrinsicOp(CallIntrinsicOp op, llvm::IRBuilderBase &builder,
// Check the result type of the call.
const llvm::Type *intrinType =
op.getNumResults() == 0
- ? llvm::Type::getVoidTy(module->getContext())
- : moduleTranslation.convertType(op.getResultTypes().front());
+ ? llvm::Type::getVoidTy(module->getContext())
+ : moduleTranslation.convertType(op.getResultTypes().front());
if (intrinType != fn->getReturnType()) {
return mlir::emitError(op.getLoc(), "intrinsic call returns ")
<< diagStr(intrinType) << " but " << op.getIntrinAttr()
@@ -221,31 +221,31 @@ static llvm::Metadata *
convertMetadataAttr(Attribute attr, llvm::IRBuilderBase &builder,
LLVM::ModuleTranslation &moduleTranslation) {
return llvm::TypeSwitch<Attribute, llvm::Metadata *>(attr)
- .Case<LLVM::MDStringAttr>([&](auto a) -> llvm::Metadata * {
- return llvm::MDString::get(builder.getContext(),
- a.getValue().getValue());
- })
- .Case<LLVM::MDConstantAttr>([&](auto a) -> llvm::Metadata * {
- IntegerAttr intAttr = a.getValue();
- return llvm::ConstantAsMetadata::get(llvm::ConstantInt::get(
- llvm::Type::getIntNTy(builder.getContext(),
- intAttr.getType().getIntOrFloatBitWidth()),
- intAttr.getValue()));
- })
- .Case<LLVM::MDFuncAttr>([&](auto a) -> llvm::Metadata * {
- if (llvm::Function *fn =
- moduleTranslation.lookupFunction(a.getName().getValue()))
- return llvm::ValueAsMetadata::get(fn);
- return nullptr;
- })
- .Case<LLVM::MDNodeAttr>([&](auto a) -> llvm::Metadata * {
- SmallVector<llvm::Metadata *> operands;
- for (Attribute op : a.getOperands())
- operands.push_back(
- convertMetadataAttr(op, builder, moduleTranslation));
- return llvm::MDNode::get(builder.getContext(), operands);
- })
- .Default([](auto) -> llvm::Metadata * { return nullptr; });
+ .Case<LLVM::MDStringAttr>([&](auto a) -> llvm::Metadata * {
+ return llvm::MDString::get(builder.getContext(),
+ a.getValue().getValue());
+ })
+ .Case<LLVM::MDConstantAttr>([&](auto a) -> llvm::Metadata * {
+ IntegerAttr intAttr = a.getValue();
+ return llvm::ConstantAsMetadata::get(llvm::ConstantInt::get(
+ llvm::Type::getIntNTy(builder.getContext(),
+ intAttr.getType().getIntOrFloatBitWidth()),
+ intAttr.getValue()));
+ })
+ .Case<LLVM::MDFuncAttr>([&](auto a) -> llvm::Metadata * {
+ if (llvm::Function *fn =
+ moduleTranslation.lookupFunction(a.getName().getValue()))
+ return llvm::ValueAsMetadata::get(fn);
+ return nullptr;
+ })
+ .Case<LLVM::MDNodeAttr>([&](auto a) -> llvm::Metadata * {
+ SmallVector<llvm::Metadata *> operands;
+ for (Attribute op : a.getOperands())
+ operands.push_back(
+ convertMetadataAttr(op, builder, moduleTranslation));
+ return llvm::MDNode::get(builder.getContext(), operands);
+ })
+ .Default([](auto) -> llvm::Metadata * { return nullptr; });
}
static void convertNamedMetadataOp(StringRef metadataName, ArrayAttr nodes,
@@ -294,7 +294,7 @@ convertModuleFlagValue(StringRef key, ArrayAttr arrayAttr,
if (!sym)
return nullptr;
if (llvm::Function *fn =
- moduleTranslation.lookupFunction(sym.getValue()))
+ moduleTranslation.lookupFunction(sym.getValue()))
return llvm::ValueAsMetadata::get(fn);
return nullptr;
};
@@ -321,7 +321,7 @@ static llvm::Metadata *convertModuleFlagProfileSummaryAttr(
auto getIntTuple = [&](StringRef key, uint64_t val) -> llvm::MDTuple * {
SmallVector<llvm::Metadata *> tupleNodes{
mdb.createString(key), mdb.createConstant(llvm::ConstantInt::get(
- llvm::Type::getInt64Ty(context), val))};
+ llvm::Type::getInt64Ty(context), val))};
return llvm::MDTuple::get(context, tupleNodes);
};
@@ -380,26 +380,26 @@ static void convertModuleFlagsOp(ArrayAttr flags, llvm::IRBuilderBase &builder,
for (auto flagAttr : flags.getAsRange<ModuleFlagAttr>()) {
llvm::Metadata *valueMetadata =
llvm::TypeSwitch<Attribute, llvm::Metadata *>(flagAttr.getValue())
- .Case([&](StringAttr strAttr) {
- return llvm::MDString::get(builder.getContext(),
- strAttr.getValue());
- })
- .Case([&](IntegerAttr intAttr) {
- return llvm::ConstantAsMetadata::get(llvm::ConstantInt::get(
- llvm::Type::getInt32Ty(builder.getContext()),
- intAttr.getInt()));
- })
- .Case([&](ArrayAttr arrayAttr) {
- return convertModuleFlagValue(flagAttr.getKey().getValue(),
- arrayAttr, builder,
- moduleTranslation);
- })
- .Case([&](ModuleFlagProfileSummaryAttr summaryAttr) {
- return convertModuleFlagProfileSummaryAttr(
- flagAttr.getKey().getValue(), summaryAttr, builder,
- moduleTranslation);
- })
- .Default([](auto) { return nullptr; });
+ .Case([&](StringAttr strAttr) {
+ return llvm::MDString::get(builder.getContext(),
+ strAttr.getValue());
+ })
+ .Case([&](IntegerAttr intAttr) {
+ return llvm::ConstantAsMetadata::get(llvm::ConstantInt::get(
+ llvm::Type::getInt32Ty(builder.getContext()),
+ intAttr.getInt()));
+ })
+ .Case([&](ArrayAttr arrayAttr) {
+ return convertModuleFlagValue(flagAttr.getKey().getValue(),
+ arrayAttr, builder,
+ moduleTranslation);
+ })
+ .Case([&](ModuleFlagProfileSummaryAttr summaryAttr) {
+ return convertModuleFlagProfileSummaryAttr(
+ flagAttr.getKey().getValue(), summaryAttr, builder,
+ moduleTranslation);
+ })
+ .Default([](auto) { return nullptr; });
assert(valueMetadata && "expected valid metadata");
llvmModule->addModuleFlag(
@@ -412,9 +412,9 @@ static llvm::DILocalScope *
getLocalScopeFromLoc(llvm::IRBuilderBase &builder, Location loc,
LLVM::ModuleTranslation &moduleTranslation) {
if (auto scopeLoc =
- loc->findInstanceOf<FusedLocWith<LLVM::DILocalScopeAttr>>())
+ loc->findInstanceOf<FusedLocWith<LLVM::DILocalScopeAttr>>())
if (auto *localScope = llvm::dyn_cast<llvm::DILocalScope>(
- moduleTranslation.translateDebugInfo(scopeLoc.getMetadata())))
+ moduleTranslation.translateDebugInfo(scopeLoc.getMetadata())))
return localScope;
return builder.GetInsertBlock()->getParent()->getSubprogram();
}
@@ -443,7 +443,7 @@ convertOperationImpl(Operation &opInst, llvm::IRBuilderBase &builder,
llvm::CallInst *call;
if (auto attr = callOp.getCalleeAttr()) {
if (llvm::Function *function =
- moduleTranslation.lookupFunction(attr.getValue())) {
+ moduleTranslation.lookupFunction(attr.getValue())) {
call = builder.CreateCall(function, operandsRef, opBundles);
} else {
Operation *moduleOp = parentLLVMModule(&opInst);
@@ -527,8 +527,8 @@ convertOperationImpl(Operation &opInst, llvm::IRBuilderBase &builder,
ModuleTranslation::convertDefaultFuncAttr);
if (llvm::Attribute attr =
- moduleTranslation.convertAllocsizeAttr(callOp.getAllocsizeAttr());
- attr.isValid())
+ moduleTranslation.convertAllocsizeAttr(callOp.getAllocsizeAttr());
+ attr.isValid())
call->addFnAttr(attr);
if (failed(moduleTranslation.convertArgAndResultAttrs(callOp, call)))
@@ -560,7 +560,7 @@ convertOperationImpl(Operation &opInst, llvm::IRBuilderBase &builder,
// that LLVM IR dialect CallOp has either 0 or 1 result.
if (opInst.getNumResults() != 0)
moduleTranslation.mapValue(opInst.getResult(0), call);
- // Check that LLVM call returns void for 0-result functions.
+ // Check that LLVM call returns void for 0-result functions.
else if (!call->getType()->isVoidTy())
return failure();
moduleTranslation.mapCall(callOp, call);
@@ -583,19 +583,19 @@ convertOperationImpl(Operation &opInst, llvm::IRBuilderBase &builder,
auto ft = LLVM::LLVMFunctionType::get(resultType, operandTypes);
llvm::InlineAsm *inlineAsmInst =
inlineAsmOp.getAsmDialect()
- ? llvm::InlineAsm::get(
- static_cast<llvm::FunctionType *>(
- moduleTranslation.convertType(ft)),
- inlineAsmOp.getAsmString(), inlineAsmOp.getConstraints(),
- inlineAsmOp.getHasSideEffects(),
- inlineAsmOp.getIsAlignStack(),
- convertAsmDialectToLLVM(*inlineAsmOp.getAsmDialect()))
- : llvm::InlineAsm::get(static_cast<llvm::FunctionType *>(
- moduleTranslation.convertType(ft)),
- inlineAsmOp.getAsmString(),
- inlineAsmOp.getConstraints(),
- inlineAsmOp.getHasSideEffects(),
- inlineAsmOp.getIsAlignStack());
+ ? llvm::InlineAsm::get(
+ static_cast<llvm::FunctionType *>(
+ moduleTranslation.convertType(ft)),
+ inlineAsmOp.getAsmString(), inlineAsmOp.getConstraints(),
+ inlineAsmOp.getHasSideEffects(),
+ inlineAsmOp.getIsAlignStack(),
+ convertAsmDialectToLLVM(*inlineAsmOp.getAsmDialect()))
+ : llvm::InlineAsm::get(static_cast<llvm::FunctionType *>(
+ moduleTranslation.convertType(ft)),
+ inlineAsmOp.getAsmString(),
+ inlineAsmOp.getConstraints(),
+ inlineAsmOp.getHasSideEffects(),
+ inlineAsmOp.getIsAlignStack());
llvm::CallInst *inst = builder.CreateCall(
inlineAsmInst,
moduleTranslation.lookupValues(inlineAsmOp.getOperands()));
@@ -743,7 +743,7 @@ convertOperationImpl(Operation &opInst, llvm::IRBuilderBase &builder,
// The verifier should not have allowed this.
assert((global || function || alias || ifunc) &&
- "referencing an undefined global, function, alias, or ifunc");
+ "referencing an undefined global, function, alias, or ifunc");
llvm::Value *llvmValue = nullptr;
if (global)
@@ -762,7 +762,7 @@ convertOperationImpl(Operation &opInst, llvm::IRBuilderBase &builder,
// Emit dso_local_equivalent. We need to look up the global value referenced
// by the operation and store it in the MLIR-to-LLVM value mapping.
if (auto dsoLocalEquivalentOp =
- dyn_cast<LLVM::DSOLocalEquivalentOp>(opInst)) {
+ dyn_cast<LLVM::DSOLocalEquivalentOp>(opInst)) {
LLVM::LLVMFuncOp function =
dsoLocalEquivalentOp.getFunction(moduleTranslation.symbolTable());
LLVM::AliasOp alias =
@@ -770,7 +770,7 @@ convertOperationImpl(Operation &opInst, llvm::IRBuilderBase &builder,
// The verifier should not have allowed this.
assert((function || alias) &&
- "referencing an undefined function, or alias");
+ "referencing an undefined function, or alias");
llvm::Value *llvmValue = nullptr;
if (alias)
@@ -809,8 +809,8 @@ convertOperationImpl(Operation &opInst, llvm::IRBuilderBase &builder,
/*isConstant=*/true, llvm::GlobalValue::LinkageTypes::ExternalLinkage,
/*Initializer=*/nullptr,
Twine("__mlir_block_address_")
- .concat(Twine(fnName))
- .concat(Twine((uint64_t)blockAddressOp.getOperation())));
+ .concat(Twine(fnName))
+ .concat(Twine((uint64_t)blockAddressOp.getOperation())));
moduleTranslation.mapUnresolvedBlockAddress(blockAddressOp, llvmValue);
}
``````````
</details>
https://github.com/llvm/llvm-project/pull/186703
More information about the Mlir-commits
mailing list