[Mlir-commits] [mlir] 0fc8d9e - [mlir][llvm] Remove the metadata op
Tobias Gysi
llvmlistbot at llvm.org
Wed Jul 26 04:43:37 PDT 2023
Author: Tobias Gysi
Date: 2023-07-26T11:42:52Z
New Revision: 0fc8d9e41a81a52866e50a499af093e45f802a28
URL: https://github.com/llvm/llvm-project/commit/0fc8d9e41a81a52866e50a499af093e45f802a28
DIFF: https://github.com/llvm/llvm-project/commit/0fc8d9e41a81a52866e50a499af093e45f802a28.diff
LOG: [mlir][llvm] Remove the metadata op
This revision removes the metadata op, that to the best of our
knowledge, has no more uses after switching to a purely attribute based
metadata representation:
https://reviews.llvm.org/D155444
https://reviews.llvm.org/D155285
https://reviews.llvm.org/D155159
These changes got unlocked after landing distinct attribute support:
https://reviews.llvm.org/D153360,
which enables modeling distinct metadata using attributes. As a result,
all metadata kinds are now represented using attributes. Previously,
there has been a mix of attribute and op based representations.
Having attribute only metadata makes it possible to update the metadata
in-parallel, while updating the global metadata operation has been
a sequential process. The LLVM Dialect inliner already benefits from
this change and now creates new alias scopes and domains during
inlining rather than dropping the no alias information:
https://reviews.llvm.org/D155712
Reviewed By: Dinistro
Differential Revision: https://reviews.llvm.org/D156217
Added:
Modified:
mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td
mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp
mlir/lib/Target/LLVMIR/LoopAnnotationImporter.h
mlir/lib/Target/LLVMIR/LoopAnnotationTranslation.h
mlir/lib/Target/LLVMIR/ModuleImport.cpp
mlir/lib/Target/LLVMIR/ModuleTranslation.cpp
Removed:
################################################################################
diff --git a/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td b/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td
index 2d0ca913e8137b..f5c76ff448506c 100644
--- a/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td
+++ b/mlir/include/mlir/Dialect/LLVMIR/LLVMOps.td
@@ -1074,37 +1074,6 @@ def LLVM_AddressOfOp : LLVM_Op<"mlir.addressof",
let assemblyFormat = "$global_name attr-dict `:` qualified(type($res))";
}
-def LLVM_MetadataOp : LLVM_Op<"metadata", [
- NoRegionArguments, NoTerminator, SymbolTable, Symbol
-]> {
- let arguments = (ins
- SymbolNameAttr:$sym_name
- );
- let summary = "LLVM dialect metadata.";
- let description = [{
- llvm.metadata op defines one or more metadata nodes.
-
- Example:
- ```mlir
- llvm.metadata @metadata {
- llvm.access_group @group1
- llvm.access_group @group2
- }
- ```
- }];
- let regions = (region SizedRegion<1>:$body);
-
- let skipDefaultBuilders = 1;
-
- let builders = [
- OpBuilder<(ins "StringRef":$symName,
- CArg<"bool", "true">:$createBodyBlock,
- CArg<"ArrayRef<NamedAttribute>", "{}">:$attributes)>
- ];
-
- let hasCustomAssemblyFormat = 1;
-}
-
def LLVM_GlobalOp : LLVM_Op<"mlir.global",
[IsolatedFromAbove, SingleBlockImplicitTerminator<"ReturnOp">, Symbol]> {
let arguments = (ins
diff --git a/mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp b/mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp
index f4d9c95e4179fc..8e5b137da7a32d 100644
--- a/mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp
+++ b/mlir/lib/Dialect/LLVMIR/IR/LLVMDialect.cpp
@@ -2785,49 +2785,6 @@ OpFoldResult LLVM::OrOp::fold(FoldAdaptor adaptor) {
return IntegerAttr::get(getType(), lhs.getValue() | rhs.getValue());
}
-//===----------------------------------------------------------------------===//
-// Utilities for LLVM::MetadataOp
-//===----------------------------------------------------------------------===//
-
-void MetadataOp::build(OpBuilder &builder, OperationState &result,
- StringRef symName, bool createBodyBlock,
- ArrayRef<NamedAttribute> attributes) {
- result.addAttribute(getSymNameAttrName(result.name),
- builder.getStringAttr(symName));
- result.attributes.append(attributes.begin(), attributes.end());
- Region *body = result.addRegion();
- if (createBodyBlock)
- body->emplaceBlock();
-}
-
-ParseResult MetadataOp::parse(OpAsmParser &parser, OperationState &result) {
- StringAttr symName;
- if (parser.parseSymbolName(symName, getSymNameAttrName(result.name),
- result.attributes) ||
- parser.parseOptionalAttrDictWithKeyword(result.attributes))
- return failure();
-
- Region *bodyRegion = result.addRegion();
- if (parser.parseRegion(*bodyRegion))
- return failure();
-
- // If the region appeared to be empty to parseRegion(),
- // add the body block explicitly.
- if (bodyRegion->empty())
- bodyRegion->emplaceBlock();
-
- return success();
-}
-
-void MetadataOp::print(OpAsmPrinter &printer) {
- printer << ' ';
- printer.printSymbolName(getSymName());
- printer.printOptionalAttrDictWithKeyword((*this)->getAttrs(),
- {getSymNameAttrName().getValue()});
- printer << ' ';
- printer.printRegion(getBody());
-}
-
//===----------------------------------------------------------------------===//
// OpAsmDialectInterface
//===----------------------------------------------------------------------===//
diff --git a/mlir/lib/Target/LLVMIR/LoopAnnotationImporter.h b/mlir/lib/Target/LLVMIR/LoopAnnotationImporter.h
index d5a5f70b46e2e1..6c71c625b4ebb3 100644
--- a/mlir/lib/Target/LLVMIR/LoopAnnotationImporter.h
+++ b/mlir/lib/Target/LLVMIR/LoopAnnotationImporter.h
@@ -22,8 +22,7 @@ namespace LLVM {
namespace detail {
/// A helper class that converts llvm.loop metadata nodes into corresponding
-/// LoopAnnotationAttrs and llvm.access.group nodes into
-/// AccessGroupMetadataOps.
+/// LoopAnnotationAttrs and llvm.access.group nodes into AccessGroupAttrs.
class LoopAnnotationImporter {
public:
LoopAnnotationImporter(ModuleImport &moduleImport, OpBuilder &builder)
diff --git a/mlir/lib/Target/LLVMIR/LoopAnnotationTranslation.h b/mlir/lib/Target/LLVMIR/LoopAnnotationTranslation.h
index 32d3c39e1f424f..0766cc23926a46 100644
--- a/mlir/lib/Target/LLVMIR/LoopAnnotationTranslation.h
+++ b/mlir/lib/Target/LLVMIR/LoopAnnotationTranslation.h
@@ -21,8 +21,8 @@ namespace mlir {
namespace LLVM {
namespace detail {
-/// A helper class that converts LoopAnnotationAttrs and AccessGroupMetadataOps
-/// into a corresponding llvm::MDNodes.
+/// A helper class that converts LoopAnnotationAttrs and AccessGroupAttrs into
+/// corresponding llvm::MDNodes.
class LoopAnnotationTranslation {
public:
LoopAnnotationTranslation(ModuleTranslation &moduleTranslation,
diff --git a/mlir/lib/Target/LLVMIR/ModuleImport.cpp b/mlir/lib/Target/LLVMIR/ModuleImport.cpp
index 9f7ac54b8bcce1..4cfce7119362e2 100644
--- a/mlir/lib/Target/LLVMIR/ModuleImport.cpp
+++ b/mlir/lib/Target/LLVMIR/ModuleImport.cpp
@@ -361,7 +361,7 @@ LogicalResult ModuleImport::processTBAAMetadata(const llvm::MDNode *node) {
? builder.getStringAttr(**rootNodeIdentity)
: nullptr;
// The root nodes do not have operands, so we can create
- // the TBAARootMetadataOp on the first walk.
+ // the TBAARootAttr on the first walk.
tbaaMapping.insert({current, builder.getAttr<TBAARootAttr>(stringAttr)});
continue;
}
diff --git a/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp b/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp
index caf10302e7204a..974859cfdd2552 100644
--- a/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp
+++ b/mlir/lib/Target/LLVMIR/ModuleTranslation.cpp
@@ -1142,18 +1142,18 @@ llvm::MDNode *ModuleTranslation::getAliasScopes(
ArrayRef<AliasScopeAttr> aliasScopeAttrs) const {
SmallVector<llvm::Metadata *> nodes;
nodes.reserve(aliasScopeAttrs.size());
- for (AliasScopeAttr aliasScopeRef : aliasScopeAttrs)
- nodes.push_back(getAliasScope(aliasScopeRef));
+ for (AliasScopeAttr aliasScopeAttr : aliasScopeAttrs)
+ nodes.push_back(getAliasScope(aliasScopeAttr));
return llvm::MDNode::get(getLLVMContext(), nodes);
}
void ModuleTranslation::setAliasScopeMetadata(AliasAnalysisOpInterface op,
llvm::Instruction *inst) {
- auto populateScopeMetadata = [&](ArrayAttr aliasScopeRefs, unsigned kind) {
- if (!aliasScopeRefs || aliasScopeRefs.empty())
+ auto populateScopeMetadata = [&](ArrayAttr aliasScopeAttrs, unsigned kind) {
+ if (!aliasScopeAttrs || aliasScopeAttrs.empty())
return;
llvm::MDNode *node = getAliasScopes(
- llvm::to_vector(aliasScopeRefs.getAsRange<AliasScopeAttr>()));
+ llvm::to_vector(aliasScopeAttrs.getAsRange<AliasScopeAttr>()));
inst->setMetadata(kind, node);
};
@@ -1398,7 +1398,7 @@ mlir::translateModuleToLLVMIR(Operation *module, llvm::LLVMContext &llvmContext,
llvm::IRBuilder<> llvmBuilder(llvmContext);
for (Operation &o : getModuleBody(module).getOperations()) {
if (!isa<LLVM::LLVMFuncOp, LLVM::GlobalOp, LLVM::GlobalCtorsOp,
- LLVM::GlobalDtorsOp, LLVM::MetadataOp, LLVM::ComdatOp>(&o) &&
+ LLVM::GlobalDtorsOp, LLVM::ComdatOp>(&o) &&
!o.hasTrait<OpTrait::IsTerminator>() &&
failed(translator.convertOperation(o, llvmBuilder))) {
return nullptr;
More information about the Mlir-commits
mailing list