diff options
Diffstat (limited to 'llvm/test/CodeGen/RISCV/push-pop-popret.ll')
| -rw-r--r-- | llvm/test/CodeGen/RISCV/push-pop-popret.ll | 2954 |
1 files changed, 1451 insertions, 1503 deletions
diff --git a/llvm/test/CodeGen/RISCV/push-pop-popret.ll b/llvm/test/CodeGen/RISCV/push-pop-popret.ll index 8f9c97de7b91..5e949f8969e3 100644 --- a/llvm/test/CodeGen/RISCV/push-pop-popret.ll +++ b/llvm/test/CodeGen/RISCV/push-pop-popret.ll @@ -788,18 +788,17 @@ entry: define i32 @nocompress(i32 signext %size) { ; RV32IZCMP-LABEL: nocompress: ; RV32IZCMP: # %bb.0: # %entry -; RV32IZCMP-NEXT: cm.push {ra, s0-s8}, -48 +; RV32IZCMP-NEXT: cm.push {ra, s0-s7}, -48 ; RV32IZCMP-NEXT: .cfi_def_cfa_offset 48 -; RV32IZCMP-NEXT: .cfi_offset ra, -40 -; RV32IZCMP-NEXT: .cfi_offset s0, -36 -; RV32IZCMP-NEXT: .cfi_offset s1, -32 -; RV32IZCMP-NEXT: .cfi_offset s2, -28 -; RV32IZCMP-NEXT: .cfi_offset s3, -24 -; RV32IZCMP-NEXT: .cfi_offset s4, -20 -; RV32IZCMP-NEXT: .cfi_offset s5, -16 -; RV32IZCMP-NEXT: .cfi_offset s6, -12 -; RV32IZCMP-NEXT: .cfi_offset s7, -8 -; RV32IZCMP-NEXT: .cfi_offset s8, -4 +; RV32IZCMP-NEXT: .cfi_offset ra, -36 +; RV32IZCMP-NEXT: .cfi_offset s0, -32 +; RV32IZCMP-NEXT: .cfi_offset s1, -28 +; RV32IZCMP-NEXT: .cfi_offset s2, -24 +; RV32IZCMP-NEXT: .cfi_offset s3, -20 +; RV32IZCMP-NEXT: .cfi_offset s4, -16 +; RV32IZCMP-NEXT: .cfi_offset s5, -12 +; RV32IZCMP-NEXT: .cfi_offset s6, -8 +; RV32IZCMP-NEXT: .cfi_offset s7, -4 ; RV32IZCMP-NEXT: addi s0, sp, 48 ; RV32IZCMP-NEXT: .cfi_def_cfa s0, 0 ; RV32IZCMP-NEXT: addi a0, a0, 15 @@ -807,23 +806,23 @@ define i32 @nocompress(i32 signext %size) { ; RV32IZCMP-NEXT: sub s2, sp, a0 ; RV32IZCMP-NEXT: mv sp, s2 ; RV32IZCMP-NEXT: lui s1, %hi(var) -; RV32IZCMP-NEXT: lw s3, %lo(var)(s1) -; RV32IZCMP-NEXT: lw s4, %lo(var+4)(s1) -; RV32IZCMP-NEXT: lw s5, %lo(var+8)(s1) -; RV32IZCMP-NEXT: lw s6, %lo(var+12)(s1) -; RV32IZCMP-NEXT: addi s7, s1, %lo(var) -; RV32IZCMP-NEXT: lw s8, 16(s7) +; RV32IZCMP-NEXT: addi s1, s1, %lo(var) +; RV32IZCMP-NEXT: lw s3, 0(s1) +; RV32IZCMP-NEXT: lw s4, 4(s1) +; RV32IZCMP-NEXT: lw s5, 8(s1) +; RV32IZCMP-NEXT: lw s6, 12(s1) +; RV32IZCMP-NEXT: lw s7, 16(s1) ; RV32IZCMP-NEXT: mv a0, s2 ; RV32IZCMP-NEXT: call callee_void -; RV32IZCMP-NEXT: sw s8, 16(s7) -; RV32IZCMP-NEXT: sw s6, %lo(var+12)(s1) -; RV32IZCMP-NEXT: sw s5, %lo(var+8)(s1) -; RV32IZCMP-NEXT: sw s4, %lo(var+4)(s1) -; RV32IZCMP-NEXT: sw s3, %lo(var)(s1) +; RV32IZCMP-NEXT: sw s7, 16(s1) +; RV32IZCMP-NEXT: sw s6, 12(s1) +; RV32IZCMP-NEXT: sw s5, 8(s1) +; RV32IZCMP-NEXT: sw s4, 4(s1) +; RV32IZCMP-NEXT: sw s3, 0(s1) ; RV32IZCMP-NEXT: mv a0, s2 ; RV32IZCMP-NEXT: addi sp, s0, -48 ; RV32IZCMP-NEXT: .cfi_def_cfa sp, 48 -; RV32IZCMP-NEXT: cm.pop {ra, s0-s8}, 48 +; RV32IZCMP-NEXT: cm.pop {ra, s0-s7}, 48 ; RV32IZCMP-NEXT: .cfi_restore ra ; RV32IZCMP-NEXT: .cfi_restore s0 ; RV32IZCMP-NEXT: .cfi_restore s1 @@ -833,24 +832,22 @@ define i32 @nocompress(i32 signext %size) { ; RV32IZCMP-NEXT: .cfi_restore s5 ; RV32IZCMP-NEXT: .cfi_restore s6 ; RV32IZCMP-NEXT: .cfi_restore s7 -; RV32IZCMP-NEXT: .cfi_restore s8 ; RV32IZCMP-NEXT: .cfi_def_cfa_offset 0 ; RV32IZCMP-NEXT: tail callee ; ; RV64IZCMP-LABEL: nocompress: ; RV64IZCMP: # %bb.0: # %entry -; RV64IZCMP-NEXT: cm.push {ra, s0-s8}, -80 +; RV64IZCMP-NEXT: cm.push {ra, s0-s7}, -80 ; RV64IZCMP-NEXT: .cfi_def_cfa_offset 80 -; RV64IZCMP-NEXT: .cfi_offset ra, -80 -; RV64IZCMP-NEXT: .cfi_offset s0, -72 -; RV64IZCMP-NEXT: .cfi_offset s1, -64 -; RV64IZCMP-NEXT: .cfi_offset s2, -56 -; RV64IZCMP-NEXT: .cfi_offset s3, -48 -; RV64IZCMP-NEXT: .cfi_offset s4, -40 -; RV64IZCMP-NEXT: .cfi_offset s5, -32 -; RV64IZCMP-NEXT: .cfi_offset s6, -24 -; RV64IZCMP-NEXT: .cfi_offset s7, -16 -; RV64IZCMP-NEXT: .cfi_offset s8, -8 +; RV64IZCMP-NEXT: .cfi_offset ra, -72 +; RV64IZCMP-NEXT: .cfi_offset s0, -64 +; RV64IZCMP-NEXT: .cfi_offset s1, -56 +; RV64IZCMP-NEXT: .cfi_offset s2, -48 +; RV64IZCMP-NEXT: .cfi_offset s3, -40 +; RV64IZCMP-NEXT: .cfi_offset s4, -32 +; RV64IZCMP-NEXT: .cfi_offset s5, -24 +; RV64IZCMP-NEXT: .cfi_offset s6, -16 +; RV64IZCMP-NEXT: .cfi_offset s7, -8 ; RV64IZCMP-NEXT: addi s0, sp, 80 ; RV64IZCMP-NEXT: .cfi_def_cfa s0, 0 ; RV64IZCMP-NEXT: slli a0, a0, 32 @@ -860,23 +857,23 @@ define i32 @nocompress(i32 signext %size) { ; RV64IZCMP-NEXT: sub s2, sp, a0 ; RV64IZCMP-NEXT: mv sp, s2 ; RV64IZCMP-NEXT: lui s1, %hi(var) -; RV64IZCMP-NEXT: lw s3, %lo(var)(s1) -; RV64IZCMP-NEXT: lw s4, %lo(var+4)(s1) -; RV64IZCMP-NEXT: lw s5, %lo(var+8)(s1) -; RV64IZCMP-NEXT: lw s6, %lo(var+12)(s1) -; RV64IZCMP-NEXT: addi s7, s1, %lo(var) -; RV64IZCMP-NEXT: lw s8, 16(s7) +; RV64IZCMP-NEXT: addi s1, s1, %lo(var) +; RV64IZCMP-NEXT: lw s3, 0(s1) +; RV64IZCMP-NEXT: lw s4, 4(s1) +; RV64IZCMP-NEXT: lw s5, 8(s1) +; RV64IZCMP-NEXT: lw s6, 12(s1) +; RV64IZCMP-NEXT: lw s7, 16(s1) ; RV64IZCMP-NEXT: mv a0, s2 ; RV64IZCMP-NEXT: call callee_void -; RV64IZCMP-NEXT: sw s8, 16(s7) -; RV64IZCMP-NEXT: sw s6, %lo(var+12)(s1) -; RV64IZCMP-NEXT: sw s5, %lo(var+8)(s1) -; RV64IZCMP-NEXT: sw s4, %lo(var+4)(s1) -; RV64IZCMP-NEXT: sw s3, %lo(var)(s1) +; RV64IZCMP-NEXT: sw s7, 16(s1) +; RV64IZCMP-NEXT: sw s6, 12(s1) +; RV64IZCMP-NEXT: sw s5, 8(s1) +; RV64IZCMP-NEXT: sw s4, 4(s1) +; RV64IZCMP-NEXT: sw s3, 0(s1) ; RV64IZCMP-NEXT: mv a0, s2 ; RV64IZCMP-NEXT: addi sp, s0, -80 ; RV64IZCMP-NEXT: .cfi_def_cfa sp, 80 -; RV64IZCMP-NEXT: cm.pop {ra, s0-s8}, 80 +; RV64IZCMP-NEXT: cm.pop {ra, s0-s7}, 80 ; RV64IZCMP-NEXT: .cfi_restore ra ; RV64IZCMP-NEXT: .cfi_restore s0 ; RV64IZCMP-NEXT: .cfi_restore s1 @@ -886,24 +883,22 @@ define i32 @nocompress(i32 signext %size) { ; RV64IZCMP-NEXT: .cfi_restore s5 ; RV64IZCMP-NEXT: .cfi_restore s6 ; RV64IZCMP-NEXT: .cfi_restore s7 -; RV64IZCMP-NEXT: .cfi_restore s8 ; RV64IZCMP-NEXT: .cfi_def_cfa_offset 0 ; RV64IZCMP-NEXT: tail callee ; ; RV32IZCMP-SR-LABEL: nocompress: ; RV32IZCMP-SR: # %bb.0: # %entry -; RV32IZCMP-SR-NEXT: cm.push {ra, s0-s8}, -48 +; RV32IZCMP-SR-NEXT: cm.push {ra, s0-s7}, -48 ; RV32IZCMP-SR-NEXT: .cfi_def_cfa_offset 48 -; RV32IZCMP-SR-NEXT: .cfi_offset ra, -40 -; RV32IZCMP-SR-NEXT: .cfi_offset s0, -36 -; RV32IZCMP-SR-NEXT: .cfi_offset s1, -32 -; RV32IZCMP-SR-NEXT: .cfi_offset s2, -28 -; RV32IZCMP-SR-NEXT: .cfi_offset s3, -24 -; RV32IZCMP-SR-NEXT: .cfi_offset s4, -20 -; RV32IZCMP-SR-NEXT: .cfi_offset s5, -16 -; RV32IZCMP-SR-NEXT: .cfi_offset s6, -12 -; RV32IZCMP-SR-NEXT: .cfi_offset s7, -8 -; RV32IZCMP-SR-NEXT: .cfi_offset s8, -4 +; RV32IZCMP-SR-NEXT: .cfi_offset ra, -36 +; RV32IZCMP-SR-NEXT: .cfi_offset s0, -32 +; RV32IZCMP-SR-NEXT: .cfi_offset s1, -28 +; RV32IZCMP-SR-NEXT: .cfi_offset s2, -24 +; RV32IZCMP-SR-NEXT: .cfi_offset s3, -20 +; RV32IZCMP-SR-NEXT: .cfi_offset s4, -16 +; RV32IZCMP-SR-NEXT: .cfi_offset s5, -12 +; RV32IZCMP-SR-NEXT: .cfi_offset s6, -8 +; RV32IZCMP-SR-NEXT: .cfi_offset s7, -4 ; RV32IZCMP-SR-NEXT: addi s0, sp, 48 ; RV32IZCMP-SR-NEXT: .cfi_def_cfa s0, 0 ; RV32IZCMP-SR-NEXT: addi a0, a0, 15 @@ -911,23 +906,23 @@ define i32 @nocompress(i32 signext %size) { ; RV32IZCMP-SR-NEXT: sub s2, sp, a0 ; RV32IZCMP-SR-NEXT: mv sp, s2 ; RV32IZCMP-SR-NEXT: lui s1, %hi(var) -; RV32IZCMP-SR-NEXT: lw s3, %lo(var)(s1) -; RV32IZCMP-SR-NEXT: lw s4, %lo(var+4)(s1) -; RV32IZCMP-SR-NEXT: lw s5, %lo(var+8)(s1) -; RV32IZCMP-SR-NEXT: lw s6, %lo(var+12)(s1) -; RV32IZCMP-SR-NEXT: addi s7, s1, %lo(var) -; RV32IZCMP-SR-NEXT: lw s8, 16(s7) +; RV32IZCMP-SR-NEXT: addi s1, s1, %lo(var) +; RV32IZCMP-SR-NEXT: lw s3, 0(s1) +; RV32IZCMP-SR-NEXT: lw s4, 4(s1) +; RV32IZCMP-SR-NEXT: lw s5, 8(s1) +; RV32IZCMP-SR-NEXT: lw s6, 12(s1) +; RV32IZCMP-SR-NEXT: lw s7, 16(s1) ; RV32IZCMP-SR-NEXT: mv a0, s2 ; RV32IZCMP-SR-NEXT: call callee_void -; RV32IZCMP-SR-NEXT: sw s8, 16(s7) -; RV32IZCMP-SR-NEXT: sw s6, %lo(var+12)(s1) -; RV32IZCMP-SR-NEXT: sw s5, %lo(var+8)(s1) -; RV32IZCMP-SR-NEXT: sw s4, %lo(var+4)(s1) -; RV32IZCMP-SR-NEXT: sw s3, %lo(var)(s1) +; RV32IZCMP-SR-NEXT: sw s7, 16(s1) +; RV32IZCMP-SR-NEXT: sw s6, 12(s1) +; RV32IZCMP-SR-NEXT: sw s5, 8(s1) +; RV32IZCMP-SR-NEXT: sw s4, 4(s1) +; RV32IZCMP-SR-NEXT: sw s3, 0(s1) ; RV32IZCMP-SR-NEXT: mv a0, s2 ; RV32IZCMP-SR-NEXT: addi sp, s0, -48 ; RV32IZCMP-SR-NEXT: .cfi_def_cfa sp, 48 -; RV32IZCMP-SR-NEXT: cm.pop {ra, s0-s8}, 48 +; RV32IZCMP-SR-NEXT: cm.pop {ra, s0-s7}, 48 ; RV32IZCMP-SR-NEXT: .cfi_restore ra ; RV32IZCMP-SR-NEXT: .cfi_restore s0 ; RV32IZCMP-SR-NEXT: .cfi_restore s1 @@ -937,24 +932,22 @@ define i32 @nocompress(i32 signext %size) { ; RV32IZCMP-SR-NEXT: .cfi_restore s5 ; RV32IZCMP-SR-NEXT: .cfi_restore s6 ; RV32IZCMP-SR-NEXT: .cfi_restore s7 -; RV32IZCMP-SR-NEXT: .cfi_restore s8 ; RV32IZCMP-SR-NEXT: .cfi_def_cfa_offset 0 ; RV32IZCMP-SR-NEXT: tail callee ; ; RV64IZCMP-SR-LABEL: nocompress: ; RV64IZCMP-SR: # %bb.0: # %entry -; RV64IZCMP-SR-NEXT: cm.push {ra, s0-s8}, -80 +; RV64IZCMP-SR-NEXT: cm.push {ra, s0-s7}, -80 ; RV64IZCMP-SR-NEXT: .cfi_def_cfa_offset 80 -; RV64IZCMP-SR-NEXT: .cfi_offset ra, -80 -; RV64IZCMP-SR-NEXT: .cfi_offset s0, -72 -; RV64IZCMP-SR-NEXT: .cfi_offset s1, -64 -; RV64IZCMP-SR-NEXT: .cfi_offset s2, -56 -; RV64IZCMP-SR-NEXT: .cfi_offset s3, -48 -; RV64IZCMP-SR-NEXT: .cfi_offset s4, -40 -; RV64IZCMP-SR-NEXT: .cfi_offset s5, -32 -; RV64IZCMP-SR-NEXT: .cfi_offset s6, -24 -; RV64IZCMP-SR-NEXT: .cfi_offset s7, -16 -; RV64IZCMP-SR-NEXT: .cfi_offset s8, -8 +; RV64IZCMP-SR-NEXT: .cfi_offset ra, -72 +; RV64IZCMP-SR-NEXT: .cfi_offset s0, -64 +; RV64IZCMP-SR-NEXT: .cfi_offset s1, -56 +; RV64IZCMP-SR-NEXT: .cfi_offset s2, -48 +; RV64IZCMP-SR-NEXT: .cfi_offset s3, -40 +; RV64IZCMP-SR-NEXT: .cfi_offset s4, -32 +; RV64IZCMP-SR-NEXT: .cfi_offset s5, -24 +; RV64IZCMP-SR-NEXT: .cfi_offset s6, -16 +; RV64IZCMP-SR-NEXT: .cfi_offset s7, -8 ; RV64IZCMP-SR-NEXT: addi s0, sp, 80 ; RV64IZCMP-SR-NEXT: .cfi_def_cfa s0, 0 ; RV64IZCMP-SR-NEXT: slli a0, a0, 32 @@ -964,23 +957,23 @@ define i32 @nocompress(i32 signext %size) { ; RV64IZCMP-SR-NEXT: sub s2, sp, a0 ; RV64IZCMP-SR-NEXT: mv sp, s2 ; RV64IZCMP-SR-NEXT: lui s1, %hi(var) -; RV64IZCMP-SR-NEXT: lw s3, %lo(var)(s1) -; RV64IZCMP-SR-NEXT: lw s4, %lo(var+4)(s1) -; RV64IZCMP-SR-NEXT: lw s5, %lo(var+8)(s1) -; RV64IZCMP-SR-NEXT: lw s6, %lo(var+12)(s1) -; RV64IZCMP-SR-NEXT: addi s7, s1, %lo(var) -; RV64IZCMP-SR-NEXT: lw s8, 16(s7) +; RV64IZCMP-SR-NEXT: addi s1, s1, %lo(var) +; RV64IZCMP-SR-NEXT: lw s3, 0(s1) +; RV64IZCMP-SR-NEXT: lw s4, 4(s1) +; RV64IZCMP-SR-NEXT: lw s5, 8(s1) +; RV64IZCMP-SR-NEXT: lw s6, 12(s1) +; RV64IZCMP-SR-NEXT: lw s7, 16(s1) ; RV64IZCMP-SR-NEXT: mv a0, s2 ; RV64IZCMP-SR-NEXT: call callee_void -; RV64IZCMP-SR-NEXT: sw s8, 16(s7) -; RV64IZCMP-SR-NEXT: sw s6, %lo(var+12)(s1) -; RV64IZCMP-SR-NEXT: sw s5, %lo(var+8)(s1) -; RV64IZCMP-SR-NEXT: sw s4, %lo(var+4)(s1) -; RV64IZCMP-SR-NEXT: sw s3, %lo(var)(s1) +; RV64IZCMP-SR-NEXT: sw s7, 16(s1) +; RV64IZCMP-SR-NEXT: sw s6, 12(s1) +; RV64IZCMP-SR-NEXT: sw s5, 8(s1) +; RV64IZCMP-SR-NEXT: sw s4, 4(s1) +; RV64IZCMP-SR-NEXT: sw s3, 0(s1) ; RV64IZCMP-SR-NEXT: mv a0, s2 ; RV64IZCMP-SR-NEXT: addi sp, s0, -80 ; RV64IZCMP-SR-NEXT: .cfi_def_cfa sp, 80 -; RV64IZCMP-SR-NEXT: cm.pop {ra, s0-s8}, 80 +; RV64IZCMP-SR-NEXT: cm.pop {ra, s0-s7}, 80 ; RV64IZCMP-SR-NEXT: .cfi_restore ra ; RV64IZCMP-SR-NEXT: .cfi_restore s0 ; RV64IZCMP-SR-NEXT: .cfi_restore s1 @@ -990,7 +983,6 @@ define i32 @nocompress(i32 signext %size) { ; RV64IZCMP-SR-NEXT: .cfi_restore s5 ; RV64IZCMP-SR-NEXT: .cfi_restore s6 ; RV64IZCMP-SR-NEXT: .cfi_restore s7 -; RV64IZCMP-SR-NEXT: .cfi_restore s8 ; RV64IZCMP-SR-NEXT: .cfi_def_cfa_offset 0 ; RV64IZCMP-SR-NEXT: tail callee ; @@ -1007,7 +999,6 @@ define i32 @nocompress(i32 signext %size) { ; 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: .cfi_offset ra, -4 ; RV32I-NEXT: .cfi_offset s0, -8 ; RV32I-NEXT: .cfi_offset s1, -12 @@ -1017,7 +1008,6 @@ define i32 @nocompress(i32 signext %size) { ; RV32I-NEXT: .cfi_offset s5, -28 ; RV32I-NEXT: .cfi_offset s6, -32 ; RV32I-NEXT: .cfi_offset s7, -36 -; RV32I-NEXT: .cfi_offset s8, -40 ; RV32I-NEXT: addi s0, sp, 48 ; RV32I-NEXT: .cfi_def_cfa s0, 0 ; RV32I-NEXT: addi a0, a0, 15 @@ -1025,19 +1015,19 @@ define i32 @nocompress(i32 signext %size) { ; RV32I-NEXT: sub s1, sp, a0 ; RV32I-NEXT: mv sp, s1 ; RV32I-NEXT: lui s2, %hi(var) -; RV32I-NEXT: lw s3, %lo(var)(s2) -; RV32I-NEXT: lw s4, %lo(var+4)(s2) -; RV32I-NEXT: lw s5, %lo(var+8)(s2) -; RV32I-NEXT: lw s6, %lo(var+12)(s2) -; RV32I-NEXT: addi s7, s2, %lo(var) -; RV32I-NEXT: lw s8, 16(s7) +; RV32I-NEXT: addi s2, s2, %lo(var) +; RV32I-NEXT: lw s3, 0(s2) +; RV32I-NEXT: lw s4, 4(s2) +; RV32I-NEXT: lw s5, 8(s2) +; RV32I-NEXT: lw s6, 12(s2) +; RV32I-NEXT: lw s7, 16(s2) ; RV32I-NEXT: mv a0, s1 ; RV32I-NEXT: call callee_void -; RV32I-NEXT: sw s8, 16(s7) -; RV32I-NEXT: sw s6, %lo(var+12)(s2) -; RV32I-NEXT: sw s5, %lo(var+8)(s2) -; RV32I-NEXT: sw s4, %lo(var+4)(s2) -; RV32I-NEXT: sw s3, %lo(var)(s2) +; RV32I-NEXT: sw s7, 16(s2) +; RV32I-NEXT: sw s6, 12(s2) +; RV32I-NEXT: sw s5, 8(s2) +; RV32I-NEXT: sw s4, 4(s2) +; RV32I-NEXT: sw s3, 0(s2) ; RV32I-NEXT: mv a0, s1 ; RV32I-NEXT: addi sp, s0, -48 ; RV32I-NEXT: .cfi_def_cfa sp, 48 @@ -1050,7 +1040,6 @@ define i32 @nocompress(i32 signext %size) { ; 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: .cfi_restore ra ; RV32I-NEXT: .cfi_restore s0 ; RV32I-NEXT: .cfi_restore s1 @@ -1060,7 +1049,6 @@ define i32 @nocompress(i32 signext %size) { ; RV32I-NEXT: .cfi_restore s5 ; RV32I-NEXT: .cfi_restore s6 ; RV32I-NEXT: .cfi_restore s7 -; RV32I-NEXT: .cfi_restore s8 ; RV32I-NEXT: addi sp, sp, 48 ; RV32I-NEXT: .cfi_def_cfa_offset 0 ; RV32I-NEXT: tail callee @@ -1078,7 +1066,6 @@ define i32 @nocompress(i32 signext %size) { ; RV64I-NEXT: sd s5, 24(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s6, 16(sp) # 8-byte Folded Spill ; RV64I-NEXT: sd s7, 8(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s8, 0(sp) # 8-byte Folded Spill ; RV64I-NEXT: .cfi_offset ra, -8 ; RV64I-NEXT: .cfi_offset s0, -16 ; RV64I-NEXT: .cfi_offset s1, -24 @@ -1088,7 +1075,6 @@ define i32 @nocompress(i32 signext %size) { ; RV64I-NEXT: .cfi_offset s5, -56 ; RV64I-NEXT: .cfi_offset s6, -64 ; RV64I-NEXT: .cfi_offset s7, -72 -; RV64I-NEXT: .cfi_offset s8, -80 ; RV64I-NEXT: addi s0, sp, 80 ; RV64I-NEXT: .cfi_def_cfa s0, 0 ; RV64I-NEXT: slli a0, a0, 32 @@ -1098,19 +1084,19 @@ define i32 @nocompress(i32 signext %size) { ; RV64I-NEXT: sub s1, sp, a0 ; RV64I-NEXT: mv sp, s1 ; RV64I-NEXT: lui s2, %hi(var) -; RV64I-NEXT: lw s3, %lo(var)(s2) -; RV64I-NEXT: lw s4, %lo(var+4)(s2) -; RV64I-NEXT: lw s5, %lo(var+8)(s2) -; RV64I-NEXT: lw s6, %lo(var+12)(s2) -; RV64I-NEXT: addi s7, s2, %lo(var) -; RV64I-NEXT: lw s8, 16(s7) +; RV64I-NEXT: addi s2, s2, %lo(var) +; RV64I-NEXT: lw s3, 0(s2) +; RV64I-NEXT: lw s4, 4(s2) +; RV64I-NEXT: lw s5, 8(s2) +; RV64I-NEXT: lw s6, 12(s2) +; RV64I-NEXT: lw s7, 16(s2) ; RV64I-NEXT: mv a0, s1 ; RV64I-NEXT: call callee_void -; RV64I-NEXT: sw s8, 16(s7) -; RV64I-NEXT: sw s6, %lo(var+12)(s2) -; RV64I-NEXT: sw s5, %lo(var+8)(s2) -; RV64I-NEXT: sw s4, %lo(var+4)(s2) -; RV64I-NEXT: sw s3, %lo(var)(s2) +; RV64I-NEXT: sw s7, 16(s2) +; RV64I-NEXT: sw s6, 12(s2) +; RV64I-NEXT: sw s5, 8(s2) +; RV64I-NEXT: sw s4, 4(s2) +; RV64I-NEXT: sw s3, 0(s2) ; RV64I-NEXT: mv a0, s1 ; RV64I-NEXT: addi sp, s0, -80 ; RV64I-NEXT: .cfi_def_cfa sp, 80 @@ -1123,7 +1109,6 @@ define i32 @nocompress(i32 signext %size) { ; RV64I-NEXT: ld s5, 24(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld s6, 16(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld s7, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s8, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: .cfi_restore ra ; RV64I-NEXT: .cfi_restore s0 ; RV64I-NEXT: .cfi_restore s1 @@ -1133,7 +1118,6 @@ define i32 @nocompress(i32 signext %size) { ; RV64I-NEXT: .cfi_restore s5 ; RV64I-NEXT: .cfi_restore s6 ; RV64I-NEXT: .cfi_restore s7 -; RV64I-NEXT: .cfi_restore s8 ; RV64I-NEXT: addi sp, sp, 80 ; RV64I-NEXT: .cfi_def_cfa_offset 0 ; RV64I-NEXT: tail callee @@ -1274,329 +1258,317 @@ define i32 @varargs(ptr %fmt, ...) { define void @many_args(i32, i32, i32, i32, i32, i32, i32, i32, i32) { ; RV32IZCMP-LABEL: many_args: ; RV32IZCMP: # %bb.0: # %entry -; RV32IZCMP-NEXT: cm.push {ra, s0-s4}, -32 +; RV32IZCMP-NEXT: cm.push {ra, s0-s3}, -32 ; RV32IZCMP-NEXT: .cfi_def_cfa_offset 32 -; RV32IZCMP-NEXT: .cfi_offset s0, -20 -; RV32IZCMP-NEXT: .cfi_offset s1, -16 -; RV32IZCMP-NEXT: .cfi_offset s2, -12 -; RV32IZCMP-NEXT: .cfi_offset s3, -8 -; RV32IZCMP-NEXT: .cfi_offset s4, -4 +; RV32IZCMP-NEXT: .cfi_offset s0, -16 +; RV32IZCMP-NEXT: .cfi_offset s1, -12 +; RV32IZCMP-NEXT: .cfi_offset s2, -8 +; RV32IZCMP-NEXT: .cfi_offset s3, -4 ; RV32IZCMP-NEXT: lui a0, %hi(var0) -; RV32IZCMP-NEXT: lw a6, %lo(var0)(a0) -; RV32IZCMP-NEXT: lw a7, %lo(var0+4)(a0) -; RV32IZCMP-NEXT: lw t0, %lo(var0+8)(a0) -; RV32IZCMP-NEXT: lw t1, %lo(var0+12)(a0) -; RV32IZCMP-NEXT: addi a5, a0, %lo(var0) -; RV32IZCMP-NEXT: lw t2, 16(a5) -; RV32IZCMP-NEXT: lw t3, 20(a5) -; RV32IZCMP-NEXT: lw t4, 24(a5) -; RV32IZCMP-NEXT: lw t5, 28(a5) -; RV32IZCMP-NEXT: lw t6, 48(a5) -; RV32IZCMP-NEXT: lw s2, 52(a5) -; RV32IZCMP-NEXT: lw a3, 56(a5) -; RV32IZCMP-NEXT: lw a4, 60(a5) -; RV32IZCMP-NEXT: lw a1, 64(a5) -; RV32IZCMP-NEXT: lw s0, 68(a5) -; RV32IZCMP-NEXT: lw s3, 32(a5) -; RV32IZCMP-NEXT: lw s4, 36(a5) -; RV32IZCMP-NEXT: lw s1, 40(a5) -; RV32IZCMP-NEXT: lw a2, 44(a5) -; RV32IZCMP-NEXT: sw s0, 68(a5) -; RV32IZCMP-NEXT: sw a1, 64(a5) -; RV32IZCMP-NEXT: sw a4, 60(a5) -; RV32IZCMP-NEXT: sw a3, 56(a5) -; RV32IZCMP-NEXT: sw s2, 52(a5) -; RV32IZCMP-NEXT: sw t6, 48(a5) -; RV32IZCMP-NEXT: sw a2, 44(a5) -; RV32IZCMP-NEXT: sw s1, 40(a5) -; RV32IZCMP-NEXT: sw s4, 36(a5) -; RV32IZCMP-NEXT: sw s3, 32(a5) -; RV32IZCMP-NEXT: sw t5, 28(a5) -; RV32IZCMP-NEXT: sw t4, 24(a5) -; RV32IZCMP-NEXT: sw t3, 20(a5) -; RV32IZCMP-NEXT: sw t2, 16(a5) -; RV32IZCMP-NEXT: sw t1, %lo(var0+12)(a0) -; RV32IZCMP-NEXT: sw t0, %lo(var0+8)(a0) -; RV32IZCMP-NEXT: sw a7, %lo(var0+4)(a0) -; RV32IZCMP-NEXT: sw a6, %lo(var0)(a0) -; RV32IZCMP-NEXT: cm.popret {ra, s0-s4}, 32 +; RV32IZCMP-NEXT: addi a0, a0, %lo(var0) +; RV32IZCMP-NEXT: lw a6, 0(a0) +; RV32IZCMP-NEXT: lw a7, 4(a0) +; RV32IZCMP-NEXT: lw t0, 8(a0) +; RV32IZCMP-NEXT: lw t1, 12(a0) +; RV32IZCMP-NEXT: lw t2, 16(a0) +; RV32IZCMP-NEXT: lw t3, 20(a0) +; RV32IZCMP-NEXT: lw t4, 24(a0) +; RV32IZCMP-NEXT: lw t5, 28(a0) +; RV32IZCMP-NEXT: lw t6, 48(a0) +; RV32IZCMP-NEXT: lw s2, 52(a0) +; RV32IZCMP-NEXT: lw a1, 56(a0) +; RV32IZCMP-NEXT: lw a2, 60(a0) +; RV32IZCMP-NEXT: lw a3, 64(a0) +; RV32IZCMP-NEXT: lw a4, 68(a0) +; RV32IZCMP-NEXT: lw s3, 32(a0) +; RV32IZCMP-NEXT: lw s1, 36(a0) +; RV32IZCMP-NEXT: lw a5, 40(a0) +; RV32IZCMP-NEXT: lw s0, 44(a0) +; RV32IZCMP-NEXT: sw a4, 68(a0) +; RV32IZCMP-NEXT: sw a3, 64(a0) +; RV32IZCMP-NEXT: sw a2, 60(a0) +; RV32IZCMP-NEXT: sw a1, 56(a0) +; RV32IZCMP-NEXT: sw s2, 52(a0) +; RV32IZCMP-NEXT: sw t6, 48(a0) +; RV32IZCMP-NEXT: sw s0, 44(a0) +; RV32IZCMP-NEXT: sw a5, 40(a0) +; RV32IZCMP-NEXT: sw s1, 36(a0) +; RV32IZCMP-NEXT: sw s3, 32(a0) +; RV32IZCMP-NEXT: sw t5, 28(a0) +; RV32IZCMP-NEXT: sw t4, 24(a0) +; RV32IZCMP-NEXT: sw t3, 20(a0) +; RV32IZCMP-NEXT: sw t2, 16(a0) +; RV32IZCMP-NEXT: sw t1, 12(a0) +; RV32IZCMP-NEXT: sw t0, 8(a0) +; RV32IZCMP-NEXT: sw a7, 4(a0) +; RV32IZCMP-NEXT: sw a6, 0(a0) +; RV32IZCMP-NEXT: cm.popret {ra, s0-s3}, 32 ; ; RV64IZCMP-LABEL: many_args: ; RV64IZCMP: # %bb.0: # %entry -; RV64IZCMP-NEXT: cm.push {ra, s0-s4}, -48 +; RV64IZCMP-NEXT: cm.push {ra, s0-s3}, -48 ; RV64IZCMP-NEXT: .cfi_def_cfa_offset 48 -; RV64IZCMP-NEXT: .cfi_offset s0, -40 -; RV64IZCMP-NEXT: .cfi_offset s1, -32 -; RV64IZCMP-NEXT: .cfi_offset s2, -24 -; RV64IZCMP-NEXT: .cfi_offset s3, -16 -; RV64IZCMP-NEXT: .cfi_offset s4, -8 +; RV64IZCMP-NEXT: .cfi_offset s0, -32 +; RV64IZCMP-NEXT: .cfi_offset s1, -24 +; RV64IZCMP-NEXT: .cfi_offset s2, -16 +; RV64IZCMP-NEXT: .cfi_offset s3, -8 ; RV64IZCMP-NEXT: lui a0, %hi(var0) -; RV64IZCMP-NEXT: lw a6, %lo(var0)(a0) -; RV64IZCMP-NEXT: lw a7, %lo(var0+4)(a0) -; RV64IZCMP-NEXT: lw t0, %lo(var0+8)(a0) -; RV64IZCMP-NEXT: lw t1, %lo(var0+12)(a0) -; RV64IZCMP-NEXT: addi a5, a0, %lo(var0) -; RV64IZCMP-NEXT: lw t2, 16(a5) -; RV64IZCMP-NEXT: lw t3, 20(a5) -; RV64IZCMP-NEXT: lw t4, 24(a5) -; RV64IZCMP-NEXT: lw t5, 28(a5) -; RV64IZCMP-NEXT: lw t6, 48(a5) -; RV64IZCMP-NEXT: lw s2, 52(a5) -; RV64IZCMP-NEXT: lw a3, 56(a5) -; RV64IZCMP-NEXT: lw a4, 60(a5) -; RV64IZCMP-NEXT: lw a1, 64(a5) -; RV64IZCMP-NEXT: lw s0, 68(a5) -; RV64IZCMP-NEXT: lw s3, 32(a5) -; RV64IZCMP-NEXT: lw s4, 36(a5) -; RV64IZCMP-NEXT: lw s1, 40(a5) -; RV64IZCMP-NEXT: lw a2, 44(a5) -; RV64IZCMP-NEXT: sw s0, 68(a5) -; RV64IZCMP-NEXT: sw a1, 64(a5) -; RV64IZCMP-NEXT: sw a4, 60(a5) -; RV64IZCMP-NEXT: sw a3, 56(a5) -; RV64IZCMP-NEXT: sw s2, 52(a5) -; RV64IZCMP-NEXT: sw t6, 48(a5) -; RV64IZCMP-NEXT: sw a2, 44(a5) -; RV64IZCMP-NEXT: sw s1, 40(a5) -; RV64IZCMP-NEXT: sw s4, 36(a5) -; RV64IZCMP-NEXT: sw s3, 32(a5) -; RV64IZCMP-NEXT: sw t5, 28(a5) -; RV64IZCMP-NEXT: sw t4, 24(a5) -; RV64IZCMP-NEXT: sw t3, 20(a5) -; RV64IZCMP-NEXT: sw t2, 16(a5) -; RV64IZCMP-NEXT: sw t1, %lo(var0+12)(a0) -; RV64IZCMP-NEXT: sw t0, %lo(var0+8)(a0) -; RV64IZCMP-NEXT: sw a7, %lo(var0+4)(a0) -; RV64IZCMP-NEXT: sw a6, %lo(var0)(a0) -; RV64IZCMP-NEXT: cm.popret {ra, s0-s4}, 48 +; RV64IZCMP-NEXT: addi a0, a0, %lo(var0) +; RV64IZCMP-NEXT: lw a6, 0(a0) +; RV64IZCMP-NEXT: lw a7, 4(a0) +; RV64IZCMP-NEXT: lw t0, 8(a0) +; RV64IZCMP-NEXT: lw t1, 12(a0) +; RV64IZCMP-NEXT: lw t2, 16(a0) +; RV64IZCMP-NEXT: lw t3, 20(a0) +; RV64IZCMP-NEXT: lw t4, 24(a0) +; RV64IZCMP-NEXT: lw t5, 28(a0) +; RV64IZCMP-NEXT: lw t6, 48(a0) +; RV64IZCMP-NEXT: lw s2, 52(a0) +; RV64IZCMP-NEXT: lw a1, 56(a0) +; RV64IZCMP-NEXT: lw a2, 60(a0) +; RV64IZCMP-NEXT: lw a3, 64(a0) +; RV64IZCMP-NEXT: lw a4, 68(a0) +; RV64IZCMP-NEXT: lw s3, 32(a0) +; RV64IZCMP-NEXT: lw s1, 36(a0) +; RV64IZCMP-NEXT: lw a5, 40(a0) +; RV64IZCMP-NEXT: lw s0, 44(a0) +; RV64IZCMP-NEXT: sw a4, 68(a0) +; RV64IZCMP-NEXT: sw a3, 64(a0) +; RV64IZCMP-NEXT: sw a2, 60(a0) +; RV64IZCMP-NEXT: sw a1, 56(a0) +; RV64IZCMP-NEXT: sw s2, 52(a0) +; RV64IZCMP-NEXT: sw t6, 48(a0) +; RV64IZCMP-NEXT: sw s0, 44(a0) +; RV64IZCMP-NEXT: sw a5, 40(a0) +; RV64IZCMP-NEXT: sw s1, 36(a0) +; RV64IZCMP-NEXT: sw s3, 32(a0) +; RV64IZCMP-NEXT: sw t5, 28(a0) +; RV64IZCMP-NEXT: sw t4, 24(a0) +; RV64IZCMP-NEXT: sw t3, 20(a0) +; RV64IZCMP-NEXT: sw t2, 16(a0) +; RV64IZCMP-NEXT: sw t1, 12(a0) +; RV64IZCMP-NEXT: sw t0, 8(a0) +; RV64IZCMP-NEXT: sw a7, 4(a0) +; RV64IZCMP-NEXT: sw a6, 0(a0) +; RV64IZCMP-NEXT: cm.popret {ra, s0-s3}, 48 ; ; RV32IZCMP-SR-LABEL: many_args: ; RV32IZCMP-SR: # %bb.0: # %entry -; RV32IZCMP-SR-NEXT: cm.push {ra, s0-s4}, -32 +; RV32IZCMP-SR-NEXT: cm.push {ra, s0-s3}, -32 ; RV32IZCMP-SR-NEXT: .cfi_def_cfa_offset 32 -; RV32IZCMP-SR-NEXT: .cfi_offset s0, -20 -; RV32IZCMP-SR-NEXT: .cfi_offset s1, -16 -; RV32IZCMP-SR-NEXT: .cfi_offset s2, -12 -; RV32IZCMP-SR-NEXT: .cfi_offset s3, -8 -; RV32IZCMP-SR-NEXT: .cfi_offset s4, -4 +; RV32IZCMP-SR-NEXT: .cfi_offset s0, -16 +; RV32IZCMP-SR-NEXT: .cfi_offset s1, -12 +; RV32IZCMP-SR-NEXT: .cfi_offset s2, -8 +; RV32IZCMP-SR-NEXT: .cfi_offset s3, -4 ; RV32IZCMP-SR-NEXT: lui a0, %hi(var0) -; RV32IZCMP-SR-NEXT: lw a6, %lo(var0)(a0) -; RV32IZCMP-SR-NEXT: lw a7, %lo(var0+4)(a0) -; RV32IZCMP-SR-NEXT: lw t0, %lo(var0+8)(a0) -; RV32IZCMP-SR-NEXT: lw t1, %lo(var0+12)(a0) -; RV32IZCMP-SR-NEXT: addi a5, a0, %lo(var0) -; RV32IZCMP-SR-NEXT: lw t2, 16(a5) -; RV32IZCMP-SR-NEXT: lw t3, 20(a5) -; RV32IZCMP-SR-NEXT: lw t4, 24(a5) -; RV32IZCMP-SR-NEXT: lw t5, 28(a5) -; RV32IZCMP-SR-NEXT: lw t6, 48(a5) -; RV32IZCMP-SR-NEXT: lw s2, 52(a5) -; RV32IZCMP-SR-NEXT: lw a3, 56(a5) -; RV32IZCMP-SR-NEXT: lw a4, 60(a5) -; RV32IZCMP-SR-NEXT: lw a1, 64(a5) -; RV32IZCMP-SR-NEXT: lw s0, 68(a5) -; RV32IZCMP-SR-NEXT: lw s3, 32(a5) -; RV32IZCMP-SR-NEXT: lw s4, 36(a5) -; RV32IZCMP-SR-NEXT: lw s1, 40(a5) -; RV32IZCMP-SR-NEXT: lw a2, 44(a5) -; RV32IZCMP-SR-NEXT: sw s0, 68(a5) -; RV32IZCMP-SR-NEXT: sw a1, 64(a5) -; RV32IZCMP-SR-NEXT: sw a4, 60(a5) -; RV32IZCMP-SR-NEXT: sw a3, 56(a5) -; RV32IZCMP-SR-NEXT: sw s2, 52(a5) -; RV32IZCMP-SR-NEXT: sw t6, 48(a5) -; RV32IZCMP-SR-NEXT: sw a2, 44(a5) -; RV32IZCMP-SR-NEXT: sw s1, 40(a5) -; RV32IZCMP-SR-NEXT: sw s4, 36(a5) -; RV32IZCMP-SR-NEXT: sw s3, 32(a5) -; RV32IZCMP-SR-NEXT: sw t5, 28(a5) -; RV32IZCMP-SR-NEXT: sw t4, 24(a5) -; RV32IZCMP-SR-NEXT: sw t3, 20(a5) -; RV32IZCMP-SR-NEXT: sw t2, 16(a5) -; RV32IZCMP-SR-NEXT: sw t1, %lo(var0+12)(a0) -; RV32IZCMP-SR-NEXT: sw t0, %lo(var0+8)(a0) -; RV32IZCMP-SR-NEXT: sw a7, %lo(var0+4)(a0) -; RV32IZCMP-SR-NEXT: sw a6, %lo(var0)(a0) -; RV32IZCMP-SR-NEXT: cm.popret {ra, s0-s4}, 32 +; RV32IZCMP-SR-NEXT: addi a0, a0, %lo(var0) +; RV32IZCMP-SR-NEXT: lw a6, 0(a0) +; RV32IZCMP-SR-NEXT: lw a7, 4(a0) +; RV32IZCMP-SR-NEXT: lw t0, 8(a0) +; RV32IZCMP-SR-NEXT: lw t1, 12(a0) +; RV32IZCMP-SR-NEXT: lw t2, 16(a0) +; RV32IZCMP-SR-NEXT: lw t3, 20(a0) +; RV32IZCMP-SR-NEXT: lw t4, 24(a0) +; RV32IZCMP-SR-NEXT: lw t5, 28(a0) +; RV32IZCMP-SR-NEXT: lw t6, 48(a0) +; RV32IZCMP-SR-NEXT: lw s2, 52(a0) +; RV32IZCMP-SR-NEXT: lw a1, 56(a0) +; RV32IZCMP-SR-NEXT: lw a2, 60(a0) +; RV32IZCMP-SR-NEXT: lw a3, 64(a0) +; RV32IZCMP-SR-NEXT: lw a4, 68(a0) +; RV32IZCMP-SR-NEXT: lw s3, 32(a0) +; RV32IZCMP-SR-NEXT: lw s1, 36(a0) +; RV32IZCMP-SR-NEXT: lw a5, 40(a0) +; RV32IZCMP-SR-NEXT: lw s0, 44(a0) +; RV32IZCMP-SR-NEXT: sw a4, 68(a0) +; RV32IZCMP-SR-NEXT: sw a3, 64(a0) +; RV32IZCMP-SR-NEXT: sw a2, 60(a0) +; RV32IZCMP-SR-NEXT: sw a1, 56(a0) +; RV32IZCMP-SR-NEXT: sw s2, 52(a0) +; RV32IZCMP-SR-NEXT: sw t6, 48(a0) +; RV32IZCMP-SR-NEXT: sw s0, 44(a0) +; RV32IZCMP-SR-NEXT: sw a5, 40(a0) +; RV32IZCMP-SR-NEXT: sw s1, 36(a0) +; RV32IZCMP-SR-NEXT: sw s3, 32(a0) +; RV32IZCMP-SR-NEXT: sw t5, 28(a0) +; RV32IZCMP-SR-NEXT: sw t4, 24(a0) +; RV32IZCMP-SR-NEXT: sw t3, 20(a0) +; RV32IZCMP-SR-NEXT: sw t2, 16(a0) +; RV32IZCMP-SR-NEXT: sw t1, 12(a0) +; RV32IZCMP-SR-NEXT: sw t0, 8(a0) +; RV32IZCMP-SR-NEXT: sw a7, 4(a0) +; RV32IZCMP-SR-NEXT: sw a6, 0(a0) +; RV32IZCMP-SR-NEXT: cm.popret {ra, s0-s3}, 32 ; ; RV64IZCMP-SR-LABEL: many_args: ; RV64IZCMP-SR: # %bb.0: # %entry -; RV64IZCMP-SR-NEXT: cm.push {ra, s0-s4}, -48 +; RV64IZCMP-SR-NEXT: cm.push {ra, s0-s3}, -48 ; RV64IZCMP-SR-NEXT: .cfi_def_cfa_offset 48 -; RV64IZCMP-SR-NEXT: .cfi_offset s0, -40 -; RV64IZCMP-SR-NEXT: .cfi_offset s1, -32 -; RV64IZCMP-SR-NEXT: .cfi_offset s2, -24 -; RV64IZCMP-SR-NEXT: .cfi_offset s3, -16 -; RV64IZCMP-SR-NEXT: .cfi_offset s4, -8 +; RV64IZCMP-SR-NEXT: .cfi_offset s0, -32 +; RV64IZCMP-SR-NEXT: .cfi_offset s1, -24 +; RV64IZCMP-SR-NEXT: .cfi_offset s2, -16 +; RV64IZCMP-SR-NEXT: .cfi_offset s3, -8 ; RV64IZCMP-SR-NEXT: lui a0, %hi(var0) -; RV64IZCMP-SR-NEXT: lw a6, %lo(var0)(a0) -; RV64IZCMP-SR-NEXT: lw a7, %lo(var0+4)(a0) -; RV64IZCMP-SR-NEXT: lw t0, %lo(var0+8)(a0) -; RV64IZCMP-SR-NEXT: lw t1, %lo(var0+12)(a0) -; RV64IZCMP-SR-NEXT: addi a5, a0, %lo(var0) -; RV64IZCMP-SR-NEXT: lw t2, 16(a5) -; RV64IZCMP-SR-NEXT: lw t3, 20(a5) -; RV64IZCMP-SR-NEXT: lw t4, 24(a5) -; RV64IZCMP-SR-NEXT: lw t5, 28(a5) -; RV64IZCMP-SR-NEXT: lw t6, 48(a5) -; RV64IZCMP-SR-NEXT: lw s2, 52(a5) -; RV64IZCMP-SR-NEXT: lw a3, 56(a5) -; RV64IZCMP-SR-NEXT: lw a4, 60(a5) -; RV64IZCMP-SR-NEXT: lw a1, 64(a5) -; RV64IZCMP-SR-NEXT: lw s0, 68(a5) -; RV64IZCMP-SR-NEXT: lw s3, 32(a5) -; RV64IZCMP-SR-NEXT: lw s4, 36(a5) -; RV64IZCMP-SR-NEXT: lw s1, 40(a5) -; RV64IZCMP-SR-NEXT: lw a2, 44(a5) -; RV64IZCMP-SR-NEXT: sw s0, 68(a5) -; RV64IZCMP-SR-NEXT: sw a1, 64(a5) -; RV64IZCMP-SR-NEXT: sw a4, 60(a5) -; RV64IZCMP-SR-NEXT: sw a3, 56(a5) -; RV64IZCMP-SR-NEXT: sw s2, 52(a5) -; RV64IZCMP-SR-NEXT: sw t6, 48(a5) -; RV64IZCMP-SR-NEXT: sw a2, 44(a5) -; RV64IZCMP-SR-NEXT: sw s1, 40(a5) -; RV64IZCMP-SR-NEXT: sw s4, 36(a5) -; RV64IZCMP-SR-NEXT: sw s3, 32(a5) -; RV64IZCMP-SR-NEXT: sw t5, 28(a5) -; RV64IZCMP-SR-NEXT: sw t4, 24(a5) -; RV64IZCMP-SR-NEXT: sw t3, 20(a5) -; RV64IZCMP-SR-NEXT: sw t2, 16(a5) -; RV64IZCMP-SR-NEXT: sw t1, %lo(var0+12)(a0) -; RV64IZCMP-SR-NEXT: sw t0, %lo(var0+8)(a0) -; RV64IZCMP-SR-NEXT: sw a7, %lo(var0+4)(a0) -; RV64IZCMP-SR-NEXT: sw a6, %lo(var0)(a0) -; RV64IZCMP-SR-NEXT: cm.popret {ra, s0-s4}, 48 +; RV64IZCMP-SR-NEXT: addi a0, a0, %lo(var0) +; RV64IZCMP-SR-NEXT: lw a6, 0(a0) +; RV64IZCMP-SR-NEXT: lw a7, 4(a0) +; RV64IZCMP-SR-NEXT: lw t0, 8(a0) +; RV64IZCMP-SR-NEXT: lw t1, 12(a0) +; RV64IZCMP-SR-NEXT: lw t2, 16(a0) +; RV64IZCMP-SR-NEXT: lw t3, 20(a0) +; RV64IZCMP-SR-NEXT: lw t4, 24(a0) +; RV64IZCMP-SR-NEXT: lw t5, 28(a0) +; RV64IZCMP-SR-NEXT: lw t6, 48(a0) +; RV64IZCMP-SR-NEXT: lw s2, 52(a0) +; RV64IZCMP-SR-NEXT: lw a1, 56(a0) +; RV64IZCMP-SR-NEXT: lw a2, 60(a0) +; RV64IZCMP-SR-NEXT: lw a3, 64(a0) +; RV64IZCMP-SR-NEXT: lw a4, 68(a0) +; RV64IZCMP-SR-NEXT: lw s3, 32(a0) +; RV64IZCMP-SR-NEXT: lw s1, 36(a0) +; RV64IZCMP-SR-NEXT: lw a5, 40(a0) +; RV64IZCMP-SR-NEXT: lw s0, 44(a0) +; RV64IZCMP-SR-NEXT: sw a4, 68(a0) +; RV64IZCMP-SR-NEXT: sw a3, 64(a0) +; RV64IZCMP-SR-NEXT: sw a2, 60(a0) +; RV64IZCMP-SR-NEXT: sw a1, 56(a0) +; RV64IZCMP-SR-NEXT: sw s2, 52(a0) +; RV64IZCMP-SR-NEXT: sw t6, 48(a0) +; RV64IZCMP-SR-NEXT: sw s0, 44(a0) +; RV64IZCMP-SR-NEXT: sw a5, 40(a0) +; RV64IZCMP-SR-NEXT: sw s1, 36(a0) +; RV64IZCMP-SR-NEXT: sw s3, 32(a0) +; RV64IZCMP-SR-NEXT: sw t5, 28(a0) +; RV64IZCMP-SR-NEXT: sw t4, 24(a0) +; RV64IZCMP-SR-NEXT: sw t3, 20(a0) +; RV64IZCMP-SR-NEXT: sw t2, 16(a0) +; RV64IZCMP-SR-NEXT: sw t1, 12(a0) +; RV64IZCMP-SR-NEXT: sw t0, 8(a0) +; RV64IZCMP-SR-NEXT: sw a7, 4(a0) +; RV64IZCMP-SR-NEXT: sw a6, 0(a0) +; RV64IZCMP-SR-NEXT: cm.popret {ra, s0-s3}, 48 ; ; RV32I-LABEL: many_args: ; RV32I: # %bb.0: # %entry -; RV32I-NEXT: addi sp, sp, -32 -; RV32I-NEXT: .cfi_def_cfa_offset 32 -; RV32I-NEXT: sw s0, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s1, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s2, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s3, 16(sp) # 4-byte Folded Spill -; RV32I-NEXT: sw s4, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: addi sp, sp, -16 +; RV32I-NEXT: .cfi_def_cfa_offset 16 +; RV32I-NEXT: sw s0, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s1, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s2, 4(sp) # 4-byte Folded Spill +; RV32I-NEXT: sw s3, 0(sp) # 4-byte Folded Spill ; RV32I-NEXT: .cfi_offset s0, -4 ; RV32I-NEXT: .cfi_offset s1, -8 ; RV32I-NEXT: .cfi_offset s2, -12 ; RV32I-NEXT: .cfi_offset s3, -16 -; RV32I-NEXT: .cfi_offset s4, -20 ; RV32I-NEXT: lui a0, %hi(var0) -; RV32I-NEXT: lw a1, %lo(var0)(a0) -; RV32I-NEXT: lw a2, %lo(var0+4)(a0) -; RV32I-NEXT: lw a3, %lo(var0+8)(a0) -; RV32I-NEXT: lw a4, %lo(var0+12)(a0) -; RV32I-NEXT: addi a5, a0, %lo(var0) -; RV32I-NEXT: lw a6, 16(a5) -; RV32I-NEXT: lw a7, 20(a5) -; RV32I-NEXT: lw t0, 24(a5) -; RV32I-NEXT: lw t1, 28(a5) -; RV32I-NEXT: lw t2, 48(a5) -; RV32I-NEXT: lw t3, 52(a5) -; RV32I-NEXT: lw t4, 56(a5) -; RV32I-NEXT: lw t5, 60(a5) -; RV32I-NEXT: lw t6, 64(a5) -; RV32I-NEXT: lw s0, 68(a5) -; RV32I-NEXT: lw s1, 32(a5) -; RV32I-NEXT: lw s2, 36(a5) -; RV32I-NEXT: lw s3, 40(a5) -; RV32I-NEXT: lw s4, 44(a5) -; RV32I-NEXT: sw s0, 68(a5) -; RV32I-NEXT: sw t6, 64(a5) -; RV32I-NEXT: sw t5, 60(a5) -; RV32I-NEXT: sw t4, 56(a5) -; RV32I-NEXT: sw t3, 52(a5) -; RV32I-NEXT: sw t2, 48(a5) -; RV32I-NEXT: sw s4, 44(a5) -; RV32I-NEXT: sw s3, 40(a5) -; RV32I-NEXT: sw s2, 36(a5) -; RV32I-NEXT: sw s1, 32(a5) -; RV32I-NEXT: sw t1, 28(a5) -; RV32I-NEXT: sw t0, 24(a5) -; RV32I-NEXT: sw a7, 20(a5) -; RV32I-NEXT: sw a6, 16(a5) -; RV32I-NEXT: sw a4, %lo(var0+12)(a0) -; RV32I-NEXT: sw a3, %lo(var0+8)(a0) -; RV32I-NEXT: sw a2, %lo(var0+4)(a0) -; RV32I-NEXT: sw a1, %lo(var0)(a0) -; RV32I-NEXT: lw s0, 28(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s1, 24(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s2, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s3, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: lw s4, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: addi a0, a0, %lo(var0) +; RV32I-NEXT: lw a1, 0(a0) +; RV32I-NEXT: lw a2, 4(a0) +; RV32I-NEXT: lw a3, 8(a0) +; RV32I-NEXT: lw a4, 12(a0) +; RV32I-NEXT: lw a5, 16(a0) +; RV32I-NEXT: lw a6, 20(a0) +; RV32I-NEXT: lw a7, 24(a0) +; RV32I-NEXT: lw t0, 28(a0) +; RV32I-NEXT: lw t1, 48(a0) +; RV32I-NEXT: lw t2, 52(a0) +; RV32I-NEXT: lw t3, 56(a0) +; RV32I-NEXT: lw t4, 60(a0) +; RV32I-NEXT: lw t5, 64(a0) +; RV32I-NEXT: lw t6, 68(a0) +; RV32I-NEXT: lw s0, 32(a0) +; RV32I-NEXT: lw s1, 36(a0) +; RV32I-NEXT: lw s2, 40(a0) +; RV32I-NEXT: lw s3, 44(a0) +; RV32I-NEXT: sw t6, 68(a0) +; RV32I-NEXT: sw t5, 64(a0) +; RV32I-NEXT: sw t4, 60(a0) +; RV32I-NEXT: sw t3, 56(a0) +; RV32I-NEXT: sw t2, 52(a0) +; RV32I-NEXT: sw t1, 48(a0) +; RV32I-NEXT: sw s3, 44(a0) +; RV32I-NEXT: sw s2, 40(a0) +; RV32I-NEXT: sw s1, 36(a0) +; RV32I-NEXT: sw s0, 32(a0) +; RV32I-NEXT: sw t0, 28(a0) +; RV32I-NEXT: sw a7, 24(a0) +; RV32I-NEXT: sw a6, 20(a0) +; RV32I-NEXT: sw a5, 16(a0) +; RV32I-NEXT: sw a4, 12(a0) +; RV32I-NEXT: sw a3, 8(a0) +; RV32I-NEXT: sw a2, 4(a0) +; RV32I-NEXT: sw a1, 0(a0) +; RV32I-NEXT: lw s0, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s1, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s2, 4(sp) # 4-byte Folded Reload +; RV32I-NEXT: lw s3, 0(sp) # 4-byte Folded Reload ; RV32I-NEXT: .cfi_restore s0 ; RV32I-NEXT: .cfi_restore s1 ; RV32I-NEXT: .cfi_restore s2 ; RV32I-NEXT: .cfi_restore s3 -; RV32I-NEXT: .cfi_restore s4 -; RV32I-NEXT: addi sp, sp, 32 +; RV32I-NEXT: addi sp, sp, 16 ; RV32I-NEXT: .cfi_def_cfa_offset 0 ; RV32I-NEXT: ret ; ; RV64I-LABEL: many_args: ; RV64I: # %bb.0: # %entry -; RV64I-NEXT: addi sp, sp, -48 -; RV64I-NEXT: .cfi_def_cfa_offset 48 -; RV64I-NEXT: sd s0, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s1, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s2, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s3, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: sd s4, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: addi sp, sp, -32 +; RV64I-NEXT: .cfi_def_cfa_offset 32 +; RV64I-NEXT: sd s0, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s3, 0(sp) # 8-byte Folded Spill ; RV64I-NEXT: .cfi_offset s0, -8 ; RV64I-NEXT: .cfi_offset s1, -16 ; RV64I-NEXT: .cfi_offset s2, -24 ; RV64I-NEXT: .cfi_offset s3, -32 -; RV64I-NEXT: .cfi_offset s4, -40 ; RV64I-NEXT: lui a0, %hi(var0) -; RV64I-NEXT: lw a1, %lo(var0)(a0) -; RV64I-NEXT: lw a2, %lo(var0+4)(a0) -; RV64I-NEXT: lw a3, %lo(var0+8)(a0) -; RV64I-NEXT: lw a4, %lo(var0+12)(a0) -; RV64I-NEXT: addi a5, a0, %lo(var0) -; RV64I-NEXT: lw a6, 16(a5) -; RV64I-NEXT: lw a7, 20(a5) -; RV64I-NEXT: lw t0, 24(a5) -; RV64I-NEXT: lw t1, 28(a5) -; RV64I-NEXT: lw t2, 48(a5) -; RV64I-NEXT: lw t3, 52(a5) -; RV64I-NEXT: lw t4, 56(a5) -; RV64I-NEXT: lw t5, 60(a5) -; RV64I-NEXT: lw t6, 64(a5) -; RV64I-NEXT: lw s0, 68(a5) -; RV64I-NEXT: lw s1, 32(a5) -; RV64I-NEXT: lw s2, 36(a5) -; RV64I-NEXT: lw s3, 40(a5) -; RV64I-NEXT: lw s4, 44(a5) -; RV64I-NEXT: sw s0, 68(a5) -; RV64I-NEXT: sw t6, 64(a5) -; RV64I-NEXT: sw t5, 60(a5) -; RV64I-NEXT: sw t4, 56(a5) -; RV64I-NEXT: sw t3, 52(a5) -; RV64I-NEXT: sw t2, 48(a5) -; RV64I-NEXT: sw s4, 44(a5) -; RV64I-NEXT: sw s3, 40(a5) -; RV64I-NEXT: sw s2, 36(a5) -; RV64I-NEXT: sw s1, 32(a5) -; RV64I-NEXT: sw t1, 28(a5) -; RV64I-NEXT: sw t0, 24(a5) -; RV64I-NEXT: sw a7, 20(a5) -; RV64I-NEXT: sw a6, 16(a5) -; RV64I-NEXT: sw a4, %lo(var0+12)(a0) -; RV64I-NEXT: sw a3, %lo(var0+8)(a0) -; RV64I-NEXT: sw a2, %lo(var0+4)(a0) -; RV64I-NEXT: sw a1, %lo(var0)(a0) -; RV64I-NEXT: ld s0, 40(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s1, 32(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s2, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s3, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: ld s4, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: addi a0, a0, %lo(var0) +; RV64I-NEXT: lw a1, 0(a0) +; RV64I-NEXT: lw a2, 4(a0) +; RV64I-NEXT: lw a3, 8(a0) +; RV64I-NEXT: lw a4, 12(a0) +; RV64I-NEXT: lw a5, 16(a0) +; RV64I-NEXT: lw a6, 20(a0) +; RV64I-NEXT: lw a7, 24(a0) +; RV64I-NEXT: lw t0, 28(a0) +; RV64I-NEXT: lw t1, 48(a0) +; RV64I-NEXT: lw t2, 52(a0) +; RV64I-NEXT: lw t3, 56(a0) +; RV64I-NEXT: lw t4, 60(a0) +; RV64I-NEXT: lw t5, 64(a0) +; RV64I-NEXT: lw t6, 68(a0) +; RV64I-NEXT: lw s0, 32(a0) +; RV64I-NEXT: lw s1, 36(a0) +; RV64I-NEXT: lw s2, 40(a0) +; RV64I-NEXT: lw s3, 44(a0) +; RV64I-NEXT: sw t6, 68(a0) +; RV64I-NEXT: sw t5, 64(a0) +; RV64I-NEXT: sw t4, 60(a0) +; RV64I-NEXT: sw t3, 56(a0) +; RV64I-NEXT: sw t2, 52(a0) +; RV64I-NEXT: sw t1, 48(a0) +; RV64I-NEXT: sw s3, 44(a0) +; RV64I-NEXT: sw s2, 40(a0) +; RV64I-NEXT: sw s1, 36(a0) +; RV64I-NEXT: sw s0, 32(a0) +; RV64I-NEXT: sw t0, 28(a0) +; RV64I-NEXT: sw a7, 24(a0) +; RV64I-NEXT: sw a6, 20(a0) +; RV64I-NEXT: sw a5, 16(a0) +; RV64I-NEXT: sw a4, 12(a0) +; RV64I-NEXT: sw a3, 8(a0) +; RV64I-NEXT: sw a2, 4(a0) +; RV64I-NEXT: sw a1, 0(a0) +; RV64I-NEXT: ld s0, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 0(sp) # 8-byte Folded Reload ; RV64I-NEXT: .cfi_restore s0 ; RV64I-NEXT: .cfi_restore s1 ; RV64I-NEXT: .cfi_restore s2 ; RV64I-NEXT: .cfi_restore s3 -; RV64I-NEXT: .cfi_restore s4 -; RV64I-NEXT: addi sp, sp, 48 +; RV64I-NEXT: addi sp, sp, 32 ; RV64I-NEXT: .cfi_def_cfa_offset 0 ; RV64I-NEXT: ret entry: @@ -2299,23 +2271,23 @@ define void @callee_with_irq() "interrupt"="machine" { ; RV32IZCMP-NEXT: .cfi_offset s9, -12 ; RV32IZCMP-NEXT: .cfi_offset s10, -8 ; RV32IZCMP-NEXT: .cfi_offset s11, -4 -; RV32IZCMP-NEXT: addi sp, sp, -48 -; RV32IZCMP-NEXT: .cfi_def_cfa_offset 160 -; RV32IZCMP-NEXT: sw t0, 92(sp) # 4-byte Folded Spill -; RV32IZCMP-NEXT: sw t1, 88(sp) # 4-byte Folded Spill -; RV32IZCMP-NEXT: sw t2, 84(sp) # 4-byte Folded Spill -; RV32IZCMP-NEXT: sw a0, 80(sp) # 4-byte Folded Spill -; RV32IZCMP-NEXT: sw a1, 76(sp) # 4-byte Folded Spill -; RV32IZCMP-NEXT: sw a2, 72(sp) # 4-byte Folded Spill -; RV32IZCMP-NEXT: sw a3, 68(sp) # 4-byte Folded Spill -; RV32IZCMP-NEXT: sw a4, 64(sp) # 4-byte Folded Spill -; RV32IZCMP-NEXT: sw a5, 60(sp) # 4-byte Folded Spill -; RV32IZCMP-NEXT: sw a6, 56(sp) # 4-byte Folded Spill -; RV32IZCMP-NEXT: sw a7, 52(sp) # 4-byte Folded Spill -; RV32IZCMP-NEXT: sw t3, 48(sp) # 4-byte Folded Spill -; RV32IZCMP-NEXT: sw t4, 44(sp) # 4-byte Folded Spill -; RV32IZCMP-NEXT: sw t5, 40(sp) # 4-byte Folded Spill -; RV32IZCMP-NEXT: sw t6, 36(sp) # 4-byte Folded Spill +; RV32IZCMP-NEXT: addi sp, sp, -32 +; RV32IZCMP-NEXT: .cfi_def_cfa_offset 144 +; RV32IZCMP-NEXT: sw t0, 76(sp) # 4-byte Folded Spill +; RV32IZCMP-NEXT: sw t1, 72(sp) # 4-byte Folded Spill +; RV32IZCMP-NEXT: sw t2, 68(sp) # 4-byte Folded Spill +; RV32IZCMP-NEXT: sw a0, 64(sp) # 4-byte Folded Spill +; RV32IZCMP-NEXT: sw a1, 60(sp) # 4-byte Folded Spill +; RV32IZCMP-NEXT: sw a2, 56(sp) # 4-byte Folded Spill +; RV32IZCMP-NEXT: sw a3, 52(sp) # 4-byte Folded Spill +; RV32IZCMP-NEXT: sw a4, 48(sp) # 4-byte Folded Spill +; RV32IZCMP-NEXT: sw a5, 44(sp) # 4-byte Folded Spill +; RV32IZCMP-NEXT: sw a6, 40(sp) # 4-byte Folded Spill +; RV32IZCMP-NEXT: sw a7, 36(sp) # 4-byte Folded Spill +; RV32IZCMP-NEXT: sw t3, 32(sp) # 4-byte Folded Spill +; RV32IZCMP-NEXT: sw t4, 28(sp) # 4-byte Folded Spill +; RV32IZCMP-NEXT: sw t5, 24(sp) # 4-byte Folded Spill +; RV32IZCMP-NEXT: sw t6, 20(sp) # 4-byte Folded Spill ; RV32IZCMP-NEXT: .cfi_offset t0, -68 ; RV32IZCMP-NEXT: .cfi_offset t1, -72 ; RV32IZCMP-NEXT: .cfi_offset t2, -76 @@ -2331,99 +2303,97 @@ define void @callee_with_irq() "interrupt"="machine" { ; RV32IZCMP-NEXT: .cfi_offset t4, -116 ; RV32IZCMP-NEXT: .cfi_offset t5, -120 ; RV32IZCMP-NEXT: .cfi_offset t6, -124 -; RV32IZCMP-NEXT: lui t0, %hi(var_test_irq) -; RV32IZCMP-NEXT: lw a0, %lo(var_test_irq)(t0) -; RV32IZCMP-NEXT: sw a0, 32(sp) # 4-byte Folded Spill -; RV32IZCMP-NEXT: lw a0, %lo(var_test_irq+4)(t0) -; RV32IZCMP-NEXT: sw a0, 28(sp) # 4-byte Folded Spill -; RV32IZCMP-NEXT: lw a0, %lo(var_test_irq+8)(t0) -; RV32IZCMP-NEXT: sw a0, 24(sp) # 4-byte Folded Spill -; RV32IZCMP-NEXT: lw a0, %lo(var_test_irq+12)(t0) -; RV32IZCMP-NEXT: sw a0, 20(sp) # 4-byte Folded Spill -; RV32IZCMP-NEXT: addi a5, t0, %lo(var_test_irq) -; RV32IZCMP-NEXT: lw a0, 16(a5) -; RV32IZCMP-NEXT: sw a0, 16(sp) # 4-byte Folded Spill -; RV32IZCMP-NEXT: lw a0, 20(a5) -; RV32IZCMP-NEXT: sw a0, 12(sp) # 4-byte Folded Spill -; RV32IZCMP-NEXT: lw t4, 24(a5) -; RV32IZCMP-NEXT: lw t5, 28(a5) -; RV32IZCMP-NEXT: lw t6, 32(a5) -; RV32IZCMP-NEXT: lw s2, 36(a5) -; RV32IZCMP-NEXT: lw s3, 40(a5) -; RV32IZCMP-NEXT: lw s4, 44(a5) -; RV32IZCMP-NEXT: lw s5, 48(a5) -; RV32IZCMP-NEXT: lw s6, 52(a5) -; RV32IZCMP-NEXT: lw s7, 56(a5) -; RV32IZCMP-NEXT: lw s8, 60(a5) -; RV32IZCMP-NEXT: lw s9, 64(a5) -; RV32IZCMP-NEXT: lw s10, 68(a5) -; RV32IZCMP-NEXT: lw s11, 72(a5) -; RV32IZCMP-NEXT: lw ra, 76(a5) -; RV32IZCMP-NEXT: lw s1, 80(a5) -; RV32IZCMP-NEXT: lw t3, 84(a5) -; RV32IZCMP-NEXT: lw t2, 88(a5) -; RV32IZCMP-NEXT: lw t1, 92(a5) -; RV32IZCMP-NEXT: lw a7, 112(a5) -; RV32IZCMP-NEXT: lw s0, 116(a5) -; RV32IZCMP-NEXT: lw a3, 120(a5) -; RV32IZCMP-NEXT: lw a0, 124(a5) -; RV32IZCMP-NEXT: lw a6, 96(a5) -; RV32IZCMP-NEXT: lw a4, 100(a5) -; RV32IZCMP-NEXT: lw a2, 104(a5) -; RV32IZCMP-NEXT: lw a1, 108(a5) -; RV32IZCMP-NEXT: sw a0, 124(a5) -; RV32IZCMP-NEXT: sw a3, 120(a5) -; RV32IZCMP-NEXT: sw s0, 116(a5) -; RV32IZCMP-NEXT: sw a7, 112(a5) -; RV32IZCMP-NEXT: sw a1, 108(a5) -; RV32IZCMP-NEXT: sw a2, 104(a5) -; RV32IZCMP-NEXT: sw a4, 100(a5) -; RV32IZCMP-NEXT: sw a6, 96(a5) -; RV32IZCMP-NEXT: sw t1, 92(a5) -; RV32IZCMP-NEXT: sw t2, 88(a5) -; RV32IZCMP-NEXT: sw t3, 84(a5) -; RV32IZCMP-NEXT: sw s1, 80(a5) -; RV32IZCMP-NEXT: sw ra, 76(a5) -; RV32IZCMP-NEXT: sw s11, 72(a5) -; RV32IZCMP-NEXT: sw s10, 68(a5) -; RV32IZCMP-NEXT: sw s9, 64(a5) -; RV32IZCMP-NEXT: sw s8, 60(a5) -; RV32IZCMP-NEXT: sw s7, 56(a5) -; RV32IZCMP-NEXT: sw s6, 52(a5) -; RV32IZCMP-NEXT: sw s5, 48(a5) -; RV32IZCMP-NEXT: sw s4, 44(a5) -; RV32IZCMP-NEXT: sw s3, 40(a5) -; RV32IZCMP-NEXT: sw s2, 36(a5) -; RV32IZCMP-NEXT: sw t6, 32(a5) -; RV32IZCMP-NEXT: sw t5, 28(a5) -; RV32IZCMP-NEXT: sw t4, 24(a5) -; RV32IZCMP-NEXT: lw a0, 12(sp) # 4-byte Folded Reload -; RV32IZCMP-NEXT: sw a0, 20(a5) -; RV32IZCMP-NEXT: lw a0, 16(sp) # 4-byte Folded Reload -; RV32IZCMP-NEXT: sw a0, 16(a5) -; RV32IZCMP-NEXT: lw a0, 20(sp) # 4-byte Folded Reload -; RV32IZCMP-NEXT: sw a0, %lo(var_test_irq+12)(t0) -; RV32IZCMP-NEXT: lw a0, 24(sp) # 4-byte Folded Reload -; RV32IZCMP-NEXT: sw a0, %lo(var_test_irq+8)(t0) -; RV32IZCMP-NEXT: lw a0, 28(sp) # 4-byte Folded Reload -; RV32IZCMP-NEXT: sw a0, %lo(var_test_irq+4)(t0) -; RV32IZCMP-NEXT: lw a0, 32(sp) # 4-byte Folded Reload -; RV32IZCMP-NEXT: sw a0, %lo(var_test_irq)(t0) -; RV32IZCMP-NEXT: lw t0, 92(sp) # 4-byte Folded Reload -; RV32IZCMP-NEXT: lw t1, 88(sp) # 4-byte Folded Reload -; RV32IZCMP-NEXT: lw t2, 84(sp) # 4-byte Folded Reload -; RV32IZCMP-NEXT: lw a0, 80(sp) # 4-byte Folded Reload -; RV32IZCMP-NEXT: lw a1, 76(sp) # 4-byte Folded Reload -; RV32IZCMP-NEXT: lw a2, 72(sp) # 4-byte Folded Reload -; RV32IZCMP-NEXT: lw a3, 68(sp) # 4-byte Folded Reload -; RV32IZCMP-NEXT: lw a4, 64(sp) # 4-byte Folded Reload -; RV32IZCMP-NEXT: lw a5, 60(sp) # 4-byte Folded Reload -; RV32IZCMP-NEXT: lw a6, 56(sp) # 4-byte Folded Reload -; RV32IZCMP-NEXT: lw a7, 52(sp) # 4-byte Folded Reload -; RV32IZCMP-NEXT: lw t3, 48(sp) # 4-byte Folded Reload -; RV32IZCMP-NEXT: lw t4, 44(sp) # 4-byte Folded Reload -; RV32IZCMP-NEXT: lw t5, 40(sp) # 4-byte Folded Reload -; RV32IZCMP-NEXT: lw t6, 36(sp) # 4-byte Folded Reload +; RV32IZCMP-NEXT: lui a0, %hi(var_test_irq) +; RV32IZCMP-NEXT: addi a0, a0, %lo(var_test_irq) +; RV32IZCMP-NEXT: lw a1, 0(a0) +; RV32IZCMP-NEXT: sw a1, 16(sp) # 4-byte Folded Spill +; RV32IZCMP-NEXT: lw a1, 4(a0) +; RV32IZCMP-NEXT: sw a1, 12(sp) # 4-byte Folded Spill +; RV32IZCMP-NEXT: lw a1, 8(a0) +; RV32IZCMP-NEXT: sw a1, 8(sp) # 4-byte Folded Spill +; RV32IZCMP-NEXT: lw a1, 12(a0) +; RV32IZCMP-NEXT: sw a1, 4(sp) # 4-byte Folded Spill +; RV32IZCMP-NEXT: lw a1, 16(a0) +; RV32IZCMP-NEXT: sw a1, 0(sp) # 4-byte Folded Spill +; RV32IZCMP-NEXT: lw t3, 20(a0) +; RV32IZCMP-NEXT: lw t4, 24(a0) +; RV32IZCMP-NEXT: lw t5, 28(a0) +; RV32IZCMP-NEXT: lw t6, 32(a0) +; RV32IZCMP-NEXT: lw s2, 36(a0) +; RV32IZCMP-NEXT: lw s3, 40(a0) +; RV32IZCMP-NEXT: lw s4, 44(a0) +; RV32IZCMP-NEXT: lw s5, 48(a0) +; RV32IZCMP-NEXT: lw s6, 52(a0) +; RV32IZCMP-NEXT: lw s7, 56(a0) +; RV32IZCMP-NEXT: lw s8, 60(a0) +; RV32IZCMP-NEXT: lw s9, 64(a0) +; RV32IZCMP-NEXT: lw s10, 68(a0) +; RV32IZCMP-NEXT: lw s11, 72(a0) +; RV32IZCMP-NEXT: lw ra, 76(a0) +; RV32IZCMP-NEXT: lw t2, 80(a0) +; RV32IZCMP-NEXT: lw s0, 84(a0) +; RV32IZCMP-NEXT: lw s1, 88(a0) +; RV32IZCMP-NEXT: lw t1, 92(a0) +; RV32IZCMP-NEXT: lw t0, 112(a0) +; RV32IZCMP-NEXT: lw a5, 116(a0) +; RV32IZCMP-NEXT: lw a3, 120(a0) +; RV32IZCMP-NEXT: lw a1, 124(a0) +; RV32IZCMP-NEXT: lw a7, 96(a0) +; RV32IZCMP-NEXT: lw a6, 100(a0) +; RV32IZCMP-NEXT: lw a4, 104(a0) +; RV32IZCMP-NEXT: lw a2, 108(a0) +; RV32IZCMP-NEXT: sw a1, 124(a0) +; RV32IZCMP-NEXT: sw a3, 120(a0) +; RV32IZCMP-NEXT: sw a5, 116(a0) +; RV32IZCMP-NEXT: sw t0, 112(a0) +; RV32IZCMP-NEXT: sw a2, 108(a0) +; RV32IZCMP-NEXT: sw a4, 104(a0) +; RV32IZCMP-NEXT: sw a6, 100(a0) +; RV32IZCMP-NEXT: sw a7, 96(a0) +; RV32IZCMP-NEXT: sw t1, 92(a0) +; RV32IZCMP-NEXT: sw s1, 88(a0) +; RV32IZCMP-NEXT: sw s0, 84(a0) +; RV32IZCMP-NEXT: sw t2, 80(a0) +; RV32IZCMP-NEXT: sw ra, 76(a0) +; RV32IZCMP-NEXT: sw s11, 72(a0) +; RV32IZCMP-NEXT: sw s10, 68(a0) +; RV32IZCMP-NEXT: sw s9, 64(a0) +; RV32IZCMP-NEXT: sw s8, 60(a0) +; RV32IZCMP-NEXT: sw s7, 56(a0) +; RV32IZCMP-NEXT: sw s6, 52(a0) +; RV32IZCMP-NEXT: sw s5, 48(a0) +; RV32IZCMP-NEXT: sw s4, 44(a0) +; RV32IZCMP-NEXT: sw s3, 40(a0) +; RV32IZCMP-NEXT: sw s2, 36(a0) +; RV32IZCMP-NEXT: sw t6, 32(a0) +; RV32IZCMP-NEXT: sw t5, 28(a0) +; RV32IZCMP-NEXT: sw t4, 24(a0) +; RV32IZCMP-NEXT: sw t3, 20(a0) +; RV32IZCMP-NEXT: lw a1, 0(sp) # 4-byte Folded Reload +; RV32IZCMP-NEXT: sw a1, 16(a0) +; RV32IZCMP-NEXT: lw a1, 4(sp) # 4-byte Folded Reload +; RV32IZCMP-NEXT: sw a1, 12(a0) +; RV32IZCMP-NEXT: lw a1, 8(sp) # 4-byte Folded Reload +; RV32IZCMP-NEXT: sw a1, 8(a0) +; RV32IZCMP-NEXT: lw a1, 12(sp) # 4-byte Folded Reload +; RV32IZCMP-NEXT: sw a1, 4(a0) +; RV32IZCMP-NEXT: lw a1, 16(sp) # 4-byte Folded Reload +; RV32IZCMP-NEXT: sw a1, 0(a0) +; RV32IZCMP-NEXT: lw t0, 76(sp) # 4-byte Folded Reload +; RV32IZCMP-NEXT: lw t1, 72(sp) # 4-byte Folded Reload +; RV32IZCMP-NEXT: lw t2, 68(sp) # 4-byte Folded Reload +; RV32IZCMP-NEXT: lw a0, 64(sp) # 4-byte Folded Reload +; RV32IZCMP-NEXT: lw a1, 60(sp) # 4-byte Folded Reload +; RV32IZCMP-NEXT: lw a2, 56(sp) # 4-byte Folded Reload +; RV32IZCMP-NEXT: lw a3, 52(sp) # 4-byte Folded Reload +; RV32IZCMP-NEXT: lw a4, 48(sp) # 4-byte Folded Reload +; RV32IZCMP-NEXT: lw a5, 44(sp) # 4-byte Folded Reload +; RV32IZCMP-NEXT: lw a6, 40(sp) # 4-byte Folded Reload +; RV32IZCMP-NEXT: lw a7, 36(sp) # 4-byte Folded Reload +; RV32IZCMP-NEXT: lw t3, 32(sp) # 4-byte Folded Reload +; RV32IZCMP-NEXT: lw t4, 28(sp) # 4-byte Folded Reload +; RV32IZCMP-NEXT: lw t5, 24(sp) # 4-byte Folded Reload +; RV32IZCMP-NEXT: lw t6, 20(sp) # 4-byte Folded Reload ; RV32IZCMP-NEXT: .cfi_restore t0 ; RV32IZCMP-NEXT: .cfi_restore t1 ; RV32IZCMP-NEXT: .cfi_restore t2 @@ -2439,7 +2409,7 @@ define void @callee_with_irq() "interrupt"="machine" { ; RV32IZCMP-NEXT: .cfi_restore t4 ; RV32IZCMP-NEXT: .cfi_restore t5 ; RV32IZCMP-NEXT: .cfi_restore t6 -; RV32IZCMP-NEXT: addi sp, sp, 48 +; RV32IZCMP-NEXT: addi sp, sp, 32 ; RV32IZCMP-NEXT: .cfi_def_cfa_offset 112 ; RV32IZCMP-NEXT: cm.pop {ra, s0-s11}, 112 ; RV32IZCMP-NEXT: .cfi_restore ra @@ -2475,23 +2445,23 @@ define void @callee_with_irq() "interrupt"="machine" { ; RV64IZCMP-NEXT: .cfi_offset s9, -24 ; RV64IZCMP-NEXT: .cfi_offset s10, -16 ; RV64IZCMP-NEXT: .cfi_offset s11, -8 -; RV64IZCMP-NEXT: addi sp, sp, -128 -; RV64IZCMP-NEXT: .cfi_def_cfa_offset 288 -; RV64IZCMP-NEXT: sd t0, 168(sp) # 8-byte Folded Spill -; RV64IZCMP-NEXT: sd t1, 160(sp) # 8-byte Folded Spill -; RV64IZCMP-NEXT: sd t2, 152(sp) # 8-byte Folded Spill -; RV64IZCMP-NEXT: sd a0, 144(sp) # 8-byte Folded Spill -; RV64IZCMP-NEXT: sd a1, 136(sp) # 8-byte Folded Spill -; RV64IZCMP-NEXT: sd a2, 128(sp) # 8-byte Folded Spill -; RV64IZCMP-NEXT: sd a3, 120(sp) # 8-byte Folded Spill -; RV64IZCMP-NEXT: sd a4, 112(sp) # 8-byte Folded Spill -; RV64IZCMP-NEXT: sd a5, 104(sp) # 8-byte Folded Spill -; RV64IZCMP-NEXT: sd a6, 96(sp) # 8-byte Folded Spill -; RV64IZCMP-NEXT: sd a7, 88(sp) # 8-byte Folded Spill -; RV64IZCMP-NEXT: sd t3, 80(sp) # 8-byte Folded Spill -; RV64IZCMP-NEXT: sd t4, 72(sp) # 8-byte Folded Spill -; RV64IZCMP-NEXT: sd t5, 64(sp) # 8-byte Folded Spill -; RV64IZCMP-NEXT: sd t6, 56(sp) # 8-byte Folded Spill +; RV64IZCMP-NEXT: addi sp, sp, -112 +; RV64IZCMP-NEXT: .cfi_def_cfa_offset 272 +; RV64IZCMP-NEXT: sd t0, 152(sp) # 8-byte Folded Spill +; RV64IZCMP-NEXT: sd t1, 144(sp) # 8-byte Folded Spill +; RV64IZCMP-NEXT: sd t2, 136(sp) # 8-byte Folded Spill +; RV64IZCMP-NEXT: sd a0, 128(sp) # 8-byte Folded Spill +; RV64IZCMP-NEXT: sd a1, 120(sp) # 8-byte Folded Spill +; RV64IZCMP-NEXT: sd a2, 112(sp) # 8-byte Folded Spill +; RV64IZCMP-NEXT: sd a3, 104(sp) # 8-byte Folded Spill +; RV64IZCMP-NEXT: sd a4, 96(sp) # 8-byte Folded Spill +; RV64IZCMP-NEXT: sd a5, 88(sp) # 8-byte Folded Spill +; RV64IZCMP-NEXT: sd a6, 80(sp) # 8-byte Folded Spill +; RV64IZCMP-NEXT: sd a7, 72(sp) # 8-byte Folded Spill +; RV64IZCMP-NEXT: sd t3, 64(sp) # 8-byte Folded Spill +; RV64IZCMP-NEXT: sd t4, 56(sp) # 8-byte Folded Spill +; RV64IZCMP-NEXT: sd t5, 48(sp) # 8-byte Folded Spill +; RV64IZCMP-NEXT: sd t6, 40(sp) # 8-byte Folded Spill ; RV64IZCMP-NEXT: .cfi_offset t0, -120 ; RV64IZCMP-NEXT: .cfi_offset t1, -128 ; RV64IZCMP-NEXT: .cfi_offset t2, -136 @@ -2507,99 +2477,97 @@ define void @callee_with_irq() "interrupt"="machine" { ; RV64IZCMP-NEXT: .cfi_offset t4, -216 ; RV64IZCMP-NEXT: .cfi_offset t5, -224 ; RV64IZCMP-NEXT: .cfi_offset t6, -232 -; RV64IZCMP-NEXT: lui t0, %hi(var_test_irq) -; RV64IZCMP-NEXT: lw a0, %lo(var_test_irq)(t0) -; RV64IZCMP-NEXT: sd a0, 48(sp) # 8-byte Folded Spill -; RV64IZCMP-NEXT: lw a0, %lo(var_test_irq+4)(t0) -; RV64IZCMP-NEXT: sd a0, 40(sp) # 8-byte Folded Spill -; RV64IZCMP-NEXT: lw a0, %lo(var_test_irq+8)(t0) -; RV64IZCMP-NEXT: sd a0, 32(sp) # 8-byte Folded Spill -; RV64IZCMP-NEXT: lw a0, %lo(var_test_irq+12)(t0) -; RV64IZCMP-NEXT: sd a0, 24(sp) # 8-byte Folded Spill -; RV64IZCMP-NEXT: addi a5, t0, %lo(var_test_irq) -; RV64IZCMP-NEXT: lw a0, 16(a5) -; RV64IZCMP-NEXT: sd a0, 16(sp) # 8-byte Folded Spill -; RV64IZCMP-NEXT: lw a0, 20(a5) -; RV64IZCMP-NEXT: sd a0, 8(sp) # 8-byte Folded Spill -; RV64IZCMP-NEXT: lw t4, 24(a5) -; RV64IZCMP-NEXT: lw t5, 28(a5) -; RV64IZCMP-NEXT: lw t6, 32(a5) -; RV64IZCMP-NEXT: lw s2, 36(a5) -; RV64IZCMP-NEXT: lw s3, 40(a5) -; RV64IZCMP-NEXT: lw s4, 44(a5) -; RV64IZCMP-NEXT: lw s5, 48(a5) -; RV64IZCMP-NEXT: lw s6, 52(a5) -; RV64IZCMP-NEXT: lw s7, 56(a5) -; RV64IZCMP-NEXT: lw s8, 60(a5) -; RV64IZCMP-NEXT: lw s9, 64(a5) -; RV64IZCMP-NEXT: lw s10, 68(a5) -; RV64IZCMP-NEXT: lw s11, 72(a5) -; RV64IZCMP-NEXT: lw ra, 76(a5) -; RV64IZCMP-NEXT: lw s1, 80(a5) -; RV64IZCMP-NEXT: lw t3, 84(a5) -; RV64IZCMP-NEXT: lw t2, 88(a5) -; RV64IZCMP-NEXT: lw t1, 92(a5) -; RV64IZCMP-NEXT: lw a7, 112(a5) -; RV64IZCMP-NEXT: lw s0, 116(a5) -; RV64IZCMP-NEXT: lw a3, 120(a5) -; RV64IZCMP-NEXT: lw a0, 124(a5) -; RV64IZCMP-NEXT: lw a6, 96(a5) -; RV64IZCMP-NEXT: lw a4, 100(a5) -; RV64IZCMP-NEXT: lw a2, 104(a5) -; RV64IZCMP-NEXT: lw a1, 108(a5) -; RV64IZCMP-NEXT: sw a0, 124(a5) -; RV64IZCMP-NEXT: sw a3, 120(a5) -; RV64IZCMP-NEXT: sw s0, 116(a5) -; RV64IZCMP-NEXT: sw a7, 112(a5) -; RV64IZCMP-NEXT: sw a1, 108(a5) -; RV64IZCMP-NEXT: sw a2, 104(a5) -; RV64IZCMP-NEXT: sw a4, 100(a5) -; RV64IZCMP-NEXT: sw a6, 96(a5) -; RV64IZCMP-NEXT: sw t1, 92(a5) -; RV64IZCMP-NEXT: sw t2, 88(a5) -; RV64IZCMP-NEXT: sw t3, 84(a5) -; RV64IZCMP-NEXT: sw s1, 80(a5) -; RV64IZCMP-NEXT: sw ra, 76(a5) -; RV64IZCMP-NEXT: sw s11, 72(a5) -; RV64IZCMP-NEXT: sw s10, 68(a5) -; RV64IZCMP-NEXT: sw s9, 64(a5) -; RV64IZCMP-NEXT: sw s8, 60(a5) -; RV64IZCMP-NEXT: sw s7, 56(a5) -; RV64IZCMP-NEXT: sw s6, 52(a5) -; RV64IZCMP-NEXT: sw s5, 48(a5) -; RV64IZCMP-NEXT: sw s4, 44(a5) -; RV64IZCMP-NEXT: sw s3, 40(a5) -; RV64IZCMP-NEXT: sw s2, 36(a5) -; RV64IZCMP-NEXT: sw t6, 32(a5) -; RV64IZCMP-NEXT: sw t5, 28(a5) -; RV64IZCMP-NEXT: sw t4, 24(a5) -; RV64IZCMP-NEXT: ld a0, 8(sp) # 8-byte Folded Reload -; RV64IZCMP-NEXT: sw a0, 20(a5) -; RV64IZCMP-NEXT: ld a0, 16(sp) # 8-byte Folded Reload -; RV64IZCMP-NEXT: sw a0, 16(a5) -; RV64IZCMP-NEXT: ld a0, 24(sp) # 8-byte Folded Reload -; RV64IZCMP-NEXT: sw a0, %lo(var_test_irq+12)(t0) -; RV64IZCMP-NEXT: ld a0, 32(sp) # 8-byte Folded Reload -; RV64IZCMP-NEXT: sw a0, %lo(var_test_irq+8)(t0) -; RV64IZCMP-NEXT: ld a0, 40(sp) # 8-byte Folded Reload -; RV64IZCMP-NEXT: sw a0, %lo(var_test_irq+4)(t0) -; RV64IZCMP-NEXT: ld a0, 48(sp) # 8-byte Folded Reload -; RV64IZCMP-NEXT: sw a0, %lo(var_test_irq)(t0) -; RV64IZCMP-NEXT: ld t0, 168(sp) # 8-byte Folded Reload -; RV64IZCMP-NEXT: ld t1, 160(sp) # 8-byte Folded Reload -; RV64IZCMP-NEXT: ld t2, 152(sp) # 8-byte Folded Reload -; RV64IZCMP-NEXT: ld a0, 144(sp) # 8-byte Folded Reload -; RV64IZCMP-NEXT: ld a1, 136(sp) # 8-byte Folded Reload -; RV64IZCMP-NEXT: ld a2, 128(sp) # 8-byte Folded Reload -; RV64IZCMP-NEXT: ld a3, 120(sp) # 8-byte Folded Reload -; RV64IZCMP-NEXT: ld a4, 112(sp) # 8-byte Folded Reload -; RV64IZCMP-NEXT: ld a5, 104(sp) # 8-byte Folded Reload -; RV64IZCMP-NEXT: ld a6, 96(sp) # 8-byte Folded Reload -; RV64IZCMP-NEXT: ld a7, 88(sp) # 8-byte Folded Reload -; RV64IZCMP-NEXT: ld t3, 80(sp) # 8-byte Folded Reload -; RV64IZCMP-NEXT: ld t4, 72(sp) # 8-byte Folded Reload -; RV64IZCMP-NEXT: ld t5, 64(sp) # 8-byte Folded Reload -; RV64IZCMP-NEXT: ld t6, 56(sp) # 8-byte Folded Reload +; RV64IZCMP-NEXT: lui a0, %hi(var_test_irq) +; RV64IZCMP-NEXT: addi a0, a0, %lo(var_test_irq) +; RV64IZCMP-NEXT: lw a1, 0(a0) +; RV64IZCMP-NEXT: sd a1, 32(sp) # 8-byte Folded Spill +; RV64IZCMP-NEXT: lw a1, 4(a0) +; RV64IZCMP-NEXT: sd a1, 24(sp) # 8-byte Folded Spill +; RV64IZCMP-NEXT: lw a1, 8(a0) +; RV64IZCMP-NEXT: sd a1, 16(sp) # 8-byte Folded Spill +; RV64IZCMP-NEXT: lw a1, 12(a0) +; RV64IZCMP-NEXT: sd a1, 8(sp) # 8-byte Folded Spill +; RV64IZCMP-NEXT: lw a1, 16(a0) +; RV64IZCMP-NEXT: sd a1, 0(sp) # 8-byte Folded Spill +; RV64IZCMP-NEXT: lw t3, 20(a0) +; RV64IZCMP-NEXT: lw t4, 24(a0) +; RV64IZCMP-NEXT: lw t5, 28(a0) +; RV64IZCMP-NEXT: lw t6, 32(a0) +; RV64IZCMP-NEXT: lw s2, 36(a0) +; RV64IZCMP-NEXT: lw s3, 40(a0) +; RV64IZCMP-NEXT: lw s4, 44(a0) +; RV64IZCMP-NEXT: lw s5, 48(a0) +; RV64IZCMP-NEXT: lw s6, 52(a0) +; RV64IZCMP-NEXT: lw s7, 56(a0) +; RV64IZCMP-NEXT: lw s8, 60(a0) +; RV64IZCMP-NEXT: lw s9, 64(a0) +; RV64IZCMP-NEXT: lw s10, 68(a0) +; RV64IZCMP-NEXT: lw s11, 72(a0) +; RV64IZCMP-NEXT: lw ra, 76(a0) +; RV64IZCMP-NEXT: lw t2, 80(a0) +; RV64IZCMP-NEXT: lw s0, 84(a0) +; RV64IZCMP-NEXT: lw s1, 88(a0) +; RV64IZCMP-NEXT: lw t1, 92(a0) +; RV64IZCMP-NEXT: lw t0, 112(a0) +; RV64IZCMP-NEXT: lw a5, 116(a0) +; RV64IZCMP-NEXT: lw a3, 120(a0) +; RV64IZCMP-NEXT: lw a1, 124(a0) +; RV64IZCMP-NEXT: lw a7, 96(a0) +; RV64IZCMP-NEXT: lw a6, 100(a0) +; RV64IZCMP-NEXT: lw a4, 104(a0) +; RV64IZCMP-NEXT: lw a2, 108(a0) +; RV64IZCMP-NEXT: sw a1, 124(a0) +; RV64IZCMP-NEXT: sw a3, 120(a0) +; RV64IZCMP-NEXT: sw a5, 116(a0) +; RV64IZCMP-NEXT: sw t0, 112(a0) +; RV64IZCMP-NEXT: sw a2, 108(a0) +; RV64IZCMP-NEXT: sw a4, 104(a0) +; RV64IZCMP-NEXT: sw a6, 100(a0) +; RV64IZCMP-NEXT: sw a7, 96(a0) +; RV64IZCMP-NEXT: sw t1, 92(a0) +; RV64IZCMP-NEXT: sw s1, 88(a0) +; RV64IZCMP-NEXT: sw s0, 84(a0) +; RV64IZCMP-NEXT: sw t2, 80(a0) +; RV64IZCMP-NEXT: sw ra, 76(a0) +; RV64IZCMP-NEXT: sw s11, 72(a0) +; RV64IZCMP-NEXT: sw s10, 68(a0) +; RV64IZCMP-NEXT: sw s9, 64(a0) +; RV64IZCMP-NEXT: sw s8, 60(a0) +; RV64IZCMP-NEXT: sw s7, 56(a0) +; RV64IZCMP-NEXT: sw s6, 52(a0) +; RV64IZCMP-NEXT: sw s5, 48(a0) +; RV64IZCMP-NEXT: sw s4, 44(a0) +; RV64IZCMP-NEXT: sw s3, 40(a0) +; RV64IZCMP-NEXT: sw s2, 36(a0) +; RV64IZCMP-NEXT: sw t6, 32(a0) +; RV64IZCMP-NEXT: sw t5, 28(a0) +; RV64IZCMP-NEXT: sw t4, 24(a0) +; RV64IZCMP-NEXT: sw t3, 20(a0) +; RV64IZCMP-NEXT: ld a1, 0(sp) # 8-byte Folded Reload +; RV64IZCMP-NEXT: sw a1, 16(a0) +; RV64IZCMP-NEXT: ld a1, 8(sp) # 8-byte Folded Reload +; RV64IZCMP-NEXT: sw a1, 12(a0) +; RV64IZCMP-NEXT: ld a1, 16(sp) # 8-byte Folded Reload +; RV64IZCMP-NEXT: sw a1, 8(a0) +; RV64IZCMP-NEXT: ld a1, 24(sp) # 8-byte Folded Reload +; RV64IZCMP-NEXT: sw a1, 4(a0) +; RV64IZCMP-NEXT: ld a1, 32(sp) # 8-byte Folded Reload +; RV64IZCMP-NEXT: sw a1, 0(a0) +; RV64IZCMP-NEXT: ld t0, 152(sp) # 8-byte Folded Reload +; RV64IZCMP-NEXT: ld t1, 144(sp) # 8-byte Folded Reload +; RV64IZCMP-NEXT: ld t2, 136(sp) # 8-byte Folded Reload +; RV64IZCMP-NEXT: ld a0, 128(sp) # 8-byte Folded Reload +; RV64IZCMP-NEXT: ld a1, 120(sp) # 8-byte Folded Reload +; RV64IZCMP-NEXT: ld a2, 112(sp) # 8-byte Folded Reload +; RV64IZCMP-NEXT: ld a3, 104(sp) # 8-byte Folded Reload +; RV64IZCMP-NEXT: ld a4, 96(sp) # 8-byte Folded Reload +; RV64IZCMP-NEXT: ld a5, 88(sp) # 8-byte Folded Reload +; RV64IZCMP-NEXT: ld a6, 80(sp) # 8-byte Folded Reload +; RV64IZCMP-NEXT: ld a7, 72(sp) # 8-byte Folded Reload +; RV64IZCMP-NEXT: ld t3, 64(sp) # 8-byte Folded Reload +; RV64IZCMP-NEXT: ld t4, 56(sp) # 8-byte Folded Reload +; RV64IZCMP-NEXT: ld t5, 48(sp) # 8-byte Folded Reload +; RV64IZCMP-NEXT: ld t6, 40(sp) # 8-byte Folded Reload ; RV64IZCMP-NEXT: .cfi_restore t0 ; RV64IZCMP-NEXT: .cfi_restore t1 ; RV64IZCMP-NEXT: .cfi_restore t2 @@ -2615,7 +2583,7 @@ define void @callee_with_irq() "interrupt"="machine" { ; RV64IZCMP-NEXT: .cfi_restore t4 ; RV64IZCMP-NEXT: .cfi_restore t5 ; RV64IZCMP-NEXT: .cfi_restore t6 -; RV64IZCMP-NEXT: addi sp, sp, 128 +; RV64IZCMP-NEXT: addi sp, sp, 112 ; RV64IZCMP-NEXT: .cfi_def_cfa_offset 160 ; RV64IZCMP-NEXT: cm.pop {ra, s0-s11}, 160 ; RV64IZCMP-NEXT: .cfi_restore ra @@ -2651,23 +2619,23 @@ define void @callee_with_irq() "interrupt"="machine" { ; RV32IZCMP-SR-NEXT: .cfi_offset s9, -12 ; RV32IZCMP-SR-NEXT: .cfi_offset s10, -8 ; RV32IZCMP-SR-NEXT: .cfi_offset s11, -4 -; RV32IZCMP-SR-NEXT: addi sp, sp, -48 -; RV32IZCMP-SR-NEXT: .cfi_def_cfa_offset 160 -; RV32IZCMP-SR-NEXT: sw t0, 92(sp) # 4-byte Folded Spill -; RV32IZCMP-SR-NEXT: sw t1, 88(sp) # 4-byte Folded Spill -; RV32IZCMP-SR-NEXT: sw t2, 84(sp) # 4-byte Folded Spill -; RV32IZCMP-SR-NEXT: sw a0, 80(sp) # 4-byte Folded Spill -; RV32IZCMP-SR-NEXT: sw a1, 76(sp) # 4-byte Folded Spill -; RV32IZCMP-SR-NEXT: sw a2, 72(sp) # 4-byte Folded Spill -; RV32IZCMP-SR-NEXT: sw a3, 68(sp) # 4-byte Folded Spill -; RV32IZCMP-SR-NEXT: sw a4, 64(sp) # 4-byte Folded Spill -; RV32IZCMP-SR-NEXT: sw a5, 60(sp) # 4-byte Folded Spill -; RV32IZCMP-SR-NEXT: sw a6, 56(sp) # 4-byte Folded Spill -; RV32IZCMP-SR-NEXT: sw a7, 52(sp) # 4-byte Folded Spill -; RV32IZCMP-SR-NEXT: sw t3, 48(sp) # 4-byte Folded Spill -; RV32IZCMP-SR-NEXT: sw t4, 44(sp) # 4-byte Folded Spill -; RV32IZCMP-SR-NEXT: sw t5, 40(sp) # 4-byte Folded Spill -; RV32IZCMP-SR-NEXT: sw t6, 36(sp) # 4-byte Folded Spill +; RV32IZCMP-SR-NEXT: addi sp, sp, -32 +; RV32IZCMP-SR-NEXT: .cfi_def_cfa_offset 144 +; RV32IZCMP-SR-NEXT: sw t0, 76(sp) # 4-byte Folded Spill +; RV32IZCMP-SR-NEXT: sw t1, 72(sp) # 4-byte Folded Spill +; RV32IZCMP-SR-NEXT: sw t2, 68(sp) # 4-byte Folded Spill +; RV32IZCMP-SR-NEXT: sw a0, 64(sp) # 4-byte Folded Spill +; RV32IZCMP-SR-NEXT: sw a1, 60(sp) # 4-byte Folded Spill +; RV32IZCMP-SR-NEXT: sw a2, 56(sp) # 4-byte Folded Spill +; RV32IZCMP-SR-NEXT: sw a3, 52(sp) # 4-byte Folded Spill +; RV32IZCMP-SR-NEXT: sw a4, 48(sp) # 4-byte Folded Spill +; RV32IZCMP-SR-NEXT: sw a5, 44(sp) # 4-byte Folded Spill +; RV32IZCMP-SR-NEXT: sw a6, 40(sp) # 4-byte Folded Spill +; RV32IZCMP-SR-NEXT: sw a7, 36(sp) # 4-byte Folded Spill +; RV32IZCMP-SR-NEXT: sw t3, 32(sp) # 4-byte Folded Spill +; RV32IZCMP-SR-NEXT: sw t4, 28(sp) # 4-byte Folded Spill +; RV32IZCMP-SR-NEXT: sw t5, 24(sp) # 4-byte Folded Spill +; RV32IZCMP-SR-NEXT: sw t6, 20(sp) # 4-byte Folded Spill ; RV32IZCMP-SR-NEXT: .cfi_offset t0, -68 ; RV32IZCMP-SR-NEXT: .cfi_offset t1, -72 ; RV32IZCMP-SR-NEXT: .cfi_offset t2, -76 @@ -2683,99 +2651,97 @@ define void @callee_with_irq() "interrupt"="machine" { ; RV32IZCMP-SR-NEXT: .cfi_offset t4, -116 ; RV32IZCMP-SR-NEXT: .cfi_offset t5, -120 ; RV32IZCMP-SR-NEXT: .cfi_offset t6, -124 -; RV32IZCMP-SR-NEXT: lui t0, %hi(var_test_irq) -; RV32IZCMP-SR-NEXT: lw a0, %lo(var_test_irq)(t0) -; RV32IZCMP-SR-NEXT: sw a0, 32(sp) # 4-byte Folded Spill -; RV32IZCMP-SR-NEXT: lw a0, %lo(var_test_irq+4)(t0) -; RV32IZCMP-SR-NEXT: sw a0, 28(sp) # 4-byte Folded Spill -; RV32IZCMP-SR-NEXT: lw a0, %lo(var_test_irq+8)(t0) -; RV32IZCMP-SR-NEXT: sw a0, 24(sp) # 4-byte Folded Spill -; RV32IZCMP-SR-NEXT: lw a0, %lo(var_test_irq+12)(t0) -; RV32IZCMP-SR-NEXT: sw a0, 20(sp) # 4-byte Folded Spill -; RV32IZCMP-SR-NEXT: addi a5, t0, %lo(var_test_irq) -; RV32IZCMP-SR-NEXT: lw a0, 16(a5) -; RV32IZCMP-SR-NEXT: sw a0, 16(sp) # 4-byte Folded Spill -; RV32IZCMP-SR-NEXT: lw a0, 20(a5) -; RV32IZCMP-SR-NEXT: sw a0, 12(sp) # 4-byte Folded Spill -; RV32IZCMP-SR-NEXT: lw t4, 24(a5) -; RV32IZCMP-SR-NEXT: lw t5, 28(a5) -; RV32IZCMP-SR-NEXT: lw t6, 32(a5) -; RV32IZCMP-SR-NEXT: lw s2, 36(a5) -; RV32IZCMP-SR-NEXT: lw s3, 40(a5) -; RV32IZCMP-SR-NEXT: lw s4, 44(a5) -; RV32IZCMP-SR-NEXT: lw s5, 48(a5) -; RV32IZCMP-SR-NEXT: lw s6, 52(a5) -; RV32IZCMP-SR-NEXT: lw s7, 56(a5) -; RV32IZCMP-SR-NEXT: lw s8, 60(a5) -; RV32IZCMP-SR-NEXT: lw s9, 64(a5) -; RV32IZCMP-SR-NEXT: lw s10, 68(a5) -; RV32IZCMP-SR-NEXT: lw s11, 72(a5) -; RV32IZCMP-SR-NEXT: lw ra, 76(a5) -; RV32IZCMP-SR-NEXT: lw s1, 80(a5) -; RV32IZCMP-SR-NEXT: lw t3, 84(a5) -; RV32IZCMP-SR-NEXT: lw t2, 88(a5) -; RV32IZCMP-SR-NEXT: lw t1, 92(a5) -; RV32IZCMP-SR-NEXT: lw a7, 112(a5) -; RV32IZCMP-SR-NEXT: lw s0, 116(a5) -; RV32IZCMP-SR-NEXT: lw a3, 120(a5) -; RV32IZCMP-SR-NEXT: lw a0, 124(a5) -; RV32IZCMP-SR-NEXT: lw a6, 96(a5) -; RV32IZCMP-SR-NEXT: lw a4, 100(a5) -; RV32IZCMP-SR-NEXT: lw a2, 104(a5) -; RV32IZCMP-SR-NEXT: lw a1, 108(a5) -; RV32IZCMP-SR-NEXT: sw a0, 124(a5) -; RV32IZCMP-SR-NEXT: sw a3, 120(a5) -; RV32IZCMP-SR-NEXT: sw s0, 116(a5) -; RV32IZCMP-SR-NEXT: sw a7, 112(a5) -; RV32IZCMP-SR-NEXT: sw a1, 108(a5) -; RV32IZCMP-SR-NEXT: sw a2, 104(a5) -; RV32IZCMP-SR-NEXT: sw a4, 100(a5) -; RV32IZCMP-SR-NEXT: sw a6, 96(a5) -; RV32IZCMP-SR-NEXT: sw t1, 92(a5) -; RV32IZCMP-SR-NEXT: sw t2, 88(a5) -; RV32IZCMP-SR-NEXT: sw t3, 84(a5) -; RV32IZCMP-SR-NEXT: sw s1, 80(a5) -; RV32IZCMP-SR-NEXT: sw ra, 76(a5) -; RV32IZCMP-SR-NEXT: sw s11, 72(a5) -; RV32IZCMP-SR-NEXT: sw s10, 68(a5) -; RV32IZCMP-SR-NEXT: sw s9, 64(a5) -; RV32IZCMP-SR-NEXT: sw s8, 60(a5) -; RV32IZCMP-SR-NEXT: sw s7, 56(a5) -; RV32IZCMP-SR-NEXT: sw s6, 52(a5) -; RV32IZCMP-SR-NEXT: sw s5, 48(a5) -; RV32IZCMP-SR-NEXT: sw s4, 44(a5) -; RV32IZCMP-SR-NEXT: sw s3, 40(a5) -; RV32IZCMP-SR-NEXT: sw s2, 36(a5) -; RV32IZCMP-SR-NEXT: sw t6, 32(a5) -; RV32IZCMP-SR-NEXT: sw t5, 28(a5) -; RV32IZCMP-SR-NEXT: sw t4, 24(a5) -; RV32IZCMP-SR-NEXT: lw a0, 12(sp) # 4-byte Folded Reload -; RV32IZCMP-SR-NEXT: sw a0, 20(a5) -; RV32IZCMP-SR-NEXT: lw a0, 16(sp) # 4-byte Folded Reload -; RV32IZCMP-SR-NEXT: sw a0, 16(a5) -; RV32IZCMP-SR-NEXT: lw a0, 20(sp) # 4-byte Folded Reload -; RV32IZCMP-SR-NEXT: sw a0, %lo(var_test_irq+12)(t0) -; RV32IZCMP-SR-NEXT: lw a0, 24(sp) # 4-byte Folded Reload -; RV32IZCMP-SR-NEXT: sw a0, %lo(var_test_irq+8)(t0) -; RV32IZCMP-SR-NEXT: lw a0, 28(sp) # 4-byte Folded Reload -; RV32IZCMP-SR-NEXT: sw a0, %lo(var_test_irq+4)(t0) -; RV32IZCMP-SR-NEXT: lw a0, 32(sp) # 4-byte Folded Reload -; RV32IZCMP-SR-NEXT: sw a0, %lo(var_test_irq)(t0) -; RV32IZCMP-SR-NEXT: lw t0, 92(sp) # 4-byte Folded Reload -; RV32IZCMP-SR-NEXT: lw t1, 88(sp) # 4-byte Folded Reload -; RV32IZCMP-SR-NEXT: lw t2, 84(sp) # 4-byte Folded Reload -; RV32IZCMP-SR-NEXT: lw a0, 80(sp) # 4-byte Folded Reload -; RV32IZCMP-SR-NEXT: lw a1, 76(sp) # 4-byte Folded Reload -; RV32IZCMP-SR-NEXT: lw a2, 72(sp) # 4-byte Folded Reload -; RV32IZCMP-SR-NEXT: lw a3, 68(sp) # 4-byte Folded Reload -; RV32IZCMP-SR-NEXT: lw a4, 64(sp) # 4-byte Folded Reload -; RV32IZCMP-SR-NEXT: lw a5, 60(sp) # 4-byte Folded Reload -; RV32IZCMP-SR-NEXT: lw a6, 56(sp) # 4-byte Folded Reload -; RV32IZCMP-SR-NEXT: lw a7, 52(sp) # 4-byte Folded Reload -; RV32IZCMP-SR-NEXT: lw t3, 48(sp) # 4-byte Folded Reload -; RV32IZCMP-SR-NEXT: lw t4, 44(sp) # 4-byte Folded Reload -; RV32IZCMP-SR-NEXT: lw t5, 40(sp) # 4-byte Folded Reload -; RV32IZCMP-SR-NEXT: lw t6, 36(sp) # 4-byte Folded Reload +; RV32IZCMP-SR-NEXT: lui a0, %hi(var_test_irq) +; RV32IZCMP-SR-NEXT: addi a0, a0, %lo(var_test_irq) +; RV32IZCMP-SR-NEXT: lw a1, 0(a0) +; RV32IZCMP-SR-NEXT: sw a1, 16(sp) # 4-byte Folded Spill +; RV32IZCMP-SR-NEXT: lw a1, 4(a0) +; RV32IZCMP-SR-NEXT: sw a1, 12(sp) # 4-byte Folded Spill +; RV32IZCMP-SR-NEXT: lw a1, 8(a0) +; RV32IZCMP-SR-NEXT: sw a1, 8(sp) # 4-byte Folded Spill +; RV32IZCMP-SR-NEXT: lw a1, 12(a0) +; RV32IZCMP-SR-NEXT: sw a1, 4(sp) # 4-byte Folded Spill +; RV32IZCMP-SR-NEXT: lw a1, 16(a0) +; RV32IZCMP-SR-NEXT: sw a1, 0(sp) # 4-byte Folded Spill +; RV32IZCMP-SR-NEXT: lw t3, 20(a0) +; RV32IZCMP-SR-NEXT: lw t4, 24(a0) +; RV32IZCMP-SR-NEXT: lw t5, 28(a0) +; RV32IZCMP-SR-NEXT: lw t6, 32(a0) +; RV32IZCMP-SR-NEXT: lw s2, 36(a0) +; RV32IZCMP-SR-NEXT: lw s3, 40(a0) +; RV32IZCMP-SR-NEXT: lw s4, 44(a0) +; RV32IZCMP-SR-NEXT: lw s5, 48(a0) +; RV32IZCMP-SR-NEXT: lw s6, 52(a0) +; RV32IZCMP-SR-NEXT: lw s7, 56(a0) +; RV32IZCMP-SR-NEXT: lw s8, 60(a0) +; RV32IZCMP-SR-NEXT: lw s9, 64(a0) +; RV32IZCMP-SR-NEXT: lw s10, 68(a0) +; RV32IZCMP-SR-NEXT: lw s11, 72(a0) +; RV32IZCMP-SR-NEXT: lw ra, 76(a0) +; RV32IZCMP-SR-NEXT: lw t2, 80(a0) +; RV32IZCMP-SR-NEXT: lw s0, 84(a0) +; RV32IZCMP-SR-NEXT: lw s1, 88(a0) +; RV32IZCMP-SR-NEXT: lw t1, 92(a0) +; RV32IZCMP-SR-NEXT: lw t0, 112(a0) +; RV32IZCMP-SR-NEXT: lw a5, 116(a0) +; RV32IZCMP-SR-NEXT: lw a3, 120(a0) +; RV32IZCMP-SR-NEXT: lw a1, 124(a0) +; RV32IZCMP-SR-NEXT: lw a7, 96(a0) +; RV32IZCMP-SR-NEXT: lw a6, 100(a0) +; RV32IZCMP-SR-NEXT: lw a4, 104(a0) +; RV32IZCMP-SR-NEXT: lw a2, 108(a0) +; RV32IZCMP-SR-NEXT: sw a1, 124(a0) +; RV32IZCMP-SR-NEXT: sw a3, 120(a0) +; RV32IZCMP-SR-NEXT: sw a5, 116(a0) +; RV32IZCMP-SR-NEXT: sw t0, 112(a0) +; RV32IZCMP-SR-NEXT: sw a2, 108(a0) +; RV32IZCMP-SR-NEXT: sw a4, 104(a0) +; RV32IZCMP-SR-NEXT: sw a6, 100(a0) +; RV32IZCMP-SR-NEXT: sw a7, 96(a0) +; RV32IZCMP-SR-NEXT: sw t1, 92(a0) +; RV32IZCMP-SR-NEXT: sw s1, 88(a0) +; RV32IZCMP-SR-NEXT: sw s0, 84(a0) +; RV32IZCMP-SR-NEXT: sw t2, 80(a0) +; RV32IZCMP-SR-NEXT: sw ra, 76(a0) +; RV32IZCMP-SR-NEXT: sw s11, 72(a0) +; RV32IZCMP-SR-NEXT: sw s10, 68(a0) +; RV32IZCMP-SR-NEXT: sw s9, 64(a0) +; RV32IZCMP-SR-NEXT: sw s8, 60(a0) +; RV32IZCMP-SR-NEXT: sw s7, 56(a0) +; RV32IZCMP-SR-NEXT: sw s6, 52(a0) +; RV32IZCMP-SR-NEXT: sw s5, 48(a0) +; RV32IZCMP-SR-NEXT: sw s4, 44(a0) +; RV32IZCMP-SR-NEXT: sw s3, 40(a0) +; RV32IZCMP-SR-NEXT: sw s2, 36(a0) +; RV32IZCMP-SR-NEXT: sw t6, 32(a0) +; RV32IZCMP-SR-NEXT: sw t5, 28(a0) +; RV32IZCMP-SR-NEXT: sw t4, 24(a0) +; RV32IZCMP-SR-NEXT: sw t3, 20(a0) +; RV32IZCMP-SR-NEXT: lw a1, 0(sp) # 4-byte Folded Reload +; RV32IZCMP-SR-NEXT: sw a1, 16(a0) +; RV32IZCMP-SR-NEXT: lw a1, 4(sp) # 4-byte Folded Reload +; RV32IZCMP-SR-NEXT: sw a1, 12(a0) +; RV32IZCMP-SR-NEXT: lw a1, 8(sp) # 4-byte Folded Reload +; RV32IZCMP-SR-NEXT: sw a1, 8(a0) +; RV32IZCMP-SR-NEXT: lw a1, 12(sp) # 4-byte Folded Reload +; RV32IZCMP-SR-NEXT: sw a1, 4(a0) +; RV32IZCMP-SR-NEXT: lw a1, 16(sp) # 4-byte Folded Reload +; RV32IZCMP-SR-NEXT: sw a1, 0(a0) +; RV32IZCMP-SR-NEXT: lw t0, 76(sp) # 4-byte Folded Reload +; RV32IZCMP-SR-NEXT: lw t1, 72(sp) # 4-byte Folded Reload +; RV32IZCMP-SR-NEXT: lw t2, 68(sp) # 4-byte Folded Reload +; RV32IZCMP-SR-NEXT: lw a0, 64(sp) # 4-byte Folded Reload +; RV32IZCMP-SR-NEXT: lw a1, 60(sp) # 4-byte Folded Reload +; RV32IZCMP-SR-NEXT: lw a2, 56(sp) # 4-byte Folded Reload +; RV32IZCMP-SR-NEXT: lw a3, 52(sp) # 4-byte Folded Reload +; RV32IZCMP-SR-NEXT: lw a4, 48(sp) # 4-byte Folded Reload +; RV32IZCMP-SR-NEXT: lw a5, 44(sp) # 4-byte Folded Reload +; RV32IZCMP-SR-NEXT: lw a6, 40(sp) # 4-byte Folded Reload +; RV32IZCMP-SR-NEXT: lw a7, 36(sp) # 4-byte Folded Reload +; RV32IZCMP-SR-NEXT: lw t3, 32(sp) # 4-byte Folded Reload +; RV32IZCMP-SR-NEXT: lw t4, 28(sp) # 4-byte Folded Reload +; RV32IZCMP-SR-NEXT: lw t5, 24(sp) # 4-byte Folded Reload +; RV32IZCMP-SR-NEXT: lw t6, 20(sp) # 4-byte Folded Reload ; RV32IZCMP-SR-NEXT: .cfi_restore t0 ; RV32IZCMP-SR-NEXT: .cfi_restore t1 ; RV32IZCMP-SR-NEXT: .cfi_restore t2 @@ -2791,7 +2757,7 @@ define void @callee_with_irq() "interrupt"="machine" { ; RV32IZCMP-SR-NEXT: .cfi_restore t4 ; RV32IZCMP-SR-NEXT: .cfi_restore t5 ; RV32IZCMP-SR-NEXT: .cfi_restore t6 -; RV32IZCMP-SR-NEXT: addi sp, sp, 48 +; RV32IZCMP-SR-NEXT: addi sp, sp, 32 ; RV32IZCMP-SR-NEXT: .cfi_def_cfa_offset 112 ; RV32IZCMP-SR-NEXT: cm.pop {ra, s0-s11}, 112 ; RV32IZCMP-SR-NEXT: .cfi_restore ra @@ -2827,23 +2793,23 @@ define void @callee_with_irq() "interrupt"="machine" { ; RV64IZCMP-SR-NEXT: .cfi_offset s9, -24 ; RV64IZCMP-SR-NEXT: .cfi_offset s10, -16 ; RV64IZCMP-SR-NEXT: .cfi_offset s11, -8 -; RV64IZCMP-SR-NEXT: addi sp, sp, -128 -; RV64IZCMP-SR-NEXT: .cfi_def_cfa_offset 288 -; RV64IZCMP-SR-NEXT: sd t0, 168(sp) # 8-byte Folded Spill -; RV64IZCMP-SR-NEXT: sd t1, 160(sp) # 8-byte Folded Spill -; RV64IZCMP-SR-NEXT: sd t2, 152(sp) # 8-byte Folded Spill -; RV64IZCMP-SR-NEXT: sd a0, 144(sp) # 8-byte Folded Spill -; RV64IZCMP-SR-NEXT: sd a1, 136(sp) # 8-byte Folded Spill -; RV64IZCMP-SR-NEXT: sd a2, 128(sp) # 8-byte Folded Spill -; RV64IZCMP-SR-NEXT: sd a3, 120(sp) # 8-byte Folded Spill -; RV64IZCMP-SR-NEXT: sd a4, 112(sp) # 8-byte Folded Spill -; RV64IZCMP-SR-NEXT: sd a5, 104(sp) # 8-byte Folded Spill -; RV64IZCMP-SR-NEXT: sd a6, 96(sp) # 8-byte Folded Spill -; RV64IZCMP-SR-NEXT: sd a7, 88(sp) # 8-byte Folded Spill -; RV64IZCMP-SR-NEXT: sd t3, 80(sp) # 8-byte Folded Spill -; RV64IZCMP-SR-NEXT: sd t4, 72(sp) # 8-byte Folded Spill -; RV64IZCMP-SR-NEXT: sd t5, 64(sp) # 8-byte Folded Spill -; RV64IZCMP-SR-NEXT: sd t6, 56(sp) # 8-byte Folded Spill +; RV64IZCMP-SR-NEXT: addi sp, sp, -112 +; RV64IZCMP-SR-NEXT: .cfi_def_cfa_offset 272 +; RV64IZCMP-SR-NEXT: sd t0, 152(sp) # 8-byte Folded Spill +; RV64IZCMP-SR-NEXT: sd t1, 144(sp) # 8-byte Folded Spill +; RV64IZCMP-SR-NEXT: sd t2, 136(sp) # 8-byte Folded Spill +; RV64IZCMP-SR-NEXT: sd a0, 128(sp) # 8-byte Folded Spill +; RV64IZCMP-SR-NEXT: sd a1, 120(sp) # 8-byte Folded Spill +; RV64IZCMP-SR-NEXT: sd a2, 112(sp) # 8-byte Folded Spill +; RV64IZCMP-SR-NEXT: sd a3, 104(sp) # 8-byte Folded Spill +; RV64IZCMP-SR-NEXT: sd a4, 96(sp) # 8-byte Folded Spill +; RV64IZCMP-SR-NEXT: sd a5, 88(sp) # 8-byte Folded Spill +; RV64IZCMP-SR-NEXT: sd a6, 80(sp) # 8-byte Folded Spill +; RV64IZCMP-SR-NEXT: sd a7, 72(sp) # 8-byte Folded Spill +; RV64IZCMP-SR-NEXT: sd t3, 64(sp) # 8-byte Folded Spill +; RV64IZCMP-SR-NEXT: sd t4, 56(sp) # 8-byte Folded Spill +; RV64IZCMP-SR-NEXT: sd t5, 48(sp) # 8-byte Folded Spill +; RV64IZCMP-SR-NEXT: sd t6, 40(sp) # 8-byte Folded Spill ; RV64IZCMP-SR-NEXT: .cfi_offset t0, -120 ; RV64IZCMP-SR-NEXT: .cfi_offset t1, -128 ; RV64IZCMP-SR-NEXT: .cfi_offset t2, -136 @@ -2859,99 +2825,97 @@ define void @callee_with_irq() "interrupt"="machine" { ; RV64IZCMP-SR-NEXT: .cfi_offset t4, -216 ; RV64IZCMP-SR-NEXT: .cfi_offset t5, -224 ; RV64IZCMP-SR-NEXT: .cfi_offset t6, -232 -; RV64IZCMP-SR-NEXT: lui t0, %hi(var_test_irq) -; RV64IZCMP-SR-NEXT: lw a0, %lo(var_test_irq)(t0) -; RV64IZCMP-SR-NEXT: sd a0, 48(sp) # 8-byte Folded Spill -; RV64IZCMP-SR-NEXT: lw a0, %lo(var_test_irq+4)(t0) -; RV64IZCMP-SR-NEXT: sd a0, 40(sp) # 8-byte Folded Spill -; RV64IZCMP-SR-NEXT: lw a0, %lo(var_test_irq+8)(t0) -; RV64IZCMP-SR-NEXT: sd a0, 32(sp) # 8-byte Folded Spill -; RV64IZCMP-SR-NEXT: lw a0, %lo(var_test_irq+12)(t0) -; RV64IZCMP-SR-NEXT: sd a0, 24(sp) # 8-byte Folded Spill -; RV64IZCMP-SR-NEXT: addi a5, t0, %lo(var_test_irq) -; RV64IZCMP-SR-NEXT: lw a0, 16(a5) -; RV64IZCMP-SR-NEXT: sd a0, 16(sp) # 8-byte Folded Spill -; RV64IZCMP-SR-NEXT: lw a0, 20(a5) -; RV64IZCMP-SR-NEXT: sd a0, 8(sp) # 8-byte Folded Spill -; RV64IZCMP-SR-NEXT: lw t4, 24(a5) -; RV64IZCMP-SR-NEXT: lw t5, 28(a5) -; RV64IZCMP-SR-NEXT: lw t6, 32(a5) -; RV64IZCMP-SR-NEXT: lw s2, 36(a5) -; RV64IZCMP-SR-NEXT: lw s3, 40(a5) -; RV64IZCMP-SR-NEXT: lw s4, 44(a5) -; RV64IZCMP-SR-NEXT: lw s5, 48(a5) -; RV64IZCMP-SR-NEXT: lw s6, 52(a5) -; RV64IZCMP-SR-NEXT: lw s7, 56(a5) -; RV64IZCMP-SR-NEXT: lw s8, 60(a5) -; RV64IZCMP-SR-NEXT: lw s9, 64(a5) -; RV64IZCMP-SR-NEXT: lw s10, 68(a5) -; RV64IZCMP-SR-NEXT: lw s11, 72(a5) -; RV64IZCMP-SR-NEXT: lw ra, 76(a5) -; RV64IZCMP-SR-NEXT: lw s1, 80(a5) -; RV64IZCMP-SR-NEXT: lw t3, 84(a5) -; RV64IZCMP-SR-NEXT: lw t2, 88(a5) -; RV64IZCMP-SR-NEXT: lw t1, 92(a5) -; RV64IZCMP-SR-NEXT: lw a7, 112(a5) -; RV64IZCMP-SR-NEXT: lw s0, 116(a5) -; RV64IZCMP-SR-NEXT: lw a3, 120(a5) -; RV64IZCMP-SR-NEXT: lw a0, 124(a5) -; RV64IZCMP-SR-NEXT: lw a6, 96(a5) -; RV64IZCMP-SR-NEXT: lw a4, 100(a5) -; RV64IZCMP-SR-NEXT: lw a2, 104(a5) -; RV64IZCMP-SR-NEXT: lw a1, 108(a5) -; RV64IZCMP-SR-NEXT: sw a0, 124(a5) -; RV64IZCMP-SR-NEXT: sw a3, 120(a5) -; RV64IZCMP-SR-NEXT: sw s0, 116(a5) -; RV64IZCMP-SR-NEXT: sw a7, 112(a5) -; RV64IZCMP-SR-NEXT: sw a1, 108(a5) -; RV64IZCMP-SR-NEXT: sw a2, 104(a5) -; RV64IZCMP-SR-NEXT: sw a4, 100(a5) -; RV64IZCMP-SR-NEXT: sw a6, 96(a5) -; RV64IZCMP-SR-NEXT: sw t1, 92(a5) -; RV64IZCMP-SR-NEXT: sw t2, 88(a5) -; RV64IZCMP-SR-NEXT: sw t3, 84(a5) -; RV64IZCMP-SR-NEXT: sw s1, 80(a5) -; RV64IZCMP-SR-NEXT: sw ra, 76(a5) -; RV64IZCMP-SR-NEXT: sw s11, 72(a5) -; RV64IZCMP-SR-NEXT: sw s10, 68(a5) -; RV64IZCMP-SR-NEXT: sw s9, 64(a5) -; RV64IZCMP-SR-NEXT: sw s8, 60(a5) -; RV64IZCMP-SR-NEXT: sw s7, 56(a5) -; RV64IZCMP-SR-NEXT: sw s6, 52(a5) -; RV64IZCMP-SR-NEXT: sw s5, 48(a5) -; RV64IZCMP-SR-NEXT: sw s4, 44(a5) -; RV64IZCMP-SR-NEXT: sw s3, 40(a5) -; RV64IZCMP-SR-NEXT: sw s2, 36(a5) -; RV64IZCMP-SR-NEXT: sw t6, 32(a5) -; RV64IZCMP-SR-NEXT: sw t5, 28(a5) -; RV64IZCMP-SR-NEXT: sw t4, 24(a5) -; RV64IZCMP-SR-NEXT: ld a0, 8(sp) # 8-byte Folded Reload -; RV64IZCMP-SR-NEXT: sw a0, 20(a5) -; RV64IZCMP-SR-NEXT: ld a0, 16(sp) # 8-byte Folded Reload -; RV64IZCMP-SR-NEXT: sw a0, 16(a5) -; RV64IZCMP-SR-NEXT: ld a0, 24(sp) # 8-byte Folded Reload -; RV64IZCMP-SR-NEXT: sw a0, %lo(var_test_irq+12)(t0) -; RV64IZCMP-SR-NEXT: ld a0, 32(sp) # 8-byte Folded Reload -; RV64IZCMP-SR-NEXT: sw a0, %lo(var_test_irq+8)(t0) -; RV64IZCMP-SR-NEXT: ld a0, 40(sp) # 8-byte Folded Reload -; RV64IZCMP-SR-NEXT: sw a0, %lo(var_test_irq+4)(t0) -; RV64IZCMP-SR-NEXT: ld a0, 48(sp) # 8-byte Folded Reload -; RV64IZCMP-SR-NEXT: sw a0, %lo(var_test_irq)(t0) -; RV64IZCMP-SR-NEXT: ld t0, 168(sp) # 8-byte Folded Reload -; RV64IZCMP-SR-NEXT: ld t1, 160(sp) # 8-byte Folded Reload -; RV64IZCMP-SR-NEXT: ld t2, 152(sp) # 8-byte Folded Reload -; RV64IZCMP-SR-NEXT: ld a0, 144(sp) # 8-byte Folded Reload -; RV64IZCMP-SR-NEXT: ld a1, 136(sp) # 8-byte Folded Reload -; RV64IZCMP-SR-NEXT: ld a2, 128(sp) # 8-byte Folded Reload -; RV64IZCMP-SR-NEXT: ld a3, 120(sp) # 8-byte Folded Reload -; RV64IZCMP-SR-NEXT: ld a4, 112(sp) # 8-byte Folded Reload -; RV64IZCMP-SR-NEXT: ld a5, 104(sp) # 8-byte Folded Reload -; RV64IZCMP-SR-NEXT: ld a6, 96(sp) # 8-byte Folded Reload -; RV64IZCMP-SR-NEXT: ld a7, 88(sp) # 8-byte Folded Reload -; RV64IZCMP-SR-NEXT: ld t3, 80(sp) # 8-byte Folded Reload -; RV64IZCMP-SR-NEXT: ld t4, 72(sp) # 8-byte Folded Reload -; RV64IZCMP-SR-NEXT: ld t5, 64(sp) # 8-byte Folded Reload -; RV64IZCMP-SR-NEXT: ld t6, 56(sp) # 8-byte Folded Reload +; RV64IZCMP-SR-NEXT: lui a0, %hi(var_test_irq) +; RV64IZCMP-SR-NEXT: addi a0, a0, %lo(var_test_irq) +; RV64IZCMP-SR-NEXT: lw a1, 0(a0) +; RV64IZCMP-SR-NEXT: sd a1, 32(sp) # 8-byte Folded Spill +; RV64IZCMP-SR-NEXT: lw a1, 4(a0) +; RV64IZCMP-SR-NEXT: sd a1, 24(sp) # 8-byte Folded Spill +; RV64IZCMP-SR-NEXT: lw a1, 8(a0) +; RV64IZCMP-SR-NEXT: sd a1, 16(sp) # 8-byte Folded Spill +; RV64IZCMP-SR-NEXT: lw a1, 12(a0) +; RV64IZCMP-SR-NEXT: sd a1, 8(sp) # 8-byte Folded Spill +; RV64IZCMP-SR-NEXT: lw a1, 16(a0) +; RV64IZCMP-SR-NEXT: sd a1, 0(sp) # 8-byte Folded Spill +; RV64IZCMP-SR-NEXT: lw t3, 20(a0) +; RV64IZCMP-SR-NEXT: lw t4, 24(a0) +; RV64IZCMP-SR-NEXT: lw t5, 28(a0) +; RV64IZCMP-SR-NEXT: lw t6, 32(a0) +; RV64IZCMP-SR-NEXT: lw s2, 36(a0) +; RV64IZCMP-SR-NEXT: lw s3, 40(a0) +; RV64IZCMP-SR-NEXT: lw s4, 44(a0) +; RV64IZCMP-SR-NEXT: lw s5, 48(a0) +; RV64IZCMP-SR-NEXT: lw s6, 52(a0) +; RV64IZCMP-SR-NEXT: lw s7, 56(a0) +; RV64IZCMP-SR-NEXT: lw s8, 60(a0) +; RV64IZCMP-SR-NEXT: lw s9, 64(a0) +; RV64IZCMP-SR-NEXT: lw s10, 68(a0) +; RV64IZCMP-SR-NEXT: lw s11, 72(a0) +; RV64IZCMP-SR-NEXT: lw ra, 76(a0) +; RV64IZCMP-SR-NEXT: lw t2, 80(a0) +; RV64IZCMP-SR-NEXT: lw s0, 84(a0) +; RV64IZCMP-SR-NEXT: lw s1, 88(a0) +; RV64IZCMP-SR-NEXT: lw t1, 92(a0) +; RV64IZCMP-SR-NEXT: lw t0, 112(a0) +; RV64IZCMP-SR-NEXT: lw a5, 116(a0) +; RV64IZCMP-SR-NEXT: lw a3, 120(a0) +; RV64IZCMP-SR-NEXT: lw a1, 124(a0) +; RV64IZCMP-SR-NEXT: lw a7, 96(a0) +; RV64IZCMP-SR-NEXT: lw a6, 100(a0) +; RV64IZCMP-SR-NEXT: lw a4, 104(a0) +; RV64IZCMP-SR-NEXT: lw a2, 108(a0) +; RV64IZCMP-SR-NEXT: sw a1, 124(a0) +; RV64IZCMP-SR-NEXT: sw a3, 120(a0) +; RV64IZCMP-SR-NEXT: sw a5, 116(a0) +; RV64IZCMP-SR-NEXT: sw t0, 112(a0) +; RV64IZCMP-SR-NEXT: sw a2, 108(a0) +; RV64IZCMP-SR-NEXT: sw a4, 104(a0) +; RV64IZCMP-SR-NEXT: sw a6, 100(a0) +; RV64IZCMP-SR-NEXT: sw a7, 96(a0) +; RV64IZCMP-SR-NEXT: sw t1, 92(a0) +; RV64IZCMP-SR-NEXT: sw s1, 88(a0) +; RV64IZCMP-SR-NEXT: sw s0, 84(a0) +; RV64IZCMP-SR-NEXT: sw t2, 80(a0) +; RV64IZCMP-SR-NEXT: sw ra, 76(a0) +; RV64IZCMP-SR-NEXT: sw s11, 72(a0) +; RV64IZCMP-SR-NEXT: sw s10, 68(a0) +; RV64IZCMP-SR-NEXT: sw s9, 64(a0) +; RV64IZCMP-SR-NEXT: sw s8, 60(a0) +; RV64IZCMP-SR-NEXT: sw s7, 56(a0) +; RV64IZCMP-SR-NEXT: sw s6, 52(a0) +; RV64IZCMP-SR-NEXT: sw s5, 48(a0) +; RV64IZCMP-SR-NEXT: sw s4, 44(a0) +; RV64IZCMP-SR-NEXT: sw s3, 40(a0) +; RV64IZCMP-SR-NEXT: sw s2, 36(a0) +; RV64IZCMP-SR-NEXT: sw t6, 32(a0) +; RV64IZCMP-SR-NEXT: sw t5, 28(a0) +; RV64IZCMP-SR-NEXT: sw t4, 24(a0) +; RV64IZCMP-SR-NEXT: sw t3, 20(a0) +; RV64IZCMP-SR-NEXT: ld a1, 0(sp) # 8-byte Folded Reload +; RV64IZCMP-SR-NEXT: sw a1, 16(a0) +; RV64IZCMP-SR-NEXT: ld a1, 8(sp) # 8-byte Folded Reload +; RV64IZCMP-SR-NEXT: sw a1, 12(a0) +; RV64IZCMP-SR-NEXT: ld a1, 16(sp) # 8-byte Folded Reload +; RV64IZCMP-SR-NEXT: sw a1, 8(a0) +; RV64IZCMP-SR-NEXT: ld a1, 24(sp) # 8-byte Folded Reload +; RV64IZCMP-SR-NEXT: sw a1, 4(a0) +; RV64IZCMP-SR-NEXT: ld a1, 32(sp) # 8-byte Folded Reload +; RV64IZCMP-SR-NEXT: sw a1, 0(a0) +; RV64IZCMP-SR-NEXT: ld t0, 152(sp) # 8-byte Folded Reload +; RV64IZCMP-SR-NEXT: ld t1, 144(sp) # 8-byte Folded Reload +; RV64IZCMP-SR-NEXT: ld t2, 136(sp) # 8-byte Folded Reload +; RV64IZCMP-SR-NEXT: ld a0, 128(sp) # 8-byte Folded Reload +; RV64IZCMP-SR-NEXT: ld a1, 120(sp) # 8-byte Folded Reload +; RV64IZCMP-SR-NEXT: ld a2, 112(sp) # 8-byte Folded Reload +; RV64IZCMP-SR-NEXT: ld a3, 104(sp) # 8-byte Folded Reload +; RV64IZCMP-SR-NEXT: ld a4, 96(sp) # 8-byte Folded Reload +; RV64IZCMP-SR-NEXT: ld a5, 88(sp) # 8-byte Folded Reload +; RV64IZCMP-SR-NEXT: ld a6, 80(sp) # 8-byte Folded Reload +; RV64IZCMP-SR-NEXT: ld a7, 72(sp) # 8-byte Folded Reload +; RV64IZCMP-SR-NEXT: ld t3, 64(sp) # 8-byte Folded Reload +; RV64IZCMP-SR-NEXT: ld t4, 56(sp) # 8-byte Folded Reload +; RV64IZCMP-SR-NEXT: ld t5, 48(sp) # 8-byte Folded Reload +; RV64IZCMP-SR-NEXT: ld t6, 40(sp) # 8-byte Folded Reload ; RV64IZCMP-SR-NEXT: .cfi_restore t0 ; RV64IZCMP-SR-NEXT: .cfi_restore t1 ; RV64IZCMP-SR-NEXT: .cfi_restore t2 @@ -2967,7 +2931,7 @@ define void @callee_with_irq() "interrupt"="machine" { ; RV64IZCMP-SR-NEXT: .cfi_restore t4 ; RV64IZCMP-SR-NEXT: .cfi_restore t5 ; RV64IZCMP-SR-NEXT: .cfi_restore t6 -; RV64IZCMP-SR-NEXT: addi sp, sp, 128 +; RV64IZCMP-SR-NEXT: addi sp, sp, 112 ; RV64IZCMP-SR-NEXT: .cfi_def_cfa_offset 160 ; RV64IZCMP-SR-NEXT: cm.pop {ra, s0-s11}, 160 ; RV64IZCMP-SR-NEXT: .cfi_restore ra @@ -3046,84 +3010,82 @@ define void @callee_with_irq() "interrupt"="machine" { ; RV32I-NEXT: .cfi_offset t4, -104 ; RV32I-NEXT: .cfi_offset t5, -108 ; RV32I-NEXT: .cfi_offset t6, -112 -; RV32I-NEXT: lui a7, %hi(var_test_irq) -; RV32I-NEXT: lw a0, %lo(var_test_irq)(a7) -; RV32I-NEXT: sw a0, 28(sp) # 4-byte Folded Spill -; RV32I-NEXT: lw a0, %lo(var_test_irq+4)(a7) -; RV32I-NEXT: sw a0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: lw a0, %lo(var_test_irq+8)(a7) -; RV32I-NEXT: sw a0, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: lw a0, %lo(var_test_irq+12)(a7) -; RV32I-NEXT: sw a0, 16(sp) # 4-byte Folded Spill -; RV32I-NEXT: addi a5, a7, %lo(var_test_irq) -; RV32I-NEXT: lw a0, 16(a5) -; RV32I-NEXT: sw a0, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: lw a0, 20(a5) -; RV32I-NEXT: sw a0, 8(sp) # 4-byte Folded Spill -; RV32I-NEXT: lw t0, 24(a5) -; RV32I-NEXT: lw t1, 28(a5) -; RV32I-NEXT: lw t2, 32(a5) -; RV32I-NEXT: lw t3, 36(a5) -; RV32I-NEXT: lw t4, 40(a5) -; RV32I-NEXT: lw t5, 44(a5) -; RV32I-NEXT: lw t6, 48(a5) -; RV32I-NEXT: lw s0, 52(a5) -; RV32I-NEXT: lw s1, 56(a5) -; RV32I-NEXT: lw s2, 60(a5) -; RV32I-NEXT: lw s3, 64(a5) -; RV32I-NEXT: lw s4, 68(a5) -; RV32I-NEXT: lw s5, 72(a5) -; RV32I-NEXT: lw s6, 76(a5) -; RV32I-NEXT: lw s7, 80(a5) -; RV32I-NEXT: lw s8, 84(a5) -; RV32I-NEXT: lw s9, 88(a5) -; RV32I-NEXT: lw s10, 92(a5) -; RV32I-NEXT: lw s11, 112(a5) -; RV32I-NEXT: lw ra, 116(a5) -; RV32I-NEXT: lw a3, 120(a5) -; RV32I-NEXT: lw a0, 124(a5) -; RV32I-NEXT: lw a6, 96(a5) -; RV32I-NEXT: lw a4, 100(a5) -; RV32I-NEXT: lw a2, 104(a5) -; RV32I-NEXT: lw a1, 108(a5) -; RV32I-NEXT: sw a0, 124(a5) -; RV32I-NEXT: sw a3, 120(a5) -; RV32I-NEXT: sw ra, 116(a5) -; RV32I-NEXT: sw s11, 112(a5) -; RV32I-NEXT: sw a1, 108(a5) -; RV32I-NEXT: sw a2, 104(a5) -; RV32I-NEXT: sw a4, 100(a5) -; RV32I-NEXT: sw a6, 96(a5) -; RV32I-NEXT: sw s10, 92(a5) -; RV32I-NEXT: sw s9, 88(a5) -; RV32I-NEXT: sw s8, 84(a5) -; RV32I-NEXT: sw s7, 80(a5) -; RV32I-NEXT: sw s6, 76(a5) -; RV32I-NEXT: sw s5, 72(a5) -; RV32I-NEXT: sw s4, 68(a5) -; RV32I-NEXT: sw s3, 64(a5) -; RV32I-NEXT: sw s2, 60(a5) -; RV32I-NEXT: sw s1, 56(a5) -; RV32I-NEXT: sw s0, 52(a5) -; RV32I-NEXT: sw t6, 48(a5) -; RV32I-NEXT: sw t5, 44(a5) -; RV32I-NEXT: sw t4, 40(a5) -; RV32I-NEXT: sw t3, 36(a5) -; RV32I-NEXT: sw t2, 32(a5) -; RV32I-NEXT: sw t1, 28(a5) -; RV32I-NEXT: sw t0, 24(a5) -; RV32I-NEXT: lw a0, 8(sp) # 4-byte Folded Reload -; RV32I-NEXT: sw a0, 20(a5) -; RV32I-NEXT: lw a0, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: sw a0, 16(a5) -; RV32I-NEXT: lw a0, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: sw a0, %lo(var_test_irq+12)(a7) -; RV32I-NEXT: lw a0, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: sw a0, %lo(var_test_irq+8)(a7) -; RV32I-NEXT: lw a0, 24(sp) # 4-byte Folded Reload -; RV32I-NEXT: sw a0, %lo(var_test_irq+4)(a7) -; RV32I-NEXT: lw a0, 28(sp) # 4-byte Folded Reload -; RV32I-NEXT: sw a0, %lo(var_test_irq)(a7) +; RV32I-NEXT: lui a0, %hi(var_test_irq) +; RV32I-NEXT: addi a0, a0, %lo(var_test_irq) +; RV32I-NEXT: lw a1, 0(a0) +; RV32I-NEXT: sw a1, 28(sp) # 4-byte Folded Spill +; RV32I-NEXT: lw a1, 4(a0) +; RV32I-NEXT: sw a1, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: lw a1, 8(a0) +; RV32I-NEXT: sw a1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: lw a1, 12(a0) +; RV32I-NEXT: sw a1, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: lw a1, 16(a0) +; RV32I-NEXT: sw a1, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: lw a6, 20(a0) +; RV32I-NEXT: lw a7, 24(a0) +; RV32I-NEXT: lw t0, 28(a0) +; RV32I-NEXT: lw t1, 32(a0) +; RV32I-NEXT: lw t2, 36(a0) +; RV32I-NEXT: lw t3, 40(a0) +; RV32I-NEXT: lw t4, 44(a0) +; RV32I-NEXT: lw t5, 48(a0) +; RV32I-NEXT: lw t6, 52(a0) +; RV32I-NEXT: lw s0, 56(a0) +; RV32I-NEXT: lw s1, 60(a0) +; RV32I-NEXT: lw s2, 64(a0) +; RV32I-NEXT: lw s3, 68(a0) +; RV32I-NEXT: lw s4, 72(a0) +; RV32I-NEXT: lw s5, 76(a0) +; RV32I-NEXT: lw s6, 80(a0) +; RV32I-NEXT: lw s7, 84(a0) +; RV32I-NEXT: lw s8, 88(a0) +; RV32I-NEXT: lw s9, 92(a0) +; RV32I-NEXT: lw s10, 112(a0) +; RV32I-NEXT: lw s11, 116(a0) +; RV32I-NEXT: lw ra, 120(a0) +; RV32I-NEXT: lw a1, 124(a0) +; RV32I-NEXT: lw a5, 96(a0) +; RV32I-NEXT: lw a4, 100(a0) +; RV32I-NEXT: lw a3, 104(a0) +; RV32I-NEXT: lw a2, 108(a0) +; RV32I-NEXT: sw a1, 124(a0) +; RV32I-NEXT: sw ra, 120(a0) +; RV32I-NEXT: sw s11, 116(a0) +; RV32I-NEXT: sw s10, 112(a0) +; RV32I-NEXT: sw a2, 108(a0) +; RV32I-NEXT: sw a3, 104(a0) +; RV32I-NEXT: sw a4, 100(a0) +; RV32I-NEXT: sw a5, 96(a0) +; RV32I-NEXT: sw s9, 92(a0) +; RV32I-NEXT: sw s8, 88(a0) +; RV32I-NEXT: sw s7, 84(a0) +; RV32I-NEXT: sw s6, 80(a0) +; RV32I-NEXT: sw s5, 76(a0) +; RV32I-NEXT: sw s4, 72(a0) +; RV32I-NEXT: sw s3, 68(a0) +; RV32I-NEXT: sw s2, 64(a0) +; RV32I-NEXT: sw s1, 60(a0) +; RV32I-NEXT: sw s0, 56(a0) +; RV32I-NEXT: sw t6, 52(a0) +; RV32I-NEXT: sw t5, 48(a0) +; RV32I-NEXT: sw t4, 44(a0) +; RV32I-NEXT: sw t3, 40(a0) +; RV32I-NEXT: sw t2, 36(a0) +; RV32I-NEXT: sw t1, 32(a0) +; RV32I-NEXT: sw t0, 28(a0) +; RV32I-NEXT: sw a7, 24(a0) +; RV32I-NEXT: sw a6, 20(a0) +; RV32I-NEXT: lw a1, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: sw a1, 16(a0) +; RV32I-NEXT: lw a1, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: sw a1, 12(a0) +; RV32I-NEXT: lw a1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: sw a1, 8(a0) +; RV32I-NEXT: lw a1, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: sw a1, 4(a0) +; RV32I-NEXT: lw a1, 28(sp) # 4-byte Folded Reload +; RV32I-NEXT: sw a1, 0(a0) ; RV32I-NEXT: lw ra, 140(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw t0, 136(sp) # 4-byte Folded Reload ; RV32I-NEXT: lw t1, 132(sp) # 4-byte Folded Reload @@ -3244,84 +3206,82 @@ define void @callee_with_irq() "interrupt"="machine" { ; RV64I-NEXT: .cfi_offset t4, -208 ; RV64I-NEXT: .cfi_offset t5, -216 ; RV64I-NEXT: .cfi_offset t6, -224 -; RV64I-NEXT: lui a7, %hi(var_test_irq) -; RV64I-NEXT: lw a0, %lo(var_test_irq)(a7) -; RV64I-NEXT: sd a0, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: lw a0, %lo(var_test_irq+4)(a7) -; RV64I-NEXT: sd a0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: lw a0, %lo(var_test_irq+8)(a7) -; RV64I-NEXT: sd a0, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: lw a0, %lo(var_test_irq+12)(a7) -; RV64I-NEXT: sd a0, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: addi a5, a7, %lo(var_test_irq) -; RV64I-NEXT: lw a0, 16(a5) -; RV64I-NEXT: sd a0, 8(sp) # 8-byte Folded Spill -; RV64I-NEXT: lw a0, 20(a5) -; RV64I-NEXT: sd a0, 0(sp) # 8-byte Folded Spill -; RV64I-NEXT: lw t0, 24(a5) -; RV64I-NEXT: lw t1, 28(a5) -; RV64I-NEXT: lw t2, 32(a5) -; RV64I-NEXT: lw t3, 36(a5) -; RV64I-NEXT: lw t4, 40(a5) -; RV64I-NEXT: lw t5, 44(a5) -; RV64I-NEXT: lw t6, 48(a5) -; RV64I-NEXT: lw s0, 52(a5) -; RV64I-NEXT: lw s1, 56(a5) -; RV64I-NEXT: lw s2, 60(a5) -; RV64I-NEXT: lw s3, 64(a5) -; RV64I-NEXT: lw s4, 68(a5) -; RV64I-NEXT: lw s5, 72(a5) -; RV64I-NEXT: lw s6, 76(a5) -; RV64I-NEXT: lw s7, 80(a5) -; RV64I-NEXT: lw s8, 84(a5) -; RV64I-NEXT: lw s9, 88(a5) -; RV64I-NEXT: lw s10, 92(a5) -; RV64I-NEXT: lw s11, 112(a5) -; RV64I-NEXT: lw ra, 116(a5) -; RV64I-NEXT: lw a3, 120(a5) -; RV64I-NEXT: lw a0, 124(a5) -; RV64I-NEXT: lw a6, 96(a5) -; RV64I-NEXT: lw a4, 100(a5) -; RV64I-NEXT: lw a2, 104(a5) -; RV64I-NEXT: lw a1, 108(a5) -; RV64I-NEXT: sw a0, 124(a5) -; RV64I-NEXT: sw a3, 120(a5) -; RV64I-NEXT: sw ra, 116(a5) -; RV64I-NEXT: sw s11, 112(a5) -; RV64I-NEXT: sw a1, 108(a5) -; RV64I-NEXT: sw a2, 104(a5) -; RV64I-NEXT: sw a4, 100(a5) -; RV64I-NEXT: sw a6, 96(a5) -; RV64I-NEXT: sw s10, 92(a5) -; RV64I-NEXT: sw s9, 88(a5) -; RV64I-NEXT: sw s8, 84(a5) -; RV64I-NEXT: sw s7, 80(a5) -; RV64I-NEXT: sw s6, 76(a5) -; RV64I-NEXT: sw s5, 72(a5) -; RV64I-NEXT: sw s4, 68(a5) -; RV64I-NEXT: sw s3, 64(a5) -; RV64I-NEXT: sw s2, 60(a5) -; RV64I-NEXT: sw s1, 56(a5) -; RV64I-NEXT: sw s0, 52(a5) -; RV64I-NEXT: sw t6, 48(a5) -; RV64I-NEXT: sw t5, 44(a5) -; RV64I-NEXT: sw t4, 40(a5) -; RV64I-NEXT: sw t3, 36(a5) -; RV64I-NEXT: sw t2, 32(a5) -; RV64I-NEXT: sw t1, 28(a5) -; RV64I-NEXT: sw t0, 24(a5) -; RV64I-NEXT: ld a0, 0(sp) # 8-byte Folded Reload -; RV64I-NEXT: sw a0, 20(a5) -; RV64I-NEXT: ld a0, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: sw a0, 16(a5) -; RV64I-NEXT: ld a0, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: sw a0, %lo(var_test_irq+12)(a7) -; RV64I-NEXT: ld a0, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: sw a0, %lo(var_test_irq+8)(a7) -; RV64I-NEXT: ld a0, 32(sp) # 8-byte Folded Reload -; RV64I-NEXT: sw a0, %lo(var_test_irq+4)(a7) -; RV64I-NEXT: ld a0, 40(sp) # 8-byte Folded Reload -; RV64I-NEXT: sw a0, %lo(var_test_irq)(a7) +; RV64I-NEXT: lui a0, %hi(var_test_irq) +; RV64I-NEXT: addi a0, a0, %lo(var_test_irq) +; RV64I-NEXT: lw a1, 0(a0) +; RV64I-NEXT: sd a1, 40(sp) # 8-byte Folded Spill +; RV64I-NEXT: lw a1, 4(a0) +; RV64I-NEXT: sd a1, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: lw a1, 8(a0) +; RV64I-NEXT: sd a1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: lw a1, 12(a0) +; RV64I-NEXT: sd a1, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: lw a1, 16(a0) +; RV64I-NEXT: sd a1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: lw a6, 20(a0) +; RV64I-NEXT: lw a7, 24(a0) +; RV64I-NEXT: lw t0, 28(a0) +; RV64I-NEXT: lw t1, 32(a0) +; RV64I-NEXT: lw t2, 36(a0) +; RV64I-NEXT: lw t3, 40(a0) +; RV64I-NEXT: lw t4, 44(a0) +; RV64I-NEXT: lw t5, 48(a0) +; RV64I-NEXT: lw t6, 52(a0) +; RV64I-NEXT: lw s0, 56(a0) +; RV64I-NEXT: lw s1, 60(a0) +; RV64I-NEXT: lw s2, 64(a0) +; RV64I-NEXT: lw s3, 68(a0) +; RV64I-NEXT: lw s4, 72(a0) +; RV64I-NEXT: lw s5, 76(a0) +; RV64I-NEXT: lw s6, 80(a0) +; RV64I-NEXT: lw s7, 84(a0) +; RV64I-NEXT: lw s8, 88(a0) +; RV64I-NEXT: lw s9, 92(a0) +; RV64I-NEXT: lw s10, 112(a0) +; RV64I-NEXT: lw s11, 116(a0) +; RV64I-NEXT: lw ra, 120(a0) +; RV64I-NEXT: lw a1, 124(a0) +; RV64I-NEXT: lw a5, 96(a0) +; RV64I-NEXT: lw a4, 100(a0) +; RV64I-NEXT: lw a3, 104(a0) +; RV64I-NEXT: lw a2, 108(a0) +; RV64I-NEXT: sw a1, 124(a0) +; RV64I-NEXT: sw ra, 120(a0) +; RV64I-NEXT: sw s11, 116(a0) +; RV64I-NEXT: sw s10, 112(a0) +; RV64I-NEXT: sw a2, 108(a0) +; RV64I-NEXT: sw a3, 104(a0) +; RV64I-NEXT: sw a4, 100(a0) +; RV64I-NEXT: sw a5, 96(a0) +; RV64I-NEXT: sw s9, 92(a0) +; RV64I-NEXT: sw s8, 88(a0) +; RV64I-NEXT: sw s7, 84(a0) +; RV64I-NEXT: sw s6, 80(a0) +; RV64I-NEXT: sw s5, 76(a0) +; RV64I-NEXT: sw s4, 72(a0) +; RV64I-NEXT: sw s3, 68(a0) +; RV64I-NEXT: sw s2, 64(a0) +; RV64I-NEXT: sw s1, 60(a0) +; RV64I-NEXT: sw s0, 56(a0) +; RV64I-NEXT: sw t6, 52(a0) +; RV64I-NEXT: sw t5, 48(a0) +; RV64I-NEXT: sw t4, 44(a0) +; RV64I-NEXT: sw t3, 40(a0) +; RV64I-NEXT: sw t2, 36(a0) +; RV64I-NEXT: sw t1, 32(a0) +; RV64I-NEXT: sw t0, 28(a0) +; RV64I-NEXT: sw a7, 24(a0) +; RV64I-NEXT: sw a6, 20(a0) +; RV64I-NEXT: ld a1, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: sw a1, 16(a0) +; RV64I-NEXT: ld a1, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: sw a1, 12(a0) +; RV64I-NEXT: ld a1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: sw a1, 8(a0) +; RV64I-NEXT: ld a1, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: sw a1, 4(a0) +; RV64I-NEXT: ld a1, 40(sp) # 8-byte Folded Reload +; RV64I-NEXT: sw a1, 0(a0) ; RV64I-NEXT: ld ra, 264(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld t0, 256(sp) # 8-byte Folded Reload ; RV64I-NEXT: ld t1, 248(sp) # 8-byte Folded Reload @@ -3404,84 +3364,82 @@ define void @callee_no_irq() { ; RV32IZCMP-NEXT: .cfi_offset s9, -12 ; RV32IZCMP-NEXT: .cfi_offset s10, -8 ; RV32IZCMP-NEXT: .cfi_offset s11, -4 -; RV32IZCMP-NEXT: lui t0, %hi(var_test_irq) -; RV32IZCMP-NEXT: lw a0, %lo(var_test_irq)(t0) -; RV32IZCMP-NEXT: sw a0, 28(sp) # 4-byte Folded Spill -; RV32IZCMP-NEXT: lw a0, %lo(var_test_irq+4)(t0) -; RV32IZCMP-NEXT: sw a0, 24(sp) # 4-byte Folded Spill -; RV32IZCMP-NEXT: lw a0, %lo(var_test_irq+8)(t0) -; RV32IZCMP-NEXT: sw a0, 20(sp) # 4-byte Folded Spill -; RV32IZCMP-NEXT: lw a0, %lo(var_test_irq+12)(t0) -; RV32IZCMP-NEXT: sw a0, 16(sp) # 4-byte Folded Spill -; RV32IZCMP-NEXT: addi a5, t0, %lo(var_test_irq) -; RV32IZCMP-NEXT: lw a0, 16(a5) -; RV32IZCMP-NEXT: sw a0, 12(sp) # 4-byte Folded Spill -; RV32IZCMP-NEXT: lw a0, 20(a5) -; RV32IZCMP-NEXT: sw a0, 8(sp) # 4-byte Folded Spill -; RV32IZCMP-NEXT: lw t4, 24(a5) -; RV32IZCMP-NEXT: lw t5, 28(a5) -; RV32IZCMP-NEXT: lw t6, 32(a5) -; RV32IZCMP-NEXT: lw s2, 36(a5) -; RV32IZCMP-NEXT: lw s3, 40(a5) -; RV32IZCMP-NEXT: lw s4, 44(a5) -; RV32IZCMP-NEXT: lw s5, 48(a5) -; RV32IZCMP-NEXT: lw s6, 52(a5) -; RV32IZCMP-NEXT: lw s7, 56(a5) -; RV32IZCMP-NEXT: lw s8, 60(a5) -; RV32IZCMP-NEXT: lw s9, 64(a5) -; RV32IZCMP-NEXT: lw s10, 68(a5) -; RV32IZCMP-NEXT: lw s11, 72(a5) -; RV32IZCMP-NEXT: lw ra, 76(a5) -; RV32IZCMP-NEXT: lw s1, 80(a5) -; RV32IZCMP-NEXT: lw t3, 84(a5) -; RV32IZCMP-NEXT: lw t2, 88(a5) -; RV32IZCMP-NEXT: lw t1, 92(a5) -; RV32IZCMP-NEXT: lw a7, 112(a5) -; RV32IZCMP-NEXT: lw s0, 116(a5) -; RV32IZCMP-NEXT: lw a3, 120(a5) -; RV32IZCMP-NEXT: lw a0, 124(a5) -; RV32IZCMP-NEXT: lw a6, 96(a5) -; RV32IZCMP-NEXT: lw a4, 100(a5) -; RV32IZCMP-NEXT: lw a2, 104(a5) -; RV32IZCMP-NEXT: lw a1, 108(a5) -; RV32IZCMP-NEXT: sw a0, 124(a5) -; RV32IZCMP-NEXT: sw a3, 120(a5) -; RV32IZCMP-NEXT: sw s0, 116(a5) -; RV32IZCMP-NEXT: sw a7, 112(a5) -; RV32IZCMP-NEXT: sw a1, 108(a5) -; RV32IZCMP-NEXT: sw a2, 104(a5) -; RV32IZCMP-NEXT: sw a4, 100(a5) -; RV32IZCMP-NEXT: sw a6, 96(a5) -; RV32IZCMP-NEXT: sw t1, 92(a5) -; RV32IZCMP-NEXT: sw t2, 88(a5) -; RV32IZCMP-NEXT: sw t3, 84(a5) -; RV32IZCMP-NEXT: sw s1, 80(a5) -; RV32IZCMP-NEXT: sw ra, 76(a5) -; RV32IZCMP-NEXT: sw s11, 72(a5) -; RV32IZCMP-NEXT: sw s10, 68(a5) -; RV32IZCMP-NEXT: sw s9, 64(a5) -; RV32IZCMP-NEXT: sw s8, 60(a5) -; RV32IZCMP-NEXT: sw s7, 56(a5) -; RV32IZCMP-NEXT: sw s6, 52(a5) -; RV32IZCMP-NEXT: sw s5, 48(a5) -; RV32IZCMP-NEXT: sw s4, 44(a5) -; RV32IZCMP-NEXT: sw s3, 40(a5) -; RV32IZCMP-NEXT: sw s2, 36(a5) -; RV32IZCMP-NEXT: sw t6, 32(a5) -; RV32IZCMP-NEXT: sw t5, 28(a5) -; RV32IZCMP-NEXT: sw t4, 24(a5) -; RV32IZCMP-NEXT: lw a0, 8(sp) # 4-byte Folded Reload -; RV32IZCMP-NEXT: sw a0, 20(a5) -; RV32IZCMP-NEXT: lw a0, 12(sp) # 4-byte Folded Reload -; RV32IZCMP-NEXT: sw a0, 16(a5) -; RV32IZCMP-NEXT: lw a0, 16(sp) # 4-byte Folded Reload -; RV32IZCMP-NEXT: sw a0, %lo(var_test_irq+12)(t0) -; RV32IZCMP-NEXT: lw a0, 20(sp) # 4-byte Folded Reload -; RV32IZCMP-NEXT: sw a0, %lo(var_test_irq+8)(t0) -; RV32IZCMP-NEXT: lw a0, 24(sp) # 4-byte Folded Reload -; RV32IZCMP-NEXT: sw a0, %lo(var_test_irq+4)(t0) -; RV32IZCMP-NEXT: lw a0, 28(sp) # 4-byte Folded Reload -; RV32IZCMP-NEXT: sw a0, %lo(var_test_irq)(t0) +; RV32IZCMP-NEXT: lui a0, %hi(var_test_irq) +; RV32IZCMP-NEXT: addi a0, a0, %lo(var_test_irq) +; RV32IZCMP-NEXT: lw a1, 0(a0) +; RV32IZCMP-NEXT: sw a1, 28(sp) # 4-byte Folded Spill +; RV32IZCMP-NEXT: lw a1, 4(a0) +; RV32IZCMP-NEXT: sw a1, 24(sp) # 4-byte Folded Spill +; RV32IZCMP-NEXT: lw a1, 8(a0) +; RV32IZCMP-NEXT: sw a1, 20(sp) # 4-byte Folded Spill +; RV32IZCMP-NEXT: lw a1, 12(a0) +; RV32IZCMP-NEXT: sw a1, 16(sp) # 4-byte Folded Spill +; RV32IZCMP-NEXT: lw a1, 16(a0) +; RV32IZCMP-NEXT: sw a1, 12(sp) # 4-byte Folded Spill +; RV32IZCMP-NEXT: lw t3, 20(a0) +; RV32IZCMP-NEXT: lw t4, 24(a0) +; RV32IZCMP-NEXT: lw t5, 28(a0) +; RV32IZCMP-NEXT: lw t6, 32(a0) +; RV32IZCMP-NEXT: lw s2, 36(a0) +; RV32IZCMP-NEXT: lw s3, 40(a0) +; RV32IZCMP-NEXT: lw s4, 44(a0) +; RV32IZCMP-NEXT: lw s5, 48(a0) +; RV32IZCMP-NEXT: lw s6, 52(a0) +; RV32IZCMP-NEXT: lw s7, 56(a0) +; RV32IZCMP-NEXT: lw s8, 60(a0) +; RV32IZCMP-NEXT: lw s9, 64(a0) +; RV32IZCMP-NEXT: lw s10, 68(a0) +; RV32IZCMP-NEXT: lw s11, 72(a0) +; RV32IZCMP-NEXT: lw ra, 76(a0) +; RV32IZCMP-NEXT: lw t2, 80(a0) +; RV32IZCMP-NEXT: lw s0, 84(a0) +; RV32IZCMP-NEXT: lw s1, 88(a0) +; RV32IZCMP-NEXT: lw t1, 92(a0) +; RV32IZCMP-NEXT: lw t0, 112(a0) +; RV32IZCMP-NEXT: lw a5, 116(a0) +; RV32IZCMP-NEXT: lw a3, 120(a0) +; RV32IZCMP-NEXT: lw a1, 124(a0) +; RV32IZCMP-NEXT: lw a7, 96(a0) +; RV32IZCMP-NEXT: lw a6, 100(a0) +; RV32IZCMP-NEXT: lw a4, 104(a0) +; RV32IZCMP-NEXT: lw a2, 108(a0) +; RV32IZCMP-NEXT: sw a1, 124(a0) +; RV32IZCMP-NEXT: sw a3, 120(a0) +; RV32IZCMP-NEXT: sw a5, 116(a0) +; RV32IZCMP-NEXT: sw t0, 112(a0) +; RV32IZCMP-NEXT: sw a2, 108(a0) +; RV32IZCMP-NEXT: sw a4, 104(a0) +; RV32IZCMP-NEXT: sw a6, 100(a0) +; RV32IZCMP-NEXT: sw a7, 96(a0) +; RV32IZCMP-NEXT: sw t1, 92(a0) +; RV32IZCMP-NEXT: sw s1, 88(a0) +; RV32IZCMP-NEXT: sw s0, 84(a0) +; RV32IZCMP-NEXT: sw t2, 80(a0) +; RV32IZCMP-NEXT: sw ra, 76(a0) +; RV32IZCMP-NEXT: sw s11, 72(a0) +; RV32IZCMP-NEXT: sw s10, 68(a0) +; RV32IZCMP-NEXT: sw s9, 64(a0) +; RV32IZCMP-NEXT: sw s8, 60(a0) +; RV32IZCMP-NEXT: sw s7, 56(a0) +; RV32IZCMP-NEXT: sw s6, 52(a0) +; RV32IZCMP-NEXT: sw s5, 48(a0) +; RV32IZCMP-NEXT: sw s4, 44(a0) +; RV32IZCMP-NEXT: sw s3, 40(a0) +; RV32IZCMP-NEXT: sw s2, 36(a0) +; RV32IZCMP-NEXT: sw t6, 32(a0) +; RV32IZCMP-NEXT: sw t5, 28(a0) +; RV32IZCMP-NEXT: sw t4, 24(a0) +; RV32IZCMP-NEXT: sw t3, 20(a0) +; RV32IZCMP-NEXT: lw a1, 12(sp) # 4-byte Folded Reload +; RV32IZCMP-NEXT: sw a1, 16(a0) +; RV32IZCMP-NEXT: lw a1, 16(sp) # 4-byte Folded Reload +; RV32IZCMP-NEXT: sw a1, 12(a0) +; RV32IZCMP-NEXT: lw a1, 20(sp) # 4-byte Folded Reload +; RV32IZCMP-NEXT: sw a1, 8(a0) +; RV32IZCMP-NEXT: lw a1, 24(sp) # 4-byte Folded Reload +; RV32IZCMP-NEXT: sw a1, 4(a0) +; RV32IZCMP-NEXT: lw a1, 28(sp) # 4-byte Folded Reload +; RV32IZCMP-NEXT: sw a1, 0(a0) ; RV32IZCMP-NEXT: cm.popret {ra, s0-s11}, 96 ; ; RV64IZCMP-LABEL: callee_no_irq: @@ -3501,84 +3459,82 @@ define void @callee_no_irq() { ; RV64IZCMP-NEXT: .cfi_offset s9, -24 ; RV64IZCMP-NEXT: .cfi_offset s10, -16 ; RV64IZCMP-NEXT: .cfi_offset s11, -8 -; RV64IZCMP-NEXT: lui t0, %hi(var_test_irq) -; RV64IZCMP-NEXT: lw a0, %lo(var_test_irq)(t0) -; RV64IZCMP-NEXT: sd a0, 40(sp) # 8-byte Folded Spill -; RV64IZCMP-NEXT: lw a0, %lo(var_test_irq+4)(t0) -; RV64IZCMP-NEXT: sd a0, 32(sp) # 8-byte Folded Spill -; RV64IZCMP-NEXT: lw a0, %lo(var_test_irq+8)(t0) -; RV64IZCMP-NEXT: sd a0, 24(sp) # 8-byte Folded Spill -; RV64IZCMP-NEXT: lw a0, %lo(var_test_irq+12)(t0) -; RV64IZCMP-NEXT: sd a0, 16(sp) # 8-byte Folded Spill -; RV64IZCMP-NEXT: addi a5, t0, %lo(var_test_irq) -; RV64IZCMP-NEXT: lw a0, 16(a5) -; RV64IZCMP-NEXT: sd a0, 8(sp) # 8-byte Folded Spill -; RV64IZCMP-NEXT: lw a0, 20(a5) -; RV64IZCMP-NEXT: sd a0, 0(sp) # 8-byte Folded Spill -; RV64IZCMP-NEXT: lw t4, 24(a5) -; RV64IZCMP-NEXT: lw t5, 28(a5) -; RV64IZCMP-NEXT: lw t6, 32(a5) -; RV64IZCMP-NEXT: lw s2, 36(a5) -; RV64IZCMP-NEXT: lw s3, 40(a5) -; RV64IZCMP-NEXT: lw s4, 44(a5) -; RV64IZCMP-NEXT: lw s5, 48(a5) -; RV64IZCMP-NEXT: lw s6, 52(a5) -; RV64IZCMP-NEXT: lw s7, 56(a5) -; RV64IZCMP-NEXT: lw s8, 60(a5) -; RV64IZCMP-NEXT: lw s9, 64(a5) -; RV64IZCMP-NEXT: lw s10, 68(a5) -; RV64IZCMP-NEXT: lw s11, 72(a5) -; RV64IZCMP-NEXT: lw ra, 76(a5) -; RV64IZCMP-NEXT: lw s1, 80(a5) -; RV64IZCMP-NEXT: lw t3, 84(a5) -; RV64IZCMP-NEXT: lw t2, 88(a5) -; RV64IZCMP-NEXT: lw t1, 92(a5) -; RV64IZCMP-NEXT: lw a7, 112(a5) -; RV64IZCMP-NEXT: lw s0, 116(a5) -; RV64IZCMP-NEXT: lw a3, 120(a5) -; RV64IZCMP-NEXT: lw a0, 124(a5) -; RV64IZCMP-NEXT: lw a6, 96(a5) -; RV64IZCMP-NEXT: lw a4, 100(a5) -; RV64IZCMP-NEXT: lw a2, 104(a5) -; RV64IZCMP-NEXT: lw a1, 108(a5) -; RV64IZCMP-NEXT: sw a0, 124(a5) -; RV64IZCMP-NEXT: sw a3, 120(a5) -; RV64IZCMP-NEXT: sw s0, 116(a5) -; RV64IZCMP-NEXT: sw a7, 112(a5) -; RV64IZCMP-NEXT: sw a1, 108(a5) -; RV64IZCMP-NEXT: sw a2, 104(a5) -; RV64IZCMP-NEXT: sw a4, 100(a5) -; RV64IZCMP-NEXT: sw a6, 96(a5) -; RV64IZCMP-NEXT: sw t1, 92(a5) -; RV64IZCMP-NEXT: sw t2, 88(a5) -; RV64IZCMP-NEXT: sw t3, 84(a5) -; RV64IZCMP-NEXT: sw s1, 80(a5) -; RV64IZCMP-NEXT: sw ra, 76(a5) -; RV64IZCMP-NEXT: sw s11, 72(a5) -; RV64IZCMP-NEXT: sw s10, 68(a5) -; RV64IZCMP-NEXT: sw s9, 64(a5) -; RV64IZCMP-NEXT: sw s8, 60(a5) -; RV64IZCMP-NEXT: sw s7, 56(a5) -; RV64IZCMP-NEXT: sw s6, 52(a5) -; RV64IZCMP-NEXT: sw s5, 48(a5) -; RV64IZCMP-NEXT: sw s4, 44(a5) -; RV64IZCMP-NEXT: sw s3, 40(a5) -; RV64IZCMP-NEXT: sw s2, 36(a5) -; RV64IZCMP-NEXT: sw t6, 32(a5) -; RV64IZCMP-NEXT: sw t5, 28(a5) -; RV64IZCMP-NEXT: sw t4, 24(a5) -; RV64IZCMP-NEXT: ld a0, 0(sp) # 8-byte Folded Reload -; RV64IZCMP-NEXT: sw a0, 20(a5) -; RV64IZCMP-NEXT: ld a0, 8(sp) # 8-byte Folded Reload -; RV64IZCMP-NEXT: sw a0, 16(a5) -; RV64IZCMP-NEXT: ld a0, 16(sp) # 8-byte Folded Reload -; RV64IZCMP-NEXT: sw a0, %lo(var_test_irq+12)(t0) -; RV64IZCMP-NEXT: ld a0, 24(sp) # 8-byte Folded Reload -; RV64IZCMP-NEXT: sw a0, %lo(var_test_irq+8)(t0) -; RV64IZCMP-NEXT: ld a0, 32(sp) # 8-byte Folded Reload -; RV64IZCMP-NEXT: sw a0, %lo(var_test_irq+4)(t0) -; RV64IZCMP-NEXT: ld a0, 40(sp) # 8-byte Folded Reload -; RV64IZCMP-NEXT: sw a0, %lo(var_test_irq)(t0) +; RV64IZCMP-NEXT: lui a0, %hi(var_test_irq) +; RV64IZCMP-NEXT: addi a0, a0, %lo(var_test_irq) +; RV64IZCMP-NEXT: lw a1, 0(a0) +; RV64IZCMP-NEXT: sd a1, 40(sp) # 8-byte Folded Spill +; RV64IZCMP-NEXT: lw a1, 4(a0) +; RV64IZCMP-NEXT: sd a1, 32(sp) # 8-byte Folded Spill +; RV64IZCMP-NEXT: lw a1, 8(a0) +; RV64IZCMP-NEXT: sd a1, 24(sp) # 8-byte Folded Spill +; RV64IZCMP-NEXT: lw a1, 12(a0) +; RV64IZCMP-NEXT: sd a1, 16(sp) # 8-byte Folded Spill +; RV64IZCMP-NEXT: lw a1, 16(a0) +; RV64IZCMP-NEXT: sd a1, 8(sp) # 8-byte Folded Spill +; RV64IZCMP-NEXT: lw t3, 20(a0) +; RV64IZCMP-NEXT: lw t4, 24(a0) +; RV64IZCMP-NEXT: lw t5, 28(a0) +; RV64IZCMP-NEXT: lw t6, 32(a0) +; RV64IZCMP-NEXT: lw s2, 36(a0) +; RV64IZCMP-NEXT: lw s3, 40(a0) +; RV64IZCMP-NEXT: lw s4, 44(a0) +; RV64IZCMP-NEXT: lw s5, 48(a0) +; RV64IZCMP-NEXT: lw s6, 52(a0) +; RV64IZCMP-NEXT: lw s7, 56(a0) +; RV64IZCMP-NEXT: lw s8, 60(a0) +; RV64IZCMP-NEXT: lw s9, 64(a0) +; RV64IZCMP-NEXT: lw s10, 68(a0) +; RV64IZCMP-NEXT: lw s11, 72(a0) +; RV64IZCMP-NEXT: lw ra, 76(a0) +; RV64IZCMP-NEXT: lw t2, 80(a0) +; RV64IZCMP-NEXT: lw s0, 84(a0) +; RV64IZCMP-NEXT: lw s1, 88(a0) +; RV64IZCMP-NEXT: lw t1, 92(a0) +; RV64IZCMP-NEXT: lw t0, 112(a0) +; RV64IZCMP-NEXT: lw a5, 116(a0) +; RV64IZCMP-NEXT: lw a3, 120(a0) +; RV64IZCMP-NEXT: lw a1, 124(a0) +; RV64IZCMP-NEXT: lw a7, 96(a0) +; RV64IZCMP-NEXT: lw a6, 100(a0) +; RV64IZCMP-NEXT: lw a4, 104(a0) +; RV64IZCMP-NEXT: lw a2, 108(a0) +; RV64IZCMP-NEXT: sw a1, 124(a0) +; RV64IZCMP-NEXT: sw a3, 120(a0) +; RV64IZCMP-NEXT: sw a5, 116(a0) +; RV64IZCMP-NEXT: sw t0, 112(a0) +; RV64IZCMP-NEXT: sw a2, 108(a0) +; RV64IZCMP-NEXT: sw a4, 104(a0) +; RV64IZCMP-NEXT: sw a6, 100(a0) +; RV64IZCMP-NEXT: sw a7, 96(a0) +; RV64IZCMP-NEXT: sw t1, 92(a0) +; RV64IZCMP-NEXT: sw s1, 88(a0) +; RV64IZCMP-NEXT: sw s0, 84(a0) +; RV64IZCMP-NEXT: sw t2, 80(a0) +; RV64IZCMP-NEXT: sw ra, 76(a0) +; RV64IZCMP-NEXT: sw s11, 72(a0) +; RV64IZCMP-NEXT: sw s10, 68(a0) +; RV64IZCMP-NEXT: sw s9, 64(a0) +; RV64IZCMP-NEXT: sw s8, 60(a0) +; RV64IZCMP-NEXT: sw s7, 56(a0) +; RV64IZCMP-NEXT: sw s6, 52(a0) +; RV64IZCMP-NEXT: sw s5, 48(a0) +; RV64IZCMP-NEXT: sw s4, 44(a0) +; RV64IZCMP-NEXT: sw s3, 40(a0) +; RV64IZCMP-NEXT: sw s2, 36(a0) +; RV64IZCMP-NEXT: sw t6, 32(a0) +; RV64IZCMP-NEXT: sw t5, 28(a0) +; RV64IZCMP-NEXT: sw t4, 24(a0) +; RV64IZCMP-NEXT: sw t3, 20(a0) +; RV64IZCMP-NEXT: ld a1, 8(sp) # 8-byte Folded Reload +; RV64IZCMP-NEXT: sw a1, 16(a0) +; RV64IZCMP-NEXT: ld a1, 16(sp) # 8-byte Folded Reload +; RV64IZCMP-NEXT: sw a1, 12(a0) +; RV64IZCMP-NEXT: ld a1, 24(sp) # 8-byte Folded Reload +; RV64IZCMP-NEXT: sw a1, 8(a0) +; RV64IZCMP-NEXT: ld a1, 32(sp) # 8-byte Folded Reload +; RV64IZCMP-NEXT: sw a1, 4(a0) +; RV64IZCMP-NEXT: ld a1, 40(sp) # 8-byte Folded Reload +; RV64IZCMP-NEXT: sw a1, 0(a0) ; RV64IZCMP-NEXT: cm.popret {ra, s0-s11}, 160 ; ; RV32IZCMP-SR-LABEL: callee_no_irq: @@ -3598,84 +3554,82 @@ define void @callee_no_irq() { ; RV32IZCMP-SR-NEXT: .cfi_offset s9, -12 ; RV32IZCMP-SR-NEXT: .cfi_offset s10, -8 ; RV32IZCMP-SR-NEXT: .cfi_offset s11, -4 -; RV32IZCMP-SR-NEXT: lui t0, %hi(var_test_irq) -; RV32IZCMP-SR-NEXT: lw a0, %lo(var_test_irq)(t0) -; RV32IZCMP-SR-NEXT: sw a0, 28(sp) # 4-byte Folded Spill -; RV32IZCMP-SR-NEXT: lw a0, %lo(var_test_irq+4)(t0) -; RV32IZCMP-SR-NEXT: sw a0, 24(sp) # 4-byte Folded Spill -; RV32IZCMP-SR-NEXT: lw a0, %lo(var_test_irq+8)(t0) -; RV32IZCMP-SR-NEXT: sw a0, 20(sp) # 4-byte Folded Spill -; RV32IZCMP-SR-NEXT: lw a0, %lo(var_test_irq+12)(t0) -; RV32IZCMP-SR-NEXT: sw a0, 16(sp) # 4-byte Folded Spill -; RV32IZCMP-SR-NEXT: addi a5, t0, %lo(var_test_irq) -; RV32IZCMP-SR-NEXT: lw a0, 16(a5) -; RV32IZCMP-SR-NEXT: sw a0, 12(sp) # 4-byte Folded Spill -; RV32IZCMP-SR-NEXT: lw a0, 20(a5) -; RV32IZCMP-SR-NEXT: sw a0, 8(sp) # 4-byte Folded Spill -; RV32IZCMP-SR-NEXT: lw t4, 24(a5) -; RV32IZCMP-SR-NEXT: lw t5, 28(a5) -; RV32IZCMP-SR-NEXT: lw t6, 32(a5) -; RV32IZCMP-SR-NEXT: lw s2, 36(a5) -; RV32IZCMP-SR-NEXT: lw s3, 40(a5) -; RV32IZCMP-SR-NEXT: lw s4, 44(a5) -; RV32IZCMP-SR-NEXT: lw s5, 48(a5) -; RV32IZCMP-SR-NEXT: lw s6, 52(a5) -; RV32IZCMP-SR-NEXT: lw s7, 56(a5) -; RV32IZCMP-SR-NEXT: lw s8, 60(a5) -; RV32IZCMP-SR-NEXT: lw s9, 64(a5) -; RV32IZCMP-SR-NEXT: lw s10, 68(a5) -; RV32IZCMP-SR-NEXT: lw s11, 72(a5) -; RV32IZCMP-SR-NEXT: lw ra, 76(a5) -; RV32IZCMP-SR-NEXT: lw s1, 80(a5) -; RV32IZCMP-SR-NEXT: lw t3, 84(a5) -; RV32IZCMP-SR-NEXT: lw t2, 88(a5) -; RV32IZCMP-SR-NEXT: lw t1, 92(a5) -; RV32IZCMP-SR-NEXT: lw a7, 112(a5) -; RV32IZCMP-SR-NEXT: lw s0, 116(a5) -; RV32IZCMP-SR-NEXT: lw a3, 120(a5) -; RV32IZCMP-SR-NEXT: lw a0, 124(a5) -; RV32IZCMP-SR-NEXT: lw a6, 96(a5) -; RV32IZCMP-SR-NEXT: lw a4, 100(a5) -; RV32IZCMP-SR-NEXT: lw a2, 104(a5) -; RV32IZCMP-SR-NEXT: lw a1, 108(a5) -; RV32IZCMP-SR-NEXT: sw a0, 124(a5) -; RV32IZCMP-SR-NEXT: sw a3, 120(a5) -; RV32IZCMP-SR-NEXT: sw s0, 116(a5) -; RV32IZCMP-SR-NEXT: sw a7, 112(a5) -; RV32IZCMP-SR-NEXT: sw a1, 108(a5) -; RV32IZCMP-SR-NEXT: sw a2, 104(a5) -; RV32IZCMP-SR-NEXT: sw a4, 100(a5) -; RV32IZCMP-SR-NEXT: sw a6, 96(a5) -; RV32IZCMP-SR-NEXT: sw t1, 92(a5) -; RV32IZCMP-SR-NEXT: sw t2, 88(a5) -; RV32IZCMP-SR-NEXT: sw t3, 84(a5) -; RV32IZCMP-SR-NEXT: sw s1, 80(a5) -; RV32IZCMP-SR-NEXT: sw ra, 76(a5) -; RV32IZCMP-SR-NEXT: sw s11, 72(a5) -; RV32IZCMP-SR-NEXT: sw s10, 68(a5) -; RV32IZCMP-SR-NEXT: sw s9, 64(a5) -; RV32IZCMP-SR-NEXT: sw s8, 60(a5) -; RV32IZCMP-SR-NEXT: sw s7, 56(a5) -; RV32IZCMP-SR-NEXT: sw s6, 52(a5) -; RV32IZCMP-SR-NEXT: sw s5, 48(a5) -; RV32IZCMP-SR-NEXT: sw s4, 44(a5) -; RV32IZCMP-SR-NEXT: sw s3, 40(a5) -; RV32IZCMP-SR-NEXT: sw s2, 36(a5) -; RV32IZCMP-SR-NEXT: sw t6, 32(a5) -; RV32IZCMP-SR-NEXT: sw t5, 28(a5) -; RV32IZCMP-SR-NEXT: sw t4, 24(a5) -; RV32IZCMP-SR-NEXT: lw a0, 8(sp) # 4-byte Folded Reload -; RV32IZCMP-SR-NEXT: sw a0, 20(a5) -; RV32IZCMP-SR-NEXT: lw a0, 12(sp) # 4-byte Folded Reload -; RV32IZCMP-SR-NEXT: sw a0, 16(a5) -; RV32IZCMP-SR-NEXT: lw a0, 16(sp) # 4-byte Folded Reload -; RV32IZCMP-SR-NEXT: sw a0, %lo(var_test_irq+12)(t0) -; RV32IZCMP-SR-NEXT: lw a0, 20(sp) # 4-byte Folded Reload -; RV32IZCMP-SR-NEXT: sw a0, %lo(var_test_irq+8)(t0) -; RV32IZCMP-SR-NEXT: lw a0, 24(sp) # 4-byte Folded Reload -; RV32IZCMP-SR-NEXT: sw a0, %lo(var_test_irq+4)(t0) -; RV32IZCMP-SR-NEXT: lw a0, 28(sp) # 4-byte Folded Reload -; RV32IZCMP-SR-NEXT: sw a0, %lo(var_test_irq)(t0) +; RV32IZCMP-SR-NEXT: lui a0, %hi(var_test_irq) +; RV32IZCMP-SR-NEXT: addi a0, a0, %lo(var_test_irq) +; RV32IZCMP-SR-NEXT: lw a1, 0(a0) +; RV32IZCMP-SR-NEXT: sw a1, 28(sp) # 4-byte Folded Spill +; RV32IZCMP-SR-NEXT: lw a1, 4(a0) +; RV32IZCMP-SR-NEXT: sw a1, 24(sp) # 4-byte Folded Spill +; RV32IZCMP-SR-NEXT: lw a1, 8(a0) +; RV32IZCMP-SR-NEXT: sw a1, 20(sp) # 4-byte Folded Spill +; RV32IZCMP-SR-NEXT: lw a1, 12(a0) +; RV32IZCMP-SR-NEXT: sw a1, 16(sp) # 4-byte Folded Spill +; RV32IZCMP-SR-NEXT: lw a1, 16(a0) +; RV32IZCMP-SR-NEXT: sw a1, 12(sp) # 4-byte Folded Spill +; RV32IZCMP-SR-NEXT: lw t3, 20(a0) +; RV32IZCMP-SR-NEXT: lw t4, 24(a0) +; RV32IZCMP-SR-NEXT: lw t5, 28(a0) +; RV32IZCMP-SR-NEXT: lw t6, 32(a0) +; RV32IZCMP-SR-NEXT: lw s2, 36(a0) +; RV32IZCMP-SR-NEXT: lw s3, 40(a0) +; RV32IZCMP-SR-NEXT: lw s4, 44(a0) +; RV32IZCMP-SR-NEXT: lw s5, 48(a0) +; RV32IZCMP-SR-NEXT: lw s6, 52(a0) +; RV32IZCMP-SR-NEXT: lw s7, 56(a0) +; RV32IZCMP-SR-NEXT: lw s8, 60(a0) +; RV32IZCMP-SR-NEXT: lw s9, 64(a0) +; RV32IZCMP-SR-NEXT: lw s10, 68(a0) +; RV32IZCMP-SR-NEXT: lw s11, 72(a0) +; RV32IZCMP-SR-NEXT: lw ra, 76(a0) +; RV32IZCMP-SR-NEXT: lw t2, 80(a0) +; RV32IZCMP-SR-NEXT: lw s0, 84(a0) +; RV32IZCMP-SR-NEXT: lw s1, 88(a0) +; RV32IZCMP-SR-NEXT: lw t1, 92(a0) +; RV32IZCMP-SR-NEXT: lw t0, 112(a0) +; RV32IZCMP-SR-NEXT: lw a5, 116(a0) +; RV32IZCMP-SR-NEXT: lw a3, 120(a0) +; RV32IZCMP-SR-NEXT: lw a1, 124(a0) +; RV32IZCMP-SR-NEXT: lw a7, 96(a0) +; RV32IZCMP-SR-NEXT: lw a6, 100(a0) +; RV32IZCMP-SR-NEXT: lw a4, 104(a0) +; RV32IZCMP-SR-NEXT: lw a2, 108(a0) +; RV32IZCMP-SR-NEXT: sw a1, 124(a0) +; RV32IZCMP-SR-NEXT: sw a3, 120(a0) +; RV32IZCMP-SR-NEXT: sw a5, 116(a0) +; RV32IZCMP-SR-NEXT: sw t0, 112(a0) +; RV32IZCMP-SR-NEXT: sw a2, 108(a0) +; RV32IZCMP-SR-NEXT: sw a4, 104(a0) +; RV32IZCMP-SR-NEXT: sw a6, 100(a0) +; RV32IZCMP-SR-NEXT: sw a7, 96(a0) +; RV32IZCMP-SR-NEXT: sw t1, 92(a0) +; RV32IZCMP-SR-NEXT: sw s1, 88(a0) +; RV32IZCMP-SR-NEXT: sw s0, 84(a0) +; RV32IZCMP-SR-NEXT: sw t2, 80(a0) +; RV32IZCMP-SR-NEXT: sw ra, 76(a0) +; RV32IZCMP-SR-NEXT: sw s11, 72(a0) +; RV32IZCMP-SR-NEXT: sw s10, 68(a0) +; RV32IZCMP-SR-NEXT: sw s9, 64(a0) +; RV32IZCMP-SR-NEXT: sw s8, 60(a0) +; RV32IZCMP-SR-NEXT: sw s7, 56(a0) +; RV32IZCMP-SR-NEXT: sw s6, 52(a0) +; RV32IZCMP-SR-NEXT: sw s5, 48(a0) +; RV32IZCMP-SR-NEXT: sw s4, 44(a0) +; RV32IZCMP-SR-NEXT: sw s3, 40(a0) +; RV32IZCMP-SR-NEXT: sw s2, 36(a0) +; RV32IZCMP-SR-NEXT: sw t6, 32(a0) +; RV32IZCMP-SR-NEXT: sw t5, 28(a0) +; RV32IZCMP-SR-NEXT: sw t4, 24(a0) +; RV32IZCMP-SR-NEXT: sw t3, 20(a0) +; RV32IZCMP-SR-NEXT: lw a1, 12(sp) # 4-byte Folded Reload +; RV32IZCMP-SR-NEXT: sw a1, 16(a0) +; RV32IZCMP-SR-NEXT: lw a1, 16(sp) # 4-byte Folded Reload +; RV32IZCMP-SR-NEXT: sw a1, 12(a0) +; RV32IZCMP-SR-NEXT: lw a1, 20(sp) # 4-byte Folded Reload +; RV32IZCMP-SR-NEXT: sw a1, 8(a0) +; RV32IZCMP-SR-NEXT: lw a1, 24(sp) # 4-byte Folded Reload +; RV32IZCMP-SR-NEXT: sw a1, 4(a0) +; RV32IZCMP-SR-NEXT: lw a1, 28(sp) # 4-byte Folded Reload +; RV32IZCMP-SR-NEXT: sw a1, 0(a0) ; RV32IZCMP-SR-NEXT: cm.popret {ra, s0-s11}, 96 ; ; RV64IZCMP-SR-LABEL: callee_no_irq: @@ -3695,84 +3649,82 @@ define void @callee_no_irq() { ; RV64IZCMP-SR-NEXT: .cfi_offset s9, -24 ; RV64IZCMP-SR-NEXT: .cfi_offset s10, -16 ; RV64IZCMP-SR-NEXT: .cfi_offset s11, -8 -; RV64IZCMP-SR-NEXT: lui t0, %hi(var_test_irq) -; RV64IZCMP-SR-NEXT: lw a0, %lo(var_test_irq)(t0) -; RV64IZCMP-SR-NEXT: sd a0, 40(sp) # 8-byte Folded Spill -; RV64IZCMP-SR-NEXT: lw a0, %lo(var_test_irq+4)(t0) -; RV64IZCMP-SR-NEXT: sd a0, 32(sp) # 8-byte Folded Spill -; RV64IZCMP-SR-NEXT: lw a0, %lo(var_test_irq+8)(t0) -; RV64IZCMP-SR-NEXT: sd a0, 24(sp) # 8-byte Folded Spill -; RV64IZCMP-SR-NEXT: lw a0, %lo(var_test_irq+12)(t0) -; RV64IZCMP-SR-NEXT: sd a0, 16(sp) # 8-byte Folded Spill -; RV64IZCMP-SR-NEXT: addi a5, t0, %lo(var_test_irq) -; RV64IZCMP-SR-NEXT: lw a0, 16(a5) -; RV64IZCMP-SR-NEXT: sd a0, 8(sp) # 8-byte Folded Spill -; RV64IZCMP-SR-NEXT: lw a0, 20(a5) -; RV64IZCMP-SR-NEXT: sd a0, 0(sp) # 8-byte Folded Spill -; RV64IZCMP-SR-NEXT: lw t4, 24(a5) -; RV64IZCMP-SR-NEXT: lw t5, 28(a5) -; RV64IZCMP-SR-NEXT: lw t6, 32(a5) -; RV64IZCMP-SR-NEXT: lw s2, 36(a5) -; RV64IZCMP-SR-NEXT: lw s3, 40(a5) -; RV64IZCMP-SR-NEXT: lw s4, 44(a5) -; RV64IZCMP-SR-NEXT: lw s5, 48(a5) -; RV64IZCMP-SR-NEXT: lw s6, 52(a5) -; RV64IZCMP-SR-NEXT: lw s7, 56(a5) -; RV64IZCMP-SR-NEXT: lw s8, 60(a5) -; RV64IZCMP-SR-NEXT: lw s9, 64(a5) -; RV64IZCMP-SR-NEXT: lw s10, 68(a5) -; RV64IZCMP-SR-NEXT: lw s11, 72(a5) -; RV64IZCMP-SR-NEXT: lw ra, 76(a5) -; RV64IZCMP-SR-NEXT: lw s1, 80(a5) -; RV64IZCMP-SR-NEXT: lw t3, 84(a5) -; RV64IZCMP-SR-NEXT: lw t2, 88(a5) -; RV64IZCMP-SR-NEXT: lw t1, 92(a5) -; RV64IZCMP-SR-NEXT: lw a7, 112(a5) -; RV64IZCMP-SR-NEXT: lw s0, 116(a5) -; RV64IZCMP-SR-NEXT: lw a3, 120(a5) -; RV64IZCMP-SR-NEXT: lw a0, 124(a5) -; RV64IZCMP-SR-NEXT: lw a6, 96(a5) -; RV64IZCMP-SR-NEXT: lw a4, 100(a5) -; RV64IZCMP-SR-NEXT: lw a2, 104(a5) -; RV64IZCMP-SR-NEXT: lw a1, 108(a5) -; RV64IZCMP-SR-NEXT: sw a0, 124(a5) -; RV64IZCMP-SR-NEXT: sw a3, 120(a5) -; RV64IZCMP-SR-NEXT: sw s0, 116(a5) -; RV64IZCMP-SR-NEXT: sw a7, 112(a5) -; RV64IZCMP-SR-NEXT: sw a1, 108(a5) -; RV64IZCMP-SR-NEXT: sw a2, 104(a5) -; RV64IZCMP-SR-NEXT: sw a4, 100(a5) -; RV64IZCMP-SR-NEXT: sw a6, 96(a5) -; RV64IZCMP-SR-NEXT: sw t1, 92(a5) -; RV64IZCMP-SR-NEXT: sw t2, 88(a5) -; RV64IZCMP-SR-NEXT: sw t3, 84(a5) -; RV64IZCMP-SR-NEXT: sw s1, 80(a5) -; RV64IZCMP-SR-NEXT: sw ra, 76(a5) -; RV64IZCMP-SR-NEXT: sw s11, 72(a5) -; RV64IZCMP-SR-NEXT: sw s10, 68(a5) -; RV64IZCMP-SR-NEXT: sw s9, 64(a5) -; RV64IZCMP-SR-NEXT: sw s8, 60(a5) -; RV64IZCMP-SR-NEXT: sw s7, 56(a5) -; RV64IZCMP-SR-NEXT: sw s6, 52(a5) -; RV64IZCMP-SR-NEXT: sw s5, 48(a5) -; RV64IZCMP-SR-NEXT: sw s4, 44(a5) -; RV64IZCMP-SR-NEXT: sw s3, 40(a5) -; RV64IZCMP-SR-NEXT: sw s2, 36(a5) -; RV64IZCMP-SR-NEXT: sw t6, 32(a5) -; RV64IZCMP-SR-NEXT: sw t5, 28(a5) -; RV64IZCMP-SR-NEXT: sw t4, 24(a5) -; RV64IZCMP-SR-NEXT: ld a0, 0(sp) # 8-byte Folded Reload -; RV64IZCMP-SR-NEXT: sw a0, 20(a5) -; RV64IZCMP-SR-NEXT: ld a0, 8(sp) # 8-byte Folded Reload -; RV64IZCMP-SR-NEXT: sw a0, 16(a5) -; RV64IZCMP-SR-NEXT: ld a0, 16(sp) # 8-byte Folded Reload -; RV64IZCMP-SR-NEXT: sw a0, %lo(var_test_irq+12)(t0) -; RV64IZCMP-SR-NEXT: ld a0, 24(sp) # 8-byte Folded Reload -; RV64IZCMP-SR-NEXT: sw a0, %lo(var_test_irq+8)(t0) -; RV64IZCMP-SR-NEXT: ld a0, 32(sp) # 8-byte Folded Reload -; RV64IZCMP-SR-NEXT: sw a0, %lo(var_test_irq+4)(t0) -; RV64IZCMP-SR-NEXT: ld a0, 40(sp) # 8-byte Folded Reload -; RV64IZCMP-SR-NEXT: sw a0, %lo(var_test_irq)(t0) +; RV64IZCMP-SR-NEXT: lui a0, %hi(var_test_irq) +; RV64IZCMP-SR-NEXT: addi a0, a0, %lo(var_test_irq) +; RV64IZCMP-SR-NEXT: lw a1, 0(a0) +; RV64IZCMP-SR-NEXT: sd a1, 40(sp) # 8-byte Folded Spill +; RV64IZCMP-SR-NEXT: lw a1, 4(a0) +; RV64IZCMP-SR-NEXT: sd a1, 32(sp) # 8-byte Folded Spill +; RV64IZCMP-SR-NEXT: lw a1, 8(a0) +; RV64IZCMP-SR-NEXT: sd a1, 24(sp) # 8-byte Folded Spill +; RV64IZCMP-SR-NEXT: lw a1, 12(a0) +; RV64IZCMP-SR-NEXT: sd a1, 16(sp) # 8-byte Folded Spill +; RV64IZCMP-SR-NEXT: lw a1, 16(a0) +; RV64IZCMP-SR-NEXT: sd a1, 8(sp) # 8-byte Folded Spill +; RV64IZCMP-SR-NEXT: lw t3, 20(a0) +; RV64IZCMP-SR-NEXT: lw t4, 24(a0) +; RV64IZCMP-SR-NEXT: lw t5, 28(a0) +; RV64IZCMP-SR-NEXT: lw t6, 32(a0) +; RV64IZCMP-SR-NEXT: lw s2, 36(a0) +; RV64IZCMP-SR-NEXT: lw s3, 40(a0) +; RV64IZCMP-SR-NEXT: lw s4, 44(a0) +; RV64IZCMP-SR-NEXT: lw s5, 48(a0) +; RV64IZCMP-SR-NEXT: lw s6, 52(a0) +; RV64IZCMP-SR-NEXT: lw s7, 56(a0) +; RV64IZCMP-SR-NEXT: lw s8, 60(a0) +; RV64IZCMP-SR-NEXT: lw s9, 64(a0) +; RV64IZCMP-SR-NEXT: lw s10, 68(a0) +; RV64IZCMP-SR-NEXT: lw s11, 72(a0) +; RV64IZCMP-SR-NEXT: lw ra, 76(a0) +; RV64IZCMP-SR-NEXT: lw t2, 80(a0) +; RV64IZCMP-SR-NEXT: lw s0, 84(a0) +; RV64IZCMP-SR-NEXT: lw s1, 88(a0) +; RV64IZCMP-SR-NEXT: lw t1, 92(a0) +; RV64IZCMP-SR-NEXT: lw t0, 112(a0) +; RV64IZCMP-SR-NEXT: lw a5, 116(a0) +; RV64IZCMP-SR-NEXT: lw a3, 120(a0) +; RV64IZCMP-SR-NEXT: lw a1, 124(a0) +; RV64IZCMP-SR-NEXT: lw a7, 96(a0) +; RV64IZCMP-SR-NEXT: lw a6, 100(a0) +; RV64IZCMP-SR-NEXT: lw a4, 104(a0) +; RV64IZCMP-SR-NEXT: lw a2, 108(a0) +; RV64IZCMP-SR-NEXT: sw a1, 124(a0) +; RV64IZCMP-SR-NEXT: sw a3, 120(a0) +; RV64IZCMP-SR-NEXT: sw a5, 116(a0) +; RV64IZCMP-SR-NEXT: sw t0, 112(a0) +; RV64IZCMP-SR-NEXT: sw a2, 108(a0) +; RV64IZCMP-SR-NEXT: sw a4, 104(a0) +; RV64IZCMP-SR-NEXT: sw a6, 100(a0) +; RV64IZCMP-SR-NEXT: sw a7, 96(a0) +; RV64IZCMP-SR-NEXT: sw t1, 92(a0) +; RV64IZCMP-SR-NEXT: sw s1, 88(a0) +; RV64IZCMP-SR-NEXT: sw s0, 84(a0) +; RV64IZCMP-SR-NEXT: sw t2, 80(a0) +; RV64IZCMP-SR-NEXT: sw ra, 76(a0) +; RV64IZCMP-SR-NEXT: sw s11, 72(a0) +; RV64IZCMP-SR-NEXT: sw s10, 68(a0) +; RV64IZCMP-SR-NEXT: sw s9, 64(a0) +; RV64IZCMP-SR-NEXT: sw s8, 60(a0) +; RV64IZCMP-SR-NEXT: sw s7, 56(a0) +; RV64IZCMP-SR-NEXT: sw s6, 52(a0) +; RV64IZCMP-SR-NEXT: sw s5, 48(a0) +; RV64IZCMP-SR-NEXT: sw s4, 44(a0) +; RV64IZCMP-SR-NEXT: sw s3, 40(a0) +; RV64IZCMP-SR-NEXT: sw s2, 36(a0) +; RV64IZCMP-SR-NEXT: sw t6, 32(a0) +; RV64IZCMP-SR-NEXT: sw t5, 28(a0) +; RV64IZCMP-SR-NEXT: sw t4, 24(a0) +; RV64IZCMP-SR-NEXT: sw t3, 20(a0) +; RV64IZCMP-SR-NEXT: ld a1, 8(sp) # 8-byte Folded Reload +; RV64IZCMP-SR-NEXT: sw a1, 16(a0) +; RV64IZCMP-SR-NEXT: ld a1, 16(sp) # 8-byte Folded Reload +; RV64IZCMP-SR-NEXT: sw a1, 12(a0) +; RV64IZCMP-SR-NEXT: ld a1, 24(sp) # 8-byte Folded Reload +; RV64IZCMP-SR-NEXT: sw a1, 8(a0) +; RV64IZCMP-SR-NEXT: ld a1, 32(sp) # 8-byte Folded Reload +; RV64IZCMP-SR-NEXT: sw a1, 4(a0) +; RV64IZCMP-SR-NEXT: ld a1, 40(sp) # 8-byte Folded Reload +; RV64IZCMP-SR-NEXT: sw a1, 0(a0) ; RV64IZCMP-SR-NEXT: cm.popret {ra, s0-s11}, 160 ; ; RV32I-LABEL: callee_no_irq: @@ -3805,84 +3757,82 @@ define void @callee_no_irq() { ; RV32I-NEXT: .cfi_offset s9, -44 ; RV32I-NEXT: .cfi_offset s10, -48 ; RV32I-NEXT: .cfi_offset s11, -52 -; RV32I-NEXT: lui a7, %hi(var_test_irq) -; RV32I-NEXT: lw a0, %lo(var_test_irq)(a7) -; RV32I-NEXT: sw a0, 24(sp) # 4-byte Folded Spill -; RV32I-NEXT: lw a0, %lo(var_test_irq+4)(a7) -; RV32I-NEXT: sw a0, 20(sp) # 4-byte Folded Spill -; RV32I-NEXT: lw a0, %lo(var_test_irq+8)(a7) -; RV32I-NEXT: sw a0, 16(sp) # 4-byte Folded Spill -; RV32I-NEXT: lw a0, %lo(var_test_irq+12)(a7) -; RV32I-NEXT: sw a0, 12(sp) # 4-byte Folded Spill -; RV32I-NEXT: addi a5, a7, %lo(var_test_irq) -; RV32I-NEXT: lw a0, 16(a5) -; RV32I-NEXT: sw a0, 8(sp) # 4-byte Folded Spill -; RV32I-NEXT: lw a0, 20(a5) -; RV32I-NEXT: sw a0, 4(sp) # 4-byte Folded Spill -; RV32I-NEXT: lw t0, 24(a5) -; RV32I-NEXT: lw t1, 28(a5) -; RV32I-NEXT: lw t2, 32(a5) -; RV32I-NEXT: lw t3, 36(a5) -; RV32I-NEXT: lw t4, 40(a5) -; RV32I-NEXT: lw t5, 44(a5) -; RV32I-NEXT: lw t6, 48(a5) -; RV32I-NEXT: lw s0, 52(a5) -; RV32I-NEXT: lw s1, 56(a5) -; RV32I-NEXT: lw s2, 60(a5) -; RV32I-NEXT: lw s3, 64(a5) -; RV32I-NEXT: lw s4, 68(a5) -; RV32I-NEXT: lw s5, 72(a5) -; RV32I-NEXT: lw s6, 76(a5) -; RV32I-NEXT: lw s7, 80(a5) -; RV32I-NEXT: lw s8, 84(a5) -; RV32I-NEXT: lw s9, 88(a5) -; RV32I-NEXT: lw s10, 92(a5) -; RV32I-NEXT: lw s11, 112(a5) -; RV32I-NEXT: lw ra, 116(a5) -; RV32I-NEXT: lw a3, 120(a5) -; RV32I-NEXT: lw a0, 124(a5) -; RV32I-NEXT: lw a6, 96(a5) -; RV32I-NEXT: lw a4, 100(a5) -; RV32I-NEXT: lw a2, 104(a5) -; RV32I-NEXT: lw a1, 108(a5) -; RV32I-NEXT: sw a0, 124(a5) -; RV32I-NEXT: sw a3, 120(a5) -; RV32I-NEXT: sw ra, 116(a5) -; RV32I-NEXT: sw s11, 112(a5) -; RV32I-NEXT: sw a1, 108(a5) -; RV32I-NEXT: sw a2, 104(a5) -; RV32I-NEXT: sw a4, 100(a5) -; RV32I-NEXT: sw a6, 96(a5) -; RV32I-NEXT: sw s10, 92(a5) -; RV32I-NEXT: sw s9, 88(a5) -; RV32I-NEXT: sw s8, 84(a5) -; RV32I-NEXT: sw s7, 80(a5) -; RV32I-NEXT: sw s6, 76(a5) -; RV32I-NEXT: sw s5, 72(a5) -; RV32I-NEXT: sw s4, 68(a5) -; RV32I-NEXT: sw s3, 64(a5) -; RV32I-NEXT: sw s2, 60(a5) -; RV32I-NEXT: sw s1, 56(a5) -; RV32I-NEXT: sw s0, 52(a5) -; RV32I-NEXT: sw t6, 48(a5) -; RV32I-NEXT: sw t5, 44(a5) -; RV32I-NEXT: sw t4, 40(a5) -; RV32I-NEXT: sw t3, 36(a5) -; RV32I-NEXT: sw t2, 32(a5) -; RV32I-NEXT: sw t1, 28(a5) -; RV32I-NEXT: sw t0, 24(a5) -; RV32I-NEXT: lw a0, 4(sp) # 4-byte Folded Reload -; RV32I-NEXT: sw a0, 20(a5) -; RV32I-NEXT: lw a0, 8(sp) # 4-byte Folded Reload -; RV32I-NEXT: sw a0, 16(a5) -; RV32I-NEXT: lw a0, 12(sp) # 4-byte Folded Reload -; RV32I-NEXT: sw a0, %lo(var_test_irq+12)(a7) -; RV32I-NEXT: lw a0, 16(sp) # 4-byte Folded Reload -; RV32I-NEXT: sw a0, %lo(var_test_irq+8)(a7) -; RV32I-NEXT: lw a0, 20(sp) # 4-byte Folded Reload -; RV32I-NEXT: sw a0, %lo(var_test_irq+4)(a7) -; RV32I-NEXT: lw a0, 24(sp) # 4-byte Folded Reload -; RV32I-NEXT: sw a0, %lo(var_test_irq)(a7) +; RV32I-NEXT: lui a0, %hi(var_test_irq) +; RV32I-NEXT: addi a0, a0, %lo(var_test_irq) +; RV32I-NEXT: lw a1, 0(a0) +; RV32I-NEXT: sw a1, 24(sp) # 4-byte Folded Spill +; RV32I-NEXT: lw a1, 4(a0) +; RV32I-NEXT: sw a1, 20(sp) # 4-byte Folded Spill +; RV32I-NEXT: lw a1, 8(a0) +; RV32I-NEXT: sw a1, 16(sp) # 4-byte Folded Spill +; RV32I-NEXT: lw a1, 12(a0) +; RV32I-NEXT: sw a1, 12(sp) # 4-byte Folded Spill +; RV32I-NEXT: lw a1, 16(a0) +; RV32I-NEXT: sw a1, 8(sp) # 4-byte Folded Spill +; RV32I-NEXT: lw a6, 20(a0) +; RV32I-NEXT: lw a7, 24(a0) +; RV32I-NEXT: lw t0, 28(a0) +; RV32I-NEXT: lw t1, 32(a0) +; RV32I-NEXT: lw t2, 36(a0) +; RV32I-NEXT: lw t3, 40(a0) +; RV32I-NEXT: lw t4, 44(a0) +; RV32I-NEXT: lw t5, 48(a0) +; RV32I-NEXT: lw t6, 52(a0) +; RV32I-NEXT: lw s0, 56(a0) +; RV32I-NEXT: lw s1, 60(a0) +; RV32I-NEXT: lw s2, 64(a0) +; RV32I-NEXT: lw s3, 68(a0) +; RV32I-NEXT: lw s4, 72(a0) +; RV32I-NEXT: lw s5, 76(a0) +; RV32I-NEXT: lw s6, 80(a0) +; RV32I-NEXT: lw s7, 84(a0) +; RV32I-NEXT: lw s8, 88(a0) +; RV32I-NEXT: lw s9, 92(a0) +; RV32I-NEXT: lw s10, 112(a0) +; RV32I-NEXT: lw s11, 116(a0) +; RV32I-NEXT: lw ra, 120(a0) +; RV32I-NEXT: lw a1, 124(a0) +; RV32I-NEXT: lw a5, 96(a0) +; RV32I-NEXT: lw a4, 100(a0) +; RV32I-NEXT: lw a3, 104(a0) +; RV32I-NEXT: lw a2, 108(a0) +; RV32I-NEXT: sw a1, 124(a0) +; RV32I-NEXT: sw ra, 120(a0) +; RV32I-NEXT: sw s11, 116(a0) +; RV32I-NEXT: sw s10, 112(a0) +; RV32I-NEXT: sw a2, 108(a0) +; RV32I-NEXT: sw a3, 104(a0) +; RV32I-NEXT: sw a4, 100(a0) +; RV32I-NEXT: sw a5, 96(a0) +; RV32I-NEXT: sw s9, 92(a0) +; RV32I-NEXT: sw s8, 88(a0) +; RV32I-NEXT: sw s7, 84(a0) +; RV32I-NEXT: sw s6, 80(a0) +; RV32I-NEXT: sw s5, 76(a0) +; RV32I-NEXT: sw s4, 72(a0) +; RV32I-NEXT: sw s3, 68(a0) +; RV32I-NEXT: sw s2, 64(a0) +; RV32I-NEXT: sw s1, 60(a0) +; RV32I-NEXT: sw s0, 56(a0) +; RV32I-NEXT: sw t6, 52(a0) +; RV32I-NEXT: sw t5, 48(a0) +; RV32I-NEXT: sw t4, 44(a0) +; RV32I-NEXT: sw t3, 40(a0) +; RV32I-NEXT: sw t2, 36(a0) +; RV32I-NEXT: sw t1, 32(a0) +; RV32I-NEXT: sw t0, 28(a0) +; RV32I-NEXT: sw a7, 24(a0) +; RV32I-NEXT: sw a6, 20(a0) +; RV32I-NEXT: lw a1, 8(sp) # 4-byte Folded Reload +; RV32I-NEXT: sw a1, 16(a0) +; RV32I-NEXT: lw a1, 12(sp) # 4-byte Folded Reload +; RV32I-NEXT: sw a1, 12(a0) +; RV32I-NEXT: lw a1, 16(sp) # 4-byte Folded Reload +; RV32I-NEXT: sw a1, 8(a0) +; RV32I-NEXT: lw a1, 20(sp) # 4-byte Folded Reload +; RV32I-NEXT: sw a1, 4(a0) +; RV32I-NEXT: lw a1, 24(sp) # 4-byte Folded Reload +; RV32I-NEXT: sw a1, 0(a0) ; 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 @@ -3915,21 +3865,21 @@ define void @callee_no_irq() { ; ; RV64I-LABEL: callee_no_irq: ; RV64I: # %bb.0: -; RV64I-NEXT: addi sp, sp, -160 -; RV64I-NEXT: .cfi_def_cfa_offset 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: addi sp, sp, -144 +; RV64I-NEXT: .cfi_def_cfa_offset 144 +; RV64I-NEXT: sd ra, 136(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s0, 128(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s1, 120(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s2, 112(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s3, 104(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s4, 96(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s5, 88(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s6, 80(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s7, 72(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s8, 64(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s9, 56(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s10, 48(sp) # 8-byte Folded Spill +; RV64I-NEXT: sd s11, 40(sp) # 8-byte Folded Spill ; RV64I-NEXT: .cfi_offset ra, -8 ; RV64I-NEXT: .cfi_offset s0, -16 ; RV64I-NEXT: .cfi_offset s1, -24 @@ -3943,97 +3893,95 @@ define void @callee_no_irq() { ; RV64I-NEXT: .cfi_offset s9, -88 ; RV64I-NEXT: .cfi_offset s10, -96 ; RV64I-NEXT: .cfi_offset s11, -104 -; RV64I-NEXT: lui a7, %hi(var_test_irq) -; RV64I-NEXT: lw a0, %lo(var_test_irq)(a7) -; RV64I-NEXT: sd a0, 48(sp) # 8-byte Folded Spill -; RV64I-NEXT: lw a0, %lo(var_test_irq+4)(a7) -; RV64I-NEXT: sd a0, 40(sp) # 8-byte Folded Spill -; RV64I-NEXT: lw a0, %lo(var_test_irq+8)(a7) -; RV64I-NEXT: sd a0, 32(sp) # 8-byte Folded Spill -; RV64I-NEXT: lw a0, %lo(var_test_irq+12)(a7) -; RV64I-NEXT: sd a0, 24(sp) # 8-byte Folded Spill -; RV64I-NEXT: addi a5, a7, %lo(var_test_irq) -; RV64I-NEXT: lw a0, 16(a5) -; RV64I-NEXT: sd a0, 16(sp) # 8-byte Folded Spill -; RV64I-NEXT: lw a0, 20(a5) -; RV64I-NEXT: sd a0, 8(sp) # 8-byte Folded Spill -; RV64I-NEXT: lw t0, 24(a5) -; RV64I-NEXT: lw t1, 28(a5) -; RV64I-NEXT: lw t2, 32(a5) -; RV64I-NEXT: lw t3, 36(a5) -; RV64I-NEXT: lw t4, 40(a5) -; RV64I-NEXT: lw t5, 44(a5) -; RV64I-NEXT: lw t6, 48(a5) -; RV64I-NEXT: lw s0, 52(a5) -; RV64I-NEXT: lw s1, 56(a5) -; RV64I-NEXT: lw s2, 60(a5) -; RV64I-NEXT: lw s3, 64(a5) -; RV64I-NEXT: lw s4, 68(a5) -; RV64I-NEXT: lw s5, 72(a5) -; RV64I-NEXT: lw s6, 76(a5) -; RV64I-NEXT: lw s7, 80(a5) -; RV64I-NEXT: lw s8, 84(a5) -; RV64I-NEXT: lw s9, 88(a5) -; RV64I-NEXT: lw s10, 92(a5) -; RV64I-NEXT: lw s11, 112(a5) -; RV64I-NEXT: lw ra, 116(a5) -; RV64I-NEXT: lw a3, 120(a5) -; RV64I-NEXT: lw a0, 124(a5) -; RV64I-NEXT: lw a6, 96(a5) -; RV64I-NEXT: lw a4, 100(a5) -; RV64I-NEXT: lw a2, 104(a5) -; RV64I-NEXT: lw a1, 108(a5) -; RV64I-NEXT: sw a0, 124(a5) -; RV64I-NEXT: sw a3, 120(a5) -; RV64I-NEXT: sw ra, 116(a5) -; RV64I-NEXT: sw s11, 112(a5) -; RV64I-NEXT: sw a1, 108(a5) -; RV64I-NEXT: sw a2, 104(a5) -; RV64I-NEXT: sw a4, 100(a5) -; RV64I-NEXT: sw a6, 96(a5) -; RV64I-NEXT: sw s10, 92(a5) -; RV64I-NEXT: sw s9, 88(a5) -; RV64I-NEXT: sw s8, 84(a5) -; RV64I-NEXT: sw s7, 80(a5) -; RV64I-NEXT: sw s6, 76(a5) -; RV64I-NEXT: sw s5, 72(a5) -; RV64I-NEXT: sw s4, 68(a5) -; RV64I-NEXT: sw s3, 64(a5) -; RV64I-NEXT: sw s2, 60(a5) -; RV64I-NEXT: sw s1, 56(a5) -; RV64I-NEXT: sw s0, 52(a5) -; RV64I-NEXT: sw t6, 48(a5) -; RV64I-NEXT: sw t5, 44(a5) -; RV64I-NEXT: sw t4, 40(a5) -; RV64I-NEXT: sw t3, 36(a5) -; RV64I-NEXT: sw t2, 32(a5) -; RV64I-NEXT: sw t1, 28(a5) -; RV64I-NEXT: sw t0, 24(a5) -; RV64I-NEXT: ld a0, 8(sp) # 8-byte Folded Reload -; RV64I-NEXT: sw a0, 20(a5) -; RV64I-NEXT: ld a0, 16(sp) # 8-byte Folded Reload -; RV64I-NEXT: sw a0, 16(a5) -; RV64I-NEXT: ld a0, 24(sp) # 8-byte Folded Reload -; RV64I-NEXT: sw a0, %lo(var_test_irq+12)(a7) -; RV64I-NEXT: ld a0, 32(sp) # 8-byte Folded Reload -; RV64I-NEXT: sw a0, %lo(var_test_irq+8)(a7) -; RV64I-NEXT: ld a0, 40(sp) # 8-byte Folded Reload -; RV64I-NEXT: sw a0, %lo(var_test_irq+4)(a7) -; RV64I-NEXT: ld a0, 48(sp) # 8-byte Folded Reload -; RV64I-NEXT: sw a0, %lo(var_test_irq)(a7) -; 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: lui a0, %hi(var_test_irq) +; RV64I-NEXT: addi a0, a0, %lo(var_test_irq) +; RV64I-NEXT: lw a1, 0(a0) +; RV64I-NEXT: sd a1, 32(sp) # 8-byte Folded Spill +; RV64I-NEXT: lw a1, 4(a0) +; RV64I-NEXT: sd a1, 24(sp) # 8-byte Folded Spill +; RV64I-NEXT: lw a1, 8(a0) +; RV64I-NEXT: sd a1, 16(sp) # 8-byte Folded Spill +; RV64I-NEXT: lw a1, 12(a0) +; RV64I-NEXT: sd a1, 8(sp) # 8-byte Folded Spill +; RV64I-NEXT: lw a1, 16(a0) +; RV64I-NEXT: sd a1, 0(sp) # 8-byte Folded Spill +; RV64I-NEXT: lw a6, 20(a0) +; RV64I-NEXT: lw a7, 24(a0) +; RV64I-NEXT: lw t0, 28(a0) +; RV64I-NEXT: lw t1, 32(a0) +; RV64I-NEXT: lw t2, 36(a0) +; RV64I-NEXT: lw t3, 40(a0) +; RV64I-NEXT: lw t4, 44(a0) +; RV64I-NEXT: lw t5, 48(a0) +; RV64I-NEXT: lw t6, 52(a0) +; RV64I-NEXT: lw s0, 56(a0) +; RV64I-NEXT: lw s1, 60(a0) +; RV64I-NEXT: lw s2, 64(a0) +; RV64I-NEXT: lw s3, 68(a0) +; RV64I-NEXT: lw s4, 72(a0) +; RV64I-NEXT: lw s5, 76(a0) +; RV64I-NEXT: lw s6, 80(a0) +; RV64I-NEXT: lw s7, 84(a0) +; RV64I-NEXT: lw s8, 88(a0) +; RV64I-NEXT: lw s9, 92(a0) +; RV64I-NEXT: lw s10, 112(a0) +; RV64I-NEXT: lw s11, 116(a0) +; RV64I-NEXT: lw ra, 120(a0) +; RV64I-NEXT: lw a1, 124(a0) +; RV64I-NEXT: lw a5, 96(a0) +; RV64I-NEXT: lw a4, 100(a0) +; RV64I-NEXT: lw a3, 104(a0) +; RV64I-NEXT: lw a2, 108(a0) +; RV64I-NEXT: sw a1, 124(a0) +; RV64I-NEXT: sw ra, 120(a0) +; RV64I-NEXT: sw s11, 116(a0) +; RV64I-NEXT: sw s10, 112(a0) +; RV64I-NEXT: sw a2, 108(a0) +; RV64I-NEXT: sw a3, 104(a0) +; RV64I-NEXT: sw a4, 100(a0) +; RV64I-NEXT: sw a5, 96(a0) +; RV64I-NEXT: sw s9, 92(a0) +; RV64I-NEXT: sw s8, 88(a0) +; RV64I-NEXT: sw s7, 84(a0) +; RV64I-NEXT: sw s6, 80(a0) +; RV64I-NEXT: sw s5, 76(a0) +; RV64I-NEXT: sw s4, 72(a0) +; RV64I-NEXT: sw s3, 68(a0) +; RV64I-NEXT: sw s2, 64(a0) +; RV64I-NEXT: sw s1, 60(a0) +; RV64I-NEXT: sw s0, 56(a0) +; RV64I-NEXT: sw t6, 52(a0) +; RV64I-NEXT: sw t5, 48(a0) +; RV64I-NEXT: sw t4, 44(a0) +; RV64I-NEXT: sw t3, 40(a0) +; RV64I-NEXT: sw t2, 36(a0) +; RV64I-NEXT: sw t1, 32(a0) +; RV64I-NEXT: sw t0, 28(a0) +; RV64I-NEXT: sw a7, 24(a0) +; RV64I-NEXT: sw a6, 20(a0) +; RV64I-NEXT: ld a1, 0(sp) # 8-byte Folded Reload +; RV64I-NEXT: sw a1, 16(a0) +; RV64I-NEXT: ld a1, 8(sp) # 8-byte Folded Reload +; RV64I-NEXT: sw a1, 12(a0) +; RV64I-NEXT: ld a1, 16(sp) # 8-byte Folded Reload +; RV64I-NEXT: sw a1, 8(a0) +; RV64I-NEXT: ld a1, 24(sp) # 8-byte Folded Reload +; RV64I-NEXT: sw a1, 4(a0) +; RV64I-NEXT: ld a1, 32(sp) # 8-byte Folded Reload +; RV64I-NEXT: sw a1, 0(a0) +; RV64I-NEXT: ld ra, 136(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s0, 128(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s1, 120(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s2, 112(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s3, 104(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s4, 96(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s5, 88(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s6, 80(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s7, 72(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s8, 64(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s9, 56(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s10, 48(sp) # 8-byte Folded Reload +; RV64I-NEXT: ld s11, 40(sp) # 8-byte Folded Reload ; RV64I-NEXT: .cfi_restore ra ; RV64I-NEXT: .cfi_restore s0 ; RV64I-NEXT: .cfi_restore s1 @@ -4047,7 +3995,7 @@ define void @callee_no_irq() { ; RV64I-NEXT: .cfi_restore s9 ; RV64I-NEXT: .cfi_restore s10 ; RV64I-NEXT: .cfi_restore s11 -; RV64I-NEXT: addi sp, sp, 160 +; RV64I-NEXT: addi sp, sp, 144 ; RV64I-NEXT: .cfi_def_cfa_offset 0 ; RV64I-NEXT: ret %val = load [32 x i32], ptr @var_test_irq |
