brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.7 KiB · 9881f92 Raw
72 lines · plain
1// RUN: mlir-tblgen -gen-op-decls -I %S/../../include %s | FileCheck %s2 3include "mlir/IR/AttrTypeBase.td"4include "mlir/IR/EnumAttr.td"5include "mlir/IR/OpBase.td"6 7def Test_Dialect : Dialect {8  let name = "test";9  let cppNamespace = "foobar";10}11class NS_Op<string mnemonic, list<Trait> traits> :12    Op<Test_Dialect, mnemonic, traits>;13 14def SomeAttr : Attr<CPred<"some-condition">, "some attribute kind"> {15  let storageType = "some-attr-kind";16  let returnType = "some-return-type";17  let convertFromStorage = "$_self.some-convert-from-storage()";18  let constBuilderCall = "some-const-builder-call($_builder, $0)";19}20 21def AOp : NS_Op<"a_op", []> {22  let arguments = (ins23      FloatLike:$lhs,24      SomeAttr:$aAttr,25      DefaultValuedAttr<SomeAttr, "4.2">:$bAttr,26      OptionalAttr<SomeAttr>:$cAttr,27      DefaultValuedOptionalAttr<SomeAttr, "7.2">:$dAttr28  );29}30 31// CHECK-LABEL: AOp declarations32// Note: `cAttr` below could be conditionally optional and so the generation is33// currently conservative.34// CHECK-DAG: ::mlir::Value lhs, some-attr-kind aAttr, some-attr-kind bAttr, /*optional*/some-attr-kind cAttr, /*optional*/some-attr-kind dAttr = nullptr);35// CHECK-DAG: ::mlir::Value lhs, some-return-type aAttr, some-return-type bAttr, /*optional*/some-attr-kind cAttr, /*optional*/some-return-type dAttr = 7.2);36// CHECK-DAG: ::mlir::TypeRange resultTypes, ::mlir::Value lhs, some-attr-kind aAttr, some-attr-kind bAttr, /*optional*/some-attr-kind cAttr, /*optional*/some-attr-kind dAttr = nullptr);37// CHECK-DAG: ::mlir::TypeRange resultTypes, ::mlir::Value lhs, some-return-type aAttr, some-return-type bAttr, /*optional*/some-attr-kind cAttr, /*optional*/some-return-type dAttr = 7.2);38 39def BOp : NS_Op<"b_op", []> {40  let arguments = (ins41      DefaultValuedAttr<SomeAttr, "6.2">:$aAttr,42      DefaultValuedAttr<SomeAttr, "4.2">:$bAttr43  );44}45 46// Verify that non-overlapping builders created where all could be elided.47// CHECK-LABEL: BOp declarations48// CHECK-DAG: some-attr-kind aAttr, some-attr-kind bAttr = nullptr);49// CHECK-DAG: some-return-type aAttr = 6.2, some-return-type bAttr = 4.2);50// CHECK-DAG: ::mlir::TypeRange resultTypes, some-attr-kind aAttr, some-attr-kind bAttr = nullptr);51// CHECK-DAG: ::mlir::TypeRange resultTypes, some-return-type aAttr = 6.2, some-return-type bAttr = 4.2);52 53def COp : NS_Op<"c_op", []> {54  let arguments = (ins55    FloatLike:$value,56    OptionalAttr<SymbolRefArrayAttr>:$ag,57    OptionalAttr<SymbolRefArrayAttr>:$as,58    OptionalAttr<SymbolRefArrayAttr>:$nos,59    OptionalAttr<I64Attr>:$al,60    UnitAttr:$vo,61    UnitAttr:$non62  );63}64 65// CHECK-LABEL: COp declarations66// Note: `al` below could be conditionally optional and so the generation is67// currently conservative.68// CHECK-DAG: ::mlir::Value value, /*optional*/::mlir::ArrayAttr ag, /*optional*/::mlir::ArrayAttr as, /*optional*/::mlir::ArrayAttr nos, /*optional*/::mlir::IntegerAttr al, /*optional*/::mlir::UnitAttr vo, /*optional*/::mlir::UnitAttr non = nullptr);69// CHECK-DAG: ::mlir::Value value, /*optional*/::mlir::ArrayAttr ag, /*optional*/::mlir::ArrayAttr as, /*optional*/::mlir::ArrayAttr nos, /*optional*/::mlir::IntegerAttr al, /*optional*/bool vo = false, /*optional*/bool non = false);70// CHECK-DAG: ::mlir::TypeRange resultTypes, ::mlir::Value value, /*optional*/::mlir::ArrayAttr ag, /*optional*/::mlir::ArrayAttr as, /*optional*/::mlir::ArrayAttr nos, /*optional*/::mlir::IntegerAttr al, /*optional*/::mlir::UnitAttr vo, /*optional*/::mlir::UnitAttr non = nullptr);71// CHECK-DAG: ::mlir::TypeRange resultTypes, ::mlir::Value value, /*optional*/::mlir::ArrayAttr ag, /*optional*/::mlir::ArrayAttr as, /*optional*/::mlir::ArrayAttr nos, /*optional*/::mlir::IntegerAttr al, /*optional*/bool vo = false, /*optional*/bool non = false);72