Home | History | Annotate | Download | only in InstCombine

Lines Matching refs:Value

25 /// Return true if the value is cheaper to scalarize than it is to leave as a
28 static bool cheapToScalarize(Value *V, bool isConstant) {
94 Value *PHIInVal = PN->getIncomingValue(i);
96 Value *Elt = EI.getIndexOperand();
104 Value *Op = InsertNewInstWith(
108 Value *newPHIUser = InsertNewInstWith(
132 if (Value *V = SimplifyExtractElementInst(
158 if (Value *V = SimplifyDemandedVectorElts(EI.getOperand(0), DemandedMask,
171 if (Value *Elt = findScalarElement(BCI->getOperand(0), IndexVal))
190 Value *newEI0 =
193 Value *newEI1 =
203 // be the same value, extract from the pre-inserted value instead.
214 Value *Src;
236 Value *EE = Builder->CreateExtractElement(CI->getOperand(0),
250 Value *TrueVal = SI->getTrueValue();
251 Value *FalseVal = SI->getFalseValue();
253 Value *Cond = SI->getCondition();
260 Value *V1Elem
265 Value *V2Elem
281 static bool collectSingleShuffleElements(Value *V, Value *LHS, Value *RHS,
307 Value *VecOp = IEI->getOperand(0);
308 Value *ScalarOp = IEI->getOperand(1);
309 Value *IdxOp = IEI->getOperand(2);
334 // If so, update the mask to reflect the inserted value.
364 typedef std::pair<Value *, Value *> ShuffleOps;
366 static ShuffleOps collectShuffleElements(Value *V,
368 Value *PermittedRHS) {
385 Value *VecOp = IEI->getOperand(0);
386 Value *ScalarOp = IEI->getOperand(1);
387 Value *IdxOp = IEI->getOperand(2);
398 Value *RHS = EI->getOperand(0);
460 Value *V = &I;
481 Value *VecOp = IE.getOperand(0);
482 Value *ScalarOp = IE.getOperand(1);
483 Value *IdxOp = IE.getOperand(2);
506 // If we are extracting a value from a vector, then inserting it right
533 if (Value *V = SimplifyDemandedVectorElts(&IE, AllOnesEltMask, UndefElts)) {
544 static bool CanEvaluateShuffled(Value *V, ArrayRef<int> Mask,
591 for (Value *Operand : I->operands()) {
620 static Value *buildNew(Instruction *I, ArrayRef<Value*> NewOps) {
685 Value *Ptr = NewOps[0];
686 ArrayRef<Value*> Idx = NewOps.slice(1);
696 Value *
697 InstCombiner::EvaluateInDifferentElementOrder(Value *V, ArrayRef<int> Mask) {
755 SmallVector<Value*, 8> NewOps;
758 Value *V = EvaluateInDifferentElementOrder(I->getOperand(i), Mask);
787 Value *V = EvaluateInDifferentElementOrder(I->getOperand(0), Mask);
801 // Is this an identity shuffle of the LHS value?
804 // Is this an identity shuffle of the RHS value?
831 Value *LHS = SVI.getOperand(0);
832 Value *RHS = SVI.getOperand(1);
838 // Undefined shuffle mask -> undefined value.
846 if (Value *V = SimplifyDemandedVectorElts(&SVI, AllOnesEltMask, UndefElts)) {
861 Value *Result = (VWidth == LHSWidth)
902 Value *V = EvaluateInDifferentElementOrder(LHS, Mask);
920 // index is aligned to a value in the casted vector type. If the begin index
936 Value *V = LHS;
945 DenseMap<Type *, Value *> NewBCs;
1049 Value* LHSOp0 = nullptr;
1050 Value* LHSOp1 = nullptr;
1051 Value* RHSOp0 = nullptr;
1063 Value* newLHS = LHS;
1064 Value* newRHS = RHS;
1105 // This element is an undef value.
1111 // new mask value for the element.
1114 // If the value selected is an undef value, explicitly specify it
1115 // with a -1 mask value.
1123 // If the value selected is an undef value, explicitly specify it
1124 // with a -1 mask value. (case 1)
1128 // new mask value for the element.
1131 // If the value selected is an undef value, explicitly specify it
1132 // with a -1 mask value.
1141 // If LHS's width is changed, shift the mask value accordingly.