aboutsummaryrefslogtreecommitdiff
path: root/src/codegen
diff options
context:
space:
mode:
authorJacob Young <jacobly0@users.noreply.github.com>2025-05-24 11:37:13 -0400
committerJacob Young <jacobly0@users.noreply.github.com>2025-05-28 15:10:22 -0400
commita4a1ebdeed16494270a0111aeee6fec8e04ef7ee (patch)
tree6a3cac6bbd6efde299d15991fa04b261e4459890 /src/codegen
parent612f5784cf0a02b4d3be5aaf9e3822d72e220c96 (diff)
downloadzig-a4a1ebdeed16494270a0111aeee6fec8e04ef7ee.tar.gz
zig-a4a1ebdeed16494270a0111aeee6fec8e04ef7ee.zip
x86_64: implement optimized float `@reduce(.Mul)`
Diffstat (limited to 'src/codegen')
-rw-r--r--src/codegen/c/Type.zig60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/codegen/c/Type.zig b/src/codegen/c/Type.zig
index 2fa3856cfc..93e52cd2ec 100644
--- a/src/codegen/c/Type.zig
+++ b/src/codegen/c/Type.zig
@@ -1885,6 +1885,36 @@ pub const Pool = struct {
};
return pool.fromFields(allocator, .@"struct", &fields, kind);
},
+ .vector_16_f16_type => {
+ const vector_ctype = try pool.getVector(allocator, .{
+ .elem_ctype = .f16,
+ .len = 16,
+ });
+ if (!kind.isParameter()) return vector_ctype;
+ var fields = [_]Info.Field{
+ .{
+ .name = .{ .index = .array },
+ .ctype = vector_ctype,
+ .alignas = AlignAs.fromAbiAlignment(Type.f16.abiAlignment(zcu)),
+ },
+ };
+ return pool.fromFields(allocator, .@"struct", &fields, kind);
+ },
+ .vector_32_f16_type => {
+ const vector_ctype = try pool.getVector(allocator, .{
+ .elem_ctype = .f16,
+ .len = 32,
+ });
+ if (!kind.isParameter()) return vector_ctype;
+ var fields = [_]Info.Field{
+ .{
+ .name = .{ .index = .array },
+ .ctype = vector_ctype,
+ .alignas = AlignAs.fromAbiAlignment(Type.f16.abiAlignment(zcu)),
+ },
+ };
+ return pool.fromFields(allocator, .@"struct", &fields, kind);
+ },
.vector_2_f32_type => {
const vector_ctype = try pool.getVector(allocator, .{
.elem_ctype = .f32,
@@ -1930,6 +1960,21 @@ pub const Pool = struct {
};
return pool.fromFields(allocator, .@"struct", &fields, kind);
},
+ .vector_16_f32_type => {
+ const vector_ctype = try pool.getVector(allocator, .{
+ .elem_ctype = .f32,
+ .len = 16,
+ });
+ if (!kind.isParameter()) return vector_ctype;
+ var fields = [_]Info.Field{
+ .{
+ .name = .{ .index = .array },
+ .ctype = vector_ctype,
+ .alignas = AlignAs.fromAbiAlignment(Type.f32.abiAlignment(zcu)),
+ },
+ };
+ return pool.fromFields(allocator, .@"struct", &fields, kind);
+ },
.vector_2_f64_type => {
const vector_ctype = try pool.getVector(allocator, .{
.elem_ctype = .f64,
@@ -1960,6 +2005,21 @@ pub const Pool = struct {
};
return pool.fromFields(allocator, .@"struct", &fields, kind);
},
+ .vector_8_f64_type => {
+ const vector_ctype = try pool.getVector(allocator, .{
+ .elem_ctype = .f64,
+ .len = 8,
+ });
+ if (!kind.isParameter()) return vector_ctype;
+ var fields = [_]Info.Field{
+ .{
+ .name = .{ .index = .array },
+ .ctype = vector_ctype,
+ .alignas = AlignAs.fromAbiAlignment(Type.f64.abiAlignment(zcu)),
+ },
+ };
+ return pool.fromFields(allocator, .@"struct", &fields, kind);
+ },
.undef,
.zero,