authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2024-02-06 23:36:35+01:00
committergravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2024-02-12 05:25:07+01:00
log5a62f265795249e099ff0f8b036a5b899e540c86
tree83fd8948380c35496990aa960b1aa049125794e8
parentf2a62d25fc722da9dd4fb09ec614e278271442b9

x86_64: fix packed load


2 files changed, 2 insertions(+), 6 deletions(-)

src/arch/x86_64/CodeGen.zig+2-2
......@@ -6993,7 +6993,7 @@ fn packedLoad(self: *Self, dst_mcv: MCValue, ptr_ty: Type, ptr_mcv: MCValue) Inn
69936993
69946994 if (val_abi_size > 8) return self.fail("TODO implement packed load of {}", .{val_ty.fmt(mod)});
69956995
6996 const limb_abi_size: u32 = @min(val_abi_size, 8);
6996 const limb_abi_size: u31 = @min(val_abi_size, 8);
69976997 const limb_abi_bits = limb_abi_size * 8;
69986998 const val_byte_off: i32 = @intCast(ptr_bit_off / limb_abi_bits * limb_abi_size);
69996999 const val_bit_off = ptr_bit_off % limb_abi_bits;
......@@ -7041,7 +7041,7 @@ fn packedLoad(self: *Self, dst_mcv: MCValue, ptr_ty: Type, ptr_mcv: MCValue) Inn
70417041 .base = .{ .reg = ptr_reg },
70427042 .mod = .{ .rm = .{
70437043 .size = Memory.Size.fromSize(val_abi_size),
7044 .disp = val_byte_off + 1,
7044 .disp = val_byte_off + limb_abi_size,
70457045 } },
70467046 });
70477047 try self.spillEflagsIfOccupied();
test/behavior/packed-struct.zig-4
......@@ -1130,10 +1130,6 @@ test "pointer loaded correctly from packed struct" {
11301130 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
11311131 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
11321132 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
1133 if (builtin.zig_backend == .stage2_x86_64) {
1134 // Careful enabling this test, fails randomly.
1135 return error.SkipZigTest;
1136 }
11371133
11381134 var ram = try RAM.new();
11391135 var cpu = try CPU.new(&ram);