Home | History | Annotate | Download | only in SelectionDAG

Lines Matching refs:SETCC

590 // isSetCCEquivalent - Return true if this node is a setcc, or is a select_cc
592 // equivalent to a setcc. Also, set the incoming LHS, RHS, and CC references to
597 if (N.getOpcode() == ISD::SETCC) {
615 // isOneUseSetCC - Return true if this is a SetCC-equivalent operation with only
1233 case ISD::SETCC: return visitSETCC(N);
2760 // fold (and (setcc x), (setcc y)) -> (setcc (and x, y))
2813 TLI.isOperationLegal(ISD::SETCC,
3356 // fold (or (setcc x), (setcc y)) -> (setcc (or x, y))
3393 TLI.isOperationLegal(ISD::SETCC,
3747 llvm_unreachable("Unhandled SetCC Equivalent!");
3748 case ISD::SETCC:
3757 // fold (not (zext (setcc x, y))) -> (zext (not (setcc x, y)))
3768 // fold (not (or x, y)) -> (and (not x), (not y)) iff x or y are setcc
3958 // If setcc produces all-one true value then:
3959 // (shl (and (setcc) N01CV) N1CV) -> (and (setcc) N01CV<<N1CV)
3966 if (N01CV && N01CV->isConstant() && N00.getOpcode() == ISD::SETCC &&
4433 // %c = setcc eq %b, 0
4530 // can find the SETCC that produced it and inspect its operands. This is
4531 // fairly easy if C is the SETCC node, but it can potentially be
4581 // fold selects based on a setcc into other things, such as min/max/abs
4582 if (N0.getOpcode() == ISD::SETCC) {
4673 if (N0.getOpcode() == ISD::SETCC) {
4700 // SETCC, then split both nodes and its operands before legalization. This
4701 // prevents the type legalizer from unrolling SETCC into scalar comparisons
4703 if (N0.getOpcode() == ISD::SETCC) {
4774 if (SCC.getOpcode() == ISD::SETCC)
4871 // FIXME: Only extend SETCC N, N and SETCC N, c for now.
4872 if (ExtOpc != ISD::ANY_EXTEND && User->getOpcode() == ISD::SETCC) {
4920 // Extend SetCC uses if necessary.
4922 SDNode *SetCC = SetCCs[i];
4926 SDValue SOp = SetCC->getOperand(j);
4933 Ops.push_back(SetCC->getOperand(2));
4934 CombineTo(SetCC, DAG.getNode(ISD::SETCC, DL, SetCC->getValueType(0), Ops));
5088 if (N0.getOpcode() == ISD::SETCC) {
5090 // sext(setcc) -> sext_in_reg(vsetcc) for vectors.
5095 // On some architectures (such as SSE/NEON/etc) the SETCC result type is
5096 // of the same size as the compared operands. Only optimize sext(setcc())
5122 // sext(setcc x, y, cc) -> (select (setcc x, y, cc), -1, 0)
5134 if (!LegalOperations || TLI.isOperationLegal(ISD::SETCC, SetCCVT)) {
5137 SDValue SetCC = DAG.getSetCC(DL,
5142 DAG.getSExtOrTrunc(SetCC, DL, SelectVT),
5170 if (N->getOpcode() != ISD::SETCC || N->getValueType(0) != MVT::i1 ||
5383 if (N0.getOpcode() == ISD::SETCC) {
5390 // zext(setcc) -> (and (vsetcc), (1, 1, ...) for vectors.
5426 // zext(setcc x,y,cc) -> select_cc x, y, 1, 0, cc
5575 if (N0.getOpcode() == ISD::SETCC) {
5577 // aext(setcc) -> vsetcc
5578 // aext(setcc) -> truncate(vsetcc)
5579 // aext(setcc) -> aext(vsetcc)
5605 // aext(setcc x,y,cc) -> select_cc x, y, 1, 0, cc
7045 // fold (sint_to_fp (setcc x, y, cc)) -> (select_cc x, y, -1.0, 0.0,, cc)
7046 if (N0.getOpcode() == ISD::SETCC && N0.getValueType() == MVT::i1 &&
7057 // fold (sint_to_fp (zext (setcc x, y, cc))) ->
7060 N0.getOperand(0).getOpcode() == ISD::SETCC &&!VT.isVector() &&
7098 // fold (uint_to_fp (setcc x, y, cc)) -> (select_cc x, y, -1.0, 0.0,, cc)
7100 if (N0.getOpcode() == ISD::SETCC && !VT.isVector() &&
7370 // fold a brcond with a setcc condition into a BR_CC node if BR_CC is legal
7372 if (N1.getOpcode() == ISD::SETCC &&
7402 // %c = setcc eq %b, 0
7420 SDValue SetCC =
7427 MVT::Other, Chain, SetCC, N2);
7436 // Replace the uses of SRL with SETCC
7438 DAG.ReplaceAllUsesOfValueWith(N1, SetCC);
7481 if (Op0.getOpcode() != ISD::SETCC && Op1.getOpcode() != ISD::SETCC) {
7493 SDValue SetCC = DAG.getSetCC(SDLoc(TheXor),
7497 // Replace the uses of XOR with SETCC
7499 DAG.ReplaceAllUsesOfValueWith(N1, SetCC);
7503 MVT::Other, Chain, SetCC, N2);
7522 // Use SimplifySetCC to simplify SETCC's.
7528 // fold to a simpler setcc
7529 if (Simp.getNode() && Simp.getOpcode() == ISD::SETCC)
10964 assert(N0.getOpcode() ==ISD::SETCC && "First argument must be a SetCC node!");
10970 // break it down into a new SETCC node, and a new SELECT node, and then return
10973 // Check to see if we got a select_cc back (to turn into setcc/select).
10976 SDValue SETCC = DAG.getNode(ISD::SETCC, SDLoc(N0),
10980 AddToWorkList(SETCC.getNode());
10982 SCC.getOperand(2), SCC.getOperand(3), SETCC);
11286 // Get a SetCC of the condition
11287 // NOTE: Don't create a SETCC if it's not legal on this target.
11289 TLI.isOperationLegal(ISD::SETCC,
11292 // cast from setcc result type to select result type
11314 // shl setcc result by log2 n2c
11322 // Check to see if this is the equivalent of setcc
11323 // FIXME: Turn all of these into setcc if setcc if setcc is legal
11328 TLI.isOperationLegal(ISD::SETCC, getSetCCResultType(XType))) {