brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.8 KiB · 99a1592 Raw
104 lines · plain
1// RUN: mlir-tblgen -gen-rewriters -I %S/../../include %s | FileCheck %s2 3include "mlir/IR/OpBase.td"4include "mlir/IR/PatternBase.td"5 6def Test_Dialect : Dialect {7  let name = "test";8}9class NS_Op<string mnemonic, list<Trait> traits> :10    Op<Test_Dialect, mnemonic, traits>;11 12def AOp : NS_Op<"a_op", []> {13  let arguments = (ins14    AnyInteger:$any_integer15  );16 17  let results = (outs AnyInteger);18}19 20def BOp : NS_Op<"b_op", []> {21  let arguments = (ins22    AnyAttr: $any_attr,23    AnyInteger24  );25 26  let results = (outs AnyInteger);27}28 29def COp : NS_Op<"c_op", []> {30  let arguments = (ins31    AnyAttr: $any_attr,32    AnyInteger33  );34 35  let results = (outs AnyInteger);36}37 38def DOp : NS_Op<"d_op", []> {39  let arguments = (ins40    Variadic<AnyInteger>:$any_integer41  );42 43  let results = (outs AnyInteger);44}45 46def Foo : NativeCodeCall<"foo($_builder, $0)">;47 48def NonNegProp : PropConstraint<CPred<"$_self >= 0">, "non-negative integer">;49 50def EOp : NS_Op<"e_op", []> {51  let arguments = (ins52    I32Prop:$x,53    I64Prop:$y,54    AnyInteger:$z55  );56  let results = (outs I32:$res);57}58 59def FOp: NS_Op<"f_op", []> {60  let arguments = (ins61    I32Prop:$a,62    AnyInteger:$b63  );64}65 66// Test static matcher for duplicate DagNode67// ---68 69// CHECK: static ::llvm::LogicalResult [[$TYPE_CONSTRAINT:__mlir_ods_local_type_constraint.*]](70// CHECK-NEXT: {{.*::mlir::Type type}}71// CHECK: static ::llvm::LogicalResult [[$ATTR_CONSTRAINT:__mlir_ods_local_attr_constraint.*]](72// CHECK-NEXT: {{.*::mlir::Attribute attr}}73// CHECK: template <typename T>74// CHECK-NEXT: static ::llvm::LogicalResult [[$PROP_CONSTRAINT:__mlir_ods_local_prop_constraint.*]](75// CHECK-NEXT: {{.*T prop}}76// CHECK: static ::llvm::LogicalResult [[$DAG_MATCHER:static_dag_matcher.*]](77// CHECK: if(::mlir::failed([[$ATTR_CONSTRAINT]]78// CHECK: if(::mlir::failed([[$TYPE_CONSTRAINT]]79// CHECK: static ::llvm::LogicalResult [[$DAG_MATCHER2:static_dag_matcher.*]](80// CHECK-SAME: int32_t &x81// CHECK: if(::mlir::failed([[$PROP_CONSTRAINT]]82// CHECK: if(::mlir::failed([[$TYPE_CONSTRAINT]]83 84// CHECK: if(::mlir::failed([[$DAG_MATCHER]](rewriter, op1, tblgen_ops85def : Pat<(AOp (BOp I32Attr:$attr, I32:$int)),86          (AOp $int)>;87 88// CHECK: if(::mlir::failed([[$DAG_MATCHER]](rewriter, op1, tblgen_ops89def : Pat<(COp $_, (BOp I32Attr:$attr, I32:$int)),90          (COp $attr, $int)>;91 92// CHECK: auto [[$VAR:.*]] = foo(93// CHECK: ::llvm::SmallVector<::mlir::Value, 4> [[$ARR:tblgen_variadic_values_.*]];94// CHECK: [[$ARR]].push_back([[$VAR]]);95def : Pat<(AOp $x), (DOp (variadic (Foo $x)))>;96 97// CHECK: if(::mlir::failed([[$DAG_MATCHER2]]({{.*}} x{{[,)]}}98def : Pat<(AOp (EOp NonNegProp:$x, NonNegProp:$_, I32:$z)),99  (AOp $z)>;100 101// CHECK: if(::mlir::failed([[$DAG_MATCHER2]]({{.*}} x{{[,)]}}102def : Pat<(FOp $_, (EOp NonNegProp:$x, NonNegProp:$_, I32:$z)),103  (COp $x, $z)>;104