Commit 6d32498c55

Jakub Konka <kubkon@jakubkonka.com>
2022-05-18 17:37:17
x64: re-enable behavior tests
1 parent 36b939e
Changed files (5)
src/arch/x86_64/CodeGen.zig
@@ -5325,15 +5325,39 @@ fn genSetStackArg(self: *Self, ty: Type, stack_offset: i32, mcv: MCValue) InnerE
             });
         },
         .register => |reg| {
-            _ = try self.addInst(.{
-                .tag = .mov,
-                .ops = Mir.Inst.Ops.encode(.{
-                    .reg1 = .rsp,
-                    .reg2 = registerAlias(reg, @intCast(u32, abi_size)),
-                    .flags = 0b10,
-                }),
-                .data = .{ .imm = @bitCast(u32, -stack_offset) },
-            });
+            switch (ty.zigTypeTag()) {
+                .Float => {
+                    const tag: Mir.Inst.Tag = switch (ty.tag()) {
+                        .f32 => .mov_f32,
+                        .f64 => .mov_f64,
+                        else => return self.fail("TODO genSetStackArg for register for type {}", .{ty.fmtDebug()}),
+                    };
+                    _ = try self.addInst(.{
+                        .tag = tag,
+                        .ops = Mir.Inst.Ops.encode(.{
+                            .reg1 = switch (ty.tag()) {
+                                .f32 => .esp,
+                                .f64 => .rsp,
+                                else => unreachable,
+                            },
+                            .reg2 = reg.to128(),
+                            .flags = 0b01,
+                        }),
+                        .data = .{ .imm = @bitCast(u32, -stack_offset) },
+                    });
+                },
+                else => {
+                    _ = try self.addInst(.{
+                        .tag = .mov,
+                        .ops = Mir.Inst.Ops.encode(.{
+                            .reg1 = .rsp,
+                            .reg2 = registerAlias(reg, @intCast(u32, abi_size)),
+                            .flags = 0b10,
+                        }),
+                        .data = .{ .imm = @bitCast(u32, -stack_offset) },
+                    });
+                },
+            }
         },
         .ptr_stack_offset => {
             const reg = try self.copyToTmpRegister(ty, mcv);
test/behavior/basic.zig
@@ -402,6 +402,7 @@ fn testPointerToVoidReturnType2() *const void {
 test "array 2D const double ptr" {
     if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
     if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
+    if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
     if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
 
     const rect_2d_vertexes = [_][1]f32{
@@ -414,6 +415,7 @@ test "array 2D const double ptr" {
 test "array 2D const double ptr with offset" {
     if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
     if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
+    if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
     if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest;
 
     const rect_2d_vertexes = [_][2]f32{
@@ -426,6 +428,7 @@ test "array 2D const double ptr with offset" {
 test "array 3D const double ptr with offset" {
     if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
     if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
+    if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
     if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
 
     const rect_3d_vertexes = [_][2][2]f32{
test/behavior/math.zig
@@ -198,7 +198,6 @@ test "const number literal" {
 const ten = 10;
 
 test "float equality" {
-    if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
     if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
     if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
 
test/behavior/union.zig
@@ -882,6 +882,7 @@ test "extern union doesn't trigger field check at comptime" {
 test "anonymous union literal syntax" {
     if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
     if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
+    if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
 
     const S = struct {
         const Number = union {
test/behavior.zig
@@ -1,163 +1,163 @@
 const builtin = @import("builtin");
 
 test {
-    // _ = @import("behavior/align.zig");
-    // _ = @import("behavior/alignof.zig");
-    // _ = @import("behavior/array.zig");
-    // _ = @import("behavior/async_fn.zig");
-    // _ = @import("behavior/atomics.zig");
-    // _ = @import("behavior/await_struct.zig");
+    _ = @import("behavior/align.zig");
+    _ = @import("behavior/alignof.zig");
+    _ = @import("behavior/array.zig");
+    _ = @import("behavior/async_fn.zig");
+    _ = @import("behavior/atomics.zig");
+    _ = @import("behavior/await_struct.zig");
     _ = @import("behavior/basic.zig");
-    // _ = @import("behavior/bit_shifting.zig");
-    // _ = @import("behavior/bitcast.zig");
-    // _ = @import("behavior/bitreverse.zig");
-    // _ = @import("behavior/bool.zig");
-    // _ = @import("behavior/bugs/394.zig");
-    // _ = @import("behavior/bugs/421.zig");
-    // _ = @import("behavior/bugs/529.zig");
-    // _ = @import("behavior/bugs/624.zig");
-    // _ = @import("behavior/bugs/655.zig");
-    // _ = @import("behavior/bugs/656.zig");
-    // _ = @import("behavior/bugs/679.zig");
-    // _ = @import("behavior/bugs/704.zig");
-    // _ = @import("behavior/bugs/718.zig");
-    // _ = @import("behavior/bugs/726.zig");
-    // _ = @import("behavior/bugs/828.zig");
-    // _ = @import("behavior/bugs/920.zig");
-    // _ = @import("behavior/bugs/1025.zig");
-    // _ = @import("behavior/bugs/1076.zig");
-    // _ = @import("behavior/bugs/1111.zig");
-    // _ = @import("behavior/bugs/1120.zig");
-    // _ = @import("behavior/bugs/1277.zig");
-    // _ = @import("behavior/bugs/1310.zig");
-    // _ = @import("behavior/bugs/1381.zig");
-    // _ = @import("behavior/bugs/1421.zig");
-    // _ = @import("behavior/bugs/1442.zig");
-    // _ = @import("behavior/bugs/1486.zig");
-    // _ = @import("behavior/bugs/1500.zig");
-    // _ = @import("behavior/bugs/1607.zig");
-    // _ = @import("behavior/bugs/1735.zig");
-    // _ = @import("behavior/bugs/1741.zig");
-    // _ = @import("behavior/bugs/1851.zig");
-    // _ = @import("behavior/bugs/1914.zig");
-    // _ = @import("behavior/bugs/2006.zig");
-    // _ = @import("behavior/bugs/2114.zig");
-    // _ = @import("behavior/bugs/2346.zig");
-    // _ = @import("behavior/bugs/2578.zig");
-    // _ = @import("behavior/bugs/2692.zig");
-    // _ = @import("behavior/bugs/2889.zig");
-    // _ = @import("behavior/bugs/3007.zig");
-    // _ = @import("behavior/bugs/3046.zig");
-    // _ = @import("behavior/bugs/3112.zig");
-    // _ = @import("behavior/bugs/3367.zig");
-    // _ = @import("behavior/bugs/3384.zig");
-    // _ = @import("behavior/bugs/3586.zig");
-    // _ = @import("behavior/bugs/3742.zig");
-    // _ = @import("behavior/bugs/3779.zig");
-    // _ = @import("behavior/bugs/4328.zig");
-    // _ = @import("behavior/bugs/4560.zig");
-    // _ = @import("behavior/bugs/4769_a.zig");
-    // _ = @import("behavior/bugs/4769_b.zig");
-    // _ = @import("behavior/bugs/4954.zig");
-    // _ = @import("behavior/bugs/5398.zig");
-    // _ = @import("behavior/bugs/5413.zig");
-    // _ = @import("behavior/bugs/5474.zig");
-    // _ = @import("behavior/bugs/5487.zig");
-    // _ = @import("behavior/bugs/6456.zig");
-    // _ = @import("behavior/bugs/6781.zig");
-    // _ = @import("behavior/bugs/6850.zig");
-    // _ = @import("behavior/bugs/7003.zig");
-    // _ = @import("behavior/bugs/7027.zig");
-    // _ = @import("behavior/bugs/7047.zig");
-    // _ = @import("behavior/bugs/7187.zig");
-    // _ = @import("behavior/bugs/7250.zig");
-    // _ = @import("behavior/bugs/9584.zig");
-    // _ = @import("behavior/bugs/10138.zig");
-    // _ = @import("behavior/bugs/10147.zig");
-    // _ = @import("behavior/bugs/10970.zig");
-    // _ = @import("behavior/bugs/11046.zig");
-    // _ = @import("behavior/bugs/11100.zig");
-    // _ = @import("behavior/bugs/11139.zig");
-    // _ = @import("behavior/bugs/11159.zig");
-    // _ = @import("behavior/bugs/11162.zig");
-    // _ = @import("behavior/bugs/11165.zig");
-    // _ = @import("behavior/bugs/11181.zig");
-    // _ = @import("behavior/bugs/11182.zig");
-    // _ = @import("behavior/bugs/11213.zig");
-    // _ = @import("behavior/byteswap.zig");
-    // _ = @import("behavior/byval_arg_var.zig");
-    // _ = @import("behavior/call.zig");
-    // _ = @import("behavior/cast.zig");
-    // _ = @import("behavior/cast_int.zig");
-    // _ = @import("behavior/comptime_memory.zig");
-    // _ = @import("behavior/const_slice_child.zig");
-    // _ = @import("behavior/defer.zig");
-    // _ = @import("behavior/enum.zig");
-    // _ = @import("behavior/error.zig");
-    // _ = @import("behavior/eval.zig");
-    // _ = @import("behavior/field_parent_ptr.zig");
-    // _ = @import("behavior/floatop.zig");
-    // _ = @import("behavior/fn.zig");
-    // _ = @import("behavior/fn_delegation.zig");
-    // _ = @import("behavior/fn_in_struct_in_comptime.zig");
-    // _ = @import("behavior/for.zig");
-    // _ = @import("behavior/generics.zig");
-    // _ = @import("behavior/hasdecl.zig");
-    // _ = @import("behavior/hasfield.zig");
-    // _ = @import("behavior/if.zig");
-    // _ = @import("behavior/import.zig");
-    // _ = @import("behavior/incomplete_struct_param_tld.zig");
-    // _ = @import("behavior/int128.zig");
-    // _ = @import("behavior/int_div.zig");
-    // _ = @import("behavior/inttoptr.zig");
-    // _ = @import("behavior/ir_block_deps.zig");
-    // _ = @import("behavior/math.zig");
-    // _ = @import("behavior/maximum_minimum.zig");
-    // _ = @import("behavior/member_func.zig");
-    // _ = @import("behavior/merge_error_sets.zig");
-    // _ = @import("behavior/muladd.zig");
-    // _ = @import("behavior/namespace_depends_on_compile_var.zig");
-    // _ = @import("behavior/null.zig");
-    // _ = @import("behavior/optional.zig");
-    // _ = @import("behavior/pointers.zig");
-    // _ = @import("behavior/popcount.zig");
-    // _ = @import("behavior/prefetch.zig");
-    // _ = @import("behavior/ptrcast.zig");
-    // _ = @import("behavior/pub_enum.zig");
-    // _ = @import("behavior/ref_var_in_if_after_if_2nd_switch_prong.zig");
-    // _ = @import("behavior/reflection.zig");
-    // _ = @import("behavior/saturating_arithmetic.zig");
-    // _ = @import("behavior/select.zig");
-    // _ = @import("behavior/shuffle.zig");
-    // _ = @import("behavior/sizeof_and_typeof.zig");
-    // _ = @import("behavior/slice.zig");
-    // _ = @import("behavior/slice_sentinel_comptime.zig");
-    // _ = @import("behavior/src.zig");
-    // _ = @import("behavior/struct.zig");
-    // _ = @import("behavior/packed-struct.zig");
-    // _ = @import("behavior/struct_contains_null_ptr_itself.zig");
-    // _ = @import("behavior/struct_contains_slice_of_itself.zig");
-    // _ = @import("behavior/switch.zig");
-    // _ = @import("behavior/switch_prong_err_enum.zig");
-    // _ = @import("behavior/switch_prong_implicit_cast.zig");
-    // _ = @import("behavior/this.zig");
-    // _ = @import("behavior/translate_c_macros.zig");
-    // _ = @import("behavior/truncate.zig");
-    // _ = @import("behavior/try.zig");
-    // _ = @import("behavior/tuple.zig");
-    // _ = @import("behavior/type.zig");
-    // _ = @import("behavior/type_info.zig");
-    // _ = @import("behavior/typename.zig");
-    // _ = @import("behavior/undefined.zig");
-    // _ = @import("behavior/underscore.zig");
-    // _ = @import("behavior/union.zig");
-    // _ = @import("behavior/union_with_members.zig");
-    // _ = @import("behavior/usingnamespace.zig");
-    // _ = @import("behavior/var_args.zig");
-    // _ = @import("behavior/vector.zig");
-    // _ = @import("behavior/void.zig");
-    // _ = @import("behavior/while.zig");
-    // _ = @import("behavior/widening.zig");
+    _ = @import("behavior/bit_shifting.zig");
+    _ = @import("behavior/bitcast.zig");
+    _ = @import("behavior/bitreverse.zig");
+    _ = @import("behavior/bool.zig");
+    _ = @import("behavior/bugs/394.zig");
+    _ = @import("behavior/bugs/421.zig");
+    _ = @import("behavior/bugs/529.zig");
+    _ = @import("behavior/bugs/624.zig");
+    _ = @import("behavior/bugs/655.zig");
+    _ = @import("behavior/bugs/656.zig");
+    _ = @import("behavior/bugs/679.zig");
+    _ = @import("behavior/bugs/704.zig");
+    _ = @import("behavior/bugs/718.zig");
+    _ = @import("behavior/bugs/726.zig");
+    _ = @import("behavior/bugs/828.zig");
+    _ = @import("behavior/bugs/920.zig");
+    _ = @import("behavior/bugs/1025.zig");
+    _ = @import("behavior/bugs/1076.zig");
+    _ = @import("behavior/bugs/1111.zig");
+    _ = @import("behavior/bugs/1120.zig");
+    _ = @import("behavior/bugs/1277.zig");
+    _ = @import("behavior/bugs/1310.zig");
+    _ = @import("behavior/bugs/1381.zig");
+    _ = @import("behavior/bugs/1421.zig");
+    _ = @import("behavior/bugs/1442.zig");
+    _ = @import("behavior/bugs/1486.zig");
+    _ = @import("behavior/bugs/1500.zig");
+    _ = @import("behavior/bugs/1607.zig");
+    _ = @import("behavior/bugs/1735.zig");
+    _ = @import("behavior/bugs/1741.zig");
+    _ = @import("behavior/bugs/1851.zig");
+    _ = @import("behavior/bugs/1914.zig");
+    _ = @import("behavior/bugs/2006.zig");
+    _ = @import("behavior/bugs/2114.zig");
+    _ = @import("behavior/bugs/2346.zig");
+    _ = @import("behavior/bugs/2578.zig");
+    _ = @import("behavior/bugs/2692.zig");
+    _ = @import("behavior/bugs/2889.zig");
+    _ = @import("behavior/bugs/3007.zig");
+    _ = @import("behavior/bugs/3046.zig");
+    _ = @import("behavior/bugs/3112.zig");
+    _ = @import("behavior/bugs/3367.zig");
+    _ = @import("behavior/bugs/3384.zig");
+    _ = @import("behavior/bugs/3586.zig");
+    _ = @import("behavior/bugs/3742.zig");
+    _ = @import("behavior/bugs/3779.zig");
+    _ = @import("behavior/bugs/4328.zig");
+    _ = @import("behavior/bugs/4560.zig");
+    _ = @import("behavior/bugs/4769_a.zig");
+    _ = @import("behavior/bugs/4769_b.zig");
+    _ = @import("behavior/bugs/4954.zig");
+    _ = @import("behavior/bugs/5398.zig");
+    _ = @import("behavior/bugs/5413.zig");
+    _ = @import("behavior/bugs/5474.zig");
+    _ = @import("behavior/bugs/5487.zig");
+    _ = @import("behavior/bugs/6456.zig");
+    _ = @import("behavior/bugs/6781.zig");
+    _ = @import("behavior/bugs/6850.zig");
+    _ = @import("behavior/bugs/7003.zig");
+    _ = @import("behavior/bugs/7027.zig");
+    _ = @import("behavior/bugs/7047.zig");
+    _ = @import("behavior/bugs/7187.zig");
+    _ = @import("behavior/bugs/7250.zig");
+    _ = @import("behavior/bugs/9584.zig");
+    _ = @import("behavior/bugs/10138.zig");
+    _ = @import("behavior/bugs/10147.zig");
+    _ = @import("behavior/bugs/10970.zig");
+    _ = @import("behavior/bugs/11046.zig");
+    _ = @import("behavior/bugs/11100.zig");
+    _ = @import("behavior/bugs/11139.zig");
+    _ = @import("behavior/bugs/11159.zig");
+    _ = @import("behavior/bugs/11162.zig");
+    _ = @import("behavior/bugs/11165.zig");
+    _ = @import("behavior/bugs/11181.zig");
+    _ = @import("behavior/bugs/11182.zig");
+    _ = @import("behavior/bugs/11213.zig");
+    _ = @import("behavior/byteswap.zig");
+    _ = @import("behavior/byval_arg_var.zig");
+    _ = @import("behavior/call.zig");
+    _ = @import("behavior/cast.zig");
+    _ = @import("behavior/cast_int.zig");
+    _ = @import("behavior/comptime_memory.zig");
+    _ = @import("behavior/const_slice_child.zig");
+    _ = @import("behavior/defer.zig");
+    _ = @import("behavior/enum.zig");
+    _ = @import("behavior/error.zig");
+    _ = @import("behavior/eval.zig");
+    _ = @import("behavior/field_parent_ptr.zig");
+    _ = @import("behavior/floatop.zig");
+    _ = @import("behavior/fn.zig");
+    _ = @import("behavior/fn_delegation.zig");
+    _ = @import("behavior/fn_in_struct_in_comptime.zig");
+    _ = @import("behavior/for.zig");
+    _ = @import("behavior/generics.zig");
+    _ = @import("behavior/hasdecl.zig");
+    _ = @import("behavior/hasfield.zig");
+    _ = @import("behavior/if.zig");
+    _ = @import("behavior/import.zig");
+    _ = @import("behavior/incomplete_struct_param_tld.zig");
+    _ = @import("behavior/int128.zig");
+    _ = @import("behavior/int_div.zig");
+    _ = @import("behavior/inttoptr.zig");
+    _ = @import("behavior/ir_block_deps.zig");
+    _ = @import("behavior/math.zig");
+    _ = @import("behavior/maximum_minimum.zig");
+    _ = @import("behavior/member_func.zig");
+    _ = @import("behavior/merge_error_sets.zig");
+    _ = @import("behavior/muladd.zig");
+    _ = @import("behavior/namespace_depends_on_compile_var.zig");
+    _ = @import("behavior/null.zig");
+    _ = @import("behavior/optional.zig");
+    _ = @import("behavior/pointers.zig");
+    _ = @import("behavior/popcount.zig");
+    _ = @import("behavior/prefetch.zig");
+    _ = @import("behavior/ptrcast.zig");
+    _ = @import("behavior/pub_enum.zig");
+    _ = @import("behavior/ref_var_in_if_after_if_2nd_switch_prong.zig");
+    _ = @import("behavior/reflection.zig");
+    _ = @import("behavior/saturating_arithmetic.zig");
+    _ = @import("behavior/select.zig");
+    _ = @import("behavior/shuffle.zig");
+    _ = @import("behavior/sizeof_and_typeof.zig");
+    _ = @import("behavior/slice.zig");
+    _ = @import("behavior/slice_sentinel_comptime.zig");
+    _ = @import("behavior/src.zig");
+    _ = @import("behavior/struct.zig");
+    _ = @import("behavior/packed-struct.zig");
+    _ = @import("behavior/struct_contains_null_ptr_itself.zig");
+    _ = @import("behavior/struct_contains_slice_of_itself.zig");
+    _ = @import("behavior/switch.zig");
+    _ = @import("behavior/switch_prong_err_enum.zig");
+    _ = @import("behavior/switch_prong_implicit_cast.zig");
+    _ = @import("behavior/this.zig");
+    _ = @import("behavior/translate_c_macros.zig");
+    _ = @import("behavior/truncate.zig");
+    _ = @import("behavior/try.zig");
+    _ = @import("behavior/tuple.zig");
+    _ = @import("behavior/type.zig");
+    _ = @import("behavior/type_info.zig");
+    _ = @import("behavior/typename.zig");
+    _ = @import("behavior/undefined.zig");
+    _ = @import("behavior/underscore.zig");
+    _ = @import("behavior/union.zig");
+    _ = @import("behavior/union_with_members.zig");
+    _ = @import("behavior/usingnamespace.zig");
+    _ = @import("behavior/var_args.zig");
+    _ = @import("behavior/vector.zig");
+    _ = @import("behavior/void.zig");
+    _ = @import("behavior/while.zig");
+    _ = @import("behavior/widening.zig");
 
     if (builtin.stage2_arch == .wasm32) {
         _ = @import("behavior/wasm.zig");