Added IRBuilder::CreateFPExtOrFPTrunc.
This method serves an analogous purpose to CreateZExtOrTrunc/CreateSExtOrTrunc but for floating point types. In detail, it provides a manner when one is handling conversions of floating point types of automatically selecting fpext, fptrunc, or identity depending on the relative bitsize of the source and destination types. llvm-svn: 172957
This commit is contained in:
parent
619ca0dc40
commit
1d200f6d40
|
@ -1048,6 +1048,20 @@ public:
|
|||
return CreateTrunc(V, DestTy, Name);
|
||||
return V;
|
||||
}
|
||||
/// CreateFPExtOrFPTrunc - Create a FPExt or FPTrunc from the float value V to
|
||||
/// DestTy. Return the value untouched if the type of V is already DestTy.
|
||||
Value *CreateFPExtOrFPTrunc(Value *V, Type *DestTy,
|
||||
const Twine &Name = "") {
|
||||
assert(V->getType()->isFPOrFPVectorTy() &&
|
||||
DestTy->isFPOrFPVectorTy() &&
|
||||
"Can only FPExt/FPTrunc floating point types!");
|
||||
Type *Ty = V->getType();
|
||||
if (Ty->getScalarSizeInBits() < DestTy->getScalarSizeInBits())
|
||||
return CreateFPExt(V, DestTy, Name);
|
||||
if (Ty->getScalarSizeInBits() > DestTy->getScalarSizeInBits())
|
||||
return CreateFPTrunc(V, DestTy, Name);
|
||||
return V;
|
||||
}
|
||||
Value *CreateFPToUI(Value *V, Type *DestTy, const Twine &Name = ""){
|
||||
return CreateCast(Instruction::FPToUI, V, DestTy, Name);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue