diff options
Diffstat (limited to 'llvm/lib/Target/AArch64/AArch64FalkorHWPFFix.cpp')
-rw-r--r-- | llvm/lib/Target/AArch64/AArch64FalkorHWPFFix.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64FalkorHWPFFix.cpp b/llvm/lib/Target/AArch64/AArch64FalkorHWPFFix.cpp index 6df8df0e65a..3acacf7ce58 100644 --- a/llvm/lib/Target/AArch64/AArch64FalkorHWPFFix.cpp +++ b/llvm/lib/Target/AArch64/AArch64FalkorHWPFFix.cpp @@ -638,9 +638,14 @@ static Optional<LoadInfo> getLoadInfo(const MachineInstr &MI) { break; } + // Loads from the stack pointer don't get prefetched. + unsigned BaseReg = MI.getOperand(BaseRegIdx).getReg(); + if (BaseReg == AArch64::SP || BaseReg == AArch64::WSP) + return None; + LoadInfo LI; LI.DestReg = DestRegIdx == -1 ? 0 : MI.getOperand(DestRegIdx).getReg(); - LI.BaseReg = MI.getOperand(BaseRegIdx).getReg(); + LI.BaseReg = BaseReg; LI.BaseRegIdx = BaseRegIdx; LI.OffsetOpnd = OffsetIdx == -1 ? nullptr : &MI.getOperand(OffsetIdx); LI.IsPrePost = IsPrePost; |