diff --git a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
index ac30ff6..d1c49d0 100644
--- a/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
+++ b/lib/CodeGen/SelectionDAG/SelectionDAGISel.cpp
@@ -12,10 +12,10 @@
 //===----------------------------------------------------------------------===//
 
 #define DEBUG_TYPE "isel"
+#include "llvm/CodeGen/SelectionDAGISel.h"
+#include "SimpleBBISel.h"
 #include "llvm/ADT/BitVector.h"
 #include "llvm/Analysis/AliasAnalysis.h"
-#include "llvm/CodeGen/SelectionDAGISel.h"
-#include "llvm/CodeGen/ScheduleDAG.h"
 #include "llvm/Constants.h"
 #include "llvm/CallingConv.h"
 #include "llvm/DerivedTypes.h"
@@ -33,6 +33,7 @@
 #include "llvm/CodeGen/MachineJumpTableInfo.h"
 #include "llvm/CodeGen/MachineModuleInfo.h"
 #include "llvm/CodeGen/MachineRegisterInfo.h"
+#include "llvm/CodeGen/ScheduleDAG.h"
 #include "llvm/CodeGen/SchedulerRegistry.h"
 #include "llvm/CodeGen/SelectionDAG.h"
 #include "llvm/Target/TargetRegisterInfo.h"
@@ -5441,11 +5442,14 @@
   // each basic block.
   NodeAllocatorType NodeAllocator;
 
+  SimpleBBISel SISel(MF, TLI);
   std::vector<std::pair<MachineInstr*, unsigned> > PHINodesToUpdate;
   for (Function::iterator I = Fn.begin(), E = Fn.end(); I != E; ++I) {
     BasicBlock *LLVMBB = &*I;
     PHINodesToUpdate.clear();
-    SelectBasicBlock(LLVMBB, MF, FuncInfo, PHINodesToUpdate, NodeAllocator);
+
+    if (!FastISel || !SISel.SelectBasicBlock(LLVMBB,  FuncInfo.MBBMap[LLVMBB]))
+      SelectBasicBlock(LLVMBB, MF, FuncInfo, PHINodesToUpdate, NodeAllocator);
     FinishBasicBlock(LLVMBB, MF, FuncInfo, PHINodesToUpdate, NodeAllocator);
   }
 }
diff --git a/lib/CodeGen/SelectionDAG/SimpleBBISel.cpp b/lib/CodeGen/SelectionDAG/SimpleBBISel.cpp
new file mode 100644
index 0000000..1200cd3
--- /dev/null
+++ b/lib/CodeGen/SelectionDAG/SimpleBBISel.cpp
@@ -0,0 +1,29 @@
+//===-- SimpleBBISel.cpp - Implement the SimpleBBISel class ---------------===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This implements simple basic block instruction selection. If the given
+// BasicBlock is considered "simple", i.e. all operations are supported by
+// the target and their types are legal, it does instruction directly from
+// LLVM BasicBlock to MachineInstr's.
+//
+//===----------------------------------------------------------------------===//
+
+#define DEBUG_TYPE "simple-isel"
+#include "SimpleBBISel.h"
+#include "llvm/CodeGen/MachineFunction.h"
+#include "llvm/CodeGen/MachineInstrBuilder.h"
+#include "llvm/CodeGen/SelectionDAG.h"
+using namespace llvm;
+
+/// SelectBasicBlock - Try to convert a LLVM basic block into a
+/// MachineBasicBlock using simple instruction selection. Returns false if it
+/// is not able to do so.
+bool SimpleBBISel::SelectBasicBlock(BasicBlock *BB, MachineBasicBlock *MBB) {
+  return false;
+}
diff --git a/lib/CodeGen/SelectionDAG/SimpleBBISel.h b/lib/CodeGen/SelectionDAG/SimpleBBISel.h
new file mode 100644
index 0000000..f5a8be5
--- /dev/null
+++ b/lib/CodeGen/SelectionDAG/SimpleBBISel.h
@@ -0,0 +1,45 @@
+//===-- SimpleBBISel.cpp - Definition of the SimpleBBISel class -----------===//
+//
+//                     The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+//
+// This file defines the SimpleBBISel class which handles simple basic block
+// instruction selection. If the given BasicBlock is considered "simple", i.e.
+// all operations are supported by the target and their types are legal, it
+// does instruction directly from LLVM BasicBlock to MachineInstr's.
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef SELECTIONDAG_SIMPLEBBISEL_H
+#define SELECTIONDAG_SIMPLEBBISEL_H
+
+#include "llvm/Support/Compiler.h"
+
+namespace llvm {
+
+class BasicBlock;
+class MachineBasicBlock;
+class MachineFunction;
+class TargetLowering;
+
+class VISIBILITY_HIDDEN SimpleBBISel {
+  MachineFunction &MF;
+  TargetLowering &TLI;
+  
+ public:
+  explicit SimpleBBISel(MachineFunction &mf, TargetLowering &tli)
+    : MF(mf), TLI(tli) {};
+
+  /// SelectBasicBlock - Try to convert a LLVM basic block into a
+  /// MachineBasicBlock using simple instruction selection. Returns false if it
+  /// is not able to do so.
+  bool SelectBasicBlock(BasicBlock *BB, MachineBasicBlock *MBB);
+};
+  
+} // end namespace llvm.
+
+#endif
