@@ -110,7 +110,7 @@ define half @test_ui_si_i8_add(i8 noundef %x_in, i8 noundef %y_in) {
110
110
; CHECK-NEXT: [[X:%.*]] = and i8 [[X_IN:%.*]], 63
111
111
; CHECK-NEXT: [[Y:%.*]] = and i8 [[Y_IN:%.*]], 63
112
112
; CHECK-NEXT: [[TMP1:%.*]] = add nuw nsw i8 [[X]], [[Y]]
113
- ; CHECK-NEXT: [[R:%.*]] = sitofp i8 [[TMP1]] to half
113
+ ; CHECK-NEXT: [[R:%.*]] = uitofp i8 [[TMP1]] to half
114
114
; CHECK-NEXT: ret half [[R]]
115
115
;
116
116
%x = and i8 %x_in , 63
@@ -125,9 +125,8 @@ define half @test_ui_si_i8_add_overflow(i8 noundef %x_in, i8 noundef %y_in) {
125
125
; CHECK-LABEL: @test_ui_si_i8_add_overflow(
126
126
; CHECK-NEXT: [[X:%.*]] = and i8 [[X_IN:%.*]], 63
127
127
; CHECK-NEXT: [[Y:%.*]] = and i8 [[Y_IN:%.*]], 65
128
- ; CHECK-NEXT: [[XF:%.*]] = sitofp i8 [[X]] to half
129
- ; CHECK-NEXT: [[YF:%.*]] = uitofp i8 [[Y]] to half
130
- ; CHECK-NEXT: [[R:%.*]] = fadd half [[XF]], [[YF]]
128
+ ; CHECK-NEXT: [[TMP1:%.*]] = add nuw i8 [[X]], [[Y]]
129
+ ; CHECK-NEXT: [[R:%.*]] = uitofp i8 [[TMP1]] to half
131
130
; CHECK-NEXT: ret half [[R]]
132
131
;
133
132
%x = and i8 %x_in , 63
@@ -168,7 +167,7 @@ define half @test_si_si_i8_sub(i8 noundef %x_in, i8 noundef %y_in) {
168
167
; CHECK-NEXT: [[X:%.*]] = and i8 [[X_IN:%.*]], 63
169
168
; CHECK-NEXT: [[Y:%.*]] = or i8 [[Y_IN:%.*]], -64
170
169
; CHECK-NEXT: [[TMP1:%.*]] = sub nsw i8 [[X]], [[Y]]
171
- ; CHECK-NEXT: [[R:%.*]] = sitofp i8 [[TMP1]] to half
170
+ ; CHECK-NEXT: [[R:%.*]] = uitofp i8 [[TMP1]] to half
172
171
; CHECK-NEXT: ret half [[R]]
173
172
;
174
173
%x = and i8 %x_in , 63
@@ -183,7 +182,7 @@ define half @test_si_si_i8_sub_fail_overflow(i8 noundef %x_in, i8 noundef %y_in)
183
182
; CHECK-LABEL: @test_si_si_i8_sub_fail_overflow(
184
183
; CHECK-NEXT: [[X:%.*]] = and i8 [[X_IN:%.*]], 63
185
184
; CHECK-NEXT: [[Y:%.*]] = or i8 [[Y_IN:%.*]], -65
186
- ; CHECK-NEXT: [[XF:%.*]] = sitofp i8 [[X]] to half
185
+ ; CHECK-NEXT: [[XF:%.*]] = uitofp i8 [[X]] to half
187
186
; CHECK-NEXT: [[YF:%.*]] = sitofp i8 [[Y]] to half
188
187
; CHECK-NEXT: [[R:%.*]] = fsub half [[XF]], [[YF]]
189
188
; CHECK-NEXT: ret half [[R]]
@@ -200,7 +199,7 @@ define half @test_si_si_i8_sub_C(i8 noundef %x_in) {
200
199
; CHECK-LABEL: @test_si_si_i8_sub_C(
201
200
; CHECK-NEXT: [[X:%.*]] = and i8 [[X_IN:%.*]], 63
202
201
; CHECK-NEXT: [[TMP1:%.*]] = or disjoint i8 [[X]], 64
203
- ; CHECK-NEXT: [[R:%.*]] = sitofp i8 [[TMP1]] to half
202
+ ; CHECK-NEXT: [[R:%.*]] = uitofp i8 [[TMP1]] to half
204
203
; CHECK-NEXT: ret half [[R]]
205
204
;
206
205
%x = and i8 %x_in , 63
@@ -212,8 +211,8 @@ define half @test_si_si_i8_sub_C(i8 noundef %x_in) {
212
211
define half @test_si_si_i8_sub_C_fail_overflow (i8 noundef %x_in ) {
213
212
; CHECK-LABEL: @test_si_si_i8_sub_C_fail_overflow(
214
213
; CHECK-NEXT: [[X:%.*]] = and i8 [[X_IN:%.*]], 65
215
- ; CHECK-NEXT: [[XF :%.*]] = sitofp i8 [[X]] to half
216
- ; CHECK-NEXT: [[R:%.*]] = fadd half [[XF]], 0xH5400
214
+ ; CHECK-NEXT: [[TMP1 :%.*]] = add nuw i8 [[X]], 64
215
+ ; CHECK-NEXT: [[R:%.*]] = uitofp i8 [[TMP1]] to half
217
216
; CHECK-NEXT: ret half [[R]]
218
217
;
219
218
%x = and i8 %x_in , 65
@@ -242,9 +241,8 @@ define half @test_ui_si_i8_sub_fail_maybe_sign(i8 noundef %x_in, i8 noundef %y_i
242
241
; CHECK-LABEL: @test_ui_si_i8_sub_fail_maybe_sign(
243
242
; CHECK-NEXT: [[X:%.*]] = or i8 [[X_IN:%.*]], 64
244
243
; CHECK-NEXT: [[Y:%.*]] = and i8 [[Y_IN:%.*]], 63
245
- ; CHECK-NEXT: [[XF:%.*]] = uitofp i8 [[X]] to half
246
- ; CHECK-NEXT: [[YF:%.*]] = sitofp i8 [[Y]] to half
247
- ; CHECK-NEXT: [[R:%.*]] = fsub half [[XF]], [[YF]]
244
+ ; CHECK-NEXT: [[TMP1:%.*]] = sub nuw nsw i8 [[X]], [[Y]]
245
+ ; CHECK-NEXT: [[R:%.*]] = uitofp i8 [[TMP1]] to half
248
246
; CHECK-NEXT: ret half [[R]]
249
247
;
250
248
%x = or i8 %x_in , 64
@@ -273,8 +271,8 @@ define half @test_ui_ui_i8_mul(i8 noundef %x_in, i8 noundef %y_in) {
273
271
274
272
define half @test_ui_ui_i8_mul_C (i8 noundef %x_in ) {
275
273
; CHECK-LABEL: @test_ui_ui_i8_mul_C(
276
- ; CHECK-NEXT: [[TMP1 :%.*]] = shl i8 [[X_IN:%.*]], 4
277
- ; CHECK-NEXT: [[R:%.*]] = uitofp i8 [[TMP1 ]] to half
274
+ ; CHECK-NEXT: [[X :%.*]] = shl i8 [[X_IN:%.*]], 4
275
+ ; CHECK-NEXT: [[R:%.*]] = uitofp i8 [[X ]] to half
278
276
; CHECK-NEXT: ret half [[R]]
279
277
;
280
278
%x = and i8 %x_in , 15
@@ -318,7 +316,7 @@ define half @test_si_si_i8_mul_fail_maybe_zero(i8 noundef %x_in, i8 noundef %y_i
318
316
; CHECK-LABEL: @test_si_si_i8_mul_fail_maybe_zero(
319
317
; CHECK-NEXT: [[X:%.*]] = and i8 [[X_IN:%.*]], 7
320
318
; CHECK-NEXT: [[Y:%.*]] = or i8 [[Y_IN:%.*]], -8
321
- ; CHECK-NEXT: [[XF:%.*]] = sitofp i8 [[X]] to half
319
+ ; CHECK-NEXT: [[XF:%.*]] = uitofp i8 [[X]] to half
322
320
; CHECK-NEXT: [[YF:%.*]] = sitofp i8 [[Y]] to half
323
321
; CHECK-NEXT: [[R:%.*]] = fmul half [[XF]], [[YF]]
324
322
; CHECK-NEXT: ret half [[R]]
@@ -335,7 +333,7 @@ define half @test_si_si_i8_mul_C_fail_no_repr(i8 noundef %x_in) {
335
333
; CHECK-LABEL: @test_si_si_i8_mul_C_fail_no_repr(
336
334
; CHECK-NEXT: [[XX:%.*]] = and i8 [[X_IN:%.*]], 6
337
335
; CHECK-NEXT: [[X:%.*]] = or disjoint i8 [[XX]], 1
338
- ; CHECK-NEXT: [[XF:%.*]] = sitofp i8 [[X]] to half
336
+ ; CHECK-NEXT: [[XF:%.*]] = uitofp i8 [[X]] to half
339
337
; CHECK-NEXT: [[R:%.*]] = fmul half [[XF]], 0xHC780
340
338
; CHECK-NEXT: ret half [[R]]
341
339
;
@@ -350,7 +348,7 @@ define half @test_si_si_i8_mul_C_fail_overflow(i8 noundef %x_in) {
350
348
; CHECK-LABEL: @test_si_si_i8_mul_C_fail_overflow(
351
349
; CHECK-NEXT: [[XX:%.*]] = and i8 [[X_IN:%.*]], 6
352
350
; CHECK-NEXT: [[X:%.*]] = or disjoint i8 [[XX]], 1
353
- ; CHECK-NEXT: [[XF:%.*]] = sitofp i8 [[X]] to half
351
+ ; CHECK-NEXT: [[XF:%.*]] = uitofp i8 [[X]] to half
354
352
; CHECK-NEXT: [[R:%.*]] = fmul half [[XF]], 0xHCCC0
355
353
; CHECK-NEXT: ret half [[R]]
356
354
;
@@ -368,7 +366,7 @@ define half @test_ui_si_i8_mul(i8 noundef %x_in, i8 noundef %y_in) {
368
366
; CHECK-NEXT: [[YY:%.*]] = and i8 [[Y_IN:%.*]], 7
369
367
; CHECK-NEXT: [[Y:%.*]] = add nuw nsw i8 [[YY]], 1
370
368
; CHECK-NEXT: [[TMP1:%.*]] = mul nuw nsw i8 [[X]], [[Y]]
371
- ; CHECK-NEXT: [[R:%.*]] = sitofp i8 [[TMP1]] to half
369
+ ; CHECK-NEXT: [[R:%.*]] = uitofp i8 [[TMP1]] to half
372
370
; CHECK-NEXT: ret half [[R]]
373
371
;
374
372
%xx = and i8 %x_in , 6
@@ -386,9 +384,8 @@ define half @test_ui_si_i8_mul_fail_maybe_zero(i8 noundef %x_in, i8 noundef %y_i
386
384
; CHECK-NEXT: [[XX:%.*]] = and i8 [[X_IN:%.*]], 7
387
385
; CHECK-NEXT: [[X:%.*]] = add nuw nsw i8 [[XX]], 1
388
386
; CHECK-NEXT: [[Y:%.*]] = and i8 [[Y_IN:%.*]], 7
389
- ; CHECK-NEXT: [[XF:%.*]] = sitofp i8 [[X]] to half
390
- ; CHECK-NEXT: [[YF:%.*]] = uitofp i8 [[Y]] to half
391
- ; CHECK-NEXT: [[R:%.*]] = fmul half [[XF]], [[YF]]
387
+ ; CHECK-NEXT: [[TMP1:%.*]] = mul nuw nsw i8 [[X]], [[Y]]
388
+ ; CHECK-NEXT: [[R:%.*]] = uitofp i8 [[TMP1]] to half
392
389
; CHECK-NEXT: ret half [[R]]
393
390
;
394
391
%xx = and i8 %x_in , 7
@@ -405,7 +402,7 @@ define half @test_ui_si_i8_mul_fail_signed(i8 noundef %x_in, i8 noundef %y_in) {
405
402
; CHECK-NEXT: [[XX:%.*]] = and i8 [[X_IN:%.*]], 7
406
403
; CHECK-NEXT: [[X:%.*]] = add nuw nsw i8 [[XX]], 1
407
404
; CHECK-NEXT: [[Y:%.*]] = or i8 [[Y_IN:%.*]], -4
408
- ; CHECK-NEXT: [[XF:%.*]] = sitofp i8 [[X]] to half
405
+ ; CHECK-NEXT: [[XF:%.*]] = uitofp i8 [[X]] to half
409
406
; CHECK-NEXT: [[YF:%.*]] = uitofp i8 [[Y]] to half
410
407
; CHECK-NEXT: [[R:%.*]] = fmul half [[XF]], [[YF]]
411
408
; CHECK-NEXT: ret half [[R]]
@@ -545,7 +542,7 @@ define half @test_si_si_i16_sub_fail_no_promotion(i16 noundef %x_in, i16 noundef
545
542
; CHECK-LABEL: @test_si_si_i16_sub_fail_no_promotion(
546
543
; CHECK-NEXT: [[X:%.*]] = and i16 [[X_IN:%.*]], 2047
547
544
; CHECK-NEXT: [[Y:%.*]] = or i16 [[Y_IN:%.*]], -2049
548
- ; CHECK-NEXT: [[XF:%.*]] = sitofp i16 [[X]] to half
545
+ ; CHECK-NEXT: [[XF:%.*]] = uitofp i16 [[X]] to half
549
546
; CHECK-NEXT: [[YF:%.*]] = sitofp i16 [[Y]] to half
550
547
; CHECK-NEXT: [[R:%.*]] = fsub half [[XF]], [[YF]]
551
548
; CHECK-NEXT: ret half [[R]]
@@ -579,7 +576,7 @@ define half @test_ui_si_i16_sub_fail_maybe_signed(i16 noundef %x_in, i16 noundef
579
576
; CHECK-NEXT: [[X:%.*]] = or i16 [[X_IN:%.*]], -2048
580
577
; CHECK-NEXT: [[Y:%.*]] = and i16 [[Y_IN:%.*]], 2047
581
578
; CHECK-NEXT: [[XF:%.*]] = uitofp i16 [[X]] to half
582
- ; CHECK-NEXT: [[YF:%.*]] = sitofp i16 [[Y]] to half
579
+ ; CHECK-NEXT: [[YF:%.*]] = uitofp i16 [[Y]] to half
583
580
; CHECK-NEXT: [[R:%.*]] = fsub half [[XF]], [[YF]]
584
581
; CHECK-NEXT: ret half [[R]]
585
582
;
@@ -647,7 +644,7 @@ define half @test_si_si_i16_mul_fail_overflow(i16 noundef %x_in, i16 noundef %y_
647
644
; CHECK-NEXT: [[XX:%.*]] = and i16 [[X_IN:%.*]], 126
648
645
; CHECK-NEXT: [[X:%.*]] = or disjoint i16 [[XX]], 1
649
646
; CHECK-NEXT: [[Y:%.*]] = or i16 [[Y_IN:%.*]], -257
650
- ; CHECK-NEXT: [[XF:%.*]] = sitofp i16 [[X]] to half
647
+ ; CHECK-NEXT: [[XF:%.*]] = uitofp i16 [[X]] to half
651
648
; CHECK-NEXT: [[YF:%.*]] = sitofp i16 [[Y]] to half
652
649
; CHECK-NEXT: [[R:%.*]] = fmul half [[XF]], [[YF]]
653
650
; CHECK-NEXT: ret half [[R]]
@@ -694,7 +691,7 @@ define half @test_ui_si_i16_mul(i16 noundef %x_in, i16 noundef %y_in) {
694
691
; CHECK-NEXT: [[YY:%.*]] = and i16 [[Y_IN:%.*]], 126
695
692
; CHECK-NEXT: [[Y:%.*]] = or disjoint i16 [[YY]], 1
696
693
; CHECK-NEXT: [[TMP1:%.*]] = mul nuw nsw i16 [[X]], [[Y]]
697
- ; CHECK-NEXT: [[R:%.*]] = sitofp i16 [[TMP1]] to half
694
+ ; CHECK-NEXT: [[R:%.*]] = uitofp i16 [[TMP1]] to half
698
695
; CHECK-NEXT: ret half [[R]]
699
696
;
700
697
%xx = and i16 %x_in , 126
@@ -826,7 +823,7 @@ define half @test_si_si_i12_sub(i12 noundef %x_in, i12 noundef %y_in) {
826
823
; CHECK-NEXT: [[X:%.*]] = and i12 [[X_IN:%.*]], 1023
827
824
; CHECK-NEXT: [[Y:%.*]] = or i12 [[Y_IN:%.*]], -1024
828
825
; CHECK-NEXT: [[TMP1:%.*]] = sub nsw i12 [[X]], [[Y]]
829
- ; CHECK-NEXT: [[R:%.*]] = sitofp i12 [[TMP1]] to half
826
+ ; CHECK-NEXT: [[R:%.*]] = uitofp i12 [[TMP1]] to half
830
827
; CHECK-NEXT: ret half [[R]]
831
828
;
832
829
%x = and i12 %x_in , 1023
@@ -920,7 +917,7 @@ define half @test_si_si_i12_mul_fail_overflow(i12 noundef %x_in, i12 noundef %y_
920
917
; CHECK-NEXT: [[XX:%.*]] = and i12 [[X_IN:%.*]], 30
921
918
; CHECK-NEXT: [[X:%.*]] = or disjoint i12 [[XX]], 1
922
919
; CHECK-NEXT: [[Y:%.*]] = or i12 [[Y_IN:%.*]], -128
923
- ; CHECK-NEXT: [[XF:%.*]] = sitofp i12 [[X]] to half
920
+ ; CHECK-NEXT: [[XF:%.*]] = uitofp i12 [[X]] to half
924
921
; CHECK-NEXT: [[YF:%.*]] = sitofp i12 [[Y]] to half
925
922
; CHECK-NEXT: [[R:%.*]] = fmul half [[XF]], [[YF]]
926
923
; CHECK-NEXT: ret half [[R]]
@@ -938,7 +935,7 @@ define half @test_si_si_i12_mul_fail_maybe_non_zero(i12 noundef %x_in, i12 nound
938
935
; CHECK-LABEL: @test_si_si_i12_mul_fail_maybe_non_zero(
939
936
; CHECK-NEXT: [[X:%.*]] = and i12 [[X_IN:%.*]], 30
940
937
; CHECK-NEXT: [[Y:%.*]] = or i12 [[Y_IN:%.*]], -128
941
- ; CHECK-NEXT: [[XF:%.*]] = sitofp i12 [[X]] to half
938
+ ; CHECK-NEXT: [[XF:%.*]] = uitofp i12 [[X]] to half
942
939
; CHECK-NEXT: [[YF:%.*]] = sitofp i12 [[Y]] to half
943
940
; CHECK-NEXT: [[R:%.*]] = fmul half [[XF]], [[YF]]
944
941
; CHECK-NEXT: ret half [[R]]
@@ -955,7 +952,7 @@ define half @test_si_si_i12_mul_C(i12 noundef %x_in) {
955
952
; CHECK-LABEL: @test_si_si_i12_mul_C(
956
953
; CHECK-NEXT: [[X:%.*]] = or i12 [[X_IN:%.*]], -64
957
954
; CHECK-NEXT: [[TMP1:%.*]] = mul nsw i12 [[X]], -16
958
- ; CHECK-NEXT: [[R:%.*]] = sitofp i12 [[TMP1]] to half
955
+ ; CHECK-NEXT: [[R:%.*]] = uitofp i12 [[TMP1]] to half
959
956
; CHECK-NEXT: ret half [[R]]
960
957
;
961
958
%x = or i12 %x_in , -64
@@ -984,7 +981,7 @@ define half @test_ui_si_i12_mul_nsw(i12 noundef %x_in, i12 noundef %y_in) {
984
981
; CHECK-NEXT: [[YY:%.*]] = and i12 [[Y_IN:%.*]], 30
985
982
; CHECK-NEXT: [[Y:%.*]] = or disjoint i12 [[YY]], 1
986
983
; CHECK-NEXT: [[TMP1:%.*]] = mul nuw nsw i12 [[X]], [[Y]]
987
- ; CHECK-NEXT: [[R:%.*]] = sitofp i12 [[TMP1]] to half
984
+ ; CHECK-NEXT: [[R:%.*]] = uitofp i12 [[TMP1]] to half
988
985
; CHECK-NEXT: ret half [[R]]
989
986
;
990
987
%xx = and i12 %x_in , 31
0 commit comments