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...@@ -6993,7 +6993,7 @@ fn packedLoad(self: *Self, dst_mcv: MCValue, ptr_ty: Type, ptr_mcv: MCValue) Inn
69936993
6994 if (val_abi_size > 8) return self.fail("TODO implement packed load of {}", .{val_ty.fmt(mod)});6994 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);
6997 const limb_abi_bits = limb_abi_size * 8;6997 const limb_abi_bits = limb_abi_size * 8;
6998 const val_byte_off: i32 = @intCast(ptr_bit_off / limb_abi_bits * limb_abi_size);6998 const val_byte_off: i32 = @intCast(ptr_bit_off / limb_abi_bits * limb_abi_size);
6999 const val_bit_off = ptr_bit_off % limb_abi_bits;6999 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...@@ -7041,7 +7041,7 @@ fn packedLoad(self: *Self, dst_mcv: MCValue, ptr_ty: Type, ptr_mcv: MCValue) Inn
7041 .base = .{ .reg = ptr_reg },7041 .base = .{ .reg = ptr_reg },
7042 .mod = .{ .rm = .{7042 .mod = .{ .rm = .{
7043 .size = Memory.Size.fromSize(val_abi_size),7043 .size = Memory.Size.fromSize(val_abi_size),
7044 .disp = val_byte_off + 1,7044 .disp = val_byte_off + limb_abi_size,
7045 } },7045 } },
7046 });7046 });
7047 try self.spillEflagsIfOccupied();7047 try self.spillEflagsIfOccupied();
test/behavior/packed-struct.zig-4
...@@ -1130,10 +1130,6 @@ test "pointer loaded correctly from packed struct" {...@@ -1130,10 +1130,6 @@ test "pointer loaded correctly from packed struct" {
1130 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;1130 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
1131 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;1131 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
1132 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;1132 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
1138 var ram = try RAM.new();1134 var ram = try RAM.new();
1139 var cpu = try CPU.new(&ram);1135 var cpu = try CPU.new(&ram);