Mercurial > hg > CbC > CbC_llvm
view mlir/test/mlir-tblgen/op-format.td @ 266:00f31e85ec16 default tip
Added tag current for changeset 31d058e83c98
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Sat, 14 Oct 2023 10:13:55 +0900 |
parents | 1f2b6ac9f198 |
children |
line wrap: on
line source
// RUN: mlir-tblgen -gen-op-defs -I %S/../../include %s | FileCheck %s include "mlir/IR/OpBase.td" def TestDialect : Dialect { let name = "test"; } class TestFormat_Op<string fmt, list<Trait> traits = []> : Op<TestDialect, "format_op", traits> { let assemblyFormat = fmt; } //===----------------------------------------------------------------------===// // Directives //===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===// // custom // CHECK-LABEL: CustomStringLiteralA::parse // CHECK: parseFoo({{.*}}, parser.getBuilder().getI1Type()) // CHECK-LABEL: CustomStringLiteralA::print // CHECK: printFoo({{.*}}, ::mlir::Builder(getContext()).getI1Type()) def CustomStringLiteralA : TestFormat_Op<[{ custom<Foo>("$_builder.getI1Type()") attr-dict }]>; // CHECK-LABEL: CustomStringLiteralB::parse // CHECK: parseFoo({{.*}}, IndexType::get(parser.getContext())) // CHECK-LABEL: CustomStringLiteralB::print // CHECK: printFoo({{.*}}, IndexType::get(getContext())) def CustomStringLiteralB : TestFormat_Op<[{ custom<Foo>("IndexType::get($_ctxt)") attr-dict }]>; // CHECK-LABEL: CustomStringLiteralC::parse // CHECK: parseFoo({{.*}}, parser.getBuilder().getStringAttr("foo")) // CHECK-LABEL: CustomStringLiteralC::print // CHECK: printFoo({{.*}}, ::mlir::Builder(getContext()).getStringAttr("foo")) def CustomStringLiteralC : TestFormat_Op<[{ custom<Foo>("$_builder.getStringAttr(\"foo\")") attr-dict }]>; //===----------------------------------------------------------------------===// // Optional Groups //===----------------------------------------------------------------------===// // CHECK-LABEL: OptionalGroupA::parse // CHECK: if (::mlir::succeeded(parser.parseOptionalQuestion()) // CHECK-NEXT: else // CHECK: parser.parseOptionalOperand // CHECK-LABEL: OptionalGroupA::print // CHECK: if (!getA()) // CHECK-NEXT: odsPrinter << ' ' << "?"; // CHECK-NEXT: else // CHECK: odsPrinter << value; def OptionalGroupA : TestFormat_Op<[{ (`?`) : ($a^)? attr-dict }]>, Arguments<(ins Optional<I1>:$a)>; // CHECK-LABEL: OptionalGroupB::parse // CHECK: if (::mlir::succeeded(parser.parseOptionalKeyword("foo"))) // CHECK-NEXT: else // CHECK-NEXT: result.addAttribute("a", parser.getBuilder().getUnitAttr()) // CHECK: parser.parseKeyword("bar") // CHECK-LABEL: OptionalGroupB::print // CHECK: if (!getAAttr()) // CHECK-NEXT: odsPrinter << ' ' << "foo" // CHECK-NEXT: else // CHECK-NEXT: odsPrinter << ' ' << "bar" def OptionalGroupB : TestFormat_Op<[{ (`foo`) : (`bar` $a^)? attr-dict }]>, Arguments<(ins UnitAttr:$a)>; // Optional group anchored on a default-valued attribute: // CHECK-LABEL: OptionalGroupC::parse // CHECK: if (getAAttr() && getAAttr() != ::mlir::OpBuilder((*this)->getContext()).getStringAttr("default")) { // CHECK-NEXT: odsPrinter << ' '; // CHECK-NEXT: odsPrinter.printAttributeWithoutType(getAAttr()); // CHECK-NEXT: } def OptionalGroupC : TestFormat_Op<[{ ($a^)? attr-dict }]>, Arguments<(ins DefaultValuedStrAttr<StrAttr, "default">:$a)>;