diff options
| author | Robin Voetter <robin@voetter.nl> | 2025-05-25 12:36:53 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-05-25 12:36:53 +0200 |
| commit | dc6ffc28b57a96fd03f62bc665b6ed28b8e9e67b (patch) | |
| tree | beb8163c07c11faa90131a1df1d589016d93b231 /lib/std/Target | |
| parent | 35ba8d95a1afd0bebba3c32cf68990f5129fabfe (diff) | |
| parent | 4bf1e4d198abd2018bf23f9067617800a2bc0554 (diff) | |
| download | zig-dc6ffc28b57a96fd03f62bc665b6ed28b8e9e67b.tar.gz zig-dc6ffc28b57a96fd03f62bc665b6ed28b8e9e67b.zip | |
Merge pull request #23815 from alichraghi/master
spirv: unroll all vector operations
Diffstat (limited to 'lib/std/Target')
| -rw-r--r-- | lib/std/Target/spirv.zig | 203 |
1 files changed, 127 insertions, 76 deletions
diff --git a/lib/std/Target/spirv.zig b/lib/std/Target/spirv.zig index a2575b2fe8..229d77a6d6 100644 --- a/lib/std/Target/spirv.zig +++ b/lib/std/Target/spirv.zig @@ -1,8 +1,21 @@ +//! This file is auto-generated by tools/update_cpu_features.zig. + const std = @import("../std.zig"); const CpuFeature = std.Target.Cpu.Feature; const CpuModel = std.Target.Cpu.Model; pub const Feature = enum { + addresses, + arbitrary_precision_integers, + float16, + float64, + generic_pointer, + int64, + kernel, + matrix, + physical_storage_buffer, + shader, + storage_push_constant16, v1_0, v1_1, v1_2, @@ -10,18 +23,8 @@ pub const Feature = enum { v1_4, v1_5, v1_6, - int64, - float16, - float64, - matrix, - storage_push_constant16, - arbitrary_precision_integers, - kernel, - addresses, - generic_pointer, + variable_pointers, vector16, - shader, - physical_storage_buffer, }; pub const featureSet = CpuFeature.FeatureSetFns(Feature).featureSet; @@ -34,100 +37,143 @@ pub const all_features = blk: { const len = @typeInfo(Feature).@"enum".fields.len; std.debug.assert(len <= CpuFeature.Set.needed_bit_count); var result: [len]CpuFeature = undefined; - result[@intFromEnum(Feature.v1_0)] = .{ - .llvm_name = null, - .description = "Enable version 1.0", - .dependencies = featureSet(&[_]Feature{}), - }; - result[@intFromEnum(Feature.v1_1)] = .{ - .llvm_name = null, - .description = "Enable version 1.1", - .dependencies = featureSet(&[_]Feature{.v1_0}), - }; - result[@intFromEnum(Feature.v1_2)] = .{ + result[@intFromEnum(Feature.addresses)] = .{ .llvm_name = null, - .description = "Enable version 1.2", - .dependencies = featureSet(&[_]Feature{.v1_1}), + .description = "Enable Addresses capability", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), }; - result[@intFromEnum(Feature.v1_3)] = .{ + result[@intFromEnum(Feature.arbitrary_precision_integers)] = .{ .llvm_name = null, - .description = "Enable version 1.3", - .dependencies = featureSet(&[_]Feature{.v1_2}), + .description = "Enable SPV_INTEL_arbitrary_precision_integers extension and the ArbitraryPrecisionIntegersINTEL capability", + .dependencies = featureSet(&[_]Feature{ + .v1_5, + }), }; - result[@intFromEnum(Feature.v1_4)] = .{ + result[@intFromEnum(Feature.float16)] = .{ .llvm_name = null, - .description = "Enable version 1.4", - .dependencies = featureSet(&[_]Feature{.v1_3}), + .description = "Enable Float16 capability", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), }; - result[@intFromEnum(Feature.v1_5)] = .{ + result[@intFromEnum(Feature.float64)] = .{ .llvm_name = null, - .description = "Enable version 1.5", - .dependencies = featureSet(&[_]Feature{.v1_4}), + .description = "Enable Float64 capability", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), }; - result[@intFromEnum(Feature.v1_6)] = .{ + result[@intFromEnum(Feature.generic_pointer)] = .{ .llvm_name = null, - .description = "Enable version 1.6", - .dependencies = featureSet(&[_]Feature{.v1_5}), + .description = "Enable GenericPointer capability", + .dependencies = featureSet(&[_]Feature{ + .addresses, + }), }; result[@intFromEnum(Feature.int64)] = .{ .llvm_name = null, .description = "Enable Int64 capability", - .dependencies = featureSet(&[_]Feature{.v1_0}), - }; - result[@intFromEnum(Feature.float16)] = .{ - .llvm_name = null, - .description = "Enable Float16 capability", - .dependencies = featureSet(&[_]Feature{.v1_0}), + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), }; - result[@intFromEnum(Feature.float64)] = .{ + result[@intFromEnum(Feature.kernel)] = .{ .llvm_name = null, - .description = "Enable Float64 capability", - .dependencies = featureSet(&[_]Feature{.v1_0}), + .description = "Enable Kernel capability", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), }; result[@intFromEnum(Feature.matrix)] = .{ .llvm_name = null, .description = "Enable Matrix capability", - .dependencies = featureSet(&[_]Feature{.v1_0}), + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.physical_storage_buffer)] = .{ + .llvm_name = null, + .description = "Enable SPV_KHR_variable_pointers extension and the (VariablePointers, VariablePointersStorageBuffer) capabilities", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.shader)] = .{ + .llvm_name = null, + .description = "Enable Shader capability", + .dependencies = featureSet(&[_]Feature{ + .matrix, + }), }; result[@intFromEnum(Feature.storage_push_constant16)] = .{ .llvm_name = null, .description = "Enable SPV_KHR_16bit_storage extension and the StoragePushConstant16 capability", - .dependencies = featureSet(&[_]Feature{.v1_3}), + .dependencies = featureSet(&[_]Feature{ + .v1_3, + }), }; - result[@intFromEnum(Feature.arbitrary_precision_integers)] = .{ + result[@intFromEnum(Feature.v1_0)] = .{ .llvm_name = null, - .description = "Enable SPV_INTEL_arbitrary_precision_integers extension and the ArbitraryPrecisionIntegersINTEL capability", - .dependencies = featureSet(&[_]Feature{.v1_5}), + .description = "Enable version 1.0", + .dependencies = featureSet(&[_]Feature{}), }; - result[@intFromEnum(Feature.kernel)] = .{ + result[@intFromEnum(Feature.v1_1)] = .{ .llvm_name = null, - .description = "Enable Kernel capability", - .dependencies = featureSet(&[_]Feature{.v1_0}), + .description = "Enable version 1.1", + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), }; - result[@intFromEnum(Feature.addresses)] = .{ + result[@intFromEnum(Feature.v1_2)] = .{ .llvm_name = null, - .description = "Enable Addresses capability", - .dependencies = featureSet(&[_]Feature{.v1_0}), + .description = "Enable version 1.2", + .dependencies = featureSet(&[_]Feature{ + .v1_1, + }), }; - result[@intFromEnum(Feature.generic_pointer)] = .{ + result[@intFromEnum(Feature.v1_3)] = .{ .llvm_name = null, - .description = "Enable GenericPointer capability", - .dependencies = featureSet(&[_]Feature{ .v1_0, .addresses }), + .description = "Enable version 1.3", + .dependencies = featureSet(&[_]Feature{ + .v1_2, + }), }; - result[@intFromEnum(Feature.vector16)] = .{ + result[@intFromEnum(Feature.v1_4)] = .{ .llvm_name = null, - .description = "Enable Vector16 capability", - .dependencies = featureSet(&[_]Feature{ .v1_0, .kernel }), + .description = "Enable version 1.4", + .dependencies = featureSet(&[_]Feature{ + .v1_3, + }), }; - result[@intFromEnum(Feature.shader)] = .{ + result[@intFromEnum(Feature.v1_5)] = .{ .llvm_name = null, - .description = "Enable Shader capability", - .dependencies = featureSet(&[_]Feature{ .v1_0, .matrix }), + .description = "Enable version 1.5", + .dependencies = featureSet(&[_]Feature{ + .v1_4, + }), }; - result[@intFromEnum(Feature.physical_storage_buffer)] = .{ + result[@intFromEnum(Feature.v1_6)] = .{ + .llvm_name = null, + .description = "Enable version 1.6", + .dependencies = featureSet(&[_]Feature{ + .v1_5, + }), + }; + result[@intFromEnum(Feature.variable_pointers)] = .{ .llvm_name = null, .description = "Enable SPV_KHR_physical_storage_buffer extension and the PhysicalStorageBufferAddresses capability", - .dependencies = featureSet(&[_]Feature{.v1_0}), + .dependencies = featureSet(&[_]Feature{ + .v1_0, + }), + }; + result[@intFromEnum(Feature.vector16)] = .{ + .llvm_name = null, + .description = "Enable Vector16 capability", + .dependencies = featureSet(&[_]Feature{ + .kernel, + }), }; const ti = @typeInfo(Feature); for (&result, 0..) |*elem, i| { @@ -141,18 +187,23 @@ pub const cpu = struct { pub const generic: CpuModel = .{ .name = "generic", .llvm_name = "generic", - .features = featureSet(&[_]Feature{.v1_0}), + .features = featureSet(&[_]Feature{}), }; - - pub const vulkan_v1_2: CpuModel = .{ - .name = "vulkan_v1_2", - .llvm_name = null, - .features = featureSet(&[_]Feature{ .v1_5, .shader, .physical_storage_buffer }), - }; - pub const opencl_v2: CpuModel = .{ .name = "opencl_v2", .llvm_name = null, - .features = featureSet(&[_]Feature{ .v1_2, .kernel, .addresses, .generic_pointer }), + .features = featureSet(&[_]Feature{ + .generic_pointer, + .kernel, + .v1_2, + }), + }; + pub const vulkan_v1_2: CpuModel = .{ + .name = "vulkan_v1_2", + .llvm_name = null, + .features = featureSet(&[_]Feature{ + .shader, + .v1_5, + }), }; }; |
