diff --git a/utils/TableGen/CodeGenTarget.cpp b/utils/TableGen/CodeGenTarget.cpp
index d792548..df271d1 100644
--- a/utils/TableGen/CodeGenTarget.cpp
+++ b/utils/TableGen/CodeGenTarget.cpp
@@ -205,10 +205,10 @@
 
 void CodeGenTarget::ReadInstructions() const {
   std::vector<Record*> Insts = Records.getAllDerivedDefinitions("Instruction");
-
-  if (Insts.empty())
+  if (Insts.size() <= 2)
     throw std::string("No 'Instruction' subclasses defined!");
 
+  // Parse the instructions defined in the .td file.
   std::string InstFormatName =
     getAsmWriter()->getValueAsString("InstFormatName");
 
@@ -219,29 +219,25 @@
   }
 }
 
-/// getPHIInstruction - Return the designated PHI instruction.
-///
-const CodeGenInstruction &CodeGenTarget::getPHIInstruction() const {
-  Record *PHI = getInstructionSet()->getValueAsDef("PHIInst");
-  std::map<std::string, CodeGenInstruction>::const_iterator I =
-    getInstructions().find(PHI->getName());
-  if (I == Instructions.end())
-    throw "Could not find PHI instruction named '" + PHI->getName() + "'!";
-  return I->second;
-}
-
 /// getInstructionsByEnumValue - Return all of the instructions defined by the
 /// target, ordered by their enum value.
 void CodeGenTarget::
 getInstructionsByEnumValue(std::vector<const CodeGenInstruction*>
                                                  &NumberedInstructions) {
-
+  std::map<std::string, CodeGenInstruction>::const_iterator I;
+  I = getInstructions().find("PHI");
+  if (I == Instructions.end()) throw "Could not find 'PHI' instruction!";
+  const CodeGenInstruction *PHI = &I->second;
+  
+  I = getInstructions().find("INLINEASM");
+  if (I == Instructions.end()) throw "Could not find 'INLINEASM' instruction!";
+  const CodeGenInstruction *INLINEASM = &I->second;
+  
   // Print out the rest of the instructions now.
-  unsigned i = 0;
-  const CodeGenInstruction *PHI = &getPHIInstruction();
   NumberedInstructions.push_back(PHI);
+  NumberedInstructions.push_back(INLINEASM);
   for (inst_iterator II = inst_begin(), E = inst_end(); II != E; ++II)
-    if (&II->second != PHI)
+    if (&II->second != PHI &&&II->second != INLINEASM)
       NumberedInstructions.push_back(&II->second);
 }
 
diff --git a/utils/TableGen/CodeGenTarget.h b/utils/TableGen/CodeGenTarget.h
index c7958d5..8a4367a 100644
--- a/utils/TableGen/CodeGenTarget.h
+++ b/utils/TableGen/CodeGenTarget.h
@@ -148,10 +148,6 @@
                                                 &NumberedInstructions);
 
 
-  /// getPHIInstruction - Return the designated PHI instruction.
-  ///
-  const CodeGenInstruction &getPHIInstruction() const;
-
   /// isLittleEndianEncoding - are instruction bit patterns defined as  [0..n]?
   ///
   bool isLittleEndianEncoding() const;
