@@ -5712,9 +5712,8 @@ define <8 x i8> @vsub_if_uge_v8i8(<8 x i8> %va, <8 x i8> %vb) {
5712
5712
; CHECK-LABEL: vsub_if_uge_v8i8:
5713
5713
; CHECK: # %bb.0:
5714
5714
; CHECK-NEXT: vsetivli zero, 8, e8, mf2, ta, ma
5715
- ; CHECK-NEXT: vmsltu.vv v0, v8, v9
5716
5715
; CHECK-NEXT: vsub.vv v9, v8, v9
5717
- ; CHECK-NEXT: vmerge.vvm v8, v9, v8, v0
5716
+ ; CHECK-NEXT: vminu.vv v8, v8, v9
5718
5717
; CHECK-NEXT: ret
5719
5718
%cmp = icmp ult <8 x i8 > %va , %vb
5720
5719
%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) {
5725
5724
define <8 x i8 > @vsub_if_uge_swapped_v8i8 (<8 x i8 > %va , <8 x i8 > %vb ) {
5726
5725
; CHECK-LABEL: vsub_if_uge_swapped_v8i8:
5727
5726
; 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
5731
5730
; CHECK-NEXT: ret
5732
5731
%cmp = icmp uge <8 x i8 > %va , %vb
5733
5732
%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) {
5739
5738
; CHECK-LABEL: vsub_if_uge_v8i16:
5740
5739
; CHECK: # %bb.0:
5741
5740
; CHECK-NEXT: vsetivli zero, 8, e16, m1, ta, ma
5742
- ; CHECK-NEXT: vmsltu.vv v0, v8, v9
5743
5741
; CHECK-NEXT: vsub.vv v9, v8, v9
5744
- ; CHECK-NEXT: vmerge.vvm v8, v9, v8, v0
5742
+ ; CHECK-NEXT: vminu.vv v8, v8, v9
5745
5743
; CHECK-NEXT: ret
5746
5744
%cmp = icmp ult <8 x i16 > %va , %vb
5747
5745
%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) {
5752
5750
define <8 x i16 > @vsub_if_uge_swapped_v8i16 (<8 x i16 > %va , <8 x i16 > %vb ) {
5753
5751
; CHECK-LABEL: vsub_if_uge_swapped_v8i16:
5754
5752
; 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
5758
5756
; CHECK-NEXT: ret
5759
5757
%cmp = icmp uge <8 x i16 > %va , %vb
5760
5758
%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) {
5766
5764
; CHECK-LABEL: vsub_if_uge_v4i32:
5767
5765
; CHECK: # %bb.0:
5768
5766
; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma
5769
- ; CHECK-NEXT: vmsltu.vv v0, v8, v9
5770
5767
; CHECK-NEXT: vsub.vv v9, v8, v9
5771
- ; CHECK-NEXT: vmerge.vvm v8, v9, v8, v0
5768
+ ; CHECK-NEXT: vminu.vv v8, v8, v9
5772
5769
; CHECK-NEXT: ret
5773
5770
%cmp = icmp ult <4 x i32 > %va , %vb
5774
5771
%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) {
5779
5776
define <4 x i32 > @vsub_if_uge_swapped_v4i32 (<4 x i32 > %va , <4 x i32 > %vb ) {
5780
5777
; CHECK-LABEL: vsub_if_uge_swapped_v4i32:
5781
5778
; 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
5785
5782
; CHECK-NEXT: ret
5786
5783
%cmp = icmp uge <4 x i32 > %va , %vb
5787
5784
%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) {
5793
5790
; CHECK-LABEL: vsub_if_uge_v2i64:
5794
5791
; CHECK: # %bb.0:
5795
5792
; CHECK-NEXT: vsetivli zero, 2, e64, m1, ta, ma
5796
- ; CHECK-NEXT: vmsltu.vv v0, v8, v9
5797
5793
; CHECK-NEXT: vsub.vv v9, v8, v9
5798
- ; CHECK-NEXT: vmerge.vvm v8, v9, v8, v0
5794
+ ; CHECK-NEXT: vminu.vv v8, v8, v9
5799
5795
; CHECK-NEXT: ret
5800
5796
%cmp = icmp ult <2 x i64 > %va , %vb
5801
5797
%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) {
5806
5802
define <2 x i64 > @vsub_if_uge_swapped_v2i64 (<2 x i64 > %va , <2 x i64 > %vb ) {
5807
5803
; CHECK-LABEL: vsub_if_uge_swapped_v2i64:
5808
5804
; 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
5812
5808
; CHECK-NEXT: ret
5813
5809
%cmp = icmp uge <2 x i64 > %va , %vb
5814
5810
%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) {
5819
5815
define <8 x i8 > @sub_if_uge_C_v8i8 (<8 x i8 > %x ) {
5820
5816
; CHECK-LABEL: sub_if_uge_C_v8i8:
5821
5817
; 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
5825
5821
; CHECK-NEXT: ret
5826
5822
%cmp = icmp ugt <8 x i8 > %x , splat (i8 12 )
5827
5823
%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) {
5832
5828
define <8 x i16 > @sub_if_uge_C_v8i16 (<8 x i16 > %x ) {
5833
5829
; CHECK-LABEL: sub_if_uge_C_v8i16:
5834
5830
; 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
5838
5831
; 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
5840
5835
; CHECK-NEXT: ret
5841
5836
%cmp = icmp ugt <8 x i16 > %x , splat (i16 2000 )
5842
5837
%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) {
5847
5842
define <4 x i32 > @sub_if_uge_C_v4i32 (<4 x i32 > %x ) {
5848
5843
; CHECK-LABEL: sub_if_uge_C_v4i32:
5849
5844
; 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
5854
5845
; CHECK-NEXT: lui a0, 1048560
5855
5846
; 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
5857
5850
; CHECK-NEXT: ret
5858
5851
%cmp = icmp ugt <4 x i32 > %x , splat (i32 65520 )
5859
5852
%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) {
5864
5857
define <4 x i32 > @sub_if_uge_C_swapped_v4i32 (<4 x i32 > %x ) {
5865
5858
; CHECK-LABEL: sub_if_uge_C_swapped_v4i32:
5866
5859
; 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
5871
5860
; CHECK-NEXT: lui a0, 1048560
5872
5861
; CHECK-NEXT: addi a0, a0, 15
5862
+ ; CHECK-NEXT: vsetivli zero, 4, e32, m1, ta, ma
5873
5863
; CHECK-NEXT: vadd.vx v9, v8, a0
5874
- ; CHECK-NEXT: vmerge.vvm v8, v9, v8, v0
5864
+ ; CHECK-NEXT: vminu.vv v8, v8, v9
5875
5865
; CHECK-NEXT: ret
5876
5866
%cmp = icmp ult <4 x i32 > %x , splat (i32 65521 )
5877
5867
%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 {
5883
5873
; RV32-LABEL: sub_if_uge_C_v2i64:
5884
5874
; RV32: # %bb.0:
5885
5875
; 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)
5892
5876
; RV32-NEXT: li a0, -2
5893
- ; RV32-NEXT: vsetivli zero, 2, e64, m1, ta, mu
5894
- ; RV32-NEXT: vlse64.v v9, (a2), zero
5895
5877
; RV32-NEXT: lui a1, 876449
5896
5878
; RV32-NEXT: addi a1, a1, -513
5897
5879
; RV32-NEXT: sw a1, 8(sp)
5898
5880
; RV32-NEXT: sw a0, 12(sp)
5899
5881
; 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
5903
5886
; RV32-NEXT: addi sp, sp, 16
5904
5887
; RV32-NEXT: ret
5905
5888
;
5906
5889
; RV64-LABEL: sub_if_uge_C_v2i64:
5907
5890
; 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
5913
5891
; RV64-NEXT: lui a0, 1048278
5914
5892
; RV64-NEXT: addi a0, a0, -95
5915
5893
; RV64-NEXT: slli a0, a0, 12
5916
5894
; 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
5918
5898
; RV64-NEXT: ret
5919
5899
%cmp = icmp ugt <2 x i64 > %x , splat (i64 5000000000 )
5920
5900
%sub = add <2 x i64 > %x , splat (i64 -5000000001 )
0 commit comments