@@ -39,12 +39,9 @@ define <2 x i32> @stest_f64i32(<2 x double> %x) {
39
39
; CHECK-V: # %bb.0: # %entry
40
40
; CHECK-V-NEXT: vsetivli zero, 2, e64, m1, ta, ma
41
41
; CHECK-V-NEXT: vfcvt.rtz.x.f.v v8, v8
42
- ; CHECK-V-NEXT: lui a0, 524288
43
- ; CHECK-V-NEXT: addiw a1, a0, -1
44
- ; CHECK-V-NEXT: vmin.vx v8, v8, a1
45
- ; CHECK-V-NEXT: vmax.vx v8, v8, a0
46
42
; CHECK-V-NEXT: vsetvli zero, zero, e32, mf2, ta, ma
47
- ; CHECK-V-NEXT: vnsrl.wi v8, v8, 0
43
+ ; CHECK-V-NEXT: csrwi vxrm, 0
44
+ ; CHECK-V-NEXT: vnclip.wi v8, v8, 0
48
45
; CHECK-V-NEXT: ret
49
46
entry:
50
47
%conv = fptosi <2 x double > %x to <2 x i64 >
@@ -198,13 +195,8 @@ define <4 x i32> @stest_f32i32(<4 x float> %x) {
198
195
; CHECK-V: # %bb.0: # %entry
199
196
; CHECK-V-NEXT: vsetivli zero, 4, e32, m1, ta, ma
200
197
; CHECK-V-NEXT: vfwcvt.rtz.x.f.v v10, v8
201
- ; CHECK-V-NEXT: lui a0, 524288
202
- ; CHECK-V-NEXT: addiw a1, a0, -1
203
- ; CHECK-V-NEXT: vsetvli zero, zero, e64, m2, ta, ma
204
- ; CHECK-V-NEXT: vmin.vx v8, v10, a1
205
- ; CHECK-V-NEXT: vmax.vx v10, v8, a0
206
- ; CHECK-V-NEXT: vsetvli zero, zero, e32, m1, ta, ma
207
- ; CHECK-V-NEXT: vnsrl.wi v8, v10, 0
198
+ ; CHECK-V-NEXT: csrwi vxrm, 0
199
+ ; CHECK-V-NEXT: vnclip.wi v8, v10, 0
208
200
; CHECK-V-NEXT: ret
209
201
entry:
210
202
%conv = fptosi <4 x float > %x to <4 x i64 >
@@ -510,12 +502,9 @@ define <4 x i32> @stest_f16i32(<4 x half> %x) {
510
502
; CHECK-V-NEXT: addi a0, a0, 16
511
503
; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload
512
504
; CHECK-V-NEXT: vslideup.vi v10, v8, 3
513
- ; CHECK-V-NEXT: lui a0, 524288
514
- ; CHECK-V-NEXT: addiw a1, a0, -1
515
- ; CHECK-V-NEXT: vmin.vx v8, v10, a1
516
- ; CHECK-V-NEXT: vmax.vx v10, v8, a0
517
505
; CHECK-V-NEXT: vsetvli zero, zero, e32, m1, ta, ma
518
- ; CHECK-V-NEXT: vnsrl.wi v8, v10, 0
506
+ ; CHECK-V-NEXT: csrwi vxrm, 0
507
+ ; CHECK-V-NEXT: vnclip.wi v8, v10, 0
519
508
; CHECK-V-NEXT: csrr a0, vlenb
520
509
; CHECK-V-NEXT: slli a0, a0, 2
521
510
; CHECK-V-NEXT: add sp, sp, a0
@@ -925,13 +914,9 @@ define <2 x i16> @stest_f64i16(<2 x double> %x) {
925
914
; CHECK-V: # %bb.0: # %entry
926
915
; CHECK-V-NEXT: vsetivli zero, 2, e32, mf2, ta, ma
927
916
; CHECK-V-NEXT: vfncvt.rtz.x.f.w v9, v8
928
- ; CHECK-V-NEXT: lui a0, 8
929
- ; CHECK-V-NEXT: addi a0, a0, -1
930
- ; CHECK-V-NEXT: vmin.vx v8, v9, a0
931
- ; CHECK-V-NEXT: lui a0, 1048568
932
- ; CHECK-V-NEXT: vmax.vx v8, v8, a0
933
917
; CHECK-V-NEXT: vsetvli zero, zero, e16, mf4, ta, ma
934
- ; CHECK-V-NEXT: vnsrl.wi v8, v8, 0
918
+ ; CHECK-V-NEXT: csrwi vxrm, 0
919
+ ; CHECK-V-NEXT: vnclip.wi v8, v9, 0
935
920
; CHECK-V-NEXT: ret
936
921
entry:
937
922
%conv = fptosi <2 x double > %x to <2 x i32 >
@@ -1087,13 +1072,9 @@ define <4 x i16> @stest_f32i16(<4 x float> %x) {
1087
1072
; CHECK-V: # %bb.0: # %entry
1088
1073
; CHECK-V-NEXT: vsetivli zero, 4, e32, m1, ta, ma
1089
1074
; CHECK-V-NEXT: vfcvt.rtz.x.f.v v8, v8
1090
- ; CHECK-V-NEXT: lui a0, 8
1091
- ; CHECK-V-NEXT: addi a0, a0, -1
1092
- ; CHECK-V-NEXT: vmin.vx v8, v8, a0
1093
- ; CHECK-V-NEXT: lui a0, 1048568
1094
- ; CHECK-V-NEXT: vmax.vx v8, v8, a0
1095
1075
; CHECK-V-NEXT: vsetvli zero, zero, e16, mf2, ta, ma
1096
- ; CHECK-V-NEXT: vnsrl.wi v8, v8, 0
1076
+ ; CHECK-V-NEXT: csrwi vxrm, 0
1077
+ ; CHECK-V-NEXT: vnclip.wi v8, v8, 0
1097
1078
; CHECK-V-NEXT: ret
1098
1079
entry:
1099
1080
%conv = fptosi <4 x float > %x to <4 x i32 >
@@ -1525,13 +1506,9 @@ define <8 x i16> @stest_f16i16(<8 x half> %x) {
1525
1506
; CHECK-V-NEXT: addi a0, sp, 16
1526
1507
; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload
1527
1508
; CHECK-V-NEXT: vslideup.vi v10, v8, 7
1528
- ; CHECK-V-NEXT: lui a0, 8
1529
- ; CHECK-V-NEXT: addi a0, a0, -1
1530
- ; CHECK-V-NEXT: vmin.vx v8, v10, a0
1531
- ; CHECK-V-NEXT: lui a0, 1048568
1532
- ; CHECK-V-NEXT: vmax.vx v10, v8, a0
1533
1509
; CHECK-V-NEXT: vsetvli zero, zero, e16, m1, ta, ma
1534
- ; CHECK-V-NEXT: vnsrl.wi v8, v10, 0
1510
+ ; CHECK-V-NEXT: csrwi vxrm, 0
1511
+ ; CHECK-V-NEXT: vnclip.wi v8, v10, 0
1535
1512
; CHECK-V-NEXT: csrr a0, vlenb
1536
1513
; CHECK-V-NEXT: slli a0, a0, 1
1537
1514
; CHECK-V-NEXT: add sp, sp, a0
@@ -3385,12 +3362,9 @@ define <2 x i32> @stest_f64i32_mm(<2 x double> %x) {
3385
3362
; CHECK-V: # %bb.0: # %entry
3386
3363
; CHECK-V-NEXT: vsetivli zero, 2, e64, m1, ta, ma
3387
3364
; CHECK-V-NEXT: vfcvt.rtz.x.f.v v8, v8
3388
- ; CHECK-V-NEXT: lui a0, 524288
3389
- ; CHECK-V-NEXT: addiw a1, a0, -1
3390
- ; CHECK-V-NEXT: vmin.vx v8, v8, a1
3391
- ; CHECK-V-NEXT: vmax.vx v8, v8, a0
3392
3365
; CHECK-V-NEXT: vsetvli zero, zero, e32, mf2, ta, ma
3393
- ; CHECK-V-NEXT: vnsrl.wi v8, v8, 0
3366
+ ; CHECK-V-NEXT: csrwi vxrm, 0
3367
+ ; CHECK-V-NEXT: vnclip.wi v8, v8, 0
3394
3368
; CHECK-V-NEXT: ret
3395
3369
entry:
3396
3370
%conv = fptosi <2 x double > %x to <2 x i64 >
@@ -3539,13 +3513,8 @@ define <4 x i32> @stest_f32i32_mm(<4 x float> %x) {
3539
3513
; CHECK-V: # %bb.0: # %entry
3540
3514
; CHECK-V-NEXT: vsetivli zero, 4, e32, m1, ta, ma
3541
3515
; CHECK-V-NEXT: vfwcvt.rtz.x.f.v v10, v8
3542
- ; CHECK-V-NEXT: lui a0, 524288
3543
- ; CHECK-V-NEXT: addiw a1, a0, -1
3544
- ; CHECK-V-NEXT: vsetvli zero, zero, e64, m2, ta, ma
3545
- ; CHECK-V-NEXT: vmin.vx v8, v10, a1
3546
- ; CHECK-V-NEXT: vmax.vx v10, v8, a0
3547
- ; CHECK-V-NEXT: vsetvli zero, zero, e32, m1, ta, ma
3548
- ; CHECK-V-NEXT: vnsrl.wi v8, v10, 0
3516
+ ; CHECK-V-NEXT: csrwi vxrm, 0
3517
+ ; CHECK-V-NEXT: vnclip.wi v8, v10, 0
3549
3518
; CHECK-V-NEXT: ret
3550
3519
entry:
3551
3520
%conv = fptosi <4 x float > %x to <4 x i64 >
@@ -3846,12 +3815,9 @@ define <4 x i32> @stest_f16i32_mm(<4 x half> %x) {
3846
3815
; CHECK-V-NEXT: addi a0, a0, 16
3847
3816
; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload
3848
3817
; CHECK-V-NEXT: vslideup.vi v10, v8, 3
3849
- ; CHECK-V-NEXT: lui a0, 524288
3850
- ; CHECK-V-NEXT: addiw a1, a0, -1
3851
- ; CHECK-V-NEXT: vmin.vx v8, v10, a1
3852
- ; CHECK-V-NEXT: vmax.vx v10, v8, a0
3853
3818
; CHECK-V-NEXT: vsetvli zero, zero, e32, m1, ta, ma
3854
- ; CHECK-V-NEXT: vnsrl.wi v8, v10, 0
3819
+ ; CHECK-V-NEXT: csrwi vxrm, 0
3820
+ ; CHECK-V-NEXT: vnclip.wi v8, v10, 0
3855
3821
; CHECK-V-NEXT: csrr a0, vlenb
3856
3822
; CHECK-V-NEXT: slli a0, a0, 2
3857
3823
; CHECK-V-NEXT: add sp, sp, a0
@@ -4256,13 +4222,9 @@ define <2 x i16> @stest_f64i16_mm(<2 x double> %x) {
4256
4222
; CHECK-V: # %bb.0: # %entry
4257
4223
; CHECK-V-NEXT: vsetivli zero, 2, e32, mf2, ta, ma
4258
4224
; CHECK-V-NEXT: vfncvt.rtz.x.f.w v9, v8
4259
- ; CHECK-V-NEXT: lui a0, 8
4260
- ; CHECK-V-NEXT: addi a0, a0, -1
4261
- ; CHECK-V-NEXT: vmin.vx v8, v9, a0
4262
- ; CHECK-V-NEXT: lui a0, 1048568
4263
- ; CHECK-V-NEXT: vmax.vx v8, v8, a0
4264
4225
; CHECK-V-NEXT: vsetvli zero, zero, e16, mf4, ta, ma
4265
- ; CHECK-V-NEXT: vnsrl.wi v8, v8, 0
4226
+ ; CHECK-V-NEXT: csrwi vxrm, 0
4227
+ ; CHECK-V-NEXT: vnclip.wi v8, v9, 0
4266
4228
; CHECK-V-NEXT: ret
4267
4229
entry:
4268
4230
%conv = fptosi <2 x double > %x to <2 x i32 >
@@ -4413,13 +4375,9 @@ define <4 x i16> @stest_f32i16_mm(<4 x float> %x) {
4413
4375
; CHECK-V: # %bb.0: # %entry
4414
4376
; CHECK-V-NEXT: vsetivli zero, 4, e32, m1, ta, ma
4415
4377
; CHECK-V-NEXT: vfcvt.rtz.x.f.v v8, v8
4416
- ; CHECK-V-NEXT: lui a0, 8
4417
- ; CHECK-V-NEXT: addi a0, a0, -1
4418
- ; CHECK-V-NEXT: vmin.vx v8, v8, a0
4419
- ; CHECK-V-NEXT: lui a0, 1048568
4420
- ; CHECK-V-NEXT: vmax.vx v8, v8, a0
4421
4378
; CHECK-V-NEXT: vsetvli zero, zero, e16, mf2, ta, ma
4422
- ; CHECK-V-NEXT: vnsrl.wi v8, v8, 0
4379
+ ; CHECK-V-NEXT: csrwi vxrm, 0
4380
+ ; CHECK-V-NEXT: vnclip.wi v8, v8, 0
4423
4381
; CHECK-V-NEXT: ret
4424
4382
entry:
4425
4383
%conv = fptosi <4 x float > %x to <4 x i32 >
@@ -4846,13 +4804,9 @@ define <8 x i16> @stest_f16i16_mm(<8 x half> %x) {
4846
4804
; CHECK-V-NEXT: addi a0, sp, 16
4847
4805
; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload
4848
4806
; CHECK-V-NEXT: vslideup.vi v10, v8, 7
4849
- ; CHECK-V-NEXT: lui a0, 8
4850
- ; CHECK-V-NEXT: addi a0, a0, -1
4851
- ; CHECK-V-NEXT: vmin.vx v8, v10, a0
4852
- ; CHECK-V-NEXT: lui a0, 1048568
4853
- ; CHECK-V-NEXT: vmax.vx v10, v8, a0
4854
4807
; CHECK-V-NEXT: vsetvli zero, zero, e16, m1, ta, ma
4855
- ; CHECK-V-NEXT: vnsrl.wi v8, v10, 0
4808
+ ; CHECK-V-NEXT: csrwi vxrm, 0
4809
+ ; CHECK-V-NEXT: vnclip.wi v8, v10, 0
4856
4810
; CHECK-V-NEXT: csrr a0, vlenb
4857
4811
; CHECK-V-NEXT: slli a0, a0, 1
4858
4812
; CHECK-V-NEXT: add sp, sp, a0
0 commit comments