-
Notifications
You must be signed in to change notification settings - Fork 14.3k
Revert "[RISCV] Allow spilling to unused Zcmp Stack (#125959)" #137060
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
This reverts commit 50cdf6c. This patch causes miscompiles with vector and produces some odd code for ilp32e.
@llvm/pr-subscribers-backend-risc-v Author: Craig Topper (topperc) ChangesThis reverts commit 50cdf6c. This patch causes miscompiles with vector and produces some odd code for ilp32e. Patch is 256.88 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/137060.diff 10 Files Affected:
diff --git a/llvm/lib/Target/RISCV/RISCVFrameLowering.cpp b/llvm/lib/Target/RISCV/RISCVFrameLowering.cpp
index 1fd1048bcebf8..f09e3cb20a665 100644
--- a/llvm/lib/Target/RISCV/RISCVFrameLowering.cpp
+++ b/llvm/lib/Target/RISCV/RISCVFrameLowering.cpp
@@ -1795,15 +1795,10 @@ bool RISCVFrameLowering::assignCalleeSavedSpillSlots(
MFI.CreateFixedSpillStackObject(
QCIInterruptPushAmount, -static_cast<int64_t>(QCIInterruptPushAmount));
} else if (RVFI->isPushable(MF)) {
- // Allocate a fixed object that covers all the registers that are pushed.
- if (unsigned PushedRegs = RVFI->getRVPushRegs()) {
- int64_t PushedRegsBytes =
- static_cast<int64_t>(PushedRegs) * (STI.getXLen() / 8);
- MFI.CreateFixedSpillStackObject(PushedRegsBytes, -PushedRegsBytes);
- }
+ // Allocate a fixed object that covers the full push.
+ if (int64_t PushSize = RVFI->getRVPushStackSize())
+ MFI.CreateFixedSpillStackObject(PushSize, -PushSize);
} else if (int LibCallRegs = getLibCallID(MF, CSI) + 1) {
- // Allocate a fixed object that covers all of the stack allocated by the
- // libcall.
int64_t LibCallFrameSize =
alignTo((STI.getXLen() / 8) * LibCallRegs, getStackAlign());
MFI.CreateFixedSpillStackObject(LibCallFrameSize, -LibCallFrameSize);
diff --git a/llvm/test/CodeGen/RISCV/callee-saved-gprs.ll b/llvm/test/CodeGen/RISCV/callee-saved-gprs.ll
index f9f1ba60a8ac0..874cf897470e7 100644
--- a/llvm/test/CodeGen/RISCV/callee-saved-gprs.ll
+++ b/llvm/test/CodeGen/RISCV/callee-saved-gprs.ll
@@ -419,8 +419,8 @@ define void @callee() {
;
; RV32IZCMP-LABEL: callee:
; RV32IZCMP: # %bb.0:
-; RV32IZCMP-NEXT: cm.push {ra, s0-s11}, -80
-; RV32IZCMP-NEXT: .cfi_def_cfa_offset 80
+; RV32IZCMP-NEXT: cm.push {ra, s0-s11}, -96
+; RV32IZCMP-NEXT: .cfi_def_cfa_offset 96
; RV32IZCMP-NEXT: .cfi_offset ra, -52
; RV32IZCMP-NEXT: .cfi_offset s0, -48
; RV32IZCMP-NEXT: .cfi_offset s1, -44
@@ -436,18 +436,18 @@ define void @callee() {
; RV32IZCMP-NEXT: .cfi_offset s11, -4
; RV32IZCMP-NEXT: lui t0, %hi(var)
; RV32IZCMP-NEXT: lw a0, %lo(var)(t0)
-; RV32IZCMP-NEXT: sw a0, 24(sp) # 4-byte Folded Spill
+; RV32IZCMP-NEXT: sw a0, 28(sp) # 4-byte Folded Spill
; RV32IZCMP-NEXT: lw a0, %lo(var+4)(t0)
-; RV32IZCMP-NEXT: sw a0, 20(sp) # 4-byte Folded Spill
+; RV32IZCMP-NEXT: sw a0, 24(sp) # 4-byte Folded Spill
; RV32IZCMP-NEXT: lw a0, %lo(var+8)(t0)
-; RV32IZCMP-NEXT: sw a0, 16(sp) # 4-byte Folded Spill
+; RV32IZCMP-NEXT: sw a0, 20(sp) # 4-byte Folded Spill
; RV32IZCMP-NEXT: lw a0, %lo(var+12)(t0)
-; RV32IZCMP-NEXT: sw a0, 12(sp) # 4-byte Folded Spill
+; RV32IZCMP-NEXT: sw a0, 16(sp) # 4-byte Folded Spill
; RV32IZCMP-NEXT: addi a5, t0, %lo(var)
; RV32IZCMP-NEXT: lw a0, 16(a5)
-; RV32IZCMP-NEXT: sw a0, 8(sp) # 4-byte Folded Spill
+; RV32IZCMP-NEXT: sw a0, 12(sp) # 4-byte Folded Spill
; RV32IZCMP-NEXT: lw a0, 20(a5)
-; RV32IZCMP-NEXT: sw a0, 4(sp) # 4-byte Folded Spill
+; 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)
@@ -500,19 +500,19 @@ define void @callee() {
; RV32IZCMP-NEXT: sw t6, 32(a5)
; RV32IZCMP-NEXT: sw t5, 28(a5)
; RV32IZCMP-NEXT: sw t4, 24(a5)
-; RV32IZCMP-NEXT: lw a0, 4(sp) # 4-byte Folded Reload
-; RV32IZCMP-NEXT: sw a0, 20(a5)
; RV32IZCMP-NEXT: lw a0, 8(sp) # 4-byte Folded Reload
-; RV32IZCMP-NEXT: sw a0, 16(a5)
+; RV32IZCMP-NEXT: sw a0, 20(a5)
; RV32IZCMP-NEXT: lw a0, 12(sp) # 4-byte Folded Reload
-; RV32IZCMP-NEXT: sw a0, %lo(var+12)(t0)
+; RV32IZCMP-NEXT: sw a0, 16(a5)
; RV32IZCMP-NEXT: lw a0, 16(sp) # 4-byte Folded Reload
-; RV32IZCMP-NEXT: sw a0, %lo(var+8)(t0)
+; RV32IZCMP-NEXT: sw a0, %lo(var+12)(t0)
; RV32IZCMP-NEXT: lw a0, 20(sp) # 4-byte Folded Reload
-; RV32IZCMP-NEXT: sw a0, %lo(var+4)(t0)
+; RV32IZCMP-NEXT: sw a0, %lo(var+8)(t0)
; RV32IZCMP-NEXT: lw a0, 24(sp) # 4-byte Folded Reload
+; RV32IZCMP-NEXT: sw a0, %lo(var+4)(t0)
+; RV32IZCMP-NEXT: lw a0, 28(sp) # 4-byte Folded Reload
; RV32IZCMP-NEXT: sw a0, %lo(var)(t0)
-; RV32IZCMP-NEXT: cm.popret {ra, s0-s11}, 80
+; RV32IZCMP-NEXT: cm.popret {ra, s0-s11}, 96
;
; RV32IZCMP-WITH-FP-LABEL: callee:
; RV32IZCMP-WITH-FP: # %bb.0:
@@ -1055,18 +1055,18 @@ define void @callee() {
; RV64IZCMP-NEXT: .cfi_offset s11, -8
; RV64IZCMP-NEXT: lui t0, %hi(var)
; RV64IZCMP-NEXT: lw a0, %lo(var)(t0)
-; RV64IZCMP-NEXT: sd a0, 48(sp) # 8-byte Folded Spill
-; RV64IZCMP-NEXT: lw a0, %lo(var+4)(t0)
; RV64IZCMP-NEXT: sd a0, 40(sp) # 8-byte Folded Spill
-; RV64IZCMP-NEXT: lw a0, %lo(var+8)(t0)
+; RV64IZCMP-NEXT: lw a0, %lo(var+4)(t0)
; RV64IZCMP-NEXT: sd a0, 32(sp) # 8-byte Folded Spill
-; RV64IZCMP-NEXT: lw a0, %lo(var+12)(t0)
+; RV64IZCMP-NEXT: lw a0, %lo(var+8)(t0)
; RV64IZCMP-NEXT: sd a0, 24(sp) # 8-byte Folded Spill
+; RV64IZCMP-NEXT: lw a0, %lo(var+12)(t0)
+; RV64IZCMP-NEXT: sd a0, 16(sp) # 8-byte Folded Spill
; RV64IZCMP-NEXT: addi a5, t0, %lo(var)
; 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 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)
@@ -1119,17 +1119,17 @@ define void @callee() {
; 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: ld a0, 0(sp) # 8-byte Folded Reload
; RV64IZCMP-NEXT: sw a0, 20(a5)
-; RV64IZCMP-NEXT: ld a0, 16(sp) # 8-byte Folded Reload
+; RV64IZCMP-NEXT: ld a0, 8(sp) # 8-byte Folded Reload
; RV64IZCMP-NEXT: sw a0, 16(a5)
-; RV64IZCMP-NEXT: ld a0, 24(sp) # 8-byte Folded Reload
+; RV64IZCMP-NEXT: ld a0, 16(sp) # 8-byte Folded Reload
; RV64IZCMP-NEXT: sw a0, %lo(var+12)(t0)
-; RV64IZCMP-NEXT: ld a0, 32(sp) # 8-byte Folded Reload
+; RV64IZCMP-NEXT: ld a0, 24(sp) # 8-byte Folded Reload
; RV64IZCMP-NEXT: sw a0, %lo(var+8)(t0)
-; RV64IZCMP-NEXT: ld a0, 40(sp) # 8-byte Folded Reload
+; RV64IZCMP-NEXT: ld a0, 32(sp) # 8-byte Folded Reload
; RV64IZCMP-NEXT: sw a0, %lo(var+4)(t0)
-; RV64IZCMP-NEXT: ld a0, 48(sp) # 8-byte Folded Reload
+; RV64IZCMP-NEXT: ld a0, 40(sp) # 8-byte Folded Reload
; RV64IZCMP-NEXT: sw a0, %lo(var)(t0)
; RV64IZCMP-NEXT: cm.popret {ra, s0-s11}, 160
;
@@ -1798,54 +1798,54 @@ define void @caller() {
; RV32IZCMP-NEXT: .cfi_offset s9, -12
; RV32IZCMP-NEXT: .cfi_offset s10, -8
; RV32IZCMP-NEXT: .cfi_offset s11, -4
-; RV32IZCMP-NEXT: addi sp, sp, -32
-; RV32IZCMP-NEXT: .cfi_def_cfa_offset 144
+; RV32IZCMP-NEXT: addi sp, sp, -48
+; RV32IZCMP-NEXT: .cfi_def_cfa_offset 160
; RV32IZCMP-NEXT: lui s0, %hi(var)
; RV32IZCMP-NEXT: lw a0, %lo(var)(s0)
-; RV32IZCMP-NEXT: sw a0, 88(sp) # 4-byte Folded Spill
+; RV32IZCMP-NEXT: sw a0, 92(sp) # 4-byte Folded Spill
; RV32IZCMP-NEXT: lw a0, %lo(var+4)(s0)
-; RV32IZCMP-NEXT: sw a0, 84(sp) # 4-byte Folded Spill
+; RV32IZCMP-NEXT: sw a0, 88(sp) # 4-byte Folded Spill
; RV32IZCMP-NEXT: lw a0, %lo(var+8)(s0)
-; RV32IZCMP-NEXT: sw a0, 80(sp) # 4-byte Folded Spill
+; RV32IZCMP-NEXT: sw a0, 84(sp) # 4-byte Folded Spill
; RV32IZCMP-NEXT: lw a0, %lo(var+12)(s0)
-; RV32IZCMP-NEXT: sw a0, 76(sp) # 4-byte Folded Spill
+; RV32IZCMP-NEXT: sw a0, 80(sp) # 4-byte Folded Spill
; RV32IZCMP-NEXT: addi s1, s0, %lo(var)
; RV32IZCMP-NEXT: lw a0, 16(s1)
-; RV32IZCMP-NEXT: sw a0, 72(sp) # 4-byte Folded Spill
+; RV32IZCMP-NEXT: sw a0, 76(sp) # 4-byte Folded Spill
; RV32IZCMP-NEXT: lw a0, 20(s1)
-; RV32IZCMP-NEXT: sw a0, 68(sp) # 4-byte Folded Spill
+; RV32IZCMP-NEXT: sw a0, 72(sp) # 4-byte Folded Spill
; RV32IZCMP-NEXT: lw a0, 24(s1)
-; RV32IZCMP-NEXT: sw a0, 64(sp) # 4-byte Folded Spill
+; RV32IZCMP-NEXT: sw a0, 68(sp) # 4-byte Folded Spill
; RV32IZCMP-NEXT: lw a0, 28(s1)
-; RV32IZCMP-NEXT: sw a0, 60(sp) # 4-byte Folded Spill
+; RV32IZCMP-NEXT: sw a0, 64(sp) # 4-byte Folded Spill
; RV32IZCMP-NEXT: lw a0, 32(s1)
-; RV32IZCMP-NEXT: sw a0, 56(sp) # 4-byte Folded Spill
+; RV32IZCMP-NEXT: sw a0, 60(sp) # 4-byte Folded Spill
; RV32IZCMP-NEXT: lw a0, 36(s1)
-; RV32IZCMP-NEXT: sw a0, 52(sp) # 4-byte Folded Spill
+; RV32IZCMP-NEXT: sw a0, 56(sp) # 4-byte Folded Spill
; RV32IZCMP-NEXT: lw a0, 40(s1)
-; RV32IZCMP-NEXT: sw a0, 48(sp) # 4-byte Folded Spill
+; RV32IZCMP-NEXT: sw a0, 52(sp) # 4-byte Folded Spill
; RV32IZCMP-NEXT: lw a0, 44(s1)
-; RV32IZCMP-NEXT: sw a0, 44(sp) # 4-byte Folded Spill
+; RV32IZCMP-NEXT: sw a0, 48(sp) # 4-byte Folded Spill
; RV32IZCMP-NEXT: lw a0, 48(s1)
-; RV32IZCMP-NEXT: sw a0, 40(sp) # 4-byte Folded Spill
+; RV32IZCMP-NEXT: sw a0, 44(sp) # 4-byte Folded Spill
; RV32IZCMP-NEXT: lw a0, 52(s1)
-; RV32IZCMP-NEXT: sw a0, 36(sp) # 4-byte Folded Spill
+; RV32IZCMP-NEXT: sw a0, 40(sp) # 4-byte Folded Spill
; RV32IZCMP-NEXT: lw a0, 56(s1)
-; RV32IZCMP-NEXT: sw a0, 32(sp) # 4-byte Folded Spill
+; RV32IZCMP-NEXT: sw a0, 36(sp) # 4-byte Folded Spill
; RV32IZCMP-NEXT: lw a0, 60(s1)
-; RV32IZCMP-NEXT: sw a0, 28(sp) # 4-byte Folded Spill
+; RV32IZCMP-NEXT: sw a0, 32(sp) # 4-byte Folded Spill
; RV32IZCMP-NEXT: lw a0, 64(s1)
-; RV32IZCMP-NEXT: sw a0, 24(sp) # 4-byte Folded Spill
+; RV32IZCMP-NEXT: sw a0, 28(sp) # 4-byte Folded Spill
; RV32IZCMP-NEXT: lw a0, 68(s1)
-; RV32IZCMP-NEXT: sw a0, 20(sp) # 4-byte Folded Spill
+; RV32IZCMP-NEXT: sw a0, 24(sp) # 4-byte Folded Spill
; RV32IZCMP-NEXT: lw a0, 72(s1)
-; RV32IZCMP-NEXT: sw a0, 16(sp) # 4-byte Folded Spill
+; RV32IZCMP-NEXT: sw a0, 20(sp) # 4-byte Folded Spill
; RV32IZCMP-NEXT: lw a0, 76(s1)
-; RV32IZCMP-NEXT: sw a0, 12(sp) # 4-byte Folded Spill
+; RV32IZCMP-NEXT: sw a0, 16(sp) # 4-byte Folded Spill
; RV32IZCMP-NEXT: lw a0, 80(s1)
-; RV32IZCMP-NEXT: sw a0, 8(sp) # 4-byte Folded Spill
+; RV32IZCMP-NEXT: sw a0, 12(sp) # 4-byte Folded Spill
; RV32IZCMP-NEXT: lw a0, 84(s1)
-; RV32IZCMP-NEXT: sw a0, 4(sp) # 4-byte Folded Spill
+; RV32IZCMP-NEXT: sw a0, 8(sp) # 4-byte Folded Spill
; RV32IZCMP-NEXT: lw s4, 88(s1)
; RV32IZCMP-NEXT: lw s5, 92(s1)
; RV32IZCMP-NEXT: lw s6, 96(s1)
@@ -1867,51 +1867,51 @@ define void @caller() {
; RV32IZCMP-NEXT: sw s6, 96(s1)
; RV32IZCMP-NEXT: sw s5, 92(s1)
; RV32IZCMP-NEXT: sw s4, 88(s1)
-; RV32IZCMP-NEXT: lw a0, 4(sp) # 4-byte Folded Reload
-; RV32IZCMP-NEXT: sw a0, 84(s1)
; RV32IZCMP-NEXT: lw a0, 8(sp) # 4-byte Folded Reload
-; RV32IZCMP-NEXT: sw a0, 80(s1)
+; RV32IZCMP-NEXT: sw a0, 84(s1)
; RV32IZCMP-NEXT: lw a0, 12(sp) # 4-byte Folded Reload
-; RV32IZCMP-NEXT: sw a0, 76(s1)
+; RV32IZCMP-NEXT: sw a0, 80(s1)
; RV32IZCMP-NEXT: lw a0, 16(sp) # 4-byte Folded Reload
-; RV32IZCMP-NEXT: sw a0, 72(s1)
+; RV32IZCMP-NEXT: sw a0, 76(s1)
; RV32IZCMP-NEXT: lw a0, 20(sp) # 4-byte Folded Reload
-; RV32IZCMP-NEXT: sw a0, 68(s1)
+; RV32IZCMP-NEXT: sw a0, 72(s1)
; RV32IZCMP-NEXT: lw a0, 24(sp) # 4-byte Folded Reload
-; RV32IZCMP-NEXT: sw a0, 64(s1)
+; RV32IZCMP-NEXT: sw a0, 68(s1)
; RV32IZCMP-NEXT: lw a0, 28(sp) # 4-byte Folded Reload
-; RV32IZCMP-NEXT: sw a0, 60(s1)
+; RV32IZCMP-NEXT: sw a0, 64(s1)
; RV32IZCMP-NEXT: lw a0, 32(sp) # 4-byte Folded Reload
-; RV32IZCMP-NEXT: sw a0, 56(s1)
+; RV32IZCMP-NEXT: sw a0, 60(s1)
; RV32IZCMP-NEXT: lw a0, 36(sp) # 4-byte Folded Reload
-; RV32IZCMP-NEXT: sw a0, 52(s1)
+; RV32IZCMP-NEXT: sw a0, 56(s1)
; RV32IZCMP-NEXT: lw a0, 40(sp) # 4-byte Folded Reload
-; RV32IZCMP-NEXT: sw a0, 48(s1)
+; RV32IZCMP-NEXT: sw a0, 52(s1)
; RV32IZCMP-NEXT: lw a0, 44(sp) # 4-byte Folded Reload
-; RV32IZCMP-NEXT: sw a0, 44(s1)
+; RV32IZCMP-NEXT: sw a0, 48(s1)
; RV32IZCMP-NEXT: lw a0, 48(sp) # 4-byte Folded Reload
-; RV32IZCMP-NEXT: sw a0, 40(s1)
+; RV32IZCMP-NEXT: sw a0, 44(s1)
; RV32IZCMP-NEXT: lw a0, 52(sp) # 4-byte Folded Reload
-; RV32IZCMP-NEXT: sw a0, 36(s1)
+; RV32IZCMP-NEXT: sw a0, 40(s1)
; RV32IZCMP-NEXT: lw a0, 56(sp) # 4-byte Folded Reload
-; RV32IZCMP-NEXT: sw a0, 32(s1)
+; RV32IZCMP-NEXT: sw a0, 36(s1)
; RV32IZCMP-NEXT: lw a0, 60(sp) # 4-byte Folded Reload
-; RV32IZCMP-NEXT: sw a0, 28(s1)
+; RV32IZCMP-NEXT: sw a0, 32(s1)
; RV32IZCMP-NEXT: lw a0, 64(sp) # 4-byte Folded Reload
-; RV32IZCMP-NEXT: sw a0, 24(s1)
+; RV32IZCMP-NEXT: sw a0, 28(s1)
; RV32IZCMP-NEXT: lw a0, 68(sp) # 4-byte Folded Reload
-; RV32IZCMP-NEXT: sw a0, 20(s1)
+; RV32IZCMP-NEXT: sw a0, 24(s1)
; RV32IZCMP-NEXT: lw a0, 72(sp) # 4-byte Folded Reload
-; RV32IZCMP-NEXT: sw a0, 16(s1)
+; RV32IZCMP-NEXT: sw a0, 20(s1)
; RV32IZCMP-NEXT: lw a0, 76(sp) # 4-byte Folded Reload
-; RV32IZCMP-NEXT: sw a0, %lo(var+12)(s0)
+; RV32IZCMP-NEXT: sw a0, 16(s1)
; RV32IZCMP-NEXT: lw a0, 80(sp) # 4-byte Folded Reload
-; RV32IZCMP-NEXT: sw a0, %lo(var+8)(s0)
+; RV32IZCMP-NEXT: sw a0, %lo(var+12)(s0)
; RV32IZCMP-NEXT: lw a0, 84(sp) # 4-byte Folded Reload
-; RV32IZCMP-NEXT: sw a0, %lo(var+4)(s0)
+; RV32IZCMP-NEXT: sw a0, %lo(var+8)(s0)
; RV32IZCMP-NEXT: lw a0, 88(sp) # 4-byte Folded Reload
+; RV32IZCMP-NEXT: sw a0, %lo(var+4)(s0)
+; RV32IZCMP-NEXT: lw a0, 92(sp) # 4-byte Folded Reload
; RV32IZCMP-NEXT: sw a0, %lo(var)(s0)
-; RV32IZCMP-NEXT: addi sp, sp, 32
+; RV32IZCMP-NEXT: addi sp, sp, 48
; RV32IZCMP-NEXT: .cfi_def_cfa_offset 112
; RV32IZCMP-NEXT: cm.popret {ra, s0-s11}, 112
;
@@ -2609,50 +2609,50 @@ define void @caller() {
; RV64IZCMP-NEXT: .cfi_def_cfa_offset 288
; RV64IZCMP-NEXT: lui s0, %hi(var)
; RV64IZCMP-NEXT: lw a0, %lo(var)(s0)
-; RV64IZCMP-NEXT: sd a0, 176(sp) # 8-byte Folded Spill
-; RV64IZCMP-NEXT: lw a0, %lo(var+4)(s0)
; RV64IZCMP-NEXT: sd a0, 168(sp) # 8-byte Folded Spill
-; RV64IZCMP-NEXT: lw a0, %lo(var+8)(s0)
+; RV64IZCMP-NEXT: lw a0, %lo(var+4)(s0)
; RV64IZCMP-NEXT: sd a0, 160(sp) # 8-byte Folded Spill
-; RV64IZCMP-NEXT: lw a0, %lo(var+12)(s0)
+; RV64IZCMP-NEXT: lw a0, %lo(var+8)(s0)
; RV64IZCMP-NEXT: sd a0, 152(sp) # 8-byte Folded Spill
+; RV64IZCMP-NEXT: lw a0, %lo(var+12)(s0)
+; RV64IZCMP-NEXT: sd a0, 144(sp) # 8-byte Folded Spill
; RV64IZCMP-NEXT: addi s1, s0, %lo(var)
; RV64IZCMP-NEXT: lw a0, 16(s1)
-; RV64IZCMP-NEXT: sd a0, 144(sp) # 8-byte Folded Spill
-; RV64IZCMP-NEXT: lw a0, 20(s1)
; RV64IZCMP-NEXT: sd a0, 136(sp) # 8-byte Folded Spill
-; RV64IZCMP-NEXT: lw a0, 24(s1)
+; RV64IZCMP-NEXT: lw a0, 20(s1)
; RV64IZCMP-NEXT: sd a0, 128(sp) # 8-byte Folded Spill
-; RV64IZCMP-NEXT: lw a0, 28(s1)
+; RV64IZCMP-NEXT: lw a0, 24(s1)
; RV64IZCMP-NEXT: sd a0, 120(sp) # 8-byte Folded Spill
-; RV64IZCMP-NEXT: lw a0, 32(s1)
+; RV64IZCMP-NEXT: lw a0, 28(s1)
; RV64IZCMP-NEXT: sd a0, 112(sp) # 8-byte Folded Spill
-; RV64IZCMP-NEXT: lw a0, 36(s1)
+; RV64IZCMP-NEXT: lw a0, 32(s1)
; RV64IZCMP-NEXT: sd a0, 104(sp) # 8-byte Folded Spill
-; RV64IZCMP-NEXT: lw a0, 40(s1)
+; RV64IZCMP-NEXT: lw a0, 36(s1)
; RV64IZCMP-NEXT: sd a0, 96(sp) # 8-byte Folded Spill
-; RV64IZCMP-NEXT: lw a0, 44(s1)
+; RV64IZCMP-NEXT: lw a0, 40(s1)
; RV64IZCMP-NEXT: sd a0, 88(sp) # 8-byte Folded Spill
-; RV64IZCMP-NEXT: lw a0, 48(s1)
+; RV64IZCMP-NEXT: lw a0, 44(s1)
; RV64IZCMP-NEXT: sd a0, 80(sp) # 8-byte Folded Spill
-; RV64IZCMP-NEXT: lw a0, 52(s1)
+; RV64IZCMP-NEXT: lw a0, 48(s1)
; RV64IZCMP-NEXT: sd a0, 72(sp) # 8-byte Folded Spill
-; RV64IZCMP-NEXT: lw a0, 56(s1)
+; RV64IZCMP-NEXT: lw a0, 52(s1)
; RV64IZCMP-NEXT: sd a0, 64(sp) # 8-byte Folded Spill
-; RV64IZCMP-NEXT: lw a0, 60(s1)
+; RV64IZCMP-NEXT: lw a0, 56(s1)
; RV64IZCMP-NEXT: sd a0, 56(sp) # 8-byte Folded Spill
-; RV64IZCMP-NEXT: lw a0, 64(s1)
+; RV64IZCMP-NEXT: lw a0, 60(s1)
; RV64IZCMP-NEXT: sd a0, 48(sp) # 8-byte Folded Spill
-; RV64IZCMP-NEXT: lw a0, 68(s1)
+; RV64IZCMP-NEXT: lw a0, 64(s1)
; RV64IZCMP-NEXT: sd a0, 40(sp) # 8-byte Folded Spill
-; RV64IZCMP-NEXT: lw a0, 72(s1)
+; RV64IZCMP-NEXT: lw a0, 68(s1)
; RV64IZCMP-NEXT: sd a0, 32(sp) # 8-byte Folded Spill
-; RV64IZCMP-NEXT: lw a0, 76(s1)
+; RV64IZCMP-NEXT: lw a0, 72(s1)
; RV64IZCMP-NEXT: sd a0, 24(sp) # 8-byte Folded Spill
-; RV64IZCMP-NEXT: lw a0, 80(s1)
+; RV64IZCMP-NEXT: lw a0, 76(s1)
; RV64IZCMP-NEXT: sd a0, 16(sp) # 8-byte Folded Spill
-; RV64IZCMP-NEXT: lw a0, 84(s1)
+; RV64IZCMP-NEXT: lw a0, 80(s1)
; RV64IZCMP-NEXT: sd a0, 8(sp) # 8-byte Folded Spill
+; RV64IZCMP-NEXT: lw a0, 84(s1)
+; RV64IZCMP-NEXT: sd a0, 0(sp) # 8-byte Folded Spill
; RV64IZCMP-NEXT: lw s4, 88(s1)
; RV64IZCMP-NEXT: lw s5, 92(s1)
; RV64IZCMP-NEXT: lw s6, 96(s1)
@@ -2674,49 +2674,49 @@ define void @caller() {
; RV64IZCMP-NEXT: sw s6, 96(s1)
; RV64IZCMP-NEXT: sw s5, 92(s1)
; RV64IZCMP-NEXT: sw s4, 88(s1)
-; RV64IZCMP-NEXT: ld a0, 8(sp) # 8-byte Folded Reload
+; RV64IZCMP-NEXT: ld a0, 0(sp) # 8-byte Folded Reload
; RV64IZCMP-NEXT: sw a0, 84(s1)
-; RV64IZCMP-NEXT: ld a0, 16(sp) # 8-byte Folded Reload
+; RV64IZCMP-NEXT: ld a0, 8(sp) # 8-byte Folded Reload
; RV64IZCMP-NEXT: sw a0, 80(s1)
-; RV64IZCMP-NEXT: ld a0, 24(sp) # 8-byte Folded Reload
+; RV64IZCMP-NEXT: ld a0, 16(sp) # 8-byte Folded Reload
; RV64IZCMP-NEXT: sw a0, 76(s1)
-; RV64IZCMP-NEXT: ld a0, 32(sp) # 8-byte Folded Reload
+; RV64IZCMP-NEXT: ld a0, 24(sp) # 8-byte Folded Reload
; RV64IZCMP-NEXT: sw a0, 72(s1)
-; RV64IZCMP-NEXT: ld a0, 40(sp) # 8-byte Folded Reload
+; RV64IZCMP-NEXT: ld a0, 32(sp) # 8-byte Folded Reload
; RV64IZCMP-NEXT: sw a0, 68(s1)
-; RV64IZCMP-NEXT: ld a0, 48(sp) # 8-byte Folded Reload
+; RV64IZCMP-NEXT: ld a0, 40(sp) # 8-byte Folded Reload
; RV64IZCMP-NEXT: sw a0, 64(s1)
-; RV64IZCMP-NEXT: ld a0, 56(sp) # 8-byte Folded Reload
+; RV64IZCMP-NEXT: ld a0, 48(sp) # 8-byte Folded Reload
; RV64IZCMP-NEXT: sw a0, 60(s1)
-; RV64IZCMP-NEXT: ld a0, 64(sp) # 8-byte Folded Reload
+; RV64IZCMP-NEXT: ld a0, 56(sp) # 8-byte Folded Reload
; RV64IZCMP-NEXT: sw a0, 56(s1)
-; RV64IZCMP-NEXT: ld a0, 72(sp) # 8-byte Folded Reload
+; RV64IZCMP-NEXT: ld a0, 64(sp) # 8-byte Folded Reload
; RV64IZCMP-NEXT: sw a0, 52(s1)
-; RV64IZCMP-NEXT: ld a0, 80(sp) # 8-byte Folded Reload
+; RV64IZCMP-NEXT: ld a0, 72(sp) # 8-byte Folded Reload
; RV64IZCMP-NEXT: sw a0, 48(s1)
-; RV64IZCMP-NEXT: ld a0, 88(sp) # 8-byte Folded Reload
+; RV64IZCMP-NEXT: ld a0, 80(sp) # 8-byte Folded Reload
; RV64IZCMP-NEXT: sw a0, 44(s1)
-; RV64IZCMP-NEXT: ld a0, 96(sp) # 8-byte Folded Reload
+; RV64IZCMP-NEXT: ld a0, 88(sp) # 8-byte Folded Reload
; RV64IZCMP-NEXT: sw a0, 40(s1)
-; RV64IZCMP-NEXT: ld a0, 104(sp) # 8-byte Folded Reload
+; RV64IZCMP-NEXT: ld a0, 96(sp) # 8-byte Folded Reload
; RV64IZCMP-NEXT: sw a0, 36(s1)
-; RV64IZCMP-NEXT: ld a0, 112(sp) # 8-byte Folded Reload
+; RV64IZCMP-NEXT: ld a0, 104(sp) # 8-byte Folded Reload
; RV64IZCMP-NEXT: sw a0, 32(s1)
-; RV64IZCMP-NEXT: ld a0, 120(sp) # 8-byte Folded Reload
+; RV64IZCMP-NEXT: ld a0, 112(sp) # 8-byte Folded Reload
; RV64IZCMP-NEXT: sw a0, 28(s1)
-; RV64IZCMP-NEXT: ld a0, 128(sp) # 8-byte Folded Reload
+; RV64IZCMP-NEXT: ld a0, 120(sp) # 8-byte Folded Reload
; RV64IZCMP-NEXT: sw a0, 24(s1)
-; RV64IZCMP-NEXT: ld a0, 136(sp) # 8-byte Folded Reload
+; RV64IZCMP-NEXT: ld a0, 128(sp) # 8-byte Folded Reload
; RV64IZCMP-NEXT: sw a0, 20(s1)
-; RV64IZCMP-NEXT: ld a0, 144(sp) # 8-byte Folded Reload
+; RV64IZCMP-NEXT: ld a0, 136(sp) # 8-byte Folded Reload
; RV64IZCMP-NEXT: sw a0, 16(s1)
-; RV64IZCMP-NEXT: ld a0, 152(sp) # 8-byte Folded Reload
+; RV64IZCMP-NEXT: ld a0, 144(sp) # 8-byte Folded Reload
; RV64IZCMP-NEXT: sw a0, %lo(var+12)(s0)
-; RV64IZCMP-NEXT: ld a0, 160(sp) # 8-byte Folded Reload
+; RV64IZCMP-NEXT: ld a0, 152(sp) # 8-byte Folded Reload
; RV64IZCMP-NEXT: sw a0, %lo(var+8)(s0)
-; RV64IZCMP-NEXT: ld a0, 168(sp) # 8-byte Folded Reload...
[truncated]
|
LLVM Buildbot has detected a new failure on builder Full details are available at: https://lab.llvm.org/buildbot/#/builders/174/builds/16677 Here is the relevant piece of the build log for the reference
|
…lvm#137060) This reverts commit 50cdf6c. This patch causes miscompiles with vector and produces some odd code for ilp32e.
…lvm#137060) This reverts commit 50cdf6c. This patch causes miscompiles with vector and produces some odd code for ilp32e.
…lvm#137060) This reverts commit 50cdf6c. This patch causes miscompiles with vector and produces some odd code for ilp32e.
…lvm#137060) This reverts commit 50cdf6c. This patch causes miscompiles with vector and produces some odd code for ilp32e.
This reverts commit 50cdf6c.
This patch causes miscompiles with vector and produces some odd code for ilp32e.