| ... | ... | @@ -459,3 +459,47 @@ test "bitcast nan float does modify signaling bit" { |
| 459 | 459 | try expectEqual(math.nan_u128, @as(u128, @bitCast(snan_f128_var))); |
| 460 | 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 | } |