Add VRRC select support
authorChris Lattner <sabre@nondot.org>
Sat, 8 Apr 2006 22:45:08 +0000 (22:45 +0000)
committerChris Lattner <sabre@nondot.org>
Sat, 8 Apr 2006 22:45:08 +0000 (22:45 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27543 91177308-0d34-0410-b5e6-96231b3b80d8

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

index 4e74b2c639d7d8d78cf4dd86e1190c8862f3e544..b699b92afb3d778a9d0bf2e9b14e28592393ce1c 100644 (file)
@@ -1219,8 +1219,11 @@ void PPCDAGToDAGISel::Select(SDOperand &Result, SDOperand Op) {
       SelectCCOp = PPC::SELECT_CC_Int;
     else if (N->getValueType(0) == MVT::f32)
       SelectCCOp = PPC::SELECT_CC_F4;
-    else
+    else if (N->getValueType(0) == MVT::f64)
       SelectCCOp = PPC::SELECT_CC_F8;
+    else
+      SelectCCOp = PPC::SELECT_CC_VRRC;
+
     SDOperand N2, N3;
     Select(N2, N->getOperand(2));
     Select(N3, N->getOperand(3));
index 5722594c61d654f804076090195b94d3b9fcaed9..2067a11428cecb1316c49ed1ebdf1a67c59ee028 100644 (file)
@@ -1484,7 +1484,8 @@ PPCTargetLowering::InsertAtEndOfBasicBlock(MachineInstr *MI,
                                            MachineBasicBlock *BB) {
   assert((MI->getOpcode() == PPC::SELECT_CC_Int ||
           MI->getOpcode() == PPC::SELECT_CC_F4 ||
-          MI->getOpcode() == PPC::SELECT_CC_F8) &&
+          MI->getOpcode() == PPC::SELECT_CC_F8 ||
+          MI->getOpcode() == PPC::SELECT_CC_VRRC) &&
          "Unexpected instr type to insert");
   
   // To "insert" a SELECT_CC instruction, we actually have to insert the diamond
index 125425a63db6d271c68e100b803a4d0afdf849bf..7fc4b7aac754dc88a61201ae9f97710e67f64d87 100644 (file)
@@ -247,6 +247,8 @@ let usesCustomDAGSchedInserter = 1,    // Expanded by the scheduler.
                               i32imm:$BROPC), "; SELECT_CC PSEUDO!", []>;
   def SELECT_CC_F8  : Pseudo<(ops F8RC:$dst, CRRC:$cond, F8RC:$T, F8RC:$F,
                               i32imm:$BROPC), "; SELECT_CC PSEUDO!", []>;
+  def SELECT_CC_VRRC: Pseudo<(ops VRRC:$dst, CRRC:$cond, VRRC:$T, VRRC:$F,
+                              i32imm:$BROPC), "; SELECT_CC PSEUDO!", []>;
 }
 
 let isTerminator = 1, noResults = 1, PPC970_Unit = 7 in {