Skip to content

Commit 3265dfe

Browse files
committed
[RISCV] Add signext attribute to return of fmv_x_w test in float-convert.ll. NFC
This shows that Zfinx generates a sext.w instruction on RV64. The fadd.s should have filled the upper bits of the GPR with sign bits so this is unnecessary. Proving it is unnecessary might be difficult though.
1 parent 28d577e commit 3265dfe

File tree

1 file changed

+12
-5
lines changed

1 file changed

+12
-5
lines changed

llvm/test/CodeGen/RISCV/float-convert.ll

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -336,17 +336,23 @@ start:
336336
}
337337
declare i32 @llvm.fptoui.sat.i32.f32(float)
338338

339-
define i32 @fmv_x_w(float %a, float %b) nounwind {
339+
define signext i32 @fmv_x_w(float %a, float %b) nounwind {
340340
; CHECKIF-LABEL: fmv_x_w:
341341
; CHECKIF: # %bb.0:
342342
; CHECKIF-NEXT: fadd.s fa5, fa0, fa1
343343
; CHECKIF-NEXT: fmv.x.w a0, fa5
344344
; CHECKIF-NEXT: ret
345345
;
346-
; CHECKIZFINX-LABEL: fmv_x_w:
347-
; CHECKIZFINX: # %bb.0:
348-
; CHECKIZFINX-NEXT: fadd.s a0, a0, a1
349-
; CHECKIZFINX-NEXT: ret
346+
; RV32IZFINX-LABEL: fmv_x_w:
347+
; RV32IZFINX: # %bb.0:
348+
; RV32IZFINX-NEXT: fadd.s a0, a0, a1
349+
; RV32IZFINX-NEXT: ret
350+
;
351+
; RV64IZFINX-LABEL: fmv_x_w:
352+
; RV64IZFINX: # %bb.0:
353+
; RV64IZFINX-NEXT: fadd.s a0, a0, a1
354+
; RV64IZFINX-NEXT: sext.w a0, a0
355+
; RV64IZFINX-NEXT: ret
350356
;
351357
; RV32I-LABEL: fmv_x_w:
352358
; RV32I: # %bb.0:
@@ -362,6 +368,7 @@ define i32 @fmv_x_w(float %a, float %b) nounwind {
362368
; RV64I-NEXT: addi sp, sp, -16
363369
; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill
364370
; RV64I-NEXT: call __addsf3
371+
; RV64I-NEXT: sext.w a0, a0
365372
; RV64I-NEXT: ld ra, 8(sp) # 8-byte Folded Reload
366373
; RV64I-NEXT: addi sp, sp, 16
367374
; RV64I-NEXT: ret

0 commit comments

Comments
 (0)