| ... | @@ -3,20 +3,20 @@ const builtin = @import("builtin"); | ... | @@ -3,20 +3,20 @@ const builtin = @import("builtin"); |
| 3 | const is_test = builtin.is_test; | 3 | const is_test = builtin.is_test; |
| 4 | | 4 | |
| 5 | pub extern fn __extenddftf2(a: f64) f128 { | 5 | pub extern fn __extenddftf2(a: f64) f128 { |
| 6 | return extendXfYf2(f128, f64, a); | 6 | return extendXfYf2(f128, f64, @bitCast(u64, a)); |
| 7 | } | 7 | } |
| 8 | | 8 | |
| 9 | pub extern fn __extendsftf2(a: f32) f128 { | 9 | pub extern fn __extendsftf2(a: f32) f128 { |
| 10 | return extendXfYf2(f128, f32, a); | 10 | return extendXfYf2(f128, f32, @bitCast(u32, a)); |
| 11 | } | 11 | } |
| 12 | | 12 | |
| 13 | pub extern fn __extendhfsf2(a: u16) f32 { | 13 | pub extern fn __extendhfsf2(a: u16) f32 { |
| 14 | return extendXfYf2(f32, f16, @bitCast(f16, a)); | 14 | return extendXfYf2(f32, f16, a); |
| 15 | } | 15 | } |
| 16 | | 16 | |
| 17 | const CHAR_BIT = 8; | 17 | const CHAR_BIT = 8; |
| 18 | | 18 | |
| 19 | inline fn extendXfYf2(comptime dst_t: type, comptime src_t: type, a: src_t) dst_t { | 19 | inline fn extendXfYf2(comptime dst_t: type, comptime src_t: type, a: @IntType(false, @typeInfo(src_t).Float.bits)) dst_t { |
| 20 | const src_rep_t = @IntType(false, @typeInfo(src_t).Float.bits); | 20 | const src_rep_t = @IntType(false, @typeInfo(src_t).Float.bits); |
| 21 | const dst_rep_t = @IntType(false, @typeInfo(dst_t).Float.bits); | 21 | const dst_rep_t = @IntType(false, @typeInfo(dst_t).Float.bits); |
| 22 | const srcSigBits = std.math.floatMantissaBits(src_t); | 22 | const srcSigBits = std.math.floatMantissaBits(src_t); |