[PATCH] D24557: [Loop Vectorizer] Simplified GEP cloning. NFC.
    Michael Kuperstein via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Thu Sep 15 10:24:10 PDT 2016
    
    
  
mkuper added a comment.
In https://reviews.llvm.org/D24557#543796, @delena wrote:
> Let's look at this GEP:
>
> getelementptr inbounds i8, i8* %ptr, i64 %ind
>
> May %ptr be not-loop-invariant and not-induction-variable?
>  It may be uniform, right?
>  In this case 
>  assert(i == getGEPInductionOperand(Gep) || Legal->isUniform(Gep->getOperand(i) || Legal->isInductionVariable(Gep->getOperand(i)))
>  should work, but
>  assert(i == getGEPInductionOperand(Gep) || PSE.getSE()->isLoopInvariant(PSE.getSCEV(Gep->getOperand(i)) || Legal->isInductionVariable(Gep->getOperand(i)))
>  will not.
I'm not sure I understand what you're saying.
  assert(i == getGEPInductionOperand(Gep) || Legal->isUniform(Gep->getOperand(i) || Legal->isInductionVariable(Gep->getOperand(i)))
Is exactly the check I suggested.
If you're saying it should work in all cases, then what's the problem? Or are you saying there are other cases where it's the wrong check? Or did I completely misunderstand you?
Repository:
  rL LLVM
https://reviews.llvm.org/D24557
    
    
More information about the llvm-commits
mailing list