x86_64: implement fallback for pcmpeqq

This commit is contained in:
Jacob Young
2024-12-21 15:18:50 -05:00
parent c4b93555b0
commit b9c4400776
8 changed files with 720 additions and 605 deletions

View File

@@ -1312,10 +1312,10 @@ pub const Pool = struct {
},
else => {
const target = &mod.resolved_target.result;
const abi_align = Type.intAbiAlignment(int_info.bits, target.*, false);
const abi_align = Type.intAbiAlignment(int_info.bits, target.*);
const abi_align_bytes = abi_align.toByteUnits().?;
const array_ctype = try pool.getArray(allocator, .{
.len = @divExact(Type.intAbiSize(int_info.bits, target.*, false), abi_align_bytes),
.len = @divExact(Type.intAbiSize(int_info.bits, target.*), abi_align_bytes),
.elem_ctype = try pool.fromIntInfo(allocator, .{
.signedness = .unsigned,
.bits = @intCast(abi_align_bytes * 8),
@@ -1429,7 +1429,7 @@ pub const Pool = struct {
.name = .{ .index = .len },
.ctype = CType.usize,
.alignas = AlignAs.fromAbiAlignment(
Type.intAbiAlignment(target.ptrBitWidth(), target.*, false),
Type.intAbiAlignment(target.ptrBitWidth(), target.*),
),
},
};
@@ -1524,7 +1524,7 @@ pub const Pool = struct {
.name = .{ .index = .len },
.ctype = CType.usize,
.alignas = AlignAs.fromAbiAlignment(
Type.intAbiAlignment(target.ptrBitWidth(), target.*, false),
Type.intAbiAlignment(target.ptrBitWidth(), target.*),
),
},
};
@@ -1644,7 +1644,7 @@ pub const Pool = struct {
.name = .{ .index = .@"error" },
.ctype = error_set_ctype,
.alignas = AlignAs.fromAbiAlignment(
Type.intAbiAlignment(error_set_bits, target.*, false),
Type.intAbiAlignment(error_set_bits, target.*),
),
},
.{

View File

@@ -581,7 +581,7 @@ const DataLayoutBuilder = struct {
switch (kind) {
.integer => {
if (self.target.ptrBitWidth() <= 16 and size >= 128) return;
abi = @min(abi, Type.maxIntAlignment(self.target, true) * 8);
abi = @min(abi, Type.maxIntAlignment(self.target) * 8);
switch (self.target.cpu.arch) {
.aarch64,
.aarch64_be,