Add Scalar::to_(u|i)16 methods

This commit is contained in:
Christian Poveda 2019-12-25 08:42:14 -05:00
parent 7bc1665730
commit 415ecc848d
No known key found for this signature in database
GPG key ID: 27525EF5E7420A50

View file

@ -421,6 +421,12 @@ impl<'tcx, Tag> Scalar<Tag> {
Ok(b as u8)
}
pub fn to_u16(self) -> InterpResult<'static, u16> {
let sz = Size::from_bits(16);
let b = self.to_bits(sz)?;
Ok(b as u16)
}
pub fn to_u32(self) -> InterpResult<'static, u32> {
let sz = Size::from_bits(32);
let b = self.to_bits(sz)?;
@ -445,6 +451,13 @@ impl<'tcx, Tag> Scalar<Tag> {
Ok(b as i8)
}
pub fn to_i16(self) -> InterpResult<'static, i16> {
let sz = Size::from_bits(16);
let b = self.to_bits(sz)?;
let b = sign_extend(b, sz) as i128;
Ok(b as i16)
}
pub fn to_i32(self) -> InterpResult<'static, i32> {
let sz = Size::from_bits(32);
let b = self.to_bits(sz)?;