diff options
| author | SuperAuguste <19855629+SuperAuguste@users.noreply.github.com> | 2024-03-17 20:19:52 -0400 |
|---|---|---|
| committer | Luuk de Gram <luuk@degram.dev> | 2024-03-18 12:40:41 +0100 |
| commit | 8e7d9afdacef9d3a9443fc4b70cfe6aa229ecee5 (patch) | |
| tree | 51141a201a9169704d792929f3d5a78dbd410bd5 /test | |
| parent | cbeab678a50e48ba55f39b391fcfe98823fe3c8c (diff) | |
| download | zig-8e7d9afdacef9d3a9443fc4b70cfe6aa229ecee5.tar.gz zig-8e7d9afdacef9d3a9443fc4b70cfe6aa229ecee5.zip | |
Add 64bit byteswap case, use fewer locals
Diffstat (limited to 'test')
| -rw-r--r-- | test/behavior/byteswap.zig | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/test/behavior/byteswap.zig b/test/behavior/byteswap.zig index 83e6c4a462..182948416c 100644 --- a/test/behavior/byteswap.zig +++ b/test/behavior/byteswap.zig @@ -3,7 +3,36 @@ const builtin = @import("builtin"); const expect = std.testing.expect; test "@byteSwap integers" { - if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_wasm) { + // TODO: Remove when self-hosted wasm supports more types for byteswap + const ByteSwapIntTest = struct { + fn run() !void { + try t(u8, 0x12, 0x12); + try t(u16, 0x1234, 0x3412); + try t(u24, 0x123456, 0x563412); + try t(i24, @as(i24, @bitCast(@as(u24, 0xf23456))), 0x5634f2); + try t(i24, 0x1234f6, @as(i24, @bitCast(@as(u24, 0xf63412)))); + try t(u32, 0x12345678, 0x78563412); + try t(i32, @as(i32, @bitCast(@as(u32, 0xf2345678))), 0x785634f2); + try t(i32, 0x123456f8, @as(i32, @bitCast(@as(u32, 0xf8563412)))); + try t(u64, 0x123456789abcdef1, 0xf1debc9a78563412); + + try t(u0, @as(u0, 0), 0); + try t(i8, @as(i8, -50), -50); + try t(i16, @as(i16, @bitCast(@as(u16, 0x1234))), @as(i16, @bitCast(@as(u16, 0x3412)))); + try t(i24, @as(i24, @bitCast(@as(u24, 0x123456))), @as(i24, @bitCast(@as(u24, 0x563412)))); + try t(i32, @as(i32, @bitCast(@as(u32, 0x12345678))), @as(i32, @bitCast(@as(u32, 0x78563412)))); + try t(i64, @as(i64, @bitCast(@as(u64, 0x123456789abcdef1))), @as(i64, @bitCast(@as(u64, 0xf1debc9a78563412)))); + } + fn t(comptime I: type, input: I, expected_output: I) !void { + try std.testing.expect(expected_output == @byteSwap(input)); + } + }; + try comptime ByteSwapIntTest.run(); + try ByteSwapIntTest.run(); + return; + } + if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; |
