authorgravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2023-10-08 01:28:17-04:00
committergravatar for jacobly@ziglang.orgJacob Young <jacobly@ziglang.org> 2023-10-08 04:41:55-04:00
log9fc9235ac815f8b0ad88445216407a0a9f747d5f
tree4b1d2fb68a1c982ec23010d09e35950f1f7a9c15
parentf6e027da32caabdea57bae9ee806abe1d9e3ac68

x86_64: fix undersized vector binary operations


2 files changed, 10 insertions(+), 3 deletions(-)

src/arch/x86_64/CodeGen.zig+8-2
......@@ -7733,7 +7733,10 @@ fn genBinOp(
77337733 mir_tag,
77347734 dst_reg,
77357735 lhs_reg,
7736 src_mcv.mem(Memory.PtrSize.fromSize(abi_size)),
7736 src_mcv.mem(switch (lhs_ty.zigTypeTag(mod)) {
7737 else => Memory.PtrSize.fromSize(abi_size),
7738 .Vector => Memory.PtrSize.fromBitSize(dst_reg.bitSize()),
7739 }),
77377740 ) else try self.asmRegisterRegisterRegister(
77387741 mir_tag,
77397742 dst_reg,
......@@ -7748,7 +7751,10 @@ fn genBinOp(
77487751 if (src_mcv.isMemory()) try self.asmRegisterMemory(
77497752 mir_tag,
77507753 dst_reg,
7751 src_mcv.mem(Memory.PtrSize.fromSize(abi_size)),
7754 src_mcv.mem(switch (lhs_ty.zigTypeTag(mod)) {
7755 else => Memory.PtrSize.fromSize(abi_size),
7756 .Vector => Memory.PtrSize.fromBitSize(dst_reg.bitSize()),
7757 }),
77527758 ) else try self.asmRegisterRegister(
77537759 mir_tag,
77547760 dst_reg,
test/behavior/maximum_minimum.zig+2-1
......@@ -276,7 +276,8 @@ test "@min/@max notices bounds from vector types when element of comptime-known
276276 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
277277 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
278278 if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
279 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
279 if (builtin.zig_backend == .stage2_x86_64 and
280 !comptime std.Target.x86.featureSetHas(builtin.cpu.features, .sse4_1)) return error.SkipZigTest;
280281
281282 var x: @Vector(2, u32) = .{ 1_000_000, 12345 };
282283 const y: @Vector(2, u16) = .{ 10, undefined };