Skip to content

Commit 4bf1e4d

Browse files
committed
target: auto-generated spirv features
1 parent 8fa54eb commit 4bf1e4d

File tree

2 files changed

+247
-80
lines changed

2 files changed

+247
-80
lines changed

lib/std/Target/spirv.zig

Lines changed: 125 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,30 @@
1+
//! This file is auto-generated by tools/update_cpu_features.zig.
2+
13
const std = @import("../std.zig");
24
const CpuFeature = std.Target.Cpu.Feature;
35
const CpuModel = std.Target.Cpu.Model;
46

57
pub const Feature = enum {
8+
addresses,
9+
arbitrary_precision_integers,
10+
float16,
11+
float64,
12+
generic_pointer,
13+
int64,
14+
kernel,
15+
matrix,
16+
physical_storage_buffer,
17+
shader,
18+
storage_push_constant16,
619
v1_0,
720
v1_1,
821
v1_2,
922
v1_3,
1023
v1_4,
1124
v1_5,
1225
v1_6,
13-
int64,
14-
float16,
15-
float64,
16-
matrix,
17-
storage_push_constant16,
18-
arbitrary_precision_integers,
19-
kernel,
20-
addresses,
21-
generic_pointer,
22-
vector16,
23-
shader,
2426
variable_pointers,
25-
physical_storage_buffer,
27+
vector16,
2628
};
2729

