@@ -152,11 +152,12 @@ func.func @arith_shift_left(%arg0: i32, %arg1: i32) {
152152 // CHECK-DAG: %[[SizeConstant:[^ ]*]] = "emitc.constant"{{.*}}value = 32
153153 // CHECK-DAG: %[[CmpNoExcess:[^ ]*]] = emitc.cmp lt, %[[C2]], %[[SizeConstant]] : (ui32, ui32) -> i1
154154 // CHECK-DAG: %[[Zero:[^ ]*]] = "emitc.constant"{{.*}}value = 0
155- // CHECK: %[[ShiftRes:[^ ]*]] = emitc.expression : ui32
156- // CHECK: %[[SHL:[^ ]*]] = emitc.bitwise_left_shift %[[C1]], %[[C2]] : (ui32, ui32) -> ui32
157- // CHECK: %[[Ternary:[^ ]*]] = emitc.conditional %[[CmpNoExcess]], %[[SHL]], %[[Zero]] : ui32
158- // CHECK: emitc.yield %[[Ternary]] : ui32
159- // CHECK: emitc.cast %[[ShiftRes]] : ui32 to i32
155+ // CHECK: %[[ShiftRes:[^ ]*]] = emitc.expression : ui32 {
156+ // CHECK-NEXT: %[[SHL:[^ ]*]] = bitwise_left_shift %[[C1]], %[[C2]] : (ui32, ui32) -> ui32
157+ // CHECK-NEXT: %[[Ternary:[^ ]*]] = conditional %[[CmpNoExcess]], %[[SHL]], %[[Zero]] : ui32
158+ // CHECK-NEXT: yield %[[Ternary]] : ui32
159+ // CHECK-NEXT: }
160+ // CHECK-NEXT: emitc.cast %[[ShiftRes]] : ui32 to i32
160161 %1 = arith.shli %arg0 , %arg1 : i32
161162 return
162163}
@@ -171,21 +172,23 @@ func.func @arith_shift_right(%arg0: i32, %arg1: i32) {
171172 // CHECK-DAG: %[[SizeConstant:[^ ]*]] = "emitc.constant"{{.*}}value = 32{{.*}}ui32
172173 // CHECK-DAG: %[[CmpNoExcess:[^ ]*]] = emitc.cmp lt, %[[C2]], %[[SizeConstant]] : (ui32, ui32) -> i1
173174 // CHECK-DAG: %[[Zero:[^ ]*]] = "emitc.constant"{{.*}}value = 0{{.*}}ui32
174- // CHECK: %[[ShiftRes:[^ ]*]] = emitc.expression : ui32
175- // CHECK: %[[SHR:[^ ]*]] = emitc.bitwise_right_shift %[[C1]], %[[C2]] : (ui32, ui32) -> ui32
176- // CHECK: %[[Ternary:[^ ]*]] = emitc.conditional %[[CmpNoExcess]], %[[SHR]], %[[Zero]] : ui32
177- // CHECK: emitc.yield %[[Ternary]] : ui32
178- // CHECK: emitc.cast %[[ShiftRes]] : ui32 to i32
175+ // CHECK: %[[ShiftRes:[^ ]*]] = emitc.expression : ui32 {
176+ // CHECK-NEXT: %[[SHR:[^ ]*]] = bitwise_right_shift %[[C1]], %[[C2]] : (ui32, ui32) -> ui32
177+ // CHECK-NEXT: %[[Ternary:[^ ]*]] = conditional %[[CmpNoExcess]], %[[SHR]], %[[Zero]] : ui32
178+ // CHECK-NEXT: yield %[[Ternary]] : ui32
179+ // CHECK-NEXT: }
180+ // CHECK-NEXT: emitc.cast %[[ShiftRes]] : ui32 to i32
179181 %2 = arith.shrui %arg0 , %arg1 : i32
180182
181183 // CHECK-DAG: %[[SC2:[^ ]*]] = emitc.cast %[[ARG1]] : i32 to ui32
182184 // CHECK-DAG: %[[SSizeConstant:[^ ]*]] = "emitc.constant"{{.*}}value = 32{{.*}}ui32
183185 // CHECK-DAG: %[[SCmpNoExcess:[^ ]*]] = emitc.cmp lt, %[[SC2]], %[[SSizeConstant]] : (ui32, ui32) -> i1
184186 // CHECK-DAG: %[[SZero:[^ ]*]] = "emitc.constant"{{.*}}value = 0{{.*}}i32
185- // CHECK: %[[SShiftRes:[^ ]*]] = emitc.expression : i32
186- // CHECK: %[[SHRSI:[^ ]*]] = emitc.bitwise_right_shift %[[ARG0]], %[[SC2]] : (i32, ui32) -> i32
187- // CHECK: %[[STernary:[^ ]*]] = emitc.conditional %[[SCmpNoExcess]], %[[SHRSI]], %[[SZero]] : i32
188- // CHECK: emitc.yield %[[STernary]] : i32
187+ // CHECK: %[[SShiftRes:[^ ]*]] = emitc.expression : i32 {
188+ // CHECK-NEXT: %[[SHRSI:[^ ]*]] = bitwise_right_shift %[[ARG0]], %[[SC2]] : (i32, ui32) -> i32
189+ // CHECK-NEXT: %[[STernary:[^ ]*]] = conditional %[[SCmpNoExcess]], %[[SHRSI]], %[[SZero]] : i32
190+ // CHECK-NEXT: yield %[[STernary]] : i32
191+ // CHECK-NEXT: }
189192 %3 = arith.shrsi %arg0 , %arg1 : i32
190193
191194 return
@@ -206,10 +209,11 @@ func.func @arith_shift_left_index(%amount: i32) {
206209 // CHECK-DAG: %[[SizeConstant:[^ ]*]] = emitc.mul %[[Byte]], %[[SizeOf]] : (!emitc.size_t, !emitc.size_t) -> !emitc.size_t
207210 // CHECK-DAG: %[[CmpNoExcess:[^ ]*]] = emitc.cmp lt, %[[AmountIdx]], %[[SizeConstant]] : (!emitc.size_t, !emitc.size_t) -> i1
208211 // CHECK-DAG: %[[Zero:[^ ]*]] = "emitc.constant"{{.*}}value = 0
209- // CHECK: %[[ShiftRes:[^ ]*]] = emitc.expression : !emitc.size_t
210- // CHECK: %[[SHL:[^ ]*]] = emitc.bitwise_left_shift %[[C1]], %[[AmountIdx]] : (!emitc.size_t, !emitc.size_t) -> !emitc.size_t
211- // CHECK: %[[Ternary:[^ ]*]] = emitc.conditional %[[CmpNoExcess]], %[[SHL]], %[[Zero]] : !emitc.size_t
212- // CHECK: emitc.yield %[[Ternary]] : !emitc.size_t
212+ // CHECK: %[[ShiftRes:[^ ]*]] = emitc.expression : !emitc.size_t {
213+ // CHECK-NEXT: %[[SHL:[^ ]*]] = bitwise_left_shift %[[C1]], %[[AmountIdx]] : (!emitc.size_t, !emitc.size_t) -> !emitc.size_t
214+ // CHECK-NEXT: %[[Ternary:[^ ]*]] = conditional %[[CmpNoExcess]], %[[SHL]], %[[Zero]] : !emitc.size_t
215+ // CHECK-NEXT: yield %[[Ternary]] : !emitc.size_t
216+ // CHECK-NEXT: }
213217 %1 = arith.shli %cst0 , %cast1 : index
214218 return
215219}
@@ -230,10 +234,11 @@ func.func @arith_shift_right_index(%amount: i32) {
230234 // CHECK-DAG: %[[SizeConstant:[^ ]*]] = emitc.mul %[[Byte]], %[[SizeOf]] : (!emitc.size_t, !emitc.size_t) -> !emitc.size_t
231235 // CHECK-DAG: %[[CmpNoExcess:[^ ]*]] = emitc.cmp lt, %[[AmountIdx]], %[[SizeConstant]] : (!emitc.size_t, !emitc.size_t) -> i1
232236 // CHECK-DAG: %[[Zero:[^ ]*]] = "emitc.constant"{{.*}}value = 0{{.*}}!emitc.size_t
233- // CHECK: %[[ShiftRes:[^ ]*]] = emitc.expression : !emitc.size_t
234- // CHECK: %[[SHR:[^ ]*]] = emitc.bitwise_right_shift %[[C1]], %[[AmountIdx]] : (!emitc.size_t, !emitc.size_t) -> !emitc.size_t
235- // CHECK: %[[Ternary:[^ ]*]] = emitc.conditional %[[CmpNoExcess]], %[[SHR]], %[[Zero]] : !emitc.size_t
236- // CHECK: emitc.yield %[[Ternary]] : !emitc.size_t
237+ // CHECK: %[[ShiftRes:[^ ]*]] = emitc.expression : !emitc.size_t {
238+ // CHECK-NEXT: %[[SHR:[^ ]*]] = bitwise_right_shift %[[C1]], %[[AmountIdx]] : (!emitc.size_t, !emitc.size_t) -> !emitc.size_t
239+ // CHECK-NEXT: %[[Ternary:[^ ]*]] = conditional %[[CmpNoExcess]], %[[SHR]], %[[Zero]] : !emitc.size_t
240+ // CHECK-NEXT: yield %[[Ternary]] : !emitc.size_t
241+ // CHECK-NEXT: }
237242 %2 = arith.shrui %arg0 , %arg1 : index
238243
239244 // CHECK-DAG: %[[SC1:[^ ]*]] = emitc.cast %[[C1]] : !emitc.size_t to !emitc.ptrdiff_t
@@ -242,11 +247,12 @@ func.func @arith_shift_right_index(%amount: i32) {
242247 // CHECK-DAG: %[[SSizeConstant:[^ ]*]] = emitc.mul %[[SByte]], %[[SSizeOf]] : (!emitc.size_t, !emitc.size_t) -> !emitc.size_t
243248 // CHECK-DAG: %[[SCmpNoExcess:[^ ]*]] = emitc.cmp lt, %[[AmountIdx]], %[[SSizeConstant]] : (!emitc.size_t, !emitc.size_t) -> i1
244249 // CHECK-DAG: %[[SZero:[^ ]*]] = "emitc.constant"{{.*}}value = 0{{.*}}!emitc.ptrdiff_t
245- // CHECK: %[[SShiftRes:[^ ]*]] = emitc.expression : !emitc.ptrdiff_t
246- // CHECK: %[[SHRSI:[^ ]*]] = emitc.bitwise_right_shift %[[SC1]], %[[AmountIdx]] : (!emitc.ptrdiff_t, !emitc.size_t) -> !emitc.ptrdiff_t
247- // CHECK: %[[STernary:[^ ]*]] = emitc.conditional %[[SCmpNoExcess]], %[[SHRSI]], %[[SZero]] : !emitc.ptrdiff_t
248- // CHECK: emitc.yield %[[STernary]] : !emitc.ptrdiff_t
249- // CHECK: emitc.cast %[[SShiftRes]] : !emitc.ptrdiff_t to !emitc.size_t
250+ // CHECK: %[[SShiftRes:[^ ]*]] = emitc.expression : !emitc.ptrdiff_t {
251+ // CHECK-NEXT: %[[SHRSI:[^ ]*]] = bitwise_right_shift %[[SC1]], %[[AmountIdx]] : (!emitc.ptrdiff_t, !emitc.size_t) -> !emitc.ptrdiff_t
252+ // CHECK-NEXT: %[[STernary:[^ ]*]] = conditional %[[SCmpNoExcess]], %[[SHRSI]], %[[SZero]] : !emitc.ptrdiff_t
253+ // CHECK-NEXT: yield %[[STernary]] : !emitc.ptrdiff_t
254+ // CHECK-NEXT: }
255+ // CHECK-NEXT: emitc.cast %[[SShiftRes]] : !emitc.ptrdiff_t to !emitc.size_t
250256 %3 = arith.shrsi %arg0 , %arg1 : index
251257
252258 return
@@ -833,9 +839,9 @@ func.func @int_opaque_conversion(%arg0: i80, %arg1: i80, %arg2: i1) {
833839 // CHECK: [[LT:[^ ]*]] = emitc.cmp lt, [[arg1_cast]], [[Bitwidth]] : (!emitc.opaque<"i80">, !emitc.opaque<"i80">) -> i1
834840 // CHECK: [[Poison:[^ ]*]] = "emitc.constant"() <{value = #emitc.opaque<"opaque_shift_poison">}> : () -> !emitc.opaque<"i80">
835841 // CHECK: [[Exp:[^ ]*]] = emitc.expression : !emitc.opaque<"i80"> {
836- // CHECK: [[LShift:[^ ]*]] = emitc. bitwise_left_shift [[arg0_cast]], [[arg1_cast]] : (!emitc.opaque<"i80">, !emitc.opaque<"i80">) -> !emitc.opaque<"i80">
837- // CHECK: emitc. conditional [[LT]], [[LShift]], [[Poison]] : !emitc.opaque<"i80">
838- // CHECK: emitc. yield {{.*}} : !emitc.opaque<"i80">
842+ // CHECK: [[LShift:[^ ]*]] = bitwise_left_shift [[arg0_cast]], [[arg1_cast]] : (!emitc.opaque<"i80">, !emitc.opaque<"i80">) -> !emitc.opaque<"i80">
843+ // CHECK: conditional [[LT]], [[LShift]], [[Poison]] : !emitc.opaque<"i80">
844+ // CHECK: yield {{.*}} : !emitc.opaque<"i80">
839845 // CHECK: }
840846 %12 = arith.shli %arg0 , %arg1 : i80
841847 // CHECK: emitc.cmp eq, [[arg0_cast]], [[arg1_cast]] : (!emitc.opaque<"i80">, !emitc.opaque<"i80">) -> i1
0 commit comments