summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorMichael Gottesman <mgottesman@apple.com>2013-01-20 07:33:26 +0000
committerMichael Gottesman <mgottesman@apple.com>2013-01-20 07:33:26 +0000
commitec98d2ce5ec51148e442c024b77a7483c81eee6c (patch)
treef002d2a394f230a23fbe1a09f9229f37ada93afe /include
parentdf76b389e0afb31778b7a4acec406f1e52104cb8 (diff)
downloadllvm-ec98d2ce5ec51148e442c024b77a7483c81eee6c.tar.gz
llvm-ec98d2ce5ec51148e442c024b77a7483c81eee6c.tar.bz2
llvm-ec98d2ce5ec51148e442c024b77a7483c81eee6c.tar.xz
Changed IRBuilder::CreateZExtOrTrunc and IRBuilder::CreateSExtOrTrunc so they also work with vectors.
I also changed the name of a variable in IRBuilder::CreateFPExtOrFPTrunc to match the names used in its two matching brethern as well. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@172967 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r--include/llvm/IR/IRBuilder.h28
1 files changed, 15 insertions, 13 deletions
diff --git a/include/llvm/IR/IRBuilder.h b/include/llvm/IR/IRBuilder.h
index 22e082e530..e2ec481d07 100644
--- a/include/llvm/IR/IRBuilder.h
+++ b/include/llvm/IR/IRBuilder.h
@@ -1031,27 +1031,29 @@ public:
}
/// \brief Create a ZExt or Trunc from the integer value V to DestTy. Return
/// the value untouched if the type of V is already DestTy.
- Value *CreateZExtOrTrunc(Value *V, IntegerType *DestTy,
+ Value *CreateZExtOrTrunc(Value *V, Type *DestTy,
const Twine &Name = "") {
- assert(isa<IntegerType>(V->getType()) &&
+ assert(V->getType()->isIntOrIntVectorTy() &&
+ DestTy->isIntOrIntVectorTy() &&
"Can only zero extend/truncate integers!");
- IntegerType *IntTy = cast<IntegerType>(V->getType());
- if (IntTy->getBitWidth() < DestTy->getBitWidth())
+ Type *VTy = V->getType();
+ if (VTy->getScalarSizeInBits() < DestTy->getScalarSizeInBits())
return CreateZExt(V, DestTy, Name);
- if (IntTy->getBitWidth() > DestTy->getBitWidth())
+ if (VTy->getScalarSizeInBits() > DestTy->getScalarSizeInBits())
return CreateTrunc(V, DestTy, Name);
return V;
}
/// \brief Create a SExt or Trunc from the integer value V to DestTy. Return
/// the value untouched if the type of V is already DestTy.
- Value *CreateSExtOrTrunc(Value *V, IntegerType *DestTy,
+ Value *CreateSExtOrTrunc(Value *V, Type *DestTy,
const Twine &Name = "") {
- assert(isa<IntegerType>(V->getType()) &&
+ assert(V->getType()->isIntOrIntVectorTy() &&
+ DestTy->isIntOrIntVectorTy() &&
"Can only sign extend/truncate integers!");
- IntegerType *IntTy = cast<IntegerType>(V->getType());
- if (IntTy->getBitWidth() < DestTy->getBitWidth())
+ Type *VTy = V->getType();
+ if (VTy->getScalarSizeInBits() < DestTy->getScalarSizeInBits())
return CreateSExt(V, DestTy, Name);
- if (IntTy->getBitWidth() > DestTy->getBitWidth())
+ if (VTy->getScalarSizeInBits() > DestTy->getScalarSizeInBits())
return CreateTrunc(V, DestTy, Name);
return V;
}
@@ -1062,10 +1064,10 @@ public:
assert(V->getType()->isFPOrFPVectorTy() &&
DestTy->isFPOrFPVectorTy() &&
"Can only FPExt/FPTrunc floating point types!");
- Type *Ty = V->getType();
- if (Ty->getScalarSizeInBits() < DestTy->getScalarSizeInBits())
+ Type *VTy = V->getType();
+ if (VTy->getScalarSizeInBits() < DestTy->getScalarSizeInBits())
return CreateFPExt(V, DestTy, Name);
- if (Ty->getScalarSizeInBits() > DestTy->getScalarSizeInBits())
+ if (VTy->getScalarSizeInBits() > DestTy->getScalarSizeInBits())
return CreateFPTrunc(V, DestTy, Name);
return V;
}