Skip to content

Commit 27a6ad0

Browse files
committed
[RISCV] Add RISCVISD::LD_RV32/SD_RV32 to isWorthFoldingAdd.
1 parent 647f3d5 commit 27a6ad0

File tree

2 files changed

+7
-3
lines changed

2 files changed

+7
-3
lines changed

llvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2827,6 +2827,8 @@ static bool selectConstantAddr(SelectionDAG *CurDAG, const SDLoc &DL,
28272827
static bool isWorthFoldingAdd(SDValue Add) {
28282828
for (auto *User : Add->users()) {
28292829
if (User->getOpcode() != ISD::LOAD && User->getOpcode() != ISD::STORE &&
2830+
User->getOpcode() != RISCVISD::LD_RV32 &&
2831+
User->getOpcode() != RISCVISD::SD_RV32 &&
28302832
User->getOpcode() != ISD::ATOMIC_LOAD &&
28312833
User->getOpcode() != ISD::ATOMIC_STORE)
28322834
return false;
@@ -2841,6 +2843,9 @@ static bool isWorthFoldingAdd(SDValue Add) {
28412843
if (User->getOpcode() == ISD::ATOMIC_STORE &&
28422844
cast<AtomicSDNode>(User)->getVal() == Add)
28432845
return false;
2846+
if (User->getOpcode() == RISCVISD::SD_RV32 &&
2847+
(User->getOperand(0) == Add || User->getOperand(1) == Add))
2848+
return false;
28442849
if (isStrongerThanMonotonic(cast<MemSDNode>(User)->getSuccessOrdering()))
28452850
return false;
28462851
}

llvm/test/CodeGen/RISCV/zilsd.ll

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -122,13 +122,12 @@ define void @large_offset(ptr nocapture %p, i64 %d) nounwind {
122122
; CHECK-LABEL: large_offset:
123123
; CHECK: # %bb.0: # %entry
124124
; CHECK-NEXT: lui a1, 4
125-
; CHECK-NEXT: addi a1, a1, -384
126125
; CHECK-NEXT: add a0, a0, a1
127-
; CHECK-NEXT: ld a2, 0(a0)
126+
; CHECK-NEXT: ld a2, -384(a0)
128127
; CHECK-NEXT: addi a2, a2, 1
129128
; CHECK-NEXT: seqz a1, a2
130129
; CHECK-NEXT: add a3, a3, a1
131-
; CHECK-NEXT: sd a2, 0(a0)
130+
; CHECK-NEXT: sd a2, -384(a0)
132131
; CHECK-NEXT: ret
133132
entry:
134133
%add.ptr = getelementptr inbounds i64, ptr %p, i64 2000

0 commit comments

Comments
 (0)