Skip to content

Commit d6d3e25

Browse files
committed
[RISCV][ISel] update fpclamptosat_vec.ll
1 parent a2deab0 commit d6d3e25

File tree

1 file changed

+24
-70
lines changed

1 file changed

+24
-70
lines changed

llvm/test/CodeGen/RISCV/rvv/fpclamptosat_vec.ll

Lines changed: 24 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,9 @@ define <2 x i32> @stest_f64i32(<2 x double> %x) {
3939
; CHECK-V: # %bb.0: # %entry
4040
; CHECK-V-NEXT: vsetivli zero, 2, e64, m1, ta, ma
4141
; 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
4642
; 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
4845
; CHECK-V-NEXT: ret
4946
entry:
5047
%conv = fptosi <2 x double> %x to <2 x i64>
@@ -198,13 +195,8 @@ define <4 x i32> @stest_f32i32(<4 x float> %x) {
198195
; CHECK-V: # %bb.0: # %entry
199196
; CHECK-V-NEXT: vsetivli zero, 4, e32, m1, ta, ma
200197
; 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
208200
; CHECK-V-NEXT: ret
209201
entry:
210202
%conv = fptosi <4 x float> %x to <4 x i64>
@@ -510,12 +502,9 @@ define <4 x i32> @stest_f16i32(<4 x half> %x) {
510502
; CHECK-V-NEXT: addi a0, a0, 16
511503
; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload
512504
; 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
517505
; 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
519508
; CHECK-V-NEXT: csrr a0, vlenb
520509
; CHECK-V-NEXT: slli a0, a0, 2
521510
; CHECK-V-NEXT: add sp, sp, a0
@@ -925,13 +914,9 @@ define <2 x i16> @stest_f64i16(<2 x double> %x) {
925914
; CHECK-V: # %bb.0: # %entry
926915
; CHECK-V-NEXT: vsetivli zero, 2, e32, mf2, ta, ma
927916
; 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
933917
; 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
935920
; CHECK-V-NEXT: ret
936921
entry:
937922
%conv = fptosi <2 x double> %x to <2 x i32>
@@ -1087,13 +1072,9 @@ define <4 x i16> @stest_f32i16(<4 x float> %x) {
10871072
; CHECK-V: # %bb.0: # %entry
10881073
; CHECK-V-NEXT: vsetivli zero, 4, e32, m1, ta, ma
10891074
; 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
10951075
; 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
10971078
; CHECK-V-NEXT: ret
10981079
entry:
10991080
%conv = fptosi <4 x float> %x to <4 x i32>
@@ -1525,13 +1506,9 @@ define <8 x i16> @stest_f16i16(<8 x half> %x) {
15251506
; CHECK-V-NEXT: addi a0, sp, 16
15261507
; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload
15271508
; 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
15331509
; 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
15351512
; CHECK-V-NEXT: csrr a0, vlenb
15361513
; CHECK-V-NEXT: slli a0, a0, 1
15371514
; CHECK-V-NEXT: add sp, sp, a0
@@ -3385,12 +3362,9 @@ define <2 x i32> @stest_f64i32_mm(<2 x double> %x) {
33853362
; CHECK-V: # %bb.0: # %entry
33863363
; CHECK-V-NEXT: vsetivli zero, 2, e64, m1, ta, ma
33873364
; 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
33923365
; 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
33943368
; CHECK-V-NEXT: ret
33953369
entry:
33963370
%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) {
35393513
; CHECK-V: # %bb.0: # %entry
35403514
; CHECK-V-NEXT: vsetivli zero, 4, e32, m1, ta, ma
35413515
; 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
35493518
; CHECK-V-NEXT: ret
35503519
entry:
35513520
%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) {
38463815
; CHECK-V-NEXT: addi a0, a0, 16
38473816
; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload
38483817
; 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
38533818
; 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
38553821
; CHECK-V-NEXT: csrr a0, vlenb
38563822
; CHECK-V-NEXT: slli a0, a0, 2
38573823
; CHECK-V-NEXT: add sp, sp, a0
@@ -4256,13 +4222,9 @@ define <2 x i16> @stest_f64i16_mm(<2 x double> %x) {
42564222
; CHECK-V: # %bb.0: # %entry
42574223
; CHECK-V-NEXT: vsetivli zero, 2, e32, mf2, ta, ma
42584224
; 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
42644225
; 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
42664228
; CHECK-V-NEXT: ret
42674229
entry:
42684230
%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) {
44134375
; CHECK-V: # %bb.0: # %entry
44144376
; CHECK-V-NEXT: vsetivli zero, 4, e32, m1, ta, ma
44154377
; 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
44214378
; 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
44234381
; CHECK-V-NEXT: ret
44244382
entry:
44254383
%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) {
48464804
; CHECK-V-NEXT: addi a0, sp, 16
48474805
; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload
48484806
; 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
48544807
; 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
48564810
; CHECK-V-NEXT: csrr a0, vlenb
48574811
; CHECK-V-NEXT: slli a0, a0, 1
48584812
; CHECK-V-NEXT: add sp, sp, a0

0 commit comments

Comments
 (0)