| ... | @@ -459,3 +459,47 @@ test "bitcast nan float does modify signaling bit" { | ... | @@ -459,3 +459,47 @@ test "bitcast nan float does modify signaling bit" { |
| 459 | try expectEqual(math.nan_u128, @as(u128, @bitCast(snan_f128_var))); | 459 | try expectEqual(math.nan_u128, @as(u128, @bitCast(snan_f128_var))); |
| 460 | try expectEqual(math.nan_u128, bitCastWrapper128(snan_f128_var)); | 460 | try expectEqual(math.nan_u128, bitCastWrapper128(snan_f128_var)); |
| 461 | } | 461 | } |
| | 462 | |
| | 463 | test "@bitCast of packed struct of bools all true" { |
| | 464 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| | 465 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| | 466 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| | 467 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| | 468 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| | 469 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO |
| | 470 | |
| | 471 | const P = packed struct { |
| | 472 | b0: bool, |
| | 473 | b1: bool, |
| | 474 | b2: bool, |
| | 475 | b3: bool, |
| | 476 | }; |
| | 477 | var p = std.mem.zeroes(P); |
| | 478 | p.b0 = true; |
| | 479 | p.b1 = true; |
| | 480 | p.b2 = true; |
| | 481 | p.b3 = true; |
| | 482 | try expect(@as(u8, @as(u4, @bitCast(p))) == 15); |
| | 483 | } |
| | 484 | |
| | 485 | test "@bitCast of packed struct of bools all false" { |
| | 486 | if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO |
| | 487 | if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO |
| | 488 | if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO |
| | 489 | if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO |
| | 490 | if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO |
| | 491 | if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO |
| | 492 | |
| | 493 | const P = packed struct { |
| | 494 | b0: bool, |
| | 495 | b1: bool, |
| | 496 | b2: bool, |
| | 497 | b3: bool, |
| | 498 | }; |
| | 499 | var p = std.mem.zeroes(P); |
| | 500 | p.b0 = false; |
| | 501 | p.b1 = false; |
| | 502 | p.b2 = false; |
| | 503 | p.b3 = false; |
| | 504 | try expect(@as(u8, @as(u4, @bitCast(p))) == 0); |
| | 505 | } |