[llvm] [Instcombine] Combine extractelement from a vector_extract at index 0 (PR #151491)
Paul Walker via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 31 07:01:46 PDT 2025
================
@@ -462,6 +463,12 @@ Instruction *InstCombinerImpl::visitExtractElementInst(ExtractElementInst &EI) {
return ScalarPHI;
}
+ // If SrcVec is a subvector starting at index 0, extract from the
+ // wider source vector
+ if (II && II->getIntrinsicID() == Intrinsic::vector_extract)
+ if (cast<ConstantInt>(II->getArgOperand(1))->isZero())
+ return ExtractElementInst::Create(II->getArgOperand(0), Index);
----------------
paulwalker-arm wrote:
Up to you but using PatternMatch would remove the need for II and casts. For example:
```
Value *V;
if (match(SrcVec, m_Intrinsic<Intrinsic::vector_extract>(m_Value(V), m_Zero())))
return ExtractElementInst::Create(V, Index);
```
https://github.com/llvm/llvm-project/pull/151491
More information about the llvm-commits
mailing list