authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2022-05-18 17:37:17+02:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2022-05-19 19:39:34+02:00
log6d32498c5522b3385d8adeb55f94f8f56ac108b3
treeaaf2f62161b602881a10b12f28035e1de38a05ca
parent36b939e8db902b01870d709faeb6d2725f4f73ae

x64: re-enable behavior tests


5 files changed, 193 insertions(+), 166 deletions(-)

src/arch/x86_64/CodeGen.zig+33-9
...@@ -5325,15 +5325,39 @@ fn genSetStackArg(self: *Self, ty: Type, stack_offset: i32, mcv: MCValue) InnerE...@@ -5325,15 +5325,39 @@ fn genSetStackArg(self: *Self, ty: Type, stack_offset: i32, mcv: MCValue) InnerE
5325 });5325 });
5326 },5326 },
5327 .register => |reg| {5327 .register => |reg| {
5328 _ = try self.addInst(.{5328 switch (ty.zigTypeTag()) {
5329 .tag = .mov,5329 .Float => {
5330 .ops = Mir.Inst.Ops.encode(.{5330 const tag: Mir.Inst.Tag = switch (ty.tag()) {
5331 .reg1 = .rsp,5331 .f32 => .mov_f32,
5332 .reg2 = registerAlias(reg, @intCast(u32, abi_size)),5332 .f64 => .mov_f64,
5333 .flags = 0b10,5333 else => return self.fail("TODO genSetStackArg for register for type {}", .{ty.fmtDebug()}),
5334 }),5334 };
5335 .data = .{ .imm = @bitCast(u32, -stack_offset) },5335 _ = try self.addInst(.{
5336 });5336 .tag = tag,
5337 .ops = Mir.Inst.Ops.encode(.{
5338 .reg1 = switch (ty.tag()) {
5339 .f32 => .esp,
5340 .f64 => .rsp,
5341 else => unreachable,
5342 },
5343 .reg2 = reg.to128(),
5344 .flags = 0b01,
5345 }),
5346 .data = .{ .imm = @bitCast(u32, -stack_offset) },
5347 });
5348 },
5349 else => {
5350 _ = try self.addInst(.{
5351 .tag = .mov,
5352 .ops = Mir.Inst.Ops.encode(.{
5353 .reg1 = .rsp,
5354 .reg2 = registerAlias(reg, @intCast(u32, abi_size)),
5355 .flags = 0b10,
5356 }),
5357 .data = .{ .imm = @bitCast(u32, -stack_offset) },
5358 });
5359 },
5360 }
5337 },5361 },
5338 .ptr_stack_offset => {5362 .ptr_stack_offset => {
5339 const reg = try self.copyToTmpRegister(ty, mcv);5363 const reg = try self.copyToTmpRegister(ty, mcv);
test/behavior.zig+156-156
...@@ -1,163 +1,163 @@...@@ -1,163 +1,163 @@
1const builtin = @import("builtin");1const builtin = @import("builtin");
22
3test {3test {
4 // _ = @import("behavior/align.zig");4 _ = @import("behavior/align.zig");
5 // _ = @import("behavior/alignof.zig");5 _ = @import("behavior/alignof.zig");
6 // _ = @import("behavior/array.zig");6 _ = @import("behavior/array.zig");
7 // _ = @import("behavior/async_fn.zig");7 _ = @import("behavior/async_fn.zig");
8 // _ = @import("behavior/atomics.zig");8 _ = @import("behavior/atomics.zig");
9 // _ = @import("behavior/await_struct.zig");9 _ = @import("behavior/await_struct.zig");
10 _ = @import("behavior/basic.zig");10 _ = @import("behavior/basic.zig");
11 // _ = @import("behavior/bit_shifting.zig");11 _ = @import("behavior/bit_shifting.zig");
12 // _ = @import("behavior/bitcast.zig");12 _ = @import("behavior/bitcast.zig");
13 // _ = @import("behavior/bitreverse.zig");13 _ = @import("behavior/bitreverse.zig");
14 // _ = @import("behavior/bool.zig");14 _ = @import("behavior/bool.zig");
15 // _ = @import("behavior/bugs/394.zig");15 _ = @import("behavior/bugs/394.zig");
16 // _ = @import("behavior/bugs/421.zig");16 _ = @import("behavior/bugs/421.zig");
17 // _ = @import("behavior/bugs/529.zig");17 _ = @import("behavior/bugs/529.zig");
18 // _ = @import("behavior/bugs/624.zig");18 _ = @import("behavior/bugs/624.zig");
19 // _ = @import("behavior/bugs/655.zig");19 _ = @import("behavior/bugs/655.zig");
20 // _ = @import("behavior/bugs/656.zig");20 _ = @import("behavior/bugs/656.zig");
21 // _ = @import("behavior/bugs/679.zig");21 _ = @import("behavior/bugs/679.zig");
22 // _ = @import("behavior/bugs/704.zig");22 _ = @import("behavior/bugs/704.zig");
23 // _ = @import("behavior/bugs/718.zig");23 _ = @import("behavior/bugs/718.zig");
24 // _ = @import("behavior/bugs/726.zig");24 _ = @import("behavior/bugs/726.zig");
25 // _ = @import("behavior/bugs/828.zig");25 _ = @import("behavior/bugs/828.zig");
26 // _ = @import("behavior/bugs/920.zig");26 _ = @import("behavior/bugs/920.zig");
27 // _ = @import("behavior/bugs/1025.zig");27 _ = @import("behavior/bugs/1025.zig");
28 // _ = @import("behavior/bugs/1076.zig");28 _ = @import("behavior/bugs/1076.zig");
29 // _ = @import("behavior/bugs/1111.zig");29 _ = @import("behavior/bugs/1111.zig");
30 // _ = @import("behavior/bugs/1120.zig");30 _ = @import("behavior/bugs/1120.zig");
31 // _ = @import("behavior/bugs/1277.zig");31 _ = @import("behavior/bugs/1277.zig");
32 // _ = @import("behavior/bugs/1310.zig");32 _ = @import("behavior/bugs/1310.zig");
33 // _ = @import("behavior/bugs/1381.zig");33 _ = @import("behavior/bugs/1381.zig");
34 // _ = @import("behavior/bugs/1421.zig");34 _ = @import("behavior/bugs/1421.zig");
35 // _ = @import("behavior/bugs/1442.zig");35 _ = @import("behavior/bugs/1442.zig");
36 // _ = @import("behavior/bugs/1486.zig");36 _ = @import("behavior/bugs/1486.zig");
37 // _ = @import("behavior/bugs/1500.zig");37 _ = @import("behavior/bugs/1500.zig");
38 // _ = @import("behavior/bugs/1607.zig");38 _ = @import("behavior/bugs/1607.zig");
39 // _ = @import("behavior/bugs/1735.zig");39 _ = @import("behavior/bugs/1735.zig");
40 // _ = @import("behavior/bugs/1741.zig");40 _ = @import("behavior/bugs/1741.zig");
41 // _ = @import("behavior/bugs/1851.zig");41 _ = @import("behavior/bugs/1851.zig");
42 // _ = @import("behavior/bugs/1914.zig");42 _ = @import("behavior/bugs/1914.zig");
43 // _ = @import("behavior/bugs/2006.zig");43 _ = @import("behavior/bugs/2006.zig");
44 // _ = @import("behavior/bugs/2114.zig");44 _ = @import("behavior/bugs/2114.zig");
45 // _ = @import("behavior/bugs/2346.zig");45 _ = @import("behavior/bugs/2346.zig");
46 // _ = @import("behavior/bugs/2578.zig");46 _ = @import("behavior/bugs/2578.zig");
47 // _ = @import("behavior/bugs/2692.zig");47 _ = @import("behavior/bugs/2692.zig");
48 // _ = @import("behavior/bugs/2889.zig");48 _ = @import("behavior/bugs/2889.zig");
49 // _ = @import("behavior/bugs/3007.zig");49 _ = @import("behavior/bugs/3007.zig");
50 // _ = @import("behavior/bugs/3046.zig");50 _ = @import("behavior/bugs/3046.zig");
51 // _ = @import("behavior/bugs/3112.zig");51 _ = @import("behavior/bugs/3112.zig");
52 // _ = @import("behavior/bugs/3367.zig");52 _ = @import("behavior/bugs/3367.zig");
53 // _ = @import("behavior/bugs/3384.zig");53 _ = @import("behavior/bugs/3384.zig");
54 // _ = @import("behavior/bugs/3586.zig");54 _ = @import("behavior/bugs/3586.zig");
55 // _ = @import("behavior/bugs/3742.zig");55 _ = @import("behavior/bugs/3742.zig");
56 // _ = @import("behavior/bugs/3779.zig");56 _ = @import("behavior/bugs/3779.zig");
57 // _ = @import("behavior/bugs/4328.zig");57 _ = @import("behavior/bugs/4328.zig");
58 // _ = @import("behavior/bugs/4560.zig");58 _ = @import("behavior/bugs/4560.zig");
59 // _ = @import("behavior/bugs/4769_a.zig");59 _ = @import("behavior/bugs/4769_a.zig");
60 // _ = @import("behavior/bugs/4769_b.zig");60 _ = @import("behavior/bugs/4769_b.zig");
61 // _ = @import("behavior/bugs/4954.zig");61 _ = @import("behavior/bugs/4954.zig");
62 // _ = @import("behavior/bugs/5398.zig");62 _ = @import("behavior/bugs/5398.zig");
63 // _ = @import("behavior/bugs/5413.zig");63 _ = @import("behavior/bugs/5413.zig");
64 // _ = @import("behavior/bugs/5474.zig");64 _ = @import("behavior/bugs/5474.zig");
65 // _ = @import("behavior/bugs/5487.zig");65 _ = @import("behavior/bugs/5487.zig");
66 // _ = @import("behavior/bugs/6456.zig");66 _ = @import("behavior/bugs/6456.zig");
67 // _ = @import("behavior/bugs/6781.zig");67 _ = @import("behavior/bugs/6781.zig");
68 // _ = @import("behavior/bugs/6850.zig");68 _ = @import("behavior/bugs/6850.zig");
69 // _ = @import("behavior/bugs/7003.zig");69 _ = @import("behavior/bugs/7003.zig");
70 // _ = @import("behavior/bugs/7027.zig");70 _ = @import("behavior/bugs/7027.zig");
71 // _ = @import("behavior/bugs/7047.zig");71 _ = @import("behavior/bugs/7047.zig");
72 // _ = @import("behavior/bugs/7187.zig");72 _ = @import("behavior/bugs/7187.zig");
73 // _ = @import("behavior/bugs/7250.zig");73 _ = @import("behavior/bugs/7250.zig");
74 // _ = @import("behavior/bugs/9584.zig");74 _ = @import("behavior/bugs/9584.zig");
75 // _ = @import("behavior/bugs/10138.zig");75 _ = @import("behavior/bugs/10138.zig");
76 // _ = @import("behavior/bugs/10147.zig");76 _ = @import("behavior/bugs/10147.zig");
77 // _ = @import("behavior/bugs/10970.zig");77 _ = @import("behavior/bugs/10970.zig");
78 // _ = @import("behavior/bugs/11046.zig");78 _ = @import("behavior/bugs/11046.zig");
79 // _ = @import("behavior/bugs/11100.zig");79 _ = @import("behavior/bugs/11100.zig");
80 // _ = @import("behavior/bugs/11139.zig");80 _ = @import("behavior/bugs/11139.zig");
81 // _ = @import("behavior/bugs/11159.zig");81 _ = @import("behavior/bugs/11159.zig");
82 // _ = @import("behavior/bugs/11162.zig");82 _ = @import("behavior/bugs/11162.zig");
83 // _ = @import("behavior/bugs/11165.zig");83 _ = @import("behavior/bugs/11165.zig");
84 // _ = @import("behavior/bugs/11181.zig");84 _ = @import("behavior/bugs/11181.zig");
85 // _ = @import("behavior/bugs/11182.zig");85 _ = @import("behavior/bugs/11182.zig");
86 // _ = @import("behavior/bugs/11213.zig");86 _ = @import("behavior/bugs/11213.zig");
87 // _ = @import("behavior/byteswap.zig");87 _ = @import("behavior/byteswap.zig");
88 // _ = @import("behavior/byval_arg_var.zig");88 _ = @import("behavior/byval_arg_var.zig");
89 // _ = @import("behavior/call.zig");89 _ = @import("behavior/call.zig");
90 // _ = @import("behavior/cast.zig");90 _ = @import("behavior/cast.zig");
91 // _ = @import("behavior/cast_int.zig");91 _ = @import("behavior/cast_int.zig");
92 // _ = @import("behavior/comptime_memory.zig");92 _ = @import("behavior/comptime_memory.zig");
93 // _ = @import("behavior/const_slice_child.zig");93 _ = @import("behavior/const_slice_child.zig");
94 // _ = @import("behavior/defer.zig");94 _ = @import("behavior/defer.zig");
95 // _ = @import("behavior/enum.zig");95 _ = @import("behavior/enum.zig");
96 // _ = @import("behavior/error.zig");96 _ = @import("behavior/error.zig");
97 // _ = @import("behavior/eval.zig");97 _ = @import("behavior/eval.zig");
98 // _ = @import("behavior/field_parent_ptr.zig");98 _ = @import("behavior/field_parent_ptr.zig");
99 // _ = @import("behavior/floatop.zig");99 _ = @import("behavior/floatop.zig");
100 // _ = @import("behavior/fn.zig");100 _ = @import("behavior/fn.zig");
101 // _ = @import("behavior/fn_delegation.zig");101 _ = @import("behavior/fn_delegation.zig");
102 // _ = @import("behavior/fn_in_struct_in_comptime.zig");102 _ = @import("behavior/fn_in_struct_in_comptime.zig");
103 // _ = @import("behavior/for.zig");103 _ = @import("behavior/for.zig");
104 // _ = @import("behavior/generics.zig");104 _ = @import("behavior/generics.zig");
105 // _ = @import("behavior/hasdecl.zig");105 _ = @import("behavior/hasdecl.zig");
106 // _ = @import("behavior/hasfield.zig");106 _ = @import("behavior/hasfield.zig");
107 // _ = @import("behavior/if.zig");107 _ = @import("behavior/if.zig");
108 // _ = @import("behavior/import.zig");108 _ = @import("behavior/import.zig");
109 // _ = @import("behavior/incomplete_struct_param_tld.zig");109 _ = @import("behavior/incomplete_struct_param_tld.zig");
110 // _ = @import("behavior/int128.zig");110 _ = @import("behavior/int128.zig");
111 // _ = @import("behavior/int_div.zig");111 _ = @import("behavior/int_div.zig");
112 // _ = @import("behavior/inttoptr.zig");112 _ = @import("behavior/inttoptr.zig");
113 // _ = @import("behavior/ir_block_deps.zig");113 _ = @import("behavior/ir_block_deps.zig");
114 // _ = @import("behavior/math.zig");114 _ = @import("behavior/math.zig");
115 // _ = @import("behavior/maximum_minimum.zig");115 _ = @import("behavior/maximum_minimum.zig");
116 // _ = @import("behavior/member_func.zig");116 _ = @import("behavior/member_func.zig");
117 // _ = @import("behavior/merge_error_sets.zig");117 _ = @import("behavior/merge_error_sets.zig");
118 // _ = @import("behavior/muladd.zig");118 _ = @import("behavior/muladd.zig");
119 // _ = @import("behavior/namespace_depends_on_compile_var.zig");119 _ = @import("behavior/namespace_depends_on_compile_var.zig");
120 // _ = @import("behavior/null.zig");120 _ = @import("behavior/null.zig");
121 // _ = @import("behavior/optional.zig");121 _ = @import("behavior/optional.zig");
122 // _ = @import("behavior/pointers.zig");122 _ = @import("behavior/pointers.zig");
123 // _ = @import("behavior/popcount.zig");123 _ = @import("behavior/popcount.zig");
124 // _ = @import("behavior/prefetch.zig");124 _ = @import("behavior/prefetch.zig");
125 // _ = @import("behavior/ptrcast.zig");125 _ = @import("behavior/ptrcast.zig");
126 // _ = @import("behavior/pub_enum.zig");126 _ = @import("behavior/pub_enum.zig");
127 // _ = @import("behavior/ref_var_in_if_after_if_2nd_switch_prong.zig");127 _ = @import("behavior/ref_var_in_if_after_if_2nd_switch_prong.zig");
128 // _ = @import("behavior/reflection.zig");128 _ = @import("behavior/reflection.zig");
129 // _ = @import("behavior/saturating_arithmetic.zig");129 _ = @import("behavior/saturating_arithmetic.zig");
130 // _ = @import("behavior/select.zig");130 _ = @import("behavior/select.zig");
131 // _ = @import("behavior/shuffle.zig");131 _ = @import("behavior/shuffle.zig");
132 // _ = @import("behavior/sizeof_and_typeof.zig");132 _ = @import("behavior/sizeof_and_typeof.zig");
133 // _ = @import("behavior/slice.zig");133 _ = @import("behavior/slice.zig");
134 // _ = @import("behavior/slice_sentinel_comptime.zig");134 _ = @import("behavior/slice_sentinel_comptime.zig");
135 // _ = @import("behavior/src.zig");135 _ = @import("behavior/src.zig");
136 // _ = @import("behavior/struct.zig");136 _ = @import("behavior/struct.zig");
137 // _ = @import("behavior/packed-struct.zig");137 _ = @import("behavior/packed-struct.zig");
138 // _ = @import("behavior/struct_contains_null_ptr_itself.zig");138 _ = @import("behavior/struct_contains_null_ptr_itself.zig");
139 // _ = @import("behavior/struct_contains_slice_of_itself.zig");139 _ = @import("behavior/struct_contains_slice_of_itself.zig");
140 // _ = @import("behavior/switch.zig");140 _ = @import("behavior/switch.zig");
141 // _ = @import("behavior/switch_prong_err_enum.zig");141 _ = @import("behavior/switch_prong_err_enum.zig");
142 // _ = @import("behavior/switch_prong_implicit_cast.zig");142 _ = @import("behavior/switch_prong_implicit_cast.zig");
143 // _ = @import("behavior/this.zig");143 _ = @import("behavior/this.zig");
144 // _ = @import("behavior/translate_c_macros.zig");144 _ = @import("behavior/translate_c_macros.zig");
145 // _ = @import("behavior/truncate.zig");145 _ = @import("behavior/truncate.zig");
146 // _ = @import("behavior/try.zig");146 _ = @import("behavior/try.zig");
147 // _ = @import("behavior/tuple.zig");147 _ = @import("behavior/tuple.zig");
148 // _ = @import("behavior/type.zig");148 _ = @import("behavior/type.zig");
149 // _ = @import("behavior/type_info.zig");149 _ = @import("behavior/type_info.zig");
150 // _ = @import("behavior/typename.zig");150 _ = @import("behavior/typename.zig");
151 // _ = @import("behavior/undefined.zig");151 _ = @import("behavior/undefined.zig");
152 // _ = @import("behavior/underscore.zig");152 _ = @import("behavior/underscore.zig");
153 // _ = @import("behavior/union.zig");153 _ = @import("behavior/union.zig");
154 // _ = @import("behavior/union_with_members.zig");154 _ = @import("behavior/union_with_members.zig");
155 // _ = @import("behavior/usingnamespace.zig");155 _ = @import("behavior/usingnamespace.zig");
156 // _ = @import("behavior/var_args.zig");156 _ = @import("behavior/var_args.zig");
157 // _ = @import("behavior/vector.zig");157 _ = @import("behavior/vector.zig");
158 // _ = @import("behavior/void.zig");158 _ = @import("behavior/void.zig");
159 // _ = @import("behavior/while.zig");159 _ = @import("behavior/while.zig");
160 // _ = @import("behavior/widening.zig");160 _ = @import("behavior/widening.zig");
161161
162 if (builtin.stage2_arch == .wasm32) {162 if (builtin.stage2_arch == .wasm32) {
163 _ = @import("behavior/wasm.zig");163 _ = @import("behavior/wasm.zig");
test/behavior/basic.zig+3
...@@ -402,6 +402,7 @@ fn testPointerToVoidReturnType2() *const void {...@@ -402,6 +402,7 @@ fn testPointerToVoidReturnType2() *const void {
402test "array 2D const double ptr" {402test "array 2D const double ptr" {
403 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;403 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
404 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;404 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
405 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
405 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO406 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
406407
407 const rect_2d_vertexes = [_][1]f32{408 const rect_2d_vertexes = [_][1]f32{
...@@ -414,6 +415,7 @@ test "array 2D const double ptr" {...@@ -414,6 +415,7 @@ test "array 2D const double ptr" {
414test "array 2D const double ptr with offset" {415test "array 2D const double ptr with offset" {
415 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;416 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
416 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;417 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
418 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
417 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;419 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
418420
419 const rect_2d_vertexes = [_][2]f32{421 const rect_2d_vertexes = [_][2]f32{
...@@ -426,6 +428,7 @@ test "array 2D const double ptr with offset" {...@@ -426,6 +428,7 @@ test "array 2D const double ptr with offset" {
426test "array 3D const double ptr with offset" {428test "array 3D const double ptr with offset" {
427 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;429 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
428 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;430 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
431 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
429 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO432 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
430433
431 const rect_3d_vertexes = [_][2][2]f32{434 const rect_3d_vertexes = [_][2][2]f32{
test/behavior/math.zig-1
...@@ -198,7 +198,6 @@ test "const number literal" {...@@ -198,7 +198,6 @@ test "const number literal" {
198const ten = 10;198const ten = 10;
199199
200test "float equality" {200test "float equality" {
201 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
202 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO201 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
203 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO202 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
204203
test/behavior/union.zig+1
...@@ -882,6 +882,7 @@ test "extern union doesn't trigger field check at comptime" {...@@ -882,6 +882,7 @@ test "extern union doesn't trigger field check at comptime" {
882test "anonymous union literal syntax" {882test "anonymous union literal syntax" {
883 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO883 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
884 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO884 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
885 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
885886
886 const S = struct {887 const S = struct {
887 const Number = union {888 const Number = union {