Instead of aborting if not a case we can handle specially, break out and
authorChris Lattner <sabre@nondot.org>
Fri, 21 Oct 2005 21:17:10 +0000 (21:17 +0000)
committerChris Lattner <sabre@nondot.org>
Fri, 21 Oct 2005 21:17:10 +0000 (21:17 +0000)
let the generic code handle it.  This fixes CodeGen/Generic/2005-10-21-longlonggtu.ll on ppc.

also, reindent this code

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@23874 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/PowerPC/PPCISelDAGToDAG.cpp
lib/Target/PowerPC/PPCInstrInfo.td

index cc9e23c1cc6ba376d5d8133a6f331522c17d5ac6..336c2b1540868af8e23f617ba5875e0968f183b0 100644 (file)
@@ -621,65 +621,63 @@ SDOperand PPCDAGToDAGISel::SelectSETCC(SDOperand Op) {
     if (Imm == 0) {
       SDOperand Op = Select(N->getOperand(0));
       switch (CC) {
-        default: assert(0 && "Unhandled SetCC condition"); abort();
-        case ISD::SETEQ:
-          Op = CurDAG->getTargetNode(PPC::CNTLZW, MVT::i32, Op);
-          CurDAG->SelectNodeTo(N, PPC::RLWINM, MVT::i32, Op, getI32Imm(27),
-                               getI32Imm(5), getI32Imm(31));
-          break;
-        case ISD::SETNE: {
-          SDOperand AD = CurDAG->getTargetNode(PPC::ADDIC, MVT::i32, MVT::Flag,
-                                               Op, getI32Imm(~0U));
-          CurDAG->SelectNodeTo(N, PPC::SUBFE, MVT::i32, AD, Op, AD.getValue(1));
-          break;
-        }
-        case ISD::SETLT:
-          CurDAG->SelectNodeTo(N, PPC::RLWINM, MVT::i32, Op, getI32Imm(1),
-                               getI32Imm(31), getI32Imm(31));
-          break;
-        case ISD::SETGT: {
-          SDOperand T = CurDAG->getTargetNode(PPC::NEG, MVT::i32, Op);
-          T = CurDAG->getTargetNode(PPC::ANDC, MVT::i32, T, Op);;
-          CurDAG->SelectNodeTo(N, PPC::RLWINM, MVT::i32, T, getI32Imm(1),
-                               getI32Imm(31), getI32Imm(31));
-          break;
-        }
+      default: break;
+      case ISD::SETEQ:
+        Op = CurDAG->getTargetNode(PPC::CNTLZW, MVT::i32, Op);
+        CurDAG->SelectNodeTo(N, PPC::RLWINM, MVT::i32, Op, getI32Imm(27),
+                             getI32Imm(5), getI32Imm(31));
+        return SDOperand(N, 0);
+      case ISD::SETNE: {
+        SDOperand AD = CurDAG->getTargetNode(PPC::ADDIC, MVT::i32, MVT::Flag,
+                                             Op, getI32Imm(~0U));
+        CurDAG->SelectNodeTo(N, PPC::SUBFE, MVT::i32, AD, Op, AD.getValue(1));
+        return SDOperand(N, 0);
+      }
+      case ISD::SETLT:
+        CurDAG->SelectNodeTo(N, PPC::RLWINM, MVT::i32, Op, getI32Imm(1),
+                             getI32Imm(31), getI32Imm(31));
+        return SDOperand(N, 0);
+      case ISD::SETGT: {
+        SDOperand T = CurDAG->getTargetNode(PPC::NEG, MVT::i32, Op);
+        T = CurDAG->getTargetNode(PPC::ANDC, MVT::i32, T, Op);;
+        CurDAG->SelectNodeTo(N, PPC::RLWINM, MVT::i32, T, getI32Imm(1),
+                             getI32Imm(31), getI32Imm(31));
+        return SDOperand(N, 0);
+      }
       }
-      return SDOperand(N, 0);
     } else if (Imm == ~0U) {        // setcc op, -1
       SDOperand Op = Select(N->getOperand(0));
       switch (CC) {
-        default: assert(0 && "Unhandled SetCC condition"); abort();
-        case ISD::SETEQ:
-          Op = CurDAG->getTargetNode(PPC::ADDIC, MVT::i32, MVT::Flag,
-                                     Op, getI32Imm(1));
-          CurDAG->SelectNodeTo(N, PPC::ADDZE, MVT::i32, 
-                               CurDAG->getTargetNode(PPC::LI, MVT::i32,
-                                                     getI32Imm(0)),
-                               Op.getValue(1));
-          break;
-        case ISD::SETNE: {
-          Op = CurDAG->getTargetNode(PPC::NOR, MVT::i32, Op, Op);
-          SDOperand AD = CurDAG->getTargetNode(PPC::ADDIC, MVT::i32, MVT::Flag,
-                                               Op, getI32Imm(~0U));
-          CurDAG->SelectNodeTo(N, PPC::SUBFE, MVT::i32, AD, Op, AD.getValue(1));
-          break;
-        }
-        case ISD::SETLT: {
-          SDOperand AD = CurDAG->getTargetNode(PPC::ADDI, MVT::i32, Op,
-                                               getI32Imm(1));
-          SDOperand AN = CurDAG->getTargetNode(PPC::AND, MVT::i32, AD, Op);
-          CurDAG->SelectNodeTo(N, PPC::RLWINM, MVT::i32, AN, getI32Imm(1),
-                               getI32Imm(31), getI32Imm(31));
-          break;
-        }
-        case ISD::SETGT:
-          Op = CurDAG->getTargetNode(PPC::RLWINM, MVT::i32, Op, getI32Imm(1),
-                                     getI32Imm(31), getI32Imm(31));
-          CurDAG->SelectNodeTo(N, PPC::XORI, MVT::i32, Op, getI32Imm(1));
-          break;
+      default: break;
+      case ISD::SETEQ:
+        Op = CurDAG->getTargetNode(PPC::ADDIC, MVT::i32, MVT::Flag,
+                                   Op, getI32Imm(1));
+        CurDAG->SelectNodeTo(N, PPC::ADDZE, MVT::i32, 
+                             CurDAG->getTargetNode(PPC::LI, MVT::i32,
+                                                   getI32Imm(0)),
+                             Op.getValue(1));
+        return SDOperand(N, 0);
+      case ISD::SETNE: {
+        Op = CurDAG->getTargetNode(PPC::NOR, MVT::i32, Op, Op);
+        SDOperand AD = CurDAG->getTargetNode(PPC::ADDIC, MVT::i32, MVT::Flag,
+                                             Op, getI32Imm(~0U));
+        CurDAG->SelectNodeTo(N, PPC::SUBFE, MVT::i32, AD, Op, AD.getValue(1));
+        return SDOperand(N, 0);
+      }
+      case ISD::SETLT: {
+        SDOperand AD = CurDAG->getTargetNode(PPC::ADDI, MVT::i32, Op,
+                                             getI32Imm(1));
+        SDOperand AN = CurDAG->getTargetNode(PPC::AND, MVT::i32, AD, Op);
+        CurDAG->SelectNodeTo(N, PPC::RLWINM, MVT::i32, AN, getI32Imm(1),
+                             getI32Imm(31), getI32Imm(31));
+        return SDOperand(N, 0);
+      }
+      case ISD::SETGT:
+        Op = CurDAG->getTargetNode(PPC::RLWINM, MVT::i32, Op, getI32Imm(1),
+                                   getI32Imm(31), getI32Imm(31));
+        CurDAG->SelectNodeTo(N, PPC::XORI, MVT::i32, Op, getI32Imm(1));
+        return SDOperand(N, 0);
       }
-      return SDOperand(N, 0);
     }
   }
   
index 97beafb4e54f9e3f6190460e11903a4340e3ff4f..0ca271d6317ee3a3ca7aca0ee34de4831b73f63b 100644 (file)
@@ -771,7 +771,6 @@ def : Pattern<(xor GPRC:$in, imm:$imm),
                (XORIS GPRC:$tmp, (HI16 imm:$imm))]>;
 */
 
-
 //===----------------------------------------------------------------------===//
 // PowerPCInstrInfo Definition
 //