@@ -280,6 +280,26 @@ impl<'tcx, Tag> Scalar<Tag> {
280280 Scalar :: Raw { data : i, size : size. bytes ( ) as u8 }
281281 }
282282
283+ #[ inline]
284+ pub fn from_u8 ( i : u8 ) -> Self {
285+ Scalar :: Raw { data : i as u128 , size : 1 }
286+ }
287+
288+ #[ inline]
289+ pub fn from_u16 ( i : u16 ) -> Self {
290+ Scalar :: Raw { data : i as u128 , size : 2 }
291+ }
292+
293+ #[ inline]
294+ pub fn from_u32 ( i : u32 ) -> Self {
295+ Scalar :: Raw { data : i as u128 , size : 4 }
296+ }
297+
298+ #[ inline]
299+ pub fn from_u64 ( i : u64 ) -> Self {
300+ Scalar :: Raw { data : i as u128 , size : 8 }
301+ }
302+
283303 #[ inline]
284304 pub fn from_int ( i : impl Into < i128 > , size : Size ) -> Self {
285305 let i = i. into ( ) ;
@@ -294,12 +314,14 @@ impl<'tcx, Tag> Scalar<Tag> {
294314
295315 #[ inline]
296316 pub fn from_f32 ( f : Single ) -> Self {
297- Scalar :: Raw { data : f. to_bits ( ) as u128 , size : 4 }
317+ // We trust apfloat to give us properly truncated data
318+ Scalar :: Raw { data : f. to_bits ( ) , size : 4 }
298319 }
299320
300321 #[ inline]
301322 pub fn from_f64 ( f : Double ) -> Self {
302- Scalar :: Raw { data : f. to_bits ( ) as u128 , size : 8 }
323+ // We trust apfloat to give us properly truncated data
324+ Scalar :: Raw { data : f. to_bits ( ) , size : 8 }
303325 }
304326
305327 #[ inline]
0 commit comments