190 lines · plain
1// RUN: mlir-opt %s | mlir-opt | FileCheck %s2 3// CHECK: irdl.dialect @testd {4irdl.dialect @testd {5 // CHECK: irdl.type @parametric {6 // CHECK: %[[v0:[^ ]*]] = irdl.any7 // CHECK: irdl.parameters(foo: %[[v0]])8 // CHECK: }9 irdl.type @parametric {10 %0 = irdl.any11 irdl.parameters(foo: %0)12 }13 14 // CHECK: irdl.attribute @parametric_attr {15 // CHECK: %[[v0:[^ ]*]] = irdl.any16 // CHECK: irdl.parameters(foo: %[[v0]])17 // CHECK: }18 irdl.attribute @parametric_attr {19 %0 = irdl.any20 irdl.parameters(foo: %0)21 }22 23 // CHECK: irdl.type @attr_in_type_out {24 // CHECK: %[[v0:[^ ]*]] = irdl.any25 // CHECK: irdl.parameters(foo: %[[v0]])26 // CHECK: }27 irdl.type @attr_in_type_out {28 %0 = irdl.any29 irdl.parameters(foo: %0)30 }31 32 // CHECK: irdl.operation @eq {33 // CHECK: %[[v0:[^ ]*]] = irdl.is i3234 // CHECK: irdl.results(foo: %[[v0]])35 // CHECK: }36 irdl.operation @eq {37 %0 = irdl.is i3238 irdl.results(foo: %0)39 }40 41 // CHECK: irdl.operation @anyof {42 // CHECK: %[[v0:[^ ]*]] = irdl.is i3243 // CHECK: %[[v1:[^ ]*]] = irdl.is i6444 // CHECK: %[[v2:[^ ]*]] = irdl.any_of(%[[v0]], %[[v1]])45 // CHECK: irdl.results(foo: %[[v2]])46 // CHECK: }47 irdl.operation @anyof {48 %0 = irdl.is i3249 %1 = irdl.is i6450 %2 = irdl.any_of(%0, %1)51 irdl.results(foo: %2)52 }53 54 // CHECK: irdl.operation @all_of {55 // CHECK: %[[v0:[^ ]*]] = irdl.is i3256 // CHECK: %[[v1:[^ ]*]] = irdl.is i6457 // CHECK: %[[v2:[^ ]*]] = irdl.any_of(%[[v0]], %[[v1]])58 // CHECK: %[[v3:[^ ]*]] = irdl.all_of(%[[v2]], %[[v1]])59 // CHECK: irdl.results(foo: %[[v3]])60 // CHECK: }61 irdl.operation @all_of {62 %0 = irdl.is i3263 %1 = irdl.is i6464 %2 = irdl.any_of(%0, %1)65 %3 = irdl.all_of(%2, %1)66 irdl.results(foo: %3)67 }68 69 // CHECK: irdl.operation @any {70 // CHECK: %[[v0:[^ ]*]] = irdl.any71 // CHECK: irdl.results(foo: %[[v0]])72 // CHECK: }73 irdl.operation @any {74 %0 = irdl.any75 irdl.results(foo: %0)76 }77 78 // CHECK: irdl.operation @dyn_type_base {79 // CHECK: %[[v1:[^ ]*]] = irdl.base @testd::@parametric80 // CHECK: irdl.results(foo: %[[v1]])81 // CHECK: }82 irdl.operation @dyn_type_base {83 %0 = irdl.base @testd::@parametric84 irdl.results(foo: %0)85 }86 87 // CHECK: irdl.operation @dyn_attr_base {88 // CHECK: %[[v1:[^ ]*]] = irdl.base @testd::@parametric_attr89 // CHECK: irdl.attributes {"attr1" = %[[v1]]}90 // CHECK: }91 irdl.operation @dyn_attr_base {92 %0 = irdl.base @testd::@parametric_attr93 irdl.attributes {"attr1" = %0}94 }95 96 // CHECK: irdl.operation @named_type_base {97 // CHECK: %[[v1:[^ ]*]] = irdl.base "!builtin.integer"98 // CHECK: irdl.results(foo: %[[v1]])99 // CHECK: }100 irdl.operation @named_type_base {101 %0 = irdl.base "!builtin.integer"102 irdl.results(foo: %0)103 }104 105 // CHECK: irdl.operation @named_attr_base {106 // CHECK: %[[v1:[^ ]*]] = irdl.base "#builtin.integer"107 // CHECK: irdl.attributes {"attr1" = %[[v1]]}108 // CHECK: }109 irdl.operation @named_attr_base {110 %0 = irdl.base "#builtin.integer"111 irdl.attributes {"attr1" = %0}112 }113 114 // CHECK: irdl.operation @dynparams {115 // CHECK: %[[v0:[^ ]*]] = irdl.is i32116 // CHECK: %[[v1:[^ ]*]] = irdl.is i64117 // CHECK: %[[v2:[^ ]*]] = irdl.any_of(%[[v0]], %[[v1]])118 // CHECK: %[[v3:[^ ]*]] = irdl.parametric @testd::@parametric<%[[v2]]>119 // CHECK: irdl.results(foo: %[[v3]])120 // CHECK: }121 irdl.operation @dynparams {122 %0 = irdl.is i32123 %1 = irdl.is i64124 %2 = irdl.any_of(%0, %1)125 %3 = irdl.parametric @testd::@parametric<%2>126 irdl.results(foo: %3)127 }128 129 // CHECK: irdl.operation @constraint_vars {130 // CHECK: %[[v0:[^ ]*]] = irdl.is i32131 // CHECK: %[[v1:[^ ]*]] = irdl.is i64132 // CHECK: %[[v2:[^ ]*]] = irdl.any_of(%[[v0]], %[[v1]])133 // CHECK: irdl.results(foo: %[[v2]], bar: %[[v2]])134 // CHECK: }135 irdl.operation @constraint_vars {136 %0 = irdl.is i32137 %1 = irdl.is i64138 %2 = irdl.any_of(%0, %1)139 irdl.results(foo: %2, bar: %2)140 }141 142 // CHECK: irdl.operation @attrs {143 // CHECK: %[[v0:[^ ]*]] = irdl.is i32144 // CHECK: %[[v1:[^ ]*]] = irdl.is i64145 // CHECK: irdl.attributes {"attr1" = %[[v0]], "attr2" = %[[v1]]}146 // CHECK: }147 irdl.operation @attrs {148 %0 = irdl.is i32149 %1 = irdl.is i64150 151 irdl.attributes {152 "attr1" = %0,153 "attr2" = %1154 }155 }156 // CHECK: irdl.operation @regions {157 // CHECK: %[[r0:[^ ]*]] = irdl.region158 // CHECK: %[[v0:[^ ]*]] = irdl.is i32159 // CHECK: %[[v1:[^ ]*]] = irdl.is i64160 // CHECK: %[[r1:[^ ]*]] = irdl.region(%[[v0]], %[[v1]])161 // CHECK: %[[r2:[^ ]*]] = irdl.region with size 3162 // CHECK: %[[r3:[^ ]*]] = irdl.region()163 // CHECK: irdl.regions(foo: %[[r0]], bar: %[[r1]], baz: %[[r2]], qux: %[[r3]])164 // CHECK: }165 irdl.operation @regions {166 %r0 = irdl.region167 %v0 = irdl.is i32168 %v1 = irdl.is i64169 %r1 = irdl.region(%v0, %v1)170 %r2 = irdl.region with size 3171 %r3 = irdl.region()172 173 irdl.regions(foo: %r0, bar: %r1, baz: %r2, qux: %r3)174 }175 176 // CHECK: irdl.operation @region_and_operand {177 // CHECK: %[[v0:[^ ]*]] = irdl.any178 // CHECK: %[[r0:[^ ]*]] = irdl.region(%[[v0]])179 // CHECK: irdl.operands(foo: %[[v0]])180 // CHECK: irdl.regions(bar: %[[r0]])181 // CHECK: }182 irdl.operation @region_and_operand {183 %v0 = irdl.any184 %r0 = irdl.region(%v0)185 186 irdl.operands(foo: %v0)187 irdl.regions(bar: %r0)188 }189}190