Lines Matching refs:SVI
537 } else if (auto *SVI = dyn_cast<ShuffleVectorInst>(I)) { in visitExtractElementInst() local
541 if (isa<FixedVectorType>(SVI->getType()) && isa<ConstantInt>(Index)) { in visitExtractElementInst()
543 SVI->getMaskValue(cast<ConstantInt>(Index)->getZExtValue()); in visitExtractElementInst()
545 unsigned LHSWidth = cast<FixedVectorType>(SVI->getOperand(0)->getType()) in visitExtractElementInst()
551 Src = SVI->getOperand(0); in visitExtractElementInst()
554 Src = SVI->getOperand(1); in visitExtractElementInst()
2025 static bool isShuffleExtractingFromLHS(ShuffleVectorInst &SVI, in isShuffleExtractingFromLHS() argument
2028 cast<FixedVectorType>(SVI.getOperand(0)->getType())->getNumElements(); in isShuffleExtractingFromLHS()
2740 Instruction *InstCombinerImpl::simplifyBinOpSplats(ShuffleVectorInst &SVI) { in simplifyBinOpSplats() argument
2741 if (!match(SVI.getOperand(1), m_Undef()) || in simplifyBinOpSplats()
2742 !match(SVI.getShuffleMask(), m_ZeroMask()) || in simplifyBinOpSplats()
2743 !SVI.getOperand(0)->hasOneUse()) in simplifyBinOpSplats()
2746 Value *Op0 = SVI.getOperand(0); in simplifyBinOpSplats()
2764 return new ShuffleVectorInst(NewBO, SVI.getShuffleMask()); in simplifyBinOpSplats()
2767 Instruction *InstCombinerImpl::visitShuffleVectorInst(ShuffleVectorInst &SVI) { in visitShuffleVectorInst() argument
2768 Value *LHS = SVI.getOperand(0); in visitShuffleVectorInst()
2769 Value *RHS = SVI.getOperand(1); in visitShuffleVectorInst()
2770 SimplifyQuery ShufQuery = SQ.getWithInstruction(&SVI); in visitShuffleVectorInst()
2771 if (auto *V = simplifyShuffleVectorInst(LHS, RHS, SVI.getShuffleMask(), in visitShuffleVectorInst()
2772 SVI.getType(), ShufQuery)) in visitShuffleVectorInst()
2773 return replaceInstUsesWith(SVI, V); in visitShuffleVectorInst()
2775 if (Instruction *I = simplifyBinOpSplats(SVI)) in visitShuffleVectorInst()
2780 if (match(SVI.getShuffleMask(), m_ZeroMask()) && !isa<PoisonValue>(RHS)) in visitShuffleVectorInst()
2781 return replaceOperand(SVI, 1, PoisonValue::get(RHS->getType())); in visitShuffleVectorInst()
2786 unsigned VWidth = cast<FixedVectorType>(SVI.getType())->getNumElements(); in visitShuffleVectorInst()
2800 SVI.getType()->getScalarSizeInBits() && in visitShuffleVectorInst()
2802 Value *V = Builder.CreateShuffleVector(X, Y, SVI.getShuffleMask(), in visitShuffleVectorInst()
2803 SVI.getName() + ".uncasted"); in visitShuffleVectorInst()
2804 return new BitCastInst(V, SVI.getType()); in visitShuffleVectorInst()
2807 ArrayRef<int> Mask = SVI.getShuffleMask(); in visitShuffleVectorInst()
2834 return BitCastInst::Create(Instruction::BitCast, V, SVI.getType()); in visitShuffleVectorInst()
2847 SVI.commute(); in visitShuffleVectorInst()
2848 return &SVI; in visitShuffleVectorInst()
2851 if (Instruction *I = canonicalizeInsertSplat(SVI, Builder)) in visitShuffleVectorInst()
2854 if (Instruction *I = foldSelectShuffle(SVI)) in visitShuffleVectorInst()
2857 if (Instruction *I = foldTruncShuffle(SVI, DL.isBigEndian())) in visitShuffleVectorInst()
2860 if (Instruction *I = narrowVectorSelect(SVI, Builder)) in visitShuffleVectorInst()
2863 if (Instruction *I = foldShuffleOfUnaryOps(SVI, Builder)) in visitShuffleVectorInst()
2866 if (Instruction *I = foldCastShuffle(SVI, Builder)) in visitShuffleVectorInst()
2871 if (Value *V = SimplifyDemandedVectorElts(&SVI, AllOnesEltMask, PoisonElts)) { in visitShuffleVectorInst()
2872 if (V != &SVI) in visitShuffleVectorInst()
2873 return replaceInstUsesWith(SVI, V); in visitShuffleVectorInst()
2874 return &SVI; in visitShuffleVectorInst()
2877 if (Instruction *I = foldIdentityExtractShuffle(SVI)) in visitShuffleVectorInst()
2882 if (Instruction *I = foldShuffleWithInsert(SVI, *this)) in visitShuffleVectorInst()
2884 if (Instruction *I = foldIdentityPaddedShuffles(SVI)) in visitShuffleVectorInst()
2889 return replaceInstUsesWith(SVI, V); in visitShuffleVectorInst()
2922 if (isShuffleExtractingFromLHS(SVI, Mask)) { in visitShuffleVectorInst()
2932 for (User *U : SVI.users()) in visitShuffleVectorInst()
2958 SVI.getName() + ".extract"); in visitShuffleVectorInst()
2968 : Builder.CreateBitCast(V, CastSrcTy, SVI.getName() + ".bc"); in visitShuffleVectorInst()
2972 SVI.getName() + ".extract"); in visitShuffleVectorInst()
3033 return MadeChange ? &SVI : nullptr; in visitShuffleVectorInst()
3073 return MadeChange ? &SVI : nullptr; in visitShuffleVectorInst()
3155 return MadeChange ? &SVI : nullptr; in visitShuffleVectorInst()