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

References

lib/CodeGen/SelectionDAG/DAGCombiner.cpp
 7284   if (SDValue V = DAG.simplifyShift(N0, N1))
 7287   EVT VT = N0.getValueType();
 7300       if (N0.getOpcode() == ISD::AND) {
 7301         SDValue N00 = N0->getOperand(0);
 7302         SDValue N01 = N0->getOperand(1);
 7320   ConstantSDNode *N0C = getAsNonOpaqueConstant(N0);
 7336       return DAG.getNode(ISD::SHL, SDLoc(N), VT, N0, NewOp1);
 7344   if (N0.getOpcode() == ISD::SHL) {
 7352     if (ISD::matchBinaryPredicate(N1, N0.getOperand(1), MatchOutOfRange))
 7362     if (ISD::matchBinaryPredicate(N1, N0.getOperand(1), MatchInRange)) {
 7364       SDValue Sum = DAG.getNode(ISD::ADD, DL, ShiftVT, N1, N0.getOperand(1));
 7365       return DAG.getNode(ISD::SHL, DL, VT, N0.getOperand(0), Sum);
 7374   if ((N0.getOpcode() == ISD::ZERO_EXTEND ||
 7375        N0.getOpcode() == ISD::ANY_EXTEND ||
 7376        N0.getOpcode() == ISD::SIGN_EXTEND) &&
 7377       N0.getOperand(0).getOpcode() == ISD::SHL) {
 7378     SDValue N0Op0 = N0.getOperand(0);
 7408       SDValue Ext = DAG.getNode(N0.getOpcode(), DL, VT, N0Op0.getOperand(0));
 7418   if (N0.getOpcode() == ISD::ZERO_EXTEND && N0.hasOneUse() &&
 7418   if (N0.getOpcode() == ISD::ZERO_EXTEND && N0.hasOneUse() &&
 7419       N0.getOperand(0).getOpcode() == ISD::SRL) {
 7420     SDValue N0Op0 = N0.getOperand(0);
 7437       return DAG.getNode(ISD::ZERO_EXTEND, SDLoc(N0), VT, NewSHL);
 7444   if (N1C && (N0.getOpcode() == ISD::SRL || N0.getOpcode() == ISD::SRA) &&
 7444   if (N1C && (N0.getOpcode() == ISD::SRL || N0.getOpcode() == ISD::SRA) &&
 7445       N0->getFlags().hasExact()) {
 7446     if (ConstantSDNode *N0C1 = isConstOrConstSplat(N0.getOperand(1))) {
 7451         return DAG.getNode(ISD::SHL, DL, VT, N0.getOperand(0),
 7453       return DAG.getNode(N0.getOpcode(), DL, VT, N0.getOperand(0),
 7453       return DAG.getNode(N0.getOpcode(), DL, VT, N0.getOperand(0),
 7464   if (N1C && N0.getOpcode() == ISD::SRL && N0.hasOneUse() &&
 7464   if (N1C && N0.getOpcode() == ISD::SRL && N0.hasOneUse() &&
 7466     if (ConstantSDNode *N0C1 = isConstOrConstSplat(N0.getOperand(1))) {
 7475           Shift = DAG.getNode(ISD::SHL, DL, VT, N0.getOperand(0),
 7480           Shift = DAG.getNode(ISD::SRL, DL, VT, N0.getOperand(0),
 7483         SDLoc DL(N0);
 7491   if (N0.getOpcode() == ISD::SRA && N1 == N0.getOperand(1) &&
 7491   if (N0.getOpcode() == ISD::SRA && N1 == N0.getOperand(1) &&
 7496     return DAG.getNode(ISD::AND, DL, VT, N0.getOperand(0), HiBitsMask);
 7503   if ((N0.getOpcode() == ISD::ADD || N0.getOpcode() == ISD::OR) &&
 7503   if ((N0.getOpcode() == ISD::ADD || N0.getOpcode() == ISD::OR) &&
 7504       N0.getNode()->hasOneUse() &&
 7506       isConstantOrConstantVector(N0.getOperand(1), /* No Opaques */ true) &&
 7508     SDValue Shl0 = DAG.getNode(ISD::SHL, SDLoc(N0), VT, N0.getOperand(0), N1);
 7508     SDValue Shl0 = DAG.getNode(ISD::SHL, SDLoc(N0), VT, N0.getOperand(0), N1);
 7509     SDValue Shl1 = DAG.getNode(ISD::SHL, SDLoc(N1), VT, N0.getOperand(1), N1);
 7512     return DAG.getNode(N0.getOpcode(), SDLoc(N), VT, Shl0, Shl1);
 7516   if (N0.getOpcode() == ISD::MUL && N0.getNode()->hasOneUse() &&
 7516   if (N0.getOpcode() == ISD::MUL && N0.getNode()->hasOneUse() &&
 7518       isConstantOrConstantVector(N0.getOperand(1), /* No Opaques */ true)) {
 7519     SDValue Shl = DAG.getNode(ISD::SHL, SDLoc(N1), VT, N0.getOperand(1), N1);
 7521       return DAG.getNode(ISD::MUL, SDLoc(N), VT, N0.getOperand(0), Shl);