@@ -5712,9 +5712,8 @@ define <8 x i8> @vsub_if_uge_v8i8(<8 x i8> %va, <8 x i8> %vb) {
57125712; CHECK-LABEL: vsub_if_uge_v8i8:
57135713; CHECK: # %bb.0:
57145714; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, ma
5715- ; CHECK-NEXT: vmsltu.vv v0, v8, v9
57165715; CHECK-NEXT: vsub.vv v9, v8, v9
5717- ; CHECK-NEXT: vmerge.vvm v8, v9, v8, v0
5716+ ; CHECK-NEXT: vminu.vv v8, v8, v9
57185717; CHECK-NEXT: ret
57195718 %cmp = icmp ult <8 x i8 > %va , %vb
57205719 %select = select <8 x i1 > %cmp , <8 x i8 > zeroinitializer , <8 x i8 > %vb
@@ -5725,9 +5724,9 @@ define <8 x i8> @vsub_if_uge_v8i8(<8 x i8> %va, <8 x i8> %vb) {
57255724define <8 x i8 > @vsub_if_uge_swapped_v8i8 (<8 x i8 > %va , <8 x i8 > %vb ) {
57265725; CHECK-LABEL: vsub_if_uge_swapped_v8i8:
57275726; CHECK: # %bb.0:
5728- ; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, mu
5729- ; CHECK-NEXT: vmsleu .vv v0, v9, v8
5730- ; CHECK-NEXT: vsub .vv v8, v8, v9, v0.t
5727+ ; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, ma
5728+ ; CHECK-NEXT: vsub .vv v9, v8, v9
5729+ ; CHECK-NEXT: vminu .vv v8, v8, v9
57315730; CHECK-NEXT: ret
57325731 %cmp = icmp uge <8 x i8 > %va , %vb
57335732 %select = select <8 x i1 > %cmp , <8 x i8 > %vb , <8 x i8 > zeroinitializer
@@ -5739,9 +5738,8 @@ define <8 x i16> @vsub_if_uge_v8i16(<8 x i16> %va, <8 x i16> %vb) {
57395738; CHECK-LABEL: vsub_if_uge_v8i16:
57405739; CHECK: # %bb.0:
57415740; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma
5742- ; CHECK-NEXT: vmsltu.vv v0, v8, v9
57435741; CHECK-NEXT: vsub.vv v9, v8, v9
5744- ; CHECK-NEXT: vmerge.vvm v8, v9, v8, v0
5742+ ; CHECK-NEXT: vminu.vv v8, v8, v9
57455743; CHECK-NEXT: ret
57465744 %cmp = icmp ult <8 x i16 > %va , %vb
57475745 %select = select <8 x i1 > %cmp , <8 x i16 > zeroinitializer , <8 x i16 > %vb
@@ -5752,9 +5750,9 @@ define <8 x i16> @vsub_if_uge_v8i16(<8 x i16> %va, <8 x i16> %vb) {
57525750define <8 x i16 > @vsub_if_uge_swapped_v8i16 (<8 x i16 > %va , <8 x i16 > %vb ) {
57535751; CHECK-LABEL: vsub_if_uge_swapped_v8i16:
57545752; CHECK: # %bb.0:
5755- ; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, mu
5756- ; CHECK-NEXT: vmsleu .vv v0, v9, v8
5757- ; CHECK-NEXT: vsub .vv v8, v8, v9, v0.t
5753+ ; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma
5754+ ; CHECK-NEXT: vsub .vv v9, v8, v9
5755+ ; CHECK-NEXT: vminu .vv v8, v8, v9
57585756; CHECK-NEXT: ret
57595757 %cmp = icmp uge <8 x i16 > %va , %vb
57605758 %select = select <8 x i1 > %cmp , <8 x i16 > %vb , <8 x i16 > zeroinitializer
@@ -5766,9 +5764,8 @@ define <4 x i32> @vsub_if_uge_v4i32(<4 x i32> %va, <4 x i32> %vb) {
57665764; CHECK-LABEL: vsub_if_uge_v4i32:
57675765; CHECK: # %bb.0:
57685766; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma
5769- ; CHECK-NEXT: vmsltu.vv v0, v8, v9
57705767; CHECK-NEXT: vsub.vv v9, v8, v9
5771- ; CHECK-NEXT: vmerge.vvm v8, v9, v8, v0
5768+ ; CHECK-NEXT: vminu.vv v8, v8, v9
57725769; CHECK-NEXT: ret
57735770 %cmp = icmp ult <4 x i32 > %va , %vb
57745771 %select = select <4 x i1 > %cmp , <4 x i32 > zeroinitializer , <4 x i32 > %vb
@@ -5779,9 +5776,9 @@ define <4 x i32> @vsub_if_uge_v4i32(<4 x i32> %va, <4 x i32> %vb) {
57795776define <4 x i32 > @vsub_if_uge_swapped_v4i32 (<4 x i32 > %va , <4 x i32 > %vb ) {
57805777; CHECK-LABEL: vsub_if_uge_swapped_v4i32:
57815778; CHECK: # %bb.0:
5782- ; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, mu
5783- ; CHECK-NEXT: vmsleu .vv v0, v9, v8
5784- ; CHECK-NEXT: vsub .vv v8, v8, v9, v0.t
5779+ ; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma
5780+ ; CHECK-NEXT: vsub .vv v9, v8, v9
5781+ ; CHECK-NEXT: vminu .vv v8, v8, v9
57855782; CHECK-NEXT: ret
57865783 %cmp = icmp uge <4 x i32 > %va , %vb
57875784 %select = select <4 x i1 > %cmp , <4 x i32 > %vb , <4 x i32 > zeroinitializer
@@ -5793,9 +5790,8 @@ define <2 x i64> @vsub_if_uge_v2i64(<2 x i64> %va, <2 x i64> %vb) {
57935790; CHECK-LABEL: vsub_if_uge_v2i64:
57945791; CHECK: # %bb.0:
57955792; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma
5796- ; CHECK-NEXT: vmsltu.vv v0, v8, v9
57975793; CHECK-NEXT: vsub.vv v9, v8, v9
5798- ; CHECK-NEXT: vmerge.vvm v8, v9, v8, v0
5794+ ; CHECK-NEXT: vminu.vv v8, v8, v9
57995795; CHECK-NEXT: ret
58005796 %cmp = icmp ult <2 x i64 > %va , %vb
58015797 %select = select <2 x i1 > %cmp , <2 x i64 > zeroinitializer , <2 x i64 > %vb
@@ -5806,9 +5802,9 @@ define <2 x i64> @vsub_if_uge_v2i64(<2 x i64> %va, <2 x i64> %vb) {
58065802define <2 x i64 > @vsub_if_uge_swapped_v2i64 (<2 x i64 > %va , <2 x i64 > %vb ) {
58075803; CHECK-LABEL: vsub_if_uge_swapped_v2i64:
58085804; CHECK: # %bb.0:
5809- ; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, mu
5810- ; CHECK-NEXT: vmsleu .vv v0, v9, v8
5811- ; CHECK-NEXT: vsub .vv v8, v8, v9, v0.t
5805+ ; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma
5806+ ; CHECK-NEXT: vsub .vv v9, v8, v9
5807+ ; CHECK-NEXT: vminu .vv v8, v8, v9
58125808; CHECK-NEXT: ret
58135809 %cmp = icmp uge <2 x i64 > %va , %vb
58145810 %select = select <2 x i1 > %cmp , <2 x i64 > %vb , <2 x i64 > zeroinitializer
@@ -5819,9 +5815,9 @@ define <2 x i64> @vsub_if_uge_swapped_v2i64(<2 x i64> %va, <2 x i64> %vb) {
58195815define <8 x i8 > @sub_if_uge_C_v8i8 (<8 x i8 > %x ) {
58205816; CHECK-LABEL: sub_if_uge_C_v8i8:
58215817; CHECK: # %bb.0:
5822- ; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, mu
5823- ; CHECK-NEXT: vmsgtu .vi v0 , v8, 12
5824- ; CHECK-NEXT: vadd.vi v8, v8, -13, v0.t
5818+ ; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, ma
5819+ ; CHECK-NEXT: vadd .vi v9 , v8, -13
5820+ ; CHECK-NEXT: vminu.vv v8, v9, v8
58255821; CHECK-NEXT: ret
58265822 %cmp = icmp ugt <8 x i8 > %x , splat (i8 12 )
58275823 %sub = add <8 x i8 > %x , splat (i8 -13 )
@@ -5832,11 +5828,10 @@ define <8 x i8> @sub_if_uge_C_v8i8(<8 x i8> %x) {
58325828define <8 x i16 > @sub_if_uge_C_v8i16 (<8 x i16 > %x ) {
58335829; CHECK-LABEL: sub_if_uge_C_v8i16:
58345830; CHECK: # %bb.0:
5835- ; CHECK-NEXT: li a0, 2000
5836- ; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, mu
5837- ; CHECK-NEXT: vmsgtu.vx v0, v8, a0
58385831; CHECK-NEXT: li a0, -2001
5839- ; CHECK-NEXT: vadd.vx v8, v8, a0, v0.t
5832+ ; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma
5833+ ; CHECK-NEXT: vadd.vx v9, v8, a0
5834+ ; CHECK-NEXT: vminu.vv v8, v9, v8
58405835; CHECK-NEXT: ret
58415836 %cmp = icmp ugt <8 x i16 > %x , splat (i16 2000 )
58425837 %sub = add <8 x i16 > %x , splat (i16 -2001 )
@@ -5847,13 +5842,11 @@ define <8 x i16> @sub_if_uge_C_v8i16(<8 x i16> %x) {
58475842define <4 x i32 > @sub_if_uge_C_v4i32 (<4 x i32 > %x ) {
58485843; CHECK-LABEL: sub_if_uge_C_v4i32:
58495844; CHECK: # %bb.0:
5850- ; CHECK-NEXT: lui a0, 16
5851- ; CHECK-NEXT: addi a0, a0, -16
5852- ; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, mu
5853- ; CHECK-NEXT: vmsgtu.vx v0, v8, a0
58545845; CHECK-NEXT: lui a0, 1048560
58555846; CHECK-NEXT: addi a0, a0, 15
5856- ; CHECK-NEXT: vadd.vx v8, v8, a0, v0.t
5847+ ; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma
5848+ ; CHECK-NEXT: vadd.vx v9, v8, a0
5849+ ; CHECK-NEXT: vminu.vv v8, v9, v8
58575850; CHECK-NEXT: ret
58585851 %cmp = icmp ugt <4 x i32 > %x , splat (i32 65520 )
58595852 %sub = add <4 x i32 > %x , splat (i32 -65521 )
@@ -5864,14 +5857,11 @@ define <4 x i32> @sub_if_uge_C_v4i32(<4 x i32> %x) {
58645857define <4 x i32 > @sub_if_uge_C_swapped_v4i32 (<4 x i32 > %x ) {
58655858; CHECK-LABEL: sub_if_uge_C_swapped_v4i32:
58665859; CHECK: # %bb.0:
5867- ; CHECK-NEXT: lui a0, 16
5868- ; CHECK-NEXT: addi a0, a0, -15
5869- ; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma
5870- ; CHECK-NEXT: vmsltu.vx v0, v8, a0
58715860; CHECK-NEXT: lui a0, 1048560
58725861; CHECK-NEXT: addi a0, a0, 15
5862+ ; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma
58735863; CHECK-NEXT: vadd.vx v9, v8, a0
5874- ; CHECK-NEXT: vmerge.vvm v8, v9, v8, v0
5864+ ; CHECK-NEXT: vminu.vv v8, v8, v9
58755865; CHECK-NEXT: ret
58765866 %cmp = icmp ult <4 x i32 > %x , splat (i32 65521 )
58775867 %sub = add <4 x i32 > %x , splat (i32 -65521 )
@@ -5883,38 +5873,28 @@ define <2 x i64> @sub_if_uge_C_v2i64(<2 x i64> %x) nounwind {
58835873; RV32-LABEL: sub_if_uge_C_v2i64:
58845874; RV32: # %bb.0:
58855875; RV32-NEXT: addi sp, sp, -16
5886- ; RV32-NEXT: li a0, 1
5887- ; RV32-NEXT: lui a1, 172127
5888- ; RV32-NEXT: mv a2, sp
5889- ; RV32-NEXT: addi a1, a1, 512
5890- ; RV32-NEXT: sw a1, 0(sp)
5891- ; RV32-NEXT: sw a0, 4(sp)
58925876; RV32-NEXT: li a0, -2
5893- ; RV32-NEXT: vsetivli zero, 2, e64, m1, ta, mu
5894- ; RV32-NEXT: vlse64.v v9, (a2), zero
58955877; RV32-NEXT: lui a1, 876449
58965878; RV32-NEXT: addi a1, a1, -513
58975879; RV32-NEXT: sw a1, 8(sp)
58985880; RV32-NEXT: sw a0, 12(sp)
58995881; RV32-NEXT: addi a0, sp, 8
5900- ; RV32-NEXT: vlse64.v v10, (a0), zero
5901- ; RV32-NEXT: vmsltu.vv v0, v9, v8
5902- ; RV32-NEXT: vadd.vv v8, v8, v10, v0.t
5882+ ; RV32-NEXT: vsetivli zero, 2, e64, m1, ta, ma
5883+ ; RV32-NEXT: vlse64.v v9, (a0), zero
5884+ ; RV32-NEXT: vadd.vv v9, v8, v9
5885+ ; RV32-NEXT: vminu.vv v8, v9, v8
59035886; RV32-NEXT: addi sp, sp, 16
59045887; RV32-NEXT: ret
59055888;
59065889; RV64-LABEL: sub_if_uge_C_v2i64:
59075890; RV64: # %bb.0:
5908- ; RV64-NEXT: lui a0, 2384
5909- ; RV64-NEXT: addi a0, a0, 761
5910- ; RV64-NEXT: slli a0, a0, 9
5911- ; RV64-NEXT: vsetivli zero, 2, e64, m1, ta, mu
5912- ; RV64-NEXT: vmsgtu.vx v0, v8, a0
59135891; RV64-NEXT: lui a0, 1048278
59145892; RV64-NEXT: addi a0, a0, -95
59155893; RV64-NEXT: slli a0, a0, 12
59165894; RV64-NEXT: addi a0, a0, -513
5917- ; RV64-NEXT: vadd.vx v8, v8, a0, v0.t
5895+ ; RV64-NEXT: vsetivli zero, 2, e64, m1, ta, ma
5896+ ; RV64-NEXT: vadd.vx v9, v8, a0
5897+ ; RV64-NEXT: vminu.vv v8, v9, v8
59185898; RV64-NEXT: ret
59195899 %cmp = icmp ugt <2 x i64 > %x , splat (i64 5000000000 )
59205900 %sub = add <2 x i64 > %x , splat (i64 -5000000001 )
0 commit comments