2830
pub const featureSet = CpuFeature.FeatureSetFns(Feature).featureSet;
@@ -35,105 +37,143 @@ pub const all_features = blk: {
3537
const len = @typeInfo(Feature).@"enum".fields.len;
3638
std.debug.assert(len <= CpuFeature.Set.needed_bit_count);
3739
var result: [len]CpuFeature = undefined;
38-
result[@intFromEnum(Feature.v1_0)] = .{
39-
.llvm_name = null,
40-
.description = "Enable version 1.0",
41-
.dependencies = featureSet(&[_]Feature{}),
42-
};
43-
result[@intFromEnum(Feature.v1_1)] = .{
44-
.llvm_name = null,
45-
.description = "Enable version 1.1",
46-
.dependencies = featureSet(&[_]Feature{.v1_0}),
47-
};
48-
result[@intFromEnum(Feature.v1_2)] = .{
40+
result[@intFromEnum(Feature.addresses)] = .{
4941
.llvm_name = null,
50-
.description = "Enable version 1.2",
51-
.dependencies = featureSet(&[_]Feature{.v1_1}),
42+
.description = "Enable Addresses capability",
43+
.dependencies = featureSet(&[_]Feature{
44+
.v1_0,
45+
}),
5246
};
53-
result[@intFromEnum(Feature.v1_3)] = .{
47+
result[@intFromEnum(Feature.arbitrary_precision_integers)] = .{
5448
.llvm_name = null,
55-
.description = "Enable version 1.3",
56-
.dependencies = featureSet(&[_]Feature{.v1_2}),
49+
.description = "Enable SPV_INTEL_arbitrary_precision_integers extension and the ArbitraryPrecisionIntegersINTEL capability",
50+
.dependencies = featureSet(&[_]Feature{
51+
.v1_5,
52+
}),
5753
};
58-
result[@intFromEnum(Feature.v1_4)] = .{
54+
result[@intFromEnum(Feature.float16)] = .{
5955
.llvm_name = null,
60-
.description = "Enable version 1.4",
61-
.dependencies = featureSet(&[_]Feature{.v1_3}),
56+
.description = "Enable Float16 capability",
57+
.dependencies = featureSet(&[_]Feature{
58+
.v1_0,
59+
}),
6260
};
63-
result[@intFromEnum(Feature.v1_5)] = .{
61+
result[@intFromEnum(Feature.float64)] = .{
6462
.llvm_name = null,
65-
.description = "Enable version 1.5",
66-
.dependencies = featureSet(&[_]Feature{.v1_4}),
63+
.description = "Enable Float64 capability",
64+
.dependencies = featureSet(&[_]Feature{
65+
.v1_0,
66+
}),
6767
};
68-
result[@intFromEnum(Feature.v1_6)] = .{
68+
result[@intFromEnum(Feature.generic_pointer)] = .{
6969
.llvm_name = null,
70-
.description = "Enable version 1.6",
71-
.dependencies = featureSet(&[_]Feature{.v1_5}),
70+
.description = "Enable GenericPointer capability",
71+
.dependencies = featureSet(&[_]Feature{
72+
.addresses,
73+
}),
7274
};
7375
result[@intFromEnum(Feature.int64)] = .{
7476
.llvm_name = null,
7577
.description = "Enable Int64 capability",
76-
.dependencies = featureSet(&[_]Feature{.v1_0}),
77-
};
78-
result[@intFromEnum(Feature.float16)] = .{
79-
.llvm_name = null,
80-
.description = "Enable Float16 capability",
81-
.dependencies = featureSet(&[_]Feature{.v1_0}),
78+
.dependencies = featureSet(&[_]Feature{
79+
.v1_0,
80+
}),
8281
};
83-
result[@intFromEnum(Feature.float64)] = .{
82+
result[@intFromEnum(Feature.kernel)] = .{
8483
.llvm_name = null,
85-
.description = "Enable Float64 capability",
86-
.dependencies = featureSet(&[_]Feature{.v1_0}),
84+
.description = "Enable Kernel capability",
85+
.dependencies = featureSet(&[_]Feature{
86+
.v1_0,
87+
}),
8788
};
8889
result[@intFromEnum(Feature.matrix)] = .{
8990
.llvm_name = null,
9091
.description = "Enable Matrix capability",
91-
.dependencies = featureSet(&[_]Feature{.v1_0}),
92+
.dependencies = featureSet(&[_]Feature{
93+
.v1_0,
94+
}),
95+
};
96+
result[@intFromEnum(Feature.physical_storage_buffer)] = .{
97+
.llvm_name = null,
98+
.description = "Enable SPV_KHR_variable_pointers extension and the (VariablePointers, VariablePointersStorageBuffer) capabilities",
99+
.dependencies = featureSet(&[_]Feature{
100+
.v1_0,
101+
}),
102+
};
103+
result[@intFromEnum(Feature.shader)] = .{
104+
.llvm_name = null,
105+
.description = "Enable Shader capability",
106+
.dependencies = featureSet(&[_]Feature{
107+
.matrix,
108+
}),
92109
};
93110
result[@intFromEnum(Feature.storage_push_constant16)] = .{
94111
.llvm_name = null,
95112
.description = "Enable SPV_KHR_16bit_storage extension and the StoragePushConstant16 capability",
96-
.dependencies = featureSet(&[_]Feature{.v1_3}),
113+
.dependencies = featureSet(&[_]Feature{
114+
.v1_3,
115+
}),
97116
};
98-
result[@intFromEnum(Feature.arbitrary_precision_integers)] = .{
117+
result[@intFromEnum(Feature.v1_0)] = .{
99118
.llvm_name = null,
100-
.description = "Enable SPV_INTEL_arbitrary_precision_integers extension and the ArbitraryPrecisionIntegersINTEL capability",
101-
.dependencies = featureSet(&[_]Feature{.v1_5}),
119+
.description = "Enable version 1.0",
120+
.dependencies = featureSet(&[_]Feature{}),
102121
};
103-
result[@intFromEnum(Feature.kernel)] = .{
122+
result[@intFromEnum(Feature.v1_1)] = .{
104123
.llvm_name = null,
105-
.description = "Enable Kernel capability",
106-
.dependencies = featureSet(&[_]Feature{.v1_0}),
124+
.description = "Enable version 1.1",
125+
.dependencies = featureSet(&[_]Feature{
126+
.v1_0,
127+
}),
107128
};
108-
result[@intFromEnum(Feature.addresses)] = .{
129+
result[@intFromEnum(Feature.v1_2)] = .{
109130
.llvm_name = null,
110-
.description = "Enable Addresses capability",
111-
.dependencies = featureSet(&[_]Feature{.v1_0}),
131+
.description = "Enable version 1.2",
132+
.dependencies = featureSet(&[_]Feature{
133+
.v1_1,
134+
}),
112135
};
113-
result[@intFromEnum(Feature.generic_pointer)] = .{
136+
result[@intFromEnum(Feature.v1_3)] = .{
114137
.llvm_name = null,
115-
.description = "Enable GenericPointer capability",
116-
.dependencies = featureSet(&[_]Feature{ .v1_0, .addresses }),
138+
.description = "Enable version 1.3",
139+
.dependencies = featureSet(&[_]Feature{
140+
.v1_2,
141+
}),
117142
};
118-
result[@intFromEnum(Feature.vector16)] = .{
143+
result[@intFromEnum(Feature.v1_4)] = .{
119144
.llvm_name = null,
120-
.description = "Enable Vector16 capability",
121-
.dependencies = featureSet(&[_]Feature{ .v1_0, .kernel }),
145+
.description = "Enable version 1.4",
146+
.dependencies = featureSet(&[_]Feature{
147+
.v1_3,
148+
}),
122149
};
123-
result[@intFromEnum(Feature.shader)] = .{
150+
result[@intFromEnum(Feature.v1_5)] = .{
124151
.llvm_name = null,
125-
.description = "Enable Shader capability",
126-
.dependencies = featureSet(&[_]Feature{ .v1_0, .matrix }),
152+
.description = "Enable version 1.5",
153+
.dependencies = featureSet(&[_]Feature{
154+
.v1_4,
155+
}),
127156
};
128-
result[@intFromEnum(Feature.physical_storage_buffer)] = .{
157+
result[@intFromEnum(Feature.v1_6)] = .{
129158
.llvm_name = null,
130-
.description = "Enable SPV_KHR_physical_storage_buffer extension and the PhysicalStorageBufferAddresses capability",
131-
.dependencies = featureSet(&[_]Feature{.v1_0}),
159+
.description = "Enable version 1.6",
160+
.dependencies = featureSet(&[_]Feature{
161+
.v1_5,
162+
}),
132163
};
133164
result[@intFromEnum(Feature.variable_pointers)] = .{
134165
.llvm_name = null,
135-
.description = "Enable SPV_KHR_variable_pointers extension and the (VariablePointers, VariablePointersStorageBuffer) capabilities",
136-
.dependencies = featureSet(&[_]Feature{.v1_0}),
166+
.description = "Enable SPV_KHR_physical_storage_buffer extension and the PhysicalStorageBufferAddresses capability",
167+
.dependencies = featureSet(&[_]Feature{
168+
.v1_0,
169+
}),
170+
};
171+
result[@intFromEnum(Feature.vector16)] = .{
172+
.llvm_name = null,
173+
.description = "Enable Vector16 capability",
174+
.dependencies = featureSet(&[_]Feature{
175+
.kernel,
176+
}),
137177
};
138178
const ti = @typeInfo(Feature);
139179
for (&result, 0..) |*elem, i| {
@@ -147,18 +187,23 @@ pub const cpu = struct {
147187
pub const generic: CpuModel = .{
148188
.name = "generic",
149189
.llvm_name = "generic",
150-
.features = featureSet(&[_]Feature{.v1_0}),
151-
};
152-
153-
pub const vulkan_v1_2: CpuModel = .{
154-
.name = "vulkan_v1_2",
155-
.llvm_name = null,
156-
.features = featureSet(&[_]Feature{ .v1_5, .shader }),
190+
.features = featureSet(&[_]Feature{}),
157191
};
158-
159192
pub const opencl_v2: CpuModel = .{
160193
.name = "opencl_v2",
161194
.llvm_name = null,
162-
.features = featureSet(&[_]Feature{ .v1_2, .kernel, .addresses, .generic_pointer }),
195+
.features = featureSet(&[_]Feature{
196+
.generic_pointer,
197+
.kernel,
198+
.v1_2,
199+
}),
200+
};
201+
pub const vulkan_v1_2: CpuModel = .{
202+
.name = "vulkan_v1_2",
203+
.llvm_name = null,
204+
.features = featureSet(&[_]Feature{
205+
.shader,
206+
.v1_5,
207+
}),
163208
};
164209
};

0 commit comments

Comments
 (0)