Commit db80dff4e0

Cody Tapscott <topolarity@tapscott.me>
2022-02-15 18:45:25
Add backend-specific skips for bitreverse, byteswap tests
1 parent fe1d6c2
Changed files (4)
src/codegen/llvm.zig
@@ -4390,7 +4390,7 @@ pub const FuncGen = struct {
         var operand_llvm_ty = try self.dg.llvmType(operand_ty);
 
         if (bits % 16 == 8) {
-            // If not an even byte-multiple, we need zero-extend + shift-left 1 byte 
+            // If not an even byte-multiple, we need zero-extend + shift-left 1 byte
             // The truncated result at the end will be the correct bswap
             operand_llvm_ty = self.context.intType(bits + 8);
             const extended = self.builder.buildZExt(operand, operand_llvm_ty, "");
test/behavior/bitreverse.zig
@@ -3,10 +3,24 @@ const builtin = @import("builtin");
 const expect = std.testing.expect;
 const minInt = std.math.minInt;
 
+test "@bitReverse large exotic integer" {
+    if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
+    if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
+    if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
+    if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
+    if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
+    // Currently failing on stage1 for big-endian targets
+    if (builtin.zig_backend == .stage1) return error.SkipZigTest;
+
+    try expect(@bitReverse(u95, @as(u95, 0x123456789abcdef111213141)) == 0x4146424447bd9eac8f351624);
+}
+
 test "@bitReverse" {
     if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
     if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
     if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
+    if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
+    if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
 
     comptime try testBitReverse();
     try testBitReverse();
@@ -27,11 +41,6 @@ fn testBitReverse() !void {
     try expect(@bitReverse(u96, @as(u96, 0x123456789abcdef111213141)) == 0x828c84888f7b3d591e6a2c48);
     try expect(@bitReverse(u128, @as(u128, 0x123456789abcdef11121314151617181)) == 0x818e868a828c84888f7b3d591e6a2c48);
 
-    if (builtin.zig_backend != .stage1) {
-        // Currently failing on stage1 for big-endian targets
-        try expect(@bitReverse(u95, @as(u95, 0x123456789abcdef111213141)) == 0x4146424447bd9eac8f351624);
-    }
-
     // using runtime uints, unsigned
     var num0: u0 = 0;
     try expect(@bitReverse(u0, num0) == 0);
test/behavior/byteswap.zig
@@ -6,6 +6,8 @@ test "@byteSwap integers" {
     if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
     if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
     if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
+    if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
+    if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
 
     const ByteSwapIntTest = struct {
         fn run() !void {
@@ -56,6 +58,8 @@ test "@byteSwap vectors" {
     if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
     if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
     if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
+    if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
+    if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
 
     const ByteSwapVectorTest = struct {
         fn run() !void {
test/behavior.zig
@@ -6,6 +6,8 @@ test {
     _ = @import("behavior/array.zig");
     _ = @import("behavior/basic.zig");
     _ = @import("behavior/bit_shifting.zig");
+    _ = @import("behavior/bitreverse.zig");
+    _ = @import("behavior/byteswap.zig");
     _ = @import("behavior/bool.zig");
     _ = @import("behavior/bugs/394.zig");
     _ = @import("behavior/bugs/655.zig");
@@ -105,8 +107,6 @@ test {
             if (builtin.zig_backend != .stage2_c) {
                 // Tests that pass for stage1 and the llvm backend.
                 _ = @import("behavior/atomics.zig");
-                _ = @import("behavior/bitreverse.zig");
-                _ = @import("behavior/byteswap.zig");
                 _ = @import("behavior/bugs/9584.zig");
                 _ = @import("behavior/eval.zig");
                 _ = @import("behavior/floatop.zig");