[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