[llvm-commits] CVS: llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp PPCInstrInfo.td

Chris Lattner lattner at cs.uiuc.edu
Fri Oct 21 14:17:21 PDT 2005



Changes in directory llvm/lib/Target/PowerPC:

PPCISelDAGToDAG.cpp updated: 1.115 -> 1.116
PPCInstrInfo.td updated: 1.132 -> 1.133
---
Log message:

Instead of aborting if not a case we can handle specially, break out and 
let the generic code handle it.  This fixes CodeGen/Generic/2005-10-21-longlonggtu.ll on ppc.

also, reindent this code


---
Diffs of the changes:  (+52 -55)

 PPCISelDAGToDAG.cpp |  106 +++++++++++++++++++++++++---------------------------
 PPCInstrInfo.td     |    1 
 2 files changed, 52 insertions(+), 55 deletions(-)


Index: llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp
diff -u llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp:1.115 llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp:1.116
--- llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp:1.115	Thu Oct 20 19:02:42 2005
+++ llvm/lib/Target/PowerPC/PPCISelDAGToDAG.cpp	Fri Oct 21 16:17:10 2005
@@ -621,65 +621,63 @@
     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: llvm/lib/Target/PowerPC/PPCInstrInfo.td
diff -u llvm/lib/Target/PowerPC/PPCInstrInfo.td:1.132 llvm/lib/Target/PowerPC/PPCInstrInfo.td:1.133
--- llvm/lib/Target/PowerPC/PPCInstrInfo.td:1.132	Fri Oct 21 01:36:18 2005
+++ llvm/lib/Target/PowerPC/PPCInstrInfo.td	Fri Oct 21 16:17:10 2005
@@ -771,7 +771,6 @@
                (XORIS GPRC:$tmp, (HI16 imm:$imm))]>;
 */
 
-
 //===----------------------------------------------------------------------===//
 // PowerPCInstrInfo Definition
 //






More information about the llvm-commits mailing list