reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced

References

lib/Target/X86/X86ISelLowering.cpp
40128   Operands[0] = LHS.getOperand(0);
40129   Operands[1] = LHS.getOperand(1);
40138   if (IsConstVectorInRange(Operands[1], 1, ScalarVT == MVT::i8 ? 256 : 65536) &&
40139       Operands[0].getOpcode() == ISD::ZERO_EXTEND &&
40140       Operands[0].getOperand(0).getValueType() == VT) {
40144     Operands[1] = DAG.getNode(ISD::SUB, DL, InVT, Operands[1], VecOnes);
40144     Operands[1] = DAG.getNode(ISD::SUB, DL, InVT, Operands[1], VecOnes);
40145     Operands[1] = DAG.getNode(ISD::TRUNCATE, DL, VT, Operands[1]);
40145     Operands[1] = DAG.getNode(ISD::TRUNCATE, DL, VT, Operands[1]);
40147                             { Operands[0].getOperand(0), Operands[1] },
40147                             { Operands[0].getOperand(0), Operands[1] },
40171   if (FindAddLike(Operands[0], Op0, Op1))
40172     std::swap(Operands[0], Operands[1]);
40172     std::swap(Operands[0], Operands[1]);
40173   else if (!FindAddLike(Operands[1], Op0, Op1))
40175   Operands[2] = Op0;
40176   Operands[1] = Op1;
40181     if (!IsConstVectorInRange(Operands[i], 1, 1))
40183     std::swap(Operands[i], Operands[2]);
40183     std::swap(Operands[i], Operands[2]);
40187       if (Operands[j].getValueType() != VT) {
40188         if (Operands[j].getOpcode() != ISD::ZERO_EXTEND ||
40189             Operands[j].getOperand(0).getValueType() != VT)
40191         Operands[j] = Operands[j].getOperand(0);
40191         Operands[j] = Operands[j].getOperand(0);
40195     return SplitOpsAndApply(DAG, Subtarget, DL, VT, {Operands[0], Operands[1]},
40195     return SplitOpsAndApply(DAG, Subtarget, DL, VT, {Operands[0], Operands[1]},