brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.8 KiB · 7291670 Raw
187 lines · plain
1// RUN: mlir-tblgen -gen-dialect-doc -I %S/../../include -dialect=test %s | FileCheck %s2// RUN: mlir-tblgen -gen-dialect-doc -I %S/../../include -dialect=test_toc %s | FileCheck %s --check-prefix=CHECK_TOC3 4include "mlir/IR/OpBase.td"5include "mlir/IR/AttrTypeBase.td"6include "mlir/IR/EnumAttr.td"7include "mlir/Interfaces/SideEffectInterfaces.td"8 9def Test_Dialect : Dialect {10  let name = "test";11  let summary = "Dialect of ops to test";12  let description = [{13    Dialect without a [TOC] here.14    TOC added by tool.15  }];16  let cppNamespace = "NS";17}18 19def OpGroupA : OpDocGroup {20  let summary = "Group of ops";21  let description = "Grouped for some reason.";22}23 24let opDocGroup = OpGroupA in {25def ADOp : Op<Test_Dialect, "d", [NoMemoryEffect, SingleBlockImplicitTerminator<"YieldOp">]>;26def AAOp : Op<Test_Dialect, "a", [NoMemoryEffect, SingleBlockImplicitTerminator<"YieldOp">]>;27}28 29def OpGroupB : OpDocGroup {30  let summary = "Other group of ops";31  let description = "Grouped for some other reason.";32}33 34let opDocGroup = OpGroupB in {35def ACOp : Op<Test_Dialect, "c", [NoMemoryEffect, SingleBlockImplicitTerminator<"YieldOp">]>;36def ABOp : Op<Test_Dialect, "b", [NoMemoryEffect, SingleBlockImplicitTerminator<"YieldOp">]>;37}38 39def AEOp : Op<Test_Dialect, "e", [NoMemoryEffect]> {40  let summary = "Op with a summary";41  let description = "Op with a description";42  let arguments = (ins ConfinedType<AnyType, [CPred<"::llvm::isa<::mlir::TensorType>($_self)">]>:$tensor,43                       I16Attr:$int_attr);44  let results = (outs45    ConfinedType<AnyType, [CPred<"::llvm::isa<::mlir::TensorType>($_self)">]>:$output46  ); 47}48 49def TestAttr : DialectAttr<Test_Dialect, CPred<"true">> {50  let summary = "attribute summary";51  let description = "attribute description";52}53 54def TestType : DialectType<Test_Dialect, CPred<"true">> {55  let summary = "type summary";56  let description = "type description";57}58 59def TestAttrDef : AttrDef<Test_Dialect, "TestAttrDef"> {60  let mnemonic = "test_attr_def";61}62 63def TestAttrDefParams : AttrDef<Test_Dialect, "TestAttrDefParams"> {64  let mnemonic = "test_attr_def_params";65  let parameters = (ins "int":$value);66 67  let assemblyFormat = "`<` $value `>`";68}69 70def TestTypeDef : TypeDef<Test_Dialect, "TestTypeDef"> {71  let mnemonic = "test_type_def";72}73 74def TestTypeDefParams : TypeDef<Test_Dialect, "TestTypeDefParams"> {75  let mnemonic = "test_type_def_params";76  let parameters = (ins "int":$value);77 78  let assemblyFormat = "`<` $value `>`";79}80 81def TestEnum :82    I32EnumAttr<"TestEnum",83        "enum summary", [84        I32EnumAttrCase<"First", 0, "first">,85        I32EnumAttrCase<"Second", 1, "second">,86        I32EnumAttrCase<"Third", 2, "third">]> {87  let genSpecializedAttr = 1;88  let cppNamespace = "NS";89}90 91// CHECK: Dialect without a [TOC] here.92// CHECK-NEXT:  TOC added by tool.93// CHECK-EMPTY:94// CHECK-NEXT:  [TOC]95// CHECK-EMPTY:96 97// CHECK-NOT: [TOC]98 99// CHECK:       test.e100// CHECK-EMPTY:101// CHECK-NEXT:  _Op with a summary_102// CHECK-EMPTY:103// CHECK-NEXT:  Op with a description104// CHECK-EMPTY:105 106// CHECK: Operands:107// CHECK-EMPTY:108// CHECK-NEXT:  | Operand | Description |109// CHECK-NEXT:  | :-----: | ----------- |110// CHECK-NEXT:  | `tensor` | |111// CHECK-EMPTY:112// CHECK-NEXT:  Results:113// CHECK-EMPTY:114// CHECK-NEXT:  | Result | Description |115// CHECK-NEXT:  | :----: | ----------- |116// CHECK-NEXT:  | `output` | |117// CHECK-EMPTY:118 119// CHECK: Group of ops120// CHECK: test.a121// CHECK: test.d122// CHECK: Other group123// CHECK: test.b124// CHECK: test.c125// CHECK: Traits: `SingleBlockImplicitTerminator<YieldOp>`, `SingleBlock`126// CHECK: Interfaces: `NoMemoryEffect (MemoryEffectOpInterface)`127// CHECK: Effects: `MemoryEffects::Effect{}`128 129// CHECK:       ## Attribute constraints130// CHECK-EMPTY:131// CHECK-NEXT:  ### attribute summary132// CHECK-EMPTY:133// CHECK:       attribute description134 135// CHECK: TestAttrDefAttr136// CHECK: Syntax:137// CHECK: #test.test_attr_def138 139// CHECK: TestAttrDefParamsAttr140// CHECK: Syntax:141// CHECK: #test.test_attr_def_params142 143// CHECK: ## Type constraints144// CHECK: ### type summary145// CHECK: type description146 147// CHECK: TestTypeDefType148// CHECK: Syntax:149// CHECK: !test.test_type_def150 151// CHECK: TestTypeDefParamsType152// CHECK: Syntax:153// CHECK: !test.test_type_def_params154 155// CHECK:       ## Enums156// CHECK-EMPTY:157// CHECK-NEXT:  ### TestEnum158// CHECK-EMPTY:159// CHECK-NEXT:  _Enum summary_160// CHECK-EMPTY:161// CHECK-NEXT:  #### Cases:162// CHECK-EMPTY:163// CHECK-NEXT:  | Symbol | Value | String |164// CHECK-NEXT:  | :----: | :---: | ------ |165// CHECK-NEXT:  | First | `0` | first |166// CHECK-NEXT:  | Second | `1` | second |167// CHECK-NEXT:  | Third | `2` | third |168// CHECK-EMPTY:169 170def Toc_Dialect : Dialect {171  let name = "test_toc";172  let summary = "Dialect of ops to test";173  let description = [{174    Dialect with175 176    [TOC]177 178    here.179  }];180  let cppNamespace = "NS";181}182def BOp : Op<Toc_Dialect, "b", []>;183 184// CHECK_TOC: Dialect with185// CHECK_TOC: [TOC]186// CHECK_TOC: here.187