From b9d738a5cff0ab896c25f1c8abe15757bcd6a0ba Mon Sep 17 00:00:00 2001 From: Robin Voetter Date: Fri, 31 May 2024 00:09:28 +0200 Subject: [PATCH] spirv: disable tests that fail on pocl Besides the Intel OpenCL CPU runtime, we can now run the behavior tests using the Portable Computing Language. This implementation is open-source, so it will be easier for us to patch in updated versions of spirv-llvm-translator that have bug fixes etc. --- test/behavior/abs.zig | 1 + test/behavior/array.zig | 1 + test/behavior/byval_arg_var.zig | 1 + test/behavior/cast.zig | 1 + test/behavior/enum.zig | 1 + test/behavior/error.zig | 3 +++ test/behavior/hasdecl.zig | 2 ++ test/behavior/math.zig | 1 + test/behavior/optional.zig | 2 ++ test/behavior/packed-struct.zig | 2 ++ test/behavior/packed-union.zig | 2 ++ test/behavior/slice.zig | 3 +++ test/behavior/string_literals.zig | 2 ++ test/behavior/typename.zig | 5 +++++ test/behavior/union.zig | 1 + test/behavior/vector.zig | 1 + 16 files changed, 29 insertions(+) diff --git a/test/behavior/abs.zig b/test/behavior/abs.zig index 21f02b2a3d63d308dd57ecf496c280924025cdc7..8ca160faffb6354b294c6b6a02427016cdeaf11e 100644 --- a/test/behavior/abs.zig +++ b/test/behavior/abs.zig @@ -152,6 +152,7 @@ test "@abs int vectors" { if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; try comptime testAbsIntVectors(1); try testAbsIntVectors(1); diff --git a/test/behavior/array.zig b/test/behavior/array.zig index d524023c9b3ef2fdae18e44c8ef4fb8449e801f4..49a03c05e23448ed23ed2eb77fdbb0439ff5118a 100644 --- a/test/behavior/array.zig +++ b/test/behavior/array.zig @@ -768,6 +768,7 @@ test "slicing array of zero-sized values" { if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; var arr: [32]u0 = undefined; for (arr[0..]) |*zero| diff --git a/test/behavior/byval_arg_var.zig b/test/behavior/byval_arg_var.zig index ed0fde991f4a768f341a00b8f0347c2a972f8807..6b48769500b88d2e5fa2dcaf093521accdfb13f1 100644 --- a/test/behavior/byval_arg_var.zig +++ b/test/behavior/byval_arg_var.zig @@ -6,6 +6,7 @@ var result: []const u8 = "wrong"; test "pass string literal byvalue to a generic var param" { if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; start(); blowUpStack(10); diff --git a/test/behavior/cast.zig b/test/behavior/cast.zig index 46cf272e57197c45b69264c7838d8e87f574f952..a3ffb7cb3a0140f7a44ddc20d616431d1ac3221b 100644 --- a/test/behavior/cast.zig +++ b/test/behavior/cast.zig @@ -1378,6 +1378,7 @@ test "assignment to optional pointer result loc" { test "cast between *[N]void and []void" { if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; var a: [4]void = undefined; const b: []void = &a; diff --git a/test/behavior/enum.zig b/test/behavior/enum.zig index dd2d83a28999681620a2ff5541caaf102e4a3412..0742c2d91cf1ae8c3da0f2e5f93d078839e10cc0 100644 --- a/test/behavior/enum.zig +++ b/test/behavior/enum.zig @@ -1286,6 +1286,7 @@ test "matching captures causes enum equivalence" { test "large enum field values" { if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; { const E = enum(u64) { min = std.math.minInt(u64), max = std.math.maxInt(u64) }; diff --git a/test/behavior/error.zig b/test/behavior/error.zig index b579f1478ed2998f188c99a0b5099fcf2dcfd519..8db9703f510d674c87e41d6776e9b86701891a82 100644 --- a/test/behavior/error.zig +++ b/test/behavior/error.zig @@ -997,6 +997,7 @@ test "try used in recursive function with inferred error set" { if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; const Value = union(enum) { values: []const @This(), @@ -1103,6 +1104,7 @@ test "result location initialization of error union with OPV payload" { if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; const S = struct { x: u0, @@ -1125,6 +1127,7 @@ test "result location initialization of error union with OPV payload" { test "return error union with i65" { if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; try expect(try add(1000, 234) == 1234); } diff --git a/test/behavior/hasdecl.zig b/test/behavior/hasdecl.zig index 71f9200b276e8bb02fdf5f53a7eb33c5c436e7d1..8f371defdbd33d6ad02b4830b82a499c4d3de975 100644 --- a/test/behavior/hasdecl.zig +++ b/test/behavior/hasdecl.zig @@ -13,6 +13,7 @@ const Bar = struct { test "@hasDecl" { if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; try expect(@hasDecl(Foo, "public_thing")); try expect(!@hasDecl(Foo, "private_thing")); @@ -25,6 +26,7 @@ test "@hasDecl" { test "@hasDecl using a sliced string literal" { if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; try expect(@hasDecl(@This(), "std") == true); try expect(@hasDecl(@This(), "std"[0..0]) == false); diff --git a/test/behavior/math.zig b/test/behavior/math.zig index eaef26b8045f402fee0793a267e181b6d3f9dfcb..59937515abcb1fc1494c815f77c441676689871b 100644 --- a/test/behavior/math.zig +++ b/test/behavior/math.zig @@ -622,6 +622,7 @@ test "negation wrapping" { if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; try expectEqual(@as(u1, 1), negateWrap(u1, 1)); } diff --git a/test/behavior/optional.zig b/test/behavior/optional.zig index 02c329a7d521d9751220e3cbb91580223bc33f3f..7884fec6cd22a1447e3066f8c25f7e630356877c 100644 --- a/test/behavior/optional.zig +++ b/test/behavior/optional.zig @@ -61,6 +61,7 @@ test "optional with zero-bit type" { if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; const S = struct { fn doTheTest(comptime ZeroBit: type, comptime zero_bit: ZeroBit) !void { @@ -641,6 +642,7 @@ test "result location initialization of optional with OPV payload" { if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; const S = struct { x: u0, diff --git a/test/behavior/packed-struct.zig b/test/behavior/packed-struct.zig index 51a302c945baaf9b8acb9888f4db88bde5ac15df..89289d60639da0bdd769bd113a7b06ca0451bc20 100644 --- a/test/behavior/packed-struct.zig +++ b/test/behavior/packed-struct.zig @@ -1306,6 +1306,8 @@ test "2-byte packed struct argument in C calling convention" { } test "packed struct contains optional pointer" { + if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; + const foo: packed struct { a: ?*@This() = null, } = .{}; diff --git a/test/behavior/packed-union.zig b/test/behavior/packed-union.zig index d76f28ae59b7c26c9cd2dc9ee731147acdb2222e..b0b0bd7f39dd8011142d29c910ab9010a2387365 100644 --- a/test/behavior/packed-union.zig +++ b/test/behavior/packed-union.zig @@ -177,6 +177,8 @@ test "assigning to non-active field at comptime" { } test "comptime packed union of pointers" { + if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; + const U = packed union { a: *const u32, b: *const [1]u32, diff --git a/test/behavior/slice.zig b/test/behavior/slice.zig index 437d248127d1f7971bd9c63905f1306bcf06a2c8..a1f38b1dfea5ca5a8cb1834fe03b9f2c000ec6a5 100644 --- a/test/behavior/slice.zig +++ b/test/behavior/slice.zig @@ -408,6 +408,7 @@ test "slice syntax resulting in pointer-to-array" { if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; const S = struct { fn doTheTest() !void { @@ -863,6 +864,7 @@ test "global slice field access" { test "slice of void" { if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; var n: usize = 10; _ = &n; @@ -988,6 +990,7 @@ test "get address of element of zero-sized slice" { if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; const S = struct { fn destroy(_: *void) void {} diff --git a/test/behavior/string_literals.zig b/test/behavior/string_literals.zig index b1bb5085032c1352d70b4bc21ee37c206ff6bdad..898de2167ca5301c713df0550218a3b889bc9db0 100644 --- a/test/behavior/string_literals.zig +++ b/test/behavior/string_literals.zig @@ -35,6 +35,7 @@ test "@typeName() returns a string literal" { if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; try std.testing.expect(*const [type_name.len:0]u8 == @TypeOf(type_name)); try std.testing.expect(std.mem.eql(u8, "behavior.string_literals.TestType", type_name)); @@ -49,6 +50,7 @@ test "@embedFile() returns a string literal" { if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; try std.testing.expect(*const [expected_contents.len:0]u8 == @TypeOf(actual_contents)); try std.testing.expect(std.mem.eql(u8, expected_contents, actual_contents)); diff --git a/test/behavior/typename.zig b/test/behavior/typename.zig index e5ebbb6f472898766a7d06cfd1dbb992cf5623c2..b08de5484eccb91b262613fc0afc29f246bf45a8 100644 --- a/test/behavior/typename.zig +++ b/test/behavior/typename.zig @@ -43,6 +43,7 @@ test "anon field init" { if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; const Foo = .{ .T1 = struct {}, @@ -91,6 +92,7 @@ test "top level decl" { if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; try expectEqualStrings( "behavior.typename.A_Struct", @@ -141,6 +143,7 @@ test "fn param" { if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/675 try expectEqualStrings( @@ -221,6 +224,7 @@ test "local variable" { if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; const Foo = struct { a: u32 }; const Bar = union { a: u32 }; @@ -250,6 +254,7 @@ test "anon name strategy used in sub expression" { if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; const S = struct { fn getTheName() []const u8 { diff --git a/test/behavior/union.zig b/test/behavior/union.zig index 62997d097a6df1bbd200977d8a0d9b3e05ca86f8..004774bd17e331d24792be7375814d15420bd7c1 100644 --- a/test/behavior/union.zig +++ b/test/behavior/union.zig @@ -920,6 +920,7 @@ test "union no tag with struct member" { if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO + if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; const Struct = struct {}; const Union = union { diff --git a/test/behavior/vector.zig b/test/behavior/vector.zig index 688b36a91182f884b7d40ef59249d473c48daa7c..8987e0c09140e621ee168eaacd7a00cecc2f3374 100644 --- a/test/behavior/vector.zig +++ b/test/behavior/vector.zig @@ -268,6 +268,7 @@ test "tuple to vector" { if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest; + if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .aarch64) { // Regressed with LLVM 14: -- 2.54.0