aboutsummaryrefslogtreecommitdiff
path: root/src/codegen
diff options
context:
space:
mode:
authorJacob Young <jacobly0@users.noreply.github.com>2025-05-27 11:02:35 -0400
committerJacob Young <jacobly0@users.noreply.github.com>2025-05-28 15:10:22 -0400
commit3fd3358f37668e54d214aec57033861ea17fd76d (patch)
tree396bad08654cfbf0ccc69442e2a73064a73154d9 /src/codegen
parent7d727ed7dfc7f3a2880ff1d7b88569dea9531e73 (diff)
downloadzig-3fd3358f37668e54d214aec57033861ea17fd76d.tar.gz
zig-3fd3358f37668e54d214aec57033861ea17fd76d.zip
x86_64: implement integer `@reduce(.Min)`
Diffstat (limited to 'src/codegen')
-rw-r--r--src/codegen/c/Type.zig120
1 files changed, 120 insertions, 0 deletions
diff --git a/src/codegen/c/Type.zig b/src/codegen/c/Type.zig
index 93e52cd2ec..783e887324 100644
--- a/src/codegen/c/Type.zig
+++ b/src/codegen/c/Type.zig
@@ -1492,6 +1492,21 @@ pub const Pool = struct {
};
return pool.fromFields(allocator, .@"struct", &fields, kind);
},
+ .vector_64_i8_type => {
+ const vector_ctype = try pool.getVector(allocator, .{
+ .elem_ctype = .i8,
+ .len = 64,
+ });
+ if (!kind.isParameter()) return vector_ctype;
+ var fields = [_]Info.Field{
+ .{
+ .name = .{ .index = .array },
+ .ctype = vector_ctype,
+ .alignas = AlignAs.fromAbiAlignment(Type.i8.abiAlignment(zcu)),
+ },
+ };
+ return pool.fromFields(allocator, .@"struct", &fields, kind);
+ },
.vector_1_u8_type => {
const vector_ctype = try pool.getVector(allocator, .{
.elem_ctype = .u8,
@@ -1597,6 +1612,21 @@ pub const Pool = struct {
};
return pool.fromFields(allocator, .@"struct", &fields, kind);
},
+ .vector_2_i16_type => {
+ const vector_ctype = try pool.getVector(allocator, .{
+ .elem_ctype = .i16,
+ .len = 2,
+ });
+ if (!kind.isParameter()) return vector_ctype;
+ var fields = [_]Info.Field{
+ .{
+ .name = .{ .index = .array },
+ .ctype = vector_ctype,
+ .alignas = AlignAs.fromAbiAlignment(Type.i16.abiAlignment(zcu)),
+ },
+ };
+ return pool.fromFields(allocator, .@"struct", &fields, kind);
+ },
.vector_4_i16_type => {
const vector_ctype = try pool.getVector(allocator, .{
.elem_ctype = .i16,
@@ -1642,6 +1672,21 @@ pub const Pool = struct {
};
return pool.fromFields(allocator, .@"struct", &fields, kind);
},
+ .vector_32_i16_type => {
+ const vector_ctype = try pool.getVector(allocator, .{
+ .elem_ctype = .i16,
+ .len = 32,
+ });
+ if (!kind.isParameter()) return vector_ctype;
+ var fields = [_]Info.Field{
+ .{
+ .name = .{ .index = .array },
+ .ctype = vector_ctype,
+ .alignas = AlignAs.fromAbiAlignment(Type.i16.abiAlignment(zcu)),
+ },
+ };
+ return pool.fromFields(allocator, .@"struct", &fields, kind);
+ },
.vector_4_u16_type => {
const vector_ctype = try pool.getVector(allocator, .{
.elem_ctype = .u16,
@@ -1687,6 +1732,21 @@ pub const Pool = struct {
};
return pool.fromFields(allocator, .@"struct", &fields, kind);
},
+ .vector_32_u16_type => {
+ const vector_ctype = try pool.getVector(allocator, .{
+ .elem_ctype = .u16,
+ .len = 32,
+ });
+ if (!kind.isParameter()) return vector_ctype;
+ var fields = [_]Info.Field{
+ .{
+ .name = .{ .index = .array },
+ .ctype = vector_ctype,
+ .alignas = AlignAs.fromAbiAlignment(Type.u16.abiAlignment(zcu)),
+ },
+ };
+ return pool.fromFields(allocator, .@"struct", &fields, kind);
+ },
.vector_4_i32_type => {
const vector_ctype = try pool.getVector(allocator, .{
.elem_ctype = .i32,
@@ -1717,6 +1777,21 @@ pub const Pool = struct {
};
return pool.fromFields(allocator, .@"struct", &fields, kind);
},
+ .vector_16_i32_type => {
+ const vector_ctype = try pool.getVector(allocator, .{
+ .elem_ctype = .i32,
+ .len = 16,
+ });
+ if (!kind.isParameter()) return vector_ctype;
+ var fields = [_]Info.Field{
+ .{
+ .name = .{ .index = .array },
+ .ctype = vector_ctype,
+ .alignas = AlignAs.fromAbiAlignment(Type.i32.abiAlignment(zcu)),
+ },
+ };
+ return pool.fromFields(allocator, .@"struct", &fields, kind);
+ },
.vector_4_u32_type => {
const vector_ctype = try pool.getVector(allocator, .{
.elem_ctype = .u32,
@@ -1747,6 +1822,21 @@ pub const Pool = struct {
};
return pool.fromFields(allocator, .@"struct", &fields, kind);
},
+ .vector_16_u32_type => {
+ const vector_ctype = try pool.getVector(allocator, .{
+ .elem_ctype = .u32,
+ .len = 16,
+ });
+ if (!kind.isParameter()) return vector_ctype;
+ var fields = [_]Info.Field{
+ .{
+ .name = .{ .index = .array },
+ .ctype = vector_ctype,
+ .alignas = AlignAs.fromAbiAlignment(Type.u32.abiAlignment(zcu)),
+ },
+ };
+ return pool.fromFields(allocator, .@"struct", &fields, kind);
+ },
.vector_2_i64_type => {
const vector_ctype = try pool.getVector(allocator, .{
.elem_ctype = .i64,
@@ -1777,6 +1867,21 @@ pub const Pool = struct {
};
return pool.fromFields(allocator, .@"struct", &fields, kind);
},
+ .vector_8_i64_type => {
+ const vector_ctype = try pool.getVector(allocator, .{
+ .elem_ctype = .i64,
+ .len = 8,
+ });
+ if (!kind.isParameter()) return vector_ctype;
+ var fields = [_]Info.Field{
+ .{
+ .name = .{ .index = .array },
+ .ctype = vector_ctype,
+ .alignas = AlignAs.fromAbiAlignment(Type.i64.abiAlignment(zcu)),
+ },
+ };
+ return pool.fromFields(allocator, .@"struct", &fields, kind);
+ },
.vector_2_u64_type => {
const vector_ctype = try pool.getVector(allocator, .{
.elem_ctype = .u64,
@@ -1807,6 +1912,21 @@ pub const Pool = struct {
};
return pool.fromFields(allocator, .@"struct", &fields, kind);
},
+ .vector_8_u64_type => {
+ const vector_ctype = try pool.getVector(allocator, .{
+ .elem_ctype = .u64,
+ .len = 8,
+ });
+ if (!kind.isParameter()) return vector_ctype;
+ var fields = [_]Info.Field{
+ .{
+ .name = .{ .index = .array },
+ .ctype = vector_ctype,
+ .alignas = AlignAs.fromAbiAlignment(Type.u64.abiAlignment(zcu)),
+ },
+ };
+ return pool.fromFields(allocator, .@"struct", &fields, kind);
+ },
.vector_1_u128_type => {
const vector_ctype = try pool.getVector(allocator, .{
.elem_ctype = .u128,