@@ -1001,9 +1001,9 @@ define <vscale x 2 x i64> @vsub_if_uge_swapped_nxv2i64(<vscale x 2 x i64> %va, <
10011001define <vscale x 2 x i8 > @sub_if_uge_C_nxv2i8 (<vscale x 2 x i8 > %x ) {
10021002; CHECK-LABEL: sub_if_uge_C_nxv2i8:
10031003; CHECK: # %bb.0:
1004- ; CHECK-NEXT: vsetvli a0, zero, e8, mf4, ta, mu
1005- ; CHECK-NEXT: vmsgtu .vi v0 , v8, 12
1006- ; CHECK-NEXT: vadd.vi v8, v8, -13, v0.t
1004+ ; CHECK-NEXT: vsetvli a0, zero, e8, mf4, ta, ma
1005+ ; CHECK-NEXT: vadd .vi v9 , v8, -13
1006+ ; CHECK-NEXT: vminu.vv v8, v9, v8
10071007; CHECK-NEXT: ret
10081008 %cmp = icmp ugt <vscale x 2 x i8 > %x , splat (i8 12 )
10091009 %sub = add <vscale x 2 x i8 > %x , splat (i8 -13 )
@@ -1014,11 +1014,10 @@ define <vscale x 2 x i8> @sub_if_uge_C_nxv2i8(<vscale x 2 x i8> %x) {
10141014define <vscale x 2 x i16 > @sub_if_uge_C_nxv2i16 (<vscale x 2 x i16 > %x ) {
10151015; CHECK-LABEL: sub_if_uge_C_nxv2i16:
10161016; CHECK: # %bb.0:
1017- ; CHECK-NEXT: li a0, 2000
1018- ; CHECK-NEXT: vsetvli a1, zero, e16, mf2, ta, mu
1019- ; CHECK-NEXT: vmsgtu.vx v0, v8, a0
10201017; CHECK-NEXT: li a0, -2001
1021- ; CHECK-NEXT: vadd.vx v8, v8, a0, v0.t
1018+ ; CHECK-NEXT: vsetvli a1, zero, e16, mf2, ta, ma
1019+ ; CHECK-NEXT: vadd.vx v9, v8, a0
1020+ ; CHECK-NEXT: vminu.vv v8, v9, v8
10221021; CHECK-NEXT: ret
10231022 %cmp = icmp ugt <vscale x 2 x i16 > %x , splat (i16 2000 )
10241023 %sub = add <vscale x 2 x i16 > %x , splat (i16 -2001 )
@@ -1029,13 +1028,11 @@ define <vscale x 2 x i16> @sub_if_uge_C_nxv2i16(<vscale x 2 x i16> %x) {
10291028define <vscale x 2 x i32 > @sub_if_uge_C_nxv2i32 (<vscale x 2 x i32 > %x ) {
10301029; CHECK-LABEL: sub_if_uge_C_nxv2i32:
10311030; CHECK: # %bb.0:
1032- ; CHECK-NEXT: lui a0, 16
1033- ; CHECK-NEXT: addi a0, a0, -16
1034- ; CHECK-NEXT: vsetvli a1, zero, e32, m1, ta, mu
1035- ; CHECK-NEXT: vmsgtu.vx v0, v8, a0
10361031; CHECK-NEXT: lui a0, 1048560
10371032; CHECK-NEXT: addi a0, a0, 15
1038- ; CHECK-NEXT: vadd.vx v8, v8, a0, v0.t
1033+ ; CHECK-NEXT: vsetvli a1, zero, e32, m1, ta, ma
1034+ ; CHECK-NEXT: vadd.vx v9, v8, a0
1035+ ; CHECK-NEXT: vminu.vv v8, v9, v8
10391036; CHECK-NEXT: ret
10401037 %cmp = icmp ugt <vscale x 2 x i32 > %x , splat (i32 65520 )
10411038 %sub = add <vscale x 2 x i32 > %x , splat (i32 -65521 )
@@ -1046,14 +1043,11 @@ define <vscale x 2 x i32> @sub_if_uge_C_nxv2i32(<vscale x 2 x i32> %x) {
10461043define <vscale x 2 x i32 > @sub_if_uge_C_swapped_nxv2i32 (<vscale x 2 x i32 > %x ) {
10471044; CHECK-LABEL: sub_if_uge_C_swapped_nxv2i32:
10481045; CHECK: # %bb.0:
1049- ; CHECK-NEXT: lui a0, 16
1050- ; CHECK-NEXT: addi a0, a0, -15
1051- ; CHECK-NEXT: vsetvli a1, zero, e32, m1, ta, ma
1052- ; CHECK-NEXT: vmsltu.vx v0, v8, a0
10531046; CHECK-NEXT: lui a0, 1048560
10541047; CHECK-NEXT: addi a0, a0, 15
1048+ ; CHECK-NEXT: vsetvli a1, zero, e32, m1, ta, ma
10551049; CHECK-NEXT: vadd.vx v9, v8, a0
1056- ; CHECK-NEXT: vmerge.vvm v8, v9, v8, v0
1050+ ; CHECK-NEXT: vminu.vv v8, v8, v9
10571051; CHECK-NEXT: ret
10581052 %cmp = icmp ult <vscale x 2 x i32 > %x , splat (i32 65521 )
10591053 %sub = add <vscale x 2 x i32 > %x , splat (i32 -65521 )
@@ -1065,38 +1059,28 @@ define <vscale x 2 x i64> @sub_if_uge_C_nxv2i64(<vscale x 2 x i64> %x) nounwind
10651059; RV32-LABEL: sub_if_uge_C_nxv2i64:
10661060; RV32: # %bb.0:
10671061; RV32-NEXT: addi sp, sp, -16
1068- ; RV32-NEXT: li a0, 1
1069- ; RV32-NEXT: lui a1, 172127
1070- ; RV32-NEXT: mv a2, sp
1071- ; RV32-NEXT: addi a1, a1, 512
1072- ; RV32-NEXT: sw a1, 0(sp)
1073- ; RV32-NEXT: sw a0, 4(sp)
10741062; RV32-NEXT: li a0, -2
1075- ; RV32-NEXT: vsetvli a1, zero, e64, m2, ta, mu
1076- ; RV32-NEXT: vlse64.v v10, (a2), zero
10771063; RV32-NEXT: lui a1, 876449
10781064; RV32-NEXT: addi a1, a1, -513
10791065; RV32-NEXT: sw a1, 8(sp)
10801066; RV32-NEXT: sw a0, 12(sp)
10811067; RV32-NEXT: addi a0, sp, 8
1082- ; RV32-NEXT: vlse64.v v12, (a0), zero
1083- ; RV32-NEXT: vmsltu.vv v0, v10, v8
1084- ; RV32-NEXT: vadd.vv v8, v8, v12, v0.t
1068+ ; RV32-NEXT: vsetvli a1, zero, e64, m2, ta, ma
1069+ ; RV32-NEXT: vlse64.v v10, (a0), zero
1070+ ; RV32-NEXT: vadd.vv v10, v8, v10
1071+ ; RV32-NEXT: vminu.vv v8, v10, v8
10851072; RV32-NEXT: addi sp, sp, 16
10861073; RV32-NEXT: ret
10871074;
10881075; RV64-LABEL: sub_if_uge_C_nxv2i64:
10891076; RV64: # %bb.0:
1090- ; RV64-NEXT: lui a0, 2384
1091- ; RV64-NEXT: addi a0, a0, 761
1092- ; RV64-NEXT: slli a0, a0, 9
1093- ; RV64-NEXT: vsetvli a1, zero, e64, m2, ta, mu
1094- ; RV64-NEXT: vmsgtu.vx v0, v8, a0
10951077; RV64-NEXT: lui a0, 1048278
10961078; RV64-NEXT: addi a0, a0, -95
10971079; RV64-NEXT: slli a0, a0, 12
10981080; RV64-NEXT: addi a0, a0, -513
1099- ; RV64-NEXT: vadd.vx v8, v8, a0, v0.t
1081+ ; RV64-NEXT: vsetvli a1, zero, e64, m2, ta, ma
1082+ ; RV64-NEXT: vadd.vx v10, v8, a0
1083+ ; RV64-NEXT: vminu.vv v8, v10, v8
11001084; RV64-NEXT: ret
11011085 %cmp = icmp ugt <vscale x 2 x i64 > %x , splat (i64 5000000000 )
11021086 %sub = add <vscale x 2 x i64 > %x , splat (i64 -5000000001 )
0 commit comments