authorgravatar for topolarity@tapscott.meCody Tapscott <topolarity@tapscott.me> 2022-02-15 10:45:25-07:00
committergravatar for topolarity@tapscott.meCody Tapscott <topolarity@tapscott.me> 2022-02-18 14:28:32-07:00
logdb80dff4e002146063609d20599a7310837074c7
tree4035e1593a535d6d0a1bea5d61b19cfe43a351fd
parentfe1d6c2f56caaf4151d3880f483fe88af9f34b6b

Add backend-specific skips for bitreverse, byteswap tests


4 files changed, 21 insertions(+), 8 deletions(-)

src/codegen/llvm.zig+1-1
...@@ -4390,7 +4390,7 @@ pub const FuncGen = struct {...@@ -4390,7 +4390,7 @@ pub const FuncGen = struct {
4390 var operand_llvm_ty = try self.dg.llvmType(operand_ty);4390 var operand_llvm_ty = try self.dg.llvmType(operand_ty);
43914391
4392 if (bits % 16 == 8) {4392 if (bits % 16 == 8) {
4393 // If not an even byte-multiple, we need zero-extend + shift-left 1 byte 4393 // If not an even byte-multiple, we need zero-extend + shift-left 1 byte
4394 // The truncated result at the end will be the correct bswap4394 // The truncated result at the end will be the correct bswap
4395 operand_llvm_ty = self.context.intType(bits + 8);4395 operand_llvm_ty = self.context.intType(bits + 8);
4396 const extended = self.builder.buildZExt(operand, operand_llvm_ty, "");4396 const extended = self.builder.buildZExt(operand, operand_llvm_ty, "");
test/behavior.zig+2-2
...@@ -6,6 +6,8 @@ test {...@@ -6,6 +6,8 @@ test {
6 _ = @import("behavior/array.zig");6 _ = @import("behavior/array.zig");
7 _ = @import("behavior/basic.zig");7 _ = @import("behavior/basic.zig");
8 _ = @import("behavior/bit_shifting.zig");8 _ = @import("behavior/bit_shifting.zig");
9 _ = @import("behavior/bitreverse.zig");
10 _ = @import("behavior/byteswap.zig");
9 _ = @import("behavior/bool.zig");11 _ = @import("behavior/bool.zig");
10 _ = @import("behavior/bugs/394.zig");12 _ = @import("behavior/bugs/394.zig");
11 _ = @import("behavior/bugs/655.zig");13 _ = @import("behavior/bugs/655.zig");
...@@ -105,8 +107,6 @@ test {...@@ -105,8 +107,6 @@ test {
105 if (builtin.zig_backend != .stage2_c) {107 if (builtin.zig_backend != .stage2_c) {
106 // Tests that pass for stage1 and the llvm backend.108 // Tests that pass for stage1 and the llvm backend.
107 _ = @import("behavior/atomics.zig");109 _ = @import("behavior/atomics.zig");
108 _ = @import("behavior/bitreverse.zig");
109 _ = @import("behavior/byteswap.zig");
110 _ = @import("behavior/bugs/9584.zig");110 _ = @import("behavior/bugs/9584.zig");
111 _ = @import("behavior/eval.zig");111 _ = @import("behavior/eval.zig");
112 _ = @import("behavior/floatop.zig");112 _ = @import("behavior/floatop.zig");
test/behavior/bitreverse.zig+14-5
...@@ -3,10 +3,24 @@ const builtin = @import("builtin");...@@ -3,10 +3,24 @@ const builtin = @import("builtin");
3const expect = std.testing.expect;3const expect = std.testing.expect;
4const minInt = std.math.minInt;4const minInt = std.math.minInt;
55
6test "@bitReverse large exotic integer" {
7 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
8 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
9 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
10 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
11 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
12 // Currently failing on stage1 for big-endian targets
13 if (builtin.zig_backend == .stage1) return error.SkipZigTest;
14
15 try expect(@bitReverse(u95, @as(u95, 0x123456789abcdef111213141)) == 0x4146424447bd9eac8f351624);
16}
17
6test "@bitReverse" {18test "@bitReverse" {
7 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;19 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
8 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;20 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
9 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;21 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
22 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
23 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1024
11 comptime try testBitReverse();25 comptime try testBitReverse();
12 try testBitReverse();26 try testBitReverse();
...@@ -27,11 +41,6 @@ fn testBitReverse() !void {...@@ -27,11 +41,6 @@ fn testBitReverse() !void {
27 try expect(@bitReverse(u96, @as(u96, 0x123456789abcdef111213141)) == 0x828c84888f7b3d591e6a2c48);41 try expect(@bitReverse(u96, @as(u96, 0x123456789abcdef111213141)) == 0x828c84888f7b3d591e6a2c48);
28 try expect(@bitReverse(u128, @as(u128, 0x123456789abcdef11121314151617181)) == 0x818e868a828c84888f7b3d591e6a2c48);42 try expect(@bitReverse(u128, @as(u128, 0x123456789abcdef11121314151617181)) == 0x818e868a828c84888f7b3d591e6a2c48);
2943
30 if (builtin.zig_backend != .stage1) {
31 // Currently failing on stage1 for big-endian targets
32 try expect(@bitReverse(u95, @as(u95, 0x123456789abcdef111213141)) == 0x4146424447bd9eac8f351624);
33 }
34
35 // using runtime uints, unsigned44 // using runtime uints, unsigned
36 var num0: u0 = 0;45 var num0: u0 = 0;
37 try expect(@bitReverse(u0, num0) == 0);46 try expect(@bitReverse(u0, num0) == 0);
test/behavior/byteswap.zig+4
...@@ -6,6 +6,8 @@ test "@byteSwap integers" {...@@ -6,6 +6,8 @@ test "@byteSwap integers" {
6 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;6 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
7 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;7 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
8 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;8 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
9 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
10 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
911
10 const ByteSwapIntTest = struct {12 const ByteSwapIntTest = struct {
11 fn run() !void {13 fn run() !void {
...@@ -56,6 +58,8 @@ test "@byteSwap vectors" {...@@ -56,6 +58,8 @@ test "@byteSwap vectors" {
56 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;58 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
57 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;59 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
58 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;60 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
61 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
62 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
5963
60 const ByteSwapVectorTest = struct {64 const ByteSwapVectorTest = struct {
61 fn run() !void {65 fn run() !void {