CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
132 lines
4.9 KiB
TableGen
132 lines
4.9 KiB
TableGen
// 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
|
|
}]>;
|
|
|
|
// CHECK-LABEL: CustomStringLiteralD::parse
|
|
// CHECK: parseFoo({{.*}}, result)
|
|
// CHECK-LABEL: CustomStringLiteralD::print
|
|
// CHECK: printFoo({{.*}}, getProperties())
|
|
def CustomStringLiteralD : TestFormat_Op<[{
|
|
custom<Foo>(prop-dict) 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.getOrAddProperties<OptionalGroupB::Properties>().a = parser.getBuilder().getUnitAttr()
|
|
// CHECK: parser.parseKeyword("bar")
|
|
// CHECK-LABEL: OptionalGroupB::print
|
|
// CHECK: if (!(getAAttr() && getAAttr() != ((false) ? ::mlir::OpBuilder((*this)->getContext()).getUnitAttr() : nullptr)))
|
|
// 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() != ::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)>;
|
|
|
|
// CHECK-LABEL: OptionalGroupD::parse
|
|
// CHECK: if (auto optResult = [&]() -> ::mlir::OptionalParseResult {
|
|
// CHECK: auto odsResult = parseCustom(parser, aOperand, bOperand);
|
|
// CHECK: if (!odsResult.has_value()) return {};
|
|
// CHECK: if (::mlir::failed(*odsResult)) return ::mlir::failure();
|
|
// CHECK: return ::mlir::success();
|
|
// CHECK: }(); optResult.has_value() && ::mlir::failed(*optResult)) {
|
|
// CHECK: return ::mlir::failure();
|
|
// CHECK: } else if (optResult.has_value()) {
|
|
|
|
// CHECK-LABEL: OptionalGroupD::print
|
|
// CHECK-NEXT: if (((getA()) || (getB()))) {
|
|
// CHECK-NEXT: odsPrinter << ' ';
|
|
// CHECK-NEXT: printCustom
|
|
def OptionalGroupD : TestFormat_Op<[{
|
|
(custom<Custom>($a, $b)^)? attr-dict
|
|
}], [AttrSizedOperandSegments]>, Arguments<(ins Optional<I64>:$a, Optional<I64>:$b)>;
|
|
|
|
// CHECK-LABEL: RegionRef::parse
|
|
// CHECK: auto odsResult = parseCustom(parser, *bodyRegion);
|
|
// CHECK-LABEL: RegionRef::print
|
|
// CHECK: printCustom(_odsPrinter, *this, getBody());
|
|
def RegionRef : TestFormat_Op<[{
|
|
$body custom<Custom>(ref($body)) attr-dict
|
|
}]> {
|
|
let regions = (region AnyRegion:$body);
|
|
}
|
|
|
|
// CHECK-LABEL: SuccessorRef::parse
|
|
// CHECK: auto odsResult = parseCustom(parser, successorSuccessor);
|
|
// CHECK-LABEL: SuccessorRef::print
|
|
// CHECK: printCustom(_odsPrinter, *this, getSuccessor());
|
|
def SuccessorRef : TestFormat_Op<[{
|
|
$successor custom<Custom>(ref($successor)) attr-dict
|
|
}]> {
|
|
let successors = (successor AnySuccessor:$successor);
|
|
}
|