diff --git a/lib/Bytecode/Reader/Reader.cpp b/lib/Bytecode/Reader/Reader.cpp
index 8abf68c..2ec670e 100644
--- a/lib/Bytecode/Reader/Reader.cpp
+++ b/lib/Bytecode/Reader/Reader.cpp
@@ -725,6 +725,17 @@
                                     getValue(Type::UIntTyID, Oprnds[1]));
     break;
   }
+  case Instruction::InsertElement: {
+    const PackedType *PackedTy = dyn_cast<PackedType>(InstTy);
+    if (!PackedTy || Oprnds.size() != 3)
+      throw std::string("Invalid insertelement instruction!");
+    Result = 
+      new InsertElementInst(getValue(iType, Oprnds[0]), 
+                            getValue(getTypeSlot(PackedTy->getElementType()), 
+                                     Oprnds[1]),
+                            getValue(Type::UIntTyID, Oprnds[2]));
+    break;
+  }
   case Instruction::Cast:
     Result = new CastInst(getValue(iType, Oprnds[0]),
                           getSanitizedType(Oprnds[1]));
@@ -1455,6 +1466,13 @@
       Constant* Result = ConstantExpr::getExtractElement(ArgVec[0], ArgVec[1]);
       if (Handler) Handler->handleConstantExpression(Opcode, ArgVec, Result);
       return Result;
+    } else if (Opcode == Instruction::InsertElement) {
+      if (ArgVec.size() != 3)
+        error("InsertElement instruction must have three arguments.");
+      Constant* Result = 
+        ConstantExpr::getInsertElement(ArgVec[0], ArgVec[1], ArgVec[2]);
+      if (Handler) Handler->handleConstantExpression(Opcode, ArgVec, Result);
+      return Result;
     } else {                            // All other 2-operand expressions
       Constant* Result = ConstantExpr::get(Opcode, ArgVec[0], ArgVec[1]);
       if (Handler) Handler->handleConstantExpression(Opcode, ArgVec, Result);
