brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.1 KiB · 0d3445d Raw
140 lines · plain
1// RUN: mlir-tblgen -gen-dialect-decls -I %S/../../include %s | FileCheck %s --check-prefix=DIALECT2// RUN: mlir-tblgen -gen-op-decls -I %S/../../include %s | FileCheck %s --check-prefix=OP3// RUN: mlir-tblgen -gen-typedef-decls -I %S/../../include %s | FileCheck %s --check-prefix=TYPE4// RUN: mlir-tblgen -gen-attrdef-decls -I %S/../../include %s | FileCheck %s --check-prefix=ATTR5// RUN: mlir-tblgen -gen-attr-interface-decls -I %S/../../include %s | FileCheck %s --check-prefix=ATTR-INTERFACE6// RUN: mlir-tblgen -gen-op-interface-decls -I %S/../../include %s | FileCheck %s --check-prefix=OP-INTERFACE7// RUN: mlir-tblgen -gen-type-interface-decls -I %S/../../include %s | FileCheck %s --check-prefix=TYPE-INTERFACE8// RUN: mlir-tblgen -gen-enum-decls -I %S/../../include %s | FileCheck %s --check-prefix=ENUM9 10include "mlir/IR/AttrTypeBase.td"11include "mlir/IR/EnumAttr.td"12include "mlir/IR/OpBase.td"13 14// check dialect with summary and description15def A_Dialect : Dialect {16  let name = "a";17  let cppNamespace = "";18 19  let summary = "This is a summary";20  let description = [{21 22    This is a description, needs trimming23 24  }];25// DIALECT: /// This is a summary26// DIALECT-NEXT: /// This is a description, needs trimming27// DIALECT-NEXT: class ADialect : public ::mlir::Dialect {28}29 30def A_SomeOp1 : Op<A_Dialect, "some_op1", []>{31  let summary = "Some Op1 summary line1 \nsummary line2";32 33  let description = [{34      Some Op1 description35  }];36 37  let cppNamespace = "OP1";38// OP: namespace OP139// OP-EMPTY:40// OP-NEXT: /// Some Op1 summary line141// OP-NEXT: /// summary line242// OP-NEXT: /// Some Op1 description43// OP-NEXT: class SomeOp1;44}45 46// test weird characters in description47def A_SomeOp2 : Op<A_Dialect, "some_op2", []>{48  let summary = "";49 50  let description = [{51      $ptr (`,` $mask^)? (`,` $other^)?52      oilist(53        `a` `=` $1 | `b` `=` $254      )55  }];56// OP: /// $ptr (`,` $mask^)? (`,` $other^)?57// OP-NEXT: /// oilist(58// OP-NEXT: /// `a` `=` $1 | `b` `=` $259// OP-NEXT: /// )60// OP-NEXT: class SomeOp2;61}62 63def A_TensorType : TypeDef<A_Dialect,"Tensor"> {64  let typeName = "a.simple_a_tensor";65 66  let summary = "Tensor Type A summary";67 68  let description = [{69      Tensor Type A description70  }];71 72  let extraClassDeclaration = [{73    void getSignlessBlockType() const {74    }75  }];76// TYPE: /// Tensor Type A summary77// TYPE-NEXT: /// Tensor Type A description78// TYPE-NEXT: class TensorType;79}80 81def A_SimpleAttr : AttrDef<A_Dialect,"SimpleA"> {82  let attrName = "a.simple_attr";83  let summary = "Simple Attr A summary";84 85  let description = [{86      Simple Attr A description87  }];88// ATTR: /// Simple Attr A summary89// ATTR-NEXT: /// Simple Attr A description90// ATTR-NEXT: class SimpleAAttr;91}92 93def EncodingTrait : AttrInterface<"EncodingTrait"> {94  let cppNamespace = "mlir::a::traits";95  let description = [{96    Common trait for all layouts.97  }];98  let methods = [99  ];100// ATTR-INTERFACE: namespace mlir::a::traits {101// ATTR-INTERFACE-EMPTY:102// ATTR-INTERFACE-NEXT: /// Common trait for all layouts.103// ATTR-INTERFACE-NEXT: class EncodingTrait;104}105 106def SimpleEncodingTrait : AttrInterface<"SimpleEncodingTrait"> {107  let cppNamespace = "a::traits";108// ATTR-INTERFACE: namespace a::traits {109// ATTR-INTERFACE-EMPTY:110// ATTR-INTERFACE-NEXT: class SimpleEncodingTrait;111}112 113def SimpleOpInterface : OpInterface<"SimpleOpInterface"> {114  let cppNamespace = "a::traits";115  let description = [{116 117    Simple Op Interface description118    }];119// OP-INTERFACE: namespace a::traits {120// OP-INTERFACE-EMPTY:121// OP-INTERFACE-NEXT: /// Simple Op Interface description122// OP-INTERFACE-NEXT: class SimpleOpInterface;123}124 125def SimpleTypeInterface : TypeInterface<"SimpleTypeInterface"> {126  let description = [{127    Simple Type Interface description128  }];129// TYPE-INTERFACE: /// Simple Type Interface description130// TYPE-INTERFACE-NEXT: class SimpleTypeInterface;131}132 133def MyBitEnum: I32BitEnumAttr<"MyBitEnum", "An example bit enum",134                           [I32BitEnumCaseBit<"Bit0", 0, "tagged">,135                           I32BitEnumCaseBit<"Bit1", 1>]> {136  let genSpecializedAttr = 0;137// ENUM: // An example bit enum138// ENUM-NEXT: enum class MyBitEnum139}140