@@ -161,17 +161,17 @@ define float @fsgnj_s(float %a, float %b) nounwind {
161161; RV32I-LABEL: fsgnj_s:
162162; RV32I: # %bb.0:
163163; RV32I-NEXT: lui a2, 524288
164- ; RV32I-NEXT: addi a3, a2, - 1
165- ; RV32I-NEXT: and a0, a0, a3
164+ ; RV32I-NEXT: slli a0, a0, 1
165+ ; RV32I-NEXT: srli a0, a0, 1
166166; RV32I-NEXT: and a1, a1, a2
167167; RV32I-NEXT: or a0, a0, a1
168168; RV32I-NEXT: ret
169169;
170170; RV64I-LABEL: fsgnj_s:
171171; RV64I: # %bb.0:
172172; RV64I-NEXT: lui a2, 524288
173- ; RV64I-NEXT: addiw a3, a2, -1
174- ; RV64I-NEXT: and a0, a0, a3
173+ ; RV64I-NEXT: slli a0, a0, 33
174+ ; RV64I-NEXT: srli a0, a0, 33
175175; RV64I-NEXT: and a1, a1, a2
176176; RV64I-NEXT: or a0, a0, a1
177177; RV64I-NEXT: ret
@@ -238,11 +238,11 @@ define float @fsgnjn_s(float %a, float %b) nounwind {
238238; RV32I-NEXT: mv s0, a0
239239; RV32I-NEXT: call __addsf3
240240; RV32I-NEXT: lui a1, 524288
241+ ; RV32I-NEXT: slli s0, s0, 1
241242; RV32I-NEXT: xor a0, a0, a1
242- ; RV32I-NEXT: addi a2, a1, -1
243- ; RV32I-NEXT: and a2, s0, a2
243+ ; RV32I-NEXT: srli s0, s0, 1
244244; RV32I-NEXT: and a0, a0, a1
245- ; RV32I-NEXT: or a0, a2 , a0
245+ ; RV32I-NEXT: or a0, s0 , a0
246246; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
247247; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload
248248; RV32I-NEXT: addi sp, sp, 16
@@ -256,11 +256,11 @@ define float @fsgnjn_s(float %a, float %b) nounwind {
256256; RV64I-NEXT: mv s0, a0
257257; RV64I-NEXT: call __addsf3
258258; RV64I-NEXT: lui a1, 524288
259+ ; RV64I-NEXT: slli s0, s0, 33
259260; RV64I-NEXT: xor a0, a0, a1
260- ; RV64I-NEXT: addiw a2, a1, -1
261- ; RV64I-NEXT: and a2, s0, a2
261+ ; RV64I-NEXT: srli s0, s0, 33
262262; RV64I-NEXT: and a0, a0, a1
263- ; RV64I-NEXT: or a0, a2 , a0
263+ ; RV64I-NEXT: or a0, s0 , a0
264264; RV64I-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
265265; RV64I-NEXT: ld s0, 0(sp) # 8-byte Folded Reload
266266; RV64I-NEXT: addi sp, sp, 16
@@ -287,9 +287,8 @@ define float @fabs_s(float %a, float %b) nounwind {
287287; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill
288288; RV32I-NEXT: call __addsf3
289289; RV32I-NEXT: mv a1, a0
290- ; RV32I-NEXT: lui a0, 524288
291- ; RV32I-NEXT: addi a0, a0, -1
292- ; RV32I-NEXT: and a0, a1, a0
290+ ; RV32I-NEXT: slli a0, a0, 1
291+ ; RV32I-NEXT: srli a0, a0, 1
293292; RV32I-NEXT: call __addsf3
294293; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload
295294; RV32I-NEXT: addi sp, sp, 16
@@ -301,9 +300,8 @@ define float @fabs_s(float %a, float %b) nounwind {
301300; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
302301; RV64I-NEXT: call __addsf3
303302; RV64I-NEXT: mv a1, a0
304- ; RV64I-NEXT: lui a0, 524288
305- ; RV64I-NEXT: addiw a0, a0, -1
306- ; RV64I-NEXT: and a0, a1, a0
303+ ; RV64I-NEXT: slli a0, a0, 33
304+ ; RV64I-NEXT: srli a0, a0, 33
307305; RV64I-NEXT: call __addsf3
308306; RV64I-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
309307; RV64I-NEXT: addi sp, sp, 16
0 commit comments