[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