@@ -2262,12 +2262,12 @@ define i64 @fcvt_l_h_sat(half %a) nounwind {
2262
2262
; RV32IZHINX-NEXT: addi a2, a3, -1
2263
2263
; RV32IZHINX-NEXT: .LBB10_4: # %start
2264
2264
; RV32IZHINX-NEXT: feq.s a3, s0, s0
2265
- ; RV32IZHINX-NEXT: neg a4, a1
2266
- ; RV32IZHINX-NEXT: neg a1, s1
2265
+ ; RV32IZHINX-NEXT: neg a4, s1
2266
+ ; RV32IZHINX-NEXT: neg a5, a1
2267
2267
; RV32IZHINX-NEXT: neg a3, a3
2268
- ; RV32IZHINX-NEXT: and a0, a1 , a0
2268
+ ; RV32IZHINX-NEXT: and a0, a4 , a0
2269
2269
; RV32IZHINX-NEXT: and a1, a3, a2
2270
- ; RV32IZHINX-NEXT: or a0, a4 , a0
2270
+ ; RV32IZHINX-NEXT: or a0, a5 , a0
2271
2271
; RV32IZHINX-NEXT: and a0, a3, a0
2272
2272
; RV32IZHINX-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
2273
2273
; RV32IZHINX-NEXT: lw s0, 8(sp) # 4-byte Folded Reload
@@ -2309,12 +2309,12 @@ define i64 @fcvt_l_h_sat(half %a) nounwind {
2309
2309
; RV32IZDINXZHINX-NEXT: addi a2, a3, -1
2310
2310
; RV32IZDINXZHINX-NEXT: .LBB10_4: # %start
2311
2311
; RV32IZDINXZHINX-NEXT: feq.s a3, s0, s0
2312
- ; RV32IZDINXZHINX-NEXT: neg a4, a1
2313
- ; RV32IZDINXZHINX-NEXT: neg a1, s1
2312
+ ; RV32IZDINXZHINX-NEXT: neg a4, s1
2313
+ ; RV32IZDINXZHINX-NEXT: neg a5, a1
2314
2314
; RV32IZDINXZHINX-NEXT: neg a3, a3
2315
- ; RV32IZDINXZHINX-NEXT: and a0, a1 , a0
2315
+ ; RV32IZDINXZHINX-NEXT: and a0, a4 , a0
2316
2316
; RV32IZDINXZHINX-NEXT: and a1, a3, a2
2317
- ; RV32IZDINXZHINX-NEXT: or a0, a4 , a0
2317
+ ; RV32IZDINXZHINX-NEXT: or a0, a5 , a0
2318
2318
; RV32IZDINXZHINX-NEXT: and a0, a3, a0
2319
2319
; RV32IZDINXZHINX-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
2320
2320
; RV32IZDINXZHINX-NEXT: lw s0, 8(sp) # 4-byte Folded Reload
@@ -2653,12 +2653,12 @@ define i64 @fcvt_l_h_sat(half %a) nounwind {
2653
2653
; CHECK32-IZHINXMIN-NEXT: addi a2, a3, -1
2654
2654
; CHECK32-IZHINXMIN-NEXT: .LBB10_4: # %start
2655
2655
; CHECK32-IZHINXMIN-NEXT: feq.s a3, s0, s0
2656
- ; CHECK32-IZHINXMIN-NEXT: neg a4, a1
2657
- ; CHECK32-IZHINXMIN-NEXT: neg a1, s1
2656
+ ; CHECK32-IZHINXMIN-NEXT: neg a4, s1
2657
+ ; CHECK32-IZHINXMIN-NEXT: neg a5, a1
2658
2658
; CHECK32-IZHINXMIN-NEXT: neg a3, a3
2659
- ; CHECK32-IZHINXMIN-NEXT: and a0, a1 , a0
2659
+ ; CHECK32-IZHINXMIN-NEXT: and a0, a4 , a0
2660
2660
; CHECK32-IZHINXMIN-NEXT: and a1, a3, a2
2661
- ; CHECK32-IZHINXMIN-NEXT: or a0, a4 , a0
2661
+ ; CHECK32-IZHINXMIN-NEXT: or a0, a5 , a0
2662
2662
; CHECK32-IZHINXMIN-NEXT: and a0, a3, a0
2663
2663
; CHECK32-IZHINXMIN-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
2664
2664
; CHECK32-IZHINXMIN-NEXT: lw s0, 8(sp) # 4-byte Folded Reload
@@ -2701,12 +2701,12 @@ define i64 @fcvt_l_h_sat(half %a) nounwind {
2701
2701
; CHECK32-IZDINXZHINXMIN-NEXT: addi a2, a3, -1
2702
2702
; CHECK32-IZDINXZHINXMIN-NEXT: .LBB10_4: # %start
2703
2703
; CHECK32-IZDINXZHINXMIN-NEXT: feq.s a3, s0, s0
2704
- ; CHECK32-IZDINXZHINXMIN-NEXT: neg a4, a1
2705
- ; CHECK32-IZDINXZHINXMIN-NEXT: neg a1, s1
2704
+ ; CHECK32-IZDINXZHINXMIN-NEXT: neg a4, s1
2705
+ ; CHECK32-IZDINXZHINXMIN-NEXT: neg a5, a1
2706
2706
; CHECK32-IZDINXZHINXMIN-NEXT: neg a3, a3
2707
- ; CHECK32-IZDINXZHINXMIN-NEXT: and a0, a1 , a0
2707
+ ; CHECK32-IZDINXZHINXMIN-NEXT: and a0, a4 , a0
2708
2708
; CHECK32-IZDINXZHINXMIN-NEXT: and a1, a3, a2
2709
- ; CHECK32-IZDINXZHINXMIN-NEXT: or a0, a4 , a0
2709
+ ; CHECK32-IZDINXZHINXMIN-NEXT: or a0, a5 , a0
2710
2710
; CHECK32-IZDINXZHINXMIN-NEXT: and a0, a3, a0
2711
2711
; CHECK32-IZDINXZHINXMIN-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
2712
2712
; CHECK32-IZDINXZHINXMIN-NEXT: lw s0, 8(sp) # 4-byte Folded Reload
@@ -2972,18 +2972,19 @@ define i64 @fcvt_lu_h_sat(half %a) nounwind {
2972
2972
; RV32IZHINX-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
2973
2973
; RV32IZHINX-NEXT: sw s0, 8(sp) # 4-byte Folded Spill
2974
2974
; RV32IZHINX-NEXT: sw s1, 4(sp) # 4-byte Folded Spill
2975
- ; RV32IZHINX-NEXT: fcvt.s.h a0, a0
2976
- ; RV32IZHINX-NEXT: lui a1, 391168
2977
- ; RV32IZHINX-NEXT: addi a1, a1, -1
2978
- ; RV32IZHINX-NEXT: fle.s a2, zero, a0
2979
- ; RV32IZHINX-NEXT: flt.s a1, a1, a0
2980
- ; RV32IZHINX-NEXT: neg s0, a1
2981
- ; RV32IZHINX-NEXT: neg s1, a2
2975
+ ; RV32IZHINX-NEXT: fcvt.s.h s0, a0
2976
+ ; RV32IZHINX-NEXT: fle.s a0, zero, s0
2977
+ ; RV32IZHINX-NEXT: neg s1, a0
2978
+ ; RV32IZHINX-NEXT: mv a0, s0
2982
2979
; RV32IZHINX-NEXT: call __fixunssfdi
2983
2980
; RV32IZHINX-NEXT: and a0, s1, a0
2981
+ ; RV32IZHINX-NEXT: lui a2, 391168
2984
2982
; RV32IZHINX-NEXT: and a1, s1, a1
2985
- ; RV32IZHINX-NEXT: or a0, s0, a0
2986
- ; RV32IZHINX-NEXT: or a1, s0, a1
2983
+ ; RV32IZHINX-NEXT: addi a2, a2, -1
2984
+ ; RV32IZHINX-NEXT: flt.s a2, a2, s0
2985
+ ; RV32IZHINX-NEXT: neg a2, a2
2986
+ ; RV32IZHINX-NEXT: or a0, a2, a0
2987
+ ; RV32IZHINX-NEXT: or a1, a2, a1
2987
2988
; RV32IZHINX-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
2988
2989
; RV32IZHINX-NEXT: lw s0, 8(sp) # 4-byte Folded Reload
2989
2990
; RV32IZHINX-NEXT: lw s1, 4(sp) # 4-byte Folded Reload
@@ -3005,18 +3006,19 @@ define i64 @fcvt_lu_h_sat(half %a) nounwind {
3005
3006
; RV32IZDINXZHINX-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
3006
3007
; RV32IZDINXZHINX-NEXT: sw s0, 8(sp) # 4-byte Folded Spill
3007
3008
; RV32IZDINXZHINX-NEXT: sw s1, 4(sp) # 4-byte Folded Spill
3008
- ; RV32IZDINXZHINX-NEXT: fcvt.s.h a0, a0
3009
- ; RV32IZDINXZHINX-NEXT: lui a1, 391168
3010
- ; RV32IZDINXZHINX-NEXT: addi a1, a1, -1
3011
- ; RV32IZDINXZHINX-NEXT: fle.s a2, zero, a0
3012
- ; RV32IZDINXZHINX-NEXT: flt.s a1, a1, a0
3013
- ; RV32IZDINXZHINX-NEXT: neg s0, a1
3014
- ; RV32IZDINXZHINX-NEXT: neg s1, a2
3009
+ ; RV32IZDINXZHINX-NEXT: fcvt.s.h s0, a0
3010
+ ; RV32IZDINXZHINX-NEXT: fle.s a0, zero, s0
3011
+ ; RV32IZDINXZHINX-NEXT: neg s1, a0
3012
+ ; RV32IZDINXZHINX-NEXT: mv a0, s0
3015
3013
; RV32IZDINXZHINX-NEXT: call __fixunssfdi
3016
3014
; RV32IZDINXZHINX-NEXT: and a0, s1, a0
3015
+ ; RV32IZDINXZHINX-NEXT: lui a2, 391168
3017
3016
; RV32IZDINXZHINX-NEXT: and a1, s1, a1
3018
- ; RV32IZDINXZHINX-NEXT: or a0, s0, a0
3019
- ; RV32IZDINXZHINX-NEXT: or a1, s0, a1
3017
+ ; RV32IZDINXZHINX-NEXT: addi a2, a2, -1
3018
+ ; RV32IZDINXZHINX-NEXT: flt.s a2, a2, s0
3019
+ ; RV32IZDINXZHINX-NEXT: neg a2, a2
3020
+ ; RV32IZDINXZHINX-NEXT: or a0, a2, a0
3021
+ ; RV32IZDINXZHINX-NEXT: or a1, a2, a1
3020
3022
; RV32IZDINXZHINX-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
3021
3023
; RV32IZDINXZHINX-NEXT: lw s0, 8(sp) # 4-byte Folded Reload
3022
3024
; RV32IZDINXZHINX-NEXT: lw s1, 4(sp) # 4-byte Folded Reload
@@ -3217,18 +3219,19 @@ define i64 @fcvt_lu_h_sat(half %a) nounwind {
3217
3219
; CHECK32-IZHINXMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
3218
3220
; CHECK32-IZHINXMIN-NEXT: sw s0, 8(sp) # 4-byte Folded Spill
3219
3221
; CHECK32-IZHINXMIN-NEXT: sw s1, 4(sp) # 4-byte Folded Spill
3220
- ; CHECK32-IZHINXMIN-NEXT: fcvt.s.h a0, a0
3221
- ; CHECK32-IZHINXMIN-NEXT: lui a1, 391168
3222
- ; CHECK32-IZHINXMIN-NEXT: addi a1, a1, -1
3223
- ; CHECK32-IZHINXMIN-NEXT: fle.s a2, zero, a0
3224
- ; CHECK32-IZHINXMIN-NEXT: flt.s a1, a1, a0
3225
- ; CHECK32-IZHINXMIN-NEXT: neg s0, a1
3226
- ; CHECK32-IZHINXMIN-NEXT: neg s1, a2
3222
+ ; CHECK32-IZHINXMIN-NEXT: fcvt.s.h s0, a0
3223
+ ; CHECK32-IZHINXMIN-NEXT: fle.s a0, zero, s0
3224
+ ; CHECK32-IZHINXMIN-NEXT: neg s1, a0
3225
+ ; CHECK32-IZHINXMIN-NEXT: mv a0, s0
3227
3226
; CHECK32-IZHINXMIN-NEXT: call __fixunssfdi
3228
3227
; CHECK32-IZHINXMIN-NEXT: and a0, s1, a0
3228
+ ; CHECK32-IZHINXMIN-NEXT: lui a2, 391168
3229
3229
; CHECK32-IZHINXMIN-NEXT: and a1, s1, a1
3230
- ; CHECK32-IZHINXMIN-NEXT: or a0, s0, a0
3231
- ; CHECK32-IZHINXMIN-NEXT: or a1, s0, a1
3230
+ ; CHECK32-IZHINXMIN-NEXT: addi a2, a2, -1
3231
+ ; CHECK32-IZHINXMIN-NEXT: flt.s a2, a2, s0
3232
+ ; CHECK32-IZHINXMIN-NEXT: neg a2, a2
3233
+ ; CHECK32-IZHINXMIN-NEXT: or a0, a2, a0
3234
+ ; CHECK32-IZHINXMIN-NEXT: or a1, a2, a1
3232
3235
; CHECK32-IZHINXMIN-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
3233
3236
; CHECK32-IZHINXMIN-NEXT: lw s0, 8(sp) # 4-byte Folded Reload
3234
3237
; CHECK32-IZHINXMIN-NEXT: lw s1, 4(sp) # 4-byte Folded Reload
@@ -3251,18 +3254,19 @@ define i64 @fcvt_lu_h_sat(half %a) nounwind {
3251
3254
; CHECK32-IZDINXZHINXMIN-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
3252
3255
; CHECK32-IZDINXZHINXMIN-NEXT: sw s0, 8(sp) # 4-byte Folded Spill
3253
3256
; CHECK32-IZDINXZHINXMIN-NEXT: sw s1, 4(sp) # 4-byte Folded Spill
3254
- ; CHECK32-IZDINXZHINXMIN-NEXT: fcvt.s.h a0, a0
3255
- ; CHECK32-IZDINXZHINXMIN-NEXT: lui a1, 391168
3256
- ; CHECK32-IZDINXZHINXMIN-NEXT: addi a1, a1, -1
3257
- ; CHECK32-IZDINXZHINXMIN-NEXT: fle.s a2, zero, a0
3258
- ; CHECK32-IZDINXZHINXMIN-NEXT: flt.s a1, a1, a0
3259
- ; CHECK32-IZDINXZHINXMIN-NEXT: neg s0, a1
3260
- ; CHECK32-IZDINXZHINXMIN-NEXT: neg s1, a2
3257
+ ; CHECK32-IZDINXZHINXMIN-NEXT: fcvt.s.h s0, a0
3258
+ ; CHECK32-IZDINXZHINXMIN-NEXT: fle.s a0, zero, s0
3259
+ ; CHECK32-IZDINXZHINXMIN-NEXT: neg s1, a0
3260
+ ; CHECK32-IZDINXZHINXMIN-NEXT: mv a0, s0
3261
3261
; CHECK32-IZDINXZHINXMIN-NEXT: call __fixunssfdi
3262
3262
; CHECK32-IZDINXZHINXMIN-NEXT: and a0, s1, a0
3263
+ ; CHECK32-IZDINXZHINXMIN-NEXT: lui a2, 391168
3263
3264
; CHECK32-IZDINXZHINXMIN-NEXT: and a1, s1, a1
3264
- ; CHECK32-IZDINXZHINXMIN-NEXT: or a0, s0, a0
3265
- ; CHECK32-IZDINXZHINXMIN-NEXT: or a1, s0, a1
3265
+ ; CHECK32-IZDINXZHINXMIN-NEXT: addi a2, a2, -1
3266
+ ; CHECK32-IZDINXZHINXMIN-NEXT: flt.s a2, a2, s0
3267
+ ; CHECK32-IZDINXZHINXMIN-NEXT: neg a2, a2
3268
+ ; CHECK32-IZDINXZHINXMIN-NEXT: or a0, a2, a0
3269
+ ; CHECK32-IZDINXZHINXMIN-NEXT: or a1, a2, a1
3266
3270
; CHECK32-IZDINXZHINXMIN-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
3267
3271
; CHECK32-IZDINXZHINXMIN-NEXT: lw s0, 8(sp) # 4-byte Folded Reload
3268
3272
; CHECK32-IZDINXZHINXMIN-NEXT: lw s1, 4(sp) # 4-byte Folded Reload
0 commit comments