@@ -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
@@ -152,9 +151,8 @@ define half @test_ui_ui_i8_sub_C(i8 noundef %x_in) {
152
151
153
152
define half @test_ui_ui_i8_sub_C_fail_overflow (i8 noundef %x_in ) {
154
153
; CHECK-LABEL: @test_ui_ui_i8_sub_C_fail_overflow(
155
- ; CHECK-NEXT: [[X:%.*]] = and i8 [[X_IN:%.*]], 127
156
- ; CHECK-NEXT: [[XF:%.*]] = uitofp i8 [[X]] to half
157
- ; CHECK-NEXT: [[R:%.*]] = fadd half [[XF]], 0xHD800
154
+ ; CHECK-NEXT: [[TMP1:%.*]] = or i8 [[X_IN:%.*]], -128
155
+ ; CHECK-NEXT: [[R:%.*]] = sitofp i8 [[TMP1]] to half
158
156
; CHECK-NEXT: ret half [[R]]
159
157
;
160
158
%x = and i8 %x_in , 127
@@ -212,8 +210,8 @@ define half @test_si_si_i8_sub_C(i8 noundef %x_in) {
212
210
define half @test_si_si_i8_sub_C_fail_overflow (i8 noundef %x_in ) {
213
211
; CHECK-LABEL: @test_si_si_i8_sub_C_fail_overflow(
214
212
; 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
213
+ ; CHECK-NEXT: [[TMP1 :%.*]] = add nuw i8 [[X]], 64
214
+ ; CHECK-NEXT: [[R:%.*]] = uitofp i8 [[TMP1]] to half
217
215
; CHECK-NEXT: ret half [[R]]
218
216
;
219
217
%x = and i8 %x_in , 65
@@ -242,9 +240,8 @@ define half @test_ui_si_i8_sub_fail_maybe_sign(i8 noundef %x_in, i8 noundef %y_i
242
240
; CHECK-LABEL: @test_ui_si_i8_sub_fail_maybe_sign(
243
241
; CHECK-NEXT: [[X:%.*]] = or i8 [[X_IN:%.*]], 64
244
242
; 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]]
243
+ ; CHECK-NEXT: [[TMP1:%.*]] = sub nuw nsw i8 [[X]], [[Y]]
244
+ ; CHECK-NEXT: [[R:%.*]] = uitofp i8 [[TMP1]] to half
248
245
; CHECK-NEXT: ret half [[R]]
249
246
;
250
247
%x = or i8 %x_in , 64
@@ -273,8 +270,8 @@ define half @test_ui_ui_i8_mul(i8 noundef %x_in, i8 noundef %y_in) {
273
270
274
271
define half @test_ui_ui_i8_mul_C (i8 noundef %x_in ) {
275
272
; 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
273
+ ; CHECK-NEXT: [[X :%.*]] = shl i8 [[X_IN:%.*]], 4
274
+ ; CHECK-NEXT: [[R:%.*]] = uitofp i8 [[X ]] to half
278
275
; CHECK-NEXT: ret half [[R]]
279
276
;
280
277
%x = and i8 %x_in , 15
@@ -368,7 +365,7 @@ define half @test_ui_si_i8_mul(i8 noundef %x_in, i8 noundef %y_in) {
368
365
; CHECK-NEXT: [[YY:%.*]] = and i8 [[Y_IN:%.*]], 7
369
366
; CHECK-NEXT: [[Y:%.*]] = add nuw nsw i8 [[YY]], 1
370
367
; CHECK-NEXT: [[TMP1:%.*]] = mul nuw nsw i8 [[X]], [[Y]]
371
- ; CHECK-NEXT: [[R:%.*]] = sitofp i8 [[TMP1]] to half
368
+ ; CHECK-NEXT: [[R:%.*]] = uitofp i8 [[TMP1]] to half
372
369
; CHECK-NEXT: ret half [[R]]
373
370
;
374
371
%xx = and i8 %x_in , 6
@@ -386,9 +383,8 @@ define half @test_ui_si_i8_mul_fail_maybe_zero(i8 noundef %x_in, i8 noundef %y_i
386
383
; CHECK-NEXT: [[XX:%.*]] = and i8 [[X_IN:%.*]], 7
387
384
; CHECK-NEXT: [[X:%.*]] = add nuw nsw i8 [[XX]], 1
388
385
; 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]]
386
+ ; CHECK-NEXT: [[TMP1:%.*]] = mul nuw nsw i8 [[X]], [[Y]]
387
+ ; CHECK-NEXT: [[R:%.*]] = uitofp i8 [[TMP1]] to half
392
388
; CHECK-NEXT: ret half [[R]]
393
389
;
394
390
%xx = and i8 %x_in , 7
@@ -694,7 +690,7 @@ define half @test_ui_si_i16_mul(i16 noundef %x_in, i16 noundef %y_in) {
694
690
; CHECK-NEXT: [[YY:%.*]] = and i16 [[Y_IN:%.*]], 126
695
691
; CHECK-NEXT: [[Y:%.*]] = or disjoint i16 [[YY]], 1
696
692
; CHECK-NEXT: [[TMP1:%.*]] = mul nuw nsw i16 [[X]], [[Y]]
697
- ; CHECK-NEXT: [[R:%.*]] = sitofp i16 [[TMP1]] to half
693
+ ; CHECK-NEXT: [[R:%.*]] = uitofp i16 [[TMP1]] to half
698
694
; CHECK-NEXT: ret half [[R]]
699
695
;
700
696
%xx = and i16 %x_in , 126
@@ -807,9 +803,8 @@ define half @test_ui_ui_i12_sub_fail_overflow(i12 noundef %x_in, i12 noundef %y_
807
803
; CHECK-LABEL: @test_ui_ui_i12_sub_fail_overflow(
808
804
; CHECK-NEXT: [[X:%.*]] = and i12 [[X_IN:%.*]], 1023
809
805
; CHECK-NEXT: [[Y:%.*]] = and i12 [[Y_IN:%.*]], 2047
810
- ; CHECK-NEXT: [[XF:%.*]] = uitofp i12 [[X]] to half
811
- ; CHECK-NEXT: [[YF:%.*]] = uitofp i12 [[Y]] to half
812
- ; CHECK-NEXT: [[R:%.*]] = fsub half [[XF]], [[YF]]
806
+ ; CHECK-NEXT: [[TMP1:%.*]] = sub nsw i12 [[X]], [[Y]]
807
+ ; CHECK-NEXT: [[R:%.*]] = sitofp i12 [[TMP1]] to half
813
808
; CHECK-NEXT: ret half [[R]]
814
809
;
815
810
%x = and i12 %x_in , 1023
@@ -984,7 +979,7 @@ define half @test_ui_si_i12_mul_nsw(i12 noundef %x_in, i12 noundef %y_in) {
984
979
; CHECK-NEXT: [[YY:%.*]] = and i12 [[Y_IN:%.*]], 30
985
980
; CHECK-NEXT: [[Y:%.*]] = or disjoint i12 [[YY]], 1
986
981
; CHECK-NEXT: [[TMP1:%.*]] = mul nuw nsw i12 [[X]], [[Y]]
987
- ; CHECK-NEXT: [[R:%.*]] = sitofp i12 [[TMP1]] to half
982
+ ; CHECK-NEXT: [[R:%.*]] = uitofp i12 [[TMP1]] to half
988
983
; CHECK-NEXT: ret half [[R]]
989
984
;
990
985
%xx = and i12 %x_in , 31
@@ -1000,8 +995,8 @@ define half @test_ui_si_i12_mul_nsw(i12 noundef %x_in, i12 noundef %y_in) {
1000
995
define float @test_ui_add_with_signed_constant (i32 %shr.i ) {
1001
996
; CHECK-LABEL: @test_ui_add_with_signed_constant(
1002
997
; CHECK-NEXT: [[AND_I:%.*]] = and i32 [[SHR_I:%.*]], 32767
1003
- ; CHECK-NEXT: [[SUB :%.*]] = uitofp i32 [[AND_I]] to float
1004
- ; CHECK-NEXT: [[ADD:%.*]] = fadd float [[SUB]], -1.638300e+04
998
+ ; CHECK-NEXT: [[TMP1 :%.*]] = add nsw i32 [[AND_I]], -16383
999
+ ; CHECK-NEXT: [[ADD:%.*]] = sitofp i32 [[TMP1]] to float
1005
1000
; CHECK-NEXT: ret float [[ADD]]
1006
1001
;
1007
1002
%and.i = and i32 %shr.i , 32767
0 commit comments