@@ -280,6 +280,26 @@ impl<'tcx, Tag> Scalar<Tag> {
280
280
Scalar :: Raw { data : i, size : size. bytes ( ) as u8 }
281
281
}
282
282
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
+
283
303
#[ inline]
284
304
pub fn from_int ( i : impl Into < i128 > , size : Size ) -> Self {
285
305
let i = i. into ( ) ;
@@ -294,12 +314,14 @@ impl<'tcx, Tag> Scalar<Tag> {
294
314
295
315
#[ inline]
296
316
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 }
298
319
}
299
320
300
321
#[ inline]
301
322
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 }
303
325
}
304
326
305
327
#[ inline]
0 commit comments