[llvm] [GlobalISel] Combine sext(load), zext(load) patterns when the load has multiple uses (PR #182831)
Matt Arsenault via llvm-commits
llvm-commits at lists.llvm.org
Tue Apr 21 05:33:56 PDT 2026
================
@@ -1063,16 +1068,20 @@ bool CombinerHelper::matchSextInRegOfLoad(
return false;
Register SrcReg = MI.getOperand(1).getReg();
- auto *LoadDef = getOpcodeDef<GLoad>(SrcReg, MRI);
- if (!LoadDef || !MRI.hasOneNonDBGUse(SrcReg))
+ auto *LoadDef = dyn_cast<GLoad>(MRI.getVRegDef(SrcReg));
+ if (!LoadDef)
return false;
uint64_t MemBits = LoadDef->getMemSizeInBits().getValue();
+ uint64_t ExtFrom = MI.getOperand(2).getImm();
+
+ if (!MRI.hasOneNonDBGUse(SrcReg) && MemBits > ExtFrom)
+ return false;
----------------
arsenm wrote:
```suggestion
if (MemBits > ExtFrom && !MRI.hasOneNonDBGUse(SrcReg))
return false;
```
https://github.com/llvm/llvm-project/pull/182831
More information about the llvm-commits
mailing list