| ... | ... | @@ -375,12 +375,19 @@ test "comptime @bitCast packed struct to int and back" { |
| 375 | 375 | } |
| 376 | 376 | } |
| 377 | 377 | |
| 378 | | test "comptime bitcast with fields following a float" { |
| 379 | | if (builtin.zig_backend != .stage1) return error.SkipZigTest; // TODO: https://github.com/ziglang/zig/issues/13214 |
| 378 | test "comptime bitcast with fields following f80" { |
| 379 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; |
| 380 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; |
| 381 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; |
| 382 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; |
| 383 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; |
| 384 | |
| 385 | const FloatT = extern struct { f: f80, x: u128 align(16) }; |
| 386 | const x: FloatT = .{ .f = 0.5, .x = 123 }; |
| 387 | var x_as_uint: u256 = comptime @bitCast(u256, x); |
| 380 | 388 | |
| 381 | | const FloatT = extern struct { f: f80, x: u128 }; |
| 382 | | var x: FloatT = .{ .f = 0.5, .x = 123 }; |
| 383 | | try expect(@bitCast(u256, x) == comptime @bitCast(u256, @as(FloatT, .{ .f = 0.5, .x = 123 }))); |
| 389 | try expect(x.f == @bitCast(FloatT, x_as_uint).f); |
| 390 | try expect(x.x == @bitCast(FloatT, x_as_uint).x); |
| 384 | 391 | } |
| 385 | 392 | |
| 386 | 393 | test "bitcast vector to integer and back" { |