Index: llvm/lib/Target/RISCV/RISCVISelLowering.cpp =================================================================== --- llvm/lib/Target/RISCV/RISCVISelLowering.cpp +++ llvm/lib/Target/RISCV/RISCVISelLowering.cpp @@ -347,7 +347,7 @@ static const unsigned FPOpToExpand[] = { ISD::FSIN, ISD::FCOS, ISD::FSINCOS, ISD::FPOW, - ISD::FREM, ISD::FP16_TO_FP, ISD::FP_TO_FP16}; + ISD::FREM}; static const unsigned FPRndMode[] = { ISD::FCEIL, ISD::FFLOOR, ISD::FTRUNC, ISD::FRINT, ISD::FROUND, @@ -422,6 +422,8 @@ setLoadExtAction(ISD::EXTLOAD, MVT::f32, MVT::f16, Expand); setTruncStoreAction(MVT::f32, MVT::f16, Expand); setOperationAction(ISD::IS_FPCLASS, MVT::f32, Custom); + setOperationAction(ISD::FP_TO_FP16, MVT::f32, Custom); + setOperationAction(ISD::FP16_TO_FP, MVT::f32, Custom); if (Subtarget.hasStdExtZfa()) setOperationAction(ISD::FNEARBYINT, MVT::f32, Legal); @@ -456,6 +458,8 @@ setLoadExtAction(ISD::EXTLOAD, MVT::f64, MVT::f16, Expand); setTruncStoreAction(MVT::f64, MVT::f16, Expand); setOperationAction(ISD::IS_FPCLASS, MVT::f64, Custom); + setOperationAction(ISD::FP_TO_FP16, MVT::f64, Custom); + setOperationAction(ISD::FP16_TO_FP, MVT::f64, Expand); } if (Subtarget.is64Bit()) { @@ -4745,6 +4749,35 @@ case ISD::FP_TO_SINT_SAT: case ISD::FP_TO_UINT_SAT: return lowerFP_TO_INT_SAT(Op, DAG, Subtarget); + case ISD::FP_TO_FP16: { + // Custom lower to ensure the libcall return is passed in an FPR on hard + // float ABIs. + assert(Subtarget.hasStdExtFOrZfinx() && "Unexpected custom legalization"); + SDLoc DL(Op); + MakeLibCallOptions CallOptions; + RTLIB::Libcall LC = + RTLIB::getFPROUND(Op.getOperand(0).getValueType(), MVT::f16); + SDValue Res = + makeLibCall(DAG, LC, MVT::f32, Op.getOperand(0), CallOptions, DL).first; + if (Subtarget.is64Bit()) + return DAG.getNode(RISCVISD::FMV_X_ANYEXTW_RV64, DL, MVT::i64, Res); + return DAG.getBitcast(MVT::i32, Res); + } + case ISD::FP16_TO_FP: { + // Custom lower to ensure the libcall argument is passed in an FPR on hard + // float ABIs. + assert(Subtarget.hasStdExtFOrZfinx() && "Unexpected custom legalization"); + SDLoc DL(Op); + MakeLibCallOptions CallOptions; + SDValue Arg = Subtarget.is64Bit() + ? DAG.getNode(RISCVISD::FMV_W_X_RV64, DL, MVT::f32, + Op.getOperand(0)) + : DAG.getBitcast(MVT::f32, Op.getOperand(0)); + SDValue Res = + makeLibCall(DAG, RTLIB::FPEXT_F16_F32, MVT::f32, Arg, CallOptions, DL) + .first; + return Res; + } case ISD::FTRUNC: case ISD::FCEIL: case ISD::FFLOOR: Index: llvm/test/CodeGen/RISCV/calling-conv-half.ll =================================================================== --- llvm/test/CodeGen/RISCV/calling-conv-half.ll +++ llvm/test/CodeGen/RISCV/calling-conv-half.ll @@ -83,7 +83,6 @@ ; RV32-ILP32F-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32-ILP32F-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32-ILP32F-NEXT: mv s0, a0 -; RV32-ILP32F-NEXT: fmv.x.w a0, fa0 ; RV32-ILP32F-NEXT: call __extendhfsf2@plt ; RV32-ILP32F-NEXT: fcvt.w.s a0, fa0, rtz ; RV32-ILP32F-NEXT: add a0, s0, a0 @@ -99,6 +98,7 @@ ; RV64-LP64F-NEXT: sd s0, 0(sp) # 8-byte Folded Spill ; RV64-LP64F-NEXT: mv s0, a0 ; RV64-LP64F-NEXT: fmv.x.w a0, fa0 +; RV64-LP64F-NEXT: fmv.w.x fa0, a0 ; RV64-LP64F-NEXT: call __extendhfsf2@plt ; RV64-LP64F-NEXT: fcvt.l.s a0, fa0, rtz ; RV64-LP64F-NEXT: addw a0, s0, a0 @@ -292,7 +292,6 @@ ; RV32-ILP32F-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32-ILP32F-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32-ILP32F-NEXT: mv s0, a7 -; RV32-ILP32F-NEXT: fmv.x.w a0, fa0 ; RV32-ILP32F-NEXT: call __extendhfsf2@plt ; RV32-ILP32F-NEXT: fcvt.w.s a0, fa0, rtz ; RV32-ILP32F-NEXT: add a0, s0, a0 @@ -308,6 +307,7 @@ ; RV64-LP64F-NEXT: sd s0, 0(sp) # 8-byte Folded Spill ; RV64-LP64F-NEXT: mv s0, a7 ; RV64-LP64F-NEXT: fmv.x.w a0, fa0 +; RV64-LP64F-NEXT: fmv.w.x fa0, a0 ; RV64-LP64F-NEXT: call __extendhfsf2@plt ; RV64-LP64F-NEXT: fcvt.l.s a0, fa0, rtz ; RV64-LP64F-NEXT: addw a0, s0, a0 @@ -602,7 +602,6 @@ ; RV32-ILP32F-NEXT: addi sp, sp, -16 ; RV32-ILP32F-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32-ILP32F-NEXT: call callee_half_ret@plt -; RV32-ILP32F-NEXT: fmv.x.w a0, fa0 ; RV32-ILP32F-NEXT: call __extendhfsf2@plt ; RV32-ILP32F-NEXT: fcvt.w.s a0, fa0, rtz ; RV32-ILP32F-NEXT: lw ra, 12(sp) # 4-byte Folded Reload @@ -615,6 +614,7 @@ ; RV64-LP64F-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64-LP64F-NEXT: call callee_half_ret@plt ; RV64-LP64F-NEXT: fmv.x.w a0, fa0 +; RV64-LP64F-NEXT: fmv.w.x fa0, a0 ; RV64-LP64F-NEXT: call __extendhfsf2@plt ; RV64-LP64F-NEXT: fcvt.l.s a0, fa0, rtz ; RV64-LP64F-NEXT: ld ra, 8(sp) # 8-byte Folded Reload Index: llvm/test/CodeGen/RISCV/copysign-casts.ll =================================================================== --- llvm/test/CodeGen/RISCV/copysign-casts.ll +++ llvm/test/CodeGen/RISCV/copysign-casts.ll @@ -163,7 +163,7 @@ ; RV32IFD-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32IFD-NEXT: fsd fs0, 0(sp) # 8-byte Folded Spill ; RV32IFD-NEXT: fmv.d fs0, fa0 -; RV32IFD-NEXT: fmv.x.w a0, fa1 +; RV32IFD-NEXT: fmv.s fa0, fa1 ; RV32IFD-NEXT: call __extendhfsf2@plt ; RV32IFD-NEXT: fcvt.d.s fa5, fa0 ; RV32IFD-NEXT: fsgnj.d fa0, fs0, fa5 @@ -179,6 +179,7 @@ ; RV64IFD-NEXT: fsd fs0, 0(sp) # 8-byte Folded Spill ; RV64IFD-NEXT: fmv.d fs0, fa0 ; RV64IFD-NEXT: fmv.x.w a0, fa1 +; RV64IFD-NEXT: fmv.w.x fa0, a0 ; RV64IFD-NEXT: call __extendhfsf2@plt ; RV64IFD-NEXT: fcvt.d.s fa5, fa0 ; RV64IFD-NEXT: fsgnj.d fa0, fs0, fa5 @@ -264,7 +265,7 @@ ; RV32IF-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32IF-NEXT: fsw fs0, 8(sp) # 4-byte Folded Spill ; RV32IF-NEXT: fmv.s fs0, fa0 -; RV32IF-NEXT: fmv.x.w a0, fa1 +; RV32IF-NEXT: fmv.s fa0, fa1 ; RV32IF-NEXT: call __extendhfsf2@plt ; RV32IF-NEXT: fsgnj.s fa0, fs0, fa0 ; RV32IF-NEXT: lw ra, 12(sp) # 4-byte Folded Reload @@ -278,7 +279,7 @@ ; RV32IFD-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32IFD-NEXT: fsd fs0, 0(sp) # 8-byte Folded Spill ; RV32IFD-NEXT: fmv.s fs0, fa0 -; RV32IFD-NEXT: fmv.x.w a0, fa1 +; RV32IFD-NEXT: fmv.s fa0, fa1 ; RV32IFD-NEXT: call __extendhfsf2@plt ; RV32IFD-NEXT: fsgnj.s fa0, fs0, fa0 ; RV32IFD-NEXT: lw ra, 12(sp) # 4-byte Folded Reload @@ -293,6 +294,7 @@ ; RV64IFD-NEXT: fsd fs0, 0(sp) # 8-byte Folded Spill ; RV64IFD-NEXT: fmv.s fs0, fa0 ; RV64IFD-NEXT: fmv.x.w a0, fa1 +; RV64IFD-NEXT: fmv.w.x fa0, a0 ; RV64IFD-NEXT: call __extendhfsf2@plt ; RV64IFD-NEXT: fsgnj.s fa0, fs0, fa0 ; RV64IFD-NEXT: ld ra, 8(sp) # 8-byte Folded Reload Index: llvm/test/CodeGen/RISCV/fp16-promote.ll =================================================================== --- llvm/test/CodeGen/RISCV/fp16-promote.ll +++ llvm/test/CodeGen/RISCV/fp16-promote.ll @@ -15,8 +15,14 @@ define float @test_fpextend_float(ptr %p) nounwind { ; CHECK-LABEL: test_fpextend_float: ; CHECK: # %bb.0: +; CHECK-NEXT: addi sp, sp, -16 +; CHECK-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; CHECK-NEXT: lhu a0, 0(a0) -; CHECK-NEXT: tail __extendhfsf2@plt +; CHECK-NEXT: fmv.w.x fa0, a0 +; CHECK-NEXT: call __extendhfsf2@plt +; CHECK-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; CHECK-NEXT: addi sp, sp, 16 +; CHECK-NEXT: ret %a = load half, ptr %p %r = fpext half %a to float ret float %r @@ -28,6 +34,7 @@ ; CHECK-NEXT: addi sp, sp, -16 ; CHECK-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; CHECK-NEXT: lhu a0, 0(a0) +; CHECK-NEXT: fmv.w.x fa0, a0 ; CHECK-NEXT: call __extendhfsf2@plt ; CHECK-NEXT: fcvt.d.s fa0, fa0 ; CHECK-NEXT: lw ra, 12(sp) # 4-byte Folded Reload @@ -46,6 +53,7 @@ ; CHECK-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; CHECK-NEXT: mv s0, a0 ; CHECK-NEXT: call __truncsfhf2@plt +; CHECK-NEXT: fmv.x.w a0, fa0 ; CHECK-NEXT: sh a0, 0(s0) ; CHECK-NEXT: lw ra, 12(sp) # 4-byte Folded Reload ; CHECK-NEXT: lw s0, 8(sp) # 4-byte Folded Reload @@ -64,6 +72,7 @@ ; CHECK-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; CHECK-NEXT: mv s0, a0 ; CHECK-NEXT: call __truncdfhf2@plt +; CHECK-NEXT: fmv.x.w a0, fa0 ; CHECK-NEXT: sh a0, 0(s0) ; CHECK-NEXT: lw ra, 12(sp) # 4-byte Folded Reload ; CHECK-NEXT: lw s0, 8(sp) # 4-byte Folded Reload @@ -80,22 +89,25 @@ ; CHECK-NEXT: addi sp, sp, -32 ; CHECK-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; CHECK-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; CHECK-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; CHECK-NEXT: fsd fs0, 8(sp) # 8-byte Folded Spill +; CHECK-NEXT: fsd fs0, 16(sp) # 8-byte Folded Spill +; CHECK-NEXT: fsd fs1, 8(sp) # 8-byte Folded Spill ; CHECK-NEXT: mv s0, a0 -; CHECK-NEXT: lhu s1, 0(a0) -; CHECK-NEXT: lhu a0, 0(a1) +; CHECK-NEXT: lhu a0, 0(a0) +; CHECK-NEXT: lhu a1, 0(a1) +; CHECK-NEXT: fmv.w.x fs0, a0 +; CHECK-NEXT: fmv.w.x fa0, a1 ; CHECK-NEXT: call __extendhfsf2@plt -; CHECK-NEXT: fmv.s fs0, fa0 -; CHECK-NEXT: mv a0, s1 +; CHECK-NEXT: fmv.s fs1, fa0 +; CHECK-NEXT: fmv.s fa0, fs0 ; CHECK-NEXT: call __extendhfsf2@plt -; CHECK-NEXT: fadd.s fa0, fa0, fs0 +; CHECK-NEXT: fadd.s fa0, fa0, fs1 ; CHECK-NEXT: call __truncsfhf2@plt +; CHECK-NEXT: fmv.x.w a0, fa0 ; CHECK-NEXT: sh a0, 0(s0) ; CHECK-NEXT: lw ra, 28(sp) # 4-byte Folded Reload ; CHECK-NEXT: lw s0, 24(sp) # 4-byte Folded Reload -; CHECK-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; CHECK-NEXT: fld fs0, 8(sp) # 8-byte Folded Reload +; CHECK-NEXT: fld fs0, 16(sp) # 8-byte Folded Reload +; CHECK-NEXT: fld fs1, 8(sp) # 8-byte Folded Reload ; CHECK-NEXT: addi sp, sp, 32 ; CHECK-NEXT: ret %a = load half, ptr %p @@ -111,22 +123,25 @@ ; CHECK-NEXT: addi sp, sp, -32 ; CHECK-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; CHECK-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; CHECK-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; CHECK-NEXT: fsd fs0, 8(sp) # 8-byte Folded Spill +; CHECK-NEXT: fsd fs0, 16(sp) # 8-byte Folded Spill +; CHECK-NEXT: fsd fs1, 8(sp) # 8-byte Folded Spill ; CHECK-NEXT: mv s0, a0 -; CHECK-NEXT: lhu s1, 0(a0) -; CHECK-NEXT: lhu a0, 0(a1) +; CHECK-NEXT: lhu a0, 0(a0) +; CHECK-NEXT: lhu a1, 0(a1) +; CHECK-NEXT: fmv.w.x fs0, a0 +; CHECK-NEXT: fmv.w.x fa0, a1 ; CHECK-NEXT: call __extendhfsf2@plt -; CHECK-NEXT: fmv.s fs0, fa0 -; CHECK-NEXT: mv a0, s1 +; CHECK-NEXT: fmv.s fs1, fa0 +; CHECK-NEXT: fmv.s fa0, fs0 ; CHECK-NEXT: call __extendhfsf2@plt -; CHECK-NEXT: fmul.s fa0, fa0, fs0 +; CHECK-NEXT: fmul.s fa0, fa0, fs1 ; CHECK-NEXT: call __truncsfhf2@plt +; CHECK-NEXT: fmv.x.w a0, fa0 ; CHECK-NEXT: sh a0, 0(s0) ; CHECK-NEXT: lw ra, 28(sp) # 4-byte Folded Reload ; CHECK-NEXT: lw s0, 24(sp) # 4-byte Folded Reload -; CHECK-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; CHECK-NEXT: fld fs0, 8(sp) # 8-byte Folded Reload +; CHECK-NEXT: fld fs0, 16(sp) # 8-byte Folded Reload +; CHECK-NEXT: fld fs1, 8(sp) # 8-byte Folded Reload ; CHECK-NEXT: addi sp, sp, 32 ; CHECK-NEXT: ret %a = load half, ptr %p Index: llvm/test/CodeGen/RISCV/fpclamptosat.ll =================================================================== --- llvm/test/CodeGen/RISCV/fpclamptosat.ll +++ llvm/test/CodeGen/RISCV/fpclamptosat.ll @@ -355,7 +355,6 @@ ; RV32-NEXT: .cfi_def_cfa_offset 16 ; RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32-NEXT: .cfi_offset ra, -4 -; RV32-NEXT: fmv.x.w a0, fa0 ; RV32-NEXT: call __extendhfsf2@plt ; RV32-NEXT: call __fixsfdi@plt ; RV32-NEXT: lui a2, 524288 @@ -397,6 +396,7 @@ ; RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64-NEXT: .cfi_offset ra, -8 ; RV64-NEXT: fmv.x.w a0, fa0 +; RV64-NEXT: fmv.w.x fa0, a0 ; RV64-NEXT: call __extendhfsf2@plt ; RV64-NEXT: fcvt.l.s a0, fa0, rtz ; RV64-NEXT: lui a1, 524288 @@ -429,7 +429,6 @@ ; RV32-NEXT: .cfi_def_cfa_offset 16 ; RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32-NEXT: .cfi_offset ra, -4 -; RV32-NEXT: fmv.x.w a0, fa0 ; RV32-NEXT: call __extendhfsf2@plt ; RV32-NEXT: call __fixunssfdi@plt ; RV32-NEXT: sltiu a2, a0, -1 @@ -448,6 +447,7 @@ ; RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64-NEXT: .cfi_offset ra, -8 ; RV64-NEXT: fmv.x.w a0, fa0 +; RV64-NEXT: fmv.w.x fa0, a0 ; RV64-NEXT: call __extendhfsf2@plt ; RV64-NEXT: fcvt.lu.s a0, fa0, rtz ; RV64-NEXT: li a1, -1 @@ -474,7 +474,6 @@ ; RV32-NEXT: .cfi_def_cfa_offset 16 ; RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32-NEXT: .cfi_offset ra, -4 -; RV32-NEXT: fmv.x.w a0, fa0 ; RV32-NEXT: call __extendhfsf2@plt ; RV32-NEXT: call __fixsfdi@plt ; RV32-NEXT: beqz a1, .LBB8_2 @@ -508,6 +507,7 @@ ; RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64-NEXT: .cfi_offset ra, -8 ; RV64-NEXT: fmv.x.w a0, fa0 +; RV64-NEXT: fmv.w.x fa0, a0 ; RV64-NEXT: call __extendhfsf2@plt ; RV64-NEXT: fcvt.l.s a0, fa0, rtz ; RV64-NEXT: li a1, -1 @@ -891,7 +891,6 @@ ; RV32-NEXT: .cfi_def_cfa_offset 16 ; RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32-NEXT: .cfi_offset ra, -4 -; RV32-NEXT: fmv.x.w a0, fa0 ; RV32-NEXT: call __extendhfsf2@plt ; RV32-NEXT: fcvt.w.s a0, fa0, rtz ; RV32-NEXT: lui a1, 8 @@ -916,6 +915,7 @@ ; RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64-NEXT: .cfi_offset ra, -8 ; RV64-NEXT: fmv.x.w a0, fa0 +; RV64-NEXT: fmv.w.x fa0, a0 ; RV64-NEXT: call __extendhfsf2@plt ; RV64-NEXT: fcvt.l.s a0, fa0, rtz ; RV64-NEXT: lui a1, 8 @@ -949,7 +949,6 @@ ; RV32-NEXT: .cfi_def_cfa_offset 16 ; RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32-NEXT: .cfi_offset ra, -4 -; RV32-NEXT: fmv.x.w a0, fa0 ; RV32-NEXT: call __extendhfsf2@plt ; RV32-NEXT: fcvt.wu.s a0, fa0, rtz ; RV32-NEXT: lui a1, 16 @@ -969,6 +968,7 @@ ; RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64-NEXT: .cfi_offset ra, -8 ; RV64-NEXT: fmv.x.w a0, fa0 +; RV64-NEXT: fmv.w.x fa0, a0 ; RV64-NEXT: call __extendhfsf2@plt ; RV64-NEXT: fcvt.lu.s a0, fa0, rtz ; RV64-NEXT: lui a1, 16 @@ -995,7 +995,6 @@ ; RV32-NEXT: .cfi_def_cfa_offset 16 ; RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32-NEXT: .cfi_offset ra, -4 -; RV32-NEXT: fmv.x.w a0, fa0 ; RV32-NEXT: call __extendhfsf2@plt ; RV32-NEXT: fcvt.w.s a0, fa0, rtz ; RV32-NEXT: lui a1, 16 @@ -1018,6 +1017,7 @@ ; RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64-NEXT: .cfi_offset ra, -8 ; RV64-NEXT: fmv.x.w a0, fa0 +; RV64-NEXT: fmv.w.x fa0, a0 ; RV64-NEXT: call __extendhfsf2@plt ; RV64-NEXT: fcvt.l.s a0, fa0, rtz ; RV64-NEXT: lui a1, 16 @@ -1666,7 +1666,6 @@ ; RV32-NEXT: .cfi_def_cfa_offset 32 ; RV32-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32-NEXT: .cfi_offset ra, -4 -; RV32-NEXT: fmv.x.w a0, fa0 ; RV32-NEXT: call __extendhfsf2@plt ; RV32-NEXT: addi a0, sp, 8 ; RV32-NEXT: call __fixsfti@plt @@ -1729,6 +1728,7 @@ ; RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64-NEXT: .cfi_offset ra, -8 ; RV64-NEXT: fmv.x.w a0, fa0 +; RV64-NEXT: fmv.w.x fa0, a0 ; RV64-NEXT: call __extendhfsf2@plt ; RV64-NEXT: call __fixsfti@plt ; RV64-NEXT: li a2, -1 @@ -1779,7 +1779,6 @@ ; RV32-NEXT: .cfi_def_cfa_offset 32 ; RV32-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32-NEXT: .cfi_offset ra, -4 -; RV32-NEXT: fmv.x.w a0, fa0 ; RV32-NEXT: call __extendhfsf2@plt ; RV32-NEXT: addi a0, sp, 8 ; RV32-NEXT: call __fixunssfti@plt @@ -1808,6 +1807,7 @@ ; RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64-NEXT: .cfi_offset ra, -8 ; RV64-NEXT: fmv.x.w a0, fa0 +; RV64-NEXT: fmv.w.x fa0, a0 ; RV64-NEXT: call __extendhfsf2@plt ; RV64-NEXT: call __fixunssfti@plt ; RV64-NEXT: snez a1, a1 @@ -1831,7 +1831,6 @@ ; RV32-NEXT: .cfi_def_cfa_offset 32 ; RV32-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32-NEXT: .cfi_offset ra, -4 -; RV32-NEXT: fmv.x.w a0, fa0 ; RV32-NEXT: call __extendhfsf2@plt ; RV32-NEXT: addi a0, sp, 8 ; RV32-NEXT: call __fixsfti@plt @@ -1886,6 +1885,7 @@ ; RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64-NEXT: .cfi_offset ra, -8 ; RV64-NEXT: fmv.x.w a0, fa0 +; RV64-NEXT: fmv.w.x fa0, a0 ; RV64-NEXT: call __extendhfsf2@plt ; RV64-NEXT: call __fixsfti@plt ; RV64-NEXT: slti a2, a1, 1 @@ -2259,7 +2259,6 @@ ; RV32-NEXT: .cfi_def_cfa_offset 16 ; RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32-NEXT: .cfi_offset ra, -4 -; RV32-NEXT: fmv.x.w a0, fa0 ; RV32-NEXT: call __extendhfsf2@plt ; RV32-NEXT: call __fixsfdi@plt ; RV32-NEXT: lui a2, 524288 @@ -2311,6 +2310,7 @@ ; RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64-NEXT: .cfi_offset ra, -8 ; RV64-NEXT: fmv.x.w a0, fa0 +; RV64-NEXT: fmv.w.x fa0, a0 ; RV64-NEXT: call __extendhfsf2@plt ; RV64-NEXT: fcvt.l.s a0, fa0, rtz ; RV64-NEXT: lui a1, 524288 @@ -2341,7 +2341,6 @@ ; RV32-NEXT: .cfi_def_cfa_offset 16 ; RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32-NEXT: .cfi_offset ra, -4 -; RV32-NEXT: fmv.x.w a0, fa0 ; RV32-NEXT: call __extendhfsf2@plt ; RV32-NEXT: call __fixunssfdi@plt ; RV32-NEXT: seqz a1, a1 @@ -2358,6 +2357,7 @@ ; RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64-NEXT: .cfi_offset ra, -8 ; RV64-NEXT: fmv.x.w a0, fa0 +; RV64-NEXT: fmv.w.x fa0, a0 ; RV64-NEXT: call __extendhfsf2@plt ; RV64-NEXT: fcvt.lu.s a0, fa0, rtz ; RV64-NEXT: li a1, -1 @@ -2383,7 +2383,6 @@ ; RV32-NEXT: .cfi_def_cfa_offset 16 ; RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32-NEXT: .cfi_offset ra, -4 -; RV32-NEXT: fmv.x.w a0, fa0 ; RV32-NEXT: call __extendhfsf2@plt ; RV32-NEXT: call __fixsfdi@plt ; RV32-NEXT: slti a2, a1, 0 @@ -2411,6 +2410,7 @@ ; RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64-NEXT: .cfi_offset ra, -8 ; RV64-NEXT: fmv.x.w a0, fa0 +; RV64-NEXT: fmv.w.x fa0, a0 ; RV64-NEXT: call __extendhfsf2@plt ; RV64-NEXT: fcvt.l.s a0, fa0, rtz ; RV64-NEXT: li a1, -1 @@ -2782,7 +2782,6 @@ ; RV32-NEXT: .cfi_def_cfa_offset 16 ; RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32-NEXT: .cfi_offset ra, -4 -; RV32-NEXT: fmv.x.w a0, fa0 ; RV32-NEXT: call __extendhfsf2@plt ; RV32-NEXT: fcvt.w.s a0, fa0, rtz ; RV32-NEXT: lui a1, 8 @@ -2807,6 +2806,7 @@ ; RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64-NEXT: .cfi_offset ra, -8 ; RV64-NEXT: fmv.x.w a0, fa0 +; RV64-NEXT: fmv.w.x fa0, a0 ; RV64-NEXT: call __extendhfsf2@plt ; RV64-NEXT: fcvt.l.s a0, fa0, rtz ; RV64-NEXT: lui a1, 8 @@ -2838,7 +2838,6 @@ ; RV32-NEXT: .cfi_def_cfa_offset 16 ; RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32-NEXT: .cfi_offset ra, -4 -; RV32-NEXT: fmv.x.w a0, fa0 ; RV32-NEXT: call __extendhfsf2@plt ; RV32-NEXT: fcvt.wu.s a0, fa0, rtz ; RV32-NEXT: lui a1, 16 @@ -2858,6 +2857,7 @@ ; RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64-NEXT: .cfi_offset ra, -8 ; RV64-NEXT: fmv.x.w a0, fa0 +; RV64-NEXT: fmv.w.x fa0, a0 ; RV64-NEXT: call __extendhfsf2@plt ; RV64-NEXT: fcvt.lu.s a0, fa0, rtz ; RV64-NEXT: sext.w a0, a0 @@ -2884,7 +2884,6 @@ ; RV32-NEXT: .cfi_def_cfa_offset 16 ; RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32-NEXT: .cfi_offset ra, -4 -; RV32-NEXT: fmv.x.w a0, fa0 ; RV32-NEXT: call __extendhfsf2@plt ; RV32-NEXT: fcvt.w.s a0, fa0, rtz ; RV32-NEXT: lui a1, 16 @@ -2907,6 +2906,7 @@ ; RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64-NEXT: .cfi_offset ra, -8 ; RV64-NEXT: fmv.x.w a0, fa0 +; RV64-NEXT: fmv.w.x fa0, a0 ; RV64-NEXT: call __extendhfsf2@plt ; RV64-NEXT: fcvt.l.s a0, fa0, rtz ; RV64-NEXT: lui a1, 16 @@ -3708,7 +3708,6 @@ ; RV32-NEXT: .cfi_def_cfa_offset 32 ; RV32-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32-NEXT: .cfi_offset ra, -4 -; RV32-NEXT: fmv.x.w a0, fa0 ; RV32-NEXT: call __extendhfsf2@plt ; RV32-NEXT: addi a0, sp, 8 ; RV32-NEXT: call __fixsfti@plt @@ -3801,6 +3800,7 @@ ; RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64-NEXT: .cfi_offset ra, -8 ; RV64-NEXT: fmv.x.w a0, fa0 +; RV64-NEXT: fmv.w.x fa0, a0 ; RV64-NEXT: call __extendhfsf2@plt ; RV64-NEXT: call __fixsfti@plt ; RV64-NEXT: li a2, -1 @@ -3858,7 +3858,6 @@ ; RV32-NEXT: .cfi_def_cfa_offset 32 ; RV32-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32-NEXT: .cfi_offset ra, -4 -; RV32-NEXT: fmv.x.w a0, fa0 ; RV32-NEXT: call __extendhfsf2@plt ; RV32-NEXT: addi a0, sp, 8 ; RV32-NEXT: call __fixunssfti@plt @@ -3888,6 +3887,7 @@ ; RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64-NEXT: .cfi_offset ra, -8 ; RV64-NEXT: fmv.x.w a0, fa0 +; RV64-NEXT: fmv.w.x fa0, a0 ; RV64-NEXT: call __extendhfsf2@plt ; RV64-NEXT: call __fixunssfti@plt ; RV64-NEXT: snez a2, a1 @@ -3914,7 +3914,6 @@ ; RV32-NEXT: .cfi_def_cfa_offset 32 ; RV32-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32-NEXT: .cfi_offset ra, -4 -; RV32-NEXT: fmv.x.w a0, fa0 ; RV32-NEXT: call __extendhfsf2@plt ; RV32-NEXT: addi a0, sp, 8 ; RV32-NEXT: call __fixsfti@plt @@ -3986,6 +3985,7 @@ ; RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64-NEXT: .cfi_offset ra, -8 ; RV64-NEXT: fmv.x.w a0, fa0 +; RV64-NEXT: fmv.w.x fa0, a0 ; RV64-NEXT: call __extendhfsf2@plt ; RV64-NEXT: call __fixsfti@plt ; RV64-NEXT: mv a2, a1 Index: llvm/test/CodeGen/RISCV/half-fpext.ll =================================================================== --- llvm/test/CodeGen/RISCV/half-fpext.ll +++ llvm/test/CodeGen/RISCV/half-fpext.ll @@ -31,7 +31,12 @@ ; ; RV32ID-ILP32-LABEL: half_to_float: ; RV32ID-ILP32: # %bb.0: -; RV32ID-ILP32-NEXT: tail __extendhfsf2@plt +; RV32ID-ILP32-NEXT: addi sp, sp, -16 +; RV32ID-ILP32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill +; RV32ID-ILP32-NEXT: call __extendhfsf2@plt +; RV32ID-ILP32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32ID-ILP32-NEXT: addi sp, sp, 16 +; RV32ID-ILP32-NEXT: ret ; ; RV64ID-LP64-LABEL: half_to_float: ; RV64ID-LP64: # %bb.0: @@ -44,13 +49,23 @@ ; ; RV32ID-ILP32D-LABEL: half_to_float: ; RV32ID-ILP32D: # %bb.0: -; RV32ID-ILP32D-NEXT: fmv.x.w a0, fa0 -; RV32ID-ILP32D-NEXT: tail __extendhfsf2@plt +; RV32ID-ILP32D-NEXT: addi sp, sp, -16 +; RV32ID-ILP32D-NEXT: sw ra, 12(sp) # 4-byte Folded Spill +; RV32ID-ILP32D-NEXT: call __extendhfsf2@plt +; RV32ID-ILP32D-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32ID-ILP32D-NEXT: addi sp, sp, 16 +; RV32ID-ILP32D-NEXT: ret ; ; RV64ID-LP64D-LABEL: half_to_float: ; RV64ID-LP64D: # %bb.0: +; RV64ID-LP64D-NEXT: addi sp, sp, -16 +; RV64ID-LP64D-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64ID-LP64D-NEXT: fmv.x.w a0, fa0 -; RV64ID-LP64D-NEXT: tail __extendhfsf2@plt +; RV64ID-LP64D-NEXT: fmv.w.x fa0, a0 +; RV64ID-LP64D-NEXT: call __extendhfsf2@plt +; RV64ID-LP64D-NEXT: ld ra, 8(sp) # 8-byte Folded Reload +; RV64ID-LP64D-NEXT: addi sp, sp, 16 +; RV64ID-LP64D-NEXT: ret %1 = fpext half %a to float ret float %1 } @@ -112,7 +127,6 @@ ; RV32ID-ILP32D: # %bb.0: ; RV32ID-ILP32D-NEXT: addi sp, sp, -16 ; RV32ID-ILP32D-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32ID-ILP32D-NEXT: fmv.x.w a0, fa0 ; RV32ID-ILP32D-NEXT: call __extendhfsf2@plt ; RV32ID-ILP32D-NEXT: fcvt.d.s fa0, fa0 ; RV32ID-ILP32D-NEXT: lw ra, 12(sp) # 4-byte Folded Reload @@ -124,6 +138,7 @@ ; RV64ID-LP64D-NEXT: addi sp, sp, -16 ; RV64ID-LP64D-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64ID-LP64D-NEXT: fmv.x.w a0, fa0 +; RV64ID-LP64D-NEXT: fmv.w.x fa0, a0 ; RV64ID-LP64D-NEXT: call __extendhfsf2@plt ; RV64ID-LP64D-NEXT: fcvt.d.s fa0, fa0 ; RV64ID-LP64D-NEXT: ld ra, 8(sp) # 8-byte Folded Reload Index: llvm/test/CodeGen/RISCV/half-fptrunc.ll =================================================================== --- llvm/test/CodeGen/RISCV/half-fptrunc.ll +++ llvm/test/CodeGen/RISCV/half-fptrunc.ll @@ -52,6 +52,7 @@ ; RV32ID-ILP32D-NEXT: addi sp, sp, -16 ; RV32ID-ILP32D-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32ID-ILP32D-NEXT: call __truncsfhf2@plt +; RV32ID-ILP32D-NEXT: fmv.x.w a0, fa0 ; RV32ID-ILP32D-NEXT: lui a1, 1048560 ; RV32ID-ILP32D-NEXT: or a0, a0, a1 ; RV32ID-ILP32D-NEXT: fmv.w.x fa0, a0 @@ -64,6 +65,7 @@ ; RV64ID-LP64D-NEXT: addi sp, sp, -16 ; RV64ID-LP64D-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64ID-LP64D-NEXT: call __truncsfhf2@plt +; RV64ID-LP64D-NEXT: fmv.x.w a0, fa0 ; RV64ID-LP64D-NEXT: lui a1, 1048560 ; RV64ID-LP64D-NEXT: or a0, a0, a1 ; RV64ID-LP64D-NEXT: fmv.w.x fa0, a0 @@ -120,6 +122,7 @@ ; RV32ID-ILP32D-NEXT: addi sp, sp, -16 ; RV32ID-ILP32D-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32ID-ILP32D-NEXT: call __truncdfhf2@plt +; RV32ID-ILP32D-NEXT: fmv.x.w a0, fa0 ; RV32ID-ILP32D-NEXT: lui a1, 1048560 ; RV32ID-ILP32D-NEXT: or a0, a0, a1 ; RV32ID-ILP32D-NEXT: fmv.w.x fa0, a0 @@ -132,6 +135,7 @@ ; RV64ID-LP64D-NEXT: addi sp, sp, -16 ; RV64ID-LP64D-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64ID-LP64D-NEXT: call __truncdfhf2@plt +; RV64ID-LP64D-NEXT: fmv.x.w a0, fa0 ; RV64ID-LP64D-NEXT: lui a1, 1048560 ; RV64ID-LP64D-NEXT: or a0, a0, a1 ; RV64ID-LP64D-NEXT: fmv.w.x fa0, a0 Index: llvm/test/CodeGen/RISCV/libcall-tail-calls.ll =================================================================== --- llvm/test/CodeGen/RISCV/libcall-tail-calls.ll +++ llvm/test/CodeGen/RISCV/libcall-tail-calls.ll @@ -120,10 +120,10 @@ ; RV32IFD-ILP32D: # %bb.0: ; RV32IFD-ILP32D-NEXT: addi sp, sp, -16 ; RV32IFD-ILP32D-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32IFD-ILP32D-NEXT: fmv.x.w a0, fa0 ; RV32IFD-ILP32D-NEXT: call __extendhfsf2@plt ; RV32IFD-ILP32D-NEXT: call sinf@plt ; RV32IFD-ILP32D-NEXT: call __truncsfhf2@plt +; RV32IFD-ILP32D-NEXT: fmv.x.w a0, fa0 ; RV32IFD-ILP32D-NEXT: lui a1, 1048560 ; RV32IFD-ILP32D-NEXT: or a0, a0, a1 ; RV32IFD-ILP32D-NEXT: fmv.w.x fa0, a0 @@ -135,10 +135,10 @@ ; RV32IF-ILP32F: # %bb.0: ; RV32IF-ILP32F-NEXT: addi sp, sp, -16 ; RV32IF-ILP32F-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32IF-ILP32F-NEXT: fmv.x.w a0, fa0 ; RV32IF-ILP32F-NEXT: call __extendhfsf2@plt ; RV32IF-ILP32F-NEXT: call sinf@plt ; RV32IF-ILP32F-NEXT: call __truncsfhf2@plt +; RV32IF-ILP32F-NEXT: fmv.x.w a0, fa0 ; RV32IF-ILP32F-NEXT: lui a1, 1048560 ; RV32IF-ILP32F-NEXT: or a0, a0, a1 ; RV32IF-ILP32F-NEXT: fmv.w.x fa0, a0 @@ -177,9 +177,11 @@ ; RV64IFD-LP64D-NEXT: addi sp, sp, -16 ; RV64IFD-LP64D-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64IFD-LP64D-NEXT: fmv.x.w a0, fa0 +; RV64IFD-LP64D-NEXT: fmv.w.x fa0, a0 ; RV64IFD-LP64D-NEXT: call __extendhfsf2@plt ; RV64IFD-LP64D-NEXT: call sinf@plt ; RV64IFD-LP64D-NEXT: call __truncsfhf2@plt +; RV64IFD-LP64D-NEXT: fmv.x.w a0, fa0 ; RV64IFD-LP64D-NEXT: lui a1, 1048560 ; RV64IFD-LP64D-NEXT: or a0, a0, a1 ; RV64IFD-LP64D-NEXT: fmv.w.x fa0, a0 @@ -192,9 +194,11 @@ ; RV64IF-LP64F-NEXT: addi sp, sp, -16 ; RV64IF-LP64F-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64IF-LP64F-NEXT: fmv.x.w a0, fa0 +; RV64IF-LP64F-NEXT: fmv.w.x fa0, a0 ; RV64IF-LP64F-NEXT: call __extendhfsf2@plt ; RV64IF-LP64F-NEXT: call sinf@plt ; RV64IF-LP64F-NEXT: call __truncsfhf2@plt +; RV64IF-LP64F-NEXT: fmv.x.w a0, fa0 ; RV64IF-LP64F-NEXT: lui a1, 1048560 ; RV64IF-LP64F-NEXT: or a0, a0, a1 ; RV64IF-LP64F-NEXT: fmv.w.x fa0, a0 Index: llvm/test/CodeGen/RISCV/rvv/fpclamptosat_vec.ll =================================================================== --- llvm/test/CodeGen/RISCV/rvv/fpclamptosat_vec.ll +++ llvm/test/CodeGen/RISCV/rvv/fpclamptosat_vec.ll @@ -369,17 +369,17 @@ ; CHECK-NOV-NEXT: lhu s3, 8(a1) ; CHECK-NOV-NEXT: lhu a1, 16(a1) ; CHECK-NOV-NEXT: mv s0, a0 -; CHECK-NOV-NEXT: mv a0, a1 +; CHECK-NOV-NEXT: fmv.w.x fa0, a1 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs2, fa0 -; CHECK-NOV-NEXT: mv a0, s3 +; CHECK-NOV-NEXT: fmv.w.x fa0, s3 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs1, fa0 -; CHECK-NOV-NEXT: mv a0, s2 +; CHECK-NOV-NEXT: fmv.w.x fa0, s2 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs0, fa0 -; CHECK-NOV-NEXT: fcvt.l.s s2, fs2, rtz -; CHECK-NOV-NEXT: mv a0, s1 +; CHECK-NOV-NEXT: fmv.w.x fa0, s1 +; CHECK-NOV-NEXT: fcvt.l.s s1, fs2, rtz ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-NOV-NEXT: lui a1, 524288 @@ -387,7 +387,7 @@ ; CHECK-NOV-NEXT: bge a0, a4, .LBB6_10 ; CHECK-NOV-NEXT: # %bb.1: # %entry ; CHECK-NOV-NEXT: fcvt.l.s a2, fs1, rtz -; CHECK-NOV-NEXT: bge s2, a4, .LBB6_11 +; CHECK-NOV-NEXT: bge s1, a4, .LBB6_11 ; CHECK-NOV-NEXT: .LBB6_2: # %entry ; CHECK-NOV-NEXT: fcvt.l.s a3, fs0, rtz ; CHECK-NOV-NEXT: bge a2, a4, .LBB6_12 @@ -398,14 +398,14 @@ ; CHECK-NOV-NEXT: .LBB6_5: # %entry ; CHECK-NOV-NEXT: bge a1, a2, .LBB6_15 ; CHECK-NOV-NEXT: .LBB6_6: # %entry -; CHECK-NOV-NEXT: bge a1, s2, .LBB6_16 +; CHECK-NOV-NEXT: bge a1, s1, .LBB6_16 ; CHECK-NOV-NEXT: .LBB6_7: # %entry ; CHECK-NOV-NEXT: blt a1, a0, .LBB6_9 ; CHECK-NOV-NEXT: .LBB6_8: # %entry ; CHECK-NOV-NEXT: lui a0, 524288 ; CHECK-NOV-NEXT: .LBB6_9: # %entry ; CHECK-NOV-NEXT: sw a0, 12(s0) -; CHECK-NOV-NEXT: sw s2, 8(s0) +; CHECK-NOV-NEXT: sw s1, 8(s0) ; CHECK-NOV-NEXT: sw a2, 4(s0) ; CHECK-NOV-NEXT: sw a3, 0(s0) ; CHECK-NOV-NEXT: ld ra, 56(sp) # 8-byte Folded Reload @@ -421,9 +421,9 @@ ; CHECK-NOV-NEXT: .LBB6_10: # %entry ; CHECK-NOV-NEXT: mv a0, a4 ; CHECK-NOV-NEXT: fcvt.l.s a2, fs1, rtz -; CHECK-NOV-NEXT: blt s2, a4, .LBB6_2 +; CHECK-NOV-NEXT: blt s1, a4, .LBB6_2 ; CHECK-NOV-NEXT: .LBB6_11: # %entry -; CHECK-NOV-NEXT: mv s2, a4 +; CHECK-NOV-NEXT: mv s1, a4 ; CHECK-NOV-NEXT: fcvt.l.s a3, fs0, rtz ; CHECK-NOV-NEXT: blt a2, a4, .LBB6_3 ; CHECK-NOV-NEXT: .LBB6_12: # %entry @@ -437,9 +437,9 @@ ; CHECK-NOV-NEXT: blt a1, a2, .LBB6_6 ; CHECK-NOV-NEXT: .LBB6_15: # %entry ; CHECK-NOV-NEXT: lui a2, 524288 -; CHECK-NOV-NEXT: blt a1, s2, .LBB6_7 +; CHECK-NOV-NEXT: blt a1, s1, .LBB6_7 ; CHECK-NOV-NEXT: .LBB6_16: # %entry -; CHECK-NOV-NEXT: lui s2, 524288 +; CHECK-NOV-NEXT: lui s1, 524288 ; CHECK-NOV-NEXT: bge a1, a0, .LBB6_8 ; CHECK-NOV-NEXT: j .LBB6_9 ; @@ -463,13 +463,14 @@ ; CHECK-V-NEXT: lhu s1, 16(a0) ; CHECK-V-NEXT: lhu s2, 0(a0) ; CHECK-V-NEXT: lhu a0, 8(a0) +; CHECK-V-NEXT: fmv.w.x fa0, a0 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e64, m1, ta, ma ; CHECK-V-NEXT: vmv.s.x v8, a0 ; CHECK-V-NEXT: addi a0, sp, 16 ; CHECK-V-NEXT: vs2r.v v8, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s2 +; CHECK-V-NEXT: fmv.w.x fa0, s2 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e64, m1, ta, ma @@ -479,7 +480,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v8, v10, 1 ; CHECK-V-NEXT: vs2r.v v8, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s1 +; CHECK-V-NEXT: fmv.w.x fa0, s1 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e64, m1, ta, ma @@ -489,7 +490,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v10, v8, 2 ; CHECK-V-NEXT: vs2r.v v10, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s0 +; CHECK-V-NEXT: fmv.w.x fa0, s0 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 4, e64, m2, ta, ma @@ -548,17 +549,17 @@ ; CHECK-NOV-NEXT: lhu s3, 16(a1) ; CHECK-NOV-NEXT: lhu a1, 8(a1) ; CHECK-NOV-NEXT: mv s0, a0 -; CHECK-NOV-NEXT: mv a0, a1 +; CHECK-NOV-NEXT: fmv.w.x fa0, a1 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs2, fa0 -; CHECK-NOV-NEXT: mv a0, s3 +; CHECK-NOV-NEXT: fmv.w.x fa0, s3 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs1, fa0 -; CHECK-NOV-NEXT: mv a0, s2 +; CHECK-NOV-NEXT: fmv.w.x fa0, s2 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs0, fa0 -; CHECK-NOV-NEXT: fcvt.lu.s s2, fs2, rtz -; CHECK-NOV-NEXT: mv a0, s1 +; CHECK-NOV-NEXT: fmv.w.x fa0, s1 +; CHECK-NOV-NEXT: fcvt.lu.s s1, fs2, rtz ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fcvt.lu.s a0, fa0, rtz ; CHECK-NOV-NEXT: li a1, -1 @@ -566,7 +567,7 @@ ; CHECK-NOV-NEXT: bgeu a0, a1, .LBB7_6 ; CHECK-NOV-NEXT: # %bb.1: # %entry ; CHECK-NOV-NEXT: fcvt.lu.s a2, fs1, rtz -; CHECK-NOV-NEXT: bgeu s2, a1, .LBB7_7 +; CHECK-NOV-NEXT: bgeu s1, a1, .LBB7_7 ; CHECK-NOV-NEXT: .LBB7_2: # %entry ; CHECK-NOV-NEXT: fcvt.lu.s a3, fs0, rtz ; CHECK-NOV-NEXT: bgeu a2, a1, .LBB7_8 @@ -577,7 +578,7 @@ ; CHECK-NOV-NEXT: .LBB7_5: # %entry ; CHECK-NOV-NEXT: sw a3, 12(s0) ; CHECK-NOV-NEXT: sw a2, 8(s0) -; CHECK-NOV-NEXT: sw s2, 4(s0) +; CHECK-NOV-NEXT: sw s1, 4(s0) ; CHECK-NOV-NEXT: sw a0, 0(s0) ; CHECK-NOV-NEXT: ld ra, 56(sp) # 8-byte Folded Reload ; CHECK-NOV-NEXT: ld s0, 48(sp) # 8-byte Folded Reload @@ -592,9 +593,9 @@ ; CHECK-NOV-NEXT: .LBB7_6: # %entry ; CHECK-NOV-NEXT: mv a0, a1 ; CHECK-NOV-NEXT: fcvt.lu.s a2, fs1, rtz -; CHECK-NOV-NEXT: bltu s2, a1, .LBB7_2 +; CHECK-NOV-NEXT: bltu s1, a1, .LBB7_2 ; CHECK-NOV-NEXT: .LBB7_7: # %entry -; CHECK-NOV-NEXT: mv s2, a1 +; CHECK-NOV-NEXT: mv s1, a1 ; CHECK-NOV-NEXT: fcvt.lu.s a3, fs0, rtz ; CHECK-NOV-NEXT: bltu a2, a1, .LBB7_3 ; CHECK-NOV-NEXT: .LBB7_8: # %entry @@ -622,13 +623,14 @@ ; CHECK-V-NEXT: lhu s1, 16(a0) ; CHECK-V-NEXT: lhu s2, 0(a0) ; CHECK-V-NEXT: lhu a0, 8(a0) +; CHECK-V-NEXT: fmv.w.x fa0, a0 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e64, m1, ta, ma ; CHECK-V-NEXT: vmv.s.x v8, a0 ; CHECK-V-NEXT: addi a0, sp, 16 ; CHECK-V-NEXT: vs2r.v v8, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s2 +; CHECK-V-NEXT: fmv.w.x fa0, s2 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e64, m1, ta, ma @@ -638,7 +640,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v8, v10, 1 ; CHECK-V-NEXT: vs2r.v v8, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s1 +; CHECK-V-NEXT: fmv.w.x fa0, s1 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e64, m1, ta, ma @@ -648,7 +650,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v10, v8, 2 ; CHECK-V-NEXT: vs2r.v v10, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s0 +; CHECK-V-NEXT: fmv.w.x fa0, s0 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 4, e64, m2, ta, ma @@ -704,17 +706,17 @@ ; CHECK-NOV-NEXT: lhu s3, 16(a1) ; CHECK-NOV-NEXT: lhu a1, 8(a1) ; CHECK-NOV-NEXT: mv s0, a0 -; CHECK-NOV-NEXT: mv a0, a1 +; CHECK-NOV-NEXT: fmv.w.x fa0, a1 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs2, fa0 -; CHECK-NOV-NEXT: mv a0, s3 +; CHECK-NOV-NEXT: fmv.w.x fa0, s3 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs1, fa0 -; CHECK-NOV-NEXT: mv a0, s2 +; CHECK-NOV-NEXT: fmv.w.x fa0, s2 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs0, fa0 -; CHECK-NOV-NEXT: fcvt.l.s s2, fs2, rtz -; CHECK-NOV-NEXT: mv a0, s1 +; CHECK-NOV-NEXT: fmv.w.x fa0, s1 +; CHECK-NOV-NEXT: fcvt.l.s s1, fs2, rtz ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-NOV-NEXT: li a2, -1 @@ -722,7 +724,7 @@ ; CHECK-NOV-NEXT: bge a0, a2, .LBB8_6 ; CHECK-NOV-NEXT: # %bb.1: # %entry ; CHECK-NOV-NEXT: fcvt.l.s a1, fs1, rtz -; CHECK-NOV-NEXT: bge s2, a2, .LBB8_7 +; CHECK-NOV-NEXT: bge s1, a2, .LBB8_7 ; CHECK-NOV-NEXT: .LBB8_2: # %entry ; CHECK-NOV-NEXT: fcvt.l.s a3, fs0, rtz ; CHECK-NOV-NEXT: bge a1, a2, .LBB8_8 @@ -733,12 +735,12 @@ ; CHECK-NOV-NEXT: .LBB8_5: # %entry ; CHECK-NOV-NEXT: sgtz a2, a3 ; CHECK-NOV-NEXT: sgtz a4, a1 -; CHECK-NOV-NEXT: sgtz a5, s2 +; CHECK-NOV-NEXT: sgtz a5, s1 ; CHECK-NOV-NEXT: sgtz a6, a0 ; CHECK-NOV-NEXT: negw a6, a6 ; CHECK-NOV-NEXT: and a0, a6, a0 ; CHECK-NOV-NEXT: negw a5, a5 -; CHECK-NOV-NEXT: and a5, a5, s2 +; CHECK-NOV-NEXT: and a5, a5, s1 ; CHECK-NOV-NEXT: negw a4, a4 ; CHECK-NOV-NEXT: and a1, a4, a1 ; CHECK-NOV-NEXT: negw a2, a2 @@ -760,9 +762,9 @@ ; CHECK-NOV-NEXT: .LBB8_6: # %entry ; CHECK-NOV-NEXT: mv a0, a2 ; CHECK-NOV-NEXT: fcvt.l.s a1, fs1, rtz -; CHECK-NOV-NEXT: blt s2, a2, .LBB8_2 +; CHECK-NOV-NEXT: blt s1, a2, .LBB8_2 ; CHECK-NOV-NEXT: .LBB8_7: # %entry -; CHECK-NOV-NEXT: mv s2, a2 +; CHECK-NOV-NEXT: mv s1, a2 ; CHECK-NOV-NEXT: fcvt.l.s a3, fs0, rtz ; CHECK-NOV-NEXT: blt a1, a2, .LBB8_3 ; CHECK-NOV-NEXT: .LBB8_8: # %entry @@ -790,13 +792,14 @@ ; CHECK-V-NEXT: lhu s1, 16(a0) ; CHECK-V-NEXT: lhu s2, 0(a0) ; CHECK-V-NEXT: lhu a0, 8(a0) +; CHECK-V-NEXT: fmv.w.x fa0, a0 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e64, m1, ta, ma ; CHECK-V-NEXT: vmv.s.x v8, a0 ; CHECK-V-NEXT: addi a0, sp, 16 ; CHECK-V-NEXT: vs2r.v v8, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s2 +; CHECK-V-NEXT: fmv.w.x fa0, s2 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e64, m1, ta, ma @@ -806,7 +809,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v8, v10, 1 ; CHECK-V-NEXT: vs2r.v v8, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s1 +; CHECK-V-NEXT: fmv.w.x fa0, s1 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e64, m1, ta, ma @@ -816,7 +819,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v10, v8, 2 ; CHECK-V-NEXT: vs2r.v v10, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s0 +; CHECK-V-NEXT: fmv.w.x fa0, s0 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 4, e64, m2, ta, ma @@ -1237,29 +1240,29 @@ ; CHECK-NOV-NEXT: lhu s7, 40(a1) ; CHECK-NOV-NEXT: lhu a1, 48(a1) ; CHECK-NOV-NEXT: mv s0, a0 -; CHECK-NOV-NEXT: mv a0, a1 +; CHECK-NOV-NEXT: fmv.w.x fa0, a1 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs6, fa0 -; CHECK-NOV-NEXT: mv a0, s7 +; CHECK-NOV-NEXT: fmv.w.x fa0, s7 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs5, fa0 -; CHECK-NOV-NEXT: mv a0, s6 +; CHECK-NOV-NEXT: fmv.w.x fa0, s6 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs4, fa0 -; CHECK-NOV-NEXT: mv a0, s5 +; CHECK-NOV-NEXT: fmv.w.x fa0, s5 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs3, fa0 -; CHECK-NOV-NEXT: mv a0, s4 +; CHECK-NOV-NEXT: fmv.w.x fa0, s4 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs2, fa0 -; CHECK-NOV-NEXT: mv a0, s3 +; CHECK-NOV-NEXT: fmv.w.x fa0, s3 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs1, fa0 -; CHECK-NOV-NEXT: mv a0, s2 +; CHECK-NOV-NEXT: fmv.w.x fa0, s2 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs0, fa0 -; CHECK-NOV-NEXT: fcvt.l.s s2, fs6, rtz -; CHECK-NOV-NEXT: mv a0, s1 +; CHECK-NOV-NEXT: fmv.w.x fa0, s1 +; CHECK-NOV-NEXT: fcvt.l.s s1, fs6, rtz ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-NOV-NEXT: lui a7, 8 @@ -1267,7 +1270,7 @@ ; CHECK-NOV-NEXT: bge a0, a7, .LBB15_18 ; CHECK-NOV-NEXT: # %bb.1: # %entry ; CHECK-NOV-NEXT: fcvt.l.s a1, fs5, rtz -; CHECK-NOV-NEXT: bge s2, a7, .LBB15_19 +; CHECK-NOV-NEXT: bge s1, a7, .LBB15_19 ; CHECK-NOV-NEXT: .LBB15_2: # %entry ; CHECK-NOV-NEXT: fcvt.l.s a2, fs4, rtz ; CHECK-NOV-NEXT: bge a1, a7, .LBB15_20 @@ -1299,14 +1302,14 @@ ; CHECK-NOV-NEXT: .LBB15_13: # %entry ; CHECK-NOV-NEXT: bge a7, a1, .LBB15_31 ; CHECK-NOV-NEXT: .LBB15_14: # %entry -; CHECK-NOV-NEXT: bge a7, s2, .LBB15_32 +; CHECK-NOV-NEXT: bge a7, s1, .LBB15_32 ; CHECK-NOV-NEXT: .LBB15_15: # %entry ; CHECK-NOV-NEXT: blt a7, a0, .LBB15_17 ; CHECK-NOV-NEXT: .LBB15_16: # %entry ; CHECK-NOV-NEXT: lui a0, 1048568 ; CHECK-NOV-NEXT: .LBB15_17: # %entry ; CHECK-NOV-NEXT: sh a0, 14(s0) -; CHECK-NOV-NEXT: sh s2, 12(s0) +; CHECK-NOV-NEXT: sh s1, 12(s0) ; CHECK-NOV-NEXT: sh a1, 10(s0) ; CHECK-NOV-NEXT: sh a2, 8(s0) ; CHECK-NOV-NEXT: sh a3, 6(s0) @@ -1334,9 +1337,9 @@ ; CHECK-NOV-NEXT: .LBB15_18: # %entry ; CHECK-NOV-NEXT: mv a0, a7 ; CHECK-NOV-NEXT: fcvt.l.s a1, fs5, rtz -; CHECK-NOV-NEXT: blt s2, a7, .LBB15_2 +; CHECK-NOV-NEXT: blt s1, a7, .LBB15_2 ; CHECK-NOV-NEXT: .LBB15_19: # %entry -; CHECK-NOV-NEXT: mv s2, a7 +; CHECK-NOV-NEXT: mv s1, a7 ; CHECK-NOV-NEXT: fcvt.l.s a2, fs4, rtz ; CHECK-NOV-NEXT: blt a1, a7, .LBB15_3 ; CHECK-NOV-NEXT: .LBB15_20: # %entry @@ -1379,9 +1382,9 @@ ; CHECK-NOV-NEXT: blt a7, a1, .LBB15_14 ; CHECK-NOV-NEXT: .LBB15_31: # %entry ; CHECK-NOV-NEXT: lui a1, 1048568 -; CHECK-NOV-NEXT: blt a7, s2, .LBB15_15 +; CHECK-NOV-NEXT: blt a7, s1, .LBB15_15 ; CHECK-NOV-NEXT: .LBB15_32: # %entry -; CHECK-NOV-NEXT: lui s2, 1048568 +; CHECK-NOV-NEXT: lui s1, 1048568 ; CHECK-NOV-NEXT: bge a7, a0, .LBB15_16 ; CHECK-NOV-NEXT: j .LBB15_17 ; @@ -1417,13 +1420,14 @@ ; CHECK-V-NEXT: lhu s5, 16(a0) ; CHECK-V-NEXT: lhu s6, 0(a0) ; CHECK-V-NEXT: lhu a0, 8(a0) +; CHECK-V-NEXT: fmv.w.x fa0, a0 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma ; CHECK-V-NEXT: vmv.s.x v8, a0 ; CHECK-V-NEXT: addi a0, sp, 16 ; CHECK-V-NEXT: vs2r.v v8, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s6 +; CHECK-V-NEXT: fmv.w.x fa0, s6 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma @@ -1433,7 +1437,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v8, v10, 1 ; CHECK-V-NEXT: vs2r.v v8, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s5 +; CHECK-V-NEXT: fmv.w.x fa0, s5 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma @@ -1443,7 +1447,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v10, v8, 2 ; CHECK-V-NEXT: vs2r.v v10, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s4 +; CHECK-V-NEXT: fmv.w.x fa0, s4 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma @@ -1453,7 +1457,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v10, v8, 3 ; CHECK-V-NEXT: vs2r.v v10, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s3 +; CHECK-V-NEXT: fmv.w.x fa0, s3 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma @@ -1463,7 +1467,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v10, v8, 4 ; CHECK-V-NEXT: vs2r.v v10, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s2 +; CHECK-V-NEXT: fmv.w.x fa0, s2 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma @@ -1473,7 +1477,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v10, v8, 5 ; CHECK-V-NEXT: vs2r.v v10, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s1 +; CHECK-V-NEXT: fmv.w.x fa0, s1 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma @@ -1483,7 +1487,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v10, v8, 6 ; CHECK-V-NEXT: vs2r.v v10, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s0 +; CHECK-V-NEXT: fmv.w.x fa0, s0 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 8, e32, m2, ta, ma @@ -1567,29 +1571,29 @@ ; CHECK-NOV-NEXT: lhu s7, 16(a1) ; CHECK-NOV-NEXT: lhu a1, 8(a1) ; CHECK-NOV-NEXT: mv s0, a0 -; CHECK-NOV-NEXT: mv a0, a1 +; CHECK-NOV-NEXT: fmv.w.x fa0, a1 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs6, fa0 -; CHECK-NOV-NEXT: mv a0, s7 +; CHECK-NOV-NEXT: fmv.w.x fa0, s7 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs5, fa0 -; CHECK-NOV-NEXT: mv a0, s6 +; CHECK-NOV-NEXT: fmv.w.x fa0, s6 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs4, fa0 -; CHECK-NOV-NEXT: mv a0, s5 +; CHECK-NOV-NEXT: fmv.w.x fa0, s5 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs3, fa0 -; CHECK-NOV-NEXT: mv a0, s4 +; CHECK-NOV-NEXT: fmv.w.x fa0, s4 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs2, fa0 -; CHECK-NOV-NEXT: mv a0, s3 +; CHECK-NOV-NEXT: fmv.w.x fa0, s3 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs1, fa0 -; CHECK-NOV-NEXT: mv a0, s2 +; CHECK-NOV-NEXT: fmv.w.x fa0, s2 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs0, fa0 -; CHECK-NOV-NEXT: fcvt.lu.s s2, fs6, rtz -; CHECK-NOV-NEXT: mv a0, s1 +; CHECK-NOV-NEXT: fmv.w.x fa0, s1 +; CHECK-NOV-NEXT: fcvt.lu.s s1, fs6, rtz ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fcvt.lu.s a0, fa0, rtz ; CHECK-NOV-NEXT: lui a1, 16 @@ -1597,7 +1601,7 @@ ; CHECK-NOV-NEXT: bgeu a0, a1, .LBB16_10 ; CHECK-NOV-NEXT: # %bb.1: # %entry ; CHECK-NOV-NEXT: fcvt.lu.s a2, fs5, rtz -; CHECK-NOV-NEXT: bgeu s2, a1, .LBB16_11 +; CHECK-NOV-NEXT: bgeu s1, a1, .LBB16_11 ; CHECK-NOV-NEXT: .LBB16_2: # %entry ; CHECK-NOV-NEXT: fcvt.lu.s a3, fs4, rtz ; CHECK-NOV-NEXT: bgeu a2, a1, .LBB16_12 @@ -1624,7 +1628,7 @@ ; CHECK-NOV-NEXT: sh a4, 8(s0) ; CHECK-NOV-NEXT: sh a3, 6(s0) ; CHECK-NOV-NEXT: sh a2, 4(s0) -; CHECK-NOV-NEXT: sh s2, 2(s0) +; CHECK-NOV-NEXT: sh s1, 2(s0) ; CHECK-NOV-NEXT: sh a0, 0(s0) ; CHECK-NOV-NEXT: ld ra, 120(sp) # 8-byte Folded Reload ; CHECK-NOV-NEXT: ld s0, 112(sp) # 8-byte Folded Reload @@ -1647,9 +1651,9 @@ ; CHECK-NOV-NEXT: .LBB16_10: # %entry ; CHECK-NOV-NEXT: mv a0, a1 ; CHECK-NOV-NEXT: fcvt.lu.s a2, fs5, rtz -; CHECK-NOV-NEXT: bltu s2, a1, .LBB16_2 +; CHECK-NOV-NEXT: bltu s1, a1, .LBB16_2 ; CHECK-NOV-NEXT: .LBB16_11: # %entry -; CHECK-NOV-NEXT: mv s2, a1 +; CHECK-NOV-NEXT: mv s1, a1 ; CHECK-NOV-NEXT: fcvt.lu.s a3, fs4, rtz ; CHECK-NOV-NEXT: bltu a2, a1, .LBB16_3 ; CHECK-NOV-NEXT: .LBB16_12: # %entry @@ -1705,13 +1709,14 @@ ; CHECK-V-NEXT: lhu s5, 16(a0) ; CHECK-V-NEXT: lhu s6, 0(a0) ; CHECK-V-NEXT: lhu a0, 8(a0) +; CHECK-V-NEXT: fmv.w.x fa0, a0 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma ; CHECK-V-NEXT: vmv.s.x v8, a0 ; CHECK-V-NEXT: addi a0, sp, 16 ; CHECK-V-NEXT: vs2r.v v8, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s6 +; CHECK-V-NEXT: fmv.w.x fa0, s6 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma @@ -1721,7 +1726,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v8, v10, 1 ; CHECK-V-NEXT: vs2r.v v8, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s5 +; CHECK-V-NEXT: fmv.w.x fa0, s5 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma @@ -1731,7 +1736,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v10, v8, 2 ; CHECK-V-NEXT: vs2r.v v10, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s4 +; CHECK-V-NEXT: fmv.w.x fa0, s4 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma @@ -1741,7 +1746,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v10, v8, 3 ; CHECK-V-NEXT: vs2r.v v10, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s3 +; CHECK-V-NEXT: fmv.w.x fa0, s3 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma @@ -1751,7 +1756,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v10, v8, 4 ; CHECK-V-NEXT: vs2r.v v10, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s2 +; CHECK-V-NEXT: fmv.w.x fa0, s2 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma @@ -1761,7 +1766,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v10, v8, 5 ; CHECK-V-NEXT: vs2r.v v10, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s1 +; CHECK-V-NEXT: fmv.w.x fa0, s1 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma @@ -1771,7 +1776,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v10, v8, 6 ; CHECK-V-NEXT: vs2r.v v10, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s0 +; CHECK-V-NEXT: fmv.w.x fa0, s0 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 8, e32, m2, ta, ma @@ -1851,29 +1856,29 @@ ; CHECK-NOV-NEXT: lhu s7, 16(a1) ; CHECK-NOV-NEXT: lhu a1, 8(a1) ; CHECK-NOV-NEXT: mv s0, a0 -; CHECK-NOV-NEXT: mv a0, a1 +; CHECK-NOV-NEXT: fmv.w.x fa0, a1 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs6, fa0 -; CHECK-NOV-NEXT: mv a0, s7 +; CHECK-NOV-NEXT: fmv.w.x fa0, s7 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs5, fa0 -; CHECK-NOV-NEXT: mv a0, s6 +; CHECK-NOV-NEXT: fmv.w.x fa0, s6 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs4, fa0 -; CHECK-NOV-NEXT: mv a0, s5 +; CHECK-NOV-NEXT: fmv.w.x fa0, s5 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs3, fa0 -; CHECK-NOV-NEXT: mv a0, s4 +; CHECK-NOV-NEXT: fmv.w.x fa0, s4 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs2, fa0 -; CHECK-NOV-NEXT: mv a0, s3 +; CHECK-NOV-NEXT: fmv.w.x fa0, s3 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs1, fa0 -; CHECK-NOV-NEXT: mv a0, s2 +; CHECK-NOV-NEXT: fmv.w.x fa0, s2 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs0, fa0 -; CHECK-NOV-NEXT: fcvt.l.s s2, fs6, rtz -; CHECK-NOV-NEXT: mv a0, s1 +; CHECK-NOV-NEXT: fmv.w.x fa0, s1 +; CHECK-NOV-NEXT: fcvt.l.s s1, fs6, rtz ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-NOV-NEXT: lui a3, 16 @@ -1881,7 +1886,7 @@ ; CHECK-NOV-NEXT: bge a0, a3, .LBB17_10 ; CHECK-NOV-NEXT: # %bb.1: # %entry ; CHECK-NOV-NEXT: fcvt.l.s a1, fs5, rtz -; CHECK-NOV-NEXT: bge s2, a3, .LBB17_11 +; CHECK-NOV-NEXT: bge s1, a3, .LBB17_11 ; CHECK-NOV-NEXT: .LBB17_2: # %entry ; CHECK-NOV-NEXT: fcvt.l.s a2, fs4, rtz ; CHECK-NOV-NEXT: bge a1, a3, .LBB17_12 @@ -1908,12 +1913,12 @@ ; CHECK-NOV-NEXT: sgtz t2, a4 ; CHECK-NOV-NEXT: sgtz t3, a2 ; CHECK-NOV-NEXT: sgtz t4, a1 -; CHECK-NOV-NEXT: sgtz t5, s2 +; CHECK-NOV-NEXT: sgtz t5, s1 ; CHECK-NOV-NEXT: sgtz t6, a0 ; CHECK-NOV-NEXT: negw t6, t6 ; CHECK-NOV-NEXT: and a0, t6, a0 ; CHECK-NOV-NEXT: negw t5, t5 -; CHECK-NOV-NEXT: and t5, t5, s2 +; CHECK-NOV-NEXT: and t5, t5, s1 ; CHECK-NOV-NEXT: negw t4, t4 ; CHECK-NOV-NEXT: and a1, t4, a1 ; CHECK-NOV-NEXT: negw t3, t3 @@ -1955,9 +1960,9 @@ ; CHECK-NOV-NEXT: .LBB17_10: # %entry ; CHECK-NOV-NEXT: mv a0, a3 ; CHECK-NOV-NEXT: fcvt.l.s a1, fs5, rtz -; CHECK-NOV-NEXT: blt s2, a3, .LBB17_2 +; CHECK-NOV-NEXT: blt s1, a3, .LBB17_2 ; CHECK-NOV-NEXT: .LBB17_11: # %entry -; CHECK-NOV-NEXT: mv s2, a3 +; CHECK-NOV-NEXT: mv s1, a3 ; CHECK-NOV-NEXT: fcvt.l.s a2, fs4, rtz ; CHECK-NOV-NEXT: blt a1, a3, .LBB17_3 ; CHECK-NOV-NEXT: .LBB17_12: # %entry @@ -2013,13 +2018,14 @@ ; CHECK-V-NEXT: lhu s5, 16(a0) ; CHECK-V-NEXT: lhu s6, 0(a0) ; CHECK-V-NEXT: lhu a0, 8(a0) +; CHECK-V-NEXT: fmv.w.x fa0, a0 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma ; CHECK-V-NEXT: vmv.s.x v8, a0 ; CHECK-V-NEXT: addi a0, sp, 16 ; CHECK-V-NEXT: vs2r.v v8, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s6 +; CHECK-V-NEXT: fmv.w.x fa0, s6 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma @@ -2029,7 +2035,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v8, v10, 1 ; CHECK-V-NEXT: vs2r.v v8, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s5 +; CHECK-V-NEXT: fmv.w.x fa0, s5 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma @@ -2039,7 +2045,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v10, v8, 2 ; CHECK-V-NEXT: vs2r.v v10, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s4 +; CHECK-V-NEXT: fmv.w.x fa0, s4 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma @@ -2049,7 +2055,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v10, v8, 3 ; CHECK-V-NEXT: vs2r.v v10, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s3 +; CHECK-V-NEXT: fmv.w.x fa0, s3 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma @@ -2059,7 +2065,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v10, v8, 4 ; CHECK-V-NEXT: vs2r.v v10, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s2 +; CHECK-V-NEXT: fmv.w.x fa0, s2 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma @@ -2069,7 +2075,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v10, v8, 5 ; CHECK-V-NEXT: vs2r.v v10, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s1 +; CHECK-V-NEXT: fmv.w.x fa0, s1 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma @@ -2079,7 +2085,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v10, v8, 6 ; CHECK-V-NEXT: vs2r.v v10, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s0 +; CHECK-V-NEXT: fmv.w.x fa0, s0 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 8, e32, m2, ta, ma @@ -2948,11 +2954,12 @@ ; CHECK-NOV-NEXT: .cfi_offset s1, -24 ; CHECK-NOV-NEXT: .cfi_offset s2, -32 ; CHECK-NOV-NEXT: mv s2, a1 +; CHECK-NOV-NEXT: fmv.w.x fa0, a0 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: call __fixsfti@plt ; CHECK-NOV-NEXT: mv s0, a0 ; CHECK-NOV-NEXT: mv s1, a1 -; CHECK-NOV-NEXT: mv a0, s2 +; CHECK-NOV-NEXT: fmv.w.x fa0, s2 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: call __fixsfti@plt ; CHECK-NOV-NEXT: mv a2, a0 @@ -3029,11 +3036,12 @@ ; CHECK-V-NEXT: .cfi_offset s1, -24 ; CHECK-V-NEXT: .cfi_offset s2, -32 ; CHECK-V-NEXT: mv s2, a1 +; CHECK-V-NEXT: fmv.w.x fa0, a0 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: call __fixsfti@plt ; CHECK-V-NEXT: mv s0, a0 ; CHECK-V-NEXT: mv s1, a1 -; CHECK-V-NEXT: mv a0, s2 +; CHECK-V-NEXT: fmv.w.x fa0, s2 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: call __fixsfti@plt ; CHECK-V-NEXT: li a2, -1 @@ -3121,11 +3129,12 @@ ; CHECK-NOV-NEXT: .cfi_offset s1, -24 ; CHECK-NOV-NEXT: .cfi_offset s2, -32 ; CHECK-NOV-NEXT: mv s0, a1 +; CHECK-NOV-NEXT: fmv.w.x fa0, a0 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: call __fixunssfti@plt ; CHECK-NOV-NEXT: mv s1, a0 ; CHECK-NOV-NEXT: mv s2, a1 -; CHECK-NOV-NEXT: mv a0, s0 +; CHECK-NOV-NEXT: fmv.w.x fa0, s0 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: call __fixunssfti@plt ; CHECK-NOV-NEXT: snez a1, a1 @@ -3155,11 +3164,12 @@ ; CHECK-V-NEXT: .cfi_offset s1, -24 ; CHECK-V-NEXT: .cfi_offset s2, -32 ; CHECK-V-NEXT: mv s0, a1 +; CHECK-V-NEXT: fmv.w.x fa0, a0 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: call __fixunssfti@plt ; CHECK-V-NEXT: mv s1, a0 ; CHECK-V-NEXT: mv s2, a1 -; CHECK-V-NEXT: mv a0, s0 +; CHECK-V-NEXT: fmv.w.x fa0, s0 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: call __fixunssfti@plt ; CHECK-V-NEXT: snez a1, a1 @@ -3200,11 +3210,12 @@ ; CHECK-NOV-NEXT: .cfi_offset s1, -24 ; CHECK-NOV-NEXT: .cfi_offset s2, -32 ; CHECK-NOV-NEXT: mv s2, a1 +; CHECK-NOV-NEXT: fmv.w.x fa0, a0 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: call __fixsfti@plt ; CHECK-NOV-NEXT: mv s0, a0 ; CHECK-NOV-NEXT: mv s1, a1 -; CHECK-NOV-NEXT: mv a0, s2 +; CHECK-NOV-NEXT: fmv.w.x fa0, s2 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: call __fixsfti@plt ; CHECK-NOV-NEXT: mv a2, s1 @@ -3260,11 +3271,12 @@ ; CHECK-V-NEXT: .cfi_offset s1, -24 ; CHECK-V-NEXT: .cfi_offset s2, -32 ; CHECK-V-NEXT: mv s2, a1 +; CHECK-V-NEXT: fmv.w.x fa0, a0 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: call __fixsfti@plt ; CHECK-V-NEXT: mv s0, a0 ; CHECK-V-NEXT: mv s1, a1 -; CHECK-V-NEXT: mv a0, s2 +; CHECK-V-NEXT: fmv.w.x fa0, s2 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: call __fixsfti@plt ; CHECK-V-NEXT: mv a2, s1 @@ -3677,17 +3689,17 @@ ; CHECK-NOV-NEXT: lhu s3, 8(a1) ; CHECK-NOV-NEXT: lhu a1, 16(a1) ; CHECK-NOV-NEXT: mv s0, a0 -; CHECK-NOV-NEXT: mv a0, a1 +; CHECK-NOV-NEXT: fmv.w.x fa0, a1 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs2, fa0 -; CHECK-NOV-NEXT: mv a0, s3 +; CHECK-NOV-NEXT: fmv.w.x fa0, s3 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs1, fa0 -; CHECK-NOV-NEXT: mv a0, s2 +; CHECK-NOV-NEXT: fmv.w.x fa0, s2 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs0, fa0 -; CHECK-NOV-NEXT: fcvt.l.s s2, fs2, rtz -; CHECK-NOV-NEXT: mv a0, s1 +; CHECK-NOV-NEXT: fmv.w.x fa0, s1 +; CHECK-NOV-NEXT: fcvt.l.s s1, fs2, rtz ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-NOV-NEXT: lui a1, 524288 @@ -3695,7 +3707,7 @@ ; CHECK-NOV-NEXT: bge a0, a4, .LBB33_10 ; CHECK-NOV-NEXT: # %bb.1: # %entry ; CHECK-NOV-NEXT: fcvt.l.s a2, fs1, rtz -; CHECK-NOV-NEXT: bge s2, a4, .LBB33_11 +; CHECK-NOV-NEXT: bge s1, a4, .LBB33_11 ; CHECK-NOV-NEXT: .LBB33_2: # %entry ; CHECK-NOV-NEXT: fcvt.l.s a3, fs0, rtz ; CHECK-NOV-NEXT: bge a2, a4, .LBB33_12 @@ -3706,14 +3718,14 @@ ; CHECK-NOV-NEXT: .LBB33_5: # %entry ; CHECK-NOV-NEXT: bge a1, a2, .LBB33_15 ; CHECK-NOV-NEXT: .LBB33_6: # %entry -; CHECK-NOV-NEXT: bge a1, s2, .LBB33_16 +; CHECK-NOV-NEXT: bge a1, s1, .LBB33_16 ; CHECK-NOV-NEXT: .LBB33_7: # %entry ; CHECK-NOV-NEXT: blt a1, a0, .LBB33_9 ; CHECK-NOV-NEXT: .LBB33_8: # %entry ; CHECK-NOV-NEXT: lui a0, 524288 ; CHECK-NOV-NEXT: .LBB33_9: # %entry ; CHECK-NOV-NEXT: sw a0, 12(s0) -; CHECK-NOV-NEXT: sw s2, 8(s0) +; CHECK-NOV-NEXT: sw s1, 8(s0) ; CHECK-NOV-NEXT: sw a2, 4(s0) ; CHECK-NOV-NEXT: sw a3, 0(s0) ; CHECK-NOV-NEXT: ld ra, 56(sp) # 8-byte Folded Reload @@ -3729,9 +3741,9 @@ ; CHECK-NOV-NEXT: .LBB33_10: # %entry ; CHECK-NOV-NEXT: mv a0, a4 ; CHECK-NOV-NEXT: fcvt.l.s a2, fs1, rtz -; CHECK-NOV-NEXT: blt s2, a4, .LBB33_2 +; CHECK-NOV-NEXT: blt s1, a4, .LBB33_2 ; CHECK-NOV-NEXT: .LBB33_11: # %entry -; CHECK-NOV-NEXT: mv s2, a4 +; CHECK-NOV-NEXT: mv s1, a4 ; CHECK-NOV-NEXT: fcvt.l.s a3, fs0, rtz ; CHECK-NOV-NEXT: blt a2, a4, .LBB33_3 ; CHECK-NOV-NEXT: .LBB33_12: # %entry @@ -3745,9 +3757,9 @@ ; CHECK-NOV-NEXT: blt a1, a2, .LBB33_6 ; CHECK-NOV-NEXT: .LBB33_15: # %entry ; CHECK-NOV-NEXT: lui a2, 524288 -; CHECK-NOV-NEXT: blt a1, s2, .LBB33_7 +; CHECK-NOV-NEXT: blt a1, s1, .LBB33_7 ; CHECK-NOV-NEXT: .LBB33_16: # %entry -; CHECK-NOV-NEXT: lui s2, 524288 +; CHECK-NOV-NEXT: lui s1, 524288 ; CHECK-NOV-NEXT: bge a1, a0, .LBB33_8 ; CHECK-NOV-NEXT: j .LBB33_9 ; @@ -3771,13 +3783,14 @@ ; CHECK-V-NEXT: lhu s1, 16(a0) ; CHECK-V-NEXT: lhu s2, 0(a0) ; CHECK-V-NEXT: lhu a0, 8(a0) +; CHECK-V-NEXT: fmv.w.x fa0, a0 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e64, m1, ta, ma ; CHECK-V-NEXT: vmv.s.x v8, a0 ; CHECK-V-NEXT: addi a0, sp, 16 ; CHECK-V-NEXT: vs2r.v v8, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s2 +; CHECK-V-NEXT: fmv.w.x fa0, s2 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e64, m1, ta, ma @@ -3787,7 +3800,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v8, v10, 1 ; CHECK-V-NEXT: vs2r.v v8, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s1 +; CHECK-V-NEXT: fmv.w.x fa0, s1 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e64, m1, ta, ma @@ -3797,7 +3810,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v10, v8, 2 ; CHECK-V-NEXT: vs2r.v v10, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s0 +; CHECK-V-NEXT: fmv.w.x fa0, s0 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 4, e64, m2, ta, ma @@ -3854,17 +3867,17 @@ ; CHECK-NOV-NEXT: lhu s3, 16(a1) ; CHECK-NOV-NEXT: lhu a1, 8(a1) ; CHECK-NOV-NEXT: mv s0, a0 -; CHECK-NOV-NEXT: mv a0, a1 +; CHECK-NOV-NEXT: fmv.w.x fa0, a1 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs2, fa0 -; CHECK-NOV-NEXT: mv a0, s3 +; CHECK-NOV-NEXT: fmv.w.x fa0, s3 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs1, fa0 -; CHECK-NOV-NEXT: mv a0, s2 +; CHECK-NOV-NEXT: fmv.w.x fa0, s2 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs0, fa0 -; CHECK-NOV-NEXT: fcvt.lu.s s2, fs2, rtz -; CHECK-NOV-NEXT: mv a0, s1 +; CHECK-NOV-NEXT: fmv.w.x fa0, s1 +; CHECK-NOV-NEXT: fcvt.lu.s s1, fs2, rtz ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fcvt.lu.s a0, fa0, rtz ; CHECK-NOV-NEXT: li a1, -1 @@ -3872,7 +3885,7 @@ ; CHECK-NOV-NEXT: bgeu a0, a1, .LBB34_6 ; CHECK-NOV-NEXT: # %bb.1: # %entry ; CHECK-NOV-NEXT: fcvt.lu.s a2, fs1, rtz -; CHECK-NOV-NEXT: bgeu s2, a1, .LBB34_7 +; CHECK-NOV-NEXT: bgeu s1, a1, .LBB34_7 ; CHECK-NOV-NEXT: .LBB34_2: # %entry ; CHECK-NOV-NEXT: fcvt.lu.s a3, fs0, rtz ; CHECK-NOV-NEXT: bgeu a2, a1, .LBB34_8 @@ -3883,7 +3896,7 @@ ; CHECK-NOV-NEXT: .LBB34_5: # %entry ; CHECK-NOV-NEXT: sw a3, 12(s0) ; CHECK-NOV-NEXT: sw a2, 8(s0) -; CHECK-NOV-NEXT: sw s2, 4(s0) +; CHECK-NOV-NEXT: sw s1, 4(s0) ; CHECK-NOV-NEXT: sw a0, 0(s0) ; CHECK-NOV-NEXT: ld ra, 56(sp) # 8-byte Folded Reload ; CHECK-NOV-NEXT: ld s0, 48(sp) # 8-byte Folded Reload @@ -3898,9 +3911,9 @@ ; CHECK-NOV-NEXT: .LBB34_6: # %entry ; CHECK-NOV-NEXT: mv a0, a1 ; CHECK-NOV-NEXT: fcvt.lu.s a2, fs1, rtz -; CHECK-NOV-NEXT: bltu s2, a1, .LBB34_2 +; CHECK-NOV-NEXT: bltu s1, a1, .LBB34_2 ; CHECK-NOV-NEXT: .LBB34_7: # %entry -; CHECK-NOV-NEXT: mv s2, a1 +; CHECK-NOV-NEXT: mv s1, a1 ; CHECK-NOV-NEXT: fcvt.lu.s a3, fs0, rtz ; CHECK-NOV-NEXT: bltu a2, a1, .LBB34_3 ; CHECK-NOV-NEXT: .LBB34_8: # %entry @@ -3928,13 +3941,14 @@ ; CHECK-V-NEXT: lhu s1, 16(a0) ; CHECK-V-NEXT: lhu s2, 0(a0) ; CHECK-V-NEXT: lhu a0, 8(a0) +; CHECK-V-NEXT: fmv.w.x fa0, a0 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e64, m1, ta, ma ; CHECK-V-NEXT: vmv.s.x v8, a0 ; CHECK-V-NEXT: addi a0, sp, 16 ; CHECK-V-NEXT: vs2r.v v8, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s2 +; CHECK-V-NEXT: fmv.w.x fa0, s2 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e64, m1, ta, ma @@ -3944,7 +3958,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v8, v10, 1 ; CHECK-V-NEXT: vs2r.v v8, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s1 +; CHECK-V-NEXT: fmv.w.x fa0, s1 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e64, m1, ta, ma @@ -3954,7 +3968,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v10, v8, 2 ; CHECK-V-NEXT: vs2r.v v10, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s0 +; CHECK-V-NEXT: fmv.w.x fa0, s0 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 4, e64, m2, ta, ma @@ -4009,17 +4023,17 @@ ; CHECK-NOV-NEXT: lhu s3, 8(a1) ; CHECK-NOV-NEXT: lhu a1, 16(a1) ; CHECK-NOV-NEXT: mv s0, a0 -; CHECK-NOV-NEXT: mv a0, a1 +; CHECK-NOV-NEXT: fmv.w.x fa0, a1 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs2, fa0 -; CHECK-NOV-NEXT: mv a0, s3 +; CHECK-NOV-NEXT: fmv.w.x fa0, s3 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs1, fa0 -; CHECK-NOV-NEXT: mv a0, s2 +; CHECK-NOV-NEXT: fmv.w.x fa0, s2 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs0, fa0 -; CHECK-NOV-NEXT: fcvt.l.s s2, fs2, rtz -; CHECK-NOV-NEXT: mv a0, s1 +; CHECK-NOV-NEXT: fmv.w.x fa0, s1 +; CHECK-NOV-NEXT: fcvt.l.s s1, fs2, rtz ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-NOV-NEXT: li a2, -1 @@ -4027,7 +4041,7 @@ ; CHECK-NOV-NEXT: bge a0, a2, .LBB35_6 ; CHECK-NOV-NEXT: # %bb.1: # %entry ; CHECK-NOV-NEXT: fcvt.l.s a1, fs1, rtz -; CHECK-NOV-NEXT: bge s2, a2, .LBB35_7 +; CHECK-NOV-NEXT: bge s1, a2, .LBB35_7 ; CHECK-NOV-NEXT: .LBB35_2: # %entry ; CHECK-NOV-NEXT: fcvt.l.s a3, fs0, rtz ; CHECK-NOV-NEXT: bge a1, a2, .LBB35_8 @@ -4042,9 +4056,9 @@ ; CHECK-NOV-NEXT: sgtz a3, a1 ; CHECK-NOV-NEXT: negw a3, a3 ; CHECK-NOV-NEXT: and a1, a3, a1 -; CHECK-NOV-NEXT: sgtz a3, s2 +; CHECK-NOV-NEXT: sgtz a3, s1 ; CHECK-NOV-NEXT: negw a3, a3 -; CHECK-NOV-NEXT: and a3, a3, s2 +; CHECK-NOV-NEXT: and a3, a3, s1 ; CHECK-NOV-NEXT: sgtz a4, a0 ; CHECK-NOV-NEXT: negw a4, a4 ; CHECK-NOV-NEXT: and a0, a4, a0 @@ -4065,9 +4079,9 @@ ; CHECK-NOV-NEXT: .LBB35_6: # %entry ; CHECK-NOV-NEXT: mv a0, a2 ; CHECK-NOV-NEXT: fcvt.l.s a1, fs1, rtz -; CHECK-NOV-NEXT: blt s2, a2, .LBB35_2 +; CHECK-NOV-NEXT: blt s1, a2, .LBB35_2 ; CHECK-NOV-NEXT: .LBB35_7: # %entry -; CHECK-NOV-NEXT: mv s2, a2 +; CHECK-NOV-NEXT: mv s1, a2 ; CHECK-NOV-NEXT: fcvt.l.s a3, fs0, rtz ; CHECK-NOV-NEXT: blt a1, a2, .LBB35_3 ; CHECK-NOV-NEXT: .LBB35_8: # %entry @@ -4095,13 +4109,14 @@ ; CHECK-V-NEXT: lhu s1, 16(a0) ; CHECK-V-NEXT: lhu s2, 0(a0) ; CHECK-V-NEXT: lhu a0, 8(a0) +; CHECK-V-NEXT: fmv.w.x fa0, a0 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e64, m1, ta, ma ; CHECK-V-NEXT: vmv.s.x v8, a0 ; CHECK-V-NEXT: addi a0, sp, 16 ; CHECK-V-NEXT: vs2r.v v8, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s2 +; CHECK-V-NEXT: fmv.w.x fa0, s2 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e64, m1, ta, ma @@ -4111,7 +4126,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v8, v10, 1 ; CHECK-V-NEXT: vs2r.v v8, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s1 +; CHECK-V-NEXT: fmv.w.x fa0, s1 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e64, m1, ta, ma @@ -4121,7 +4136,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v10, v8, 2 ; CHECK-V-NEXT: vs2r.v v10, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s0 +; CHECK-V-NEXT: fmv.w.x fa0, s0 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 4, e64, m2, ta, ma @@ -4530,29 +4545,29 @@ ; CHECK-NOV-NEXT: lhu s7, 40(a1) ; CHECK-NOV-NEXT: lhu a1, 48(a1) ; CHECK-NOV-NEXT: mv s0, a0 -; CHECK-NOV-NEXT: mv a0, a1 +; CHECK-NOV-NEXT: fmv.w.x fa0, a1 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs6, fa0 -; CHECK-NOV-NEXT: mv a0, s7 +; CHECK-NOV-NEXT: fmv.w.x fa0, s7 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs5, fa0 -; CHECK-NOV-NEXT: mv a0, s6 +; CHECK-NOV-NEXT: fmv.w.x fa0, s6 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs4, fa0 -; CHECK-NOV-NEXT: mv a0, s5 +; CHECK-NOV-NEXT: fmv.w.x fa0, s5 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs3, fa0 -; CHECK-NOV-NEXT: mv a0, s4 +; CHECK-NOV-NEXT: fmv.w.x fa0, s4 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs2, fa0 -; CHECK-NOV-NEXT: mv a0, s3 +; CHECK-NOV-NEXT: fmv.w.x fa0, s3 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs1, fa0 -; CHECK-NOV-NEXT: mv a0, s2 +; CHECK-NOV-NEXT: fmv.w.x fa0, s2 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs0, fa0 -; CHECK-NOV-NEXT: fcvt.l.s s2, fs6, rtz -; CHECK-NOV-NEXT: mv a0, s1 +; CHECK-NOV-NEXT: fmv.w.x fa0, s1 +; CHECK-NOV-NEXT: fcvt.l.s s1, fs6, rtz ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-NOV-NEXT: lui a7, 8 @@ -4560,7 +4575,7 @@ ; CHECK-NOV-NEXT: bge a0, a7, .LBB42_18 ; CHECK-NOV-NEXT: # %bb.1: # %entry ; CHECK-NOV-NEXT: fcvt.l.s a1, fs5, rtz -; CHECK-NOV-NEXT: bge s2, a7, .LBB42_19 +; CHECK-NOV-NEXT: bge s1, a7, .LBB42_19 ; CHECK-NOV-NEXT: .LBB42_2: # %entry ; CHECK-NOV-NEXT: fcvt.l.s a2, fs4, rtz ; CHECK-NOV-NEXT: bge a1, a7, .LBB42_20 @@ -4592,14 +4607,14 @@ ; CHECK-NOV-NEXT: .LBB42_13: # %entry ; CHECK-NOV-NEXT: bge a7, a1, .LBB42_31 ; CHECK-NOV-NEXT: .LBB42_14: # %entry -; CHECK-NOV-NEXT: bge a7, s2, .LBB42_32 +; CHECK-NOV-NEXT: bge a7, s1, .LBB42_32 ; CHECK-NOV-NEXT: .LBB42_15: # %entry ; CHECK-NOV-NEXT: blt a7, a0, .LBB42_17 ; CHECK-NOV-NEXT: .LBB42_16: # %entry ; CHECK-NOV-NEXT: lui a0, 1048568 ; CHECK-NOV-NEXT: .LBB42_17: # %entry ; CHECK-NOV-NEXT: sh a0, 14(s0) -; CHECK-NOV-NEXT: sh s2, 12(s0) +; CHECK-NOV-NEXT: sh s1, 12(s0) ; CHECK-NOV-NEXT: sh a1, 10(s0) ; CHECK-NOV-NEXT: sh a2, 8(s0) ; CHECK-NOV-NEXT: sh a3, 6(s0) @@ -4627,9 +4642,9 @@ ; CHECK-NOV-NEXT: .LBB42_18: # %entry ; CHECK-NOV-NEXT: mv a0, a7 ; CHECK-NOV-NEXT: fcvt.l.s a1, fs5, rtz -; CHECK-NOV-NEXT: blt s2, a7, .LBB42_2 +; CHECK-NOV-NEXT: blt s1, a7, .LBB42_2 ; CHECK-NOV-NEXT: .LBB42_19: # %entry -; CHECK-NOV-NEXT: mv s2, a7 +; CHECK-NOV-NEXT: mv s1, a7 ; CHECK-NOV-NEXT: fcvt.l.s a2, fs4, rtz ; CHECK-NOV-NEXT: blt a1, a7, .LBB42_3 ; CHECK-NOV-NEXT: .LBB42_20: # %entry @@ -4672,9 +4687,9 @@ ; CHECK-NOV-NEXT: blt a7, a1, .LBB42_14 ; CHECK-NOV-NEXT: .LBB42_31: # %entry ; CHECK-NOV-NEXT: lui a1, 1048568 -; CHECK-NOV-NEXT: blt a7, s2, .LBB42_15 +; CHECK-NOV-NEXT: blt a7, s1, .LBB42_15 ; CHECK-NOV-NEXT: .LBB42_32: # %entry -; CHECK-NOV-NEXT: lui s2, 1048568 +; CHECK-NOV-NEXT: lui s1, 1048568 ; CHECK-NOV-NEXT: bge a7, a0, .LBB42_16 ; CHECK-NOV-NEXT: j .LBB42_17 ; @@ -4710,13 +4725,14 @@ ; CHECK-V-NEXT: lhu s5, 16(a0) ; CHECK-V-NEXT: lhu s6, 0(a0) ; CHECK-V-NEXT: lhu a0, 8(a0) +; CHECK-V-NEXT: fmv.w.x fa0, a0 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma ; CHECK-V-NEXT: vmv.s.x v8, a0 ; CHECK-V-NEXT: addi a0, sp, 16 ; CHECK-V-NEXT: vs2r.v v8, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s6 +; CHECK-V-NEXT: fmv.w.x fa0, s6 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma @@ -4726,7 +4742,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v8, v10, 1 ; CHECK-V-NEXT: vs2r.v v8, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s5 +; CHECK-V-NEXT: fmv.w.x fa0, s5 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma @@ -4736,7 +4752,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v10, v8, 2 ; CHECK-V-NEXT: vs2r.v v10, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s4 +; CHECK-V-NEXT: fmv.w.x fa0, s4 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma @@ -4746,7 +4762,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v10, v8, 3 ; CHECK-V-NEXT: vs2r.v v10, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s3 +; CHECK-V-NEXT: fmv.w.x fa0, s3 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma @@ -4756,7 +4772,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v10, v8, 4 ; CHECK-V-NEXT: vs2r.v v10, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s2 +; CHECK-V-NEXT: fmv.w.x fa0, s2 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma @@ -4766,7 +4782,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v10, v8, 5 ; CHECK-V-NEXT: vs2r.v v10, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s1 +; CHECK-V-NEXT: fmv.w.x fa0, s1 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma @@ -4776,7 +4792,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v10, v8, 6 ; CHECK-V-NEXT: vs2r.v v10, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s0 +; CHECK-V-NEXT: fmv.w.x fa0, s0 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 8, e32, m2, ta, ma @@ -4858,31 +4874,31 @@ ; CHECK-NOV-NEXT: lhu s7, 16(a1) ; CHECK-NOV-NEXT: lhu a1, 8(a1) ; CHECK-NOV-NEXT: mv s0, a0 -; CHECK-NOV-NEXT: mv a0, a1 +; CHECK-NOV-NEXT: fmv.w.x fa0, a1 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs5, fa0 -; CHECK-NOV-NEXT: mv a0, s7 +; CHECK-NOV-NEXT: fmv.w.x fa0, s7 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs6, fa0 -; CHECK-NOV-NEXT: mv a0, s6 +; CHECK-NOV-NEXT: fmv.w.x fa0, s6 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs4, fa0 -; CHECK-NOV-NEXT: mv a0, s5 +; CHECK-NOV-NEXT: fmv.w.x fa0, s5 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs3, fa0 -; CHECK-NOV-NEXT: mv a0, s4 +; CHECK-NOV-NEXT: fmv.w.x fa0, s4 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs2, fa0 -; CHECK-NOV-NEXT: mv a0, s3 +; CHECK-NOV-NEXT: fmv.w.x fa0, s3 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs1, fa0 -; CHECK-NOV-NEXT: mv a0, s2 +; CHECK-NOV-NEXT: fmv.w.x fa0, s2 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs0, fa0 -; CHECK-NOV-NEXT: fcvt.lu.s s3, fs6, rtz -; CHECK-NOV-NEXT: fcvt.lu.s s2, fs5, rtz -; CHECK-NOV-NEXT: sext.w s2, s2 -; CHECK-NOV-NEXT: mv a0, s1 +; CHECK-NOV-NEXT: fcvt.lu.s s2, fs6, rtz +; CHECK-NOV-NEXT: fcvt.lu.s a0, fs5, rtz +; CHECK-NOV-NEXT: fmv.w.x fa0, s1 +; CHECK-NOV-NEXT: sext.w s1, a0 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fcvt.lu.s a0, fa0, rtz ; CHECK-NOV-NEXT: sext.w a0, a0 @@ -4893,10 +4909,10 @@ ; CHECK-NOV-NEXT: mv a0, a1 ; CHECK-NOV-NEXT: .LBB43_2: # %entry ; CHECK-NOV-NEXT: fcvt.lu.s a3, fs4, rtz -; CHECK-NOV-NEXT: sext.w a2, s3 -; CHECK-NOV-NEXT: bltu s2, a1, .LBB43_4 +; CHECK-NOV-NEXT: sext.w a2, s2 +; CHECK-NOV-NEXT: bltu s1, a1, .LBB43_4 ; CHECK-NOV-NEXT: # %bb.3: # %entry -; CHECK-NOV-NEXT: mv s2, a1 +; CHECK-NOV-NEXT: mv s1, a1 ; CHECK-NOV-NEXT: .LBB43_4: # %entry ; CHECK-NOV-NEXT: fcvt.lu.s a4, fs3, rtz ; CHECK-NOV-NEXT: sext.w a3, a3 @@ -4933,7 +4949,7 @@ ; CHECK-NOV-NEXT: sh a4, 8(s0) ; CHECK-NOV-NEXT: sh a3, 6(s0) ; CHECK-NOV-NEXT: sh a2, 4(s0) -; CHECK-NOV-NEXT: sh s2, 2(s0) +; CHECK-NOV-NEXT: sh s1, 2(s0) ; CHECK-NOV-NEXT: sh a0, 0(s0) ; CHECK-NOV-NEXT: ld ra, 120(sp) # 8-byte Folded Reload ; CHECK-NOV-NEXT: ld s0, 112(sp) # 8-byte Folded Reload @@ -4994,13 +5010,14 @@ ; CHECK-V-NEXT: lhu s5, 16(a0) ; CHECK-V-NEXT: lhu s6, 0(a0) ; CHECK-V-NEXT: lhu a0, 8(a0) +; CHECK-V-NEXT: fmv.w.x fa0, a0 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma ; CHECK-V-NEXT: vmv.s.x v8, a0 ; CHECK-V-NEXT: addi a0, sp, 16 ; CHECK-V-NEXT: vs2r.v v8, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s6 +; CHECK-V-NEXT: fmv.w.x fa0, s6 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma @@ -5010,7 +5027,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v8, v10, 1 ; CHECK-V-NEXT: vs2r.v v8, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s5 +; CHECK-V-NEXT: fmv.w.x fa0, s5 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma @@ -5020,7 +5037,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v10, v8, 2 ; CHECK-V-NEXT: vs2r.v v10, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s4 +; CHECK-V-NEXT: fmv.w.x fa0, s4 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma @@ -5030,7 +5047,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v10, v8, 3 ; CHECK-V-NEXT: vs2r.v v10, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s3 +; CHECK-V-NEXT: fmv.w.x fa0, s3 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma @@ -5040,7 +5057,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v10, v8, 4 ; CHECK-V-NEXT: vs2r.v v10, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s2 +; CHECK-V-NEXT: fmv.w.x fa0, s2 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma @@ -5050,7 +5067,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v10, v8, 5 ; CHECK-V-NEXT: vs2r.v v10, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s1 +; CHECK-V-NEXT: fmv.w.x fa0, s1 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma @@ -5060,7 +5077,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v10, v8, 6 ; CHECK-V-NEXT: vs2r.v v10, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s0 +; CHECK-V-NEXT: fmv.w.x fa0, s0 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.lu.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 8, e32, m2, ta, ma @@ -5139,29 +5156,29 @@ ; CHECK-NOV-NEXT: lhu s7, 40(a1) ; CHECK-NOV-NEXT: lhu a1, 48(a1) ; CHECK-NOV-NEXT: mv s0, a0 -; CHECK-NOV-NEXT: mv a0, a1 +; CHECK-NOV-NEXT: fmv.w.x fa0, a1 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs6, fa0 -; CHECK-NOV-NEXT: mv a0, s7 +; CHECK-NOV-NEXT: fmv.w.x fa0, s7 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs5, fa0 -; CHECK-NOV-NEXT: mv a0, s6 +; CHECK-NOV-NEXT: fmv.w.x fa0, s6 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs4, fa0 -; CHECK-NOV-NEXT: mv a0, s5 +; CHECK-NOV-NEXT: fmv.w.x fa0, s5 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs3, fa0 -; CHECK-NOV-NEXT: mv a0, s4 +; CHECK-NOV-NEXT: fmv.w.x fa0, s4 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs2, fa0 -; CHECK-NOV-NEXT: mv a0, s3 +; CHECK-NOV-NEXT: fmv.w.x fa0, s3 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs1, fa0 -; CHECK-NOV-NEXT: mv a0, s2 +; CHECK-NOV-NEXT: fmv.w.x fa0, s2 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fmv.s fs0, fa0 -; CHECK-NOV-NEXT: fcvt.l.s s2, fs6, rtz -; CHECK-NOV-NEXT: mv a0, s1 +; CHECK-NOV-NEXT: fmv.w.x fa0, s1 +; CHECK-NOV-NEXT: fcvt.l.s s1, fs6, rtz ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-NOV-NEXT: lui a3, 16 @@ -5169,7 +5186,7 @@ ; CHECK-NOV-NEXT: bge a0, a3, .LBB44_10 ; CHECK-NOV-NEXT: # %bb.1: # %entry ; CHECK-NOV-NEXT: fcvt.l.s a1, fs5, rtz -; CHECK-NOV-NEXT: bge s2, a3, .LBB44_11 +; CHECK-NOV-NEXT: bge s1, a3, .LBB44_11 ; CHECK-NOV-NEXT: .LBB44_2: # %entry ; CHECK-NOV-NEXT: fcvt.l.s a2, fs4, rtz ; CHECK-NOV-NEXT: bge a1, a3, .LBB44_12 @@ -5208,9 +5225,9 @@ ; CHECK-NOV-NEXT: sgtz a7, a1 ; CHECK-NOV-NEXT: negw a7, a7 ; CHECK-NOV-NEXT: and a1, a7, a1 -; CHECK-NOV-NEXT: sgtz a7, s2 +; CHECK-NOV-NEXT: sgtz a7, s1 ; CHECK-NOV-NEXT: negw a7, a7 -; CHECK-NOV-NEXT: and a7, a7, s2 +; CHECK-NOV-NEXT: and a7, a7, s1 ; CHECK-NOV-NEXT: sgtz t0, a0 ; CHECK-NOV-NEXT: negw t0, t0 ; CHECK-NOV-NEXT: and a0, t0, a0 @@ -5243,9 +5260,9 @@ ; CHECK-NOV-NEXT: .LBB44_10: # %entry ; CHECK-NOV-NEXT: mv a0, a3 ; CHECK-NOV-NEXT: fcvt.l.s a1, fs5, rtz -; CHECK-NOV-NEXT: blt s2, a3, .LBB44_2 +; CHECK-NOV-NEXT: blt s1, a3, .LBB44_2 ; CHECK-NOV-NEXT: .LBB44_11: # %entry -; CHECK-NOV-NEXT: mv s2, a3 +; CHECK-NOV-NEXT: mv s1, a3 ; CHECK-NOV-NEXT: fcvt.l.s a2, fs4, rtz ; CHECK-NOV-NEXT: blt a1, a3, .LBB44_3 ; CHECK-NOV-NEXT: .LBB44_12: # %entry @@ -5301,13 +5318,14 @@ ; CHECK-V-NEXT: lhu s5, 16(a0) ; CHECK-V-NEXT: lhu s6, 0(a0) ; CHECK-V-NEXT: lhu a0, 8(a0) +; CHECK-V-NEXT: fmv.w.x fa0, a0 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma ; CHECK-V-NEXT: vmv.s.x v8, a0 ; CHECK-V-NEXT: addi a0, sp, 16 ; CHECK-V-NEXT: vs2r.v v8, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s6 +; CHECK-V-NEXT: fmv.w.x fa0, s6 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma @@ -5317,7 +5335,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v8, v10, 1 ; CHECK-V-NEXT: vs2r.v v8, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s5 +; CHECK-V-NEXT: fmv.w.x fa0, s5 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma @@ -5327,7 +5345,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v10, v8, 2 ; CHECK-V-NEXT: vs2r.v v10, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s4 +; CHECK-V-NEXT: fmv.w.x fa0, s4 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma @@ -5337,7 +5355,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v10, v8, 3 ; CHECK-V-NEXT: vs2r.v v10, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s3 +; CHECK-V-NEXT: fmv.w.x fa0, s3 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma @@ -5347,7 +5365,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v10, v8, 4 ; CHECK-V-NEXT: vs2r.v v10, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s2 +; CHECK-V-NEXT: fmv.w.x fa0, s2 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma @@ -5357,7 +5375,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v10, v8, 5 ; CHECK-V-NEXT: vs2r.v v10, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s1 +; CHECK-V-NEXT: fmv.w.x fa0, s1 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 1, e32, mf2, ta, ma @@ -5367,7 +5385,7 @@ ; CHECK-V-NEXT: vl2r.v v10, (a0) # Unknown-size Folded Reload ; CHECK-V-NEXT: vslideup.vi v10, v8, 6 ; CHECK-V-NEXT: vs2r.v v10, (a0) # Unknown-size Folded Spill -; CHECK-V-NEXT: mv a0, s0 +; CHECK-V-NEXT: fmv.w.x fa0, s0 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: fcvt.l.s a0, fa0, rtz ; CHECK-V-NEXT: vsetivli zero, 8, e32, m2, ta, ma @@ -6360,11 +6378,12 @@ ; CHECK-NOV-NEXT: .cfi_offset s1, -24 ; CHECK-NOV-NEXT: .cfi_offset s2, -32 ; CHECK-NOV-NEXT: mv s2, a1 +; CHECK-NOV-NEXT: fmv.w.x fa0, a0 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: call __fixsfti@plt ; CHECK-NOV-NEXT: mv s0, a0 ; CHECK-NOV-NEXT: mv s1, a1 -; CHECK-NOV-NEXT: mv a0, s2 +; CHECK-NOV-NEXT: fmv.w.x fa0, s2 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: call __fixsfti@plt ; CHECK-NOV-NEXT: mv a2, a0 @@ -6465,11 +6484,12 @@ ; CHECK-V-NEXT: .cfi_offset s1, -24 ; CHECK-V-NEXT: .cfi_offset s2, -32 ; CHECK-V-NEXT: mv s2, a1 +; CHECK-V-NEXT: fmv.w.x fa0, a0 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: call __fixsfti@plt ; CHECK-V-NEXT: mv s0, a0 ; CHECK-V-NEXT: mv s1, a1 -; CHECK-V-NEXT: mv a0, s2 +; CHECK-V-NEXT: fmv.w.x fa0, s2 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: call __fixsfti@plt ; CHECK-V-NEXT: li a2, -1 @@ -6579,12 +6599,12 @@ ; CHECK-NOV-NEXT: .cfi_offset s1, -24 ; CHECK-NOV-NEXT: .cfi_offset s2, -32 ; CHECK-NOV-NEXT: mv s0, a0 -; CHECK-NOV-NEXT: mv a0, a1 +; CHECK-NOV-NEXT: fmv.w.x fa0, a1 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: call __fixunssfti@plt ; CHECK-NOV-NEXT: mv s1, a0 ; CHECK-NOV-NEXT: mv s2, a1 -; CHECK-NOV-NEXT: mv a0, s0 +; CHECK-NOV-NEXT: fmv.w.x fa0, s0 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: call __fixunssfti@plt ; CHECK-NOV-NEXT: snez a2, a1 @@ -6621,12 +6641,12 @@ ; CHECK-V-NEXT: .cfi_offset s1, -24 ; CHECK-V-NEXT: .cfi_offset s2, -32 ; CHECK-V-NEXT: mv s0, a0 -; CHECK-V-NEXT: mv a0, a1 +; CHECK-V-NEXT: fmv.w.x fa0, a1 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: call __fixunssfti@plt ; CHECK-V-NEXT: mv s1, a0 ; CHECK-V-NEXT: mv s2, a1 -; CHECK-V-NEXT: mv a0, s0 +; CHECK-V-NEXT: fmv.w.x fa0, s0 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: call __fixunssfti@plt ; CHECK-V-NEXT: snez a2, a1 @@ -6674,11 +6694,12 @@ ; CHECK-NOV-NEXT: .cfi_offset s1, -24 ; CHECK-NOV-NEXT: .cfi_offset s2, -32 ; CHECK-NOV-NEXT: mv s2, a1 +; CHECK-NOV-NEXT: fmv.w.x fa0, a0 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: call __fixsfti@plt ; CHECK-NOV-NEXT: mv s0, a0 ; CHECK-NOV-NEXT: mv s1, a1 -; CHECK-NOV-NEXT: mv a0, s2 +; CHECK-NOV-NEXT: fmv.w.x fa0, s2 ; CHECK-NOV-NEXT: call __extendhfsf2@plt ; CHECK-NOV-NEXT: call __fixsfti@plt ; CHECK-NOV-NEXT: mv a2, a1 @@ -6737,11 +6758,12 @@ ; CHECK-V-NEXT: .cfi_offset s1, -24 ; CHECK-V-NEXT: .cfi_offset s2, -32 ; CHECK-V-NEXT: mv s2, a1 +; CHECK-V-NEXT: fmv.w.x fa0, a0 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: call __fixsfti@plt ; CHECK-V-NEXT: mv s0, a0 ; CHECK-V-NEXT: mv s1, a1 -; CHECK-V-NEXT: mv a0, s2 +; CHECK-V-NEXT: fmv.w.x fa0, s2 ; CHECK-V-NEXT: call __extendhfsf2@plt ; CHECK-V-NEXT: call __fixsfti@plt ; CHECK-V-NEXT: mv a2, a1