Skip to content

Commit

Permalink
[MLIR] Add IndexAttr to primitive attributes kinds in tablegen.
Browse files Browse the repository at this point in the history
OpBase.td defined attributes kind for all integer types expect index. This
commit fixes that by adding an IndexAttr attribute kind. Update the
respective tests.

Differential Revision: https://reviews.llvm.org/D78195
  • Loading branch information
ulysseB authored and ftynse committed Apr 16, 2020
1 parent 48d64f5 commit 11f093f
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 0 deletions.
10 changes: 10 additions & 0 deletions mlir/include/mlir/IR/OpBase.td
Expand Up @@ -845,6 +845,16 @@ def BoolAttr : Attr<CPred<"$_self.isa<BoolAttr>()">, "bool attribute"> {
let constBuilderCall = "$_builder.getBoolAttr($0)";
}

// Index attribute.
def IndexAttr :
TypedAttrBase<
Index, "IntegerAttr",
And<[CPred<"$_self.isa<IntegerAttr>()">,
CPred<"$_self.cast<IntegerAttr>().getType().isa<IndexType>()">]>,
"index attribute"> {
let returnType = [{ APInt }];
}

// Base class for any integer (regardless of signedness semantics) attributes
// of fixed width.
class AnyIntegerAttrBase<AnyI attrValType, string descr> :
Expand Down
6 changes: 6 additions & 0 deletions mlir/test/IR/attribute.mlir
Expand Up @@ -8,6 +8,8 @@ func @int_attrs_pass() {
"test.int_attrs"() {
// CHECK: any_i32_attr = 5 : ui32
any_i32_attr = 5 : ui32,
// CHECK-SAME: index_attr = 8 : index
index_attr = 8 : index,
// CHECK-SAME: si32_attr = 7 : si32
si32_attr = 7 : si32,
// CHECK-SAME: ui32_attr = 6 : ui32
Expand All @@ -17,13 +19,15 @@ func @int_attrs_pass() {
"test.int_attrs"() {
// CHECK: any_i32_attr = 5 : si32
any_i32_attr = 5 : si32,
index_attr = 8 : index,
si32_attr = 7 : si32,
ui32_attr = 6 : ui32
} : () -> ()

"test.int_attrs"() {
// CHECK: any_i32_attr = 5 : i32
any_i32_attr = 5 : i32,
index_attr = 8 : index,
si32_attr = 7 : si32,
ui32_attr = 6 : ui32
} : () -> ()
Expand Down Expand Up @@ -122,6 +126,7 @@ func @wrong_int_attrs_signedness_fail() {
// expected-error @+1 {{'si32_attr' failed to satisfy constraint: 32-bit signed integer attribute}}
"test.int_attrs"() {
any_i32_attr = 5 : i32,
index_attr = 8 : index,
si32_attr = 7 : ui32,
ui32_attr = 6 : ui32
} : () -> ()
Expand All @@ -134,6 +139,7 @@ func @wrong_int_attrs_signedness_fail() {
// expected-error @+1 {{'ui32_attr' failed to satisfy constraint: 32-bit unsigned integer attribute}}
"test.int_attrs"() {
any_i32_attr = 5 : i32,
index_attr = 8 : index,
si32_attr = 7 : si32,
ui32_attr = 6 : si32
} : () -> ()
Expand Down
1 change: 1 addition & 0 deletions mlir/test/lib/Dialect/Test/TestOps.td
Expand Up @@ -199,6 +199,7 @@ def I64EnumAttrOp : TEST_Op<"i64_enum_attr"> {
def IntAttrOp : TEST_Op<"int_attrs"> {
let arguments = (ins
AnyI32Attr:$any_i32_attr,
IndexAttr:$index_attr,
UI32Attr:$ui32_attr,
SI32Attr:$si32_attr
);
Expand Down

0 comments on commit 11f093f

Please sign in to comment.