diff --git a/llvm/lib/Target/RISCV/RISCVFrameLowering.cpp b/llvm/lib/Target/RISCV/RISCVFrameLowering.cpp --- a/llvm/lib/Target/RISCV/RISCVFrameLowering.cpp +++ b/llvm/lib/Target/RISCV/RISCVFrameLowering.cpp @@ -437,7 +437,7 @@ // Iterate over list of callee-saved registers and emit .cfi_offset // directives. - for (const auto &Entry : CSI) { + for (const auto &Entry : reverse(CSI)) { int FrameIdx = Entry.getFrameIdx(); int64_t Offset; // Offsets for objects with fixed locations (IE: those saved by libcall) are @@ -1042,7 +1042,7 @@ // Manually spill values not spilled by libcall. const auto &NonLibcallCSI = getNonLibcallCSI(*MF, CSI); - for (auto &CS : NonLibcallCSI) { + for (auto &CS : reverse(NonLibcallCSI)) { // Insert the spill to the stack frame. Register Reg = CS.getReg(); const TargetRegisterClass *RC = TRI->getMinimalPhysRegClass(Reg); @@ -1068,7 +1068,7 @@ // Manually restore values not restored by libcall. Insert in reverse order. // loadRegFromStackSlot can insert multiple instructions. const auto &NonLibcallCSI = getNonLibcallCSI(*MF, CSI); - for (auto &CS : reverse(NonLibcallCSI)) { + for (auto &CS : NonLibcallCSI) { Register Reg = CS.getReg(); const TargetRegisterClass *RC = TRI->getMinimalPhysRegClass(Reg); TII.loadRegFromStackSlot(MBB, MI, Reg, CS.getFrameIdx(), RC, TRI); diff --git a/llvm/test/CodeGen/RISCV/aext-to-sext.ll b/llvm/test/CodeGen/RISCV/aext-to-sext.ll --- a/llvm/test/CodeGen/RISCV/aext-to-sext.ll +++ b/llvm/test/CodeGen/RISCV/aext-to-sext.ll @@ -12,9 +12,9 @@ ; RV64I-LABEL: quux: ; RV64I: # %bb.0: # %bb ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: beq a0, a1, .LBB0_3 ; RV64I-NEXT: # %bb.1: # %bb2.preheader ; RV64I-NEXT: mv s0, a1 @@ -25,9 +25,9 @@ ; RV64I-NEXT: addiw s1, s1, 1 ; RV64I-NEXT: bne s1, s0, .LBB0_2 ; RV64I-NEXT: .LBB0_3: # %bb6 -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret bb: diff --git a/llvm/test/CodeGen/RISCV/alloca.ll b/llvm/test/CodeGen/RISCV/alloca.ll --- a/llvm/test/CodeGen/RISCV/alloca.ll +++ b/llvm/test/CodeGen/RISCV/alloca.ll @@ -11,8 +11,8 @@ ; RV32I-LABEL: simple_alloca: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: addi s0, sp, 16 ; RV32I-NEXT: addi a0, a0, 15 ; RV32I-NEXT: andi a0, a0, -16 @@ -20,8 +20,8 @@ ; RV32I-NEXT: mv sp, a0 ; RV32I-NEXT: call notdead@plt ; RV32I-NEXT: addi sp, s0, -16 -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret %1 = alloca i8, i32 %n @@ -36,9 +36,9 @@ ; RV32I-LABEL: scoped_alloca: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: addi s0, sp, 16 ; RV32I-NEXT: mv s1, sp ; RV32I-NEXT: addi a0, a0, 15 @@ -48,9 +48,9 @@ ; RV32I-NEXT: call notdead@plt ; RV32I-NEXT: mv sp, s1 ; RV32I-NEXT: addi sp, s0, -16 -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret %sp = call i8* @llvm.stacksave() @@ -68,8 +68,8 @@ ; RV32I-LABEL: alloca_callframe: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: addi s0, sp, 16 ; RV32I-NEXT: addi a0, a0, 15 ; RV32I-NEXT: andi a0, a0, -16 @@ -94,8 +94,8 @@ ; RV32I-NEXT: call func@plt ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: addi sp, s0, -16 -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret %1 = alloca i8, i32 %n diff --git a/llvm/test/CodeGen/RISCV/atomic-rmw.ll b/llvm/test/CodeGen/RISCV/atomic-rmw.ll --- a/llvm/test/CodeGen/RISCV/atomic-rmw.ll +++ b/llvm/test/CodeGen/RISCV/atomic-rmw.ll @@ -2002,10 +2002,10 @@ ; RV32I-LABEL: atomicrmw_max_i8_monotonic: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lbu a3, 0(a0) ; RV32I-NEXT: mv s2, a1 @@ -2034,10 +2034,10 @@ ; RV32I-NEXT: j .LBB35_1 ; RV32I-NEXT: .LBB35_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -2074,10 +2074,10 @@ ; RV64I-LABEL: atomicrmw_max_i8_monotonic: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lbu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -2106,10 +2106,10 @@ ; RV64I-NEXT: j .LBB35_1 ; RV64I-NEXT: .LBB35_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -2150,10 +2150,10 @@ ; RV32I-LABEL: atomicrmw_max_i8_acquire: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lbu a3, 0(a0) ; RV32I-NEXT: mv s2, a1 @@ -2182,10 +2182,10 @@ ; RV32I-NEXT: j .LBB36_1 ; RV32I-NEXT: .LBB36_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -2222,10 +2222,10 @@ ; RV64I-LABEL: atomicrmw_max_i8_acquire: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lbu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -2254,10 +2254,10 @@ ; RV64I-NEXT: j .LBB36_1 ; RV64I-NEXT: .LBB36_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -2298,10 +2298,10 @@ ; RV32I-LABEL: atomicrmw_max_i8_release: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lbu a3, 0(a0) ; RV32I-NEXT: mv s2, a1 @@ -2330,10 +2330,10 @@ ; RV32I-NEXT: j .LBB37_1 ; RV32I-NEXT: .LBB37_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -2370,10 +2370,10 @@ ; RV64I-LABEL: atomicrmw_max_i8_release: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lbu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -2402,10 +2402,10 @@ ; RV64I-NEXT: j .LBB37_1 ; RV64I-NEXT: .LBB37_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -2446,10 +2446,10 @@ ; RV32I-LABEL: atomicrmw_max_i8_acq_rel: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lbu a3, 0(a0) ; RV32I-NEXT: mv s2, a1 @@ -2478,10 +2478,10 @@ ; RV32I-NEXT: j .LBB38_1 ; RV32I-NEXT: .LBB38_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -2518,10 +2518,10 @@ ; RV64I-LABEL: atomicrmw_max_i8_acq_rel: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lbu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -2550,10 +2550,10 @@ ; RV64I-NEXT: j .LBB38_1 ; RV64I-NEXT: .LBB38_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -2594,10 +2594,10 @@ ; RV32I-LABEL: atomicrmw_max_i8_seq_cst: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lbu a3, 0(a0) ; RV32I-NEXT: mv s2, a1 @@ -2626,10 +2626,10 @@ ; RV32I-NEXT: j .LBB39_1 ; RV32I-NEXT: .LBB39_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -2666,10 +2666,10 @@ ; RV64I-LABEL: atomicrmw_max_i8_seq_cst: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lbu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -2698,10 +2698,10 @@ ; RV64I-NEXT: j .LBB39_1 ; RV64I-NEXT: .LBB39_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -2742,10 +2742,10 @@ ; RV32I-LABEL: atomicrmw_min_i8_monotonic: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lbu a3, 0(a0) ; RV32I-NEXT: mv s2, a1 @@ -2774,10 +2774,10 @@ ; RV32I-NEXT: j .LBB40_1 ; RV32I-NEXT: .LBB40_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -2814,10 +2814,10 @@ ; RV64I-LABEL: atomicrmw_min_i8_monotonic: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lbu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -2846,10 +2846,10 @@ ; RV64I-NEXT: j .LBB40_1 ; RV64I-NEXT: .LBB40_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -2890,10 +2890,10 @@ ; RV32I-LABEL: atomicrmw_min_i8_acquire: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lbu a3, 0(a0) ; RV32I-NEXT: mv s2, a1 @@ -2922,10 +2922,10 @@ ; RV32I-NEXT: j .LBB41_1 ; RV32I-NEXT: .LBB41_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -2962,10 +2962,10 @@ ; RV64I-LABEL: atomicrmw_min_i8_acquire: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lbu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -2994,10 +2994,10 @@ ; RV64I-NEXT: j .LBB41_1 ; RV64I-NEXT: .LBB41_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -3038,10 +3038,10 @@ ; RV32I-LABEL: atomicrmw_min_i8_release: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lbu a3, 0(a0) ; RV32I-NEXT: mv s2, a1 @@ -3070,10 +3070,10 @@ ; RV32I-NEXT: j .LBB42_1 ; RV32I-NEXT: .LBB42_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -3110,10 +3110,10 @@ ; RV64I-LABEL: atomicrmw_min_i8_release: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lbu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -3142,10 +3142,10 @@ ; RV64I-NEXT: j .LBB42_1 ; RV64I-NEXT: .LBB42_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -3186,10 +3186,10 @@ ; RV32I-LABEL: atomicrmw_min_i8_acq_rel: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lbu a3, 0(a0) ; RV32I-NEXT: mv s2, a1 @@ -3218,10 +3218,10 @@ ; RV32I-NEXT: j .LBB43_1 ; RV32I-NEXT: .LBB43_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -3258,10 +3258,10 @@ ; RV64I-LABEL: atomicrmw_min_i8_acq_rel: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lbu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -3290,10 +3290,10 @@ ; RV64I-NEXT: j .LBB43_1 ; RV64I-NEXT: .LBB43_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -3334,10 +3334,10 @@ ; RV32I-LABEL: atomicrmw_min_i8_seq_cst: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lbu a3, 0(a0) ; RV32I-NEXT: mv s2, a1 @@ -3366,10 +3366,10 @@ ; RV32I-NEXT: j .LBB44_1 ; RV32I-NEXT: .LBB44_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -3406,10 +3406,10 @@ ; RV64I-LABEL: atomicrmw_min_i8_seq_cst: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lbu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -3438,10 +3438,10 @@ ; RV64I-NEXT: j .LBB44_1 ; RV64I-NEXT: .LBB44_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -3482,10 +3482,10 @@ ; RV32I-LABEL: atomicrmw_umax_i8_monotonic: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lbu a3, 0(a0) ; RV32I-NEXT: mv s2, a1 @@ -3512,10 +3512,10 @@ ; RV32I-NEXT: j .LBB45_1 ; RV32I-NEXT: .LBB45_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -3546,11 +3546,11 @@ ; RV64I-LABEL: atomicrmw_umax_i8_monotonic: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: mv s0, a0 +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill +; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lbu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 ; RV64I-NEXT: andi s1, a1, 255 @@ -3576,10 +3576,10 @@ ; RV64I-NEXT: j .LBB45_1 ; RV64I-NEXT: .LBB45_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -3614,10 +3614,10 @@ ; RV32I-LABEL: atomicrmw_umax_i8_acquire: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lbu a3, 0(a0) ; RV32I-NEXT: mv s2, a1 @@ -3644,10 +3644,10 @@ ; RV32I-NEXT: j .LBB46_1 ; RV32I-NEXT: .LBB46_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -3678,10 +3678,10 @@ ; RV64I-LABEL: atomicrmw_umax_i8_acquire: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lbu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -3708,10 +3708,10 @@ ; RV64I-NEXT: j .LBB46_1 ; RV64I-NEXT: .LBB46_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -3746,10 +3746,10 @@ ; RV32I-LABEL: atomicrmw_umax_i8_release: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lbu a3, 0(a0) ; RV32I-NEXT: mv s2, a1 @@ -3776,10 +3776,10 @@ ; RV32I-NEXT: j .LBB47_1 ; RV32I-NEXT: .LBB47_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -3810,10 +3810,10 @@ ; RV64I-LABEL: atomicrmw_umax_i8_release: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lbu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -3840,10 +3840,10 @@ ; RV64I-NEXT: j .LBB47_1 ; RV64I-NEXT: .LBB47_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -3878,10 +3878,10 @@ ; RV32I-LABEL: atomicrmw_umax_i8_acq_rel: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lbu a3, 0(a0) ; RV32I-NEXT: mv s2, a1 @@ -3908,10 +3908,10 @@ ; RV32I-NEXT: j .LBB48_1 ; RV32I-NEXT: .LBB48_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -3942,10 +3942,10 @@ ; RV64I-LABEL: atomicrmw_umax_i8_acq_rel: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lbu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -3972,10 +3972,10 @@ ; RV64I-NEXT: j .LBB48_1 ; RV64I-NEXT: .LBB48_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -4010,10 +4010,10 @@ ; RV32I-LABEL: atomicrmw_umax_i8_seq_cst: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lbu a3, 0(a0) ; RV32I-NEXT: mv s2, a1 @@ -4040,10 +4040,10 @@ ; RV32I-NEXT: j .LBB49_1 ; RV32I-NEXT: .LBB49_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -4074,10 +4074,10 @@ ; RV64I-LABEL: atomicrmw_umax_i8_seq_cst: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lbu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -4104,10 +4104,10 @@ ; RV64I-NEXT: j .LBB49_1 ; RV64I-NEXT: .LBB49_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -4142,10 +4142,10 @@ ; RV32I-LABEL: atomicrmw_umin_i8_monotonic: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lbu a3, 0(a0) ; RV32I-NEXT: mv s2, a1 @@ -4172,10 +4172,10 @@ ; RV32I-NEXT: j .LBB50_1 ; RV32I-NEXT: .LBB50_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -4206,10 +4206,10 @@ ; RV64I-LABEL: atomicrmw_umin_i8_monotonic: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lbu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -4236,10 +4236,10 @@ ; RV64I-NEXT: j .LBB50_1 ; RV64I-NEXT: .LBB50_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -4274,10 +4274,10 @@ ; RV32I-LABEL: atomicrmw_umin_i8_acquire: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lbu a3, 0(a0) ; RV32I-NEXT: mv s2, a1 @@ -4304,10 +4304,10 @@ ; RV32I-NEXT: j .LBB51_1 ; RV32I-NEXT: .LBB51_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -4338,10 +4338,10 @@ ; RV64I-LABEL: atomicrmw_umin_i8_acquire: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lbu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -4368,10 +4368,10 @@ ; RV64I-NEXT: j .LBB51_1 ; RV64I-NEXT: .LBB51_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -4406,10 +4406,10 @@ ; RV32I-LABEL: atomicrmw_umin_i8_release: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lbu a3, 0(a0) ; RV32I-NEXT: mv s2, a1 @@ -4436,10 +4436,10 @@ ; RV32I-NEXT: j .LBB52_1 ; RV32I-NEXT: .LBB52_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -4470,10 +4470,10 @@ ; RV64I-LABEL: atomicrmw_umin_i8_release: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lbu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -4500,10 +4500,10 @@ ; RV64I-NEXT: j .LBB52_1 ; RV64I-NEXT: .LBB52_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -4538,10 +4538,10 @@ ; RV32I-LABEL: atomicrmw_umin_i8_acq_rel: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lbu a3, 0(a0) ; RV32I-NEXT: mv s2, a1 @@ -4568,10 +4568,10 @@ ; RV32I-NEXT: j .LBB53_1 ; RV32I-NEXT: .LBB53_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -4602,10 +4602,10 @@ ; RV64I-LABEL: atomicrmw_umin_i8_acq_rel: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lbu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -4632,10 +4632,10 @@ ; RV64I-NEXT: j .LBB53_1 ; RV64I-NEXT: .LBB53_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -4670,10 +4670,10 @@ ; RV32I-LABEL: atomicrmw_umin_i8_seq_cst: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lbu a3, 0(a0) ; RV32I-NEXT: mv s2, a1 @@ -4700,10 +4700,10 @@ ; RV32I-NEXT: j .LBB54_1 ; RV32I-NEXT: .LBB54_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -4734,10 +4734,10 @@ ; RV64I-LABEL: atomicrmw_umin_i8_seq_cst: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lbu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -4764,10 +4764,10 @@ ; RV64I-NEXT: j .LBB54_1 ; RV64I-NEXT: .LBB54_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -6882,10 +6882,10 @@ ; RV32I-LABEL: atomicrmw_max_i16_monotonic: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lhu a3, 0(a0) ; RV32I-NEXT: mv s2, a1 @@ -6914,10 +6914,10 @@ ; RV32I-NEXT: j .LBB90_1 ; RV32I-NEXT: .LBB90_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -6955,10 +6955,10 @@ ; RV64I-LABEL: atomicrmw_max_i16_monotonic: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lhu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -6987,10 +6987,10 @@ ; RV64I-NEXT: j .LBB90_1 ; RV64I-NEXT: .LBB90_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -7032,10 +7032,10 @@ ; RV32I-LABEL: atomicrmw_max_i16_acquire: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lhu a3, 0(a0) ; RV32I-NEXT: mv s2, a1 @@ -7064,10 +7064,10 @@ ; RV32I-NEXT: j .LBB91_1 ; RV32I-NEXT: .LBB91_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -7105,10 +7105,10 @@ ; RV64I-LABEL: atomicrmw_max_i16_acquire: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lhu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -7137,10 +7137,10 @@ ; RV64I-NEXT: j .LBB91_1 ; RV64I-NEXT: .LBB91_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -7182,10 +7182,10 @@ ; RV32I-LABEL: atomicrmw_max_i16_release: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lhu a3, 0(a0) ; RV32I-NEXT: mv s2, a1 @@ -7214,10 +7214,10 @@ ; RV32I-NEXT: j .LBB92_1 ; RV32I-NEXT: .LBB92_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -7255,10 +7255,10 @@ ; RV64I-LABEL: atomicrmw_max_i16_release: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lhu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -7287,10 +7287,10 @@ ; RV64I-NEXT: j .LBB92_1 ; RV64I-NEXT: .LBB92_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -7332,10 +7332,10 @@ ; RV32I-LABEL: atomicrmw_max_i16_acq_rel: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lhu a3, 0(a0) ; RV32I-NEXT: mv s2, a1 @@ -7364,10 +7364,10 @@ ; RV32I-NEXT: j .LBB93_1 ; RV32I-NEXT: .LBB93_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -7405,10 +7405,10 @@ ; RV64I-LABEL: atomicrmw_max_i16_acq_rel: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lhu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -7437,10 +7437,10 @@ ; RV64I-NEXT: j .LBB93_1 ; RV64I-NEXT: .LBB93_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -7482,10 +7482,10 @@ ; RV32I-LABEL: atomicrmw_max_i16_seq_cst: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lhu a3, 0(a0) ; RV32I-NEXT: mv s2, a1 @@ -7514,10 +7514,10 @@ ; RV32I-NEXT: j .LBB94_1 ; RV32I-NEXT: .LBB94_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -7555,10 +7555,10 @@ ; RV64I-LABEL: atomicrmw_max_i16_seq_cst: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lhu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -7587,10 +7587,10 @@ ; RV64I-NEXT: j .LBB94_1 ; RV64I-NEXT: .LBB94_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -7632,10 +7632,10 @@ ; RV32I-LABEL: atomicrmw_min_i16_monotonic: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lhu a3, 0(a0) ; RV32I-NEXT: mv s2, a1 @@ -7664,10 +7664,10 @@ ; RV32I-NEXT: j .LBB95_1 ; RV32I-NEXT: .LBB95_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -7705,10 +7705,10 @@ ; RV64I-LABEL: atomicrmw_min_i16_monotonic: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lhu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -7737,10 +7737,10 @@ ; RV64I-NEXT: j .LBB95_1 ; RV64I-NEXT: .LBB95_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -7782,10 +7782,10 @@ ; RV32I-LABEL: atomicrmw_min_i16_acquire: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lhu a3, 0(a0) ; RV32I-NEXT: mv s2, a1 @@ -7814,10 +7814,10 @@ ; RV32I-NEXT: j .LBB96_1 ; RV32I-NEXT: .LBB96_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -7855,10 +7855,10 @@ ; RV64I-LABEL: atomicrmw_min_i16_acquire: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lhu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -7887,10 +7887,10 @@ ; RV64I-NEXT: j .LBB96_1 ; RV64I-NEXT: .LBB96_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -7932,10 +7932,10 @@ ; RV32I-LABEL: atomicrmw_min_i16_release: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lhu a3, 0(a0) ; RV32I-NEXT: mv s2, a1 @@ -7964,10 +7964,10 @@ ; RV32I-NEXT: j .LBB97_1 ; RV32I-NEXT: .LBB97_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -8005,10 +8005,10 @@ ; RV64I-LABEL: atomicrmw_min_i16_release: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lhu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -8037,10 +8037,10 @@ ; RV64I-NEXT: j .LBB97_1 ; RV64I-NEXT: .LBB97_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -8082,10 +8082,10 @@ ; RV32I-LABEL: atomicrmw_min_i16_acq_rel: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lhu a3, 0(a0) ; RV32I-NEXT: mv s2, a1 @@ -8114,10 +8114,10 @@ ; RV32I-NEXT: j .LBB98_1 ; RV32I-NEXT: .LBB98_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -8155,10 +8155,10 @@ ; RV64I-LABEL: atomicrmw_min_i16_acq_rel: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lhu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -8187,10 +8187,10 @@ ; RV64I-NEXT: j .LBB98_1 ; RV64I-NEXT: .LBB98_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -8232,10 +8232,10 @@ ; RV32I-LABEL: atomicrmw_min_i16_seq_cst: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lhu a3, 0(a0) ; RV32I-NEXT: mv s2, a1 @@ -8264,10 +8264,10 @@ ; RV32I-NEXT: j .LBB99_1 ; RV32I-NEXT: .LBB99_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -8305,10 +8305,10 @@ ; RV64I-LABEL: atomicrmw_min_i16_seq_cst: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lhu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -8337,10 +8337,10 @@ ; RV64I-NEXT: j .LBB99_1 ; RV64I-NEXT: .LBB99_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -8382,11 +8382,11 @@ ; RV32I-LABEL: atomicrmw_umax_i16_monotonic: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a1 ; RV32I-NEXT: mv s3, a0 ; RV32I-NEXT: lhu a1, 0(a0) @@ -8415,11 +8415,11 @@ ; RV32I-NEXT: j .LBB100_1 ; RV32I-NEXT: .LBB100_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a1 -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -8451,11 +8451,11 @@ ; RV64I-LABEL: atomicrmw_umax_i16_monotonic: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s2, a1 ; RV64I-NEXT: mv s3, a0 ; RV64I-NEXT: lhu a1, 0(a0) @@ -8484,11 +8484,11 @@ ; RV64I-NEXT: j .LBB100_1 ; RV64I-NEXT: .LBB100_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a1 -; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -8524,11 +8524,11 @@ ; RV32I-LABEL: atomicrmw_umax_i16_acquire: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a1 ; RV32I-NEXT: mv s3, a0 ; RV32I-NEXT: lhu a1, 0(a0) @@ -8557,13 +8557,13 @@ ; RV32I-NEXT: j .LBB101_1 ; RV32I-NEXT: .LBB101_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a1 -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload -; RV32I-NEXT: addi sp, sp, 32 -; RV32I-NEXT: ret +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: addi sp, sp, 32 +; RV32I-NEXT: ret ; ; RV32IA-LABEL: atomicrmw_umax_i16_acquire: ; RV32IA: # %bb.0: @@ -8593,11 +8593,11 @@ ; RV64I-LABEL: atomicrmw_umax_i16_acquire: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s2, a1 ; RV64I-NEXT: mv s3, a0 ; RV64I-NEXT: lhu a1, 0(a0) @@ -8626,11 +8626,11 @@ ; RV64I-NEXT: j .LBB101_1 ; RV64I-NEXT: .LBB101_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a1 -; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -8666,11 +8666,11 @@ ; RV32I-LABEL: atomicrmw_umax_i16_release: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a1 ; RV32I-NEXT: mv s3, a0 ; RV32I-NEXT: lhu a1, 0(a0) @@ -8699,11 +8699,11 @@ ; RV32I-NEXT: j .LBB102_1 ; RV32I-NEXT: .LBB102_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a1 -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -8735,11 +8735,11 @@ ; RV64I-LABEL: atomicrmw_umax_i16_release: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s2, a1 ; RV64I-NEXT: mv s3, a0 ; RV64I-NEXT: lhu a1, 0(a0) @@ -8768,11 +8768,11 @@ ; RV64I-NEXT: j .LBB102_1 ; RV64I-NEXT: .LBB102_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a1 -; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -8808,11 +8808,11 @@ ; RV32I-LABEL: atomicrmw_umax_i16_acq_rel: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a1 ; RV32I-NEXT: mv s3, a0 ; RV32I-NEXT: lhu a1, 0(a0) @@ -8841,11 +8841,11 @@ ; RV32I-NEXT: j .LBB103_1 ; RV32I-NEXT: .LBB103_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a1 -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -8877,11 +8877,11 @@ ; RV64I-LABEL: atomicrmw_umax_i16_acq_rel: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s2, a1 ; RV64I-NEXT: mv s3, a0 ; RV64I-NEXT: lhu a1, 0(a0) @@ -8910,11 +8910,11 @@ ; RV64I-NEXT: j .LBB103_1 ; RV64I-NEXT: .LBB103_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a1 -; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -8950,11 +8950,11 @@ ; RV32I-LABEL: atomicrmw_umax_i16_seq_cst: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a1 ; RV32I-NEXT: mv s3, a0 ; RV32I-NEXT: lhu a1, 0(a0) @@ -8983,11 +8983,11 @@ ; RV32I-NEXT: j .LBB104_1 ; RV32I-NEXT: .LBB104_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a1 -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -9019,11 +9019,11 @@ ; RV64I-LABEL: atomicrmw_umax_i16_seq_cst: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s2, a1 ; RV64I-NEXT: mv s3, a0 ; RV64I-NEXT: lhu a1, 0(a0) @@ -9052,11 +9052,11 @@ ; RV64I-NEXT: j .LBB104_1 ; RV64I-NEXT: .LBB104_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a1 -; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -9092,11 +9092,11 @@ ; RV32I-LABEL: atomicrmw_umin_i16_monotonic: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a1 ; RV32I-NEXT: mv s3, a0 ; RV32I-NEXT: lhu a1, 0(a0) @@ -9125,11 +9125,11 @@ ; RV32I-NEXT: j .LBB105_1 ; RV32I-NEXT: .LBB105_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a1 -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -9161,11 +9161,11 @@ ; RV64I-LABEL: atomicrmw_umin_i16_monotonic: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s2, a1 ; RV64I-NEXT: mv s3, a0 ; RV64I-NEXT: lhu a1, 0(a0) @@ -9194,11 +9194,11 @@ ; RV64I-NEXT: j .LBB105_1 ; RV64I-NEXT: .LBB105_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a1 -; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -9234,11 +9234,11 @@ ; RV32I-LABEL: atomicrmw_umin_i16_acquire: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a1 ; RV32I-NEXT: mv s3, a0 ; RV32I-NEXT: lhu a1, 0(a0) @@ -9267,11 +9267,11 @@ ; RV32I-NEXT: j .LBB106_1 ; RV32I-NEXT: .LBB106_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a1 -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -9303,11 +9303,11 @@ ; RV64I-LABEL: atomicrmw_umin_i16_acquire: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s2, a1 ; RV64I-NEXT: mv s3, a0 ; RV64I-NEXT: lhu a1, 0(a0) @@ -9336,11 +9336,11 @@ ; RV64I-NEXT: j .LBB106_1 ; RV64I-NEXT: .LBB106_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a1 -; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -9376,11 +9376,11 @@ ; RV32I-LABEL: atomicrmw_umin_i16_release: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a1 ; RV32I-NEXT: mv s3, a0 ; RV32I-NEXT: lhu a1, 0(a0) @@ -9409,11 +9409,11 @@ ; RV32I-NEXT: j .LBB107_1 ; RV32I-NEXT: .LBB107_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a1 -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -9445,11 +9445,11 @@ ; RV64I-LABEL: atomicrmw_umin_i16_release: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s2, a1 ; RV64I-NEXT: mv s3, a0 ; RV64I-NEXT: lhu a1, 0(a0) @@ -9478,11 +9478,11 @@ ; RV64I-NEXT: j .LBB107_1 ; RV64I-NEXT: .LBB107_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a1 -; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -9518,11 +9518,11 @@ ; RV32I-LABEL: atomicrmw_umin_i16_acq_rel: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a1 ; RV32I-NEXT: mv s3, a0 ; RV32I-NEXT: lhu a1, 0(a0) @@ -9551,11 +9551,11 @@ ; RV32I-NEXT: j .LBB108_1 ; RV32I-NEXT: .LBB108_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a1 -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -9587,11 +9587,11 @@ ; RV64I-LABEL: atomicrmw_umin_i16_acq_rel: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s2, a1 ; RV64I-NEXT: mv s3, a0 ; RV64I-NEXT: lhu a1, 0(a0) @@ -9620,11 +9620,11 @@ ; RV64I-NEXT: j .LBB108_1 ; RV64I-NEXT: .LBB108_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a1 -; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -9660,11 +9660,11 @@ ; RV32I-LABEL: atomicrmw_umin_i16_seq_cst: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a1 ; RV32I-NEXT: mv s3, a0 ; RV32I-NEXT: lhu a1, 0(a0) @@ -9693,11 +9693,11 @@ ; RV32I-NEXT: j .LBB109_1 ; RV32I-NEXT: .LBB109_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a1 -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -9729,11 +9729,11 @@ ; RV64I-LABEL: atomicrmw_umin_i16_seq_cst: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s2, a1 ; RV64I-NEXT: mv s3, a0 ; RV64I-NEXT: lhu a1, 0(a0) @@ -9762,11 +9762,11 @@ ; RV64I-NEXT: j .LBB109_1 ; RV64I-NEXT: .LBB109_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a1 -; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -11072,9 +11072,9 @@ ; RV32I-LABEL: atomicrmw_max_i32_monotonic: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a3, 0(a0) ; RV32I-NEXT: mv s1, a1 @@ -11099,9 +11099,9 @@ ; RV32I-NEXT: j .LBB145_1 ; RV32I-NEXT: .LBB145_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; @@ -11113,10 +11113,10 @@ ; RV64I-LABEL: atomicrmw_max_i32_monotonic: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lwu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -11142,11 +11142,11 @@ ; RV64I-NEXT: mv a2, s2 ; RV64I-NEXT: j .LBB145_1 ; RV64I-NEXT: .LBB145_4: # %atomicrmw.end -; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: mv a0, a3 ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -11162,9 +11162,9 @@ ; RV32I-LABEL: atomicrmw_max_i32_acquire: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a3, 0(a0) ; RV32I-NEXT: mv s1, a1 @@ -11189,9 +11189,9 @@ ; RV32I-NEXT: j .LBB146_1 ; RV32I-NEXT: .LBB146_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; @@ -11203,10 +11203,10 @@ ; RV64I-LABEL: atomicrmw_max_i32_acquire: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lwu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -11233,10 +11233,10 @@ ; RV64I-NEXT: j .LBB146_1 ; RV64I-NEXT: .LBB146_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -11252,9 +11252,9 @@ ; RV32I-LABEL: atomicrmw_max_i32_release: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a3, 0(a0) ; RV32I-NEXT: mv s1, a1 @@ -11279,9 +11279,9 @@ ; RV32I-NEXT: j .LBB147_1 ; RV32I-NEXT: .LBB147_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; @@ -11293,10 +11293,10 @@ ; RV64I-LABEL: atomicrmw_max_i32_release: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lwu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -11323,10 +11323,10 @@ ; RV64I-NEXT: j .LBB147_1 ; RV64I-NEXT: .LBB147_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -11342,9 +11342,9 @@ ; RV32I-LABEL: atomicrmw_max_i32_acq_rel: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a3, 0(a0) ; RV32I-NEXT: mv s1, a1 @@ -11369,9 +11369,9 @@ ; RV32I-NEXT: j .LBB148_1 ; RV32I-NEXT: .LBB148_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; @@ -11383,10 +11383,10 @@ ; RV64I-LABEL: atomicrmw_max_i32_acq_rel: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lwu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -11413,10 +11413,10 @@ ; RV64I-NEXT: j .LBB148_1 ; RV64I-NEXT: .LBB148_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -11432,9 +11432,9 @@ ; RV32I-LABEL: atomicrmw_max_i32_seq_cst: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a3, 0(a0) ; RV32I-NEXT: mv s1, a1 @@ -11459,9 +11459,9 @@ ; RV32I-NEXT: j .LBB149_1 ; RV32I-NEXT: .LBB149_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; @@ -11473,10 +11473,10 @@ ; RV64I-LABEL: atomicrmw_max_i32_seq_cst: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lwu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -11503,10 +11503,10 @@ ; RV64I-NEXT: j .LBB149_1 ; RV64I-NEXT: .LBB149_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -11522,9 +11522,9 @@ ; RV32I-LABEL: atomicrmw_min_i32_monotonic: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a3, 0(a0) ; RV32I-NEXT: mv s1, a1 @@ -11549,9 +11549,9 @@ ; RV32I-NEXT: j .LBB150_1 ; RV32I-NEXT: .LBB150_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; @@ -11563,10 +11563,10 @@ ; RV64I-LABEL: atomicrmw_min_i32_monotonic: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lwu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -11593,10 +11593,10 @@ ; RV64I-NEXT: j .LBB150_1 ; RV64I-NEXT: .LBB150_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -11612,9 +11612,9 @@ ; RV32I-LABEL: atomicrmw_min_i32_acquire: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a3, 0(a0) ; RV32I-NEXT: mv s1, a1 @@ -11639,9 +11639,9 @@ ; RV32I-NEXT: j .LBB151_1 ; RV32I-NEXT: .LBB151_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; @@ -11653,10 +11653,10 @@ ; RV64I-LABEL: atomicrmw_min_i32_acquire: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lwu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -11683,10 +11683,10 @@ ; RV64I-NEXT: j .LBB151_1 ; RV64I-NEXT: .LBB151_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -11702,9 +11702,9 @@ ; RV32I-LABEL: atomicrmw_min_i32_release: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a3, 0(a0) ; RV32I-NEXT: mv s1, a1 @@ -11729,9 +11729,9 @@ ; RV32I-NEXT: j .LBB152_1 ; RV32I-NEXT: .LBB152_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; @@ -11743,10 +11743,10 @@ ; RV64I-LABEL: atomicrmw_min_i32_release: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lwu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -11773,10 +11773,10 @@ ; RV64I-NEXT: j .LBB152_1 ; RV64I-NEXT: .LBB152_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -11792,9 +11792,9 @@ ; RV32I-LABEL: atomicrmw_min_i32_acq_rel: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a3, 0(a0) ; RV32I-NEXT: mv s1, a1 @@ -11819,9 +11819,9 @@ ; RV32I-NEXT: j .LBB153_1 ; RV32I-NEXT: .LBB153_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; @@ -11833,10 +11833,10 @@ ; RV64I-LABEL: atomicrmw_min_i32_acq_rel: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lwu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -11863,10 +11863,10 @@ ; RV64I-NEXT: j .LBB153_1 ; RV64I-NEXT: .LBB153_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -11882,9 +11882,9 @@ ; RV32I-LABEL: atomicrmw_min_i32_seq_cst: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a3, 0(a0) ; RV32I-NEXT: mv s1, a1 @@ -11909,9 +11909,9 @@ ; RV32I-NEXT: j .LBB154_1 ; RV32I-NEXT: .LBB154_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; @@ -11923,10 +11923,10 @@ ; RV64I-LABEL: atomicrmw_min_i32_seq_cst: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lwu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -11953,10 +11953,10 @@ ; RV64I-NEXT: j .LBB154_1 ; RV64I-NEXT: .LBB154_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -11972,9 +11972,9 @@ ; RV32I-LABEL: atomicrmw_umax_i32_monotonic: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a3, 0(a0) ; RV32I-NEXT: mv s1, a1 @@ -11999,9 +11999,9 @@ ; RV32I-NEXT: j .LBB155_1 ; RV32I-NEXT: .LBB155_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; @@ -12013,10 +12013,10 @@ ; RV64I-LABEL: atomicrmw_umax_i32_monotonic: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lwu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -12043,10 +12043,10 @@ ; RV64I-NEXT: j .LBB155_1 ; RV64I-NEXT: .LBB155_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -12062,9 +12062,9 @@ ; RV32I-LABEL: atomicrmw_umax_i32_acquire: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a3, 0(a0) ; RV32I-NEXT: mv s1, a1 @@ -12089,9 +12089,9 @@ ; RV32I-NEXT: j .LBB156_1 ; RV32I-NEXT: .LBB156_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; @@ -12103,10 +12103,10 @@ ; RV64I-LABEL: atomicrmw_umax_i32_acquire: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lwu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -12133,10 +12133,10 @@ ; RV64I-NEXT: j .LBB156_1 ; RV64I-NEXT: .LBB156_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -12152,9 +12152,9 @@ ; RV32I-LABEL: atomicrmw_umax_i32_release: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a3, 0(a0) ; RV32I-NEXT: mv s1, a1 @@ -12179,9 +12179,9 @@ ; RV32I-NEXT: j .LBB157_1 ; RV32I-NEXT: .LBB157_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; @@ -12193,10 +12193,10 @@ ; RV64I-LABEL: atomicrmw_umax_i32_release: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lwu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -12223,10 +12223,10 @@ ; RV64I-NEXT: j .LBB157_1 ; RV64I-NEXT: .LBB157_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -12242,9 +12242,9 @@ ; RV32I-LABEL: atomicrmw_umax_i32_acq_rel: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a3, 0(a0) ; RV32I-NEXT: mv s1, a1 @@ -12269,9 +12269,9 @@ ; RV32I-NEXT: j .LBB158_1 ; RV32I-NEXT: .LBB158_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; @@ -12283,10 +12283,10 @@ ; RV64I-LABEL: atomicrmw_umax_i32_acq_rel: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lwu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -12313,10 +12313,10 @@ ; RV64I-NEXT: j .LBB158_1 ; RV64I-NEXT: .LBB158_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -12332,9 +12332,9 @@ ; RV32I-LABEL: atomicrmw_umax_i32_seq_cst: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a3, 0(a0) ; RV32I-NEXT: mv s1, a1 @@ -12359,9 +12359,9 @@ ; RV32I-NEXT: j .LBB159_1 ; RV32I-NEXT: .LBB159_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; @@ -12373,10 +12373,10 @@ ; RV64I-LABEL: atomicrmw_umax_i32_seq_cst: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lwu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -12403,10 +12403,10 @@ ; RV64I-NEXT: j .LBB159_1 ; RV64I-NEXT: .LBB159_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -12422,9 +12422,9 @@ ; RV32I-LABEL: atomicrmw_umin_i32_monotonic: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a3, 0(a0) ; RV32I-NEXT: mv s1, a1 @@ -12449,9 +12449,9 @@ ; RV32I-NEXT: j .LBB160_1 ; RV32I-NEXT: .LBB160_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; @@ -12463,10 +12463,10 @@ ; RV64I-LABEL: atomicrmw_umin_i32_monotonic: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lwu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -12493,10 +12493,10 @@ ; RV64I-NEXT: j .LBB160_1 ; RV64I-NEXT: .LBB160_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -12512,9 +12512,9 @@ ; RV32I-LABEL: atomicrmw_umin_i32_acquire: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a3, 0(a0) ; RV32I-NEXT: mv s1, a1 @@ -12539,9 +12539,9 @@ ; RV32I-NEXT: j .LBB161_1 ; RV32I-NEXT: .LBB161_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; @@ -12553,10 +12553,10 @@ ; RV64I-LABEL: atomicrmw_umin_i32_acquire: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lwu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -12583,10 +12583,10 @@ ; RV64I-NEXT: j .LBB161_1 ; RV64I-NEXT: .LBB161_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -12602,9 +12602,9 @@ ; RV32I-LABEL: atomicrmw_umin_i32_release: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a3, 0(a0) ; RV32I-NEXT: mv s1, a1 @@ -12629,9 +12629,9 @@ ; RV32I-NEXT: j .LBB162_1 ; RV32I-NEXT: .LBB162_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; @@ -12643,10 +12643,10 @@ ; RV64I-LABEL: atomicrmw_umin_i32_release: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lwu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -12673,10 +12673,10 @@ ; RV64I-NEXT: j .LBB162_1 ; RV64I-NEXT: .LBB162_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -12692,9 +12692,9 @@ ; RV32I-LABEL: atomicrmw_umin_i32_acq_rel: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a3, 0(a0) ; RV32I-NEXT: mv s1, a1 @@ -12719,9 +12719,9 @@ ; RV32I-NEXT: j .LBB163_1 ; RV32I-NEXT: .LBB163_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; @@ -12733,10 +12733,10 @@ ; RV64I-LABEL: atomicrmw_umin_i32_acq_rel: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lwu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -12763,10 +12763,10 @@ ; RV64I-NEXT: j .LBB163_1 ; RV64I-NEXT: .LBB163_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -12782,9 +12782,9 @@ ; RV32I-LABEL: atomicrmw_umin_i32_seq_cst: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a3, 0(a0) ; RV32I-NEXT: mv s1, a1 @@ -12809,9 +12809,9 @@ ; RV32I-NEXT: j .LBB164_1 ; RV32I-NEXT: .LBB164_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; @@ -12823,10 +12823,10 @@ ; RV64I-LABEL: atomicrmw_umin_i32_seq_cst: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lwu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -12853,10 +12853,10 @@ ; RV64I-NEXT: j .LBB164_1 ; RV64I-NEXT: .LBB164_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -14277,10 +14277,10 @@ ; RV32I-LABEL: atomicrmw_max_i64_monotonic: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a5, 4(a0) ; RV32I-NEXT: lw a4, 0(a0) @@ -14321,20 +14321,20 @@ ; RV32I-NEXT: .LBB200_7: # %atomicrmw.end ; RV32I-NEXT: mv a0, a4 ; RV32I-NEXT: mv a1, a5 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV32IA-LABEL: atomicrmw_max_i64_monotonic: ; RV32IA: # %bb.0: ; RV32IA-NEXT: addi sp, sp, -32 -; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32IA-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32IA-NEXT: mv s0, a0 ; RV32IA-NEXT: lw a5, 4(a0) ; RV32IA-NEXT: lw a4, 0(a0) @@ -14375,19 +14375,19 @@ ; RV32IA-NEXT: .LBB200_7: # %atomicrmw.end ; RV32IA-NEXT: mv a0, a4 ; RV32IA-NEXT: mv a1, a5 -; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32IA-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32IA-NEXT: addi sp, sp, 32 ; RV32IA-NEXT: ret ; ; RV64I-LABEL: atomicrmw_max_i64_monotonic: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: ld a3, 0(a0) ; RV64I-NEXT: mv s1, a1 @@ -14412,9 +14412,9 @@ ; RV64I-NEXT: j .LBB200_1 ; RV64I-NEXT: .LBB200_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret ; @@ -14430,10 +14430,10 @@ ; RV32I-LABEL: atomicrmw_max_i64_acquire: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a5, 4(a0) ; RV32I-NEXT: lw a4, 0(a0) @@ -14474,20 +14474,20 @@ ; RV32I-NEXT: .LBB201_7: # %atomicrmw.end ; RV32I-NEXT: mv a0, a4 ; RV32I-NEXT: mv a1, a5 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV32IA-LABEL: atomicrmw_max_i64_acquire: ; RV32IA: # %bb.0: ; RV32IA-NEXT: addi sp, sp, -32 -; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32IA-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32IA-NEXT: mv s0, a0 ; RV32IA-NEXT: lw a5, 4(a0) ; RV32IA-NEXT: lw a4, 0(a0) @@ -14528,19 +14528,19 @@ ; RV32IA-NEXT: .LBB201_7: # %atomicrmw.end ; RV32IA-NEXT: mv a0, a4 ; RV32IA-NEXT: mv a1, a5 -; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32IA-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32IA-NEXT: addi sp, sp, 32 ; RV32IA-NEXT: ret ; ; RV64I-LABEL: atomicrmw_max_i64_acquire: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: ld a3, 0(a0) ; RV64I-NEXT: mv s1, a1 @@ -14565,9 +14565,9 @@ ; RV64I-NEXT: j .LBB201_1 ; RV64I-NEXT: .LBB201_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret ; @@ -14583,10 +14583,10 @@ ; RV32I-LABEL: atomicrmw_max_i64_release: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a5, 4(a0) ; RV32I-NEXT: lw a4, 0(a0) @@ -14627,20 +14627,20 @@ ; RV32I-NEXT: .LBB202_7: # %atomicrmw.end ; RV32I-NEXT: mv a0, a4 ; RV32I-NEXT: mv a1, a5 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV32IA-LABEL: atomicrmw_max_i64_release: ; RV32IA: # %bb.0: ; RV32IA-NEXT: addi sp, sp, -32 -; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32IA-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32IA-NEXT: mv s0, a0 ; RV32IA-NEXT: lw a5, 4(a0) ; RV32IA-NEXT: lw a4, 0(a0) @@ -14681,19 +14681,19 @@ ; RV32IA-NEXT: .LBB202_7: # %atomicrmw.end ; RV32IA-NEXT: mv a0, a4 ; RV32IA-NEXT: mv a1, a5 -; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32IA-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32IA-NEXT: addi sp, sp, 32 ; RV32IA-NEXT: ret ; ; RV64I-LABEL: atomicrmw_max_i64_release: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: ld a3, 0(a0) ; RV64I-NEXT: mv s1, a1 @@ -14718,9 +14718,9 @@ ; RV64I-NEXT: j .LBB202_1 ; RV64I-NEXT: .LBB202_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret ; @@ -14736,10 +14736,10 @@ ; RV32I-LABEL: atomicrmw_max_i64_acq_rel: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a5, 4(a0) ; RV32I-NEXT: lw a4, 0(a0) @@ -14780,20 +14780,20 @@ ; RV32I-NEXT: .LBB203_7: # %atomicrmw.end ; RV32I-NEXT: mv a0, a4 ; RV32I-NEXT: mv a1, a5 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV32IA-LABEL: atomicrmw_max_i64_acq_rel: ; RV32IA: # %bb.0: ; RV32IA-NEXT: addi sp, sp, -32 -; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32IA-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32IA-NEXT: mv s0, a0 ; RV32IA-NEXT: lw a5, 4(a0) ; RV32IA-NEXT: lw a4, 0(a0) @@ -14834,19 +14834,19 @@ ; RV32IA-NEXT: .LBB203_7: # %atomicrmw.end ; RV32IA-NEXT: mv a0, a4 ; RV32IA-NEXT: mv a1, a5 -; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32IA-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32IA-NEXT: addi sp, sp, 32 ; RV32IA-NEXT: ret ; ; RV64I-LABEL: atomicrmw_max_i64_acq_rel: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: ld a3, 0(a0) ; RV64I-NEXT: mv s1, a1 @@ -14871,9 +14871,9 @@ ; RV64I-NEXT: j .LBB203_1 ; RV64I-NEXT: .LBB203_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret ; @@ -14889,10 +14889,10 @@ ; RV32I-LABEL: atomicrmw_max_i64_seq_cst: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a5, 4(a0) ; RV32I-NEXT: lw a4, 0(a0) @@ -14933,20 +14933,20 @@ ; RV32I-NEXT: .LBB204_7: # %atomicrmw.end ; RV32I-NEXT: mv a0, a4 ; RV32I-NEXT: mv a1, a5 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV32IA-LABEL: atomicrmw_max_i64_seq_cst: ; RV32IA: # %bb.0: ; RV32IA-NEXT: addi sp, sp, -32 -; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32IA-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32IA-NEXT: mv s0, a0 ; RV32IA-NEXT: lw a5, 4(a0) ; RV32IA-NEXT: lw a4, 0(a0) @@ -14987,19 +14987,19 @@ ; RV32IA-NEXT: .LBB204_7: # %atomicrmw.end ; RV32IA-NEXT: mv a0, a4 ; RV32IA-NEXT: mv a1, a5 -; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32IA-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32IA-NEXT: addi sp, sp, 32 ; RV32IA-NEXT: ret ; ; RV64I-LABEL: atomicrmw_max_i64_seq_cst: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: ld a3, 0(a0) ; RV64I-NEXT: mv s1, a1 @@ -15024,9 +15024,9 @@ ; RV64I-NEXT: j .LBB204_1 ; RV64I-NEXT: .LBB204_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret ; @@ -15042,10 +15042,10 @@ ; RV32I-LABEL: atomicrmw_min_i64_monotonic: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a5, 4(a0) ; RV32I-NEXT: lw a4, 0(a0) @@ -15087,20 +15087,20 @@ ; RV32I-NEXT: .LBB205_7: # %atomicrmw.end ; RV32I-NEXT: mv a0, a4 ; RV32I-NEXT: mv a1, a5 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV32IA-LABEL: atomicrmw_min_i64_monotonic: ; RV32IA: # %bb.0: ; RV32IA-NEXT: addi sp, sp, -32 -; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32IA-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32IA-NEXT: mv s0, a0 ; RV32IA-NEXT: lw a5, 4(a0) ; RV32IA-NEXT: lw a4, 0(a0) @@ -15142,19 +15142,19 @@ ; RV32IA-NEXT: .LBB205_7: # %atomicrmw.end ; RV32IA-NEXT: mv a0, a4 ; RV32IA-NEXT: mv a1, a5 -; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32IA-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32IA-NEXT: addi sp, sp, 32 ; RV32IA-NEXT: ret ; ; RV64I-LABEL: atomicrmw_min_i64_monotonic: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: ld a3, 0(a0) ; RV64I-NEXT: mv s1, a1 @@ -15179,9 +15179,9 @@ ; RV64I-NEXT: j .LBB205_1 ; RV64I-NEXT: .LBB205_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret ; @@ -15197,10 +15197,10 @@ ; RV32I-LABEL: atomicrmw_min_i64_acquire: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a5, 4(a0) ; RV32I-NEXT: lw a4, 0(a0) @@ -15242,20 +15242,20 @@ ; RV32I-NEXT: .LBB206_7: # %atomicrmw.end ; RV32I-NEXT: mv a0, a4 ; RV32I-NEXT: mv a1, a5 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV32IA-LABEL: atomicrmw_min_i64_acquire: ; RV32IA: # %bb.0: ; RV32IA-NEXT: addi sp, sp, -32 -; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32IA-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32IA-NEXT: mv s0, a0 ; RV32IA-NEXT: lw a5, 4(a0) ; RV32IA-NEXT: lw a4, 0(a0) @@ -15297,19 +15297,19 @@ ; RV32IA-NEXT: .LBB206_7: # %atomicrmw.end ; RV32IA-NEXT: mv a0, a4 ; RV32IA-NEXT: mv a1, a5 -; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32IA-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32IA-NEXT: addi sp, sp, 32 ; RV32IA-NEXT: ret ; ; RV64I-LABEL: atomicrmw_min_i64_acquire: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: ld a3, 0(a0) ; RV64I-NEXT: mv s1, a1 @@ -15334,9 +15334,9 @@ ; RV64I-NEXT: j .LBB206_1 ; RV64I-NEXT: .LBB206_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret ; @@ -15352,10 +15352,10 @@ ; RV32I-LABEL: atomicrmw_min_i64_release: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a5, 4(a0) ; RV32I-NEXT: lw a4, 0(a0) @@ -15397,20 +15397,20 @@ ; RV32I-NEXT: .LBB207_7: # %atomicrmw.end ; RV32I-NEXT: mv a0, a4 ; RV32I-NEXT: mv a1, a5 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV32IA-LABEL: atomicrmw_min_i64_release: ; RV32IA: # %bb.0: ; RV32IA-NEXT: addi sp, sp, -32 -; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32IA-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32IA-NEXT: mv s0, a0 ; RV32IA-NEXT: lw a5, 4(a0) ; RV32IA-NEXT: lw a4, 0(a0) @@ -15452,19 +15452,19 @@ ; RV32IA-NEXT: .LBB207_7: # %atomicrmw.end ; RV32IA-NEXT: mv a0, a4 ; RV32IA-NEXT: mv a1, a5 -; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32IA-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32IA-NEXT: addi sp, sp, 32 ; RV32IA-NEXT: ret ; ; RV64I-LABEL: atomicrmw_min_i64_release: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: ld a3, 0(a0) ; RV64I-NEXT: mv s1, a1 @@ -15489,9 +15489,9 @@ ; RV64I-NEXT: j .LBB207_1 ; RV64I-NEXT: .LBB207_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret ; @@ -15507,10 +15507,10 @@ ; RV32I-LABEL: atomicrmw_min_i64_acq_rel: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a5, 4(a0) ; RV32I-NEXT: lw a4, 0(a0) @@ -15552,20 +15552,20 @@ ; RV32I-NEXT: .LBB208_7: # %atomicrmw.end ; RV32I-NEXT: mv a0, a4 ; RV32I-NEXT: mv a1, a5 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV32IA-LABEL: atomicrmw_min_i64_acq_rel: ; RV32IA: # %bb.0: ; RV32IA-NEXT: addi sp, sp, -32 -; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32IA-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32IA-NEXT: mv s0, a0 ; RV32IA-NEXT: lw a5, 4(a0) ; RV32IA-NEXT: lw a4, 0(a0) @@ -15607,19 +15607,19 @@ ; RV32IA-NEXT: .LBB208_7: # %atomicrmw.end ; RV32IA-NEXT: mv a0, a4 ; RV32IA-NEXT: mv a1, a5 -; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32IA-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32IA-NEXT: addi sp, sp, 32 ; RV32IA-NEXT: ret ; ; RV64I-LABEL: atomicrmw_min_i64_acq_rel: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: ld a3, 0(a0) ; RV64I-NEXT: mv s1, a1 @@ -15644,9 +15644,9 @@ ; RV64I-NEXT: j .LBB208_1 ; RV64I-NEXT: .LBB208_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret ; @@ -15662,10 +15662,10 @@ ; RV32I-LABEL: atomicrmw_min_i64_seq_cst: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a5, 4(a0) ; RV32I-NEXT: lw a4, 0(a0) @@ -15707,20 +15707,20 @@ ; RV32I-NEXT: .LBB209_7: # %atomicrmw.end ; RV32I-NEXT: mv a0, a4 ; RV32I-NEXT: mv a1, a5 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV32IA-LABEL: atomicrmw_min_i64_seq_cst: ; RV32IA: # %bb.0: ; RV32IA-NEXT: addi sp, sp, -32 -; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32IA-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32IA-NEXT: mv s0, a0 ; RV32IA-NEXT: lw a5, 4(a0) ; RV32IA-NEXT: lw a4, 0(a0) @@ -15762,19 +15762,19 @@ ; RV32IA-NEXT: .LBB209_7: # %atomicrmw.end ; RV32IA-NEXT: mv a0, a4 ; RV32IA-NEXT: mv a1, a5 -; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32IA-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32IA-NEXT: addi sp, sp, 32 ; RV32IA-NEXT: ret ; ; RV64I-LABEL: atomicrmw_min_i64_seq_cst: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: ld a3, 0(a0) ; RV64I-NEXT: mv s1, a1 @@ -15799,9 +15799,9 @@ ; RV64I-NEXT: j .LBB209_1 ; RV64I-NEXT: .LBB209_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret ; @@ -15817,10 +15817,10 @@ ; RV32I-LABEL: atomicrmw_umax_i64_monotonic: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a5, 4(a0) ; RV32I-NEXT: lw a4, 0(a0) @@ -15861,20 +15861,20 @@ ; RV32I-NEXT: .LBB210_7: # %atomicrmw.end ; RV32I-NEXT: mv a0, a4 ; RV32I-NEXT: mv a1, a5 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV32IA-LABEL: atomicrmw_umax_i64_monotonic: ; RV32IA: # %bb.0: ; RV32IA-NEXT: addi sp, sp, -32 -; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32IA-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32IA-NEXT: mv s0, a0 ; RV32IA-NEXT: lw a5, 4(a0) ; RV32IA-NEXT: lw a4, 0(a0) @@ -15915,19 +15915,19 @@ ; RV32IA-NEXT: .LBB210_7: # %atomicrmw.end ; RV32IA-NEXT: mv a0, a4 ; RV32IA-NEXT: mv a1, a5 -; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32IA-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32IA-NEXT: addi sp, sp, 32 ; RV32IA-NEXT: ret ; ; RV64I-LABEL: atomicrmw_umax_i64_monotonic: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: ld a3, 0(a0) ; RV64I-NEXT: mv s1, a1 @@ -15952,9 +15952,9 @@ ; RV64I-NEXT: j .LBB210_1 ; RV64I-NEXT: .LBB210_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret ; @@ -15970,10 +15970,10 @@ ; RV32I-LABEL: atomicrmw_umax_i64_acquire: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a5, 4(a0) ; RV32I-NEXT: lw a4, 0(a0) @@ -16014,20 +16014,20 @@ ; RV32I-NEXT: .LBB211_7: # %atomicrmw.end ; RV32I-NEXT: mv a0, a4 ; RV32I-NEXT: mv a1, a5 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV32IA-LABEL: atomicrmw_umax_i64_acquire: ; RV32IA: # %bb.0: ; RV32IA-NEXT: addi sp, sp, -32 -; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32IA-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32IA-NEXT: mv s0, a0 ; RV32IA-NEXT: lw a5, 4(a0) ; RV32IA-NEXT: lw a4, 0(a0) @@ -16068,19 +16068,19 @@ ; RV32IA-NEXT: .LBB211_7: # %atomicrmw.end ; RV32IA-NEXT: mv a0, a4 ; RV32IA-NEXT: mv a1, a5 -; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32IA-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32IA-NEXT: addi sp, sp, 32 ; RV32IA-NEXT: ret ; ; RV64I-LABEL: atomicrmw_umax_i64_acquire: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: ld a3, 0(a0) ; RV64I-NEXT: mv s1, a1 @@ -16105,9 +16105,9 @@ ; RV64I-NEXT: j .LBB211_1 ; RV64I-NEXT: .LBB211_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret ; @@ -16123,10 +16123,10 @@ ; RV32I-LABEL: atomicrmw_umax_i64_release: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a5, 4(a0) ; RV32I-NEXT: lw a4, 0(a0) @@ -16167,20 +16167,20 @@ ; RV32I-NEXT: .LBB212_7: # %atomicrmw.end ; RV32I-NEXT: mv a0, a4 ; RV32I-NEXT: mv a1, a5 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV32IA-LABEL: atomicrmw_umax_i64_release: ; RV32IA: # %bb.0: ; RV32IA-NEXT: addi sp, sp, -32 -; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32IA-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32IA-NEXT: mv s0, a0 ; RV32IA-NEXT: lw a5, 4(a0) ; RV32IA-NEXT: lw a4, 0(a0) @@ -16221,19 +16221,19 @@ ; RV32IA-NEXT: .LBB212_7: # %atomicrmw.end ; RV32IA-NEXT: mv a0, a4 ; RV32IA-NEXT: mv a1, a5 -; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32IA-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32IA-NEXT: addi sp, sp, 32 ; RV32IA-NEXT: ret ; ; RV64I-LABEL: atomicrmw_umax_i64_release: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: ld a3, 0(a0) ; RV64I-NEXT: mv s1, a1 @@ -16258,9 +16258,9 @@ ; RV64I-NEXT: j .LBB212_1 ; RV64I-NEXT: .LBB212_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret ; @@ -16276,10 +16276,10 @@ ; RV32I-LABEL: atomicrmw_umax_i64_acq_rel: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a5, 4(a0) ; RV32I-NEXT: lw a4, 0(a0) @@ -16320,20 +16320,20 @@ ; RV32I-NEXT: .LBB213_7: # %atomicrmw.end ; RV32I-NEXT: mv a0, a4 ; RV32I-NEXT: mv a1, a5 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV32IA-LABEL: atomicrmw_umax_i64_acq_rel: ; RV32IA: # %bb.0: ; RV32IA-NEXT: addi sp, sp, -32 -; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32IA-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32IA-NEXT: mv s0, a0 ; RV32IA-NEXT: lw a5, 4(a0) ; RV32IA-NEXT: lw a4, 0(a0) @@ -16374,19 +16374,19 @@ ; RV32IA-NEXT: .LBB213_7: # %atomicrmw.end ; RV32IA-NEXT: mv a0, a4 ; RV32IA-NEXT: mv a1, a5 -; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32IA-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32IA-NEXT: addi sp, sp, 32 ; RV32IA-NEXT: ret ; ; RV64I-LABEL: atomicrmw_umax_i64_acq_rel: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: ld a3, 0(a0) ; RV64I-NEXT: mv s1, a1 @@ -16411,9 +16411,9 @@ ; RV64I-NEXT: j .LBB213_1 ; RV64I-NEXT: .LBB213_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret ; @@ -16429,10 +16429,10 @@ ; RV32I-LABEL: atomicrmw_umax_i64_seq_cst: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a5, 4(a0) ; RV32I-NEXT: lw a4, 0(a0) @@ -16473,20 +16473,20 @@ ; RV32I-NEXT: .LBB214_7: # %atomicrmw.end ; RV32I-NEXT: mv a0, a4 ; RV32I-NEXT: mv a1, a5 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV32IA-LABEL: atomicrmw_umax_i64_seq_cst: ; RV32IA: # %bb.0: ; RV32IA-NEXT: addi sp, sp, -32 -; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32IA-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32IA-NEXT: mv s0, a0 ; RV32IA-NEXT: lw a5, 4(a0) ; RV32IA-NEXT: lw a4, 0(a0) @@ -16527,19 +16527,19 @@ ; RV32IA-NEXT: .LBB214_7: # %atomicrmw.end ; RV32IA-NEXT: mv a0, a4 ; RV32IA-NEXT: mv a1, a5 -; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32IA-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32IA-NEXT: addi sp, sp, 32 ; RV32IA-NEXT: ret ; ; RV64I-LABEL: atomicrmw_umax_i64_seq_cst: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: ld a3, 0(a0) ; RV64I-NEXT: mv s1, a1 @@ -16564,9 +16564,9 @@ ; RV64I-NEXT: j .LBB214_1 ; RV64I-NEXT: .LBB214_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret ; @@ -16582,10 +16582,10 @@ ; RV32I-LABEL: atomicrmw_umin_i64_monotonic: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a5, 4(a0) ; RV32I-NEXT: lw a4, 0(a0) @@ -16627,20 +16627,20 @@ ; RV32I-NEXT: .LBB215_7: # %atomicrmw.end ; RV32I-NEXT: mv a0, a4 ; RV32I-NEXT: mv a1, a5 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV32IA-LABEL: atomicrmw_umin_i64_monotonic: ; RV32IA: # %bb.0: ; RV32IA-NEXT: addi sp, sp, -32 -; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32IA-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32IA-NEXT: mv s0, a0 ; RV32IA-NEXT: lw a5, 4(a0) ; RV32IA-NEXT: lw a4, 0(a0) @@ -16682,19 +16682,19 @@ ; RV32IA-NEXT: .LBB215_7: # %atomicrmw.end ; RV32IA-NEXT: mv a0, a4 ; RV32IA-NEXT: mv a1, a5 -; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32IA-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32IA-NEXT: addi sp, sp, 32 ; RV32IA-NEXT: ret ; ; RV64I-LABEL: atomicrmw_umin_i64_monotonic: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: ld a3, 0(a0) ; RV64I-NEXT: mv s1, a1 @@ -16719,9 +16719,9 @@ ; RV64I-NEXT: j .LBB215_1 ; RV64I-NEXT: .LBB215_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret ; @@ -16737,10 +16737,10 @@ ; RV32I-LABEL: atomicrmw_umin_i64_acquire: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a5, 4(a0) ; RV32I-NEXT: lw a4, 0(a0) @@ -16782,20 +16782,20 @@ ; RV32I-NEXT: .LBB216_7: # %atomicrmw.end ; RV32I-NEXT: mv a0, a4 ; RV32I-NEXT: mv a1, a5 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV32IA-LABEL: atomicrmw_umin_i64_acquire: ; RV32IA: # %bb.0: ; RV32IA-NEXT: addi sp, sp, -32 -; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32IA-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32IA-NEXT: mv s0, a0 ; RV32IA-NEXT: lw a5, 4(a0) ; RV32IA-NEXT: lw a4, 0(a0) @@ -16837,19 +16837,19 @@ ; RV32IA-NEXT: .LBB216_7: # %atomicrmw.end ; RV32IA-NEXT: mv a0, a4 ; RV32IA-NEXT: mv a1, a5 -; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32IA-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32IA-NEXT: addi sp, sp, 32 ; RV32IA-NEXT: ret ; ; RV64I-LABEL: atomicrmw_umin_i64_acquire: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: ld a3, 0(a0) ; RV64I-NEXT: mv s1, a1 @@ -16874,9 +16874,9 @@ ; RV64I-NEXT: j .LBB216_1 ; RV64I-NEXT: .LBB216_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret ; @@ -16892,10 +16892,10 @@ ; RV32I-LABEL: atomicrmw_umin_i64_release: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a5, 4(a0) ; RV32I-NEXT: lw a4, 0(a0) @@ -16937,20 +16937,20 @@ ; RV32I-NEXT: .LBB217_7: # %atomicrmw.end ; RV32I-NEXT: mv a0, a4 ; RV32I-NEXT: mv a1, a5 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV32IA-LABEL: atomicrmw_umin_i64_release: ; RV32IA: # %bb.0: ; RV32IA-NEXT: addi sp, sp, -32 -; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32IA-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32IA-NEXT: mv s0, a0 ; RV32IA-NEXT: lw a5, 4(a0) ; RV32IA-NEXT: lw a4, 0(a0) @@ -16992,19 +16992,19 @@ ; RV32IA-NEXT: .LBB217_7: # %atomicrmw.end ; RV32IA-NEXT: mv a0, a4 ; RV32IA-NEXT: mv a1, a5 -; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32IA-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32IA-NEXT: addi sp, sp, 32 ; RV32IA-NEXT: ret ; ; RV64I-LABEL: atomicrmw_umin_i64_release: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: ld a3, 0(a0) ; RV64I-NEXT: mv s1, a1 @@ -17029,9 +17029,9 @@ ; RV64I-NEXT: j .LBB217_1 ; RV64I-NEXT: .LBB217_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret ; @@ -17047,10 +17047,10 @@ ; RV32I-LABEL: atomicrmw_umin_i64_acq_rel: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a5, 4(a0) ; RV32I-NEXT: lw a4, 0(a0) @@ -17092,20 +17092,20 @@ ; RV32I-NEXT: .LBB218_7: # %atomicrmw.end ; RV32I-NEXT: mv a0, a4 ; RV32I-NEXT: mv a1, a5 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV32IA-LABEL: atomicrmw_umin_i64_acq_rel: ; RV32IA: # %bb.0: ; RV32IA-NEXT: addi sp, sp, -32 -; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32IA-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32IA-NEXT: mv s0, a0 ; RV32IA-NEXT: lw a5, 4(a0) ; RV32IA-NEXT: lw a4, 0(a0) @@ -17147,19 +17147,19 @@ ; RV32IA-NEXT: .LBB218_7: # %atomicrmw.end ; RV32IA-NEXT: mv a0, a4 ; RV32IA-NEXT: mv a1, a5 -; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32IA-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32IA-NEXT: addi sp, sp, 32 ; RV32IA-NEXT: ret ; ; RV64I-LABEL: atomicrmw_umin_i64_acq_rel: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: ld a3, 0(a0) ; RV64I-NEXT: mv s1, a1 @@ -17184,9 +17184,9 @@ ; RV64I-NEXT: j .LBB218_1 ; RV64I-NEXT: .LBB218_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret ; @@ -17202,10 +17202,10 @@ ; RV32I-LABEL: atomicrmw_umin_i64_seq_cst: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a5, 4(a0) ; RV32I-NEXT: lw a4, 0(a0) @@ -17247,20 +17247,20 @@ ; RV32I-NEXT: .LBB219_7: # %atomicrmw.end ; RV32I-NEXT: mv a0, a4 ; RV32I-NEXT: mv a1, a5 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV32IA-LABEL: atomicrmw_umin_i64_seq_cst: ; RV32IA: # %bb.0: ; RV32IA-NEXT: addi sp, sp, -32 -; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32IA-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32IA-NEXT: mv s0, a0 ; RV32IA-NEXT: lw a5, 4(a0) ; RV32IA-NEXT: lw a4, 0(a0) @@ -17302,19 +17302,19 @@ ; RV32IA-NEXT: .LBB219_7: # %atomicrmw.end ; RV32IA-NEXT: mv a0, a4 ; RV32IA-NEXT: mv a1, a5 -; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32IA-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32IA-NEXT: addi sp, sp, 32 ; RV32IA-NEXT: ret ; ; RV64I-LABEL: atomicrmw_umin_i64_seq_cst: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: ld a3, 0(a0) ; RV64I-NEXT: mv s1, a1 @@ -17339,9 +17339,9 @@ ; RV64I-NEXT: j .LBB219_1 ; RV64I-NEXT: .LBB219_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret ; diff --git a/llvm/test/CodeGen/RISCV/atomic-signext.ll b/llvm/test/CodeGen/RISCV/atomic-signext.ll --- a/llvm/test/CodeGen/RISCV/atomic-signext.ll +++ b/llvm/test/CodeGen/RISCV/atomic-signext.ll @@ -578,10 +578,10 @@ ; RV32I-LABEL: atomicrmw_max_i8_monotonic: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lbu a3, 0(a0) ; RV32I-NEXT: mv s2, a1 @@ -611,10 +611,10 @@ ; RV32I-NEXT: .LBB10_4: # %atomicrmw.end ; RV32I-NEXT: slli a0, a3, 24 ; RV32I-NEXT: srai a0, a0, 24 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -653,10 +653,10 @@ ; RV64I-LABEL: atomicrmw_max_i8_monotonic: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lbu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -686,10 +686,10 @@ ; RV64I-NEXT: .LBB10_4: # %atomicrmw.end ; RV64I-NEXT: slli a0, a3, 56 ; RV64I-NEXT: srai a0, a0, 56 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -732,10 +732,10 @@ ; RV32I-LABEL: atomicrmw_min_i8_monotonic: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lbu a3, 0(a0) ; RV32I-NEXT: mv s2, a1 @@ -765,10 +765,10 @@ ; RV32I-NEXT: .LBB11_4: # %atomicrmw.end ; RV32I-NEXT: slli a0, a3, 24 ; RV32I-NEXT: srai a0, a0, 24 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -807,10 +807,10 @@ ; RV64I-LABEL: atomicrmw_min_i8_monotonic: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lbu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -840,10 +840,10 @@ ; RV64I-NEXT: .LBB11_4: # %atomicrmw.end ; RV64I-NEXT: slli a0, a3, 56 ; RV64I-NEXT: srai a0, a0, 56 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -886,10 +886,10 @@ ; RV32I-LABEL: atomicrmw_umax_i8_monotonic: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lbu a3, 0(a0) ; RV32I-NEXT: mv s2, a1 @@ -917,10 +917,10 @@ ; RV32I-NEXT: .LBB12_4: # %atomicrmw.end ; RV32I-NEXT: slli a0, a3, 24 ; RV32I-NEXT: srai a0, a0, 24 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -953,10 +953,10 @@ ; RV64I-LABEL: atomicrmw_umax_i8_monotonic: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lbu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -984,10 +984,10 @@ ; RV64I-NEXT: .LBB12_4: # %atomicrmw.end ; RV64I-NEXT: slli a0, a3, 56 ; RV64I-NEXT: srai a0, a0, 56 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -1024,10 +1024,10 @@ ; RV32I-LABEL: atomicrmw_umin_i8_monotonic: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lbu a3, 0(a0) ; RV32I-NEXT: mv s2, a1 @@ -1055,10 +1055,10 @@ ; RV32I-NEXT: .LBB13_4: # %atomicrmw.end ; RV32I-NEXT: slli a0, a3, 24 ; RV32I-NEXT: srai a0, a0, 24 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -1091,10 +1091,10 @@ ; RV64I-LABEL: atomicrmw_umin_i8_monotonic: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lbu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -1122,10 +1122,10 @@ ; RV64I-NEXT: .LBB13_4: # %atomicrmw.end ; RV64I-NEXT: slli a0, a3, 56 ; RV64I-NEXT: srai a0, a0, 56 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -1634,10 +1634,10 @@ ; RV32I-LABEL: atomicrmw_max_i16_monotonic: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lhu a3, 0(a0) ; RV32I-NEXT: mv s2, a1 @@ -1667,10 +1667,10 @@ ; RV32I-NEXT: .LBB21_4: # %atomicrmw.end ; RV32I-NEXT: slli a0, a3, 16 ; RV32I-NEXT: srai a0, a0, 16 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -1710,10 +1710,10 @@ ; RV64I-LABEL: atomicrmw_max_i16_monotonic: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lhu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -1743,10 +1743,10 @@ ; RV64I-NEXT: .LBB21_4: # %atomicrmw.end ; RV64I-NEXT: slli a0, a3, 48 ; RV64I-NEXT: srai a0, a0, 48 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -1790,10 +1790,10 @@ ; RV32I-LABEL: atomicrmw_min_i16_monotonic: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lhu a3, 0(a0) ; RV32I-NEXT: mv s2, a1 @@ -1823,10 +1823,10 @@ ; RV32I-NEXT: .LBB22_4: # %atomicrmw.end ; RV32I-NEXT: slli a0, a3, 16 ; RV32I-NEXT: srai a0, a0, 16 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -1866,10 +1866,10 @@ ; RV64I-LABEL: atomicrmw_min_i16_monotonic: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lhu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -1899,10 +1899,10 @@ ; RV64I-NEXT: .LBB22_4: # %atomicrmw.end ; RV64I-NEXT: slli a0, a3, 48 ; RV64I-NEXT: srai a0, a0, 48 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -1946,11 +1946,11 @@ ; RV32I-LABEL: atomicrmw_umax_i16_monotonic: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a1 ; RV32I-NEXT: mv s3, a0 ; RV32I-NEXT: lhu a1, 0(a0) @@ -1980,11 +1980,11 @@ ; RV32I-NEXT: .LBB23_4: # %atomicrmw.end ; RV32I-NEXT: slli a0, a1, 16 ; RV32I-NEXT: srai a0, a0, 16 -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -2018,11 +2018,11 @@ ; RV64I-LABEL: atomicrmw_umax_i16_monotonic: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s2, a1 ; RV64I-NEXT: mv s3, a0 ; RV64I-NEXT: lhu a1, 0(a0) @@ -2052,11 +2052,11 @@ ; RV64I-NEXT: .LBB23_4: # %atomicrmw.end ; RV64I-NEXT: slli a0, a1, 48 ; RV64I-NEXT: srai a0, a0, 48 -; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -2094,11 +2094,11 @@ ; RV32I-LABEL: atomicrmw_umin_i16_monotonic: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a1 ; RV32I-NEXT: mv s3, a0 ; RV32I-NEXT: lhu a1, 0(a0) @@ -2128,11 +2128,11 @@ ; RV32I-NEXT: .LBB24_4: # %atomicrmw.end ; RV32I-NEXT: slli a0, a1, 16 ; RV32I-NEXT: srai a0, a0, 16 -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -2166,11 +2166,11 @@ ; RV64I-LABEL: atomicrmw_umin_i16_monotonic: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s2, a1 ; RV64I-NEXT: mv s3, a0 ; RV64I-NEXT: lhu a1, 0(a0) @@ -2200,11 +2200,11 @@ ; RV64I-NEXT: .LBB24_4: # %atomicrmw.end ; RV64I-NEXT: slli a0, a1, 48 ; RV64I-NEXT: srai a0, a0, 48 -; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -2503,9 +2503,9 @@ ; RV32I-LABEL: atomicrmw_max_i32_monotonic: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a3, 0(a0) ; RV32I-NEXT: mv s1, a1 @@ -2530,9 +2530,9 @@ ; RV32I-NEXT: j .LBB32_1 ; RV32I-NEXT: .LBB32_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; @@ -2544,10 +2544,10 @@ ; RV64I-LABEL: atomicrmw_max_i32_monotonic: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lwu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -2574,10 +2574,10 @@ ; RV64I-NEXT: j .LBB32_1 ; RV64I-NEXT: .LBB32_4: # %atomicrmw.end ; RV64I-NEXT: sext.w a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -2593,9 +2593,9 @@ ; RV32I-LABEL: atomicrmw_min_i32_monotonic: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a3, 0(a0) ; RV32I-NEXT: mv s1, a1 @@ -2620,9 +2620,9 @@ ; RV32I-NEXT: j .LBB33_1 ; RV32I-NEXT: .LBB33_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; @@ -2634,10 +2634,10 @@ ; RV64I-LABEL: atomicrmw_min_i32_monotonic: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lwu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -2664,10 +2664,10 @@ ; RV64I-NEXT: j .LBB33_1 ; RV64I-NEXT: .LBB33_4: # %atomicrmw.end ; RV64I-NEXT: sext.w a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -2683,9 +2683,9 @@ ; RV32I-LABEL: atomicrmw_umax_i32_monotonic: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a3, 0(a0) ; RV32I-NEXT: mv s1, a1 @@ -2710,9 +2710,9 @@ ; RV32I-NEXT: j .LBB34_1 ; RV32I-NEXT: .LBB34_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; @@ -2724,10 +2724,10 @@ ; RV64I-LABEL: atomicrmw_umax_i32_monotonic: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lwu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -2754,10 +2754,10 @@ ; RV64I-NEXT: j .LBB34_1 ; RV64I-NEXT: .LBB34_4: # %atomicrmw.end ; RV64I-NEXT: sext.w a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -2773,9 +2773,9 @@ ; RV32I-LABEL: atomicrmw_umin_i32_monotonic: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a3, 0(a0) ; RV32I-NEXT: mv s1, a1 @@ -2800,9 +2800,9 @@ ; RV32I-NEXT: j .LBB35_1 ; RV32I-NEXT: .LBB35_4: # %atomicrmw.end ; RV32I-NEXT: mv a0, a3 -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; @@ -2814,10 +2814,10 @@ ; RV64I-LABEL: atomicrmw_umin_i32_monotonic: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lwu a3, 0(a0) ; RV64I-NEXT: mv s2, a1 @@ -2844,10 +2844,10 @@ ; RV64I-NEXT: j .LBB35_1 ; RV64I-NEXT: .LBB35_4: # %atomicrmw.end ; RV64I-NEXT: sext.w a0, a3 -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -3144,10 +3144,10 @@ ; RV32I-LABEL: atomicrmw_max_i64_monotonic: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a5, 4(a0) ; RV32I-NEXT: lw a4, 0(a0) @@ -3188,20 +3188,20 @@ ; RV32I-NEXT: .LBB43_7: # %atomicrmw.end ; RV32I-NEXT: mv a0, a4 ; RV32I-NEXT: mv a1, a5 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV32IA-LABEL: atomicrmw_max_i64_monotonic: ; RV32IA: # %bb.0: ; RV32IA-NEXT: addi sp, sp, -32 -; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32IA-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32IA-NEXT: mv s0, a0 ; RV32IA-NEXT: lw a5, 4(a0) ; RV32IA-NEXT: lw a4, 0(a0) @@ -3242,19 +3242,19 @@ ; RV32IA-NEXT: .LBB43_7: # %atomicrmw.end ; RV32IA-NEXT: mv a0, a4 ; RV32IA-NEXT: mv a1, a5 -; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32IA-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32IA-NEXT: addi sp, sp, 32 ; RV32IA-NEXT: ret ; ; RV64I-LABEL: atomicrmw_max_i64_monotonic: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: ld a3, 0(a0) ; RV64I-NEXT: mv s1, a1 @@ -3279,9 +3279,9 @@ ; RV64I-NEXT: j .LBB43_1 ; RV64I-NEXT: .LBB43_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret ; @@ -3297,10 +3297,10 @@ ; RV32I-LABEL: atomicrmw_min_i64_monotonic: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a5, 4(a0) ; RV32I-NEXT: lw a4, 0(a0) @@ -3342,20 +3342,20 @@ ; RV32I-NEXT: .LBB44_7: # %atomicrmw.end ; RV32I-NEXT: mv a0, a4 ; RV32I-NEXT: mv a1, a5 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV32IA-LABEL: atomicrmw_min_i64_monotonic: ; RV32IA: # %bb.0: ; RV32IA-NEXT: addi sp, sp, -32 -; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32IA-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32IA-NEXT: mv s0, a0 ; RV32IA-NEXT: lw a5, 4(a0) ; RV32IA-NEXT: lw a4, 0(a0) @@ -3397,19 +3397,19 @@ ; RV32IA-NEXT: .LBB44_7: # %atomicrmw.end ; RV32IA-NEXT: mv a0, a4 ; RV32IA-NEXT: mv a1, a5 -; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32IA-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32IA-NEXT: addi sp, sp, 32 ; RV32IA-NEXT: ret ; ; RV64I-LABEL: atomicrmw_min_i64_monotonic: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: ld a3, 0(a0) ; RV64I-NEXT: mv s1, a1 @@ -3434,9 +3434,9 @@ ; RV64I-NEXT: j .LBB44_1 ; RV64I-NEXT: .LBB44_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret ; @@ -3452,10 +3452,10 @@ ; RV32I-LABEL: atomicrmw_umax_i64_monotonic: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a5, 4(a0) ; RV32I-NEXT: lw a4, 0(a0) @@ -3496,20 +3496,20 @@ ; RV32I-NEXT: .LBB45_7: # %atomicrmw.end ; RV32I-NEXT: mv a0, a4 ; RV32I-NEXT: mv a1, a5 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV32IA-LABEL: atomicrmw_umax_i64_monotonic: ; RV32IA: # %bb.0: ; RV32IA-NEXT: addi sp, sp, -32 -; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32IA-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32IA-NEXT: mv s0, a0 ; RV32IA-NEXT: lw a5, 4(a0) ; RV32IA-NEXT: lw a4, 0(a0) @@ -3550,19 +3550,19 @@ ; RV32IA-NEXT: .LBB45_7: # %atomicrmw.end ; RV32IA-NEXT: mv a0, a4 ; RV32IA-NEXT: mv a1, a5 -; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32IA-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32IA-NEXT: addi sp, sp, 32 ; RV32IA-NEXT: ret ; ; RV64I-LABEL: atomicrmw_umax_i64_monotonic: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: ld a3, 0(a0) ; RV64I-NEXT: mv s1, a1 @@ -3587,9 +3587,9 @@ ; RV64I-NEXT: j .LBB45_1 ; RV64I-NEXT: .LBB45_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret ; @@ -3605,10 +3605,10 @@ ; RV32I-LABEL: atomicrmw_umin_i64_monotonic: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lw a5, 4(a0) ; RV32I-NEXT: lw a4, 0(a0) @@ -3650,20 +3650,20 @@ ; RV32I-NEXT: .LBB46_7: # %atomicrmw.end ; RV32I-NEXT: mv a0, a4 ; RV32I-NEXT: mv a1, a5 -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV32IA-LABEL: atomicrmw_umin_i64_monotonic: ; RV32IA: # %bb.0: ; RV32IA-NEXT: addi sp, sp, -32 -; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill ; RV32IA-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32IA-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32IA-NEXT: mv s0, a0 ; RV32IA-NEXT: lw a5, 4(a0) ; RV32IA-NEXT: lw a4, 0(a0) @@ -3705,19 +3705,19 @@ ; RV32IA-NEXT: .LBB46_7: # %atomicrmw.end ; RV32IA-NEXT: mv a0, a4 ; RV32IA-NEXT: mv a1, a5 -; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32IA-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32IA-NEXT: lw s2, 16(sp) # 4-byte Folded Reload ; RV32IA-NEXT: addi sp, sp, 32 ; RV32IA-NEXT: ret ; ; RV64I-LABEL: atomicrmw_umin_i64_monotonic: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: ld a3, 0(a0) ; RV64I-NEXT: mv s1, a1 @@ -3742,9 +3742,9 @@ ; RV64I-NEXT: j .LBB46_1 ; RV64I-NEXT: .LBB46_4: # %atomicrmw.end ; RV64I-NEXT: mv a0, a3 -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret ; diff --git a/llvm/test/CodeGen/RISCV/bswap-ctlz-cttz-ctpop.ll b/llvm/test/CodeGen/RISCV/bswap-ctlz-cttz-ctpop.ll --- a/llvm/test/CodeGen/RISCV/bswap-ctlz-cttz-ctpop.ll +++ b/llvm/test/CodeGen/RISCV/bswap-ctlz-cttz-ctpop.ll @@ -435,14 +435,14 @@ ; RV32I-LABEL: test_cttz_i64: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s5, 4(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s6, 0(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s5, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s3, a1 ; RV32I-NEXT: mv s4, a0 ; RV32I-NEXT: addi a0, a0, -1 @@ -493,14 +493,14 @@ ; RV32I-NEXT: srli a0, s2, 24 ; RV32I-NEXT: .LBB7_3: ; RV32I-NEXT: mv a1, zero -; RV32I-NEXT: lw s6, 0(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s5, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s5, 4(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s6, 0(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -735,14 +735,14 @@ ; RV32I-LABEL: test_cttz_i64_zero_undef: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s5, 4(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s6, 0(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s5, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s3, a1 ; RV32I-NEXT: mv s4, a0 ; RV32I-NEXT: addi a0, a0, -1 @@ -793,14 +793,14 @@ ; RV32I-NEXT: srli a0, s2, 24 ; RV32I-NEXT: .LBB11_3: ; RV32I-NEXT: mv a1, zero -; RV32I-NEXT: lw s6, 0(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s5, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s5, 4(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s6, 0(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -924,13 +924,13 @@ ; RV32I-LABEL: test_ctpop_i64: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s5, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a0 ; RV32I-NEXT: srli a0, a1, 1 ; RV32I-NEXT: lui a2, 349525 @@ -968,13 +968,13 @@ ; RV32I-NEXT: srli a0, a0, 24 ; RV32I-NEXT: add a0, a0, s5 ; RV32I-NEXT: mv a1, zero -; RV32I-NEXT: lw s5, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s5, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; diff --git a/llvm/test/CodeGen/RISCV/callee-saved-fpr32s.ll b/llvm/test/CodeGen/RISCV/callee-saved-fpr32s.ll --- a/llvm/test/CodeGen/RISCV/callee-saved-fpr32s.ll +++ b/llvm/test/CodeGen/RISCV/callee-saved-fpr32s.ll @@ -164,18 +164,18 @@ ; ILP32F-LABEL: callee: ; ILP32F: # %bb.0: ; ILP32F-NEXT: addi sp, sp, -48 -; ILP32F-NEXT: fsw fs0, 44(sp) # 4-byte Folded Spill -; ILP32F-NEXT: fsw fs1, 40(sp) # 4-byte Folded Spill -; ILP32F-NEXT: fsw fs2, 36(sp) # 4-byte Folded Spill -; ILP32F-NEXT: fsw fs3, 32(sp) # 4-byte Folded Spill -; ILP32F-NEXT: fsw fs4, 28(sp) # 4-byte Folded Spill -; ILP32F-NEXT: fsw fs5, 24(sp) # 4-byte Folded Spill -; ILP32F-NEXT: fsw fs6, 20(sp) # 4-byte Folded Spill -; ILP32F-NEXT: fsw fs7, 16(sp) # 4-byte Folded Spill -; ILP32F-NEXT: fsw fs8, 12(sp) # 4-byte Folded Spill -; ILP32F-NEXT: fsw fs9, 8(sp) # 4-byte Folded Spill -; ILP32F-NEXT: fsw fs10, 4(sp) # 4-byte Folded Spill ; ILP32F-NEXT: fsw fs11, 0(sp) # 4-byte Folded Spill +; ILP32F-NEXT: fsw fs10, 4(sp) # 4-byte Folded Spill +; ILP32F-NEXT: fsw fs9, 8(sp) # 4-byte Folded Spill +; ILP32F-NEXT: fsw fs8, 12(sp) # 4-byte Folded Spill +; ILP32F-NEXT: fsw fs7, 16(sp) # 4-byte Folded Spill +; ILP32F-NEXT: fsw fs6, 20(sp) # 4-byte Folded Spill +; ILP32F-NEXT: fsw fs5, 24(sp) # 4-byte Folded Spill +; ILP32F-NEXT: fsw fs4, 28(sp) # 4-byte Folded Spill +; ILP32F-NEXT: fsw fs3, 32(sp) # 4-byte Folded Spill +; ILP32F-NEXT: fsw fs2, 36(sp) # 4-byte Folded Spill +; ILP32F-NEXT: fsw fs1, 40(sp) # 4-byte Folded Spill +; ILP32F-NEXT: fsw fs0, 44(sp) # 4-byte Folded Spill ; ILP32F-NEXT: lui a0, %hi(var) ; ILP32F-NEXT: flw ft0, %lo(var)(a0) ; ILP32F-NEXT: flw ft1, %lo(var+4)(a0) @@ -242,36 +242,36 @@ ; ILP32F-NEXT: fsw ft2, %lo(var+8)(a0) ; ILP32F-NEXT: fsw ft1, %lo(var+4)(a0) ; ILP32F-NEXT: fsw ft0, %lo(var)(a0) -; ILP32F-NEXT: flw fs11, 0(sp) # 4-byte Folded Reload -; ILP32F-NEXT: flw fs10, 4(sp) # 4-byte Folded Reload -; ILP32F-NEXT: flw fs9, 8(sp) # 4-byte Folded Reload -; ILP32F-NEXT: flw fs8, 12(sp) # 4-byte Folded Reload -; ILP32F-NEXT: flw fs7, 16(sp) # 4-byte Folded Reload -; ILP32F-NEXT: flw fs6, 20(sp) # 4-byte Folded Reload -; ILP32F-NEXT: flw fs5, 24(sp) # 4-byte Folded Reload -; ILP32F-NEXT: flw fs4, 28(sp) # 4-byte Folded Reload -; ILP32F-NEXT: flw fs3, 32(sp) # 4-byte Folded Reload -; ILP32F-NEXT: flw fs2, 36(sp) # 4-byte Folded Reload -; ILP32F-NEXT: flw fs1, 40(sp) # 4-byte Folded Reload ; ILP32F-NEXT: flw fs0, 44(sp) # 4-byte Folded Reload +; ILP32F-NEXT: flw fs1, 40(sp) # 4-byte Folded Reload +; ILP32F-NEXT: flw fs2, 36(sp) # 4-byte Folded Reload +; ILP32F-NEXT: flw fs3, 32(sp) # 4-byte Folded Reload +; ILP32F-NEXT: flw fs4, 28(sp) # 4-byte Folded Reload +; ILP32F-NEXT: flw fs5, 24(sp) # 4-byte Folded Reload +; ILP32F-NEXT: flw fs6, 20(sp) # 4-byte Folded Reload +; ILP32F-NEXT: flw fs7, 16(sp) # 4-byte Folded Reload +; ILP32F-NEXT: flw fs8, 12(sp) # 4-byte Folded Reload +; ILP32F-NEXT: flw fs9, 8(sp) # 4-byte Folded Reload +; ILP32F-NEXT: flw fs10, 4(sp) # 4-byte Folded Reload +; ILP32F-NEXT: flw fs11, 0(sp) # 4-byte Folded Reload ; ILP32F-NEXT: addi sp, sp, 48 ; ILP32F-NEXT: ret ; ; LP64F-LABEL: callee: ; LP64F: # %bb.0: ; LP64F-NEXT: addi sp, sp, -48 -; LP64F-NEXT: fsw fs0, 44(sp) # 4-byte Folded Spill -; LP64F-NEXT: fsw fs1, 40(sp) # 4-byte Folded Spill -; LP64F-NEXT: fsw fs2, 36(sp) # 4-byte Folded Spill -; LP64F-NEXT: fsw fs3, 32(sp) # 4-byte Folded Spill -; LP64F-NEXT: fsw fs4, 28(sp) # 4-byte Folded Spill -; LP64F-NEXT: fsw fs5, 24(sp) # 4-byte Folded Spill -; LP64F-NEXT: fsw fs6, 20(sp) # 4-byte Folded Spill -; LP64F-NEXT: fsw fs7, 16(sp) # 4-byte Folded Spill -; LP64F-NEXT: fsw fs8, 12(sp) # 4-byte Folded Spill -; LP64F-NEXT: fsw fs9, 8(sp) # 4-byte Folded Spill -; LP64F-NEXT: fsw fs10, 4(sp) # 4-byte Folded Spill ; LP64F-NEXT: fsw fs11, 0(sp) # 4-byte Folded Spill +; LP64F-NEXT: fsw fs10, 4(sp) # 4-byte Folded Spill +; LP64F-NEXT: fsw fs9, 8(sp) # 4-byte Folded Spill +; LP64F-NEXT: fsw fs8, 12(sp) # 4-byte Folded Spill +; LP64F-NEXT: fsw fs7, 16(sp) # 4-byte Folded Spill +; LP64F-NEXT: fsw fs6, 20(sp) # 4-byte Folded Spill +; LP64F-NEXT: fsw fs5, 24(sp) # 4-byte Folded Spill +; LP64F-NEXT: fsw fs4, 28(sp) # 4-byte Folded Spill +; LP64F-NEXT: fsw fs3, 32(sp) # 4-byte Folded Spill +; LP64F-NEXT: fsw fs2, 36(sp) # 4-byte Folded Spill +; LP64F-NEXT: fsw fs1, 40(sp) # 4-byte Folded Spill +; LP64F-NEXT: fsw fs0, 44(sp) # 4-byte Folded Spill ; LP64F-NEXT: lui a0, %hi(var) ; LP64F-NEXT: flw ft0, %lo(var)(a0) ; LP64F-NEXT: flw ft1, %lo(var+4)(a0) @@ -338,36 +338,36 @@ ; LP64F-NEXT: fsw ft2, %lo(var+8)(a0) ; LP64F-NEXT: fsw ft1, %lo(var+4)(a0) ; LP64F-NEXT: fsw ft0, %lo(var)(a0) -; LP64F-NEXT: flw fs11, 0(sp) # 4-byte Folded Reload -; LP64F-NEXT: flw fs10, 4(sp) # 4-byte Folded Reload -; LP64F-NEXT: flw fs9, 8(sp) # 4-byte Folded Reload -; LP64F-NEXT: flw fs8, 12(sp) # 4-byte Folded Reload -; LP64F-NEXT: flw fs7, 16(sp) # 4-byte Folded Reload -; LP64F-NEXT: flw fs6, 20(sp) # 4-byte Folded Reload -; LP64F-NEXT: flw fs5, 24(sp) # 4-byte Folded Reload -; LP64F-NEXT: flw fs4, 28(sp) # 4-byte Folded Reload -; LP64F-NEXT: flw fs3, 32(sp) # 4-byte Folded Reload -; LP64F-NEXT: flw fs2, 36(sp) # 4-byte Folded Reload -; LP64F-NEXT: flw fs1, 40(sp) # 4-byte Folded Reload ; LP64F-NEXT: flw fs0, 44(sp) # 4-byte Folded Reload +; LP64F-NEXT: flw fs1, 40(sp) # 4-byte Folded Reload +; LP64F-NEXT: flw fs2, 36(sp) # 4-byte Folded Reload +; LP64F-NEXT: flw fs3, 32(sp) # 4-byte Folded Reload +; LP64F-NEXT: flw fs4, 28(sp) # 4-byte Folded Reload +; LP64F-NEXT: flw fs5, 24(sp) # 4-byte Folded Reload +; LP64F-NEXT: flw fs6, 20(sp) # 4-byte Folded Reload +; LP64F-NEXT: flw fs7, 16(sp) # 4-byte Folded Reload +; LP64F-NEXT: flw fs8, 12(sp) # 4-byte Folded Reload +; LP64F-NEXT: flw fs9, 8(sp) # 4-byte Folded Reload +; LP64F-NEXT: flw fs10, 4(sp) # 4-byte Folded Reload +; LP64F-NEXT: flw fs11, 0(sp) # 4-byte Folded Reload ; LP64F-NEXT: addi sp, sp, 48 ; LP64F-NEXT: ret ; ; ILP32D-LABEL: callee: ; ILP32D: # %bb.0: ; ILP32D-NEXT: addi sp, sp, -96 -; ILP32D-NEXT: fsd fs0, 88(sp) # 8-byte Folded Spill -; ILP32D-NEXT: fsd fs1, 80(sp) # 8-byte Folded Spill -; ILP32D-NEXT: fsd fs2, 72(sp) # 8-byte Folded Spill -; ILP32D-NEXT: fsd fs3, 64(sp) # 8-byte Folded Spill -; ILP32D-NEXT: fsd fs4, 56(sp) # 8-byte Folded Spill -; ILP32D-NEXT: fsd fs5, 48(sp) # 8-byte Folded Spill -; ILP32D-NEXT: fsd fs6, 40(sp) # 8-byte Folded Spill -; ILP32D-NEXT: fsd fs7, 32(sp) # 8-byte Folded Spill -; ILP32D-NEXT: fsd fs8, 24(sp) # 8-byte Folded Spill -; ILP32D-NEXT: fsd fs9, 16(sp) # 8-byte Folded Spill -; ILP32D-NEXT: fsd fs10, 8(sp) # 8-byte Folded Spill ; ILP32D-NEXT: fsd fs11, 0(sp) # 8-byte Folded Spill +; ILP32D-NEXT: fsd fs10, 8(sp) # 8-byte Folded Spill +; ILP32D-NEXT: fsd fs9, 16(sp) # 8-byte Folded Spill +; ILP32D-NEXT: fsd fs8, 24(sp) # 8-byte Folded Spill +; ILP32D-NEXT: fsd fs7, 32(sp) # 8-byte Folded Spill +; ILP32D-NEXT: fsd fs6, 40(sp) # 8-byte Folded Spill +; ILP32D-NEXT: fsd fs5, 48(sp) # 8-byte Folded Spill +; ILP32D-NEXT: fsd fs4, 56(sp) # 8-byte Folded Spill +; ILP32D-NEXT: fsd fs3, 64(sp) # 8-byte Folded Spill +; ILP32D-NEXT: fsd fs2, 72(sp) # 8-byte Folded Spill +; ILP32D-NEXT: fsd fs1, 80(sp) # 8-byte Folded Spill +; ILP32D-NEXT: fsd fs0, 88(sp) # 8-byte Folded Spill ; ILP32D-NEXT: lui a0, %hi(var) ; ILP32D-NEXT: flw ft0, %lo(var)(a0) ; ILP32D-NEXT: flw ft1, %lo(var+4)(a0) @@ -434,36 +434,36 @@ ; ILP32D-NEXT: fsw ft2, %lo(var+8)(a0) ; ILP32D-NEXT: fsw ft1, %lo(var+4)(a0) ; ILP32D-NEXT: fsw ft0, %lo(var)(a0) -; ILP32D-NEXT: fld fs11, 0(sp) # 8-byte Folded Reload -; ILP32D-NEXT: fld fs10, 8(sp) # 8-byte Folded Reload -; ILP32D-NEXT: fld fs9, 16(sp) # 8-byte Folded Reload -; ILP32D-NEXT: fld fs8, 24(sp) # 8-byte Folded Reload -; ILP32D-NEXT: fld fs7, 32(sp) # 8-byte Folded Reload -; ILP32D-NEXT: fld fs6, 40(sp) # 8-byte Folded Reload -; ILP32D-NEXT: fld fs5, 48(sp) # 8-byte Folded Reload -; ILP32D-NEXT: fld fs4, 56(sp) # 8-byte Folded Reload -; ILP32D-NEXT: fld fs3, 64(sp) # 8-byte Folded Reload -; ILP32D-NEXT: fld fs2, 72(sp) # 8-byte Folded Reload -; ILP32D-NEXT: fld fs1, 80(sp) # 8-byte Folded Reload ; ILP32D-NEXT: fld fs0, 88(sp) # 8-byte Folded Reload +; ILP32D-NEXT: fld fs1, 80(sp) # 8-byte Folded Reload +; ILP32D-NEXT: fld fs2, 72(sp) # 8-byte Folded Reload +; ILP32D-NEXT: fld fs3, 64(sp) # 8-byte Folded Reload +; ILP32D-NEXT: fld fs4, 56(sp) # 8-byte Folded Reload +; ILP32D-NEXT: fld fs5, 48(sp) # 8-byte Folded Reload +; ILP32D-NEXT: fld fs6, 40(sp) # 8-byte Folded Reload +; ILP32D-NEXT: fld fs7, 32(sp) # 8-byte Folded Reload +; ILP32D-NEXT: fld fs8, 24(sp) # 8-byte Folded Reload +; ILP32D-NEXT: fld fs9, 16(sp) # 8-byte Folded Reload +; ILP32D-NEXT: fld fs10, 8(sp) # 8-byte Folded Reload +; ILP32D-NEXT: fld fs11, 0(sp) # 8-byte Folded Reload ; ILP32D-NEXT: addi sp, sp, 96 ; ILP32D-NEXT: ret ; ; LP64D-LABEL: callee: ; LP64D: # %bb.0: ; LP64D-NEXT: addi sp, sp, -96 -; LP64D-NEXT: fsd fs0, 88(sp) # 8-byte Folded Spill -; LP64D-NEXT: fsd fs1, 80(sp) # 8-byte Folded Spill -; LP64D-NEXT: fsd fs2, 72(sp) # 8-byte Folded Spill -; LP64D-NEXT: fsd fs3, 64(sp) # 8-byte Folded Spill -; LP64D-NEXT: fsd fs4, 56(sp) # 8-byte Folded Spill -; LP64D-NEXT: fsd fs5, 48(sp) # 8-byte Folded Spill -; LP64D-NEXT: fsd fs6, 40(sp) # 8-byte Folded Spill -; LP64D-NEXT: fsd fs7, 32(sp) # 8-byte Folded Spill -; LP64D-NEXT: fsd fs8, 24(sp) # 8-byte Folded Spill -; LP64D-NEXT: fsd fs9, 16(sp) # 8-byte Folded Spill -; LP64D-NEXT: fsd fs10, 8(sp) # 8-byte Folded Spill ; LP64D-NEXT: fsd fs11, 0(sp) # 8-byte Folded Spill +; LP64D-NEXT: fsd fs10, 8(sp) # 8-byte Folded Spill +; LP64D-NEXT: fsd fs9, 16(sp) # 8-byte Folded Spill +; LP64D-NEXT: fsd fs8, 24(sp) # 8-byte Folded Spill +; LP64D-NEXT: fsd fs7, 32(sp) # 8-byte Folded Spill +; LP64D-NEXT: fsd fs6, 40(sp) # 8-byte Folded Spill +; LP64D-NEXT: fsd fs5, 48(sp) # 8-byte Folded Spill +; LP64D-NEXT: fsd fs4, 56(sp) # 8-byte Folded Spill +; LP64D-NEXT: fsd fs3, 64(sp) # 8-byte Folded Spill +; LP64D-NEXT: fsd fs2, 72(sp) # 8-byte Folded Spill +; LP64D-NEXT: fsd fs1, 80(sp) # 8-byte Folded Spill +; LP64D-NEXT: fsd fs0, 88(sp) # 8-byte Folded Spill ; LP64D-NEXT: lui a0, %hi(var) ; LP64D-NEXT: flw ft0, %lo(var)(a0) ; LP64D-NEXT: flw ft1, %lo(var+4)(a0) @@ -530,18 +530,18 @@ ; LP64D-NEXT: fsw ft2, %lo(var+8)(a0) ; LP64D-NEXT: fsw ft1, %lo(var+4)(a0) ; LP64D-NEXT: fsw ft0, %lo(var)(a0) -; LP64D-NEXT: fld fs11, 0(sp) # 8-byte Folded Reload -; LP64D-NEXT: fld fs10, 8(sp) # 8-byte Folded Reload -; LP64D-NEXT: fld fs9, 16(sp) # 8-byte Folded Reload -; LP64D-NEXT: fld fs8, 24(sp) # 8-byte Folded Reload -; LP64D-NEXT: fld fs7, 32(sp) # 8-byte Folded Reload -; LP64D-NEXT: fld fs6, 40(sp) # 8-byte Folded Reload -; LP64D-NEXT: fld fs5, 48(sp) # 8-byte Folded Reload -; LP64D-NEXT: fld fs4, 56(sp) # 8-byte Folded Reload -; LP64D-NEXT: fld fs3, 64(sp) # 8-byte Folded Reload -; LP64D-NEXT: fld fs2, 72(sp) # 8-byte Folded Reload -; LP64D-NEXT: fld fs1, 80(sp) # 8-byte Folded Reload ; LP64D-NEXT: fld fs0, 88(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs1, 80(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs2, 72(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs3, 64(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs4, 56(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs5, 48(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs6, 40(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs7, 32(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs8, 24(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs9, 16(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs10, 8(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs11, 0(sp) # 8-byte Folded Reload ; LP64D-NEXT: addi sp, sp, 96 ; LP64D-NEXT: ret %val = load [32 x float], [32 x float]* @var @@ -560,9 +560,9 @@ ; ILP32-LABEL: caller: ; ILP32: # %bb.0: ; ILP32-NEXT: addi sp, sp, -144 -; ILP32-NEXT: sw ra, 140(sp) # 4-byte Folded Spill -; ILP32-NEXT: sw s0, 136(sp) # 4-byte Folded Spill ; ILP32-NEXT: sw s1, 132(sp) # 4-byte Folded Spill +; ILP32-NEXT: sw s0, 136(sp) # 4-byte Folded Spill +; ILP32-NEXT: sw ra, 140(sp) # 4-byte Folded Spill ; ILP32-NEXT: lui s0, %hi(var) ; ILP32-NEXT: flw ft0, %lo(var)(s0) ; ILP32-NEXT: fsw ft0, 128(sp) # 4-byte Folded Spill @@ -694,18 +694,18 @@ ; ILP32-NEXT: fsw ft0, %lo(var+4)(s0) ; ILP32-NEXT: flw ft0, 128(sp) # 4-byte Folded Reload ; ILP32-NEXT: fsw ft0, %lo(var)(s0) -; ILP32-NEXT: lw s1, 132(sp) # 4-byte Folded Reload -; ILP32-NEXT: lw s0, 136(sp) # 4-byte Folded Reload ; ILP32-NEXT: lw ra, 140(sp) # 4-byte Folded Reload +; ILP32-NEXT: lw s0, 136(sp) # 4-byte Folded Reload +; ILP32-NEXT: lw s1, 132(sp) # 4-byte Folded Reload ; ILP32-NEXT: addi sp, sp, 144 ; ILP32-NEXT: ret ; ; LP64-LABEL: caller: ; LP64: # %bb.0: ; LP64-NEXT: addi sp, sp, -160 -; LP64-NEXT: sd ra, 152(sp) # 8-byte Folded Spill -; LP64-NEXT: sd s0, 144(sp) # 8-byte Folded Spill ; LP64-NEXT: sd s1, 136(sp) # 8-byte Folded Spill +; LP64-NEXT: sd s0, 144(sp) # 8-byte Folded Spill +; LP64-NEXT: sd ra, 152(sp) # 8-byte Folded Spill ; LP64-NEXT: lui s0, %hi(var) ; LP64-NEXT: flw ft0, %lo(var)(s0) ; LP64-NEXT: fsw ft0, 132(sp) # 4-byte Folded Spill @@ -837,30 +837,30 @@ ; LP64-NEXT: fsw ft0, %lo(var+4)(s0) ; LP64-NEXT: flw ft0, 132(sp) # 4-byte Folded Reload ; LP64-NEXT: fsw ft0, %lo(var)(s0) -; LP64-NEXT: ld s1, 136(sp) # 8-byte Folded Reload -; LP64-NEXT: ld s0, 144(sp) # 8-byte Folded Reload ; LP64-NEXT: ld ra, 152(sp) # 8-byte Folded Reload +; LP64-NEXT: ld s0, 144(sp) # 8-byte Folded Reload +; LP64-NEXT: ld s1, 136(sp) # 8-byte Folded Reload ; LP64-NEXT: addi sp, sp, 160 ; LP64-NEXT: ret ; ; ILP32F-LABEL: caller: ; ILP32F: # %bb.0: ; ILP32F-NEXT: addi sp, sp, -144 -; ILP32F-NEXT: sw ra, 140(sp) # 4-byte Folded Spill -; ILP32F-NEXT: sw s0, 136(sp) # 4-byte Folded Spill -; ILP32F-NEXT: sw s1, 132(sp) # 4-byte Folded Spill -; ILP32F-NEXT: fsw fs0, 128(sp) # 4-byte Folded Spill -; ILP32F-NEXT: fsw fs1, 124(sp) # 4-byte Folded Spill -; ILP32F-NEXT: fsw fs2, 120(sp) # 4-byte Folded Spill -; ILP32F-NEXT: fsw fs3, 116(sp) # 4-byte Folded Spill -; ILP32F-NEXT: fsw fs4, 112(sp) # 4-byte Folded Spill -; ILP32F-NEXT: fsw fs5, 108(sp) # 4-byte Folded Spill -; ILP32F-NEXT: fsw fs6, 104(sp) # 4-byte Folded Spill -; ILP32F-NEXT: fsw fs7, 100(sp) # 4-byte Folded Spill -; ILP32F-NEXT: fsw fs8, 96(sp) # 4-byte Folded Spill -; ILP32F-NEXT: fsw fs9, 92(sp) # 4-byte Folded Spill -; ILP32F-NEXT: fsw fs10, 88(sp) # 4-byte Folded Spill ; ILP32F-NEXT: fsw fs11, 84(sp) # 4-byte Folded Spill +; ILP32F-NEXT: fsw fs10, 88(sp) # 4-byte Folded Spill +; ILP32F-NEXT: fsw fs9, 92(sp) # 4-byte Folded Spill +; ILP32F-NEXT: fsw fs8, 96(sp) # 4-byte Folded Spill +; ILP32F-NEXT: fsw fs7, 100(sp) # 4-byte Folded Spill +; ILP32F-NEXT: fsw fs6, 104(sp) # 4-byte Folded Spill +; ILP32F-NEXT: fsw fs5, 108(sp) # 4-byte Folded Spill +; ILP32F-NEXT: fsw fs4, 112(sp) # 4-byte Folded Spill +; ILP32F-NEXT: fsw fs3, 116(sp) # 4-byte Folded Spill +; ILP32F-NEXT: fsw fs2, 120(sp) # 4-byte Folded Spill +; ILP32F-NEXT: fsw fs1, 124(sp) # 4-byte Folded Spill +; ILP32F-NEXT: fsw fs0, 128(sp) # 4-byte Folded Spill +; ILP32F-NEXT: sw s1, 132(sp) # 4-byte Folded Spill +; ILP32F-NEXT: sw s0, 136(sp) # 4-byte Folded Spill +; ILP32F-NEXT: sw ra, 140(sp) # 4-byte Folded Spill ; ILP32F-NEXT: lui s0, %hi(var) ; ILP32F-NEXT: flw ft0, %lo(var)(s0) ; ILP32F-NEXT: fsw ft0, 80(sp) # 4-byte Folded Spill @@ -968,42 +968,42 @@ ; ILP32F-NEXT: fsw ft0, %lo(var+4)(s0) ; ILP32F-NEXT: flw ft0, 80(sp) # 4-byte Folded Reload ; ILP32F-NEXT: fsw ft0, %lo(var)(s0) -; ILP32F-NEXT: flw fs11, 84(sp) # 4-byte Folded Reload -; ILP32F-NEXT: flw fs10, 88(sp) # 4-byte Folded Reload -; ILP32F-NEXT: flw fs9, 92(sp) # 4-byte Folded Reload -; ILP32F-NEXT: flw fs8, 96(sp) # 4-byte Folded Reload -; ILP32F-NEXT: flw fs7, 100(sp) # 4-byte Folded Reload -; ILP32F-NEXT: flw fs6, 104(sp) # 4-byte Folded Reload -; ILP32F-NEXT: flw fs5, 108(sp) # 4-byte Folded Reload -; ILP32F-NEXT: flw fs4, 112(sp) # 4-byte Folded Reload -; ILP32F-NEXT: flw fs3, 116(sp) # 4-byte Folded Reload -; ILP32F-NEXT: flw fs2, 120(sp) # 4-byte Folded Reload -; ILP32F-NEXT: flw fs1, 124(sp) # 4-byte Folded Reload -; ILP32F-NEXT: flw fs0, 128(sp) # 4-byte Folded Reload -; ILP32F-NEXT: lw s1, 132(sp) # 4-byte Folded Reload -; ILP32F-NEXT: lw s0, 136(sp) # 4-byte Folded Reload ; ILP32F-NEXT: lw ra, 140(sp) # 4-byte Folded Reload +; ILP32F-NEXT: lw s0, 136(sp) # 4-byte Folded Reload +; ILP32F-NEXT: lw s1, 132(sp) # 4-byte Folded Reload +; ILP32F-NEXT: flw fs0, 128(sp) # 4-byte Folded Reload +; ILP32F-NEXT: flw fs1, 124(sp) # 4-byte Folded Reload +; ILP32F-NEXT: flw fs2, 120(sp) # 4-byte Folded Reload +; ILP32F-NEXT: flw fs3, 116(sp) # 4-byte Folded Reload +; ILP32F-NEXT: flw fs4, 112(sp) # 4-byte Folded Reload +; ILP32F-NEXT: flw fs5, 108(sp) # 4-byte Folded Reload +; ILP32F-NEXT: flw fs6, 104(sp) # 4-byte Folded Reload +; ILP32F-NEXT: flw fs7, 100(sp) # 4-byte Folded Reload +; ILP32F-NEXT: flw fs8, 96(sp) # 4-byte Folded Reload +; ILP32F-NEXT: flw fs9, 92(sp) # 4-byte Folded Reload +; ILP32F-NEXT: flw fs10, 88(sp) # 4-byte Folded Reload +; ILP32F-NEXT: flw fs11, 84(sp) # 4-byte Folded Reload ; ILP32F-NEXT: addi sp, sp, 144 ; ILP32F-NEXT: ret ; ; LP64F-LABEL: caller: ; LP64F: # %bb.0: ; LP64F-NEXT: addi sp, sp, -160 -; LP64F-NEXT: sd ra, 152(sp) # 8-byte Folded Spill -; LP64F-NEXT: sd s0, 144(sp) # 8-byte Folded Spill -; LP64F-NEXT: sd s1, 136(sp) # 8-byte Folded Spill -; LP64F-NEXT: fsw fs0, 132(sp) # 4-byte Folded Spill -; LP64F-NEXT: fsw fs1, 128(sp) # 4-byte Folded Spill -; LP64F-NEXT: fsw fs2, 124(sp) # 4-byte Folded Spill -; LP64F-NEXT: fsw fs3, 120(sp) # 4-byte Folded Spill -; LP64F-NEXT: fsw fs4, 116(sp) # 4-byte Folded Spill -; LP64F-NEXT: fsw fs5, 112(sp) # 4-byte Folded Spill -; LP64F-NEXT: fsw fs6, 108(sp) # 4-byte Folded Spill -; LP64F-NEXT: fsw fs7, 104(sp) # 4-byte Folded Spill -; LP64F-NEXT: fsw fs8, 100(sp) # 4-byte Folded Spill -; LP64F-NEXT: fsw fs9, 96(sp) # 4-byte Folded Spill -; LP64F-NEXT: fsw fs10, 92(sp) # 4-byte Folded Spill ; LP64F-NEXT: fsw fs11, 88(sp) # 4-byte Folded Spill +; LP64F-NEXT: fsw fs10, 92(sp) # 4-byte Folded Spill +; LP64F-NEXT: fsw fs9, 96(sp) # 4-byte Folded Spill +; LP64F-NEXT: fsw fs8, 100(sp) # 4-byte Folded Spill +; LP64F-NEXT: fsw fs7, 104(sp) # 4-byte Folded Spill +; LP64F-NEXT: fsw fs6, 108(sp) # 4-byte Folded Spill +; LP64F-NEXT: fsw fs5, 112(sp) # 4-byte Folded Spill +; LP64F-NEXT: fsw fs4, 116(sp) # 4-byte Folded Spill +; LP64F-NEXT: fsw fs3, 120(sp) # 4-byte Folded Spill +; LP64F-NEXT: fsw fs2, 124(sp) # 4-byte Folded Spill +; LP64F-NEXT: fsw fs1, 128(sp) # 4-byte Folded Spill +; LP64F-NEXT: fsw fs0, 132(sp) # 4-byte Folded Spill +; LP64F-NEXT: sd s1, 136(sp) # 8-byte Folded Spill +; LP64F-NEXT: sd s0, 144(sp) # 8-byte Folded Spill +; LP64F-NEXT: sd ra, 152(sp) # 8-byte Folded Spill ; LP64F-NEXT: lui s0, %hi(var) ; LP64F-NEXT: flw ft0, %lo(var)(s0) ; LP64F-NEXT: fsw ft0, 84(sp) # 4-byte Folded Spill @@ -1111,42 +1111,42 @@ ; LP64F-NEXT: fsw ft0, %lo(var+4)(s0) ; LP64F-NEXT: flw ft0, 84(sp) # 4-byte Folded Reload ; LP64F-NEXT: fsw ft0, %lo(var)(s0) -; LP64F-NEXT: flw fs11, 88(sp) # 4-byte Folded Reload -; LP64F-NEXT: flw fs10, 92(sp) # 4-byte Folded Reload -; LP64F-NEXT: flw fs9, 96(sp) # 4-byte Folded Reload -; LP64F-NEXT: flw fs8, 100(sp) # 4-byte Folded Reload -; LP64F-NEXT: flw fs7, 104(sp) # 4-byte Folded Reload -; LP64F-NEXT: flw fs6, 108(sp) # 4-byte Folded Reload -; LP64F-NEXT: flw fs5, 112(sp) # 4-byte Folded Reload -; LP64F-NEXT: flw fs4, 116(sp) # 4-byte Folded Reload -; LP64F-NEXT: flw fs3, 120(sp) # 4-byte Folded Reload -; LP64F-NEXT: flw fs2, 124(sp) # 4-byte Folded Reload -; LP64F-NEXT: flw fs1, 128(sp) # 4-byte Folded Reload -; LP64F-NEXT: flw fs0, 132(sp) # 4-byte Folded Reload -; LP64F-NEXT: ld s1, 136(sp) # 8-byte Folded Reload -; LP64F-NEXT: ld s0, 144(sp) # 8-byte Folded Reload ; LP64F-NEXT: ld ra, 152(sp) # 8-byte Folded Reload +; LP64F-NEXT: ld s0, 144(sp) # 8-byte Folded Reload +; LP64F-NEXT: ld s1, 136(sp) # 8-byte Folded Reload +; LP64F-NEXT: flw fs0, 132(sp) # 4-byte Folded Reload +; LP64F-NEXT: flw fs1, 128(sp) # 4-byte Folded Reload +; LP64F-NEXT: flw fs2, 124(sp) # 4-byte Folded Reload +; LP64F-NEXT: flw fs3, 120(sp) # 4-byte Folded Reload +; LP64F-NEXT: flw fs4, 116(sp) # 4-byte Folded Reload +; LP64F-NEXT: flw fs5, 112(sp) # 4-byte Folded Reload +; LP64F-NEXT: flw fs6, 108(sp) # 4-byte Folded Reload +; LP64F-NEXT: flw fs7, 104(sp) # 4-byte Folded Reload +; LP64F-NEXT: flw fs8, 100(sp) # 4-byte Folded Reload +; LP64F-NEXT: flw fs9, 96(sp) # 4-byte Folded Reload +; LP64F-NEXT: flw fs10, 92(sp) # 4-byte Folded Reload +; LP64F-NEXT: flw fs11, 88(sp) # 4-byte Folded Reload ; LP64F-NEXT: addi sp, sp, 160 ; LP64F-NEXT: ret ; ; ILP32D-LABEL: caller: ; ILP32D: # %bb.0: ; ILP32D-NEXT: addi sp, sp, -192 -; ILP32D-NEXT: sw ra, 188(sp) # 4-byte Folded Spill -; ILP32D-NEXT: sw s0, 184(sp) # 4-byte Folded Spill -; ILP32D-NEXT: sw s1, 180(sp) # 4-byte Folded Spill -; ILP32D-NEXT: fsd fs0, 168(sp) # 8-byte Folded Spill -; ILP32D-NEXT: fsd fs1, 160(sp) # 8-byte Folded Spill -; ILP32D-NEXT: fsd fs2, 152(sp) # 8-byte Folded Spill -; ILP32D-NEXT: fsd fs3, 144(sp) # 8-byte Folded Spill -; ILP32D-NEXT: fsd fs4, 136(sp) # 8-byte Folded Spill -; ILP32D-NEXT: fsd fs5, 128(sp) # 8-byte Folded Spill -; ILP32D-NEXT: fsd fs6, 120(sp) # 8-byte Folded Spill -; ILP32D-NEXT: fsd fs7, 112(sp) # 8-byte Folded Spill -; ILP32D-NEXT: fsd fs8, 104(sp) # 8-byte Folded Spill -; ILP32D-NEXT: fsd fs9, 96(sp) # 8-byte Folded Spill -; ILP32D-NEXT: fsd fs10, 88(sp) # 8-byte Folded Spill ; ILP32D-NEXT: fsd fs11, 80(sp) # 8-byte Folded Spill +; ILP32D-NEXT: fsd fs10, 88(sp) # 8-byte Folded Spill +; ILP32D-NEXT: fsd fs9, 96(sp) # 8-byte Folded Spill +; ILP32D-NEXT: fsd fs8, 104(sp) # 8-byte Folded Spill +; ILP32D-NEXT: fsd fs7, 112(sp) # 8-byte Folded Spill +; ILP32D-NEXT: fsd fs6, 120(sp) # 8-byte Folded Spill +; ILP32D-NEXT: fsd fs5, 128(sp) # 8-byte Folded Spill +; ILP32D-NEXT: fsd fs4, 136(sp) # 8-byte Folded Spill +; ILP32D-NEXT: fsd fs3, 144(sp) # 8-byte Folded Spill +; ILP32D-NEXT: fsd fs2, 152(sp) # 8-byte Folded Spill +; ILP32D-NEXT: fsd fs1, 160(sp) # 8-byte Folded Spill +; ILP32D-NEXT: fsd fs0, 168(sp) # 8-byte Folded Spill +; ILP32D-NEXT: sw s1, 180(sp) # 4-byte Folded Spill +; ILP32D-NEXT: sw s0, 184(sp) # 4-byte Folded Spill +; ILP32D-NEXT: sw ra, 188(sp) # 4-byte Folded Spill ; ILP32D-NEXT: lui s0, %hi(var) ; ILP32D-NEXT: flw ft0, %lo(var)(s0) ; ILP32D-NEXT: fsw ft0, 76(sp) # 4-byte Folded Spill @@ -1254,42 +1254,42 @@ ; ILP32D-NEXT: fsw ft0, %lo(var+4)(s0) ; ILP32D-NEXT: flw ft0, 76(sp) # 4-byte Folded Reload ; ILP32D-NEXT: fsw ft0, %lo(var)(s0) -; ILP32D-NEXT: fld fs11, 80(sp) # 8-byte Folded Reload -; ILP32D-NEXT: fld fs10, 88(sp) # 8-byte Folded Reload -; ILP32D-NEXT: fld fs9, 96(sp) # 8-byte Folded Reload -; ILP32D-NEXT: fld fs8, 104(sp) # 8-byte Folded Reload -; ILP32D-NEXT: fld fs7, 112(sp) # 8-byte Folded Reload -; ILP32D-NEXT: fld fs6, 120(sp) # 8-byte Folded Reload -; ILP32D-NEXT: fld fs5, 128(sp) # 8-byte Folded Reload -; ILP32D-NEXT: fld fs4, 136(sp) # 8-byte Folded Reload -; ILP32D-NEXT: fld fs3, 144(sp) # 8-byte Folded Reload -; ILP32D-NEXT: fld fs2, 152(sp) # 8-byte Folded Reload -; ILP32D-NEXT: fld fs1, 160(sp) # 8-byte Folded Reload -; ILP32D-NEXT: fld fs0, 168(sp) # 8-byte Folded Reload -; ILP32D-NEXT: lw s1, 180(sp) # 4-byte Folded Reload -; ILP32D-NEXT: lw s0, 184(sp) # 4-byte Folded Reload ; ILP32D-NEXT: lw ra, 188(sp) # 4-byte Folded Reload +; ILP32D-NEXT: lw s0, 184(sp) # 4-byte Folded Reload +; ILP32D-NEXT: lw s1, 180(sp) # 4-byte Folded Reload +; ILP32D-NEXT: fld fs0, 168(sp) # 8-byte Folded Reload +; ILP32D-NEXT: fld fs1, 160(sp) # 8-byte Folded Reload +; ILP32D-NEXT: fld fs2, 152(sp) # 8-byte Folded Reload +; ILP32D-NEXT: fld fs3, 144(sp) # 8-byte Folded Reload +; ILP32D-NEXT: fld fs4, 136(sp) # 8-byte Folded Reload +; ILP32D-NEXT: fld fs5, 128(sp) # 8-byte Folded Reload +; ILP32D-NEXT: fld fs6, 120(sp) # 8-byte Folded Reload +; ILP32D-NEXT: fld fs7, 112(sp) # 8-byte Folded Reload +; ILP32D-NEXT: fld fs8, 104(sp) # 8-byte Folded Reload +; ILP32D-NEXT: fld fs9, 96(sp) # 8-byte Folded Reload +; ILP32D-NEXT: fld fs10, 88(sp) # 8-byte Folded Reload +; ILP32D-NEXT: fld fs11, 80(sp) # 8-byte Folded Reload ; ILP32D-NEXT: addi sp, sp, 192 ; ILP32D-NEXT: ret ; ; LP64D-LABEL: caller: ; LP64D: # %bb.0: ; LP64D-NEXT: addi sp, sp, -208 -; LP64D-NEXT: sd ra, 200(sp) # 8-byte Folded Spill -; LP64D-NEXT: sd s0, 192(sp) # 8-byte Folded Spill -; LP64D-NEXT: sd s1, 184(sp) # 8-byte Folded Spill -; LP64D-NEXT: fsd fs0, 176(sp) # 8-byte Folded Spill -; LP64D-NEXT: fsd fs1, 168(sp) # 8-byte Folded Spill -; LP64D-NEXT: fsd fs2, 160(sp) # 8-byte Folded Spill -; LP64D-NEXT: fsd fs3, 152(sp) # 8-byte Folded Spill -; LP64D-NEXT: fsd fs4, 144(sp) # 8-byte Folded Spill -; LP64D-NEXT: fsd fs5, 136(sp) # 8-byte Folded Spill -; LP64D-NEXT: fsd fs6, 128(sp) # 8-byte Folded Spill -; LP64D-NEXT: fsd fs7, 120(sp) # 8-byte Folded Spill -; LP64D-NEXT: fsd fs8, 112(sp) # 8-byte Folded Spill -; LP64D-NEXT: fsd fs9, 104(sp) # 8-byte Folded Spill -; LP64D-NEXT: fsd fs10, 96(sp) # 8-byte Folded Spill ; LP64D-NEXT: fsd fs11, 88(sp) # 8-byte Folded Spill +; LP64D-NEXT: fsd fs10, 96(sp) # 8-byte Folded Spill +; LP64D-NEXT: fsd fs9, 104(sp) # 8-byte Folded Spill +; LP64D-NEXT: fsd fs8, 112(sp) # 8-byte Folded Spill +; LP64D-NEXT: fsd fs7, 120(sp) # 8-byte Folded Spill +; LP64D-NEXT: fsd fs6, 128(sp) # 8-byte Folded Spill +; LP64D-NEXT: fsd fs5, 136(sp) # 8-byte Folded Spill +; LP64D-NEXT: fsd fs4, 144(sp) # 8-byte Folded Spill +; LP64D-NEXT: fsd fs3, 152(sp) # 8-byte Folded Spill +; LP64D-NEXT: fsd fs2, 160(sp) # 8-byte Folded Spill +; LP64D-NEXT: fsd fs1, 168(sp) # 8-byte Folded Spill +; LP64D-NEXT: fsd fs0, 176(sp) # 8-byte Folded Spill +; LP64D-NEXT: sd s1, 184(sp) # 8-byte Folded Spill +; LP64D-NEXT: sd s0, 192(sp) # 8-byte Folded Spill +; LP64D-NEXT: sd ra, 200(sp) # 8-byte Folded Spill ; LP64D-NEXT: lui s0, %hi(var) ; LP64D-NEXT: flw ft0, %lo(var)(s0) ; LP64D-NEXT: fsw ft0, 84(sp) # 4-byte Folded Spill @@ -1397,21 +1397,21 @@ ; LP64D-NEXT: fsw ft0, %lo(var+4)(s0) ; LP64D-NEXT: flw ft0, 84(sp) # 4-byte Folded Reload ; LP64D-NEXT: fsw ft0, %lo(var)(s0) -; LP64D-NEXT: fld fs11, 88(sp) # 8-byte Folded Reload -; LP64D-NEXT: fld fs10, 96(sp) # 8-byte Folded Reload -; LP64D-NEXT: fld fs9, 104(sp) # 8-byte Folded Reload -; LP64D-NEXT: fld fs8, 112(sp) # 8-byte Folded Reload -; LP64D-NEXT: fld fs7, 120(sp) # 8-byte Folded Reload -; LP64D-NEXT: fld fs6, 128(sp) # 8-byte Folded Reload -; LP64D-NEXT: fld fs5, 136(sp) # 8-byte Folded Reload -; LP64D-NEXT: fld fs4, 144(sp) # 8-byte Folded Reload -; LP64D-NEXT: fld fs3, 152(sp) # 8-byte Folded Reload -; LP64D-NEXT: fld fs2, 160(sp) # 8-byte Folded Reload -; LP64D-NEXT: fld fs1, 168(sp) # 8-byte Folded Reload -; LP64D-NEXT: fld fs0, 176(sp) # 8-byte Folded Reload -; LP64D-NEXT: ld s1, 184(sp) # 8-byte Folded Reload -; LP64D-NEXT: ld s0, 192(sp) # 8-byte Folded Reload ; LP64D-NEXT: ld ra, 200(sp) # 8-byte Folded Reload +; LP64D-NEXT: ld s0, 192(sp) # 8-byte Folded Reload +; LP64D-NEXT: ld s1, 184(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs0, 176(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs1, 168(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs2, 160(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs3, 152(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs4, 144(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs5, 136(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs6, 128(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs7, 120(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs8, 112(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs9, 104(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs10, 96(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs11, 88(sp) # 8-byte Folded Reload ; LP64D-NEXT: addi sp, sp, 208 ; LP64D-NEXT: ret %val = load [32 x float], [32 x float]* @var diff --git a/llvm/test/CodeGen/RISCV/callee-saved-fpr64s.ll b/llvm/test/CodeGen/RISCV/callee-saved-fpr64s.ll --- a/llvm/test/CodeGen/RISCV/callee-saved-fpr64s.ll +++ b/llvm/test/CodeGen/RISCV/callee-saved-fpr64s.ll @@ -160,18 +160,18 @@ ; ILP32D-LABEL: callee: ; ILP32D: # %bb.0: ; ILP32D-NEXT: addi sp, sp, -96 -; ILP32D-NEXT: fsd fs0, 88(sp) # 8-byte Folded Spill -; ILP32D-NEXT: fsd fs1, 80(sp) # 8-byte Folded Spill -; ILP32D-NEXT: fsd fs2, 72(sp) # 8-byte Folded Spill -; ILP32D-NEXT: fsd fs3, 64(sp) # 8-byte Folded Spill -; ILP32D-NEXT: fsd fs4, 56(sp) # 8-byte Folded Spill -; ILP32D-NEXT: fsd fs5, 48(sp) # 8-byte Folded Spill -; ILP32D-NEXT: fsd fs6, 40(sp) # 8-byte Folded Spill -; ILP32D-NEXT: fsd fs7, 32(sp) # 8-byte Folded Spill -; ILP32D-NEXT: fsd fs8, 24(sp) # 8-byte Folded Spill -; ILP32D-NEXT: fsd fs9, 16(sp) # 8-byte Folded Spill -; ILP32D-NEXT: fsd fs10, 8(sp) # 8-byte Folded Spill ; ILP32D-NEXT: fsd fs11, 0(sp) # 8-byte Folded Spill +; ILP32D-NEXT: fsd fs10, 8(sp) # 8-byte Folded Spill +; ILP32D-NEXT: fsd fs9, 16(sp) # 8-byte Folded Spill +; ILP32D-NEXT: fsd fs8, 24(sp) # 8-byte Folded Spill +; ILP32D-NEXT: fsd fs7, 32(sp) # 8-byte Folded Spill +; ILP32D-NEXT: fsd fs6, 40(sp) # 8-byte Folded Spill +; ILP32D-NEXT: fsd fs5, 48(sp) # 8-byte Folded Spill +; ILP32D-NEXT: fsd fs4, 56(sp) # 8-byte Folded Spill +; ILP32D-NEXT: fsd fs3, 64(sp) # 8-byte Folded Spill +; ILP32D-NEXT: fsd fs2, 72(sp) # 8-byte Folded Spill +; ILP32D-NEXT: fsd fs1, 80(sp) # 8-byte Folded Spill +; ILP32D-NEXT: fsd fs0, 88(sp) # 8-byte Folded Spill ; ILP32D-NEXT: lui a0, %hi(var) ; ILP32D-NEXT: fld ft0, %lo(var)(a0) ; ILP32D-NEXT: fld ft1, %lo(var+8)(a0) @@ -238,36 +238,36 @@ ; ILP32D-NEXT: fsd ft2, 16(a1) ; ILP32D-NEXT: fsd ft1, %lo(var+8)(a0) ; ILP32D-NEXT: fsd ft0, %lo(var)(a0) -; ILP32D-NEXT: fld fs11, 0(sp) # 8-byte Folded Reload -; ILP32D-NEXT: fld fs10, 8(sp) # 8-byte Folded Reload -; ILP32D-NEXT: fld fs9, 16(sp) # 8-byte Folded Reload -; ILP32D-NEXT: fld fs8, 24(sp) # 8-byte Folded Reload -; ILP32D-NEXT: fld fs7, 32(sp) # 8-byte Folded Reload -; ILP32D-NEXT: fld fs6, 40(sp) # 8-byte Folded Reload -; ILP32D-NEXT: fld fs5, 48(sp) # 8-byte Folded Reload -; ILP32D-NEXT: fld fs4, 56(sp) # 8-byte Folded Reload -; ILP32D-NEXT: fld fs3, 64(sp) # 8-byte Folded Reload -; ILP32D-NEXT: fld fs2, 72(sp) # 8-byte Folded Reload -; ILP32D-NEXT: fld fs1, 80(sp) # 8-byte Folded Reload ; ILP32D-NEXT: fld fs0, 88(sp) # 8-byte Folded Reload +; ILP32D-NEXT: fld fs1, 80(sp) # 8-byte Folded Reload +; ILP32D-NEXT: fld fs2, 72(sp) # 8-byte Folded Reload +; ILP32D-NEXT: fld fs3, 64(sp) # 8-byte Folded Reload +; ILP32D-NEXT: fld fs4, 56(sp) # 8-byte Folded Reload +; ILP32D-NEXT: fld fs5, 48(sp) # 8-byte Folded Reload +; ILP32D-NEXT: fld fs6, 40(sp) # 8-byte Folded Reload +; ILP32D-NEXT: fld fs7, 32(sp) # 8-byte Folded Reload +; ILP32D-NEXT: fld fs8, 24(sp) # 8-byte Folded Reload +; ILP32D-NEXT: fld fs9, 16(sp) # 8-byte Folded Reload +; ILP32D-NEXT: fld fs10, 8(sp) # 8-byte Folded Reload +; ILP32D-NEXT: fld fs11, 0(sp) # 8-byte Folded Reload ; ILP32D-NEXT: addi sp, sp, 96 ; ILP32D-NEXT: ret ; ; LP64D-LABEL: callee: ; LP64D: # %bb.0: ; LP64D-NEXT: addi sp, sp, -96 -; LP64D-NEXT: fsd fs0, 88(sp) # 8-byte Folded Spill -; LP64D-NEXT: fsd fs1, 80(sp) # 8-byte Folded Spill -; LP64D-NEXT: fsd fs2, 72(sp) # 8-byte Folded Spill -; LP64D-NEXT: fsd fs3, 64(sp) # 8-byte Folded Spill -; LP64D-NEXT: fsd fs4, 56(sp) # 8-byte Folded Spill -; LP64D-NEXT: fsd fs5, 48(sp) # 8-byte Folded Spill -; LP64D-NEXT: fsd fs6, 40(sp) # 8-byte Folded Spill -; LP64D-NEXT: fsd fs7, 32(sp) # 8-byte Folded Spill -; LP64D-NEXT: fsd fs8, 24(sp) # 8-byte Folded Spill -; LP64D-NEXT: fsd fs9, 16(sp) # 8-byte Folded Spill -; LP64D-NEXT: fsd fs10, 8(sp) # 8-byte Folded Spill ; LP64D-NEXT: fsd fs11, 0(sp) # 8-byte Folded Spill +; LP64D-NEXT: fsd fs10, 8(sp) # 8-byte Folded Spill +; LP64D-NEXT: fsd fs9, 16(sp) # 8-byte Folded Spill +; LP64D-NEXT: fsd fs8, 24(sp) # 8-byte Folded Spill +; LP64D-NEXT: fsd fs7, 32(sp) # 8-byte Folded Spill +; LP64D-NEXT: fsd fs6, 40(sp) # 8-byte Folded Spill +; LP64D-NEXT: fsd fs5, 48(sp) # 8-byte Folded Spill +; LP64D-NEXT: fsd fs4, 56(sp) # 8-byte Folded Spill +; LP64D-NEXT: fsd fs3, 64(sp) # 8-byte Folded Spill +; LP64D-NEXT: fsd fs2, 72(sp) # 8-byte Folded Spill +; LP64D-NEXT: fsd fs1, 80(sp) # 8-byte Folded Spill +; LP64D-NEXT: fsd fs0, 88(sp) # 8-byte Folded Spill ; LP64D-NEXT: lui a0, %hi(var) ; LP64D-NEXT: fld ft0, %lo(var)(a0) ; LP64D-NEXT: fld ft1, %lo(var+8)(a0) @@ -334,18 +334,18 @@ ; LP64D-NEXT: fsd ft2, 16(a1) ; LP64D-NEXT: fsd ft1, %lo(var+8)(a0) ; LP64D-NEXT: fsd ft0, %lo(var)(a0) -; LP64D-NEXT: fld fs11, 0(sp) # 8-byte Folded Reload -; LP64D-NEXT: fld fs10, 8(sp) # 8-byte Folded Reload -; LP64D-NEXT: fld fs9, 16(sp) # 8-byte Folded Reload -; LP64D-NEXT: fld fs8, 24(sp) # 8-byte Folded Reload -; LP64D-NEXT: fld fs7, 32(sp) # 8-byte Folded Reload -; LP64D-NEXT: fld fs6, 40(sp) # 8-byte Folded Reload -; LP64D-NEXT: fld fs5, 48(sp) # 8-byte Folded Reload -; LP64D-NEXT: fld fs4, 56(sp) # 8-byte Folded Reload -; LP64D-NEXT: fld fs3, 64(sp) # 8-byte Folded Reload -; LP64D-NEXT: fld fs2, 72(sp) # 8-byte Folded Reload -; LP64D-NEXT: fld fs1, 80(sp) # 8-byte Folded Reload ; LP64D-NEXT: fld fs0, 88(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs1, 80(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs2, 72(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs3, 64(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs4, 56(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs5, 48(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs6, 40(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs7, 32(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs8, 24(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs9, 16(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs10, 8(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs11, 0(sp) # 8-byte Folded Reload ; LP64D-NEXT: addi sp, sp, 96 ; LP64D-NEXT: ret %val = load [32 x double], [32 x double]* @var @@ -364,9 +364,9 @@ ; ILP32-LABEL: caller: ; ILP32: # %bb.0: ; ILP32-NEXT: addi sp, sp, -272 -; ILP32-NEXT: sw ra, 268(sp) # 4-byte Folded Spill -; ILP32-NEXT: sw s0, 264(sp) # 4-byte Folded Spill ; ILP32-NEXT: sw s1, 260(sp) # 4-byte Folded Spill +; ILP32-NEXT: sw s0, 264(sp) # 4-byte Folded Spill +; ILP32-NEXT: sw ra, 268(sp) # 4-byte Folded Spill ; ILP32-NEXT: lui s0, %hi(var) ; ILP32-NEXT: fld ft0, %lo(var)(s0) ; ILP32-NEXT: fsd ft0, 248(sp) # 8-byte Folded Spill @@ -498,18 +498,18 @@ ; ILP32-NEXT: fsd ft0, %lo(var+8)(s0) ; ILP32-NEXT: fld ft0, 248(sp) # 8-byte Folded Reload ; ILP32-NEXT: fsd ft0, %lo(var)(s0) -; ILP32-NEXT: lw s1, 260(sp) # 4-byte Folded Reload -; ILP32-NEXT: lw s0, 264(sp) # 4-byte Folded Reload ; ILP32-NEXT: lw ra, 268(sp) # 4-byte Folded Reload +; ILP32-NEXT: lw s0, 264(sp) # 4-byte Folded Reload +; ILP32-NEXT: lw s1, 260(sp) # 4-byte Folded Reload ; ILP32-NEXT: addi sp, sp, 272 ; ILP32-NEXT: ret ; ; LP64-LABEL: caller: ; LP64: # %bb.0: ; LP64-NEXT: addi sp, sp, -288 -; LP64-NEXT: sd ra, 280(sp) # 8-byte Folded Spill -; LP64-NEXT: sd s0, 272(sp) # 8-byte Folded Spill ; LP64-NEXT: sd s1, 264(sp) # 8-byte Folded Spill +; LP64-NEXT: sd s0, 272(sp) # 8-byte Folded Spill +; LP64-NEXT: sd ra, 280(sp) # 8-byte Folded Spill ; LP64-NEXT: lui s0, %hi(var) ; LP64-NEXT: fld ft0, %lo(var)(s0) ; LP64-NEXT: fsd ft0, 256(sp) # 8-byte Folded Spill @@ -641,30 +641,30 @@ ; LP64-NEXT: fsd ft0, %lo(var+8)(s0) ; LP64-NEXT: fld ft0, 256(sp) # 8-byte Folded Reload ; LP64-NEXT: fsd ft0, %lo(var)(s0) -; LP64-NEXT: ld s1, 264(sp) # 8-byte Folded Reload -; LP64-NEXT: ld s0, 272(sp) # 8-byte Folded Reload ; LP64-NEXT: ld ra, 280(sp) # 8-byte Folded Reload +; LP64-NEXT: ld s0, 272(sp) # 8-byte Folded Reload +; LP64-NEXT: ld s1, 264(sp) # 8-byte Folded Reload ; LP64-NEXT: addi sp, sp, 288 ; LP64-NEXT: ret ; ; ILP32D-LABEL: caller: ; ILP32D: # %bb.0: ; ILP32D-NEXT: addi sp, sp, -272 -; ILP32D-NEXT: sw ra, 268(sp) # 4-byte Folded Spill -; ILP32D-NEXT: sw s0, 264(sp) # 4-byte Folded Spill -; ILP32D-NEXT: sw s1, 260(sp) # 4-byte Folded Spill -; ILP32D-NEXT: fsd fs0, 248(sp) # 8-byte Folded Spill -; ILP32D-NEXT: fsd fs1, 240(sp) # 8-byte Folded Spill -; ILP32D-NEXT: fsd fs2, 232(sp) # 8-byte Folded Spill -; ILP32D-NEXT: fsd fs3, 224(sp) # 8-byte Folded Spill -; ILP32D-NEXT: fsd fs4, 216(sp) # 8-byte Folded Spill -; ILP32D-NEXT: fsd fs5, 208(sp) # 8-byte Folded Spill -; ILP32D-NEXT: fsd fs6, 200(sp) # 8-byte Folded Spill -; ILP32D-NEXT: fsd fs7, 192(sp) # 8-byte Folded Spill -; ILP32D-NEXT: fsd fs8, 184(sp) # 8-byte Folded Spill -; ILP32D-NEXT: fsd fs9, 176(sp) # 8-byte Folded Spill -; ILP32D-NEXT: fsd fs10, 168(sp) # 8-byte Folded Spill ; ILP32D-NEXT: fsd fs11, 160(sp) # 8-byte Folded Spill +; ILP32D-NEXT: fsd fs10, 168(sp) # 8-byte Folded Spill +; ILP32D-NEXT: fsd fs9, 176(sp) # 8-byte Folded Spill +; ILP32D-NEXT: fsd fs8, 184(sp) # 8-byte Folded Spill +; ILP32D-NEXT: fsd fs7, 192(sp) # 8-byte Folded Spill +; ILP32D-NEXT: fsd fs6, 200(sp) # 8-byte Folded Spill +; ILP32D-NEXT: fsd fs5, 208(sp) # 8-byte Folded Spill +; ILP32D-NEXT: fsd fs4, 216(sp) # 8-byte Folded Spill +; ILP32D-NEXT: fsd fs3, 224(sp) # 8-byte Folded Spill +; ILP32D-NEXT: fsd fs2, 232(sp) # 8-byte Folded Spill +; ILP32D-NEXT: fsd fs1, 240(sp) # 8-byte Folded Spill +; ILP32D-NEXT: fsd fs0, 248(sp) # 8-byte Folded Spill +; ILP32D-NEXT: sw s1, 260(sp) # 4-byte Folded Spill +; ILP32D-NEXT: sw s0, 264(sp) # 4-byte Folded Spill +; ILP32D-NEXT: sw ra, 268(sp) # 4-byte Folded Spill ; ILP32D-NEXT: lui s0, %hi(var) ; ILP32D-NEXT: fld ft0, %lo(var)(s0) ; ILP32D-NEXT: fsd ft0, 152(sp) # 8-byte Folded Spill @@ -772,42 +772,42 @@ ; ILP32D-NEXT: fsd ft0, %lo(var+8)(s0) ; ILP32D-NEXT: fld ft0, 152(sp) # 8-byte Folded Reload ; ILP32D-NEXT: fsd ft0, %lo(var)(s0) -; ILP32D-NEXT: fld fs11, 160(sp) # 8-byte Folded Reload -; ILP32D-NEXT: fld fs10, 168(sp) # 8-byte Folded Reload -; ILP32D-NEXT: fld fs9, 176(sp) # 8-byte Folded Reload -; ILP32D-NEXT: fld fs8, 184(sp) # 8-byte Folded Reload -; ILP32D-NEXT: fld fs7, 192(sp) # 8-byte Folded Reload -; ILP32D-NEXT: fld fs6, 200(sp) # 8-byte Folded Reload -; ILP32D-NEXT: fld fs5, 208(sp) # 8-byte Folded Reload -; ILP32D-NEXT: fld fs4, 216(sp) # 8-byte Folded Reload -; ILP32D-NEXT: fld fs3, 224(sp) # 8-byte Folded Reload -; ILP32D-NEXT: fld fs2, 232(sp) # 8-byte Folded Reload -; ILP32D-NEXT: fld fs1, 240(sp) # 8-byte Folded Reload -; ILP32D-NEXT: fld fs0, 248(sp) # 8-byte Folded Reload -; ILP32D-NEXT: lw s1, 260(sp) # 4-byte Folded Reload -; ILP32D-NEXT: lw s0, 264(sp) # 4-byte Folded Reload ; ILP32D-NEXT: lw ra, 268(sp) # 4-byte Folded Reload +; ILP32D-NEXT: lw s0, 264(sp) # 4-byte Folded Reload +; ILP32D-NEXT: lw s1, 260(sp) # 4-byte Folded Reload +; ILP32D-NEXT: fld fs0, 248(sp) # 8-byte Folded Reload +; ILP32D-NEXT: fld fs1, 240(sp) # 8-byte Folded Reload +; ILP32D-NEXT: fld fs2, 232(sp) # 8-byte Folded Reload +; ILP32D-NEXT: fld fs3, 224(sp) # 8-byte Folded Reload +; ILP32D-NEXT: fld fs4, 216(sp) # 8-byte Folded Reload +; ILP32D-NEXT: fld fs5, 208(sp) # 8-byte Folded Reload +; ILP32D-NEXT: fld fs6, 200(sp) # 8-byte Folded Reload +; ILP32D-NEXT: fld fs7, 192(sp) # 8-byte Folded Reload +; ILP32D-NEXT: fld fs8, 184(sp) # 8-byte Folded Reload +; ILP32D-NEXT: fld fs9, 176(sp) # 8-byte Folded Reload +; ILP32D-NEXT: fld fs10, 168(sp) # 8-byte Folded Reload +; ILP32D-NEXT: fld fs11, 160(sp) # 8-byte Folded Reload ; ILP32D-NEXT: addi sp, sp, 272 ; ILP32D-NEXT: ret ; ; LP64D-LABEL: caller: ; LP64D: # %bb.0: ; LP64D-NEXT: addi sp, sp, -288 -; LP64D-NEXT: sd ra, 280(sp) # 8-byte Folded Spill -; LP64D-NEXT: sd s0, 272(sp) # 8-byte Folded Spill -; LP64D-NEXT: sd s1, 264(sp) # 8-byte Folded Spill -; LP64D-NEXT: fsd fs0, 256(sp) # 8-byte Folded Spill -; LP64D-NEXT: fsd fs1, 248(sp) # 8-byte Folded Spill -; LP64D-NEXT: fsd fs2, 240(sp) # 8-byte Folded Spill -; LP64D-NEXT: fsd fs3, 232(sp) # 8-byte Folded Spill -; LP64D-NEXT: fsd fs4, 224(sp) # 8-byte Folded Spill -; LP64D-NEXT: fsd fs5, 216(sp) # 8-byte Folded Spill -; LP64D-NEXT: fsd fs6, 208(sp) # 8-byte Folded Spill -; LP64D-NEXT: fsd fs7, 200(sp) # 8-byte Folded Spill -; LP64D-NEXT: fsd fs8, 192(sp) # 8-byte Folded Spill -; LP64D-NEXT: fsd fs9, 184(sp) # 8-byte Folded Spill -; LP64D-NEXT: fsd fs10, 176(sp) # 8-byte Folded Spill ; LP64D-NEXT: fsd fs11, 168(sp) # 8-byte Folded Spill +; LP64D-NEXT: fsd fs10, 176(sp) # 8-byte Folded Spill +; LP64D-NEXT: fsd fs9, 184(sp) # 8-byte Folded Spill +; LP64D-NEXT: fsd fs8, 192(sp) # 8-byte Folded Spill +; LP64D-NEXT: fsd fs7, 200(sp) # 8-byte Folded Spill +; LP64D-NEXT: fsd fs6, 208(sp) # 8-byte Folded Spill +; LP64D-NEXT: fsd fs5, 216(sp) # 8-byte Folded Spill +; LP64D-NEXT: fsd fs4, 224(sp) # 8-byte Folded Spill +; LP64D-NEXT: fsd fs3, 232(sp) # 8-byte Folded Spill +; LP64D-NEXT: fsd fs2, 240(sp) # 8-byte Folded Spill +; LP64D-NEXT: fsd fs1, 248(sp) # 8-byte Folded Spill +; LP64D-NEXT: fsd fs0, 256(sp) # 8-byte Folded Spill +; LP64D-NEXT: sd s1, 264(sp) # 8-byte Folded Spill +; LP64D-NEXT: sd s0, 272(sp) # 8-byte Folded Spill +; LP64D-NEXT: sd ra, 280(sp) # 8-byte Folded Spill ; LP64D-NEXT: lui s0, %hi(var) ; LP64D-NEXT: fld ft0, %lo(var)(s0) ; LP64D-NEXT: fsd ft0, 160(sp) # 8-byte Folded Spill @@ -915,21 +915,21 @@ ; LP64D-NEXT: fsd ft0, %lo(var+8)(s0) ; LP64D-NEXT: fld ft0, 160(sp) # 8-byte Folded Reload ; LP64D-NEXT: fsd ft0, %lo(var)(s0) -; LP64D-NEXT: fld fs11, 168(sp) # 8-byte Folded Reload -; LP64D-NEXT: fld fs10, 176(sp) # 8-byte Folded Reload -; LP64D-NEXT: fld fs9, 184(sp) # 8-byte Folded Reload -; LP64D-NEXT: fld fs8, 192(sp) # 8-byte Folded Reload -; LP64D-NEXT: fld fs7, 200(sp) # 8-byte Folded Reload -; LP64D-NEXT: fld fs6, 208(sp) # 8-byte Folded Reload -; LP64D-NEXT: fld fs5, 216(sp) # 8-byte Folded Reload -; LP64D-NEXT: fld fs4, 224(sp) # 8-byte Folded Reload -; LP64D-NEXT: fld fs3, 232(sp) # 8-byte Folded Reload -; LP64D-NEXT: fld fs2, 240(sp) # 8-byte Folded Reload -; LP64D-NEXT: fld fs1, 248(sp) # 8-byte Folded Reload -; LP64D-NEXT: fld fs0, 256(sp) # 8-byte Folded Reload -; LP64D-NEXT: ld s1, 264(sp) # 8-byte Folded Reload -; LP64D-NEXT: ld s0, 272(sp) # 8-byte Folded Reload ; LP64D-NEXT: ld ra, 280(sp) # 8-byte Folded Reload +; LP64D-NEXT: ld s0, 272(sp) # 8-byte Folded Reload +; LP64D-NEXT: ld s1, 264(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs0, 256(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs1, 248(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs2, 240(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs3, 232(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs4, 224(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs5, 216(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs6, 208(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs7, 200(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs8, 192(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs9, 184(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs10, 176(sp) # 8-byte Folded Reload +; LP64D-NEXT: fld fs11, 168(sp) # 8-byte Folded Reload ; LP64D-NEXT: addi sp, sp, 288 ; LP64D-NEXT: ret %val = load [32 x double], [32 x double]* @var diff --git a/llvm/test/CodeGen/RISCV/callee-saved-gprs.ll b/llvm/test/CodeGen/RISCV/callee-saved-gprs.ll --- a/llvm/test/CodeGen/RISCV/callee-saved-gprs.ll +++ b/llvm/test/CodeGen/RISCV/callee-saved-gprs.ll @@ -29,19 +29,19 @@ ; RV32I-LABEL: callee: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -80 -; RV32I-NEXT: sw ra, 76(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 72(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 68(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 64(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s3, 60(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s4, 56(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s5, 52(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s6, 48(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s7, 44(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s8, 40(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s9, 36(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s10, 32(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s11, 28(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s10, 32(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s9, 36(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s8, 40(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s7, 44(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s6, 48(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s5, 52(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s4, 56(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s3, 60(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 64(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 68(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 72(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 76(sp) # 4-byte Folded Spill ; RV32I-NEXT: lui a7, %hi(var) ; RV32I-NEXT: lw a0, %lo(var)(a7) ; RV32I-NEXT: sw a0, 24(sp) # 4-byte Folded Spill @@ -120,38 +120,38 @@ ; RV32I-NEXT: sw a0, %lo(var+4)(a7) ; RV32I-NEXT: lw a0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: sw a0, %lo(var)(a7) -; RV32I-NEXT: lw s11, 28(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s10, 32(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s9, 36(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s8, 40(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s7, 44(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s6, 48(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s5, 52(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s4, 56(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s3, 60(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 64(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 68(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 72(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 76(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 72(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 68(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 64(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 60(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s4, 56(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s5, 52(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s6, 48(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s7, 44(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s8, 40(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s9, 36(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s10, 32(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s11, 28(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 80 ; RV32I-NEXT: ret ; ; RV32I-WITH-FP-LABEL: callee: ; RV32I-WITH-FP: # %bb.0: ; RV32I-WITH-FP-NEXT: addi sp, sp, -80 -; RV32I-WITH-FP-NEXT: sw ra, 76(sp) # 4-byte Folded Spill -; RV32I-WITH-FP-NEXT: sw s0, 72(sp) # 4-byte Folded Spill -; RV32I-WITH-FP-NEXT: sw s1, 68(sp) # 4-byte Folded Spill -; RV32I-WITH-FP-NEXT: sw s2, 64(sp) # 4-byte Folded Spill -; RV32I-WITH-FP-NEXT: sw s3, 60(sp) # 4-byte Folded Spill -; RV32I-WITH-FP-NEXT: sw s4, 56(sp) # 4-byte Folded Spill -; RV32I-WITH-FP-NEXT: sw s5, 52(sp) # 4-byte Folded Spill -; RV32I-WITH-FP-NEXT: sw s6, 48(sp) # 4-byte Folded Spill -; RV32I-WITH-FP-NEXT: sw s7, 44(sp) # 4-byte Folded Spill -; RV32I-WITH-FP-NEXT: sw s8, 40(sp) # 4-byte Folded Spill -; RV32I-WITH-FP-NEXT: sw s9, 36(sp) # 4-byte Folded Spill -; RV32I-WITH-FP-NEXT: sw s10, 32(sp) # 4-byte Folded Spill ; RV32I-WITH-FP-NEXT: sw s11, 28(sp) # 4-byte Folded Spill +; RV32I-WITH-FP-NEXT: sw s10, 32(sp) # 4-byte Folded Spill +; RV32I-WITH-FP-NEXT: sw s9, 36(sp) # 4-byte Folded Spill +; RV32I-WITH-FP-NEXT: sw s8, 40(sp) # 4-byte Folded Spill +; RV32I-WITH-FP-NEXT: sw s7, 44(sp) # 4-byte Folded Spill +; RV32I-WITH-FP-NEXT: sw s6, 48(sp) # 4-byte Folded Spill +; RV32I-WITH-FP-NEXT: sw s5, 52(sp) # 4-byte Folded Spill +; RV32I-WITH-FP-NEXT: sw s4, 56(sp) # 4-byte Folded Spill +; RV32I-WITH-FP-NEXT: sw s3, 60(sp) # 4-byte Folded Spill +; RV32I-WITH-FP-NEXT: sw s2, 64(sp) # 4-byte Folded Spill +; RV32I-WITH-FP-NEXT: sw s1, 68(sp) # 4-byte Folded Spill +; RV32I-WITH-FP-NEXT: sw s0, 72(sp) # 4-byte Folded Spill +; RV32I-WITH-FP-NEXT: sw ra, 76(sp) # 4-byte Folded Spill ; RV32I-WITH-FP-NEXT: addi s0, sp, 80 ; RV32I-WITH-FP-NEXT: lui a7, %hi(var) ; RV32I-WITH-FP-NEXT: lw a0, %lo(var)(a7) @@ -233,38 +233,38 @@ ; RV32I-WITH-FP-NEXT: sw a0, %lo(var+4)(a7) ; RV32I-WITH-FP-NEXT: lw a0, -56(s0) # 4-byte Folded Reload ; RV32I-WITH-FP-NEXT: sw a0, %lo(var)(a7) -; RV32I-WITH-FP-NEXT: lw s11, 28(sp) # 4-byte Folded Reload -; RV32I-WITH-FP-NEXT: lw s10, 32(sp) # 4-byte Folded Reload -; RV32I-WITH-FP-NEXT: lw s9, 36(sp) # 4-byte Folded Reload -; RV32I-WITH-FP-NEXT: lw s8, 40(sp) # 4-byte Folded Reload -; RV32I-WITH-FP-NEXT: lw s7, 44(sp) # 4-byte Folded Reload -; RV32I-WITH-FP-NEXT: lw s6, 48(sp) # 4-byte Folded Reload -; RV32I-WITH-FP-NEXT: lw s5, 52(sp) # 4-byte Folded Reload -; RV32I-WITH-FP-NEXT: lw s4, 56(sp) # 4-byte Folded Reload -; RV32I-WITH-FP-NEXT: lw s3, 60(sp) # 4-byte Folded Reload -; RV32I-WITH-FP-NEXT: lw s2, 64(sp) # 4-byte Folded Reload -; RV32I-WITH-FP-NEXT: lw s1, 68(sp) # 4-byte Folded Reload -; RV32I-WITH-FP-NEXT: lw s0, 72(sp) # 4-byte Folded Reload ; RV32I-WITH-FP-NEXT: lw ra, 76(sp) # 4-byte Folded Reload +; RV32I-WITH-FP-NEXT: lw s0, 72(sp) # 4-byte Folded Reload +; RV32I-WITH-FP-NEXT: lw s1, 68(sp) # 4-byte Folded Reload +; RV32I-WITH-FP-NEXT: lw s2, 64(sp) # 4-byte Folded Reload +; RV32I-WITH-FP-NEXT: lw s3, 60(sp) # 4-byte Folded Reload +; RV32I-WITH-FP-NEXT: lw s4, 56(sp) # 4-byte Folded Reload +; RV32I-WITH-FP-NEXT: lw s5, 52(sp) # 4-byte Folded Reload +; RV32I-WITH-FP-NEXT: lw s6, 48(sp) # 4-byte Folded Reload +; RV32I-WITH-FP-NEXT: lw s7, 44(sp) # 4-byte Folded Reload +; RV32I-WITH-FP-NEXT: lw s8, 40(sp) # 4-byte Folded Reload +; RV32I-WITH-FP-NEXT: lw s9, 36(sp) # 4-byte Folded Reload +; RV32I-WITH-FP-NEXT: lw s10, 32(sp) # 4-byte Folded Reload +; RV32I-WITH-FP-NEXT: lw s11, 28(sp) # 4-byte Folded Reload ; RV32I-WITH-FP-NEXT: addi sp, sp, 80 ; RV32I-WITH-FP-NEXT: ret ; ; RV64I-LABEL: callee: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -160 -; RV64I-NEXT: sd ra, 152(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 144(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 136(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 128(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s3, 120(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s4, 112(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s5, 104(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s6, 96(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s7, 88(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s8, 80(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s9, 72(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s10, 64(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s11, 56(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s10, 64(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s9, 72(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s8, 80(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s7, 88(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s6, 96(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s5, 104(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s4, 112(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s3, 120(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 128(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 136(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 144(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 152(sp) # 8-byte Folded Spill ; RV64I-NEXT: lui a7, %hi(var) ; RV64I-NEXT: lw a0, %lo(var)(a7) ; RV64I-NEXT: sd a0, 48(sp) # 8-byte Folded Spill @@ -343,38 +343,38 @@ ; RV64I-NEXT: sw a0, %lo(var+4)(a7) ; RV64I-NEXT: ld a0, 48(sp) # 8-byte Folded Reload ; RV64I-NEXT: sw a0, %lo(var)(a7) -; RV64I-NEXT: ld s11, 56(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s10, 64(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s9, 72(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s8, 80(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s7, 88(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s6, 96(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s5, 104(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s4, 112(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s3, 120(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 128(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 136(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 144(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 152(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 144(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 136(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 128(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 120(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s4, 112(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s5, 104(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s6, 96(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s7, 88(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s8, 80(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s9, 72(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s10, 64(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s11, 56(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 160 ; RV64I-NEXT: ret ; ; RV64I-WITH-FP-LABEL: callee: ; RV64I-WITH-FP: # %bb.0: ; RV64I-WITH-FP-NEXT: addi sp, sp, -160 -; RV64I-WITH-FP-NEXT: sd ra, 152(sp) # 8-byte Folded Spill -; RV64I-WITH-FP-NEXT: sd s0, 144(sp) # 8-byte Folded Spill -; RV64I-WITH-FP-NEXT: sd s1, 136(sp) # 8-byte Folded Spill -; RV64I-WITH-FP-NEXT: sd s2, 128(sp) # 8-byte Folded Spill -; RV64I-WITH-FP-NEXT: sd s3, 120(sp) # 8-byte Folded Spill -; RV64I-WITH-FP-NEXT: sd s4, 112(sp) # 8-byte Folded Spill -; RV64I-WITH-FP-NEXT: sd s5, 104(sp) # 8-byte Folded Spill -; RV64I-WITH-FP-NEXT: sd s6, 96(sp) # 8-byte Folded Spill -; RV64I-WITH-FP-NEXT: sd s7, 88(sp) # 8-byte Folded Spill -; RV64I-WITH-FP-NEXT: sd s8, 80(sp) # 8-byte Folded Spill -; RV64I-WITH-FP-NEXT: sd s9, 72(sp) # 8-byte Folded Spill -; RV64I-WITH-FP-NEXT: sd s10, 64(sp) # 8-byte Folded Spill ; RV64I-WITH-FP-NEXT: sd s11, 56(sp) # 8-byte Folded Spill +; RV64I-WITH-FP-NEXT: sd s10, 64(sp) # 8-byte Folded Spill +; RV64I-WITH-FP-NEXT: sd s9, 72(sp) # 8-byte Folded Spill +; RV64I-WITH-FP-NEXT: sd s8, 80(sp) # 8-byte Folded Spill +; RV64I-WITH-FP-NEXT: sd s7, 88(sp) # 8-byte Folded Spill +; RV64I-WITH-FP-NEXT: sd s6, 96(sp) # 8-byte Folded Spill +; RV64I-WITH-FP-NEXT: sd s5, 104(sp) # 8-byte Folded Spill +; RV64I-WITH-FP-NEXT: sd s4, 112(sp) # 8-byte Folded Spill +; RV64I-WITH-FP-NEXT: sd s3, 120(sp) # 8-byte Folded Spill +; RV64I-WITH-FP-NEXT: sd s2, 128(sp) # 8-byte Folded Spill +; RV64I-WITH-FP-NEXT: sd s1, 136(sp) # 8-byte Folded Spill +; RV64I-WITH-FP-NEXT: sd s0, 144(sp) # 8-byte Folded Spill +; RV64I-WITH-FP-NEXT: sd ra, 152(sp) # 8-byte Folded Spill ; RV64I-WITH-FP-NEXT: addi s0, sp, 160 ; RV64I-WITH-FP-NEXT: lui a7, %hi(var) ; RV64I-WITH-FP-NEXT: lw a0, %lo(var)(a7) @@ -456,19 +456,19 @@ ; RV64I-WITH-FP-NEXT: sw a0, %lo(var+4)(a7) ; RV64I-WITH-FP-NEXT: ld a0, -112(s0) # 8-byte Folded Reload ; RV64I-WITH-FP-NEXT: sw a0, %lo(var)(a7) -; RV64I-WITH-FP-NEXT: ld s11, 56(sp) # 8-byte Folded Reload -; RV64I-WITH-FP-NEXT: ld s10, 64(sp) # 8-byte Folded Reload -; RV64I-WITH-FP-NEXT: ld s9, 72(sp) # 8-byte Folded Reload -; RV64I-WITH-FP-NEXT: ld s8, 80(sp) # 8-byte Folded Reload -; RV64I-WITH-FP-NEXT: ld s7, 88(sp) # 8-byte Folded Reload -; RV64I-WITH-FP-NEXT: ld s6, 96(sp) # 8-byte Folded Reload -; RV64I-WITH-FP-NEXT: ld s5, 104(sp) # 8-byte Folded Reload -; RV64I-WITH-FP-NEXT: ld s4, 112(sp) # 8-byte Folded Reload -; RV64I-WITH-FP-NEXT: ld s3, 120(sp) # 8-byte Folded Reload -; RV64I-WITH-FP-NEXT: ld s2, 128(sp) # 8-byte Folded Reload -; RV64I-WITH-FP-NEXT: ld s1, 136(sp) # 8-byte Folded Reload -; RV64I-WITH-FP-NEXT: ld s0, 144(sp) # 8-byte Folded Reload ; RV64I-WITH-FP-NEXT: ld ra, 152(sp) # 8-byte Folded Reload +; RV64I-WITH-FP-NEXT: ld s0, 144(sp) # 8-byte Folded Reload +; RV64I-WITH-FP-NEXT: ld s1, 136(sp) # 8-byte Folded Reload +; RV64I-WITH-FP-NEXT: ld s2, 128(sp) # 8-byte Folded Reload +; RV64I-WITH-FP-NEXT: ld s3, 120(sp) # 8-byte Folded Reload +; RV64I-WITH-FP-NEXT: ld s4, 112(sp) # 8-byte Folded Reload +; RV64I-WITH-FP-NEXT: ld s5, 104(sp) # 8-byte Folded Reload +; RV64I-WITH-FP-NEXT: ld s6, 96(sp) # 8-byte Folded Reload +; RV64I-WITH-FP-NEXT: ld s7, 88(sp) # 8-byte Folded Reload +; RV64I-WITH-FP-NEXT: ld s8, 80(sp) # 8-byte Folded Reload +; RV64I-WITH-FP-NEXT: ld s9, 72(sp) # 8-byte Folded Reload +; RV64I-WITH-FP-NEXT: ld s10, 64(sp) # 8-byte Folded Reload +; RV64I-WITH-FP-NEXT: ld s11, 56(sp) # 8-byte Folded Reload ; RV64I-WITH-FP-NEXT: addi sp, sp, 160 ; RV64I-WITH-FP-NEXT: ret %val = load [32 x i32], [32 x i32]* @var @@ -483,19 +483,19 @@ ; RV32I-LABEL: caller: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -144 -; RV32I-NEXT: sw ra, 140(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 136(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 132(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 128(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s3, 124(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s4, 120(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s5, 116(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s6, 112(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s7, 108(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s8, 104(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s9, 100(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s10, 96(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s11, 92(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s10, 96(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s9, 100(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s8, 104(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s7, 108(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s6, 112(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s5, 116(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s4, 120(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s3, 124(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 128(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 132(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 136(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 140(sp) # 4-byte Folded Spill ; RV32I-NEXT: lui s0, %hi(var) ; RV32I-NEXT: lw a0, %lo(var)(s0) ; RV32I-NEXT: sw a0, 88(sp) # 4-byte Folded Spill @@ -607,38 +607,38 @@ ; RV32I-NEXT: sw a0, %lo(var+4)(s0) ; RV32I-NEXT: lw a0, 88(sp) # 4-byte Folded Reload ; RV32I-NEXT: sw a0, %lo(var)(s0) -; RV32I-NEXT: lw s11, 92(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s10, 96(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s9, 100(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s8, 104(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s7, 108(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s6, 112(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s5, 116(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s4, 120(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s3, 124(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 128(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 132(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 136(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 140(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 136(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 132(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 128(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 124(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s4, 120(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s5, 116(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s6, 112(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s7, 108(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s8, 104(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s9, 100(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s10, 96(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s11, 92(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 144 ; RV32I-NEXT: ret ; ; RV32I-WITH-FP-LABEL: caller: ; RV32I-WITH-FP: # %bb.0: ; RV32I-WITH-FP-NEXT: addi sp, sp, -144 -; RV32I-WITH-FP-NEXT: sw ra, 140(sp) # 4-byte Folded Spill -; RV32I-WITH-FP-NEXT: sw s0, 136(sp) # 4-byte Folded Spill -; RV32I-WITH-FP-NEXT: sw s1, 132(sp) # 4-byte Folded Spill -; RV32I-WITH-FP-NEXT: sw s2, 128(sp) # 4-byte Folded Spill -; RV32I-WITH-FP-NEXT: sw s3, 124(sp) # 4-byte Folded Spill -; RV32I-WITH-FP-NEXT: sw s4, 120(sp) # 4-byte Folded Spill -; RV32I-WITH-FP-NEXT: sw s5, 116(sp) # 4-byte Folded Spill -; RV32I-WITH-FP-NEXT: sw s6, 112(sp) # 4-byte Folded Spill -; RV32I-WITH-FP-NEXT: sw s7, 108(sp) # 4-byte Folded Spill -; RV32I-WITH-FP-NEXT: sw s8, 104(sp) # 4-byte Folded Spill -; RV32I-WITH-FP-NEXT: sw s9, 100(sp) # 4-byte Folded Spill -; RV32I-WITH-FP-NEXT: sw s10, 96(sp) # 4-byte Folded Spill ; RV32I-WITH-FP-NEXT: sw s11, 92(sp) # 4-byte Folded Spill +; RV32I-WITH-FP-NEXT: sw s10, 96(sp) # 4-byte Folded Spill +; RV32I-WITH-FP-NEXT: sw s9, 100(sp) # 4-byte Folded Spill +; RV32I-WITH-FP-NEXT: sw s8, 104(sp) # 4-byte Folded Spill +; RV32I-WITH-FP-NEXT: sw s7, 108(sp) # 4-byte Folded Spill +; RV32I-WITH-FP-NEXT: sw s6, 112(sp) # 4-byte Folded Spill +; RV32I-WITH-FP-NEXT: sw s5, 116(sp) # 4-byte Folded Spill +; RV32I-WITH-FP-NEXT: sw s4, 120(sp) # 4-byte Folded Spill +; RV32I-WITH-FP-NEXT: sw s3, 124(sp) # 4-byte Folded Spill +; RV32I-WITH-FP-NEXT: sw s2, 128(sp) # 4-byte Folded Spill +; RV32I-WITH-FP-NEXT: sw s1, 132(sp) # 4-byte Folded Spill +; RV32I-WITH-FP-NEXT: sw s0, 136(sp) # 4-byte Folded Spill +; RV32I-WITH-FP-NEXT: sw ra, 140(sp) # 4-byte Folded Spill ; RV32I-WITH-FP-NEXT: addi s0, sp, 144 ; RV32I-WITH-FP-NEXT: lui s6, %hi(var) ; RV32I-WITH-FP-NEXT: lw a0, %lo(var)(s6) @@ -753,38 +753,38 @@ ; RV32I-WITH-FP-NEXT: sw a0, %lo(var+4)(s6) ; RV32I-WITH-FP-NEXT: lw a0, -56(s0) # 4-byte Folded Reload ; RV32I-WITH-FP-NEXT: sw a0, %lo(var)(s6) -; RV32I-WITH-FP-NEXT: lw s11, 92(sp) # 4-byte Folded Reload -; RV32I-WITH-FP-NEXT: lw s10, 96(sp) # 4-byte Folded Reload -; RV32I-WITH-FP-NEXT: lw s9, 100(sp) # 4-byte Folded Reload -; RV32I-WITH-FP-NEXT: lw s8, 104(sp) # 4-byte Folded Reload -; RV32I-WITH-FP-NEXT: lw s7, 108(sp) # 4-byte Folded Reload -; RV32I-WITH-FP-NEXT: lw s6, 112(sp) # 4-byte Folded Reload -; RV32I-WITH-FP-NEXT: lw s5, 116(sp) # 4-byte Folded Reload -; RV32I-WITH-FP-NEXT: lw s4, 120(sp) # 4-byte Folded Reload -; RV32I-WITH-FP-NEXT: lw s3, 124(sp) # 4-byte Folded Reload -; RV32I-WITH-FP-NEXT: lw s2, 128(sp) # 4-byte Folded Reload -; RV32I-WITH-FP-NEXT: lw s1, 132(sp) # 4-byte Folded Reload -; RV32I-WITH-FP-NEXT: lw s0, 136(sp) # 4-byte Folded Reload ; RV32I-WITH-FP-NEXT: lw ra, 140(sp) # 4-byte Folded Reload +; RV32I-WITH-FP-NEXT: lw s0, 136(sp) # 4-byte Folded Reload +; RV32I-WITH-FP-NEXT: lw s1, 132(sp) # 4-byte Folded Reload +; RV32I-WITH-FP-NEXT: lw s2, 128(sp) # 4-byte Folded Reload +; RV32I-WITH-FP-NEXT: lw s3, 124(sp) # 4-byte Folded Reload +; RV32I-WITH-FP-NEXT: lw s4, 120(sp) # 4-byte Folded Reload +; RV32I-WITH-FP-NEXT: lw s5, 116(sp) # 4-byte Folded Reload +; RV32I-WITH-FP-NEXT: lw s6, 112(sp) # 4-byte Folded Reload +; RV32I-WITH-FP-NEXT: lw s7, 108(sp) # 4-byte Folded Reload +; RV32I-WITH-FP-NEXT: lw s8, 104(sp) # 4-byte Folded Reload +; RV32I-WITH-FP-NEXT: lw s9, 100(sp) # 4-byte Folded Reload +; RV32I-WITH-FP-NEXT: lw s10, 96(sp) # 4-byte Folded Reload +; RV32I-WITH-FP-NEXT: lw s11, 92(sp) # 4-byte Folded Reload ; RV32I-WITH-FP-NEXT: addi sp, sp, 144 ; RV32I-WITH-FP-NEXT: ret ; ; RV64I-LABEL: caller: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -288 -; RV64I-NEXT: sd ra, 280(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 272(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 264(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 256(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s3, 248(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s4, 240(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s5, 232(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s6, 224(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s7, 216(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s8, 208(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s9, 200(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s10, 192(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s11, 184(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s10, 192(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s9, 200(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s8, 208(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s7, 216(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s6, 224(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s5, 232(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s4, 240(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s3, 248(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 256(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 264(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 272(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 280(sp) # 8-byte Folded Spill ; RV64I-NEXT: lui s0, %hi(var) ; RV64I-NEXT: lw a0, %lo(var)(s0) ; RV64I-NEXT: sd a0, 176(sp) # 8-byte Folded Spill @@ -896,38 +896,38 @@ ; RV64I-NEXT: sw a0, %lo(var+4)(s0) ; RV64I-NEXT: ld a0, 176(sp) # 8-byte Folded Reload ; RV64I-NEXT: sw a0, %lo(var)(s0) -; RV64I-NEXT: ld s11, 184(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s10, 192(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s9, 200(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s8, 208(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s7, 216(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s6, 224(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s5, 232(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s4, 240(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s3, 248(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 256(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 264(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 272(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 280(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 272(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 264(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 256(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 248(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s4, 240(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s5, 232(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s6, 224(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s7, 216(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s8, 208(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s9, 200(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s10, 192(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s11, 184(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 288 ; RV64I-NEXT: ret ; ; RV64I-WITH-FP-LABEL: caller: ; RV64I-WITH-FP: # %bb.0: ; RV64I-WITH-FP-NEXT: addi sp, sp, -288 -; RV64I-WITH-FP-NEXT: sd ra, 280(sp) # 8-byte Folded Spill -; RV64I-WITH-FP-NEXT: sd s0, 272(sp) # 8-byte Folded Spill -; RV64I-WITH-FP-NEXT: sd s1, 264(sp) # 8-byte Folded Spill -; RV64I-WITH-FP-NEXT: sd s2, 256(sp) # 8-byte Folded Spill -; RV64I-WITH-FP-NEXT: sd s3, 248(sp) # 8-byte Folded Spill -; RV64I-WITH-FP-NEXT: sd s4, 240(sp) # 8-byte Folded Spill -; RV64I-WITH-FP-NEXT: sd s5, 232(sp) # 8-byte Folded Spill -; RV64I-WITH-FP-NEXT: sd s6, 224(sp) # 8-byte Folded Spill -; RV64I-WITH-FP-NEXT: sd s7, 216(sp) # 8-byte Folded Spill -; RV64I-WITH-FP-NEXT: sd s8, 208(sp) # 8-byte Folded Spill -; RV64I-WITH-FP-NEXT: sd s9, 200(sp) # 8-byte Folded Spill -; RV64I-WITH-FP-NEXT: sd s10, 192(sp) # 8-byte Folded Spill ; RV64I-WITH-FP-NEXT: sd s11, 184(sp) # 8-byte Folded Spill +; RV64I-WITH-FP-NEXT: sd s10, 192(sp) # 8-byte Folded Spill +; RV64I-WITH-FP-NEXT: sd s9, 200(sp) # 8-byte Folded Spill +; RV64I-WITH-FP-NEXT: sd s8, 208(sp) # 8-byte Folded Spill +; RV64I-WITH-FP-NEXT: sd s7, 216(sp) # 8-byte Folded Spill +; RV64I-WITH-FP-NEXT: sd s6, 224(sp) # 8-byte Folded Spill +; RV64I-WITH-FP-NEXT: sd s5, 232(sp) # 8-byte Folded Spill +; RV64I-WITH-FP-NEXT: sd s4, 240(sp) # 8-byte Folded Spill +; RV64I-WITH-FP-NEXT: sd s3, 248(sp) # 8-byte Folded Spill +; RV64I-WITH-FP-NEXT: sd s2, 256(sp) # 8-byte Folded Spill +; RV64I-WITH-FP-NEXT: sd s1, 264(sp) # 8-byte Folded Spill +; RV64I-WITH-FP-NEXT: sd s0, 272(sp) # 8-byte Folded Spill +; RV64I-WITH-FP-NEXT: sd ra, 280(sp) # 8-byte Folded Spill ; RV64I-WITH-FP-NEXT: addi s0, sp, 288 ; RV64I-WITH-FP-NEXT: lui s6, %hi(var) ; RV64I-WITH-FP-NEXT: lw a0, %lo(var)(s6) @@ -1042,19 +1042,19 @@ ; RV64I-WITH-FP-NEXT: sw a0, %lo(var+4)(s6) ; RV64I-WITH-FP-NEXT: ld a0, -112(s0) # 8-byte Folded Reload ; RV64I-WITH-FP-NEXT: sw a0, %lo(var)(s6) -; RV64I-WITH-FP-NEXT: ld s11, 184(sp) # 8-byte Folded Reload -; RV64I-WITH-FP-NEXT: ld s10, 192(sp) # 8-byte Folded Reload -; RV64I-WITH-FP-NEXT: ld s9, 200(sp) # 8-byte Folded Reload -; RV64I-WITH-FP-NEXT: ld s8, 208(sp) # 8-byte Folded Reload -; RV64I-WITH-FP-NEXT: ld s7, 216(sp) # 8-byte Folded Reload -; RV64I-WITH-FP-NEXT: ld s6, 224(sp) # 8-byte Folded Reload -; RV64I-WITH-FP-NEXT: ld s5, 232(sp) # 8-byte Folded Reload -; RV64I-WITH-FP-NEXT: ld s4, 240(sp) # 8-byte Folded Reload -; RV64I-WITH-FP-NEXT: ld s3, 248(sp) # 8-byte Folded Reload -; RV64I-WITH-FP-NEXT: ld s2, 256(sp) # 8-byte Folded Reload -; RV64I-WITH-FP-NEXT: ld s1, 264(sp) # 8-byte Folded Reload -; RV64I-WITH-FP-NEXT: ld s0, 272(sp) # 8-byte Folded Reload ; RV64I-WITH-FP-NEXT: ld ra, 280(sp) # 8-byte Folded Reload +; RV64I-WITH-FP-NEXT: ld s0, 272(sp) # 8-byte Folded Reload +; RV64I-WITH-FP-NEXT: ld s1, 264(sp) # 8-byte Folded Reload +; RV64I-WITH-FP-NEXT: ld s2, 256(sp) # 8-byte Folded Reload +; RV64I-WITH-FP-NEXT: ld s3, 248(sp) # 8-byte Folded Reload +; RV64I-WITH-FP-NEXT: ld s4, 240(sp) # 8-byte Folded Reload +; RV64I-WITH-FP-NEXT: ld s5, 232(sp) # 8-byte Folded Reload +; RV64I-WITH-FP-NEXT: ld s6, 224(sp) # 8-byte Folded Reload +; RV64I-WITH-FP-NEXT: ld s7, 216(sp) # 8-byte Folded Reload +; RV64I-WITH-FP-NEXT: ld s8, 208(sp) # 8-byte Folded Reload +; RV64I-WITH-FP-NEXT: ld s9, 200(sp) # 8-byte Folded Reload +; RV64I-WITH-FP-NEXT: ld s10, 192(sp) # 8-byte Folded Reload +; RV64I-WITH-FP-NEXT: ld s11, 184(sp) # 8-byte Folded Reload ; RV64I-WITH-FP-NEXT: addi sp, sp, 288 ; RV64I-WITH-FP-NEXT: ret diff --git a/llvm/test/CodeGen/RISCV/calling-conv-half.ll b/llvm/test/CodeGen/RISCV/calling-conv-half.ll --- a/llvm/test/CodeGen/RISCV/calling-conv-half.ll +++ b/llvm/test/CodeGen/RISCV/calling-conv-half.ll @@ -14,8 +14,8 @@ ; RV32I-LABEL: callee_half_in_regs: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lui a0, 16 ; RV32I-NEXT: addi a0, a0, -1 @@ -23,16 +23,16 @@ ; RV32I-NEXT: call __gnu_h2f_ieee@plt ; RV32I-NEXT: call __fixsfsi@plt ; RV32I-NEXT: add a0, s0, a0 -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; ; RV64I-LABEL: callee_half_in_regs: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -16 -; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s0, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lui a0, 16 ; RV64I-NEXT: addiw a0, a0, -1 @@ -40,70 +40,70 @@ ; RV64I-NEXT: call __gnu_h2f_ieee@plt ; RV64I-NEXT: call __fixsfdi@plt ; RV64I-NEXT: addw a0, s0, a0 -; RV64I-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 16 ; RV64I-NEXT: ret ; ; RV32IF-LABEL: callee_half_in_regs: ; RV32IF: # %bb.0: ; RV32IF-NEXT: addi sp, sp, -16 -; RV32IF-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32IF-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32IF-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32IF-NEXT: mv s0, a0 ; RV32IF-NEXT: mv a0, a1 ; RV32IF-NEXT: call __gnu_h2f_ieee@plt ; RV32IF-NEXT: fmv.w.x ft0, a0 ; RV32IF-NEXT: fcvt.w.s a0, ft0, rtz ; RV32IF-NEXT: add a0, s0, a0 -; RV32IF-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32IF-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32IF-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32IF-NEXT: addi sp, sp, 16 ; RV32IF-NEXT: ret ; ; RV64IF-LABEL: callee_half_in_regs: ; RV64IF: # %bb.0: ; RV64IF-NEXT: addi sp, sp, -16 -; RV64IF-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64IF-NEXT: sd s0, 0(sp) # 8-byte Folded Spill +; RV64IF-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64IF-NEXT: mv s0, a0 ; RV64IF-NEXT: mv a0, a1 ; RV64IF-NEXT: call __gnu_h2f_ieee@plt ; RV64IF-NEXT: fmv.w.x ft0, a0 ; RV64IF-NEXT: fcvt.l.s a0, ft0, rtz ; RV64IF-NEXT: addw a0, s0, a0 -; RV64IF-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64IF-NEXT: ld ra, 8(sp) # 8-byte Folded Reload +; RV64IF-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64IF-NEXT: addi sp, sp, 16 ; RV64IF-NEXT: ret ; ; RV32-ILP32F-LABEL: callee_half_in_regs: ; RV32-ILP32F: # %bb.0: ; RV32-ILP32F-NEXT: addi sp, sp, -16 -; 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: sw ra, 12(sp) # 4-byte Folded Spill ; RV32-ILP32F-NEXT: mv s0, a0 ; RV32-ILP32F-NEXT: fmv.x.w a0, fa0 ; RV32-ILP32F-NEXT: call __gnu_h2f_ieee@plt ; RV32-ILP32F-NEXT: fcvt.w.s a0, fa0, rtz ; RV32-ILP32F-NEXT: add a0, s0, a0 -; RV32-ILP32F-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32-ILP32F-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32-ILP32F-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32-ILP32F-NEXT: addi sp, sp, 16 ; RV32-ILP32F-NEXT: ret ; ; RV64-LP64F-LABEL: callee_half_in_regs: ; RV64-LP64F: # %bb.0: ; RV64-LP64F-NEXT: addi sp, sp, -16 -; RV64-LP64F-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64-LP64F-NEXT: sd s0, 0(sp) # 8-byte Folded Spill +; RV64-LP64F-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64-LP64F-NEXT: mv s0, a0 ; RV64-LP64F-NEXT: fmv.x.w a0, fa0 ; RV64-LP64F-NEXT: call __gnu_h2f_ieee@plt ; RV64-LP64F-NEXT: fcvt.l.s a0, fa0, rtz ; RV64-LP64F-NEXT: addw a0, s0, a0 -; RV64-LP64F-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64-LP64F-NEXT: ld ra, 8(sp) # 8-byte Folded Reload +; RV64-LP64F-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64-LP64F-NEXT: addi sp, sp, 16 ; RV64-LP64F-NEXT: ret %b_fptosi = fptosi half %b to i32 @@ -189,92 +189,92 @@ ; RV32I-LABEL: callee_half_on_stack: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: lhu a0, 16(sp) ; RV32I-NEXT: mv s0, a7 ; RV32I-NEXT: call __gnu_h2f_ieee@plt ; RV32I-NEXT: call __fixsfsi@plt ; RV32I-NEXT: add a0, s0, a0 -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; ; RV64I-LABEL: callee_half_on_stack: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -16 -; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s0, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: lhu a0, 16(sp) ; RV64I-NEXT: mv s0, a7 ; RV64I-NEXT: call __gnu_h2f_ieee@plt ; RV64I-NEXT: call __fixsfdi@plt ; RV64I-NEXT: addw a0, s0, a0 -; RV64I-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 16 ; RV64I-NEXT: ret ; ; RV32IF-LABEL: callee_half_on_stack: ; RV32IF: # %bb.0: ; RV32IF-NEXT: addi sp, sp, -16 -; RV32IF-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32IF-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32IF-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32IF-NEXT: lhu a0, 16(sp) ; RV32IF-NEXT: mv s0, a7 ; RV32IF-NEXT: call __gnu_h2f_ieee@plt ; RV32IF-NEXT: fmv.w.x ft0, a0 ; RV32IF-NEXT: fcvt.w.s a0, ft0, rtz ; RV32IF-NEXT: add a0, s0, a0 -; RV32IF-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32IF-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32IF-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32IF-NEXT: addi sp, sp, 16 ; RV32IF-NEXT: ret ; ; RV64IF-LABEL: callee_half_on_stack: ; RV64IF: # %bb.0: ; RV64IF-NEXT: addi sp, sp, -16 -; RV64IF-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64IF-NEXT: sd s0, 0(sp) # 8-byte Folded Spill +; RV64IF-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64IF-NEXT: lhu a0, 16(sp) ; RV64IF-NEXT: mv s0, a7 ; RV64IF-NEXT: call __gnu_h2f_ieee@plt ; RV64IF-NEXT: fmv.w.x ft0, a0 ; RV64IF-NEXT: fcvt.l.s a0, ft0, rtz ; RV64IF-NEXT: addw a0, s0, a0 -; RV64IF-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64IF-NEXT: ld ra, 8(sp) # 8-byte Folded Reload +; RV64IF-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64IF-NEXT: addi sp, sp, 16 ; RV64IF-NEXT: ret ; ; RV32-ILP32F-LABEL: callee_half_on_stack: ; RV32-ILP32F: # %bb.0: ; RV32-ILP32F-NEXT: addi sp, sp, -16 -; 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: sw ra, 12(sp) # 4-byte Folded Spill ; RV32-ILP32F-NEXT: mv s0, a7 ; RV32-ILP32F-NEXT: fmv.x.w a0, fa0 ; RV32-ILP32F-NEXT: call __gnu_h2f_ieee@plt ; RV32-ILP32F-NEXT: fcvt.w.s a0, fa0, rtz ; RV32-ILP32F-NEXT: add a0, s0, a0 -; RV32-ILP32F-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32-ILP32F-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32-ILP32F-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32-ILP32F-NEXT: addi sp, sp, 16 ; RV32-ILP32F-NEXT: ret ; ; RV64-LP64F-LABEL: callee_half_on_stack: ; RV64-LP64F: # %bb.0: ; RV64-LP64F-NEXT: addi sp, sp, -16 -; RV64-LP64F-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64-LP64F-NEXT: sd s0, 0(sp) # 8-byte Folded Spill +; RV64-LP64F-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64-LP64F-NEXT: mv s0, a7 ; RV64-LP64F-NEXT: fmv.x.w a0, fa0 ; RV64-LP64F-NEXT: call __gnu_h2f_ieee@plt ; RV64-LP64F-NEXT: fcvt.l.s a0, fa0, rtz ; RV64-LP64F-NEXT: addw a0, s0, a0 -; RV64-LP64F-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64-LP64F-NEXT: ld ra, 8(sp) # 8-byte Folded Reload +; RV64-LP64F-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64-LP64F-NEXT: addi sp, sp, 16 ; RV64-LP64F-NEXT: ret %1 = fptosi half %i to i32 diff --git a/llvm/test/CodeGen/RISCV/calling-conv-ilp32-ilp32f-common.ll b/llvm/test/CodeGen/RISCV/calling-conv-ilp32-ilp32f-common.ll --- a/llvm/test/CodeGen/RISCV/calling-conv-ilp32-ilp32f-common.ll +++ b/llvm/test/CodeGen/RISCV/calling-conv-ilp32-ilp32f-common.ll @@ -21,33 +21,33 @@ ; RV32I-FPELIM-LABEL: callee_double_in_regs: ; RV32I-FPELIM: # %bb.0: ; RV32I-FPELIM-NEXT: addi sp, sp, -16 -; RV32I-FPELIM-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-FPELIM-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-FPELIM-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-FPELIM-NEXT: mv s0, a0 ; RV32I-FPELIM-NEXT: mv a0, a1 ; RV32I-FPELIM-NEXT: mv a1, a2 ; RV32I-FPELIM-NEXT: call __fixdfsi@plt ; RV32I-FPELIM-NEXT: add a0, s0, a0 -; RV32I-FPELIM-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-FPELIM-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-FPELIM-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-FPELIM-NEXT: addi sp, sp, 16 ; RV32I-FPELIM-NEXT: ret ; ; RV32I-WITHFP-LABEL: callee_double_in_regs: ; RV32I-WITHFP: # %bb.0: ; RV32I-WITHFP-NEXT: addi sp, sp, -16 -; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-WITHFP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-WITHFP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: addi s0, sp, 16 ; RV32I-WITHFP-NEXT: mv s1, a0 ; RV32I-WITHFP-NEXT: mv a0, a1 ; RV32I-WITHFP-NEXT: mv a1, a2 ; RV32I-WITHFP-NEXT: call __fixdfsi@plt ; RV32I-WITHFP-NEXT: add a0, s1, a0 -; RV32I-WITHFP-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-WITHFP-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: addi sp, sp, 16 ; RV32I-WITHFP-NEXT: ret %b_fptosi = fptosi double %b to i32 @@ -71,15 +71,15 @@ ; RV32I-WITHFP-LABEL: caller_double_in_regs: ; RV32I-WITHFP: # %bb.0: ; RV32I-WITHFP-NEXT: addi sp, sp, -16 -; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: addi s0, sp, 16 ; RV32I-WITHFP-NEXT: addi a0, zero, 1 ; RV32I-WITHFP-NEXT: lui a2, 262144 ; RV32I-WITHFP-NEXT: mv a1, zero ; RV32I-WITHFP-NEXT: call callee_double_in_regs@plt -; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: addi sp, sp, 16 ; RV32I-WITHFP-NEXT: ret %1 = call i32 @callee_double_in_regs(i32 1, double 2.0) @@ -108,8 +108,8 @@ ; RV32I-WITHFP-LABEL: callee_aligned_stack: ; RV32I-WITHFP: # %bb.0: ; RV32I-WITHFP-NEXT: addi sp, sp, -16 -; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: addi s0, sp, 16 ; RV32I-WITHFP-NEXT: lw a0, 0(a2) ; RV32I-WITHFP-NEXT: lw a1, 20(s0) @@ -121,8 +121,8 @@ ; RV32I-WITHFP-NEXT: add a0, a0, a3 ; RV32I-WITHFP-NEXT: add a0, a0, a4 ; RV32I-WITHFP-NEXT: add a0, a0, a1 -; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: addi sp, sp, 16 ; RV32I-WITHFP-NEXT: ret %1 = bitcast fp128 %c to i128 @@ -188,8 +188,8 @@ ; RV32I-WITHFP-LABEL: caller_aligned_stack: ; RV32I-WITHFP: # %bb.0: ; RV32I-WITHFP-NEXT: addi sp, sp, -64 -; RV32I-WITHFP-NEXT: sw ra, 60(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: sw s0, 56(sp) # 4-byte Folded Spill +; RV32I-WITHFP-NEXT: sw ra, 60(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: addi s0, sp, 64 ; RV32I-WITHFP-NEXT: addi a0, zero, 18 ; RV32I-WITHFP-NEXT: sw a0, 24(sp) @@ -227,8 +227,8 @@ ; RV32I-WITHFP-NEXT: addi a7, zero, 14 ; RV32I-WITHFP-NEXT: sw t0, -32(s0) ; RV32I-WITHFP-NEXT: call callee_aligned_stack@plt -; RV32I-WITHFP-NEXT: lw s0, 56(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: lw ra, 60(sp) # 4-byte Folded Reload +; RV32I-WITHFP-NEXT: lw s0, 56(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: addi sp, sp, 64 ; RV32I-WITHFP-NEXT: ret %1 = call i32 @callee_aligned_stack(i32 1, i32 11, @@ -248,13 +248,13 @@ ; RV32I-WITHFP-LABEL: callee_small_scalar_ret: ; RV32I-WITHFP: # %bb.0: ; RV32I-WITHFP-NEXT: addi sp, sp, -16 -; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: addi s0, sp, 16 ; RV32I-WITHFP-NEXT: lui a1, 261888 ; RV32I-WITHFP-NEXT: mv a0, zero -; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: addi sp, sp, 16 ; RV32I-WITHFP-NEXT: ret ret double 1.0 @@ -273,12 +273,12 @@ ; RV32I-WITHFP-LABEL: caller_small_scalar_ret: ; RV32I-WITHFP: # %bb.0: ; RV32I-WITHFP-NEXT: addi sp, sp, -16 -; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: addi s0, sp, 16 ; RV32I-WITHFP-NEXT: call callee_small_scalar_ret@plt -; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: addi sp, sp, 16 ; RV32I-WITHFP-NEXT: ret %1 = call double @callee_small_scalar_ret() diff --git a/llvm/test/CodeGen/RISCV/calling-conv-ilp32-ilp32f-ilp32d-common.ll b/llvm/test/CodeGen/RISCV/calling-conv-ilp32-ilp32f-ilp32d-common.ll --- a/llvm/test/CodeGen/RISCV/calling-conv-ilp32-ilp32f-ilp32d-common.ll +++ b/llvm/test/CodeGen/RISCV/calling-conv-ilp32-ilp32f-ilp32d-common.ll @@ -33,12 +33,12 @@ ; RV32I-WITHFP-LABEL: callee_i64_in_regs: ; RV32I-WITHFP: # %bb.0: ; RV32I-WITHFP-NEXT: addi sp, sp, -16 -; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: addi s0, sp, 16 ; RV32I-WITHFP-NEXT: add a0, a0, a1 -; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: addi sp, sp, 16 ; RV32I-WITHFP-NEXT: ret %b_trunc = trunc i64 %b to i32 @@ -62,15 +62,15 @@ ; RV32I-WITHFP-LABEL: caller_i64_in_regs: ; RV32I-WITHFP: # %bb.0: ; RV32I-WITHFP-NEXT: addi sp, sp, -16 -; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: addi s0, sp, 16 ; RV32I-WITHFP-NEXT: addi a0, zero, 1 ; RV32I-WITHFP-NEXT: addi a1, zero, 2 ; RV32I-WITHFP-NEXT: mv a2, zero ; RV32I-WITHFP-NEXT: call callee_i64_in_regs@plt -; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: addi sp, sp, 16 ; RV32I-WITHFP-NEXT: ret %1 = call i32 @callee_i64_in_regs(i32 1, i64 2) @@ -103,8 +103,8 @@ ; RV32I-WITHFP-LABEL: callee_many_scalars: ; RV32I-WITHFP: # %bb.0: ; RV32I-WITHFP-NEXT: addi sp, sp, -16 -; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: addi s0, sp, 16 ; RV32I-WITHFP-NEXT: lw t0, 4(s0) ; RV32I-WITHFP-NEXT: lw t1, 0(s0) @@ -122,8 +122,8 @@ ; RV32I-WITHFP-NEXT: add a0, a0, a5 ; RV32I-WITHFP-NEXT: add a0, a0, a6 ; RV32I-WITHFP-NEXT: add a0, a0, t0 -; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: addi sp, sp, 16 ; RV32I-WITHFP-NEXT: ret %a_ext = zext i8 %a to i32 @@ -163,8 +163,8 @@ ; RV32I-WITHFP-LABEL: caller_many_scalars: ; RV32I-WITHFP: # %bb.0: ; RV32I-WITHFP-NEXT: addi sp, sp, -16 -; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: addi s0, sp, 16 ; RV32I-WITHFP-NEXT: addi a0, zero, 8 ; RV32I-WITHFP-NEXT: sw a0, 4(sp) @@ -178,8 +178,8 @@ ; RV32I-WITHFP-NEXT: sw zero, 0(sp) ; RV32I-WITHFP-NEXT: mv a4, zero ; RV32I-WITHFP-NEXT: call callee_many_scalars@plt -; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: addi sp, sp, 16 ; RV32I-WITHFP-NEXT: ret %1 = call i32 @callee_many_scalars(i8 1, i16 2, i32 3, i64 4, i32 5, i32 6, i64 7, i32 8) @@ -213,8 +213,8 @@ ; RV32I-WITHFP-LABEL: callee_large_scalars: ; RV32I-WITHFP: # %bb.0: ; RV32I-WITHFP-NEXT: addi sp, sp, -16 -; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: addi s0, sp, 16 ; RV32I-WITHFP-NEXT: lw a6, 0(a1) ; RV32I-WITHFP-NEXT: lw a7, 0(a0) @@ -232,8 +232,8 @@ ; RV32I-WITHFP-NEXT: or a0, a1, a0 ; RV32I-WITHFP-NEXT: or a0, a0, a2 ; RV32I-WITHFP-NEXT: seqz a0, a0 -; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: addi sp, sp, 16 ; RV32I-WITHFP-NEXT: ret %b_bitcast = bitcast fp128 %b to i128 @@ -267,8 +267,8 @@ ; RV32I-WITHFP-LABEL: caller_large_scalars: ; RV32I-WITHFP: # %bb.0: ; RV32I-WITHFP-NEXT: addi sp, sp, -48 -; RV32I-WITHFP-NEXT: sw ra, 44(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: sw s0, 40(sp) # 4-byte Folded Spill +; RV32I-WITHFP-NEXT: sw ra, 44(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: addi s0, sp, 48 ; RV32I-WITHFP-NEXT: lui a0, 524272 ; RV32I-WITHFP-NEXT: sw a0, -36(s0) @@ -283,8 +283,8 @@ ; RV32I-WITHFP-NEXT: addi a1, s0, -48 ; RV32I-WITHFP-NEXT: sw a2, -24(s0) ; RV32I-WITHFP-NEXT: call callee_large_scalars@plt -; RV32I-WITHFP-NEXT: lw s0, 40(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: lw ra, 44(sp) # 4-byte Folded Reload +; RV32I-WITHFP-NEXT: lw s0, 40(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: addi sp, sp, 48 ; RV32I-WITHFP-NEXT: ret %1 = call i32 @callee_large_scalars(i128 1, fp128 0xL00000000000000007FFF000000000000) @@ -320,8 +320,8 @@ ; RV32I-WITHFP-LABEL: callee_large_scalars_exhausted_regs: ; RV32I-WITHFP: # %bb.0: ; RV32I-WITHFP-NEXT: addi sp, sp, -16 -; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: addi s0, sp, 16 ; RV32I-WITHFP-NEXT: lw a0, 4(s0) ; RV32I-WITHFP-NEXT: lw a6, 0(a0) @@ -340,8 +340,8 @@ ; RV32I-WITHFP-NEXT: or a0, a2, a0 ; RV32I-WITHFP-NEXT: or a0, a0, a1 ; RV32I-WITHFP-NEXT: seqz a0, a0 -; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: addi sp, sp, 16 ; RV32I-WITHFP-NEXT: ret %j_bitcast = bitcast fp128 %j to i128 @@ -385,8 +385,8 @@ ; RV32I-WITHFP-LABEL: caller_large_scalars_exhausted_regs: ; RV32I-WITHFP: # %bb.0: ; RV32I-WITHFP-NEXT: addi sp, sp, -64 -; RV32I-WITHFP-NEXT: sw ra, 60(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: sw s0, 56(sp) # 4-byte Folded Spill +; RV32I-WITHFP-NEXT: sw ra, 60(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: addi s0, sp, 64 ; RV32I-WITHFP-NEXT: addi a0, s0, -48 ; RV32I-WITHFP-NEXT: sw a0, 4(sp) @@ -411,8 +411,8 @@ ; RV32I-WITHFP-NEXT: addi a7, s0, -24 ; RV32I-WITHFP-NEXT: sw t0, -24(s0) ; RV32I-WITHFP-NEXT: call callee_large_scalars_exhausted_regs@plt -; RV32I-WITHFP-NEXT: lw s0, 56(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: lw ra, 60(sp) # 4-byte Folded Reload +; RV32I-WITHFP-NEXT: lw s0, 56(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: addi sp, sp, 64 ; RV32I-WITHFP-NEXT: ret %1 = call i32 @callee_large_scalars_exhausted_regs( @@ -440,16 +440,16 @@ ; RV32I-WITHFP-LABEL: caller_mixed_scalar_libcalls: ; RV32I-WITHFP: # %bb.0: ; RV32I-WITHFP-NEXT: addi sp, sp, -32 -; RV32I-WITHFP-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-WITHFP-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: addi s0, sp, 32 ; RV32I-WITHFP-NEXT: mv a2, a1 ; RV32I-WITHFP-NEXT: mv a1, a0 ; RV32I-WITHFP-NEXT: addi a0, s0, -24 ; RV32I-WITHFP-NEXT: call __floatditf@plt ; RV32I-WITHFP-NEXT: lw a0, -24(s0) -; RV32I-WITHFP-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-WITHFP-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: addi sp, sp, 32 ; RV32I-WITHFP-NEXT: ret %1 = sitofp i64 %a to fp128 @@ -472,13 +472,13 @@ ; RV32I-WITHFP-LABEL: callee_small_coerced_struct: ; RV32I-WITHFP: # %bb.0: ; RV32I-WITHFP-NEXT: addi sp, sp, -16 -; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: addi s0, sp, 16 ; RV32I-WITHFP-NEXT: xor a0, a0, a1 ; RV32I-WITHFP-NEXT: seqz a0, a0 -; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: addi sp, sp, 16 ; RV32I-WITHFP-NEXT: ret %1 = extractvalue [2 x i32] %a.coerce, 0 @@ -503,14 +503,14 @@ ; RV32I-WITHFP-LABEL: caller_small_coerced_struct: ; RV32I-WITHFP: # %bb.0: ; RV32I-WITHFP-NEXT: addi sp, sp, -16 -; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: addi s0, sp, 16 ; RV32I-WITHFP-NEXT: addi a0, zero, 1 ; RV32I-WITHFP-NEXT: addi a1, zero, 2 ; RV32I-WITHFP-NEXT: call callee_small_coerced_struct@plt -; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: addi sp, sp, 16 ; RV32I-WITHFP-NEXT: ret %1 = call i32 @callee_small_coerced_struct([2 x i32] [i32 1, i32 2]) @@ -532,14 +532,14 @@ ; RV32I-WITHFP-LABEL: callee_large_struct: ; RV32I-WITHFP: # %bb.0: ; RV32I-WITHFP-NEXT: addi sp, sp, -16 -; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: addi s0, sp, 16 ; RV32I-WITHFP-NEXT: lw a1, 0(a0) ; RV32I-WITHFP-NEXT: lw a0, 12(a0) ; RV32I-WITHFP-NEXT: add a0, a1, a0 -; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: addi sp, sp, 16 ; RV32I-WITHFP-NEXT: ret %1 = getelementptr inbounds %struct.large, %struct.large* %a, i32 0, i32 0 @@ -576,8 +576,8 @@ ; RV32I-WITHFP-LABEL: caller_large_struct: ; RV32I-WITHFP: # %bb.0: ; RV32I-WITHFP-NEXT: addi sp, sp, -48 -; RV32I-WITHFP-NEXT: sw ra, 44(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: sw s0, 40(sp) # 4-byte Folded Spill +; RV32I-WITHFP-NEXT: sw ra, 44(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: addi s0, sp, 48 ; RV32I-WITHFP-NEXT: addi a0, zero, 1 ; RV32I-WITHFP-NEXT: sw a0, -24(s0) @@ -593,8 +593,8 @@ ; RV32I-WITHFP-NEXT: sw a3, -28(s0) ; RV32I-WITHFP-NEXT: addi a0, s0, -40 ; RV32I-WITHFP-NEXT: call callee_large_struct@plt -; RV32I-WITHFP-NEXT: lw s0, 40(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: lw ra, 44(sp) # 4-byte Folded Reload +; RV32I-WITHFP-NEXT: lw s0, 40(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: addi sp, sp, 48 ; RV32I-WITHFP-NEXT: ret %ls = alloca %struct.large, align 4 @@ -633,8 +633,8 @@ ; RV32I-WITHFP-LABEL: callee_aligned_stack: ; RV32I-WITHFP: # %bb.0: ; RV32I-WITHFP-NEXT: addi sp, sp, -16 -; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: addi s0, sp, 16 ; RV32I-WITHFP-NEXT: lw a0, 0(a2) ; RV32I-WITHFP-NEXT: lw a1, 20(s0) @@ -646,8 +646,8 @@ ; RV32I-WITHFP-NEXT: add a0, a0, a3 ; RV32I-WITHFP-NEXT: add a0, a0, a4 ; RV32I-WITHFP-NEXT: add a0, a0, a1 -; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: addi sp, sp, 16 ; RV32I-WITHFP-NEXT: ret %1 = bitcast fp128 %c to i128 @@ -709,8 +709,8 @@ ; RV32I-WITHFP-LABEL: caller_aligned_stack: ; RV32I-WITHFP: # %bb.0: ; RV32I-WITHFP-NEXT: addi sp, sp, -64 -; RV32I-WITHFP-NEXT: sw ra, 60(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: sw s0, 56(sp) # 4-byte Folded Spill +; RV32I-WITHFP-NEXT: sw ra, 60(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: addi s0, sp, 64 ; RV32I-WITHFP-NEXT: addi a0, zero, 19 ; RV32I-WITHFP-NEXT: sw a0, 24(sp) @@ -745,8 +745,8 @@ ; RV32I-WITHFP-NEXT: addi a7, zero, 14 ; RV32I-WITHFP-NEXT: sw t0, -32(s0) ; RV32I-WITHFP-NEXT: call callee_aligned_stack@plt -; RV32I-WITHFP-NEXT: lw s0, 56(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: lw ra, 60(sp) # 4-byte Folded Reload +; RV32I-WITHFP-NEXT: lw s0, 56(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: addi sp, sp, 64 ; RV32I-WITHFP-NEXT: ret %1 = call i32 @callee_aligned_stack(i32 1, i32 11, @@ -769,14 +769,14 @@ ; RV32I-WITHFP-LABEL: callee_small_scalar_ret: ; RV32I-WITHFP: # %bb.0: ; RV32I-WITHFP-NEXT: addi sp, sp, -16 -; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: addi s0, sp, 16 ; RV32I-WITHFP-NEXT: lui a0, 466866 ; RV32I-WITHFP-NEXT: addi a0, a0, 1677 ; RV32I-WITHFP-NEXT: addi a1, zero, 287 -; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: addi sp, sp, 16 ; RV32I-WITHFP-NEXT: ret ret i64 1234567898765 @@ -803,8 +803,8 @@ ; RV32I-WITHFP-LABEL: caller_small_scalar_ret: ; RV32I-WITHFP: # %bb.0: ; RV32I-WITHFP-NEXT: addi sp, sp, -16 -; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: addi s0, sp, 16 ; RV32I-WITHFP-NEXT: call callee_small_scalar_ret@plt ; RV32I-WITHFP-NEXT: lui a2, 56 @@ -815,8 +815,8 @@ ; RV32I-WITHFP-NEXT: xor a0, a0, a2 ; RV32I-WITHFP-NEXT: or a0, a0, a1 ; RV32I-WITHFP-NEXT: seqz a0, a0 -; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: addi sp, sp, 16 ; RV32I-WITHFP-NEXT: ret %1 = call i64 @callee_small_scalar_ret() @@ -837,13 +837,13 @@ ; RV32I-WITHFP-LABEL: callee_small_struct_ret: ; RV32I-WITHFP: # %bb.0: ; RV32I-WITHFP-NEXT: addi sp, sp, -16 -; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: addi s0, sp, 16 ; RV32I-WITHFP-NEXT: addi a0, zero, 1 ; RV32I-WITHFP-NEXT: mv a1, zero -; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: addi sp, sp, 16 ; RV32I-WITHFP-NEXT: ret ret %struct.small { i32 1, i32* null } @@ -863,13 +863,13 @@ ; RV32I-WITHFP-LABEL: caller_small_struct_ret: ; RV32I-WITHFP: # %bb.0: ; RV32I-WITHFP-NEXT: addi sp, sp, -16 -; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: addi s0, sp, 16 ; RV32I-WITHFP-NEXT: call callee_small_struct_ret@plt ; RV32I-WITHFP-NEXT: add a0, a0, a1 -; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: addi sp, sp, 16 ; RV32I-WITHFP-NEXT: ret %1 = call %struct.small @callee_small_struct_ret() @@ -895,16 +895,16 @@ ; RV32I-WITHFP-LABEL: callee_large_scalar_ret: ; RV32I-WITHFP: # %bb.0: ; RV32I-WITHFP-NEXT: addi sp, sp, -16 -; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: addi s0, sp, 16 ; RV32I-WITHFP-NEXT: lui a1, 524272 ; RV32I-WITHFP-NEXT: sw a1, 12(a0) ; RV32I-WITHFP-NEXT: sw zero, 8(a0) ; RV32I-WITHFP-NEXT: sw zero, 4(a0) ; RV32I-WITHFP-NEXT: sw zero, 0(a0) -; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: addi sp, sp, 16 ; RV32I-WITHFP-NEXT: ret ret fp128 0xL00000000000000007FFF000000000000 @@ -924,13 +924,13 @@ ; RV32I-WITHFP-LABEL: caller_large_scalar_ret: ; RV32I-WITHFP: # %bb.0: ; RV32I-WITHFP-NEXT: addi sp, sp, -32 -; RV32I-WITHFP-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-WITHFP-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: addi s0, sp, 32 ; RV32I-WITHFP-NEXT: addi a0, s0, -32 ; RV32I-WITHFP-NEXT: call callee_large_scalar_ret@plt -; RV32I-WITHFP-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-WITHFP-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: addi sp, sp, 32 ; RV32I-WITHFP-NEXT: ret %1 = call fp128 @callee_large_scalar_ret() @@ -955,8 +955,8 @@ ; RV32I-WITHFP-LABEL: callee_large_struct_ret: ; RV32I-WITHFP: # %bb.0: ; RV32I-WITHFP-NEXT: addi sp, sp, -16 -; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: addi s0, sp, 16 ; RV32I-WITHFP-NEXT: addi a1, zero, 1 ; RV32I-WITHFP-NEXT: sw a1, 0(a0) @@ -966,8 +966,8 @@ ; RV32I-WITHFP-NEXT: sw a1, 8(a0) ; RV32I-WITHFP-NEXT: addi a1, zero, 4 ; RV32I-WITHFP-NEXT: sw a1, 12(a0) -; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: addi sp, sp, 16 ; RV32I-WITHFP-NEXT: ret %a = getelementptr inbounds %struct.large, %struct.large* %agg.result, i32 0, i32 0 @@ -998,16 +998,16 @@ ; RV32I-WITHFP-LABEL: caller_large_struct_ret: ; RV32I-WITHFP: # %bb.0: ; RV32I-WITHFP-NEXT: addi sp, sp, -32 -; RV32I-WITHFP-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-WITHFP-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: addi s0, sp, 32 ; RV32I-WITHFP-NEXT: addi a0, s0, -24 ; RV32I-WITHFP-NEXT: call callee_large_struct_ret@plt ; RV32I-WITHFP-NEXT: lw a0, -24(s0) ; RV32I-WITHFP-NEXT: lw a1, -12(s0) ; RV32I-WITHFP-NEXT: add a0, a0, a1 -; RV32I-WITHFP-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-WITHFP-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: addi sp, sp, 32 ; RV32I-WITHFP-NEXT: ret %1 = alloca %struct.large diff --git a/llvm/test/CodeGen/RISCV/calling-conv-ilp32.ll b/llvm/test/CodeGen/RISCV/calling-conv-ilp32.ll --- a/llvm/test/CodeGen/RISCV/calling-conv-ilp32.ll +++ b/llvm/test/CodeGen/RISCV/calling-conv-ilp32.ll @@ -16,31 +16,31 @@ ; RV32I-FPELIM-LABEL: callee_float_in_regs: ; RV32I-FPELIM: # %bb.0: ; RV32I-FPELIM-NEXT: addi sp, sp, -16 -; RV32I-FPELIM-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-FPELIM-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-FPELIM-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-FPELIM-NEXT: mv s0, a0 ; RV32I-FPELIM-NEXT: mv a0, a1 ; RV32I-FPELIM-NEXT: call __fixsfsi@plt ; RV32I-FPELIM-NEXT: add a0, s0, a0 -; RV32I-FPELIM-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-FPELIM-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-FPELIM-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-FPELIM-NEXT: addi sp, sp, 16 ; RV32I-FPELIM-NEXT: ret ; ; RV32I-WITHFP-LABEL: callee_float_in_regs: ; RV32I-WITHFP: # %bb.0: ; RV32I-WITHFP-NEXT: addi sp, sp, -16 -; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-WITHFP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-WITHFP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: addi s0, sp, 16 ; RV32I-WITHFP-NEXT: mv s1, a0 ; RV32I-WITHFP-NEXT: mv a0, a1 ; RV32I-WITHFP-NEXT: call __fixsfsi@plt ; RV32I-WITHFP-NEXT: add a0, s1, a0 -; RV32I-WITHFP-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-WITHFP-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: addi sp, sp, 16 ; RV32I-WITHFP-NEXT: ret %b_fptosi = fptosi float %b to i32 @@ -63,14 +63,14 @@ ; RV32I-WITHFP-LABEL: caller_float_in_regs: ; RV32I-WITHFP: # %bb.0: ; RV32I-WITHFP-NEXT: addi sp, sp, -16 -; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: addi s0, sp, 16 ; RV32I-WITHFP-NEXT: addi a0, zero, 1 ; RV32I-WITHFP-NEXT: lui a1, 262144 ; RV32I-WITHFP-NEXT: call callee_float_in_regs@plt -; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: addi sp, sp, 16 ; RV32I-WITHFP-NEXT: ret %1 = call i32 @callee_float_in_regs(i32 1, float 2.0) @@ -87,13 +87,13 @@ ; RV32I-WITHFP-LABEL: callee_float_on_stack: ; RV32I-WITHFP: # %bb.0: ; RV32I-WITHFP-NEXT: addi sp, sp, -16 -; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: addi s0, sp, 16 ; RV32I-WITHFP-NEXT: lw a0, 0(s0) ; RV32I-WITHFP-NEXT: add a0, a6, a0 -; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: addi sp, sp, 16 ; RV32I-WITHFP-NEXT: ret %1 = trunc i64 %d to i32 @@ -125,8 +125,8 @@ ; RV32I-WITHFP-LABEL: caller_float_on_stack: ; RV32I-WITHFP: # %bb.0: ; RV32I-WITHFP-NEXT: addi sp, sp, -16 -; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: addi s0, sp, 16 ; RV32I-WITHFP-NEXT: lui a1, 264704 ; RV32I-WITHFP-NEXT: addi a0, zero, 1 @@ -139,8 +139,8 @@ ; RV32I-WITHFP-NEXT: mv a5, zero ; RV32I-WITHFP-NEXT: mv a7, zero ; RV32I-WITHFP-NEXT: call callee_float_on_stack@plt -; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: addi sp, sp, 16 ; RV32I-WITHFP-NEXT: ret %1 = call i32 @callee_float_on_stack(i64 1, i64 2, i64 3, i64 4, float 5.0) @@ -156,12 +156,12 @@ ; RV32I-WITHFP-LABEL: callee_tiny_scalar_ret: ; RV32I-WITHFP: # %bb.0: ; RV32I-WITHFP-NEXT: addi sp, sp, -16 -; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: addi s0, sp, 16 ; RV32I-WITHFP-NEXT: lui a0, 260096 -; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: addi sp, sp, 16 ; RV32I-WITHFP-NEXT: ret ret float 1.0 @@ -180,12 +180,12 @@ ; RV32I-WITHFP-LABEL: caller_tiny_scalar_ret: ; RV32I-WITHFP: # %bb.0: ; RV32I-WITHFP-NEXT: addi sp, sp, -16 -; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: addi s0, sp, 16 ; RV32I-WITHFP-NEXT: call callee_tiny_scalar_ret@plt -; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: addi sp, sp, 16 ; RV32I-WITHFP-NEXT: ret %1 = call float @callee_tiny_scalar_ret() diff --git a/llvm/test/CodeGen/RISCV/calling-conv-lp64-lp64f-common.ll b/llvm/test/CodeGen/RISCV/calling-conv-lp64-lp64f-common.ll --- a/llvm/test/CodeGen/RISCV/calling-conv-lp64-lp64f-common.ll +++ b/llvm/test/CodeGen/RISCV/calling-conv-lp64-lp64f-common.ll @@ -13,14 +13,14 @@ ; RV64I-LABEL: callee_double_in_regs: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -16 -; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s0, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: mv a0, a1 ; RV64I-NEXT: call __fixdfdi@plt ; RV64I-NEXT: add a0, s0, a0 -; RV64I-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 16 ; RV64I-NEXT: ret %b_fptosi = fptosi double %b to i64 diff --git a/llvm/test/CodeGen/RISCV/calling-conv-lp64.ll b/llvm/test/CodeGen/RISCV/calling-conv-lp64.ll --- a/llvm/test/CodeGen/RISCV/calling-conv-lp64.ll +++ b/llvm/test/CodeGen/RISCV/calling-conv-lp64.ll @@ -18,31 +18,31 @@ ; RV64I-FPELIM-LABEL: callee_float_in_regs: ; RV64I-FPELIM: # %bb.0: ; RV64I-FPELIM-NEXT: addi sp, sp, -16 -; RV64I-FPELIM-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64I-FPELIM-NEXT: sd s0, 0(sp) # 8-byte Folded Spill +; RV64I-FPELIM-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64I-FPELIM-NEXT: mv s0, a0 ; RV64I-FPELIM-NEXT: mv a0, a1 ; RV64I-FPELIM-NEXT: call __fixsfdi@plt ; RV64I-FPELIM-NEXT: add a0, s0, a0 -; RV64I-FPELIM-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64I-FPELIM-NEXT: ld ra, 8(sp) # 8-byte Folded Reload +; RV64I-FPELIM-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64I-FPELIM-NEXT: addi sp, sp, 16 ; RV64I-FPELIM-NEXT: ret ; ; RV64I-WITHFP-LABEL: callee_float_in_regs: ; RV64I-WITHFP: # %bb.0: ; RV64I-WITHFP-NEXT: addi sp, sp, -32 -; RV64I-WITHFP-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-WITHFP-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64I-WITHFP-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-WITHFP-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-WITHFP-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-WITHFP-NEXT: addi s0, sp, 32 ; RV64I-WITHFP-NEXT: mv s1, a0 ; RV64I-WITHFP-NEXT: mv a0, a1 ; RV64I-WITHFP-NEXT: call __fixsfdi@plt ; RV64I-WITHFP-NEXT: add a0, s1, a0 -; RV64I-WITHFP-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-WITHFP-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-WITHFP-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-WITHFP-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-WITHFP-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64I-WITHFP-NEXT: addi sp, sp, 32 ; RV64I-WITHFP-NEXT: ret %b_fptosi = fptosi float %b to i64 @@ -65,14 +65,14 @@ ; RV64I-WITHFP-LABEL: caller_float_in_regs: ; RV64I-WITHFP: # %bb.0: ; RV64I-WITHFP-NEXT: addi sp, sp, -16 -; RV64I-WITHFP-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64I-WITHFP-NEXT: sd s0, 0(sp) # 8-byte Folded Spill +; RV64I-WITHFP-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64I-WITHFP-NEXT: addi s0, sp, 16 ; RV64I-WITHFP-NEXT: addi a0, zero, 1 ; RV64I-WITHFP-NEXT: lui a1, 262144 ; RV64I-WITHFP-NEXT: call callee_float_in_regs@plt -; RV64I-WITHFP-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64I-WITHFP-NEXT: ld ra, 8(sp) # 8-byte Folded Reload +; RV64I-WITHFP-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64I-WITHFP-NEXT: addi sp, sp, 16 ; RV64I-WITHFP-NEXT: ret %1 = call i64 @callee_float_in_regs(i64 1, float 2.0) @@ -88,12 +88,12 @@ ; RV64I-WITHFP-LABEL: callee_float_on_stack: ; RV64I-WITHFP: # %bb.0: ; RV64I-WITHFP-NEXT: addi sp, sp, -16 -; RV64I-WITHFP-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64I-WITHFP-NEXT: sd s0, 0(sp) # 8-byte Folded Spill +; RV64I-WITHFP-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64I-WITHFP-NEXT: addi s0, sp, 16 ; RV64I-WITHFP-NEXT: lw a0, 0(s0) -; RV64I-WITHFP-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64I-WITHFP-NEXT: ld ra, 8(sp) # 8-byte Folded Reload +; RV64I-WITHFP-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64I-WITHFP-NEXT: addi sp, sp, 16 ; RV64I-WITHFP-NEXT: ret %1 = trunc i128 %d to i64 @@ -126,8 +126,8 @@ ; RV64I-WITHFP-LABEL: caller_float_on_stack: ; RV64I-WITHFP: # %bb.0: ; RV64I-WITHFP-NEXT: addi sp, sp, -32 -; RV64I-WITHFP-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-WITHFP-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-WITHFP-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-WITHFP-NEXT: addi s0, sp, 32 ; RV64I-WITHFP-NEXT: lui a1, 264704 ; RV64I-WITHFP-NEXT: addi a0, zero, 1 @@ -140,8 +140,8 @@ ; RV64I-WITHFP-NEXT: mv a5, zero ; RV64I-WITHFP-NEXT: mv a7, zero ; RV64I-WITHFP-NEXT: call callee_float_on_stack@plt -; RV64I-WITHFP-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-WITHFP-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-WITHFP-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-WITHFP-NEXT: addi sp, sp, 32 ; RV64I-WITHFP-NEXT: ret %1 = call i64 @callee_float_on_stack(i128 1, i128 2, i128 3, i128 4, float 5.0) @@ -157,12 +157,12 @@ ; RV64I-WITHFP-LABEL: callee_tiny_scalar_ret: ; RV64I-WITHFP: # %bb.0: ; RV64I-WITHFP-NEXT: addi sp, sp, -16 -; RV64I-WITHFP-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64I-WITHFP-NEXT: sd s0, 0(sp) # 8-byte Folded Spill +; RV64I-WITHFP-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64I-WITHFP-NEXT: addi s0, sp, 16 ; RV64I-WITHFP-NEXT: lui a0, 260096 -; RV64I-WITHFP-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64I-WITHFP-NEXT: ld ra, 8(sp) # 8-byte Folded Reload +; RV64I-WITHFP-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64I-WITHFP-NEXT: addi sp, sp, 16 ; RV64I-WITHFP-NEXT: ret ret float 1.0 @@ -185,13 +185,13 @@ ; RV64I-WITHFP-LABEL: caller_tiny_scalar_ret: ; RV64I-WITHFP: # %bb.0: ; RV64I-WITHFP-NEXT: addi sp, sp, -16 -; RV64I-WITHFP-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64I-WITHFP-NEXT: sd s0, 0(sp) # 8-byte Folded Spill +; RV64I-WITHFP-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64I-WITHFP-NEXT: addi s0, sp, 16 ; RV64I-WITHFP-NEXT: call callee_tiny_scalar_ret@plt ; RV64I-WITHFP-NEXT: sext.w a0, a0 -; RV64I-WITHFP-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64I-WITHFP-NEXT: ld ra, 8(sp) # 8-byte Folded Reload +; RV64I-WITHFP-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64I-WITHFP-NEXT: addi sp, sp, 16 ; RV64I-WITHFP-NEXT: ret %1 = call float @callee_tiny_scalar_ret() diff --git a/llvm/test/CodeGen/RISCV/calls.ll b/llvm/test/CodeGen/RISCV/calls.ll --- a/llvm/test/CodeGen/RISCV/calls.ll +++ b/llvm/test/CodeGen/RISCV/calls.ll @@ -175,26 +175,26 @@ ; RV32I-LABEL: test_call_fastcc: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: call fastcc_function@plt ; RV32I-NEXT: mv a0, s0 -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; ; RV32I-PIC-LABEL: test_call_fastcc: ; RV32I-PIC: # %bb.0: ; RV32I-PIC-NEXT: addi sp, sp, -16 -; RV32I-PIC-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-PIC-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-PIC-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-PIC-NEXT: mv s0, a0 ; RV32I-PIC-NEXT: call fastcc_function@plt ; RV32I-PIC-NEXT: mv a0, s0 -; RV32I-PIC-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-PIC-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-PIC-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-PIC-NEXT: addi sp, sp, 16 ; RV32I-PIC-NEXT: ret %1 = call fastcc i32 @fastcc_function(i32 %a, i32 %b) @@ -207,8 +207,8 @@ ; RV32I-LABEL: test_call_external_many_args: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: sw a0, 4(sp) ; RV32I-NEXT: sw a0, 0(sp) @@ -221,16 +221,16 @@ ; RV32I-NEXT: mv a7, a0 ; RV32I-NEXT: call external_many_args@plt ; RV32I-NEXT: mv a0, s0 -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; ; RV32I-PIC-LABEL: test_call_external_many_args: ; RV32I-PIC: # %bb.0: ; RV32I-PIC-NEXT: addi sp, sp, -16 -; RV32I-PIC-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-PIC-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-PIC-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-PIC-NEXT: mv s0, a0 ; RV32I-PIC-NEXT: sw a0, 4(sp) ; RV32I-PIC-NEXT: sw a0, 0(sp) @@ -243,8 +243,8 @@ ; RV32I-PIC-NEXT: mv a7, a0 ; RV32I-PIC-NEXT: call external_many_args@plt ; RV32I-PIC-NEXT: mv a0, s0 -; RV32I-PIC-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-PIC-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-PIC-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-PIC-NEXT: addi sp, sp, 16 ; RV32I-PIC-NEXT: ret %1 = call i32 @external_many_args(i32 %a, i32 %a, i32 %a, i32 %a, i32 %a, diff --git a/llvm/test/CodeGen/RISCV/copysign-casts.ll b/llvm/test/CodeGen/RISCV/copysign-casts.ll --- a/llvm/test/CodeGen/RISCV/copysign-casts.ll +++ b/llvm/test/CodeGen/RISCV/copysign-casts.ll @@ -133,30 +133,30 @@ ; RV32IFD-LABEL: fold_promote_d_h: ; RV32IFD: # %bb.0: ; RV32IFD-NEXT: addi sp, sp, -16 -; RV32IFD-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32IFD-NEXT: fsd fs0, 0(sp) # 8-byte Folded Spill +; RV32IFD-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32IFD-NEXT: fmv.d fs0, fa0 ; RV32IFD-NEXT: fmv.x.w a0, fa1 ; RV32IFD-NEXT: call __gnu_h2f_ieee@plt ; RV32IFD-NEXT: fcvt.d.s ft0, fa0 ; RV32IFD-NEXT: fsgnj.d fa0, fs0, ft0 -; RV32IFD-NEXT: fld fs0, 0(sp) # 8-byte Folded Reload ; RV32IFD-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32IFD-NEXT: fld fs0, 0(sp) # 8-byte Folded Reload ; RV32IFD-NEXT: addi sp, sp, 16 ; RV32IFD-NEXT: ret ; ; RV64IFD-LABEL: fold_promote_d_h: ; RV64IFD: # %bb.0: ; RV64IFD-NEXT: addi sp, sp, -16 -; RV64IFD-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64IFD-NEXT: fsd fs0, 0(sp) # 8-byte Folded Spill +; RV64IFD-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64IFD-NEXT: fmv.d fs0, fa0 ; RV64IFD-NEXT: fmv.x.w a0, fa1 ; RV64IFD-NEXT: call __gnu_h2f_ieee@plt ; RV64IFD-NEXT: fcvt.d.s ft0, fa0 ; RV64IFD-NEXT: fsgnj.d fa0, fs0, ft0 -; RV64IFD-NEXT: fld fs0, 0(sp) # 8-byte Folded Reload ; RV64IFD-NEXT: ld ra, 8(sp) # 8-byte Folded Reload +; RV64IFD-NEXT: fld fs0, 0(sp) # 8-byte Folded Reload ; RV64IFD-NEXT: addi sp, sp, 16 ; RV64IFD-NEXT: ret ; @@ -214,42 +214,42 @@ ; RV32IF-LABEL: fold_promote_f_h: ; RV32IF: # %bb.0: ; RV32IF-NEXT: addi sp, sp, -16 -; RV32IF-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32IF-NEXT: fsw fs0, 8(sp) # 4-byte Folded Spill +; RV32IF-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32IF-NEXT: fmv.s fs0, fa0 ; RV32IF-NEXT: fmv.x.w a0, fa1 ; RV32IF-NEXT: call __gnu_h2f_ieee@plt ; RV32IF-NEXT: fsgnj.s fa0, fs0, fa0 -; RV32IF-NEXT: flw fs0, 8(sp) # 4-byte Folded Reload ; RV32IF-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32IF-NEXT: flw fs0, 8(sp) # 4-byte Folded Reload ; RV32IF-NEXT: addi sp, sp, 16 ; RV32IF-NEXT: ret ; ; RV32IFD-LABEL: fold_promote_f_h: ; RV32IFD: # %bb.0: ; RV32IFD-NEXT: addi sp, sp, -16 -; RV32IFD-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32IFD-NEXT: fsd fs0, 0(sp) # 8-byte Folded Spill +; RV32IFD-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32IFD-NEXT: fmv.s fs0, fa0 ; RV32IFD-NEXT: fmv.x.w a0, fa1 ; RV32IFD-NEXT: call __gnu_h2f_ieee@plt ; RV32IFD-NEXT: fsgnj.s fa0, fs0, fa0 -; RV32IFD-NEXT: fld fs0, 0(sp) # 8-byte Folded Reload ; RV32IFD-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32IFD-NEXT: fld fs0, 0(sp) # 8-byte Folded Reload ; RV32IFD-NEXT: addi sp, sp, 16 ; RV32IFD-NEXT: ret ; ; RV64IFD-LABEL: fold_promote_f_h: ; RV64IFD: # %bb.0: ; RV64IFD-NEXT: addi sp, sp, -16 -; RV64IFD-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64IFD-NEXT: fsd fs0, 0(sp) # 8-byte Folded Spill +; RV64IFD-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64IFD-NEXT: fmv.s fs0, fa0 ; RV64IFD-NEXT: fmv.x.w a0, fa1 ; RV64IFD-NEXT: call __gnu_h2f_ieee@plt ; RV64IFD-NEXT: fsgnj.s fa0, fs0, fa0 -; RV64IFD-NEXT: fld fs0, 0(sp) # 8-byte Folded Reload ; RV64IFD-NEXT: ld ra, 8(sp) # 8-byte Folded Reload +; RV64IFD-NEXT: fld fs0, 0(sp) # 8-byte Folded Reload ; RV64IFD-NEXT: addi sp, sp, 16 ; RV64IFD-NEXT: ret ; diff --git a/llvm/test/CodeGen/RISCV/double-arith.ll b/llvm/test/CodeGen/RISCV/double-arith.ll --- a/llvm/test/CodeGen/RISCV/double-arith.ll +++ b/llvm/test/CodeGen/RISCV/double-arith.ll @@ -791,11 +791,11 @@ ; RV32I-LABEL: fmsub_d: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a3 ; RV32I-NEXT: mv s3, a2 ; RV32I-NEXT: mv s0, a1 @@ -813,20 +813,20 @@ ; RV32I-NEXT: mv a2, s3 ; RV32I-NEXT: mv a3, s2 ; RV32I-NEXT: call fma@plt -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fmsub_d: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a1 ; RV64I-NEXT: mv s1, a0 ; RV64I-NEXT: mv a0, a2 @@ -838,9 +838,9 @@ ; RV64I-NEXT: mv a0, s1 ; RV64I-NEXT: mv a1, s0 ; RV64I-NEXT: call fma@plt -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret %c_ = fadd double 0.0, %c ; avoid negation using xor @@ -887,13 +887,13 @@ ; RV32I-LABEL: fnmadd_d: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s5, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s4, a5 ; RV32I-NEXT: mv s5, a4 ; RV32I-NEXT: mv s2, a3 @@ -917,23 +917,23 @@ ; RV32I-NEXT: mv a2, s3 ; RV32I-NEXT: mv a3, s2 ; RV32I-NEXT: call fma@plt -; RV32I-NEXT: lw s5, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s5, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fnmadd_d: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a2 ; RV64I-NEXT: mv s2, a1 ; RV64I-NEXT: mv a1, zero @@ -949,10 +949,10 @@ ; RV64I-NEXT: mv a0, a1 ; RV64I-NEXT: mv a1, s2 ; RV64I-NEXT: call fma@plt -; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret %a_ = fadd double 0.0, %a @@ -1001,13 +1001,13 @@ ; RV32I-LABEL: fnmadd_d_2: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s5, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s4, a5 ; RV32I-NEXT: mv s1, a4 ; RV32I-NEXT: mv s2, a1 @@ -1032,23 +1032,23 @@ ; RV32I-NEXT: mv a1, s2 ; RV32I-NEXT: mv a2, s5 ; RV32I-NEXT: call fma@plt -; RV32I-NEXT: lw s5, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s5, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fnmadd_d_2: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a2 ; RV64I-NEXT: mv s2, a0 ; RV64I-NEXT: mv a0, a1 @@ -1064,10 +1064,10 @@ ; RV64I-NEXT: xor a2, a0, a2 ; RV64I-NEXT: mv a0, s2 ; RV64I-NEXT: call fma@plt -; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret %b_ = fadd double 0.0, %b @@ -1114,11 +1114,11 @@ ; RV32I-LABEL: fnmsub_d: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a5 ; RV32I-NEXT: mv s3, a4 ; RV32I-NEXT: mv s0, a3 @@ -1133,20 +1133,20 @@ ; RV32I-NEXT: mv a4, s3 ; RV32I-NEXT: mv a5, s2 ; RV32I-NEXT: call fma@plt -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fnmsub_d: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a2 ; RV64I-NEXT: mv s1, a1 ; RV64I-NEXT: mv a1, zero @@ -1157,9 +1157,9 @@ ; RV64I-NEXT: mv a1, s1 ; RV64I-NEXT: mv a2, s0 ; RV64I-NEXT: call fma@plt -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret %a_ = fadd double 0.0, %a @@ -1204,11 +1204,11 @@ ; RV32I-LABEL: fnmsub_d_2: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a5 ; RV32I-NEXT: mv s3, a4 ; RV32I-NEXT: mv s0, a1 @@ -1226,20 +1226,20 @@ ; RV32I-NEXT: mv a4, s3 ; RV32I-NEXT: mv a5, s2 ; RV32I-NEXT: call fma@plt -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fnmsub_d_2: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a2 ; RV64I-NEXT: mv s1, a0 ; RV64I-NEXT: mv a0, a1 @@ -1251,9 +1251,9 @@ ; RV64I-NEXT: mv a0, s1 ; RV64I-NEXT: mv a2, s0 ; RV64I-NEXT: call fma@plt -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret %b_ = fadd double 0.0, %b @@ -1294,32 +1294,32 @@ ; RV32I-LABEL: fmadd_d_contract: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a5 ; RV32I-NEXT: mv s1, a4 ; RV32I-NEXT: call __muldf3@plt ; RV32I-NEXT: mv a2, s1 ; RV32I-NEXT: mv a3, s0 ; RV32I-NEXT: call __adddf3@plt -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fmadd_d_contract: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -16 -; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s0, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a2 ; RV64I-NEXT: call __muldf3@plt ; RV64I-NEXT: mv a1, s0 ; RV64I-NEXT: call __adddf3@plt -; RV64I-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 16 ; RV64I-NEXT: ret %1 = fmul contract double %a, %b @@ -1363,13 +1363,13 @@ ; RV32I-LABEL: fmsub_d_contract: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s5, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a3 ; RV32I-NEXT: mv s3, a2 ; RV32I-NEXT: mv s0, a1 @@ -1389,23 +1389,23 @@ ; RV32I-NEXT: mv a2, s4 ; RV32I-NEXT: mv a3, s5 ; RV32I-NEXT: call __subdf3@plt -; RV32I-NEXT: lw s5, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s5, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fmsub_d_contract: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s2, a1 ; RV64I-NEXT: mv s1, a0 ; RV64I-NEXT: mv a0, a2 @@ -1417,10 +1417,10 @@ ; RV64I-NEXT: call __muldf3@plt ; RV64I-NEXT: mv a1, s0 ; RV64I-NEXT: call __subdf3@plt -; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret %c_ = fadd double 0.0, %c ; avoid negation using xor @@ -1469,13 +1469,13 @@ ; RV32I-LABEL: fnmadd_d_contract: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s5, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a5 ; RV32I-NEXT: mv s3, a4 ; RV32I-NEXT: mv s0, a3 @@ -1509,24 +1509,24 @@ ; RV32I-NEXT: mv a2, s2 ; RV32I-NEXT: mv a3, s3 ; RV32I-NEXT: call __subdf3@plt -; RV32I-NEXT: lw s5, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s5, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fnmadd_d_contract: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s2, a2 ; RV64I-NEXT: mv s1, a1 ; RV64I-NEXT: mv a1, zero @@ -1548,11 +1548,11 @@ ; RV64I-NEXT: xor a0, a0, a1 ; RV64I-NEXT: mv a1, s0 ; RV64I-NEXT: call __subdf3@plt -; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret %a_ = fadd double 0.0, %a ; avoid negation using xor @@ -1602,13 +1602,13 @@ ; RV32I-LABEL: fnmsub_d_contract: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s5, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a5 ; RV32I-NEXT: mv s3, a4 ; RV32I-NEXT: mv s4, a3 @@ -1633,23 +1633,23 @@ ; RV32I-NEXT: mv a0, s3 ; RV32I-NEXT: mv a1, s2 ; RV32I-NEXT: call __subdf3@plt -; RV32I-NEXT: lw s5, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s5, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fnmsub_d_contract: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s2, a2 ; RV64I-NEXT: mv s1, a1 ; RV64I-NEXT: mv a1, zero @@ -1664,10 +1664,10 @@ ; RV64I-NEXT: mv a1, a0 ; RV64I-NEXT: mv a0, s2 ; RV64I-NEXT: call __subdf3@plt -; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret %a_ = fadd double 0.0, %a ; avoid negation using xor diff --git a/llvm/test/CodeGen/RISCV/double-convert.ll b/llvm/test/CodeGen/RISCV/double-convert.ll --- a/llvm/test/CodeGen/RISCV/double-convert.ll +++ b/llvm/test/CodeGen/RISCV/double-convert.ll @@ -161,13 +161,13 @@ ; RV32I-LABEL: fcvt_w_d_sat: ; RV32I: # %bb.0: # %start ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s5, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a1 ; RV32I-NEXT: mv s1, a0 ; RV32I-NEXT: lui a3, 794112 @@ -204,25 +204,25 @@ ; RV32I-NEXT: mv s0, s4 ; RV32I-NEXT: .LBB3_6: # %start ; RV32I-NEXT: mv a0, s0 -; RV32I-NEXT: lw s5, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s5, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fcvt_w_d_sat: ; RV64I: # %bb.0: # %start ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s4, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: addi a0, zero, -497 ; RV64I-NEXT: slli a1, a0, 53 @@ -256,12 +256,12 @@ ; RV64I-NEXT: mv s1, s3 ; RV64I-NEXT: .LBB3_6: # %start ; RV64I-NEXT: mv a0, s1 -; RV64I-NEXT: ld s4, 0(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s4, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret start: @@ -412,11 +412,11 @@ ; RV32I-LABEL: fcvt_wu_d_sat: ; RV32I: # %bb.0: # %start ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s1, a1 ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lui a0, 270080 @@ -444,21 +444,21 @@ ; RV32I-NEXT: # %bb.3: # %start ; RV32I-NEXT: mv a0, a1 ; RV32I-NEXT: .LBB6_4: # %start -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fcvt_wu_d_sat: ; RV64I: # %bb.0: # %start ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: mv a1, zero ; RV64I-NEXT: call __gedf2@plt @@ -482,10 +482,10 @@ ; RV64I-NEXT: srli s1, a0, 32 ; RV64I-NEXT: .LBB6_4: # %start ; RV64I-NEXT: mv a0, s1 -; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret start: @@ -766,15 +766,15 @@ ; RV32I-LABEL: fcvt_l_d_sat: ; RV32I: # %bb.0: # %start ; RV32I-NEXT: addi sp, sp, -48 -; RV32I-NEXT: sw ra, 44(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 40(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 36(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 32(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s3, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s4, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s5, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s6, 16(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s7, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s6, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s5, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s4, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s3, 28(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 32(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 36(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 40(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 44(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a1 ; RV32I-NEXT: mv s1, a0 ; RV32I-NEXT: lui a0, 278016 @@ -846,27 +846,27 @@ ; RV32I-NEXT: .LBB12_12: # %start ; RV32I-NEXT: mv a0, s4 ; RV32I-NEXT: mv a1, s0 -; RV32I-NEXT: lw s7, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s6, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s5, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s4, 24(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s3, 28(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 32(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 36(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 40(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 44(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 40(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 36(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 32(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s4, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s5, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s6, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s7, 12(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 48 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fcvt_l_d_sat: ; RV64I: # %bb.0: # %start ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s4, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: addi a0, zero, -481 ; RV64I-NEXT: slli a1, a0, 53 @@ -901,12 +901,12 @@ ; RV64I-NEXT: mv s1, s2 ; RV64I-NEXT: .LBB12_7: # %start ; RV64I-NEXT: mv a0, s1 -; RV64I-NEXT: ld s4, 0(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s4, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret start: @@ -1010,14 +1010,14 @@ ; RV32I-LABEL: fcvt_lu_d_sat: ; RV32I: # %bb.0: # %start ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s5, 4(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s6, 0(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s5, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s1, a1 ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lui a0, 278272 @@ -1070,24 +1070,24 @@ ; RV32I-NEXT: .LBB14_8: # %start ; RV32I-NEXT: mv a0, s4 ; RV32I-NEXT: mv a1, s2 -; RV32I-NEXT: lw s6, 0(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s5, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s5, 4(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s6, 0(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fcvt_lu_d_sat: ; RV64I: # %bb.0: # %start ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: mv a1, zero ; RV64I-NEXT: call __gedf2@plt @@ -1110,10 +1110,10 @@ ; RV64I-NEXT: # %bb.3: # %start ; RV64I-NEXT: mv a0, s2 ; RV64I-NEXT: .LBB14_4: # %start -; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret start: @@ -1464,12 +1464,12 @@ ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 ; RV32I-NEXT: .cfi_def_cfa_offset 16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill -; RV32I-NEXT: .cfi_offset ra, -4 -; RV32I-NEXT: .cfi_offset s0, -8 +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: .cfi_offset s1, -12 +; RV32I-NEXT: .cfi_offset s0, -8 +; RV32I-NEXT: .cfi_offset ra, -4 ; RV32I-NEXT: mv s0, a1 ; RV32I-NEXT: addi s1, a0, 1 ; RV32I-NEXT: mv a0, s1 @@ -1477,9 +1477,9 @@ ; RV32I-NEXT: sw a1, 4(s0) ; RV32I-NEXT: sw a0, 0(s0) ; RV32I-NEXT: mv a0, s1 -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; @@ -1487,21 +1487,21 @@ ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 ; RV64I-NEXT: .cfi_def_cfa_offset 32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill -; RV64I-NEXT: .cfi_offset ra, -8 -; RV64I-NEXT: .cfi_offset s0, -16 +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: .cfi_offset s1, -24 +; RV64I-NEXT: .cfi_offset s0, -16 +; RV64I-NEXT: .cfi_offset ra, -8 ; RV64I-NEXT: mv s0, a1 ; RV64I-NEXT: addiw s1, a0, 1 ; RV64I-NEXT: mv a0, s1 ; RV64I-NEXT: call __floatsidf@plt ; RV64I-NEXT: sd a0, 0(s0) ; RV64I-NEXT: mv a0, s1 -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret %3 = add i32 %0, 1 @@ -1530,12 +1530,12 @@ ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 ; RV32I-NEXT: .cfi_def_cfa_offset 16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill -; RV32I-NEXT: .cfi_offset ra, -4 -; RV32I-NEXT: .cfi_offset s0, -8 +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: .cfi_offset s1, -12 +; RV32I-NEXT: .cfi_offset s0, -8 +; RV32I-NEXT: .cfi_offset ra, -4 ; RV32I-NEXT: mv s0, a1 ; RV32I-NEXT: addi s1, a0, 1 ; RV32I-NEXT: mv a0, s1 @@ -1543,9 +1543,9 @@ ; RV32I-NEXT: sw a1, 4(s0) ; RV32I-NEXT: sw a0, 0(s0) ; RV32I-NEXT: mv a0, s1 -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; @@ -1553,21 +1553,21 @@ ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 ; RV64I-NEXT: .cfi_def_cfa_offset 32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill -; RV64I-NEXT: .cfi_offset ra, -8 -; RV64I-NEXT: .cfi_offset s0, -16 +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: .cfi_offset s1, -24 +; RV64I-NEXT: .cfi_offset s0, -16 +; RV64I-NEXT: .cfi_offset ra, -8 ; RV64I-NEXT: mv s0, a1 ; RV64I-NEXT: addiw s1, a0, 1 ; RV64I-NEXT: mv a0, s1 ; RV64I-NEXT: call __floatunsidf@plt ; RV64I-NEXT: sd a0, 0(s0) ; RV64I-NEXT: mv a0, s1 -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret %3 = add i32 %0, 1 diff --git a/llvm/test/CodeGen/RISCV/double-fcmp.ll b/llvm/test/CodeGen/RISCV/double-fcmp.ll --- a/llvm/test/CodeGen/RISCV/double-fcmp.ll +++ b/llvm/test/CodeGen/RISCV/double-fcmp.ll @@ -288,12 +288,12 @@ ; RV32I-LABEL: fcmp_one: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a3 ; RV32I-NEXT: mv s3, a2 ; RV32I-NEXT: mv s0, a1 @@ -307,22 +307,22 @@ ; RV32I-NEXT: call __unorddf2@plt ; RV32I-NEXT: seqz a0, a0 ; RV32I-NEXT: and a0, a0, s4 -; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fcmp_one: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a1 ; RV64I-NEXT: mv s1, a0 ; RV64I-NEXT: call __eqdf2@plt @@ -332,10 +332,10 @@ ; RV64I-NEXT: call __unorddf2@plt ; RV64I-NEXT: seqz a0, a0 ; RV64I-NEXT: and a0, a0, s2 -; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret %1 = fcmp one double %a, %b @@ -422,12 +422,12 @@ ; RV32I-LABEL: fcmp_ueq: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a3 ; RV32I-NEXT: mv s3, a2 ; RV32I-NEXT: mv s0, a1 @@ -441,22 +441,22 @@ ; RV32I-NEXT: call __unorddf2@plt ; RV32I-NEXT: snez a0, a0 ; RV32I-NEXT: or a0, a0, s4 -; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fcmp_ueq: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a1 ; RV64I-NEXT: mv s1, a0 ; RV64I-NEXT: call __eqdf2@plt @@ -466,10 +466,10 @@ ; RV64I-NEXT: call __unorddf2@plt ; RV64I-NEXT: snez a0, a0 ; RV64I-NEXT: or a0, a0, s2 -; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret %1 = fcmp ueq double %a, %b diff --git a/llvm/test/CodeGen/RISCV/double-intrinsics.ll b/llvm/test/CodeGen/RISCV/double-intrinsics.ll --- a/llvm/test/CodeGen/RISCV/double-intrinsics.ll +++ b/llvm/test/CodeGen/RISCV/double-intrinsics.ll @@ -185,9 +185,9 @@ ; RV32IFD-LABEL: sincos_f64: ; RV32IFD: # %bb.0: ; RV32IFD-NEXT: addi sp, sp, -32 -; RV32IFD-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32IFD-NEXT: sw s0, 24(sp) # 4-byte Folded Spill ; RV32IFD-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32IFD-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32IFD-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32IFD-NEXT: mv s0, a1 ; RV32IFD-NEXT: mv s1, a0 ; RV32IFD-NEXT: call sin@plt @@ -206,17 +206,17 @@ ; RV32IFD-NEXT: fsd ft0, 8(sp) ; RV32IFD-NEXT: lw a0, 8(sp) ; RV32IFD-NEXT: lw a1, 12(sp) -; RV32IFD-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32IFD-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32IFD-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32IFD-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32IFD-NEXT: lw s1, 20(sp) # 4-byte Folded Reload ; RV32IFD-NEXT: addi sp, sp, 32 ; RV32IFD-NEXT: ret ; ; RV64IFD-LABEL: sincos_f64: ; RV64IFD: # %bb.0: ; RV64IFD-NEXT: addi sp, sp, -32 -; RV64IFD-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64IFD-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64IFD-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64IFD-NEXT: mv s0, a0 ; RV64IFD-NEXT: call sin@plt ; RV64IFD-NEXT: fmv.d.x ft0, a0 @@ -227,19 +227,19 @@ ; RV64IFD-NEXT: fld ft1, 8(sp) # 8-byte Folded Reload ; RV64IFD-NEXT: fadd.d ft0, ft1, ft0 ; RV64IFD-NEXT: fmv.x.d a0, ft0 -; RV64IFD-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64IFD-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64IFD-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64IFD-NEXT: addi sp, sp, 32 ; RV64IFD-NEXT: ret ; ; RV32I-LABEL: sincos_f64: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a1 ; RV32I-NEXT: mv s1, a0 ; RV32I-NEXT: call sin@plt @@ -253,20 +253,20 @@ ; RV32I-NEXT: mv a0, s2 ; RV32I-NEXT: mv a1, s3 ; RV32I-NEXT: call __adddf3@plt -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV64I-LABEL: sincos_f64: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: call sin@plt ; RV64I-NEXT: mv s1, a0 @@ -275,9 +275,9 @@ ; RV64I-NEXT: mv a1, a0 ; RV64I-NEXT: mv a0, s1 ; RV64I-NEXT: call __adddf3@plt -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret %1 = call double @llvm.sin.f64(double %a) @@ -624,32 +624,32 @@ ; RV32I-LABEL: fmuladd_f64: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a5 ; RV32I-NEXT: mv s1, a4 ; RV32I-NEXT: call __muldf3@plt ; RV32I-NEXT: mv a2, s1 ; RV32I-NEXT: mv a3, s0 ; RV32I-NEXT: call __adddf3@plt -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fmuladd_f64: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -16 -; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s0, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a2 ; RV64I-NEXT: call __muldf3@plt ; RV64I-NEXT: mv a1, s0 ; RV64I-NEXT: call __adddf3@plt -; RV64I-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 16 ; RV64I-NEXT: ret %1 = call double @llvm.fmuladd.f64(double %a, double %b, double %c) diff --git a/llvm/test/CodeGen/RISCV/exception-pointer-register.ll b/llvm/test/CodeGen/RISCV/exception-pointer-register.ll --- a/llvm/test/CodeGen/RISCV/exception-pointer-register.ll +++ b/llvm/test/CodeGen/RISCV/exception-pointer-register.ll @@ -17,12 +17,12 @@ ; RV32I: # %bb.0: # %entry ; RV32I-NEXT: addi sp, sp, -16 ; RV32I-NEXT: .cfi_def_cfa_offset 16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill -; RV32I-NEXT: .cfi_offset ra, -4 -; RV32I-NEXT: .cfi_offset s0, -8 +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: .cfi_offset s1, -12 +; RV32I-NEXT: .cfi_offset s0, -8 +; RV32I-NEXT: .cfi_offset ra, -4 ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: beqz a0, .LBB0_2 ; RV32I-NEXT: # %bb.1: # %bb2 @@ -37,9 +37,9 @@ ; RV32I-NEXT: call foo@plt ; RV32I-NEXT: .Ltmp3: ; RV32I-NEXT: .LBB0_3: # %end2 -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; RV32I-NEXT: .LBB0_4: # %lpad @@ -54,12 +54,12 @@ ; RV64I: # %bb.0: # %entry ; RV64I-NEXT: addi sp, sp, -32 ; RV64I-NEXT: .cfi_def_cfa_offset 32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill -; RV64I-NEXT: .cfi_offset ra, -8 -; RV64I-NEXT: .cfi_offset s0, -16 +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: .cfi_offset s1, -24 +; RV64I-NEXT: .cfi_offset s0, -16 +; RV64I-NEXT: .cfi_offset ra, -8 ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: beqz a0, .LBB0_2 ; RV64I-NEXT: # %bb.1: # %bb2 @@ -74,9 +74,9 @@ ; RV64I-NEXT: call foo@plt ; RV64I-NEXT: .Ltmp3: ; RV64I-NEXT: .LBB0_3: # %end2 -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret ; RV64I-NEXT: .LBB0_4: # %lpad diff --git a/llvm/test/CodeGen/RISCV/fastcc-int.ll b/llvm/test/CodeGen/RISCV/fastcc-int.ll --- a/llvm/test/CodeGen/RISCV/fastcc-int.ll +++ b/llvm/test/CodeGen/RISCV/fastcc-int.ll @@ -22,8 +22,8 @@ ; RV32-LABEL: caller: ; RV32: # %bb.0: ; RV32-NEXT: addi sp, sp, -32 -; RV32-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32-NEXT: lw t0, 0(a0) ; RV32-NEXT: lw a1, 4(a0) ; RV32-NEXT: lw a2, 8(a0) @@ -45,16 +45,16 @@ ; RV32-NEXT: sw t1, 0(sp) ; RV32-NEXT: mv a0, t0 ; RV32-NEXT: call callee@plt -; RV32-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32-NEXT: addi sp, sp, 32 ; RV32-NEXT: ret ; ; RV64-LABEL: caller: ; RV64: # %bb.0: ; RV64-NEXT: addi sp, sp, -48 -; RV64-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64-NEXT: ld t0, 0(a0) ; RV64-NEXT: ld a1, 8(a0) ; RV64-NEXT: ld a2, 16(a0) @@ -76,8 +76,8 @@ ; RV64-NEXT: sd t1, 0(sp) ; RV64-NEXT: mv a0, t0 ; RV64-NEXT: call callee@plt -; RV64-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64-NEXT: addi sp, sp, 48 ; RV64-NEXT: ret %C = call fastcc i32 @callee(<16 x i32> %A) diff --git a/llvm/test/CodeGen/RISCV/float-arith.ll b/llvm/test/CodeGen/RISCV/float-arith.ll --- a/llvm/test/CodeGen/RISCV/float-arith.ll +++ b/llvm/test/CodeGen/RISCV/float-arith.ll @@ -319,8 +319,8 @@ ; RV32I-LABEL: fsgnjn_s: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: call __addsf3@plt ; RV32I-NEXT: not a0, a0 @@ -329,16 +329,16 @@ ; RV32I-NEXT: and a2, s0, a2 ; RV32I-NEXT: and a0, a0, a1 ; RV32I-NEXT: or a0, a2, a0 -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fsgnjn_s: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -16 -; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s0, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: call __addsf3@plt ; RV64I-NEXT: not a0, a0 @@ -347,8 +347,8 @@ ; RV64I-NEXT: and a2, s0, a2 ; RV64I-NEXT: and a0, a0, a1 ; RV64I-NEXT: or a0, a2, a0 -; RV64I-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 16 ; RV64I-NEXT: ret %1 = fadd float %a, %b @@ -680,9 +680,9 @@ ; RV32I-LABEL: fmsub_s: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a1 ; RV32I-NEXT: mv s1, a0 ; RV32I-NEXT: mv a0, a2 @@ -693,18 +693,18 @@ ; RV32I-NEXT: mv a0, s1 ; RV32I-NEXT: mv a1, s0 ; RV32I-NEXT: call fmaf@plt -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fmsub_s: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a1 ; RV64I-NEXT: mv s1, a0 ; RV64I-NEXT: mv a0, a2 @@ -715,9 +715,9 @@ ; RV64I-NEXT: mv a0, s1 ; RV64I-NEXT: mv a1, s0 ; RV64I-NEXT: call fmaf@plt -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret %c_ = fadd float 0.0, %c ; avoid negation using xor @@ -754,10 +754,10 @@ ; RV32I-LABEL: fnmadd_s: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 0(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a2 ; RV32I-NEXT: mv s2, a1 ; RV32I-NEXT: mv a1, zero @@ -772,20 +772,20 @@ ; RV32I-NEXT: mv a0, a1 ; RV32I-NEXT: mv a1, s2 ; RV32I-NEXT: call fmaf@plt -; RV32I-NEXT: lw s2, 0(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 0(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fnmadd_s: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a2 ; RV64I-NEXT: mv s2, a1 ; RV64I-NEXT: mv a1, zero @@ -800,10 +800,10 @@ ; RV64I-NEXT: mv a0, a1 ; RV64I-NEXT: mv a1, s2 ; RV64I-NEXT: call fmaf@plt -; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret %a_ = fadd float 0.0, %a @@ -842,10 +842,10 @@ ; RV32I-LABEL: fnmadd_s_2: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 0(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a2 ; RV32I-NEXT: mv s2, a0 ; RV32I-NEXT: mv a0, a1 @@ -860,20 +860,20 @@ ; RV32I-NEXT: xor a2, a0, a2 ; RV32I-NEXT: mv a0, s2 ; RV32I-NEXT: call fmaf@plt -; RV32I-NEXT: lw s2, 0(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 0(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fnmadd_s_2: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a2 ; RV64I-NEXT: mv s2, a0 ; RV64I-NEXT: mv a0, a1 @@ -888,10 +888,10 @@ ; RV64I-NEXT: xor a2, a0, a2 ; RV64I-NEXT: mv a0, s2 ; RV64I-NEXT: call fmaf@plt -; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret %b_ = fadd float 0.0, %b @@ -928,9 +928,9 @@ ; RV32I-LABEL: fnmsub_s: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a2 ; RV32I-NEXT: mv s1, a1 ; RV32I-NEXT: mv a1, zero @@ -940,18 +940,18 @@ ; RV32I-NEXT: mv a1, s1 ; RV32I-NEXT: mv a2, s0 ; RV32I-NEXT: call fmaf@plt -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fnmsub_s: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a2 ; RV64I-NEXT: mv s1, a1 ; RV64I-NEXT: mv a1, zero @@ -961,9 +961,9 @@ ; RV64I-NEXT: mv a1, s1 ; RV64I-NEXT: mv a2, s0 ; RV64I-NEXT: call fmaf@plt -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret %a_ = fadd float 0.0, %a @@ -998,9 +998,9 @@ ; RV32I-LABEL: fnmsub_s_2: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a2 ; RV32I-NEXT: mv s1, a0 ; RV32I-NEXT: mv a0, a1 @@ -1011,18 +1011,18 @@ ; RV32I-NEXT: mv a0, s1 ; RV32I-NEXT: mv a2, s0 ; RV32I-NEXT: call fmaf@plt -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fnmsub_s_2: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a2 ; RV64I-NEXT: mv s1, a0 ; RV64I-NEXT: mv a0, a1 @@ -1033,9 +1033,9 @@ ; RV64I-NEXT: mv a0, s1 ; RV64I-NEXT: mv a2, s0 ; RV64I-NEXT: call fmaf@plt -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret %b_ = fadd float 0.0, %b @@ -1066,28 +1066,28 @@ ; RV32I-LABEL: fmadd_s_contract: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a2 ; RV32I-NEXT: call __mulsf3@plt ; RV32I-NEXT: mv a1, s0 ; RV32I-NEXT: call __addsf3@plt -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fmadd_s_contract: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -16 -; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s0, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a2 ; RV64I-NEXT: call __mulsf3@plt ; RV64I-NEXT: mv a1, s0 ; RV64I-NEXT: call __addsf3@plt -; RV64I-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 16 ; RV64I-NEXT: ret %1 = fmul contract float %a, %b @@ -1121,10 +1121,10 @@ ; RV32I-LABEL: fmsub_s_contract: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 0(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a1 ; RV32I-NEXT: mv s1, a0 ; RV32I-NEXT: mv a0, a2 @@ -1136,20 +1136,20 @@ ; RV32I-NEXT: call __mulsf3@plt ; RV32I-NEXT: mv a1, s0 ; RV32I-NEXT: call __subsf3@plt -; RV32I-NEXT: lw s2, 0(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 0(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fmsub_s_contract: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s2, a1 ; RV64I-NEXT: mv s1, a0 ; RV64I-NEXT: mv a0, a2 @@ -1161,10 +1161,10 @@ ; RV64I-NEXT: call __mulsf3@plt ; RV64I-NEXT: mv a1, s0 ; RV64I-NEXT: call __subsf3@plt -; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret %c_ = fadd float 0.0, %c ; avoid negation using xor @@ -1203,11 +1203,11 @@ ; RV32I-LABEL: fnmadd_s_contract: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a2 ; RV32I-NEXT: mv s1, a1 ; RV32I-NEXT: mv a1, zero @@ -1228,22 +1228,22 @@ ; RV32I-NEXT: xor a0, a0, a1 ; RV32I-NEXT: mv a1, s0 ; RV32I-NEXT: call __subsf3@plt -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fnmadd_s_contract: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s2, a2 ; RV64I-NEXT: mv s1, a1 ; RV64I-NEXT: mv a1, zero @@ -1264,11 +1264,11 @@ ; RV64I-NEXT: xor a0, a0, a1 ; RV64I-NEXT: mv a1, s0 ; RV64I-NEXT: call __subsf3@plt -; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret %a_ = fadd float 0.0, %a ; avoid negation using xor @@ -1308,10 +1308,10 @@ ; RV32I-LABEL: fnmsub_s_contract: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 0(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a2 ; RV32I-NEXT: mv s1, a1 ; RV32I-NEXT: mv a1, zero @@ -1326,20 +1326,20 @@ ; RV32I-NEXT: mv a1, a0 ; RV32I-NEXT: mv a0, s2 ; RV32I-NEXT: call __subsf3@plt -; RV32I-NEXT: lw s2, 0(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 0(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fnmsub_s_contract: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s2, a2 ; RV64I-NEXT: mv s1, a1 ; RV64I-NEXT: mv a1, zero @@ -1354,10 +1354,10 @@ ; RV64I-NEXT: mv a1, a0 ; RV64I-NEXT: mv a0, s2 ; RV64I-NEXT: call __subsf3@plt -; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret %a_ = fadd float 0.0, %a ; avoid negation using xor diff --git a/llvm/test/CodeGen/RISCV/float-bit-preserving-dagcombines.ll b/llvm/test/CodeGen/RISCV/float-bit-preserving-dagcombines.ll --- a/llvm/test/CodeGen/RISCV/float-bit-preserving-dagcombines.ll +++ b/llvm/test/CodeGen/RISCV/float-bit-preserving-dagcombines.ll @@ -66,9 +66,9 @@ ; RV32F-LABEL: bitcast_double_and: ; RV32F: # %bb.0: ; RV32F-NEXT: addi sp, sp, -16 -; RV32F-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32F-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32F-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32F-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32F-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32F-NEXT: mv s0, a1 ; RV32F-NEXT: mv s1, a0 ; RV32F-NEXT: call __adddf3@plt @@ -79,9 +79,9 @@ ; RV32F-NEXT: mv a0, s1 ; RV32F-NEXT: mv a1, s0 ; RV32F-NEXT: call __adddf3@plt -; RV32F-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32F-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32F-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32F-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32F-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32F-NEXT: addi sp, sp, 16 ; RV32F-NEXT: ret ; @@ -106,8 +106,8 @@ ; RV64F-LABEL: bitcast_double_and: ; RV64F: # %bb.0: ; RV64F-NEXT: addi sp, sp, -16 -; RV64F-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64F-NEXT: sd s0, 0(sp) # 8-byte Folded Spill +; RV64F-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64F-NEXT: mv s0, a0 ; RV64F-NEXT: call __adddf3@plt ; RV64F-NEXT: addi a1, zero, -1 @@ -115,8 +115,8 @@ ; RV64F-NEXT: and a1, a0, a1 ; RV64F-NEXT: mv a0, s0 ; RV64F-NEXT: call __adddf3@plt -; RV64F-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64F-NEXT: ld ra, 8(sp) # 8-byte Folded Reload +; RV64F-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64F-NEXT: addi sp, sp, 16 ; RV64F-NEXT: ret ; @@ -190,9 +190,9 @@ ; RV32F-LABEL: bitcast_double_xor: ; RV32F: # %bb.0: ; RV32F-NEXT: addi sp, sp, -16 -; RV32F-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32F-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32F-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32F-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32F-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32F-NEXT: mv s0, a1 ; RV32F-NEXT: mv s1, a0 ; RV32F-NEXT: call __muldf3@plt @@ -202,9 +202,9 @@ ; RV32F-NEXT: mv a0, s1 ; RV32F-NEXT: mv a1, s0 ; RV32F-NEXT: call __muldf3@plt -; RV32F-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32F-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32F-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32F-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32F-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32F-NEXT: addi sp, sp, 16 ; RV32F-NEXT: ret ; @@ -229,8 +229,8 @@ ; RV64F-LABEL: bitcast_double_xor: ; RV64F: # %bb.0: ; RV64F-NEXT: addi sp, sp, -16 -; RV64F-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64F-NEXT: sd s0, 0(sp) # 8-byte Folded Spill +; RV64F-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64F-NEXT: mv s0, a0 ; RV64F-NEXT: call __muldf3@plt ; RV64F-NEXT: addi a1, zero, -1 @@ -238,8 +238,8 @@ ; RV64F-NEXT: xor a1, a0, a1 ; RV64F-NEXT: mv a0, s0 ; RV64F-NEXT: call __muldf3@plt -; RV64F-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64F-NEXT: ld ra, 8(sp) # 8-byte Folded Reload +; RV64F-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64F-NEXT: addi sp, sp, 16 ; RV64F-NEXT: ret ; @@ -316,9 +316,9 @@ ; RV32F-LABEL: bitcast_double_or: ; RV32F: # %bb.0: ; RV32F-NEXT: addi sp, sp, -16 -; RV32F-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32F-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32F-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32F-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32F-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32F-NEXT: mv s0, a1 ; RV32F-NEXT: mv s1, a0 ; RV32F-NEXT: call __muldf3@plt @@ -328,9 +328,9 @@ ; RV32F-NEXT: mv a0, s1 ; RV32F-NEXT: mv a1, s0 ; RV32F-NEXT: call __muldf3@plt -; RV32F-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32F-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32F-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32F-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32F-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32F-NEXT: addi sp, sp, 16 ; RV32F-NEXT: ret ; @@ -356,8 +356,8 @@ ; RV64F-LABEL: bitcast_double_or: ; RV64F: # %bb.0: ; RV64F-NEXT: addi sp, sp, -16 -; RV64F-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64F-NEXT: sd s0, 0(sp) # 8-byte Folded Spill +; RV64F-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64F-NEXT: mv s0, a0 ; RV64F-NEXT: call __muldf3@plt ; RV64F-NEXT: addi a1, zero, -1 @@ -365,8 +365,8 @@ ; RV64F-NEXT: or a1, a0, a1 ; RV64F-NEXT: mv a0, s0 ; RV64F-NEXT: call __muldf3@plt -; RV64F-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64F-NEXT: ld ra, 8(sp) # 8-byte Folded Reload +; RV64F-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64F-NEXT: addi sp, sp, 16 ; RV64F-NEXT: ret ; diff --git a/llvm/test/CodeGen/RISCV/float-br-fcmp.ll b/llvm/test/CodeGen/RISCV/float-br-fcmp.ll --- a/llvm/test/CodeGen/RISCV/float-br-fcmp.ll +++ b/llvm/test/CodeGen/RISCV/float-br-fcmp.ll @@ -648,8 +648,8 @@ ; RV64IF-LABEL: br_fcmp_store_load_stack_slot: ; RV64IF: # %bb.0: # %entry ; RV64IF-NEXT: addi sp, sp, -32 -; RV64IF-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64IF-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64IF-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64IF-NEXT: fmv.w.x ft0, zero ; RV64IF-NEXT: fsw ft0, 12(sp) # 4-byte Folded Spill ; RV64IF-NEXT: fmv.x.w s0, ft0 @@ -668,8 +668,8 @@ ; RV64IF-NEXT: beqz a0, .LBB17_3 ; RV64IF-NEXT: # %bb.2: # %if.end4 ; RV64IF-NEXT: mv a0, zero -; RV64IF-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64IF-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64IF-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64IF-NEXT: addi sp, sp, 32 ; RV64IF-NEXT: ret ; RV64IF-NEXT: .LBB17_3: # %if.then diff --git a/llvm/test/CodeGen/RISCV/float-convert.ll b/llvm/test/CodeGen/RISCV/float-convert.ll --- a/llvm/test/CodeGen/RISCV/float-convert.ll +++ b/llvm/test/CodeGen/RISCV/float-convert.ll @@ -72,12 +72,12 @@ ; RV32I-LABEL: fcvt_w_s_sat: ; RV32I: # %bb.0: # %start ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lui a1, 847872 ; RV32I-NEXT: call __gesf2@plt @@ -107,24 +107,24 @@ ; RV32I-NEXT: mv s1, s3 ; RV32I-NEXT: .LBB1_6: # %start ; RV32I-NEXT: mv a0, s1 -; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fcvt_w_s_sat: ; RV64I: # %bb.0: # %start ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s4, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lui a1, 847872 ; RV64I-NEXT: call __gesf2@plt @@ -154,12 +154,12 @@ ; RV64I-NEXT: mv s1, s3 ; RV64I-NEXT: .LBB1_6: # %start ; RV64I-NEXT: mv a0, s1 -; RV64I-NEXT: ld s4, 0(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s4, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret start: @@ -294,10 +294,10 @@ ; RV32I-LABEL: fcvt_wu_s_sat: ; RV32I: # %bb.0: # %start ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 0(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: mv a1, zero ; RV32I-NEXT: call __gesf2@plt @@ -319,20 +319,20 @@ ; RV32I-NEXT: # %bb.3: # %start ; RV32I-NEXT: mv a0, s2 ; RV32I-NEXT: .LBB4_4: # %start -; RV32I-NEXT: lw s2, 0(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 0(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fcvt_wu_s_sat: ; RV64I: # %bb.0: # %start ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: mv a1, zero ; RV64I-NEXT: call __gesf2@plt @@ -354,10 +354,10 @@ ; RV64I-NEXT: srli s1, a0, 32 ; RV64I-NEXT: .LBB4_4: # %start ; RV64I-NEXT: mv a0, s1 -; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret start: @@ -636,8 +636,8 @@ ; RV32IF-LABEL: fcvt_l_s_sat: ; RV32IF: # %bb.0: # %start ; RV32IF-NEXT: addi sp, sp, -16 -; RV32IF-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32IF-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32IF-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32IF-NEXT: lui a1, %hi(.LCPI12_0) ; RV32IF-NEXT: flw ft0, %lo(.LCPI12_0)(a1) ; RV32IF-NEXT: fmv.w.x ft1, a0 @@ -669,8 +669,8 @@ ; RV32IF-NEXT: .LBB12_7: # %start ; RV32IF-NEXT: mv a1, zero ; RV32IF-NEXT: .LBB12_8: # %start -; RV32IF-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32IF-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32IF-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32IF-NEXT: addi sp, sp, 16 ; RV32IF-NEXT: ret ; RV32IF-NEXT: .LBB12_9: # %start @@ -704,14 +704,14 @@ ; RV32I-LABEL: fcvt_l_s_sat: ; RV32I: # %bb.0: # %start ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s5, 4(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s6, 0(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s5, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lui a1, 913408 ; RV32I-NEXT: call __gesf2@plt @@ -768,26 +768,26 @@ ; RV32I-NEXT: .LBB12_12: # %start ; RV32I-NEXT: mv a0, s3 ; RV32I-NEXT: mv a1, s1 -; RV32I-NEXT: lw s6, 0(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s5, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s5, 4(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s6, 0(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fcvt_l_s_sat: ; RV64I: # %bb.0: # %start ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s4, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lui a1, 913408 ; RV64I-NEXT: call __gesf2@plt @@ -819,12 +819,12 @@ ; RV64I-NEXT: mv s1, s2 ; RV64I-NEXT: .LBB12_7: # %start ; RV64I-NEXT: mv a0, s1 -; RV64I-NEXT: ld s4, 0(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s4, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret start: @@ -874,8 +874,8 @@ ; RV32IF-LABEL: fcvt_lu_s_sat: ; RV32IF: # %bb.0: # %start ; RV32IF-NEXT: addi sp, sp, -16 -; RV32IF-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32IF-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32IF-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32IF-NEXT: fmv.w.x ft1, a0 ; RV32IF-NEXT: fmv.w.x ft0, zero ; RV32IF-NEXT: fsw ft1, 4(sp) # 4-byte Folded Spill @@ -901,8 +901,8 @@ ; RV32IF-NEXT: mv a2, a1 ; RV32IF-NEXT: .LBB14_6: # %start ; RV32IF-NEXT: mv a1, a2 -; RV32IF-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32IF-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32IF-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32IF-NEXT: addi sp, sp, 16 ; RV32IF-NEXT: ret ; RV32IF-NEXT: .LBB14_7: # %start @@ -928,13 +928,13 @@ ; RV32I-LABEL: fcvt_lu_s_sat: ; RV32I: # %bb.0: # %start ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s5, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: mv a1, zero ; RV32I-NEXT: call __gesf2@plt @@ -975,23 +975,23 @@ ; RV32I-NEXT: .LBB14_8: # %start ; RV32I-NEXT: mv a0, s4 ; RV32I-NEXT: mv a1, s3 -; RV32I-NEXT: lw s5, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s5, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fcvt_lu_s_sat: ; RV64I: # %bb.0: # %start ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: mv a1, zero ; RV64I-NEXT: call __gesf2@plt @@ -1013,10 +1013,10 @@ ; RV64I-NEXT: # %bb.3: # %start ; RV64I-NEXT: mv a0, s2 ; RV64I-NEXT: .LBB14_4: # %start -; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret start: @@ -1255,21 +1255,21 @@ ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 ; RV32I-NEXT: .cfi_def_cfa_offset 16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill -; RV32I-NEXT: .cfi_offset ra, -4 -; RV32I-NEXT: .cfi_offset s0, -8 +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: .cfi_offset s1, -12 +; RV32I-NEXT: .cfi_offset s0, -8 +; RV32I-NEXT: .cfi_offset ra, -4 ; RV32I-NEXT: mv s0, a1 ; RV32I-NEXT: addi s1, a0, 1 ; RV32I-NEXT: mv a0, s1 ; RV32I-NEXT: call __floatsisf@plt ; RV32I-NEXT: sw a0, 0(s0) ; RV32I-NEXT: mv a0, s1 -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; @@ -1277,21 +1277,21 @@ ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 ; RV64I-NEXT: .cfi_def_cfa_offset 32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill -; RV64I-NEXT: .cfi_offset ra, -8 -; RV64I-NEXT: .cfi_offset s0, -16 +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: .cfi_offset s1, -24 +; RV64I-NEXT: .cfi_offset s0, -16 +; RV64I-NEXT: .cfi_offset ra, -8 ; RV64I-NEXT: mv s0, a1 ; RV64I-NEXT: addiw s1, a0, 1 ; RV64I-NEXT: mv a0, s1 ; RV64I-NEXT: call __floatsisf@plt ; RV64I-NEXT: sw a0, 0(s0) ; RV64I-NEXT: mv a0, s1 -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret %3 = add i32 %0, 1 @@ -1320,21 +1320,21 @@ ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 ; RV32I-NEXT: .cfi_def_cfa_offset 16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill -; RV32I-NEXT: .cfi_offset ra, -4 -; RV32I-NEXT: .cfi_offset s0, -8 +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: .cfi_offset s1, -12 +; RV32I-NEXT: .cfi_offset s0, -8 +; RV32I-NEXT: .cfi_offset ra, -4 ; RV32I-NEXT: mv s0, a1 ; RV32I-NEXT: addi s1, a0, 1 ; RV32I-NEXT: mv a0, s1 ; RV32I-NEXT: call __floatunsisf@plt ; RV32I-NEXT: sw a0, 0(s0) ; RV32I-NEXT: mv a0, s1 -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; @@ -1342,21 +1342,21 @@ ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 ; RV64I-NEXT: .cfi_def_cfa_offset 32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill -; RV64I-NEXT: .cfi_offset ra, -8 -; RV64I-NEXT: .cfi_offset s0, -16 +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: .cfi_offset s1, -24 +; RV64I-NEXT: .cfi_offset s0, -16 +; RV64I-NEXT: .cfi_offset ra, -8 ; RV64I-NEXT: mv s0, a1 ; RV64I-NEXT: addiw s1, a0, 1 ; RV64I-NEXT: mv a0, s1 ; RV64I-NEXT: call __floatunsisf@plt ; RV64I-NEXT: sw a0, 0(s0) ; RV64I-NEXT: mv a0, s1 -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret %3 = add i32 %0, 1 diff --git a/llvm/test/CodeGen/RISCV/float-fcmp.ll b/llvm/test/CodeGen/RISCV/float-fcmp.ll --- a/llvm/test/CodeGen/RISCV/float-fcmp.ll +++ b/llvm/test/CodeGen/RISCV/float-fcmp.ll @@ -252,10 +252,10 @@ ; RV32I-LABEL: fcmp_one: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 0(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a1 ; RV32I-NEXT: mv s1, a0 ; RV32I-NEXT: call __eqsf2@plt @@ -265,20 +265,20 @@ ; RV32I-NEXT: call __unordsf2@plt ; RV32I-NEXT: seqz a0, a0 ; RV32I-NEXT: and a0, a0, s2 -; RV32I-NEXT: lw s2, 0(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 0(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fcmp_one: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a1 ; RV64I-NEXT: mv s1, a0 ; RV64I-NEXT: call __eqsf2@plt @@ -288,10 +288,10 @@ ; RV64I-NEXT: call __unordsf2@plt ; RV64I-NEXT: seqz a0, a0 ; RV64I-NEXT: and a0, a0, s2 -; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret %1 = fcmp one float %a, %b @@ -366,10 +366,10 @@ ; RV32I-LABEL: fcmp_ueq: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 0(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a1 ; RV32I-NEXT: mv s1, a0 ; RV32I-NEXT: call __eqsf2@plt @@ -379,20 +379,20 @@ ; RV32I-NEXT: call __unordsf2@plt ; RV32I-NEXT: snez a0, a0 ; RV32I-NEXT: or a0, a0, s2 -; RV32I-NEXT: lw s2, 0(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 0(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fcmp_ueq: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a1 ; RV64I-NEXT: mv s1, a0 ; RV64I-NEXT: call __eqsf2@plt @@ -402,10 +402,10 @@ ; RV64I-NEXT: call __unordsf2@plt ; RV64I-NEXT: snez a0, a0 ; RV64I-NEXT: or a0, a0, s2 -; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret %1 = fcmp ueq float %a, %b diff --git a/llvm/test/CodeGen/RISCV/float-intrinsics.ll b/llvm/test/CodeGen/RISCV/float-intrinsics.ll --- a/llvm/test/CodeGen/RISCV/float-intrinsics.ll +++ b/llvm/test/CodeGen/RISCV/float-intrinsics.ll @@ -183,8 +183,8 @@ ; RV32IF-LABEL: sincos_f32: ; RV32IF: # %bb.0: ; RV32IF-NEXT: addi sp, sp, -16 -; RV32IF-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32IF-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32IF-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32IF-NEXT: mv s0, a0 ; RV32IF-NEXT: call sinf@plt ; RV32IF-NEXT: fmv.w.x ft0, a0 @@ -195,16 +195,16 @@ ; RV32IF-NEXT: flw ft1, 4(sp) # 4-byte Folded Reload ; RV32IF-NEXT: fadd.s ft0, ft1, ft0 ; RV32IF-NEXT: fmv.x.w a0, ft0 -; RV32IF-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32IF-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32IF-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32IF-NEXT: addi sp, sp, 16 ; RV32IF-NEXT: ret ; ; RV64IF-LABEL: sincos_f32: ; RV64IF: # %bb.0: ; RV64IF-NEXT: addi sp, sp, -32 -; RV64IF-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64IF-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64IF-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64IF-NEXT: mv s0, a0 ; RV64IF-NEXT: call sinf@plt ; RV64IF-NEXT: fmv.w.x ft0, a0 @@ -215,17 +215,17 @@ ; RV64IF-NEXT: flw ft1, 12(sp) # 4-byte Folded Reload ; RV64IF-NEXT: fadd.s ft0, ft1, ft0 ; RV64IF-NEXT: fmv.x.w a0, ft0 -; RV64IF-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64IF-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64IF-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64IF-NEXT: addi sp, sp, 32 ; RV64IF-NEXT: ret ; ; RV32I-LABEL: sincos_f32: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: call sinf@plt ; RV32I-NEXT: mv s1, a0 @@ -234,18 +234,18 @@ ; RV32I-NEXT: mv a1, a0 ; RV32I-NEXT: mv a0, s1 ; RV32I-NEXT: call __addsf3@plt -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; ; RV64I-LABEL: sincos_f32: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: call sinf@plt ; RV64I-NEXT: mv s1, a0 @@ -254,9 +254,9 @@ ; RV64I-NEXT: mv a1, a0 ; RV64I-NEXT: mv a0, s1 ; RV64I-NEXT: call __addsf3@plt -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret %1 = call float @llvm.sin.f32(float %a) @@ -583,28 +583,28 @@ ; RV32I-LABEL: fmuladd_f32: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a2 ; RV32I-NEXT: call __mulsf3@plt ; RV32I-NEXT: mv a1, s0 ; RV32I-NEXT: call __addsf3@plt -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fmuladd_f32: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -16 -; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s0, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a2 ; RV64I-NEXT: call __mulsf3@plt ; RV64I-NEXT: mv a1, s0 ; RV64I-NEXT: call __addsf3@plt -; RV64I-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 16 ; RV64I-NEXT: ret %1 = call float @llvm.fmuladd.f32(float %a, float %b, float %c) diff --git a/llvm/test/CodeGen/RISCV/fp16-promote.ll b/llvm/test/CodeGen/RISCV/fp16-promote.ll --- a/llvm/test/CodeGen/RISCV/fp16-promote.ll +++ b/llvm/test/CodeGen/RISCV/fp16-promote.ll @@ -47,13 +47,13 @@ ; CHECK-LABEL: test_fptrunc_float: ; CHECK: # %bb.0: ; CHECK-NEXT: addi sp, sp, -16 -; CHECK-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; CHECK-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; CHECK-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; CHECK-NEXT: mv s0, a0 ; CHECK-NEXT: call __gnu_f2h_ieee@plt ; CHECK-NEXT: sh a0, 0(s0) -; CHECK-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; CHECK-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; CHECK-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; CHECK-NEXT: addi sp, sp, 16 ; CHECK-NEXT: ret %a = fptrunc float %f to half @@ -65,13 +65,13 @@ ; CHECK-LABEL: test_fptrunc_double: ; CHECK: # %bb.0: ; CHECK-NEXT: addi sp, sp, -16 -; CHECK-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; CHECK-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; CHECK-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; CHECK-NEXT: mv s0, a0 ; CHECK-NEXT: call __truncdfhf2@plt ; CHECK-NEXT: sh a0, 0(s0) -; CHECK-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; CHECK-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; CHECK-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; CHECK-NEXT: addi sp, sp, 16 ; CHECK-NEXT: ret %a = fptrunc double %d to half @@ -83,10 +83,10 @@ ; CHECK-LABEL: test_fadd: ; CHECK: # %bb.0: ; 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: sw s1, 20(sp) # 4-byte Folded Spill +; CHECK-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; CHECK-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; CHECK-NEXT: mv s0, a0 ; CHECK-NEXT: lhu s1, 0(a0) ; CHECK-NEXT: lhu a0, 0(a1) @@ -97,10 +97,10 @@ ; CHECK-NEXT: fadd.s fa0, fa0, fs0 ; CHECK-NEXT: call __gnu_f2h_ieee@plt ; CHECK-NEXT: sh a0, 0(s0) -; CHECK-NEXT: fld fs0, 8(sp) # 8-byte Folded Reload -; CHECK-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; CHECK-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; 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: addi sp, sp, 32 ; CHECK-NEXT: ret %a = load half, half* %p @@ -114,10 +114,10 @@ ; CHECK-LABEL: test_fmul: ; CHECK: # %bb.0: ; 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: sw s1, 20(sp) # 4-byte Folded Spill +; CHECK-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; CHECK-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; CHECK-NEXT: mv s0, a0 ; CHECK-NEXT: lhu s1, 0(a0) ; CHECK-NEXT: lhu a0, 0(a1) @@ -128,10 +128,10 @@ ; CHECK-NEXT: fmul.s fa0, fa0, fs0 ; CHECK-NEXT: call __gnu_f2h_ieee@plt ; CHECK-NEXT: sh a0, 0(s0) -; CHECK-NEXT: fld fs0, 8(sp) # 8-byte Folded Reload -; CHECK-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; CHECK-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; 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: addi sp, sp, 32 ; CHECK-NEXT: ret %a = load half, half* %p diff --git a/llvm/test/CodeGen/RISCV/frame-info.ll b/llvm/test/CodeGen/RISCV/frame-info.ll --- a/llvm/test/CodeGen/RISCV/frame-info.ll +++ b/llvm/test/CodeGen/RISCV/frame-info.ll @@ -21,14 +21,14 @@ ; RV32-WITHFP: # %bb.0: ; RV32-WITHFP-NEXT: addi sp, sp, -16 ; RV32-WITHFP-NEXT: .cfi_def_cfa_offset 16 -; RV32-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32-WITHFP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill -; RV32-WITHFP-NEXT: .cfi_offset ra, -4 +; RV32-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32-WITHFP-NEXT: .cfi_offset s0, -8 +; RV32-WITHFP-NEXT: .cfi_offset ra, -4 ; RV32-WITHFP-NEXT: addi s0, sp, 16 ; RV32-WITHFP-NEXT: .cfi_def_cfa s0, 0 -; RV32-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32-WITHFP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32-WITHFP-NEXT: addi sp, sp, 16 ; RV32-WITHFP-NEXT: ret ; @@ -36,14 +36,14 @@ ; RV64-WITHFP: # %bb.0: ; RV64-WITHFP-NEXT: addi sp, sp, -16 ; RV64-WITHFP-NEXT: .cfi_def_cfa_offset 16 -; RV64-WITHFP-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64-WITHFP-NEXT: sd s0, 0(sp) # 8-byte Folded Spill -; RV64-WITHFP-NEXT: .cfi_offset ra, -8 +; RV64-WITHFP-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64-WITHFP-NEXT: .cfi_offset s0, -16 +; RV64-WITHFP-NEXT: .cfi_offset ra, -8 ; RV64-WITHFP-NEXT: addi s0, sp, 16 ; RV64-WITHFP-NEXT: .cfi_def_cfa s0, 0 -; RV64-WITHFP-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64-WITHFP-NEXT: ld ra, 8(sp) # 8-byte Folded Reload +; RV64-WITHFP-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64-WITHFP-NEXT: addi sp, sp, 16 ; RV64-WITHFP-NEXT: ret ret void @@ -54,10 +54,10 @@ ; RV32: # %bb.0: # %entry ; RV32-NEXT: addi sp, sp, -16 ; RV32-NEXT: .cfi_def_cfa_offset 16 -; RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32-NEXT: sw s0, 8(sp) # 4-byte Folded Spill -; RV32-NEXT: .cfi_offset ra, -4 +; RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32-NEXT: .cfi_offset s0, -8 +; RV32-NEXT: .cfi_offset ra, -4 ; RV32-NEXT: addi s0, sp, 16 ; RV32-NEXT: .cfi_def_cfa s0, 0 ; RV32-NEXT: addi a0, a0, 15 @@ -66,8 +66,8 @@ ; RV32-NEXT: mv sp, a0 ; RV32-NEXT: call callee_with_args@plt ; RV32-NEXT: addi sp, s0, -16 -; RV32-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32-NEXT: addi sp, sp, 16 ; RV32-NEXT: ret ; @@ -75,10 +75,10 @@ ; RV64: # %bb.0: # %entry ; RV64-NEXT: addi sp, sp, -16 ; RV64-NEXT: .cfi_def_cfa_offset 16 -; RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64-NEXT: sd s0, 0(sp) # 8-byte Folded Spill -; RV64-NEXT: .cfi_offset ra, -8 +; RV64-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64-NEXT: .cfi_offset s0, -16 +; RV64-NEXT: .cfi_offset ra, -8 ; RV64-NEXT: addi s0, sp, 16 ; RV64-NEXT: .cfi_def_cfa s0, 0 ; RV64-NEXT: slli a0, a0, 32 @@ -89,8 +89,8 @@ ; RV64-NEXT: mv sp, a0 ; RV64-NEXT: call callee_with_args@plt ; RV64-NEXT: addi sp, s0, -16 -; RV64-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64-NEXT: ld ra, 8(sp) # 8-byte Folded Reload +; RV64-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64-NEXT: addi sp, sp, 16 ; RV64-NEXT: ret ; @@ -98,10 +98,10 @@ ; RV32-WITHFP: # %bb.0: # %entry ; RV32-WITHFP-NEXT: addi sp, sp, -16 ; RV32-WITHFP-NEXT: .cfi_def_cfa_offset 16 -; RV32-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32-WITHFP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill -; RV32-WITHFP-NEXT: .cfi_offset ra, -4 +; RV32-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32-WITHFP-NEXT: .cfi_offset s0, -8 +; RV32-WITHFP-NEXT: .cfi_offset ra, -4 ; RV32-WITHFP-NEXT: addi s0, sp, 16 ; RV32-WITHFP-NEXT: .cfi_def_cfa s0, 0 ; RV32-WITHFP-NEXT: addi a0, a0, 15 @@ -110,8 +110,8 @@ ; RV32-WITHFP-NEXT: mv sp, a0 ; RV32-WITHFP-NEXT: call callee_with_args@plt ; RV32-WITHFP-NEXT: addi sp, s0, -16 -; RV32-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32-WITHFP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32-WITHFP-NEXT: addi sp, sp, 16 ; RV32-WITHFP-NEXT: ret ; @@ -119,10 +119,10 @@ ; RV64-WITHFP: # %bb.0: # %entry ; RV64-WITHFP-NEXT: addi sp, sp, -16 ; RV64-WITHFP-NEXT: .cfi_def_cfa_offset 16 -; RV64-WITHFP-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64-WITHFP-NEXT: sd s0, 0(sp) # 8-byte Folded Spill -; RV64-WITHFP-NEXT: .cfi_offset ra, -8 +; RV64-WITHFP-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64-WITHFP-NEXT: .cfi_offset s0, -16 +; RV64-WITHFP-NEXT: .cfi_offset ra, -8 ; RV64-WITHFP-NEXT: addi s0, sp, 16 ; RV64-WITHFP-NEXT: .cfi_def_cfa s0, 0 ; RV64-WITHFP-NEXT: slli a0, a0, 32 @@ -133,8 +133,8 @@ ; RV64-WITHFP-NEXT: mv sp, a0 ; RV64-WITHFP-NEXT: call callee_with_args@plt ; RV64-WITHFP-NEXT: addi sp, s0, -16 -; RV64-WITHFP-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64-WITHFP-NEXT: ld ra, 8(sp) # 8-byte Folded Reload +; RV64-WITHFP-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64-WITHFP-NEXT: addi sp, sp, 16 ; RV64-WITHFP-NEXT: ret entry: @@ -185,15 +185,15 @@ ; RV32-WITHFP-NEXT: .LBB2_2: # %red_pill ; RV32-WITHFP-NEXT: addi sp, sp, -16 ; RV32-WITHFP-NEXT: .cfi_def_cfa_offset 16 -; RV32-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32-WITHFP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill -; RV32-WITHFP-NEXT: .cfi_offset ra, -4 +; RV32-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32-WITHFP-NEXT: .cfi_offset s0, -8 +; RV32-WITHFP-NEXT: .cfi_offset ra, -4 ; RV32-WITHFP-NEXT: addi s0, sp, 16 ; RV32-WITHFP-NEXT: .cfi_def_cfa s0, 0 ; RV32-WITHFP-NEXT: call callee2@plt -; RV32-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32-WITHFP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32-WITHFP-NEXT: addi sp, sp, 16 ; RV32-WITHFP-NEXT: ret ; @@ -206,15 +206,15 @@ ; RV64-WITHFP-NEXT: .LBB2_2: # %red_pill ; RV64-WITHFP-NEXT: addi sp, sp, -16 ; RV64-WITHFP-NEXT: .cfi_def_cfa_offset 16 -; RV64-WITHFP-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64-WITHFP-NEXT: sd s0, 0(sp) # 8-byte Folded Spill -; RV64-WITHFP-NEXT: .cfi_offset ra, -8 +; RV64-WITHFP-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64-WITHFP-NEXT: .cfi_offset s0, -16 +; RV64-WITHFP-NEXT: .cfi_offset ra, -8 ; RV64-WITHFP-NEXT: addi s0, sp, 16 ; RV64-WITHFP-NEXT: .cfi_def_cfa s0, 0 ; RV64-WITHFP-NEXT: call callee2@plt -; RV64-WITHFP-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64-WITHFP-NEXT: ld ra, 8(sp) # 8-byte Folded Reload +; RV64-WITHFP-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64-WITHFP-NEXT: addi sp, sp, 16 ; RV64-WITHFP-NEXT: ret br i1 %a, label %blue_pill, label %red_pill diff --git a/llvm/test/CodeGen/RISCV/frame.ll b/llvm/test/CodeGen/RISCV/frame.ll --- a/llvm/test/CodeGen/RISCV/frame.ll +++ b/llvm/test/CodeGen/RISCV/frame.ll @@ -26,8 +26,8 @@ ; RV32I-WITHFP-LABEL: test: ; RV32I-WITHFP: # %bb.0: ; RV32I-WITHFP-NEXT: addi sp, sp, -32 -; RV32I-WITHFP-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-WITHFP-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: addi s0, sp, 32 ; RV32I-WITHFP-NEXT: sw zero, -16(s0) ; RV32I-WITHFP-NEXT: sw zero, -20(s0) @@ -37,8 +37,8 @@ ; RV32I-WITHFP-NEXT: addi a0, s0, -28 ; RV32I-WITHFP-NEXT: call test1@plt ; RV32I-WITHFP-NEXT: mv a0, zero -; RV32I-WITHFP-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-WITHFP-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: addi sp, sp, 32 ; RV32I-WITHFP-NEXT: ret %key = alloca %struct.key_t, align 4 diff --git a/llvm/test/CodeGen/RISCV/frameaddr-returnaddr.ll b/llvm/test/CodeGen/RISCV/frameaddr-returnaddr.ll --- a/llvm/test/CodeGen/RISCV/frameaddr-returnaddr.ll +++ b/llvm/test/CodeGen/RISCV/frameaddr-returnaddr.ll @@ -12,24 +12,24 @@ ; RV32I-LABEL: test_frameaddress_0: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: addi s0, sp, 16 ; RV32I-NEXT: mv a0, s0 -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; ; RV64I-LABEL: test_frameaddress_0: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -16 -; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s0, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: addi s0, sp, 16 ; RV64I-NEXT: mv a0, s0 -; RV64I-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 16 ; RV64I-NEXT: ret %1 = call i8* @llvm.frameaddress(i32 0) @@ -40,26 +40,26 @@ ; RV32I-LABEL: test_frameaddress_2: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: addi s0, sp, 16 ; RV32I-NEXT: lw a0, -8(s0) ; RV32I-NEXT: lw a0, -8(a0) -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; ; RV64I-LABEL: test_frameaddress_2: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -16 -; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s0, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: addi s0, sp, 16 ; RV64I-NEXT: ld a0, -16(s0) ; RV64I-NEXT: ld a0, -16(a0) -; RV64I-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 16 ; RV64I-NEXT: ret %1 = call i8* @llvm.frameaddress(i32 2) @@ -70,32 +70,32 @@ ; RV32I-LABEL: test_frameaddress_3_alloca: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -112 -; RV32I-NEXT: sw ra, 108(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s0, 104(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 108(sp) # 4-byte Folded Spill ; RV32I-NEXT: addi s0, sp, 112 ; RV32I-NEXT: addi a0, s0, -108 ; RV32I-NEXT: call notdead@plt ; RV32I-NEXT: lw a0, -8(s0) ; RV32I-NEXT: lw a0, -8(a0) ; RV32I-NEXT: lw a0, -8(a0) -; RV32I-NEXT: lw s0, 104(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 108(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 104(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 112 ; RV32I-NEXT: ret ; ; RV64I-LABEL: test_frameaddress_3_alloca: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -128 -; RV64I-NEXT: sd ra, 120(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s0, 112(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 120(sp) # 8-byte Folded Spill ; RV64I-NEXT: addi s0, sp, 128 ; RV64I-NEXT: addi a0, s0, -116 ; RV64I-NEXT: call notdead@plt ; RV64I-NEXT: ld a0, -16(s0) ; RV64I-NEXT: ld a0, -16(a0) ; RV64I-NEXT: ld a0, -16(a0) -; RV64I-NEXT: ld s0, 112(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 120(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 112(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 128 ; RV64I-NEXT: ret %1 = alloca [100 x i8] @@ -123,28 +123,28 @@ ; RV32I-LABEL: test_returnaddress_2: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: addi s0, sp, 16 ; RV32I-NEXT: lw a0, -8(s0) ; RV32I-NEXT: lw a0, -8(a0) ; RV32I-NEXT: lw a0, -4(a0) -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; ; RV64I-LABEL: test_returnaddress_2: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -16 -; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s0, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: addi s0, sp, 16 ; RV64I-NEXT: ld a0, -16(s0) ; RV64I-NEXT: ld a0, -16(a0) ; RV64I-NEXT: ld a0, -8(a0) -; RV64I-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 16 ; RV64I-NEXT: ret %1 = call i8* @llvm.returnaddress(i32 2) diff --git a/llvm/test/CodeGen/RISCV/half-arith.ll b/llvm/test/CodeGen/RISCV/half-arith.ll --- a/llvm/test/CodeGen/RISCV/half-arith.ll +++ b/llvm/test/CodeGen/RISCV/half-arith.ll @@ -26,10 +26,10 @@ ; RV32I-LABEL: fadd_s: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 0(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a1 ; RV32I-NEXT: lui a1, 16 ; RV32I-NEXT: addi s0, a1, -1 @@ -42,20 +42,20 @@ ; RV32I-NEXT: mv a0, s1 ; RV32I-NEXT: call __addsf3@plt ; RV32I-NEXT: call __gnu_f2h_ieee@plt -; RV32I-NEXT: lw s2, 0(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 0(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fadd_s: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s2, a1 ; RV64I-NEXT: lui a1, 16 ; RV64I-NEXT: addiw s0, a1, -1 @@ -68,10 +68,10 @@ ; RV64I-NEXT: mv a0, s1 ; RV64I-NEXT: call __addsf3@plt ; RV64I-NEXT: call __gnu_f2h_ieee@plt -; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret %1 = fadd half %a, %b @@ -92,10 +92,10 @@ ; RV32I-LABEL: fsub_s: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 0(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a1 ; RV32I-NEXT: lui a1, 16 ; RV32I-NEXT: addi s0, a1, -1 @@ -108,20 +108,20 @@ ; RV32I-NEXT: mv a0, s1 ; RV32I-NEXT: call __subsf3@plt ; RV32I-NEXT: call __gnu_f2h_ieee@plt -; RV32I-NEXT: lw s2, 0(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 0(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fsub_s: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s2, a1 ; RV64I-NEXT: lui a1, 16 ; RV64I-NEXT: addiw s0, a1, -1 @@ -134,10 +134,10 @@ ; RV64I-NEXT: mv a0, s1 ; RV64I-NEXT: call __subsf3@plt ; RV64I-NEXT: call __gnu_f2h_ieee@plt -; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret %1 = fsub half %a, %b @@ -158,10 +158,10 @@ ; RV32I-LABEL: fmul_s: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 0(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a1 ; RV32I-NEXT: lui a1, 16 ; RV32I-NEXT: addi s0, a1, -1 @@ -174,20 +174,20 @@ ; RV32I-NEXT: mv a0, s1 ; RV32I-NEXT: call __mulsf3@plt ; RV32I-NEXT: call __gnu_f2h_ieee@plt -; RV32I-NEXT: lw s2, 0(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 0(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fmul_s: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s2, a1 ; RV64I-NEXT: lui a1, 16 ; RV64I-NEXT: addiw s0, a1, -1 @@ -200,10 +200,10 @@ ; RV64I-NEXT: mv a0, s1 ; RV64I-NEXT: call __mulsf3@plt ; RV64I-NEXT: call __gnu_f2h_ieee@plt -; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret %1 = fmul half %a, %b @@ -224,10 +224,10 @@ ; RV32I-LABEL: fdiv_s: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 0(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a1 ; RV32I-NEXT: lui a1, 16 ; RV32I-NEXT: addi s0, a1, -1 @@ -240,20 +240,20 @@ ; RV32I-NEXT: mv a0, s1 ; RV32I-NEXT: call __divsf3@plt ; RV32I-NEXT: call __gnu_f2h_ieee@plt -; RV32I-NEXT: lw s2, 0(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 0(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fdiv_s: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s2, a1 ; RV64I-NEXT: lui a1, 16 ; RV64I-NEXT: addiw s0, a1, -1 @@ -266,10 +266,10 @@ ; RV64I-NEXT: mv a0, s1 ; RV64I-NEXT: call __divsf3@plt ; RV64I-NEXT: call __gnu_f2h_ieee@plt -; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret %1 = fdiv half %a, %b @@ -376,9 +376,9 @@ ; RV32I-LABEL: fneg_s: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: lui a1, 16 ; RV32I-NEXT: addi s1, a1, -1 ; RV32I-NEXT: and a0, a0, s1 @@ -398,18 +398,18 @@ ; RV32I-NEXT: mv a0, s0 ; RV32I-NEXT: call __eqsf2@plt ; RV32I-NEXT: seqz a0, a0 -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fneg_s: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: lui a1, 16 ; RV64I-NEXT: addiw s1, a1, -1 ; RV64I-NEXT: and a0, a0, s1 @@ -429,9 +429,9 @@ ; RV64I-NEXT: mv a0, s0 ; RV64I-NEXT: call __eqsf2@plt ; RV64I-NEXT: seqz a0, a0 -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret %1 = fadd half %a, %a @@ -459,11 +459,11 @@ ; RV32I-LABEL: fsgnjn_s: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s3, a1 ; RV32I-NEXT: mv s2, a0 ; RV32I-NEXT: lui a0, 16 @@ -488,22 +488,22 @@ ; RV32I-NEXT: addi a1, a1, -1 ; RV32I-NEXT: and a1, s2, a1 ; RV32I-NEXT: or a0, a1, a0 -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fsgnjn_s: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s3, a1 ; RV64I-NEXT: mv s2, a0 ; RV64I-NEXT: lui a0, 16 @@ -528,11 +528,11 @@ ; RV64I-NEXT: addiw a1, a1, -1 ; RV64I-NEXT: and a1, s2, a1 ; RV64I-NEXT: or a0, a1, a0 -; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret %1 = fadd half %a, %b @@ -563,10 +563,10 @@ ; RV32I-LABEL: fabs_s: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 0(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a1 ; RV32I-NEXT: lui a1, 16 ; RV32I-NEXT: addi s1, a1, -1 @@ -591,20 +591,20 @@ ; RV32I-NEXT: mv a1, s0 ; RV32I-NEXT: call __addsf3@plt ; RV32I-NEXT: call __gnu_f2h_ieee@plt -; RV32I-NEXT: lw s2, 0(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 0(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fabs_s: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s2, a1 ; RV64I-NEXT: lui a1, 16 ; RV64I-NEXT: addiw s1, a1, -1 @@ -629,10 +629,10 @@ ; RV64I-NEXT: mv a1, s0 ; RV64I-NEXT: call __addsf3@plt ; RV64I-NEXT: call __gnu_f2h_ieee@plt -; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret %1 = fadd half %a, %b @@ -657,10 +657,10 @@ ; RV32I-LABEL: fmin_s: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 0(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a1 ; RV32I-NEXT: lui a1, 16 ; RV32I-NEXT: addi s0, a1, -1 @@ -673,20 +673,20 @@ ; RV32I-NEXT: mv a0, s1 ; RV32I-NEXT: call fminf@plt ; RV32I-NEXT: call __gnu_f2h_ieee@plt -; RV32I-NEXT: lw s2, 0(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 0(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fmin_s: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s2, a1 ; RV64I-NEXT: lui a1, 16 ; RV64I-NEXT: addiw s0, a1, -1 @@ -699,10 +699,10 @@ ; RV64I-NEXT: mv a0, s1 ; RV64I-NEXT: call fminf@plt ; RV64I-NEXT: call __gnu_f2h_ieee@plt -; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret %1 = call half @llvm.minnum.f16(half %a, half %b) @@ -725,10 +725,10 @@ ; RV32I-LABEL: fmax_s: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 0(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a1 ; RV32I-NEXT: lui a1, 16 ; RV32I-NEXT: addi s0, a1, -1 @@ -741,20 +741,20 @@ ; RV32I-NEXT: mv a0, s1 ; RV32I-NEXT: call fmaxf@plt ; RV32I-NEXT: call __gnu_f2h_ieee@plt -; RV32I-NEXT: lw s2, 0(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 0(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fmax_s: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s2, a1 ; RV64I-NEXT: lui a1, 16 ; RV64I-NEXT: addiw s0, a1, -1 @@ -767,10 +767,10 @@ ; RV64I-NEXT: mv a0, s1 ; RV64I-NEXT: call fmaxf@plt ; RV64I-NEXT: call __gnu_f2h_ieee@plt -; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret %1 = call half @llvm.maxnum.f16(half %a, half %b) @@ -791,10 +791,10 @@ ; RV32I-LABEL: feq_s: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 0(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a1 ; RV32I-NEXT: lui a1, 16 ; RV32I-NEXT: addi s0, a1, -1 @@ -807,20 +807,20 @@ ; RV32I-NEXT: mv a0, s1 ; RV32I-NEXT: call __eqsf2@plt ; RV32I-NEXT: seqz a0, a0 -; RV32I-NEXT: lw s2, 0(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 0(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; ; RV64I-LABEL: feq_s: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s2, a1 ; RV64I-NEXT: lui a1, 16 ; RV64I-NEXT: addiw s0, a1, -1 @@ -833,10 +833,10 @@ ; RV64I-NEXT: mv a0, s1 ; RV64I-NEXT: call __eqsf2@plt ; RV64I-NEXT: seqz a0, a0 -; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret %1 = fcmp oeq half %a, %b @@ -858,10 +858,10 @@ ; RV32I-LABEL: flt_s: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 0(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a1 ; RV32I-NEXT: lui a1, 16 ; RV32I-NEXT: addi s0, a1, -1 @@ -874,21 +874,21 @@ ; RV32I-NEXT: mv a0, s1 ; RV32I-NEXT: call __ltsf2@plt ; RV32I-NEXT: slti a0, a0, 0 -; RV32I-NEXT: lw s2, 0(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 0(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; ; RV64I-LABEL: flt_s: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 0(sp) # 8-byte Folded Spill -; RV64I-NEXT: mv s2, a1 +; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: mv s2, a1 ; RV64I-NEXT: lui a1, 16 ; RV64I-NEXT: addiw s0, a1, -1 ; RV64I-NEXT: and a0, a0, s0 @@ -900,10 +900,10 @@ ; RV64I-NEXT: mv a0, s1 ; RV64I-NEXT: call __ltsf2@plt ; RV64I-NEXT: slti a0, a0, 0 -; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret %1 = fcmp olt half %a, %b @@ -925,10 +925,10 @@ ; RV32I-LABEL: fle_s: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 0(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a1 ; RV32I-NEXT: lui a1, 16 ; RV32I-NEXT: addi s0, a1, -1 @@ -941,20 +941,20 @@ ; RV32I-NEXT: mv a0, s1 ; RV32I-NEXT: call __lesf2@plt ; RV32I-NEXT: slti a0, a0, 1 -; RV32I-NEXT: lw s2, 0(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 0(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fle_s: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s2, a1 ; RV64I-NEXT: lui a1, 16 ; RV64I-NEXT: addiw s0, a1, -1 @@ -967,10 +967,10 @@ ; RV64I-NEXT: mv a0, s1 ; RV64I-NEXT: call __lesf2@plt ; RV64I-NEXT: slti a0, a0, 1 -; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret %1 = fcmp ole half %a, %b @@ -994,11 +994,11 @@ ; RV32I-LABEL: fmadd_s: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a2 ; RV32I-NEXT: mv s1, a1 ; RV32I-NEXT: lui a1, 16 @@ -1016,22 +1016,22 @@ ; RV32I-NEXT: mv a1, s1 ; RV32I-NEXT: call fmaf@plt ; RV32I-NEXT: call __gnu_f2h_ieee@plt -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fmadd_s: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s2, a2 ; RV64I-NEXT: mv s1, a1 ; RV64I-NEXT: lui a1, 16 @@ -1049,11 +1049,11 @@ ; RV64I-NEXT: mv a1, s1 ; RV64I-NEXT: call fmaf@plt ; RV64I-NEXT: call __gnu_f2h_ieee@plt -; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret %1 = call half @llvm.fma.f16(half %a, half %b, half %c) @@ -1078,12 +1078,12 @@ ; RV32I-LABEL: fmsub_s: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a1 ; RV32I-NEXT: mv s1, a0 ; RV32I-NEXT: lui a0, 16 @@ -1112,24 +1112,24 @@ ; RV32I-NEXT: mv a1, s1 ; RV32I-NEXT: call fmaf@plt ; RV32I-NEXT: call __gnu_f2h_ieee@plt -; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fmsub_s: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s4, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s2, a1 ; RV64I-NEXT: mv s1, a0 ; RV64I-NEXT: lui a0, 16 @@ -1158,12 +1158,12 @@ ; RV64I-NEXT: mv a1, s1 ; RV64I-NEXT: call fmaf@plt ; RV64I-NEXT: call __gnu_f2h_ieee@plt -; RV64I-NEXT: ld s4, 0(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s4, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret %c_ = fadd half 0.0, %c ; avoid negation using xor @@ -1192,12 +1192,12 @@ ; RV32I-LABEL: fnmadd_s: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s3, a2 ; RV32I-NEXT: mv s2, a1 ; RV32I-NEXT: lui a1, 16 @@ -1238,24 +1238,24 @@ ; RV32I-NEXT: mv a1, s2 ; RV32I-NEXT: call fmaf@plt ; RV32I-NEXT: call __gnu_f2h_ieee@plt -; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fnmadd_s: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s4, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s3, a2 ; RV64I-NEXT: mv s2, a1 ; RV64I-NEXT: lui a1, 16 @@ -1296,12 +1296,12 @@ ; RV64I-NEXT: mv a1, s2 ; RV64I-NEXT: call fmaf@plt ; RV64I-NEXT: call __gnu_f2h_ieee@plt -; RV64I-NEXT: ld s4, 0(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s4, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret %a_ = fadd half 0.0, %a @@ -1332,12 +1332,12 @@ ; RV32I-LABEL: fnmadd_s_2: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s3, a2 ; RV32I-NEXT: mv s2, a0 ; RV32I-NEXT: lui a0, 16 @@ -1378,24 +1378,24 @@ ; RV32I-NEXT: mv a1, s0 ; RV32I-NEXT: call fmaf@plt ; RV32I-NEXT: call __gnu_f2h_ieee@plt -; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fnmadd_s_2: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s4, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s3, a2 ; RV64I-NEXT: mv s2, a0 ; RV64I-NEXT: lui a0, 16 @@ -1436,12 +1436,12 @@ ; RV64I-NEXT: mv a1, s0 ; RV64I-NEXT: call fmaf@plt ; RV64I-NEXT: call __gnu_f2h_ieee@plt -; RV64I-NEXT: ld s4, 0(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s4, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret %b_ = fadd half 0.0, %b @@ -1470,12 +1470,12 @@ ; RV32I-LABEL: fnmsub_s: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a2 ; RV32I-NEXT: mv s1, a1 ; RV32I-NEXT: lui a1, 16 @@ -1503,24 +1503,24 @@ ; RV32I-NEXT: mv a2, s1 ; RV32I-NEXT: call fmaf@plt ; RV32I-NEXT: call __gnu_f2h_ieee@plt -; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fnmsub_s: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s4, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s2, a2 ; RV64I-NEXT: mv s1, a1 ; RV64I-NEXT: lui a1, 16 @@ -1548,12 +1548,12 @@ ; RV64I-NEXT: mv a2, s1 ; RV64I-NEXT: call fmaf@plt ; RV64I-NEXT: call __gnu_f2h_ieee@plt -; RV64I-NEXT: ld s4, 0(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s4, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret %a_ = fadd half 0.0, %a @@ -1580,12 +1580,12 @@ ; RV32I-LABEL: fnmsub_s_2: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a2 ; RV32I-NEXT: mv s1, a0 ; RV32I-NEXT: lui a0, 16 @@ -1614,24 +1614,24 @@ ; RV32I-NEXT: mv a2, s1 ; RV32I-NEXT: call fmaf@plt ; RV32I-NEXT: call __gnu_f2h_ieee@plt -; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fnmsub_s_2: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s4, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s2, a2 ; RV64I-NEXT: mv s1, a0 ; RV64I-NEXT: lui a0, 16 @@ -1660,12 +1660,12 @@ ; RV64I-NEXT: mv a2, s1 ; RV64I-NEXT: call fmaf@plt ; RV64I-NEXT: call __gnu_f2h_ieee@plt -; RV64I-NEXT: ld s4, 0(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s4, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret %b_ = fadd half 0.0, %b @@ -1688,11 +1688,11 @@ ; RV32I-LABEL: fmadd_s_contract: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a2 ; RV32I-NEXT: mv s3, a1 ; RV32I-NEXT: lui a1, 16 @@ -1715,22 +1715,22 @@ ; RV32I-NEXT: mv a1, s2 ; RV32I-NEXT: call __addsf3@plt ; RV32I-NEXT: call __gnu_f2h_ieee@plt -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fmadd_s_contract: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s2, a2 ; RV64I-NEXT: mv s3, a1 ; RV64I-NEXT: lui a1, 16 @@ -1753,11 +1753,11 @@ ; RV64I-NEXT: mv a1, s2 ; RV64I-NEXT: call __addsf3@plt ; RV64I-NEXT: call __gnu_f2h_ieee@plt -; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret %1 = fmul contract half %a, %b @@ -1783,11 +1783,11 @@ ; RV32I-LABEL: fmsub_s_contract: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s3, a1 ; RV32I-NEXT: mv s1, a0 ; RV32I-NEXT: lui a0, 16 @@ -1816,22 +1816,22 @@ ; RV32I-NEXT: mv a0, s1 ; RV32I-NEXT: call __subsf3@plt ; RV32I-NEXT: call __gnu_f2h_ieee@plt -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fmsub_s_contract: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s3, a1 ; RV64I-NEXT: mv s1, a0 ; RV64I-NEXT: lui a0, 16 @@ -1860,11 +1860,11 @@ ; RV64I-NEXT: mv a0, s1 ; RV64I-NEXT: call __subsf3@plt ; RV64I-NEXT: call __gnu_f2h_ieee@plt -; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret %c_ = fadd half 0.0, %c ; avoid negation using xor @@ -1895,12 +1895,12 @@ ; RV32I-LABEL: fnmadd_s_contract: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a2 ; RV32I-NEXT: mv s0, a1 ; RV32I-NEXT: lui a1, 16 @@ -1946,24 +1946,24 @@ ; RV32I-NEXT: mv a1, s2 ; RV32I-NEXT: call __subsf3@plt ; RV32I-NEXT: call __gnu_f2h_ieee@plt -; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fnmadd_s_contract: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s4, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s2, a2 ; RV64I-NEXT: mv s0, a1 ; RV64I-NEXT: lui a1, 16 @@ -2009,12 +2009,12 @@ ; RV64I-NEXT: mv a1, s2 ; RV64I-NEXT: call __subsf3@plt ; RV64I-NEXT: call __gnu_f2h_ieee@plt -; RV64I-NEXT: ld s4, 0(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s4, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret %a_ = fadd half 0.0, %a ; avoid negation using xor @@ -2046,11 +2046,11 @@ ; RV32I-LABEL: fnmsub_s_contract: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a2 ; RV32I-NEXT: mv s1, a1 ; RV32I-NEXT: lui a1, 16 @@ -2086,22 +2086,22 @@ ; RV32I-NEXT: mv a0, s2 ; RV32I-NEXT: call __subsf3@plt ; RV32I-NEXT: call __gnu_f2h_ieee@plt -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fnmsub_s_contract: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s2, a2 ; RV64I-NEXT: mv s1, a1 ; RV64I-NEXT: lui a1, 16 @@ -2137,11 +2137,11 @@ ; RV64I-NEXT: mv a0, s2 ; RV64I-NEXT: call __subsf3@plt ; RV64I-NEXT: call __gnu_f2h_ieee@plt -; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret %a_ = fadd half 0.0, %a ; avoid negation using xor diff --git a/llvm/test/CodeGen/RISCV/half-convert.ll b/llvm/test/CodeGen/RISCV/half-convert.ll --- a/llvm/test/CodeGen/RISCV/half-convert.ll +++ b/llvm/test/CodeGen/RISCV/half-convert.ll @@ -138,11 +138,11 @@ ; RV32I-LABEL: fcvt_si_h_sat: ; RV32I: # %bb.0: # %start ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: lui a1, 16 ; RV32I-NEXT: addi a1, a1, -1 ; RV32I-NEXT: and a0, a0, a1 @@ -176,22 +176,22 @@ ; RV32I-NEXT: mv s1, s3 ; RV32I-NEXT: .LBB1_6: # %start ; RV32I-NEXT: mv a0, s1 -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fcvt_si_h_sat: ; RV64I: # %bb.0: # %start ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: lui a1, 16 ; RV64I-NEXT: addiw a1, a1, -1 ; RV64I-NEXT: and a0, a0, a1 @@ -225,11 +225,11 @@ ; RV64I-NEXT: mv s1, s3 ; RV64I-NEXT: .LBB1_6: # %start ; RV64I-NEXT: mv a0, s1 -; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret start: @@ -428,11 +428,11 @@ ; RV32I-LABEL: fcvt_ui_h_sat: ; RV32I: # %bb.0: # %start ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: lui a1, 16 ; RV32I-NEXT: addi s2, a1, -1 ; RV32I-NEXT: and a0, a0, s2 @@ -457,22 +457,22 @@ ; RV32I-NEXT: mv s2, s3 ; RV32I-NEXT: .LBB4_4: # %start ; RV32I-NEXT: mv a0, s2 -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fcvt_ui_h_sat: ; RV64I: # %bb.0: # %start ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: lui a1, 16 ; RV64I-NEXT: addiw s2, a1, -1 ; RV64I-NEXT: and a0, a0, s2 @@ -497,11 +497,11 @@ ; RV64I-NEXT: mv s2, s3 ; RV64I-NEXT: .LBB4_4: # %start ; RV64I-NEXT: mv a0, s2 -; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret start: @@ -608,12 +608,12 @@ ; RV32I-LABEL: fcvt_w_h_sat: ; RV32I: # %bb.0: # %start ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: lui a1, 16 ; RV32I-NEXT: addi a1, a1, -1 ; RV32I-NEXT: and a0, a0, a1 @@ -647,24 +647,24 @@ ; RV32I-NEXT: mv s1, s3 ; RV32I-NEXT: .LBB6_6: # %start ; RV32I-NEXT: mv a0, s1 -; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fcvt_w_h_sat: ; RV64I: # %bb.0: # %start ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s4, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: lui a1, 16 ; RV64I-NEXT: addiw a1, a1, -1 ; RV64I-NEXT: and a0, a0, a1 @@ -698,12 +698,12 @@ ; RV64I-NEXT: mv s1, s3 ; RV64I-NEXT: .LBB6_6: # %start ; RV64I-NEXT: mv a0, s1 -; RV64I-NEXT: ld s4, 0(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s4, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret start: @@ -810,10 +810,10 @@ ; RV32I-LABEL: fcvt_wu_h_sat: ; RV32I: # %bb.0: # %start ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 0(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: lui a1, 16 ; RV32I-NEXT: addi a1, a1, -1 ; RV32I-NEXT: and a0, a0, a1 @@ -839,20 +839,20 @@ ; RV32I-NEXT: # %bb.3: # %start ; RV32I-NEXT: mv a0, s2 ; RV32I-NEXT: .LBB8_4: # %start -; RV32I-NEXT: lw s2, 0(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 0(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fcvt_wu_h_sat: ; RV64I: # %bb.0: # %start ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: lui a1, 16 ; RV64I-NEXT: addiw a1, a1, -1 ; RV64I-NEXT: and a0, a0, a1 @@ -878,10 +878,10 @@ ; RV64I-NEXT: srli s1, a0, 32 ; RV64I-NEXT: .LBB8_4: # %start ; RV64I-NEXT: mv a0, s1 -; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret start: @@ -952,9 +952,9 @@ ; RV32IZFH-LABEL: fcvt_l_h_sat: ; RV32IZFH: # %bb.0: # %start ; RV32IZFH-NEXT: addi sp, sp, -16 -; RV32IZFH-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32IZFH-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32IZFH-NEXT: fsw fs0, 4(sp) # 4-byte Folded Spill +; RV32IZFH-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32IZFH-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32IZFH-NEXT: lui a0, %hi(.LCPI10_0) ; RV32IZFH-NEXT: flw ft0, %lo(.LCPI10_0)(a0) ; RV32IZFH-NEXT: fcvt.s.h fs0, fa0 @@ -984,9 +984,9 @@ ; RV32IZFH-NEXT: .LBB10_7: # %start ; RV32IZFH-NEXT: mv a1, zero ; RV32IZFH-NEXT: .LBB10_8: # %start -; RV32IZFH-NEXT: flw fs0, 4(sp) # 4-byte Folded Reload -; RV32IZFH-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32IZFH-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32IZFH-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32IZFH-NEXT: flw fs0, 4(sp) # 4-byte Folded Reload ; RV32IZFH-NEXT: addi sp, sp, 16 ; RV32IZFH-NEXT: ret ; RV32IZFH-NEXT: .LBB10_9: # %start @@ -1019,9 +1019,9 @@ ; RV32IDZFH-LABEL: fcvt_l_h_sat: ; RV32IDZFH: # %bb.0: # %start ; RV32IDZFH-NEXT: addi sp, sp, -16 -; RV32IDZFH-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32IDZFH-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32IDZFH-NEXT: fsd fs0, 0(sp) # 8-byte Folded Spill +; RV32IDZFH-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32IDZFH-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32IDZFH-NEXT: lui a0, %hi(.LCPI10_0) ; RV32IDZFH-NEXT: flw ft0, %lo(.LCPI10_0)(a0) ; RV32IDZFH-NEXT: fcvt.s.h fs0, fa0 @@ -1051,9 +1051,9 @@ ; RV32IDZFH-NEXT: .LBB10_7: # %start ; RV32IDZFH-NEXT: mv a1, zero ; RV32IDZFH-NEXT: .LBB10_8: # %start -; RV32IDZFH-NEXT: fld fs0, 0(sp) # 8-byte Folded Reload -; RV32IDZFH-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32IDZFH-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32IDZFH-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32IDZFH-NEXT: fld fs0, 0(sp) # 8-byte Folded Reload ; RV32IDZFH-NEXT: addi sp, sp, 16 ; RV32IDZFH-NEXT: ret ; RV32IDZFH-NEXT: .LBB10_9: # %start @@ -1086,14 +1086,14 @@ ; RV32I-LABEL: fcvt_l_h_sat: ; RV32I: # %bb.0: # %start ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s5, 4(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s6, 0(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s5, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: lui a1, 16 ; RV32I-NEXT: addi a1, a1, -1 ; RV32I-NEXT: and a0, a0, a1 @@ -1154,26 +1154,26 @@ ; RV32I-NEXT: .LBB10_12: # %start ; RV32I-NEXT: mv a0, s3 ; RV32I-NEXT: mv a1, s1 -; RV32I-NEXT: lw s6, 0(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s5, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s5, 4(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s6, 0(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fcvt_l_h_sat: ; RV64I: # %bb.0: # %start ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s4, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: lui a1, 16 ; RV64I-NEXT: addiw a1, a1, -1 ; RV64I-NEXT: and a0, a0, a1 @@ -1209,12 +1209,12 @@ ; RV64I-NEXT: mv s1, s2 ; RV64I-NEXT: .LBB10_7: # %start ; RV64I-NEXT: mv a0, s1 -; RV64I-NEXT: ld s4, 0(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s4, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret start: @@ -1285,9 +1285,9 @@ ; RV32IZFH-LABEL: fcvt_lu_h_sat: ; RV32IZFH: # %bb.0: # %start ; RV32IZFH-NEXT: addi sp, sp, -16 -; RV32IZFH-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32IZFH-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32IZFH-NEXT: fsw fs0, 4(sp) # 4-byte Folded Spill +; RV32IZFH-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32IZFH-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32IZFH-NEXT: fcvt.s.h fs0, fa0 ; RV32IZFH-NEXT: fmv.w.x ft0, zero ; RV32IZFH-NEXT: fle.s s0, ft0, fs0 @@ -1312,9 +1312,9 @@ ; RV32IZFH-NEXT: mv a2, a1 ; RV32IZFH-NEXT: .LBB12_6: # %start ; RV32IZFH-NEXT: mv a1, a2 -; RV32IZFH-NEXT: flw fs0, 4(sp) # 4-byte Folded Reload -; RV32IZFH-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32IZFH-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32IZFH-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32IZFH-NEXT: flw fs0, 4(sp) # 4-byte Folded Reload ; RV32IZFH-NEXT: addi sp, sp, 16 ; RV32IZFH-NEXT: ret ; RV32IZFH-NEXT: .LBB12_7: # %start @@ -1339,9 +1339,9 @@ ; RV32IDZFH-LABEL: fcvt_lu_h_sat: ; RV32IDZFH: # %bb.0: # %start ; RV32IDZFH-NEXT: addi sp, sp, -16 -; RV32IDZFH-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32IDZFH-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32IDZFH-NEXT: fsd fs0, 0(sp) # 8-byte Folded Spill +; RV32IDZFH-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32IDZFH-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32IDZFH-NEXT: fcvt.s.h fs0, fa0 ; RV32IDZFH-NEXT: fmv.w.x ft0, zero ; RV32IDZFH-NEXT: fle.s s0, ft0, fs0 @@ -1366,9 +1366,9 @@ ; RV32IDZFH-NEXT: mv a2, a1 ; RV32IDZFH-NEXT: .LBB12_6: # %start ; RV32IDZFH-NEXT: mv a1, a2 -; RV32IDZFH-NEXT: fld fs0, 0(sp) # 8-byte Folded Reload -; RV32IDZFH-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32IDZFH-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32IDZFH-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32IDZFH-NEXT: fld fs0, 0(sp) # 8-byte Folded Reload ; RV32IDZFH-NEXT: addi sp, sp, 16 ; RV32IDZFH-NEXT: ret ; RV32IDZFH-NEXT: .LBB12_7: # %start @@ -1393,13 +1393,13 @@ ; RV32I-LABEL: fcvt_lu_h_sat: ; RV32I: # %bb.0: # %start ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s5, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: lui a1, 16 ; RV32I-NEXT: addi a1, a1, -1 ; RV32I-NEXT: and a0, a0, a1 @@ -1444,23 +1444,23 @@ ; RV32I-NEXT: .LBB12_8: # %start ; RV32I-NEXT: mv a0, s4 ; RV32I-NEXT: mv a1, s3 -; RV32I-NEXT: lw s5, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s5, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fcvt_lu_h_sat: ; RV64I: # %bb.0: # %start ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: lui a1, 16 ; RV64I-NEXT: addiw a1, a1, -1 ; RV64I-NEXT: and a0, a0, a1 @@ -1486,10 +1486,10 @@ ; RV64I-NEXT: # %bb.3: # %start ; RV64I-NEXT: mv a0, s2 ; RV64I-NEXT: .LBB12_4: # %start -; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret start: @@ -2300,12 +2300,12 @@ ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 ; RV32I-NEXT: .cfi_def_cfa_offset 16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill -; RV32I-NEXT: .cfi_offset ra, -4 -; RV32I-NEXT: .cfi_offset s0, -8 +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: .cfi_offset s1, -12 +; RV32I-NEXT: .cfi_offset s0, -8 +; RV32I-NEXT: .cfi_offset ra, -4 ; RV32I-NEXT: mv s0, a1 ; RV32I-NEXT: addi s1, a0, 1 ; RV32I-NEXT: mv a0, s1 @@ -2313,9 +2313,9 @@ ; RV32I-NEXT: call __gnu_f2h_ieee@plt ; RV32I-NEXT: sh a0, 0(s0) ; RV32I-NEXT: mv a0, s1 -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; @@ -2323,12 +2323,12 @@ ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 ; RV64I-NEXT: .cfi_def_cfa_offset 32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill -; RV64I-NEXT: .cfi_offset ra, -8 -; RV64I-NEXT: .cfi_offset s0, -16 +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: .cfi_offset s1, -24 +; RV64I-NEXT: .cfi_offset s0, -16 +; RV64I-NEXT: .cfi_offset ra, -8 ; RV64I-NEXT: mv s0, a1 ; RV64I-NEXT: addiw s1, a0, 1 ; RV64I-NEXT: mv a0, s1 @@ -2336,9 +2336,9 @@ ; RV64I-NEXT: call __gnu_f2h_ieee@plt ; RV64I-NEXT: sh a0, 0(s0) ; RV64I-NEXT: mv a0, s1 -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret %3 = add i32 %0, 1 @@ -2381,12 +2381,12 @@ ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 ; RV32I-NEXT: .cfi_def_cfa_offset 16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill -; RV32I-NEXT: .cfi_offset ra, -4 -; RV32I-NEXT: .cfi_offset s0, -8 +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: .cfi_offset s1, -12 +; RV32I-NEXT: .cfi_offset s0, -8 +; RV32I-NEXT: .cfi_offset ra, -4 ; RV32I-NEXT: mv s0, a1 ; RV32I-NEXT: addi s1, a0, 1 ; RV32I-NEXT: mv a0, s1 @@ -2394,9 +2394,9 @@ ; RV32I-NEXT: call __gnu_f2h_ieee@plt ; RV32I-NEXT: sh a0, 0(s0) ; RV32I-NEXT: mv a0, s1 -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; @@ -2404,12 +2404,12 @@ ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 ; RV64I-NEXT: .cfi_def_cfa_offset 32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill -; RV64I-NEXT: .cfi_offset ra, -8 -; RV64I-NEXT: .cfi_offset s0, -16 +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: .cfi_offset s1, -24 +; RV64I-NEXT: .cfi_offset s0, -16 +; RV64I-NEXT: .cfi_offset ra, -8 ; RV64I-NEXT: mv s0, a1 ; RV64I-NEXT: addiw s1, a0, 1 ; RV64I-NEXT: mv a0, s1 @@ -2417,9 +2417,9 @@ ; RV64I-NEXT: call __gnu_f2h_ieee@plt ; RV64I-NEXT: sh a0, 0(s0) ; RV64I-NEXT: mv a0, s1 -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret %3 = add i32 %0, 1 diff --git a/llvm/test/CodeGen/RISCV/half-intrinsics.ll b/llvm/test/CodeGen/RISCV/half-intrinsics.ll --- a/llvm/test/CodeGen/RISCV/half-intrinsics.ll +++ b/llvm/test/CodeGen/RISCV/half-intrinsics.ll @@ -98,11 +98,11 @@ ; RV32I-LABEL: fma_f16: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a2 ; RV32I-NEXT: mv s1, a1 ; RV32I-NEXT: lui a1, 16 @@ -120,22 +120,22 @@ ; RV32I-NEXT: mv a1, s1 ; RV32I-NEXT: call fmaf@plt ; RV32I-NEXT: call __gnu_f2h_ieee@plt -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fma_f16: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s2, a2 ; RV64I-NEXT: mv s1, a1 ; RV64I-NEXT: lui a1, 16 @@ -153,11 +153,11 @@ ; RV64I-NEXT: mv a1, s1 ; RV64I-NEXT: call fmaf@plt ; RV64I-NEXT: call __gnu_f2h_ieee@plt -; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret %1 = call half @llvm.fma.f16(half %a, half %b, half %c) @@ -190,11 +190,11 @@ ; RV32I-LABEL: fmuladd_f16: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a2 ; RV32I-NEXT: mv s3, a1 ; RV32I-NEXT: lui a1, 16 @@ -217,22 +217,22 @@ ; RV32I-NEXT: mv a1, s2 ; RV32I-NEXT: call __addsf3@plt ; RV32I-NEXT: call __gnu_f2h_ieee@plt -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; ; RV64I-LABEL: fmuladd_f16: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s2, a2 ; RV64I-NEXT: mv s3, a1 ; RV64I-NEXT: lui a1, 16 @@ -255,11 +255,11 @@ ; RV64I-NEXT: mv a1, s2 ; RV64I-NEXT: call __addsf3@plt ; RV64I-NEXT: call __gnu_f2h_ieee@plt -; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret %1 = call half @llvm.fmuladd.f16(half %a, half %b, half %c) @@ -332,10 +332,10 @@ ; RV32I-LABEL: minnum_f16: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 0(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a1 ; RV32I-NEXT: lui a1, 16 ; RV32I-NEXT: addi s0, a1, -1 @@ -348,20 +348,20 @@ ; RV32I-NEXT: mv a0, s1 ; RV32I-NEXT: call fminf@plt ; RV32I-NEXT: call __gnu_f2h_ieee@plt -; RV32I-NEXT: lw s2, 0(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 0(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; ; RV64I-LABEL: minnum_f16: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s2, a1 ; RV64I-NEXT: lui a1, 16 ; RV64I-NEXT: addiw s0, a1, -1 @@ -374,10 +374,10 @@ ; RV64I-NEXT: mv a0, s1 ; RV64I-NEXT: call fminf@plt ; RV64I-NEXT: call __gnu_f2h_ieee@plt -; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret %1 = call half @llvm.minnum.f16(half %a, half %b) @@ -410,10 +410,10 @@ ; RV32I-LABEL: maxnum_f16: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 0(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a1 ; RV32I-NEXT: lui a1, 16 ; RV32I-NEXT: addi s0, a1, -1 @@ -426,20 +426,20 @@ ; RV32I-NEXT: mv a0, s1 ; RV32I-NEXT: call fmaxf@plt ; RV32I-NEXT: call __gnu_f2h_ieee@plt -; RV32I-NEXT: lw s2, 0(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 0(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; ; RV64I-LABEL: maxnum_f16: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s2, a1 ; RV64I-NEXT: lui a1, 16 ; RV64I-NEXT: addiw s0, a1, -1 @@ -452,10 +452,10 @@ ; RV64I-NEXT: mv a0, s1 ; RV64I-NEXT: call fmaxf@plt ; RV64I-NEXT: call __gnu_f2h_ieee@plt -; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret %1 = call half @llvm.maxnum.f16(half %a, half %b) diff --git a/llvm/test/CodeGen/RISCV/half-mem.ll b/llvm/test/CodeGen/RISCV/half-mem.ll --- a/llvm/test/CodeGen/RISCV/half-mem.ll +++ b/llvm/test/CodeGen/RISCV/half-mem.ll @@ -117,30 +117,30 @@ ; RV32IZFH-LABEL: flh_stack: ; RV32IZFH: # %bb.0: ; RV32IZFH-NEXT: addi sp, sp, -16 -; RV32IZFH-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32IZFH-NEXT: fsw fs0, 8(sp) # 4-byte Folded Spill +; RV32IZFH-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32IZFH-NEXT: fmv.h fs0, fa0 ; RV32IZFH-NEXT: addi a0, sp, 4 ; RV32IZFH-NEXT: call notdead@plt ; RV32IZFH-NEXT: flh ft0, 4(sp) ; RV32IZFH-NEXT: fadd.h fa0, ft0, fs0 -; RV32IZFH-NEXT: flw fs0, 8(sp) # 4-byte Folded Reload ; RV32IZFH-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32IZFH-NEXT: flw fs0, 8(sp) # 4-byte Folded Reload ; RV32IZFH-NEXT: addi sp, sp, 16 ; RV32IZFH-NEXT: ret ; ; RV64IZFH-LABEL: flh_stack: ; RV64IZFH: # %bb.0: ; RV64IZFH-NEXT: addi sp, sp, -16 -; RV64IZFH-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64IZFH-NEXT: fsw fs0, 4(sp) # 4-byte Folded Spill +; RV64IZFH-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64IZFH-NEXT: fmv.h fs0, fa0 ; RV64IZFH-NEXT: mv a0, sp ; RV64IZFH-NEXT: call notdead@plt ; RV64IZFH-NEXT: flh ft0, 0(sp) ; RV64IZFH-NEXT: fadd.h fa0, ft0, fs0 -; RV64IZFH-NEXT: flw fs0, 4(sp) # 4-byte Folded Reload ; RV64IZFH-NEXT: ld ra, 8(sp) # 8-byte Folded Reload +; RV64IZFH-NEXT: flw fs0, 4(sp) # 4-byte Folded Reload ; RV64IZFH-NEXT: addi sp, sp, 16 ; RV64IZFH-NEXT: ret %1 = alloca half, align 4 diff --git a/llvm/test/CodeGen/RISCV/interrupt-attr-callee.ll b/llvm/test/CodeGen/RISCV/interrupt-attr-callee.ll --- a/llvm/test/CodeGen/RISCV/interrupt-attr-callee.ll +++ b/llvm/test/CodeGen/RISCV/interrupt-attr-callee.ll @@ -14,48 +14,48 @@ ; CHECK-RV32-LABEL: handler: ; CHECK-RV32: # %bb.0: # %entry ; CHECK-RV32-NEXT: addi sp, sp, -16 -; CHECK-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; CHECK-RV32-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; CHECK-RV32-NEXT: lui a0, 2 ; CHECK-RV32-NEXT: addi a0, a0, 4 ; CHECK-RV32-NEXT: call read@plt ; CHECK-RV32-NEXT: mv s0, a0 ; CHECK-RV32-NEXT: call callee@plt ; CHECK-RV32-NEXT: mv a0, s0 -; CHECK-RV32-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; CHECK-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; CHECK-RV32-NEXT: addi sp, sp, 16 ; CHECK-RV32-NEXT: tail write@plt ; ; CHECK-RV32-F-LABEL: handler: ; CHECK-RV32-F: # %bb.0: # %entry ; CHECK-RV32-F-NEXT: addi sp, sp, -16 -; CHECK-RV32-F-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; CHECK-RV32-F-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; CHECK-RV32-F-NEXT: lui a0, 2 ; CHECK-RV32-F-NEXT: addi a0, a0, 4 ; CHECK-RV32-F-NEXT: call read@plt ; CHECK-RV32-F-NEXT: mv s0, a0 ; CHECK-RV32-F-NEXT: call callee@plt ; CHECK-RV32-F-NEXT: mv a0, s0 -; CHECK-RV32-F-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; CHECK-RV32-F-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; CHECK-RV32-F-NEXT: addi sp, sp, 16 ; CHECK-RV32-F-NEXT: tail write@plt ; ; CHECK-RV32-FD-LABEL: handler: ; CHECK-RV32-FD: # %bb.0: # %entry ; CHECK-RV32-FD-NEXT: addi sp, sp, -16 -; CHECK-RV32-FD-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; CHECK-RV32-FD-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; CHECK-RV32-FD-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; CHECK-RV32-FD-NEXT: lui a0, 2 ; CHECK-RV32-FD-NEXT: addi a0, a0, 4 ; CHECK-RV32-FD-NEXT: call read@plt ; CHECK-RV32-FD-NEXT: mv s0, a0 ; CHECK-RV32-FD-NEXT: call callee@plt ; CHECK-RV32-FD-NEXT: mv a0, s0 -; CHECK-RV32-FD-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; CHECK-RV32-FD-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; CHECK-RV32-FD-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; CHECK-RV32-FD-NEXT: addi sp, sp, 16 ; CHECK-RV32-FD-NEXT: tail write@plt entry: diff --git a/llvm/test/CodeGen/RISCV/interrupt-attr-nocall.ll b/llvm/test/CodeGen/RISCV/interrupt-attr-nocall.ll --- a/llvm/test/CodeGen/RISCV/interrupt-attr-nocall.ll +++ b/llvm/test/CodeGen/RISCV/interrupt-attr-nocall.ll @@ -26,8 +26,8 @@ ; CHECK-RV32-LABEL: foo_i32: ; CHECK-RV32: # %bb.0: ; CHECK-RV32-NEXT: addi sp, sp, -16 -; CHECK-RV32-NEXT: sw a0, 12(sp) # 4-byte Folded Spill ; CHECK-RV32-NEXT: sw a1, 8(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a0, 12(sp) # 4-byte Folded Spill ; CHECK-RV32-NEXT: lui a0, %hi(a) ; CHECK-RV32-NEXT: lw a0, %lo(a)(a0) ; CHECK-RV32-NEXT: lui a1, %hi(b) @@ -35,16 +35,16 @@ ; CHECK-RV32-NEXT: add a0, a1, a0 ; CHECK-RV32-NEXT: lui a1, %hi(c) ; CHECK-RV32-NEXT: sw a0, %lo(c)(a1) -; CHECK-RV32-NEXT: lw a1, 8(sp) # 4-byte Folded Reload ; CHECK-RV32-NEXT: lw a0, 12(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a1, 8(sp) # 4-byte Folded Reload ; CHECK-RV32-NEXT: addi sp, sp, 16 ; CHECK-RV32-NEXT: mret ; ; CHECK-RV32IF-LABEL: foo_i32: ; CHECK-RV32IF: # %bb.0: ; CHECK-RV32IF-NEXT: addi sp, sp, -16 -; CHECK-RV32IF-NEXT: sw a0, 12(sp) # 4-byte Folded Spill ; CHECK-RV32IF-NEXT: sw a1, 8(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: sw a0, 12(sp) # 4-byte Folded Spill ; CHECK-RV32IF-NEXT: lui a0, %hi(a) ; CHECK-RV32IF-NEXT: lw a0, %lo(a)(a0) ; CHECK-RV32IF-NEXT: lui a1, %hi(b) @@ -52,16 +52,16 @@ ; CHECK-RV32IF-NEXT: add a0, a1, a0 ; CHECK-RV32IF-NEXT: lui a1, %hi(c) ; CHECK-RV32IF-NEXT: sw a0, %lo(c)(a1) -; CHECK-RV32IF-NEXT: lw a1, 8(sp) # 4-byte Folded Reload ; CHECK-RV32IF-NEXT: lw a0, 12(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: lw a1, 8(sp) # 4-byte Folded Reload ; CHECK-RV32IF-NEXT: addi sp, sp, 16 ; CHECK-RV32IF-NEXT: mret ; ; CHECK-RV32IFD-LABEL: foo_i32: ; CHECK-RV32IFD: # %bb.0: ; CHECK-RV32IFD-NEXT: addi sp, sp, -16 -; CHECK-RV32IFD-NEXT: sw a0, 12(sp) # 4-byte Folded Spill ; CHECK-RV32IFD-NEXT: sw a1, 8(sp) # 4-byte Folded Spill +; CHECK-RV32IFD-NEXT: sw a0, 12(sp) # 4-byte Folded Spill ; CHECK-RV32IFD-NEXT: lui a0, %hi(a) ; CHECK-RV32IFD-NEXT: lw a0, %lo(a)(a0) ; CHECK-RV32IFD-NEXT: lui a1, %hi(b) @@ -69,8 +69,8 @@ ; CHECK-RV32IFD-NEXT: add a0, a1, a0 ; CHECK-RV32IFD-NEXT: lui a1, %hi(c) ; CHECK-RV32IFD-NEXT: sw a0, %lo(c)(a1) -; CHECK-RV32IFD-NEXT: lw a1, 8(sp) # 4-byte Folded Reload ; CHECK-RV32IFD-NEXT: lw a0, 12(sp) # 4-byte Folded Reload +; CHECK-RV32IFD-NEXT: lw a1, 8(sp) # 4-byte Folded Reload ; CHECK-RV32IFD-NEXT: addi sp, sp, 16 ; CHECK-RV32IFD-NEXT: mret %1 = load i32, i32* @a @@ -88,10 +88,10 @@ ; CHECK-RV32-LABEL: foo_fp_i32: ; CHECK-RV32: # %bb.0: ; CHECK-RV32-NEXT: addi sp, sp, -16 -; CHECK-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw s0, 8(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a0, 4(sp) # 4-byte Folded Spill ; CHECK-RV32-NEXT: sw a1, 0(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a0, 4(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; CHECK-RV32-NEXT: addi s0, sp, 16 ; CHECK-RV32-NEXT: lui a0, %hi(a) ; CHECK-RV32-NEXT: lw a0, %lo(a)(a0) @@ -100,20 +100,20 @@ ; CHECK-RV32-NEXT: add a0, a1, a0 ; CHECK-RV32-NEXT: lui a1, %hi(c) ; CHECK-RV32-NEXT: sw a0, %lo(c)(a1) -; CHECK-RV32-NEXT: lw a1, 0(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a0, 4(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; CHECK-RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a0, 4(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a1, 0(sp) # 4-byte Folded Reload ; CHECK-RV32-NEXT: addi sp, sp, 16 ; CHECK-RV32-NEXT: mret ; ; CHECK-RV32IF-LABEL: foo_fp_i32: ; CHECK-RV32IF: # %bb.0: ; CHECK-RV32IF-NEXT: addi sp, sp, -16 -; CHECK-RV32IF-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: sw s0, 8(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: sw a0, 4(sp) # 4-byte Folded Spill ; CHECK-RV32IF-NEXT: sw a1, 0(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: sw a0, 4(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; CHECK-RV32IF-NEXT: addi s0, sp, 16 ; CHECK-RV32IF-NEXT: lui a0, %hi(a) ; CHECK-RV32IF-NEXT: lw a0, %lo(a)(a0) @@ -122,20 +122,20 @@ ; CHECK-RV32IF-NEXT: add a0, a1, a0 ; CHECK-RV32IF-NEXT: lui a1, %hi(c) ; CHECK-RV32IF-NEXT: sw a0, %lo(c)(a1) -; CHECK-RV32IF-NEXT: lw a1, 0(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: lw a0, 4(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; CHECK-RV32IF-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: lw a0, 4(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: lw a1, 0(sp) # 4-byte Folded Reload ; CHECK-RV32IF-NEXT: addi sp, sp, 16 ; CHECK-RV32IF-NEXT: mret ; ; CHECK-RV32IFD-LABEL: foo_fp_i32: ; CHECK-RV32IFD: # %bb.0: ; CHECK-RV32IFD-NEXT: addi sp, sp, -16 -; CHECK-RV32IFD-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; CHECK-RV32IFD-NEXT: sw s0, 8(sp) # 4-byte Folded Spill -; CHECK-RV32IFD-NEXT: sw a0, 4(sp) # 4-byte Folded Spill ; CHECK-RV32IFD-NEXT: sw a1, 0(sp) # 4-byte Folded Spill +; CHECK-RV32IFD-NEXT: sw a0, 4(sp) # 4-byte Folded Spill +; CHECK-RV32IFD-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; CHECK-RV32IFD-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; CHECK-RV32IFD-NEXT: addi s0, sp, 16 ; CHECK-RV32IFD-NEXT: lui a0, %hi(a) ; CHECK-RV32IFD-NEXT: lw a0, %lo(a)(a0) @@ -144,10 +144,10 @@ ; CHECK-RV32IFD-NEXT: add a0, a1, a0 ; CHECK-RV32IFD-NEXT: lui a1, %hi(c) ; CHECK-RV32IFD-NEXT: sw a0, %lo(c)(a1) -; CHECK-RV32IFD-NEXT: lw a1, 0(sp) # 4-byte Folded Reload -; CHECK-RV32IFD-NEXT: lw a0, 4(sp) # 4-byte Folded Reload -; CHECK-RV32IFD-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; CHECK-RV32IFD-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; CHECK-RV32IFD-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; CHECK-RV32IFD-NEXT: lw a0, 4(sp) # 4-byte Folded Reload +; CHECK-RV32IFD-NEXT: lw a1, 0(sp) # 4-byte Folded Reload ; CHECK-RV32IFD-NEXT: addi sp, sp, 16 ; CHECK-RV32IFD-NEXT: mret %1 = load i32, i32* @a @@ -165,22 +165,22 @@ ; CHECK-RV32-LABEL: foo_float: ; CHECK-RV32: # %bb.0: ; CHECK-RV32-NEXT: addi sp, sp, -64 -; CHECK-RV32-NEXT: sw ra, 60(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw t0, 56(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw t1, 52(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw t2, 48(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a0, 44(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a1, 40(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a2, 36(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a3, 32(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a4, 28(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a5, 24(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a6, 20(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a7, 16(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw t3, 12(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw t4, 8(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw t5, 4(sp) # 4-byte Folded Spill ; CHECK-RV32-NEXT: sw t6, 0(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw t5, 4(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw t4, 8(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw t3, 12(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a7, 16(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a6, 20(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a5, 24(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a4, 28(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a3, 32(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a2, 36(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a1, 40(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a0, 44(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw t2, 48(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw t1, 52(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw t0, 56(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw ra, 60(sp) # 4-byte Folded Spill ; CHECK-RV32-NEXT: lui a0, %hi(e) ; CHECK-RV32-NEXT: lw a0, %lo(e)(a0) ; CHECK-RV32-NEXT: lui a1, %hi(f) @@ -188,31 +188,31 @@ ; CHECK-RV32-NEXT: call __addsf3@plt ; CHECK-RV32-NEXT: lui a1, %hi(d) ; CHECK-RV32-NEXT: sw a0, %lo(d)(a1) -; CHECK-RV32-NEXT: lw t6, 0(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw t5, 4(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw t4, 8(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw t3, 12(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a7, 16(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a6, 20(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a5, 24(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a4, 28(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a3, 32(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a2, 36(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a1, 40(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a0, 44(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw t2, 48(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw t1, 52(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw t0, 56(sp) # 4-byte Folded Reload ; CHECK-RV32-NEXT: lw ra, 60(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw t0, 56(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw t1, 52(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw t2, 48(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a0, 44(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a1, 40(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a2, 36(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a3, 32(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a4, 28(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a5, 24(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a6, 20(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a7, 16(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw t3, 12(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw t4, 8(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw t5, 4(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw t6, 0(sp) # 4-byte Folded Reload ; CHECK-RV32-NEXT: addi sp, sp, 64 ; CHECK-RV32-NEXT: mret ; ; CHECK-RV32IF-LABEL: foo_float: ; CHECK-RV32IF: # %bb.0: ; CHECK-RV32IF-NEXT: addi sp, sp, -16 -; CHECK-RV32IF-NEXT: sw a0, 12(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw ft0, 8(sp) # 4-byte Folded Spill ; CHECK-RV32IF-NEXT: fsw ft1, 4(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw ft0, 8(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: sw a0, 12(sp) # 4-byte Folded Spill ; CHECK-RV32IF-NEXT: lui a0, %hi(e) ; CHECK-RV32IF-NEXT: flw ft0, %lo(e)(a0) ; CHECK-RV32IF-NEXT: lui a0, %hi(f) @@ -220,18 +220,18 @@ ; CHECK-RV32IF-NEXT: fadd.s ft0, ft0, ft1 ; CHECK-RV32IF-NEXT: lui a0, %hi(d) ; CHECK-RV32IF-NEXT: fsw ft0, %lo(d)(a0) -; CHECK-RV32IF-NEXT: flw ft1, 4(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw ft0, 8(sp) # 4-byte Folded Reload ; CHECK-RV32IF-NEXT: lw a0, 12(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw ft0, 8(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw ft1, 4(sp) # 4-byte Folded Reload ; CHECK-RV32IF-NEXT: addi sp, sp, 16 ; CHECK-RV32IF-NEXT: mret ; ; CHECK-RV32IFD-LABEL: foo_float: ; CHECK-RV32IFD: # %bb.0: ; CHECK-RV32IFD-NEXT: addi sp, sp, -32 -; CHECK-RV32IFD-NEXT: sw a0, 28(sp) # 4-byte Folded Spill -; CHECK-RV32IFD-NEXT: fsd ft0, 16(sp) # 8-byte Folded Spill ; CHECK-RV32IFD-NEXT: fsd ft1, 8(sp) # 8-byte Folded Spill +; CHECK-RV32IFD-NEXT: fsd ft0, 16(sp) # 8-byte Folded Spill +; CHECK-RV32IFD-NEXT: sw a0, 28(sp) # 4-byte Folded Spill ; CHECK-RV32IFD-NEXT: lui a0, %hi(e) ; CHECK-RV32IFD-NEXT: flw ft0, %lo(e)(a0) ; CHECK-RV32IFD-NEXT: lui a0, %hi(f) @@ -239,9 +239,9 @@ ; CHECK-RV32IFD-NEXT: fadd.s ft0, ft0, ft1 ; CHECK-RV32IFD-NEXT: lui a0, %hi(d) ; CHECK-RV32IFD-NEXT: fsw ft0, %lo(d)(a0) -; CHECK-RV32IFD-NEXT: fld ft1, 8(sp) # 8-byte Folded Reload -; CHECK-RV32IFD-NEXT: fld ft0, 16(sp) # 8-byte Folded Reload ; CHECK-RV32IFD-NEXT: lw a0, 28(sp) # 4-byte Folded Reload +; CHECK-RV32IFD-NEXT: fld ft0, 16(sp) # 8-byte Folded Reload +; CHECK-RV32IFD-NEXT: fld ft1, 8(sp) # 8-byte Folded Reload ; CHECK-RV32IFD-NEXT: addi sp, sp, 32 ; CHECK-RV32IFD-NEXT: mret %1 = load float, float* @e @@ -258,23 +258,23 @@ ; CHECK-RV32-LABEL: foo_fp_float: ; CHECK-RV32: # %bb.0: ; CHECK-RV32-NEXT: addi sp, sp, -80 -; CHECK-RV32-NEXT: sw ra, 76(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw t0, 72(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw t1, 68(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw t2, 64(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw s0, 60(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a0, 56(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a1, 52(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a2, 48(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a3, 44(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a4, 40(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a5, 36(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a6, 32(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a7, 28(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw t3, 24(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw t4, 20(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw t5, 16(sp) # 4-byte Folded Spill ; CHECK-RV32-NEXT: sw t6, 12(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw t5, 16(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw t4, 20(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw t3, 24(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a7, 28(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a6, 32(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a5, 36(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a4, 40(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a3, 44(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a2, 48(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a1, 52(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a0, 56(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw s0, 60(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw t2, 64(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw t1, 68(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw t0, 72(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw ra, 76(sp) # 4-byte Folded Spill ; CHECK-RV32-NEXT: addi s0, sp, 80 ; CHECK-RV32-NEXT: lui a0, %hi(e) ; CHECK-RV32-NEXT: lw a0, %lo(e)(a0) @@ -283,34 +283,34 @@ ; CHECK-RV32-NEXT: call __addsf3@plt ; CHECK-RV32-NEXT: lui a1, %hi(d) ; CHECK-RV32-NEXT: sw a0, %lo(d)(a1) -; CHECK-RV32-NEXT: lw t6, 12(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw t5, 16(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw t4, 20(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw t3, 24(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a7, 28(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a6, 32(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a5, 36(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a4, 40(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a3, 44(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a2, 48(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a1, 52(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a0, 56(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw s0, 60(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw t2, 64(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw t1, 68(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw t0, 72(sp) # 4-byte Folded Reload ; CHECK-RV32-NEXT: lw ra, 76(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw t0, 72(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw t1, 68(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw t2, 64(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw s0, 60(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a0, 56(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a1, 52(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a2, 48(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a3, 44(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a4, 40(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a5, 36(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a6, 32(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a7, 28(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw t3, 24(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw t4, 20(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw t5, 16(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw t6, 12(sp) # 4-byte Folded Reload ; CHECK-RV32-NEXT: addi sp, sp, 80 ; CHECK-RV32-NEXT: mret ; ; CHECK-RV32IF-LABEL: foo_fp_float: ; CHECK-RV32IF: # %bb.0: ; CHECK-RV32IF-NEXT: addi sp, sp, -32 -; CHECK-RV32IF-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: sw a0, 20(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw ft0, 16(sp) # 4-byte Folded Spill ; CHECK-RV32IF-NEXT: fsw ft1, 12(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw ft0, 16(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: sw a0, 20(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; CHECK-RV32IF-NEXT: addi s0, sp, 32 ; CHECK-RV32IF-NEXT: lui a0, %hi(e) ; CHECK-RV32IF-NEXT: flw ft0, %lo(e)(a0) @@ -319,22 +319,22 @@ ; CHECK-RV32IF-NEXT: fadd.s ft0, ft0, ft1 ; CHECK-RV32IF-NEXT: lui a0, %hi(d) ; CHECK-RV32IF-NEXT: fsw ft0, %lo(d)(a0) -; CHECK-RV32IF-NEXT: flw ft1, 12(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw ft0, 16(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: lw a0, 20(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; CHECK-RV32IF-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: lw a0, 20(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw ft0, 16(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw ft1, 12(sp) # 4-byte Folded Reload ; CHECK-RV32IF-NEXT: addi sp, sp, 32 ; CHECK-RV32IF-NEXT: mret ; ; CHECK-RV32IFD-LABEL: foo_fp_float: ; CHECK-RV32IFD: # %bb.0: ; CHECK-RV32IFD-NEXT: addi sp, sp, -32 -; CHECK-RV32IFD-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; CHECK-RV32IFD-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; CHECK-RV32IFD-NEXT: sw a0, 20(sp) # 4-byte Folded Spill -; CHECK-RV32IFD-NEXT: fsd ft0, 8(sp) # 8-byte Folded Spill ; CHECK-RV32IFD-NEXT: fsd ft1, 0(sp) # 8-byte Folded Spill +; CHECK-RV32IFD-NEXT: fsd ft0, 8(sp) # 8-byte Folded Spill +; CHECK-RV32IFD-NEXT: sw a0, 20(sp) # 4-byte Folded Spill +; CHECK-RV32IFD-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; CHECK-RV32IFD-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; CHECK-RV32IFD-NEXT: addi s0, sp, 32 ; CHECK-RV32IFD-NEXT: lui a0, %hi(e) ; CHECK-RV32IFD-NEXT: flw ft0, %lo(e)(a0) @@ -343,11 +343,11 @@ ; CHECK-RV32IFD-NEXT: fadd.s ft0, ft0, ft1 ; CHECK-RV32IFD-NEXT: lui a0, %hi(d) ; CHECK-RV32IFD-NEXT: fsw ft0, %lo(d)(a0) -; CHECK-RV32IFD-NEXT: fld ft1, 0(sp) # 8-byte Folded Reload -; CHECK-RV32IFD-NEXT: fld ft0, 8(sp) # 8-byte Folded Reload -; CHECK-RV32IFD-NEXT: lw a0, 20(sp) # 4-byte Folded Reload -; CHECK-RV32IFD-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; CHECK-RV32IFD-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; CHECK-RV32IFD-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; CHECK-RV32IFD-NEXT: lw a0, 20(sp) # 4-byte Folded Reload +; CHECK-RV32IFD-NEXT: fld ft0, 8(sp) # 8-byte Folded Reload +; CHECK-RV32IFD-NEXT: fld ft1, 0(sp) # 8-byte Folded Reload ; CHECK-RV32IFD-NEXT: addi sp, sp, 32 ; CHECK-RV32IFD-NEXT: mret %1 = load float, float* @e @@ -365,22 +365,22 @@ ; CHECK-RV32-LABEL: foo_double: ; CHECK-RV32: # %bb.0: ; CHECK-RV32-NEXT: addi sp, sp, -64 -; CHECK-RV32-NEXT: sw ra, 60(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw t0, 56(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw t1, 52(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw t2, 48(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a0, 44(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a1, 40(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a2, 36(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a3, 32(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a4, 28(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a5, 24(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a6, 20(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a7, 16(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw t3, 12(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw t4, 8(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw t5, 4(sp) # 4-byte Folded Spill ; CHECK-RV32-NEXT: sw t6, 0(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw t5, 4(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw t4, 8(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw t3, 12(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a7, 16(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a6, 20(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a5, 24(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a4, 28(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a3, 32(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a2, 36(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a1, 40(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a0, 44(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw t2, 48(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw t1, 52(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw t0, 56(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw ra, 60(sp) # 4-byte Folded Spill ; CHECK-RV32-NEXT: lui a1, %hi(h) ; CHECK-RV32-NEXT: lw a0, %lo(h)(a1) ; CHECK-RV32-NEXT: lw a1, %lo(h+4)(a1) @@ -391,76 +391,76 @@ ; CHECK-RV32-NEXT: lui a2, %hi(g) ; CHECK-RV32-NEXT: sw a1, %lo(g+4)(a2) ; CHECK-RV32-NEXT: sw a0, %lo(g)(a2) -; CHECK-RV32-NEXT: lw t6, 0(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw t5, 4(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw t4, 8(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw t3, 12(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a7, 16(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a6, 20(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a5, 24(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a4, 28(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a3, 32(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a2, 36(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a1, 40(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a0, 44(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw t2, 48(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw t1, 52(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw t0, 56(sp) # 4-byte Folded Reload ; CHECK-RV32-NEXT: lw ra, 60(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw t0, 56(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw t1, 52(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw t2, 48(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a0, 44(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a1, 40(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a2, 36(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a3, 32(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a4, 28(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a5, 24(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a6, 20(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a7, 16(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw t3, 12(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw t4, 8(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw t5, 4(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw t6, 0(sp) # 4-byte Folded Reload ; CHECK-RV32-NEXT: addi sp, sp, 64 ; CHECK-RV32-NEXT: mret ; ; CHECK-RV32IF-LABEL: foo_double: ; CHECK-RV32IF: # %bb.0: ; CHECK-RV32IF-NEXT: addi sp, sp, -192 -; CHECK-RV32IF-NEXT: sw ra, 188(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: sw t0, 184(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: sw t1, 180(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: sw t2, 176(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: sw a0, 172(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: sw a1, 168(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: sw a2, 164(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: sw a3, 160(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: sw a4, 156(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: sw a5, 152(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: sw a6, 148(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: sw a7, 144(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: sw t3, 140(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: sw t4, 136(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: sw t5, 132(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: sw t6, 128(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw ft0, 124(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw ft1, 120(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw ft2, 116(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw ft3, 112(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw ft4, 108(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw ft5, 104(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw ft6, 100(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw ft7, 96(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw fa0, 92(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw fa1, 88(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw fa2, 84(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw fa3, 80(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw fa4, 76(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw fa5, 72(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw fa6, 68(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw fa7, 64(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw ft8, 60(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw ft9, 56(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw ft10, 52(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw ft11, 48(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw fs0, 44(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw fs1, 40(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw fs2, 36(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw fs3, 32(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw fs4, 28(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw fs5, 24(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw fs6, 20(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw fs7, 16(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw fs8, 12(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw fs9, 8(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw fs10, 4(sp) # 4-byte Folded Spill ; CHECK-RV32IF-NEXT: fsw fs11, 0(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw fs10, 4(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw fs9, 8(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw fs8, 12(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw fs7, 16(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw fs6, 20(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw fs5, 24(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw fs4, 28(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw fs3, 32(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw fs2, 36(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw fs1, 40(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw fs0, 44(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw ft11, 48(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw ft10, 52(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw ft9, 56(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw ft8, 60(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw fa7, 64(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw fa6, 68(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw fa5, 72(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw fa4, 76(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw fa3, 80(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw fa2, 84(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw fa1, 88(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw fa0, 92(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw ft7, 96(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw ft6, 100(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw ft5, 104(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw ft4, 108(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw ft3, 112(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw ft2, 116(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw ft1, 120(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw ft0, 124(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: sw t6, 128(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: sw t5, 132(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: sw t4, 136(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: sw t3, 140(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: sw a7, 144(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: sw a6, 148(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: sw a5, 152(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: sw a4, 156(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: sw a3, 160(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: sw a2, 164(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: sw a1, 168(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: sw a0, 172(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: sw t2, 176(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: sw t1, 180(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: sw t0, 184(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: sw ra, 188(sp) # 4-byte Folded Spill ; CHECK-RV32IF-NEXT: lui a1, %hi(h) ; CHECK-RV32IF-NEXT: lw a0, %lo(h)(a1) ; CHECK-RV32IF-NEXT: lw a1, %lo(h+4)(a1) @@ -471,63 +471,63 @@ ; CHECK-RV32IF-NEXT: lui a2, %hi(g) ; CHECK-RV32IF-NEXT: sw a1, %lo(g+4)(a2) ; CHECK-RV32IF-NEXT: sw a0, %lo(g)(a2) -; CHECK-RV32IF-NEXT: flw fs11, 0(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw fs10, 4(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw fs9, 8(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw fs8, 12(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw fs7, 16(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw fs6, 20(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw fs5, 24(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw fs4, 28(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw fs3, 32(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw fs2, 36(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw fs1, 40(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw fs0, 44(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw ft11, 48(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw ft10, 52(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw ft9, 56(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw ft8, 60(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw fa7, 64(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw fa6, 68(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw fa5, 72(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw fa4, 76(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw fa3, 80(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw fa2, 84(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw fa1, 88(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw fa0, 92(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw ft7, 96(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw ft6, 100(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw ft5, 104(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw ft4, 108(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw ft3, 112(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw ft2, 116(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw ft1, 120(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw ft0, 124(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: lw t6, 128(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: lw t5, 132(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: lw t4, 136(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: lw t3, 140(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: lw a7, 144(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: lw a6, 148(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: lw a5, 152(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: lw a4, 156(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: lw a3, 160(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: lw a2, 164(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: lw a1, 168(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: lw a0, 172(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: lw t2, 176(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: lw t1, 180(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: lw t0, 184(sp) # 4-byte Folded Reload ; CHECK-RV32IF-NEXT: lw ra, 188(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: lw t0, 184(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: lw t1, 180(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: lw t2, 176(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: lw a0, 172(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: lw a1, 168(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: lw a2, 164(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: lw a3, 160(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: lw a4, 156(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: lw a5, 152(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: lw a6, 148(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: lw a7, 144(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: lw t3, 140(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: lw t4, 136(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: lw t5, 132(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: lw t6, 128(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw ft0, 124(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw ft1, 120(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw ft2, 116(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw ft3, 112(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw ft4, 108(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw ft5, 104(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw ft6, 100(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw ft7, 96(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw fa0, 92(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw fa1, 88(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw fa2, 84(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw fa3, 80(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw fa4, 76(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw fa5, 72(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw fa6, 68(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw fa7, 64(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw ft8, 60(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw ft9, 56(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw ft10, 52(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw ft11, 48(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw fs0, 44(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw fs1, 40(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw fs2, 36(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw fs3, 32(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw fs4, 28(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw fs5, 24(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw fs6, 20(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw fs7, 16(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw fs8, 12(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw fs9, 8(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw fs10, 4(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw fs11, 0(sp) # 4-byte Folded Reload ; CHECK-RV32IF-NEXT: addi sp, sp, 192 ; CHECK-RV32IF-NEXT: mret ; ; CHECK-RV32IFD-LABEL: foo_double: ; CHECK-RV32IFD: # %bb.0: ; CHECK-RV32IFD-NEXT: addi sp, sp, -32 -; CHECK-RV32IFD-NEXT: sw a0, 28(sp) # 4-byte Folded Spill -; CHECK-RV32IFD-NEXT: fsd ft0, 16(sp) # 8-byte Folded Spill ; CHECK-RV32IFD-NEXT: fsd ft1, 8(sp) # 8-byte Folded Spill +; CHECK-RV32IFD-NEXT: fsd ft0, 16(sp) # 8-byte Folded Spill +; CHECK-RV32IFD-NEXT: sw a0, 28(sp) # 4-byte Folded Spill ; CHECK-RV32IFD-NEXT: lui a0, %hi(h) ; CHECK-RV32IFD-NEXT: fld ft0, %lo(h)(a0) ; CHECK-RV32IFD-NEXT: lui a0, %hi(i) @@ -535,9 +535,9 @@ ; CHECK-RV32IFD-NEXT: fadd.d ft0, ft0, ft1 ; CHECK-RV32IFD-NEXT: lui a0, %hi(g) ; CHECK-RV32IFD-NEXT: fsd ft0, %lo(g)(a0) -; CHECK-RV32IFD-NEXT: fld ft1, 8(sp) # 8-byte Folded Reload -; CHECK-RV32IFD-NEXT: fld ft0, 16(sp) # 8-byte Folded Reload ; CHECK-RV32IFD-NEXT: lw a0, 28(sp) # 4-byte Folded Reload +; CHECK-RV32IFD-NEXT: fld ft0, 16(sp) # 8-byte Folded Reload +; CHECK-RV32IFD-NEXT: fld ft1, 8(sp) # 8-byte Folded Reload ; CHECK-RV32IFD-NEXT: addi sp, sp, 32 ; CHECK-RV32IFD-NEXT: mret %1 = load double, double* @h @@ -554,23 +554,23 @@ ; CHECK-RV32-LABEL: foo_fp_double: ; CHECK-RV32: # %bb.0: ; CHECK-RV32-NEXT: addi sp, sp, -80 -; CHECK-RV32-NEXT: sw ra, 76(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw t0, 72(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw t1, 68(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw t2, 64(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw s0, 60(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a0, 56(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a1, 52(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a2, 48(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a3, 44(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a4, 40(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a5, 36(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a6, 32(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a7, 28(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw t3, 24(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw t4, 20(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw t5, 16(sp) # 4-byte Folded Spill ; CHECK-RV32-NEXT: sw t6, 12(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw t5, 16(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw t4, 20(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw t3, 24(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a7, 28(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a6, 32(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a5, 36(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a4, 40(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a3, 44(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a2, 48(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a1, 52(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a0, 56(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw s0, 60(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw t2, 64(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw t1, 68(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw t0, 72(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw ra, 76(sp) # 4-byte Folded Spill ; CHECK-RV32-NEXT: addi s0, sp, 80 ; CHECK-RV32-NEXT: lui a1, %hi(h) ; CHECK-RV32-NEXT: lw a0, %lo(h)(a1) @@ -582,78 +582,78 @@ ; CHECK-RV32-NEXT: lui a2, %hi(g) ; CHECK-RV32-NEXT: sw a1, %lo(g+4)(a2) ; CHECK-RV32-NEXT: sw a0, %lo(g)(a2) -; CHECK-RV32-NEXT: lw t6, 12(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw t5, 16(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw t4, 20(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw t3, 24(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a7, 28(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a6, 32(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a5, 36(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a4, 40(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a3, 44(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a2, 48(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a1, 52(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a0, 56(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw s0, 60(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw t2, 64(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw t1, 68(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw t0, 72(sp) # 4-byte Folded Reload ; CHECK-RV32-NEXT: lw ra, 76(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw t0, 72(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw t1, 68(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw t2, 64(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw s0, 60(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a0, 56(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a1, 52(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a2, 48(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a3, 44(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a4, 40(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a5, 36(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a6, 32(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a7, 28(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw t3, 24(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw t4, 20(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw t5, 16(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw t6, 12(sp) # 4-byte Folded Reload ; CHECK-RV32-NEXT: addi sp, sp, 80 ; CHECK-RV32-NEXT: mret ; ; CHECK-RV32IF-LABEL: foo_fp_double: ; CHECK-RV32IF: # %bb.0: ; CHECK-RV32IF-NEXT: addi sp, sp, -208 -; CHECK-RV32IF-NEXT: sw ra, 204(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: sw t0, 200(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: sw t1, 196(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: sw t2, 192(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: sw s0, 188(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: sw a0, 184(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: sw a1, 180(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: sw a2, 176(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: sw a3, 172(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: sw a4, 168(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: sw a5, 164(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: sw a6, 160(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: sw a7, 156(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: sw t3, 152(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: sw t4, 148(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: sw t5, 144(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: sw t6, 140(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw ft0, 136(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw ft1, 132(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw ft2, 128(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw ft3, 124(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw ft4, 120(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw ft5, 116(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw ft6, 112(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw ft7, 108(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw fa0, 104(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw fa1, 100(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw fa2, 96(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw fa3, 92(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw fa4, 88(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw fa5, 84(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw fa6, 80(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw fa7, 76(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw ft8, 72(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw ft9, 68(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw ft10, 64(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw ft11, 60(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw fs0, 56(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw fs1, 52(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw fs2, 48(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw fs3, 44(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw fs4, 40(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw fs5, 36(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw fs6, 32(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw fs7, 28(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw fs8, 24(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw fs9, 20(sp) # 4-byte Folded Spill -; CHECK-RV32IF-NEXT: fsw fs10, 16(sp) # 4-byte Folded Spill ; CHECK-RV32IF-NEXT: fsw fs11, 12(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw fs10, 16(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw fs9, 20(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw fs8, 24(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw fs7, 28(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw fs6, 32(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw fs5, 36(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw fs4, 40(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw fs3, 44(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw fs2, 48(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw fs1, 52(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw fs0, 56(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw ft11, 60(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw ft10, 64(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw ft9, 68(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw ft8, 72(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw fa7, 76(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw fa6, 80(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw fa5, 84(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw fa4, 88(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw fa3, 92(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw fa2, 96(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw fa1, 100(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw fa0, 104(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw ft7, 108(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw ft6, 112(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw ft5, 116(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw ft4, 120(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw ft3, 124(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw ft2, 128(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw ft1, 132(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: fsw ft0, 136(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: sw t6, 140(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: sw t5, 144(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: sw t4, 148(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: sw t3, 152(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: sw a7, 156(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: sw a6, 160(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: sw a5, 164(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: sw a4, 168(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: sw a3, 172(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: sw a2, 176(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: sw a1, 180(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: sw a0, 184(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: sw s0, 188(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: sw t2, 192(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: sw t1, 196(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: sw t0, 200(sp) # 4-byte Folded Spill +; CHECK-RV32IF-NEXT: sw ra, 204(sp) # 4-byte Folded Spill ; CHECK-RV32IF-NEXT: addi s0, sp, 208 ; CHECK-RV32IF-NEXT: lui a1, %hi(h) ; CHECK-RV32IF-NEXT: lw a0, %lo(h)(a1) @@ -665,66 +665,66 @@ ; CHECK-RV32IF-NEXT: lui a2, %hi(g) ; CHECK-RV32IF-NEXT: sw a1, %lo(g+4)(a2) ; CHECK-RV32IF-NEXT: sw a0, %lo(g)(a2) -; CHECK-RV32IF-NEXT: flw fs11, 12(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw fs10, 16(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw fs9, 20(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw fs8, 24(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw fs7, 28(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw fs6, 32(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw fs5, 36(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw fs4, 40(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw fs3, 44(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw fs2, 48(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw fs1, 52(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw fs0, 56(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw ft11, 60(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw ft10, 64(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw ft9, 68(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw ft8, 72(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw fa7, 76(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw fa6, 80(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw fa5, 84(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw fa4, 88(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw fa3, 92(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw fa2, 96(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw fa1, 100(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw fa0, 104(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw ft7, 108(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw ft6, 112(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw ft5, 116(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw ft4, 120(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw ft3, 124(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw ft2, 128(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw ft1, 132(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: flw ft0, 136(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: lw t6, 140(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: lw t5, 144(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: lw t4, 148(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: lw t3, 152(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: lw a7, 156(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: lw a6, 160(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: lw a5, 164(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: lw a4, 168(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: lw a3, 172(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: lw a2, 176(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: lw a1, 180(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: lw a0, 184(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: lw s0, 188(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: lw t2, 192(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: lw t1, 196(sp) # 4-byte Folded Reload -; CHECK-RV32IF-NEXT: lw t0, 200(sp) # 4-byte Folded Reload ; CHECK-RV32IF-NEXT: lw ra, 204(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: lw t0, 200(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: lw t1, 196(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: lw t2, 192(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: lw s0, 188(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: lw a0, 184(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: lw a1, 180(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: lw a2, 176(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: lw a3, 172(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: lw a4, 168(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: lw a5, 164(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: lw a6, 160(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: lw a7, 156(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: lw t3, 152(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: lw t4, 148(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: lw t5, 144(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: lw t6, 140(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw ft0, 136(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw ft1, 132(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw ft2, 128(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw ft3, 124(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw ft4, 120(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw ft5, 116(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw ft6, 112(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw ft7, 108(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw fa0, 104(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw fa1, 100(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw fa2, 96(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw fa3, 92(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw fa4, 88(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw fa5, 84(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw fa6, 80(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw fa7, 76(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw ft8, 72(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw ft9, 68(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw ft10, 64(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw ft11, 60(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw fs0, 56(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw fs1, 52(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw fs2, 48(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw fs3, 44(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw fs4, 40(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw fs5, 36(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw fs6, 32(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw fs7, 28(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw fs8, 24(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw fs9, 20(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw fs10, 16(sp) # 4-byte Folded Reload +; CHECK-RV32IF-NEXT: flw fs11, 12(sp) # 4-byte Folded Reload ; CHECK-RV32IF-NEXT: addi sp, sp, 208 ; CHECK-RV32IF-NEXT: mret ; ; CHECK-RV32IFD-LABEL: foo_fp_double: ; CHECK-RV32IFD: # %bb.0: ; CHECK-RV32IFD-NEXT: addi sp, sp, -32 -; CHECK-RV32IFD-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; CHECK-RV32IFD-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; CHECK-RV32IFD-NEXT: sw a0, 20(sp) # 4-byte Folded Spill -; CHECK-RV32IFD-NEXT: fsd ft0, 8(sp) # 8-byte Folded Spill ; CHECK-RV32IFD-NEXT: fsd ft1, 0(sp) # 8-byte Folded Spill +; CHECK-RV32IFD-NEXT: fsd ft0, 8(sp) # 8-byte Folded Spill +; CHECK-RV32IFD-NEXT: sw a0, 20(sp) # 4-byte Folded Spill +; CHECK-RV32IFD-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; CHECK-RV32IFD-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; CHECK-RV32IFD-NEXT: addi s0, sp, 32 ; CHECK-RV32IFD-NEXT: lui a0, %hi(h) ; CHECK-RV32IFD-NEXT: fld ft0, %lo(h)(a0) @@ -733,11 +733,11 @@ ; CHECK-RV32IFD-NEXT: fadd.d ft0, ft0, ft1 ; CHECK-RV32IFD-NEXT: lui a0, %hi(g) ; CHECK-RV32IFD-NEXT: fsd ft0, %lo(g)(a0) -; CHECK-RV32IFD-NEXT: fld ft1, 0(sp) # 8-byte Folded Reload -; CHECK-RV32IFD-NEXT: fld ft0, 8(sp) # 8-byte Folded Reload -; CHECK-RV32IFD-NEXT: lw a0, 20(sp) # 4-byte Folded Reload -; CHECK-RV32IFD-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; CHECK-RV32IFD-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; CHECK-RV32IFD-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; CHECK-RV32IFD-NEXT: lw a0, 20(sp) # 4-byte Folded Reload +; CHECK-RV32IFD-NEXT: fld ft0, 8(sp) # 8-byte Folded Reload +; CHECK-RV32IFD-NEXT: fld ft1, 0(sp) # 8-byte Folded Reload ; CHECK-RV32IFD-NEXT: addi sp, sp, 32 ; CHECK-RV32IFD-NEXT: mret %1 = load double, double* @h diff --git a/llvm/test/CodeGen/RISCV/interrupt-attr.ll b/llvm/test/CodeGen/RISCV/interrupt-attr.ll --- a/llvm/test/CodeGen/RISCV/interrupt-attr.ll +++ b/llvm/test/CodeGen/RISCV/interrupt-attr.ll @@ -54,490 +54,490 @@ ; CHECK-RV32-LABEL: foo_with_call: ; CHECK-RV32: # %bb.0: ; CHECK-RV32-NEXT: addi sp, sp, -64 -; CHECK-RV32-NEXT: sw ra, 60(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw t0, 56(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw t1, 52(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw t2, 48(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a0, 44(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a1, 40(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a2, 36(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a3, 32(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a4, 28(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a5, 24(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a6, 20(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a7, 16(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw t3, 12(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw t4, 8(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw t5, 4(sp) # 4-byte Folded Spill ; CHECK-RV32-NEXT: sw t6, 0(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw t5, 4(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw t4, 8(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw t3, 12(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a7, 16(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a6, 20(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a5, 24(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a4, 28(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a3, 32(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a2, 36(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a1, 40(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a0, 44(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw t2, 48(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw t1, 52(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw t0, 56(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw ra, 60(sp) # 4-byte Folded Spill ; CHECK-RV32-NEXT: call otherfoo@plt -; CHECK-RV32-NEXT: lw t6, 0(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw t5, 4(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw t4, 8(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw t3, 12(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a7, 16(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a6, 20(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a5, 24(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a4, 28(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a3, 32(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a2, 36(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a1, 40(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a0, 44(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw t2, 48(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw t1, 52(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw t0, 56(sp) # 4-byte Folded Reload ; CHECK-RV32-NEXT: lw ra, 60(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw t0, 56(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw t1, 52(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw t2, 48(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a0, 44(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a1, 40(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a2, 36(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a3, 32(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a4, 28(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a5, 24(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a6, 20(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a7, 16(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw t3, 12(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw t4, 8(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw t5, 4(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw t6, 0(sp) # 4-byte Folded Reload ; CHECK-RV32-NEXT: addi sp, sp, 64 ; CHECK-RV32-NEXT: mret ; ; CHECK-RV32-F-LABEL: foo_with_call: ; CHECK-RV32-F: # %bb.0: ; CHECK-RV32-F-NEXT: addi sp, sp, -192 -; CHECK-RV32-F-NEXT: sw ra, 188(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: sw t0, 184(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: sw t1, 180(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: sw t2, 176(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: sw a0, 172(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: sw a1, 168(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: sw a2, 164(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: sw a3, 160(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: sw a4, 156(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: sw a5, 152(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: sw a6, 148(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: sw a7, 144(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: sw t3, 140(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: sw t4, 136(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: sw t5, 132(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: sw t6, 128(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw ft0, 124(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw ft1, 120(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw ft2, 116(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw ft3, 112(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw ft4, 108(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw ft5, 104(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw ft6, 100(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw ft7, 96(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw fa0, 92(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw fa1, 88(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw fa2, 84(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw fa3, 80(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw fa4, 76(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw fa5, 72(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw fa6, 68(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw fa7, 64(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw ft8, 60(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw ft9, 56(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw ft10, 52(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw ft11, 48(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw fs0, 44(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw fs1, 40(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw fs2, 36(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw fs3, 32(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw fs4, 28(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw fs5, 24(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw fs6, 20(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw fs7, 16(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw fs8, 12(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw fs9, 8(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw fs10, 4(sp) # 4-byte Folded Spill ; CHECK-RV32-F-NEXT: fsw fs11, 0(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw fs10, 4(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw fs9, 8(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw fs8, 12(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw fs7, 16(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw fs6, 20(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw fs5, 24(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw fs4, 28(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw fs3, 32(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw fs2, 36(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw fs1, 40(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw fs0, 44(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw ft11, 48(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw ft10, 52(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw ft9, 56(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw ft8, 60(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw fa7, 64(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw fa6, 68(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw fa5, 72(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw fa4, 76(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw fa3, 80(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw fa2, 84(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw fa1, 88(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw fa0, 92(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw ft7, 96(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw ft6, 100(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw ft5, 104(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw ft4, 108(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw ft3, 112(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw ft2, 116(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw ft1, 120(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw ft0, 124(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: sw t6, 128(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: sw t5, 132(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: sw t4, 136(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: sw t3, 140(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: sw a7, 144(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: sw a6, 148(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: sw a5, 152(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: sw a4, 156(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: sw a3, 160(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: sw a2, 164(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: sw a1, 168(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: sw a0, 172(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: sw t2, 176(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: sw t1, 180(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: sw t0, 184(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: sw ra, 188(sp) # 4-byte Folded Spill ; CHECK-RV32-F-NEXT: call otherfoo@plt -; CHECK-RV32-F-NEXT: flw fs11, 0(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw fs10, 4(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw fs9, 8(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw fs8, 12(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw fs7, 16(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw fs6, 20(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw fs5, 24(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw fs4, 28(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw fs3, 32(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw fs2, 36(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw fs1, 40(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw fs0, 44(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw ft11, 48(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw ft10, 52(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw ft9, 56(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw ft8, 60(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw fa7, 64(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw fa6, 68(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw fa5, 72(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw fa4, 76(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw fa3, 80(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw fa2, 84(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw fa1, 88(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw fa0, 92(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw ft7, 96(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw ft6, 100(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw ft5, 104(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw ft4, 108(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw ft3, 112(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw ft2, 116(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw ft1, 120(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw ft0, 124(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: lw t6, 128(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: lw t5, 132(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: lw t4, 136(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: lw t3, 140(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: lw a7, 144(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: lw a6, 148(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: lw a5, 152(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: lw a4, 156(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: lw a3, 160(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: lw a2, 164(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: lw a1, 168(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: lw a0, 172(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: lw t2, 176(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: lw t1, 180(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: lw t0, 184(sp) # 4-byte Folded Reload ; CHECK-RV32-F-NEXT: lw ra, 188(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: lw t0, 184(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: lw t1, 180(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: lw t2, 176(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: lw a0, 172(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: lw a1, 168(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: lw a2, 164(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: lw a3, 160(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: lw a4, 156(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: lw a5, 152(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: lw a6, 148(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: lw a7, 144(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: lw t3, 140(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: lw t4, 136(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: lw t5, 132(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: lw t6, 128(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw ft0, 124(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw ft1, 120(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw ft2, 116(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw ft3, 112(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw ft4, 108(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw ft5, 104(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw ft6, 100(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw ft7, 96(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw fa0, 92(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw fa1, 88(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw fa2, 84(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw fa3, 80(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw fa4, 76(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw fa5, 72(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw fa6, 68(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw fa7, 64(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw ft8, 60(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw ft9, 56(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw ft10, 52(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw ft11, 48(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw fs0, 44(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw fs1, 40(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw fs2, 36(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw fs3, 32(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw fs4, 28(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw fs5, 24(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw fs6, 20(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw fs7, 16(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw fs8, 12(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw fs9, 8(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw fs10, 4(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw fs11, 0(sp) # 4-byte Folded Reload ; CHECK-RV32-F-NEXT: addi sp, sp, 192 ; CHECK-RV32-F-NEXT: mret ; ; CHECK-RV32-FD-LABEL: foo_with_call: ; CHECK-RV32-FD: # %bb.0: ; CHECK-RV32-FD-NEXT: addi sp, sp, -320 -; CHECK-RV32-FD-NEXT: sw ra, 316(sp) # 4-byte Folded Spill -; CHECK-RV32-FD-NEXT: sw t0, 312(sp) # 4-byte Folded Spill -; CHECK-RV32-FD-NEXT: sw t1, 308(sp) # 4-byte Folded Spill -; CHECK-RV32-FD-NEXT: sw t2, 304(sp) # 4-byte Folded Spill -; CHECK-RV32-FD-NEXT: sw a0, 300(sp) # 4-byte Folded Spill -; CHECK-RV32-FD-NEXT: sw a1, 296(sp) # 4-byte Folded Spill -; CHECK-RV32-FD-NEXT: sw a2, 292(sp) # 4-byte Folded Spill -; CHECK-RV32-FD-NEXT: sw a3, 288(sp) # 4-byte Folded Spill -; CHECK-RV32-FD-NEXT: sw a4, 284(sp) # 4-byte Folded Spill -; CHECK-RV32-FD-NEXT: sw a5, 280(sp) # 4-byte Folded Spill -; CHECK-RV32-FD-NEXT: sw a6, 276(sp) # 4-byte Folded Spill -; CHECK-RV32-FD-NEXT: sw a7, 272(sp) # 4-byte Folded Spill -; CHECK-RV32-FD-NEXT: sw t3, 268(sp) # 4-byte Folded Spill -; CHECK-RV32-FD-NEXT: sw t4, 264(sp) # 4-byte Folded Spill -; CHECK-RV32-FD-NEXT: sw t5, 260(sp) # 4-byte Folded Spill -; CHECK-RV32-FD-NEXT: sw t6, 256(sp) # 4-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd ft0, 248(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd ft1, 240(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd ft2, 232(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd ft3, 224(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd ft4, 216(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd ft5, 208(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd ft6, 200(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd ft7, 192(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd fa0, 184(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd fa1, 176(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd fa2, 168(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd fa3, 160(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd fa4, 152(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd fa5, 144(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd fa6, 136(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd fa7, 128(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd ft8, 120(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd ft9, 112(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd ft10, 104(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd ft11, 96(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd fs0, 88(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd fs1, 80(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd fs2, 72(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd fs3, 64(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd fs4, 56(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd fs5, 48(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd fs6, 40(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd fs7, 32(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd fs8, 24(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd fs9, 16(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd fs10, 8(sp) # 8-byte Folded Spill ; CHECK-RV32-FD-NEXT: fsd fs11, 0(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd fs10, 8(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd fs9, 16(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd fs8, 24(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd fs7, 32(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd fs6, 40(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd fs5, 48(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd fs4, 56(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd fs3, 64(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd fs2, 72(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd fs1, 80(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd fs0, 88(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd ft11, 96(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd ft10, 104(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd ft9, 112(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd ft8, 120(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd fa7, 128(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd fa6, 136(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd fa5, 144(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd fa4, 152(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd fa3, 160(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd fa2, 168(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd fa1, 176(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd fa0, 184(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd ft7, 192(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd ft6, 200(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd ft5, 208(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd ft4, 216(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd ft3, 224(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd ft2, 232(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd ft1, 240(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd ft0, 248(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: sw t6, 256(sp) # 4-byte Folded Spill +; CHECK-RV32-FD-NEXT: sw t5, 260(sp) # 4-byte Folded Spill +; CHECK-RV32-FD-NEXT: sw t4, 264(sp) # 4-byte Folded Spill +; CHECK-RV32-FD-NEXT: sw t3, 268(sp) # 4-byte Folded Spill +; CHECK-RV32-FD-NEXT: sw a7, 272(sp) # 4-byte Folded Spill +; CHECK-RV32-FD-NEXT: sw a6, 276(sp) # 4-byte Folded Spill +; CHECK-RV32-FD-NEXT: sw a5, 280(sp) # 4-byte Folded Spill +; CHECK-RV32-FD-NEXT: sw a4, 284(sp) # 4-byte Folded Spill +; CHECK-RV32-FD-NEXT: sw a3, 288(sp) # 4-byte Folded Spill +; CHECK-RV32-FD-NEXT: sw a2, 292(sp) # 4-byte Folded Spill +; CHECK-RV32-FD-NEXT: sw a1, 296(sp) # 4-byte Folded Spill +; CHECK-RV32-FD-NEXT: sw a0, 300(sp) # 4-byte Folded Spill +; CHECK-RV32-FD-NEXT: sw t2, 304(sp) # 4-byte Folded Spill +; CHECK-RV32-FD-NEXT: sw t1, 308(sp) # 4-byte Folded Spill +; CHECK-RV32-FD-NEXT: sw t0, 312(sp) # 4-byte Folded Spill +; CHECK-RV32-FD-NEXT: sw ra, 316(sp) # 4-byte Folded Spill ; CHECK-RV32-FD-NEXT: call otherfoo@plt -; CHECK-RV32-FD-NEXT: fld fs11, 0(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld fs10, 8(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld fs9, 16(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld fs8, 24(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld fs7, 32(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld fs6, 40(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld fs5, 48(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld fs4, 56(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld fs3, 64(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld fs2, 72(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld fs1, 80(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld fs0, 88(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld ft11, 96(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld ft10, 104(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld ft9, 112(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld ft8, 120(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld fa7, 128(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld fa6, 136(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld fa5, 144(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld fa4, 152(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld fa3, 160(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld fa2, 168(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld fa1, 176(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld fa0, 184(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld ft7, 192(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld ft6, 200(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld ft5, 208(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld ft4, 216(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld ft3, 224(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld ft2, 232(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld ft1, 240(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld ft0, 248(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: lw t6, 256(sp) # 4-byte Folded Reload -; CHECK-RV32-FD-NEXT: lw t5, 260(sp) # 4-byte Folded Reload -; CHECK-RV32-FD-NEXT: lw t4, 264(sp) # 4-byte Folded Reload -; CHECK-RV32-FD-NEXT: lw t3, 268(sp) # 4-byte Folded Reload -; CHECK-RV32-FD-NEXT: lw a7, 272(sp) # 4-byte Folded Reload -; CHECK-RV32-FD-NEXT: lw a6, 276(sp) # 4-byte Folded Reload -; CHECK-RV32-FD-NEXT: lw a5, 280(sp) # 4-byte Folded Reload -; CHECK-RV32-FD-NEXT: lw a4, 284(sp) # 4-byte Folded Reload -; CHECK-RV32-FD-NEXT: lw a3, 288(sp) # 4-byte Folded Reload -; CHECK-RV32-FD-NEXT: lw a2, 292(sp) # 4-byte Folded Reload -; CHECK-RV32-FD-NEXT: lw a1, 296(sp) # 4-byte Folded Reload -; CHECK-RV32-FD-NEXT: lw a0, 300(sp) # 4-byte Folded Reload -; CHECK-RV32-FD-NEXT: lw t2, 304(sp) # 4-byte Folded Reload -; CHECK-RV32-FD-NEXT: lw t1, 308(sp) # 4-byte Folded Reload -; CHECK-RV32-FD-NEXT: lw t0, 312(sp) # 4-byte Folded Reload ; CHECK-RV32-FD-NEXT: lw ra, 316(sp) # 4-byte Folded Reload +; CHECK-RV32-FD-NEXT: lw t0, 312(sp) # 4-byte Folded Reload +; CHECK-RV32-FD-NEXT: lw t1, 308(sp) # 4-byte Folded Reload +; CHECK-RV32-FD-NEXT: lw t2, 304(sp) # 4-byte Folded Reload +; CHECK-RV32-FD-NEXT: lw a0, 300(sp) # 4-byte Folded Reload +; CHECK-RV32-FD-NEXT: lw a1, 296(sp) # 4-byte Folded Reload +; CHECK-RV32-FD-NEXT: lw a2, 292(sp) # 4-byte Folded Reload +; CHECK-RV32-FD-NEXT: lw a3, 288(sp) # 4-byte Folded Reload +; CHECK-RV32-FD-NEXT: lw a4, 284(sp) # 4-byte Folded Reload +; CHECK-RV32-FD-NEXT: lw a5, 280(sp) # 4-byte Folded Reload +; CHECK-RV32-FD-NEXT: lw a6, 276(sp) # 4-byte Folded Reload +; CHECK-RV32-FD-NEXT: lw a7, 272(sp) # 4-byte Folded Reload +; CHECK-RV32-FD-NEXT: lw t3, 268(sp) # 4-byte Folded Reload +; CHECK-RV32-FD-NEXT: lw t4, 264(sp) # 4-byte Folded Reload +; CHECK-RV32-FD-NEXT: lw t5, 260(sp) # 4-byte Folded Reload +; CHECK-RV32-FD-NEXT: lw t6, 256(sp) # 4-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld ft0, 248(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld ft1, 240(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld ft2, 232(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld ft3, 224(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld ft4, 216(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld ft5, 208(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld ft6, 200(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld ft7, 192(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld fa0, 184(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld fa1, 176(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld fa2, 168(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld fa3, 160(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld fa4, 152(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld fa5, 144(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld fa6, 136(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld fa7, 128(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld ft8, 120(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld ft9, 112(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld ft10, 104(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld ft11, 96(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld fs0, 88(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld fs1, 80(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld fs2, 72(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld fs3, 64(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld fs4, 56(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld fs5, 48(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld fs6, 40(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld fs7, 32(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld fs8, 24(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld fs9, 16(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld fs10, 8(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld fs11, 0(sp) # 8-byte Folded Reload ; CHECK-RV32-FD-NEXT: addi sp, sp, 320 ; CHECK-RV32-FD-NEXT: mret ; ; CHECK-RV64-LABEL: foo_with_call: ; CHECK-RV64: # %bb.0: ; CHECK-RV64-NEXT: addi sp, sp, -128 -; CHECK-RV64-NEXT: sd ra, 120(sp) # 8-byte Folded Spill -; CHECK-RV64-NEXT: sd t0, 112(sp) # 8-byte Folded Spill -; CHECK-RV64-NEXT: sd t1, 104(sp) # 8-byte Folded Spill -; CHECK-RV64-NEXT: sd t2, 96(sp) # 8-byte Folded Spill -; CHECK-RV64-NEXT: sd a0, 88(sp) # 8-byte Folded Spill -; CHECK-RV64-NEXT: sd a1, 80(sp) # 8-byte Folded Spill -; CHECK-RV64-NEXT: sd a2, 72(sp) # 8-byte Folded Spill -; CHECK-RV64-NEXT: sd a3, 64(sp) # 8-byte Folded Spill -; CHECK-RV64-NEXT: sd a4, 56(sp) # 8-byte Folded Spill -; CHECK-RV64-NEXT: sd a5, 48(sp) # 8-byte Folded Spill -; CHECK-RV64-NEXT: sd a6, 40(sp) # 8-byte Folded Spill -; CHECK-RV64-NEXT: sd a7, 32(sp) # 8-byte Folded Spill -; CHECK-RV64-NEXT: sd t3, 24(sp) # 8-byte Folded Spill -; CHECK-RV64-NEXT: sd t4, 16(sp) # 8-byte Folded Spill -; CHECK-RV64-NEXT: sd t5, 8(sp) # 8-byte Folded Spill ; CHECK-RV64-NEXT: sd t6, 0(sp) # 8-byte Folded Spill +; CHECK-RV64-NEXT: sd t5, 8(sp) # 8-byte Folded Spill +; CHECK-RV64-NEXT: sd t4, 16(sp) # 8-byte Folded Spill +; CHECK-RV64-NEXT: sd t3, 24(sp) # 8-byte Folded Spill +; CHECK-RV64-NEXT: sd a7, 32(sp) # 8-byte Folded Spill +; CHECK-RV64-NEXT: sd a6, 40(sp) # 8-byte Folded Spill +; CHECK-RV64-NEXT: sd a5, 48(sp) # 8-byte Folded Spill +; CHECK-RV64-NEXT: sd a4, 56(sp) # 8-byte Folded Spill +; CHECK-RV64-NEXT: sd a3, 64(sp) # 8-byte Folded Spill +; CHECK-RV64-NEXT: sd a2, 72(sp) # 8-byte Folded Spill +; CHECK-RV64-NEXT: sd a1, 80(sp) # 8-byte Folded Spill +; CHECK-RV64-NEXT: sd a0, 88(sp) # 8-byte Folded Spill +; CHECK-RV64-NEXT: sd t2, 96(sp) # 8-byte Folded Spill +; CHECK-RV64-NEXT: sd t1, 104(sp) # 8-byte Folded Spill +; CHECK-RV64-NEXT: sd t0, 112(sp) # 8-byte Folded Spill +; CHECK-RV64-NEXT: sd ra, 120(sp) # 8-byte Folded Spill ; CHECK-RV64-NEXT: call otherfoo@plt -; CHECK-RV64-NEXT: ld t6, 0(sp) # 8-byte Folded Reload -; CHECK-RV64-NEXT: ld t5, 8(sp) # 8-byte Folded Reload -; CHECK-RV64-NEXT: ld t4, 16(sp) # 8-byte Folded Reload -; CHECK-RV64-NEXT: ld t3, 24(sp) # 8-byte Folded Reload -; CHECK-RV64-NEXT: ld a7, 32(sp) # 8-byte Folded Reload -; CHECK-RV64-NEXT: ld a6, 40(sp) # 8-byte Folded Reload -; CHECK-RV64-NEXT: ld a5, 48(sp) # 8-byte Folded Reload -; CHECK-RV64-NEXT: ld a4, 56(sp) # 8-byte Folded Reload -; CHECK-RV64-NEXT: ld a3, 64(sp) # 8-byte Folded Reload -; CHECK-RV64-NEXT: ld a2, 72(sp) # 8-byte Folded Reload -; CHECK-RV64-NEXT: ld a1, 80(sp) # 8-byte Folded Reload -; CHECK-RV64-NEXT: ld a0, 88(sp) # 8-byte Folded Reload -; CHECK-RV64-NEXT: ld t2, 96(sp) # 8-byte Folded Reload -; CHECK-RV64-NEXT: ld t1, 104(sp) # 8-byte Folded Reload -; CHECK-RV64-NEXT: ld t0, 112(sp) # 8-byte Folded Reload ; CHECK-RV64-NEXT: ld ra, 120(sp) # 8-byte Folded Reload +; CHECK-RV64-NEXT: ld t0, 112(sp) # 8-byte Folded Reload +; CHECK-RV64-NEXT: ld t1, 104(sp) # 8-byte Folded Reload +; CHECK-RV64-NEXT: ld t2, 96(sp) # 8-byte Folded Reload +; CHECK-RV64-NEXT: ld a0, 88(sp) # 8-byte Folded Reload +; CHECK-RV64-NEXT: ld a1, 80(sp) # 8-byte Folded Reload +; CHECK-RV64-NEXT: ld a2, 72(sp) # 8-byte Folded Reload +; CHECK-RV64-NEXT: ld a3, 64(sp) # 8-byte Folded Reload +; CHECK-RV64-NEXT: ld a4, 56(sp) # 8-byte Folded Reload +; CHECK-RV64-NEXT: ld a5, 48(sp) # 8-byte Folded Reload +; CHECK-RV64-NEXT: ld a6, 40(sp) # 8-byte Folded Reload +; CHECK-RV64-NEXT: ld a7, 32(sp) # 8-byte Folded Reload +; CHECK-RV64-NEXT: ld t3, 24(sp) # 8-byte Folded Reload +; CHECK-RV64-NEXT: ld t4, 16(sp) # 8-byte Folded Reload +; CHECK-RV64-NEXT: ld t5, 8(sp) # 8-byte Folded Reload +; CHECK-RV64-NEXT: ld t6, 0(sp) # 8-byte Folded Reload ; CHECK-RV64-NEXT: addi sp, sp, 128 ; CHECK-RV64-NEXT: mret ; ; CHECK-RV64-F-LABEL: foo_with_call: ; CHECK-RV64-F: # %bb.0: ; CHECK-RV64-F-NEXT: addi sp, sp, -256 -; CHECK-RV64-F-NEXT: sd ra, 248(sp) # 8-byte Folded Spill -; CHECK-RV64-F-NEXT: sd t0, 240(sp) # 8-byte Folded Spill -; CHECK-RV64-F-NEXT: sd t1, 232(sp) # 8-byte Folded Spill -; CHECK-RV64-F-NEXT: sd t2, 224(sp) # 8-byte Folded Spill -; CHECK-RV64-F-NEXT: sd a0, 216(sp) # 8-byte Folded Spill -; CHECK-RV64-F-NEXT: sd a1, 208(sp) # 8-byte Folded Spill -; CHECK-RV64-F-NEXT: sd a2, 200(sp) # 8-byte Folded Spill -; CHECK-RV64-F-NEXT: sd a3, 192(sp) # 8-byte Folded Spill -; CHECK-RV64-F-NEXT: sd a4, 184(sp) # 8-byte Folded Spill -; CHECK-RV64-F-NEXT: sd a5, 176(sp) # 8-byte Folded Spill -; CHECK-RV64-F-NEXT: sd a6, 168(sp) # 8-byte Folded Spill -; CHECK-RV64-F-NEXT: sd a7, 160(sp) # 8-byte Folded Spill -; CHECK-RV64-F-NEXT: sd t3, 152(sp) # 8-byte Folded Spill -; CHECK-RV64-F-NEXT: sd t4, 144(sp) # 8-byte Folded Spill -; CHECK-RV64-F-NEXT: sd t5, 136(sp) # 8-byte Folded Spill -; CHECK-RV64-F-NEXT: sd t6, 128(sp) # 8-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw ft0, 124(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw ft1, 120(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw ft2, 116(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw ft3, 112(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw ft4, 108(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw ft5, 104(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw ft6, 100(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw ft7, 96(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw fa0, 92(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw fa1, 88(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw fa2, 84(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw fa3, 80(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw fa4, 76(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw fa5, 72(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw fa6, 68(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw fa7, 64(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw ft8, 60(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw ft9, 56(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw ft10, 52(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw ft11, 48(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw fs0, 44(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw fs1, 40(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw fs2, 36(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw fs3, 32(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw fs4, 28(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw fs5, 24(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw fs6, 20(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw fs7, 16(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw fs8, 12(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw fs9, 8(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw fs10, 4(sp) # 4-byte Folded Spill ; CHECK-RV64-F-NEXT: fsw fs11, 0(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw fs10, 4(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw fs9, 8(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw fs8, 12(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw fs7, 16(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw fs6, 20(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw fs5, 24(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw fs4, 28(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw fs3, 32(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw fs2, 36(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw fs1, 40(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw fs0, 44(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw ft11, 48(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw ft10, 52(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw ft9, 56(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw ft8, 60(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw fa7, 64(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw fa6, 68(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw fa5, 72(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw fa4, 76(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw fa3, 80(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw fa2, 84(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw fa1, 88(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw fa0, 92(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw ft7, 96(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw ft6, 100(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw ft5, 104(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw ft4, 108(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw ft3, 112(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw ft2, 116(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw ft1, 120(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw ft0, 124(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: sd t6, 128(sp) # 8-byte Folded Spill +; CHECK-RV64-F-NEXT: sd t5, 136(sp) # 8-byte Folded Spill +; CHECK-RV64-F-NEXT: sd t4, 144(sp) # 8-byte Folded Spill +; CHECK-RV64-F-NEXT: sd t3, 152(sp) # 8-byte Folded Spill +; CHECK-RV64-F-NEXT: sd a7, 160(sp) # 8-byte Folded Spill +; CHECK-RV64-F-NEXT: sd a6, 168(sp) # 8-byte Folded Spill +; CHECK-RV64-F-NEXT: sd a5, 176(sp) # 8-byte Folded Spill +; CHECK-RV64-F-NEXT: sd a4, 184(sp) # 8-byte Folded Spill +; CHECK-RV64-F-NEXT: sd a3, 192(sp) # 8-byte Folded Spill +; CHECK-RV64-F-NEXT: sd a2, 200(sp) # 8-byte Folded Spill +; CHECK-RV64-F-NEXT: sd a1, 208(sp) # 8-byte Folded Spill +; CHECK-RV64-F-NEXT: sd a0, 216(sp) # 8-byte Folded Spill +; CHECK-RV64-F-NEXT: sd t2, 224(sp) # 8-byte Folded Spill +; CHECK-RV64-F-NEXT: sd t1, 232(sp) # 8-byte Folded Spill +; CHECK-RV64-F-NEXT: sd t0, 240(sp) # 8-byte Folded Spill +; CHECK-RV64-F-NEXT: sd ra, 248(sp) # 8-byte Folded Spill ; CHECK-RV64-F-NEXT: call otherfoo@plt -; CHECK-RV64-F-NEXT: flw fs11, 0(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw fs10, 4(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw fs9, 8(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw fs8, 12(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw fs7, 16(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw fs6, 20(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw fs5, 24(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw fs4, 28(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw fs3, 32(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw fs2, 36(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw fs1, 40(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw fs0, 44(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw ft11, 48(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw ft10, 52(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw ft9, 56(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw ft8, 60(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw fa7, 64(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw fa6, 68(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw fa5, 72(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw fa4, 76(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw fa3, 80(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw fa2, 84(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw fa1, 88(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw fa0, 92(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw ft7, 96(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw ft6, 100(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw ft5, 104(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw ft4, 108(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw ft3, 112(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw ft2, 116(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw ft1, 120(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw ft0, 124(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: ld t6, 128(sp) # 8-byte Folded Reload -; CHECK-RV64-F-NEXT: ld t5, 136(sp) # 8-byte Folded Reload -; CHECK-RV64-F-NEXT: ld t4, 144(sp) # 8-byte Folded Reload -; CHECK-RV64-F-NEXT: ld t3, 152(sp) # 8-byte Folded Reload -; CHECK-RV64-F-NEXT: ld a7, 160(sp) # 8-byte Folded Reload -; CHECK-RV64-F-NEXT: ld a6, 168(sp) # 8-byte Folded Reload -; CHECK-RV64-F-NEXT: ld a5, 176(sp) # 8-byte Folded Reload -; CHECK-RV64-F-NEXT: ld a4, 184(sp) # 8-byte Folded Reload -; CHECK-RV64-F-NEXT: ld a3, 192(sp) # 8-byte Folded Reload -; CHECK-RV64-F-NEXT: ld a2, 200(sp) # 8-byte Folded Reload -; CHECK-RV64-F-NEXT: ld a1, 208(sp) # 8-byte Folded Reload -; CHECK-RV64-F-NEXT: ld a0, 216(sp) # 8-byte Folded Reload -; CHECK-RV64-F-NEXT: ld t2, 224(sp) # 8-byte Folded Reload -; CHECK-RV64-F-NEXT: ld t1, 232(sp) # 8-byte Folded Reload -; CHECK-RV64-F-NEXT: ld t0, 240(sp) # 8-byte Folded Reload ; CHECK-RV64-F-NEXT: ld ra, 248(sp) # 8-byte Folded Reload +; CHECK-RV64-F-NEXT: ld t0, 240(sp) # 8-byte Folded Reload +; CHECK-RV64-F-NEXT: ld t1, 232(sp) # 8-byte Folded Reload +; CHECK-RV64-F-NEXT: ld t2, 224(sp) # 8-byte Folded Reload +; CHECK-RV64-F-NEXT: ld a0, 216(sp) # 8-byte Folded Reload +; CHECK-RV64-F-NEXT: ld a1, 208(sp) # 8-byte Folded Reload +; CHECK-RV64-F-NEXT: ld a2, 200(sp) # 8-byte Folded Reload +; CHECK-RV64-F-NEXT: ld a3, 192(sp) # 8-byte Folded Reload +; CHECK-RV64-F-NEXT: ld a4, 184(sp) # 8-byte Folded Reload +; CHECK-RV64-F-NEXT: ld a5, 176(sp) # 8-byte Folded Reload +; CHECK-RV64-F-NEXT: ld a6, 168(sp) # 8-byte Folded Reload +; CHECK-RV64-F-NEXT: ld a7, 160(sp) # 8-byte Folded Reload +; CHECK-RV64-F-NEXT: ld t3, 152(sp) # 8-byte Folded Reload +; CHECK-RV64-F-NEXT: ld t4, 144(sp) # 8-byte Folded Reload +; CHECK-RV64-F-NEXT: ld t5, 136(sp) # 8-byte Folded Reload +; CHECK-RV64-F-NEXT: ld t6, 128(sp) # 8-byte Folded Reload +; CHECK-RV64-F-NEXT: flw ft0, 124(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw ft1, 120(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw ft2, 116(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw ft3, 112(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw ft4, 108(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw ft5, 104(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw ft6, 100(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw ft7, 96(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw fa0, 92(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw fa1, 88(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw fa2, 84(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw fa3, 80(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw fa4, 76(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw fa5, 72(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw fa6, 68(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw fa7, 64(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw ft8, 60(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw ft9, 56(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw ft10, 52(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw ft11, 48(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw fs0, 44(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw fs1, 40(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw fs2, 36(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw fs3, 32(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw fs4, 28(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw fs5, 24(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw fs6, 20(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw fs7, 16(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw fs8, 12(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw fs9, 8(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw fs10, 4(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw fs11, 0(sp) # 4-byte Folded Reload ; CHECK-RV64-F-NEXT: addi sp, sp, 256 ; CHECK-RV64-F-NEXT: mret ; ; CHECK-RV64-FD-LABEL: foo_with_call: ; CHECK-RV64-FD: # %bb.0: ; CHECK-RV64-FD-NEXT: addi sp, sp, -384 -; CHECK-RV64-FD-NEXT: sd ra, 376(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: sd t0, 368(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: sd t1, 360(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: sd t2, 352(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: sd a0, 344(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: sd a1, 336(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: sd a2, 328(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: sd a3, 320(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: sd a4, 312(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: sd a5, 304(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: sd a6, 296(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: sd a7, 288(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: sd t3, 280(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: sd t4, 272(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: sd t5, 264(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: sd t6, 256(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd ft0, 248(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd ft1, 240(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd ft2, 232(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd ft3, 224(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd ft4, 216(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd ft5, 208(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd ft6, 200(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd ft7, 192(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd fa0, 184(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd fa1, 176(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd fa2, 168(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd fa3, 160(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd fa4, 152(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd fa5, 144(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd fa6, 136(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd fa7, 128(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd ft8, 120(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd ft9, 112(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd ft10, 104(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd ft11, 96(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd fs0, 88(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd fs1, 80(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd fs2, 72(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd fs3, 64(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd fs4, 56(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd fs5, 48(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd fs6, 40(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd fs7, 32(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd fs8, 24(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd fs9, 16(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd fs10, 8(sp) # 8-byte Folded Spill ; CHECK-RV64-FD-NEXT: fsd fs11, 0(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd fs10, 8(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd fs9, 16(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd fs8, 24(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd fs7, 32(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd fs6, 40(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd fs5, 48(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd fs4, 56(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd fs3, 64(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd fs2, 72(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd fs1, 80(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd fs0, 88(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd ft11, 96(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd ft10, 104(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd ft9, 112(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd ft8, 120(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd fa7, 128(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd fa6, 136(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd fa5, 144(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd fa4, 152(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd fa3, 160(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd fa2, 168(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd fa1, 176(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd fa0, 184(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd ft7, 192(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd ft6, 200(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd ft5, 208(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd ft4, 216(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd ft3, 224(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd ft2, 232(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd ft1, 240(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd ft0, 248(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: sd t6, 256(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: sd t5, 264(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: sd t4, 272(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: sd t3, 280(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: sd a7, 288(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: sd a6, 296(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: sd a5, 304(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: sd a4, 312(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: sd a3, 320(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: sd a2, 328(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: sd a1, 336(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: sd a0, 344(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: sd t2, 352(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: sd t1, 360(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: sd t0, 368(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: sd ra, 376(sp) # 8-byte Folded Spill ; CHECK-RV64-FD-NEXT: call otherfoo@plt -; CHECK-RV64-FD-NEXT: fld fs11, 0(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld fs10, 8(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld fs9, 16(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld fs8, 24(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld fs7, 32(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld fs6, 40(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld fs5, 48(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld fs4, 56(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld fs3, 64(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld fs2, 72(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld fs1, 80(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld fs0, 88(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld ft11, 96(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld ft10, 104(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld ft9, 112(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld ft8, 120(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld fa7, 128(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld fa6, 136(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld fa5, 144(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld fa4, 152(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld fa3, 160(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld fa2, 168(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld fa1, 176(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld fa0, 184(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld ft7, 192(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld ft6, 200(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld ft5, 208(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld ft4, 216(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld ft3, 224(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld ft2, 232(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld ft1, 240(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld ft0, 248(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: ld t6, 256(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: ld t5, 264(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: ld t4, 272(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: ld t3, 280(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: ld a7, 288(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: ld a6, 296(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: ld a5, 304(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: ld a4, 312(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: ld a3, 320(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: ld a2, 328(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: ld a1, 336(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: ld a0, 344(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: ld t2, 352(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: ld t1, 360(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: ld t0, 368(sp) # 8-byte Folded Reload ; CHECK-RV64-FD-NEXT: ld ra, 376(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: ld t0, 368(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: ld t1, 360(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: ld t2, 352(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: ld a0, 344(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: ld a1, 336(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: ld a2, 328(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: ld a3, 320(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: ld a4, 312(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: ld a5, 304(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: ld a6, 296(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: ld a7, 288(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: ld t3, 280(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: ld t4, 272(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: ld t5, 264(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: ld t6, 256(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld ft0, 248(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld ft1, 240(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld ft2, 232(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld ft3, 224(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld ft4, 216(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld ft5, 208(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld ft6, 200(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld ft7, 192(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld fa0, 184(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld fa1, 176(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld fa2, 168(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld fa3, 160(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld fa4, 152(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld fa5, 144(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld fa6, 136(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld fa7, 128(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld ft8, 120(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld ft9, 112(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld ft10, 104(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld ft11, 96(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld fs0, 88(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld fs1, 80(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld fs2, 72(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld fs3, 64(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld fs4, 56(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld fs5, 48(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld fs6, 40(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld fs7, 32(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld fs8, 24(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld fs9, 16(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld fs10, 8(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld fs11, 0(sp) # 8-byte Folded Reload ; CHECK-RV64-FD-NEXT: addi sp, sp, 384 ; CHECK-RV64-FD-NEXT: mret %call = call i32 bitcast (i32 (...)* @otherfoo to i32 ()*)() @@ -552,508 +552,508 @@ ; CHECK-RV32-LABEL: foo_fp_with_call: ; CHECK-RV32: # %bb.0: ; CHECK-RV32-NEXT: addi sp, sp, -80 -; CHECK-RV32-NEXT: sw ra, 76(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw t0, 72(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw t1, 68(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw t2, 64(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw s0, 60(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a0, 56(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a1, 52(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a2, 48(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a3, 44(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a4, 40(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a5, 36(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a6, 32(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw a7, 28(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw t3, 24(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw t4, 20(sp) # 4-byte Folded Spill -; CHECK-RV32-NEXT: sw t5, 16(sp) # 4-byte Folded Spill ; CHECK-RV32-NEXT: sw t6, 12(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw t5, 16(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw t4, 20(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw t3, 24(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a7, 28(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a6, 32(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a5, 36(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a4, 40(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a3, 44(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a2, 48(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a1, 52(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw a0, 56(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw s0, 60(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw t2, 64(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw t1, 68(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw t0, 72(sp) # 4-byte Folded Spill +; CHECK-RV32-NEXT: sw ra, 76(sp) # 4-byte Folded Spill ; CHECK-RV32-NEXT: addi s0, sp, 80 ; CHECK-RV32-NEXT: call otherfoo@plt -; CHECK-RV32-NEXT: lw t6, 12(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw t5, 16(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw t4, 20(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw t3, 24(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a7, 28(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a6, 32(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a5, 36(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a4, 40(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a3, 44(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a2, 48(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a1, 52(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw a0, 56(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw s0, 60(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw t2, 64(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw t1, 68(sp) # 4-byte Folded Reload -; CHECK-RV32-NEXT: lw t0, 72(sp) # 4-byte Folded Reload ; CHECK-RV32-NEXT: lw ra, 76(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw t0, 72(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw t1, 68(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw t2, 64(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw s0, 60(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a0, 56(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a1, 52(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a2, 48(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a3, 44(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a4, 40(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a5, 36(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a6, 32(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw a7, 28(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw t3, 24(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw t4, 20(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw t5, 16(sp) # 4-byte Folded Reload +; CHECK-RV32-NEXT: lw t6, 12(sp) # 4-byte Folded Reload ; CHECK-RV32-NEXT: addi sp, sp, 80 ; CHECK-RV32-NEXT: mret ; ; CHECK-RV32-F-LABEL: foo_fp_with_call: ; CHECK-RV32-F: # %bb.0: ; CHECK-RV32-F-NEXT: addi sp, sp, -208 -; CHECK-RV32-F-NEXT: sw ra, 204(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: sw t0, 200(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: sw t1, 196(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: sw t2, 192(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: sw s0, 188(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: sw a0, 184(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: sw a1, 180(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: sw a2, 176(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: sw a3, 172(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: sw a4, 168(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: sw a5, 164(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: sw a6, 160(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: sw a7, 156(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: sw t3, 152(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: sw t4, 148(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: sw t5, 144(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: sw t6, 140(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw ft0, 136(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw ft1, 132(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw ft2, 128(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw ft3, 124(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw ft4, 120(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw ft5, 116(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw ft6, 112(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw ft7, 108(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw fa0, 104(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw fa1, 100(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw fa2, 96(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw fa3, 92(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw fa4, 88(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw fa5, 84(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw fa6, 80(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw fa7, 76(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw ft8, 72(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw ft9, 68(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw ft10, 64(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw ft11, 60(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw fs0, 56(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw fs1, 52(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw fs2, 48(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw fs3, 44(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw fs4, 40(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw fs5, 36(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw fs6, 32(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw fs7, 28(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw fs8, 24(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw fs9, 20(sp) # 4-byte Folded Spill -; CHECK-RV32-F-NEXT: fsw fs10, 16(sp) # 4-byte Folded Spill ; CHECK-RV32-F-NEXT: fsw fs11, 12(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw fs10, 16(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw fs9, 20(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw fs8, 24(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw fs7, 28(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw fs6, 32(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw fs5, 36(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw fs4, 40(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw fs3, 44(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw fs2, 48(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw fs1, 52(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw fs0, 56(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw ft11, 60(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw ft10, 64(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw ft9, 68(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw ft8, 72(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw fa7, 76(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw fa6, 80(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw fa5, 84(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw fa4, 88(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw fa3, 92(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw fa2, 96(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw fa1, 100(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw fa0, 104(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw ft7, 108(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw ft6, 112(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw ft5, 116(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw ft4, 120(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw ft3, 124(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw ft2, 128(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw ft1, 132(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: fsw ft0, 136(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: sw t6, 140(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: sw t5, 144(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: sw t4, 148(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: sw t3, 152(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: sw a7, 156(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: sw a6, 160(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: sw a5, 164(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: sw a4, 168(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: sw a3, 172(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: sw a2, 176(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: sw a1, 180(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: sw a0, 184(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: sw s0, 188(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: sw t2, 192(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: sw t1, 196(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: sw t0, 200(sp) # 4-byte Folded Spill +; CHECK-RV32-F-NEXT: sw ra, 204(sp) # 4-byte Folded Spill ; CHECK-RV32-F-NEXT: addi s0, sp, 208 ; CHECK-RV32-F-NEXT: call otherfoo@plt -; CHECK-RV32-F-NEXT: flw fs11, 12(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw fs10, 16(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw fs9, 20(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw fs8, 24(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw fs7, 28(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw fs6, 32(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw fs5, 36(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw fs4, 40(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw fs3, 44(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw fs2, 48(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw fs1, 52(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw fs0, 56(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw ft11, 60(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw ft10, 64(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw ft9, 68(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw ft8, 72(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw fa7, 76(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw fa6, 80(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw fa5, 84(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw fa4, 88(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw fa3, 92(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw fa2, 96(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw fa1, 100(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw fa0, 104(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw ft7, 108(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw ft6, 112(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw ft5, 116(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw ft4, 120(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw ft3, 124(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw ft2, 128(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw ft1, 132(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: flw ft0, 136(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: lw t6, 140(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: lw t5, 144(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: lw t4, 148(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: lw t3, 152(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: lw a7, 156(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: lw a6, 160(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: lw a5, 164(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: lw a4, 168(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: lw a3, 172(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: lw a2, 176(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: lw a1, 180(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: lw a0, 184(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: lw s0, 188(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: lw t2, 192(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: lw t1, 196(sp) # 4-byte Folded Reload -; CHECK-RV32-F-NEXT: lw t0, 200(sp) # 4-byte Folded Reload ; CHECK-RV32-F-NEXT: lw ra, 204(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: lw t0, 200(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: lw t1, 196(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: lw t2, 192(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: lw s0, 188(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: lw a0, 184(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: lw a1, 180(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: lw a2, 176(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: lw a3, 172(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: lw a4, 168(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: lw a5, 164(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: lw a6, 160(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: lw a7, 156(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: lw t3, 152(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: lw t4, 148(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: lw t5, 144(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: lw t6, 140(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw ft0, 136(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw ft1, 132(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw ft2, 128(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw ft3, 124(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw ft4, 120(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw ft5, 116(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw ft6, 112(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw ft7, 108(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw fa0, 104(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw fa1, 100(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw fa2, 96(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw fa3, 92(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw fa4, 88(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw fa5, 84(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw fa6, 80(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw fa7, 76(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw ft8, 72(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw ft9, 68(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw ft10, 64(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw ft11, 60(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw fs0, 56(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw fs1, 52(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw fs2, 48(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw fs3, 44(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw fs4, 40(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw fs5, 36(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw fs6, 32(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw fs7, 28(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw fs8, 24(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw fs9, 20(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw fs10, 16(sp) # 4-byte Folded Reload +; CHECK-RV32-F-NEXT: flw fs11, 12(sp) # 4-byte Folded Reload ; CHECK-RV32-F-NEXT: addi sp, sp, 208 ; CHECK-RV32-F-NEXT: mret ; ; CHECK-RV32-FD-LABEL: foo_fp_with_call: ; CHECK-RV32-FD: # %bb.0: ; CHECK-RV32-FD-NEXT: addi sp, sp, -336 -; CHECK-RV32-FD-NEXT: sw ra, 332(sp) # 4-byte Folded Spill -; CHECK-RV32-FD-NEXT: sw t0, 328(sp) # 4-byte Folded Spill -; CHECK-RV32-FD-NEXT: sw t1, 324(sp) # 4-byte Folded Spill -; CHECK-RV32-FD-NEXT: sw t2, 320(sp) # 4-byte Folded Spill -; CHECK-RV32-FD-NEXT: sw s0, 316(sp) # 4-byte Folded Spill -; CHECK-RV32-FD-NEXT: sw a0, 312(sp) # 4-byte Folded Spill -; CHECK-RV32-FD-NEXT: sw a1, 308(sp) # 4-byte Folded Spill -; CHECK-RV32-FD-NEXT: sw a2, 304(sp) # 4-byte Folded Spill -; CHECK-RV32-FD-NEXT: sw a3, 300(sp) # 4-byte Folded Spill -; CHECK-RV32-FD-NEXT: sw a4, 296(sp) # 4-byte Folded Spill -; CHECK-RV32-FD-NEXT: sw a5, 292(sp) # 4-byte Folded Spill -; CHECK-RV32-FD-NEXT: sw a6, 288(sp) # 4-byte Folded Spill -; CHECK-RV32-FD-NEXT: sw a7, 284(sp) # 4-byte Folded Spill -; CHECK-RV32-FD-NEXT: sw t3, 280(sp) # 4-byte Folded Spill -; CHECK-RV32-FD-NEXT: sw t4, 276(sp) # 4-byte Folded Spill -; CHECK-RV32-FD-NEXT: sw t5, 272(sp) # 4-byte Folded Spill -; CHECK-RV32-FD-NEXT: sw t6, 268(sp) # 4-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd ft0, 256(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd ft1, 248(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd ft2, 240(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd ft3, 232(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd ft4, 224(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd ft5, 216(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd ft6, 208(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd ft7, 200(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd fa0, 192(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd fa1, 184(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd fa2, 176(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd fa3, 168(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd fa4, 160(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd fa5, 152(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd fa6, 144(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd fa7, 136(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd ft8, 128(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd ft9, 120(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd ft10, 112(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd ft11, 104(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd fs0, 96(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd fs1, 88(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd fs2, 80(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd fs3, 72(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd fs4, 64(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd fs5, 56(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd fs6, 48(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd fs7, 40(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd fs8, 32(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd fs9, 24(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: fsd fs10, 16(sp) # 8-byte Folded Spill ; CHECK-RV32-FD-NEXT: fsd fs11, 8(sp) # 8-byte Folded Spill -; CHECK-RV32-FD-NEXT: addi s0, sp, 336 -; CHECK-RV32-FD-NEXT: call otherfoo@plt -; CHECK-RV32-FD-NEXT: fld fs11, 8(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld fs10, 16(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld fs9, 24(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld fs8, 32(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld fs7, 40(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld fs6, 48(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld fs5, 56(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld fs4, 64(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld fs3, 72(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld fs2, 80(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld fs1, 88(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld fs0, 96(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld ft11, 104(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld ft10, 112(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld ft9, 120(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld ft8, 128(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld fa7, 136(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld fa6, 144(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld fa5, 152(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld fa4, 160(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld fa3, 168(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld fa2, 176(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld fa1, 184(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld fa0, 192(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld ft7, 200(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld ft6, 208(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld ft5, 216(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld ft4, 224(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld ft3, 232(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld ft2, 240(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld ft1, 248(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: fld ft0, 256(sp) # 8-byte Folded Reload -; CHECK-RV32-FD-NEXT: lw t6, 268(sp) # 4-byte Folded Reload -; CHECK-RV32-FD-NEXT: lw t5, 272(sp) # 4-byte Folded Reload -; CHECK-RV32-FD-NEXT: lw t4, 276(sp) # 4-byte Folded Reload -; CHECK-RV32-FD-NEXT: lw t3, 280(sp) # 4-byte Folded Reload -; CHECK-RV32-FD-NEXT: lw a7, 284(sp) # 4-byte Folded Reload -; CHECK-RV32-FD-NEXT: lw a6, 288(sp) # 4-byte Folded Reload -; CHECK-RV32-FD-NEXT: lw a5, 292(sp) # 4-byte Folded Reload -; CHECK-RV32-FD-NEXT: lw a4, 296(sp) # 4-byte Folded Reload -; CHECK-RV32-FD-NEXT: lw a3, 300(sp) # 4-byte Folded Reload -; CHECK-RV32-FD-NEXT: lw a2, 304(sp) # 4-byte Folded Reload -; CHECK-RV32-FD-NEXT: lw a1, 308(sp) # 4-byte Folded Reload -; CHECK-RV32-FD-NEXT: lw a0, 312(sp) # 4-byte Folded Reload -; CHECK-RV32-FD-NEXT: lw s0, 316(sp) # 4-byte Folded Reload -; CHECK-RV32-FD-NEXT: lw t2, 320(sp) # 4-byte Folded Reload -; CHECK-RV32-FD-NEXT: lw t1, 324(sp) # 4-byte Folded Reload -; CHECK-RV32-FD-NEXT: lw t0, 328(sp) # 4-byte Folded Reload +; CHECK-RV32-FD-NEXT: fsd fs10, 16(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd fs9, 24(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd fs8, 32(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd fs7, 40(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd fs6, 48(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd fs5, 56(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd fs4, 64(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd fs3, 72(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd fs2, 80(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd fs1, 88(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd fs0, 96(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd ft11, 104(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd ft10, 112(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd ft9, 120(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd ft8, 128(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd fa7, 136(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd fa6, 144(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd fa5, 152(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd fa4, 160(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd fa3, 168(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd fa2, 176(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd fa1, 184(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd fa0, 192(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd ft7, 200(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd ft6, 208(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd ft5, 216(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd ft4, 224(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd ft3, 232(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd ft2, 240(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd ft1, 248(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: fsd ft0, 256(sp) # 8-byte Folded Spill +; CHECK-RV32-FD-NEXT: sw t6, 268(sp) # 4-byte Folded Spill +; CHECK-RV32-FD-NEXT: sw t5, 272(sp) # 4-byte Folded Spill +; CHECK-RV32-FD-NEXT: sw t4, 276(sp) # 4-byte Folded Spill +; CHECK-RV32-FD-NEXT: sw t3, 280(sp) # 4-byte Folded Spill +; CHECK-RV32-FD-NEXT: sw a7, 284(sp) # 4-byte Folded Spill +; CHECK-RV32-FD-NEXT: sw a6, 288(sp) # 4-byte Folded Spill +; CHECK-RV32-FD-NEXT: sw a5, 292(sp) # 4-byte Folded Spill +; CHECK-RV32-FD-NEXT: sw a4, 296(sp) # 4-byte Folded Spill +; CHECK-RV32-FD-NEXT: sw a3, 300(sp) # 4-byte Folded Spill +; CHECK-RV32-FD-NEXT: sw a2, 304(sp) # 4-byte Folded Spill +; CHECK-RV32-FD-NEXT: sw a1, 308(sp) # 4-byte Folded Spill +; CHECK-RV32-FD-NEXT: sw a0, 312(sp) # 4-byte Folded Spill +; CHECK-RV32-FD-NEXT: sw s0, 316(sp) # 4-byte Folded Spill +; CHECK-RV32-FD-NEXT: sw t2, 320(sp) # 4-byte Folded Spill +; CHECK-RV32-FD-NEXT: sw t1, 324(sp) # 4-byte Folded Spill +; CHECK-RV32-FD-NEXT: sw t0, 328(sp) # 4-byte Folded Spill +; CHECK-RV32-FD-NEXT: sw ra, 332(sp) # 4-byte Folded Spill +; CHECK-RV32-FD-NEXT: addi s0, sp, 336 +; CHECK-RV32-FD-NEXT: call otherfoo@plt ; CHECK-RV32-FD-NEXT: lw ra, 332(sp) # 4-byte Folded Reload +; CHECK-RV32-FD-NEXT: lw t0, 328(sp) # 4-byte Folded Reload +; CHECK-RV32-FD-NEXT: lw t1, 324(sp) # 4-byte Folded Reload +; CHECK-RV32-FD-NEXT: lw t2, 320(sp) # 4-byte Folded Reload +; CHECK-RV32-FD-NEXT: lw s0, 316(sp) # 4-byte Folded Reload +; CHECK-RV32-FD-NEXT: lw a0, 312(sp) # 4-byte Folded Reload +; CHECK-RV32-FD-NEXT: lw a1, 308(sp) # 4-byte Folded Reload +; CHECK-RV32-FD-NEXT: lw a2, 304(sp) # 4-byte Folded Reload +; CHECK-RV32-FD-NEXT: lw a3, 300(sp) # 4-byte Folded Reload +; CHECK-RV32-FD-NEXT: lw a4, 296(sp) # 4-byte Folded Reload +; CHECK-RV32-FD-NEXT: lw a5, 292(sp) # 4-byte Folded Reload +; CHECK-RV32-FD-NEXT: lw a6, 288(sp) # 4-byte Folded Reload +; CHECK-RV32-FD-NEXT: lw a7, 284(sp) # 4-byte Folded Reload +; CHECK-RV32-FD-NEXT: lw t3, 280(sp) # 4-byte Folded Reload +; CHECK-RV32-FD-NEXT: lw t4, 276(sp) # 4-byte Folded Reload +; CHECK-RV32-FD-NEXT: lw t5, 272(sp) # 4-byte Folded Reload +; CHECK-RV32-FD-NEXT: lw t6, 268(sp) # 4-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld ft0, 256(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld ft1, 248(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld ft2, 240(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld ft3, 232(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld ft4, 224(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld ft5, 216(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld ft6, 208(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld ft7, 200(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld fa0, 192(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld fa1, 184(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld fa2, 176(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld fa3, 168(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld fa4, 160(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld fa5, 152(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld fa6, 144(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld fa7, 136(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld ft8, 128(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld ft9, 120(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld ft10, 112(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld ft11, 104(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld fs0, 96(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld fs1, 88(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld fs2, 80(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld fs3, 72(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld fs4, 64(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld fs5, 56(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld fs6, 48(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld fs7, 40(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld fs8, 32(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld fs9, 24(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld fs10, 16(sp) # 8-byte Folded Reload +; CHECK-RV32-FD-NEXT: fld fs11, 8(sp) # 8-byte Folded Reload ; CHECK-RV32-FD-NEXT: addi sp, sp, 336 ; CHECK-RV32-FD-NEXT: mret ; ; CHECK-RV64-LABEL: foo_fp_with_call: ; CHECK-RV64: # %bb.0: ; CHECK-RV64-NEXT: addi sp, sp, -144 -; CHECK-RV64-NEXT: sd ra, 136(sp) # 8-byte Folded Spill -; CHECK-RV64-NEXT: sd t0, 128(sp) # 8-byte Folded Spill -; CHECK-RV64-NEXT: sd t1, 120(sp) # 8-byte Folded Spill -; CHECK-RV64-NEXT: sd t2, 112(sp) # 8-byte Folded Spill -; CHECK-RV64-NEXT: sd s0, 104(sp) # 8-byte Folded Spill -; CHECK-RV64-NEXT: sd a0, 96(sp) # 8-byte Folded Spill -; CHECK-RV64-NEXT: sd a1, 88(sp) # 8-byte Folded Spill -; CHECK-RV64-NEXT: sd a2, 80(sp) # 8-byte Folded Spill -; CHECK-RV64-NEXT: sd a3, 72(sp) # 8-byte Folded Spill -; CHECK-RV64-NEXT: sd a4, 64(sp) # 8-byte Folded Spill -; CHECK-RV64-NEXT: sd a5, 56(sp) # 8-byte Folded Spill -; CHECK-RV64-NEXT: sd a6, 48(sp) # 8-byte Folded Spill -; CHECK-RV64-NEXT: sd a7, 40(sp) # 8-byte Folded Spill -; CHECK-RV64-NEXT: sd t3, 32(sp) # 8-byte Folded Spill -; CHECK-RV64-NEXT: sd t4, 24(sp) # 8-byte Folded Spill -; CHECK-RV64-NEXT: sd t5, 16(sp) # 8-byte Folded Spill ; CHECK-RV64-NEXT: sd t6, 8(sp) # 8-byte Folded Spill +; CHECK-RV64-NEXT: sd t5, 16(sp) # 8-byte Folded Spill +; CHECK-RV64-NEXT: sd t4, 24(sp) # 8-byte Folded Spill +; CHECK-RV64-NEXT: sd t3, 32(sp) # 8-byte Folded Spill +; CHECK-RV64-NEXT: sd a7, 40(sp) # 8-byte Folded Spill +; CHECK-RV64-NEXT: sd a6, 48(sp) # 8-byte Folded Spill +; CHECK-RV64-NEXT: sd a5, 56(sp) # 8-byte Folded Spill +; CHECK-RV64-NEXT: sd a4, 64(sp) # 8-byte Folded Spill +; CHECK-RV64-NEXT: sd a3, 72(sp) # 8-byte Folded Spill +; CHECK-RV64-NEXT: sd a2, 80(sp) # 8-byte Folded Spill +; CHECK-RV64-NEXT: sd a1, 88(sp) # 8-byte Folded Spill +; CHECK-RV64-NEXT: sd a0, 96(sp) # 8-byte Folded Spill +; CHECK-RV64-NEXT: sd s0, 104(sp) # 8-byte Folded Spill +; CHECK-RV64-NEXT: sd t2, 112(sp) # 8-byte Folded Spill +; CHECK-RV64-NEXT: sd t1, 120(sp) # 8-byte Folded Spill +; CHECK-RV64-NEXT: sd t0, 128(sp) # 8-byte Folded Spill +; CHECK-RV64-NEXT: sd ra, 136(sp) # 8-byte Folded Spill ; CHECK-RV64-NEXT: addi s0, sp, 144 ; CHECK-RV64-NEXT: call otherfoo@plt -; CHECK-RV64-NEXT: ld t6, 8(sp) # 8-byte Folded Reload -; CHECK-RV64-NEXT: ld t5, 16(sp) # 8-byte Folded Reload -; CHECK-RV64-NEXT: ld t4, 24(sp) # 8-byte Folded Reload -; CHECK-RV64-NEXT: ld t3, 32(sp) # 8-byte Folded Reload -; CHECK-RV64-NEXT: ld a7, 40(sp) # 8-byte Folded Reload -; CHECK-RV64-NEXT: ld a6, 48(sp) # 8-byte Folded Reload -; CHECK-RV64-NEXT: ld a5, 56(sp) # 8-byte Folded Reload -; CHECK-RV64-NEXT: ld a4, 64(sp) # 8-byte Folded Reload -; CHECK-RV64-NEXT: ld a3, 72(sp) # 8-byte Folded Reload -; CHECK-RV64-NEXT: ld a2, 80(sp) # 8-byte Folded Reload -; CHECK-RV64-NEXT: ld a1, 88(sp) # 8-byte Folded Reload -; CHECK-RV64-NEXT: ld a0, 96(sp) # 8-byte Folded Reload -; CHECK-RV64-NEXT: ld s0, 104(sp) # 8-byte Folded Reload -; CHECK-RV64-NEXT: ld t2, 112(sp) # 8-byte Folded Reload -; CHECK-RV64-NEXT: ld t1, 120(sp) # 8-byte Folded Reload -; CHECK-RV64-NEXT: ld t0, 128(sp) # 8-byte Folded Reload ; CHECK-RV64-NEXT: ld ra, 136(sp) # 8-byte Folded Reload +; CHECK-RV64-NEXT: ld t0, 128(sp) # 8-byte Folded Reload +; CHECK-RV64-NEXT: ld t1, 120(sp) # 8-byte Folded Reload +; CHECK-RV64-NEXT: ld t2, 112(sp) # 8-byte Folded Reload +; CHECK-RV64-NEXT: ld s0, 104(sp) # 8-byte Folded Reload +; CHECK-RV64-NEXT: ld a0, 96(sp) # 8-byte Folded Reload +; CHECK-RV64-NEXT: ld a1, 88(sp) # 8-byte Folded Reload +; CHECK-RV64-NEXT: ld a2, 80(sp) # 8-byte Folded Reload +; CHECK-RV64-NEXT: ld a3, 72(sp) # 8-byte Folded Reload +; CHECK-RV64-NEXT: ld a4, 64(sp) # 8-byte Folded Reload +; CHECK-RV64-NEXT: ld a5, 56(sp) # 8-byte Folded Reload +; CHECK-RV64-NEXT: ld a6, 48(sp) # 8-byte Folded Reload +; CHECK-RV64-NEXT: ld a7, 40(sp) # 8-byte Folded Reload +; CHECK-RV64-NEXT: ld t3, 32(sp) # 8-byte Folded Reload +; CHECK-RV64-NEXT: ld t4, 24(sp) # 8-byte Folded Reload +; CHECK-RV64-NEXT: ld t5, 16(sp) # 8-byte Folded Reload +; CHECK-RV64-NEXT: ld t6, 8(sp) # 8-byte Folded Reload ; CHECK-RV64-NEXT: addi sp, sp, 144 ; CHECK-RV64-NEXT: mret ; ; CHECK-RV64-F-LABEL: foo_fp_with_call: ; CHECK-RV64-F: # %bb.0: ; CHECK-RV64-F-NEXT: addi sp, sp, -272 -; CHECK-RV64-F-NEXT: sd ra, 264(sp) # 8-byte Folded Spill -; CHECK-RV64-F-NEXT: sd t0, 256(sp) # 8-byte Folded Spill -; CHECK-RV64-F-NEXT: sd t1, 248(sp) # 8-byte Folded Spill -; CHECK-RV64-F-NEXT: sd t2, 240(sp) # 8-byte Folded Spill -; CHECK-RV64-F-NEXT: sd s0, 232(sp) # 8-byte Folded Spill -; CHECK-RV64-F-NEXT: sd a0, 224(sp) # 8-byte Folded Spill -; CHECK-RV64-F-NEXT: sd a1, 216(sp) # 8-byte Folded Spill -; CHECK-RV64-F-NEXT: sd a2, 208(sp) # 8-byte Folded Spill -; CHECK-RV64-F-NEXT: sd a3, 200(sp) # 8-byte Folded Spill -; CHECK-RV64-F-NEXT: sd a4, 192(sp) # 8-byte Folded Spill -; CHECK-RV64-F-NEXT: sd a5, 184(sp) # 8-byte Folded Spill -; CHECK-RV64-F-NEXT: sd a6, 176(sp) # 8-byte Folded Spill -; CHECK-RV64-F-NEXT: sd a7, 168(sp) # 8-byte Folded Spill -; CHECK-RV64-F-NEXT: sd t3, 160(sp) # 8-byte Folded Spill -; CHECK-RV64-F-NEXT: sd t4, 152(sp) # 8-byte Folded Spill -; CHECK-RV64-F-NEXT: sd t5, 144(sp) # 8-byte Folded Spill -; CHECK-RV64-F-NEXT: sd t6, 136(sp) # 8-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw ft0, 132(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw ft1, 128(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw ft2, 124(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw ft3, 120(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw ft4, 116(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw ft5, 112(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw ft6, 108(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw ft7, 104(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw fa0, 100(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw fa1, 96(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw fa2, 92(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw fa3, 88(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw fa4, 84(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw fa5, 80(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw fa6, 76(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw fa7, 72(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw ft8, 68(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw ft9, 64(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw ft10, 60(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw ft11, 56(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw fs0, 52(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw fs1, 48(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw fs2, 44(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw fs3, 40(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw fs4, 36(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw fs5, 32(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw fs6, 28(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw fs7, 24(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw fs8, 20(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw fs9, 16(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: fsw fs10, 12(sp) # 4-byte Folded Spill ; CHECK-RV64-F-NEXT: fsw fs11, 8(sp) # 4-byte Folded Spill -; CHECK-RV64-F-NEXT: addi s0, sp, 272 -; CHECK-RV64-F-NEXT: call otherfoo@plt -; CHECK-RV64-F-NEXT: flw fs11, 8(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw fs10, 12(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw fs9, 16(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw fs8, 20(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw fs7, 24(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw fs6, 28(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw fs5, 32(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw fs4, 36(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw fs3, 40(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw fs2, 44(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw fs1, 48(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw fs0, 52(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw ft11, 56(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw ft10, 60(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw ft9, 64(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw ft8, 68(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw fa7, 72(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw fa6, 76(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw fa5, 80(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw fa4, 84(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw fa3, 88(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw fa2, 92(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw fa1, 96(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw fa0, 100(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw ft7, 104(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw ft6, 108(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw ft5, 112(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw ft4, 116(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw ft3, 120(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw ft2, 124(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw ft1, 128(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: flw ft0, 132(sp) # 4-byte Folded Reload -; CHECK-RV64-F-NEXT: ld t6, 136(sp) # 8-byte Folded Reload -; CHECK-RV64-F-NEXT: ld t5, 144(sp) # 8-byte Folded Reload -; CHECK-RV64-F-NEXT: ld t4, 152(sp) # 8-byte Folded Reload -; CHECK-RV64-F-NEXT: ld t3, 160(sp) # 8-byte Folded Reload -; CHECK-RV64-F-NEXT: ld a7, 168(sp) # 8-byte Folded Reload -; CHECK-RV64-F-NEXT: ld a6, 176(sp) # 8-byte Folded Reload -; CHECK-RV64-F-NEXT: ld a5, 184(sp) # 8-byte Folded Reload -; CHECK-RV64-F-NEXT: ld a4, 192(sp) # 8-byte Folded Reload -; CHECK-RV64-F-NEXT: ld a3, 200(sp) # 8-byte Folded Reload -; CHECK-RV64-F-NEXT: ld a2, 208(sp) # 8-byte Folded Reload -; CHECK-RV64-F-NEXT: ld a1, 216(sp) # 8-byte Folded Reload -; CHECK-RV64-F-NEXT: ld a0, 224(sp) # 8-byte Folded Reload -; CHECK-RV64-F-NEXT: ld s0, 232(sp) # 8-byte Folded Reload -; CHECK-RV64-F-NEXT: ld t2, 240(sp) # 8-byte Folded Reload -; CHECK-RV64-F-NEXT: ld t1, 248(sp) # 8-byte Folded Reload -; CHECK-RV64-F-NEXT: ld t0, 256(sp) # 8-byte Folded Reload +; CHECK-RV64-F-NEXT: fsw fs10, 12(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw fs9, 16(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw fs8, 20(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw fs7, 24(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw fs6, 28(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw fs5, 32(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw fs4, 36(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw fs3, 40(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw fs2, 44(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw fs1, 48(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw fs0, 52(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw ft11, 56(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw ft10, 60(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw ft9, 64(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw ft8, 68(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw fa7, 72(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw fa6, 76(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw fa5, 80(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw fa4, 84(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw fa3, 88(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw fa2, 92(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw fa1, 96(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw fa0, 100(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw ft7, 104(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw ft6, 108(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw ft5, 112(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw ft4, 116(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw ft3, 120(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw ft2, 124(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw ft1, 128(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: fsw ft0, 132(sp) # 4-byte Folded Spill +; CHECK-RV64-F-NEXT: sd t6, 136(sp) # 8-byte Folded Spill +; CHECK-RV64-F-NEXT: sd t5, 144(sp) # 8-byte Folded Spill +; CHECK-RV64-F-NEXT: sd t4, 152(sp) # 8-byte Folded Spill +; CHECK-RV64-F-NEXT: sd t3, 160(sp) # 8-byte Folded Spill +; CHECK-RV64-F-NEXT: sd a7, 168(sp) # 8-byte Folded Spill +; CHECK-RV64-F-NEXT: sd a6, 176(sp) # 8-byte Folded Spill +; CHECK-RV64-F-NEXT: sd a5, 184(sp) # 8-byte Folded Spill +; CHECK-RV64-F-NEXT: sd a4, 192(sp) # 8-byte Folded Spill +; CHECK-RV64-F-NEXT: sd a3, 200(sp) # 8-byte Folded Spill +; CHECK-RV64-F-NEXT: sd a2, 208(sp) # 8-byte Folded Spill +; CHECK-RV64-F-NEXT: sd a1, 216(sp) # 8-byte Folded Spill +; CHECK-RV64-F-NEXT: sd a0, 224(sp) # 8-byte Folded Spill +; CHECK-RV64-F-NEXT: sd s0, 232(sp) # 8-byte Folded Spill +; CHECK-RV64-F-NEXT: sd t2, 240(sp) # 8-byte Folded Spill +; CHECK-RV64-F-NEXT: sd t1, 248(sp) # 8-byte Folded Spill +; CHECK-RV64-F-NEXT: sd t0, 256(sp) # 8-byte Folded Spill +; CHECK-RV64-F-NEXT: sd ra, 264(sp) # 8-byte Folded Spill +; CHECK-RV64-F-NEXT: addi s0, sp, 272 +; CHECK-RV64-F-NEXT: call otherfoo@plt ; CHECK-RV64-F-NEXT: ld ra, 264(sp) # 8-byte Folded Reload +; CHECK-RV64-F-NEXT: ld t0, 256(sp) # 8-byte Folded Reload +; CHECK-RV64-F-NEXT: ld t1, 248(sp) # 8-byte Folded Reload +; CHECK-RV64-F-NEXT: ld t2, 240(sp) # 8-byte Folded Reload +; CHECK-RV64-F-NEXT: ld s0, 232(sp) # 8-byte Folded Reload +; CHECK-RV64-F-NEXT: ld a0, 224(sp) # 8-byte Folded Reload +; CHECK-RV64-F-NEXT: ld a1, 216(sp) # 8-byte Folded Reload +; CHECK-RV64-F-NEXT: ld a2, 208(sp) # 8-byte Folded Reload +; CHECK-RV64-F-NEXT: ld a3, 200(sp) # 8-byte Folded Reload +; CHECK-RV64-F-NEXT: ld a4, 192(sp) # 8-byte Folded Reload +; CHECK-RV64-F-NEXT: ld a5, 184(sp) # 8-byte Folded Reload +; CHECK-RV64-F-NEXT: ld a6, 176(sp) # 8-byte Folded Reload +; CHECK-RV64-F-NEXT: ld a7, 168(sp) # 8-byte Folded Reload +; CHECK-RV64-F-NEXT: ld t3, 160(sp) # 8-byte Folded Reload +; CHECK-RV64-F-NEXT: ld t4, 152(sp) # 8-byte Folded Reload +; CHECK-RV64-F-NEXT: ld t5, 144(sp) # 8-byte Folded Reload +; CHECK-RV64-F-NEXT: ld t6, 136(sp) # 8-byte Folded Reload +; CHECK-RV64-F-NEXT: flw ft0, 132(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw ft1, 128(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw ft2, 124(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw ft3, 120(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw ft4, 116(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw ft5, 112(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw ft6, 108(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw ft7, 104(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw fa0, 100(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw fa1, 96(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw fa2, 92(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw fa3, 88(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw fa4, 84(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw fa5, 80(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw fa6, 76(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw fa7, 72(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw ft8, 68(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw ft9, 64(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw ft10, 60(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw ft11, 56(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw fs0, 52(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw fs1, 48(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw fs2, 44(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw fs3, 40(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw fs4, 36(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw fs5, 32(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw fs6, 28(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw fs7, 24(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw fs8, 20(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw fs9, 16(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw fs10, 12(sp) # 4-byte Folded Reload +; CHECK-RV64-F-NEXT: flw fs11, 8(sp) # 4-byte Folded Reload ; CHECK-RV64-F-NEXT: addi sp, sp, 272 ; CHECK-RV64-F-NEXT: mret ; ; CHECK-RV64-FD-LABEL: foo_fp_with_call: ; CHECK-RV64-FD: # %bb.0: ; CHECK-RV64-FD-NEXT: addi sp, sp, -400 -; CHECK-RV64-FD-NEXT: sd ra, 392(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: sd t0, 384(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: sd t1, 376(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: sd t2, 368(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: sd s0, 360(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: sd a0, 352(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: sd a1, 344(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: sd a2, 336(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: sd a3, 328(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: sd a4, 320(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: sd a5, 312(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: sd a6, 304(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: sd a7, 296(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: sd t3, 288(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: sd t4, 280(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: sd t5, 272(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: sd t6, 264(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd ft0, 256(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd ft1, 248(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd ft2, 240(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd ft3, 232(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd ft4, 224(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd ft5, 216(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd ft6, 208(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd ft7, 200(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd fa0, 192(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd fa1, 184(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd fa2, 176(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd fa3, 168(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd fa4, 160(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd fa5, 152(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd fa6, 144(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd fa7, 136(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd ft8, 128(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd ft9, 120(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd ft10, 112(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd ft11, 104(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd fs0, 96(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd fs1, 88(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd fs2, 80(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd fs3, 72(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd fs4, 64(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd fs5, 56(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd fs6, 48(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd fs7, 40(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd fs8, 32(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd fs9, 24(sp) # 8-byte Folded Spill -; CHECK-RV64-FD-NEXT: fsd fs10, 16(sp) # 8-byte Folded Spill ; CHECK-RV64-FD-NEXT: fsd fs11, 8(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd fs10, 16(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd fs9, 24(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd fs8, 32(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd fs7, 40(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd fs6, 48(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd fs5, 56(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd fs4, 64(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd fs3, 72(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd fs2, 80(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd fs1, 88(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd fs0, 96(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd ft11, 104(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd ft10, 112(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd ft9, 120(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd ft8, 128(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd fa7, 136(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd fa6, 144(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd fa5, 152(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd fa4, 160(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd fa3, 168(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd fa2, 176(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd fa1, 184(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd fa0, 192(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd ft7, 200(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd ft6, 208(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd ft5, 216(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd ft4, 224(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd ft3, 232(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd ft2, 240(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd ft1, 248(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: fsd ft0, 256(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: sd t6, 264(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: sd t5, 272(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: sd t4, 280(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: sd t3, 288(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: sd a7, 296(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: sd a6, 304(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: sd a5, 312(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: sd a4, 320(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: sd a3, 328(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: sd a2, 336(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: sd a1, 344(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: sd a0, 352(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: sd s0, 360(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: sd t2, 368(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: sd t1, 376(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: sd t0, 384(sp) # 8-byte Folded Spill +; CHECK-RV64-FD-NEXT: sd ra, 392(sp) # 8-byte Folded Spill ; CHECK-RV64-FD-NEXT: addi s0, sp, 400 ; CHECK-RV64-FD-NEXT: call otherfoo@plt -; CHECK-RV64-FD-NEXT: fld fs11, 8(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld fs10, 16(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld fs9, 24(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld fs8, 32(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld fs7, 40(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld fs6, 48(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld fs5, 56(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld fs4, 64(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld fs3, 72(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld fs2, 80(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld fs1, 88(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld fs0, 96(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld ft11, 104(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld ft10, 112(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld ft9, 120(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld ft8, 128(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld fa7, 136(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld fa6, 144(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld fa5, 152(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld fa4, 160(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld fa3, 168(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld fa2, 176(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld fa1, 184(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld fa0, 192(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld ft7, 200(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld ft6, 208(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld ft5, 216(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld ft4, 224(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld ft3, 232(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld ft2, 240(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld ft1, 248(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: fld ft0, 256(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: ld t6, 264(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: ld t5, 272(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: ld t4, 280(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: ld t3, 288(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: ld a7, 296(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: ld a6, 304(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: ld a5, 312(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: ld a4, 320(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: ld a3, 328(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: ld a2, 336(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: ld a1, 344(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: ld a0, 352(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: ld s0, 360(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: ld t2, 368(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: ld t1, 376(sp) # 8-byte Folded Reload -; CHECK-RV64-FD-NEXT: ld t0, 384(sp) # 8-byte Folded Reload ; CHECK-RV64-FD-NEXT: ld ra, 392(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: ld t0, 384(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: ld t1, 376(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: ld t2, 368(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: ld s0, 360(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: ld a0, 352(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: ld a1, 344(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: ld a2, 336(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: ld a3, 328(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: ld a4, 320(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: ld a5, 312(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: ld a6, 304(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: ld a7, 296(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: ld t3, 288(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: ld t4, 280(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: ld t5, 272(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: ld t6, 264(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld ft0, 256(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld ft1, 248(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld ft2, 240(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld ft3, 232(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld ft4, 224(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld ft5, 216(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld ft6, 208(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld ft7, 200(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld fa0, 192(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld fa1, 184(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld fa2, 176(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld fa3, 168(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld fa4, 160(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld fa5, 152(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld fa6, 144(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld fa7, 136(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld ft8, 128(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld ft9, 120(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld ft10, 112(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld ft11, 104(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld fs0, 96(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld fs1, 88(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld fs2, 80(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld fs3, 72(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld fs4, 64(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld fs5, 56(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld fs6, 48(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld fs7, 40(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld fs8, 32(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld fs9, 24(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld fs10, 16(sp) # 8-byte Folded Reload +; CHECK-RV64-FD-NEXT: fld fs11, 8(sp) # 8-byte Folded Reload ; CHECK-RV64-FD-NEXT: addi sp, sp, 400 ; CHECK-RV64-FD-NEXT: mret %call = call i32 bitcast (i32 (...)* @otherfoo to i32 ()*)() diff --git a/llvm/test/CodeGen/RISCV/large-stack.ll b/llvm/test/CodeGen/RISCV/large-stack.ll --- a/llvm/test/CodeGen/RISCV/large-stack.ll +++ b/llvm/test/CodeGen/RISCV/large-stack.ll @@ -22,10 +22,10 @@ ; RV32I-WITHFP: # %bb.0: ; RV32I-WITHFP-NEXT: addi sp, sp, -2032 ; RV32I-WITHFP-NEXT: .cfi_def_cfa_offset 2032 -; RV32I-WITHFP-NEXT: sw ra, 2028(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: sw s0, 2024(sp) # 4-byte Folded Spill -; RV32I-WITHFP-NEXT: .cfi_offset ra, -4 +; RV32I-WITHFP-NEXT: sw ra, 2028(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: .cfi_offset s0, -8 +; RV32I-WITHFP-NEXT: .cfi_offset ra, -4 ; RV32I-WITHFP-NEXT: addi s0, sp, 2032 ; RV32I-WITHFP-NEXT: .cfi_def_cfa s0, 0 ; RV32I-WITHFP-NEXT: lui a0, 74565 @@ -34,8 +34,8 @@ ; RV32I-WITHFP-NEXT: lui a0, 74565 ; RV32I-WITHFP-NEXT: addi a0, a0, -352 ; RV32I-WITHFP-NEXT: add sp, sp, a0 -; RV32I-WITHFP-NEXT: lw s0, 2024(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: lw ra, 2028(sp) # 4-byte Folded Reload +; RV32I-WITHFP-NEXT: lw s0, 2024(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: addi sp, sp, 2032 ; RV32I-WITHFP-NEXT: ret %tmp = alloca [ 305419896 x i8 ] , align 4 @@ -50,10 +50,10 @@ ; RV32I-FPELIM: # %bb.0: ; RV32I-FPELIM-NEXT: addi sp, sp, -2032 ; RV32I-FPELIM-NEXT: .cfi_def_cfa_offset 2032 -; RV32I-FPELIM-NEXT: sw s0, 2028(sp) # 4-byte Folded Spill ; RV32I-FPELIM-NEXT: sw s1, 2024(sp) # 4-byte Folded Spill -; RV32I-FPELIM-NEXT: .cfi_offset s0, -4 +; RV32I-FPELIM-NEXT: sw s0, 2028(sp) # 4-byte Folded Spill ; RV32I-FPELIM-NEXT: .cfi_offset s1, -8 +; RV32I-FPELIM-NEXT: .cfi_offset s0, -4 ; RV32I-FPELIM-NEXT: lui a1, 97 ; RV32I-FPELIM-NEXT: addi a1, a1, 672 ; RV32I-FPELIM-NEXT: sub sp, sp, a1 @@ -74,8 +74,8 @@ ; RV32I-FPELIM-NEXT: lui a0, 97 ; RV32I-FPELIM-NEXT: addi a0, a0, 672 ; RV32I-FPELIM-NEXT: add sp, sp, a0 -; RV32I-FPELIM-NEXT: lw s1, 2024(sp) # 4-byte Folded Reload ; RV32I-FPELIM-NEXT: lw s0, 2028(sp) # 4-byte Folded Reload +; RV32I-FPELIM-NEXT: lw s1, 2024(sp) # 4-byte Folded Reload ; RV32I-FPELIM-NEXT: addi sp, sp, 2032 ; RV32I-FPELIM-NEXT: ret ; @@ -83,14 +83,14 @@ ; RV32I-WITHFP: # %bb.0: ; RV32I-WITHFP-NEXT: addi sp, sp, -2032 ; RV32I-WITHFP-NEXT: .cfi_def_cfa_offset 2032 -; RV32I-WITHFP-NEXT: sw ra, 2028(sp) # 4-byte Folded Spill -; RV32I-WITHFP-NEXT: sw s0, 2024(sp) # 4-byte Folded Spill -; RV32I-WITHFP-NEXT: sw s1, 2020(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: sw s2, 2016(sp) # 4-byte Folded Spill -; RV32I-WITHFP-NEXT: .cfi_offset ra, -4 -; RV32I-WITHFP-NEXT: .cfi_offset s0, -8 -; RV32I-WITHFP-NEXT: .cfi_offset s1, -12 +; RV32I-WITHFP-NEXT: sw s1, 2020(sp) # 4-byte Folded Spill +; RV32I-WITHFP-NEXT: sw s0, 2024(sp) # 4-byte Folded Spill +; RV32I-WITHFP-NEXT: sw ra, 2028(sp) # 4-byte Folded Spill ; RV32I-WITHFP-NEXT: .cfi_offset s2, -16 +; RV32I-WITHFP-NEXT: .cfi_offset s1, -12 +; RV32I-WITHFP-NEXT: .cfi_offset s0, -8 +; RV32I-WITHFP-NEXT: .cfi_offset ra, -4 ; RV32I-WITHFP-NEXT: addi s0, sp, 2032 ; RV32I-WITHFP-NEXT: .cfi_def_cfa s0, 0 ; RV32I-WITHFP-NEXT: lui a1, 97 @@ -114,10 +114,10 @@ ; RV32I-WITHFP-NEXT: lui a0, 97 ; RV32I-WITHFP-NEXT: addi a0, a0, 688 ; RV32I-WITHFP-NEXT: add sp, sp, a0 -; RV32I-WITHFP-NEXT: lw s2, 2016(sp) # 4-byte Folded Reload -; RV32I-WITHFP-NEXT: lw s1, 2020(sp) # 4-byte Folded Reload -; RV32I-WITHFP-NEXT: lw s0, 2024(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: lw ra, 2028(sp) # 4-byte Folded Reload +; RV32I-WITHFP-NEXT: lw s0, 2024(sp) # 4-byte Folded Reload +; RV32I-WITHFP-NEXT: lw s1, 2020(sp) # 4-byte Folded Reload +; RV32I-WITHFP-NEXT: lw s2, 2016(sp) # 4-byte Folded Reload ; RV32I-WITHFP-NEXT: addi sp, sp, 2032 ; RV32I-WITHFP-NEXT: ret %data = alloca [ 100000 x i32 ] , align 4 diff --git a/llvm/test/CodeGen/RISCV/mul.ll b/llvm/test/CodeGen/RISCV/mul.ll --- a/llvm/test/CodeGen/RISCV/mul.ll +++ b/llvm/test/CodeGen/RISCV/mul.ll @@ -1190,9 +1190,9 @@ ; RV32IM-LABEL: muli128_m3840: ; RV32IM: # %bb.0: ; RV32IM-NEXT: addi sp, sp, -16 -; RV32IM-NEXT: sw s0, 12(sp) # 4-byte Folded Spill -; RV32IM-NEXT: sw s1, 8(sp) # 4-byte Folded Spill ; RV32IM-NEXT: sw s2, 4(sp) # 4-byte Folded Spill +; RV32IM-NEXT: sw s1, 8(sp) # 4-byte Folded Spill +; RV32IM-NEXT: sw s0, 12(sp) # 4-byte Folded Spill ; RV32IM-NEXT: lw a6, 12(a1) ; RV32IM-NEXT: lw a7, 8(a1) ; RV32IM-NEXT: lw a4, 0(a1) @@ -1239,9 +1239,9 @@ ; RV32IM-NEXT: sw t0, 4(a0) ; RV32IM-NEXT: sw t6, 8(a0) ; RV32IM-NEXT: sw a1, 12(a0) -; RV32IM-NEXT: lw s2, 4(sp) # 4-byte Folded Reload -; RV32IM-NEXT: lw s1, 8(sp) # 4-byte Folded Reload ; RV32IM-NEXT: lw s0, 12(sp) # 4-byte Folded Reload +; RV32IM-NEXT: lw s1, 8(sp) # 4-byte Folded Reload +; RV32IM-NEXT: lw s2, 4(sp) # 4-byte Folded Reload ; RV32IM-NEXT: addi sp, sp, 16 ; RV32IM-NEXT: ret ; @@ -1317,8 +1317,8 @@ ; RV32IM-LABEL: muli128_m63: ; RV32IM: # %bb.0: ; RV32IM-NEXT: addi sp, sp, -16 -; RV32IM-NEXT: sw s0, 12(sp) # 4-byte Folded Spill ; RV32IM-NEXT: sw s1, 8(sp) # 4-byte Folded Spill +; RV32IM-NEXT: sw s0, 12(sp) # 4-byte Folded Spill ; RV32IM-NEXT: lw a7, 12(a1) ; RV32IM-NEXT: lw a3, 0(a1) ; RV32IM-NEXT: lw a4, 4(a1) @@ -1370,8 +1370,8 @@ ; RV32IM-NEXT: sw t0, 4(a0) ; RV32IM-NEXT: sw t6, 8(a0) ; RV32IM-NEXT: sw a1, 12(a0) -; RV32IM-NEXT: lw s1, 8(sp) # 4-byte Folded Reload ; RV32IM-NEXT: lw s0, 12(sp) # 4-byte Folded Reload +; RV32IM-NEXT: lw s1, 8(sp) # 4-byte Folded Reload ; RV32IM-NEXT: addi sp, sp, 16 ; RV32IM-NEXT: ret ; @@ -1406,17 +1406,17 @@ ; RV32I-LABEL: mulhsu_i64: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -48 -; RV32I-NEXT: sw ra, 44(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 40(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 36(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 32(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s3, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s4, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s5, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s6, 16(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s7, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s8, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s9, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s8, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s7, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s6, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s5, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s4, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s3, 28(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 32(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 36(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 40(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 44(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a3 ; RV32I-NEXT: mv s5, a2 ; RV32I-NEXT: mv s2, a1 @@ -1476,17 +1476,17 @@ ; RV32I-NEXT: add a0, a5, a0 ; RV32I-NEXT: add a1, a0, a4 ; RV32I-NEXT: mv a0, a2 -; RV32I-NEXT: lw s9, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s8, 8(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s7, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s6, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s5, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s4, 24(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s3, 28(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 32(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 36(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 40(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 44(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 40(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 36(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 32(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s4, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s5, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s6, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s7, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s8, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s9, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 48 ; RV32I-NEXT: ret ; diff --git a/llvm/test/CodeGen/RISCV/out-of-reach-emergency-slot.mir b/llvm/test/CodeGen/RISCV/out-of-reach-emergency-slot.mir --- a/llvm/test/CodeGen/RISCV/out-of-reach-emergency-slot.mir +++ b/llvm/test/CodeGen/RISCV/out-of-reach-emergency-slot.mir @@ -21,8 +21,8 @@ ; CHECK-LABEL: foo: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: addi sp, sp, -2032 - ; CHECK-NEXT: sd ra, 2024(sp) # 8-byte Folded Spill ; CHECK-NEXT: sd s0, 2016(sp) # 8-byte Folded Spill + ; CHECK-NEXT: sd ra, 2024(sp) # 8-byte Folded Spill ; CHECK-NEXT: addi s0, sp, 2032 ; CHECK-NEXT: sd a1, 0(sp) ; CHECK-NEXT: lui a1, 2 @@ -41,8 +41,8 @@ ; CHECK-NEXT: lui a0, 2 ; CHECK-NEXT: addiw a0, a0, -2032 ; CHECK-NEXT: add sp, sp, a0 - ; CHECK-NEXT: ld s0, 2016(sp) # 8-byte Folded Reload ; CHECK-NEXT: ld ra, 2024(sp) # 8-byte Folded Reload + ; CHECK-NEXT: ld s0, 2016(sp) # 8-byte Folded Reload ; CHECK-NEXT: addi sp, sp, 2032 ; CHECK-NEXT: ret entry: diff --git a/llvm/test/CodeGen/RISCV/remat.ll b/llvm/test/CodeGen/RISCV/remat.ll --- a/llvm/test/CodeGen/RISCV/remat.ll +++ b/llvm/test/CodeGen/RISCV/remat.ll @@ -24,19 +24,19 @@ ; RV32I-LABEL: test: ; RV32I: # %bb.0: # %entry ; RV32I-NEXT: addi sp, sp, -64 -; RV32I-NEXT: sw ra, 60(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 56(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 52(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 48(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s3, 44(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s4, 40(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s5, 36(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s6, 32(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s7, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s8, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s9, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s10, 16(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s11, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s10, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s9, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s8, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s7, 28(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s6, 32(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s5, 36(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s4, 40(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s3, 44(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 48(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 52(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 56(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 60(sp) # 4-byte Folded Spill ; RV32I-NEXT: lui s6, %hi(a) ; RV32I-NEXT: lw a0, %lo(a)(s6) ; RV32I-NEXT: beqz a0, .LBB0_11 @@ -113,19 +113,19 @@ ; RV32I-NEXT: j .LBB0_2 ; RV32I-NEXT: .LBB0_11: # %for.end ; RV32I-NEXT: addi a0, zero, 1 -; RV32I-NEXT: lw s11, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s10, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s9, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s8, 24(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s7, 28(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s6, 32(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s5, 36(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s4, 40(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s3, 44(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 48(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 52(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 56(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 60(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 56(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 52(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 48(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 44(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s4, 40(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s5, 36(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s6, 32(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s7, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s8, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s9, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s10, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s11, 12(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 64 ; RV32I-NEXT: ret entry: diff --git a/llvm/test/CodeGen/RISCV/rv32i-rv64i-float-double.ll b/llvm/test/CodeGen/RISCV/rv32i-rv64i-float-double.ll --- a/llvm/test/CodeGen/RISCV/rv32i-rv64i-float-double.ll +++ b/llvm/test/CodeGen/RISCV/rv32i-rv64i-float-double.ll @@ -15,28 +15,28 @@ ; RV32IF-LABEL: float_test: ; RV32IF: # %bb.0: ; RV32IF-NEXT: addi sp, sp, -16 -; RV32IF-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32IF-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32IF-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32IF-NEXT: mv s0, a1 ; RV32IF-NEXT: call __addsf3@plt ; RV32IF-NEXT: mv a1, s0 ; RV32IF-NEXT: call __divsf3@plt -; RV32IF-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32IF-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32IF-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32IF-NEXT: addi sp, sp, 16 ; RV32IF-NEXT: ret ; ; RV64IF-LABEL: float_test: ; RV64IF: # %bb.0: ; RV64IF-NEXT: addi sp, sp, -16 -; RV64IF-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64IF-NEXT: sd s0, 0(sp) # 8-byte Folded Spill +; RV64IF-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64IF-NEXT: mv s0, a1 ; RV64IF-NEXT: call __addsf3@plt ; RV64IF-NEXT: mv a1, s0 ; RV64IF-NEXT: call __divsf3@plt -; RV64IF-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64IF-NEXT: ld ra, 8(sp) # 8-byte Folded Reload +; RV64IF-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64IF-NEXT: addi sp, sp, 16 ; RV64IF-NEXT: ret %1 = fadd float %a, %b @@ -48,32 +48,32 @@ ; RV32IF-LABEL: double_test: ; RV32IF: # %bb.0: ; RV32IF-NEXT: addi sp, sp, -16 -; RV32IF-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32IF-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32IF-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32IF-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32IF-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32IF-NEXT: mv s0, a3 ; RV32IF-NEXT: mv s1, a2 ; RV32IF-NEXT: call __adddf3@plt ; RV32IF-NEXT: mv a2, s1 ; RV32IF-NEXT: mv a3, s0 ; RV32IF-NEXT: call __divdf3@plt -; RV32IF-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32IF-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32IF-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32IF-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32IF-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32IF-NEXT: addi sp, sp, 16 ; RV32IF-NEXT: ret ; ; RV64IF-LABEL: double_test: ; RV64IF: # %bb.0: ; RV64IF-NEXT: addi sp, sp, -16 -; RV64IF-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64IF-NEXT: sd s0, 0(sp) # 8-byte Folded Spill +; RV64IF-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64IF-NEXT: mv s0, a1 ; RV64IF-NEXT: call __adddf3@plt ; RV64IF-NEXT: mv a1, s0 ; RV64IF-NEXT: call __divdf3@plt -; RV64IF-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64IF-NEXT: ld ra, 8(sp) # 8-byte Folded Reload +; RV64IF-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64IF-NEXT: addi sp, sp, 16 ; RV64IF-NEXT: ret %1 = fadd double %a, %b diff --git a/llvm/test/CodeGen/RISCV/rv32i-rv64i-half.ll b/llvm/test/CodeGen/RISCV/rv32i-rv64i-half.ll --- a/llvm/test/CodeGen/RISCV/rv32i-rv64i-half.ll +++ b/llvm/test/CodeGen/RISCV/rv32i-rv64i-half.ll @@ -13,10 +13,10 @@ ; RV32I-LABEL: half_test: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s2, 0(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a1 ; RV32I-NEXT: lui a1, 16 ; RV32I-NEXT: addi s1, a1, -1 @@ -35,20 +35,20 @@ ; RV32I-NEXT: mv a1, s0 ; RV32I-NEXT: call __divsf3@plt ; RV32I-NEXT: call __gnu_f2h_ieee@plt -; RV32I-NEXT: lw s2, 0(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 0(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; ; RV64I-LABEL: half_test: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s2, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a1 ; RV64I-NEXT: lui a1, 16 ; RV64I-NEXT: addiw s1, a1, -1 @@ -67,10 +67,10 @@ ; RV64I-NEXT: mv a1, s0 ; RV64I-NEXT: call __divsf3@plt ; RV64I-NEXT: call __gnu_f2h_ieee@plt -; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret %1 = fadd half %a, %b diff --git a/llvm/test/CodeGen/RISCV/rv32zbb.ll b/llvm/test/CodeGen/RISCV/rv32zbb.ll --- a/llvm/test/CodeGen/RISCV/rv32zbb.ll +++ b/llvm/test/CodeGen/RISCV/rv32zbb.ll @@ -65,14 +65,14 @@ ; RV32I-LABEL: ctlz_i64: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s5, 4(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s6, 0(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s5, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s3, a1 ; RV32I-NEXT: mv s4, a0 ; RV32I-NEXT: srli a0, a1, 1 @@ -139,14 +139,14 @@ ; RV32I-NEXT: srli a0, s2, 24 ; RV32I-NEXT: .LBB1_3: ; RV32I-NEXT: mv a1, zero -; RV32I-NEXT: lw s6, 0(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s5, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s5, 4(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s6, 0(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -219,14 +219,14 @@ ; RV32I-LABEL: cttz_i64: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s5, 4(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s6, 0(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s5, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s3, a1 ; RV32I-NEXT: mv s4, a0 ; RV32I-NEXT: addi a0, a0, -1 @@ -277,14 +277,14 @@ ; RV32I-NEXT: srli a0, s2, 24 ; RV32I-NEXT: .LBB3_3: ; RV32I-NEXT: mv a1, zero -; RV32I-NEXT: lw s6, 0(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s5, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s5, 4(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s6, 0(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -349,13 +349,13 @@ ; RV32I-LABEL: ctpop_i64: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s5, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s2, a0 ; RV32I-NEXT: srli a0, a1, 1 ; RV32I-NEXT: lui a2, 349525 @@ -393,13 +393,13 @@ ; RV32I-NEXT: srli a0, a0, 24 ; RV32I-NEXT: add a0, a0, s5 ; RV32I-NEXT: mv a1, zero -; RV32I-NEXT: lw s5, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s5, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; diff --git a/llvm/test/CodeGen/RISCV/rv64i-complex-float.ll b/llvm/test/CodeGen/RISCV/rv64i-complex-float.ll --- a/llvm/test/CodeGen/RISCV/rv64i-complex-float.ll +++ b/llvm/test/CodeGen/RISCV/rv64i-complex-float.ll @@ -9,10 +9,10 @@ ; CHECK-LABEL: complex_float_add: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: addi sp, sp, -32 -; CHECK-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; CHECK-NEXT: sd s0, 16(sp) # 8-byte Folded Spill -; CHECK-NEXT: sd s1, 8(sp) # 8-byte Folded Spill ; CHECK-NEXT: sd s2, 0(sp) # 8-byte Folded Spill +; CHECK-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; CHECK-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; CHECK-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; CHECK-NEXT: srli s2, a0, 32 ; CHECK-NEXT: srli s1, a1, 32 ; CHECK-NEXT: call __addsf3@plt @@ -24,10 +24,10 @@ ; CHECK-NEXT: slli a1, s0, 32 ; CHECK-NEXT: srli a1, a1, 32 ; CHECK-NEXT: or a0, a0, a1 -; CHECK-NEXT: ld s2, 0(sp) # 8-byte Folded Reload -; CHECK-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; CHECK-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; CHECK-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; CHECK-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; CHECK-NEXT: ld s1, 8(sp) # 8-byte Folded Reload +; CHECK-NEXT: ld s2, 0(sp) # 8-byte Folded Reload ; CHECK-NEXT: addi sp, sp, 32 ; CHECK-NEXT: ret entry: diff --git a/llvm/test/CodeGen/RISCV/rv64zbb.ll b/llvm/test/CodeGen/RISCV/rv64zbb.ll --- a/llvm/test/CodeGen/RISCV/rv64zbb.ll +++ b/llvm/test/CodeGen/RISCV/rv64zbb.ll @@ -122,8 +122,8 @@ ; RV64I-LABEL: log2_ceil_i32: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -16 -; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s0, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: addiw a0, a0, -1 ; RV64I-NEXT: addi s0, zero, 32 ; RV64I-NEXT: addi a1, zero, 32 @@ -162,8 +162,8 @@ ; RV64I-NEXT: srliw a1, a0, 24 ; RV64I-NEXT: .LBB2_2: # %cond.end ; RV64I-NEXT: sub a0, s0, a1 -; RV64I-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 16 ; RV64I-NEXT: ret ; @@ -184,8 +184,8 @@ ; RV64I-LABEL: findLastSet_i32: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -16 -; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s0, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: srliw a0, a0, 1 ; RV64I-NEXT: or a0, s0, a0 @@ -224,8 +224,8 @@ ; RV64I-NEXT: srliw a0, a1, 24 ; RV64I-NEXT: xori a0, a0, 31 ; RV64I-NEXT: .LBB3_2: -; RV64I-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 16 ; RV64I-NEXT: ret ; @@ -476,8 +476,8 @@ ; RV64I-LABEL: findFirstSet_i32: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -16 -; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s0, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: addiw a0, a0, -1 ; RV64I-NEXT: not a1, s0 @@ -507,8 +507,8 @@ ; RV64I-NEXT: # %bb.1: ; RV64I-NEXT: srliw a0, a1, 24 ; RV64I-NEXT: .LBB8_2: -; RV64I-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 16 ; RV64I-NEXT: ret ; @@ -531,8 +531,8 @@ ; RV64I-LABEL: ffs_i32: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -16 -; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s0, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: addiw a0, a0, -1 ; RV64I-NEXT: not a1, s0 @@ -563,8 +563,8 @@ ; RV64I-NEXT: srliw a0, a1, 24 ; RV64I-NEXT: addi a0, a0, 1 ; RV64I-NEXT: .LBB9_2: -; RV64I-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 16 ; RV64I-NEXT: ret ; diff --git a/llvm/test/CodeGen/RISCV/rvv/addi-scalable-offset.mir b/llvm/test/CodeGen/RISCV/rvv/addi-scalable-offset.mir --- a/llvm/test/CodeGen/RISCV/rvv/addi-scalable-offset.mir +++ b/llvm/test/CodeGen/RISCV/rvv/addi-scalable-offset.mir @@ -30,10 +30,10 @@ ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: $x2 = frame-setup ADDI $x2, -2032 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 2032 - ; CHECK-NEXT: SD killed $x1, $x2, 2024 :: (store (s64) into %stack.3) ; CHECK-NEXT: SD killed $x8, $x2, 2016 :: (store (s64) into %stack.4) - ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $x1, -8 + ; CHECK-NEXT: SD killed $x1, $x2, 2024 :: (store (s64) into %stack.3) ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $x8, -16 + ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $x1, -8 ; CHECK-NEXT: $x8 = frame-setup ADDI $x2, 2032 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION def_cfa $x8, 0 ; CHECK-NEXT: $x2 = frame-setup ADDI $x2, -240 @@ -50,8 +50,8 @@ ; CHECK-NEXT: $x10 = frame-destroy PseudoReadVLENB ; CHECK-NEXT: $x2 = frame-destroy ADD $x2, killed $x10 ; CHECK-NEXT: $x2 = frame-destroy ADDI $x2, 240 - ; CHECK-NEXT: $x8 = LD $x2, 2016 :: (load (s64) from %stack.4) ; CHECK-NEXT: $x1 = LD $x2, 2024 :: (load (s64) from %stack.3) + ; CHECK-NEXT: $x8 = LD $x2, 2016 :: (load (s64) from %stack.4) ; CHECK-NEXT: $x2 = frame-destroy ADDI $x2, 2032 ; CHECK-NEXT: PseudoRET %1:gprnox0 = COPY $x11 diff --git a/llvm/test/CodeGen/RISCV/rvv/allocate-lmul-2-4-8.ll b/llvm/test/CodeGen/RISCV/rvv/allocate-lmul-2-4-8.ll --- a/llvm/test/CodeGen/RISCV/rvv/allocate-lmul-2-4-8.ll +++ b/llvm/test/CodeGen/RISCV/rvv/allocate-lmul-2-4-8.ll @@ -32,16 +32,16 @@ ; CHECK-LABEL: lmul4: ; CHECK: # %bb.0: ; CHECK-NEXT: addi sp, sp, -32 -; CHECK-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; CHECK-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; CHECK-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; CHECK-NEXT: addi s0, sp, 32 ; CHECK-NEXT: csrr a0, vlenb ; CHECK-NEXT: slli a0, a0, 2 ; CHECK-NEXT: sub sp, sp, a0 ; CHECK-NEXT: andi sp, sp, -32 ; CHECK-NEXT: addi sp, s0, -32 -; CHECK-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; CHECK-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; CHECK-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; CHECK-NEXT: addi sp, sp, 32 ; CHECK-NEXT: ret %v = alloca @@ -52,16 +52,16 @@ ; CHECK-LABEL: lmul8: ; CHECK: # %bb.0: ; CHECK-NEXT: addi sp, sp, -64 -; CHECK-NEXT: sd ra, 56(sp) # 8-byte Folded Spill ; CHECK-NEXT: sd s0, 48(sp) # 8-byte Folded Spill +; CHECK-NEXT: sd ra, 56(sp) # 8-byte Folded Spill ; CHECK-NEXT: addi s0, sp, 64 ; CHECK-NEXT: csrr a0, vlenb ; CHECK-NEXT: slli a0, a0, 3 ; CHECK-NEXT: sub sp, sp, a0 ; CHECK-NEXT: andi sp, sp, -64 ; CHECK-NEXT: addi sp, s0, -64 -; CHECK-NEXT: ld s0, 48(sp) # 8-byte Folded Reload ; CHECK-NEXT: ld ra, 56(sp) # 8-byte Folded Reload +; CHECK-NEXT: ld s0, 48(sp) # 8-byte Folded Reload ; CHECK-NEXT: addi sp, sp, 64 ; CHECK-NEXT: ret %v = alloca @@ -89,8 +89,8 @@ ; CHECK-LABEL: lmul2_and_4: ; CHECK: # %bb.0: ; CHECK-NEXT: addi sp, sp, -32 -; CHECK-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; CHECK-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; CHECK-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; CHECK-NEXT: addi s0, sp, 32 ; CHECK-NEXT: csrr a0, vlenb ; CHECK-NEXT: addi a1, zero, 6 @@ -98,8 +98,8 @@ ; CHECK-NEXT: sub sp, sp, a0 ; CHECK-NEXT: andi sp, sp, -32 ; CHECK-NEXT: addi sp, s0, -32 -; CHECK-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; CHECK-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; CHECK-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; CHECK-NEXT: addi sp, sp, 32 ; CHECK-NEXT: ret %v1 = alloca @@ -111,8 +111,8 @@ ; CHECK-LABEL: lmul1_and_4: ; CHECK: # %bb.0: ; CHECK-NEXT: addi sp, sp, -32 -; CHECK-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; CHECK-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; CHECK-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; CHECK-NEXT: addi s0, sp, 32 ; CHECK-NEXT: csrr a0, vlenb ; CHECK-NEXT: slli a1, a0, 2 @@ -120,8 +120,8 @@ ; CHECK-NEXT: sub sp, sp, a0 ; CHECK-NEXT: andi sp, sp, -32 ; CHECK-NEXT: addi sp, s0, -32 -; CHECK-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; CHECK-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; CHECK-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; CHECK-NEXT: addi sp, sp, 32 ; CHECK-NEXT: ret %v1 = alloca @@ -150,8 +150,8 @@ ; CHECK-LABEL: lmul4_and_1: ; CHECK: # %bb.0: ; CHECK-NEXT: addi sp, sp, -32 -; CHECK-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; CHECK-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; CHECK-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; CHECK-NEXT: addi s0, sp, 32 ; CHECK-NEXT: csrr a0, vlenb ; CHECK-NEXT: slli a1, a0, 2 @@ -159,8 +159,8 @@ ; CHECK-NEXT: sub sp, sp, a0 ; CHECK-NEXT: andi sp, sp, -32 ; CHECK-NEXT: addi sp, s0, -32 -; CHECK-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; CHECK-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; CHECK-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; CHECK-NEXT: addi sp, sp, 32 ; CHECK-NEXT: ret %v1 = alloca @@ -172,8 +172,8 @@ ; CHECK-LABEL: lmul4_and_2: ; CHECK: # %bb.0: ; CHECK-NEXT: addi sp, sp, -32 -; CHECK-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; CHECK-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; CHECK-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; CHECK-NEXT: addi s0, sp, 32 ; CHECK-NEXT: csrr a0, vlenb ; CHECK-NEXT: addi a1, zero, 6 @@ -181,8 +181,8 @@ ; CHECK-NEXT: sub sp, sp, a0 ; CHECK-NEXT: andi sp, sp, -32 ; CHECK-NEXT: addi sp, s0, -32 -; CHECK-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; CHECK-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; CHECK-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; CHECK-NEXT: addi sp, sp, 32 ; CHECK-NEXT: ret %v1 = alloca @@ -194,8 +194,8 @@ ; CHECK-LABEL: lmul4_and_2_x2_0: ; CHECK: # %bb.0: ; CHECK-NEXT: addi sp, sp, -32 -; CHECK-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; CHECK-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; CHECK-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; CHECK-NEXT: addi s0, sp, 32 ; CHECK-NEXT: csrr a0, vlenb ; CHECK-NEXT: addi a1, zero, 12 @@ -203,8 +203,8 @@ ; CHECK-NEXT: sub sp, sp, a0 ; CHECK-NEXT: andi sp, sp, -32 ; CHECK-NEXT: addi sp, s0, -32 -; CHECK-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; CHECK-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; CHECK-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; CHECK-NEXT: addi sp, sp, 32 ; CHECK-NEXT: ret %v1 = alloca @@ -218,8 +218,8 @@ ; CHECK-LABEL: lmul4_and_2_x2_1: ; CHECK: # %bb.0: ; CHECK-NEXT: addi sp, sp, -32 -; CHECK-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; CHECK-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; CHECK-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; CHECK-NEXT: addi s0, sp, 32 ; CHECK-NEXT: csrr a0, vlenb ; CHECK-NEXT: addi a1, zero, 12 @@ -227,8 +227,8 @@ ; CHECK-NEXT: sub sp, sp, a0 ; CHECK-NEXT: andi sp, sp, -32 ; CHECK-NEXT: addi sp, s0, -32 -; CHECK-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; CHECK-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; CHECK-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; CHECK-NEXT: addi sp, sp, 32 ; CHECK-NEXT: ret %v1 = alloca @@ -266,8 +266,8 @@ ; CHECK-LABEL: gpr_and_lmul1_and_4: ; CHECK: # %bb.0: ; CHECK-NEXT: addi sp, sp, -32 -; CHECK-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; CHECK-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; CHECK-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; CHECK-NEXT: addi s0, sp, 32 ; CHECK-NEXT: csrr a0, vlenb ; CHECK-NEXT: slli a1, a0, 2 @@ -277,8 +277,8 @@ ; CHECK-NEXT: addi a0, zero, 3 ; CHECK-NEXT: sd a0, 8(sp) ; CHECK-NEXT: addi sp, s0, -32 -; CHECK-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; CHECK-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; CHECK-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; CHECK-NEXT: addi sp, sp, 32 ; CHECK-NEXT: ret %x1 = alloca i64 @@ -292,8 +292,8 @@ ; CHECK-LABEL: lmul_1_2_4_8: ; CHECK: # %bb.0: ; CHECK-NEXT: addi sp, sp, -64 -; CHECK-NEXT: sd ra, 56(sp) # 8-byte Folded Spill ; CHECK-NEXT: sd s0, 48(sp) # 8-byte Folded Spill +; CHECK-NEXT: sd ra, 56(sp) # 8-byte Folded Spill ; CHECK-NEXT: addi s0, sp, 64 ; CHECK-NEXT: csrr a0, vlenb ; CHECK-NEXT: slli a1, a0, 4 @@ -301,8 +301,8 @@ ; CHECK-NEXT: sub sp, sp, a0 ; CHECK-NEXT: andi sp, sp, -64 ; CHECK-NEXT: addi sp, s0, -64 -; CHECK-NEXT: ld s0, 48(sp) # 8-byte Folded Reload ; CHECK-NEXT: ld ra, 56(sp) # 8-byte Folded Reload +; CHECK-NEXT: ld s0, 48(sp) # 8-byte Folded Reload ; CHECK-NEXT: addi sp, sp, 64 ; CHECK-NEXT: ret %v1 = alloca @@ -316,8 +316,8 @@ ; CHECK-LABEL: lmul_1_2_4_8_x2_0: ; CHECK: # %bb.0: ; CHECK-NEXT: addi sp, sp, -64 -; CHECK-NEXT: sd ra, 56(sp) # 8-byte Folded Spill ; CHECK-NEXT: sd s0, 48(sp) # 8-byte Folded Spill +; CHECK-NEXT: sd ra, 56(sp) # 8-byte Folded Spill ; CHECK-NEXT: addi s0, sp, 64 ; CHECK-NEXT: csrr a0, vlenb ; CHECK-NEXT: addi a1, zero, 30 @@ -325,8 +325,8 @@ ; CHECK-NEXT: sub sp, sp, a0 ; CHECK-NEXT: andi sp, sp, -64 ; CHECK-NEXT: addi sp, s0, -64 -; CHECK-NEXT: ld s0, 48(sp) # 8-byte Folded Reload ; CHECK-NEXT: ld ra, 56(sp) # 8-byte Folded Reload +; CHECK-NEXT: ld s0, 48(sp) # 8-byte Folded Reload ; CHECK-NEXT: addi sp, sp, 64 ; CHECK-NEXT: ret %v1 = alloca @@ -344,8 +344,8 @@ ; CHECK-LABEL: lmul_1_2_4_8_x2_1: ; CHECK: # %bb.0: ; CHECK-NEXT: addi sp, sp, -64 -; CHECK-NEXT: sd ra, 56(sp) # 8-byte Folded Spill ; CHECK-NEXT: sd s0, 48(sp) # 8-byte Folded Spill +; CHECK-NEXT: sd ra, 56(sp) # 8-byte Folded Spill ; CHECK-NEXT: addi s0, sp, 64 ; CHECK-NEXT: csrr a0, vlenb ; CHECK-NEXT: addi a1, zero, 30 @@ -353,8 +353,8 @@ ; CHECK-NEXT: sub sp, sp, a0 ; CHECK-NEXT: andi sp, sp, -64 ; CHECK-NEXT: addi sp, s0, -64 -; CHECK-NEXT: ld s0, 48(sp) # 8-byte Folded Reload ; CHECK-NEXT: ld ra, 56(sp) # 8-byte Folded Reload +; CHECK-NEXT: ld s0, 48(sp) # 8-byte Folded Reload ; CHECK-NEXT: addi sp, sp, 64 ; CHECK-NEXT: ret %v8 = alloca diff --git a/llvm/test/CodeGen/RISCV/rvv/emergency-slot.mir b/llvm/test/CodeGen/RISCV/rvv/emergency-slot.mir --- a/llvm/test/CodeGen/RISCV/rvv/emergency-slot.mir +++ b/llvm/test/CodeGen/RISCV/rvv/emergency-slot.mir @@ -55,32 +55,32 @@ ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: $x2 = frame-setup ADDI $x2, -2032 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 2032 - ; CHECK-NEXT: SD killed $x1, $x2, 2024 :: (store (s64) into %stack.3) - ; CHECK-NEXT: SD killed $x8, $x2, 2016 :: (store (s64) into %stack.4) - ; CHECK-NEXT: SD killed $x9, $x2, 2008 :: (store (s64) into %stack.5) - ; CHECK-NEXT: SD killed $x18, $x2, 2000 :: (store (s64) into %stack.6) - ; CHECK-NEXT: SD killed $x19, $x2, 1992 :: (store (s64) into %stack.7) - ; CHECK-NEXT: SD killed $x20, $x2, 1984 :: (store (s64) into %stack.8) - ; CHECK-NEXT: SD killed $x21, $x2, 1976 :: (store (s64) into %stack.9) - ; CHECK-NEXT: SD killed $x22, $x2, 1968 :: (store (s64) into %stack.10) - ; CHECK-NEXT: SD killed $x23, $x2, 1960 :: (store (s64) into %stack.11) - ; CHECK-NEXT: SD killed $x24, $x2, 1952 :: (store (s64) into %stack.12) - ; CHECK-NEXT: SD killed $x25, $x2, 1944 :: (store (s64) into %stack.13) - ; CHECK-NEXT: SD killed $x26, $x2, 1936 :: (store (s64) into %stack.14) ; CHECK-NEXT: SD killed $x27, $x2, 1928 :: (store (s64) into %stack.15) - ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $x1, -8 - ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $x8, -16 - ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $x9, -24 - ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $x18, -32 - ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $x19, -40 - ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $x20, -48 - ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $x21, -56 - ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $x22, -64 - ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $x23, -72 - ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $x24, -80 - ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $x25, -88 - ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $x26, -96 + ; CHECK-NEXT: SD killed $x26, $x2, 1936 :: (store (s64) into %stack.14) + ; CHECK-NEXT: SD killed $x25, $x2, 1944 :: (store (s64) into %stack.13) + ; CHECK-NEXT: SD killed $x24, $x2, 1952 :: (store (s64) into %stack.12) + ; CHECK-NEXT: SD killed $x23, $x2, 1960 :: (store (s64) into %stack.11) + ; CHECK-NEXT: SD killed $x22, $x2, 1968 :: (store (s64) into %stack.10) + ; CHECK-NEXT: SD killed $x21, $x2, 1976 :: (store (s64) into %stack.9) + ; CHECK-NEXT: SD killed $x20, $x2, 1984 :: (store (s64) into %stack.8) + ; CHECK-NEXT: SD killed $x19, $x2, 1992 :: (store (s64) into %stack.7) + ; CHECK-NEXT: SD killed $x18, $x2, 2000 :: (store (s64) into %stack.6) + ; CHECK-NEXT: SD killed $x9, $x2, 2008 :: (store (s64) into %stack.5) + ; CHECK-NEXT: SD killed $x8, $x2, 2016 :: (store (s64) into %stack.4) + ; CHECK-NEXT: SD killed $x1, $x2, 2024 :: (store (s64) into %stack.3) ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $x27, -104 + ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $x26, -96 + ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $x25, -88 + ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $x24, -80 + ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $x23, -72 + ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $x22, -64 + ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $x21, -56 + ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $x20, -48 + ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $x19, -40 + ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $x18, -32 + ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $x9, -24 + ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $x8, -16 + ; CHECK-NEXT: frame-setup CFI_INSTRUCTION offset $x1, -8 ; CHECK-NEXT: $x8 = frame-setup ADDI $x2, 2032 ; CHECK-NEXT: frame-setup CFI_INSTRUCTION def_cfa $x8, 0 ; CHECK-NEXT: $x2 = frame-setup ADDI $x2, -272 @@ -163,19 +163,19 @@ ; CHECK-NEXT: $x10 = frame-destroy ADDIW killed $x10, -1792 ; CHECK-NEXT: $x2 = frame-destroy SUB $x8, killed $x10 ; CHECK-NEXT: $x2 = frame-destroy ADDI $x2, 272 - ; CHECK-NEXT: $x27 = LD $x2, 1928 :: (load (s64) from %stack.15) - ; CHECK-NEXT: $x26 = LD $x2, 1936 :: (load (s64) from %stack.14) - ; CHECK-NEXT: $x25 = LD $x2, 1944 :: (load (s64) from %stack.13) - ; CHECK-NEXT: $x24 = LD $x2, 1952 :: (load (s64) from %stack.12) - ; CHECK-NEXT: $x23 = LD $x2, 1960 :: (load (s64) from %stack.11) - ; CHECK-NEXT: $x22 = LD $x2, 1968 :: (load (s64) from %stack.10) - ; CHECK-NEXT: $x21 = LD $x2, 1976 :: (load (s64) from %stack.9) - ; CHECK-NEXT: $x20 = LD $x2, 1984 :: (load (s64) from %stack.8) - ; CHECK-NEXT: $x19 = LD $x2, 1992 :: (load (s64) from %stack.7) - ; CHECK-NEXT: $x18 = LD $x2, 2000 :: (load (s64) from %stack.6) - ; CHECK-NEXT: $x9 = LD $x2, 2008 :: (load (s64) from %stack.5) - ; CHECK-NEXT: $x8 = LD $x2, 2016 :: (load (s64) from %stack.4) ; CHECK-NEXT: $x1 = LD $x2, 2024 :: (load (s64) from %stack.3) + ; CHECK-NEXT: $x8 = LD $x2, 2016 :: (load (s64) from %stack.4) + ; CHECK-NEXT: $x9 = LD $x2, 2008 :: (load (s64) from %stack.5) + ; CHECK-NEXT: $x18 = LD $x2, 2000 :: (load (s64) from %stack.6) + ; CHECK-NEXT: $x19 = LD $x2, 1992 :: (load (s64) from %stack.7) + ; CHECK-NEXT: $x20 = LD $x2, 1984 :: (load (s64) from %stack.8) + ; CHECK-NEXT: $x21 = LD $x2, 1976 :: (load (s64) from %stack.9) + ; CHECK-NEXT: $x22 = LD $x2, 1968 :: (load (s64) from %stack.10) + ; CHECK-NEXT: $x23 = LD $x2, 1960 :: (load (s64) from %stack.11) + ; CHECK-NEXT: $x24 = LD $x2, 1952 :: (load (s64) from %stack.12) + ; CHECK-NEXT: $x25 = LD $x2, 1944 :: (load (s64) from %stack.13) + ; CHECK-NEXT: $x26 = LD $x2, 1936 :: (load (s64) from %stack.14) + ; CHECK-NEXT: $x27 = LD $x2, 1928 :: (load (s64) from %stack.15) ; CHECK-NEXT: $x2 = frame-destroy ADDI $x2, 2032 ; CHECK-NEXT: PseudoRET bb.0: diff --git a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-calling-conv-fastcc.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-calling-conv-fastcc.ll --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-calling-conv-fastcc.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-calling-conv-fastcc.ll @@ -285,10 +285,10 @@ ; LMULMAX8: # %bb.0: ; LMULMAX8-NEXT: addi sp, sp, -384 ; LMULMAX8-NEXT: .cfi_def_cfa_offset 384 -; LMULMAX8-NEXT: sd ra, 376(sp) # 8-byte Folded Spill ; LMULMAX8-NEXT: sd s0, 368(sp) # 8-byte Folded Spill -; LMULMAX8-NEXT: .cfi_offset ra, -8 +; LMULMAX8-NEXT: sd ra, 376(sp) # 8-byte Folded Spill ; LMULMAX8-NEXT: .cfi_offset s0, -16 +; LMULMAX8-NEXT: .cfi_offset ra, -8 ; LMULMAX8-NEXT: addi s0, sp, 384 ; LMULMAX8-NEXT: .cfi_def_cfa s0, 0 ; LMULMAX8-NEXT: andi sp, sp, -128 @@ -302,8 +302,8 @@ ; LMULMAX8-NEXT: vmv.v.v v8, v24 ; LMULMAX8-NEXT: call ext3@plt ; LMULMAX8-NEXT: addi sp, s0, -384 -; LMULMAX8-NEXT: ld s0, 368(sp) # 8-byte Folded Reload ; LMULMAX8-NEXT: ld ra, 376(sp) # 8-byte Folded Reload +; LMULMAX8-NEXT: ld s0, 368(sp) # 8-byte Folded Reload ; LMULMAX8-NEXT: addi sp, sp, 384 ; LMULMAX8-NEXT: ret ; @@ -311,10 +311,10 @@ ; LMULMAX4: # %bb.0: ; LMULMAX4-NEXT: addi sp, sp, -384 ; LMULMAX4-NEXT: .cfi_def_cfa_offset 384 -; LMULMAX4-NEXT: sd ra, 376(sp) # 8-byte Folded Spill ; LMULMAX4-NEXT: sd s0, 368(sp) # 8-byte Folded Spill -; LMULMAX4-NEXT: .cfi_offset ra, -8 +; LMULMAX4-NEXT: sd ra, 376(sp) # 8-byte Folded Spill ; LMULMAX4-NEXT: .cfi_offset s0, -16 +; LMULMAX4-NEXT: .cfi_offset ra, -8 ; LMULMAX4-NEXT: addi s0, sp, 384 ; LMULMAX4-NEXT: .cfi_def_cfa s0, 0 ; LMULMAX4-NEXT: andi sp, sp, -128 @@ -332,8 +332,8 @@ ; LMULMAX4-NEXT: vmv.v.v v12, v28 ; LMULMAX4-NEXT: call ext3@plt ; LMULMAX4-NEXT: addi sp, s0, -384 -; LMULMAX4-NEXT: ld s0, 368(sp) # 8-byte Folded Reload ; LMULMAX4-NEXT: ld ra, 376(sp) # 8-byte Folded Reload +; LMULMAX4-NEXT: ld s0, 368(sp) # 8-byte Folded Reload ; LMULMAX4-NEXT: addi sp, sp, 384 ; LMULMAX4-NEXT: ret %t = call fastcc <32 x i32> @ext3(<32 x i32> %z, <32 x i32> %y, <32 x i32> %x, i32 %w, i32 42) @@ -371,10 +371,10 @@ ; LMULMAX8: # %bb.0: ; LMULMAX8-NEXT: addi sp, sp, -384 ; LMULMAX8-NEXT: .cfi_def_cfa_offset 384 -; LMULMAX8-NEXT: sd ra, 376(sp) # 8-byte Folded Spill ; LMULMAX8-NEXT: sd s0, 368(sp) # 8-byte Folded Spill -; LMULMAX8-NEXT: .cfi_offset ra, -8 +; LMULMAX8-NEXT: sd ra, 376(sp) # 8-byte Folded Spill ; LMULMAX8-NEXT: .cfi_offset s0, -16 +; LMULMAX8-NEXT: .cfi_offset ra, -8 ; LMULMAX8-NEXT: addi s0, sp, 384 ; LMULMAX8-NEXT: .cfi_def_cfa s0, 0 ; LMULMAX8-NEXT: andi sp, sp, -128 @@ -396,8 +396,8 @@ ; LMULMAX8-NEXT: vmv.v.i v16, 0 ; LMULMAX8-NEXT: call vector_arg_indirect_stack@plt ; LMULMAX8-NEXT: addi sp, s0, -384 -; LMULMAX8-NEXT: ld s0, 368(sp) # 8-byte Folded Reload ; LMULMAX8-NEXT: ld ra, 376(sp) # 8-byte Folded Reload +; LMULMAX8-NEXT: ld s0, 368(sp) # 8-byte Folded Reload ; LMULMAX8-NEXT: addi sp, sp, 384 ; LMULMAX8-NEXT: ret ; @@ -405,10 +405,10 @@ ; LMULMAX4: # %bb.0: ; LMULMAX4-NEXT: addi sp, sp, -384 ; LMULMAX4-NEXT: .cfi_def_cfa_offset 384 -; LMULMAX4-NEXT: sd ra, 376(sp) # 8-byte Folded Spill ; LMULMAX4-NEXT: sd s0, 368(sp) # 8-byte Folded Spill -; LMULMAX4-NEXT: .cfi_offset ra, -8 +; LMULMAX4-NEXT: sd ra, 376(sp) # 8-byte Folded Spill ; LMULMAX4-NEXT: .cfi_offset s0, -16 +; LMULMAX4-NEXT: .cfi_offset ra, -8 ; LMULMAX4-NEXT: addi s0, sp, 384 ; LMULMAX4-NEXT: .cfi_def_cfa s0, 0 ; LMULMAX4-NEXT: andi sp, sp, -128 @@ -433,8 +433,8 @@ ; LMULMAX4-NEXT: vmv.v.i v20, 0 ; LMULMAX4-NEXT: call vector_arg_indirect_stack@plt ; LMULMAX4-NEXT: addi sp, s0, -384 -; LMULMAX4-NEXT: ld s0, 368(sp) # 8-byte Folded Reload ; LMULMAX4-NEXT: ld ra, 376(sp) # 8-byte Folded Reload +; LMULMAX4-NEXT: ld s0, 368(sp) # 8-byte Folded Reload ; LMULMAX4-NEXT: addi sp, sp, 384 ; LMULMAX4-NEXT: ret %s = call fastcc <32 x i32> @vector_arg_indirect_stack(i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, <32 x i32> zeroinitializer, <32 x i32> zeroinitializer, <32 x i32> zeroinitializer, i32 8) diff --git a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-calling-conv.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-calling-conv.ll --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-calling-conv.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-calling-conv.ll @@ -784,10 +784,10 @@ ; LMULMAX8: # %bb.0: ; LMULMAX8-NEXT: addi sp, sp, -384 ; LMULMAX8-NEXT: .cfi_def_cfa_offset 384 -; LMULMAX8-NEXT: sd ra, 376(sp) # 8-byte Folded Spill ; LMULMAX8-NEXT: sd s0, 368(sp) # 8-byte Folded Spill -; LMULMAX8-NEXT: .cfi_offset ra, -8 +; LMULMAX8-NEXT: sd ra, 376(sp) # 8-byte Folded Spill ; LMULMAX8-NEXT: .cfi_offset s0, -16 +; LMULMAX8-NEXT: .cfi_offset ra, -8 ; LMULMAX8-NEXT: addi s0, sp, 384 ; LMULMAX8-NEXT: .cfi_def_cfa s0, 0 ; LMULMAX8-NEXT: andi sp, sp, -128 @@ -801,8 +801,8 @@ ; LMULMAX8-NEXT: vmv.v.v v8, v24 ; LMULMAX8-NEXT: call ext3@plt ; LMULMAX8-NEXT: addi sp, s0, -384 -; LMULMAX8-NEXT: ld s0, 368(sp) # 8-byte Folded Reload ; LMULMAX8-NEXT: ld ra, 376(sp) # 8-byte Folded Reload +; LMULMAX8-NEXT: ld s0, 368(sp) # 8-byte Folded Reload ; LMULMAX8-NEXT: addi sp, sp, 384 ; LMULMAX8-NEXT: ret ; @@ -810,10 +810,10 @@ ; LMULMAX4: # %bb.0: ; LMULMAX4-NEXT: addi sp, sp, -384 ; LMULMAX4-NEXT: .cfi_def_cfa_offset 384 -; LMULMAX4-NEXT: sd ra, 376(sp) # 8-byte Folded Spill ; LMULMAX4-NEXT: sd s0, 368(sp) # 8-byte Folded Spill -; LMULMAX4-NEXT: .cfi_offset ra, -8 +; LMULMAX4-NEXT: sd ra, 376(sp) # 8-byte Folded Spill ; LMULMAX4-NEXT: .cfi_offset s0, -16 +; LMULMAX4-NEXT: .cfi_offset ra, -8 ; LMULMAX4-NEXT: addi s0, sp, 384 ; LMULMAX4-NEXT: .cfi_def_cfa s0, 0 ; LMULMAX4-NEXT: andi sp, sp, -128 @@ -831,8 +831,8 @@ ; LMULMAX4-NEXT: vmv.v.v v12, v28 ; LMULMAX4-NEXT: call ext3@plt ; LMULMAX4-NEXT: addi sp, s0, -384 -; LMULMAX4-NEXT: ld s0, 368(sp) # 8-byte Folded Reload ; LMULMAX4-NEXT: ld ra, 376(sp) # 8-byte Folded Reload +; LMULMAX4-NEXT: ld s0, 368(sp) # 8-byte Folded Reload ; LMULMAX4-NEXT: addi sp, sp, 384 ; LMULMAX4-NEXT: ret ; @@ -840,10 +840,10 @@ ; LMULMAX2: # %bb.0: ; LMULMAX2-NEXT: addi sp, sp, -384 ; LMULMAX2-NEXT: .cfi_def_cfa_offset 384 -; LMULMAX2-NEXT: sd ra, 376(sp) # 8-byte Folded Spill ; LMULMAX2-NEXT: sd s0, 368(sp) # 8-byte Folded Spill -; LMULMAX2-NEXT: .cfi_offset ra, -8 +; LMULMAX2-NEXT: sd ra, 376(sp) # 8-byte Folded Spill ; LMULMAX2-NEXT: .cfi_offset s0, -16 +; LMULMAX2-NEXT: .cfi_offset ra, -8 ; LMULMAX2-NEXT: addi s0, sp, 384 ; LMULMAX2-NEXT: .cfi_def_cfa s0, 0 ; LMULMAX2-NEXT: andi sp, sp, -128 @@ -871,8 +871,8 @@ ; LMULMAX2-NEXT: vmv.v.v v14, v30 ; LMULMAX2-NEXT: call ext3@plt ; LMULMAX2-NEXT: addi sp, s0, -384 -; LMULMAX2-NEXT: ld s0, 368(sp) # 8-byte Folded Reload ; LMULMAX2-NEXT: ld ra, 376(sp) # 8-byte Folded Reload +; LMULMAX2-NEXT: ld s0, 368(sp) # 8-byte Folded Reload ; LMULMAX2-NEXT: addi sp, sp, 384 ; LMULMAX2-NEXT: ret ; @@ -880,10 +880,10 @@ ; LMULMAX1: # %bb.0: ; LMULMAX1-NEXT: addi sp, sp, -384 ; LMULMAX1-NEXT: .cfi_def_cfa_offset 384 -; LMULMAX1-NEXT: sd ra, 376(sp) # 8-byte Folded Spill ; LMULMAX1-NEXT: sd s0, 368(sp) # 8-byte Folded Spill -; LMULMAX1-NEXT: .cfi_offset ra, -8 +; LMULMAX1-NEXT: sd ra, 376(sp) # 8-byte Folded Spill ; LMULMAX1-NEXT: .cfi_offset s0, -16 +; LMULMAX1-NEXT: .cfi_offset ra, -8 ; LMULMAX1-NEXT: addi s0, sp, 384 ; LMULMAX1-NEXT: .cfi_def_cfa s0, 0 ; LMULMAX1-NEXT: andi sp, sp, -128 @@ -934,8 +934,8 @@ ; LMULMAX1-NEXT: vmv.v.v v15, v31 ; LMULMAX1-NEXT: call ext3@plt ; LMULMAX1-NEXT: addi sp, s0, -384 -; LMULMAX1-NEXT: ld s0, 368(sp) # 8-byte Folded Reload ; LMULMAX1-NEXT: ld ra, 376(sp) # 8-byte Folded Reload +; LMULMAX1-NEXT: ld s0, 368(sp) # 8-byte Folded Reload ; LMULMAX1-NEXT: addi sp, sp, 384 ; LMULMAX1-NEXT: ret %t = call <32 x i32> @ext3(<32 x i32> %z, <32 x i32> %y, <32 x i32> %x, i32 %w, i32 42) @@ -1018,10 +1018,10 @@ ; LMULMAX8: # %bb.0: ; LMULMAX8-NEXT: addi sp, sp, -384 ; LMULMAX8-NEXT: .cfi_def_cfa_offset 384 -; LMULMAX8-NEXT: sd ra, 376(sp) # 8-byte Folded Spill ; LMULMAX8-NEXT: sd s0, 368(sp) # 8-byte Folded Spill -; LMULMAX8-NEXT: .cfi_offset ra, -8 +; LMULMAX8-NEXT: sd ra, 376(sp) # 8-byte Folded Spill ; LMULMAX8-NEXT: .cfi_offset s0, -16 +; LMULMAX8-NEXT: .cfi_offset ra, -8 ; LMULMAX8-NEXT: addi s0, sp, 384 ; LMULMAX8-NEXT: .cfi_def_cfa s0, 0 ; LMULMAX8-NEXT: andi sp, sp, -128 @@ -1039,8 +1039,8 @@ ; LMULMAX8-NEXT: vmv1r.v v12, v8 ; LMULMAX8-NEXT: call split_vector_args@plt ; LMULMAX8-NEXT: addi sp, s0, -384 -; LMULMAX8-NEXT: ld s0, 368(sp) # 8-byte Folded Reload ; LMULMAX8-NEXT: ld ra, 376(sp) # 8-byte Folded Reload +; LMULMAX8-NEXT: ld s0, 368(sp) # 8-byte Folded Reload ; LMULMAX8-NEXT: addi sp, sp, 384 ; LMULMAX8-NEXT: ret ; @@ -1048,10 +1048,10 @@ ; LMULMAX4: # %bb.0: ; LMULMAX4-NEXT: addi sp, sp, -384 ; LMULMAX4-NEXT: .cfi_def_cfa_offset 384 -; LMULMAX4-NEXT: sd ra, 376(sp) # 8-byte Folded Spill ; LMULMAX4-NEXT: sd s0, 368(sp) # 8-byte Folded Spill -; LMULMAX4-NEXT: .cfi_offset ra, -8 +; LMULMAX4-NEXT: sd ra, 376(sp) # 8-byte Folded Spill ; LMULMAX4-NEXT: .cfi_offset s0, -16 +; LMULMAX4-NEXT: .cfi_offset ra, -8 ; LMULMAX4-NEXT: addi s0, sp, 384 ; LMULMAX4-NEXT: .cfi_def_cfa s0, 0 ; LMULMAX4-NEXT: andi sp, sp, -128 @@ -1072,8 +1072,8 @@ ; LMULMAX4-NEXT: vmv1r.v v12, v8 ; LMULMAX4-NEXT: call split_vector_args@plt ; LMULMAX4-NEXT: addi sp, s0, -384 -; LMULMAX4-NEXT: ld s0, 368(sp) # 8-byte Folded Reload ; LMULMAX4-NEXT: ld ra, 376(sp) # 8-byte Folded Reload +; LMULMAX4-NEXT: ld s0, 368(sp) # 8-byte Folded Reload ; LMULMAX4-NEXT: addi sp, sp, 384 ; LMULMAX4-NEXT: ret ; @@ -1081,10 +1081,10 @@ ; LMULMAX2: # %bb.0: ; LMULMAX2-NEXT: addi sp, sp, -256 ; LMULMAX2-NEXT: .cfi_def_cfa_offset 256 -; LMULMAX2-NEXT: sd ra, 248(sp) # 8-byte Folded Spill ; LMULMAX2-NEXT: sd s0, 240(sp) # 8-byte Folded Spill -; LMULMAX2-NEXT: .cfi_offset ra, -8 +; LMULMAX2-NEXT: sd ra, 248(sp) # 8-byte Folded Spill ; LMULMAX2-NEXT: .cfi_offset s0, -16 +; LMULMAX2-NEXT: .cfi_offset ra, -8 ; LMULMAX2-NEXT: addi s0, sp, 256 ; LMULMAX2-NEXT: .cfi_def_cfa s0, 0 ; LMULMAX2-NEXT: andi sp, sp, -128 @@ -1112,8 +1112,8 @@ ; LMULMAX2-NEXT: vmv.v.v v22, v14 ; LMULMAX2-NEXT: call split_vector_args@plt ; LMULMAX2-NEXT: addi sp, s0, -256 -; LMULMAX2-NEXT: ld s0, 240(sp) # 8-byte Folded Reload ; LMULMAX2-NEXT: ld ra, 248(sp) # 8-byte Folded Reload +; LMULMAX2-NEXT: ld s0, 240(sp) # 8-byte Folded Reload ; LMULMAX2-NEXT: addi sp, sp, 256 ; LMULMAX2-NEXT: ret ; @@ -1121,10 +1121,10 @@ ; LMULMAX1: # %bb.0: ; LMULMAX1-NEXT: addi sp, sp, -256 ; LMULMAX1-NEXT: .cfi_def_cfa_offset 256 -; LMULMAX1-NEXT: sd ra, 248(sp) # 8-byte Folded Spill ; LMULMAX1-NEXT: sd s0, 240(sp) # 8-byte Folded Spill -; LMULMAX1-NEXT: .cfi_offset ra, -8 +; LMULMAX1-NEXT: sd ra, 248(sp) # 8-byte Folded Spill ; LMULMAX1-NEXT: .cfi_offset s0, -16 +; LMULMAX1-NEXT: .cfi_offset ra, -8 ; LMULMAX1-NEXT: addi s0, sp, 256 ; LMULMAX1-NEXT: .cfi_def_cfa s0, 0 ; LMULMAX1-NEXT: andi sp, sp, -128 @@ -1166,8 +1166,8 @@ ; LMULMAX1-NEXT: vmv.v.v v23, v15 ; LMULMAX1-NEXT: call split_vector_args@plt ; LMULMAX1-NEXT: addi sp, s0, -256 -; LMULMAX1-NEXT: ld s0, 240(sp) # 8-byte Folded Reload ; LMULMAX1-NEXT: ld ra, 248(sp) # 8-byte Folded Reload +; LMULMAX1-NEXT: ld s0, 240(sp) # 8-byte Folded Reload ; LMULMAX1-NEXT: addi sp, sp, 256 ; LMULMAX1-NEXT: ret %a = load <2 x i32>, <2 x i32>* %pa diff --git a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-extract-i1.ll b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-extract-i1.ll --- a/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-extract-i1.ll +++ b/llvm/test/CodeGen/RISCV/rvv/fixed-vectors-extract-i1.ll @@ -152,8 +152,8 @@ ; RV32-LABEL: extractelt_v256i1: ; RV32: # %bb.0: ; RV32-NEXT: addi sp, sp, -512 -; RV32-NEXT: sw ra, 508(sp) # 4-byte Folded Spill ; RV32-NEXT: sw s0, 504(sp) # 4-byte Folded Spill +; RV32-NEXT: sw ra, 508(sp) # 4-byte Folded Spill ; RV32-NEXT: addi s0, sp, 512 ; RV32-NEXT: andi sp, sp, -128 ; RV32-NEXT: andi a1, a1, 255 @@ -176,16 +176,16 @@ ; RV32-NEXT: vse8.v v8, (a1) ; RV32-NEXT: lb a0, 0(a0) ; RV32-NEXT: addi sp, s0, -512 -; RV32-NEXT: lw s0, 504(sp) # 4-byte Folded Reload ; RV32-NEXT: lw ra, 508(sp) # 4-byte Folded Reload +; RV32-NEXT: lw s0, 504(sp) # 4-byte Folded Reload ; RV32-NEXT: addi sp, sp, 512 ; RV32-NEXT: ret ; ; RV64-LABEL: extractelt_v256i1: ; RV64: # %bb.0: ; RV64-NEXT: addi sp, sp, -512 -; RV64-NEXT: sd ra, 504(sp) # 8-byte Folded Spill ; RV64-NEXT: sd s0, 496(sp) # 8-byte Folded Spill +; RV64-NEXT: sd ra, 504(sp) # 8-byte Folded Spill ; RV64-NEXT: addi s0, sp, 512 ; RV64-NEXT: andi sp, sp, -128 ; RV64-NEXT: andi a1, a1, 255 @@ -208,8 +208,8 @@ ; RV64-NEXT: vse8.v v8, (a1) ; RV64-NEXT: lb a0, 0(a0) ; RV64-NEXT: addi sp, s0, -512 -; RV64-NEXT: ld s0, 496(sp) # 8-byte Folded Reload ; RV64-NEXT: ld ra, 504(sp) # 8-byte Folded Reload +; RV64-NEXT: ld s0, 496(sp) # 8-byte Folded Reload ; RV64-NEXT: addi sp, sp, 512 ; RV64-NEXT: ret %a = load <256 x i8>, <256 x i8>* %x diff --git a/llvm/test/CodeGen/RISCV/rvv/large-rvv-stack-size.mir b/llvm/test/CodeGen/RISCV/rvv/large-rvv-stack-size.mir --- a/llvm/test/CodeGen/RISCV/rvv/large-rvv-stack-size.mir +++ b/llvm/test/CodeGen/RISCV/rvv/large-rvv-stack-size.mir @@ -10,10 +10,10 @@ ; CHECK: # %bb.0: ; CHECK-NEXT: addi sp, sp, -2032 ; CHECK-NEXT: .cfi_def_cfa_offset 2032 - ; CHECK-NEXT: sd ra, 2024(sp) # 8-byte Folded Spill ; CHECK-NEXT: sd s0, 2016(sp) # 8-byte Folded Spill - ; CHECK-NEXT: .cfi_offset ra, -8 + ; CHECK-NEXT: sd ra, 2024(sp) # 8-byte Folded Spill ; CHECK-NEXT: .cfi_offset s0, -16 + ; CHECK-NEXT: .cfi_offset ra, -8 ; CHECK-NEXT: addi s0, sp, 2032 ; CHECK-NEXT: .cfi_def_cfa s0, 0 ; CHECK-NEXT: addi sp, sp, -272 @@ -36,8 +36,8 @@ ; CHECK-NEXT: addiw a0, a0, -1792 ; CHECK-NEXT: sub sp, s0, a0 ; CHECK-NEXT: addi sp, sp, 272 - ; CHECK-NEXT: ld s0, 2016(sp) # 8-byte Folded Reload ; CHECK-NEXT: ld ra, 2024(sp) # 8-byte Folded Reload + ; CHECK-NEXT: ld s0, 2016(sp) # 8-byte Folded Reload ; CHECK-NEXT: addi sp, sp, 2032 ; CHECK-NEXT: ret ret void diff --git a/llvm/test/CodeGen/RISCV/rvv/localvar.ll b/llvm/test/CodeGen/RISCV/rvv/localvar.ll --- a/llvm/test/CodeGen/RISCV/rvv/localvar.ll +++ b/llvm/test/CodeGen/RISCV/rvv/localvar.ll @@ -87,10 +87,10 @@ ; RV64IV: # %bb.0: ; RV64IV-NEXT: addi sp, sp, -32 ; RV64IV-NEXT: .cfi_def_cfa_offset 32 -; RV64IV-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64IV-NEXT: sd s0, 16(sp) # 8-byte Folded Spill -; RV64IV-NEXT: .cfi_offset ra, -8 +; RV64IV-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64IV-NEXT: .cfi_offset s0, -16 +; RV64IV-NEXT: .cfi_offset ra, -8 ; RV64IV-NEXT: addi s0, sp, 32 ; RV64IV-NEXT: .cfi_def_cfa s0, 0 ; RV64IV-NEXT: csrr a0, vlenb @@ -105,8 +105,8 @@ ; RV64IV-NEXT: addi a0, sp, 16 ; RV64IV-NEXT: vl4r.v v8, (a0) ; RV64IV-NEXT: addi sp, s0, -32 -; RV64IV-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64IV-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64IV-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64IV-NEXT: addi sp, sp, 32 ; RV64IV-NEXT: ret %local0 = alloca @@ -121,10 +121,10 @@ ; RV64IV: # %bb.0: ; RV64IV-NEXT: addi sp, sp, -64 ; RV64IV-NEXT: .cfi_def_cfa_offset 64 -; RV64IV-NEXT: sd ra, 56(sp) # 8-byte Folded Spill ; RV64IV-NEXT: sd s0, 48(sp) # 8-byte Folded Spill -; RV64IV-NEXT: .cfi_offset ra, -8 +; RV64IV-NEXT: sd ra, 56(sp) # 8-byte Folded Spill ; RV64IV-NEXT: .cfi_offset s0, -16 +; RV64IV-NEXT: .cfi_offset ra, -8 ; RV64IV-NEXT: addi s0, sp, 64 ; RV64IV-NEXT: .cfi_def_cfa s0, 0 ; RV64IV-NEXT: csrr a0, vlenb @@ -139,8 +139,8 @@ ; RV64IV-NEXT: addi a0, sp, 48 ; RV64IV-NEXT: vl8r.v v8, (a0) ; RV64IV-NEXT: addi sp, s0, -64 -; RV64IV-NEXT: ld s0, 48(sp) # 8-byte Folded Reload ; RV64IV-NEXT: ld ra, 56(sp) # 8-byte Folded Reload +; RV64IV-NEXT: ld s0, 48(sp) # 8-byte Folded Reload ; RV64IV-NEXT: addi sp, sp, 64 ; RV64IV-NEXT: ret %local0 = alloca @@ -188,10 +188,10 @@ ; RV64IV: # %bb.0: ; RV64IV-NEXT: addi sp, sp, -32 ; RV64IV-NEXT: .cfi_def_cfa_offset 32 -; RV64IV-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64IV-NEXT: sd s0, 16(sp) # 8-byte Folded Spill -; RV64IV-NEXT: .cfi_offset ra, -8 +; RV64IV-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64IV-NEXT: .cfi_offset s0, -16 +; RV64IV-NEXT: .cfi_offset ra, -8 ; RV64IV-NEXT: addi s0, sp, 32 ; RV64IV-NEXT: .cfi_def_cfa s0, 0 ; RV64IV-NEXT: csrr a1, vlenb @@ -217,8 +217,8 @@ ; RV64IV-NEXT: addi a0, a0, -32 ; RV64IV-NEXT: vl2r.v v8, (a0) ; RV64IV-NEXT: addi sp, s0, -32 -; RV64IV-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64IV-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64IV-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64IV-NEXT: addi sp, sp, 32 ; RV64IV-NEXT: ret %1 = alloca i8, i64 %n @@ -235,12 +235,12 @@ ; RV64IV: # %bb.0: ; RV64IV-NEXT: addi sp, sp, -256 ; RV64IV-NEXT: .cfi_def_cfa_offset 256 -; RV64IV-NEXT: sd ra, 248(sp) # 8-byte Folded Spill -; RV64IV-NEXT: sd s0, 240(sp) # 8-byte Folded Spill ; RV64IV-NEXT: sd s1, 232(sp) # 8-byte Folded Spill -; RV64IV-NEXT: .cfi_offset ra, -8 -; RV64IV-NEXT: .cfi_offset s0, -16 +; RV64IV-NEXT: sd s0, 240(sp) # 8-byte Folded Spill +; RV64IV-NEXT: sd ra, 248(sp) # 8-byte Folded Spill ; RV64IV-NEXT: .cfi_offset s1, -24 +; RV64IV-NEXT: .cfi_offset s0, -16 +; RV64IV-NEXT: .cfi_offset ra, -8 ; RV64IV-NEXT: addi s0, sp, 256 ; RV64IV-NEXT: .cfi_def_cfa s0, 0 ; RV64IV-NEXT: csrr a1, vlenb @@ -268,9 +268,9 @@ ; RV64IV-NEXT: vl2r.v v8, (a0) ; RV64IV-NEXT: lw a0, 120(s1) ; RV64IV-NEXT: addi sp, s0, -256 -; RV64IV-NEXT: ld s1, 232(sp) # 8-byte Folded Reload -; RV64IV-NEXT: ld s0, 240(sp) # 8-byte Folded Reload ; RV64IV-NEXT: ld ra, 248(sp) # 8-byte Folded Reload +; RV64IV-NEXT: ld s0, 240(sp) # 8-byte Folded Reload +; RV64IV-NEXT: ld s1, 232(sp) # 8-byte Folded Reload ; RV64IV-NEXT: addi sp, sp, 256 ; RV64IV-NEXT: ret %1 = alloca i8, i64 %n diff --git a/llvm/test/CodeGen/RISCV/rvv/memory-args.ll b/llvm/test/CodeGen/RISCV/rvv/memory-args.ll --- a/llvm/test/CodeGen/RISCV/rvv/memory-args.ll +++ b/llvm/test/CodeGen/RISCV/rvv/memory-args.ll @@ -28,10 +28,10 @@ ; RV64IV: # %bb.0: ; RV64IV-NEXT: addi sp, sp, -64 ; RV64IV-NEXT: .cfi_def_cfa_offset 64 -; RV64IV-NEXT: sd ra, 56(sp) # 8-byte Folded Spill ; RV64IV-NEXT: sd s0, 48(sp) # 8-byte Folded Spill -; RV64IV-NEXT: .cfi_offset ra, -8 +; RV64IV-NEXT: sd ra, 56(sp) # 8-byte Folded Spill ; RV64IV-NEXT: .cfi_offset s0, -16 +; RV64IV-NEXT: .cfi_offset ra, -8 ; RV64IV-NEXT: addi s0, sp, 64 ; RV64IV-NEXT: .cfi_def_cfa s0, 0 ; RV64IV-NEXT: csrr a0, vlenb @@ -59,8 +59,8 @@ ; RV64IV-NEXT: vs8r.v v24, (a1) ; RV64IV-NEXT: call callee@plt ; RV64IV-NEXT: addi sp, s0, -64 -; RV64IV-NEXT: ld s0, 48(sp) # 8-byte Folded Reload ; RV64IV-NEXT: ld ra, 56(sp) # 8-byte Folded Reload +; RV64IV-NEXT: ld s0, 48(sp) # 8-byte Folded Reload ; RV64IV-NEXT: addi sp, sp, 64 ; RV64IV-NEXT: ret %local0 = alloca diff --git a/llvm/test/CodeGen/RISCV/rvv/rv32-spill-vector-csr.ll b/llvm/test/CodeGen/RISCV/rvv/rv32-spill-vector-csr.ll --- a/llvm/test/CodeGen/RISCV/rvv/rv32-spill-vector-csr.ll +++ b/llvm/test/CodeGen/RISCV/rvv/rv32-spill-vector-csr.ll @@ -46,8 +46,8 @@ ; SPILL-O2-LABEL: foo: ; SPILL-O2: # %bb.0: ; SPILL-O2-NEXT: addi sp, sp, -16 -; SPILL-O2-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; SPILL-O2-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; SPILL-O2-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; SPILL-O2-NEXT: csrr a1, vlenb ; SPILL-O2-NEXT: slli a1, a1, 1 ; SPILL-O2-NEXT: sub sp, sp, a1 @@ -74,8 +74,8 @@ ; SPILL-O2-NEXT: csrr a0, vlenb ; SPILL-O2-NEXT: slli a0, a0, 1 ; SPILL-O2-NEXT: add sp, sp, a0 -; SPILL-O2-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; SPILL-O2-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; SPILL-O2-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; SPILL-O2-NEXT: addi sp, sp, 16 ; SPILL-O2-NEXT: ret { diff --git a/llvm/test/CodeGen/RISCV/rvv/rv64-spill-vector-csr.ll b/llvm/test/CodeGen/RISCV/rvv/rv64-spill-vector-csr.ll --- a/llvm/test/CodeGen/RISCV/rvv/rv64-spill-vector-csr.ll +++ b/llvm/test/CodeGen/RISCV/rvv/rv64-spill-vector-csr.ll @@ -46,8 +46,8 @@ ; SPILL-O2-LABEL: foo: ; SPILL-O2: # %bb.0: ; SPILL-O2-NEXT: addi sp, sp, -32 -; SPILL-O2-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; SPILL-O2-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; SPILL-O2-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; SPILL-O2-NEXT: csrr a1, vlenb ; SPILL-O2-NEXT: slli a1, a1, 1 ; SPILL-O2-NEXT: sub sp, sp, a1 @@ -74,8 +74,8 @@ ; SPILL-O2-NEXT: csrr a0, vlenb ; SPILL-O2-NEXT: slli a0, a0, 1 ; SPILL-O2-NEXT: add sp, sp, a0 -; SPILL-O2-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; SPILL-O2-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; SPILL-O2-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; SPILL-O2-NEXT: addi sp, sp, 32 ; SPILL-O2-NEXT: ret { diff --git a/llvm/test/CodeGen/RISCV/rvv/rvv-framelayout.ll b/llvm/test/CodeGen/RISCV/rvv/rvv-framelayout.ll --- a/llvm/test/CodeGen/RISCV/rvv/rvv-framelayout.ll +++ b/llvm/test/CodeGen/RISCV/rvv/rvv-framelayout.ll @@ -5,8 +5,8 @@ ; CHECK-LABEL: rvv_vla: ; CHECK: # %bb.0: ; CHECK-NEXT: addi sp, sp, -32 -; CHECK-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; CHECK-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; CHECK-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; CHECK-NEXT: addi s0, sp, 32 ; CHECK-NEXT: csrr a2, vlenb ; CHECK-NEXT: slli a3, a2, 1 @@ -31,8 +31,8 @@ ; CHECK-NEXT: add a0, a0, a1 ; CHECK-NEXT: lw a0, 0(a0) ; CHECK-NEXT: addi sp, s0, -32 -; CHECK-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; CHECK-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; CHECK-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; CHECK-NEXT: addi sp, sp, 32 ; CHECK-NEXT: ret %vla.addr = alloca i32, i64 %n @@ -52,8 +52,8 @@ ; CHECK-LABEL: rvv_overaligned: ; CHECK: # %bb.0: ; CHECK-NEXT: addi sp, sp, -128 -; CHECK-NEXT: sd ra, 120(sp) # 8-byte Folded Spill ; CHECK-NEXT: sd s0, 112(sp) # 8-byte Folded Spill +; CHECK-NEXT: sd ra, 120(sp) # 8-byte Folded Spill ; CHECK-NEXT: addi s0, sp, 128 ; CHECK-NEXT: csrr a0, vlenb ; CHECK-NEXT: slli a1, a0, 1 @@ -69,8 +69,8 @@ ; CHECK-NEXT: vl2re64.v v8, (a0) ; CHECK-NEXT: lw a0, 64(sp) ; CHECK-NEXT: addi sp, s0, -128 -; CHECK-NEXT: ld s0, 112(sp) # 8-byte Folded Reload ; CHECK-NEXT: ld ra, 120(sp) # 8-byte Folded Reload +; CHECK-NEXT: ld s0, 112(sp) # 8-byte Folded Reload ; CHECK-NEXT: addi sp, sp, 128 ; CHECK-NEXT: ret %overaligned = alloca i32, align 64 @@ -89,9 +89,9 @@ ; CHECK-LABEL: rvv_vla_and_overaligned: ; CHECK: # %bb.0: ; CHECK-NEXT: addi sp, sp, -128 -; CHECK-NEXT: sd ra, 120(sp) # 8-byte Folded Spill -; CHECK-NEXT: sd s0, 112(sp) # 8-byte Folded Spill ; CHECK-NEXT: sd s1, 104(sp) # 8-byte Folded Spill +; CHECK-NEXT: sd s0, 112(sp) # 8-byte Folded Spill +; CHECK-NEXT: sd ra, 120(sp) # 8-byte Folded Spill ; CHECK-NEXT: addi s0, sp, 128 ; CHECK-NEXT: csrr a2, vlenb ; CHECK-NEXT: slli a3, a2, 1 @@ -116,9 +116,9 @@ ; CHECK-NEXT: add a0, a0, a1 ; CHECK-NEXT: lw a0, 0(a0) ; CHECK-NEXT: addi sp, s0, -128 -; CHECK-NEXT: ld s1, 104(sp) # 8-byte Folded Reload -; CHECK-NEXT: ld s0, 112(sp) # 8-byte Folded Reload ; CHECK-NEXT: ld ra, 120(sp) # 8-byte Folded Reload +; CHECK-NEXT: ld s0, 112(sp) # 8-byte Folded Reload +; CHECK-NEXT: ld s1, 104(sp) # 8-byte Folded Reload ; CHECK-NEXT: addi sp, sp, 128 ; CHECK-NEXT: ret %overaligned = alloca i32, align 64 diff --git a/llvm/test/CodeGen/RISCV/rvv/rvv-out-arguments.ll b/llvm/test/CodeGen/RISCV/rvv/rvv-out-arguments.ll --- a/llvm/test/CodeGen/RISCV/rvv/rvv-out-arguments.ll +++ b/llvm/test/CodeGen/RISCV/rvv/rvv-out-arguments.ll @@ -6,8 +6,8 @@ ; CHECK-LABEL: lots_args: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: addi sp, sp, -80 -; CHECK-NEXT: sd ra, 72(sp) # 8-byte Folded Spill ; CHECK-NEXT: sd s0, 64(sp) # 8-byte Folded Spill +; CHECK-NEXT: sd ra, 72(sp) # 8-byte Folded Spill ; CHECK-NEXT: addi s0, sp, 80 ; CHECK-NEXT: csrr t0, vlenb ; CHECK-NEXT: slli t0, t0, 3 @@ -32,8 +32,8 @@ ; CHECK-NEXT: csrr a0, vlenb ; CHECK-NEXT: slli a0, a0, 3 ; CHECK-NEXT: add sp, sp, a0 -; CHECK-NEXT: ld s0, 64(sp) # 8-byte Folded Reload ; CHECK-NEXT: ld ra, 72(sp) # 8-byte Folded Reload +; CHECK-NEXT: ld s0, 64(sp) # 8-byte Folded Reload ; CHECK-NEXT: addi sp, sp, 80 ; CHECK-NEXT: ret entry: @@ -66,8 +66,8 @@ ; CHECK-LABEL: main: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: addi sp, sp, -112 -; CHECK-NEXT: sd ra, 104(sp) # 8-byte Folded Spill ; CHECK-NEXT: sd s0, 96(sp) # 8-byte Folded Spill +; CHECK-NEXT: sd ra, 104(sp) # 8-byte Folded Spill ; CHECK-NEXT: addi s0, sp, 112 ; CHECK-NEXT: csrr a0, vlenb ; CHECK-NEXT: slli a0, a0, 3 @@ -141,8 +141,8 @@ ; CHECK-NEXT: csrr a1, vlenb ; CHECK-NEXT: slli a1, a1, 3 ; CHECK-NEXT: add sp, sp, a1 -; CHECK-NEXT: ld s0, 96(sp) # 8-byte Folded Reload ; CHECK-NEXT: ld ra, 104(sp) # 8-byte Folded Reload +; CHECK-NEXT: ld s0, 96(sp) # 8-byte Folded Reload ; CHECK-NEXT: addi sp, sp, 112 ; CHECK-NEXT: ret entry: diff --git a/llvm/test/CodeGen/RISCV/rvv/vsetvli-insert-crossbb.ll b/llvm/test/CodeGen/RISCV/rvv/vsetvli-insert-crossbb.ll --- a/llvm/test/CodeGen/RISCV/rvv/vsetvli-insert-crossbb.ll +++ b/llvm/test/CodeGen/RISCV/rvv/vsetvli-insert-crossbb.ll @@ -328,8 +328,8 @@ ; CHECK-LABEL: test8: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: addi sp, sp, -32 -; CHECK-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; CHECK-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; CHECK-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; CHECK-NEXT: csrr a2, vlenb ; CHECK-NEXT: slli a2, a2, 1 ; CHECK-NEXT: sub sp, sp, a2 @@ -358,8 +358,8 @@ ; CHECK-NEXT: csrr a0, vlenb ; CHECK-NEXT: slli a0, a0, 1 ; CHECK-NEXT: add sp, sp, a0 -; CHECK-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; CHECK-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; CHECK-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; CHECK-NEXT: addi sp, sp, 32 ; CHECK-NEXT: ret entry: @@ -387,8 +387,8 @@ ; CHECK-LABEL: test9: ; CHECK: # %bb.0: # %entry ; CHECK-NEXT: addi sp, sp, -32 -; CHECK-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; CHECK-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; CHECK-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; CHECK-NEXT: csrr a2, vlenb ; CHECK-NEXT: slli a2, a2, 1 ; CHECK-NEXT: sub sp, sp, a2 @@ -418,8 +418,8 @@ ; CHECK-NEXT: csrr a0, vlenb ; CHECK-NEXT: slli a0, a0, 1 ; CHECK-NEXT: add sp, sp, a0 -; CHECK-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; CHECK-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; CHECK-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; CHECK-NEXT: addi sp, sp, 32 ; CHECK-NEXT: ret entry: diff --git a/llvm/test/CodeGen/RISCV/select-cc.ll b/llvm/test/CodeGen/RISCV/select-cc.ll --- a/llvm/test/CodeGen/RISCV/select-cc.ll +++ b/llvm/test/CodeGen/RISCV/select-cc.ll @@ -166,8 +166,8 @@ ; RV32I-LABEL: numsignbits: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a3 ; RV32I-NEXT: beqz a0, .LBB1_2 ; RV32I-NEXT: # %bb.1: @@ -179,16 +179,16 @@ ; RV32I-NEXT: call bar@plt ; RV32I-NEXT: .LBB1_4: ; RV32I-NEXT: mv a0, s0 -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; ; RV32IBT-LABEL: numsignbits: ; RV32IBT: # %bb.0: ; RV32IBT-NEXT: addi sp, sp, -16 -; RV32IBT-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32IBT-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32IBT-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32IBT-NEXT: cmov s0, a0, a2, a3 ; RV32IBT-NEXT: beqz a1, .LBB1_2 ; RV32IBT-NEXT: # %bb.1: @@ -196,8 +196,8 @@ ; RV32IBT-NEXT: call bar@plt ; RV32IBT-NEXT: .LBB1_2: ; RV32IBT-NEXT: mv a0, s0 -; RV32IBT-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32IBT-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32IBT-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32IBT-NEXT: addi sp, sp, 16 ; RV32IBT-NEXT: ret %5 = icmp eq i16 %0, 0 diff --git a/llvm/test/CodeGen/RISCV/shadowcallstack.ll b/llvm/test/CodeGen/RISCV/shadowcallstack.ll --- a/llvm/test/CodeGen/RISCV/shadowcallstack.ll +++ b/llvm/test/CodeGen/RISCV/shadowcallstack.ll @@ -73,14 +73,14 @@ ; RV32-NEXT: addi s2, s2, 4 ; RV32-NEXT: addi sp, sp, -16 ; RV32-NEXT: .cfi_def_cfa_offset 16 -; RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32-NEXT: sw s0, 8(sp) # 4-byte Folded Spill -; RV32-NEXT: sw s1, 4(sp) # 4-byte Folded Spill ; RV32-NEXT: sw s3, 0(sp) # 4-byte Folded Spill -; RV32-NEXT: .cfi_offset ra, -4 -; RV32-NEXT: .cfi_offset s0, -8 -; RV32-NEXT: .cfi_offset s1, -12 +; RV32-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32-NEXT: .cfi_offset s3, -16 +; RV32-NEXT: .cfi_offset s1, -12 +; RV32-NEXT: .cfi_offset s0, -8 +; RV32-NEXT: .cfi_offset ra, -4 ; RV32-NEXT: call bar@plt ; RV32-NEXT: mv s3, a0 ; RV32-NEXT: call bar@plt @@ -91,10 +91,10 @@ ; RV32-NEXT: add a1, s3, s1 ; RV32-NEXT: add a0, s0, a0 ; RV32-NEXT: add a0, a1, a0 -; RV32-NEXT: lw s3, 0(sp) # 4-byte Folded Reload -; RV32-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32-NEXT: lw s1, 4(sp) # 4-byte Folded Reload +; RV32-NEXT: lw s3, 0(sp) # 4-byte Folded Reload ; RV32-NEXT: addi sp, sp, 16 ; RV32-NEXT: lw ra, -4(s2) ; RV32-NEXT: addi s2, s2, -4 @@ -106,14 +106,14 @@ ; RV64-NEXT: addi s2, s2, 8 ; RV64-NEXT: addi sp, sp, -32 ; RV64-NEXT: .cfi_def_cfa_offset 32 -; RV64-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64-NEXT: sd s0, 16(sp) # 8-byte Folded Spill -; RV64-NEXT: sd s1, 8(sp) # 8-byte Folded Spill ; RV64-NEXT: sd s3, 0(sp) # 8-byte Folded Spill -; RV64-NEXT: .cfi_offset ra, -8 -; RV64-NEXT: .cfi_offset s0, -16 -; RV64-NEXT: .cfi_offset s1, -24 +; RV64-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64-NEXT: .cfi_offset s3, -32 +; RV64-NEXT: .cfi_offset s1, -24 +; RV64-NEXT: .cfi_offset s0, -16 +; RV64-NEXT: .cfi_offset ra, -8 ; RV64-NEXT: call bar@plt ; RV64-NEXT: mv s3, a0 ; RV64-NEXT: call bar@plt @@ -124,10 +124,10 @@ ; RV64-NEXT: addw a1, s3, s1 ; RV64-NEXT: addw a0, s0, a0 ; RV64-NEXT: addw a0, a1, a0 -; RV64-NEXT: ld s3, 0(sp) # 8-byte Folded Reload -; RV64-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64-NEXT: ld s1, 8(sp) # 8-byte Folded Reload +; RV64-NEXT: ld s3, 0(sp) # 8-byte Folded Reload ; RV64-NEXT: addi sp, sp, 32 ; RV64-NEXT: ld ra, -8(s2) ; RV64-NEXT: addi s2, s2, -8 diff --git a/llvm/test/CodeGen/RISCV/shifts.ll b/llvm/test/CodeGen/RISCV/shifts.ll --- a/llvm/test/CodeGen/RISCV/shifts.ll +++ b/llvm/test/CodeGen/RISCV/shifts.ll @@ -289,8 +289,8 @@ ; RV32I-LABEL: ashr128: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw s0, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s1, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: lw a2, 0(a2) ; RV32I-NEXT: lw t2, 8(a1) ; RV32I-NEXT: lw t5, 12(a1) @@ -402,8 +402,8 @@ ; RV32I-NEXT: sw a4, 8(a0) ; RV32I-NEXT: sw s1, 0(a0) ; RV32I-NEXT: sw t0, 4(a0) -; RV32I-NEXT: lw s1, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw s0, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; diff --git a/llvm/test/CodeGen/RISCV/shrinkwrap.ll b/llvm/test/CodeGen/RISCV/shrinkwrap.ll --- a/llvm/test/CodeGen/RISCV/shrinkwrap.ll +++ b/llvm/test/CodeGen/RISCV/shrinkwrap.ll @@ -73,8 +73,8 @@ ; RV32I-SW-NO-LABEL: conditional_alloca: ; RV32I-SW-NO: # %bb.0: ; RV32I-SW-NO-NEXT: addi sp, sp, -16 -; RV32I-SW-NO-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-SW-NO-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-SW-NO-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-SW-NO-NEXT: addi s0, sp, 16 ; RV32I-SW-NO-NEXT: addi a1, zero, 32 ; RV32I-SW-NO-NEXT: bltu a1, a0, .LBB1_2 @@ -86,8 +86,8 @@ ; RV32I-SW-NO-NEXT: call notdead@plt ; RV32I-SW-NO-NEXT: .LBB1_2: # %if.end ; RV32I-SW-NO-NEXT: addi sp, s0, -16 -; RV32I-SW-NO-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-SW-NO-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-SW-NO-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-SW-NO-NEXT: addi sp, sp, 16 ; RV32I-SW-NO-NEXT: ret ; @@ -97,8 +97,8 @@ ; RV32I-SW-NEXT: bltu a1, a0, .LBB1_2 ; RV32I-SW-NEXT: # %bb.1: # %if.then ; RV32I-SW-NEXT: addi sp, sp, -16 -; RV32I-SW-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-SW-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-SW-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-SW-NEXT: addi s0, sp, 16 ; RV32I-SW-NEXT: addi a0, a0, 15 ; RV32I-SW-NEXT: andi a0, a0, -16 @@ -106,8 +106,8 @@ ; RV32I-SW-NEXT: mv sp, a0 ; RV32I-SW-NEXT: call notdead@plt ; RV32I-SW-NEXT: addi sp, s0, -16 -; RV32I-SW-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-SW-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-SW-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-SW-NEXT: addi sp, sp, 16 ; RV32I-SW-NEXT: .LBB1_2: # %if.end ; RV32I-SW-NEXT: ret @@ -136,8 +136,8 @@ ; RV64I-SW-NEXT: bltu a2, a1, .LBB1_2 ; RV64I-SW-NEXT: # %bb.1: # %if.then ; RV64I-SW-NEXT: addi sp, sp, -16 -; RV64I-SW-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64I-SW-NEXT: sd s0, 0(sp) # 8-byte Folded Spill +; RV64I-SW-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; RV64I-SW-NEXT: addi s0, sp, 16 ; RV64I-SW-NEXT: slli a0, a0, 32 ; RV64I-SW-NEXT: srli a0, a0, 32 @@ -147,8 +147,8 @@ ; RV64I-SW-NEXT: mv sp, a0 ; RV64I-SW-NEXT: call notdead@plt ; RV64I-SW-NEXT: addi sp, s0, -16 -; RV64I-SW-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64I-SW-NEXT: ld ra, 8(sp) # 8-byte Folded Reload +; RV64I-SW-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; RV64I-SW-NEXT: addi sp, sp, 16 ; RV64I-SW-NEXT: .LBB1_2: # %if.end ; RV64I-SW-NEXT: ret diff --git a/llvm/test/CodeGen/RISCV/srem-lkk.ll b/llvm/test/CodeGen/RISCV/srem-lkk.ll --- a/llvm/test/CodeGen/RISCV/srem-lkk.ll +++ b/llvm/test/CodeGen/RISCV/srem-lkk.ll @@ -232,9 +232,9 @@ ; RV32I-LABEL: combine_srem_sdiv: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: addi a1, zero, 95 ; RV32I-NEXT: call __modsi3@plt @@ -243,9 +243,9 @@ ; RV32I-NEXT: mv a0, s0 ; RV32I-NEXT: call __divsi3@plt ; RV32I-NEXT: add a0, s1, a0 -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; @@ -267,9 +267,9 @@ ; RV64I-LABEL: combine_srem_sdiv: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sext.w s0, a0 ; RV64I-NEXT: addi a1, zero, 95 ; RV64I-NEXT: mv a0, s0 @@ -279,9 +279,9 @@ ; RV64I-NEXT: mv a0, s0 ; RV64I-NEXT: call __divdi3@plt ; RV64I-NEXT: addw a0, s1, a0 -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret ; diff --git a/llvm/test/CodeGen/RISCV/srem-seteq-illegal-types.ll b/llvm/test/CodeGen/RISCV/srem-seteq-illegal-types.ll --- a/llvm/test/CodeGen/RISCV/srem-seteq-illegal-types.ll +++ b/llvm/test/CodeGen/RISCV/srem-seteq-illegal-types.ll @@ -311,14 +311,14 @@ ; RV32-LABEL: test_srem_vec: ; RV32: # %bb.0: ; RV32-NEXT: addi sp, sp, -32 -; RV32-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32-NEXT: sw s2, 16(sp) # 4-byte Folded Spill -; RV32-NEXT: sw s3, 12(sp) # 4-byte Folded Spill -; RV32-NEXT: sw s4, 8(sp) # 4-byte Folded Spill -; RV32-NEXT: sw s5, 4(sp) # 4-byte Folded Spill ; RV32-NEXT: sw s6, 0(sp) # 4-byte Folded Spill +; RV32-NEXT: sw s5, 4(sp) # 4-byte Folded Spill +; RV32-NEXT: sw s4, 8(sp) # 4-byte Folded Spill +; RV32-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32-NEXT: mv s0, a0 ; RV32-NEXT: lw a0, 4(a0) ; RV32-NEXT: lbu a1, 12(s0) @@ -381,27 +381,27 @@ ; RV32-NEXT: or a1, a2, a1 ; RV32-NEXT: sub a0, a1, a0 ; RV32-NEXT: sw a0, 8(s0) -; RV32-NEXT: lw s6, 0(sp) # 4-byte Folded Reload -; RV32-NEXT: lw s5, 4(sp) # 4-byte Folded Reload -; RV32-NEXT: lw s4, 8(sp) # 4-byte Folded Reload -; RV32-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32-NEXT: lw s3, 12(sp) # 4-byte Folded Reload +; RV32-NEXT: lw s4, 8(sp) # 4-byte Folded Reload +; RV32-NEXT: lw s5, 4(sp) # 4-byte Folded Reload +; RV32-NEXT: lw s6, 0(sp) # 4-byte Folded Reload ; RV32-NEXT: addi sp, sp, 32 ; RV32-NEXT: ret ; ; RV64-LABEL: test_srem_vec: ; RV64: # %bb.0: ; RV64-NEXT: addi sp, sp, -64 -; RV64-NEXT: sd ra, 56(sp) # 8-byte Folded Spill -; RV64-NEXT: sd s0, 48(sp) # 8-byte Folded Spill -; RV64-NEXT: sd s1, 40(sp) # 8-byte Folded Spill -; RV64-NEXT: sd s2, 32(sp) # 8-byte Folded Spill -; RV64-NEXT: sd s3, 24(sp) # 8-byte Folded Spill -; RV64-NEXT: sd s4, 16(sp) # 8-byte Folded Spill ; RV64-NEXT: sd s5, 8(sp) # 8-byte Folded Spill +; RV64-NEXT: sd s4, 16(sp) # 8-byte Folded Spill +; RV64-NEXT: sd s3, 24(sp) # 8-byte Folded Spill +; RV64-NEXT: sd s2, 32(sp) # 8-byte Folded Spill +; RV64-NEXT: sd s1, 40(sp) # 8-byte Folded Spill +; RV64-NEXT: sd s0, 48(sp) # 8-byte Folded Spill +; RV64-NEXT: sd ra, 56(sp) # 8-byte Folded Spill ; RV64-NEXT: mv s0, a0 ; RV64-NEXT: lb a0, 12(a0) ; RV64-NEXT: lwu a1, 8(s0) @@ -472,27 +472,27 @@ ; RV64-NEXT: slli a1, a2, 33 ; RV64-NEXT: or a0, a0, a1 ; RV64-NEXT: sd a0, 0(s0) -; RV64-NEXT: ld s5, 8(sp) # 8-byte Folded Reload -; RV64-NEXT: ld s4, 16(sp) # 8-byte Folded Reload -; RV64-NEXT: ld s3, 24(sp) # 8-byte Folded Reload -; RV64-NEXT: ld s2, 32(sp) # 8-byte Folded Reload -; RV64-NEXT: ld s1, 40(sp) # 8-byte Folded Reload -; RV64-NEXT: ld s0, 48(sp) # 8-byte Folded Reload ; RV64-NEXT: ld ra, 56(sp) # 8-byte Folded Reload +; RV64-NEXT: ld s0, 48(sp) # 8-byte Folded Reload +; RV64-NEXT: ld s1, 40(sp) # 8-byte Folded Reload +; RV64-NEXT: ld s2, 32(sp) # 8-byte Folded Reload +; RV64-NEXT: ld s3, 24(sp) # 8-byte Folded Reload +; RV64-NEXT: ld s4, 16(sp) # 8-byte Folded Reload +; RV64-NEXT: ld s5, 8(sp) # 8-byte Folded Reload ; RV64-NEXT: addi sp, sp, 64 ; RV64-NEXT: ret ; ; RV32M-LABEL: test_srem_vec: ; RV32M: # %bb.0: ; RV32M-NEXT: addi sp, sp, -32 -; RV32M-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32M-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32M-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32M-NEXT: sw s2, 16(sp) # 4-byte Folded Spill -; RV32M-NEXT: sw s3, 12(sp) # 4-byte Folded Spill -; RV32M-NEXT: sw s4, 8(sp) # 4-byte Folded Spill -; RV32M-NEXT: sw s5, 4(sp) # 4-byte Folded Spill ; RV32M-NEXT: sw s6, 0(sp) # 4-byte Folded Spill +; RV32M-NEXT: sw s5, 4(sp) # 4-byte Folded Spill +; RV32M-NEXT: sw s4, 8(sp) # 4-byte Folded Spill +; RV32M-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32M-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32M-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32M-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32M-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32M-NEXT: mv s0, a0 ; RV32M-NEXT: lw a0, 4(a0) ; RV32M-NEXT: lbu a1, 12(s0) @@ -555,14 +555,14 @@ ; RV32M-NEXT: or a1, a2, a1 ; RV32M-NEXT: sub a0, a1, a0 ; RV32M-NEXT: sw a0, 8(s0) -; RV32M-NEXT: lw s6, 0(sp) # 4-byte Folded Reload -; RV32M-NEXT: lw s5, 4(sp) # 4-byte Folded Reload -; RV32M-NEXT: lw s4, 8(sp) # 4-byte Folded Reload -; RV32M-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32M-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32M-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32M-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32M-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32M-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32M-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32M-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32M-NEXT: lw s3, 12(sp) # 4-byte Folded Reload +; RV32M-NEXT: lw s4, 8(sp) # 4-byte Folded Reload +; RV32M-NEXT: lw s5, 4(sp) # 4-byte Folded Reload +; RV32M-NEXT: lw s6, 0(sp) # 4-byte Folded Reload ; RV32M-NEXT: addi sp, sp, 32 ; RV32M-NEXT: ret ; @@ -664,13 +664,13 @@ ; RV32MV-LABEL: test_srem_vec: ; RV32MV: # %bb.0: ; RV32MV-NEXT: addi sp, sp, -96 -; RV32MV-NEXT: sw ra, 92(sp) # 4-byte Folded Spill -; RV32MV-NEXT: sw s0, 88(sp) # 4-byte Folded Spill -; RV32MV-NEXT: sw s1, 84(sp) # 4-byte Folded Spill -; RV32MV-NEXT: sw s2, 80(sp) # 4-byte Folded Spill -; RV32MV-NEXT: sw s3, 76(sp) # 4-byte Folded Spill -; RV32MV-NEXT: sw s4, 72(sp) # 4-byte Folded Spill ; RV32MV-NEXT: sw s5, 68(sp) # 4-byte Folded Spill +; RV32MV-NEXT: sw s4, 72(sp) # 4-byte Folded Spill +; RV32MV-NEXT: sw s3, 76(sp) # 4-byte Folded Spill +; RV32MV-NEXT: sw s2, 80(sp) # 4-byte Folded Spill +; RV32MV-NEXT: sw s1, 84(sp) # 4-byte Folded Spill +; RV32MV-NEXT: sw s0, 88(sp) # 4-byte Folded Spill +; RV32MV-NEXT: sw ra, 92(sp) # 4-byte Folded Spill ; RV32MV-NEXT: addi s0, sp, 96 ; RV32MV-NEXT: andi sp, sp, -32 ; RV32MV-NEXT: mv s1, a0 @@ -755,21 +755,21 @@ ; RV32MV-NEXT: or a0, a1, a0 ; RV32MV-NEXT: sw a0, 8(s1) ; RV32MV-NEXT: addi sp, s0, -96 -; RV32MV-NEXT: lw s5, 68(sp) # 4-byte Folded Reload -; RV32MV-NEXT: lw s4, 72(sp) # 4-byte Folded Reload -; RV32MV-NEXT: lw s3, 76(sp) # 4-byte Folded Reload -; RV32MV-NEXT: lw s2, 80(sp) # 4-byte Folded Reload -; RV32MV-NEXT: lw s1, 84(sp) # 4-byte Folded Reload -; RV32MV-NEXT: lw s0, 88(sp) # 4-byte Folded Reload ; RV32MV-NEXT: lw ra, 92(sp) # 4-byte Folded Reload +; RV32MV-NEXT: lw s0, 88(sp) # 4-byte Folded Reload +; RV32MV-NEXT: lw s1, 84(sp) # 4-byte Folded Reload +; RV32MV-NEXT: lw s2, 80(sp) # 4-byte Folded Reload +; RV32MV-NEXT: lw s3, 76(sp) # 4-byte Folded Reload +; RV32MV-NEXT: lw s4, 72(sp) # 4-byte Folded Reload +; RV32MV-NEXT: lw s5, 68(sp) # 4-byte Folded Reload ; RV32MV-NEXT: addi sp, sp, 96 ; RV32MV-NEXT: ret ; ; RV64MV-LABEL: test_srem_vec: ; RV64MV: # %bb.0: ; RV64MV-NEXT: addi sp, sp, -96 -; RV64MV-NEXT: sd ra, 88(sp) # 8-byte Folded Spill ; RV64MV-NEXT: sd s0, 80(sp) # 8-byte Folded Spill +; RV64MV-NEXT: sd ra, 88(sp) # 8-byte Folded Spill ; RV64MV-NEXT: addi s0, sp, 96 ; RV64MV-NEXT: andi sp, sp, -32 ; RV64MV-NEXT: lb a1, 12(a0) @@ -866,8 +866,8 @@ ; RV64MV-NEXT: or a1, a1, a2 ; RV64MV-NEXT: sd a1, 0(a0) ; RV64MV-NEXT: addi sp, s0, -96 -; RV64MV-NEXT: ld s0, 80(sp) # 8-byte Folded Reload ; RV64MV-NEXT: ld ra, 88(sp) # 8-byte Folded Reload +; RV64MV-NEXT: ld s0, 80(sp) # 8-byte Folded Reload ; RV64MV-NEXT: addi sp, sp, 96 ; RV64MV-NEXT: ret %ld = load <3 x i33>, <3 x i33>* %X diff --git a/llvm/test/CodeGen/RISCV/srem-vector-lkk.ll b/llvm/test/CodeGen/RISCV/srem-vector-lkk.ll --- a/llvm/test/CodeGen/RISCV/srem-vector-lkk.ll +++ b/llvm/test/CodeGen/RISCV/srem-vector-lkk.ll @@ -12,13 +12,13 @@ ; RV32I-LABEL: fold_srem_vec_1: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s5, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: lh s2, 12(a1) ; RV32I-NEXT: lh s3, 8(a1) ; RV32I-NEXT: lh s0, 4(a1) @@ -43,13 +43,13 @@ ; RV32I-NEXT: sh s0, 4(s1) ; RV32I-NEXT: sh s5, 2(s1) ; RV32I-NEXT: sh s4, 0(s1) -; RV32I-NEXT: lw s5, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s5, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -106,13 +106,13 @@ ; RV64I-LABEL: fold_srem_vec_1: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -64 -; RV64I-NEXT: sd ra, 56(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 48(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s3, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s4, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s5, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s4, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s3, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 40(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 48(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 56(sp) # 8-byte Folded Spill ; RV64I-NEXT: lh s2, 24(a1) ; RV64I-NEXT: lh s3, 16(a1) ; RV64I-NEXT: lh s0, 8(a1) @@ -137,13 +137,13 @@ ; RV64I-NEXT: sh s0, 4(s1) ; RV64I-NEXT: sh s5, 2(s1) ; RV64I-NEXT: sh s4, 0(s1) -; RV64I-NEXT: ld s5, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s4, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s3, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 32(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 40(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 48(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 56(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 48(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s4, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s5, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 64 ; RV64I-NEXT: ret ; @@ -227,13 +227,13 @@ ; RV32I-LABEL: fold_srem_vec_2: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s5, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: lh s2, 12(a1) ; RV32I-NEXT: lh s3, 8(a1) ; RV32I-NEXT: lh s0, 4(a1) @@ -258,13 +258,13 @@ ; RV32I-NEXT: sh s0, 4(s1) ; RV32I-NEXT: sh s5, 2(s1) ; RV32I-NEXT: sh s4, 0(s1) -; RV32I-NEXT: lw s5, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s5, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -314,13 +314,13 @@ ; RV64I-LABEL: fold_srem_vec_2: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -64 -; RV64I-NEXT: sd ra, 56(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 48(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s3, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s4, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s5, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s4, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s3, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 40(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 48(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 56(sp) # 8-byte Folded Spill ; RV64I-NEXT: lh s2, 24(a1) ; RV64I-NEXT: lh s3, 16(a1) ; RV64I-NEXT: lh s0, 8(a1) @@ -345,13 +345,13 @@ ; RV64I-NEXT: sh s0, 4(s1) ; RV64I-NEXT: sh s5, 2(s1) ; RV64I-NEXT: sh s4, 0(s1) -; RV64I-NEXT: ld s5, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s4, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s3, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 32(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 40(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 48(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 56(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 48(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s4, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s5, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 64 ; RV64I-NEXT: ret ; @@ -413,17 +413,17 @@ ; RV32I-LABEL: combine_srem_sdiv: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -48 -; RV32I-NEXT: sw ra, 44(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 40(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 36(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 32(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s3, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s4, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s5, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s6, 16(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s7, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s8, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s9, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s8, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s7, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s6, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s5, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s4, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s3, 28(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 32(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 36(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 40(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 44(sp) # 4-byte Folded Spill ; RV32I-NEXT: lh s2, 0(a1) ; RV32I-NEXT: lh s3, 4(a1) ; RV32I-NEXT: lh s4, 8(a1) @@ -468,17 +468,17 @@ ; RV32I-NEXT: sh a2, 4(s0) ; RV32I-NEXT: sh a1, 2(s0) ; RV32I-NEXT: sh a0, 0(s0) -; RV32I-NEXT: lw s9, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s8, 8(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s7, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s6, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s5, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s4, 24(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s3, 28(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 32(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 36(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 40(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 44(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 40(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 36(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 32(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s4, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s5, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s6, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s7, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s8, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s9, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 48 ; RV32I-NEXT: ret ; @@ -532,17 +532,17 @@ ; RV64I-LABEL: combine_srem_sdiv: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -96 -; RV64I-NEXT: sd ra, 88(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 80(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 72(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 64(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s3, 56(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s4, 48(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s5, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s6, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s7, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s8, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s9, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s8, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s7, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s6, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s5, 40(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s4, 48(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s3, 56(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 64(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 72(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 80(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 88(sp) # 8-byte Folded Spill ; RV64I-NEXT: lh s2, 0(a1) ; RV64I-NEXT: lh s3, 8(a1) ; RV64I-NEXT: lh s4, 16(a1) @@ -587,17 +587,17 @@ ; RV64I-NEXT: sh a2, 4(s0) ; RV64I-NEXT: sh a1, 2(s0) ; RV64I-NEXT: sh a0, 0(s0) -; RV64I-NEXT: ld s9, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s8, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s7, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s6, 32(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s5, 40(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s4, 48(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s3, 56(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 64(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 72(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 80(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 88(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 80(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 72(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 64(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 56(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s4, 48(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s5, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s6, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s7, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s8, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s9, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 96 ; RV64I-NEXT: ret ; @@ -664,11 +664,11 @@ ; RV32I-LABEL: dont_fold_srem_power_of_two: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lh a2, 0(a1) ; RV32I-NEXT: lh a0, 12(a1) @@ -692,11 +692,11 @@ ; RV32I-NEXT: sh s1, 4(s0) ; RV32I-NEXT: sh s3, 2(s0) ; RV32I-NEXT: sh s2, 0(s0) -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -737,11 +737,11 @@ ; RV64I-LABEL: dont_fold_srem_power_of_two: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lh a2, 0(a1) ; RV64I-NEXT: lh a0, 24(a1) @@ -765,11 +765,11 @@ ; RV64I-NEXT: sh s1, 4(s0) ; RV64I-NEXT: sh s3, 2(s0) ; RV64I-NEXT: sh s2, 0(s0) -; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -821,11 +821,11 @@ ; RV32I-LABEL: dont_fold_srem_one: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: lh s2, 12(a1) ; RV32I-NEXT: lh s1, 8(a1) ; RV32I-NEXT: lh a2, 4(a1) @@ -846,11 +846,11 @@ ; RV32I-NEXT: sh a0, 6(s0) ; RV32I-NEXT: sh s1, 4(s0) ; RV32I-NEXT: sh s3, 2(s0) -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -898,11 +898,11 @@ ; RV64I-LABEL: dont_fold_srem_one: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: lh s2, 24(a1) ; RV64I-NEXT: lh s1, 16(a1) ; RV64I-NEXT: lh a2, 8(a1) @@ -923,11 +923,11 @@ ; RV64I-NEXT: sh a0, 6(s0) ; RV64I-NEXT: sh s1, 4(s0) ; RV64I-NEXT: sh s3, 2(s0) -; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -997,11 +997,11 @@ ; RV32I-LABEL: dont_fold_urem_i16_smax: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: lh a2, 4(a1) ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: lh s2, 12(a1) @@ -1022,11 +1022,11 @@ ; RV32I-NEXT: sh a0, 6(s0) ; RV32I-NEXT: sh s1, 4(s0) ; RV32I-NEXT: sh s3, 2(s0) -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -1069,11 +1069,11 @@ ; RV64I-LABEL: dont_fold_urem_i16_smax: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: lh a2, 8(a1) ; RV64I-NEXT: mv s0, a0 ; RV64I-NEXT: lh s2, 24(a1) @@ -1094,11 +1094,11 @@ ; RV64I-NEXT: sh a0, 6(s0) ; RV64I-NEXT: sh s1, 4(s0) ; RV64I-NEXT: sh s3, 2(s0) -; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -1158,17 +1158,17 @@ ; RV32I-LABEL: dont_fold_srem_i64: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -48 -; RV32I-NEXT: sw ra, 44(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 40(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 36(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 32(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s3, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s4, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s5, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s6, 16(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s7, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s8, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s9, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s8, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s7, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s6, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s5, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s4, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s3, 28(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 32(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 36(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 40(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 44(sp) # 4-byte Folded Spill ; RV32I-NEXT: lw s2, 24(a1) ; RV32I-NEXT: lw s3, 28(a1) ; RV32I-NEXT: lw s4, 16(a1) @@ -1212,34 +1212,34 @@ ; RV32I-NEXT: sw s6, 8(s0) ; RV32I-NEXT: sw s8, 4(s0) ; RV32I-NEXT: sw s7, 0(s0) -; RV32I-NEXT: lw s9, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s8, 8(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s7, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s6, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s5, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s4, 24(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s3, 28(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 32(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 36(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 40(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 44(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 40(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 36(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 32(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s4, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s5, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s6, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s7, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s8, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s9, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 48 ; RV32I-NEXT: ret ; ; RV32IM-LABEL: dont_fold_srem_i64: ; RV32IM: # %bb.0: ; RV32IM-NEXT: addi sp, sp, -48 -; RV32IM-NEXT: sw ra, 44(sp) # 4-byte Folded Spill -; RV32IM-NEXT: sw s0, 40(sp) # 4-byte Folded Spill -; RV32IM-NEXT: sw s1, 36(sp) # 4-byte Folded Spill -; RV32IM-NEXT: sw s2, 32(sp) # 4-byte Folded Spill -; RV32IM-NEXT: sw s3, 28(sp) # 4-byte Folded Spill -; RV32IM-NEXT: sw s4, 24(sp) # 4-byte Folded Spill -; RV32IM-NEXT: sw s5, 20(sp) # 4-byte Folded Spill -; RV32IM-NEXT: sw s6, 16(sp) # 4-byte Folded Spill -; RV32IM-NEXT: sw s7, 12(sp) # 4-byte Folded Spill -; RV32IM-NEXT: sw s8, 8(sp) # 4-byte Folded Spill ; RV32IM-NEXT: sw s9, 4(sp) # 4-byte Folded Spill +; RV32IM-NEXT: sw s8, 8(sp) # 4-byte Folded Spill +; RV32IM-NEXT: sw s7, 12(sp) # 4-byte Folded Spill +; RV32IM-NEXT: sw s6, 16(sp) # 4-byte Folded Spill +; RV32IM-NEXT: sw s5, 20(sp) # 4-byte Folded Spill +; RV32IM-NEXT: sw s4, 24(sp) # 4-byte Folded Spill +; RV32IM-NEXT: sw s3, 28(sp) # 4-byte Folded Spill +; RV32IM-NEXT: sw s2, 32(sp) # 4-byte Folded Spill +; RV32IM-NEXT: sw s1, 36(sp) # 4-byte Folded Spill +; RV32IM-NEXT: sw s0, 40(sp) # 4-byte Folded Spill +; RV32IM-NEXT: sw ra, 44(sp) # 4-byte Folded Spill ; RV32IM-NEXT: lw s2, 24(a1) ; RV32IM-NEXT: lw s3, 28(a1) ; RV32IM-NEXT: lw s4, 16(a1) @@ -1283,28 +1283,28 @@ ; RV32IM-NEXT: sw s6, 8(s0) ; RV32IM-NEXT: sw s8, 4(s0) ; RV32IM-NEXT: sw s7, 0(s0) -; RV32IM-NEXT: lw s9, 4(sp) # 4-byte Folded Reload -; RV32IM-NEXT: lw s8, 8(sp) # 4-byte Folded Reload -; RV32IM-NEXT: lw s7, 12(sp) # 4-byte Folded Reload -; RV32IM-NEXT: lw s6, 16(sp) # 4-byte Folded Reload -; RV32IM-NEXT: lw s5, 20(sp) # 4-byte Folded Reload -; RV32IM-NEXT: lw s4, 24(sp) # 4-byte Folded Reload -; RV32IM-NEXT: lw s3, 28(sp) # 4-byte Folded Reload -; RV32IM-NEXT: lw s2, 32(sp) # 4-byte Folded Reload -; RV32IM-NEXT: lw s1, 36(sp) # 4-byte Folded Reload -; RV32IM-NEXT: lw s0, 40(sp) # 4-byte Folded Reload ; RV32IM-NEXT: lw ra, 44(sp) # 4-byte Folded Reload +; RV32IM-NEXT: lw s0, 40(sp) # 4-byte Folded Reload +; RV32IM-NEXT: lw s1, 36(sp) # 4-byte Folded Reload +; RV32IM-NEXT: lw s2, 32(sp) # 4-byte Folded Reload +; RV32IM-NEXT: lw s3, 28(sp) # 4-byte Folded Reload +; RV32IM-NEXT: lw s4, 24(sp) # 4-byte Folded Reload +; RV32IM-NEXT: lw s5, 20(sp) # 4-byte Folded Reload +; RV32IM-NEXT: lw s6, 16(sp) # 4-byte Folded Reload +; RV32IM-NEXT: lw s7, 12(sp) # 4-byte Folded Reload +; RV32IM-NEXT: lw s8, 8(sp) # 4-byte Folded Reload +; RV32IM-NEXT: lw s9, 4(sp) # 4-byte Folded Reload ; RV32IM-NEXT: addi sp, sp, 48 ; RV32IM-NEXT: ret ; ; RV64I-LABEL: dont_fold_srem_i64: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: ld s2, 24(a1) ; RV64I-NEXT: ld s1, 16(a1) ; RV64I-NEXT: ld a2, 8(a1) @@ -1325,11 +1325,11 @@ ; RV64I-NEXT: sd a0, 24(s0) ; RV64I-NEXT: sd s1, 16(s0) ; RV64I-NEXT: sd s3, 8(s0) -; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; diff --git a/llvm/test/CodeGen/RISCV/stack-realignment-with-variable-sized-objects.ll b/llvm/test/CodeGen/RISCV/stack-realignment-with-variable-sized-objects.ll --- a/llvm/test/CodeGen/RISCV/stack-realignment-with-variable-sized-objects.ll +++ b/llvm/test/CodeGen/RISCV/stack-realignment-with-variable-sized-objects.ll @@ -11,12 +11,12 @@ ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -64 ; RV32I-NEXT: .cfi_def_cfa_offset 64 -; RV32I-NEXT: sw ra, 60(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 56(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s1, 52(sp) # 4-byte Folded Spill -; RV32I-NEXT: .cfi_offset ra, -4 -; RV32I-NEXT: .cfi_offset s0, -8 +; RV32I-NEXT: sw s0, 56(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 60(sp) # 4-byte Folded Spill ; RV32I-NEXT: .cfi_offset s1, -12 +; RV32I-NEXT: .cfi_offset s0, -8 +; RV32I-NEXT: .cfi_offset ra, -4 ; RV32I-NEXT: addi s0, sp, 64 ; RV32I-NEXT: .cfi_def_cfa s0, 0 ; RV32I-NEXT: andi sp, sp, -64 @@ -28,9 +28,9 @@ ; RV32I-NEXT: mv a1, s1 ; RV32I-NEXT: call callee@plt ; RV32I-NEXT: addi sp, s0, -64 -; RV32I-NEXT: lw s1, 52(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 56(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 60(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 56(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 52(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 64 ; RV32I-NEXT: ret ; @@ -38,12 +38,12 @@ ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -64 ; RV64I-NEXT: .cfi_def_cfa_offset 64 -; RV64I-NEXT: sd ra, 56(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 48(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s1, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: .cfi_offset ra, -8 -; RV64I-NEXT: .cfi_offset s0, -16 +; RV64I-NEXT: sd s0, 48(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 56(sp) # 8-byte Folded Spill ; RV64I-NEXT: .cfi_offset s1, -24 +; RV64I-NEXT: .cfi_offset s0, -16 +; RV64I-NEXT: .cfi_offset ra, -8 ; RV64I-NEXT: addi s0, sp, 64 ; RV64I-NEXT: .cfi_def_cfa s0, 0 ; RV64I-NEXT: andi sp, sp, -64 @@ -57,9 +57,9 @@ ; RV64I-NEXT: mv a1, s1 ; RV64I-NEXT: call callee@plt ; RV64I-NEXT: addi sp, s0, -64 -; RV64I-NEXT: ld s1, 40(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 48(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 56(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 48(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 40(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 64 ; RV64I-NEXT: ret %1 = alloca i8, i32 %n diff --git a/llvm/test/CodeGen/RISCV/stack-realignment.ll b/llvm/test/CodeGen/RISCV/stack-realignment.ll --- a/llvm/test/CodeGen/RISCV/stack-realignment.ll +++ b/llvm/test/CodeGen/RISCV/stack-realignment.ll @@ -11,18 +11,18 @@ ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 ; RV32I-NEXT: .cfi_def_cfa_offset 32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: .cfi_offset ra, -4 +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: .cfi_offset s0, -8 +; RV32I-NEXT: .cfi_offset ra, -4 ; RV32I-NEXT: addi s0, sp, 32 ; RV32I-NEXT: .cfi_def_cfa s0, 0 ; RV32I-NEXT: andi sp, sp, -32 ; RV32I-NEXT: mv a0, sp ; RV32I-NEXT: call callee@plt ; RV32I-NEXT: addi sp, s0, -32 -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -30,18 +30,18 @@ ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 ; RV64I-NEXT: .cfi_def_cfa_offset 32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: .cfi_offset ra, -8 +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: .cfi_offset s0, -16 +; RV64I-NEXT: .cfi_offset ra, -8 ; RV64I-NEXT: addi s0, sp, 32 ; RV64I-NEXT: .cfi_def_cfa s0, 0 ; RV64I-NEXT: andi sp, sp, -32 ; RV64I-NEXT: mv a0, sp ; RV64I-NEXT: call callee@plt ; RV64I-NEXT: addi sp, s0, -32 -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret %1 = alloca i8, align 32 @@ -83,18 +83,18 @@ ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -64 ; RV32I-NEXT: .cfi_def_cfa_offset 64 -; RV32I-NEXT: sw ra, 60(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s0, 56(sp) # 4-byte Folded Spill -; RV32I-NEXT: .cfi_offset ra, -4 +; RV32I-NEXT: sw ra, 60(sp) # 4-byte Folded Spill ; RV32I-NEXT: .cfi_offset s0, -8 +; RV32I-NEXT: .cfi_offset ra, -4 ; RV32I-NEXT: addi s0, sp, 64 ; RV32I-NEXT: .cfi_def_cfa s0, 0 ; RV32I-NEXT: andi sp, sp, -64 ; RV32I-NEXT: mv a0, sp ; RV32I-NEXT: call callee@plt ; RV32I-NEXT: addi sp, s0, -64 -; RV32I-NEXT: lw s0, 56(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 60(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 56(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 64 ; RV32I-NEXT: ret ; @@ -102,18 +102,18 @@ ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -64 ; RV64I-NEXT: .cfi_def_cfa_offset 64 -; RV64I-NEXT: sd ra, 56(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s0, 48(sp) # 8-byte Folded Spill -; RV64I-NEXT: .cfi_offset ra, -8 +; RV64I-NEXT: sd ra, 56(sp) # 8-byte Folded Spill ; RV64I-NEXT: .cfi_offset s0, -16 +; RV64I-NEXT: .cfi_offset ra, -8 ; RV64I-NEXT: addi s0, sp, 64 ; RV64I-NEXT: .cfi_def_cfa s0, 0 ; RV64I-NEXT: andi sp, sp, -64 ; RV64I-NEXT: mv a0, sp ; RV64I-NEXT: call callee@plt ; RV64I-NEXT: addi sp, s0, -64 -; RV64I-NEXT: ld s0, 48(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 56(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 48(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 64 ; RV64I-NEXT: ret %1 = alloca i8, align 64 @@ -155,18 +155,18 @@ ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -128 ; RV32I-NEXT: .cfi_def_cfa_offset 128 -; RV32I-NEXT: sw ra, 124(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s0, 120(sp) # 4-byte Folded Spill -; RV32I-NEXT: .cfi_offset ra, -4 +; RV32I-NEXT: sw ra, 124(sp) # 4-byte Folded Spill ; RV32I-NEXT: .cfi_offset s0, -8 +; RV32I-NEXT: .cfi_offset ra, -4 ; RV32I-NEXT: addi s0, sp, 128 ; RV32I-NEXT: .cfi_def_cfa s0, 0 ; RV32I-NEXT: andi sp, sp, -128 ; RV32I-NEXT: mv a0, sp ; RV32I-NEXT: call callee@plt ; RV32I-NEXT: addi sp, s0, -128 -; RV32I-NEXT: lw s0, 120(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 124(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 120(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 128 ; RV32I-NEXT: ret ; @@ -174,18 +174,18 @@ ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -128 ; RV64I-NEXT: .cfi_def_cfa_offset 128 -; RV64I-NEXT: sd ra, 120(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s0, 112(sp) # 8-byte Folded Spill -; RV64I-NEXT: .cfi_offset ra, -8 +; RV64I-NEXT: sd ra, 120(sp) # 8-byte Folded Spill ; RV64I-NEXT: .cfi_offset s0, -16 +; RV64I-NEXT: .cfi_offset ra, -8 ; RV64I-NEXT: addi s0, sp, 128 ; RV64I-NEXT: .cfi_def_cfa s0, 0 ; RV64I-NEXT: andi sp, sp, -128 ; RV64I-NEXT: mv a0, sp ; RV64I-NEXT: call callee@plt ; RV64I-NEXT: addi sp, s0, -128 -; RV64I-NEXT: ld s0, 112(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 120(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 112(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 128 ; RV64I-NEXT: ret %1 = alloca i8, align 128 @@ -227,18 +227,18 @@ ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -256 ; RV32I-NEXT: .cfi_def_cfa_offset 256 -; RV32I-NEXT: sw ra, 252(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s0, 248(sp) # 4-byte Folded Spill -; RV32I-NEXT: .cfi_offset ra, -4 +; RV32I-NEXT: sw ra, 252(sp) # 4-byte Folded Spill ; RV32I-NEXT: .cfi_offset s0, -8 +; RV32I-NEXT: .cfi_offset ra, -4 ; RV32I-NEXT: addi s0, sp, 256 ; RV32I-NEXT: .cfi_def_cfa s0, 0 ; RV32I-NEXT: andi sp, sp, -256 ; RV32I-NEXT: mv a0, sp ; RV32I-NEXT: call callee@plt ; RV32I-NEXT: addi sp, s0, -256 -; RV32I-NEXT: lw s0, 248(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 252(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 248(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 256 ; RV32I-NEXT: ret ; @@ -246,18 +246,18 @@ ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -256 ; RV64I-NEXT: .cfi_def_cfa_offset 256 -; RV64I-NEXT: sd ra, 248(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s0, 240(sp) # 8-byte Folded Spill -; RV64I-NEXT: .cfi_offset ra, -8 +; RV64I-NEXT: sd ra, 248(sp) # 8-byte Folded Spill ; RV64I-NEXT: .cfi_offset s0, -16 +; RV64I-NEXT: .cfi_offset ra, -8 ; RV64I-NEXT: addi s0, sp, 256 ; RV64I-NEXT: .cfi_def_cfa s0, 0 ; RV64I-NEXT: andi sp, sp, -256 ; RV64I-NEXT: mv a0, sp ; RV64I-NEXT: call callee@plt ; RV64I-NEXT: addi sp, s0, -256 -; RV64I-NEXT: ld s0, 240(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 248(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 240(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 256 ; RV64I-NEXT: ret %1 = alloca i8, align 256 @@ -299,18 +299,18 @@ ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -1024 ; RV32I-NEXT: .cfi_def_cfa_offset 1024 -; RV32I-NEXT: sw ra, 1020(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s0, 1016(sp) # 4-byte Folded Spill -; RV32I-NEXT: .cfi_offset ra, -4 +; RV32I-NEXT: sw ra, 1020(sp) # 4-byte Folded Spill ; RV32I-NEXT: .cfi_offset s0, -8 +; RV32I-NEXT: .cfi_offset ra, -4 ; RV32I-NEXT: addi s0, sp, 1024 ; RV32I-NEXT: .cfi_def_cfa s0, 0 ; RV32I-NEXT: andi sp, sp, -512 ; RV32I-NEXT: addi a0, sp, 512 ; RV32I-NEXT: call callee@plt ; RV32I-NEXT: addi sp, s0, -1024 -; RV32I-NEXT: lw s0, 1016(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 1020(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 1016(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 1024 ; RV32I-NEXT: ret ; @@ -318,18 +318,18 @@ ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -1024 ; RV64I-NEXT: .cfi_def_cfa_offset 1024 -; RV64I-NEXT: sd ra, 1016(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s0, 1008(sp) # 8-byte Folded Spill -; RV64I-NEXT: .cfi_offset ra, -8 +; RV64I-NEXT: sd ra, 1016(sp) # 8-byte Folded Spill ; RV64I-NEXT: .cfi_offset s0, -16 +; RV64I-NEXT: .cfi_offset ra, -8 ; RV64I-NEXT: addi s0, sp, 1024 ; RV64I-NEXT: .cfi_def_cfa s0, 0 ; RV64I-NEXT: andi sp, sp, -512 ; RV64I-NEXT: addi a0, sp, 512 ; RV64I-NEXT: call callee@plt ; RV64I-NEXT: addi sp, s0, -1024 -; RV64I-NEXT: ld s0, 1008(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 1016(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 1008(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 1024 ; RV64I-NEXT: ret %1 = alloca i8, align 512 @@ -371,10 +371,10 @@ ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -2032 ; RV32I-NEXT: .cfi_def_cfa_offset 2032 -; RV32I-NEXT: sw ra, 2028(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s0, 2024(sp) # 4-byte Folded Spill -; RV32I-NEXT: .cfi_offset ra, -4 +; RV32I-NEXT: sw ra, 2028(sp) # 4-byte Folded Spill ; RV32I-NEXT: .cfi_offset s0, -8 +; RV32I-NEXT: .cfi_offset ra, -4 ; RV32I-NEXT: addi s0, sp, 2032 ; RV32I-NEXT: .cfi_def_cfa s0, 0 ; RV32I-NEXT: addi sp, sp, -16 @@ -383,8 +383,8 @@ ; RV32I-NEXT: call callee@plt ; RV32I-NEXT: addi sp, s0, -2048 ; RV32I-NEXT: addi sp, sp, 16 -; RV32I-NEXT: lw s0, 2024(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 2028(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 2024(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 2032 ; RV32I-NEXT: ret ; @@ -392,10 +392,10 @@ ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -2032 ; RV64I-NEXT: .cfi_def_cfa_offset 2032 -; RV64I-NEXT: sd ra, 2024(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s0, 2016(sp) # 8-byte Folded Spill -; RV64I-NEXT: .cfi_offset ra, -8 +; RV64I-NEXT: sd ra, 2024(sp) # 8-byte Folded Spill ; RV64I-NEXT: .cfi_offset s0, -16 +; RV64I-NEXT: .cfi_offset ra, -8 ; RV64I-NEXT: addi s0, sp, 2032 ; RV64I-NEXT: .cfi_def_cfa s0, 0 ; RV64I-NEXT: addi sp, sp, -16 @@ -404,8 +404,8 @@ ; RV64I-NEXT: call callee@plt ; RV64I-NEXT: addi sp, s0, -2048 ; RV64I-NEXT: addi sp, sp, 16 -; RV64I-NEXT: ld s0, 2016(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 2024(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 2016(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 2032 ; RV64I-NEXT: ret %1 = alloca i8, align 1024 @@ -447,10 +447,10 @@ ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -2032 ; RV32I-NEXT: .cfi_def_cfa_offset 2032 -; RV32I-NEXT: sw ra, 2028(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s0, 2024(sp) # 4-byte Folded Spill -; RV32I-NEXT: .cfi_offset ra, -4 +; RV32I-NEXT: sw ra, 2028(sp) # 4-byte Folded Spill ; RV32I-NEXT: .cfi_offset s0, -8 +; RV32I-NEXT: .cfi_offset ra, -4 ; RV32I-NEXT: addi s0, sp, 2032 ; RV32I-NEXT: .cfi_def_cfa s0, 0 ; RV32I-NEXT: lui a0, 1 @@ -466,8 +466,8 @@ ; RV32I-NEXT: lui a0, 1 ; RV32I-NEXT: addi a0, a0, -2032 ; RV32I-NEXT: add sp, sp, a0 -; RV32I-NEXT: lw s0, 2024(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 2028(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 2024(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 2032 ; RV32I-NEXT: ret ; @@ -475,10 +475,10 @@ ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -2032 ; RV64I-NEXT: .cfi_def_cfa_offset 2032 -; RV64I-NEXT: sd ra, 2024(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s0, 2016(sp) # 8-byte Folded Spill -; RV64I-NEXT: .cfi_offset ra, -8 +; RV64I-NEXT: sd ra, 2024(sp) # 8-byte Folded Spill ; RV64I-NEXT: .cfi_offset s0, -16 +; RV64I-NEXT: .cfi_offset ra, -8 ; RV64I-NEXT: addi s0, sp, 2032 ; RV64I-NEXT: .cfi_def_cfa s0, 0 ; RV64I-NEXT: lui a0, 1 @@ -494,8 +494,8 @@ ; RV64I-NEXT: lui a0, 1 ; RV64I-NEXT: addiw a0, a0, -2032 ; RV64I-NEXT: add sp, sp, a0 -; RV64I-NEXT: ld s0, 2016(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 2024(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 2016(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 2032 ; RV64I-NEXT: ret %1 = alloca i8, align 2048 @@ -537,10 +537,10 @@ ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -2032 ; RV32I-NEXT: .cfi_def_cfa_offset 2032 -; RV32I-NEXT: sw ra, 2028(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s0, 2024(sp) # 4-byte Folded Spill -; RV32I-NEXT: .cfi_offset ra, -4 +; RV32I-NEXT: sw ra, 2028(sp) # 4-byte Folded Spill ; RV32I-NEXT: .cfi_offset s0, -8 +; RV32I-NEXT: .cfi_offset ra, -4 ; RV32I-NEXT: addi s0, sp, 2032 ; RV32I-NEXT: .cfi_def_cfa s0, 0 ; RV32I-NEXT: lui a0, 2 @@ -556,8 +556,8 @@ ; RV32I-NEXT: lui a0, 2 ; RV32I-NEXT: addi a0, a0, -2032 ; RV32I-NEXT: add sp, sp, a0 -; RV32I-NEXT: lw s0, 2024(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 2028(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 2024(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 2032 ; RV32I-NEXT: ret ; @@ -565,10 +565,10 @@ ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -2032 ; RV64I-NEXT: .cfi_def_cfa_offset 2032 -; RV64I-NEXT: sd ra, 2024(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s0, 2016(sp) # 8-byte Folded Spill -; RV64I-NEXT: .cfi_offset ra, -8 +; RV64I-NEXT: sd ra, 2024(sp) # 8-byte Folded Spill ; RV64I-NEXT: .cfi_offset s0, -16 +; RV64I-NEXT: .cfi_offset ra, -8 ; RV64I-NEXT: addi s0, sp, 2032 ; RV64I-NEXT: .cfi_def_cfa s0, 0 ; RV64I-NEXT: lui a0, 2 @@ -584,8 +584,8 @@ ; RV64I-NEXT: lui a0, 2 ; RV64I-NEXT: addiw a0, a0, -2032 ; RV64I-NEXT: add sp, sp, a0 -; RV64I-NEXT: ld s0, 2016(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 2024(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 2016(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 2032 ; RV64I-NEXT: ret %1 = alloca i8, align 4096 diff --git a/llvm/test/CodeGen/RISCV/stack-store-check.ll b/llvm/test/CodeGen/RISCV/stack-store-check.ll --- a/llvm/test/CodeGen/RISCV/stack-store-check.ll +++ b/llvm/test/CodeGen/RISCV/stack-store-check.ll @@ -15,19 +15,19 @@ ; CHECK-LABEL: main: ; CHECK: # %bb.0: ; CHECK-NEXT: addi sp, sp, -688 -; CHECK-NEXT: sw ra, 684(sp) # 4-byte Folded Spill -; CHECK-NEXT: sw s0, 680(sp) # 4-byte Folded Spill -; CHECK-NEXT: sw s1, 676(sp) # 4-byte Folded Spill -; CHECK-NEXT: sw s2, 672(sp) # 4-byte Folded Spill -; CHECK-NEXT: sw s3, 668(sp) # 4-byte Folded Spill -; CHECK-NEXT: sw s4, 664(sp) # 4-byte Folded Spill -; CHECK-NEXT: sw s5, 660(sp) # 4-byte Folded Spill -; CHECK-NEXT: sw s6, 656(sp) # 4-byte Folded Spill -; CHECK-NEXT: sw s7, 652(sp) # 4-byte Folded Spill -; CHECK-NEXT: sw s8, 648(sp) # 4-byte Folded Spill -; CHECK-NEXT: sw s9, 644(sp) # 4-byte Folded Spill -; CHECK-NEXT: sw s10, 640(sp) # 4-byte Folded Spill ; CHECK-NEXT: sw s11, 636(sp) # 4-byte Folded Spill +; CHECK-NEXT: sw s10, 640(sp) # 4-byte Folded Spill +; CHECK-NEXT: sw s9, 644(sp) # 4-byte Folded Spill +; CHECK-NEXT: sw s8, 648(sp) # 4-byte Folded Spill +; CHECK-NEXT: sw s7, 652(sp) # 4-byte Folded Spill +; CHECK-NEXT: sw s6, 656(sp) # 4-byte Folded Spill +; CHECK-NEXT: sw s5, 660(sp) # 4-byte Folded Spill +; CHECK-NEXT: sw s4, 664(sp) # 4-byte Folded Spill +; CHECK-NEXT: sw s3, 668(sp) # 4-byte Folded Spill +; CHECK-NEXT: sw s2, 672(sp) # 4-byte Folded Spill +; CHECK-NEXT: sw s1, 676(sp) # 4-byte Folded Spill +; CHECK-NEXT: sw s0, 680(sp) # 4-byte Folded Spill +; CHECK-NEXT: sw ra, 684(sp) # 4-byte Folded Spill ; CHECK-NEXT: lui a0, %hi(U) ; CHECK-NEXT: lw s6, %lo(U)(a0) ; CHECK-NEXT: lw s7, %lo(U+4)(a0) @@ -286,19 +286,19 @@ ; CHECK-NEXT: sw a1, %lo(Y1+12)(a4) ; CHECK-NEXT: sw a2, %lo(Y1)(a4) ; CHECK-NEXT: sw a3, %lo(Y1+4)(a4) -; CHECK-NEXT: lw s11, 636(sp) # 4-byte Folded Reload -; CHECK-NEXT: lw s10, 640(sp) # 4-byte Folded Reload -; CHECK-NEXT: lw s9, 644(sp) # 4-byte Folded Reload -; CHECK-NEXT: lw s8, 648(sp) # 4-byte Folded Reload -; CHECK-NEXT: lw s7, 652(sp) # 4-byte Folded Reload -; CHECK-NEXT: lw s6, 656(sp) # 4-byte Folded Reload -; CHECK-NEXT: lw s5, 660(sp) # 4-byte Folded Reload -; CHECK-NEXT: lw s4, 664(sp) # 4-byte Folded Reload -; CHECK-NEXT: lw s3, 668(sp) # 4-byte Folded Reload -; CHECK-NEXT: lw s2, 672(sp) # 4-byte Folded Reload -; CHECK-NEXT: lw s1, 676(sp) # 4-byte Folded Reload -; CHECK-NEXT: lw s0, 680(sp) # 4-byte Folded Reload ; CHECK-NEXT: lw ra, 684(sp) # 4-byte Folded Reload +; CHECK-NEXT: lw s0, 680(sp) # 4-byte Folded Reload +; CHECK-NEXT: lw s1, 676(sp) # 4-byte Folded Reload +; CHECK-NEXT: lw s2, 672(sp) # 4-byte Folded Reload +; CHECK-NEXT: lw s3, 668(sp) # 4-byte Folded Reload +; CHECK-NEXT: lw s4, 664(sp) # 4-byte Folded Reload +; CHECK-NEXT: lw s5, 660(sp) # 4-byte Folded Reload +; CHECK-NEXT: lw s6, 656(sp) # 4-byte Folded Reload +; CHECK-NEXT: lw s7, 652(sp) # 4-byte Folded Reload +; CHECK-NEXT: lw s8, 648(sp) # 4-byte Folded Reload +; CHECK-NEXT: lw s9, 644(sp) # 4-byte Folded Reload +; CHECK-NEXT: lw s10, 640(sp) # 4-byte Folded Reload +; CHECK-NEXT: lw s11, 636(sp) # 4-byte Folded Reload ; CHECK-NEXT: addi sp, sp, 688 ; CHECK-NEXT: ret %1 = load fp128, fp128* @U, align 16 diff --git a/llvm/test/CodeGen/RISCV/umulo-128-legalisation-lowering.ll b/llvm/test/CodeGen/RISCV/umulo-128-legalisation-lowering.ll --- a/llvm/test/CodeGen/RISCV/umulo-128-legalisation-lowering.ll +++ b/llvm/test/CodeGen/RISCV/umulo-128-legalisation-lowering.ll @@ -5,13 +5,13 @@ ; RISCV32-LABEL: muloti_test: ; RISCV32: # %bb.0: # %start ; RISCV32-NEXT: addi sp, sp, -32 -; RISCV32-NEXT: sw s0, 28(sp) # 4-byte Folded Spill -; RISCV32-NEXT: sw s1, 24(sp) # 4-byte Folded Spill -; RISCV32-NEXT: sw s2, 20(sp) # 4-byte Folded Spill -; RISCV32-NEXT: sw s3, 16(sp) # 4-byte Folded Spill -; RISCV32-NEXT: sw s4, 12(sp) # 4-byte Folded Spill -; RISCV32-NEXT: sw s5, 8(sp) # 4-byte Folded Spill ; RISCV32-NEXT: sw s6, 4(sp) # 4-byte Folded Spill +; RISCV32-NEXT: sw s5, 8(sp) # 4-byte Folded Spill +; RISCV32-NEXT: sw s4, 12(sp) # 4-byte Folded Spill +; RISCV32-NEXT: sw s3, 16(sp) # 4-byte Folded Spill +; RISCV32-NEXT: sw s2, 20(sp) # 4-byte Folded Spill +; RISCV32-NEXT: sw s1, 24(sp) # 4-byte Folded Spill +; RISCV32-NEXT: sw s0, 28(sp) # 4-byte Folded Spill ; RISCV32-NEXT: lw a6, 12(a1) ; RISCV32-NEXT: lw a7, 12(a2) ; RISCV32-NEXT: lw t3, 8(a1) @@ -100,13 +100,13 @@ ; RISCV32-NEXT: sw t1, 8(a0) ; RISCV32-NEXT: sw t4, 12(a0) ; RISCV32-NEXT: sb a1, 16(a0) -; RISCV32-NEXT: lw s6, 4(sp) # 4-byte Folded Reload -; RISCV32-NEXT: lw s5, 8(sp) # 4-byte Folded Reload -; RISCV32-NEXT: lw s4, 12(sp) # 4-byte Folded Reload -; RISCV32-NEXT: lw s3, 16(sp) # 4-byte Folded Reload -; RISCV32-NEXT: lw s2, 20(sp) # 4-byte Folded Reload -; RISCV32-NEXT: lw s1, 24(sp) # 4-byte Folded Reload ; RISCV32-NEXT: lw s0, 28(sp) # 4-byte Folded Reload +; RISCV32-NEXT: lw s1, 24(sp) # 4-byte Folded Reload +; RISCV32-NEXT: lw s2, 20(sp) # 4-byte Folded Reload +; RISCV32-NEXT: lw s3, 16(sp) # 4-byte Folded Reload +; RISCV32-NEXT: lw s4, 12(sp) # 4-byte Folded Reload +; RISCV32-NEXT: lw s5, 8(sp) # 4-byte Folded Reload +; RISCV32-NEXT: lw s6, 4(sp) # 4-byte Folded Reload ; RISCV32-NEXT: addi sp, sp, 32 ; RISCV32-NEXT: ret start: diff --git a/llvm/test/CodeGen/RISCV/unfold-masked-merge-scalar-variablemask.ll b/llvm/test/CodeGen/RISCV/unfold-masked-merge-scalar-variablemask.ll --- a/llvm/test/CodeGen/RISCV/unfold-masked-merge-scalar-variablemask.ll +++ b/llvm/test/CodeGen/RISCV/unfold-masked-merge-scalar-variablemask.ll @@ -1443,36 +1443,36 @@ ; RV32-LABEL: in_multiuse_A: ; RV32: # %bb.0: ; RV32-NEXT: addi sp, sp, -16 -; RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32-NEXT: mv s0, a1 ; RV32-NEXT: xor a0, a0, a1 ; RV32-NEXT: and s1, a0, a3 ; RV32-NEXT: mv a0, s1 ; RV32-NEXT: call use32@plt ; RV32-NEXT: xor a0, s1, s0 -; RV32-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32-NEXT: addi sp, sp, 16 ; RV32-NEXT: ret ; ; RV64-LABEL: in_multiuse_A: ; RV64: # %bb.0: ; RV64-NEXT: addi sp, sp, -32 -; RV64-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64-NEXT: mv s0, a1 ; RV64-NEXT: xor a0, a0, a1 ; RV64-NEXT: and s1, a0, a3 ; RV64-NEXT: mv a0, s1 ; RV64-NEXT: call use32@plt ; RV64-NEXT: xor a0, s1, s0 -; RV64-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64-NEXT: addi sp, sp, 32 ; RV64-NEXT: ret %n0 = xor i32 %x, %y @@ -1486,34 +1486,34 @@ ; RV32-LABEL: in_multiuse_B: ; RV32: # %bb.0: ; RV32-NEXT: addi sp, sp, -16 -; RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32-NEXT: mv s0, a1 ; RV32-NEXT: xor a0, a0, a1 ; RV32-NEXT: and s1, a0, a3 ; RV32-NEXT: call use32@plt ; RV32-NEXT: xor a0, s1, s0 -; RV32-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32-NEXT: addi sp, sp, 16 ; RV32-NEXT: ret ; ; RV64-LABEL: in_multiuse_B: ; RV64: # %bb.0: ; RV64-NEXT: addi sp, sp, -32 -; RV64-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64-NEXT: mv s0, a1 ; RV64-NEXT: xor a0, a0, a1 ; RV64-NEXT: and s1, a0, a3 ; RV64-NEXT: call use32@plt ; RV64-NEXT: xor a0, s1, s0 -; RV64-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64-NEXT: addi sp, sp, 32 ; RV64-NEXT: ret %n0 = xor i32 %x, %y diff --git a/llvm/test/CodeGen/RISCV/urem-lkk.ll b/llvm/test/CodeGen/RISCV/urem-lkk.ll --- a/llvm/test/CodeGen/RISCV/urem-lkk.ll +++ b/llvm/test/CodeGen/RISCV/urem-lkk.ll @@ -122,9 +122,9 @@ ; RV32I-LABEL: combine_urem_udiv: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -16 -; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32I-NEXT: mv s0, a0 ; RV32I-NEXT: addi a1, zero, 95 ; RV32I-NEXT: call __umodsi3@plt @@ -133,9 +133,9 @@ ; RV32I-NEXT: mv a0, s0 ; RV32I-NEXT: call __udivsi3@plt ; RV32I-NEXT: add a0, s1, a0 -; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: ret ; @@ -157,9 +157,9 @@ ; RV64I-LABEL: combine_urem_udiv: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -32 -; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: slli a0, a0, 32 ; RV64I-NEXT: srli s0, a0, 32 ; RV64I-NEXT: addi a1, zero, 95 @@ -170,9 +170,9 @@ ; RV64I-NEXT: mv a0, s0 ; RV64I-NEXT: call __udivdi3@plt ; RV64I-NEXT: add a0, s1, a0 -; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: ret ; diff --git a/llvm/test/CodeGen/RISCV/urem-seteq-illegal-types.ll b/llvm/test/CodeGen/RISCV/urem-seteq-illegal-types.ll --- a/llvm/test/CodeGen/RISCV/urem-seteq-illegal-types.ll +++ b/llvm/test/CodeGen/RISCV/urem-seteq-illegal-types.ll @@ -342,11 +342,11 @@ ; RV32-LABEL: test_urem_vec: ; RV32: # %bb.0: ; RV32-NEXT: addi sp, sp, -32 -; RV32-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32-NEXT: sw s2, 16(sp) # 4-byte Folded Spill ; RV32-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32-NEXT: mv s0, a0 ; RV32-NEXT: lb a0, 4(a0) ; RV32-NEXT: lw a1, 0(s0) @@ -391,22 +391,22 @@ ; RV32-NEXT: slli a1, s1, 22 ; RV32-NEXT: sub a0, a0, a1 ; RV32-NEXT: sw a0, 0(s0) -; RV32-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32-NEXT: lw s3, 12(sp) # 4-byte Folded Reload ; RV32-NEXT: addi sp, sp, 32 ; RV32-NEXT: ret ; ; RV64-LABEL: test_urem_vec: ; RV64: # %bb.0: ; RV64-NEXT: addi sp, sp, -48 -; RV64-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64-NEXT: sd s1, 24(sp) # 8-byte Folded Spill -; RV64-NEXT: sd s2, 16(sp) # 8-byte Folded Spill ; RV64-NEXT: sd s3, 8(sp) # 8-byte Folded Spill +; RV64-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64-NEXT: mv s0, a0 ; RV64-NEXT: lbu a0, 4(a0) ; RV64-NEXT: lwu a1, 0(s0) @@ -452,11 +452,11 @@ ; RV64-NEXT: and a0, a0, a1 ; RV64-NEXT: srli a0, a0, 32 ; RV64-NEXT: sb a0, 4(s0) -; RV64-NEXT: ld s3, 8(sp) # 8-byte Folded Reload -; RV64-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64-NEXT: ld s2, 16(sp) # 8-byte Folded Reload +; RV64-NEXT: ld s3, 8(sp) # 8-byte Folded Reload ; RV64-NEXT: addi sp, sp, 48 ; RV64-NEXT: ret ; diff --git a/llvm/test/CodeGen/RISCV/urem-vector-lkk.ll b/llvm/test/CodeGen/RISCV/urem-vector-lkk.ll --- a/llvm/test/CodeGen/RISCV/urem-vector-lkk.ll +++ b/llvm/test/CodeGen/RISCV/urem-vector-lkk.ll @@ -13,13 +13,13 @@ ; RV32I-LABEL: fold_urem_vec_1: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s5, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: lhu s2, 12(a1) ; RV32I-NEXT: lhu s3, 8(a1) ; RV32I-NEXT: lhu s0, 4(a1) @@ -44,13 +44,13 @@ ; RV32I-NEXT: sh s0, 4(s1) ; RV32I-NEXT: sh s5, 2(s1) ; RV32I-NEXT: sh s4, 0(s1) -; RV32I-NEXT: lw s5, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s5, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -101,13 +101,13 @@ ; RV64I-LABEL: fold_urem_vec_1: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -64 -; RV64I-NEXT: sd ra, 56(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 48(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s3, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s4, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s5, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s4, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s3, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 40(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 48(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 56(sp) # 8-byte Folded Spill ; RV64I-NEXT: lhu s2, 24(a1) ; RV64I-NEXT: lhu s3, 16(a1) ; RV64I-NEXT: lhu s0, 8(a1) @@ -132,13 +132,13 @@ ; RV64I-NEXT: sh s0, 4(s1) ; RV64I-NEXT: sh s5, 2(s1) ; RV64I-NEXT: sh s4, 0(s1) -; RV64I-NEXT: ld s5, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s4, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s3, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 32(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 40(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 48(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 56(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 48(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s4, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s5, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 64 ; RV64I-NEXT: ret ; @@ -218,13 +218,13 @@ ; RV32I-LABEL: fold_urem_vec_2: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s5, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s4, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: lhu s2, 12(a1) ; RV32I-NEXT: lhu s3, 8(a1) ; RV32I-NEXT: lhu s0, 4(a1) @@ -249,13 +249,13 @@ ; RV32I-NEXT: sh s0, 4(s1) ; RV32I-NEXT: sh s5, 2(s1) ; RV32I-NEXT: sh s4, 0(s1) -; RV32I-NEXT: lw s5, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s4, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s5, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -305,13 +305,13 @@ ; RV64I-LABEL: fold_urem_vec_2: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -64 -; RV64I-NEXT: sd ra, 56(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 48(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s3, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s4, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s5, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s4, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s3, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 40(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 48(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 56(sp) # 8-byte Folded Spill ; RV64I-NEXT: lhu s2, 24(a1) ; RV64I-NEXT: lhu s3, 16(a1) ; RV64I-NEXT: lhu s0, 8(a1) @@ -336,13 +336,13 @@ ; RV64I-NEXT: sh s0, 4(s1) ; RV64I-NEXT: sh s5, 2(s1) ; RV64I-NEXT: sh s4, 0(s1) -; RV64I-NEXT: ld s5, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s4, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s3, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 32(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 40(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 48(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 56(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 48(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s4, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s5, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 64 ; RV64I-NEXT: ret ; @@ -404,17 +404,17 @@ ; RV32I-LABEL: combine_urem_udiv: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -48 -; RV32I-NEXT: sw ra, 44(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 40(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 36(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 32(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s3, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s4, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s5, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s6, 16(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s7, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s8, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s9, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s8, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s7, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s6, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s5, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s4, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s3, 28(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 32(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 36(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 40(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 44(sp) # 4-byte Folded Spill ; RV32I-NEXT: lhu s2, 0(a1) ; RV32I-NEXT: lhu s3, 4(a1) ; RV32I-NEXT: lhu s4, 8(a1) @@ -459,17 +459,17 @@ ; RV32I-NEXT: sh a2, 4(s0) ; RV32I-NEXT: sh a1, 2(s0) ; RV32I-NEXT: sh a0, 0(s0) -; RV32I-NEXT: lw s9, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s8, 8(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s7, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s6, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s5, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s4, 24(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s3, 28(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 32(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 36(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 40(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 44(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 40(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 36(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 32(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s4, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s5, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s6, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s7, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s8, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s9, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 48 ; RV32I-NEXT: ret ; @@ -523,17 +523,17 @@ ; RV64I-LABEL: combine_urem_udiv: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -96 -; RV64I-NEXT: sd ra, 88(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 80(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 72(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 64(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s3, 56(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s4, 48(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s5, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s6, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s7, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s8, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s9, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s8, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s7, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s6, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s5, 40(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s4, 48(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s3, 56(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 64(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 72(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 80(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 88(sp) # 8-byte Folded Spill ; RV64I-NEXT: lhu s2, 0(a1) ; RV64I-NEXT: lhu s3, 8(a1) ; RV64I-NEXT: lhu s4, 16(a1) @@ -578,17 +578,17 @@ ; RV64I-NEXT: sh a2, 4(s0) ; RV64I-NEXT: sh a1, 2(s0) ; RV64I-NEXT: sh a0, 0(s0) -; RV64I-NEXT: ld s9, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s8, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s7, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s6, 32(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s5, 40(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s4, 48(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s3, 56(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 64(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 72(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 80(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 88(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 80(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 72(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 64(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 56(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s4, 48(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s5, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s6, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s7, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s8, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s9, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 96 ; RV64I-NEXT: ret ; @@ -655,11 +655,11 @@ ; RV32I-LABEL: dont_fold_urem_power_of_two: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: lhu s2, 8(a1) ; RV32I-NEXT: lhu s3, 4(a1) ; RV32I-NEXT: lhu s1, 0(a1) @@ -675,11 +675,11 @@ ; RV32I-NEXT: sh a3, 4(s0) ; RV32I-NEXT: sh a2, 2(s0) ; RV32I-NEXT: sh a1, 0(s0) -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -711,11 +711,11 @@ ; RV64I-LABEL: dont_fold_urem_power_of_two: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: lhu s2, 16(a1) ; RV64I-NEXT: lhu s3, 8(a1) ; RV64I-NEXT: lhu s1, 0(a1) @@ -731,11 +731,11 @@ ; RV64I-NEXT: sh a3, 4(s0) ; RV64I-NEXT: sh a2, 2(s0) ; RV64I-NEXT: sh a1, 0(s0) -; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -778,11 +778,11 @@ ; RV32I-LABEL: dont_fold_urem_one: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s3, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; RV32I-NEXT: lhu s2, 12(a1) ; RV32I-NEXT: lhu s1, 8(a1) ; RV32I-NEXT: lhu a2, 4(a1) @@ -803,11 +803,11 @@ ; RV32I-NEXT: sh a0, 6(s0) ; RV32I-NEXT: sh s1, 4(s0) ; RV32I-NEXT: sh s3, 2(s0) -; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 12(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 32 ; RV32I-NEXT: ret ; @@ -848,11 +848,11 @@ ; RV64I-LABEL: dont_fold_urem_one: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: lhu s2, 24(a1) ; RV64I-NEXT: lhu s1, 16(a1) ; RV64I-NEXT: lhu a2, 8(a1) @@ -873,11 +873,11 @@ ; RV64I-NEXT: sh a0, 6(s0) ; RV64I-NEXT: sh s1, 4(s0) ; RV64I-NEXT: sh s3, 2(s0) -; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; @@ -953,17 +953,17 @@ ; RV32I-LABEL: dont_fold_urem_i64: ; RV32I: # %bb.0: ; RV32I-NEXT: addi sp, sp, -48 -; RV32I-NEXT: sw ra, 44(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s0, 40(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 36(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 32(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s3, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s4, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s5, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s6, 16(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s7, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s8, 8(sp) # 4-byte Folded Spill ; RV32I-NEXT: sw s9, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s8, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s7, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s6, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s5, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s4, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s3, 28(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 32(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 36(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s0, 40(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw ra, 44(sp) # 4-byte Folded Spill ; RV32I-NEXT: lw s2, 24(a1) ; RV32I-NEXT: lw s3, 28(a1) ; RV32I-NEXT: lw s4, 16(a1) @@ -1007,34 +1007,34 @@ ; RV32I-NEXT: sw s6, 8(s0) ; RV32I-NEXT: sw s8, 4(s0) ; RV32I-NEXT: sw s7, 0(s0) -; RV32I-NEXT: lw s9, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s8, 8(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s7, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s6, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s5, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s4, 24(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s3, 28(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 32(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 36(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s0, 40(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw ra, 44(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s0, 40(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 36(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 32(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s4, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s5, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s6, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s7, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s8, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s9, 4(sp) # 4-byte Folded Reload ; RV32I-NEXT: addi sp, sp, 48 ; RV32I-NEXT: ret ; ; RV32IM-LABEL: dont_fold_urem_i64: ; RV32IM: # %bb.0: ; RV32IM-NEXT: addi sp, sp, -48 -; RV32IM-NEXT: sw ra, 44(sp) # 4-byte Folded Spill -; RV32IM-NEXT: sw s0, 40(sp) # 4-byte Folded Spill -; RV32IM-NEXT: sw s1, 36(sp) # 4-byte Folded Spill -; RV32IM-NEXT: sw s2, 32(sp) # 4-byte Folded Spill -; RV32IM-NEXT: sw s3, 28(sp) # 4-byte Folded Spill -; RV32IM-NEXT: sw s4, 24(sp) # 4-byte Folded Spill -; RV32IM-NEXT: sw s5, 20(sp) # 4-byte Folded Spill -; RV32IM-NEXT: sw s6, 16(sp) # 4-byte Folded Spill -; RV32IM-NEXT: sw s7, 12(sp) # 4-byte Folded Spill -; RV32IM-NEXT: sw s8, 8(sp) # 4-byte Folded Spill ; RV32IM-NEXT: sw s9, 4(sp) # 4-byte Folded Spill +; RV32IM-NEXT: sw s8, 8(sp) # 4-byte Folded Spill +; RV32IM-NEXT: sw s7, 12(sp) # 4-byte Folded Spill +; RV32IM-NEXT: sw s6, 16(sp) # 4-byte Folded Spill +; RV32IM-NEXT: sw s5, 20(sp) # 4-byte Folded Spill +; RV32IM-NEXT: sw s4, 24(sp) # 4-byte Folded Spill +; RV32IM-NEXT: sw s3, 28(sp) # 4-byte Folded Spill +; RV32IM-NEXT: sw s2, 32(sp) # 4-byte Folded Spill +; RV32IM-NEXT: sw s1, 36(sp) # 4-byte Folded Spill +; RV32IM-NEXT: sw s0, 40(sp) # 4-byte Folded Spill +; RV32IM-NEXT: sw ra, 44(sp) # 4-byte Folded Spill ; RV32IM-NEXT: lw s2, 24(a1) ; RV32IM-NEXT: lw s3, 28(a1) ; RV32IM-NEXT: lw s4, 16(a1) @@ -1078,28 +1078,28 @@ ; RV32IM-NEXT: sw s6, 8(s0) ; RV32IM-NEXT: sw s8, 4(s0) ; RV32IM-NEXT: sw s7, 0(s0) -; RV32IM-NEXT: lw s9, 4(sp) # 4-byte Folded Reload -; RV32IM-NEXT: lw s8, 8(sp) # 4-byte Folded Reload -; RV32IM-NEXT: lw s7, 12(sp) # 4-byte Folded Reload -; RV32IM-NEXT: lw s6, 16(sp) # 4-byte Folded Reload -; RV32IM-NEXT: lw s5, 20(sp) # 4-byte Folded Reload -; RV32IM-NEXT: lw s4, 24(sp) # 4-byte Folded Reload -; RV32IM-NEXT: lw s3, 28(sp) # 4-byte Folded Reload -; RV32IM-NEXT: lw s2, 32(sp) # 4-byte Folded Reload -; RV32IM-NEXT: lw s1, 36(sp) # 4-byte Folded Reload -; RV32IM-NEXT: lw s0, 40(sp) # 4-byte Folded Reload ; RV32IM-NEXT: lw ra, 44(sp) # 4-byte Folded Reload +; RV32IM-NEXT: lw s0, 40(sp) # 4-byte Folded Reload +; RV32IM-NEXT: lw s1, 36(sp) # 4-byte Folded Reload +; RV32IM-NEXT: lw s2, 32(sp) # 4-byte Folded Reload +; RV32IM-NEXT: lw s3, 28(sp) # 4-byte Folded Reload +; RV32IM-NEXT: lw s4, 24(sp) # 4-byte Folded Reload +; RV32IM-NEXT: lw s5, 20(sp) # 4-byte Folded Reload +; RV32IM-NEXT: lw s6, 16(sp) # 4-byte Folded Reload +; RV32IM-NEXT: lw s7, 12(sp) # 4-byte Folded Reload +; RV32IM-NEXT: lw s8, 8(sp) # 4-byte Folded Reload +; RV32IM-NEXT: lw s9, 4(sp) # 4-byte Folded Reload ; RV32IM-NEXT: addi sp, sp, 48 ; RV32IM-NEXT: ret ; ; RV64I-LABEL: dont_fold_urem_i64: ; RV64I: # %bb.0: ; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s3, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: ld s2, 24(a1) ; RV64I-NEXT: ld s1, 16(a1) ; RV64I-NEXT: ld a2, 8(a1) @@ -1120,11 +1120,11 @@ ; RV64I-NEXT: sd a0, 24(s0) ; RV64I-NEXT: sd s1, 16(s0) ; RV64I-NEXT: sd s3, 8(s0) -; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 8(sp) # 8-byte Folded Reload ; RV64I-NEXT: addi sp, sp, 48 ; RV64I-NEXT: ret ; diff --git a/llvm/test/CodeGen/RISCV/vararg.ll b/llvm/test/CodeGen/RISCV/vararg.ll --- a/llvm/test/CodeGen/RISCV/vararg.ll +++ b/llvm/test/CodeGen/RISCV/vararg.ll @@ -59,10 +59,10 @@ ; ILP32-ILP32F-WITHFP: # %bb.0: ; ILP32-ILP32F-WITHFP-NEXT: addi sp, sp, -48 ; ILP32-ILP32F-WITHFP-NEXT: .cfi_def_cfa_offset 48 -; ILP32-ILP32F-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; ILP32-ILP32F-WITHFP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill -; ILP32-ILP32F-WITHFP-NEXT: .cfi_offset ra, -36 +; ILP32-ILP32F-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; ILP32-ILP32F-WITHFP-NEXT: .cfi_offset s0, -40 +; ILP32-ILP32F-WITHFP-NEXT: .cfi_offset ra, -36 ; ILP32-ILP32F-WITHFP-NEXT: addi s0, sp, 16 ; ILP32-ILP32F-WITHFP-NEXT: .cfi_def_cfa s0, 32 ; ILP32-ILP32F-WITHFP-NEXT: mv a0, a1 @@ -75,8 +75,8 @@ ; ILP32-ILP32F-WITHFP-NEXT: sw a1, 4(s0) ; ILP32-ILP32F-WITHFP-NEXT: addi a1, s0, 8 ; ILP32-ILP32F-WITHFP-NEXT: sw a1, -12(s0) -; ILP32-ILP32F-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; ILP32-ILP32F-WITHFP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; ILP32-ILP32F-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; ILP32-ILP32F-WITHFP-NEXT: addi sp, sp, 48 ; ILP32-ILP32F-WITHFP-NEXT: ret ; @@ -118,10 +118,10 @@ ; LP64-LP64F-LP64D-WITHFP: # %bb.0: ; LP64-LP64F-LP64D-WITHFP-NEXT: addi sp, sp, -96 ; LP64-LP64F-LP64D-WITHFP-NEXT: .cfi_def_cfa_offset 96 -; LP64-LP64F-LP64D-WITHFP-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; LP64-LP64F-LP64D-WITHFP-NEXT: sd s0, 16(sp) # 8-byte Folded Spill -; LP64-LP64F-LP64D-WITHFP-NEXT: .cfi_offset ra, -72 +; LP64-LP64F-LP64D-WITHFP-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; LP64-LP64F-LP64D-WITHFP-NEXT: .cfi_offset s0, -80 +; LP64-LP64F-LP64D-WITHFP-NEXT: .cfi_offset ra, -72 ; LP64-LP64F-LP64D-WITHFP-NEXT: addi s0, sp, 32 ; LP64-LP64F-LP64D-WITHFP-NEXT: .cfi_def_cfa s0, 64 ; LP64-LP64F-LP64D-WITHFP-NEXT: sd a1, 8(s0) @@ -134,8 +134,8 @@ ; LP64-LP64F-LP64D-WITHFP-NEXT: addi a0, s0, 12 ; LP64-LP64F-LP64D-WITHFP-NEXT: sd a0, -24(s0) ; LP64-LP64F-LP64D-WITHFP-NEXT: lw a0, 8(s0) -; LP64-LP64F-LP64D-WITHFP-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; LP64-LP64F-LP64D-WITHFP-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; LP64-LP64F-LP64D-WITHFP-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; LP64-LP64F-LP64D-WITHFP-NEXT: addi sp, sp, 96 ; LP64-LP64F-LP64D-WITHFP-NEXT: ret %va = alloca i8*, align 4 @@ -170,8 +170,8 @@ ; ILP32-ILP32F-WITHFP-LABEL: va1_va_arg: ; ILP32-ILP32F-WITHFP: # %bb.0: ; ILP32-ILP32F-WITHFP-NEXT: addi sp, sp, -48 -; ILP32-ILP32F-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; ILP32-ILP32F-WITHFP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; ILP32-ILP32F-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; ILP32-ILP32F-WITHFP-NEXT: addi s0, sp, 16 ; ILP32-ILP32F-WITHFP-NEXT: mv a0, a1 ; ILP32-ILP32F-WITHFP-NEXT: sw a7, 28(s0) @@ -183,8 +183,8 @@ ; ILP32-ILP32F-WITHFP-NEXT: sw a1, 4(s0) ; ILP32-ILP32F-WITHFP-NEXT: addi a1, s0, 8 ; ILP32-ILP32F-WITHFP-NEXT: sw a1, -12(s0) -; ILP32-ILP32F-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; ILP32-ILP32F-WITHFP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; ILP32-ILP32F-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; ILP32-ILP32F-WITHFP-NEXT: addi sp, sp, 48 ; ILP32-ILP32F-WITHFP-NEXT: ret ; @@ -223,8 +223,8 @@ ; LP64-LP64F-LP64D-WITHFP-LABEL: va1_va_arg: ; LP64-LP64F-LP64D-WITHFP: # %bb.0: ; LP64-LP64F-LP64D-WITHFP-NEXT: addi sp, sp, -96 -; LP64-LP64F-LP64D-WITHFP-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; LP64-LP64F-LP64D-WITHFP-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; LP64-LP64F-LP64D-WITHFP-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; LP64-LP64F-LP64D-WITHFP-NEXT: addi s0, sp, 32 ; LP64-LP64F-LP64D-WITHFP-NEXT: mv a0, a1 ; LP64-LP64F-LP64D-WITHFP-NEXT: sd a7, 56(s0) @@ -236,8 +236,8 @@ ; LP64-LP64F-LP64D-WITHFP-NEXT: sd a1, 8(s0) ; LP64-LP64F-LP64D-WITHFP-NEXT: addi a1, s0, 16 ; LP64-LP64F-LP64D-WITHFP-NEXT: sd a1, -24(s0) -; LP64-LP64F-LP64D-WITHFP-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; LP64-LP64F-LP64D-WITHFP-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; LP64-LP64F-LP64D-WITHFP-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; LP64-LP64F-LP64D-WITHFP-NEXT: addi sp, sp, 96 ; LP64-LP64F-LP64D-WITHFP-NEXT: ret %va = alloca i8*, align 4 @@ -254,9 +254,9 @@ ; ILP32-ILP32F-FPELIM-LABEL: va1_va_arg_alloca: ; ILP32-ILP32F-FPELIM: # %bb.0: ; ILP32-ILP32F-FPELIM-NEXT: addi sp, sp, -48 -; ILP32-ILP32F-FPELIM-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; ILP32-ILP32F-FPELIM-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; ILP32-ILP32F-FPELIM-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; ILP32-ILP32F-FPELIM-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; ILP32-ILP32F-FPELIM-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; ILP32-ILP32F-FPELIM-NEXT: addi s0, sp, 16 ; ILP32-ILP32F-FPELIM-NEXT: mv s1, a1 ; ILP32-ILP32F-FPELIM-NEXT: sw a7, 28(s0) @@ -275,18 +275,18 @@ ; ILP32-ILP32F-FPELIM-NEXT: call notdead@plt ; ILP32-ILP32F-FPELIM-NEXT: mv a0, s1 ; ILP32-ILP32F-FPELIM-NEXT: addi sp, s0, -16 -; ILP32-ILP32F-FPELIM-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; ILP32-ILP32F-FPELIM-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; ILP32-ILP32F-FPELIM-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; ILP32-ILP32F-FPELIM-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; ILP32-ILP32F-FPELIM-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; ILP32-ILP32F-FPELIM-NEXT: addi sp, sp, 48 ; ILP32-ILP32F-FPELIM-NEXT: ret ; ; ILP32-ILP32F-WITHFP-LABEL: va1_va_arg_alloca: ; ILP32-ILP32F-WITHFP: # %bb.0: ; ILP32-ILP32F-WITHFP-NEXT: addi sp, sp, -48 -; ILP32-ILP32F-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; ILP32-ILP32F-WITHFP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; ILP32-ILP32F-WITHFP-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; ILP32-ILP32F-WITHFP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; ILP32-ILP32F-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; ILP32-ILP32F-WITHFP-NEXT: addi s0, sp, 16 ; ILP32-ILP32F-WITHFP-NEXT: mv s1, a1 ; ILP32-ILP32F-WITHFP-NEXT: sw a7, 28(s0) @@ -305,18 +305,18 @@ ; ILP32-ILP32F-WITHFP-NEXT: call notdead@plt ; ILP32-ILP32F-WITHFP-NEXT: mv a0, s1 ; ILP32-ILP32F-WITHFP-NEXT: addi sp, s0, -16 -; ILP32-ILP32F-WITHFP-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; ILP32-ILP32F-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; ILP32-ILP32F-WITHFP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; ILP32-ILP32F-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; ILP32-ILP32F-WITHFP-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; ILP32-ILP32F-WITHFP-NEXT: addi sp, sp, 48 ; ILP32-ILP32F-WITHFP-NEXT: ret ; ; RV32D-ILP32-ILP32F-ILP32D-FPELIM-LABEL: va1_va_arg_alloca: ; RV32D-ILP32-ILP32F-ILP32D-FPELIM: # %bb.0: ; RV32D-ILP32-ILP32F-ILP32D-FPELIM-NEXT: addi sp, sp, -48 -; RV32D-ILP32-ILP32F-ILP32D-FPELIM-NEXT: sw ra, 12(sp) # 4-byte Folded Spill -; RV32D-ILP32-ILP32F-ILP32D-FPELIM-NEXT: sw s0, 8(sp) # 4-byte Folded Spill ; RV32D-ILP32-ILP32F-ILP32D-FPELIM-NEXT: sw s1, 4(sp) # 4-byte Folded Spill +; RV32D-ILP32-ILP32F-ILP32D-FPELIM-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32D-ILP32-ILP32F-ILP32D-FPELIM-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32D-ILP32-ILP32F-ILP32D-FPELIM-NEXT: addi s0, sp, 16 ; RV32D-ILP32-ILP32F-ILP32D-FPELIM-NEXT: mv s1, a1 ; RV32D-ILP32-ILP32F-ILP32D-FPELIM-NEXT: sw a7, 28(s0) @@ -335,18 +335,18 @@ ; RV32D-ILP32-ILP32F-ILP32D-FPELIM-NEXT: call notdead@plt ; RV32D-ILP32-ILP32F-ILP32D-FPELIM-NEXT: mv a0, s1 ; RV32D-ILP32-ILP32F-ILP32D-FPELIM-NEXT: addi sp, s0, -16 -; RV32D-ILP32-ILP32F-ILP32D-FPELIM-NEXT: lw s1, 4(sp) # 4-byte Folded Reload -; RV32D-ILP32-ILP32F-ILP32D-FPELIM-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32D-ILP32-ILP32F-ILP32D-FPELIM-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32D-ILP32-ILP32F-ILP32D-FPELIM-NEXT: lw s0, 8(sp) # 4-byte Folded Reload +; RV32D-ILP32-ILP32F-ILP32D-FPELIM-NEXT: lw s1, 4(sp) # 4-byte Folded Reload ; RV32D-ILP32-ILP32F-ILP32D-FPELIM-NEXT: addi sp, sp, 48 ; RV32D-ILP32-ILP32F-ILP32D-FPELIM-NEXT: ret ; ; LP64-LP64F-LP64D-FPELIM-LABEL: va1_va_arg_alloca: ; LP64-LP64F-LP64D-FPELIM: # %bb.0: ; LP64-LP64F-LP64D-FPELIM-NEXT: addi sp, sp, -96 -; LP64-LP64F-LP64D-FPELIM-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; LP64-LP64F-LP64D-FPELIM-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; LP64-LP64F-LP64D-FPELIM-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; LP64-LP64F-LP64D-FPELIM-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; LP64-LP64F-LP64D-FPELIM-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; LP64-LP64F-LP64D-FPELIM-NEXT: addi s0, sp, 32 ; LP64-LP64F-LP64D-FPELIM-NEXT: mv s1, a1 ; LP64-LP64F-LP64D-FPELIM-NEXT: sd a7, 56(s0) @@ -367,18 +367,18 @@ ; LP64-LP64F-LP64D-FPELIM-NEXT: call notdead@plt ; LP64-LP64F-LP64D-FPELIM-NEXT: mv a0, s1 ; LP64-LP64F-LP64D-FPELIM-NEXT: addi sp, s0, -32 -; LP64-LP64F-LP64D-FPELIM-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; LP64-LP64F-LP64D-FPELIM-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; LP64-LP64F-LP64D-FPELIM-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; LP64-LP64F-LP64D-FPELIM-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; LP64-LP64F-LP64D-FPELIM-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; LP64-LP64F-LP64D-FPELIM-NEXT: addi sp, sp, 96 ; LP64-LP64F-LP64D-FPELIM-NEXT: ret ; ; LP64-LP64F-LP64D-WITHFP-LABEL: va1_va_arg_alloca: ; LP64-LP64F-LP64D-WITHFP: # %bb.0: ; LP64-LP64F-LP64D-WITHFP-NEXT: addi sp, sp, -96 -; LP64-LP64F-LP64D-WITHFP-NEXT: sd ra, 24(sp) # 8-byte Folded Spill -; LP64-LP64F-LP64D-WITHFP-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; LP64-LP64F-LP64D-WITHFP-NEXT: sd s1, 8(sp) # 8-byte Folded Spill +; LP64-LP64F-LP64D-WITHFP-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; LP64-LP64F-LP64D-WITHFP-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; LP64-LP64F-LP64D-WITHFP-NEXT: addi s0, sp, 32 ; LP64-LP64F-LP64D-WITHFP-NEXT: mv s1, a1 ; LP64-LP64F-LP64D-WITHFP-NEXT: sd a7, 56(s0) @@ -399,9 +399,9 @@ ; LP64-LP64F-LP64D-WITHFP-NEXT: call notdead@plt ; LP64-LP64F-LP64D-WITHFP-NEXT: mv a0, s1 ; LP64-LP64F-LP64D-WITHFP-NEXT: addi sp, s0, -32 -; LP64-LP64F-LP64D-WITHFP-NEXT: ld s1, 8(sp) # 8-byte Folded Reload -; LP64-LP64F-LP64D-WITHFP-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; LP64-LP64F-LP64D-WITHFP-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; LP64-LP64F-LP64D-WITHFP-NEXT: ld s0, 16(sp) # 8-byte Folded Reload +; LP64-LP64F-LP64D-WITHFP-NEXT: ld s1, 8(sp) # 8-byte Folded Reload ; LP64-LP64F-LP64D-WITHFP-NEXT: addi sp, sp, 96 ; LP64-LP64F-LP64D-WITHFP-NEXT: ret %va = alloca i8*, align 4 @@ -431,15 +431,15 @@ ; ILP32-ILP32F-WITHFP-LABEL: va1_caller: ; ILP32-ILP32F-WITHFP: # %bb.0: ; ILP32-ILP32F-WITHFP-NEXT: addi sp, sp, -16 -; ILP32-ILP32F-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; ILP32-ILP32F-WITHFP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; ILP32-ILP32F-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; ILP32-ILP32F-WITHFP-NEXT: addi s0, sp, 16 ; ILP32-ILP32F-WITHFP-NEXT: lui a3, 261888 ; ILP32-ILP32F-WITHFP-NEXT: addi a4, zero, 2 ; ILP32-ILP32F-WITHFP-NEXT: mv a2, zero ; ILP32-ILP32F-WITHFP-NEXT: call va1@plt -; ILP32-ILP32F-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; ILP32-ILP32F-WITHFP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; ILP32-ILP32F-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; ILP32-ILP32F-WITHFP-NEXT: addi sp, sp, 16 ; ILP32-ILP32F-WITHFP-NEXT: ret ; @@ -470,15 +470,15 @@ ; LP64-LP64F-LP64D-WITHFP-LABEL: va1_caller: ; LP64-LP64F-LP64D-WITHFP: # %bb.0: ; LP64-LP64F-LP64D-WITHFP-NEXT: addi sp, sp, -16 -; LP64-LP64F-LP64D-WITHFP-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; LP64-LP64F-LP64D-WITHFP-NEXT: sd s0, 0(sp) # 8-byte Folded Spill +; LP64-LP64F-LP64D-WITHFP-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; LP64-LP64F-LP64D-WITHFP-NEXT: addi s0, sp, 16 ; LP64-LP64F-LP64D-WITHFP-NEXT: addi a0, zero, 1023 ; LP64-LP64F-LP64D-WITHFP-NEXT: slli a1, a0, 52 ; LP64-LP64F-LP64D-WITHFP-NEXT: addi a2, zero, 2 ; LP64-LP64F-LP64D-WITHFP-NEXT: call va1@plt -; LP64-LP64F-LP64D-WITHFP-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; LP64-LP64F-LP64D-WITHFP-NEXT: ld ra, 8(sp) # 8-byte Folded Reload +; LP64-LP64F-LP64D-WITHFP-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; LP64-LP64F-LP64D-WITHFP-NEXT: addi sp, sp, 16 ; LP64-LP64F-LP64D-WITHFP-NEXT: ret %1 = call i32 (i8*, ...) @va1(i8* undef, double 1.0, i32 2) @@ -512,8 +512,8 @@ ; ILP32-ILP32F-WITHFP-LABEL: va2: ; ILP32-ILP32F-WITHFP: # %bb.0: ; ILP32-ILP32F-WITHFP-NEXT: addi sp, sp, -48 -; ILP32-ILP32F-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; ILP32-ILP32F-WITHFP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; ILP32-ILP32F-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; ILP32-ILP32F-WITHFP-NEXT: addi s0, sp, 16 ; ILP32-ILP32F-WITHFP-NEXT: sw a7, 28(s0) ; ILP32-ILP32F-WITHFP-NEXT: sw a6, 24(s0) @@ -529,8 +529,8 @@ ; ILP32-ILP32F-WITHFP-NEXT: lw a0, 0(a1) ; ILP32-ILP32F-WITHFP-NEXT: ori a1, a1, 4 ; ILP32-ILP32F-WITHFP-NEXT: lw a1, 0(a1) -; ILP32-ILP32F-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; ILP32-ILP32F-WITHFP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; ILP32-ILP32F-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; ILP32-ILP32F-WITHFP-NEXT: addi sp, sp, 48 ; ILP32-ILP32F-WITHFP-NEXT: ret ; @@ -583,8 +583,8 @@ ; LP64-LP64F-LP64D-WITHFP-LABEL: va2: ; LP64-LP64F-LP64D-WITHFP: # %bb.0: ; LP64-LP64F-LP64D-WITHFP-NEXT: addi sp, sp, -96 -; LP64-LP64F-LP64D-WITHFP-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; LP64-LP64F-LP64D-WITHFP-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; LP64-LP64F-LP64D-WITHFP-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; LP64-LP64F-LP64D-WITHFP-NEXT: addi s0, sp, 32 ; LP64-LP64F-LP64D-WITHFP-NEXT: sd a7, 56(s0) ; LP64-LP64F-LP64D-WITHFP-NEXT: sd a6, 48(s0) @@ -606,8 +606,8 @@ ; LP64-LP64F-LP64D-WITHFP-NEXT: addi a1, a1, -8 ; LP64-LP64F-LP64D-WITHFP-NEXT: and a0, a0, a1 ; LP64-LP64F-LP64D-WITHFP-NEXT: ld a0, 0(a0) -; LP64-LP64F-LP64D-WITHFP-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; LP64-LP64F-LP64D-WITHFP-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; LP64-LP64F-LP64D-WITHFP-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; LP64-LP64F-LP64D-WITHFP-NEXT: addi sp, sp, 96 ; LP64-LP64F-LP64D-WITHFP-NEXT: ret %va = alloca i8*, align 4 @@ -652,8 +652,8 @@ ; ILP32-ILP32F-WITHFP-LABEL: va2_va_arg: ; ILP32-ILP32F-WITHFP: # %bb.0: ; ILP32-ILP32F-WITHFP-NEXT: addi sp, sp, -48 -; ILP32-ILP32F-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; ILP32-ILP32F-WITHFP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; ILP32-ILP32F-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; ILP32-ILP32F-WITHFP-NEXT: addi s0, sp, 16 ; ILP32-ILP32F-WITHFP-NEXT: sw a7, 28(s0) ; ILP32-ILP32F-WITHFP-NEXT: sw a6, 24(s0) @@ -670,8 +670,8 @@ ; ILP32-ILP32F-WITHFP-NEXT: addi a1, a1, 8 ; ILP32-ILP32F-WITHFP-NEXT: sw a1, -12(s0) ; ILP32-ILP32F-WITHFP-NEXT: lw a1, 0(a2) -; ILP32-ILP32F-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; ILP32-ILP32F-WITHFP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; ILP32-ILP32F-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; ILP32-ILP32F-WITHFP-NEXT: addi sp, sp, 48 ; ILP32-ILP32F-WITHFP-NEXT: ret ; @@ -715,8 +715,8 @@ ; LP64-LP64F-LP64D-WITHFP-LABEL: va2_va_arg: ; LP64-LP64F-LP64D-WITHFP: # %bb.0: ; LP64-LP64F-LP64D-WITHFP-NEXT: addi sp, sp, -96 -; LP64-LP64F-LP64D-WITHFP-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; LP64-LP64F-LP64D-WITHFP-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; LP64-LP64F-LP64D-WITHFP-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; LP64-LP64F-LP64D-WITHFP-NEXT: addi s0, sp, 32 ; LP64-LP64F-LP64D-WITHFP-NEXT: mv a0, a1 ; LP64-LP64F-LP64D-WITHFP-NEXT: sd a7, 56(s0) @@ -728,8 +728,8 @@ ; LP64-LP64F-LP64D-WITHFP-NEXT: sd a1, 8(s0) ; LP64-LP64F-LP64D-WITHFP-NEXT: addi a1, s0, 16 ; LP64-LP64F-LP64D-WITHFP-NEXT: sd a1, -24(s0) -; LP64-LP64F-LP64D-WITHFP-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; LP64-LP64F-LP64D-WITHFP-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; LP64-LP64F-LP64D-WITHFP-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; LP64-LP64F-LP64D-WITHFP-NEXT: addi sp, sp, 96 ; LP64-LP64F-LP64D-WITHFP-NEXT: ret %va = alloca i8*, align 4 @@ -756,14 +756,14 @@ ; ILP32-ILP32F-WITHFP-LABEL: va2_caller: ; ILP32-ILP32F-WITHFP: # %bb.0: ; ILP32-ILP32F-WITHFP-NEXT: addi sp, sp, -16 -; ILP32-ILP32F-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; ILP32-ILP32F-WITHFP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; ILP32-ILP32F-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; ILP32-ILP32F-WITHFP-NEXT: addi s0, sp, 16 ; ILP32-ILP32F-WITHFP-NEXT: lui a3, 261888 ; ILP32-ILP32F-WITHFP-NEXT: mv a2, zero ; ILP32-ILP32F-WITHFP-NEXT: call va2@plt -; ILP32-ILP32F-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; ILP32-ILP32F-WITHFP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; ILP32-ILP32F-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; ILP32-ILP32F-WITHFP-NEXT: addi sp, sp, 16 ; ILP32-ILP32F-WITHFP-NEXT: ret ; @@ -792,14 +792,14 @@ ; LP64-LP64F-LP64D-WITHFP-LABEL: va2_caller: ; LP64-LP64F-LP64D-WITHFP: # %bb.0: ; LP64-LP64F-LP64D-WITHFP-NEXT: addi sp, sp, -16 -; LP64-LP64F-LP64D-WITHFP-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; LP64-LP64F-LP64D-WITHFP-NEXT: sd s0, 0(sp) # 8-byte Folded Spill +; LP64-LP64F-LP64D-WITHFP-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; LP64-LP64F-LP64D-WITHFP-NEXT: addi s0, sp, 16 ; LP64-LP64F-LP64D-WITHFP-NEXT: addi a0, zero, 1023 ; LP64-LP64F-LP64D-WITHFP-NEXT: slli a1, a0, 52 ; LP64-LP64F-LP64D-WITHFP-NEXT: call va2@plt -; LP64-LP64F-LP64D-WITHFP-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; LP64-LP64F-LP64D-WITHFP-NEXT: ld ra, 8(sp) # 8-byte Folded Reload +; LP64-LP64F-LP64D-WITHFP-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; LP64-LP64F-LP64D-WITHFP-NEXT: addi sp, sp, 16 ; LP64-LP64F-LP64D-WITHFP-NEXT: ret %1 = call i64 (i8*, ...) @va2(i8* undef, double 1.000000e+00) @@ -835,8 +835,8 @@ ; ILP32-ILP32F-WITHFP-LABEL: va3: ; ILP32-ILP32F-WITHFP: # %bb.0: ; ILP32-ILP32F-WITHFP-NEXT: addi sp, sp, -48 -; ILP32-ILP32F-WITHFP-NEXT: sw ra, 20(sp) # 4-byte Folded Spill ; ILP32-ILP32F-WITHFP-NEXT: sw s0, 16(sp) # 4-byte Folded Spill +; ILP32-ILP32F-WITHFP-NEXT: sw ra, 20(sp) # 4-byte Folded Spill ; ILP32-ILP32F-WITHFP-NEXT: addi s0, sp, 24 ; ILP32-ILP32F-WITHFP-NEXT: sw a7, 20(s0) ; ILP32-ILP32F-WITHFP-NEXT: sw a5, 12(s0) @@ -854,8 +854,8 @@ ; ILP32-ILP32F-WITHFP-NEXT: sltu a1, a0, a1 ; ILP32-ILP32F-WITHFP-NEXT: add a2, a2, a4 ; ILP32-ILP32F-WITHFP-NEXT: add a1, a2, a1 -; ILP32-ILP32F-WITHFP-NEXT: lw s0, 16(sp) # 4-byte Folded Reload ; ILP32-ILP32F-WITHFP-NEXT: lw ra, 20(sp) # 4-byte Folded Reload +; ILP32-ILP32F-WITHFP-NEXT: lw s0, 16(sp) # 4-byte Folded Reload ; ILP32-ILP32F-WITHFP-NEXT: addi sp, sp, 48 ; ILP32-ILP32F-WITHFP-NEXT: ret ; @@ -910,8 +910,8 @@ ; LP64-LP64F-LP64D-WITHFP-LABEL: va3: ; LP64-LP64F-LP64D-WITHFP: # %bb.0: ; LP64-LP64F-LP64D-WITHFP-NEXT: addi sp, sp, -80 -; LP64-LP64F-LP64D-WITHFP-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; LP64-LP64F-LP64D-WITHFP-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; LP64-LP64F-LP64D-WITHFP-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; LP64-LP64F-LP64D-WITHFP-NEXT: addi s0, sp, 32 ; LP64-LP64F-LP64D-WITHFP-NEXT: sd a7, 40(s0) ; LP64-LP64F-LP64D-WITHFP-NEXT: sd a6, 32(s0) @@ -933,8 +933,8 @@ ; LP64-LP64F-LP64D-WITHFP-NEXT: and a0, a0, a2 ; LP64-LP64F-LP64D-WITHFP-NEXT: ld a0, 0(a0) ; LP64-LP64F-LP64D-WITHFP-NEXT: add a0, a1, a0 -; LP64-LP64F-LP64D-WITHFP-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; LP64-LP64F-LP64D-WITHFP-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; LP64-LP64F-LP64D-WITHFP-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; LP64-LP64F-LP64D-WITHFP-NEXT: addi sp, sp, 80 ; LP64-LP64F-LP64D-WITHFP-NEXT: ret %va = alloca i8*, align 4 @@ -982,8 +982,8 @@ ; ILP32-ILP32F-WITHFP-LABEL: va3_va_arg: ; ILP32-ILP32F-WITHFP: # %bb.0: ; ILP32-ILP32F-WITHFP-NEXT: addi sp, sp, -48 -; ILP32-ILP32F-WITHFP-NEXT: sw ra, 20(sp) # 4-byte Folded Spill ; ILP32-ILP32F-WITHFP-NEXT: sw s0, 16(sp) # 4-byte Folded Spill +; ILP32-ILP32F-WITHFP-NEXT: sw ra, 20(sp) # 4-byte Folded Spill ; ILP32-ILP32F-WITHFP-NEXT: addi s0, sp, 24 ; ILP32-ILP32F-WITHFP-NEXT: sw a7, 20(s0) ; ILP32-ILP32F-WITHFP-NEXT: sw a6, 16(s0) @@ -1002,8 +1002,8 @@ ; ILP32-ILP32F-WITHFP-NEXT: sltu a1, a0, a1 ; ILP32-ILP32F-WITHFP-NEXT: add a2, a2, a3 ; ILP32-ILP32F-WITHFP-NEXT: add a1, a2, a1 -; ILP32-ILP32F-WITHFP-NEXT: lw s0, 16(sp) # 4-byte Folded Reload ; ILP32-ILP32F-WITHFP-NEXT: lw ra, 20(sp) # 4-byte Folded Reload +; ILP32-ILP32F-WITHFP-NEXT: lw s0, 16(sp) # 4-byte Folded Reload ; ILP32-ILP32F-WITHFP-NEXT: addi sp, sp, 48 ; ILP32-ILP32F-WITHFP-NEXT: ret ; @@ -1048,8 +1048,8 @@ ; LP64-LP64F-LP64D-WITHFP-LABEL: va3_va_arg: ; LP64-LP64F-LP64D-WITHFP: # %bb.0: ; LP64-LP64F-LP64D-WITHFP-NEXT: addi sp, sp, -80 -; LP64-LP64F-LP64D-WITHFP-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; LP64-LP64F-LP64D-WITHFP-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; LP64-LP64F-LP64D-WITHFP-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; LP64-LP64F-LP64D-WITHFP-NEXT: addi s0, sp, 32 ; LP64-LP64F-LP64D-WITHFP-NEXT: sd a7, 40(s0) ; LP64-LP64F-LP64D-WITHFP-NEXT: sd a6, 32(s0) @@ -1060,8 +1060,8 @@ ; LP64-LP64F-LP64D-WITHFP-NEXT: addi a3, s0, 8 ; LP64-LP64F-LP64D-WITHFP-NEXT: add a0, a1, a2 ; LP64-LP64F-LP64D-WITHFP-NEXT: sd a3, -24(s0) -; LP64-LP64F-LP64D-WITHFP-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; LP64-LP64F-LP64D-WITHFP-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; LP64-LP64F-LP64D-WITHFP-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; LP64-LP64F-LP64D-WITHFP-NEXT: addi sp, sp, 80 ; LP64-LP64F-LP64D-WITHFP-NEXT: ret %va = alloca i8*, align 4 @@ -1092,8 +1092,8 @@ ; ILP32-ILP32F-WITHFP-LABEL: va3_caller: ; ILP32-ILP32F-WITHFP: # %bb.0: ; ILP32-ILP32F-WITHFP-NEXT: addi sp, sp, -16 -; ILP32-ILP32F-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; ILP32-ILP32F-WITHFP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; ILP32-ILP32F-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; ILP32-ILP32F-WITHFP-NEXT: addi s0, sp, 16 ; ILP32-ILP32F-WITHFP-NEXT: addi a0, zero, 2 ; ILP32-ILP32F-WITHFP-NEXT: addi a1, zero, 1111 @@ -1101,8 +1101,8 @@ ; ILP32-ILP32F-WITHFP-NEXT: mv a2, zero ; ILP32-ILP32F-WITHFP-NEXT: mv a4, zero ; ILP32-ILP32F-WITHFP-NEXT: call va3@plt -; ILP32-ILP32F-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; ILP32-ILP32F-WITHFP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; ILP32-ILP32F-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; ILP32-ILP32F-WITHFP-NEXT: addi sp, sp, 16 ; ILP32-ILP32F-WITHFP-NEXT: ret ; @@ -1136,16 +1136,16 @@ ; LP64-LP64F-LP64D-WITHFP-LABEL: va3_caller: ; LP64-LP64F-LP64D-WITHFP: # %bb.0: ; LP64-LP64F-LP64D-WITHFP-NEXT: addi sp, sp, -16 -; LP64-LP64F-LP64D-WITHFP-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; LP64-LP64F-LP64D-WITHFP-NEXT: sd s0, 0(sp) # 8-byte Folded Spill +; LP64-LP64F-LP64D-WITHFP-NEXT: sd ra, 8(sp) # 8-byte Folded Spill ; LP64-LP64F-LP64D-WITHFP-NEXT: addi s0, sp, 16 ; LP64-LP64F-LP64D-WITHFP-NEXT: addi a0, zero, 1 ; LP64-LP64F-LP64D-WITHFP-NEXT: slli a2, a0, 62 ; LP64-LP64F-LP64D-WITHFP-NEXT: addi a0, zero, 2 ; LP64-LP64F-LP64D-WITHFP-NEXT: addi a1, zero, 1111 ; LP64-LP64F-LP64D-WITHFP-NEXT: call va3@plt -; LP64-LP64F-LP64D-WITHFP-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; LP64-LP64F-LP64D-WITHFP-NEXT: ld ra, 8(sp) # 8-byte Folded Reload +; LP64-LP64F-LP64D-WITHFP-NEXT: ld s0, 0(sp) # 8-byte Folded Reload ; LP64-LP64F-LP64D-WITHFP-NEXT: addi sp, sp, 16 ; LP64-LP64F-LP64D-WITHFP-NEXT: ret %1 = call i64 (i32, i64, ...) @va3(i32 2, i64 1111, double 2.000000e+00) @@ -1158,8 +1158,8 @@ ; ILP32-ILP32F-FPELIM-LABEL: va4_va_copy: ; ILP32-ILP32F-FPELIM: # %bb.0: ; ILP32-ILP32F-FPELIM-NEXT: addi sp, sp, -48 -; ILP32-ILP32F-FPELIM-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; ILP32-ILP32F-FPELIM-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; ILP32-ILP32F-FPELIM-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; ILP32-ILP32F-FPELIM-NEXT: mv s0, a1 ; ILP32-ILP32F-FPELIM-NEXT: sw a7, 44(sp) ; ILP32-ILP32F-FPELIM-NEXT: sw a6, 40(sp) @@ -1191,17 +1191,17 @@ ; ILP32-ILP32F-FPELIM-NEXT: add a1, a1, s0 ; ILP32-ILP32F-FPELIM-NEXT: add a1, a1, a2 ; ILP32-ILP32F-FPELIM-NEXT: add a0, a1, a0 -; ILP32-ILP32F-FPELIM-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; ILP32-ILP32F-FPELIM-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; ILP32-ILP32F-FPELIM-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; ILP32-ILP32F-FPELIM-NEXT: addi sp, sp, 48 ; ILP32-ILP32F-FPELIM-NEXT: ret ; ; ILP32-ILP32F-WITHFP-LABEL: va4_va_copy: ; ILP32-ILP32F-WITHFP: # %bb.0: ; ILP32-ILP32F-WITHFP-NEXT: addi sp, sp, -64 -; ILP32-ILP32F-WITHFP-NEXT: sw ra, 28(sp) # 4-byte Folded Spill -; ILP32-ILP32F-WITHFP-NEXT: sw s0, 24(sp) # 4-byte Folded Spill ; ILP32-ILP32F-WITHFP-NEXT: sw s1, 20(sp) # 4-byte Folded Spill +; ILP32-ILP32F-WITHFP-NEXT: sw s0, 24(sp) # 4-byte Folded Spill +; ILP32-ILP32F-WITHFP-NEXT: sw ra, 28(sp) # 4-byte Folded Spill ; ILP32-ILP32F-WITHFP-NEXT: addi s0, sp, 32 ; ILP32-ILP32F-WITHFP-NEXT: mv s1, a1 ; ILP32-ILP32F-WITHFP-NEXT: sw a7, 28(s0) @@ -1234,17 +1234,17 @@ ; ILP32-ILP32F-WITHFP-NEXT: add a1, a1, s1 ; ILP32-ILP32F-WITHFP-NEXT: add a1, a1, a2 ; ILP32-ILP32F-WITHFP-NEXT: add a0, a1, a0 -; ILP32-ILP32F-WITHFP-NEXT: lw s1, 20(sp) # 4-byte Folded Reload -; ILP32-ILP32F-WITHFP-NEXT: lw s0, 24(sp) # 4-byte Folded Reload ; ILP32-ILP32F-WITHFP-NEXT: lw ra, 28(sp) # 4-byte Folded Reload +; ILP32-ILP32F-WITHFP-NEXT: lw s0, 24(sp) # 4-byte Folded Reload +; ILP32-ILP32F-WITHFP-NEXT: lw s1, 20(sp) # 4-byte Folded Reload ; ILP32-ILP32F-WITHFP-NEXT: addi sp, sp, 64 ; ILP32-ILP32F-WITHFP-NEXT: ret ; ; RV32D-ILP32-ILP32F-ILP32D-FPELIM-LABEL: va4_va_copy: ; RV32D-ILP32-ILP32F-ILP32D-FPELIM: # %bb.0: ; RV32D-ILP32-ILP32F-ILP32D-FPELIM-NEXT: addi sp, sp, -48 -; RV32D-ILP32-ILP32F-ILP32D-FPELIM-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32D-ILP32-ILP32F-ILP32D-FPELIM-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; RV32D-ILP32-ILP32F-ILP32D-FPELIM-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; RV32D-ILP32-ILP32F-ILP32D-FPELIM-NEXT: mv s0, a1 ; RV32D-ILP32-ILP32F-ILP32D-FPELIM-NEXT: sw a7, 44(sp) ; RV32D-ILP32-ILP32F-ILP32D-FPELIM-NEXT: sw a6, 40(sp) @@ -1276,16 +1276,16 @@ ; RV32D-ILP32-ILP32F-ILP32D-FPELIM-NEXT: add a1, a1, s0 ; RV32D-ILP32-ILP32F-ILP32D-FPELIM-NEXT: add a1, a1, a2 ; RV32D-ILP32-ILP32F-ILP32D-FPELIM-NEXT: add a0, a1, a0 -; RV32D-ILP32-ILP32F-ILP32D-FPELIM-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32D-ILP32-ILP32F-ILP32D-FPELIM-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; RV32D-ILP32-ILP32F-ILP32D-FPELIM-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; RV32D-ILP32-ILP32F-ILP32D-FPELIM-NEXT: addi sp, sp, 48 ; RV32D-ILP32-ILP32F-ILP32D-FPELIM-NEXT: ret ; ; LP64-LP64F-LP64D-FPELIM-LABEL: va4_va_copy: ; LP64-LP64F-LP64D-FPELIM: # %bb.0: ; LP64-LP64F-LP64D-FPELIM-NEXT: addi sp, sp, -96 -; LP64-LP64F-LP64D-FPELIM-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; LP64-LP64F-LP64D-FPELIM-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; LP64-LP64F-LP64D-FPELIM-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; LP64-LP64F-LP64D-FPELIM-NEXT: mv s0, a1 ; LP64-LP64F-LP64D-FPELIM-NEXT: sd a7, 88(sp) ; LP64-LP64F-LP64D-FPELIM-NEXT: sd a6, 80(sp) @@ -1317,17 +1317,17 @@ ; LP64-LP64F-LP64D-FPELIM-NEXT: addw a1, a1, s0 ; LP64-LP64F-LP64D-FPELIM-NEXT: addw a1, a1, a2 ; LP64-LP64F-LP64D-FPELIM-NEXT: addw a0, a1, a0 -; LP64-LP64F-LP64D-FPELIM-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; LP64-LP64F-LP64D-FPELIM-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; LP64-LP64F-LP64D-FPELIM-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; LP64-LP64F-LP64D-FPELIM-NEXT: addi sp, sp, 96 ; LP64-LP64F-LP64D-FPELIM-NEXT: ret ; ; LP64-LP64F-LP64D-WITHFP-LABEL: va4_va_copy: ; LP64-LP64F-LP64D-WITHFP: # %bb.0: ; LP64-LP64F-LP64D-WITHFP-NEXT: addi sp, sp, -112 -; LP64-LP64F-LP64D-WITHFP-NEXT: sd ra, 40(sp) # 8-byte Folded Spill -; LP64-LP64F-LP64D-WITHFP-NEXT: sd s0, 32(sp) # 8-byte Folded Spill ; LP64-LP64F-LP64D-WITHFP-NEXT: sd s1, 24(sp) # 8-byte Folded Spill +; LP64-LP64F-LP64D-WITHFP-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; LP64-LP64F-LP64D-WITHFP-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; LP64-LP64F-LP64D-WITHFP-NEXT: addi s0, sp, 48 ; LP64-LP64F-LP64D-WITHFP-NEXT: mv s1, a1 ; LP64-LP64F-LP64D-WITHFP-NEXT: sd a7, 56(s0) @@ -1360,9 +1360,9 @@ ; LP64-LP64F-LP64D-WITHFP-NEXT: addw a1, a1, s1 ; LP64-LP64F-LP64D-WITHFP-NEXT: addw a1, a1, a2 ; LP64-LP64F-LP64D-WITHFP-NEXT: addw a0, a1, a0 -; LP64-LP64F-LP64D-WITHFP-NEXT: ld s1, 24(sp) # 8-byte Folded Reload -; LP64-LP64F-LP64D-WITHFP-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; LP64-LP64F-LP64D-WITHFP-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; LP64-LP64F-LP64D-WITHFP-NEXT: ld s0, 32(sp) # 8-byte Folded Reload +; LP64-LP64F-LP64D-WITHFP-NEXT: ld s1, 24(sp) # 8-byte Folded Reload ; LP64-LP64F-LP64D-WITHFP-NEXT: addi sp, sp, 112 ; LP64-LP64F-LP64D-WITHFP-NEXT: ret %vargs = alloca i8*, align 4 @@ -1438,8 +1438,8 @@ ; ILP32-ILP32F-WITHFP-LABEL: va5_aligned_stack_caller: ; ILP32-ILP32F-WITHFP: # %bb.0: ; ILP32-ILP32F-WITHFP-NEXT: addi sp, sp, -64 -; ILP32-ILP32F-WITHFP-NEXT: sw ra, 60(sp) # 4-byte Folded Spill ; ILP32-ILP32F-WITHFP-NEXT: sw s0, 56(sp) # 4-byte Folded Spill +; ILP32-ILP32F-WITHFP-NEXT: sw ra, 60(sp) # 4-byte Folded Spill ; ILP32-ILP32F-WITHFP-NEXT: addi s0, sp, 64 ; ILP32-ILP32F-WITHFP-NEXT: addi a0, zero, 17 ; ILP32-ILP32F-WITHFP-NEXT: sw a0, 24(sp) @@ -1476,8 +1476,8 @@ ; ILP32-ILP32F-WITHFP-NEXT: addi a7, zero, 4 ; ILP32-ILP32F-WITHFP-NEXT: sw a5, -32(s0) ; ILP32-ILP32F-WITHFP-NEXT: call va5_aligned_stack_callee@plt -; ILP32-ILP32F-WITHFP-NEXT: lw s0, 56(sp) # 4-byte Folded Reload ; ILP32-ILP32F-WITHFP-NEXT: lw ra, 60(sp) # 4-byte Folded Reload +; ILP32-ILP32F-WITHFP-NEXT: lw s0, 56(sp) # 4-byte Folded Reload ; ILP32-ILP32F-WITHFP-NEXT: addi sp, sp, 64 ; ILP32-ILP32F-WITHFP-NEXT: ret ; @@ -1576,8 +1576,8 @@ ; LP64-LP64F-LP64D-WITHFP-LABEL: va5_aligned_stack_caller: ; LP64-LP64F-LP64D-WITHFP: # %bb.0: ; LP64-LP64F-LP64D-WITHFP-NEXT: addi sp, sp, -48 -; LP64-LP64F-LP64D-WITHFP-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; LP64-LP64F-LP64D-WITHFP-NEXT: sd s0, 32(sp) # 8-byte Folded Spill +; LP64-LP64F-LP64D-WITHFP-NEXT: sd ra, 40(sp) # 8-byte Folded Spill ; LP64-LP64F-LP64D-WITHFP-NEXT: addi s0, sp, 48 ; LP64-LP64F-LP64D-WITHFP-NEXT: addi a0, zero, 17 ; LP64-LP64F-LP64D-WITHFP-NEXT: sd a0, 24(sp) @@ -1620,8 +1620,8 @@ ; LP64-LP64F-LP64D-WITHFP-NEXT: addi a7, zero, 14 ; LP64-LP64F-LP64D-WITHFP-NEXT: sd t0, 0(sp) ; LP64-LP64F-LP64D-WITHFP-NEXT: call va5_aligned_stack_callee@plt -; LP64-LP64F-LP64D-WITHFP-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; LP64-LP64F-LP64D-WITHFP-NEXT: ld ra, 40(sp) # 8-byte Folded Reload +; LP64-LP64F-LP64D-WITHFP-NEXT: ld s0, 32(sp) # 8-byte Folded Reload ; LP64-LP64F-LP64D-WITHFP-NEXT: addi sp, sp, 48 ; LP64-LP64F-LP64D-WITHFP-NEXT: ret %1 = call i32 (i32, ...) @va5_aligned_stack_callee(i32 1, i32 11, @@ -1654,8 +1654,8 @@ ; ILP32-ILP32F-WITHFP-LABEL: va6_no_fixed_args: ; ILP32-ILP32F-WITHFP: # %bb.0: ; ILP32-ILP32F-WITHFP-NEXT: addi sp, sp, -48 -; ILP32-ILP32F-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; ILP32-ILP32F-WITHFP-NEXT: sw s0, 8(sp) # 4-byte Folded Spill +; ILP32-ILP32F-WITHFP-NEXT: sw ra, 12(sp) # 4-byte Folded Spill ; ILP32-ILP32F-WITHFP-NEXT: addi s0, sp, 16 ; ILP32-ILP32F-WITHFP-NEXT: sw a7, 28(s0) ; ILP32-ILP32F-WITHFP-NEXT: sw a6, 24(s0) @@ -1667,8 +1667,8 @@ ; ILP32-ILP32F-WITHFP-NEXT: sw a0, 0(s0) ; ILP32-ILP32F-WITHFP-NEXT: addi a1, s0, 4 ; ILP32-ILP32F-WITHFP-NEXT: sw a1, -12(s0) -; ILP32-ILP32F-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; ILP32-ILP32F-WITHFP-NEXT: lw ra, 12(sp) # 4-byte Folded Reload +; ILP32-ILP32F-WITHFP-NEXT: lw s0, 8(sp) # 4-byte Folded Reload ; ILP32-ILP32F-WITHFP-NEXT: addi sp, sp, 48 ; ILP32-ILP32F-WITHFP-NEXT: ret ; @@ -1707,8 +1707,8 @@ ; LP64-LP64F-LP64D-WITHFP-LABEL: va6_no_fixed_args: ; LP64-LP64F-LP64D-WITHFP: # %bb.0: ; LP64-LP64F-LP64D-WITHFP-NEXT: addi sp, sp, -96 -; LP64-LP64F-LP64D-WITHFP-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; LP64-LP64F-LP64D-WITHFP-NEXT: sd s0, 16(sp) # 8-byte Folded Spill +; LP64-LP64F-LP64D-WITHFP-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; LP64-LP64F-LP64D-WITHFP-NEXT: addi s0, sp, 32 ; LP64-LP64F-LP64D-WITHFP-NEXT: sd a7, 56(s0) ; LP64-LP64F-LP64D-WITHFP-NEXT: sd a6, 48(s0) @@ -1720,8 +1720,8 @@ ; LP64-LP64F-LP64D-WITHFP-NEXT: sd a0, 0(s0) ; LP64-LP64F-LP64D-WITHFP-NEXT: addi a1, s0, 8 ; LP64-LP64F-LP64D-WITHFP-NEXT: sd a1, -24(s0) -; LP64-LP64F-LP64D-WITHFP-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; LP64-LP64F-LP64D-WITHFP-NEXT: ld ra, 24(sp) # 8-byte Folded Reload +; LP64-LP64F-LP64D-WITHFP-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; LP64-LP64F-LP64D-WITHFP-NEXT: addi sp, sp, 96 ; LP64-LP64F-LP64D-WITHFP-NEXT: ret %va = alloca i8*, align 4 @@ -1783,10 +1783,10 @@ ; ILP32-ILP32F-WITHFP: # %bb.0: ; ILP32-ILP32F-WITHFP-NEXT: addi sp, sp, -2032 ; ILP32-ILP32F-WITHFP-NEXT: .cfi_def_cfa_offset 2032 -; ILP32-ILP32F-WITHFP-NEXT: sw ra, 1996(sp) # 4-byte Folded Spill ; ILP32-ILP32F-WITHFP-NEXT: sw s0, 1992(sp) # 4-byte Folded Spill -; ILP32-ILP32F-WITHFP-NEXT: .cfi_offset ra, -36 +; ILP32-ILP32F-WITHFP-NEXT: sw ra, 1996(sp) # 4-byte Folded Spill ; ILP32-ILP32F-WITHFP-NEXT: .cfi_offset s0, -40 +; ILP32-ILP32F-WITHFP-NEXT: .cfi_offset ra, -36 ; ILP32-ILP32F-WITHFP-NEXT: addi s0, sp, 2000 ; ILP32-ILP32F-WITHFP-NEXT: .cfi_def_cfa s0, 32 ; ILP32-ILP32F-WITHFP-NEXT: lui a0, 24414 @@ -1808,8 +1808,8 @@ ; ILP32-ILP32F-WITHFP-NEXT: lui a1, 24414 ; ILP32-ILP32F-WITHFP-NEXT: addi a1, a1, -1728 ; ILP32-ILP32F-WITHFP-NEXT: add sp, sp, a1 -; ILP32-ILP32F-WITHFP-NEXT: lw s0, 1992(sp) # 4-byte Folded Reload ; ILP32-ILP32F-WITHFP-NEXT: lw ra, 1996(sp) # 4-byte Folded Reload +; ILP32-ILP32F-WITHFP-NEXT: lw s0, 1992(sp) # 4-byte Folded Reload ; ILP32-ILP32F-WITHFP-NEXT: addi sp, sp, 2032 ; ILP32-ILP32F-WITHFP-NEXT: ret ; @@ -1908,10 +1908,10 @@ ; LP64-LP64F-LP64D-WITHFP: # %bb.0: ; LP64-LP64F-LP64D-WITHFP-NEXT: addi sp, sp, -2032 ; LP64-LP64F-LP64D-WITHFP-NEXT: .cfi_def_cfa_offset 2032 -; LP64-LP64F-LP64D-WITHFP-NEXT: sd ra, 1960(sp) # 8-byte Folded Spill ; LP64-LP64F-LP64D-WITHFP-NEXT: sd s0, 1952(sp) # 8-byte Folded Spill -; LP64-LP64F-LP64D-WITHFP-NEXT: .cfi_offset ra, -72 +; LP64-LP64F-LP64D-WITHFP-NEXT: sd ra, 1960(sp) # 8-byte Folded Spill ; LP64-LP64F-LP64D-WITHFP-NEXT: .cfi_offset s0, -80 +; LP64-LP64F-LP64D-WITHFP-NEXT: .cfi_offset ra, -72 ; LP64-LP64F-LP64D-WITHFP-NEXT: addi s0, sp, 1968 ; LP64-LP64F-LP64D-WITHFP-NEXT: .cfi_def_cfa s0, 64 ; LP64-LP64F-LP64D-WITHFP-NEXT: lui a0, 24414 @@ -1933,8 +1933,8 @@ ; LP64-LP64F-LP64D-WITHFP-NEXT: lui a1, 24414 ; LP64-LP64F-LP64D-WITHFP-NEXT: addiw a1, a1, -1680 ; LP64-LP64F-LP64D-WITHFP-NEXT: add sp, sp, a1 -; LP64-LP64F-LP64D-WITHFP-NEXT: ld s0, 1952(sp) # 8-byte Folded Reload ; LP64-LP64F-LP64D-WITHFP-NEXT: ld ra, 1960(sp) # 8-byte Folded Reload +; LP64-LP64F-LP64D-WITHFP-NEXT: ld s0, 1952(sp) # 8-byte Folded Reload ; LP64-LP64F-LP64D-WITHFP-NEXT: addi sp, sp, 2032 ; LP64-LP64F-LP64D-WITHFP-NEXT: ret %large = alloca [ 100000000 x i8 ] diff --git a/llvm/test/CodeGen/RISCV/xaluo.ll b/llvm/test/CodeGen/RISCV/xaluo.ll --- a/llvm/test/CodeGen/RISCV/xaluo.ll +++ b/llvm/test/CodeGen/RISCV/xaluo.ll @@ -903,14 +903,14 @@ ; RV32: # %bb.0: # %entry ; RV32-NEXT: addi sp, sp, -16 ; RV32-NEXT: .cfi_def_cfa_offset 16 -; RV32-NEXT: sw s0, 12(sp) # 4-byte Folded Spill -; RV32-NEXT: sw s1, 8(sp) # 4-byte Folded Spill -; RV32-NEXT: sw s2, 4(sp) # 4-byte Folded Spill ; RV32-NEXT: sw s3, 0(sp) # 4-byte Folded Spill -; RV32-NEXT: .cfi_offset s0, -4 -; RV32-NEXT: .cfi_offset s1, -8 -; RV32-NEXT: .cfi_offset s2, -12 +; RV32-NEXT: sw s2, 4(sp) # 4-byte Folded Spill +; RV32-NEXT: sw s1, 8(sp) # 4-byte Folded Spill +; RV32-NEXT: sw s0, 12(sp) # 4-byte Folded Spill ; RV32-NEXT: .cfi_offset s3, -16 +; RV32-NEXT: .cfi_offset s2, -12 +; RV32-NEXT: .cfi_offset s1, -8 +; RV32-NEXT: .cfi_offset s0, -4 ; RV32-NEXT: mulhu a6, a0, a2 ; RV32-NEXT: mul a5, a1, a2 ; RV32-NEXT: add a6, a5, a6 @@ -959,10 +959,10 @@ ; RV32-NEXT: sw a0, 0(a4) ; RV32-NEXT: sw a6, 4(a4) ; RV32-NEXT: mv a0, a1 -; RV32-NEXT: lw s3, 0(sp) # 4-byte Folded Reload -; RV32-NEXT: lw s2, 4(sp) # 4-byte Folded Reload -; RV32-NEXT: lw s1, 8(sp) # 4-byte Folded Reload ; RV32-NEXT: lw s0, 12(sp) # 4-byte Folded Reload +; RV32-NEXT: lw s1, 8(sp) # 4-byte Folded Reload +; RV32-NEXT: lw s2, 4(sp) # 4-byte Folded Reload +; RV32-NEXT: lw s3, 0(sp) # 4-byte Folded Reload ; RV32-NEXT: addi sp, sp, 16 ; RV32-NEXT: ret ; @@ -980,14 +980,14 @@ ; RV32ZBA: # %bb.0: # %entry ; RV32ZBA-NEXT: addi sp, sp, -16 ; RV32ZBA-NEXT: .cfi_def_cfa_offset 16 -; RV32ZBA-NEXT: sw s0, 12(sp) # 4-byte Folded Spill -; RV32ZBA-NEXT: sw s1, 8(sp) # 4-byte Folded Spill -; RV32ZBA-NEXT: sw s2, 4(sp) # 4-byte Folded Spill ; RV32ZBA-NEXT: sw s3, 0(sp) # 4-byte Folded Spill -; RV32ZBA-NEXT: .cfi_offset s0, -4 -; RV32ZBA-NEXT: .cfi_offset s1, -8 -; RV32ZBA-NEXT: .cfi_offset s2, -12 +; RV32ZBA-NEXT: sw s2, 4(sp) # 4-byte Folded Spill +; RV32ZBA-NEXT: sw s1, 8(sp) # 4-byte Folded Spill +; RV32ZBA-NEXT: sw s0, 12(sp) # 4-byte Folded Spill ; RV32ZBA-NEXT: .cfi_offset s3, -16 +; RV32ZBA-NEXT: .cfi_offset s2, -12 +; RV32ZBA-NEXT: .cfi_offset s1, -8 +; RV32ZBA-NEXT: .cfi_offset s0, -4 ; RV32ZBA-NEXT: mulhu a6, a0, a2 ; RV32ZBA-NEXT: mul a5, a1, a2 ; RV32ZBA-NEXT: add a6, a5, a6 @@ -1036,10 +1036,10 @@ ; RV32ZBA-NEXT: sw a0, 0(a4) ; RV32ZBA-NEXT: sw a6, 4(a4) ; RV32ZBA-NEXT: mv a0, a1 -; RV32ZBA-NEXT: lw s3, 0(sp) # 4-byte Folded Reload -; RV32ZBA-NEXT: lw s2, 4(sp) # 4-byte Folded Reload -; RV32ZBA-NEXT: lw s1, 8(sp) # 4-byte Folded Reload ; RV32ZBA-NEXT: lw s0, 12(sp) # 4-byte Folded Reload +; RV32ZBA-NEXT: lw s1, 8(sp) # 4-byte Folded Reload +; RV32ZBA-NEXT: lw s2, 4(sp) # 4-byte Folded Reload +; RV32ZBA-NEXT: lw s3, 0(sp) # 4-byte Folded Reload ; RV32ZBA-NEXT: addi sp, sp, 16 ; RV32ZBA-NEXT: ret ; @@ -2339,12 +2339,12 @@ ; RV32: # %bb.0: # %entry ; RV32-NEXT: addi sp, sp, -16 ; RV32-NEXT: .cfi_def_cfa_offset 16 -; RV32-NEXT: sw s0, 12(sp) # 4-byte Folded Spill -; RV32-NEXT: sw s1, 8(sp) # 4-byte Folded Spill ; RV32-NEXT: sw s2, 4(sp) # 4-byte Folded Spill -; RV32-NEXT: .cfi_offset s0, -4 -; RV32-NEXT: .cfi_offset s1, -8 +; RV32-NEXT: sw s1, 8(sp) # 4-byte Folded Spill +; RV32-NEXT: sw s0, 12(sp) # 4-byte Folded Spill ; RV32-NEXT: .cfi_offset s2, -12 +; RV32-NEXT: .cfi_offset s1, -8 +; RV32-NEXT: .cfi_offset s0, -4 ; RV32-NEXT: mulhu a4, a0, a2 ; RV32-NEXT: mul a5, a1, a2 ; RV32-NEXT: add a4, a5, a4 @@ -2393,9 +2393,9 @@ ; RV32-NEXT: mv a0, a2 ; RV32-NEXT: mv a1, a3 ; RV32-NEXT: .LBB44_2: # %entry -; RV32-NEXT: lw s2, 4(sp) # 4-byte Folded Reload -; RV32-NEXT: lw s1, 8(sp) # 4-byte Folded Reload ; RV32-NEXT: lw s0, 12(sp) # 4-byte Folded Reload +; RV32-NEXT: lw s1, 8(sp) # 4-byte Folded Reload +; RV32-NEXT: lw s2, 4(sp) # 4-byte Folded Reload ; RV32-NEXT: addi sp, sp, 16 ; RV32-NEXT: ret ; @@ -2414,12 +2414,12 @@ ; RV32ZBA: # %bb.0: # %entry ; RV32ZBA-NEXT: addi sp, sp, -16 ; RV32ZBA-NEXT: .cfi_def_cfa_offset 16 -; RV32ZBA-NEXT: sw s0, 12(sp) # 4-byte Folded Spill -; RV32ZBA-NEXT: sw s1, 8(sp) # 4-byte Folded Spill ; RV32ZBA-NEXT: sw s2, 4(sp) # 4-byte Folded Spill -; RV32ZBA-NEXT: .cfi_offset s0, -4 -; RV32ZBA-NEXT: .cfi_offset s1, -8 +; RV32ZBA-NEXT: sw s1, 8(sp) # 4-byte Folded Spill +; RV32ZBA-NEXT: sw s0, 12(sp) # 4-byte Folded Spill ; RV32ZBA-NEXT: .cfi_offset s2, -12 +; RV32ZBA-NEXT: .cfi_offset s1, -8 +; RV32ZBA-NEXT: .cfi_offset s0, -4 ; RV32ZBA-NEXT: mulhu a4, a0, a2 ; RV32ZBA-NEXT: mul a5, a1, a2 ; RV32ZBA-NEXT: add a4, a5, a4 @@ -2468,9 +2468,9 @@ ; RV32ZBA-NEXT: mv a0, a2 ; RV32ZBA-NEXT: mv a1, a3 ; RV32ZBA-NEXT: .LBB44_2: # %entry -; RV32ZBA-NEXT: lw s2, 4(sp) # 4-byte Folded Reload -; RV32ZBA-NEXT: lw s1, 8(sp) # 4-byte Folded Reload ; RV32ZBA-NEXT: lw s0, 12(sp) # 4-byte Folded Reload +; RV32ZBA-NEXT: lw s1, 8(sp) # 4-byte Folded Reload +; RV32ZBA-NEXT: lw s2, 4(sp) # 4-byte Folded Reload ; RV32ZBA-NEXT: addi sp, sp, 16 ; RV32ZBA-NEXT: ret ; @@ -2496,12 +2496,12 @@ ; RV32: # %bb.0: # %entry ; RV32-NEXT: addi sp, sp, -16 ; RV32-NEXT: .cfi_def_cfa_offset 16 -; RV32-NEXT: sw s0, 12(sp) # 4-byte Folded Spill -; RV32-NEXT: sw s1, 8(sp) # 4-byte Folded Spill ; RV32-NEXT: sw s2, 4(sp) # 4-byte Folded Spill -; RV32-NEXT: .cfi_offset s0, -4 -; RV32-NEXT: .cfi_offset s1, -8 +; RV32-NEXT: sw s1, 8(sp) # 4-byte Folded Spill +; RV32-NEXT: sw s0, 12(sp) # 4-byte Folded Spill ; RV32-NEXT: .cfi_offset s2, -12 +; RV32-NEXT: .cfi_offset s1, -8 +; RV32-NEXT: .cfi_offset s0, -4 ; RV32-NEXT: mulhu a4, a0, a2 ; RV32-NEXT: mul a5, a1, a2 ; RV32-NEXT: add a4, a5, a4 @@ -2546,9 +2546,9 @@ ; RV32-NEXT: xor a1, t6, a1 ; RV32-NEXT: or a0, a1, a0 ; RV32-NEXT: seqz a0, a0 -; RV32-NEXT: lw s2, 4(sp) # 4-byte Folded Reload -; RV32-NEXT: lw s1, 8(sp) # 4-byte Folded Reload ; RV32-NEXT: lw s0, 12(sp) # 4-byte Folded Reload +; RV32-NEXT: lw s1, 8(sp) # 4-byte Folded Reload +; RV32-NEXT: lw s2, 4(sp) # 4-byte Folded Reload ; RV32-NEXT: addi sp, sp, 16 ; RV32-NEXT: ret ; @@ -2565,12 +2565,12 @@ ; RV32ZBA: # %bb.0: # %entry ; RV32ZBA-NEXT: addi sp, sp, -16 ; RV32ZBA-NEXT: .cfi_def_cfa_offset 16 -; RV32ZBA-NEXT: sw s0, 12(sp) # 4-byte Folded Spill -; RV32ZBA-NEXT: sw s1, 8(sp) # 4-byte Folded Spill ; RV32ZBA-NEXT: sw s2, 4(sp) # 4-byte Folded Spill -; RV32ZBA-NEXT: .cfi_offset s0, -4 -; RV32ZBA-NEXT: .cfi_offset s1, -8 +; RV32ZBA-NEXT: sw s1, 8(sp) # 4-byte Folded Spill +; RV32ZBA-NEXT: sw s0, 12(sp) # 4-byte Folded Spill ; RV32ZBA-NEXT: .cfi_offset s2, -12 +; RV32ZBA-NEXT: .cfi_offset s1, -8 +; RV32ZBA-NEXT: .cfi_offset s0, -4 ; RV32ZBA-NEXT: mulhu a4, a0, a2 ; RV32ZBA-NEXT: mul a5, a1, a2 ; RV32ZBA-NEXT: add a4, a5, a4 @@ -2615,9 +2615,9 @@ ; RV32ZBA-NEXT: xor a1, t6, a1 ; RV32ZBA-NEXT: or a0, a1, a0 ; RV32ZBA-NEXT: seqz a0, a0 -; RV32ZBA-NEXT: lw s2, 4(sp) # 4-byte Folded Reload -; RV32ZBA-NEXT: lw s1, 8(sp) # 4-byte Folded Reload ; RV32ZBA-NEXT: lw s0, 12(sp) # 4-byte Folded Reload +; RV32ZBA-NEXT: lw s1, 8(sp) # 4-byte Folded Reload +; RV32ZBA-NEXT: lw s2, 4(sp) # 4-byte Folded Reload ; RV32ZBA-NEXT: addi sp, sp, 16 ; RV32ZBA-NEXT: ret ; @@ -3478,12 +3478,12 @@ ; RV32: # %bb.0: # %entry ; RV32-NEXT: addi sp, sp, -16 ; RV32-NEXT: .cfi_def_cfa_offset 16 -; RV32-NEXT: sw s0, 12(sp) # 4-byte Folded Spill -; RV32-NEXT: sw s1, 8(sp) # 4-byte Folded Spill ; RV32-NEXT: sw s2, 4(sp) # 4-byte Folded Spill -; RV32-NEXT: .cfi_offset s0, -4 -; RV32-NEXT: .cfi_offset s1, -8 +; RV32-NEXT: sw s1, 8(sp) # 4-byte Folded Spill +; RV32-NEXT: sw s0, 12(sp) # 4-byte Folded Spill ; RV32-NEXT: .cfi_offset s2, -12 +; RV32-NEXT: .cfi_offset s1, -8 +; RV32-NEXT: .cfi_offset s0, -4 ; RV32-NEXT: mulhu a4, a0, a2 ; RV32-NEXT: mul a5, a1, a2 ; RV32-NEXT: add a4, a5, a4 @@ -3534,9 +3534,9 @@ ; RV32-NEXT: .LBB59_2: # %continue ; RV32-NEXT: addi a0, zero, 1 ; RV32-NEXT: .LBB59_3: # %overflow -; RV32-NEXT: lw s2, 4(sp) # 4-byte Folded Reload -; RV32-NEXT: lw s1, 8(sp) # 4-byte Folded Reload ; RV32-NEXT: lw s0, 12(sp) # 4-byte Folded Reload +; RV32-NEXT: lw s1, 8(sp) # 4-byte Folded Reload +; RV32-NEXT: lw s2, 4(sp) # 4-byte Folded Reload ; RV32-NEXT: addi sp, sp, 16 ; RV32-NEXT: ret ; @@ -3557,12 +3557,12 @@ ; RV32ZBA: # %bb.0: # %entry ; RV32ZBA-NEXT: addi sp, sp, -16 ; RV32ZBA-NEXT: .cfi_def_cfa_offset 16 -; RV32ZBA-NEXT: sw s0, 12(sp) # 4-byte Folded Spill -; RV32ZBA-NEXT: sw s1, 8(sp) # 4-byte Folded Spill ; RV32ZBA-NEXT: sw s2, 4(sp) # 4-byte Folded Spill -; RV32ZBA-NEXT: .cfi_offset s0, -4 -; RV32ZBA-NEXT: .cfi_offset s1, -8 +; RV32ZBA-NEXT: sw s1, 8(sp) # 4-byte Folded Spill +; RV32ZBA-NEXT: sw s0, 12(sp) # 4-byte Folded Spill ; RV32ZBA-NEXT: .cfi_offset s2, -12 +; RV32ZBA-NEXT: .cfi_offset s1, -8 +; RV32ZBA-NEXT: .cfi_offset s0, -4 ; RV32ZBA-NEXT: mulhu a4, a0, a2 ; RV32ZBA-NEXT: mul a5, a1, a2 ; RV32ZBA-NEXT: add a4, a5, a4 @@ -3613,9 +3613,9 @@ ; RV32ZBA-NEXT: .LBB59_2: # %continue ; RV32ZBA-NEXT: addi a0, zero, 1 ; RV32ZBA-NEXT: .LBB59_3: # %overflow -; RV32ZBA-NEXT: lw s2, 4(sp) # 4-byte Folded Reload -; RV32ZBA-NEXT: lw s1, 8(sp) # 4-byte Folded Reload ; RV32ZBA-NEXT: lw s0, 12(sp) # 4-byte Folded Reload +; RV32ZBA-NEXT: lw s1, 8(sp) # 4-byte Folded Reload +; RV32ZBA-NEXT: lw s2, 4(sp) # 4-byte Folded Reload ; RV32ZBA-NEXT: addi sp, sp, 16 ; RV32ZBA-NEXT: ret ;