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
53255325 });
53265326 },
53275327 .register => |reg| {
5328 _ = try self.addInst(.{
5329 .tag = .mov,
5330 .ops = Mir.Inst.Ops.encode(.{
5331 .reg1 = .rsp,
5332 .reg2 = registerAlias(reg, @intCast(u32, abi_size)),
5333 .flags = 0b10,
5334 }),
5335 .data = .{ .imm = @bitCast(u32, -stack_offset) },
5336 });
5328 switch (ty.zigTypeTag()) {
5329 .Float => {
5330 const tag: Mir.Inst.Tag = switch (ty.tag()) {
5331 .f32 => .mov_f32,
5332 .f64 => .mov_f64,
5333 else => return self.fail("TODO genSetStackArg for register for type {}", .{ty.fmtDebug()}),
5334 };
5335 _ = try self.addInst(.{
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 }
53375361 },
53385362 .ptr_stack_offset => {
53395363 const reg = try self.copyToTmpRegister(ty, mcv);
test/behavior.zig+156-156
......@@ -1,163 +1,163 @@
11const builtin = @import("builtin");
22
33test {
4 // _ = @import("behavior/align.zig");
5 // _ = @import("behavior/alignof.zig");
6 // _ = @import("behavior/array.zig");
7 // _ = @import("behavior/async_fn.zig");
8 // _ = @import("behavior/atomics.zig");
9 // _ = @import("behavior/await_struct.zig");
4 _ = @import("behavior/align.zig");
5 _ = @import("behavior/alignof.zig");
6 _ = @import("behavior/array.zig");
7 _ = @import("behavior/async_fn.zig");
8 _ = @import("behavior/atomics.zig");
9 _ = @import("behavior/await_struct.zig");
1010 _ = @import("behavior/basic.zig");
11 // _ = @import("behavior/bit_shifting.zig");
12 // _ = @import("behavior/bitcast.zig");
13 // _ = @import("behavior/bitreverse.zig");
14 // _ = @import("behavior/bool.zig");
15 // _ = @import("behavior/bugs/394.zig");
16 // _ = @import("behavior/bugs/421.zig");
17 // _ = @import("behavior/bugs/529.zig");
18 // _ = @import("behavior/bugs/624.zig");
19 // _ = @import("behavior/bugs/655.zig");
20 // _ = @import("behavior/bugs/656.zig");
21 // _ = @import("behavior/bugs/679.zig");
22 // _ = @import("behavior/bugs/704.zig");
23 // _ = @import("behavior/bugs/718.zig");
24 // _ = @import("behavior/bugs/726.zig");
25 // _ = @import("behavior/bugs/828.zig");
26 // _ = @import("behavior/bugs/920.zig");
27 // _ = @import("behavior/bugs/1025.zig");
28 // _ = @import("behavior/bugs/1076.zig");
29 // _ = @import("behavior/bugs/1111.zig");
30 // _ = @import("behavior/bugs/1120.zig");
31 // _ = @import("behavior/bugs/1277.zig");
32 // _ = @import("behavior/bugs/1310.zig");
33 // _ = @import("behavior/bugs/1381.zig");
34 // _ = @import("behavior/bugs/1421.zig");
35 // _ = @import("behavior/bugs/1442.zig");
36 // _ = @import("behavior/bugs/1486.zig");
37 // _ = @import("behavior/bugs/1500.zig");
38 // _ = @import("behavior/bugs/1607.zig");
39 // _ = @import("behavior/bugs/1735.zig");
40 // _ = @import("behavior/bugs/1741.zig");
41 // _ = @import("behavior/bugs/1851.zig");
42 // _ = @import("behavior/bugs/1914.zig");
43 // _ = @import("behavior/bugs/2006.zig");
44 // _ = @import("behavior/bugs/2114.zig");
45 // _ = @import("behavior/bugs/2346.zig");
46 // _ = @import("behavior/bugs/2578.zig");
47 // _ = @import("behavior/bugs/2692.zig");
48 // _ = @import("behavior/bugs/2889.zig");
49 // _ = @import("behavior/bugs/3007.zig");
50 // _ = @import("behavior/bugs/3046.zig");
51 // _ = @import("behavior/bugs/3112.zig");
52 // _ = @import("behavior/bugs/3367.zig");
53 // _ = @import("behavior/bugs/3384.zig");
54 // _ = @import("behavior/bugs/3586.zig");
55 // _ = @import("behavior/bugs/3742.zig");
56 // _ = @import("behavior/bugs/3779.zig");
57 // _ = @import("behavior/bugs/4328.zig");
58 // _ = @import("behavior/bugs/4560.zig");
59 // _ = @import("behavior/bugs/4769_a.zig");
60 // _ = @import("behavior/bugs/4769_b.zig");
61 // _ = @import("behavior/bugs/4954.zig");
62 // _ = @import("behavior/bugs/5398.zig");
63 // _ = @import("behavior/bugs/5413.zig");
64 // _ = @import("behavior/bugs/5474.zig");
65 // _ = @import("behavior/bugs/5487.zig");
66 // _ = @import("behavior/bugs/6456.zig");
67 // _ = @import("behavior/bugs/6781.zig");
68 // _ = @import("behavior/bugs/6850.zig");
69 // _ = @import("behavior/bugs/7003.zig");
70 // _ = @import("behavior/bugs/7027.zig");
71 // _ = @import("behavior/bugs/7047.zig");
72 // _ = @import("behavior/bugs/7187.zig");
73 // _ = @import("behavior/bugs/7250.zig");
74 // _ = @import("behavior/bugs/9584.zig");
75 // _ = @import("behavior/bugs/10138.zig");
76 // _ = @import("behavior/bugs/10147.zig");
77 // _ = @import("behavior/bugs/10970.zig");
78 // _ = @import("behavior/bugs/11046.zig");
79 // _ = @import("behavior/bugs/11100.zig");
80 // _ = @import("behavior/bugs/11139.zig");
81 // _ = @import("behavior/bugs/11159.zig");
82 // _ = @import("behavior/bugs/11162.zig");
83 // _ = @import("behavior/bugs/11165.zig");
84 // _ = @import("behavior/bugs/11181.zig");
85 // _ = @import("behavior/bugs/11182.zig");
86 // _ = @import("behavior/bugs/11213.zig");
87 // _ = @import("behavior/byteswap.zig");
88 // _ = @import("behavior/byval_arg_var.zig");
89 // _ = @import("behavior/call.zig");
90 // _ = @import("behavior/cast.zig");
91 // _ = @import("behavior/cast_int.zig");
92 // _ = @import("behavior/comptime_memory.zig");
93 // _ = @import("behavior/const_slice_child.zig");
94 // _ = @import("behavior/defer.zig");
95 // _ = @import("behavior/enum.zig");
96 // _ = @import("behavior/error.zig");
97 // _ = @import("behavior/eval.zig");
98 // _ = @import("behavior/field_parent_ptr.zig");
99 // _ = @import("behavior/floatop.zig");
100 // _ = @import("behavior/fn.zig");
101 // _ = @import("behavior/fn_delegation.zig");
102 // _ = @import("behavior/fn_in_struct_in_comptime.zig");
103 // _ = @import("behavior/for.zig");
104 // _ = @import("behavior/generics.zig");
105 // _ = @import("behavior/hasdecl.zig");
106 // _ = @import("behavior/hasfield.zig");
107 // _ = @import("behavior/if.zig");
108 // _ = @import("behavior/import.zig");
109 // _ = @import("behavior/incomplete_struct_param_tld.zig");
110 // _ = @import("behavior/int128.zig");
111 // _ = @import("behavior/int_div.zig");
112 // _ = @import("behavior/inttoptr.zig");
113 // _ = @import("behavior/ir_block_deps.zig");
114 // _ = @import("behavior/math.zig");
115 // _ = @import("behavior/maximum_minimum.zig");
116 // _ = @import("behavior/member_func.zig");
117 // _ = @import("behavior/merge_error_sets.zig");
118 // _ = @import("behavior/muladd.zig");
119 // _ = @import("behavior/namespace_depends_on_compile_var.zig");
120 // _ = @import("behavior/null.zig");
121 // _ = @import("behavior/optional.zig");
122 // _ = @import("behavior/pointers.zig");
123 // _ = @import("behavior/popcount.zig");
124 // _ = @import("behavior/prefetch.zig");
125 // _ = @import("behavior/ptrcast.zig");
126 // _ = @import("behavior/pub_enum.zig");
127 // _ = @import("behavior/ref_var_in_if_after_if_2nd_switch_prong.zig");
128 // _ = @import("behavior/reflection.zig");
129 // _ = @import("behavior/saturating_arithmetic.zig");
130 // _ = @import("behavior/select.zig");
131 // _ = @import("behavior/shuffle.zig");
132 // _ = @import("behavior/sizeof_and_typeof.zig");
133 // _ = @import("behavior/slice.zig");
134 // _ = @import("behavior/slice_sentinel_comptime.zig");
135 // _ = @import("behavior/src.zig");
136 // _ = @import("behavior/struct.zig");
137 // _ = @import("behavior/packed-struct.zig");
138 // _ = @import("behavior/struct_contains_null_ptr_itself.zig");
139 // _ = @import("behavior/struct_contains_slice_of_itself.zig");
140 // _ = @import("behavior/switch.zig");
141 // _ = @import("behavior/switch_prong_err_enum.zig");
142 // _ = @import("behavior/switch_prong_implicit_cast.zig");
143 // _ = @import("behavior/this.zig");
144 // _ = @import("behavior/translate_c_macros.zig");
145 // _ = @import("behavior/truncate.zig");
146 // _ = @import("behavior/try.zig");
147 // _ = @import("behavior/tuple.zig");
148 // _ = @import("behavior/type.zig");
149 // _ = @import("behavior/type_info.zig");
150 // _ = @import("behavior/typename.zig");
151 // _ = @import("behavior/undefined.zig");
152 // _ = @import("behavior/underscore.zig");
153 // _ = @import("behavior/union.zig");
154 // _ = @import("behavior/union_with_members.zig");
155 // _ = @import("behavior/usingnamespace.zig");
156 // _ = @import("behavior/var_args.zig");
157 // _ = @import("behavior/vector.zig");
158 // _ = @import("behavior/void.zig");
159 // _ = @import("behavior/while.zig");
160 // _ = @import("behavior/widening.zig");
11 _ = @import("behavior/bit_shifting.zig");
12 _ = @import("behavior/bitcast.zig");
13 _ = @import("behavior/bitreverse.zig");
14 _ = @import("behavior/bool.zig");
15 _ = @import("behavior/bugs/394.zig");
16 _ = @import("behavior/bugs/421.zig");
17 _ = @import("behavior/bugs/529.zig");
18 _ = @import("behavior/bugs/624.zig");
19 _ = @import("behavior/bugs/655.zig");
20 _ = @import("behavior/bugs/656.zig");
21 _ = @import("behavior/bugs/679.zig");
22 _ = @import("behavior/bugs/704.zig");
23 _ = @import("behavior/bugs/718.zig");
24 _ = @import("behavior/bugs/726.zig");
25 _ = @import("behavior/bugs/828.zig");
26 _ = @import("behavior/bugs/920.zig");
27 _ = @import("behavior/bugs/1025.zig");
28 _ = @import("behavior/bugs/1076.zig");
29 _ = @import("behavior/bugs/1111.zig");
30 _ = @import("behavior/bugs/1120.zig");
31 _ = @import("behavior/bugs/1277.zig");
32 _ = @import("behavior/bugs/1310.zig");
33 _ = @import("behavior/bugs/1381.zig");
34 _ = @import("behavior/bugs/1421.zig");
35 _ = @import("behavior/bugs/1442.zig");
36 _ = @import("behavior/bugs/1486.zig");
37 _ = @import("behavior/bugs/1500.zig");
38 _ = @import("behavior/bugs/1607.zig");
39 _ = @import("behavior/bugs/1735.zig");
40 _ = @import("behavior/bugs/1741.zig");
41 _ = @import("behavior/bugs/1851.zig");
42 _ = @import("behavior/bugs/1914.zig");
43 _ = @import("behavior/bugs/2006.zig");
44 _ = @import("behavior/bugs/2114.zig");
45 _ = @import("behavior/bugs/2346.zig");
46 _ = @import("behavior/bugs/2578.zig");
47 _ = @import("behavior/bugs/2692.zig");
48 _ = @import("behavior/bugs/2889.zig");
49 _ = @import("behavior/bugs/3007.zig");
50 _ = @import("behavior/bugs/3046.zig");
51 _ = @import("behavior/bugs/3112.zig");
52 _ = @import("behavior/bugs/3367.zig");
53 _ = @import("behavior/bugs/3384.zig");
54 _ = @import("behavior/bugs/3586.zig");
55 _ = @import("behavior/bugs/3742.zig");
56 _ = @import("behavior/bugs/3779.zig");
57 _ = @import("behavior/bugs/4328.zig");
58 _ = @import("behavior/bugs/4560.zig");
59 _ = @import("behavior/bugs/4769_a.zig");
60 _ = @import("behavior/bugs/4769_b.zig");
61 _ = @import("behavior/bugs/4954.zig");
62 _ = @import("behavior/bugs/5398.zig");
63 _ = @import("behavior/bugs/5413.zig");
64 _ = @import("behavior/bugs/5474.zig");
65 _ = @import("behavior/bugs/5487.zig");
66 _ = @import("behavior/bugs/6456.zig");
67 _ = @import("behavior/bugs/6781.zig");
68 _ = @import("behavior/bugs/6850.zig");
69 _ = @import("behavior/bugs/7003.zig");
70 _ = @import("behavior/bugs/7027.zig");
71 _ = @import("behavior/bugs/7047.zig");
72 _ = @import("behavior/bugs/7187.zig");
73 _ = @import("behavior/bugs/7250.zig");
74 _ = @import("behavior/bugs/9584.zig");
75 _ = @import("behavior/bugs/10138.zig");
76 _ = @import("behavior/bugs/10147.zig");
77 _ = @import("behavior/bugs/10970.zig");
78 _ = @import("behavior/bugs/11046.zig");
79 _ = @import("behavior/bugs/11100.zig");
80 _ = @import("behavior/bugs/11139.zig");
81 _ = @import("behavior/bugs/11159.zig");
82 _ = @import("behavior/bugs/11162.zig");
83 _ = @import("behavior/bugs/11165.zig");
84 _ = @import("behavior/bugs/11181.zig");
85 _ = @import("behavior/bugs/11182.zig");
86 _ = @import("behavior/bugs/11213.zig");
87 _ = @import("behavior/byteswap.zig");
88 _ = @import("behavior/byval_arg_var.zig");
89 _ = @import("behavior/call.zig");
90 _ = @import("behavior/cast.zig");
91 _ = @import("behavior/cast_int.zig");
92 _ = @import("behavior/comptime_memory.zig");
93 _ = @import("behavior/const_slice_child.zig");
94 _ = @import("behavior/defer.zig");
95 _ = @import("behavior/enum.zig");
96 _ = @import("behavior/error.zig");
97 _ = @import("behavior/eval.zig");
98 _ = @import("behavior/field_parent_ptr.zig");
99 _ = @import("behavior/floatop.zig");
100 _ = @import("behavior/fn.zig");
101 _ = @import("behavior/fn_delegation.zig");
102 _ = @import("behavior/fn_in_struct_in_comptime.zig");
103 _ = @import("behavior/for.zig");
104 _ = @import("behavior/generics.zig");
105 _ = @import("behavior/hasdecl.zig");
106 _ = @import("behavior/hasfield.zig");
107 _ = @import("behavior/if.zig");
108 _ = @import("behavior/import.zig");
109 _ = @import("behavior/incomplete_struct_param_tld.zig");
110 _ = @import("behavior/int128.zig");
111 _ = @import("behavior/int_div.zig");
112 _ = @import("behavior/inttoptr.zig");
113 _ = @import("behavior/ir_block_deps.zig");
114 _ = @import("behavior/math.zig");
115 _ = @import("behavior/maximum_minimum.zig");
116 _ = @import("behavior/member_func.zig");
117 _ = @import("behavior/merge_error_sets.zig");
118 _ = @import("behavior/muladd.zig");
119 _ = @import("behavior/namespace_depends_on_compile_var.zig");
120 _ = @import("behavior/null.zig");
121 _ = @import("behavior/optional.zig");
122 _ = @import("behavior/pointers.zig");
123 _ = @import("behavior/popcount.zig");
124 _ = @import("behavior/prefetch.zig");
125 _ = @import("behavior/ptrcast.zig");
126 _ = @import("behavior/pub_enum.zig");
127 _ = @import("behavior/ref_var_in_if_after_if_2nd_switch_prong.zig");
128 _ = @import("behavior/reflection.zig");
129 _ = @import("behavior/saturating_arithmetic.zig");
130 _ = @import("behavior/select.zig");
131 _ = @import("behavior/shuffle.zig");
132 _ = @import("behavior/sizeof_and_typeof.zig");
133 _ = @import("behavior/slice.zig");
134 _ = @import("behavior/slice_sentinel_comptime.zig");
135 _ = @import("behavior/src.zig");
136 _ = @import("behavior/struct.zig");
137 _ = @import("behavior/packed-struct.zig");
138 _ = @import("behavior/struct_contains_null_ptr_itself.zig");
139 _ = @import("behavior/struct_contains_slice_of_itself.zig");
140 _ = @import("behavior/switch.zig");
141 _ = @import("behavior/switch_prong_err_enum.zig");
142 _ = @import("behavior/switch_prong_implicit_cast.zig");
143 _ = @import("behavior/this.zig");
144 _ = @import("behavior/translate_c_macros.zig");
145 _ = @import("behavior/truncate.zig");
146 _ = @import("behavior/try.zig");
147 _ = @import("behavior/tuple.zig");
148 _ = @import("behavior/type.zig");
149 _ = @import("behavior/type_info.zig");
150 _ = @import("behavior/typename.zig");
151 _ = @import("behavior/undefined.zig");
152 _ = @import("behavior/underscore.zig");
153 _ = @import("behavior/union.zig");
154 _ = @import("behavior/union_with_members.zig");
155 _ = @import("behavior/usingnamespace.zig");
156 _ = @import("behavior/var_args.zig");
157 _ = @import("behavior/vector.zig");
158 _ = @import("behavior/void.zig");
159 _ = @import("behavior/while.zig");
160 _ = @import("behavior/widening.zig");
161161
162162 if (builtin.stage2_arch == .wasm32) {
163163 _ = @import("behavior/wasm.zig");
test/behavior/basic.zig+3
......@@ -402,6 +402,7 @@ fn testPointerToVoidReturnType2() *const void {
402402test "array 2D const double ptr" {
403403 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
404404 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
405 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
405406 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
406407
407408 const rect_2d_vertexes = [_][1]f32{
......@@ -414,6 +415,7 @@ test "array 2D const double ptr" {
414415test "array 2D const double ptr with offset" {
415416 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
416417 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
418 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
417419 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
418420
419421 const rect_2d_vertexes = [_][2]f32{
......@@ -426,6 +428,7 @@ test "array 2D const double ptr with offset" {
426428test "array 3D const double ptr with offset" {
427429 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
428430 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
431 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
429432 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
430433
431434 const rect_3d_vertexes = [_][2][2]f32{
test/behavior/math.zig-1
......@@ -198,7 +198,6 @@ test "const number literal" {
198198const ten = 10;
199199
200200test "float equality" {
201 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
202201 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
203202 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" {
882882test "anonymous union literal syntax" {
883883 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
884884 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
885 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
885886
886887 const S = struct {
887888 const Number = union {