Lines Matching refs:Ext0
88 ExtractElementInst *getShuffleExtract(ExtractElementInst *Ext0,
91 bool isExtractExtractCheap(ExtractElementInst *Ext0, ExtractElementInst *Ext1,
95 void foldExtExtCmp(ExtractElementInst *Ext0, ExtractElementInst *Ext1,
97 void foldExtExtBinop(ExtractElementInst *Ext0, ExtractElementInst *Ext1,
258 ExtractElementInst *Ext0, ExtractElementInst *Ext1, in getShuffleExtract() argument
260 auto *Index0C = dyn_cast<ConstantInt>(Ext0->getIndexOperand()); in getShuffleExtract()
271 Type *VecTy = Ext0->getVectorOperand()->getType(); in getShuffleExtract()
274 TTI.getVectorInstrCost(Ext0->getOpcode(), VecTy, Index0); in getShuffleExtract()
286 return Ext0; in getShuffleExtract()
295 return Ext0; in getShuffleExtract()
298 return Index0 > Index1 ? Ext0 : Ext1; in getShuffleExtract()
306 bool VectorCombine::isExtractExtractCheap(ExtractElementInst *Ext0, in isExtractExtractCheap() argument
311 auto *Ext0IndexC = dyn_cast<ConstantInt>(Ext0->getOperand(1)); in isExtractExtractCheap()
316 Type *ScalarTy = Ext0->getType(); in isExtractExtractCheap()
317 auto *VecTy = cast<VectorType>(Ext0->getOperand(0)->getType()); in isExtractExtractCheap()
357 if (Ext0->getOperand(0) == Ext1->getOperand(0) && Ext0Index == Ext1Index) { in isExtractExtractCheap()
362 bool HasUseTax = Ext0 == Ext1 ? !Ext0->hasNUses(2) in isExtractExtractCheap()
363 : !Ext0->hasOneUse() || !Ext1->hasOneUse(); in isExtractExtractCheap()
371 !Ext0->hasOneUse() * Extract0Cost + in isExtractExtractCheap()
375 ConvertToShuffle = getShuffleExtract(Ext0, Ext1, PreferredExtractIndex); in isExtractExtractCheap()
437 void VectorCombine::foldExtExtCmp(ExtractElementInst *Ext0, in foldExtExtCmp() argument
440 assert(cast<ConstantInt>(Ext0->getIndexOperand())->getZExtValue() == in foldExtExtCmp()
447 Value *V0 = Ext0->getVectorOperand(), *V1 = Ext1->getVectorOperand(); in foldExtExtCmp()
449 Value *NewExt = Builder.CreateExtractElement(VecCmp, Ext0->getIndexOperand()); in foldExtExtCmp()
456 void VectorCombine::foldExtExtBinop(ExtractElementInst *Ext0, in foldExtExtBinop() argument
459 assert(cast<ConstantInt>(Ext0->getIndexOperand())->getZExtValue() == in foldExtExtBinop()
465 Value *V0 = Ext0->getVectorOperand(), *V1 = Ext1->getVectorOperand(); in foldExtExtBinop()
474 Value *NewExt = Builder.CreateExtractElement(VecBO, Ext0->getIndexOperand()); in foldExtExtBinop()
503 auto *Ext0 = cast<ExtractElementInst>(I0); in foldExtractExtract() local
511 if (isExtractExtractCheap(Ext0, Ext1, I, ExtractToChange, InsertIndex)) in foldExtractExtract()
515 unsigned CheapExtractIdx = ExtractToChange == Ext0 ? C1 : C0; in foldExtractExtract()
520 if (ExtractToChange == Ext0) in foldExtractExtract()
521 Ext0 = NewExtract; in foldExtractExtract()
527 foldExtExtCmp(Ext0, Ext1, I); in foldExtractExtract()
529 foldExtExtBinop(Ext0, Ext1, I); in foldExtractExtract()
531 Worklist.push(Ext0); in foldExtractExtract()
742 auto *Ext0 = cast<ExtractElementInst>(I0); in foldExtractedCmps() local
744 ExtractElementInst *ConvertToShuf = getShuffleExtract(Ext0, Ext1); in foldExtractedCmps()
758 TTI.getVectorInstrCost(Ext0->getOpcode(), VecTy, Index0); in foldExtractedCmps()
769 int CheapIndex = ConvertToShuf == Ext0 ? Index1 : Index0; in foldExtractedCmps()
770 int ExpensiveIndex = ConvertToShuf == Ext0 ? Index0 : Index1; in foldExtractedCmps()
779 NewCost += TTI.getVectorInstrCost(Ext0->getOpcode(), CmpTy, CheapIndex); in foldExtractedCmps()