Skip to content

Commit 01ff573

Browse files
committed
Large spills fix
1 parent 3437eda commit 01ff573

File tree

2 files changed

+7
-3
lines changed

2 files changed

+7
-3
lines changed

llvm/lib/Target/RISCV/RISCVRegisterInfo.cpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -547,7 +547,9 @@ bool RISCVRegisterInfo::eliminateFrameIndex(MachineBasicBlock::iterator II,
547547
// MIPS Prefetch instructions require the offset to be 9 bits encoded.
548548
MI.getOperand(FIOperandNum + 1).ChangeToImmediate(0);
549549
} else if ((Opc == RISCV::PseudoRV32ZdinxLD ||
550-
Opc == RISCV::PseudoRV32ZdinxSD) &&
550+
Opc == RISCV::PseudoRV32ZdinxSD ||
551+
Opc == RISCV::PseudoLD_RV32_OPT ||
552+
Opc == RISCV::PseudoSD_RV32_OPT) &&
551553
Lo12 >= 2044) {
552554
// This instruction will be split into 2 instructions. The second
553555
// instruction will add 4 to the immediate. If that would overflow 12

llvm/test/CodeGen/RISCV/zilsd-large-spill.mir

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@
2121
; CHECK-NEXT: lui a0, 1
2222
; CHECK-NEXT: add a0, sp, a0
2323
; CHECK-NEXT: sd a4, -2040(a0) # 8-byte Folded Spill
24-
; CHECK-NEXT: sd a6, 2044(sp) # 8-byte Folded Spill
24+
; CHECK-NEXT: addi a0, sp, 2044
25+
; CHECK-NEXT: sd a6, 0(a0) # 8-byte Folded Spill
2526
; CHECK-NEXT: lui a0, 1
2627
; CHECK-NEXT: add a0, sp, a0
2728
; CHECK-NEXT: ld a0, -2024(a0) # 8-byte Folded Reload
@@ -31,7 +32,8 @@
3132
; CHECK-NEXT: lui a0, 1
3233
; CHECK-NEXT: add a0, sp, a0
3334
; CHECK-NEXT: ld a4, -2040(a0) # 8-byte Folded Reload
34-
; CHECK-NEXT: ld a6, 2044(sp) # 8-byte Folded Reload
35+
; CHECK-NEXT: addi a0, sp, 2044
36+
; CHECK-NEXT: ld a6, 0(a0) # 8-byte Folded Reload
3537
; CHECK-NEXT: addi sp, sp, 2032
3638
; CHECK-NEXT: addi sp, sp, 48
3739
; CHECK-NEXT: .cfi_def_cfa_offset 0

0 commit comments

Comments
 (0)