[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