1// RUN: mlir-opt %s | mlir-opt | FileCheck %s 2 3// CHECK: irdl.dialect @testd { 4irdl.dialect @testd { 5 // CHECK: irdl.type @parametric { 6 // CHECK: %[[v0:[^ ]*]] = irdl.any 7 // CHECK: irdl.parameters(foo: %[[v0]]) 8 // CHECK: } 9 irdl.type @parametric { 10 %0 = irdl.any 11 irdl.parameters(foo: %0) 12 } 13 14 // CHECK: irdl.attribute @parametric_attr { 15 // CHECK: %[[v0:[^ ]*]] = irdl.any 16 // CHECK: irdl.parameters(foo: %[[v0]]) 17 // CHECK: } 18 irdl.attribute @parametric_attr { 19 %0 = irdl.any 20 irdl.parameters(foo: %0) 21 } 22 23 // CHECK: irdl.type @attr_in_type_out { 24 // CHECK: %[[v0:[^ ]*]] = irdl.any 25 // CHECK: irdl.parameters(foo: %[[v0]]) 26 // CHECK: } 27 irdl.type @attr_in_type_out { 28 %0 = irdl.any 29 irdl.parameters(foo: %0) 30 } 31 32 // CHECK: irdl.operation @eq { 33 // CHECK: %[[v0:[^ ]*]] = irdl.is i32 34 // CHECK: irdl.results(foo: %[[v0]]) 35 // CHECK: } 36 irdl.operation @eq { 37 %0 = irdl.is i32 38 irdl.results(foo: %0) 39 } 40 41 // CHECK: irdl.operation @anyof { 42 // CHECK: %[[v0:[^ ]*]] = irdl.is i32 43 // CHECK: %[[v1:[^ ]*]] = irdl.is i64 44 // CHECK: %[[v2:[^ ]*]] = irdl.any_of(%[[v0]], %[[v1]]) 45 // CHECK: irdl.results(foo: %[[v2]]) 46 // CHECK: } 47 irdl.operation @anyof { 48 %0 = irdl.is i32 49 %1 = irdl.is i64 50 %2 = irdl.any_of(%0, %1) 51 irdl.results(foo: %2) 52 } 53 54 // CHECK: irdl.operation @all_of { 55 // CHECK: %[[v0:[^ ]*]] = irdl.is i32 56 // CHECK: %[[v1:[^ ]*]] = irdl.is i64 57 // 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 i32 63 %1 = irdl.is i64 64 %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.any 71 // CHECK: irdl.results(foo: %[[v0]]) 72 // CHECK: } 73 irdl.operation @any { 74 %0 = irdl.any 75 irdl.results(foo: %0) 76 } 77 78 // CHECK: irdl.operation @dyn_type_base { 79 // CHECK: %[[v1:[^ ]*]] = irdl.base @testd::@parametric 80 // CHECK: irdl.results(foo: %[[v1]]) 81 // CHECK: } 82 irdl.operation @dyn_type_base { 83 %0 = irdl.base @testd::@parametric 84 irdl.results(foo: %0) 85 } 86 87 // CHECK: irdl.operation @dyn_attr_base { 88 // CHECK: %[[v1:[^ ]*]] = irdl.base @testd::@parametric_attr 89 // CHECK: irdl.attributes {"attr1" = %[[v1]]} 90 // CHECK: } 91 irdl.operation @dyn_attr_base { 92 %0 = irdl.base @testd::@parametric_attr 93 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 i32 116 // CHECK: %[[v1:[^ ]*]] = irdl.is i64 117 // 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 i32 123 %1 = irdl.is i64 124 %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 i32 131 // CHECK: %[[v1:[^ ]*]] = irdl.is i64 132 // 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 i32 137 %1 = irdl.is i64 138 %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 i32 144 // CHECK: %[[v1:[^ ]*]] = irdl.is i64 145 // CHECK: irdl.attributes {"attr1" = %[[v0]], "attr2" = %[[v1]]} 146 // CHECK: } 147 irdl.operation @attrs { 148 %0 = irdl.is i32 149 %1 = irdl.is i64 150 151 irdl.attributes { 152 "attr1" = %0, 153 "attr2" = %1 154 } 155 } 156 // CHECK: irdl.operation @regions { 157 // CHECK: %[[r0:[^ ]*]] = irdl.region 158 // CHECK: %[[v0:[^ ]*]] = irdl.is i32 159 // CHECK: %[[v1:[^ ]*]] = irdl.is i64 160 // CHECK: %[[r1:[^ ]*]] = irdl.region(%[[v0]], %[[v1]]) 161 // CHECK: %[[r2:[^ ]*]] = irdl.region with size 3 162 // 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.region 167 %v0 = irdl.is i32 168 %v1 = irdl.is i64 169 %r1 = irdl.region(%v0, %v1) 170 %r2 = irdl.region with size 3 171 %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.any 178 // 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.any 184 %r0 = irdl.region(%v0) 185 186 irdl.operands(foo: %v0) 187 irdl.regions(bar: %r0) 188 } 189} 190