Stub for constant shift expr support.
[oota-llvm.git] / lib / Target / X86 / InstSelectSimple.cpp
index 1616ec1f9821f1ba096753d2d5a0d4d22578f1c4..81a31065300424d14df1c614fb4e4ba1f58e5a85 100644 (file)
@@ -224,6 +224,13 @@ namespace {
                             MachineBasicBlock::iterator &IP,
                             Value *Op0, Value *Op1, unsigned Opcode,
                             unsigned TargetReg);
+
+    /// emitShiftOperation - Common code shared between visitShiftInst and
+    /// constant expression support.
+    void emitShiftOperation(MachineBasicBlock *BB,
+                            MachineBasicBlock::iterator &IP,
+                            Value *Op0, Value *Op1, unsigned Opcode,
+                            unsigned TargetReg);
  
 
     /// copyConstantToRegister - Output the instructions required to put the
@@ -384,6 +391,12 @@ void ISel::copyConstantToRegister(MachineBasicBlock *MBB,
                          CE->getOpcode(), R);
       return;
 
+    case Instruction::Shl:
+    case Instruction::Shr:
+      emitShiftOperation(MBB, IP, CE->getOperand(0), CE->getOperand(1),
+                         CE->getOpcode(), R);
+      break;
+
     default:
       std::cerr << "Offending expr: " << C << "\n";
       assert(0 && "Constant expression not yet handled!\n");
@@ -1568,6 +1581,16 @@ void ISel::visitShiftInst(ShiftInst &I) {
   }
 }
 
+/// emitShiftOperation - Common code shared between visitShiftInst and
+/// constant expression support.
+void ISel::emitShiftOperation(MachineBasicBlock *MBB,
+                              MachineBasicBlock::iterator &IP,
+                              Value *Op0, Value *Op1, unsigned Opcode,
+                              unsigned TargetReg) {
+  // FIXME: Should do all the stuff from visitShiftInst, but use BMI
+  assert (0 && "Constant shift operations not yet handled");
+}
+
 
 /// visitLoadInst - Implement LLVM load instructions in terms of the x86 'mov'
 /// instruction.  The load and store instructions are the only place where we