diff --git a/utils/TableGen/CodeGenInstruction.h b/utils/TableGen/CodeGenInstruction.h
index 3b3babf..54f4b98 100644
--- a/utils/TableGen/CodeGenInstruction.h
+++ b/utils/TableGen/CodeGenInstruction.h
@@ -56,10 +56,12 @@
       /// OperandList may not match the MachineInstr operand num.  Until it
       /// does, this contains the MI operand index of this operand.
       unsigned MIOperandNo;
+      unsigned MINumOperands;   // The number of operands.
 
       OperandInfo(Record *R, MVT::ValueType T, const std::string &N,
-                  const std::string &PMN, unsigned MION)
-        : Rec(R), Ty(T), Name(N), PrinterMethodName(PMN), MIOperandNo(MION) {}
+                  const std::string &PMN, unsigned MION, unsigned MINO)
+        : Rec(R), Ty(T), Name(N), PrinterMethodName(PMN), MIOperandNo(MION),
+          MINumOperands(MINO) {}
     };
 
     /// OperandList - The list of declared operands, along with their declared
@@ -78,6 +80,7 @@
     bool isCommutable;
     bool isTerminator;
     bool hasDelaySlot;
+    bool hasVariableNumberOfOperands;
 
     CodeGenInstruction(Record *R, const std::string &AsmStr);
 
diff --git a/utils/TableGen/CodeGenTarget.cpp b/utils/TableGen/CodeGenTarget.cpp
index 02678e9..da6bf8d 100644
--- a/utils/TableGen/CodeGenTarget.cpp
+++ b/utils/TableGen/CodeGenTarget.cpp
@@ -237,7 +237,8 @@
   isCommutable = R->getValueAsBit("isCommutable");
   isTerminator = R->getValueAsBit("isTerminator");
   hasDelaySlot = R->getValueAsBit("hasDelaySlot");
-
+  hasVariableNumberOfOperands = false;
+  
   try {
     DagInit *DI = R->getValueAsDag("OperandList");
 
@@ -248,18 +249,20 @@
         MVT::ValueType Ty;
         std::string PrintMethod = "printOperand";
         unsigned NumOps = 1;
-        if (Rec->isSubClassOf("RegisterClass"))
+        if (Rec->isSubClassOf("RegisterClass")) {
           Ty = getValueType(Rec->getValueAsDef("RegType"));
-        else if (Rec->isSubClassOf("Operand")) {
+        } else if (Rec->isSubClassOf("Operand")) {
           Ty = getValueType(Rec->getValueAsDef("Type"));
           PrintMethod = Rec->getValueAsString("PrintMethod");
           NumOps = Rec->getValueAsInt("NumMIOperands");
+        } else if (Rec->getName() == "variable_ops") {
+          hasVariableNumberOfOperands = true;
         } else
           throw "Unknown operand class '" + Rec->getName() +
                 "' in instruction '" + R->getName() + "' instruction!";
 
         OperandList.push_back(OperandInfo(Rec, Ty, DI->getArgName(i),
-                                          PrintMethod, MIOperandNo));
+                                          PrintMethod, MIOperandNo, NumOps));
         MIOperandNo += NumOps;
       } else {
         throw "Illegal operand for the '" + R->getName() + "' instruction!";
