diff options
| author | Jacob Young <jacobly0@users.noreply.github.com> | 2025-05-27 11:02:35 -0400 |
|---|---|---|
| committer | Jacob Young <jacobly0@users.noreply.github.com> | 2025-05-28 15:10:22 -0400 |
| commit | 3fd3358f37668e54d214aec57033861ea17fd76d (patch) | |
| tree | 396bad08654cfbf0ccc69442e2a73064a73154d9 /src/codegen | |
| parent | 7d727ed7dfc7f3a2880ff1d7b88569dea9531e73 (diff) | |
| download | zig-3fd3358f37668e54d214aec57033861ea17fd76d.tar.gz zig-3fd3358f37668e54d214aec57033861ea17fd76d.zip | |
x86_64: implement integer `@reduce(.Min)`
Diffstat (limited to 'src/codegen')
| -rw-r--r-- | src/codegen/c/Type.zig | 120 |
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, |
