[Mlir-commits] [mlir] 0ef217d - [mlir] Fix missing prefix for region accessor on OpAdaptor
Jacques Pienaar
llvmlistbot at llvm.org
Tue Oct 26 17:35:39 PDT 2021
Author: Jacques Pienaar
Date: 2021-10-26T17:35:16-07:00
New Revision: 0ef217d8e1b67287dfb588e0bb3dc6c55a56f92e
URL: https://github.com/llvm/llvm-project/commit/0ef217d8e1b67287dfb588e0bb3dc6c55a56f92e
DIFF: https://github.com/llvm/llvm-project/commit/0ef217d8e1b67287dfb588e0bb3dc6c55a56f92e.diff
LOG: [mlir] Fix missing prefix for region accessor on OpAdaptor
Also flip op-decl-and-defs test to _Prefixed to test more.
Added:
Modified:
mlir/lib/TableGen/Operator.cpp
mlir/test/lib/Dialect/Test/TestOps.td
mlir/test/mlir-tblgen/op-decl-and-defs.td
mlir/tools/mlir-tblgen/OpDefinitionsGen.cpp
Removed:
################################################################################
diff --git a/mlir/lib/TableGen/Operator.cpp b/mlir/lib/TableGen/Operator.cpp
index ad309ce82faab..fb2c0c79f4069 100644
--- a/mlir/lib/TableGen/Operator.cpp
+++ b/mlir/lib/TableGen/Operator.cpp
@@ -674,6 +674,11 @@ getGetterOrSetterNames(bool isGetter, const Operator &op, StringRef name) {
return true;
shouldSkip = true;
}
+ if (newName == "getRegions") {
+ if (op.getNumRegions() == 1 && op.getNumVariadicRegions() == 1)
+ return true;
+ shouldSkip = true;
+ }
if (!shouldSkip)
return false;
diff --git a/mlir/test/lib/Dialect/Test/TestOps.td b/mlir/test/lib/Dialect/Test/TestOps.td
index 3a7bd50819fd6..c7c51f4160bed 100644
--- a/mlir/test/lib/Dialect/Test/TestOps.td
+++ b/mlir/test/lib/Dialect/Test/TestOps.td
@@ -1886,10 +1886,10 @@ def FormatCustomDirectiveOperandsAndTypes
}
def FormatCustomDirectiveRegions : TEST_Op<"format_custom_directive_regions"> {
- let regions = (region AnyRegion:$region, VariadicRegion<AnyRegion>:$regions);
+ let regions = (region AnyRegion:$region, VariadicRegion<AnyRegion>:$other_regions);
let assemblyFormat = [{
custom<CustomDirectiveRegions>(
- $region, $regions
+ $region, $other_regions
)
attr-dict
}];
diff --git a/mlir/test/mlir-tblgen/op-decl-and-defs.td b/mlir/test/mlir-tblgen/op-decl-and-defs.td
index 471bac6edf858..5ae0e9b18af01 100644
--- a/mlir/test/mlir-tblgen/op-decl-and-defs.td
+++ b/mlir/test/mlir-tblgen/op-decl-and-defs.td
@@ -11,6 +11,7 @@ include "mlir/Interfaces/SideEffectInterfaces.td"
def Test_Dialect : Dialect {
let name = "test";
let cppNamespace = "NS";
+ let emitAccessorPrefix = kEmitAccessorPrefix_Prefixed;
}
class NS_Op<string mnemonic, list<OpTrait> traits> :
Op<Test_Dialect, mnemonic, traits>;
@@ -56,12 +57,12 @@ def NS_AOp : NS_Op<"a_op", [IsolatedFromAbove, IsolatedFromAbove]> {
// CHECK: public:
// CHECK: AOpAdaptor(::mlir::ValueRange values
// CHECK: ::mlir::ValueRange getODSOperands(unsigned index);
-// CHECK: ::mlir::Value a();
-// CHECK: ::mlir::ValueRange b();
-// CHECK: ::mlir::IntegerAttr attr1();
-// CHECK: ::mlir::FloatAttr attr2();
-// CHECK: ::mlir::Region &someRegion();
-// CHECK: ::mlir::RegionRange someRegions();
+// CHECK: ::mlir::Value getA();
+// CHECK: ::mlir::ValueRange getB();
+// CHECK: ::mlir::IntegerAttr getAttr1();
+// CHECK: ::mlir::FloatAttr getAttr2();
+// CHECK: ::mlir::Region &getSomeRegion();
+// CHECK: ::mlir::RegionRange getSomeRegions();
// CHECK: private:
// CHECK: ::mlir::ValueRange odsOperands;
// CHECK: };
@@ -75,18 +76,18 @@ def NS_AOp : NS_Op<"a_op", [IsolatedFromAbove, IsolatedFromAbove]> {
// CHECK: return ::llvm::StringLiteral("test.a_op");
// CHECK: }
// CHECK: ::mlir::Operation::operand_range getODSOperands(unsigned index);
-// CHECK: ::mlir::Value a();
-// CHECK: ::mlir::Operation::operand_range b();
-// CHECK: ::mlir::MutableOperandRange aMutable();
-// CHECK: ::mlir::MutableOperandRange bMutable();
+// CHECK: ::mlir::Value getA();
+// CHECK: ::mlir::Operation::operand_range getB();
+// CHECK: ::mlir::MutableOperandRange getAMutable();
+// CHECK: ::mlir::MutableOperandRange getBMutable();
// CHECK: ::mlir::Operation::result_range getODSResults(unsigned index);
-// CHECK: ::mlir::Value r();
-// CHECK: ::mlir::Region &someRegion();
-// CHECK: ::mlir::MutableArrayRef<::mlir::Region> someRegions();
-// CHECK: ::mlir::IntegerAttr attr1Attr()
-// CHECK: uint32_t attr1();
-// CHECK: ::mlir::FloatAttr attr2Attr()
-// CHECK: ::llvm::Optional< ::llvm::APFloat > attr2();
+// CHECK: ::mlir::Value getR();
+// CHECK: ::mlir::Region &getSomeRegion();
+// CHECK: ::mlir::MutableArrayRef<::mlir::Region> getSomeRegions();
+// CHECK: ::mlir::IntegerAttr getAttr1Attr()
+// CHECK: uint32_t getAttr1();
+// CHECK: ::mlir::FloatAttr getAttr2Attr()
+// CHECK: ::llvm::Optional< ::llvm::APFloat > getAttr2();
// CHECK: ::mlir::Attribute removeAttr2Attr();
// CHECK: static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, Value val);
// CHECK: static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, int integer = 0);
@@ -106,7 +107,7 @@ def NS_AOp : NS_Op<"a_op", [IsolatedFromAbove, IsolatedFromAbove]> {
// DEFS: AOpAdaptor::AOpAdaptor(::mlir::ValueRange values, ::mlir::DictionaryAttr attrs, ::mlir::RegionRange regions) : odsOperands(values), odsAttrs(attrs), odsRegions(regions)
// DEFS: ::mlir::RegionRange AOpAdaptor::getRegions()
-// DEFS: ::mlir::RegionRange AOpAdaptor::someRegions()
+// DEFS: ::mlir::RegionRange AOpAdaptor::getSomeRegions()
// DEFS-NEXT: return odsRegions.drop_front(1);
// Check AttrSizedOperandSegments
@@ -126,11 +127,11 @@ def NS_AttrSizedOperandOp : NS_Op<"attr_sized_operands",
// CHECK-LABEL: AttrSizedOperandOpAdaptor(
// CHECK-SAME: ::mlir::ValueRange values
// CHECK-SAME: ::mlir::DictionaryAttr attrs
-// CHECK: ::mlir::ValueRange a();
-// CHECK: ::mlir::ValueRange b();
-// CHECK: ::mlir::Value c();
-// CHECK: ::mlir::ValueRange d();
-// CHECK: ::mlir::DenseIntElementsAttr operand_segment_sizes();
+// CHECK: ::mlir::ValueRange getA();
+// CHECK: ::mlir::ValueRange getB();
+// CHECK: ::mlir::Value getC();
+// CHECK: ::mlir::ValueRange getD();
+// CHECK: ::mlir::DenseIntElementsAttr getOperandSegmentSizes();
// Check op trait for
diff erent number of operands
// ---
@@ -162,9 +163,9 @@ def NS_EOp : NS_Op<"op_with_optionals", []> {
}
// CHECK-LABEL: NS::EOp declarations
-// CHECK: ::mlir::Value a();
-// CHECK: ::mlir::MutableOperandRange aMutable();
-// CHECK: ::mlir::Value b();
+// CHECK: ::mlir::Value getA();
+// CHECK: ::mlir::MutableOperandRange getAMutable();
+// CHECK: ::mlir::Value getB();
// CHECK: static void build(::mlir::OpBuilder &odsBuilder, ::mlir::OperationState &odsState, /*optional*/::mlir::Type b, /*optional*/::mlir::Value a)
// Check that all types match constraint results in generating builder.
diff --git a/mlir/tools/mlir-tblgen/OpDefinitionsGen.cpp b/mlir/tools/mlir-tblgen/OpDefinitionsGen.cpp
index 3f530e848602b..653b778097247 100644
--- a/mlir/tools/mlir-tblgen/OpDefinitionsGen.cpp
+++ b/mlir/tools/mlir-tblgen/OpDefinitionsGen.cpp
@@ -2506,16 +2506,18 @@ OpOperandAdaptorEmitter::OpOperandAdaptorEmitter(const Operator &op)
continue;
// Generate the accessors for a variadic region.
- if (region.isVariadic()) {
- auto *m = adaptor.addMethodAndPrune("::mlir::RegionRange", region.name);
- ERROR_IF_PRUNED(m, "Adaptor::" + region.name, op);
- m->body() << formatv(" return odsRegions.drop_front({0});", i);
- continue;
- }
+ for (StringRef name : op.getGetterNames(region.name)) {
+ if (region.isVariadic()) {
+ auto *m = adaptor.addMethodAndPrune("::mlir::RegionRange", name);
+ ERROR_IF_PRUNED(m, "Adaptor::" + name, op);
+ m->body() << formatv(" return odsRegions.drop_front({0});", i);
+ continue;
+ }
- auto *m = adaptor.addMethodAndPrune("::mlir::Region &", region.name);
- ERROR_IF_PRUNED(m, "Adaptor::" + region.name, op);
- m->body() << formatv(" return *odsRegions[{0}];", i);
+ auto *m = adaptor.addMethodAndPrune("::mlir::Region &", name);
+ ERROR_IF_PRUNED(m, "Adaptor::" + name, op);
+ m->body() << formatv(" return *odsRegions[{0}];", i);
+ }
}
// Add verification function.
More information about the Mlir-commits
mailing list