authorgravatar for alichraghi@proton.meAli Chraghi <alichraghi@proton.me> 2024-02-08 02:02:33+03:30
committergravatar for alichraghi@proton.meAli Chraghi <alichraghi@proton.me> 2024-02-09 09:27:08+03:30
log37b0aa600ad47872d3a03f9e9fb60316fc3587c5
treef10a2241876fdd27135a62a6112d0d98d0a5f8ef
parenteb2d61d02e503f01070c05e2e1fc87e827124d94

spirv: make rusticl the primary testing implementation


13 files changed, 21 insertions(+), 15 deletions(-)

src/codegen/spirv/Module.zig+6-7
...@@ -407,12 +407,12 @@ pub fn flush(self: *Module, file: std.fs.File, target: std.Target) !void {...@@ -407,12 +407,12 @@ pub fn flush(self: *Module, file: std.fs.File, target: std.Target) !void {
407 var types_constants = try self.cache.materialize(self);407 var types_constants = try self.cache.materialize(self);
408 defer types_constants.deinit(self.gpa);408 defer types_constants.deinit(self.gpa);
409409
410 // TODO: Vulkan doesn't support initializer kernel410 // // TODO: Pass global variables as function parameters
411 var init_func = if (target.os.tag != .vulkan)411 // var init_func = if (target.os.tag != .vulkan)
412 try self.initializer(&entry_points)412 // try self.initializer(&entry_points)
413 else413 // else
414 Section{};414 // Section{};
415 defer init_func.deinit(self.gpa);415 // defer init_func.deinit(self.gpa);
416416
417 const header = [_]Word{417 const header = [_]Word{
418 spec.magic_number,418 spec.magic_number,
...@@ -458,7 +458,6 @@ pub fn flush(self: *Module, file: std.fs.File, target: std.Target) !void {...@@ -458,7 +458,6 @@ pub fn flush(self: *Module, file: std.fs.File, target: std.Target) !void {
458 self.sections.types_globals_constants.toWords(),458 self.sections.types_globals_constants.toWords(),
459 globals.toWords(),459 globals.toWords(),
460 self.sections.functions.toWords(),460 self.sections.functions.toWords(),
461 init_func.toWords(),
462 };461 };
463462
464 var iovc_buffers: [buffers.len]std.os.iovec_const = undefined;463 var iovc_buffers: [buffers.len]std.os.iovec_const = undefined;
test/behavior/basic.zig-2
...@@ -756,7 +756,6 @@ test "extern variable with non-pointer opaque type" {...@@ -756,7 +756,6 @@ test "extern variable with non-pointer opaque type" {
756 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO756 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
757 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO757 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
758 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO758 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
759 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
760 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;759 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
761760
762 @export(var_to_export, .{ .name = "opaque_extern_var" });761 @export(var_to_export, .{ .name = "opaque_extern_var" });
...@@ -1195,7 +1194,6 @@ test "integer compare" {...@@ -1195,7 +1194,6 @@ test "integer compare" {
11951194
1196test "reference to inferred local variable works as expected" {1195test "reference to inferred local variable works as expected" {
1197 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1196 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1198 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
11991197
1200 const Crasher = struct {1198 const Crasher = struct {
1201 lets_crash: u64 = 0,1199 lets_crash: u64 = 0,
test/behavior/byval_arg_var.zig+1
...@@ -5,6 +5,7 @@ var result: []const u8 = "wrong";...@@ -5,6 +5,7 @@ var result: []const u8 = "wrong";
55
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_spirv64) return error.SkipZigTest;
89
9 start();10 start();
10 blowUpStack(10);11 blowUpStack(10);
test/behavior/cast.zig+1
...@@ -1262,6 +1262,7 @@ test "implicit cast from *T to ?*anyopaque" {...@@ -1262,6 +1262,7 @@ test "implicit cast from *T to ?*anyopaque" {
1262 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;1262 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
1263 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO1263 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
1264 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO1264 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
1265 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
12651266
1266 var a: u8 = 1;1267 var a: u8 = 1;
1267 incrementVoidPtrValue(&a);1268 incrementVoidPtrValue(&a);
test/behavior/error.zig+2
...@@ -124,6 +124,7 @@ test "debug info for optional error set" {...@@ -124,6 +124,7 @@ test "debug info for optional error set" {
124124
125test "implicit cast to optional to error union to return result loc" {125test "implicit cast to optional to error union to return result loc" {
126 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO126 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
127 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
127128
128 const S = struct {129 const S = struct {
129 fn entry() !void {130 fn entry() !void {
...@@ -950,6 +951,7 @@ test "returning an error union containing a type with no runtime bits" {...@@ -950,6 +951,7 @@ test "returning an error union containing a type with no runtime bits" {
950test "try used in recursive function with inferred error set" {951test "try used in recursive function with inferred error set" {
951 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO952 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
952 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO953 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
954 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
953955
954 const Value = union(enum) {956 const Value = union(enum) {
955 values: []const @This(),957 values: []const @This(),
test/behavior/floatop.zig+2
...@@ -127,6 +127,7 @@ test "cmp f16" {...@@ -127,6 +127,7 @@ test "cmp f16" {
127test "cmp f32/f64" {127test "cmp f32/f64" {
128 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO128 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
129 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;129 if (builtin.zig_backend == .stage2_x86_64 and builtin.target.ofmt != .elf and builtin.target.ofmt != .macho) return error.SkipZigTest;
130 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
130131
131 try testCmp(f32);132 try testCmp(f32);
132 try comptime testCmp(f32);133 try comptime testCmp(f32);
...@@ -978,6 +979,7 @@ test "@abs f32/f64" {...@@ -978,6 +979,7 @@ test "@abs f32/f64" {
978 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO979 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
979 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO980 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
980 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO981 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
982 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
981983
982 try testFabs(f32);984 try testFabs(f32);
983 try comptime testFabs(f32);985 try comptime testFabs(f32);
test/behavior/globals.zig-1
...@@ -50,7 +50,6 @@ test "global loads can affect liveness" {...@@ -50,7 +50,6 @@ test "global loads can affect liveness" {
50 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;50 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
51 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;51 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
52 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;52 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest;
53 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
5453
55 const S = struct {54 const S = struct {
56 const ByRef = struct {55 const ByRef = struct {
test/behavior/optional.zig+3
...@@ -28,6 +28,7 @@ pub const EmptyStruct = struct {};...@@ -28,6 +28,7 @@ pub const EmptyStruct = struct {};
2828
29test "optional pointer to size zero struct" {29test "optional pointer to size zero struct" {
30 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO30 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
31 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
3132
32 var e = EmptyStruct{};33 var e = EmptyStruct{};
33 const o: ?*EmptyStruct = &e;34 const o: ?*EmptyStruct = &e;
...@@ -35,6 +36,8 @@ test "optional pointer to size zero struct" {...@@ -35,6 +36,8 @@ test "optional pointer to size zero struct" {
35}36}
3637
37test "equality compare optional pointers" {38test "equality compare optional pointers" {
39 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
40
38 try testNullPtrsEql();41 try testNullPtrsEql();
39 try comptime testNullPtrsEql();42 try comptime testNullPtrsEql();
40}43}
test/behavior/pointers.zig+1
...@@ -216,6 +216,7 @@ test "assign null directly to C pointer and test null equality" {...@@ -216,6 +216,7 @@ test "assign null directly to C pointer and test null equality" {
216 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO216 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
217 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO217 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
218 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO218 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
219 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
219220
220 var x: [*c]i32 = null;221 var x: [*c]i32 = null;
221 _ = &x;222 _ = &x;
test/behavior/typename.zig-5
...@@ -41,7 +41,6 @@ test "anon field init" {...@@ -41,7 +41,6 @@ test "anon field init" {
41 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO41 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
42 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO42 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
43 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO43 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
44 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
4544
46 const Foo = .{45 const Foo = .{
47 .T1 = struct {},46 .T1 = struct {},
...@@ -90,7 +89,6 @@ test "top level decl" {...@@ -90,7 +89,6 @@ test "top level decl" {
90 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO89 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
91 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO90 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
92 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO91 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
93 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
9492
95 try expectEqualStrings(93 try expectEqualStrings(
96 "behavior.typename.A_Struct",94 "behavior.typename.A_Struct",
...@@ -140,7 +138,6 @@ test "fn param" {...@@ -140,7 +138,6 @@ test "fn param" {
140 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO138 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
141 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO139 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
142 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO140 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
143 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
144141
145 // https://github.com/ziglang/zig/issues/675142 // https://github.com/ziglang/zig/issues/675
146 try expectEqualStrings(143 try expectEqualStrings(
...@@ -211,7 +208,6 @@ test "local variable" {...@@ -211,7 +208,6 @@ test "local variable" {
211 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO208 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
212 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO209 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
213 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO210 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
214 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
215211
216 const Foo = struct { a: u32 };212 const Foo = struct { a: u32 };
217 const Bar = union { a: u32 };213 const Bar = union { a: u32 };
...@@ -239,7 +235,6 @@ test "anon name strategy used in sub expression" {...@@ -239,7 +235,6 @@ test "anon name strategy used in sub expression" {
239 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO235 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
240 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO236 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
241 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO237 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
242 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
243238
244 const S = struct {239 const S = struct {
245 fn getTheName() []const u8 {240 fn getTheName() []const u8 {
test/behavior/undefined.zig+1
...@@ -104,6 +104,7 @@ test "returned undef is 0xaa bytes when runtime safety is enabled" {...@@ -104,6 +104,7 @@ test "returned undef is 0xaa bytes when runtime safety is enabled" {
104 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO104 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
105 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO105 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
106 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO106 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
107 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
107108
108 const Rect = struct {109 const Rect = struct {
109 x: f32,110 x: f32,
test/behavior/vector.zig+2
...@@ -372,6 +372,7 @@ test "load vector elements via comptime index" {...@@ -372,6 +372,7 @@ test "load vector elements via comptime index" {
372 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO372 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
373 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO373 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
374 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO374 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
375 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
375376
376 const S = struct {377 const S = struct {
377 fn doTheTest() !void {378 fn doTheTest() !void {
...@@ -393,6 +394,7 @@ test "store vector elements via comptime index" {...@@ -393,6 +394,7 @@ test "store vector elements via comptime index" {
393 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO394 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
394 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO395 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
395 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO396 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
397 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
396398
397 const S = struct {399 const S = struct {
398 fn doTheTest() !void {400 fn doTheTest() !void {
test/behavior/while.zig+2
...@@ -38,6 +38,8 @@ fn staticWhileLoop2() i32 {...@@ -38,6 +38,8 @@ fn staticWhileLoop2() i32 {
38}38}
3939
40test "while with continue expression" {40test "while with continue expression" {
41 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest; // TODO
42
41 var sum: i32 = 0;43 var sum: i32 = 0;
42 {44 {
43 var i: i32 = 0;45 var i: i32 = 0;