[llvm] [AArch64][GlobalISel] Adopt some Ld1Lane* patterns for GlobalISel to reduce codegen regressions (PR #69607)
Pierre van Houtryve via llvm-commits
llvm-commits at lists.llvm.org
Thu Oct 26 02:01:25 PDT 2023
================
@@ -62,9 +63,16 @@ bool GIMatchTableExecutor::isBaseWithConstantOffset(
bool GIMatchTableExecutor::isObviouslySafeToFold(MachineInstr &MI,
MachineInstr &IntoMI) const {
// Immediate neighbours are already folded.
- if (MI.getParent() == IntoMI.getParent() &&
- std::next(MI.getIterator()) == IntoMI.getIterator())
- return true;
+ // Any G_CONSTANT between immediate neighbours can be ignored.
+ if (MI.getParent() == IntoMI.getParent()) {
+ auto IntoIt = IntoMI.getIterator();
+ auto NextIt = std::next(MI.getIterator());
+ while (!NextIt.isEnd() && NextIt != IntoIt &&
+ NextIt->getOpcode() == TargetOpcode::G_CONSTANT)
+ ++NextIt;
+ if (NextIt == IntoIt)
+ return true;
+ }
----------------
Pierre-vh wrote:
Do you have an example of what this does? Like a code pattern that would be rejected without this change.
https://github.com/llvm/llvm-project/pull/69607
More information about the llvm-commits
mailing list