diff --git a/include/llvm/Constants.h b/include/llvm/Constants.h
index 2e471cb..b5ba1b9 100644
--- a/include/llvm/Constants.h
+++ b/include/llvm/Constants.h
@@ -544,6 +544,8 @@
   /// Cast constant expr
   ///
   static Constant *getCast(Constant *C, const Type *Ty);
+  static Constant *getSignExtend(Constant *C, const Type *Ty);
+  static Constant *getZeroExtend(Constant *C, const Type *Ty);
 
   /// Select constant expr
   ///
diff --git a/lib/VMCore/Constants.cpp b/lib/VMCore/Constants.cpp
index 6c6557d..3ed7008 100644
--- a/lib/VMCore/Constants.cpp
+++ b/lib/VMCore/Constants.cpp
@@ -1131,6 +1131,22 @@
   return ExprConstants.getOrCreate(Ty, Key);
 }
 
+Constant *ConstantExpr::getSignExtend(Constant *C, const Type *Ty) {
+  assert(C->getType()->isInteger() && Ty->isInteger() &&
+         C->getType()->getPrimitiveSize() <= Ty->getPrimitiveSize() &&
+         "This is an illegal sign extension!");
+  C = ConstantExpr::getCast(C, C->getType()->getSignedVersion());
+  return ConstantExpr::getCast(C, Ty);
+}
+
+Constant *ConstantExpr::getZeroExtend(Constant *C, const Type *Ty) {
+  assert(C->getType()->isInteger() && Ty->isInteger() &&
+         C->getType()->getPrimitiveSize() <= Ty->getPrimitiveSize() &&
+         "This is an illegal zero extension!");
+  C = ConstantExpr::getCast(C, C->getType()->getUnsignedVersion());
+  return ConstantExpr::getCast(C, Ty);
+}
+
 Constant *ConstantExpr::getTy(const Type *ReqTy, unsigned Opcode,
                               Constant *C1, Constant *C2) {
   if (Opcode == Instruction::Shl || Opcode == Instruction::Shr)
