authorgravatar for robin@voetter.nlRobin Voetter <robin@voetter.nl> 2024-05-31 00:09:28+02:00
committergravatar for robin@voetter.nlRobin Voetter <robin@voetter.nl> 2024-06-10 20:32:34+02:00
logb9d738a5cff0ab896c25f1c8abe15757bcd6a0ba
tree1a2938a226cb4605932665d9cb9fa9fcf4a81ad0
parent44443b833b9c86cb5a3c50b157f13ab4097226d8
signaturebadge-check Signed by SSH key SHA256:ZS52FNyUv2WUXvO4njmVaFVO46RHojFuOrxRc4LuKzg

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.

16 files changed, 29 insertions(+), 0 deletions(-)

test/behavior/abs.zig+1
...@@ -152,6 +152,7 @@ test "@abs int vectors" {...@@ -152,6 +152,7 @@ test "@abs int vectors" {
152 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO152 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
153 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO153 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
154 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;154 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
155 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
155156
156 try comptime testAbsIntVectors(1);157 try comptime testAbsIntVectors(1);
157 try testAbsIntVectors(1);158 try testAbsIntVectors(1);
test/behavior/array.zig+1
...@@ -768,6 +768,7 @@ test "slicing array of zero-sized values" {...@@ -768,6 +768,7 @@ test "slicing array of zero-sized values" {
768 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;768 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
769 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;769 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
770 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;770 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
771 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
771772
772 var arr: [32]u0 = undefined;773 var arr: [32]u0 = undefined;
773 for (arr[0..]) |*zero|774 for (arr[0..]) |*zero|
test/behavior/byval_arg_var.zig+1
...@@ -6,6 +6,7 @@ var result: []const u8 = "wrong";...@@ -6,6 +6,7 @@ var result: []const u8 = "wrong";
6test "pass string literal byvalue to a generic var param" {6test "pass string literal byvalue to a generic var param" {
7 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO7 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
8 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;8 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
9 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
910
10 start();11 start();
11 blowUpStack(10);12 blowUpStack(10);
test/behavior/cast.zig+1
...@@ -1378,6 +1378,7 @@ test "assignment to optional pointer result loc" {...@@ -1378,6 +1378,7 @@ test "assignment to optional pointer result loc" {
13781378
1379test "cast between *[N]void and []void" {1379test "cast between *[N]void and []void" {
1380 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1380 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1381 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
13811382
1382 var a: [4]void = undefined;1383 var a: [4]void = undefined;
1383 const b: []void = &a;1384 const b: []void = &a;
test/behavior/enum.zig+1
...@@ -1286,6 +1286,7 @@ test "matching captures causes enum equivalence" {...@@ -1286,6 +1286,7 @@ test "matching captures causes enum equivalence" {
1286test "large enum field values" {1286test "large enum field values" {
1287 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;1287 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
1288 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1288 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1289 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12891290
1290 {1291 {
1291 const E = enum(u64) { min = std.math.minInt(u64), max = std.math.maxInt(u64) };1292 const E = enum(u64) { min = std.math.minInt(u64), max = std.math.maxInt(u64) };
test/behavior/error.zig+3
...@@ -997,6 +997,7 @@ test "try used in recursive function with inferred error set" {...@@ -997,6 +997,7 @@ test "try used in recursive function with inferred error set" {
997 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO997 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
998 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO998 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
999 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;999 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1000 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
10001001
1001 const Value = union(enum) {1002 const Value = union(enum) {
1002 values: []const @This(),1003 values: []const @This(),
...@@ -1103,6 +1104,7 @@ test "result location initialization of error union with OPV payload" {...@@ -1103,6 +1104,7 @@ test "result location initialization of error union with OPV payload" {
1103 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO1104 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
1104 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1105 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1105 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1106 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1107 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11061108
1107 const S = struct {1109 const S = struct {
1108 x: u0,1110 x: u0,
...@@ -1125,6 +1127,7 @@ test "result location initialization of error union with OPV payload" {...@@ -1125,6 +1127,7 @@ test "result location initialization of error union with OPV payload" {
1125test "return error union with i65" {1127test "return error union with i65" {
1126 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;1128 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
1127 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;1129 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
1130 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11281131
1129 try expect(try add(1000, 234) == 1234);1132 try expect(try add(1000, 234) == 1234);
1130}1133}
test/behavior/hasdecl.zig+2
...@@ -13,6 +13,7 @@ const Bar = struct {...@@ -13,6 +13,7 @@ const Bar = struct {
1313
14test "@hasDecl" {14test "@hasDecl" {
15 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;15 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
16 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1617
17 try expect(@hasDecl(Foo, "public_thing"));18 try expect(@hasDecl(Foo, "public_thing"));
18 try expect(!@hasDecl(Foo, "private_thing"));19 try expect(!@hasDecl(Foo, "private_thing"));
...@@ -25,6 +26,7 @@ test "@hasDecl" {...@@ -25,6 +26,7 @@ test "@hasDecl" {
2526
26test "@hasDecl using a sliced string literal" {27test "@hasDecl using a sliced string literal" {
27 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;28 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
29 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
2830
29 try expect(@hasDecl(@This(), "std") == true);31 try expect(@hasDecl(@This(), "std") == true);
30 try expect(@hasDecl(@This(), "std"[0..0]) == false);32 try expect(@hasDecl(@This(), "std"[0..0]) == false);
test/behavior/math.zig+1
...@@ -622,6 +622,7 @@ test "negation wrapping" {...@@ -622,6 +622,7 @@ test "negation wrapping" {
622 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO622 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
623 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO623 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
624 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;624 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
625 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
625626
626 try expectEqual(@as(u1, 1), negateWrap(u1, 1));627 try expectEqual(@as(u1, 1), negateWrap(u1, 1));
627}628}
test/behavior/optional.zig+2
...@@ -61,6 +61,7 @@ test "optional with zero-bit type" {...@@ -61,6 +61,7 @@ test "optional with zero-bit type" {
61 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;61 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
62 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;62 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
63 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;63 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
64 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
6465
65 const S = struct {66 const S = struct {
66 fn doTheTest(comptime ZeroBit: type, comptime zero_bit: ZeroBit) !void {67 fn doTheTest(comptime ZeroBit: type, comptime zero_bit: ZeroBit) !void {
...@@ -641,6 +642,7 @@ test "result location initialization of optional with OPV payload" {...@@ -641,6 +642,7 @@ test "result location initialization of optional with OPV payload" {
641 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO642 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
642 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO643 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
643 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;644 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
645 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
644646
645 const S = struct {647 const S = struct {
646 x: u0,648 x: u0,
test/behavior/packed-struct.zig+2
...@@ -1306,6 +1306,8 @@ test "2-byte packed struct argument in C calling convention" {...@@ -1306,6 +1306,8 @@ test "2-byte packed struct argument in C calling convention" {
1306}1306}
13071307
1308test "packed struct contains optional pointer" {1308test "packed struct contains optional pointer" {
1309 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1310
1309 const foo: packed struct {1311 const foo: packed struct {
1310 a: ?*@This() = null,1312 a: ?*@This() = null,
1311 } = .{};1313 } = .{};
test/behavior/packed-union.zig+2
...@@ -177,6 +177,8 @@ test "assigning to non-active field at comptime" {...@@ -177,6 +177,8 @@ test "assigning to non-active field at comptime" {
177}177}
178178
179test "comptime packed union of pointers" {179test "comptime packed union of pointers" {
180 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
181
180 const U = packed union {182 const U = packed union {
181 a: *const u32,183 a: *const u32,
182 b: *const [1]u32,184 b: *const [1]u32,
test/behavior/slice.zig+3
...@@ -408,6 +408,7 @@ test "slice syntax resulting in pointer-to-array" {...@@ -408,6 +408,7 @@ test "slice syntax resulting in pointer-to-array" {
408 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO408 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
409 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO409 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
410 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;410 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
411 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
411412
412 const S = struct {413 const S = struct {
413 fn doTheTest() !void {414 fn doTheTest() !void {
...@@ -863,6 +864,7 @@ test "global slice field access" {...@@ -863,6 +864,7 @@ test "global slice field access" {
863864
864test "slice of void" {865test "slice of void" {
865 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;866 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
867 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
866868
867 var n: usize = 10;869 var n: usize = 10;
868 _ = &n;870 _ = &n;
...@@ -988,6 +990,7 @@ test "get address of element of zero-sized slice" {...@@ -988,6 +990,7 @@ test "get address of element of zero-sized slice" {
988 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO990 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
989 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO991 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
990 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;992 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
993 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
991994
992 const S = struct {995 const S = struct {
993 fn destroy(_: *void) void {}996 fn destroy(_: *void) void {}
test/behavior/string_literals.zig+2
...@@ -35,6 +35,7 @@ test "@typeName() returns a string literal" {...@@ -35,6 +35,7 @@ test "@typeName() returns a string literal" {
35 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO35 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
36 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO36 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
37 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;37 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
38 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3839
39 try std.testing.expect(*const [type_name.len:0]u8 == @TypeOf(type_name));40 try std.testing.expect(*const [type_name.len:0]u8 == @TypeOf(type_name));
40 try std.testing.expect(std.mem.eql(u8, "behavior.string_literals.TestType", type_name));41 try std.testing.expect(std.mem.eql(u8, "behavior.string_literals.TestType", type_name));
...@@ -49,6 +50,7 @@ test "@embedFile() returns a string literal" {...@@ -49,6 +50,7 @@ test "@embedFile() returns a string literal" {
49 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO50 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
50 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO51 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
51 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;52 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
53 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5254
53 try std.testing.expect(*const [expected_contents.len:0]u8 == @TypeOf(actual_contents));55 try std.testing.expect(*const [expected_contents.len:0]u8 == @TypeOf(actual_contents));
54 try std.testing.expect(std.mem.eql(u8, expected_contents, actual_contents));56 try std.testing.expect(std.mem.eql(u8, expected_contents, actual_contents));
test/behavior/typename.zig+5
...@@ -43,6 +43,7 @@ test "anon field init" {...@@ -43,6 +43,7 @@ test "anon field init" {
43 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO43 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
44 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO44 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
45 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;45 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
46 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
4647
47 const Foo = .{48 const Foo = .{
48 .T1 = struct {},49 .T1 = struct {},
...@@ -91,6 +92,7 @@ test "top level decl" {...@@ -91,6 +92,7 @@ test "top level decl" {
91 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO92 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
92 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO93 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
93 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;94 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
95 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9496
95 try expectEqualStrings(97 try expectEqualStrings(
96 "behavior.typename.A_Struct",98 "behavior.typename.A_Struct",
...@@ -141,6 +143,7 @@ test "fn param" {...@@ -141,6 +143,7 @@ test "fn param" {
141 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO143 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
142 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO144 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
143 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;145 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
146 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
144147
145 // https://github.com/ziglang/zig/issues/675148 // https://github.com/ziglang/zig/issues/675
146 try expectEqualStrings(149 try expectEqualStrings(
...@@ -221,6 +224,7 @@ test "local variable" {...@@ -221,6 +224,7 @@ test "local variable" {
221 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO224 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
222 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO225 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
223 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;226 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
227 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
224228
225 const Foo = struct { a: u32 };229 const Foo = struct { a: u32 };
226 const Bar = union { a: u32 };230 const Bar = union { a: u32 };
...@@ -250,6 +254,7 @@ test "anon name strategy used in sub expression" {...@@ -250,6 +254,7 @@ test "anon name strategy used in sub expression" {
250 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO254 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
251 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO255 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
252 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;256 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
257 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
253258
254 const S = struct {259 const S = struct {
255 fn getTheName() []const u8 {260 fn getTheName() []const u8 {
test/behavior/union.zig+1
...@@ -920,6 +920,7 @@ test "union no tag with struct member" {...@@ -920,6 +920,7 @@ test "union no tag with struct member" {
920 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO920 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
921 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO921 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
922 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO922 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
923 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
923924
924 const Struct = struct {};925 const Struct = struct {};
925 const Union = union {926 const Union = union {
test/behavior/vector.zig+1
...@@ -268,6 +268,7 @@ test "tuple to vector" {...@@ -268,6 +268,7 @@ test "tuple to vector" {
268 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO268 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
269 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO269 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
270 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;270 if (builtin.zig_backend == .stage2_riscv64) return error.SkipZigTest;
271 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
271272
272 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .aarch64) {273 if (builtin.zig_backend == .stage2_llvm and builtin.cpu.arch == .aarch64) {
273 // Regressed with LLVM 14:274 // Regressed with LLVM 14: