authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-07-14 23:49:34-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-07-14 23:49:34-07:00
logac8f757cb371f25472db7c9674b3e2958d86f9ec
tree42ed3b5afc2cda5d7d117f522e24535bb80c6ab6
parentaa81c2df7c35be629e3dd4e8ea02b42b1cb027ac
parent4f5fa959aa80ce39828b8bf45098029ce818fda2

Merge remote-tracking branch 'origin/master' into wrangle-writer-buffering


125 files changed, 15812 insertions(+), 12357 deletions(-)

.github/workflows/ci.yaml+18
......@@ -50,6 +50,24 @@ jobs:
5050 uses: actions/checkout@v4
5151 - name: Build and Test
5252 run: sh ci/aarch64-linux-release.sh
53 riscv64-linux-debug:
54 if: ${{ github.event_name == 'push' }}
55 timeout-minutes: 1020
56 runs-on: [self-hosted, Linux, riscv64]
57 steps:
58 - name: Checkout
59 uses: actions/checkout@v4
60 - name: Build and Test
61 run: sh ci/riscv64-linux-debug.sh
62 riscv64-linux-release:
63 if: ${{ github.event_name == 'push' }}
64 timeout-minutes: 900
65 runs-on: [self-hosted, Linux, riscv64]
66 steps:
67 - name: Checkout
68 uses: actions/checkout@v4
69 - name: Build and Test
70 run: sh ci/riscv64-linux-release.sh
5371 x86_64-macos-release:
5472 runs-on: "macos-13"
5573 env:
ci/riscv64-linux-debug.sh created+58
......@@ -0,0 +1,58 @@
1#!/bin/sh
2
3# Requires cmake ninja-build
4
5set -x
6set -e
7
8ARCH="$(uname -m)"
9TARGET="$ARCH-linux-musl"
10MCPU="spacemit_x60"
11CACHE_BASENAME="zig+llvm+lld+clang-riscv64-linux-musl-0.15.0-dev.929+31e46be74"
12PREFIX="$HOME/deps/$CACHE_BASENAME"
13ZIG="$PREFIX/bin/zig"
14
15export PATH="$HOME/local/bin:$PATH"
16
17# Make the `zig version` number consistent.
18# This will affect the cmake command below.
19git fetch --unshallow || true
20git fetch --tags
21
22# Override the cache directories because they won't actually help other CI runs
23# which will be testing alternate versions of zig, and ultimately would just
24# fill up space on the hard drive for no reason.
25export ZIG_GLOBAL_CACHE_DIR="$PWD/zig-global-cache"
26export ZIG_LOCAL_CACHE_DIR="$PWD/zig-local-cache"
27
28mkdir build-debug
29cd build-debug
30
31export CC="$ZIG cc -target $TARGET -mcpu=$MCPU"
32export CXX="$ZIG c++ -target $TARGET -mcpu=$MCPU"
33
34cmake .. \
35 -DCMAKE_INSTALL_PREFIX="stage3-debug" \
36 -DCMAKE_PREFIX_PATH="$PREFIX" \
37 -DCMAKE_BUILD_TYPE=Debug \
38 -DZIG_TARGET_TRIPLE="$TARGET" \
39 -DZIG_TARGET_MCPU="$MCPU" \
40 -DZIG_STATIC=ON \
41 -DZIG_NO_LIB=ON \
42 -GNinja
43
44# Now cmake will use zig as the C/C++ compiler. We reset the environment variables
45# so that installation and testing do not get affected by them.
46unset CC
47unset CXX
48
49ninja install
50
51# No -fqemu and -fwasmtime here as they're covered by the x86_64-linux scripts.
52stage3-debug/bin/zig build test-cases test-modules test-unit test-standalone test-c-abi test-link test-stack-traces test-asm-link test-llvm-ir docs \
53 --maxrss 34359738368 \
54 -Dstatic-llvm \
55 -Dskip-non-native \
56 -Dtarget=native-native-musl \
57 --search-prefix "$PREFIX" \
58 --zig-lib-dir "$PWD/../lib"
ci/riscv64-linux-release.sh created+58
......@@ -0,0 +1,58 @@
1#!/bin/sh
2
3# Requires cmake ninja-build
4
5set -x
6set -e
7
8ARCH="$(uname -m)"
9TARGET="$ARCH-linux-musl"
10MCPU="spacemit_x60"
11CACHE_BASENAME="zig+llvm+lld+clang-riscv64-linux-musl-0.15.0-dev.929+31e46be74"
12PREFIX="$HOME/deps/$CACHE_BASENAME"
13ZIG="$PREFIX/bin/zig"
14
15export PATH="$HOME/local/bin:$PATH"
16
17# Make the `zig version` number consistent.
18# This will affect the cmake command below.
19git fetch --unshallow || true
20git fetch --tags
21
22# Override the cache directories because they won't actually help other CI runs
23# which will be testing alternate versions of zig, and ultimately would just
24# fill up space on the hard drive for no reason.
25export ZIG_GLOBAL_CACHE_DIR="$PWD/zig-global-cache"
26export ZIG_LOCAL_CACHE_DIR="$PWD/zig-local-cache"
27
28mkdir build-release
29cd build-release
30
31export CC="$ZIG cc -target $TARGET -mcpu=$MCPU"
32export CXX="$ZIG c++ -target $TARGET -mcpu=$MCPU"
33
34cmake .. \
35 -DCMAKE_INSTALL_PREFIX="stage3-release" \
36 -DCMAKE_PREFIX_PATH="$PREFIX" \
37 -DCMAKE_BUILD_TYPE=Release \
38 -DZIG_TARGET_TRIPLE="$TARGET" \
39 -DZIG_TARGET_MCPU="$MCPU" \
40 -DZIG_STATIC=ON \
41 -DZIG_NO_LIB=ON \
42 -GNinja
43
44# Now cmake will use zig as the C/C++ compiler. We reset the environment variables
45# so that installation and testing do not get affected by them.
46unset CC
47unset CXX
48
49ninja install
50
51# No -fqemu and -fwasmtime here as they're covered by the x86_64-linux scripts.
52stage3-release/bin/zig build test-cases test-modules test-unit test-standalone test-c-abi test-link test-stack-traces test-asm-link test-llvm-ir docs \
53 --maxrss 34359738368 \
54 -Dstatic-llvm \
55 -Dskip-non-native \
56 -Dtarget=native-native-musl \
57 --search-prefix "$PREFIX" \
58 --zig-lib-dir "$PWD/../lib"
doc/langref/build_c.zig+2-1
......@@ -1,7 +1,8 @@
11const std = @import("std");
22
33pub fn build(b: *std.Build) void {
4 const lib = b.addSharedLibrary(.{
4 const lib = b.addLibrary(.{
5 .linkage = .dynamic,
56 .name = "mathtest",
67 .root_source_file = b.path("mathtest.zig"),
78 .version = .{ .major = 1, .minor = 0, .patch = 0 },
doc/langref/test_noreturn_from_exit.zig+1-1
......@@ -3,7 +3,7 @@ const builtin = @import("builtin");
33const native_arch = builtin.cpu.arch;
44const expect = std.testing.expect;
55
6const WINAPI: std.builtin.CallingConvention = if (native_arch == .x86) .Stdcall else .C;
6const WINAPI: std.builtin.CallingConvention = if (native_arch == .x86) .{ .x86_stdcall = .{} } else .c;
77extern "kernel32" fn ExitProcess(exit_code: c_uint) callconv(WINAPI) noreturn;
88
99test "foo" {
lib/compiler/aro/aro/Parser.zig+1-1
......@@ -8259,7 +8259,7 @@ fn charLiteral(p: *Parser) Error!Result {
82598259 const slice = char_kind.contentSlice(p.tokSlice(p.tok_i));
82608260
82618261 var is_multichar = false;
8262 if (slice.len == 1 and std.ascii.isASCII(slice[0])) {
8262 if (slice.len == 1 and std.ascii.isAscii(slice[0])) {
82638263 // fast path: single unescaped ASCII char
82648264 val = slice[0];
82658265 } else {
lib/compiler/aro_translate_c.zig+1-1
......@@ -1820,7 +1820,7 @@ pub fn main() !void {
18201820 var tree = translate(gpa, &aro_comp, args) catch |err| switch (err) {
18211821 error.ParsingFailed, error.FatalError => renderErrorsAndExit(&aro_comp),
18221822 error.OutOfMemory => return error.OutOfMemory,
1823 error.StreamTooLong => std.zig.fatal("An input file was larger than 4GiB", .{}),
1823 error.StreamTooLong => std.process.fatal("An input file was larger than 4GiB", .{}),
18241824 };
18251825 defer tree.deinit(gpa);
18261826
lib/compiler/objcopy.zig+1-1
......@@ -7,7 +7,7 @@ const Allocator = std.mem.Allocator;
77const File = std.fs.File;
88const assert = std.debug.assert;
99
10const fatal = std.zig.fatal;
10const fatal = std.process.fatal;
1111const Server = std.zig.Server;
1212
1313pub fn main() !void {
lib/std/Build.zig+7-314
......@@ -693,6 +693,7 @@ pub fn addOptions(b: *Build) *Step.Options {
693693
694694pub const ExecutableOptions = struct {
695695 name: []const u8,
696 root_module: *Module,
696697 version: ?std.SemanticVersion = null,
697698 linkage: ?std.builtin.LinkMode = null,
698699 max_rss: usize = 0,
......@@ -705,58 +706,12 @@ pub const ExecutableOptions = struct {
705706 /// Can be set regardless of target. The `.manifest` file will be ignored
706707 /// if the target object format does not support embedded manifests.
707708 win32_manifest: ?LazyPath = null,
708
709 /// Prefer populating this field (using e.g. `createModule`) instead of populating
710 /// the following fields (`root_source_file` etc). In a future release, those fields
711 /// will be removed, and this field will become non-optional.
712 root_module: ?*Module = null,
713
714 /// Deprecated; prefer populating `root_module`.
715 root_source_file: ?LazyPath = null,
716 /// Deprecated; prefer populating `root_module`.
717 target: ?ResolvedTarget = null,
718 /// Deprecated; prefer populating `root_module`.
719 optimize: std.builtin.OptimizeMode = .Debug,
720 /// Deprecated; prefer populating `root_module`.
721 code_model: std.builtin.CodeModel = .default,
722 /// Deprecated; prefer populating `root_module`.
723 link_libc: ?bool = null,
724 /// Deprecated; prefer populating `root_module`.
725 single_threaded: ?bool = null,
726 /// Deprecated; prefer populating `root_module`.
727 pic: ?bool = null,
728 /// Deprecated; prefer populating `root_module`.
729 strip: ?bool = null,
730 /// Deprecated; prefer populating `root_module`.
731 unwind_tables: ?std.builtin.UnwindTables = null,
732 /// Deprecated; prefer populating `root_module`.
733 omit_frame_pointer: ?bool = null,
734 /// Deprecated; prefer populating `root_module`.
735 sanitize_thread: ?bool = null,
736 /// Deprecated; prefer populating `root_module`.
737 error_tracing: ?bool = null,
738709};
739710
740711pub fn addExecutable(b: *Build, options: ExecutableOptions) *Step.Compile {
741 if (options.root_module != null and options.target != null) {
742 @panic("`root_module` and `target` cannot both be populated");
743 }
744712 return .create(b, .{
745713 .name = options.name,
746 .root_module = options.root_module orelse b.createModule(.{
747 .root_source_file = options.root_source_file,
748 .target = options.target orelse @panic("`root_module` and `target` cannot both be null"),
749 .optimize = options.optimize,
750 .link_libc = options.link_libc,
751 .single_threaded = options.single_threaded,
752 .pic = options.pic,
753 .strip = options.strip,
754 .unwind_tables = options.unwind_tables,
755 .omit_frame_pointer = options.omit_frame_pointer,
756 .sanitize_thread = options.sanitize_thread,
757 .error_tracing = options.error_tracing,
758 .code_model = options.code_model,
759 }),
714 .root_module = options.root_module,
760715 .version = options.version,
761716 .kind = .exe,
762717 .linkage = options.linkage,
......@@ -770,62 +725,17 @@ pub fn addExecutable(b: *Build, options: ExecutableOptions) *Step.Compile {
770725
771726pub const ObjectOptions = struct {
772727 name: []const u8,
728 root_module: *Module,
773729 max_rss: usize = 0,
774730 use_llvm: ?bool = null,
775731 use_lld: ?bool = null,
776732 zig_lib_dir: ?LazyPath = null,
777
778 /// Prefer populating this field (using e.g. `createModule`) instead of populating
779 /// the following fields (`root_source_file` etc). In a future release, those fields
780 /// will be removed, and this field will become non-optional.
781 root_module: ?*Module = null,
782
783 /// Deprecated; prefer populating `root_module`.
784 root_source_file: ?LazyPath = null,
785 /// Deprecated; prefer populating `root_module`.
786 target: ?ResolvedTarget = null,
787 /// Deprecated; prefer populating `root_module`.
788 optimize: std.builtin.OptimizeMode = .Debug,
789 /// Deprecated; prefer populating `root_module`.
790 code_model: std.builtin.CodeModel = .default,
791 /// Deprecated; prefer populating `root_module`.
792 link_libc: ?bool = null,
793 /// Deprecated; prefer populating `root_module`.
794 single_threaded: ?bool = null,
795 /// Deprecated; prefer populating `root_module`.
796 pic: ?bool = null,
797 /// Deprecated; prefer populating `root_module`.
798 strip: ?bool = null,
799 /// Deprecated; prefer populating `root_module`.
800 unwind_tables: ?std.builtin.UnwindTables = null,
801 /// Deprecated; prefer populating `root_module`.
802 omit_frame_pointer: ?bool = null,
803 /// Deprecated; prefer populating `root_module`.
804 sanitize_thread: ?bool = null,
805 /// Deprecated; prefer populating `root_module`.
806 error_tracing: ?bool = null,
807733};
808734
809735pub fn addObject(b: *Build, options: ObjectOptions) *Step.Compile {
810 if (options.root_module != null and options.target != null) {
811 @panic("`root_module` and `target` cannot both be populated");
812 }
813736 return .create(b, .{
814737 .name = options.name,
815 .root_module = options.root_module orelse b.createModule(.{
816 .root_source_file = options.root_source_file,
817 .target = options.target orelse @panic("`root_module` and `target` cannot both be null"),
818 .optimize = options.optimize,
819 .link_libc = options.link_libc,
820 .single_threaded = options.single_threaded,
821 .pic = options.pic,
822 .strip = options.strip,
823 .unwind_tables = options.unwind_tables,
824 .omit_frame_pointer = options.omit_frame_pointer,
825 .sanitize_thread = options.sanitize_thread,
826 .error_tracing = options.error_tracing,
827 .code_model = options.code_model,
828 }),
738 .root_module = options.root_module,
829739 .kind = .obj,
830740 .max_rss = options.max_rss,
831741 .use_llvm = options.use_llvm,
......@@ -834,153 +744,6 @@ pub fn addObject(b: *Build, options: ObjectOptions) *Step.Compile {
834744 });
835745}
836746
837pub const SharedLibraryOptions = struct {
838 name: []const u8,
839 version: ?std.SemanticVersion = null,
840 max_rss: usize = 0,
841 use_llvm: ?bool = null,
842 use_lld: ?bool = null,
843 zig_lib_dir: ?LazyPath = null,
844 /// Embed a `.manifest` file in the compilation if the object format supports it.
845 /// https://learn.microsoft.com/en-us/windows/win32/sbscs/manifest-files-reference
846 /// Manifest files must have the extension `.manifest`.
847 /// Can be set regardless of target. The `.manifest` file will be ignored
848 /// if the target object format does not support embedded manifests.
849 win32_manifest: ?LazyPath = null,
850
851 /// Prefer populating this field (using e.g. `createModule`) instead of populating
852 /// the following fields (`root_source_file` etc). In a future release, those fields
853 /// will be removed, and this field will become non-optional.
854 root_module: ?*Module = null,
855
856 /// Deprecated; prefer populating `root_module`.
857 root_source_file: ?LazyPath = null,
858 /// Deprecated; prefer populating `root_module`.
859 target: ?ResolvedTarget = null,
860 /// Deprecated; prefer populating `root_module`.
861 optimize: std.builtin.OptimizeMode = .Debug,
862 /// Deprecated; prefer populating `root_module`.
863 code_model: std.builtin.CodeModel = .default,
864 /// Deprecated; prefer populating `root_module`.
865 link_libc: ?bool = null,
866 /// Deprecated; prefer populating `root_module`.
867 single_threaded: ?bool = null,
868 /// Deprecated; prefer populating `root_module`.
869 pic: ?bool = null,
870 /// Deprecated; prefer populating `root_module`.
871 strip: ?bool = null,
872 /// Deprecated; prefer populating `root_module`.
873 unwind_tables: ?std.builtin.UnwindTables = null,
874 /// Deprecated; prefer populating `root_module`.
875 omit_frame_pointer: ?bool = null,
876 /// Deprecated; prefer populating `root_module`.
877 sanitize_thread: ?bool = null,
878 /// Deprecated; prefer populating `root_module`.
879 error_tracing: ?bool = null,
880};
881
882/// Deprecated: use `b.addLibrary(.{ ..., .linkage = .dynamic })` instead.
883pub fn addSharedLibrary(b: *Build, options: SharedLibraryOptions) *Step.Compile {
884 if (options.root_module != null and options.target != null) {
885 @panic("`root_module` and `target` cannot both be populated");
886 }
887 return .create(b, .{
888 .name = options.name,
889 .root_module = options.root_module orelse b.createModule(.{
890 .target = options.target orelse @panic("`root_module` and `target` cannot both be null"),
891 .optimize = options.optimize,
892 .root_source_file = options.root_source_file,
893 .link_libc = options.link_libc,
894 .single_threaded = options.single_threaded,
895 .pic = options.pic,
896 .strip = options.strip,
897 .unwind_tables = options.unwind_tables,
898 .omit_frame_pointer = options.omit_frame_pointer,
899 .sanitize_thread = options.sanitize_thread,
900 .error_tracing = options.error_tracing,
901 .code_model = options.code_model,
902 }),
903 .kind = .lib,
904 .linkage = .dynamic,
905 .version = options.version,
906 .max_rss = options.max_rss,
907 .use_llvm = options.use_llvm,
908 .use_lld = options.use_lld,
909 .zig_lib_dir = options.zig_lib_dir,
910 .win32_manifest = options.win32_manifest,
911 });
912}
913
914pub const StaticLibraryOptions = struct {
915 name: []const u8,
916 version: ?std.SemanticVersion = null,
917 max_rss: usize = 0,
918 use_llvm: ?bool = null,
919 use_lld: ?bool = null,
920 zig_lib_dir: ?LazyPath = null,
921
922 /// Prefer populating this field (using e.g. `createModule`) instead of populating
923 /// the following fields (`root_source_file` etc). In a future release, those fields
924 /// will be removed, and this field will become non-optional.
925 root_module: ?*Module = null,
926
927 /// Deprecated; prefer populating `root_module`.
928 root_source_file: ?LazyPath = null,
929 /// Deprecated; prefer populating `root_module`.
930 target: ?ResolvedTarget = null,
931 /// Deprecated; prefer populating `root_module`.
932 optimize: std.builtin.OptimizeMode = .Debug,
933 /// Deprecated; prefer populating `root_module`.
934 code_model: std.builtin.CodeModel = .default,
935 /// Deprecated; prefer populating `root_module`.
936 link_libc: ?bool = null,
937 /// Deprecated; prefer populating `root_module`.
938 single_threaded: ?bool = null,
939 /// Deprecated; prefer populating `root_module`.
940 pic: ?bool = null,
941 /// Deprecated; prefer populating `root_module`.
942 strip: ?bool = null,
943 /// Deprecated; prefer populating `root_module`.
944 unwind_tables: ?std.builtin.UnwindTables = null,
945 /// Deprecated; prefer populating `root_module`.
946 omit_frame_pointer: ?bool = null,
947 /// Deprecated; prefer populating `root_module`.
948 sanitize_thread: ?bool = null,
949 /// Deprecated; prefer populating `root_module`.
950 error_tracing: ?bool = null,
951};
952
953/// Deprecated: use `b.addLibrary(.{ ..., .linkage = .static })` instead.
954pub fn addStaticLibrary(b: *Build, options: StaticLibraryOptions) *Step.Compile {
955 if (options.root_module != null and options.target != null) {
956 @panic("`root_module` and `target` cannot both be populated");
957 }
958 return .create(b, .{
959 .name = options.name,
960 .root_module = options.root_module orelse b.createModule(.{
961 .target = options.target orelse @panic("`root_module` and `target` cannot both be null"),
962 .optimize = options.optimize,
963 .root_source_file = options.root_source_file,
964 .link_libc = options.link_libc,
965 .single_threaded = options.single_threaded,
966 .pic = options.pic,
967 .strip = options.strip,
968 .unwind_tables = options.unwind_tables,
969 .omit_frame_pointer = options.omit_frame_pointer,
970 .sanitize_thread = options.sanitize_thread,
971 .error_tracing = options.error_tracing,
972 .code_model = options.code_model,
973 }),
974 .kind = .lib,
975 .linkage = .static,
976 .version = options.version,
977 .max_rss = options.max_rss,
978 .use_llvm = options.use_llvm,
979 .use_lld = options.use_lld,
980 .zig_lib_dir = options.zig_lib_dir,
981 });
982}
983
984747pub const LibraryOptions = struct {
985748 linkage: std.builtin.LinkMode = .static,
986749 name: []const u8,
......@@ -1015,9 +778,8 @@ pub fn addLibrary(b: *Build, options: LibraryOptions) *Step.Compile {
1015778
1016779pub const TestOptions = struct {
1017780 name: []const u8 = "test",
781 root_module: *Module,
1018782 max_rss: usize = 0,
1019 /// Deprecated; use `.filters = &.{filter}` instead of `.filter = filter`.
1020 filter: ?[]const u8 = null,
1021783 filters: []const []const u8 = &.{},
1022784 test_runner: ?Step.Compile.TestRunner = null,
1023785 use_llvm: ?bool = null,
......@@ -1027,38 +789,6 @@ pub const TestOptions = struct {
1027789 /// The object must be linked separately.
1028790 /// Usually used in conjunction with a custom `test_runner`.
1029791 emit_object: bool = false,
1030
1031 /// Prefer populating this field (using e.g. `createModule`) instead of populating
1032 /// the following fields (`root_source_file` etc). In a future release, those fields
1033 /// will be removed, and this field will become non-optional.
1034 root_module: ?*Module = null,
1035
1036 /// Deprecated; prefer populating `root_module`.
1037 root_source_file: ?LazyPath = null,
1038 /// Deprecated; prefer populating `root_module`.
1039 target: ?ResolvedTarget = null,
1040 /// Deprecated; prefer populating `root_module`.
1041 optimize: std.builtin.OptimizeMode = .Debug,
1042 /// Deprecated; prefer populating `root_module`.
1043 version: ?std.SemanticVersion = null,
1044 /// Deprecated; prefer populating `root_module`.
1045 link_libc: ?bool = null,
1046 /// Deprecated; prefer populating `root_module`.
1047 link_libcpp: ?bool = null,
1048 /// Deprecated; prefer populating `root_module`.
1049 single_threaded: ?bool = null,
1050 /// Deprecated; prefer populating `root_module`.
1051 pic: ?bool = null,
1052 /// Deprecated; prefer populating `root_module`.
1053 strip: ?bool = null,
1054 /// Deprecated; prefer populating `root_module`.
1055 unwind_tables: ?std.builtin.UnwindTables = null,
1056 /// Deprecated; prefer populating `root_module`.
1057 omit_frame_pointer: ?bool = null,
1058 /// Deprecated; prefer populating `root_module`.
1059 sanitize_thread: ?bool = null,
1060 /// Deprecated; prefer populating `root_module`.
1061 error_tracing: ?bool = null,
1062792};
1063793
1064794/// Creates an executable containing unit tests.
......@@ -1070,33 +800,12 @@ pub const TestOptions = struct {
1070800/// two steps are separated because they are independently configured and
1071801/// cached.
1072802pub fn addTest(b: *Build, options: TestOptions) *Step.Compile {
1073 if (options.root_module != null and options.root_source_file != null) {
1074 @panic("`root_module` and `root_source_file` cannot both be populated");
1075 }
1076803 return .create(b, .{
1077804 .name = options.name,
1078805 .kind = if (options.emit_object) .test_obj else .@"test",
1079 .root_module = options.root_module orelse b.createModule(.{
1080 .root_source_file = options.root_source_file orelse @panic("`root_module` and `root_source_file` cannot both be null"),
1081 .target = options.target orelse b.graph.host,
1082 .optimize = options.optimize,
1083 .link_libc = options.link_libc,
1084 .link_libcpp = options.link_libcpp,
1085 .single_threaded = options.single_threaded,
1086 .pic = options.pic,
1087 .strip = options.strip,
1088 .unwind_tables = options.unwind_tables,
1089 .omit_frame_pointer = options.omit_frame_pointer,
1090 .sanitize_thread = options.sanitize_thread,
1091 .error_tracing = options.error_tracing,
1092 }),
806 .root_module = options.root_module,
1093807 .max_rss = options.max_rss,
1094 .filters = if (options.filter != null and options.filters.len > 0) filters: {
1095 const filters = b.allocator.alloc([]const u8, 1 + options.filters.len) catch @panic("OOM");
1096 filters[0] = b.dupe(options.filter.?);
1097 for (filters[1..], options.filters) |*dest, source| dest.* = b.dupe(source);
1098 break :filters filters;
1099 } else b.dupeStrings(if (options.filter) |filter| &.{filter} else options.filters),
808 .filters = b.dupeStrings(options.filters),
1100809 .test_runner = options.test_runner,
1101810 .use_llvm = options.use_llvm,
1102811 .use_lld = options.use_lld,
......@@ -1115,22 +824,6 @@ pub const AssemblyOptions = struct {
1115824 zig_lib_dir: ?LazyPath = null,
1116825};
1117826
1118/// Deprecated; prefer using `addObject` where the `root_module` has an empty
1119/// `root_source_file` and contains an assembly file via `Module.addAssemblyFile`.
1120pub fn addAssembly(b: *Build, options: AssemblyOptions) *Step.Compile {
1121 const root_module = b.createModule(.{
1122 .target = options.target,
1123 .optimize = options.optimize,
1124 });
1125 root_module.addAssemblyFile(options.source_file);
1126 return b.addObject(.{
1127 .name = options.name,
1128 .max_rss = options.max_rss,
1129 .zig_lib_dir = options.zig_lib_dir,
1130 .root_module = root_module,
1131 });
1132}
1133
1134827/// This function creates a module and adds it to the package's module set, making
1135828/// it available to other packages which depend on this one.
1136829/// `createModule` can be used instead to create a private module.
lib/std/Build/Cache.zig+6-5
......@@ -661,7 +661,8 @@ pub const Manifest = struct {
661661 } {
662662 const gpa = self.cache.gpa;
663663 const input_file_count = self.files.entries.len;
664 var manifest_reader = self.manifest_file.?.reader(&.{}); // Reads positionally from zero.
664 var tiny_buffer: [1]u8 = undefined; // allows allocRemaining to detect limit exceeded
665 var manifest_reader = self.manifest_file.?.reader(&tiny_buffer); // Reads positionally from zero.
665666 const limit: std.io.Limit = .limited(manifest_file_size_max);
666667 const file_contents = manifest_reader.interface.allocRemaining(gpa, limit) catch |err| switch (err) {
667668 error.OutOfMemory => return error.OutOfMemory,
......@@ -1326,7 +1327,7 @@ test "cache file and then recall it" {
13261327 // Wait for file timestamps to tick
13271328 const initial_time = try testGetCurrentFileTimestamp(tmp.dir);
13281329 while ((try testGetCurrentFileTimestamp(tmp.dir)) == initial_time) {
1329 std.time.sleep(1);
1330 std.Thread.sleep(1);
13301331 }
13311332
13321333 var digest1: HexDigest = undefined;
......@@ -1389,7 +1390,7 @@ test "check that changing a file makes cache fail" {
13891390 // Wait for file timestamps to tick
13901391 const initial_time = try testGetCurrentFileTimestamp(tmp.dir);
13911392 while ((try testGetCurrentFileTimestamp(tmp.dir)) == initial_time) {
1392 std.time.sleep(1);
1393 std.Thread.sleep(1);
13931394 }
13941395
13951396 var digest1: HexDigest = undefined;
......@@ -1501,7 +1502,7 @@ test "Manifest with files added after initial hash work" {
15011502 // Wait for file timestamps to tick
15021503 const initial_time = try testGetCurrentFileTimestamp(tmp.dir);
15031504 while ((try testGetCurrentFileTimestamp(tmp.dir)) == initial_time) {
1504 std.time.sleep(1);
1505 std.Thread.sleep(1);
15051506 }
15061507
15071508 var digest1: HexDigest = undefined;
......@@ -1551,7 +1552,7 @@ test "Manifest with files added after initial hash work" {
15511552 // Wait for file timestamps to tick
15521553 const initial_time2 = try testGetCurrentFileTimestamp(tmp.dir);
15531554 while ((try testGetCurrentFileTimestamp(tmp.dir)) == initial_time2) {
1554 std.time.sleep(1);
1555 std.Thread.sleep(1);
15551556 }
15561557
15571558 {
lib/std/Build/Step/ConfigHeader.zig+3-6
......@@ -8,9 +8,6 @@ pub const Style = union(enum) {
88 /// A configure format supported by autotools that uses `#undef foo` to
99 /// mark lines that can be substituted with different values.
1010 autoconf_undef: std.Build.LazyPath,
11 /// Deprecated. Renamed to `autoconf_undef`.
12 /// To be removed after 0.14.0 is tagged.
13 autoconf: std.Build.LazyPath,
1411 /// A configure format supported by autotools that uses `@FOO@` output variables.
1512 autoconf_at: std.Build.LazyPath,
1613 /// The configure format supported by CMake. It uses `@FOO@`, `${}` and
......@@ -23,7 +20,7 @@ pub const Style = union(enum) {
2320
2421 pub fn getPath(style: Style) ?std.Build.LazyPath {
2522 switch (style) {
26 .autoconf_undef, .autoconf, .autoconf_at, .cmake => |s| return s,
23 .autoconf_undef, .autoconf_at, .cmake => |s| return s,
2724 .blank, .nasm => return null,
2825 }
2926 }
......@@ -205,7 +202,7 @@ fn make(step: *Step, options: Step.MakeOptions) !void {
205202 const asm_generated_line = "; " ++ header_text ++ "\n";
206203
207204 switch (config_header.style) {
208 .autoconf_undef, .autoconf, .autoconf_at => |file_source| {
205 .autoconf_undef, .autoconf_at => |file_source| {
209206 try bw.writeAll(c_generated_line);
210207 const src_path = file_source.getPath2(b, step);
211208 const contents = std.fs.cwd().readFileAlloc(src_path, arena, .limited(config_header.max_bytes)) catch |err| {
......@@ -214,7 +211,7 @@ fn make(step: *Step, options: Step.MakeOptions) !void {
214211 });
215212 };
216213 switch (config_header.style) {
217 .autoconf_undef, .autoconf => try render_autoconf_undef(step, contents, bw, config_header.values, src_path),
214 .autoconf_undef => try render_autoconf_undef(step, contents, bw, config_header.values, src_path),
218215 .autoconf_at => try render_autoconf_at(step, contents, &aw, config_header.values, src_path),
219216 else => unreachable,
220217 }
lib/std/Build/Step/Run.zig+15-3
......@@ -1083,7 +1083,9 @@ fn runCommand(
10831083 var interp_argv = std.ArrayList([]const u8).init(b.allocator);
10841084 defer interp_argv.deinit();
10851085
1086 const result = spawnChildAndCollect(run, argv, has_side_effects, prog_node, fuzz_context) catch |err| term: {
1086 var env_map = run.env_map orelse &b.graph.env_map;
1087
1088 const result = spawnChildAndCollect(run, argv, env_map, has_side_effects, prog_node, fuzz_context) catch |err| term: {
10871089 // InvalidExe: cpu arch mismatch
10881090 // FileNotFound: can happen with a wrong dynamic linker path
10891091 if (err == error.InvalidExe or err == error.FileNotFound) interpret: {
......@@ -1116,6 +1118,15 @@ fn runCommand(
11161118 if (b.enable_wine) {
11171119 try interp_argv.append(bin_name);
11181120 try interp_argv.appendSlice(argv);
1121
1122 // Wine's excessive stderr logging is only situationally helpful. Disable it by default, but
1123 // allow the user to override it (e.g. with `WINEDEBUG=err+all`) if desired.
1124 if (env_map.get("WINEDEBUG") == null) {
1125 // We don't own `env_map` at this point, so turn it into a copy before modifying it.
1126 env_map = arena.create(EnvMap) catch @panic("OOM");
1127 env_map.hash_map = try env_map.hash_map.cloneWithAllocator(arena);
1128 try env_map.put("WINEDEBUG", "-all");
1129 }
11191130 } else {
11201131 return failForeign(run, "-fwine", argv[0], exe);
11211132 }
......@@ -1211,7 +1222,7 @@ fn runCommand(
12111222
12121223 try Step.handleVerbose2(step.owner, cwd, run.env_map, interp_argv.items);
12131224
1214 break :term spawnChildAndCollect(run, interp_argv.items, has_side_effects, prog_node, fuzz_context) catch |e| {
1225 break :term spawnChildAndCollect(run, interp_argv.items, env_map, has_side_effects, prog_node, fuzz_context) catch |e| {
12151226 if (!run.failing_to_execute_foreign_is_an_error) return error.MakeSkipped;
12161227
12171228 return step.fail("unable to spawn interpreter {s}: {s}", .{
......@@ -1394,6 +1405,7 @@ const ChildProcResult = struct {
13941405fn spawnChildAndCollect(
13951406 run: *Run,
13961407 argv: []const []const u8,
1408 env_map: *EnvMap,
13971409 has_side_effects: bool,
13981410 prog_node: std.Progress.Node,
13991411 fuzz_context: ?FuzzContext,
......@@ -1410,7 +1422,7 @@ fn spawnChildAndCollect(
14101422 if (run.cwd) |lazy_cwd| {
14111423 child.cwd = lazy_cwd.getPath2(b, &run.step);
14121424 }
1413 child.env_map = run.env_map orelse &b.graph.env_map;
1425 child.env_map = env_map;
14141426 child.request_resource_usage_statistics = true;
14151427
14161428 child.stdin_behavior = switch (run.stdio) {
lib/std/Build/Step/TranslateC.zig-13
......@@ -63,19 +63,6 @@ pub fn getOutput(translate_c: *TranslateC) std.Build.LazyPath {
6363 return .{ .generated = .{ .file = &translate_c.output_file } };
6464}
6565
66/// Deprecated: use `createModule` or `addModule` with `std.Build.addExecutable` instead.
67/// Creates a step to build an executable from the translated source.
68pub fn addExecutable(translate_c: *TranslateC, options: AddExecutableOptions) *Step.Compile {
69 return translate_c.step.owner.addExecutable(.{
70 .root_source_file = translate_c.getOutput(),
71 .name = options.name orelse "translated_c",
72 .version = options.version,
73 .target = options.target orelse translate_c.target,
74 .optimize = options.optimize orelse translate_c.optimize,
75 .linkage = options.linkage,
76 });
77}
78
7966/// Creates a module from the translated source and adds it to the package's
8067/// module set making it available to other packages which depend on this one.
8168/// `createModule` can be used instead to create a private module.
lib/std/Build/Watch.zig+1-1
......@@ -4,7 +4,7 @@ const Watch = @This();
44const Step = std.Build.Step;
55const Allocator = std.mem.Allocator;
66const assert = std.debug.assert;
7const fatal = std.zig.fatal;
7const fatal = std.process.fatal;
88
99dir_table: DirTable,
1010os: Os,
lib/std/Io.zig+1
......@@ -494,6 +494,7 @@ pub fn PollFiles(comptime StreamEnum: type) type {
494494
495495test {
496496 _ = Reader;
497 _ = Reader.Limited;
497498 _ = Writer;
498499 _ = @import("Io/test.zig");
499500}
lib/std/Io/Reader.zig+20-4
......@@ -99,7 +99,7 @@ pub const ShortError = error{
9999
100100pub const failing: Reader = .{
101101 .vtable = &.{
102 .read = failingStream,
102 .stream = failingStream,
103103 .discard = failingDiscard,
104104 },
105105 .buffer = &.{},
......@@ -245,6 +245,7 @@ pub fn appendRemaining(
245245 list: *std.ArrayListAlignedUnmanaged(u8, alignment),
246246 limit: Limit,
247247) LimitedAllocError!void {
248 assert(r.buffer.len != 0); // Needed to detect limit exceeded without losing data.
248249 const buffer = r.buffer;
249250 const buffer_contents = buffer[r.seek..r.end];
250251 const copy_len = limit.minInt(buffer_contents.len);
......@@ -858,8 +859,10 @@ pub fn streamDelimiter(r: *Reader, w: *Writer, delimiter: u8) StreamError!usize
858859/// Appends to `w` contents by reading from the stream until `delimiter` is found.
859860/// Does not write the delimiter itself.
860861///
861/// Returns number of bytes streamed, which may be zero. End of stream can be
862/// detected by checking if the next byte in the stream is the delimiter.
862/// Returns number of bytes streamed, which may be zero. If the stream reaches
863/// the end, the reader buffer will be empty when this function returns.
864/// Otherwise, it will have at least one byte buffered, starting with the
865/// delimiter.
863866///
864867/// Asserts buffer capacity of at least one. This function performs better with
865868/// larger buffers.
......@@ -1000,6 +1003,18 @@ pub fn fill(r: *Reader, n: usize) Error!void {
10001003 @branchHint(.likely);
10011004 return;
10021005 }
1006 return fillUnbuffered(r, n);
1007}
1008
1009/// This internal function is separated from `fill` to encourage optimizers to inline `fill`, hence
1010/// propagating its `@branchHint` to usage sites. If these functions are combined, `fill` is large
1011/// enough that LLVM is reluctant to inline it, forcing usages of APIs like `takeInt` to go through
1012/// an expensive runtime function call just to figure out that the data is, in fact, already in the
1013/// buffer.
1014///
1015/// Missing this optimization can result in wall-clock time for the most affected benchmarks
1016/// increasing by a factor of 5 or more.
1017fn fillUnbuffered(r: *Reader, n: usize) Error!void {
10031018 if (r.seek + n <= r.buffer.len) while (true) {
10041019 const end_cap = r.buffer[r.end..];
10051020 var writer: Writer = .fixed(end_cap);
......@@ -1645,11 +1660,12 @@ test "readAlloc when the backing reader provides one byte at a time" {
16451660 }
16461661 };
16471662 const str = "This is a test";
1663 var tiny_buffer: [1]u8 = undefined;
16481664 var one_byte_stream: OneByteReader = .{
16491665 .str = str,
16501666 .i = 0,
16511667 .reader = .{
1652 .buffer = &.{},
1668 .buffer = &tiny_buffer,
16531669 .vtable = &.{ .stream = OneByteReader.stream },
16541670 .seek = 0,
16551671 .end = 0,
lib/std/Io/Reader/Limited.zig+22-6
......@@ -25,18 +25,34 @@ pub fn init(reader: *Reader, limit: Limit, buffer: []u8) Limited {
2525 };
2626}
2727
28fn stream(context: ?*anyopaque, w: *Writer, limit: Limit) Reader.StreamError!usize {
29 const l: *Limited = @alignCast(@ptrCast(context));
28fn stream(r: *Reader, w: *Writer, limit: Limit) Reader.StreamError!usize {
29 const l: *Limited = @fieldParentPtr("interface", r);
3030 const combined_limit = limit.min(l.remaining);
31 const n = try l.unlimited_reader.read(w, combined_limit);
31 const n = try l.unlimited.stream(w, combined_limit);
3232 l.remaining = l.remaining.subtract(n).?;
3333 return n;
3434}
3535
36fn discard(context: ?*anyopaque, limit: Limit) Reader.Error!usize {
37 const l: *Limited = @alignCast(@ptrCast(context));
36test stream {
37 var orig_buf: [10]u8 = undefined;
38 @memcpy(&orig_buf, "test bytes");
39 var fixed: std.Io.Reader = .fixed(&orig_buf);
40
41 var limit_buf: [1]u8 = undefined;
42 var limited: std.Io.Reader.Limited = .init(&fixed, @enumFromInt(4), &limit_buf);
43
44 var result_buf: [10]u8 = undefined;
45 var fixed_writer: std.Io.Writer = .fixed(&result_buf);
46 const streamed = try limited.interface.stream(&fixed_writer, @enumFromInt(7));
47
48 try std.testing.expect(streamed == 4);
49 try std.testing.expectEqualStrings("test", result_buf[0..streamed]);
50}
51
52fn discard(r: *Reader, limit: Limit) Reader.Error!usize {
53 const l: *Limited = @fieldParentPtr("interface", r);
3854 const combined_limit = limit.min(l.remaining);
39 const n = try l.unlimited_reader.discard(combined_limit);
55 const n = try l.unlimited.discard(combined_limit);
4056 l.remaining = l.remaining.subtract(n).?;
4157 return n;
4258}
lib/std/Io/Writer.zig+40-2
......@@ -114,7 +114,10 @@ pub const FileError = error{
114114/// Writes to `buffer` and returns `error.WriteFailed` when it is full.
115115pub fn fixed(buffer: []u8) Writer {
116116 return .{
117 .vtable = &.{ .drain = fixedDrain },
117 .vtable = &.{
118 .drain = fixedDrain,
119 .flush = noopFlush,
120 },
118121 .buffer = buffer,
119122 };
120123}
......@@ -244,6 +247,15 @@ pub fn noopFlush(w: *Writer) Error!void {
244247 _ = w;
245248}
246249
250test "fixed buffer flush" {
251 var buffer: [1]u8 = undefined;
252 var writer: std.io.Writer = .fixed(&buffer);
253
254 try writer.writeByte(10);
255 try writer.flush();
256 try testing.expectEqual(10, buffer[0]);
257}
258
247259/// Calls `VTable.drain` but hides the last `preserve_length` bytes from the
248260/// implementation, keeping them buffered.
249261pub fn drainPreserve(w: *Writer, preserve_length: usize) Error!void {
......@@ -381,6 +393,32 @@ pub fn writableVectorPosix(w: *Writer, buffer: []std.posix.iovec, limit: Limit)
381393 return buffer[0..i];
382394}
383395
396pub fn writableVectorWsa(
397 w: *Writer,
398 buffer: []std.os.windows.ws2_32.WSABUF,
399 limit: Limit,
400) Error![]std.os.windows.ws2_32.WSABUF {
401 var it = try writableVectorIterator(w);
402 var i: usize = 0;
403 var remaining = limit;
404 while (it.next()) |full_buffer| {
405 if (!remaining.nonzero()) break;
406 if (buffer.len - i == 0) break;
407 const buf = remaining.slice(full_buffer);
408 if (buf.len == 0) continue;
409 if (std.math.cast(u32, buf.len)) |len| {
410 buffer[i] = .{ .buf = buf.ptr, .len = len };
411 i += 1;
412 remaining = remaining.subtract(len).?;
413 continue;
414 }
415 buffer[i] = .{ .buf = buf.ptr, .len = std.math.maxInt(u32) };
416 i += 1;
417 break;
418 }
419 return buffer[0..i];
420}
421
384422pub fn ensureUnusedCapacity(w: *Writer, n: usize) Error!void {
385423 _ = try writableSliceGreedy(w, n);
386424}
......@@ -2150,7 +2188,7 @@ pub const Discarding = struct {
21502188 pub fn drain(w: *Writer, data: []const []const u8, splat: usize) Error!usize {
21512189 const d: *Discarding = @alignCast(@fieldParentPtr("writer", w));
21522190 const slice = data[0 .. data.len - 1];
2153 const pattern = data[slice.len..];
2191 const pattern = data[slice.len];
21542192 var written: usize = pattern.len * splat;
21552193 for (slice) |bytes| written += bytes.len;
21562194 d.count += w.end + written;
lib/std/Thread.zig+1-1
......@@ -58,7 +58,7 @@ pub fn sleep(nanoseconds: u64) void {
5858 const boot_services = std.os.uefi.system_table.boot_services.?;
5959 const us_from_ns = nanoseconds / std.time.ns_per_us;
6060 const us = math.cast(usize, us_from_ns) orelse math.maxInt(usize);
61 _ = boot_services.stall(us);
61 boot_services.stall(us) catch unreachable;
6262 return;
6363 }
6464
lib/std/Thread/Condition.zig+3-3
......@@ -130,7 +130,7 @@ const SingleThreadedImpl = struct {
130130 unreachable; // deadlock detected
131131 };
132132
133 std.time.sleep(timeout_ns);
133 std.Thread.sleep(timeout_ns);
134134 return error.Timeout;
135135 }
136136
......@@ -348,7 +348,7 @@ test "wait and signal" {
348348 }
349349
350350 while (true) {
351 std.time.sleep(100 * std.time.ns_per_ms);
351 std.Thread.sleep(100 * std.time.ns_per_ms);
352352
353353 multi_wait.mutex.lock();
354354 defer multi_wait.mutex.unlock();
......@@ -405,7 +405,7 @@ test signal {
405405 }
406406
407407 while (true) {
408 std.time.sleep(10 * std.time.ns_per_ms);
408 std.Thread.sleep(10 * std.time.ns_per_ms);
409409
410410 signal_test.mutex.lock();
411411 defer signal_test.mutex.unlock();
lib/std/Thread/Futex.zig+1-1
......@@ -116,7 +116,7 @@ const SingleThreadedImpl = struct {
116116 unreachable; // deadlock detected
117117 };
118118
119 std.time.sleep(delay);
119 std.Thread.sleep(delay);
120120 return error.Timeout;
121121 }
122122
lib/std/Thread/ResetEvent.zig+1-1
......@@ -74,7 +74,7 @@ const SingleThreadedImpl = struct {
7474 unreachable; // deadlock detected
7575 };
7676
77 std.time.sleep(timeout_ns);
77 std.Thread.sleep(timeout_ns);
7878 return error.Timeout;
7979 }
8080
lib/std/ascii.zig-3
......@@ -181,9 +181,6 @@ pub fn isAscii(c: u8) bool {
181181 return c < 128;
182182}
183183
184/// Deprecated: use `isAscii`
185pub const isASCII = isAscii;
186
187184/// Uppercases the character and returns it as-is if already uppercase or not a letter.
188185pub fn toUpper(c: u8) u8 {
189186 const mask = @as(u8, @intFromBool(isLower(c))) << 5;
lib/std/atomic.zig-2
......@@ -10,8 +10,6 @@ pub fn Value(comptime T: type) type {
1010 return .{ .raw = value };
1111 }
1212
13 pub const fence = @compileError("@fence is deprecated, use other atomics to establish ordering");
14
1513 pub inline fn load(self: *const Self, comptime order: AtomicOrder) T {
1614 return @atomicLoad(T, &self.raw, order);
1715 }
lib/std/builtin.zig-55
......@@ -156,9 +156,6 @@ pub const OptimizeMode = enum {
156156 ReleaseSmall,
157157};
158158
159/// Deprecated; use OptimizeMode.
160pub const Mode = OptimizeMode;
161
162159/// The calling convention of a function defines how arguments and return values are passed, as well
163160/// as any other requirements which callers and callees must respect, such as register preservation
164161/// and stack alignment.
......@@ -187,51 +184,6 @@ pub const CallingConvention = union(enum(u8)) {
187184 else => unreachable,
188185 };
189186
190 /// Deprecated; use `.auto`.
191 pub const Unspecified: CallingConvention = .auto;
192 /// Deprecated; use `.c`.
193 pub const C: CallingConvention = .c;
194 /// Deprecated; use `.naked`.
195 pub const Naked: CallingConvention = .naked;
196 /// Deprecated; use `.@"inline"`.
197 pub const Inline: CallingConvention = .@"inline";
198 /// Deprecated; use `.x86_64_interrupt`, `.x86_interrupt`, or `.avr_interrupt`.
199 pub const Interrupt: CallingConvention = switch (builtin.target.cpu.arch) {
200 .x86_64 => .{ .x86_64_interrupt = .{} },
201 .x86 => .{ .x86_interrupt = .{} },
202 .avr => .avr_interrupt,
203 else => unreachable,
204 };
205 /// Deprecated; use `.avr_signal`.
206 pub const Signal: CallingConvention = .avr_signal;
207 /// Deprecated; use `.x86_stdcall`.
208 pub const Stdcall: CallingConvention = .{ .x86_stdcall = .{} };
209 /// Deprecated; use `.x86_fastcall`.
210 pub const Fastcall: CallingConvention = .{ .x86_fastcall = .{} };
211 /// Deprecated; use `.x86_64_vectorcall`, `.x86_vectorcall`, or `aarch64_vfabi`.
212 pub const Vectorcall: CallingConvention = switch (builtin.target.cpu.arch) {
213 .x86_64 => .{ .x86_64_vectorcall = .{} },
214 .x86 => .{ .x86_vectorcall = .{} },
215 .aarch64, .aarch64_be => .{ .aarch64_vfabi = .{} },
216 else => unreachable,
217 };
218 /// Deprecated; use `.x86_thiscall`.
219 pub const Thiscall: CallingConvention = .{ .x86_thiscall = .{} };
220 /// Deprecated; use `.arm_aapcs`.
221 pub const AAPCS: CallingConvention = .{ .arm_aapcs = .{} };
222 /// Deprecated; use `.arm_aapcs_vfp`.
223 pub const AAPCSVFP: CallingConvention = .{ .arm_aapcs_vfp = .{} };
224 /// Deprecated; use `.x86_64_sysv`.
225 pub const SysV: CallingConvention = .{ .x86_64_sysv = .{} };
226 /// Deprecated; use `.x86_64_win`.
227 pub const Win64: CallingConvention = .{ .x86_64_win = .{} };
228 /// Deprecated; use `.kernel`.
229 pub const Kernel: CallingConvention = .kernel;
230 /// Deprecated; use `.spirv_fragment`.
231 pub const Fragment: CallingConvention = .spirv_fragment;
232 /// Deprecated; use `.spirv_vertex`.
233 pub const Vertex: CallingConvention = .spirv_vertex;
234
235187 /// The default Zig calling convention when neither `export` nor `inline` is specified.
236188 /// This calling convention makes no guarantees about stack alignment, registers, etc.
237189 /// It can only be used within this Zig compilation unit.
......@@ -1119,10 +1071,6 @@ pub const TestFn = struct {
11191071 func: *const fn () anyerror!void,
11201072};
11211073
1122/// Deprecated, use the `Panic` namespace instead.
1123/// To be deleted after 0.14.0 is released.
1124pub const PanicFn = fn ([]const u8, ?*StackTrace, ?usize) noreturn;
1125
11261074/// This namespace is used by the Zig compiler to emit various kinds of safety
11271075/// panics. These can be overridden by making a public `panic` namespace in the
11281076/// root source file.
......@@ -1138,9 +1086,6 @@ pub const panic: type = p: {
11381086 }
11391087 break :p root.panic;
11401088 }
1141 if (@hasDecl(root, "Panic")) {
1142 break :p root.Panic; // Deprecated; use `panic` instead.
1143 }
11441089 break :p switch (builtin.zig_backend) {
11451090 .stage2_powerpc,
11461091 .stage2_riscv64,
lib/std/c.zig+40-2
......@@ -4110,7 +4110,7 @@ pub const msghdr_const = switch (native_os) {
41104110 /// scatter/gather array
41114111 iov: [*]const iovec_const,
41124112 /// # elements in iov
4113 iovlen: i32,
4113 iovlen: u32,
41144114 /// ancillary data
41154115 control: ?*const anyopaque,
41164116 /// ancillary data buffer len
......@@ -4122,7 +4122,7 @@ pub const msghdr_const = switch (native_os) {
41224122 name: ?*const anyopaque,
41234123 namelen: socklen_t,
41244124 iov: [*]const iovec,
4125 iovlen: c_int,
4125 iovlen: c_uint,
41264126 control: ?*const anyopaque,
41274127 controllen: socklen_t,
41284128 flags: c_int,
......@@ -5625,6 +5625,43 @@ pub const MSG = switch (native_os) {
56255625 pub const NOSIGNAL = 0x80;
56265626 pub const EOR = 0x100;
56275627 },
5628 .freebsd => struct {
5629 pub const OOB = 0x00000001;
5630 pub const PEEK = 0x00000002;
5631 pub const DONTROUTE = 0x00000004;
5632 pub const EOR = 0x00000008;
5633 pub const TRUNC = 0x00000010;
5634 pub const CTRUNC = 0x00000020;
5635 pub const WAITALL = 0x00000040;
5636 pub const DONTWAIT = 0x00000080;
5637 pub const EOF = 0x00000100;
5638 pub const NOTIFICATION = 0x00002000;
5639 pub const NBIO = 0x00004000;
5640 pub const COMPAT = 0x00008000;
5641 pub const SOCALLBCK = 0x00010000;
5642 pub const NOSIGNAL = 0x00020000;
5643 pub const CMSG_CLOEXEC = 0x00040000;
5644 pub const WAITFORONE = 0x00080000;
5645 pub const MORETOCOME = 0x00100000;
5646 pub const TLSAPPDATA = 0x00200000;
5647 },
5648 .netbsd => struct {
5649 pub const OOB = 0x0001;
5650 pub const PEEK = 0x0002;
5651 pub const DONTROUTE = 0x0004;
5652 pub const EOR = 0x0008;
5653 pub const TRUNC = 0x0010;
5654 pub const CTRUNC = 0x0020;
5655 pub const WAITALL = 0x0040;
5656 pub const DONTWAIT = 0x0080;
5657 pub const BCAST = 0x0100;
5658 pub const MCAST = 0x0200;
5659 pub const NOSIGNAL = 0x0400;
5660 pub const CMSG_CLOEXEC = 0x0800;
5661 pub const NBIO = 0x1000;
5662 pub const WAITFORONE = 0x2000;
5663 pub const NOTIFICATION = 0x4000;
5664 },
56285665 else => void,
56295666};
56305667pub const SOCK = switch (native_os) {
......@@ -10808,6 +10845,7 @@ pub extern "c" fn if_nametoindex([*:0]const u8) c_int;
1080810845
1080910846pub extern "c" fn getpid() pid_t;
1081010847pub extern "c" fn getppid() pid_t;
10848pub extern "c" fn setsid() pid_t;
1081110849
1081210850/// These are implementation defined but share identical values in at least musl and glibc:
1081310851/// - https://git.musl-libc.org/cgit/musl/tree/include/locale.h?id=ab31e9d6a0fa7c5c408856c89df2dfb12c344039#n18
lib/std/crypto.zig+1-19
......@@ -103,7 +103,6 @@ pub const dh = struct {
103103pub const kem = struct {
104104 pub const kyber_d00 = @import("crypto/ml_kem.zig").d00;
105105 pub const ml_kem = @import("crypto/ml_kem.zig").nist;
106 pub const ml_kem_01 = @compileError("deprecated: final version of the specification has been published, use ml_kem instead");
107106};
108107
109108/// Elliptic-curve arithmetic.
......@@ -387,7 +386,7 @@ test "issue #4532: no index out of bounds" {
387386
388387/// Sets a slice to zeroes.
389388/// Prevents the store from being optimized out.
390pub inline fn secureZero(comptime T: type, s: []volatile T) void {
389pub fn secureZero(comptime T: type, s: []volatile T) void {
391390 @memset(s, 0);
392391}
393392
......@@ -400,20 +399,3 @@ test secureZero {
400399
401400 try std.testing.expectEqualSlices(u8, &a, &b);
402401}
403
404/// Deprecated in favor of `std.crypto`. To be removed after Zig 0.14.0 is released.
405///
406/// As a reminder, never use "utils" in a namespace (in any programming language).
407/// https://ziglang.org/documentation/0.13.0/#Avoid-Redundancy-in-Names
408pub const utils = struct {
409 /// Deprecated in favor of `std.crypto.secureZero`.
410 pub const secureZero = std.crypto.secureZero;
411 /// Deprecated in favor of `std.crypto.timing_safe.eql`.
412 pub const timingSafeEql = timing_safe.eql;
413 /// Deprecated in favor of `std.crypto.timing_safe.compare`.
414 pub const timingSafeCompare = timing_safe.compare;
415 /// Deprecated in favor of `std.crypto.timing_safe.add`.
416 pub const timingSafeAdd = timing_safe.add;
417 /// Deprecated in favor of `std.crypto.timing_safe.sub`.
418 pub const timingSafeSub = timing_safe.sub;
419};
lib/std/crypto/25519/curve25519.zig+2-2
......@@ -15,12 +15,12 @@ pub const Curve25519 = struct {
1515 x: Fe,
1616
1717 /// Decode a Curve25519 point from its compressed (X) coordinates.
18 pub inline fn fromBytes(s: [32]u8) Curve25519 {
18 pub fn fromBytes(s: [32]u8) Curve25519 {
1919 return .{ .x = Fe.fromBytes(s) };
2020 }
2121
2222 /// Encode a Curve25519 point.
23 pub inline fn toBytes(p: Curve25519) [32]u8 {
23 pub fn toBytes(p: Curve25519) [32]u8 {
2424 return p.x.toBytes();
2525 }
2626
lib/std/crypto/25519/edwards25519.zig+3-3
......@@ -138,7 +138,7 @@ pub const Edwards25519 = struct {
138138 }
139139
140140 /// Flip the sign of the X coordinate.
141 pub inline fn neg(p: Edwards25519) Edwards25519 {
141 pub fn neg(p: Edwards25519) Edwards25519 {
142142 return .{ .x = p.x.neg(), .y = p.y, .z = p.z, .t = p.t.neg() };
143143 }
144144
......@@ -190,14 +190,14 @@ pub const Edwards25519 = struct {
190190 return q;
191191 }
192192
193 inline fn cMov(p: *Edwards25519, a: Edwards25519, c: u64) void {
193 fn cMov(p: *Edwards25519, a: Edwards25519, c: u64) void {
194194 p.x.cMov(a.x, c);
195195 p.y.cMov(a.y, c);
196196 p.z.cMov(a.z, c);
197197 p.t.cMov(a.t, c);
198198 }
199199
200 inline fn pcSelect(comptime n: usize, pc: *const [n]Edwards25519, b: u8) Edwards25519 {
200 fn pcSelect(comptime n: usize, pc: *const [n]Edwards25519, b: u8) Edwards25519 {
201201 var t = Edwards25519.identityElement;
202202 comptime var i: u8 = 1;
203203 inline while (i < pc.len) : (i += 1) {
lib/std/crypto/25519/field.zig+11-11
......@@ -56,7 +56,7 @@ pub const Fe = struct {
5656 pub const edwards25519sqrtam2 = Fe{ .limbs = .{ 1693982333959686, 608509411481997, 2235573344831311, 947681270984193, 266558006233600 } };
5757
5858 /// Return true if the field element is zero
59 pub inline fn isZero(fe: Fe) bool {
59 pub fn isZero(fe: Fe) bool {
6060 var reduced = fe;
6161 reduced.reduce();
6262 const limbs = reduced.limbs;
......@@ -64,7 +64,7 @@ pub const Fe = struct {
6464 }
6565
6666 /// Return true if both field elements are equivalent
67 pub inline fn equivalent(a: Fe, b: Fe) bool {
67 pub fn equivalent(a: Fe, b: Fe) bool {
6868 return a.sub(b).isZero();
6969 }
7070
......@@ -168,7 +168,7 @@ pub const Fe = struct {
168168 }
169169
170170 /// Add a field element
171 pub inline fn add(a: Fe, b: Fe) Fe {
171 pub fn add(a: Fe, b: Fe) Fe {
172172 var fe: Fe = undefined;
173173 comptime var i = 0;
174174 inline while (i < 5) : (i += 1) {
......@@ -178,7 +178,7 @@ pub const Fe = struct {
178178 }
179179
180180 /// Subtract a field element
181 pub inline fn sub(a: Fe, b: Fe) Fe {
181 pub fn sub(a: Fe, b: Fe) Fe {
182182 var fe = b;
183183 comptime var i = 0;
184184 inline while (i < 4) : (i += 1) {
......@@ -197,17 +197,17 @@ pub const Fe = struct {
197197 }
198198
199199 /// Negate a field element
200 pub inline fn neg(a: Fe) Fe {
200 pub fn neg(a: Fe) Fe {
201201 return zero.sub(a);
202202 }
203203
204204 /// Return true if a field element is negative
205 pub inline fn isNegative(a: Fe) bool {
205 pub fn isNegative(a: Fe) bool {
206206 return (a.toBytes()[0] & 1) != 0;
207207 }
208208
209209 /// Conditonally replace a field element with `a` if `c` is positive
210 pub inline fn cMov(fe: *Fe, a: Fe, c: u64) void {
210 pub fn cMov(fe: *Fe, a: Fe, c: u64) void {
211211 const mask: u64 = 0 -% c;
212212 var x = fe.*;
213213 comptime var i = 0;
......@@ -248,7 +248,7 @@ pub const Fe = struct {
248248 }
249249 }
250250
251 inline fn _carry128(r: *[5]u128) Fe {
251 fn _carry128(r: *[5]u128) Fe {
252252 var rs: [5]u64 = undefined;
253253 comptime var i = 0;
254254 inline while (i < 4) : (i += 1) {
......@@ -321,17 +321,17 @@ pub const Fe = struct {
321321 }
322322
323323 /// Square a field element
324 pub inline fn sq(a: Fe) Fe {
324 pub fn sq(a: Fe) Fe {
325325 return _sq(a, false);
326326 }
327327
328328 /// Square and double a field element
329 pub inline fn sq2(a: Fe) Fe {
329 pub fn sq2(a: Fe) Fe {
330330 return _sq(a, true);
331331 }
332332
333333 /// Multiply a field element with a small (32-bit) integer
334 pub inline fn mul32(a: Fe, comptime n: u32) Fe {
334 pub fn mul32(a: Fe, comptime n: u32) Fe {
335335 const sn = @as(u128, @intCast(n));
336336 var fe: Fe = undefined;
337337 var x: u128 = 0;
lib/std/crypto/25519/ristretto255.zig+5-5
......@@ -42,7 +42,7 @@ pub const Ristretto255 = struct {
4242 }
4343
4444 /// Reject the neutral element.
45 pub inline fn rejectIdentity(p: Ristretto255) IdentityElementError!void {
45 pub fn rejectIdentity(p: Ristretto255) IdentityElementError!void {
4646 return p.p.rejectIdentity();
4747 }
4848
......@@ -141,24 +141,24 @@ pub const Ristretto255 = struct {
141141 }
142142
143143 /// Double a Ristretto255 element.
144 pub inline fn dbl(p: Ristretto255) Ristretto255 {
144 pub fn dbl(p: Ristretto255) Ristretto255 {
145145 return .{ .p = p.p.dbl() };
146146 }
147147
148148 /// Add two Ristretto255 elements.
149 pub inline fn add(p: Ristretto255, q: Ristretto255) Ristretto255 {
149 pub fn add(p: Ristretto255, q: Ristretto255) Ristretto255 {
150150 return .{ .p = p.p.add(q.p) };
151151 }
152152
153153 /// Subtract two Ristretto255 elements.
154 pub inline fn sub(p: Ristretto255, q: Ristretto255) Ristretto255 {
154 pub fn sub(p: Ristretto255, q: Ristretto255) Ristretto255 {
155155 return .{ .p = p.p.sub(q.p) };
156156 }
157157
158158 /// Multiply a Ristretto255 element with a scalar.
159159 /// Return error.WeakPublicKey if the resulting element is
160160 /// the identity element.
161 pub inline fn mul(p: Ristretto255, s: [encoded_length]u8) (IdentityElementError || WeakPublicKeyError)!Ristretto255 {
161 pub fn mul(p: Ristretto255, s: [encoded_length]u8) (IdentityElementError || WeakPublicKeyError)!Ristretto255 {
162162 return .{ .p = try p.p.mul(s) };
163163 }
164164
lib/std/crypto/25519/scalar.zig+2-2
......@@ -50,7 +50,7 @@ pub fn reduce64(s: [64]u8) CompressedScalar {
5050
5151/// Perform the X25519 "clamping" operation.
5252/// The scalar is then guaranteed to be a multiple of the cofactor.
53pub inline fn clamp(s: *CompressedScalar) void {
53pub fn clamp(s: *CompressedScalar) void {
5454 s[0] &= 248;
5555 s[31] = (s[31] & 127) | 64;
5656}
......@@ -514,7 +514,7 @@ pub const Scalar = struct {
514514 }
515515
516516 /// Square a scalar `n` times
517 inline fn sqn(x: Scalar, comptime n: comptime_int) Scalar {
517 fn sqn(x: Scalar, comptime n: comptime_int) Scalar {
518518 var i: usize = 0;
519519 var t = x;
520520 while (i < n) : (i += 1) {
lib/std/crypto/aegis.zig+2-2
......@@ -104,7 +104,7 @@ fn State128X(comptime degree: u7) type {
104104 return state;
105105 }
106106
107 inline fn update(state: *State, d1: AesBlockVec, d2: AesBlockVec) void {
107 fn update(state: *State, d1: AesBlockVec, d2: AesBlockVec) void {
108108 const blocks = &state.blocks;
109109 const tmp = blocks[7];
110110 comptime var i: usize = 7;
......@@ -413,7 +413,7 @@ fn State256X(comptime degree: u7) type {
413413 return state;
414414 }
415415
416 inline fn update(state: *State, d: AesBlockVec) void {
416 fn update(state: *State, d: AesBlockVec) void {
417417 const blocks = &state.blocks;
418418 const tmp = blocks[5].encrypt(blocks[0]);
419419 comptime var i: usize = 5;
lib/std/crypto/aes/aesni.zig+26-26
......@@ -17,24 +17,24 @@ pub const Block = struct {
1717 repr: Repr,
1818
1919 /// Convert a byte sequence into an internal representation.
20 pub inline fn fromBytes(bytes: *const [16]u8) Block {
20 pub fn fromBytes(bytes: *const [16]u8) Block {
2121 const repr = mem.bytesToValue(Repr, bytes);
2222 return Block{ .repr = repr };
2323 }
2424
2525 /// Convert the internal representation of a block into a byte sequence.
26 pub inline fn toBytes(block: Block) [16]u8 {
26 pub fn toBytes(block: Block) [16]u8 {
2727 return mem.toBytes(block.repr);
2828 }
2929
3030 /// XOR the block with a byte sequence.
31 pub inline fn xorBytes(block: Block, bytes: *const [16]u8) [16]u8 {
31 pub fn xorBytes(block: Block, bytes: *const [16]u8) [16]u8 {
3232 const x = block.repr ^ fromBytes(bytes).repr;
3333 return mem.toBytes(x);
3434 }
3535
3636 /// Encrypt a block with a round key.
37 pub inline fn encrypt(block: Block, round_key: Block) Block {
37 pub fn encrypt(block: Block, round_key: Block) Block {
3838 return Block{
3939 .repr = asm (
4040 \\ vaesenc %[rk], %[in], %[out]
......@@ -46,7 +46,7 @@ pub const Block = struct {
4646 }
4747
4848 /// Encrypt a block with the last round key.
49 pub inline fn encryptLast(block: Block, round_key: Block) Block {
49 pub fn encryptLast(block: Block, round_key: Block) Block {
5050 return Block{
5151 .repr = asm (
5252 \\ vaesenclast %[rk], %[in], %[out]
......@@ -58,7 +58,7 @@ pub const Block = struct {
5858 }
5959
6060 /// Decrypt a block with a round key.
61 pub inline fn decrypt(block: Block, inv_round_key: Block) Block {
61 pub fn decrypt(block: Block, inv_round_key: Block) Block {
6262 return Block{
6363 .repr = asm (
6464 \\ vaesdec %[rk], %[in], %[out]
......@@ -70,7 +70,7 @@ pub const Block = struct {
7070 }
7171
7272 /// Decrypt a block with the last round key.
73 pub inline fn decryptLast(block: Block, inv_round_key: Block) Block {
73 pub fn decryptLast(block: Block, inv_round_key: Block) Block {
7474 return Block{
7575 .repr = asm (
7676 \\ vaesdeclast %[rk], %[in], %[out]
......@@ -82,17 +82,17 @@ pub const Block = struct {
8282 }
8383
8484 /// Apply the bitwise XOR operation to the content of two blocks.
85 pub inline fn xorBlocks(block1: Block, block2: Block) Block {
85 pub fn xorBlocks(block1: Block, block2: Block) Block {
8686 return Block{ .repr = block1.repr ^ block2.repr };
8787 }
8888
8989 /// Apply the bitwise AND operation to the content of two blocks.
90 pub inline fn andBlocks(block1: Block, block2: Block) Block {
90 pub fn andBlocks(block1: Block, block2: Block) Block {
9191 return Block{ .repr = block1.repr & block2.repr };
9292 }
9393
9494 /// Apply the bitwise OR operation to the content of two blocks.
95 pub inline fn orBlocks(block1: Block, block2: Block) Block {
95 pub fn orBlocks(block1: Block, block2: Block) Block {
9696 return Block{ .repr = block1.repr | block2.repr };
9797 }
9898
......@@ -112,7 +112,7 @@ pub const Block = struct {
112112 };
113113
114114 /// Encrypt multiple blocks in parallel, each their own round key.
115 pub inline fn encryptParallel(comptime count: usize, blocks: [count]Block, round_keys: [count]Block) [count]Block {
115 pub fn encryptParallel(comptime count: usize, blocks: [count]Block, round_keys: [count]Block) [count]Block {
116116 comptime var i = 0;
117117 var out: [count]Block = undefined;
118118 inline while (i < count) : (i += 1) {
......@@ -122,7 +122,7 @@ pub const Block = struct {
122122 }
123123
124124 /// Decrypt multiple blocks in parallel, each their own round key.
125 pub inline fn decryptParallel(comptime count: usize, blocks: [count]Block, round_keys: [count]Block) [count]Block {
125 pub fn decryptParallel(comptime count: usize, blocks: [count]Block, round_keys: [count]Block) [count]Block {
126126 comptime var i = 0;
127127 var out: [count]Block = undefined;
128128 inline while (i < count) : (i += 1) {
......@@ -132,7 +132,7 @@ pub const Block = struct {
132132 }
133133
134134 /// Encrypt multiple blocks in parallel with the same round key.
135 pub inline fn encryptWide(comptime count: usize, blocks: [count]Block, round_key: Block) [count]Block {
135 pub fn encryptWide(comptime count: usize, blocks: [count]Block, round_key: Block) [count]Block {
136136 comptime var i = 0;
137137 var out: [count]Block = undefined;
138138 inline while (i < count) : (i += 1) {
......@@ -142,7 +142,7 @@ pub const Block = struct {
142142 }
143143
144144 /// Decrypt multiple blocks in parallel with the same round key.
145 pub inline fn decryptWide(comptime count: usize, blocks: [count]Block, round_key: Block) [count]Block {
145 pub fn decryptWide(comptime count: usize, blocks: [count]Block, round_key: Block) [count]Block {
146146 comptime var i = 0;
147147 var out: [count]Block = undefined;
148148 inline while (i < count) : (i += 1) {
......@@ -152,7 +152,7 @@ pub const Block = struct {
152152 }
153153
154154 /// Encrypt multiple blocks in parallel with the same last round key.
155 pub inline fn encryptLastWide(comptime count: usize, blocks: [count]Block, round_key: Block) [count]Block {
155 pub fn encryptLastWide(comptime count: usize, blocks: [count]Block, round_key: Block) [count]Block {
156156 comptime var i = 0;
157157 var out: [count]Block = undefined;
158158 inline while (i < count) : (i += 1) {
......@@ -162,7 +162,7 @@ pub const Block = struct {
162162 }
163163
164164 /// Decrypt multiple blocks in parallel with the same last round key.
165 pub inline fn decryptLastWide(comptime count: usize, blocks: [count]Block, round_key: Block) [count]Block {
165 pub fn decryptLastWide(comptime count: usize, blocks: [count]Block, round_key: Block) [count]Block {
166166 comptime var i = 0;
167167 var out: [count]Block = undefined;
168168 inline while (i < count) : (i += 1) {
......@@ -200,7 +200,7 @@ pub fn BlockVec(comptime blocks_count: comptime_int) type {
200200 pub const block_length: usize = blocks_count * 16;
201201
202202 /// Convert a byte sequence into an internal representation.
203 pub inline fn fromBytes(bytes: *const [blocks_count * 16]u8) Self {
203 pub fn fromBytes(bytes: *const [blocks_count * 16]u8) Self {
204204 var out: Self = undefined;
205205 inline for (0..native_words) |i| {
206206 out.repr[i] = mem.bytesToValue(Repr, bytes[i * native_word_size ..][0..native_word_size]);
......@@ -209,7 +209,7 @@ pub fn BlockVec(comptime blocks_count: comptime_int) type {
209209 }
210210
211211 /// Convert the internal representation of a block vector into a byte sequence.
212 pub inline fn toBytes(block_vec: Self) [blocks_count * 16]u8 {
212 pub fn toBytes(block_vec: Self) [blocks_count * 16]u8 {
213213 var out: [blocks_count * 16]u8 = undefined;
214214 inline for (0..native_words) |i| {
215215 out[i * native_word_size ..][0..native_word_size].* = mem.toBytes(block_vec.repr[i]);
......@@ -218,7 +218,7 @@ pub fn BlockVec(comptime blocks_count: comptime_int) type {
218218 }
219219
220220 /// XOR the block vector with a byte sequence.
221 pub inline fn xorBytes(block_vec: Self, bytes: *const [blocks_count * 16]u8) [blocks_count * 16]u8 {
221 pub fn xorBytes(block_vec: Self, bytes: *const [blocks_count * 16]u8) [blocks_count * 16]u8 {
222222 var x: Self = undefined;
223223 inline for (0..native_words) |i| {
224224 x.repr[i] = block_vec.repr[i] ^ mem.bytesToValue(Repr, bytes[i * native_word_size ..][0..native_word_size]);
......@@ -227,7 +227,7 @@ pub fn BlockVec(comptime blocks_count: comptime_int) type {
227227 }
228228
229229 /// Apply the forward AES operation to the block vector with a vector of round keys.
230 pub inline fn encrypt(block_vec: Self, round_key_vec: Self) Self {
230 pub fn encrypt(block_vec: Self, round_key_vec: Self) Self {
231231 var out: Self = undefined;
232232 inline for (0..native_words) |i| {
233233 out.repr[i] = asm (
......@@ -241,7 +241,7 @@ pub fn BlockVec(comptime blocks_count: comptime_int) type {
241241 }
242242
243243 /// Apply the forward AES operation to the block vector with a vector of last round keys.
244 pub inline fn encryptLast(block_vec: Self, round_key_vec: Self) Self {
244 pub fn encryptLast(block_vec: Self, round_key_vec: Self) Self {
245245 var out: Self = undefined;
246246 inline for (0..native_words) |i| {
247247 out.repr[i] = asm (
......@@ -255,7 +255,7 @@ pub fn BlockVec(comptime blocks_count: comptime_int) type {
255255 }
256256
257257 /// Apply the inverse AES operation to the block vector with a vector of round keys.
258 pub inline fn decrypt(block_vec: Self, inv_round_key_vec: Self) Self {
258 pub fn decrypt(block_vec: Self, inv_round_key_vec: Self) Self {
259259 var out: Self = undefined;
260260 inline for (0..native_words) |i| {
261261 out.repr[i] = asm (
......@@ -269,7 +269,7 @@ pub fn BlockVec(comptime blocks_count: comptime_int) type {
269269 }
270270
271271 /// Apply the inverse AES operation to the block vector with a vector of last round keys.
272 pub inline fn decryptLast(block_vec: Self, inv_round_key_vec: Self) Self {
272 pub fn decryptLast(block_vec: Self, inv_round_key_vec: Self) Self {
273273 var out: Self = undefined;
274274 inline for (0..native_words) |i| {
275275 out.repr[i] = asm (
......@@ -283,7 +283,7 @@ pub fn BlockVec(comptime blocks_count: comptime_int) type {
283283 }
284284
285285 /// Apply the bitwise XOR operation to the content of two block vectors.
286 pub inline fn xorBlocks(block_vec1: Self, block_vec2: Self) Self {
286 pub fn xorBlocks(block_vec1: Self, block_vec2: Self) Self {
287287 var out: Self = undefined;
288288 inline for (0..native_words) |i| {
289289 out.repr[i] = block_vec1.repr[i] ^ block_vec2.repr[i];
......@@ -292,7 +292,7 @@ pub fn BlockVec(comptime blocks_count: comptime_int) type {
292292 }
293293
294294 /// Apply the bitwise AND operation to the content of two block vectors.
295 pub inline fn andBlocks(block_vec1: Self, block_vec2: Self) Self {
295 pub fn andBlocks(block_vec1: Self, block_vec2: Self) Self {
296296 var out: Self = undefined;
297297 inline for (0..native_words) |i| {
298298 out.repr[i] = block_vec1.repr[i] & block_vec2.repr[i];
......@@ -301,7 +301,7 @@ pub fn BlockVec(comptime blocks_count: comptime_int) type {
301301 }
302302
303303 /// Apply the bitwise OR operation to the content of two block vectors.
304 pub inline fn orBlocks(block_vec1: Self, block_vec2: Block) Self {
304 pub fn orBlocks(block_vec1: Self, block_vec2: Block) Self {
305305 var out: Self = undefined;
306306 inline for (0..native_words) |i| {
307307 out.repr[i] = block_vec1.repr[i] | block_vec2.repr[i];
lib/std/crypto/aes/armcrypto.zig+26-26
......@@ -12,18 +12,18 @@ pub const Block = struct {
1212 repr: Repr,
1313
1414 /// Convert a byte sequence into an internal representation.
15 pub inline fn fromBytes(bytes: *const [16]u8) Block {
15 pub fn fromBytes(bytes: *const [16]u8) Block {
1616 const repr = mem.bytesToValue(Repr, bytes);
1717 return Block{ .repr = repr };
1818 }
1919
2020 /// Convert the internal representation of a block into a byte sequence.
21 pub inline fn toBytes(block: Block) [16]u8 {
21 pub fn toBytes(block: Block) [16]u8 {
2222 return mem.toBytes(block.repr);
2323 }
2424
2525 /// XOR the block with a byte sequence.
26 pub inline fn xorBytes(block: Block, bytes: *const [16]u8) [16]u8 {
26 pub fn xorBytes(block: Block, bytes: *const [16]u8) [16]u8 {
2727 const x = block.repr ^ fromBytes(bytes).repr;
2828 return mem.toBytes(x);
2929 }
......@@ -31,7 +31,7 @@ pub const Block = struct {
3131 const zero = @Vector(2, u64){ 0, 0 };
3232
3333 /// Encrypt a block with a round key.
34 pub inline fn encrypt(block: Block, round_key: Block) Block {
34 pub fn encrypt(block: Block, round_key: Block) Block {
3535 return Block{
3636 .repr = (asm (
3737 \\ mov %[out].16b, %[in].16b
......@@ -45,7 +45,7 @@ pub const Block = struct {
4545 }
4646
4747 /// Encrypt a block with the last round key.
48 pub inline fn encryptLast(block: Block, round_key: Block) Block {
48 pub fn encryptLast(block: Block, round_key: Block) Block {
4949 return Block{
5050 .repr = (asm (
5151 \\ mov %[out].16b, %[in].16b
......@@ -58,7 +58,7 @@ pub const Block = struct {
5858 }
5959
6060 /// Decrypt a block with a round key.
61 pub inline fn decrypt(block: Block, inv_round_key: Block) Block {
61 pub fn decrypt(block: Block, inv_round_key: Block) Block {
6262 return Block{
6363 .repr = (asm (
6464 \\ mov %[out].16b, %[in].16b
......@@ -72,7 +72,7 @@ pub const Block = struct {
7272 }
7373
7474 /// Decrypt a block with the last round key.
75 pub inline fn decryptLast(block: Block, inv_round_key: Block) Block {
75 pub fn decryptLast(block: Block, inv_round_key: Block) Block {
7676 return Block{
7777 .repr = (asm (
7878 \\ mov %[out].16b, %[in].16b
......@@ -85,17 +85,17 @@ pub const Block = struct {
8585 }
8686
8787 /// Apply the bitwise XOR operation to the content of two blocks.
88 pub inline fn xorBlocks(block1: Block, block2: Block) Block {
88 pub fn xorBlocks(block1: Block, block2: Block) Block {
8989 return Block{ .repr = block1.repr ^ block2.repr };
9090 }
9191
9292 /// Apply the bitwise AND operation to the content of two blocks.
93 pub inline fn andBlocks(block1: Block, block2: Block) Block {
93 pub fn andBlocks(block1: Block, block2: Block) Block {
9494 return Block{ .repr = block1.repr & block2.repr };
9595 }
9696
9797 /// Apply the bitwise OR operation to the content of two blocks.
98 pub inline fn orBlocks(block1: Block, block2: Block) Block {
98 pub fn orBlocks(block1: Block, block2: Block) Block {
9999 return Block{ .repr = block1.repr | block2.repr };
100100 }
101101
......@@ -105,7 +105,7 @@ pub const Block = struct {
105105 pub const optimal_parallel_blocks = 6;
106106
107107 /// Encrypt multiple blocks in parallel, each their own round key.
108 pub inline fn encryptParallel(comptime count: usize, blocks: [count]Block, round_keys: [count]Block) [count]Block {
108 pub fn encryptParallel(comptime count: usize, blocks: [count]Block, round_keys: [count]Block) [count]Block {
109109 comptime var i = 0;
110110 var out: [count]Block = undefined;
111111 inline while (i < count) : (i += 1) {
......@@ -115,7 +115,7 @@ pub const Block = struct {
115115 }
116116
117117 /// Decrypt multiple blocks in parallel, each their own round key.
118 pub inline fn decryptParallel(comptime count: usize, blocks: [count]Block, round_keys: [count]Block) [count]Block {
118 pub fn decryptParallel(comptime count: usize, blocks: [count]Block, round_keys: [count]Block) [count]Block {
119119 comptime var i = 0;
120120 var out: [count]Block = undefined;
121121 inline while (i < count) : (i += 1) {
......@@ -125,7 +125,7 @@ pub const Block = struct {
125125 }
126126
127127 /// Encrypt multiple blocks in parallel with the same round key.
128 pub inline fn encryptWide(comptime count: usize, blocks: [count]Block, round_key: Block) [count]Block {
128 pub fn encryptWide(comptime count: usize, blocks: [count]Block, round_key: Block) [count]Block {
129129 comptime var i = 0;
130130 var out: [count]Block = undefined;
131131 inline while (i < count) : (i += 1) {
......@@ -135,7 +135,7 @@ pub const Block = struct {
135135 }
136136
137137 /// Decrypt multiple blocks in parallel with the same round key.
138 pub inline fn decryptWide(comptime count: usize, blocks: [count]Block, round_key: Block) [count]Block {
138 pub fn decryptWide(comptime count: usize, blocks: [count]Block, round_key: Block) [count]Block {
139139 comptime var i = 0;
140140 var out: [count]Block = undefined;
141141 inline while (i < count) : (i += 1) {
......@@ -145,7 +145,7 @@ pub const Block = struct {
145145 }
146146
147147 /// Encrypt multiple blocks in parallel with the same last round key.
148 pub inline fn encryptLastWide(comptime count: usize, blocks: [count]Block, round_key: Block) [count]Block {
148 pub fn encryptLastWide(comptime count: usize, blocks: [count]Block, round_key: Block) [count]Block {
149149 comptime var i = 0;
150150 var out: [count]Block = undefined;
151151 inline while (i < count) : (i += 1) {
......@@ -155,7 +155,7 @@ pub const Block = struct {
155155 }
156156
157157 /// Decrypt multiple blocks in parallel with the same last round key.
158 pub inline fn decryptLastWide(comptime count: usize, blocks: [count]Block, round_key: Block) [count]Block {
158 pub fn decryptLastWide(comptime count: usize, blocks: [count]Block, round_key: Block) [count]Block {
159159 comptime var i = 0;
160160 var out: [count]Block = undefined;
161161 inline while (i < count) : (i += 1) {
......@@ -187,7 +187,7 @@ pub fn BlockVec(comptime blocks_count: comptime_int) type {
187187 pub const block_length: usize = blocks_count * 16;
188188
189189 /// Convert a byte sequence into an internal representation.
190 pub inline fn fromBytes(bytes: *const [blocks_count * 16]u8) Self {
190 pub fn fromBytes(bytes: *const [blocks_count * 16]u8) Self {
191191 var out: Self = undefined;
192192 inline for (0..native_words) |i| {
193193 out.repr[i] = Block.fromBytes(bytes[i * native_word_size ..][0..native_word_size]);
......@@ -196,7 +196,7 @@ pub fn BlockVec(comptime blocks_count: comptime_int) type {
196196 }
197197
198198 /// Convert the internal representation of a block vector into a byte sequence.
199 pub inline fn toBytes(block_vec: Self) [blocks_count * 16]u8 {
199 pub fn toBytes(block_vec: Self) [blocks_count * 16]u8 {
200200 var out: [blocks_count * 16]u8 = undefined;
201201 inline for (0..native_words) |i| {
202202 out[i * native_word_size ..][0..native_word_size].* = block_vec.repr[i].toBytes();
......@@ -205,7 +205,7 @@ pub fn BlockVec(comptime blocks_count: comptime_int) type {
205205 }
206206
207207 /// XOR the block vector with a byte sequence.
208 pub inline fn xorBytes(block_vec: Self, bytes: *const [blocks_count * 16]u8) [32]u8 {
208 pub fn xorBytes(block_vec: Self, bytes: *const [blocks_count * 16]u8) [32]u8 {
209209 var out: Self = undefined;
210210 inline for (0..native_words) |i| {
211211 out.repr[i] = block_vec.repr[i].xorBytes(bytes[i * native_word_size ..][0..native_word_size]);
......@@ -214,7 +214,7 @@ pub fn BlockVec(comptime blocks_count: comptime_int) type {
214214 }
215215
216216 /// Apply the forward AES operation to the block vector with a vector of round keys.
217 pub inline fn encrypt(block_vec: Self, round_key_vec: Self) Self {
217 pub fn encrypt(block_vec: Self, round_key_vec: Self) Self {
218218 var out: Self = undefined;
219219 inline for (0..native_words) |i| {
220220 out.repr[i] = block_vec.repr[i].encrypt(round_key_vec.repr[i]);
......@@ -223,7 +223,7 @@ pub fn BlockVec(comptime blocks_count: comptime_int) type {
223223 }
224224
225225 /// Apply the forward AES operation to the block vector with a vector of last round keys.
226 pub inline fn encryptLast(block_vec: Self, round_key_vec: Self) Self {
226 pub fn encryptLast(block_vec: Self, round_key_vec: Self) Self {
227227 var out: Self = undefined;
228228 inline for (0..native_words) |i| {
229229 out.repr[i] = block_vec.repr[i].encryptLast(round_key_vec.repr[i]);
......@@ -232,7 +232,7 @@ pub fn BlockVec(comptime blocks_count: comptime_int) type {
232232 }
233233
234234 /// Apply the inverse AES operation to the block vector with a vector of round keys.
235 pub inline fn decrypt(block_vec: Self, inv_round_key_vec: Self) Self {
235 pub fn decrypt(block_vec: Self, inv_round_key_vec: Self) Self {
236236 var out: Self = undefined;
237237 inline for (0..native_words) |i| {
238238 out.repr[i] = block_vec.repr[i].decrypt(inv_round_key_vec.repr[i]);
......@@ -241,7 +241,7 @@ pub fn BlockVec(comptime blocks_count: comptime_int) type {
241241 }
242242
243243 /// Apply the inverse AES operation to the block vector with a vector of last round keys.
244 pub inline fn decryptLast(block_vec: Self, inv_round_key_vec: Self) Self {
244 pub fn decryptLast(block_vec: Self, inv_round_key_vec: Self) Self {
245245 var out: Self = undefined;
246246 inline for (0..native_words) |i| {
247247 out.repr[i] = block_vec.repr[i].decryptLast(inv_round_key_vec.repr[i]);
......@@ -250,7 +250,7 @@ pub fn BlockVec(comptime blocks_count: comptime_int) type {
250250 }
251251
252252 /// Apply the bitwise XOR operation to the content of two block vectors.
253 pub inline fn xorBlocks(block_vec1: Self, block_vec2: Self) Self {
253 pub fn xorBlocks(block_vec1: Self, block_vec2: Self) Self {
254254 var out: Self = undefined;
255255 inline for (0..native_words) |i| {
256256 out.repr[i] = block_vec1.repr[i].xorBlocks(block_vec2.repr[i]);
......@@ -259,7 +259,7 @@ pub fn BlockVec(comptime blocks_count: comptime_int) type {
259259 }
260260
261261 /// Apply the bitwise AND operation to the content of two block vectors.
262 pub inline fn andBlocks(block_vec1: Self, block_vec2: Self) Self {
262 pub fn andBlocks(block_vec1: Self, block_vec2: Self) Self {
263263 var out: Self = undefined;
264264 inline for (0..native_words) |i| {
265265 out.repr[i] = block_vec1.repr[i].andBlocks(block_vec2.repr[i]);
......@@ -268,7 +268,7 @@ pub fn BlockVec(comptime blocks_count: comptime_int) type {
268268 }
269269
270270 /// Apply the bitwise OR operation to the content of two block vectors.
271 pub inline fn orBlocks(block_vec1: Self, block_vec2: Block) Self {
271 pub fn orBlocks(block_vec1: Self, block_vec2: Block) Self {
272272 var out: Self = undefined;
273273 inline for (0..native_words) |i| {
274274 out.repr[i] = block_vec1.repr[i].orBlocks(block_vec2.repr[i]);
lib/std/crypto/aes/soft.zig+22-22
......@@ -14,7 +14,7 @@ pub const Block = struct {
1414 repr: Repr align(16),
1515
1616 /// Convert a byte sequence into an internal representation.
17 pub inline fn fromBytes(bytes: *const [16]u8) Block {
17 pub fn fromBytes(bytes: *const [16]u8) Block {
1818 const s0 = mem.readInt(u32, bytes[0..4], .little);
1919 const s1 = mem.readInt(u32, bytes[4..8], .little);
2020 const s2 = mem.readInt(u32, bytes[8..12], .little);
......@@ -23,7 +23,7 @@ pub const Block = struct {
2323 }
2424
2525 /// Convert the internal representation of a block into a byte sequence.
26 pub inline fn toBytes(block: Block) [16]u8 {
26 pub fn toBytes(block: Block) [16]u8 {
2727 var bytes: [16]u8 = undefined;
2828 mem.writeInt(u32, bytes[0..4], block.repr[0], .little);
2929 mem.writeInt(u32, bytes[4..8], block.repr[1], .little);
......@@ -33,7 +33,7 @@ pub const Block = struct {
3333 }
3434
3535 /// XOR the block with a byte sequence.
36 pub inline fn xorBytes(block: Block, bytes: *const [16]u8) [16]u8 {
36 pub fn xorBytes(block: Block, bytes: *const [16]u8) [16]u8 {
3737 const block_bytes = block.toBytes();
3838 var x: [16]u8 = undefined;
3939 comptime var i: usize = 0;
......@@ -44,7 +44,7 @@ pub const Block = struct {
4444 }
4545
4646 /// Encrypt a block with a round key.
47 pub inline fn encrypt(block: Block, round_key: Block) Block {
47 pub fn encrypt(block: Block, round_key: Block) Block {
4848 const s0 = block.repr[0];
4949 const s1 = block.repr[1];
5050 const s2 = block.repr[2];
......@@ -69,7 +69,7 @@ pub const Block = struct {
6969 }
7070
7171 /// Encrypt a block with a round key *WITHOUT ANY PROTECTION AGAINST SIDE CHANNELS*
72 pub inline fn encryptUnprotected(block: Block, round_key: Block) Block {
72 pub fn encryptUnprotected(block: Block, round_key: Block) Block {
7373 const s0 = block.repr[0];
7474 const s1 = block.repr[1];
7575 const s2 = block.repr[2];
......@@ -114,7 +114,7 @@ pub const Block = struct {
114114 }
115115
116116 /// Encrypt a block with the last round key.
117 pub inline fn encryptLast(block: Block, round_key: Block) Block {
117 pub fn encryptLast(block: Block, round_key: Block) Block {
118118 const s0 = block.repr[0];
119119 const s1 = block.repr[1];
120120 const s2 = block.repr[2];
......@@ -140,7 +140,7 @@ pub const Block = struct {
140140 }
141141
142142 /// Decrypt a block with a round key.
143 pub inline fn decrypt(block: Block, round_key: Block) Block {
143 pub fn decrypt(block: Block, round_key: Block) Block {
144144 const s0 = block.repr[0];
145145 const s1 = block.repr[1];
146146 const s2 = block.repr[2];
......@@ -165,7 +165,7 @@ pub const Block = struct {
165165 }
166166
167167 /// Decrypt a block with a round key *WITHOUT ANY PROTECTION AGAINST SIDE CHANNELS*
168 pub inline fn decryptUnprotected(block: Block, round_key: Block) Block {
168 pub fn decryptUnprotected(block: Block, round_key: Block) Block {
169169 const s0 = block.repr[0];
170170 const s1 = block.repr[1];
171171 const s2 = block.repr[2];
......@@ -210,7 +210,7 @@ pub const Block = struct {
210210 }
211211
212212 /// Decrypt a block with the last round key.
213 pub inline fn decryptLast(block: Block, round_key: Block) Block {
213 pub fn decryptLast(block: Block, round_key: Block) Block {
214214 const s0 = block.repr[0];
215215 const s1 = block.repr[1];
216216 const s2 = block.repr[2];
......@@ -236,7 +236,7 @@ pub const Block = struct {
236236 }
237237
238238 /// Apply the bitwise XOR operation to the content of two blocks.
239 pub inline fn xorBlocks(block1: Block, block2: Block) Block {
239 pub fn xorBlocks(block1: Block, block2: Block) Block {
240240 var x: Repr = undefined;
241241 comptime var i = 0;
242242 inline while (i < 4) : (i += 1) {
......@@ -246,7 +246,7 @@ pub const Block = struct {
246246 }
247247
248248 /// Apply the bitwise AND operation to the content of two blocks.
249 pub inline fn andBlocks(block1: Block, block2: Block) Block {
249 pub fn andBlocks(block1: Block, block2: Block) Block {
250250 var x: Repr = undefined;
251251 comptime var i = 0;
252252 inline while (i < 4) : (i += 1) {
......@@ -256,7 +256,7 @@ pub const Block = struct {
256256 }
257257
258258 /// Apply the bitwise OR operation to the content of two blocks.
259 pub inline fn orBlocks(block1: Block, block2: Block) Block {
259 pub fn orBlocks(block1: Block, block2: Block) Block {
260260 var x: Repr = undefined;
261261 comptime var i = 0;
262262 inline while (i < 4) : (i += 1) {
......@@ -353,7 +353,7 @@ pub fn BlockVec(comptime blocks_count: comptime_int) type {
353353 pub const block_length: usize = blocks_count * 16;
354354
355355 /// Convert a byte sequence into an internal representation.
356 pub inline fn fromBytes(bytes: *const [blocks_count * 16]u8) Self {
356 pub fn fromBytes(bytes: *const [blocks_count * 16]u8) Self {
357357 var out: Self = undefined;
358358 for (0..native_words) |i| {
359359 out.repr[i] = Block.fromBytes(bytes[i * native_word_size ..][0..native_word_size]);
......@@ -362,7 +362,7 @@ pub fn BlockVec(comptime blocks_count: comptime_int) type {
362362 }
363363
364364 /// Convert the internal representation of a block vector into a byte sequence.
365 pub inline fn toBytes(block_vec: Self) [blocks_count * 16]u8 {
365 pub fn toBytes(block_vec: Self) [blocks_count * 16]u8 {
366366 var out: [blocks_count * 16]u8 = undefined;
367367 for (0..native_words) |i| {
368368 out[i * native_word_size ..][0..native_word_size].* = block_vec.repr[i].toBytes();
......@@ -371,7 +371,7 @@ pub fn BlockVec(comptime blocks_count: comptime_int) type {
371371 }
372372
373373 /// XOR the block vector with a byte sequence.
374 pub inline fn xorBytes(block_vec: Self, bytes: *const [blocks_count * 16]u8) [32]u8 {
374 pub fn xorBytes(block_vec: Self, bytes: *const [blocks_count * 16]u8) [32]u8 {
375375 var out: Self = undefined;
376376 for (0..native_words) |i| {
377377 out.repr[i] = block_vec.repr[i].xorBytes(bytes[i * native_word_size ..][0..native_word_size]);
......@@ -380,7 +380,7 @@ pub fn BlockVec(comptime blocks_count: comptime_int) type {
380380 }
381381
382382 /// Apply the forward AES operation to the block vector with a vector of round keys.
383 pub inline fn encrypt(block_vec: Self, round_key_vec: Self) Self {
383 pub fn encrypt(block_vec: Self, round_key_vec: Self) Self {
384384 var out: Self = undefined;
385385 for (0..native_words) |i| {
386386 out.repr[i] = block_vec.repr[i].encrypt(round_key_vec.repr[i]);
......@@ -389,7 +389,7 @@ pub fn BlockVec(comptime blocks_count: comptime_int) type {
389389 }
390390
391391 /// Apply the forward AES operation to the block vector with a vector of last round keys.
392 pub inline fn encryptLast(block_vec: Self, round_key_vec: Self) Self {
392 pub fn encryptLast(block_vec: Self, round_key_vec: Self) Self {
393393 var out: Self = undefined;
394394 for (0..native_words) |i| {
395395 out.repr[i] = block_vec.repr[i].encryptLast(round_key_vec.repr[i]);
......@@ -398,7 +398,7 @@ pub fn BlockVec(comptime blocks_count: comptime_int) type {
398398 }
399399
400400 /// Apply the inverse AES operation to the block vector with a vector of round keys.
401 pub inline fn decrypt(block_vec: Self, inv_round_key_vec: Self) Self {
401 pub fn decrypt(block_vec: Self, inv_round_key_vec: Self) Self {
402402 var out: Self = undefined;
403403 for (0..native_words) |i| {
404404 out.repr[i] = block_vec.repr[i].decrypt(inv_round_key_vec.repr[i]);
......@@ -407,7 +407,7 @@ pub fn BlockVec(comptime blocks_count: comptime_int) type {
407407 }
408408
409409 /// Apply the inverse AES operation to the block vector with a vector of last round keys.
410 pub inline fn decryptLast(block_vec: Self, inv_round_key_vec: Self) Self {
410 pub fn decryptLast(block_vec: Self, inv_round_key_vec: Self) Self {
411411 var out: Self = undefined;
412412 for (0..native_words) |i| {
413413 out.repr[i] = block_vec.repr[i].decryptLast(inv_round_key_vec.repr[i]);
......@@ -416,7 +416,7 @@ pub fn BlockVec(comptime blocks_count: comptime_int) type {
416416 }
417417
418418 /// Apply the bitwise XOR operation to the content of two block vectors.
419 pub inline fn xorBlocks(block_vec1: Self, block_vec2: Self) Self {
419 pub fn xorBlocks(block_vec1: Self, block_vec2: Self) Self {
420420 var out: Self = undefined;
421421 for (0..native_words) |i| {
422422 out.repr[i] = block_vec1.repr[i].xorBlocks(block_vec2.repr[i]);
......@@ -425,7 +425,7 @@ pub fn BlockVec(comptime blocks_count: comptime_int) type {
425425 }
426426
427427 /// Apply the bitwise AND operation to the content of two block vectors.
428 pub inline fn andBlocks(block_vec1: Self, block_vec2: Self) Self {
428 pub fn andBlocks(block_vec1: Self, block_vec2: Self) Self {
429429 var out: Self = undefined;
430430 for (0..native_words) |i| {
431431 out.repr[i] = block_vec1.repr[i].andBlocks(block_vec2.repr[i]);
......@@ -434,7 +434,7 @@ pub fn BlockVec(comptime blocks_count: comptime_int) type {
434434 }
435435
436436 /// Apply the bitwise OR operation to the content of two block vectors.
437 pub inline fn orBlocks(block_vec1: Self, block_vec2: Block) Self {
437 pub fn orBlocks(block_vec1: Self, block_vec2: Block) Self {
438438 var out: Self = undefined;
439439 for (0..native_words) |i| {
440440 out.repr[i] = block_vec1.repr[i].orBlocks(block_vec2.repr[i]);
lib/std/crypto/aes_gcm.zig+6
......@@ -21,6 +21,12 @@ fn AesGcm(comptime Aes: anytype) type {
2121
2222 const zeros = [_]u8{0} ** 16;
2323
24 /// `c`: The ciphertext buffer to write the encrypted data to.
25 /// `tag`: The authentication tag buffer to write the computed tag to.
26 /// `m`: The plaintext message to encrypt.
27 /// `ad`: The associated data to authenticate.
28 /// `npub`: The nonce to use for encryption.
29 /// `key`: The encryption key.
2430 pub fn encrypt(c: []u8, tag: *[tag_length]u8, m: []const u8, ad: []const u8, npub: [nonce_length]u8, key: [key_length]u8) void {
2531 debug.assert(c.len == m.len);
2632 debug.assert(m.len <= 16 * ((1 << 32) - 2));
lib/std/crypto/aes_ocb.zig+3-3
......@@ -28,7 +28,7 @@ fn AesOcb(comptime Aes: anytype) type {
2828 table: [56]Block align(16) = undefined,
2929 upto: usize,
3030
31 inline fn double(l: Block) Block {
31 fn double(l: Block) Block {
3232 const l_ = mem.readInt(u128, &l, .big);
3333 const l_2 = (l_ << 1) ^ (0x87 & -%(l_ >> 127));
3434 var l2: Block = undefined;
......@@ -244,7 +244,7 @@ fn AesOcb(comptime Aes: anytype) type {
244244 };
245245}
246246
247inline fn xorBlocks(x: Block, y: Block) Block {
247fn xorBlocks(x: Block, y: Block) Block {
248248 var z: Block = x;
249249 for (&z, 0..) |*v, i| {
250250 v.* = x[i] ^ y[i];
......@@ -252,7 +252,7 @@ inline fn xorBlocks(x: Block, y: Block) Block {
252252 return z;
253253}
254254
255inline fn xorWith(x: *Block, y: Block) void {
255fn xorWith(x: *Block, y: Block) void {
256256 for (x, 0..) |*v, i| {
257257 v.* ^= y[i];
258258 }
lib/std/crypto/ascon.zig+4-4
......@@ -157,7 +157,7 @@ pub fn State(comptime endian: std.builtin.Endian) type {
157157 }
158158
159159 /// Apply a reduced-round permutation to the state.
160 pub inline fn permuteR(state: *Self, comptime rounds: u4) void {
160 pub fn permuteR(state: *Self, comptime rounds: u4) void {
161161 const rks = [16]u64{ 0x3c, 0x2d, 0x1e, 0x0f, 0xf0, 0xe1, 0xd2, 0xc3, 0xb4, 0xa5, 0x96, 0x87, 0x78, 0x69, 0x5a, 0x4b };
162162 inline for (rks[rks.len - rounds ..]) |rk| {
163163 state.round(rk);
......@@ -165,13 +165,13 @@ pub fn State(comptime endian: std.builtin.Endian) type {
165165 }
166166
167167 /// Apply a full-round permutation to the state.
168 pub inline fn permute(state: *Self) void {
168 pub fn permute(state: *Self) void {
169169 state.permuteR(12);
170170 }
171171
172172 /// Apply a permutation to the state and prevent backtracking.
173173 /// The rate is expressed in bytes and must be a multiple of the word size (8).
174 pub inline fn permuteRatchet(state: *Self, comptime rounds: u4, comptime rate: u6) void {
174 pub fn permuteRatchet(state: *Self, comptime rounds: u4, comptime rate: u6) void {
175175 const capacity = block_bytes - rate;
176176 debug.assert(capacity > 0 and capacity % 8 == 0); // capacity must be a multiple of 64 bits
177177 var mask: [capacity / 8]u64 = undefined;
......@@ -181,7 +181,7 @@ pub fn State(comptime endian: std.builtin.Endian) type {
181181 }
182182
183183 // Core Ascon permutation.
184 inline fn round(state: *Self, rk: u64) void {
184 fn round(state: *Self, rk: u64) void {
185185 const x = &state.st;
186186 x[2] ^= rk;
187187
lib/std/crypto/blake3.zig+3-3
......@@ -61,7 +61,7 @@ const CompressVectorized = struct {
6161 const Lane = @Vector(4, u32);
6262 const Rows = [4]Lane;
6363
64 inline fn g(comptime even: bool, rows: *Rows, m: Lane) void {
64 fn g(comptime even: bool, rows: *Rows, m: Lane) void {
6565 rows[0] +%= rows[1] +% m;
6666 rows[3] ^= rows[0];
6767 rows[3] = math.rotr(Lane, rows[3], if (even) 8 else 16);
......@@ -70,13 +70,13 @@ const CompressVectorized = struct {
7070 rows[1] = math.rotr(Lane, rows[1], if (even) 7 else 12);
7171 }
7272
73 inline fn diagonalize(rows: *Rows) void {
73 fn diagonalize(rows: *Rows) void {
7474 rows[0] = @shuffle(u32, rows[0], undefined, [_]i32{ 3, 0, 1, 2 });
7575 rows[3] = @shuffle(u32, rows[3], undefined, [_]i32{ 2, 3, 0, 1 });
7676 rows[2] = @shuffle(u32, rows[2], undefined, [_]i32{ 1, 2, 3, 0 });
7777 }
7878
79 inline fn undiagonalize(rows: *Rows) void {
79 fn undiagonalize(rows: *Rows) void {
8080 rows[0] = @shuffle(u32, rows[0], undefined, [_]i32{ 1, 2, 3, 0 });
8181 rows[3] = @shuffle(u32, rows[3], undefined, [_]i32{ 2, 3, 0, 1 });
8282 rows[2] = @shuffle(u32, rows[2], undefined, [_]i32{ 3, 0, 1, 2 });
lib/std/crypto/chacha20.zig+6-6
......@@ -151,7 +151,7 @@ fn ChaChaVecImpl(comptime rounds_nb: usize, comptime degree: comptime_int) type
151151 }
152152 }
153153
154 inline fn chacha20Core(x: *BlockVec, input: BlockVec) void {
154 fn chacha20Core(x: *BlockVec, input: BlockVec) void {
155155 x.* = input;
156156
157157 const m0 = switch (degree) {
......@@ -215,7 +215,7 @@ fn ChaChaVecImpl(comptime rounds_nb: usize, comptime degree: comptime_int) type
215215 }
216216 }
217217
218 inline fn hashToBytes(comptime dm: usize, out: *[64 * dm]u8, x: BlockVec) void {
218 fn hashToBytes(comptime dm: usize, out: *[64 * dm]u8, x: BlockVec) void {
219219 for (0..dm) |d| {
220220 for (0..4) |i| {
221221 mem.writeInt(u32, out[64 * d + 16 * i + 0 ..][0..4], x[i][0 + 4 * d], .little);
......@@ -226,7 +226,7 @@ fn ChaChaVecImpl(comptime rounds_nb: usize, comptime degree: comptime_int) type
226226 }
227227 }
228228
229 inline fn contextFeedback(x: *BlockVec, ctx: BlockVec) void {
229 fn contextFeedback(x: *BlockVec, ctx: BlockVec) void {
230230 x[0] +%= ctx[0];
231231 x[1] +%= ctx[1];
232232 x[2] +%= ctx[2];
......@@ -365,7 +365,7 @@ fn ChaChaNonVecImpl(comptime rounds_nb: usize) type {
365365 };
366366 }
367367
368 inline fn chacha20Core(x: *BlockVec, input: BlockVec) void {
368 fn chacha20Core(x: *BlockVec, input: BlockVec) void {
369369 x.* = input;
370370
371371 const rounds = comptime [_]QuarterRound{
......@@ -394,7 +394,7 @@ fn ChaChaNonVecImpl(comptime rounds_nb: usize) type {
394394 }
395395 }
396396
397 inline fn hashToBytes(out: *[64]u8, x: BlockVec) void {
397 fn hashToBytes(out: *[64]u8, x: BlockVec) void {
398398 for (0..4) |i| {
399399 mem.writeInt(u32, out[16 * i + 0 ..][0..4], x[i * 4 + 0], .little);
400400 mem.writeInt(u32, out[16 * i + 4 ..][0..4], x[i * 4 + 1], .little);
......@@ -403,7 +403,7 @@ fn ChaChaNonVecImpl(comptime rounds_nb: usize) type {
403403 }
404404 }
405405
406 inline fn contextFeedback(x: *BlockVec, ctx: BlockVec) void {
406 fn contextFeedback(x: *BlockVec, ctx: BlockVec) void {
407407 for (0..16) |i| {
408408 x[i] +%= ctx[i];
409409 }
lib/std/crypto/codecs/base64_hex_ct.zig+7-7
......@@ -280,34 +280,34 @@ pub const base64 = struct {
280280 return DecoderWithIgnore{ .ignored_chars = ignored_chars };
281281 }
282282
283 inline fn eq(x: u8, y: u8) u8 {
283 fn eq(x: u8, y: u8) u8 {
284284 return ~@as(u8, @truncate((0 -% (@as(u16, x) ^ @as(u16, y))) >> 8));
285285 }
286286
287 inline fn gt(x: u8, y: u8) u8 {
287 fn gt(x: u8, y: u8) u8 {
288288 return @truncate((@as(u16, y) -% @as(u16, x)) >> 8);
289289 }
290290
291 inline fn ge(x: u8, y: u8) u8 {
291 fn ge(x: u8, y: u8) u8 {
292292 return ~gt(y, x);
293293 }
294294
295 inline fn lt(x: u8, y: u8) u8 {
295 fn lt(x: u8, y: u8) u8 {
296296 return gt(y, x);
297297 }
298298
299 inline fn le(x: u8, y: u8) u8 {
299 fn le(x: u8, y: u8) u8 {
300300 return ge(y, x);
301301 }
302302
303 inline fn charFromByte(x: u8, comptime urlsafe: bool) u8 {
303 fn charFromByte(x: u8, comptime urlsafe: bool) u8 {
304304 return (lt(x, 26) & (x +% 'A')) |
305305 (ge(x, 26) & lt(x, 52) & (x +% 'a' -% 26)) |
306306 (ge(x, 52) & lt(x, 62) & (x +% '0' -% 52)) |
307307 (eq(x, 62) & '+') | (eq(x, 63) & if (urlsafe) '_' else '/');
308308 }
309309
310 inline fn byteFromChar(c: u8, comptime urlsafe: bool) u8 {
310 fn byteFromChar(c: u8, comptime urlsafe: bool) u8 {
311311 const x =
312312 (ge(c, 'A') & le(c, 'Z') & (c -% 'A')) |
313313 (ge(c, 'a') & le(c, 'z') & (c -% 'a' +% 26)) |
lib/std/crypto/ghash_polyval.zig+5-5
......@@ -89,7 +89,7 @@ fn Hash(comptime endian: std.builtin.Endian, comptime shift_key: bool) type {
8989 const Selector = enum { lo, hi, hi_lo };
9090
9191 // Carryless multiplication of two 64-bit integers for x86_64.
92 inline fn clmulPclmul(x: u128, y: u128, comptime half: Selector) u128 {
92 fn clmulPclmul(x: u128, y: u128, comptime half: Selector) u128 {
9393 switch (half) {
9494 .hi => {
9595 const product = asm (
......@@ -122,7 +122,7 @@ fn Hash(comptime endian: std.builtin.Endian, comptime shift_key: bool) type {
122122 }
123123
124124 // Carryless multiplication of two 64-bit integers for ARM crypto.
125 inline fn clmulPmull(x: u128, y: u128, comptime half: Selector) u128 {
125 fn clmulPmull(x: u128, y: u128, comptime half: Selector) u128 {
126126 switch (half) {
127127 .hi => {
128128 const product = asm (
......@@ -231,7 +231,7 @@ fn Hash(comptime endian: std.builtin.Endian, comptime shift_key: bool) type {
231231 mid: u128,
232232 };
233233
234 inline fn xor256(x: *I256, y: I256) void {
234 fn xor256(x: *I256, y: I256) void {
235235 x.* = I256{
236236 .hi = x.hi ^ y.hi,
237237 .lo = x.lo ^ y.lo,
......@@ -249,7 +249,7 @@ fn Hash(comptime endian: std.builtin.Endian, comptime shift_key: bool) type {
249249 }
250250
251251 // Multiply two 128-bit integers in GF(2^128).
252 inline fn clmul128(x: u128, y: u128) I256 {
252 fn clmul128(x: u128, y: u128) I256 {
253253 if (mul_algorithm == .karatsuba) {
254254 const x_hi = @as(u64, @truncate(x >> 64));
255255 const y_hi = @as(u64, @truncate(y >> 64));
......@@ -273,7 +273,7 @@ fn Hash(comptime endian: std.builtin.Endian, comptime shift_key: bool) type {
273273 // Reduce a 256-bit representative of a polynomial modulo the irreducible polynomial x^128 + x^127 + x^126 + x^121 + 1.
274274 // This is done using Shay Gueron's black magic demysticated here:
275275 // https://blog.quarkslab.com/reversing-a-finite-field-multiplication-optimization.html
276 inline fn reduce(x: I256) u128 {
276 fn reduce(x: I256) u128 {
277277 const hi = x.hi ^ (x.mid >> 64);
278278 const lo = x.lo ^ (x.mid << 64);
279279 const p64 = (((1 << 121) | (1 << 126) | (1 << 127)) >> 64);
lib/std/crypto/pcurves/p256/p256_64.zig+4-4
......@@ -72,7 +72,7 @@ pub const NonMontgomeryDomainFieldElement = [4]u64;
7272/// Output Bounds:
7373/// out1: [0x0 ~> 0xffffffffffffffff]
7474/// out2: [0x0 ~> 0x1]
75inline fn addcarryxU64(out1: *u64, out2: *u1, arg1: u1, arg2: u64, arg3: u64) void {
75fn addcarryxU64(out1: *u64, out2: *u1, arg1: u1, arg2: u64, arg3: u64) void {
7676 const x = @as(u128, arg2) +% arg3 +% arg1;
7777 out1.* = @truncate(x);
7878 out2.* = @truncate(x >> 64);
......@@ -91,7 +91,7 @@ inline fn addcarryxU64(out1: *u64, out2: *u1, arg1: u1, arg2: u64, arg3: u64) vo
9191/// Output Bounds:
9292/// out1: [0x0 ~> 0xffffffffffffffff]
9393/// out2: [0x0 ~> 0x1]
94inline fn subborrowxU64(out1: *u64, out2: *u1, arg1: u1, arg2: u64, arg3: u64) void {
94fn subborrowxU64(out1: *u64, out2: *u1, arg1: u1, arg2: u64, arg3: u64) void {
9595 const x = @as(u128, arg2) -% arg3 -% arg1;
9696 out1.* = @truncate(x);
9797 out2.* = @truncate(x >> 64);
......@@ -109,7 +109,7 @@ inline fn subborrowxU64(out1: *u64, out2: *u1, arg1: u1, arg2: u64, arg3: u64) v
109109/// Output Bounds:
110110/// out1: [0x0 ~> 0xffffffffffffffff]
111111/// out2: [0x0 ~> 0xffffffffffffffff]
112inline fn mulxU64(out1: *u64, out2: *u64, arg1: u64, arg2: u64) void {
112fn mulxU64(out1: *u64, out2: *u64, arg1: u64, arg2: u64) void {
113113 @setRuntimeSafety(mode == .Debug);
114114
115115 const x = @as(u128, arg1) * @as(u128, arg2);
......@@ -128,7 +128,7 @@ inline fn mulxU64(out1: *u64, out2: *u64, arg1: u64, arg2: u64) void {
128128/// arg3: [0x0 ~> 0xffffffffffffffff]
129129/// Output Bounds:
130130/// out1: [0x0 ~> 0xffffffffffffffff]
131inline fn cmovznzU64(out1: *u64, arg1: u1, arg2: u64, arg3: u64) void {
131fn cmovznzU64(out1: *u64, arg1: u1, arg2: u64, arg3: u64) void {
132132 @setRuntimeSafety(mode == .Debug);
133133
134134 const mask = 0 -% @as(u64, arg1);
lib/std/crypto/pcurves/p256/p256_scalar_64.zig+4-4
......@@ -72,7 +72,7 @@ pub const NonMontgomeryDomainFieldElement = [4]u64;
7272/// Output Bounds:
7373/// out1: [0x0 ~> 0xffffffffffffffff]
7474/// out2: [0x0 ~> 0x1]
75inline fn addcarryxU64(out1: *u64, out2: *u1, arg1: u1, arg2: u64, arg3: u64) void {
75fn addcarryxU64(out1: *u64, out2: *u1, arg1: u1, arg2: u64, arg3: u64) void {
7676 const x = @as(u128, arg2) +% arg3 +% arg1;
7777 out1.* = @truncate(x);
7878 out2.* = @truncate(x >> 64);
......@@ -91,7 +91,7 @@ inline fn addcarryxU64(out1: *u64, out2: *u1, arg1: u1, arg2: u64, arg3: u64) vo
9191/// Output Bounds:
9292/// out1: [0x0 ~> 0xffffffffffffffff]
9393/// out2: [0x0 ~> 0x1]
94inline fn subborrowxU64(out1: *u64, out2: *u1, arg1: u1, arg2: u64, arg3: u64) void {
94fn subborrowxU64(out1: *u64, out2: *u1, arg1: u1, arg2: u64, arg3: u64) void {
9595 const x = @as(u128, arg2) -% arg3 -% arg1;
9696 out1.* = @truncate(x);
9797 out2.* = @truncate(x >> 64);
......@@ -109,7 +109,7 @@ inline fn subborrowxU64(out1: *u64, out2: *u1, arg1: u1, arg2: u64, arg3: u64) v
109109/// Output Bounds:
110110/// out1: [0x0 ~> 0xffffffffffffffff]
111111/// out2: [0x0 ~> 0xffffffffffffffff]
112inline fn mulxU64(out1: *u64, out2: *u64, arg1: u64, arg2: u64) void {
112fn mulxU64(out1: *u64, out2: *u64, arg1: u64, arg2: u64) void {
113113 @setRuntimeSafety(mode == .Debug);
114114
115115 const x = @as(u128, arg1) * @as(u128, arg2);
......@@ -128,7 +128,7 @@ inline fn mulxU64(out1: *u64, out2: *u64, arg1: u64, arg2: u64) void {
128128/// arg3: [0x0 ~> 0xffffffffffffffff]
129129/// Output Bounds:
130130/// out1: [0x0 ~> 0xffffffffffffffff]
131inline fn cmovznzU64(out1: *u64, arg1: u1, arg2: u64, arg3: u64) void {
131fn cmovznzU64(out1: *u64, arg1: u1, arg2: u64, arg3: u64) void {
132132 @setRuntimeSafety(mode == .Debug);
133133
134134 const mask = 0 -% @as(u64, arg1);
lib/std/crypto/pcurves/p384/p384_64.zig+4-4
......@@ -41,7 +41,7 @@ pub const NonMontgomeryDomainFieldElement = [6]u64;
4141/// Output Bounds:
4242/// out1: [0x0 ~> 0xffffffffffffffff]
4343/// out2: [0x0 ~> 0x1]
44inline fn addcarryxU64(out1: *u64, out2: *u1, arg1: u1, arg2: u64, arg3: u64) void {
44fn addcarryxU64(out1: *u64, out2: *u1, arg1: u1, arg2: u64, arg3: u64) void {
4545 const x = @as(u128, arg2) +% arg3 +% arg1;
4646 out1.* = @truncate(x);
4747 out2.* = @truncate(x >> 64);
......@@ -60,7 +60,7 @@ inline fn addcarryxU64(out1: *u64, out2: *u1, arg1: u1, arg2: u64, arg3: u64) vo
6060/// Output Bounds:
6161/// out1: [0x0 ~> 0xffffffffffffffff]
6262/// out2: [0x0 ~> 0x1]
63inline fn subborrowxU64(out1: *u64, out2: *u1, arg1: u1, arg2: u64, arg3: u64) void {
63fn subborrowxU64(out1: *u64, out2: *u1, arg1: u1, arg2: u64, arg3: u64) void {
6464 const x = @as(u128, arg2) -% arg3 -% arg1;
6565 out1.* = @truncate(x);
6666 out2.* = @truncate(x >> 64);
......@@ -78,7 +78,7 @@ inline fn subborrowxU64(out1: *u64, out2: *u1, arg1: u1, arg2: u64, arg3: u64) v
7878/// Output Bounds:
7979/// out1: [0x0 ~> 0xffffffffffffffff]
8080/// out2: [0x0 ~> 0xffffffffffffffff]
81inline fn mulxU64(out1: *u64, out2: *u64, arg1: u64, arg2: u64) void {
81fn mulxU64(out1: *u64, out2: *u64, arg1: u64, arg2: u64) void {
8282 @setRuntimeSafety(mode == .Debug);
8383
8484 const x = @as(u128, arg1) * @as(u128, arg2);
......@@ -97,7 +97,7 @@ inline fn mulxU64(out1: *u64, out2: *u64, arg1: u64, arg2: u64) void {
9797/// arg3: [0x0 ~> 0xffffffffffffffff]
9898/// Output Bounds:
9999/// out1: [0x0 ~> 0xffffffffffffffff]
100inline fn cmovznzU64(out1: *u64, arg1: u1, arg2: u64, arg3: u64) void {
100fn cmovznzU64(out1: *u64, arg1: u1, arg2: u64, arg3: u64) void {
101101 @setRuntimeSafety(mode == .Debug);
102102
103103 const mask = 0 -% @as(u64, arg1);
lib/std/crypto/pcurves/p384/p384_scalar_64.zig+4-4
......@@ -41,7 +41,7 @@ pub const NonMontgomeryDomainFieldElement = [6]u64;
4141/// Output Bounds:
4242/// out1: [0x0 ~> 0xffffffffffffffff]
4343/// out2: [0x0 ~> 0x1]
44inline fn addcarryxU64(out1: *u64, out2: *u1, arg1: u1, arg2: u64, arg3: u64) void {
44fn addcarryxU64(out1: *u64, out2: *u1, arg1: u1, arg2: u64, arg3: u64) void {
4545 const x = @as(u128, arg2) +% arg3 +% arg1;
4646 out1.* = @truncate(x);
4747 out2.* = @truncate(x >> 64);
......@@ -60,7 +60,7 @@ inline fn addcarryxU64(out1: *u64, out2: *u1, arg1: u1, arg2: u64, arg3: u64) vo
6060/// Output Bounds:
6161/// out1: [0x0 ~> 0xffffffffffffffff]
6262/// out2: [0x0 ~> 0x1]
63inline fn subborrowxU64(out1: *u64, out2: *u1, arg1: u1, arg2: u64, arg3: u64) void {
63fn subborrowxU64(out1: *u64, out2: *u1, arg1: u1, arg2: u64, arg3: u64) void {
6464 const x = @as(u128, arg2) -% arg3 -% arg1;
6565 out1.* = @truncate(x);
6666 out2.* = @truncate(x >> 64);
......@@ -78,7 +78,7 @@ inline fn subborrowxU64(out1: *u64, out2: *u1, arg1: u1, arg2: u64, arg3: u64) v
7878/// Output Bounds:
7979/// out1: [0x0 ~> 0xffffffffffffffff]
8080/// out2: [0x0 ~> 0xffffffffffffffff]
81inline fn mulxU64(out1: *u64, out2: *u64, arg1: u64, arg2: u64) void {
81fn mulxU64(out1: *u64, out2: *u64, arg1: u64, arg2: u64) void {
8282 @setRuntimeSafety(mode == .Debug);
8383
8484 const x = @as(u128, arg1) * @as(u128, arg2);
......@@ -97,7 +97,7 @@ inline fn mulxU64(out1: *u64, out2: *u64, arg1: u64, arg2: u64) void {
9797/// arg3: [0x0 ~> 0xffffffffffffffff]
9898/// Output Bounds:
9999/// out1: [0x0 ~> 0xffffffffffffffff]
100inline fn cmovznzU64(out1: *u64, arg1: u1, arg2: u64, arg3: u64) void {
100fn cmovznzU64(out1: *u64, arg1: u1, arg2: u64, arg3: u64) void {
101101 @setRuntimeSafety(mode == .Debug);
102102
103103 const mask = 0 -% @as(u64, arg1);
lib/std/crypto/pcurves/secp256k1/secp256k1_64.zig+4-4
......@@ -41,7 +41,7 @@ pub const NonMontgomeryDomainFieldElement = [4]u64;
4141/// Output Bounds:
4242/// out1: [0x0 ~> 0xffffffffffffffff]
4343/// out2: [0x0 ~> 0x1]
44inline fn addcarryxU64(out1: *u64, out2: *u1, arg1: u1, arg2: u64, arg3: u64) void {
44fn addcarryxU64(out1: *u64, out2: *u1, arg1: u1, arg2: u64, arg3: u64) void {
4545 const x = @as(u128, arg2) +% arg3 +% arg1;
4646 out1.* = @truncate(x);
4747 out2.* = @truncate(x >> 64);
......@@ -60,7 +60,7 @@ inline fn addcarryxU64(out1: *u64, out2: *u1, arg1: u1, arg2: u64, arg3: u64) vo
6060/// Output Bounds:
6161/// out1: [0x0 ~> 0xffffffffffffffff]
6262/// out2: [0x0 ~> 0x1]
63inline fn subborrowxU64(out1: *u64, out2: *u1, arg1: u1, arg2: u64, arg3: u64) void {
63fn subborrowxU64(out1: *u64, out2: *u1, arg1: u1, arg2: u64, arg3: u64) void {
6464 const x = @as(u128, arg2) -% arg3 -% arg1;
6565 out1.* = @truncate(x);
6666 out2.* = @truncate(x >> 64);
......@@ -78,7 +78,7 @@ inline fn subborrowxU64(out1: *u64, out2: *u1, arg1: u1, arg2: u64, arg3: u64) v
7878/// Output Bounds:
7979/// out1: [0x0 ~> 0xffffffffffffffff]
8080/// out2: [0x0 ~> 0xffffffffffffffff]
81inline fn mulxU64(out1: *u64, out2: *u64, arg1: u64, arg2: u64) void {
81fn mulxU64(out1: *u64, out2: *u64, arg1: u64, arg2: u64) void {
8282 @setRuntimeSafety(mode == .Debug);
8383
8484 const x = @as(u128, arg1) * @as(u128, arg2);
......@@ -97,7 +97,7 @@ inline fn mulxU64(out1: *u64, out2: *u64, arg1: u64, arg2: u64) void {
9797/// arg3: [0x0 ~> 0xffffffffffffffff]
9898/// Output Bounds:
9999/// out1: [0x0 ~> 0xffffffffffffffff]
100inline fn cmovznzU64(out1: *u64, arg1: u1, arg2: u64, arg3: u64) void {
100fn cmovznzU64(out1: *u64, arg1: u1, arg2: u64, arg3: u64) void {
101101 @setRuntimeSafety(mode == .Debug);
102102
103103 const mask = 0 -% @as(u64, arg1);
lib/std/crypto/pcurves/secp256k1/secp256k1_scalar_64.zig+4-4
......@@ -41,7 +41,7 @@ pub const NonMontgomeryDomainFieldElement = [4]u64;
4141/// Output Bounds:
4242/// out1: [0x0 ~> 0xffffffffffffffff]
4343/// out2: [0x0 ~> 0x1]
44inline fn addcarryxU64(out1: *u64, out2: *u1, arg1: u1, arg2: u64, arg3: u64) void {
44fn addcarryxU64(out1: *u64, out2: *u1, arg1: u1, arg2: u64, arg3: u64) void {
4545 const x = @as(u128, arg2) +% arg3 +% arg1;
4646 out1.* = @truncate(x);
4747 out2.* = @truncate(x >> 64);
......@@ -60,7 +60,7 @@ inline fn addcarryxU64(out1: *u64, out2: *u1, arg1: u1, arg2: u64, arg3: u64) vo
6060/// Output Bounds:
6161/// out1: [0x0 ~> 0xffffffffffffffff]
6262/// out2: [0x0 ~> 0x1]
63inline fn subborrowxU64(out1: *u64, out2: *u1, arg1: u1, arg2: u64, arg3: u64) void {
63fn subborrowxU64(out1: *u64, out2: *u1, arg1: u1, arg2: u64, arg3: u64) void {
6464 const x = @as(u128, arg2) -% arg3 -% arg1;
6565 out1.* = @truncate(x);
6666 out2.* = @truncate(x >> 64);
......@@ -78,7 +78,7 @@ inline fn subborrowxU64(out1: *u64, out2: *u1, arg1: u1, arg2: u64, arg3: u64) v
7878/// Output Bounds:
7979/// out1: [0x0 ~> 0xffffffffffffffff]
8080/// out2: [0x0 ~> 0xffffffffffffffff]
81inline fn mulxU64(out1: *u64, out2: *u64, arg1: u64, arg2: u64) void {
81fn mulxU64(out1: *u64, out2: *u64, arg1: u64, arg2: u64) void {
8282 @setRuntimeSafety(mode == .Debug);
8383
8484 const x = @as(u128, arg1) * @as(u128, arg2);
......@@ -97,7 +97,7 @@ inline fn mulxU64(out1: *u64, out2: *u64, arg1: u64, arg2: u64) void {
9797/// arg3: [0x0 ~> 0xffffffffffffffff]
9898/// Output Bounds:
9999/// out1: [0x0 ~> 0xffffffffffffffff]
100inline fn cmovznzU64(out1: *u64, arg1: u1, arg2: u64, arg3: u64) void {
100fn cmovznzU64(out1: *u64, arg1: u1, arg2: u64, arg3: u64) void {
101101 @setRuntimeSafety(mode == .Debug);
102102
103103 const mask = 0 -% @as(u64, arg1);
lib/std/crypto/poly1305.zig+2-2
......@@ -31,13 +31,13 @@ pub const Poly1305 = struct {
3131 };
3232 }
3333
34 inline fn add(a: u64, b: u64, c: u1) struct { u64, u1 } {
34 fn add(a: u64, b: u64, c: u1) struct { u64, u1 } {
3535 const v1 = @addWithOverflow(a, b);
3636 const v2 = @addWithOverflow(v1[0], c);
3737 return .{ v2[0], v1[1] | v2[1] };
3838 }
3939
40 inline fn sub(a: u64, b: u64, c: u1) struct { u64, u1 } {
40 fn sub(a: u64, b: u64, c: u1) struct { u64, u1 } {
4141 const v1 = @subWithOverflow(a, b);
4242 const v2 = @subWithOverflow(v1[0], c);
4343 return .{ v2[0], v1[1] | v2[1] };
lib/std/crypto/salsa20.zig+3-3
......@@ -41,7 +41,7 @@ fn SalsaVecImpl(comptime rounds: comptime_int) type {
4141 };
4242 }
4343
44 inline fn salsaCore(x: *BlockVec, input: BlockVec, comptime feedback: bool) void {
44 fn salsaCore(x: *BlockVec, input: BlockVec, comptime feedback: bool) void {
4545 const n1n2n3n0 = Lane{ input[3][1], input[3][2], input[3][3], input[3][0] };
4646 const n1n2 = Half{ n1n2n3n0[0], n1n2n3n0[1] };
4747 const n3n0 = Half{ n1n2n3n0[2], n1n2n3n0[3] };
......@@ -203,7 +203,7 @@ fn SalsaNonVecImpl(comptime rounds: comptime_int) type {
203203 d: u6,
204204 };
205205
206 inline fn Rp(a: usize, b: usize, c: usize, d: u6) QuarterRound {
206 fn Rp(a: usize, b: usize, c: usize, d: u6) QuarterRound {
207207 return QuarterRound{
208208 .a = a,
209209 .b = b,
......@@ -212,7 +212,7 @@ fn SalsaNonVecImpl(comptime rounds: comptime_int) type {
212212 };
213213 }
214214
215 inline fn salsaCore(x: *BlockVec, input: BlockVec, comptime feedback: bool) void {
215 fn salsaCore(x: *BlockVec, input: BlockVec, comptime feedback: bool) void {
216216 const arx_steps = comptime [_]QuarterRound{
217217 Rp(4, 0, 12, 7), Rp(8, 4, 0, 9), Rp(12, 8, 4, 13), Rp(0, 12, 8, 18),
218218 Rp(9, 5, 1, 7), Rp(13, 9, 5, 9), Rp(1, 13, 9, 13), Rp(5, 1, 13, 18),
lib/std/crypto/timing_safe.zig+1-1
......@@ -265,7 +265,7 @@ test classify {
265265
266266 // Comparing secret data must be done in constant time. The result
267267 // is going to be considered as secret as well.
268 var res = std.crypto.utils.timingSafeEql([32]u8, out, secret);
268 var res = std.crypto.timing_safe.eql([32]u8, out, secret);
269269
270270 // If we want to make a conditional jump based on a secret,
271271 // it has to be declassified.
lib/std/crypto/tls.zig+3-3
......@@ -593,11 +593,11 @@ pub fn hmac(comptime Hmac: type, message: []const u8, key: [Hmac.key_length]u8)
593593 return result;
594594}
595595
596pub inline fn extension(et: ExtensionType, bytes: anytype) [2 + 2 + bytes.len]u8 {
596pub fn extension(et: ExtensionType, bytes: anytype) [2 + 2 + bytes.len]u8 {
597597 return int(u16, @intFromEnum(et)) ++ array(u16, u8, bytes);
598598}
599599
600pub inline fn array(
600pub fn array(
601601 comptime Len: type,
602602 comptime Elem: type,
603603 elems: anytype,
......@@ -622,7 +622,7 @@ pub inline fn array(
622622 return arr;
623623}
624624
625pub inline fn int(comptime Int: type, val: Int) [@divExact(@bitSizeOf(Int), 8)]u8 {
625pub fn int(comptime Int: type, val: Int) [@divExact(@bitSizeOf(Int), 8)]u8 {
626626 var arr: [@divExact(@bitSizeOf(Int), 8)]u8 = undefined;
627627 std.mem.writeInt(Int, &arr, val, .big);
628628 return arr;
lib/std/crypto/tls/Client.zig+1-1
......@@ -1235,7 +1235,7 @@ fn logSecrets(w: *Writer, context: anytype, secrets: anytype) void {
12351235 }) catch {};
12361236}
12371237
1238inline fn big(x: anytype) @TypeOf(x) {
1238fn big(x: anytype) @TypeOf(x) {
12391239 return switch (native_endian) {
12401240 .big => x,
12411241 .little => @byteSwap(x),
lib/std/debug.zig+2-7
......@@ -231,10 +231,6 @@ pub fn print(comptime fmt: []const u8, args: anytype) void {
231231 nosuspend w.print(fmt, args) catch return;
232232}
233233
234pub fn getStderrMutex() *std.Thread.Mutex {
235 @compileError("deprecated. call std.debug.lockStdErr() and std.debug.unlockStdErr() instead which will integrate properly with std.Progress");
236}
237
238234/// TODO multithreaded awareness
239235var self_debug_info: ?SelfInfo = null;
240236
......@@ -658,9 +654,8 @@ pub fn defaultPanic(
658654
659655 if (uefi.system_table.boot_services) |bs| {
660656 // ExitData buffer must be allocated using boot_services.allocatePool (spec: page 220)
661 const exit_data: []u16 = uefi.raw_pool_allocator.alloc(u16, exit_msg.len + 1) catch @trap();
662 @memcpy(exit_data, exit_msg[0..exit_data.len]); // Includes null terminator.
663 _ = bs.exit(uefi.handle, .aborted, exit_data.len, exit_data.ptr);
657 const exit_data = uefi.raw_pool_allocator.dupeZ(u16, exit_msg) catch @trap();
658 bs.exit(uefi.handle, .aborted, exit_data) catch {};
664659 }
665660 @trap();
666661 },
lib/std/fs.zig-10
......@@ -35,8 +35,6 @@ pub const realpathW = posix.realpathW;
3535pub const getAppDataDir = @import("fs/get_app_data_dir.zig").getAppDataDir;
3636pub const GetAppDataDirError = @import("fs/get_app_data_dir.zig").GetAppDataDirError;
3737
38pub const MAX_PATH_BYTES = @compileError("deprecated; renamed to max_path_bytes");
39
4038/// The maximum length of a file path that the operating system will accept.
4139///
4240/// Paths, including those returned from file system operations, may be longer
......@@ -90,9 +88,6 @@ pub const max_name_bytes = switch (native_os) {
9088 @compileError("NAME_MAX not implemented for " ++ @tagName(native_os)),
9189};
9290
93/// Deprecated: use `max_name_bytes`
94pub const MAX_NAME_BYTES = max_name_bytes;
95
9691pub const base64_alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_".*;
9792
9893/// Base64 encoder, replacing the standard `+/` with `-_` so that it can be used in a file name on any filesystem.
......@@ -101,11 +96,6 @@ pub const base64_encoder = base64.Base64Encoder.init(base64_alphabet, null);
10196/// Base64 decoder, replacing the standard `+/` with `-_` so that it can be used in a file name on any filesystem.
10297pub const base64_decoder = base64.Base64Decoder.init(base64_alphabet, null);
10398
104/// Deprecated. Use `cwd().atomicSymLink()` instead.
105pub fn atomicSymLink(_: Allocator, existing_path: []const u8, new_path: []const u8) !void {
106 try cwd().atomicSymLink(existing_path, new_path, .{});
107}
108
10999/// Same as `Dir.updateFile`, except asserts that both `source_path` and `dest_path`
110100/// are absolute. See `Dir.updateFile` for a function that operates on both
111101/// absolute and relative paths.
lib/std/fs/Dir.zig-5
......@@ -1402,9 +1402,6 @@ pub fn setAsCwd(self: Dir) !void {
14021402 try posix.fchdir(self.fd);
14031403}
14041404
1405/// Deprecated: use `OpenOptions`
1406pub const OpenDirOptions = OpenOptions;
1407
14081405pub const OpenOptions = struct {
14091406 /// `true` means the opened directory can be used as the `Dir` parameter
14101407 /// for functions which operate based on an open directory handle. When `false`,
......@@ -2511,8 +2508,6 @@ pub fn writeFile(self: Dir, options: WriteFileOptions) WriteFileError!void {
25112508 try file.writeAll(options.data);
25122509}
25132510
2514pub const writeFile2 = @compileError("deprecated; renamed to writeFile");
2515
25162511pub const AccessError = posix.AccessError;
25172512
25182513/// Test accessing `sub_path`.
lib/std/fs/File.zig+2-1
......@@ -1045,7 +1045,7 @@ pub const Reader = struct {
10451045 r.pos = offset;
10461046 },
10471047 .streaming, .streaming_reading => {
1048 if (offset >= r.pos) return Reader.seekBy(r, offset - r.pos);
1048 if (offset >= r.pos) return Reader.seekBy(r, @intCast(offset - r.pos));
10491049 if (r.seek_err) |err| return err;
10501050 posix.lseek_SET(r.file.handle, offset) catch |err| {
10511051 r.seek_err = err;
......@@ -1333,6 +1333,7 @@ pub const Writer = struct {
13331333 .file = w.file,
13341334 .mode = w.mode,
13351335 .pos = w.pos,
1336 .interface = Reader.initInterface(w.interface.buffer),
13361337 .seek_err = w.seek_err,
13371338 };
13381339 }
lib/std/hash.zig+1-2
......@@ -80,9 +80,8 @@ fn uint16(input: u16) u16 {
8080 return x;
8181}
8282
83/// DEPRECATED: use std.hash.int()
8483/// Source: https://github.com/skeeto/hash-prospector
85pub fn uint32(input: u32) u32 {
84fn uint32(input: u32) u32 {
8685 var x: u32 = input;
8786 x = (x ^ (x >> 17)) *% 0xed5ad4bb;
8887 x = (x ^ (x >> 11)) *% 0xac4c1b51;
lib/std/http/test.zig+6-3
......@@ -150,7 +150,8 @@ test "HTTP server handles a chunked transfer coding request" {
150150 "content-type: text/plain\r\n" ++
151151 "\r\n" ++
152152 "message from server!\n";
153 var stream_reader = stream.reader(&.{});
153 var tiny_buffer: [1]u8 = undefined; // allows allocRemaining to detect limit exceeded
154 var stream_reader = stream.reader(&tiny_buffer);
154155 const response = try stream_reader.interface().allocRemaining(gpa, .limited(expected_response.len));
155156 defer gpa.free(response);
156157 try expectEqualStrings(expected_response, response);
......@@ -288,7 +289,8 @@ test "Server.Request.respondStreaming non-chunked, unknown content-length" {
288289 var stream_writer = stream.writer(&.{});
289290 try stream_writer.interface.writeAll(request_bytes);
290291
291 var stream_reader = stream.reader(&.{});
292 var tiny_buffer: [1]u8 = undefined; // allows allocRemaining to detect limit exceeded
293 var stream_reader = stream.reader(&tiny_buffer);
292294 const response = try stream_reader.interface().allocRemaining(gpa, .limited(8192));
293295 defer gpa.free(response);
294296
......@@ -358,7 +360,8 @@ test "receiving arbitrary http headers from the client" {
358360 var stream_writer = stream.writer(&.{});
359361 try stream_writer.interface.writeAll(request_bytes);
360362
361 var stream_reader = stream.reader(&.{});
363 var tiny_buffer: [1]u8 = undefined; // allows allocRemaining to detect limit exceeded
364 var stream_reader = stream.reader(&tiny_buffer);
362365 const response = try stream_reader.interface().allocRemaining(gpa, .limited(8192));
363366 defer gpa.free(response);
364367
lib/std/math/big/int.zig-6
......@@ -2222,9 +2222,6 @@ pub const Const = struct {
22222222 TargetTooSmall,
22232223 };
22242224
2225 /// Deprecated; use `toInt`.
2226 pub const to = toInt;
2227
22282225 /// Convert `self` to `Int`.
22292226 ///
22302227 /// Returns an error if self cannot be narrowed into the requested type without truncation.
......@@ -2855,9 +2852,6 @@ pub const Managed = struct {
28552852
28562853 pub const ConvertError = Const.ConvertError;
28572854
2858 /// Deprecated; use `toInt`.
2859 pub const to = toInt;
2860
28612855 /// Convert `self` to `Int`.
28622856 ///
28632857 /// Returns an error if self cannot be narrowed into the requested type without truncation.
lib/std/math/big/int_test.zig+1-1
......@@ -688,7 +688,7 @@ test "string set base 36" {
688688 defer a.deinit();
689689
690690 try a.setString(36, "fifvthrv1mzt79ez9");
691 try testing.expectEqual(123456789123456789123456789, try a.to(u128));
691 try testing.expectEqual(123456789123456789123456789, try a.toInt(u128));
692692}
693693
694694test "string set bad char error" {
lib/std/mem.zig-6
......@@ -2258,8 +2258,6 @@ test byteSwapAllFields {
22582258 }, k);
22592259}
22602260
2261pub const tokenize = @compileError("deprecated; use tokenizeAny, tokenizeSequence, or tokenizeScalar");
2262
22632261/// Returns an iterator that iterates over the slices of `buffer` that are not
22642262/// any of the items in `delimiters`.
22652263///
......@@ -2458,8 +2456,6 @@ test "tokenize (reset)" {
24582456 }
24592457}
24602458
2461pub const split = @compileError("deprecated; use splitSequence, splitAny, or splitScalar");
2462
24632459/// Returns an iterator that iterates over the slices of `buffer` that
24642460/// are separated by the byte sequence in `delimiter`.
24652461///
......@@ -2659,8 +2655,6 @@ test "split (reset)" {
26592655 }
26602656}
26612657
2662pub const splitBackwards = @compileError("deprecated; use splitBackwardsSequence, splitBackwardsAny, or splitBackwardsScalar");
2663
26642658/// Returns an iterator that iterates backwards over the slices of `buffer` that
26652659/// are separated by the sequence in `delimiter`.
26662660///
lib/std/meta.zig-23
......@@ -418,29 +418,6 @@ test fieldInfo {
418418 try testing.expect(comptime uf.type == u8);
419419}
420420
421/// Deprecated: use @FieldType
422pub fn FieldType(comptime T: type, comptime field: FieldEnum(T)) type {
423 return @FieldType(T, @tagName(field));
424}
425
426test FieldType {
427 const S = struct {
428 a: u8,
429 b: u16,
430 };
431
432 const U = union {
433 c: u32,
434 d: *const u8,
435 };
436
437 try testing.expect(FieldType(S, .a) == u8);
438 try testing.expect(FieldType(S, .b) == u16);
439
440 try testing.expect(FieldType(U, .c) == u32);
441 try testing.expect(FieldType(U, .d) == *const u8);
442}
443
444421pub fn fieldNames(comptime T: type) *const [fields(T).len][:0]const u8 {
445422 return comptime blk: {
446423 const fieldInfos = fields(T);
lib/std/net.zig+162-144
......@@ -19,6 +19,7 @@ const File = std.fs.File;
1919// first release to support them.
2020pub const has_unix_sockets = switch (native_os) {
2121 .windows => builtin.os.version_range.windows.isAtLeast(.win10_rs4) orelse false,
22 .wasi => false,
2223 else => true,
2324};
2425
......@@ -217,8 +218,6 @@ pub const Address = extern union {
217218 /// Sets SO_REUSEADDR and SO_REUSEPORT on POSIX.
218219 /// Sets SO_REUSEADDR on Windows, which is roughly equivalent.
219220 reuse_address: bool = false,
220 /// Deprecated. Does the same thing as reuse_address.
221 reuse_port: bool = false,
222221 force_nonblocking: bool = false,
223222 };
224223
......@@ -235,7 +234,7 @@ pub const Address = extern union {
235234 };
236235 errdefer s.stream.close();
237236
238 if (options.reuse_address or options.reuse_port) {
237 if (options.reuse_address) {
239238 try posix.setsockopt(
240239 sockfd,
241240 posix.SOL.SOCKET,
......@@ -869,7 +868,7 @@ pub fn getAddressList(gpa: Allocator, name: []const u8, port: u16) GetAddressLis
869868 const name_c = try gpa.dupeZ(u8, name);
870869 defer gpa.free(name_c);
871870
872 const port_c = try std.fmt.allocPrintSentinel(gpa, "{}", .{port}, 0);
871 const port_c = try std.fmt.allocPrintSentinel(gpa, "{d}", .{port}, 0);
873872 defer gpa.free(port_c);
874873
875874 const ws2_32 = windows.ws2_32;
......@@ -1080,7 +1079,7 @@ fn linuxLookupName(
10801079 }
10811080 } else {
10821081 try canon.resize(gpa, 0);
1083 try addrs.ensureUnusedCapacity(gpa, 1);
1082 try addrs.ensureUnusedCapacity(gpa, 2);
10841083 linuxLookupNameFromNull(addrs, family, flags, port);
10851084 }
10861085 if (addrs.items.len == 0) return error.UnknownHostName;
......@@ -1355,7 +1354,7 @@ fn parseHosts(
13551354 const line = br.takeDelimiterExclusive('\n') catch |err| switch (err) {
13561355 error.StreamTooLong => {
13571356 // Skip lines that are too long.
1358 br.discardDelimiterInclusive('\n') catch |e| switch (e) {
1357 _ = br.discardDelimiterInclusive('\n') catch |e| switch (e) {
13591358 error.EndOfStream => break,
13601359 error.ReadFailed => return error.ReadFailed,
13611360 };
......@@ -1398,6 +1397,25 @@ fn parseHosts(
13981397 }
13991398}
14001399
1400test parseHosts {
1401 if (builtin.os.tag == .wasi) {
1402 // TODO parsing addresses should not have OS dependencies
1403 return error.SkipZigTest;
1404 }
1405 var reader: std.io.Reader = .fixed(
1406 \\127.0.0.1 localhost
1407 \\::1 localhost
1408 \\127.0.0.2 abcd
1409 );
1410 var addrs: ArrayList(LookupAddr) = .empty;
1411 defer addrs.deinit(std.testing.allocator);
1412 var canon: ArrayList(u8) = .empty;
1413 defer canon.deinit(std.testing.allocator);
1414 try parseHosts(std.testing.allocator, &addrs, &canon, "abcd", posix.AF.UNSPEC, 1234, &reader);
1415 try std.testing.expectEqual(1, addrs.items.len);
1416 try std.testing.expectFmt("127.0.0.2:1234", "{f}", .{addrs.items[0].addr});
1417}
1418
14011419pub fn isValidHostName(hostname: []const u8) bool {
14021420 if (hostname.len >= 254) return false;
14031421 if (!std.unicode.utf8ValidateSlice(hostname)) return false;
......@@ -1562,9 +1580,12 @@ const ResolvConf = struct {
15621580 };
15631581 }
15641582
1565 fn parse(rc: *ResolvConf, br: *io.Reader) !void {
1583 const Directive = enum { options, nameserver, domain, search };
1584 const Option = enum { ndots, attempts, timeout };
1585
1586 fn parse(rc: *ResolvConf, reader: *io.Reader) !void {
15661587 const gpa = rc.gpa;
1567 while (br.takeSentinel('\n')) |line_with_comment| {
1588 while (reader.takeSentinel('\n')) |line_with_comment| {
15681589 const line = line: {
15691590 var split = mem.splitScalar(u8, line_with_comment, '#');
15701591 break :line split.first();
......@@ -1572,8 +1593,8 @@ const ResolvConf = struct {
15721593 var line_it = mem.tokenizeAny(u8, line, " \t");
15731594
15741595 const token = line_it.next() orelse continue;
1575 if (mem.eql(u8, token, "options")) {
1576 while (line_it.next()) |sub_tok| {
1596 switch (std.meta.stringToEnum(Directive, token) orelse continue) {
1597 .options => while (line_it.next()) |sub_tok| {
15771598 var colon_it = mem.splitScalar(u8, sub_tok, ':');
15781599 const name = colon_it.first();
15791600 const value_txt = colon_it.next() orelse continue;
......@@ -1581,22 +1602,25 @@ const ResolvConf = struct {
15811602 error.Overflow => 255,
15821603 error.InvalidCharacter => continue,
15831604 };
1584 if (mem.eql(u8, name, "ndots")) {
1585 rc.ndots = @min(value, 15);
1586 } else if (mem.eql(u8, name, "attempts")) {
1587 rc.attempts = @min(value, 10);
1588 } else if (mem.eql(u8, name, "timeout")) {
1589 rc.timeout = @min(value, 60);
1605 switch (std.meta.stringToEnum(Option, name) orelse continue) {
1606 .ndots => rc.ndots = @min(value, 15),
1607 .attempts => rc.attempts = @min(value, 10),
1608 .timeout => rc.timeout = @min(value, 60),
15901609 }
1591 }
1592 } else if (mem.eql(u8, token, "nameserver")) {
1593 const ip_txt = line_it.next() orelse continue;
1594 try linuxLookupNameFromNumericUnspec(gpa, &rc.ns, ip_txt, 53);
1595 } else if (mem.eql(u8, token, "domain") or mem.eql(u8, token, "search")) {
1596 rc.search.items.len = 0;
1597 try rc.search.appendSlice(gpa, line_it.rest());
1610 },
1611 .nameserver => {
1612 const ip_txt = line_it.next() orelse continue;
1613 try linuxLookupNameFromNumericUnspec(gpa, &rc.ns, ip_txt, 53);
1614 },
1615 .domain, .search => {
1616 rc.search.items.len = 0;
1617 try rc.search.appendSlice(gpa, line_it.rest());
1618 },
15981619 }
1599 } else |err| return err;
1620 } else |err| switch (err) {
1621 error.EndOfStream => if (reader.bufferedLen() != 0) return error.EndOfStream,
1622 else => |e| return e,
1623 }
16001624
16011625 if (rc.ns.items.len == 0) {
16021626 return linuxLookupNameFromNumericUnspec(gpa, &rc.ns, "127.0.0.1", 53);
......@@ -1849,9 +1873,15 @@ pub const Stream = struct {
18491873 }
18501874 }
18511875
1852 const ReadError = posix.ReadError;
1876 pub const ReadError = posix.ReadError || error{
1877 SocketNotBound,
1878 MessageTooBig,
1879 NetworkSubsystemFailed,
1880 ConnectionResetByPeer,
1881 SocketNotConnected,
1882 };
18531883
1854 const WriteError = posix.SendMsgError || error{
1884 pub const WriteError = posix.SendMsgError || error{
18551885 ConnectionResetByPeer,
18561886 SocketNotBound,
18571887 MessageTooBig,
......@@ -1863,11 +1893,12 @@ pub const Stream = struct {
18631893
18641894 pub const Reader = switch (native_os) {
18651895 .windows => struct {
1866 /// Use `interface` to access portably.
1896 /// Use `interface` for portable code.
18671897 interface_state: io.Reader,
1868 /// Use `getStream` to access portably.
1898 /// Use `getStream` for portable code.
18691899 net_stream: Stream,
1870 err: ?Error = null,
1900 /// Use `getError` for portable code.
1901 error_state: ?Error,
18711902
18721903 pub const Error = ReadError;
18731904
......@@ -1875,6 +1906,10 @@ pub const Stream = struct {
18751906 return r.stream;
18761907 }
18771908
1909 pub fn getError(r: *const Reader) ?Error {
1910 return r.error_state;
1911 }
1912
18781913 pub fn interface(r: *Reader) *io.Reader {
18791914 return &r.interface_state;
18801915 }
......@@ -1882,22 +1917,33 @@ pub const Stream = struct {
18821917 pub fn init(net_stream: Stream, buffer: []u8) Reader {
18831918 return .{
18841919 .interface_state = .{
1885 .context = undefined,
18861920 .vtable = &.{ .stream = stream },
18871921 .buffer = buffer,
1922 .seek = 0,
1923 .end = 0,
18881924 },
18891925 .net_stream = net_stream,
1926 .error_state = null,
18901927 };
18911928 }
18921929
18931930 fn stream(io_r: *io.Reader, io_w: *io.Writer, limit: io.Limit) io.Reader.StreamError!usize {
1894 const r: *Reader = @fieldParentPtr("interface", io_r);
1895 var iovecs: [max_buffers_len]windows.WSABUF = undefined;
1896 const bufs = io_w.writableVectorWsa(&iovecs, limit);
1897 assert(bufs[0].len > 0);
1931 const r: *Reader = @alignCast(@fieldParentPtr("interface_state", io_r));
1932 var iovecs: [max_buffers_len]windows.ws2_32.WSABUF = undefined;
1933 const bufs = try io_w.writableVectorWsa(&iovecs, limit);
1934 assert(bufs[0].len != 0);
1935 const n = streamBufs(r, bufs) catch |err| {
1936 r.error_state = err;
1937 return error.ReadFailed;
1938 };
1939 if (n == 0) return error.EndOfStream;
1940 return n;
1941 }
1942
1943 fn streamBufs(r: *Reader, bufs: []windows.ws2_32.WSABUF) Error!u32 {
18981944 var n: u32 = undefined;
18991945 var flags: u32 = 0;
1900 const rc = windows.ws2_32.WSARecvFrom(r.net_stream.handle, bufs.ptr, bufs.len, &n, &flags, null, null, null, null);
1946 const rc = windows.ws2_32.WSARecvFrom(r.net_stream.handle, bufs.ptr, @intCast(bufs.len), &n, &flags, null, null, null, null);
19011947 if (rc != 0) switch (windows.ws2_32.WSAGetLastError()) {
19021948 .WSAECONNRESET => return error.ConnectionResetByPeer,
19031949 .WSAEFAULT => unreachable, // a pointer is not completely contained in user address space.
......@@ -1913,11 +1959,11 @@ pub const Stream = struct {
19131959 .WSA_OPERATION_ABORTED => unreachable, // not using overlapped I/O
19141960 else => |err| return windows.unexpectedWSAError(err),
19151961 };
1916 if (n == 0) return error.EndOfStream;
19171962 return n;
19181963 }
19191964 },
19201965 else => struct {
1966 /// Use `getStream`, `interface`, and `getError` for portable code.
19211967 file_reader: File.Reader,
19221968
19231969 pub const Error = ReadError;
......@@ -1940,6 +1986,10 @@ pub const Stream = struct {
19401986 pub fn getStream(r: *const Reader) Stream {
19411987 return .{ .handle = r.file_reader.file.handle };
19421988 }
1989
1990 pub fn getError(r: *const Reader) ?Error {
1991 return r.file_reader.err;
1992 }
19431993 },
19441994 };
19451995
......@@ -1949,6 +1999,8 @@ pub const Stream = struct {
19491999 interface: io.Writer,
19502000 /// Use `getStream` for cross-platform support.
19512001 stream: Stream,
2002 /// This field is present on all systems.
2003 err: ?Error = null,
19522004
19532005 pub const Error = WriteError;
19542006
......@@ -1966,43 +2018,39 @@ pub const Stream = struct {
19662018 return w.stream;
19672019 }
19682020
2021 fn addWsaBuf(v: []windows.ws2_32.WSABUF, i: *u32, bytes: []const u8) void {
2022 const cap = std.math.maxInt(u32);
2023 var remaining = bytes;
2024 while (remaining.len > cap) {
2025 if (v.len - i.* == 0) return;
2026 v[i.*] = .{ .buf = @constCast(remaining.ptr), .len = cap };
2027 i.* += 1;
2028 remaining = remaining[cap..];
2029 } else {
2030 @branchHint(.likely);
2031 if (v.len - i.* == 0) return;
2032 v[i.*] = .{ .buf = @constCast(remaining.ptr), .len = @intCast(remaining.len) };
2033 i.* += 1;
2034 }
2035 }
2036
19692037 fn drain(io_w: *io.Writer, data: []const []const u8, splat: usize) io.Writer.Error!usize {
1970 const w: *Writer = @fieldParentPtr("interface", io_w);
2038 const w: *Writer = @alignCast(@fieldParentPtr("interface", io_w));
19712039 const buffered = io_w.buffered();
19722040 comptime assert(native_os == .windows);
1973 var iovecs: [max_buffers_len]windows.WSABUF = undefined;
2041 var iovecs: [max_buffers_len]windows.ws2_32.WSABUF = undefined;
19742042 var len: u32 = 0;
1975 if (buffered.len != 0) {
1976 iovecs[len] = .{
1977 .buf = buffered.ptr,
1978 .len = buffered.len,
1979 };
1980 len += 1;
1981 }
1982 for (data) |bytes| {
1983 if (bytes.len == 0) continue;
1984 iovecs[len] = .{
1985 .buf = bytes.ptr,
1986 .len = bytes.len,
1987 };
1988 len += 1;
1989 if (iovecs.len - len == 0) break;
1990 }
1991 if (len == 0) return 0;
2043 addWsaBuf(&iovecs, &len, buffered);
2044 for (data[0 .. data.len - 1]) |bytes| addWsaBuf(&iovecs, &len, bytes);
19922045 const pattern = data[data.len - 1];
1993 switch (splat) {
1994 0 => if (iovecs[len - 1].buf == data[data.len - 1].ptr) {
1995 len -= 1;
1996 },
1997 1 => {},
2046 if (iovecs.len - len != 0) switch (splat) {
2047 0 => {},
2048 1 => addWsaBuf(&iovecs, &len, pattern),
19982049 else => switch (pattern.len) {
19992050 0 => {},
2000 1 => memset: {
2001 // Replace the 1-byte buffer with a bigger one.
2002 if (iovecs[len - 1].buf == data[data.len - 1].ptr) len -= 1;
2003 if (iovecs.len - len == 0) break :memset;
2051 1 => {
20042052 const splat_buffer_candidate = io_w.buffer[io_w.end..];
2005 var backup_buffer: [32]u8 = undefined;
2053 var backup_buffer: [64]u8 = undefined;
20062054 const splat_buffer = if (splat_buffer_candidate.len >= backup_buffer.len)
20072055 splat_buffer_candidate
20082056 else
......@@ -2010,31 +2058,29 @@ pub const Stream = struct {
20102058 const memset_len = @min(splat_buffer.len, splat);
20112059 const buf = splat_buffer[0..memset_len];
20122060 @memset(buf, pattern[0]);
2013 iovecs[len] = .{ .buf = buf.ptr, .len = buf.len };
2014 len += 1;
2061 addWsaBuf(&iovecs, &len, buf);
20152062 var remaining_splat = splat - buf.len;
20162063 while (remaining_splat > splat_buffer.len and len < iovecs.len) {
2017 iovecs[len] = .{ .buf = splat_buffer.ptr, .len = splat_buffer.len };
2064 addWsaBuf(&iovecs, &len, splat_buffer);
20182065 remaining_splat -= splat_buffer.len;
2019 len += 1;
2020 }
2021 if (remaining_splat > 0 and iovecs.len - len != 0) {
2022 iovecs[len] = .{ .buf = splat_buffer.ptr, .len = remaining_splat };
2023 len += 1;
20242066 }
2067 addWsaBuf(&iovecs, &len, splat_buffer[0..remaining_splat]);
20252068 },
2026 else => for (0..splat - 1) |_| {
2027 if (iovecs.len - len == 0) break;
2028 iovecs[len] = .{
2029 .buf = pattern.ptr,
2030 .len = pattern.len,
2031 };
2032 len += 1;
2069 else => for (0..@min(splat, iovecs.len - len)) |_| {
2070 addWsaBuf(&iovecs, &len, pattern);
20332071 },
20342072 },
2035 }
2073 };
2074 const n = sendBufs(w.stream.handle, iovecs[0..len]) catch |err| {
2075 w.err = err;
2076 return error.WriteFailed;
2077 };
2078 return io_w.consume(n);
2079 }
2080
2081 fn sendBufs(handle: Stream.Handle, bufs: []windows.ws2_32.WSABUF) Error!u32 {
20362082 var n: u32 = undefined;
2037 const rc = windows.ws2_32.WSASend(w.stream.handle, &iovecs, len, &n, 0, null, null);
2083 const rc = windows.ws2_32.WSASend(handle, bufs.ptr, @intCast(bufs.len), &n, 0, null, null);
20382084 if (rc == windows.ws2_32.SOCKET_ERROR) switch (windows.ws2_32.WSAGetLastError()) {
20392085 .WSAECONNABORTED => return error.ConnectionResetByPeer,
20402086 .WSAECONNRESET => return error.ConnectionResetByPeer,
......@@ -2055,7 +2101,7 @@ pub const Stream = struct {
20552101 .WSA_OPERATION_ABORTED => unreachable, // not using overlapped I/O
20562102 else => |err| return windows.unexpectedWSAError(err),
20572103 };
2058 return io_w.consume(n);
2104 return n;
20592105 }
20602106 },
20612107 else => struct {
......@@ -2084,95 +2130,68 @@ pub const Stream = struct {
20842130 return .{ .handle = w.file_writer.file.handle };
20852131 }
20862132
2133 fn addBuf(v: []posix.iovec_const, i: *@FieldType(posix.msghdr_const, "iovlen"), bytes: []const u8) void {
2134 // OS checks ptr addr before length so zero length vectors must be omitted.
2135 if (bytes.len == 0) return;
2136 if (v.len - i.* == 0) return;
2137 v[i.*] = .{ .base = bytes.ptr, .len = bytes.len };
2138 i.* += 1;
2139 }
2140
20872141 fn drain(io_w: *io.Writer, data: []const []const u8, splat: usize) io.Writer.Error!usize {
2088 const w: *Writer = @fieldParentPtr("interface", io_w);
2142 const w: *Writer = @alignCast(@fieldParentPtr("interface", io_w));
20892143 const buffered = io_w.buffered();
2090 var iovecs: [max_buffers_len]std.posix.iovec_const = undefined;
2091 var msg: posix.msghdr_const = msg: {
2092 var i: usize = 0;
2093 if (buffered.len != 0) {
2094 iovecs[i] = .{
2095 .base = buffered.ptr,
2096 .len = buffered.len,
2097 };
2098 i += 1;
2099 }
2100 for (data) |bytes| {
2101 // OS checks ptr addr before length so zero length vectors must be omitted.
2102 if (bytes.len == 0) continue;
2103 iovecs[i] = .{
2104 .base = bytes.ptr,
2105 .len = bytes.len,
2106 };
2107 i += 1;
2108 if (iovecs.len - i == 0) break;
2109 }
2110 break :msg .{
2111 .name = null,
2112 .namelen = 0,
2113 .iov = &iovecs,
2114 .iovlen = i,
2115 .control = null,
2116 .controllen = 0,
2117 .flags = 0,
2118 };
2144 var iovecs: [max_buffers_len]posix.iovec_const = undefined;
2145 var msg: posix.msghdr_const = .{
2146 .name = null,
2147 .namelen = 0,
2148 .iov = &iovecs,
2149 .iovlen = 0,
2150 .control = null,
2151 .controllen = 0,
2152 .flags = 0,
21192153 };
2120 if (msg.iovlen == 0) return 0;
2154 addBuf(&iovecs, &msg.iovlen, buffered);
2155 for (data[0 .. data.len - 1]) |bytes| addBuf(&iovecs, &msg.iovlen, bytes);
21212156 const pattern = data[data.len - 1];
2122 switch (splat) {
2123 0 => if (iovecs[msg.iovlen - 1].base == data[data.len - 1].ptr) {
2124 msg.iovlen -= 1;
2125 },
2126 1 => {},
2157 if (iovecs.len - msg.iovlen != 0) switch (splat) {
2158 0 => {},
2159 1 => addBuf(&iovecs, &msg.iovlen, pattern),
21272160 else => switch (pattern.len) {
21282161 0 => {},
2129 1 => memset: {
2130 // Replace the 1-byte buffer with a bigger one.
2131 if (iovecs[msg.iovlen - 1].base == data[data.len - 1].ptr) msg.iovlen -= 1;
2132 if (iovecs.len - msg.iovlen == 0) break :memset;
2162 1 => {
21332163 const splat_buffer_candidate = io_w.buffer[io_w.end..];
2134 var backup_buffer: [32]u8 = undefined;
2164 var backup_buffer: [64]u8 = undefined;
21352165 const splat_buffer = if (splat_buffer_candidate.len >= backup_buffer.len)
21362166 splat_buffer_candidate
21372167 else
21382168 &backup_buffer;
2139 if (splat_buffer.len == 0) break :memset;
21402169 const memset_len = @min(splat_buffer.len, splat);
21412170 const buf = splat_buffer[0..memset_len];
21422171 @memset(buf, pattern[0]);
2143 iovecs[msg.iovlen] = .{ .base = buf.ptr, .len = buf.len };
2144 msg.iovlen += 1;
2172 addBuf(&iovecs, &msg.iovlen, buf);
21452173 var remaining_splat = splat - buf.len;
21462174 while (remaining_splat > splat_buffer.len and iovecs.len - msg.iovlen != 0) {
21472175 assert(buf.len == splat_buffer.len);
2148 iovecs[msg.iovlen] = .{ .base = splat_buffer.ptr, .len = splat_buffer.len };
2149 msg.iovlen += 1;
2176 addBuf(&iovecs, &msg.iovlen, splat_buffer);
21502177 remaining_splat -= splat_buffer.len;
21512178 }
2152 if (remaining_splat > 0 and iovecs.len - msg.iovlen != 0) {
2153 iovecs[msg.iovlen] = .{ .base = splat_buffer.ptr, .len = remaining_splat };
2154 msg.iovlen += 1;
2155 }
2179 addBuf(&iovecs, &msg.iovlen, splat_buffer[0..remaining_splat]);
21562180 },
2157 else => for (0..splat - 1) |_| {
2158 if (iovecs.len - msg.iovlen == 0) break;
2159 iovecs[msg.iovlen] = .{
2160 .base = pattern.ptr,
2161 .len = pattern.len,
2162 };
2163 msg.iovlen += 1;
2181 else => for (0..@min(splat, iovecs.len - msg.iovlen)) |_| {
2182 addBuf(&iovecs, &msg.iovlen, pattern);
21642183 },
21652184 },
2166 }
2185 };
21672186 const flags = posix.MSG.NOSIGNAL;
2168 return io_w.consume(std.posix.sendmsg(w.file_writer.file.handle, &msg, flags) catch |err| {
2187 return io_w.consume(posix.sendmsg(w.file_writer.file.handle, &msg, flags) catch |err| {
21692188 w.err = err;
21702189 return error.WriteFailed;
21712190 });
21722191 }
21732192
21742193 fn sendFile(io_w: *io.Writer, file_reader: *File.Reader, limit: io.Limit) io.Writer.FileError!usize {
2175 const w: *Writer = @fieldParentPtr("interface", io_w);
2194 const w: *Writer = @alignCast(@fieldParentPtr("interface", io_w));
21762195 const n = try w.file_writer.interface.sendFileHeader(io_w.buffered(), file_reader, limit);
21772196 return io_w.consume(n);
21782197 }
......@@ -2188,7 +2207,6 @@ pub const Stream = struct {
21882207 }
21892208
21902209 const max_buffers_len = 8;
2191 const splat_buffer_len = 256;
21922210};
21932211
21942212pub const Server = struct {
lib/std/net/test.zig+12-8
......@@ -208,7 +208,8 @@ test "listen on a port, send bytes, receive bytes" {
208208 const socket = try net.tcpConnectToAddress(server_address);
209209 defer socket.close();
210210
211 _ = try socket.writer().writeAll("Hello world!");
211 var stream_writer = socket.writer(&.{});
212 try stream_writer.interface.writeAll("Hello world!");
212213 }
213214 };
214215
......@@ -218,7 +219,8 @@ test "listen on a port, send bytes, receive bytes" {
218219 var client = try server.accept();
219220 defer client.stream.close();
220221 var buf: [16]u8 = undefined;
221 const n = try client.stream.reader().read(&buf);
222 var stream_reader = client.stream.reader(&.{});
223 const n = try stream_reader.interface().readSliceShort(&buf);
222224
223225 try testing.expectEqual(@as(usize, 12), n);
224226 try testing.expectEqualSlices(u8, "Hello world!", buf[0..n]);
......@@ -232,10 +234,10 @@ test "listen on an in use port" {
232234
233235 const localhost = try net.Address.parseIp("127.0.0.1", 0);
234236
235 var server1 = try localhost.listen(.{ .reuse_port = true });
237 var server1 = try localhost.listen(.{ .reuse_address = true });
236238 defer server1.deinit();
237239
238 var server2 = try server1.listen_address.listen(.{ .reuse_port = true });
240 var server2 = try server1.listen_address.listen(.{ .reuse_address = true });
239241 defer server2.deinit();
240242}
241243
......@@ -299,7 +301,8 @@ test "listen on a unix socket, send bytes, receive bytes" {
299301 const socket = try net.connectUnixSocket(path);
300302 defer socket.close();
301303
302 _ = try socket.writer().writeAll("Hello world!");
304 var stream_writer = socket.writer(&.{});
305 try stream_writer.interface.writeAll("Hello world!");
303306 }
304307 };
305308
......@@ -309,13 +312,14 @@ test "listen on a unix socket, send bytes, receive bytes" {
309312 var client = try server.accept();
310313 defer client.stream.close();
311314 var buf: [16]u8 = undefined;
312 const n = try client.stream.reader().read(&buf);
315 var stream_reader = client.stream.reader(&.{});
316 const n = try stream_reader.interface().readSliceShort(&buf);
313317
314318 try testing.expectEqual(@as(usize, 12), n);
315319 try testing.expectEqualSlices(u8, "Hello world!", buf[0..n]);
316320}
317321
318test "listen on a unix socket with reuse_port option" {
322test "listen on a unix socket with reuse_address option" {
319323 if (!net.has_unix_sockets) return error.SkipZigTest;
320324 // Windows doesn't implement reuse port option.
321325 if (builtin.os.tag == .windows) return error.SkipZigTest;
......@@ -326,7 +330,7 @@ test "listen on a unix socket with reuse_port option" {
326330 const socket_addr = try net.Address.initUnix(socket_path);
327331 defer std.fs.cwd().deleteFile(socket_path) catch {};
328332
329 var server = try socket_addr.listen(.{ .reuse_port = true });
333 var server = try socket_addr.listen(.{ .reuse_address = true });
330334 server.deinit();
331335}
332336
lib/std/os/uefi.zig+49-3
......@@ -24,9 +24,51 @@ pub var handle: Handle = undefined;
2424/// A pointer to the EFI System Table that is passed to the EFI image's entry point.
2525pub var system_table: *tables.SystemTable = undefined;
2626
27/// UEFI's memory interfaces exclusively act on 4096-byte pages.
28pub const Page = [4096]u8;
29
2730/// A handle to an event structure.
2831pub const Event = *opaque {};
2932
33pub const EventRegistration = *const opaque {};
34
35pub const EventType = packed struct(u32) {
36 lo_context: u8 = 0,
37 /// If an event of this type is not already in the signaled state, then
38 /// the event’s NotificationFunction will be queued at the event’s NotifyTpl
39 /// whenever the event is being waited on via EFI_BOOT_SERVICES.WaitForEvent()
40 /// or EFI_BOOT_SERVICES.CheckEvent() .
41 wait: bool = false,
42 /// The event’s NotifyFunction is queued whenever the event is signaled.
43 signal: bool = false,
44 hi_context: u20 = 0,
45 /// The event is allocated from runtime memory. If an event is to be signaled
46 /// after the call to EFI_BOOT_SERVICES.ExitBootServices() the event’s data
47 /// structure and notification function need to be allocated from runtime
48 /// memory.
49 runtime: bool = false,
50 timer: bool = false,
51
52 /// This event should not be combined with any other event types. This event
53 /// type is functionally equivalent to the EFI_EVENT_GROUP_EXIT_BOOT_SERVICES
54 /// event group.
55 pub const signal_exit_boot_services: EventType = .{
56 .signal = true,
57 .lo_context = 1,
58 };
59
60 /// The event is to be notified by the system when SetVirtualAddressMap()
61 /// is performed. This event type is a composite of EVT_NOTIFY_SIGNAL,
62 /// EVT_RUNTIME, and EVT_RUNTIME_CONTEXT and should not be combined with
63 /// any other event types.
64 pub const signal_virtual_address_change: EventType = .{
65 .runtime = true,
66 .hi_context = 0x20000,
67 .signal = true,
68 .lo_context = 2,
69 };
70};
71
3072/// The calling convention used for all external functions part of the UEFI API.
3173pub const cc: std.builtin.CallingConvention = switch (@import("builtin").target.cpu.arch) {
3274 .x86_64 => .{ .x86_64_win = .{} },
......@@ -52,7 +94,11 @@ pub const IpAddress = extern union {
5294
5395/// GUIDs are align(8) unless otherwise specified.
5496pub const Guid = extern struct {
55 time_low: u32,
97 comptime {
98 std.debug.assert(std.mem.Alignment.of(Guid) == .@"8");
99 }
100
101 time_low: u32 align(8),
56102 time_mid: u16,
57103 time_high_and_version: u16,
58104 clock_seq_high_and_reserved: u8,
......@@ -60,7 +106,7 @@ pub const Guid = extern struct {
60106 node: [6]u8,
61107
62108 /// Format GUID into hexadecimal lowercase xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx format
63 pub fn format(self: @This(), writer: *std.io.Writer) std.io.Writer.Error!void {
109 pub fn format(self: Guid, writer: *std.io.Writer) std.io.Writer.Error!void {
64110 const time_low = @byteSwap(self.time_low);
65111 const time_mid = @byteSwap(self.time_mid);
66112 const time_high_and_version = @byteSwap(self.time_high_and_version);
......@@ -75,7 +121,7 @@ pub const Guid = extern struct {
75121 });
76122 }
77123
78 pub fn eql(a: std.os.uefi.Guid, b: std.os.uefi.Guid) bool {
124 pub fn eql(a: Guid, b: Guid) bool {
79125 return a.time_low == b.time_low and
80126 a.time_mid == b.time_mid and
81127 a.time_high_and_version == b.time_high_and_version and
lib/std/os/uefi/pool_allocator.zig+14-10
......@@ -28,14 +28,16 @@ const UefiPoolAllocator = struct {
2828
2929 const full_len = metadata_len + len;
3030
31 var unaligned_ptr: [*]align(8) u8 = undefined;
32 if (uefi.system_table.boot_services.?.allocatePool(uefi.efi_pool_memory_type, full_len, &unaligned_ptr) != .success) return null;
31 const unaligned_slice = uefi.system_table.boot_services.?.allocatePool(
32 uefi.efi_pool_memory_type,
33 full_len,
34 ) catch return null;
3335
34 const unaligned_addr = @intFromPtr(unaligned_ptr);
36 const unaligned_addr = @intFromPtr(unaligned_slice.ptr);
3537 const aligned_addr = mem.alignForward(usize, unaligned_addr + @sizeOf(usize), ptr_align);
3638
37 const aligned_ptr = unaligned_ptr + (aligned_addr - unaligned_addr);
38 getHeader(aligned_ptr).* = unaligned_ptr;
39 const aligned_ptr = unaligned_slice.ptr + (aligned_addr - unaligned_addr);
40 getHeader(aligned_ptr).* = unaligned_slice.ptr;
3941
4042 return aligned_ptr;
4143 }
......@@ -76,7 +78,7 @@ const UefiPoolAllocator = struct {
7678 ) void {
7779 _ = alignment;
7880 _ = ret_addr;
79 _ = uefi.system_table.boot_services.?.freePool(getHeader(buf.ptr).*);
81 uefi.system_table.boot_services.?.freePool(getHeader(buf.ptr).*) catch unreachable;
8082 }
8183};
8284
......@@ -117,10 +119,12 @@ fn uefi_alloc(
117119
118120 std.debug.assert(@intFromEnum(alignment) <= 3);
119121
120 var ptr: [*]align(8) u8 = undefined;
121 if (uefi.system_table.boot_services.?.allocatePool(uefi.efi_pool_memory_type, len, &ptr) != .success) return null;
122 const slice = uefi.system_table.boot_services.?.allocatePool(
123 uefi.efi_pool_memory_type,
124 len,
125 ) catch return null;
122126
123 return ptr;
127 return slice.ptr;
124128}
125129
126130fn uefi_resize(
......@@ -161,5 +165,5 @@ fn uefi_free(
161165) void {
162166 _ = alignment;
163167 _ = ret_addr;
164 _ = uefi.system_table.boot_services.?.freePool(@alignCast(buf.ptr));
168 uefi.system_table.boot_services.?.freePool(@alignCast(buf.ptr)) catch unreachable;
165169}
lib/std/os/uefi/tables.zig+200-28
......@@ -1,3 +1,12 @@
1const std = @import("std");
2const uefi = std.os.uefi;
3const Handle = uefi.Handle;
4const Event = uefi.Event;
5const Guid = uefi.Guid;
6const cc = uefi.cc;
7const math = std.math;
8const assert = std.debug.assert;
9
110pub const BootServices = @import("tables/boot_services.zig").BootServices;
211pub const RuntimeServices = @import("tables/runtime_services.zig").RuntimeServices;
312pub const ConfigurationTable = @import("tables/configuration_table.zig").ConfigurationTable;
......@@ -7,29 +16,90 @@ pub const TableHeader = @import("tables/table_header.zig").TableHeader;
716pub const EventNotify = *const fn (event: Event, ctx: *anyopaque) callconv(cc) void;
817
918pub const TimerDelay = enum(u32) {
10 timer_cancel,
11 timer_periodic,
12 timer_relative,
19 cancel,
20 periodic,
21 relative,
1322};
1423
1524pub const MemoryType = enum(u32) {
25 pub const Oem = math.IntFittingRange(
26 0,
27 @intFromEnum(MemoryType.oem_end) - @intFromEnum(MemoryType.oem_start),
28 );
29 pub const Vendor = math.IntFittingRange(
30 0,
31 @intFromEnum(MemoryType.vendor_end) - @intFromEnum(MemoryType.vendor_start),
32 );
33
34 /// can only be allocated using .allocate_any_pages mode unless you are explicitly targeting an interface that states otherwise
1635 reserved_memory_type,
1736 loader_code,
1837 loader_data,
1938 boot_services_code,
2039 boot_services_data,
40 /// can only be allocated using .allocate_any_pages mode unless you are explicitly targeting an interface that states otherwise
2141 runtime_services_code,
42 /// can only be allocated using .allocate_any_pages mode unless you are explicitly targeting an interface that states otherwise
2243 runtime_services_data,
2344 conventional_memory,
2445 unusable_memory,
46 /// can only be allocated using .allocate_any_pages mode unless you are explicitly targeting an interface that states otherwise
2547 acpi_reclaim_memory,
48 /// can only be allocated using .allocate_any_pages mode unless you are explicitly targeting an interface that states otherwise
2649 acpi_memory_nvs,
2750 memory_mapped_io,
2851 memory_mapped_io_port_space,
2952 pal_code,
3053 persistent_memory,
54 unaccepted_memory,
3155 max_memory_type,
56 invalid_start,
57 invalid_end = 0x6FFFFFFF,
58 /// MemoryType values in the range 0x70000000..0x7FFFFFFF are reserved for OEM use.
59 oem_start = 0x70000000,
60 oem_end = 0x7FFFFFFF,
61 /// MemoryType values in the range 0x80000000..0xFFFFFFFF are reserved for use by UEFI
62 /// OS loaders that are provided by operating system vendors.
63 vendor_start = 0x80000000,
64 vendor_end = 0xFFFFFFFF,
3265 _,
66
67 pub fn fromOem(value: Oem) MemoryType {
68 const oem_start = @intFromEnum(MemoryType.oem_start);
69 return @enumFromInt(oem_start + value);
70 }
71
72 pub fn toOem(memtype: MemoryType) ?Oem {
73 const as_int = @intFromEnum(memtype);
74 const oem_start = @intFromEnum(MemoryType.oem_start);
75 if (as_int < oem_start) return null;
76 if (as_int > @intFromEnum(MemoryType.oem_end)) return null;
77 return @truncate(as_int - oem_start);
78 }
79
80 pub fn fromVendor(value: Vendor) MemoryType {
81 const vendor_start = @intFromEnum(MemoryType.vendor_start);
82 return @enumFromInt(vendor_start + value);
83 }
84
85 pub fn toVendor(memtype: MemoryType) ?Vendor {
86 const as_int = @intFromEnum(memtype);
87 const vendor_start = @intFromEnum(MemoryType.vendor_start);
88 if (as_int < @intFromEnum(MemoryType.vendor_end)) return null;
89 if (as_int > @intFromEnum(MemoryType.vendor_end)) return null;
90 return @truncate(as_int - vendor_start);
91 }
92
93 pub fn format(self: MemoryType, w: *std.io.Writer) std.io.WriteError!void {
94 if (self.toOem()) |oemval|
95 try w.print("OEM({X})", .{oemval})
96 else if (self.toVendor()) |vendorval|
97 try w.print("Vendor({X})", .{vendorval})
98 else if (std.enums.tagName(MemoryType, self)) |name|
99 try w.print("{s}", .{name})
100 else
101 try w.print("INVALID({X})", .{@intFromEnum(self)});
102 }
33103};
34104
35105pub const MemoryDescriptorAttribute = packed struct(u64) {
......@@ -51,6 +121,8 @@ pub const MemoryDescriptorAttribute = packed struct(u64) {
51121 memory_runtime: bool,
52122};
53123
124pub const MemoryMapKey = enum(usize) { _ };
125
54126pub const MemoryDescriptor = extern struct {
55127 type: MemoryType,
56128 physical_start: u64,
......@@ -59,20 +131,121 @@ pub const MemoryDescriptor = extern struct {
59131 attribute: MemoryDescriptorAttribute,
60132};
61133
134pub const MemoryMapInfo = struct {
135 key: MemoryMapKey,
136 descriptor_size: usize,
137 descriptor_version: u32,
138 /// The number of descriptors in the map.
139 len: usize,
140};
141
142pub const MemoryMapSlice = struct {
143 info: MemoryMapInfo,
144 ptr: [*]align(@alignOf(MemoryDescriptor)) u8,
145
146 pub fn iterator(self: MemoryMapSlice) MemoryDescriptorIterator {
147 return .{ .ctx = self };
148 }
149
150 pub fn get(self: MemoryMapSlice, index: usize) ?*MemoryDescriptor {
151 if (index >= self.info.len) return null;
152 return self.getUnchecked(index);
153 }
154
155 pub fn getUnchecked(self: MemoryMapSlice, index: usize) *MemoryDescriptor {
156 const offset: usize = index * self.info.descriptor_size;
157 return @alignCast(@ptrCast(self.ptr[offset..]));
158 }
159};
160
161pub const MemoryDescriptorIterator = struct {
162 ctx: MemoryMapSlice,
163 index: usize = 0,
164
165 pub fn next(self: *MemoryDescriptorIterator) ?*MemoryDescriptor {
166 const md = self.ctx.get(self.index) orelse return null;
167 self.index += 1;
168 return md;
169 }
170};
171
62172pub const LocateSearchType = enum(u32) {
63173 all_handles,
64174 by_register_notify,
65175 by_protocol,
66176};
67177
68pub const OpenProtocolAttributes = packed struct(u32) {
69 by_handle_protocol: bool = false,
70 get_protocol: bool = false,
71 test_protocol: bool = false,
72 by_child_controller: bool = false,
73 by_driver: bool = false,
74 exclusive: bool = false,
75 reserved: u26 = 0,
178pub const LocateSearch = union(LocateSearchType) {
179 all_handles,
180 by_register_notify: uefi.EventRegistration,
181 by_protocol: *const Guid,
182};
183
184pub const OpenProtocolAttributes = enum(u32) {
185 pub const Bits = packed struct(u32) {
186 by_handle_protocol: bool = false,
187 get_protocol: bool = false,
188 test_protocol: bool = false,
189 by_child_controller: bool = false,
190 by_driver: bool = false,
191 exclusive: bool = false,
192 reserved: u26 = 0,
193 };
194
195 by_handle_protocol = @bitCast(Bits{ .by_handle_protocol = true }),
196 get_protocol = @bitCast(Bits{ .get_protocol = true }),
197 test_protocol = @bitCast(Bits{ .test_protocol = true }),
198 by_child_controller = @bitCast(Bits{ .by_child_controller = true }),
199 by_driver = @bitCast(Bits{ .by_driver = true }),
200 by_driver_exclusive = @bitCast(Bits{ .by_driver = true, .exclusive = true }),
201 exclusive = @bitCast(Bits{ .exclusive = true }),
202 _,
203
204 pub fn fromBits(bits: Bits) OpenProtocolAttributes {
205 return @bitCast(bits);
206 }
207
208 pub fn toBits(self: OpenProtocolAttributes) Bits {
209 return @bitCast(self);
210 }
211};
212
213pub const OpenProtocolArgs = union(OpenProtocolAttributes) {
214 /// Used in the implementation of `handleProtocol`.
215 by_handle_protocol: struct { agent: ?Handle = null, controller: ?Handle = null },
216 /// Used by a driver to get a protocol interface from a handle. Care must be
217 /// taken when using this open mode because the driver that opens a protocol
218 /// interface in this manner will not be informed if the protocol interface
219 /// is uninstalled or reinstalled. The caller is also not required to close
220 /// the protocol interface with `closeProtocol`.
221 get_protocol: struct { agent: ?Handle = null, controller: ?Handle = null },
222 /// Used by a driver to test for the existence of a protocol interface on a
223 /// handle. The caller only use the return status code. The caller is also
224 /// not required to close the protocol interface with `closeProtocol`.
225 test_protocol: struct { agent: ?Handle = null, controller: ?Handle = null },
226 /// Used by bus drivers to show that a protocol interface is being used by one
227 /// of the child controllers of a bus. This information is used by
228 /// `BootServices.connectController` to recursively connect all child controllers
229 /// and by `BootServices.disconnectController` to get the list of child
230 /// controllers that a bus driver created.
231 by_child_controller: struct { agent: Handle, controller: Handle },
232 /// Used by a driver to gain access to a protocol interface. When this mode
233 /// is used, the driver’s Stop() function will be called by
234 /// `BootServices.disconnectController` if the protocol interface is reinstalled
235 /// or uninstalled. Once a protocol interface is opened by a driver with this
236 /// attribute, no other drivers will be allowed to open the same protocol interface
237 /// with the `.by_driver` attribute.
238 by_driver: struct { agent: Handle, controller: Handle },
239 /// Used by a driver to gain exclusive access to a protocol interface. If any
240 /// other drivers have the protocol interface opened with an attribute of
241 /// `.by_driver`, then an attempt will be made to remove them with
242 /// `BootServices.disconnectController`.
243 by_driver_exclusive: struct { agent: Handle, controller: Handle },
244 /// Used by applications to gain exclusive access to a protocol interface. If
245 /// any drivers have the protocol interface opened with an attribute of
246 /// `.by_driver`, then an attempt will be made to remove them by calling the
247 /// driver’s Stop() function.
248 exclusive: struct { agent: Handle, controller: ?Handle = null },
76249};
77250
78251pub const ProtocolInformationEntry = extern struct {
......@@ -83,19 +256,25 @@ pub const ProtocolInformationEntry = extern struct {
83256};
84257
85258pub const InterfaceType = enum(u32) {
86 efi_native_interface,
259 native,
260};
261
262pub const AllocateLocation = union(AllocateType) {
263 any,
264 max_address: [*]align(4096) uefi.Page,
265 address: [*]align(4096) uefi.Page,
87266};
88267
89268pub const AllocateType = enum(u32) {
90 allocate_any_pages,
91 allocate_max_address,
92 allocate_address,
269 any,
270 max_address,
271 address,
93272};
94273
95274pub const PhysicalAddress = u64;
96275
97276pub const CapsuleHeader = extern struct {
98 capsule_guid: Guid align(8),
277 capsule_guid: Guid,
99278 header_size: u32,
100279 flags: u32,
101280 capsule_image_size: u32,
......@@ -110,13 +289,13 @@ pub const UefiCapsuleBlockDescriptor = extern struct {
110289};
111290
112291pub const ResetType = enum(u32) {
113 reset_cold,
114 reset_warm,
115 reset_shutdown,
116 reset_platform_specific,
292 cold,
293 warm,
294 shutdown,
295 platform_specific,
117296};
118297
119pub const global_variable align(8) = Guid{
298pub const global_variable = Guid{
120299 .time_low = 0x8be4df61,
121300 .time_mid = 0x93ca,
122301 .time_high_and_version = 0x11d2,
......@@ -128,10 +307,3 @@ pub const global_variable align(8) = Guid{
128307test {
129308 std.testing.refAllDeclsRecursive(@This());
130309}
131
132const std = @import("std");
133const uefi = std.os.uefi;
134const Handle = uefi.Handle;
135const Event = uefi.Event;
136const Guid = uefi.Guid;
137const cc = uefi.cc;
lib/std/os/uefi/tables/boot_services.zig+1141-68
......@@ -1,21 +1,31 @@
11const std = @import("std");
22const uefi = std.os.uefi;
33const Event = uefi.Event;
4const EventRegistration = uefi.EventRegistration;
45const Guid = uefi.Guid;
56const Handle = uefi.Handle;
7const Page = uefi.Page;
8const Pages = uefi.Pages;
69const Status = uefi.Status;
710const TableHeader = uefi.tables.TableHeader;
811const DevicePathProtocol = uefi.protocol.DevicePath;
12const AllocateLocation = uefi.tables.AllocateLocation;
913const AllocateType = uefi.tables.AllocateType;
1014const MemoryType = uefi.tables.MemoryType;
1115const MemoryDescriptor = uefi.tables.MemoryDescriptor;
16const MemoryMapKey = uefi.tables.MemoryMapKey;
17const MemoryMapInfo = uefi.tables.MemoryMapInfo;
18const MemoryMapSlice = uefi.tables.MemoryMapSlice;
1219const TimerDelay = uefi.tables.TimerDelay;
1320const InterfaceType = uefi.tables.InterfaceType;
21const LocateSearch = uefi.tables.LocateSearch;
1422const LocateSearchType = uefi.tables.LocateSearchType;
23const OpenProtocolArgs = uefi.tables.OpenProtocolArgs;
1524const OpenProtocolAttributes = uefi.tables.OpenProtocolAttributes;
1625const ProtocolInformationEntry = uefi.tables.ProtocolInformationEntry;
1726const EventNotify = uefi.tables.EventNotify;
1827const cc = uefi.cc;
28const Error = Status.Error;
1929
2030/// Boot services are services provided by the system's firmware until the operating system takes
2131/// over control over the hardware by calling exitBootServices.
......@@ -32,173 +42,1236 @@ pub const BootServices = extern struct {
3242 hdr: TableHeader,
3343
3444 /// Raises a task's priority level and returns its previous level.
35 raiseTpl: *const fn (new_tpl: usize) callconv(cc) usize,
45 raiseTpl: *const fn (new_tpl: TaskPriorityLevel) callconv(cc) TaskPriorityLevel,
3646
3747 /// Restores a task's priority level to its previous value.
38 restoreTpl: *const fn (old_tpl: usize) callconv(cc) void,
48 restoreTpl: *const fn (old_tpl: TaskPriorityLevel) callconv(cc) void,
3949
4050 /// Allocates memory pages from the system.
41 allocatePages: *const fn (alloc_type: AllocateType, mem_type: MemoryType, pages: usize, memory: *[*]align(4096) u8) callconv(cc) Status,
51 _allocatePages: *const fn (alloc_type: AllocateType, mem_type: MemoryType, pages: usize, memory: *[*]align(4096) Page) callconv(cc) Status,
4252
4353 /// Frees memory pages.
44 freePages: *const fn (memory: [*]align(4096) u8, pages: usize) callconv(cc) Status,
54 _freePages: *const fn (memory: [*]align(4096) Page, pages: usize) callconv(cc) Status,
4555
4656 /// Returns the current memory map.
47 getMemoryMap: *const fn (mmap_size: *usize, mmap: ?[*]MemoryDescriptor, map_key: *usize, descriptor_size: *usize, descriptor_version: *u32) callconv(cc) Status,
57 _getMemoryMap: *const fn (mmap_size: *usize, mmap: ?[*]align(@alignOf(MemoryDescriptor)) u8, map_key: *MemoryMapKey, descriptor_size: *usize, descriptor_version: *u32) callconv(cc) Status,
4858
4959 /// Allocates pool memory.
50 allocatePool: *const fn (pool_type: MemoryType, size: usize, buffer: *[*]align(8) u8) callconv(cc) Status,
60 _allocatePool: *const fn (pool_type: MemoryType, size: usize, buffer: *[*]align(8) u8) callconv(cc) Status,
5161
5262 /// Returns pool memory to the system.
53 freePool: *const fn (buffer: [*]align(8) u8) callconv(cc) Status,
63 _freePool: *const fn (buffer: [*]align(8) u8) callconv(cc) Status,
5464
5565 /// Creates an event.
56 createEvent: *const fn (type: u32, notify_tpl: usize, notify_func: ?*const fn (Event, ?*anyopaque) callconv(cc) void, notify_ctx: ?*const anyopaque, event: *Event) callconv(cc) Status,
66 _createEvent: *const fn (type: u32, notify_tpl: TaskPriorityLevel, notify_func: ?*const fn (Event, ?*anyopaque) callconv(cc) void, notify_ctx: ?*anyopaque, event: *Event) callconv(cc) Status,
5767
5868 /// Sets the type of timer and the trigger time for a timer event.
59 setTimer: *const fn (event: Event, type: TimerDelay, trigger_time: u64) callconv(cc) Status,
69 _setTimer: *const fn (event: Event, type: TimerDelay, trigger_time: u64) callconv(cc) Status,
6070
6171 /// Stops execution until an event is signaled.
62 waitForEvent: *const fn (event_len: usize, events: [*]const Event, index: *usize) callconv(cc) Status,
72 _waitForEvent: *const fn (event_len: usize, events: [*]const Event, index: *usize) callconv(cc) Status,
6373
6474 /// Signals an event.
65 signalEvent: *const fn (event: Event) callconv(cc) Status,
75 _signalEvent: *const fn (event: Event) callconv(cc) Status,
6676
6777 /// Closes an event.
68 closeEvent: *const fn (event: Event) callconv(cc) Status,
78 _closeEvent: *const fn (event: Event) callconv(cc) Status,
6979
7080 /// Checks whether an event is in the signaled state.
71 checkEvent: *const fn (event: Event) callconv(cc) Status,
81 _checkEvent: *const fn (event: Event) callconv(cc) Status,
7282
7383 /// Installs a protocol interface on a device handle. If the handle does not exist, it is created
7484 /// and added to the list of handles in the system. installMultipleProtocolInterfaces()
7585 /// performs more error checking than installProtocolInterface(), so its use is recommended over this.
76 installProtocolInterface: *const fn (handle: Handle, protocol: *align(8) const Guid, interface_type: InterfaceType, interface: *anyopaque) callconv(cc) Status,
86 _installProtocolInterface: *const fn (handle: Handle, protocol: *const Guid, interface_type: InterfaceType, interface: *anyopaque) callconv(cc) Status,
7787
7888 /// Reinstalls a protocol interface on a device handle
79 reinstallProtocolInterface: *const fn (handle: Handle, protocol: *align(8) const Guid, old_interface: *anyopaque, new_interface: *anyopaque) callconv(cc) Status,
89 _reinstallProtocolInterface: *const fn (handle: Handle, protocol: *const Guid, old_interface: *anyopaque, new_interface: *anyopaque) callconv(cc) Status,
8090
8191 /// Removes a protocol interface from a device handle. Usage of
8292 /// uninstallMultipleProtocolInterfaces is recommended over this.
83 uninstallProtocolInterface: *const fn (handle: Handle, protocol: *align(8) const Guid, interface: *anyopaque) callconv(cc) Status,
93 _uninstallProtocolInterface: *const fn (handle: Handle, protocol: *const Guid, interface: *anyopaque) callconv(cc) Status,
8494
8595 /// Queries a handle to determine if it supports a specified protocol.
86 handleProtocol: *const fn (handle: Handle, protocol: *align(8) const Guid, interface: *?*anyopaque) callconv(cc) Status,
96 _handleProtocol: *const fn (handle: Handle, protocol: *const Guid, interface: *?*anyopaque) callconv(cc) Status,
8797
88 reserved: *anyopaque,
98 _reserved: *anyopaque,
8999
90100 /// Creates an event that is to be signaled whenever an interface is installed for a specified protocol.
91 registerProtocolNotify: *const fn (protocol: *align(8) const Guid, event: Event, registration: **anyopaque) callconv(cc) Status,
101 _registerProtocolNotify: *const fn (protocol: *const Guid, event: Event, registration: *EventRegistration) callconv(cc) Status,
92102
93103 /// Returns an array of handles that support a specified protocol.
94 locateHandle: *const fn (search_type: LocateSearchType, protocol: ?*align(8) const Guid, search_key: ?*const anyopaque, buffer_size: *usize, buffer: [*]Handle) callconv(cc) Status,
104 _locateHandle: *const fn (search_type: LocateSearchType, protocol: ?*const Guid, search_key: ?*const anyopaque, buffer_size: *usize, buffer: ?[*]Handle) callconv(cc) Status,
95105
96106 /// Locates the handle to a device on the device path that supports the specified protocol
97 locateDevicePath: *const fn (protocols: *align(8) const Guid, device_path: **const DevicePathProtocol, device: *?Handle) callconv(cc) Status,
107 _locateDevicePath: *const fn (protocols: *const Guid, device_path: **const DevicePathProtocol, device: *?Handle) callconv(cc) Status,
98108
99109 /// Adds, updates, or removes a configuration table entry from the EFI System Table.
100 installConfigurationTable: *const fn (guid: *align(8) const Guid, table: ?*anyopaque) callconv(cc) Status,
110 _installConfigurationTable: *const fn (guid: *const Guid, table: ?*anyopaque) callconv(cc) Status,
101111
102112 /// Loads an EFI image into memory.
103 loadImage: *const fn (boot_policy: bool, parent_image_handle: Handle, device_path: ?*const DevicePathProtocol, source_buffer: ?[*]const u8, source_size: usize, image_handle: *?Handle) callconv(cc) Status,
113 _loadImage: *const fn (boot_policy: bool, parent_image_handle: Handle, device_path: ?*const DevicePathProtocol, source_buffer: ?[*]const u8, source_size: usize, image_handle: *Handle) callconv(cc) Status,
104114
105115 /// Transfers control to a loaded image's entry point.
106 startImage: *const fn (image_handle: Handle, exit_data_size: ?*usize, exit_data: ?*[*]u16) callconv(cc) Status,
116 _startImage: *const fn (image_handle: Handle, exit_data_size: ?*usize, exit_data: ?*[*]u16) callconv(cc) Status,
107117
108118 /// Terminates a loaded EFI image and returns control to boot services.
109 exit: *const fn (image_handle: Handle, exit_status: Status, exit_data_size: usize, exit_data: ?*const anyopaque) callconv(cc) Status,
119 _exit: *const fn (image_handle: Handle, exit_status: Status, exit_data_size: usize, exit_data: ?[*]align(2) const u8) callconv(cc) Status,
110120
111121 /// Unloads an image.
112 unloadImage: *const fn (image_handle: Handle) callconv(cc) Status,
122 _unloadImage: *const fn (image_handle: Handle) callconv(cc) Status,
113123
114124 /// Terminates all boot services.
115 exitBootServices: *const fn (image_handle: Handle, map_key: usize) callconv(cc) Status,
125 _exitBootServices: *const fn (image_handle: Handle, map_key: MemoryMapKey) callconv(cc) Status,
116126
117127 /// Returns a monotonically increasing count for the platform.
118 getNextMonotonicCount: *const fn (count: *u64) callconv(cc) Status,
128 _getNextMonotonicCount: *const fn (count: *u64) callconv(cc) Status,
119129
120130 /// Induces a fine-grained stall.
121 stall: *const fn (microseconds: usize) callconv(cc) Status,
131 _stall: *const fn (microseconds: usize) callconv(cc) Status,
122132
123133 /// Sets the system's watchdog timer.
124 setWatchdogTimer: *const fn (timeout: usize, watchdog_code: u64, data_size: usize, watchdog_data: ?[*]const u16) callconv(cc) Status,
134 _setWatchdogTimer: *const fn (timeout: usize, watchdog_code: u64, data_size: usize, watchdog_data: ?[*]const u16) callconv(cc) Status,
125135
126136 /// Connects one or more drives to a controller.
127 connectController: *const fn (controller_handle: Handle, driver_image_handle: ?Handle, remaining_device_path: ?*DevicePathProtocol, recursive: bool) callconv(cc) Status,
137 _connectController: *const fn (controller_handle: Handle, driver_image_handle: ?[*:null]?Handle, remaining_device_path: ?*const DevicePathProtocol, recursive: bool) callconv(cc) Status,
128138
129139 // Disconnects one or more drivers from a controller
130 disconnectController: *const fn (controller_handle: Handle, driver_image_handle: ?Handle, child_handle: ?Handle) callconv(cc) Status,
140 _disconnectController: *const fn (controller_handle: Handle, driver_image_handle: ?Handle, child_handle: ?Handle) callconv(cc) Status,
131141
132142 /// Queries a handle to determine if it supports a specified protocol.
133 openProtocol: *const fn (handle: Handle, protocol: *align(8) const Guid, interface: *?*anyopaque, agent_handle: ?Handle, controller_handle: ?Handle, attributes: OpenProtocolAttributes) callconv(cc) Status,
143 _openProtocol: *const fn (handle: Handle, protocol: *const Guid, interface: ?*?*anyopaque, agent_handle: ?Handle, controller_handle: ?Handle, attributes: OpenProtocolAttributes) callconv(cc) Status,
134144
135145 /// Closes a protocol on a handle that was opened using openProtocol().
136 closeProtocol: *const fn (handle: Handle, protocol: *align(8) const Guid, agent_handle: Handle, controller_handle: ?Handle) callconv(cc) Status,
146 _closeProtocol: *const fn (handle: Handle, protocol: *const Guid, agent_handle: Handle, controller_handle: ?Handle) callconv(cc) Status,
137147
138148 /// Retrieves the list of agents that currently have a protocol interface opened.
139 openProtocolInformation: *const fn (handle: Handle, protocol: *align(8) const Guid, entry_buffer: *[*]ProtocolInformationEntry, entry_count: *usize) callconv(cc) Status,
149 _openProtocolInformation: *const fn (handle: Handle, protocol: *const Guid, entry_buffer: *[*]ProtocolInformationEntry, entry_count: *usize) callconv(cc) Status,
140150
141151 /// Retrieves the list of protocol interface GUIDs that are installed on a handle in a buffer allocated from pool.
142 protocolsPerHandle: *const fn (handle: Handle, protocol_buffer: *[*]*align(8) const Guid, protocol_buffer_count: *usize) callconv(cc) Status,
152 _protocolsPerHandle: *const fn (handle: Handle, protocol_buffer: *[*]*const Guid, protocol_buffer_count: *usize) callconv(cc) Status,
143153
144154 /// Returns an array of handles that support the requested protocol in a buffer allocated from pool.
145 locateHandleBuffer: *const fn (search_type: LocateSearchType, protocol: ?*align(8) const Guid, search_key: ?*const anyopaque, num_handles: *usize, buffer: *[*]Handle) callconv(cc) Status,
155 _locateHandleBuffer: *const fn (search_type: LocateSearchType, protocol: ?*const Guid, search_key: ?*const anyopaque, num_handles: *usize, buffer: *[*]Handle) callconv(cc) Status,
146156
147157 /// Returns the first protocol instance that matches the given protocol.
148 locateProtocol: *const fn (protocol: *align(8) const Guid, registration: ?*const anyopaque, interface: *?*anyopaque) callconv(cc) Status,
158 _locateProtocol: *const fn (protocol: *const Guid, registration: ?EventRegistration, interface: *?*const anyopaque) callconv(cc) Status,
149159
150160 /// Installs one or more protocol interfaces into the boot services environment
151161 // TODO: use callconv(cc) instead once that works
152 installMultipleProtocolInterfaces: *const fn (handle: *Handle, ...) callconv(.c) Status,
162 _installMultipleProtocolInterfaces: *const fn (handle: *Handle, ...) callconv(.c) Status,
153163
154164 /// Removes one or more protocol interfaces into the boot services environment
155165 // TODO: use callconv(cc) instead once that works
156 uninstallMultipleProtocolInterfaces: *const fn (handle: *Handle, ...) callconv(.c) Status,
166 _uninstallMultipleProtocolInterfaces: *const fn (handle: *Handle, ...) callconv(.c) Status,
157167
158168 /// Computes and returns a 32-bit CRC for a data buffer.
159 calculateCrc32: *const fn (data: [*]const u8, data_size: usize, *u32) callconv(cc) Status,
169 _calculateCrc32: *const fn (data: [*]const u8, data_size: usize, *u32) callconv(cc) Status,
160170
161171 /// Copies the contents of one buffer to another buffer
162 copyMem: *const fn (dest: [*]u8, src: [*]const u8, len: usize) callconv(cc) void,
172 _copyMem: *const fn (dest: [*]u8, src: [*]const u8, len: usize) callconv(cc) void,
163173
164174 /// Fills a buffer with a specified value
165 setMem: *const fn (buffer: [*]u8, size: usize, value: u8) callconv(cc) void,
175 _setMem: *const fn (buffer: [*]u8, size: usize, value: u8) callconv(cc) void,
166176
167177 /// Creates an event in a group.
168 createEventEx: *const fn (type: u32, notify_tpl: usize, notify_func: EventNotify, notify_ctx: *const anyopaque, event_group: *align(8) const Guid, event: *Event) callconv(cc) Status,
178 _createEventEx: *const fn (type: u32, notify_tpl: usize, notify_func: EventNotify, notify_ctx: *const anyopaque, event_group: *const Guid, event: *Event) callconv(cc) Status,
179
180 pub const AllocatePagesError = uefi.UnexpectedError || error{
181 OutOfResources,
182 InvalidParameter,
183 NotFound,
184 };
185
186 pub const FreePagesError = uefi.UnexpectedError || error{
187 NotFound,
188 InvalidParameter,
189 };
190
191 pub const GetMemoryMapError = uefi.UnexpectedError || error{
192 InvalidParameter,
193 BufferTooSmall,
194 };
195
196 pub const AllocatePoolError = uefi.UnexpectedError || error{
197 OutOfResources,
198 InvalidParameter,
199 };
200
201 pub const FreePoolError = uefi.UnexpectedError || error{
202 InvalidParameter,
203 };
204
205 pub const CreateEventError = uefi.UnexpectedError || error{
206 InvalidParameter,
207 OutOfResources,
208 };
209
210 pub const SetTimerError = uefi.UnexpectedError || error{
211 InvalidParameter,
212 };
213
214 pub const WaitForEventError = uefi.UnexpectedError || error{
215 InvalidParameter,
216 Unsupported,
217 };
218
219 pub const CheckEventError = uefi.UnexpectedError || error{
220 InvalidParameter,
221 };
222
223 pub const ReinstallProtocolInterfaceError = uefi.UnexpectedError || error{
224 NotFound,
225 AccessDenied,
226 InvalidParameter,
227 };
228
229 pub const HandleProtocolError = uefi.UnexpectedError || error{
230 Unsupported,
231 };
232
233 pub const RegisterProtocolNotifyError = uefi.UnexpectedError || error{
234 OutOfResources,
235 InvalidParameter,
236 };
237
238 pub const NumHandlesError = uefi.UnexpectedError || error{
239 OutOfResources,
240 };
241
242 pub const LocateHandleError = uefi.UnexpectedError || error{
243 BufferTooSmall,
244 InvalidParameter,
245 };
246
247 pub const LocateDevicePathError = uefi.UnexpectedError || error{
248 NotFound,
249 InvalidParameter,
250 };
251
252 pub const InstallConfigurationTableError = uefi.UnexpectedError || error{
253 InvalidParameter,
254 OutOfResources,
255 };
256
257 pub const UninstallConfigurationTableError = InstallConfigurationTableError || error{
258 NotFound,
259 };
260
261 pub const LoadImageError = uefi.UnexpectedError || error{
262 NotFound,
263 InvalidParameter,
264 Unsupported,
265 OutOfResources,
266 LoadError,
267 DeviceError,
268 AccessDenied,
269 SecurityViolation,
270 };
271
272 pub const StartImageError = uefi.UnexpectedError || error{
273 InvalidParameter,
274 SecurityViolation,
275 };
276
277 pub const ExitError = uefi.UnexpectedError || error{
278 InvalidParameter,
279 };
280
281 pub const ExitBootServicesError = uefi.UnexpectedError || error{
282 InvalidParameter,
283 };
284
285 pub const GetNextMonotonicCountError = uefi.UnexpectedError || error{
286 DeviceError,
287 InvalidParameter,
288 };
289
290 pub const SetWatchdogTimerError = uefi.UnexpectedError || error{
291 InvalidParameter,
292 Unsupported,
293 DeviceError,
294 };
295
296 pub const ConnectControllerError = uefi.UnexpectedError || error{
297 InvalidParameter,
298 NotFound,
299 SecurityViolation,
300 };
301
302 pub const DisconnectControllerError = uefi.UnexpectedError || error{
303 InvalidParameter,
304 OutOfResources,
305 DeviceError,
306 };
307
308 pub const OpenProtocolError = uefi.UnexpectedError || error{
309 InvalidParameter,
310 Unsupported,
311 AccessDenied,
312 AlreadyStarted,
313 };
314
315 pub const CloseProtocolError = uefi.UnexpectedError || error{
316 InvalidParameter,
317 NotFound,
318 };
319
320 pub const OpenProtocolInformationError = uefi.UnexpectedError || error{
321 OutOfResources,
322 };
323
324 pub const ProtocolsPerHandleError = uefi.UnexpectedError || error{
325 InvalidParameter,
326 OutOfResources,
327 };
328
329 pub const LocateHandleBufferError = uefi.UnexpectedError || error{
330 InvalidParameter,
331 OutOfResources,
332 };
333
334 pub const LocateProtocolError = uefi.UnexpectedError || error{
335 InvalidParameter,
336 };
337
338 pub const InstallProtocolInterfacesError = uefi.UnexpectedError || error{
339 AlreadyStarted,
340 OutOfResources,
341 InvalidParameter,
342 };
343
344 pub const UninstallProtocolInterfacesError = uefi.UnexpectedError || error{
345 InvalidParameter,
346 };
347
348 pub const CalculateCrc32Error = uefi.UnexpectedError || error{
349 InvalidParameter,
350 };
351
352 /// Allocates pages of memory.
353 ///
354 /// This function scans the memory map to locate free pages. When it finds a
355 /// physically contiguous block of pages that is large enough and also satisfies
356 /// the allocation requirements of `alloc_type`, it changes the memory map to
357 /// indicate that the pages are now of type `mem_type`.
358 ///
359 /// In general, UEFI OS loaders and UEFI applications should allocate memory
360 /// (and pool) of type `.loader_data`. UEFI boot service drivers must allocate
361 /// memory (and pool) of type `.boot_services_data`. UREFI runtime drivers
362 /// should allocate memory (and pool) of type `.runtime_services_data`
363 /// (although such allocation can only be made during boot services time).
364 ///
365 /// Allocation requests of `.allocate_any_pages` allocate any available range
366 /// of pages that satisfies the request.
367 ///
368 /// Allocation requests of `.allocate_max_address` allocate any available range
369 /// of pages whose uppermost address is less than or equal to the address
370 /// pointed to by the input.
371 ///
372 /// Allocation requests of `.allocate_address` allocate pages at the address
373 /// pointed to by the input.
374 pub fn allocatePages(
375 self: *BootServices,
376 location: AllocateLocation,
377 mem_type: MemoryType,
378 pages: usize,
379 ) AllocatePagesError![]align(4096) Page {
380 var ptr: [*]align(4096) Page = switch (location) {
381 .any => undefined,
382 .address, .max_address => |ptr| ptr,
383 };
384
385 switch (self._allocatePages(
386 std.meta.activeTag(location),
387 mem_type,
388 pages,
389 &ptr,
390 )) {
391 .success => return ptr[0..pages],
392 .out_of_resources => return error.OutOfResources,
393 .invalid_parameter => return error.InvalidParameter,
394 .not_found => return error.NotFound,
395 else => |status| return uefi.unexpectedStatus(status),
396 }
397 }
398
399 pub fn freePages(self: *BootServices, pages: []align(4096) Page) FreePagesError!void {
400 switch (self._freePages(pages.ptr, pages.len)) {
401 .success => {},
402 .not_found => return error.NotFound,
403 .invalid_parameter => return error.InvalidParameter,
404 else => |status| return uefi.unexpectedStatus(status),
405 }
406 }
407
408 pub fn getMemoryMapInfo(self: *const BootServices) uefi.UnexpectedError!MemoryMapInfo {
409 var info: MemoryMapInfo = undefined;
410 info.len = 0;
411
412 switch (self._getMemoryMap(
413 &info.len,
414 null,
415 &info.key,
416 &info.descriptor_size,
417 &info.descriptor_version,
418 )) {
419 .success, .buffer_too_small => {
420 info.len = @divExact(info.len, info.descriptor_size);
421 return info;
422 },
423 else => |status| return uefi.unexpectedStatus(status),
424 }
425 }
426
427 pub fn getMemoryMap(
428 self: *const BootServices,
429 buffer: []align(@alignOf(MemoryDescriptor)) u8,
430 ) GetMemoryMapError!MemoryMapSlice {
431 var info: MemoryMapInfo = undefined;
432 info.len = buffer.len;
433
434 switch (self._getMemoryMap(
435 &info.len,
436 buffer.ptr,
437 &info.key,
438 &info.descriptor_size,
439 &info.descriptor_version,
440 )) {
441 .success => {
442 info.len = @divExact(info.len, info.descriptor_size);
443 return .{ .info = info, .ptr = buffer.ptr };
444 },
445 .buffer_too_small => return error.BufferTooSmall,
446 .invalid_parameter => return error.InvalidParameter,
447 else => |status| return uefi.unexpectedStatus(status),
448 }
449 }
450
451 /// Allocates a memory region of `size` bytes from memory of type `pool_type`
452 /// and returns the allocated memory. Allocates pages from `.conventional_memory`
453 /// as needed to grow the requested pool type.
454 pub fn allocatePool(
455 self: *BootServices,
456 pool_type: MemoryType,
457 size: usize,
458 ) AllocatePoolError![]align(8) u8 {
459 var ptr: [*]align(8) u8 = undefined;
460
461 switch (self._allocatePool(pool_type, size, &ptr)) {
462 .success => return ptr[0..size],
463 .out_of_resources => return error.OutOfResources,
464 .invalid_parameter => return error.InvalidParameter,
465 else => |status| return uefi.unexpectedStatus(status),
466 }
467 }
468
469 pub fn freePool(self: *BootServices, ptr: [*]align(8) u8) FreePoolError!void {
470 switch (self._freePool(ptr)) {
471 .success => {},
472 .invalid_parameter => return error.InvalidParameter,
473 else => |status| return uefi.unexpectedStatus(status),
474 }
475 }
476
477 pub fn createEvent(
478 self: *BootServices,
479 event_type: uefi.EventType,
480 notify_opts: NotifyOpts,
481 ) CreateEventError!Event {
482 var evt: Event = undefined;
483
484 switch (self._createEvent(
485 @bitCast(event_type),
486 notify_opts.tpl,
487 notify_opts.function,
488 notify_opts.context,
489 &evt,
490 )) {
491 .success => return evt,
492 .invalid_parameter => return error.InvalidParameter,
493 .out_of_resources => return error.OutOfResources,
494 else => |status| return uefi.unexpectedStatus(status),
495 }
496 }
497
498 /// Cancels any previous time trigger setting for the event, and sets a new
499 /// trigger timer for the event.
500 ///
501 /// Returns `error.InvalidParameter` if the event is not a timer event.
502 pub fn setTimer(
503 self: *BootServices,
504 event: Event,
505 @"type": TimerDelay,
506 trigger_time: u64,
507 ) SetTimerError!void {
508 switch (self._setTimer(event, @"type", trigger_time)) {
509 .success => {},
510 .invalid_parameter => return error.InvalidParameter,
511 else => |status| return uefi.unexpectedStatus(status),
512 }
513 }
514
515 /// Returns the event that was signaled, along with its index in the slice.
516 pub fn waitForEvent(
517 self: *BootServices,
518 events: []const Event,
519 ) WaitForEventError!struct { *const Event, usize } {
520 var idx: usize = undefined;
521 switch (self._waitForEvent(events.len, events.ptr, &idx)) {
522 .success => return .{ &events[idx], idx },
523 .invalid_parameter => return error.InvalidParameter,
524 .unsupported => return error.Unsupported,
525 else => |status| return uefi.unexpectedStatus(status),
526 }
527 }
528
529 /// If `event` is `EventType.signal`, then the event’s notification function
530 /// is scheduled to be invoked at the event’s notification task priority level.
531 /// This function may be invoked from any task priority level.
532 ///
533 /// If the supplied Event is a part of an event group, then all of the events
534 /// in the event group are also signaled and their notification functions are
535 /// scheduled.
536 ///
537 /// When signaling an event group, it is possible to create an event in the
538 /// group, signal it and then close the event to remove it from the group.
539 pub fn signalEvent(self: *BootServices, event: Event) uefi.UnexpectedError!void {
540 switch (self._signalEvent(event)) {
541 .success => {},
542 else => |status| return uefi.unexpectedStatus(status),
543 }
544 }
545
546 pub fn closeEvent(self: *BootServices, event: Event) uefi.UnexpectedError!void {
547 switch (self._closeEvent(event)) {
548 .success => {},
549 else => |status| return uefi.unexpectedStatus(status),
550 }
551 }
552
553 /// Checks to see whether an event is signaled.
554 ///
555 /// The underlying function is equivalent to this pseudo-code:
556 /// ```
557 /// if (event.type.signal)
558 /// return error.InvalidParameter;
559 ///
560 /// if (event.signaled) {
561 /// event.signaled = false;
562 /// return true;
563 /// }
564 ///
565 /// const notify = event.notification_function orelse return false;
566 /// notify();
567 ///
568 /// if (event.signaled) {
569 /// event.signaled = false;
570 /// return true;
571 /// }
572 ///
573 /// return false;
574 /// ```
575 pub fn checkEvent(self: *BootServices, event: Event) CheckEventError!bool {
576 switch (self._checkEvent(event)) {
577 .success => return true,
578 .not_ready => return false,
579 .invalid_parameter => return error.InvalidParameter,
580 else => |status| return uefi.unexpectedStatus(status),
581 }
582 }
583
584 /// See `installProtocolInterfaces`.
585 ///
586 /// Does not call `self._installProtocolInterface`, because
587 /// `self._installMultipleProtocolInterfaces` performs more error checks.
588 pub fn installProtocolInterface(
589 self: *BootServices,
590 handle: ?Handle,
591 interface: anytype,
592 ) InstallProtocolInterfacesError!Handle {
593 return self.installProtocolInterfaces(handle, .{
594 interface,
595 });
596 }
597
598 /// Reinstalls a protocol interface on a device handle.
599 ///
600 /// `new` may be the same as `old`. If it is, the registered protocol notifications
601 /// occur for the handle without replacing the interface on the handle.
602 ///
603 /// Any process that has registered to wait for the installation of the interface
604 /// is notified.
605 ///
606 /// The caller is responsible for ensuring that there are no references to `old`
607 /// if it is being removed.
608 pub fn reinstallProtocolInterface(
609 self: *BootServices,
610 handle: Handle,
611 Protocol: type,
612 old: ?*const Protocol,
613 new: ?*const Protocol,
614 ) ReinstallProtocolInterfaceError!void {
615 if (!@hasDecl(Protocol, "guid"))
616 @compileError("protocol is missing guid");
617
618 switch (self._reinstallProtocolInterface(
619 handle,
620 &Protocol.guid,
621 old,
622 new,
623 )) {
624 .success => {},
625 .not_found => return error.NotFound,
626 .access_denied => return error.AccessDenied,
627 .invalid_parameter => return error.InvalidParameter,
628 else => |status| return uefi.unexpectedStatus(status),
629 }
630 }
631
632 /// See `uninstallProtocolInterfaces`.
633 ///
634 /// Does not call `self._uninstallProtocolInterface`, because
635 /// `self._uninstallMultipleProtocolInterfaces` performs more error checks.
636 pub fn uninstallProtocolInterface(
637 self: *BootServices,
638 handle: Handle,
639 interface: anytype,
640 ) UninstallProtocolInterfacesError!void {
641 return self.uninstallProtocolInterfaces(handle, .{
642 interface,
643 });
644 }
645
646 /// Returns a pointer to the `Protocol` interface if it's supported by the
647 /// handle.
648 ///
649 /// Note that UEFI implementations are no longer required to implement this
650 /// function, so it's implemented using `openProtocol` instead.
651 pub fn handleProtocol(
652 self: *BootServices,
653 Protocol: type,
654 handle: Handle,
655 ) HandleProtocolError!?*Protocol {
656 // per https://uefi.org/specs/UEFI/2.10/07_Services_Boot_Services.html#efi-boot-services-handleprotocol
657 // handleProtocol is basically `openProtocol` where:
658 // 1. agent_handle is `uefi.handle` (aka handle passed to `EfiMain`)
659 // 2. controller_handle is `null`
660 // 3. attributes is `EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL`
661
662 return self.openProtocol(
663 Protocol,
664 handle,
665 .{ .by_handle_protocol = .{ .agent = uefi.handle } },
666 ) catch |err| switch (err) {
667 error.AlreadyStarted => return uefi.unexpectedStatus(.already_started),
668 error.AccessDenied => return uefi.unexpectedStatus(.access_denied),
669 error.InvalidParameter => return uefi.unexpectedStatus(.invalid_parameter),
670 else => return @errorCast(err),
671 };
672 }
673
674 pub fn registerProtocolNotify(
675 self: *BootServices,
676 Protocol: type,
677 event: Event,
678 ) RegisterProtocolNotifyError!EventRegistration {
679 if (!@hasDecl(Protocol, "guid"))
680 @compileError("Protocol is missing guid");
681
682 var registration: EventRegistration = undefined;
683 switch (self._registerProtocolNotify(
684 &Protocol.guid,
685 event,
686 &registration,
687 )) {
688 .success => return registration,
689 .out_of_resources => return error.OutOfResources,
690 .invalid_parameter => return error.InvalidParameter,
691 else => |status| return uefi.unexpectedStatus(status),
692 }
693 }
694
695 /// Returns the number of handles that match the given search criteria.
696 pub fn locateHandleLen(self: *const BootServices, search: LocateSearch) NumHandlesError!usize {
697 var len: usize = 0;
698 switch (self._locateHandle(
699 std.meta.activeTag(search),
700 if (search == .by_protocol) search.by_protocol else null,
701 if (search == .by_register_notify) search.by_register_notify else null,
702 &len,
703 null,
704 )) {
705 .success => return @divExact(len, @sizeOf(Handle)),
706 .out_of_resources => return error.OutOfResources,
707 else => |status| return uefi.unexpectedStatus(status),
708 }
709 }
710
711 /// To determine the necessary size of `buffer`, call `locateHandleLen` first.
712 pub fn locateHandle(
713 self: *BootServices,
714 search: LocateSearch,
715 buffer: []Handle,
716 ) LocateHandleError![]Handle {
717 var len: usize = @sizeOf(Handle) * buffer.len;
718 switch (self._locateHandle(
719 std.meta.activeTag(search),
720 if (search == .by_protocol) search.by_protocol else null,
721 if (search == .by_register_notify) search.by_register_notify else null,
722 &len,
723 buffer.ptr,
724 )) {
725 .success => return buffer[0..@divExact(len, @sizeOf(Handle))],
726 .not_found => return buffer[0..0],
727 .buffer_too_small => return error.BufferTooSmall,
728 .invalid_parameter => return error.InvalidParameter,
729 else => |status| return uefi.unexpectedStatus(status),
730 }
731 }
732
733 /// Locates all devices on `device_path` that support `Protocol`. Once the closest
734 /// match to `device_path` is found, it returns the unmatched device path and handle.
735 pub fn locateDevicePath(
736 self: *const BootServices,
737 device_path: *const DevicePathProtocol,
738 Protocol: type,
739 ) LocateHandleError!?struct { *const DevicePathProtocol, Handle } {
740 if (!@hasDecl(Protocol, "guid"))
741 @compileError("Protocol is missing guid");
742
743 var dev_path = device_path;
744 var device: ?Handle = undefined;
745 switch (self._locateDevicePath(
746 &Protocol.guid,
747 &dev_path,
748 &device,
749 )) {
750 .success => return .{ dev_path, device.? },
751 .not_found => return null,
752 .invalid_parameter => return error.InvalidParameter,
753 else => |status| return uefi.unexpectedStatus(status),
754 }
755 }
756
757 pub fn installConfigurationTable(
758 self: *BootServices,
759 guid: *const Guid,
760 table: *anyopaque,
761 ) InstallConfigurationTableError!void {
762 switch (self._installConfigurationTable(
763 guid,
764 table,
765 )) {
766 .success => {},
767 .invalid_parameter => return error.InvalidParameter,
768 .out_of_resources => return error.OutOfResources,
769 else => |status| return uefi.unexpectedStatus(status),
770 }
771 }
772
773 pub fn uninstallConfigurationTable(
774 self: *BootServices,
775 guid: *const Guid,
776 ) UninstallConfigurationTableError!void {
777 switch (self._installConfigurationTable(
778 guid,
779 null,
780 )) {
781 .success => {},
782 .not_found => return error.NotFound,
783 .invalid_parameter => return error.InvalidParameter,
784 .out_of_resources => return error.OutOfResources,
785 else => |status| return uefi.unexpectedStatus(status),
786 }
787 }
788
789 pub const LoadImageSource = union(enum) {
790 buffer: []const u8,
791 device_path: *const DevicePathProtocol,
792 };
793
794 pub fn loadImage(
795 self: *BootServices,
796 boot_policy: bool,
797 parent_image: Handle,
798 source: LoadImageSource,
799 ) LoadImageError!Handle {
800 var handle: Handle = undefined;
801
802 switch (self._loadImage(
803 boot_policy,
804 parent_image,
805 if (source == .device_path) source.device_path else null,
806 if (source == .buffer) source.buffer.ptr else null,
807 if (source == .buffer) source.buffer.len else 0,
808 &handle,
809 )) {
810 .success => return handle,
811 .not_found => return error.NotFound,
812 .invalid_parameter => return error.InvalidParameter,
813 .unsupported => return error.Unsupported,
814 .out_of_resources => return error.OutOfResources,
815 .load_error => return error.LoadError,
816 .device_error => return error.DeviceError,
817 .access_denied => return error.AccessDenied,
818 .security_violation => return error.SecurityViolation,
819 else => |status| return uefi.unexpectedStatus(status),
820 }
821 }
822
823 pub fn startImage(self: *BootServices, image: Handle) StartImageError!ImageExitData {
824 var exit_data_size: usize = undefined;
825 var exit_data: [*]u16 = undefined;
826
827 const exit_code = switch (self._startImage(
828 image,
829 &exit_data_size,
830 &exit_data,
831 )) {
832 .invalid_parameter => return error.InvalidParameter,
833 .security_violation => return error.SecurityViolation,
834 else => |exit_code| exit_code,
835 };
836
837 if (exit_data_size == 0) return .{
838 .code = exit_code,
839 .description = null,
840 .data = null,
841 };
842
843 const description_ptr: [*:0]const u16 = @ptrCast(exit_data);
844 const description = std.mem.sliceTo(description_ptr, 0);
845
846 return ImageExitData{
847 .code = exit_code,
848 .description = description,
849 .data = exit_data[description.len + 1 .. exit_data_size],
850 };
851 }
852
853 /// `message` must be allocated using `allocatePool`.
854 pub fn exit(
855 self: *BootServices,
856 handle: Handle,
857 status: Status,
858 message: ?[:0]const u16,
859 ) ExitError!void {
860 switch (self._exit(
861 handle,
862 status,
863 if (message) |msg| (2 * msg.len) + 1 else 0,
864 if (message) |msg| @ptrCast(msg.ptr) else null,
865 )) {
866 .success => {},
867 .invalid_parameter => return error.InvalidParameter,
868 else => |exit_status| return uefi.unexpectedStatus(exit_status),
869 }
870 }
871
872 /// `message` should be a null-terminated u16 string followed by binary data
873 /// allocated using `allocatePool`.
874 pub fn exitWithData(
875 self: *BootServices,
876 handle: Handle,
877 status: Status,
878 data: []align(2) const u8,
879 ) ExitError!void {
880 switch (self._exit(handle, status, data.len, data.ptr)) {
881 .success => {},
882 .invalid_parameter => return error.InvalidParameter,
883 else => |exit_status| return uefi.unexpectedStatus(exit_status),
884 }
885 }
886
887 /// The result is the exit code of the unload handler. Any error codes are
888 /// `try/catch`-able, leaving only success and warning codes as the result.
889 pub fn unloadImage(
890 self: *BootServices,
891 image: Handle,
892 ) Status.Error!Status {
893 const status = self._unloadImage(image);
894 try status.err();
895 return status;
896 }
897
898 pub fn exitBootServices(
899 self: *BootServices,
900 image: Handle,
901 map_key: MemoryMapKey,
902 ) ExitBootServicesError!void {
903 switch (self._exitBootServices(image, map_key)) {
904 .success => {},
905 .invalid_parameter => return error.InvalidParameter,
906 else => |status| return uefi.unexpectedStatus(status),
907 }
908 }
909
910 pub fn getNextMonotonicCount(
911 self: *const BootServices,
912 count: *u64,
913 ) GetNextMonotonicCountError!void {
914 switch (self._getNextMonotonicCount(count)) {
915 .success => {},
916 .device_error => return error.DeviceError,
917 .invalid_parameter => return error.InvalidParameter,
918 else => |status| return uefi.unexpectedStatus(status),
919 }
920 }
921
922 pub fn stall(self: *const BootServices, microseconds: usize) uefi.UnexpectedError!void {
923 switch (self._stall(microseconds)) {
924 .success => {},
925 else => |status| return uefi.unexpectedStatus(status),
926 }
927 }
928
929 pub fn setWatchdogTimer(
930 self: *BootServices,
931 timeout: usize,
932 watchdog_code: u64,
933 data: ?[]const u16,
934 ) SetWatchdogTimerError!void {
935 switch (self._setWatchdogTimer(
936 timeout,
937 watchdog_code,
938 if (data) |d| d.len else 0,
939 if (data) |d| d.ptr else null,
940 )) {
941 .success => {},
942 .invalid_parameter => return error.InvalidParameter,
943 .unsupported => return error.Unsupported,
944 .device_error => return error.DeviceError,
945 else => |status| return uefi.unexpectedStatus(status),
946 }
947 }
948
949 /// `driver_image` should be a null-terminated ordered list of handles.
950 pub fn connectController(
951 self: *BootServices,
952 controller: Handle,
953 driver_image: ?[*:null]?Handle,
954 remaining_device_path: ?*const DevicePathProtocol,
955 recursive: bool,
956 ) ConnectControllerError!void {
957 switch (self._connectController(
958 controller,
959 driver_image,
960 remaining_device_path,
961 recursive,
962 )) {
963 .success => {},
964 .invalid_parameter => return error.InvalidParameter,
965 .not_found => return error.NotFound,
966 .security_violation => return error.SecurityViolation,
967 else => |status| return uefi.unexpectedStatus(status),
968 }
969 }
970
971 pub fn disconnectController(
972 self: *BootServices,
973 controller: Handle,
974 driver_image: ?Handle,
975 child: ?Handle,
976 ) DisconnectControllerError!void {
977 switch (self._disconnectController(
978 controller,
979 driver_image,
980 child,
981 )) {
982 .success => {},
983 .invalid_parameter => return error.InvalidParameter,
984 .out_of_resources => return error.OutOfResources,
985 .device_error => return error.DeviceError,
986 else => |status| return uefi.unexpectedStatus(status),
987 }
988 }
169989
170990 /// Opens a protocol with a structure as the loaded image for a UEFI application
171 pub fn openProtocolSt(self: *BootServices, comptime protocol: type, handle: Handle) !*protocol {
172 if (!@hasDecl(protocol, "guid"))
173 @compileError("Protocol is missing guid!");
991 ///
992 /// If `flag` is `.test_protocol`, then the only valid return value is `null`,
993 /// and `Status.unsupported` is returned. Otherwise, if `_openProtocol` returns
994 /// `Status.unsupported`, then `null` is returned.
995 pub fn openProtocol(
996 self: *BootServices,
997 Protocol: type,
998 handle: Handle,
999 attributes: OpenProtocolArgs,
1000 ) OpenProtocolError!?*Protocol {
1001 if (!@hasDecl(Protocol, "guid"))
1002 @compileError("Protocol is missing guid: " ++ @typeName(Protocol));
1741003
175 var ptr: ?*protocol = undefined;
1004 const agent_handle: ?Handle, const controller_handle: ?Handle = switch (attributes) {
1005 inline else => |arg| .{ arg.agent, arg.controller },
1006 };
1761007
177 try self.openProtocol(
1008 var ptr: ?*Protocol = undefined;
1009
1010 switch (self._openProtocol(
1781011 handle,
179 &protocol.guid,
1012 &Protocol.guid,
1801013 @as(*?*anyopaque, @ptrCast(&ptr)),
181 // Invoking handle (loaded image)
182 uefi.handle,
183 // Control handle (null as not a driver)
184 null,
185 uefi.tables.OpenProtocolAttributes{ .by_handle_protocol = true },
186 ).err();
1014 agent_handle,
1015 controller_handle,
1016 std.meta.activeTag(attributes),
1017 )) {
1018 .success => return if (attributes == .test_protocol) null else ptr,
1019 .unsupported => return if (attributes == .test_protocol) error.Unsupported else null,
1020 .access_denied => return error.AccessDenied,
1021 .already_started => return error.AlreadyStarted,
1022 else => |status| return uefi.unexpectedStatus(status),
1023 }
1024 }
1025
1026 pub fn closeProtocol(
1027 self: *BootServices,
1028 handle: Handle,
1029 Protocol: type,
1030 agent: Handle,
1031 controller: ?Handle,
1032 ) CloseProtocolError!void {
1033 if (!@hasDecl(Protocol, "guid"))
1034 @compileError("protocol is missing guid: " ++ @typeName(Protocol));
1035
1036 switch (self._closeProtocol(
1037 handle,
1038 &Protocol.guid,
1039 agent,
1040 controller,
1041 )) {
1042 .success => {},
1043 .invalid_parameter => return error.InvalidParameter,
1044 .not_found => return error.NotFound,
1045 else => |status| return uefi.unexpectedStatus(status),
1046 }
1047 }
1048
1049 pub fn openProtocolInformation(
1050 self: *const BootServices,
1051 handle: Handle,
1052 Protocol: type,
1053 ) OpenProtocolInformationError!?[]ProtocolInformationEntry {
1054 var entries: [*]ProtocolInformationEntry = undefined;
1055 var len: usize = undefined;
1056
1057 switch (self._openProtocolInformation(
1058 handle,
1059 &Protocol.guid,
1060 &entries,
1061 &len,
1062 )) {
1063 .success => return entries[0..len],
1064 .not_found => return null,
1065 .out_of_resources => return error.OutOfResources,
1066 else => |status| return uefi.unexpectedStatus(status),
1067 }
1068 }
1069
1070 pub fn protocolsPerHandle(
1071 self: *const BootServices,
1072 handle: Handle,
1073 ) ProtocolsPerHandleError![]*const Guid {
1074 var guids: [*]*const Guid = undefined;
1075 var len: usize = undefined;
1076
1077 switch (self._protocolsPerHandle(
1078 handle,
1079 &guids,
1080 &len,
1081 )) {
1082 .success => return guids[0..len],
1083 .invalid_parameter => return error.InvalidParameter,
1084 .out_of_resources => return error.OutOfResources,
1085 else => |status| return uefi.unexpectedStatus(status),
1086 }
1087 }
1088
1089 pub fn locateHandleBuffer(
1090 self: *const BootServices,
1091 search: LocateSearch,
1092 ) LocateHandleBufferError!?[]Handle {
1093 var handles: [*]Handle = undefined;
1094 var len: usize = undefined;
1095
1096 switch (self._locateHandleBuffer(
1097 std.meta.activeTag(search),
1098 if (search == .by_protocol) search.by_protocol else null,
1099 if (search == .by_register_notify) search.by_register_notify else null,
1100 &len,
1101 &handles,
1102 )) {
1103 .success => return handles[0..len],
1104 .invalid_parameter => return error.InvalidParameter,
1105 .not_found => return null,
1106 .out_of_resources => return error.OutOfResources,
1107 else => |status| return uefi.unexpectedStatus(status),
1108 }
1109 }
1110
1111 pub fn locateProtocol(
1112 self: *const BootServices,
1113 Protocol: type,
1114 registration: ?EventRegistration,
1115 ) LocateProtocolError!?*Protocol {
1116 var interface: *Protocol = undefined;
1117
1118 switch (self._locateProtocol(
1119 &Protocol.guid,
1120 registration,
1121 @ptrCast(&interface),
1122 )) {
1123 .success => return interface,
1124 .not_found => return null,
1125 .invalid_parameter => return error.InvalidParameter,
1126 else => |status| return uefi.unexpectedStatus(status),
1127 }
1128 }
1129
1130 /// Installs a set of protocol interfaces into the boot services environment.
1131 ///
1132 /// This function's final argument should be a tuple of pointers to protocol
1133 /// interfaces. For example:
1134 ///
1135 /// ```
1136 /// const handle = try boot_services.installProtocolInterfaces(null, .{
1137 /// &my_interface_1,
1138 /// &my_interface_2,
1139 /// });
1140 /// ```
1141 ///
1142 /// The underlying function accepts a vararg list of pairs of Guid pointers
1143 /// and opaque pointers to the interface. To provide a guid, the interface
1144 /// types should declare a `guid` constant like so:
1145 ///
1146 /// ```
1147 /// pub const guid: uefi.Guid = .{ ... };
1148 /// ```
1149 ///
1150 /// See `std.os.uefi.protocol` for examples of protocol type definitions.
1151 pub fn installProtocolInterfaces(
1152 self: *BootServices,
1153 handle: ?Handle,
1154 interfaces: anytype,
1155 ) InstallProtocolInterfacesError!Handle {
1156 var hdl: ?Handle = handle;
1157 const args_tuple = protocolInterfaces(&hdl, interfaces);
1158
1159 switch (@call(
1160 .auto,
1161 self._installMultipleProtocolInterfaces,
1162 args_tuple,
1163 )) {
1164 .success => return hdl.?,
1165 .already_started => return error.AlreadyStarted,
1166 .out_of_resources => return error.OutOfResources,
1167 .invalid_parameter => return error.InvalidParameter,
1168 else => |status| return uefi.unexpectedStatus(status),
1169 }
1170 }
1171
1172 pub fn uninstallProtocolInterfaces(
1173 self: *BootServices,
1174 handle: Handle,
1175 interfaces: anytype,
1176 ) UninstallProtocolInterfacesError!void {
1177 const args_tuple = protocolInterfaces(handle, interfaces);
1871178
188 return ptr.?;
1179 switch (@call(
1180 .auto,
1181 self._uninstallMultipleProtocolInterfaces,
1182 args_tuple,
1183 )) {
1184 .success => {},
1185 .invalid_parameter => return error.InvalidParameter,
1186 else => |status| return uefi.unexpectedStatus(status),
1187 }
1188 }
1189
1190 pub fn calculateCrc32(
1191 self: *const BootServices,
1192 data: []const u8,
1193 ) CalculateCrc32Error!u32 {
1194 var value: u32 = undefined;
1195 switch (self._calculateCrc32(data.ptr, data.len, &value)) {
1196 .success => return value,
1197 .invalid_parameter => return error.InvalidParameter,
1198 else => |status| return uefi.unexpectedStatus(status),
1199 }
1891200 }
1901201
1911202 pub const signature: u64 = 0x56524553544f4f42;
1921203
193 pub const event_timer: u32 = 0x80000000;
194 pub const event_runtime: u32 = 0x40000000;
195 pub const event_notify_wait: u32 = 0x00000100;
196 pub const event_notify_signal: u32 = 0x00000200;
197 pub const event_signal_exit_boot_services: u32 = 0x00000201;
198 pub const event_signal_virtual_address_change: u32 = 0x00000202;
199
200 pub const tpl_application: usize = 4;
201 pub const tpl_callback: usize = 8;
202 pub const tpl_notify: usize = 16;
203 pub const tpl_high_level: usize = 31;
1204 pub const NotifyOpts = struct {
1205 tpl: TaskPriorityLevel = .application,
1206 function: ?*const fn (Event, ?*anyopaque) callconv(cc) void = null,
1207 context: ?*anyopaque = null,
1208 };
1209
1210 pub const TaskPriorityLevel = enum(usize) {
1211 application = 4,
1212 callback = 8,
1213 notify = 16,
1214 high_level = 31,
1215 _,
1216 };
1217
1218 pub const ImageExitData = struct {
1219 code: Status,
1220 description: ?[:0]const u16,
1221 data: ?[]const u16,
1222 };
2041223};
1224
1225fn protocolInterfaces(
1226 handle_arg: anytype,
1227 interfaces: anytype,
1228) ProtocolInterfaces(@TypeOf(handle_arg), @TypeOf(interfaces)) {
1229 var result: ProtocolInterfaces(
1230 @TypeOf(handle_arg),
1231 @TypeOf(interfaces),
1232 ) = undefined;
1233 result[0] = handle_arg;
1234
1235 var idx: usize = 1;
1236 inline for (interfaces) |interface| {
1237 const InterfacePtr = @TypeOf(interface);
1238 const Interface = switch (@typeInfo(InterfacePtr)) {
1239 .pointer => |pointer| pointer.child,
1240 else => @compileError("expected tuple of '*const Protocol', got " ++ @typeName(InterfacePtr)),
1241 };
1242
1243 if (!@hasDecl(Interface, "guid"))
1244 @compileError("protocol interface '" ++ @typeName(Interface) ++
1245 "' does not declare a 'const guid: uefi.Guid'.");
1246
1247 switch (@typeInfo(Interface)) {
1248 .@"struct" => |struct_info| if (struct_info.layout != .@"extern")
1249 @compileLog("protocol interface '" ++ @typeName(Interface) ++
1250 "' is not extern - this is likely a mistake"),
1251 else => @compileError("protocol interface must be a struct, got " ++ @typeName(Interface)),
1252 }
1253
1254 result[idx] = &Interface.guid;
1255 result[idx + 1] = @ptrCast(interface);
1256 idx += 2;
1257 }
1258
1259 return result;
1260}
1261
1262fn ProtocolInterfaces(HandleType: type, Interfaces: type) type {
1263 const interfaces_type_info = @typeInfo(Interfaces);
1264 if (interfaces_type_info != .@"struct" or !interfaces_type_info.@"struct".is_tuple)
1265 @compileError("expected tuple of protocol interfaces, got " ++ @typeName(Interfaces));
1266 const interfaces_info = interfaces_type_info.@"struct";
1267
1268 var tuple_types: [interfaces_info.fields.len * 2 + 1]type = undefined;
1269 tuple_types[0] = HandleType;
1270 var idx = 1;
1271 while (idx < tuple_types.len) : (idx += 2) {
1272 tuple_types[idx] = *const Guid;
1273 tuple_types[idx + 1] = *const anyopaque;
1274 }
1275
1276 return std.meta.Tuple(tuple_types[0..]);
1277}
lib/std/os/uefi/tables/configuration_table.zig+9-9
......@@ -5,7 +5,7 @@ pub const ConfigurationTable = extern struct {
55 vendor_guid: Guid,
66 vendor_table: *anyopaque,
77
8 pub const acpi_20_table_guid align(8) = Guid{
8 pub const acpi_20_table_guid: Guid = .{
99 .time_low = 0x8868e871,
1010 .time_mid = 0xe4f1,
1111 .time_high_and_version = 0x11d3,
......@@ -13,7 +13,7 @@ pub const ConfigurationTable = extern struct {
1313 .clock_seq_low = 0x22,
1414 .node = [_]u8{ 0x00, 0x80, 0xc7, 0x3c, 0x88, 0x81 },
1515 };
16 pub const acpi_10_table_guid align(8) = Guid{
16 pub const acpi_10_table_guid: Guid = .{
1717 .time_low = 0xeb9d2d30,
1818 .time_mid = 0x2d88,
1919 .time_high_and_version = 0x11d3,
......@@ -21,7 +21,7 @@ pub const ConfigurationTable = extern struct {
2121 .clock_seq_low = 0x16,
2222 .node = [_]u8{ 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d },
2323 };
24 pub const sal_system_table_guid align(8) = Guid{
24 pub const sal_system_table_guid: Guid = .{
2525 .time_low = 0xeb9d2d32,
2626 .time_mid = 0x2d88,
2727 .time_high_and_version = 0x113d,
......@@ -29,7 +29,7 @@ pub const ConfigurationTable = extern struct {
2929 .clock_seq_low = 0x16,
3030 .node = [_]u8{ 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d },
3131 };
32 pub const smbios_table_guid align(8) = Guid{
32 pub const smbios_table_guid: Guid = .{
3333 .time_low = 0xeb9d2d31,
3434 .time_mid = 0x2d88,
3535 .time_high_and_version = 0x11d3,
......@@ -37,7 +37,7 @@ pub const ConfigurationTable = extern struct {
3737 .clock_seq_low = 0x16,
3838 .node = [_]u8{ 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d },
3939 };
40 pub const smbios3_table_guid align(8) = Guid{
40 pub const smbios3_table_guid: Guid = .{
4141 .time_low = 0xf2fd1544,
4242 .time_mid = 0x9794,
4343 .time_high_and_version = 0x4a2c,
......@@ -45,7 +45,7 @@ pub const ConfigurationTable = extern struct {
4545 .clock_seq_low = 0x2e,
4646 .node = [_]u8{ 0xe5, 0xbb, 0xcf, 0x20, 0xe3, 0x94 },
4747 };
48 pub const mps_table_guid align(8) = Guid{
48 pub const mps_table_guid: Guid = .{
4949 .time_low = 0xeb9d2d2f,
5050 .time_mid = 0x2d88,
5151 .time_high_and_version = 0x11d3,
......@@ -53,7 +53,7 @@ pub const ConfigurationTable = extern struct {
5353 .clock_seq_low = 0x16,
5454 .node = [_]u8{ 0x00, 0x90, 0x27, 0x3f, 0xc1, 0x4d },
5555 };
56 pub const json_config_data_table_guid align(8) = Guid{
56 pub const json_config_data_table_guid: Guid = .{
5757 .time_low = 0x87367f87,
5858 .time_mid = 0x1119,
5959 .time_high_and_version = 0x41ce,
......@@ -61,7 +61,7 @@ pub const ConfigurationTable = extern struct {
6161 .clock_seq_low = 0xec,
6262 .node = [_]u8{ 0x8b, 0xe0, 0x11, 0x1f, 0x55, 0x8a },
6363 };
64 pub const json_capsule_data_table_guid align(8) = Guid{
64 pub const json_capsule_data_table_guid: Guid = .{
6565 .time_low = 0x35e7a725,
6666 .time_mid = 0x8dd2,
6767 .time_high_and_version = 0x4cac,
......@@ -69,7 +69,7 @@ pub const ConfigurationTable = extern struct {
6969 .clock_seq_low = 0x11,
7070 .node = [_]u8{ 0x33, 0xcd, 0xa8, 0x10, 0x90, 0x56 },
7171 };
72 pub const json_capsule_result_table_guid align(8) = Guid{
72 pub const json_capsule_result_table_guid: Guid = .{
7373 .time_low = 0xdbc461c3,
7474 .time_mid = 0xb3de,
7575 .time_high_and_version = 0x422a,
lib/std/os/uefi/tables/runtime_services.zig+477-14
......@@ -6,10 +6,12 @@ const Time = uefi.Time;
66const TimeCapabilities = uefi.TimeCapabilities;
77const Status = uefi.Status;
88const MemoryDescriptor = uefi.tables.MemoryDescriptor;
9const MemoryMapSlice = uefi.tables.MemoryMapSlice;
910const ResetType = uefi.tables.ResetType;
1011const CapsuleHeader = uefi.tables.CapsuleHeader;
1112const PhysicalAddress = uefi.tables.PhysicalAddress;
1213const cc = uefi.cc;
14const Error = Status.Error;
1315
1416/// Runtime services are provided by the firmware before and after exitBootServices has been called.
1517///
......@@ -23,50 +25,511 @@ pub const RuntimeServices = extern struct {
2325 hdr: TableHeader,
2426
2527 /// Returns the current time and date information, and the time-keeping capabilities of the hardware platform.
26 getTime: *const fn (time: *uefi.Time, capabilities: ?*TimeCapabilities) callconv(cc) Status,
28 _getTime: *const fn (time: *Time, capabilities: ?*TimeCapabilities) callconv(cc) Status,
2729
2830 /// Sets the current local time and date information
29 setTime: *const fn (time: *uefi.Time) callconv(cc) Status,
31 _setTime: *const fn (time: *const Time) callconv(cc) Status,
3032
3133 /// Returns the current wakeup alarm clock setting
32 getWakeupTime: *const fn (enabled: *bool, pending: *bool, time: *uefi.Time) callconv(cc) Status,
34 _getWakeupTime: *const fn (enabled: *bool, pending: *bool, time: *Time) callconv(cc) Status,
3335
3436 /// Sets the system wakeup alarm clock time
35 setWakeupTime: *const fn (enable: *bool, time: ?*uefi.Time) callconv(cc) Status,
37 _setWakeupTime: *const fn (enable: bool, time: ?*const Time) callconv(cc) Status,
3638
3739 /// Changes the runtime addressing mode of EFI firmware from physical to virtual.
38 setVirtualAddressMap: *const fn (mmap_size: usize, descriptor_size: usize, descriptor_version: u32, virtual_map: [*]MemoryDescriptor) callconv(cc) Status,
40 _setVirtualAddressMap: *const fn (mmap_size: usize, descriptor_size: usize, descriptor_version: u32, virtual_map: [*]align(@alignOf(MemoryDescriptor)) u8) callconv(cc) Status,
3941
4042 /// Determines the new virtual address that is to be used on subsequent memory accesses.
41 convertPointer: *const fn (debug_disposition: usize, address: **anyopaque) callconv(cc) Status,
43 _convertPointer: *const fn (debug_disposition: DebugDisposition, address: *?*anyopaque) callconv(cc) Status,
4244
4345 /// Returns the value of a variable.
44 getVariable: *const fn (var_name: [*:0]const u16, vendor_guid: *align(8) const Guid, attributes: ?*u32, data_size: *usize, data: ?*anyopaque) callconv(cc) Status,
46 _getVariable: *const fn (var_name: [*:0]const u16, vendor_guid: *const Guid, attributes: ?*VariableAttributes, data_size: *usize, data: ?*anyopaque) callconv(cc) Status,
4547
4648 /// Enumerates the current variable names.
47 getNextVariableName: *const fn (var_name_size: *usize, var_name: [*:0]u16, vendor_guid: *align(8) Guid) callconv(cc) Status,
49 _getNextVariableName: *const fn (var_name_size: *usize, var_name: ?[*:0]const u16, vendor_guid: *Guid) callconv(cc) Status,
4850
4951 /// Sets the value of a variable.
50 setVariable: *const fn (var_name: [*:0]const u16, vendor_guid: *align(8) const Guid, attributes: u32, data_size: usize, data: *anyopaque) callconv(cc) Status,
52 _setVariable: *const fn (var_name: [*:0]const u16, vendor_guid: *const Guid, attributes: VariableAttributes, data_size: usize, data: [*]const u8) callconv(cc) Status,
5153
5254 /// Return the next high 32 bits of the platform's monotonic counter
53 getNextHighMonotonicCount: *const fn (high_count: *u32) callconv(cc) Status,
55 _getNextHighMonotonicCount: *const fn (high_count: *u32) callconv(cc) Status,
5456
5557 /// Resets the entire platform.
56 resetSystem: *const fn (reset_type: ResetType, reset_status: Status, data_size: usize, reset_data: ?*const anyopaque) callconv(cc) noreturn,
58 _resetSystem: *const fn (reset_type: ResetType, reset_status: Status, data_size: usize, reset_data: ?[*]const u16) callconv(cc) noreturn,
5759
5860 /// Passes capsules to the firmware with both virtual and physical mapping.
5961 /// Depending on the intended consumption, the firmware may process the capsule immediately.
6062 /// If the payload should persist across a system reset, the reset value returned from
6163 /// `queryCapsuleCapabilities` must be passed into resetSystem and will cause the capsule
6264 /// to be processed by the firmware as part of the reset process.
63 updateCapsule: *const fn (capsule_header_array: **CapsuleHeader, capsule_count: usize, scatter_gather_list: PhysicalAddress) callconv(cc) Status,
65 _updateCapsule: *const fn (capsule_header_array: [*]*const CapsuleHeader, capsule_count: usize, scatter_gather_list: PhysicalAddress) callconv(cc) Status,
6466
6567 /// Returns if the capsule can be supported via `updateCapsule`
66 queryCapsuleCapabilities: *const fn (capsule_header_array: **CapsuleHeader, capsule_count: usize, maximum_capsule_size: *usize, reset_type: ResetType) callconv(cc) Status,
68 _queryCapsuleCapabilities: *const fn (capsule_header_array: [*]*const CapsuleHeader, capsule_count: usize, maximum_capsule_size: *usize, reset_type: *ResetType) callconv(cc) Status,
6769
6870 /// Returns information about the EFI variables
69 queryVariableInfo: *const fn (attributes: *u32, maximum_variable_storage_size: *u64, remaining_variable_storage_size: *u64, maximum_variable_size: *u64) callconv(cc) Status,
71 _queryVariableInfo: *const fn (attributes: VariableAttributes, maximum_variable_storage_size: *u64, remaining_variable_storage_size: *u64, maximum_variable_size: *u64) callconv(cc) Status,
72
73 pub const GetTimeError = uefi.UnexpectedError || error{
74 DeviceError,
75 Unsupported,
76 };
77
78 pub const SetTimeError = uefi.UnexpectedError || error{
79 DeviceError,
80 Unsupported,
81 };
82
83 pub const GetWakeupTimeError = uefi.UnexpectedError || error{
84 DeviceError,
85 Unsupported,
86 };
87
88 pub const SetWakeupTimeError = uefi.UnexpectedError || error{
89 InvalidParameter,
90 DeviceError,
91 Unsupported,
92 };
93
94 pub const SetVirtualAddressMapError = uefi.UnexpectedError || error{
95 Unsupported,
96 NoMapping,
97 NotFound,
98 };
99
100 pub const ConvertPointerError = uefi.UnexpectedError || error{
101 InvalidParameter,
102 Unsupported,
103 };
104
105 pub const GetVariableSizeError = uefi.UnexpectedError || error{
106 DeviceError,
107 Unsupported,
108 };
109
110 pub const GetVariableError = GetVariableSizeError || error{
111 BufferTooSmall,
112 };
113
114 pub const SetVariableError = uefi.UnexpectedError || error{
115 InvalidParameter,
116 OutOfResources,
117 DeviceError,
118 WriteProtected,
119 SecurityViolation,
120 NotFound,
121 Unsupported,
122 };
123
124 pub const GetNextHighMonotonicCountError = uefi.UnexpectedError || error{
125 DeviceError,
126 Unsupported,
127 };
128
129 pub const UpdateCapsuleError = uefi.UnexpectedError || error{
130 InvalidParameter,
131 DeviceError,
132 Unsupported,
133 OutOfResources,
134 };
135
136 pub const QueryCapsuleCapabilitiesError = uefi.UnexpectedError || error{
137 Unsupported,
138 OutOfResources,
139 };
140
141 pub const QueryVariableInfoError = uefi.UnexpectedError || error{
142 InvalidParameter,
143 Unsupported,
144 };
145
146 /// Returns the current time and the time capabilities of the platform.
147 pub fn getTime(
148 self: *const RuntimeServices,
149 ) GetTimeError!struct { Time, TimeCapabilities } {
150 var time: Time = undefined;
151 var capabilities: TimeCapabilities = undefined;
152
153 switch (self._getTime(&time, &capabilities)) {
154 .success => return .{ time, capabilities },
155 .device_error => return error.DeviceError,
156 .unsupported => return error.Unsupported,
157 else => |status| return uefi.unexpectedStatus(status),
158 }
159 }
160
161 pub fn setTime(self: *RuntimeServices, time: *const Time) SetTimeError!void {
162 switch (self._setTime(time)) {
163 .success => {},
164 .device_error => return error.DeviceError,
165 .unsupported => return error.Unsupported,
166 else => |status| return uefi.unexpectedStatus(status),
167 }
168 }
169
170 pub const GetWakeupTime = struct {
171 enabled: bool,
172 pending: bool,
173 time: Time,
174 };
175
176 pub fn getWakeupTime(
177 self: *const RuntimeServices,
178 ) GetWakeupTimeError!GetWakeupTime {
179 var result: GetWakeupTime = undefined;
180 switch (self._getWakeupTime(
181 &result.enabled,
182 &result.pending,
183 &result.time,
184 )) {
185 .success => return result,
186 .device_error => return error.DeviceError,
187 .unsupported => return error.Unsupported,
188 else => |status| return uefi.unexpectedStatus(status),
189 }
190 }
191
192 pub const SetWakeupTime = union(enum) {
193 enabled: *const Time,
194 disabled,
195 };
196
197 pub fn setWakeupTime(
198 self: *RuntimeServices,
199 set: SetWakeupTime,
200 ) SetWakeupTimeError!void {
201 switch (self._setWakeupTime(
202 set != .disabled,
203 if (set == .enabled) set.enabled else null,
204 )) {
205 .success => {},
206 .invalid_parameter => return error.InvalidParameter,
207 .device_error => return error.DeviceError,
208 .unsupported => return error.Unsupported,
209 else => |status| return uefi.unexpectedStatus(status),
210 }
211 }
212
213 pub fn setVirtualAddressMap(
214 self: *RuntimeServices,
215 map: MemoryMapSlice,
216 ) SetVirtualAddressMapError!void {
217 switch (self._setVirtualAddressMap(
218 map.info.len * map.info.descriptor_size,
219 map.info.descriptor_size,
220 map.info.descriptor_version,
221 @ptrCast(map.ptr),
222 )) {
223 .success => {},
224 .unsupported => return error.Unsupported,
225 .no_mapping => return error.NoMapping,
226 .not_found => return error.NotFound,
227 else => |status| return uefi.unexpectedStatus(status),
228 }
229 }
230
231 pub fn convertPointer(
232 self: *const RuntimeServices,
233 comptime disposition: DebugDisposition,
234 cvt: @FieldType(PointerConversion, @tagName(disposition)),
235 ) ConvertPointerError!?@FieldType(PointerConversion, @tagName(disposition)) {
236 var pointer = cvt;
237
238 switch (self._convertPointer(disposition, @ptrCast(&pointer))) {
239 .success => return pointer,
240 .not_found => return null,
241 .invalid_parameter => return error.InvalidParameter,
242 .unsupported => return error.Unsupported,
243 else => |status| return uefi.unexpectedStatus(status),
244 }
245 }
246
247 /// Returns the length of the variable's data and its attributes.
248 pub fn getVariableSize(
249 self: *const RuntimeServices,
250 name: [*:0]const u16,
251 guid: *const Guid,
252 ) GetVariableSizeError!?struct { usize, VariableAttributes } {
253 var size: usize = 0;
254 var attrs: VariableAttributes = undefined;
255
256 switch (self._getVariable(
257 name,
258 guid,
259 &attrs,
260 &size,
261 null,
262 )) {
263 .buffer_too_small => return .{ size, attrs },
264 .not_found => return null,
265 .device_error => return error.DeviceError,
266 .unsupported => return error.Unsupported,
267 else => |status| return uefi.unexpectedStatus(status),
268 }
269 }
270
271 /// To determine the minimum necessary buffer size for the variable, call
272 /// `getVariableSize` first.
273 pub fn getVariable(
274 self: *const RuntimeServices,
275 name: [*:0]const u16,
276 guid: *const Guid,
277 buffer: []u8,
278 ) GetVariableError!?struct { []u8, VariableAttributes } {
279 var attrs: VariableAttributes = undefined;
280 var len = buffer.len;
281
282 switch (self._getVariable(
283 name,
284 guid,
285 &attrs,
286 &len,
287 buffer.ptr,
288 )) {
289 .success => return .{ buffer[0..len], attrs },
290 .not_found => return null,
291 .buffer_too_small => return error.BufferTooSmall,
292 .device_error => return error.DeviceError,
293 .unsupported => return error.Unsupported,
294 else => |status| return uefi.unexpectedStatus(status),
295 }
296 }
297
298 pub fn variableNameIterator(
299 self: *const RuntimeServices,
300 buffer: []u16,
301 ) VariableNameIterator {
302 buffer[0] = 0;
303 return .{
304 .services = self,
305 .buffer = buffer,
306 .guid = undefined,
307 };
308 }
309
310 pub fn setVariable(
311 self: *RuntimeServices,
312 name: [*:0]const u16,
313 guid: *const Guid,
314 attributes: VariableAttributes,
315 data: []const u8,
316 ) SetVariableError!void {
317 switch (self._setVariable(
318 name,
319 guid,
320 attributes,
321 data.len,
322 data.ptr,
323 )) {
324 .success => {},
325 .invalid_parameter => return error.InvalidParameter,
326 .out_of_resources => return error.OutOfResources,
327 .device_error => return error.DeviceError,
328 .write_protected => return error.WriteProtected,
329 .security_violation => return error.SecurityViolation,
330 .not_found => return error.NotFound,
331 .unsupported => return error.Unsupported,
332 else => |status| return uefi.unexpectedStatus(status),
333 }
334 }
335
336 pub fn getNextHighMonotonicCount(self: *const RuntimeServices) GetNextHighMonotonicCountError!u32 {
337 var cnt: u32 = undefined;
338 switch (self._getNextHighMonotonicCount(&cnt)) {
339 .success => return cnt,
340 .device_error => return error.DeviceError,
341 .unsupported => return error.Unsupported,
342 else => |status| return uefi.unexpectedStatus(status),
343 }
344 }
345
346 pub fn resetSystem(
347 self: *RuntimeServices,
348 reset_type: ResetType,
349 reset_status: Status,
350 data: ?[]align(2) const u8,
351 ) noreturn {
352 self._resetSystem(
353 reset_type,
354 reset_status,
355 if (data) |d| d.len else 0,
356 if (data) |d| @alignCast(@ptrCast(d.ptr)) else null,
357 );
358 }
359
360 pub fn updateCapsule(
361 self: *RuntimeServices,
362 capsules: []*const CapsuleHeader,
363 scatter_gather_list: PhysicalAddress,
364 ) UpdateCapsuleError!void {
365 switch (self._updateCapsule(
366 capsules.ptr,
367 capsules.len,
368 scatter_gather_list,
369 )) {
370 .success => {},
371 .invalid_parameter => return error.InvalidParameter,
372 .device_error => return error.DeviceError,
373 .unsupported => return error.Unsupported,
374 .out_of_resources => return error.OutOfResources,
375 else => |status| return uefi.unexpectedStatus(status),
376 }
377 }
378
379 pub fn queryCapsuleCapabilities(
380 self: *const RuntimeServices,
381 capsules: []*const CapsuleHeader,
382 ) QueryCapsuleCapabilitiesError!struct { u64, ResetType } {
383 var max_capsule_size: u64 = undefined;
384 var reset_type: ResetType = undefined;
385
386 switch (self._queryCapsuleCapabilities(
387 capsules.ptr,
388 capsules.len,
389 &max_capsule_size,
390 &reset_type,
391 )) {
392 .success => return .{ max_capsule_size, reset_type },
393 .unsupported => return error.Unsupported,
394 .out_of_resources => return error.OutOfResources,
395 else => |status| return uefi.unexpectedStatus(status),
396 }
397 }
398
399 pub fn queryVariableInfo(
400 self: *const RuntimeServices,
401 // Note: .append_write is ignored
402 attributes: VariableAttributes,
403 ) QueryVariableInfoError!VariableInfo {
404 var res: VariableInfo = undefined;
405
406 switch (self._queryVariableInfo(
407 attributes,
408 &res.max_variable_storage_size,
409 &res.remaining_variable_storage_size,
410 &res.max_variable_size,
411 )) {
412 .success => return res,
413 .invalid_parameter => return error.InvalidParameter,
414 .unsupported => return error.Unsupported,
415 else => |status| return uefi.unexpectedStatus(status),
416 }
417 }
418
419 pub const DebugDisposition = enum(usize) {
420 const Bits = packed struct(usize) {
421 optional_ptr: bool = false,
422 _pad: std.meta.Int(.unsigned, @bitSizeOf(usize) - 1) = 0,
423 };
424
425 pointer = @bitCast(Bits{}),
426 optional = @bitCast(Bits{ .optional_ptr = true }),
427 _,
428 };
429
430 pub const PointerConversion = union(DebugDisposition) {
431 pointer: *anyopaque,
432 optional: ?*anyopaque,
433 };
434
435 pub const VariableAttributes = packed struct(u32) {
436 non_volatile: bool = false,
437 bootservice_access: bool = false,
438 runtime_access: bool = false,
439 hardware_error_record: bool = false,
440 /// Note: deprecated and should be considered reserved.
441 authenticated_write_access: bool = false,
442 time_based_authenticated_write_access: bool = false,
443 append_write: bool = false,
444 /// Indicates that the variable payload begins with a EFI_VARIABLE_AUTHENTICATION_3
445 /// structure, and potentially more structures as indicated by fields of
446 /// this structure.
447 enhanced_authenticated_access: bool = false,
448 _pad: u24 = 0,
449 };
450
451 pub const VariableAuthentication3 = extern struct {
452 version: u8 = 1,
453 type: Type,
454 metadata_size: u32,
455 flags: Flags,
456
457 pub fn payloadConst(self: *const VariableAuthentication3) []const u8 {
458 return @constCast(self).payload();
459 }
460
461 pub fn payload(self: *VariableAuthentication3) []u8 {
462 var ptr: [*]u8 = @ptrCast(self);
463 return ptr[@sizeOf(VariableAuthentication3)..self.metadata_size];
464 }
465
466 pub const Flags = packed struct(u32) {
467 update_cert: bool = false,
468 _pad: u31 = 0,
469 };
470
471 pub const Type = enum(u8) {
472 timestamp = 1,
473 nonce = 2,
474 _,
475 };
476 };
477
478 pub const VariableInfo = struct {
479 max_variable_storage_size: u64,
480 remaining_variable_storage_size: u64,
481 max_variable_size: u64,
482 };
483
484 pub const VariableNameIterator = struct {
485 pub const NextSizeError = uefi.UnexpectedError || error{
486 DeviceError,
487 Unsupported,
488 };
489
490 pub const IterateVariableNameError = NextSizeError || error{
491 BufferTooSmall,
492 };
493
494 services: *const RuntimeServices,
495 buffer: []u16,
496 guid: Guid,
497
498 pub fn nextSize(self: *VariableNameIterator) NextSizeError!?usize {
499 var len: usize = 0;
500 switch (self.services._getNextVariableName(
501 &len,
502 null,
503 &self.guid,
504 )) {
505 .buffer_too_small => return len,
506 .not_found => return null,
507 .device_error => return error.DeviceError,
508 .unsupported => return error.Unsupported,
509 else => |status| return uefi.unexpectedStatus(status),
510 }
511 }
512
513 /// Call `nextSize` to get the length of the next variable name and check
514 /// if `buffer` is large enough to hold the name.
515 pub fn next(
516 self: *VariableNameIterator,
517 ) IterateVariableNameError!?[:0]const u16 {
518 var len = self.buffer.len;
519 switch (self.services._getNextVariableName(
520 &len,
521 @ptrCast(self.buffer.ptr),
522 &self.guid,
523 )) {
524 .success => return self.buffer[0 .. len - 1 :0],
525 .not_found => return null,
526 .buffer_too_small => return error.BufferTooSmall,
527 .device_error => return error.DeviceError,
528 .unsupported => return error.Unsupported,
529 else => |status| return uefi.unexpectedStatus(status),
530 }
531 }
532 };
70533
71534 pub const signature: u64 = 0x56524553544e5552;
72535};
lib/std/os/windows.zig+1-4
......@@ -146,7 +146,7 @@ pub fn OpenFile(sub_path_w: []const u16, options: OpenFileOptions) OpenError!HAN
146146 // call has failed. There is not really a sane way to handle
147147 // this other than retrying the creation after the OS finishes
148148 // the deletion.
149 std.time.sleep(std.time.ns_per_ms);
149 std.Thread.sleep(std.time.ns_per_ms);
150150 continue;
151151 },
152152 .VIRUS_INFECTED, .VIRUS_DELETED => return error.AntivirusInterference,
......@@ -2848,9 +2848,6 @@ pub const STD_OUTPUT_HANDLE = maxInt(DWORD) - 11 + 1;
28482848/// The standard error device. Initially, this is the active console screen buffer, CONOUT$.
28492849pub const STD_ERROR_HANDLE = maxInt(DWORD) - 12 + 1;
28502850
2851/// Deprecated; use `std.builtin.CallingConvention.winapi` instead.
2852pub const WINAPI: std.builtin.CallingConvention = .winapi;
2853
28542851pub const BOOL = c_int;
28552852pub const BOOLEAN = BYTE;
28562853pub const BYTE = u8;
lib/std/posix.zig+20-4
......@@ -772,12 +772,12 @@ pub fn exit(status: u8) noreturn {
772772 if (native_os == .uefi) {
773773 const uefi = std.os.uefi;
774774 // exit() is only available if exitBootServices() has not been called yet.
775 // This call to exit should not fail, so we don't care about its return value.
775 // This call to exit should not fail, so we catch-ignore errors.
776776 if (uefi.system_table.boot_services) |bs| {
777 _ = bs.exit(uefi.handle, @enumFromInt(status), 0, null);
777 bs.exit(uefi.handle, @enumFromInt(status), null) catch {};
778778 }
779779 // If we can't exit, reboot the system instead.
780 uefi.system_table.runtime_services.resetSystem(.reset_cold, @enumFromInt(status), 0, null);
780 uefi.system_table.runtime_services.resetSystem(.cold, @enumFromInt(status), null);
781781 }
782782 system.exit(status);
783783}
......@@ -6088,6 +6088,9 @@ pub const SendError = error{
60886088
60896089 /// The local network interface used to reach the destination is down.
60906090 NetworkSubsystemFailed,
6091
6092 /// The destination address is not listening.
6093 ConnectionRefused,
60916094} || UnexpectedError;
60926095
60936096pub const SendMsgError = SendError || error{
......@@ -6315,7 +6318,6 @@ pub fn send(
63156318 error.AddressNotAvailable => unreachable,
63166319 error.SocketNotConnected => unreachable,
63176320 error.UnreachableAddress => unreachable,
6318 error.ConnectionRefused => unreachable,
63196321 else => |e| return e,
63206322 };
63216323}
......@@ -6986,6 +6988,20 @@ pub fn tcsetpgrp(handle: fd_t, pgrp: pid_t) TermioSetPgrpError!void {
69866988 }
69876989}
69886990
6991pub const SetSidError = error{
6992 /// The calling process is already a process group leader, or the process group ID of a process other than the calling process matches the process ID of the calling process.
6993 PermissionDenied,
6994} || UnexpectedError;
6995
6996pub fn setsid() SetSidError!pid_t {
6997 const rc = system.setsid();
6998 switch (errno(rc)) {
6999 .SUCCESS => return rc,
7000 .PERM => return error.PermissionDenied,
7001 else => |err| return unexpectedErrno(err),
7002 }
7003}
7004
69897005pub fn signalfd(fd: fd_t, mask: *const sigset_t, flags: u32) !fd_t {
69907006 const rc = system.signalfd(fd, mask, flags);
69917007 switch (errno(rc)) {
lib/std/posix/test.zig+1-1
......@@ -1161,7 +1161,7 @@ test "POSIX file locking with fcntl" {
11611161 posix.exit(0);
11621162 } else {
11631163 // parent waits for child to get shared lock:
1164 std.time.sleep(1 * std.time.ns_per_ms);
1164 std.Thread.sleep(1 * std.time.ns_per_ms);
11651165 // parent expects deadlock when attempting to upgrade the shared lock to exclusive:
11661166 struct_flock.start = 1;
11671167 struct_flock.type = posix.F.WRLCK;
lib/std/time.zig+2-9
......@@ -8,9 +8,6 @@ const posix = std.posix;
88
99pub const epoch = @import("time/epoch.zig");
1010
11/// Deprecated: moved to std.Thread.sleep
12pub const sleep = std.Thread.sleep;
13
1411/// Get a calendar timestamp, in seconds, relative to UTC 1970-01-01.
1512/// Precision of timing depends on the hardware and operating system.
1613/// The return value is signed because it is possible to have a date that is
......@@ -59,9 +56,7 @@ pub fn nanoTimestamp() i128 {
5956 return ns;
6057 },
6158 .uefi => {
62 var value: std.os.uefi.Time = undefined;
63 const status = std.os.uefi.system_table.runtime_services.getTime(&value, null);
64 assert(status == .success);
59 const value, _ = std.os.uefi.system_table.runtime_services.getTime() catch return 0;
6560 return value.toEpoch();
6661 },
6762 else => {
......@@ -144,9 +139,7 @@ pub const Instant = struct {
144139 return .{ .timestamp = ns };
145140 },
146141 .uefi => {
147 var value: std.os.uefi.Time = undefined;
148 const status = std.os.uefi.system_table.runtime_services.getTime(&value, null);
149 if (status != .success) return error.Unsupported;
142 const value, _ = std.os.uefi.system_table.runtime_services.getTime() catch return error.Unsupported;
150143 return .{ .timestamp = value.toEpoch() };
151144 },
152145 // On darwin, use UPTIME_RAW instead of MONOTONIC as it ticks while
lib/std/unicode.zig-10
......@@ -972,8 +972,6 @@ pub fn utf16LeToUtf8ArrayList(result: *std.ArrayList(u8), utf16le: []const u16)
972972 return utf16LeToUtf8ArrayListImpl(result, utf16le, .cannot_encode_surrogate_half);
973973}
974974
975pub const utf16leToUtf8Alloc = @compileError("deprecated; renamed to utf16LeToUtf8Alloc");
976
977975/// Caller must free returned memory.
978976pub fn utf16LeToUtf8Alloc(allocator: mem.Allocator, utf16le: []const u16) Utf16LeToUtf8AllocError![]u8 {
979977 // optimistically guess that it will all be ascii.
......@@ -984,8 +982,6 @@ pub fn utf16LeToUtf8Alloc(allocator: mem.Allocator, utf16le: []const u16) Utf16L
984982 return result.toOwnedSlice();
985983}
986984
987pub const utf16leToUtf8AllocZ = @compileError("deprecated; renamed to utf16LeToUtf8AllocZ");
988
989985/// Caller must free returned memory.
990986pub fn utf16LeToUtf8AllocZ(allocator: mem.Allocator, utf16le: []const u16) Utf16LeToUtf8AllocError![:0]u8 {
991987 // optimistically guess that it will all be ascii (and allocate space for the null terminator)
......@@ -1054,8 +1050,6 @@ fn utf16LeToUtf8Impl(utf8: []u8, utf16le: []const u16, comptime surrogates: Surr
10541050 return dest_index;
10551051}
10561052
1057pub const utf16leToUtf8 = @compileError("deprecated; renamed to utf16LeToUtf8");
1058
10591053pub fn utf16LeToUtf8(utf8: []u8, utf16le: []const u16) Utf16LeToUtf8Error!usize {
10601054 return utf16LeToUtf8Impl(utf8, utf16le, .cannot_encode_surrogate_half);
10611055}
......@@ -1175,8 +1169,6 @@ pub fn utf8ToUtf16LeAlloc(allocator: mem.Allocator, utf8: []const u8) error{ Inv
11751169 return result.toOwnedSlice();
11761170}
11771171
1178pub const utf8ToUtf16LeWithNull = @compileError("deprecated; renamed to utf8ToUtf16LeAllocZ");
1179
11801172pub fn utf8ToUtf16LeAllocZ(allocator: mem.Allocator, utf8: []const u8) error{ InvalidUtf8, OutOfMemory }![:0]u16 {
11811173 // optimistically guess that it will not require surrogate pairs
11821174 var result = try std.ArrayList(u16).initCapacity(allocator, utf8.len + 1);
......@@ -1487,8 +1479,6 @@ fn formatUtf16Le(utf16le: []const u16, writer: *std.io.Writer) std.io.Writer.Err
14871479 try writer.writeAll(buf[0..u8len]);
14881480}
14891481
1490pub const fmtUtf16le = @compileError("deprecated; renamed to fmtUtf16Le");
1491
14921482/// Return a Formatter for a (potentially ill-formed) UTF-16 LE string,
14931483/// which will be converted to UTF-8 during formatting.
14941484/// Unpaired surrogates are replaced by the replacement character (U+FFFD).
lib/std/valgrind.zig-12
......@@ -200,18 +200,6 @@ pub fn nonSimdCall3(func: fn (usize, usize, usize, usize) usize, a1: usize, a2:
200200 return doClientRequestExpr(0, .ClientCall3, @intFromPtr(func), a1, a2, a3, 0);
201201}
202202
203/// Deprecated: use `nonSimdCall0`
204pub const nonSIMDCall0 = nonSimdCall0;
205
206/// Deprecated: use `nonSimdCall1`
207pub const nonSIMDCall1 = nonSimdCall1;
208
209/// Deprecated: use `nonSimdCall2`
210pub const nonSIMDCall2 = nonSimdCall2;
211
212/// Deprecated: use `nonSimdCall3`
213pub const nonSIMDCall3 = nonSimdCall3;
214
215203/// Counts the number of errors that have been recorded by a tool. Nb:
216204/// the tool must record the errors with VG_(maybe_record_error)() or
217205/// VG_(unique_error)() for them to be counted.
lib/std/valgrind/callgrind.zig-2
......@@ -10,8 +10,6 @@ pub const ClientRequest = enum(usize) {
1010 StopInstrumentation,
1111};
1212
13pub const CallgrindClientRequest = @compileError("std.valgrind.callgrind.CallgrindClientRequest renamed to std.valgrind.callgrind.ClientRequest");
14
1513fn doClientRequestExpr(default: usize, request: ClientRequest, a1: usize, a2: usize, a3: usize, a4: usize, a5: usize) usize {
1614 return valgrind.doClientRequest(default, @as(usize, @intCast(@intFromEnum(request))), a1, a2, a3, a4, a5);
1715}
lib/std/valgrind/memcheck.zig-2
......@@ -20,8 +20,6 @@ pub const ClientRequest = enum(usize) {
2020 DisableAddrErrorReportingInRange,
2121};
2222
23pub const MemCheckClientRequest = @compileError("std.valgrind.memcheck.MemCheckClientRequest renamed to std.valgrind.memcheck.ClientRequest");
24
2523fn doClientRequestExpr(default: usize, request: ClientRequest, a1: usize, a2: usize, a3: usize, a4: usize, a5: usize) usize {
2624 return valgrind.doClientRequest(default, @as(usize, @intCast(@intFromEnum(request))), a1, a2, a3, a4, a5);
2725}
lib/std/zig.zig+6-10
......@@ -23,7 +23,6 @@ pub const Zir = @import("zig/Zir.zig");
2323pub const Zoir = @import("zig/Zoir.zig");
2424pub const ZonGen = @import("zig/ZonGen.zig");
2525pub const system = @import("zig/system.zig");
26pub const CrossTarget = @compileError("deprecated; use std.Target.Query");
2726pub const BuiltinFn = @import("zig/BuiltinFn.zig");
2827pub const AstRlAnnotate = @import("zig/AstRlAnnotate.zig");
2928pub const LibCInstallation = @import("zig/LibCInstallation.zig");
......@@ -596,7 +595,7 @@ pub fn putAstErrorsIntoBundle(
596595
597596pub fn resolveTargetQueryOrFatal(target_query: std.Target.Query) std.Target {
598597 return std.zig.system.resolveTargetQuery(target_query) catch |err|
599 fatal("unable to resolve target: {s}", .{@errorName(err)});
598 std.process.fatal("unable to resolve target: {s}", .{@errorName(err)});
600599}
601600
602601pub fn parseTargetQueryOrReportFatalError(
......@@ -620,7 +619,7 @@ pub fn parseTargetQueryOrReportFatalError(
620619 @tagName(diags.arch.?), help_text.items,
621620 });
622621 }
623 fatal("unknown CPU: '{s}'", .{diags.cpu_name.?});
622 std.process.fatal("unknown CPU: '{s}'", .{diags.cpu_name.?});
624623 },
625624 error.UnknownCpuFeature => {
626625 help: {
......@@ -633,7 +632,7 @@ pub fn parseTargetQueryOrReportFatalError(
633632 @tagName(diags.arch.?), help_text.items,
634633 });
635634 }
636 fatal("unknown CPU feature: '{s}'", .{diags.unknown_feature_name.?});
635 std.process.fatal("unknown CPU feature: '{s}'", .{diags.unknown_feature_name.?});
637636 },
638637 error.UnknownObjectFormat => {
639638 help: {
......@@ -644,7 +643,7 @@ pub fn parseTargetQueryOrReportFatalError(
644643 }
645644 std.log.info("available object formats:\n{s}", .{help_text.items});
646645 }
647 fatal("unknown object format: '{s}'", .{opts.object_format.?});
646 std.process.fatal("unknown object format: '{s}'", .{opts.object_format.?});
648647 },
649648 error.UnknownArchitecture => {
650649 help: {
......@@ -655,17 +654,14 @@ pub fn parseTargetQueryOrReportFatalError(
655654 }
656655 std.log.info("available architectures:\n{s} native\n", .{help_text.items});
657656 }
658 fatal("unknown architecture: '{s}'", .{diags.unknown_architecture_name.?});
657 std.process.fatal("unknown architecture: '{s}'", .{diags.unknown_architecture_name.?});
659658 },
660 else => |e| fatal("unable to parse target query '{s}': {s}", .{
659 else => |e| std.process.fatal("unable to parse target query '{s}': {s}", .{
661660 opts.arch_os_abi, @errorName(e),
662661 }),
663662 };
664663}
665664
666/// Deprecated; see `std.process.fatal`.
667pub const fatal = std.process.fatal;
668
669665/// Collects all the environment variables that Zig could possibly inspect, so
670666/// that we can do reflection on this and print them with `zig env`.
671667pub const EnvVar = enum {
lib/std/zig/c_translation.zig-3
......@@ -254,9 +254,6 @@ test "sizeof" {
254254
255255pub const CIntLiteralBase = enum { decimal, octal, hex };
256256
257/// Deprecated: use `CIntLiteralBase`
258pub const CIntLiteralRadix = CIntLiteralBase;
259
260257fn PromoteIntLiteralReturnType(comptime SuffixType: type, comptime number: comptime_int, comptime base: CIntLiteralBase) type {
261258 const signed_decimal = [_]type{ c_int, c_long, c_longlong, c_ulonglong };
262259 const signed_oct_hex = [_]type{ c_int, c_uint, c_long, c_ulong, c_longlong, c_ulonglong };
lib/std/zig/llvm/Builder.zig+31-31
......@@ -2037,7 +2037,7 @@ pub const Alignment = enum(u6) {
20372037
20382038 pub fn format(p: Prefixed, w: *Writer) Writer.Error!void {
20392039 const byte_units = p.alignment.toByteUnits() orelse return;
2040 return w.print("{s}align ({d})", .{ p.prefix, byte_units });
2040 return w.print("{s}align {d}", .{ p.prefix, byte_units });
20412041 }
20422042 };
20432043
......@@ -2384,7 +2384,7 @@ pub const Global = struct {
23842384 };
23852385 fn format(data: FormatData, w: *Writer) Writer.Error!void {
23862386 try w.print("@{f}", .{
2387 data.global.unwrap(data.builder).name(data.builder).fmt(data.builder, null),
2387 data.global.unwrap(data.builder).name(data.builder).fmt(data.builder, .quote_unless_valid_identifier),
23882388 });
23892389 }
23902390 pub fn fmt(self: Index, builder: *const Builder) std.fmt.Formatter(FormatData, format) {
......@@ -8401,7 +8401,7 @@ pub const Metadata = enum(u32) {
84018401 }, w);
84028402 },
84038403 .string => |node| try w.print("{s}{f}", .{
8404 @as([]const u8, if (is_specialized) "" else "!"), node.fmt(builder),
8404 @as([]const u8, if (is_specialized) "!" else ""), node.fmt(builder),
84058405 }),
84068406 inline .bool, .u32, .u64 => |node| try w.print("{}", .{node}),
84078407 inline .di_flags, .sp_flags => |node| try w.print("{f}", .{node}),
......@@ -9782,7 +9782,7 @@ pub fn print(self: *Builder, w: *Writer) (Writer.Error || Allocator.Error)!void
97829782 instruction_index.name(&function).fmt(self),
97839783 @tagName(tag),
97849784 extra.lhs.fmt(function_index, self, .{ .percent = true }),
9785 extra.rhs.fmt(function_index, self, .{ .percent = true }),
9785 extra.rhs.fmt(function_index, self, .{}),
97869786 });
97879787 },
97889788 .addrspacecast,
......@@ -10638,7 +10638,7 @@ fn fnTypeAssumeCapacity(
1063810638 const Adapter = struct {
1063910639 builder: *const Builder,
1064010640 pub fn hash(_: @This(), key: Key) u32 {
10641 var hasher = std.hash.Wyhash.init(comptime std.hash.uint32(@intFromEnum(tag)));
10641 var hasher = std.hash.Wyhash.init(comptime std.hash.int(@intFromEnum(tag)));
1064210642 hasher.update(std.mem.asBytes(&key.ret));
1064310643 hasher.update(std.mem.sliceAsBytes(key.params));
1064410644 return @truncate(hasher.final());
......@@ -10698,7 +10698,7 @@ fn vectorTypeAssumeCapacity(
1069810698 builder: *const Builder,
1069910699 pub fn hash(_: @This(), key: Type.Vector) u32 {
1070010700 return @truncate(std.hash.Wyhash.hash(
10701 comptime std.hash.uint32(@intFromEnum(tag)),
10701 comptime std.hash.int(@intFromEnum(tag)),
1070210702 std.mem.asBytes(&key),
1070310703 ));
1070410704 }
......@@ -10727,7 +10727,7 @@ fn arrayTypeAssumeCapacity(self: *Builder, len: u64, child: Type) Type {
1072710727 builder: *const Builder,
1072810728 pub fn hash(_: @This(), key: Type.Vector) u32 {
1072910729 return @truncate(std.hash.Wyhash.hash(
10730 comptime std.hash.uint32(@intFromEnum(Type.Tag.small_array)),
10730 comptime std.hash.int(@intFromEnum(Type.Tag.small_array)),
1073110731 std.mem.asBytes(&key),
1073210732 ));
1073310733 }
......@@ -10753,7 +10753,7 @@ fn arrayTypeAssumeCapacity(self: *Builder, len: u64, child: Type) Type {
1075310753 builder: *const Builder,
1075410754 pub fn hash(_: @This(), key: Type.Array) u32 {
1075510755 return @truncate(std.hash.Wyhash.hash(
10756 comptime std.hash.uint32(@intFromEnum(Type.Tag.array)),
10756 comptime std.hash.int(@intFromEnum(Type.Tag.array)),
1075710757 std.mem.asBytes(&key),
1075810758 ));
1075910759 }
......@@ -10794,7 +10794,7 @@ fn structTypeAssumeCapacity(
1079410794 builder: *const Builder,
1079510795 pub fn hash(_: @This(), key: []const Type) u32 {
1079610796 return @truncate(std.hash.Wyhash.hash(
10797 comptime std.hash.uint32(@intFromEnum(tag)),
10797 comptime std.hash.int(@intFromEnum(tag)),
1079810798 std.mem.sliceAsBytes(key),
1079910799 ));
1080010800 }
......@@ -10826,7 +10826,7 @@ fn opaqueTypeAssumeCapacity(self: *Builder, name: String) Type {
1082610826 builder: *const Builder,
1082710827 pub fn hash(_: @This(), key: String) u32 {
1082810828 return @truncate(std.hash.Wyhash.hash(
10829 comptime std.hash.uint32(@intFromEnum(Type.Tag.named_structure)),
10829 comptime std.hash.int(@intFromEnum(Type.Tag.named_structure)),
1083010830 std.mem.asBytes(&key),
1083110831 ));
1083210832 }
......@@ -10887,7 +10887,7 @@ fn getOrPutTypeNoExtraAssumeCapacity(self: *Builder, item: Type.Item) struct { n
1088710887 builder: *const Builder,
1088810888 pub fn hash(_: @This(), key: Type.Item) u32 {
1088910889 return @truncate(std.hash.Wyhash.hash(
10890 comptime std.hash.uint32(@intFromEnum(Type.Tag.simple)),
10890 comptime std.hash.int(@intFromEnum(Type.Tag.simple)),
1089110891 std.mem.asBytes(&key),
1089210892 ));
1089310893 }
......@@ -11021,7 +11021,7 @@ fn bigIntConstAssumeCapacity(
1102111021 const Adapter = struct {
1102211022 builder: *const Builder,
1102311023 pub fn hash(_: @This(), key: Key) u32 {
11024 var hasher = std.hash.Wyhash.init(std.hash.uint32(@intFromEnum(key.tag)));
11024 var hasher = std.hash.Wyhash.init(std.hash.int(@intFromEnum(key.tag)));
1102511025 hasher.update(std.mem.asBytes(&key.type));
1102611026 hasher.update(std.mem.sliceAsBytes(key.limbs));
1102711027 return @truncate(hasher.final());
......@@ -11084,7 +11084,7 @@ fn doubleConstAssumeCapacity(self: *Builder, val: f64) Constant {
1108411084 builder: *const Builder,
1108511085 pub fn hash(_: @This(), key: f64) u32 {
1108611086 return @truncate(std.hash.Wyhash.hash(
11087 comptime std.hash.uint32(@intFromEnum(Constant.Tag.double)),
11087 comptime std.hash.int(@intFromEnum(Constant.Tag.double)),
1108811088 std.mem.asBytes(&key),
1108911089 ));
1109011090 }
......@@ -11115,7 +11115,7 @@ fn fp128ConstAssumeCapacity(self: *Builder, val: f128) Constant {
1111511115 builder: *const Builder,
1111611116 pub fn hash(_: @This(), key: f128) u32 {
1111711117 return @truncate(std.hash.Wyhash.hash(
11118 comptime std.hash.uint32(@intFromEnum(Constant.Tag.fp128)),
11118 comptime std.hash.int(@intFromEnum(Constant.Tag.fp128)),
1111911119 std.mem.asBytes(&key),
1112011120 ));
1112111121 }
......@@ -11149,7 +11149,7 @@ fn x86_fp80ConstAssumeCapacity(self: *Builder, val: f80) Constant {
1114911149 builder: *const Builder,
1115011150 pub fn hash(_: @This(), key: f80) u32 {
1115111151 return @truncate(std.hash.Wyhash.hash(
11152 comptime std.hash.uint32(@intFromEnum(Constant.Tag.x86_fp80)),
11152 comptime std.hash.int(@intFromEnum(Constant.Tag.x86_fp80)),
1115311153 std.mem.asBytes(&key)[0..10],
1115411154 ));
1115511155 }
......@@ -11182,7 +11182,7 @@ fn ppc_fp128ConstAssumeCapacity(self: *Builder, val: [2]f64) Constant {
1118211182 builder: *const Builder,
1118311183 pub fn hash(_: @This(), key: [2]f64) u32 {
1118411184 return @truncate(std.hash.Wyhash.hash(
11185 comptime std.hash.uint32(@intFromEnum(Constant.Tag.ppc_fp128)),
11185 comptime std.hash.int(@intFromEnum(Constant.Tag.ppc_fp128)),
1118611186 std.mem.asBytes(&key),
1118711187 ));
1118811188 }
......@@ -11317,7 +11317,7 @@ fn splatConstAssumeCapacity(self: *Builder, ty: Type, val: Constant) Constant {
1131711317 builder: *const Builder,
1131811318 pub fn hash(_: @This(), key: Constant.Splat) u32 {
1131911319 return @truncate(std.hash.Wyhash.hash(
11320 comptime std.hash.uint32(@intFromEnum(Constant.Tag.splat)),
11320 comptime std.hash.int(@intFromEnum(Constant.Tag.splat)),
1132111321 std.mem.asBytes(&key),
1132211322 ));
1132311323 }
......@@ -11420,7 +11420,7 @@ fn blockAddrConstAssumeCapacity(
1142011420 builder: *const Builder,
1142111421 pub fn hash(_: @This(), key: Constant.BlockAddress) u32 {
1142211422 return @truncate(std.hash.Wyhash.hash(
11423 comptime std.hash.uint32(@intFromEnum(Constant.Tag.blockaddress)),
11423 comptime std.hash.int(@intFromEnum(Constant.Tag.blockaddress)),
1142411424 std.mem.asBytes(&key),
1142511425 ));
1142611426 }
......@@ -11546,7 +11546,7 @@ fn castConstAssumeCapacity(self: *Builder, tag: Constant.Tag, val: Constant, ty:
1154611546 builder: *const Builder,
1154711547 pub fn hash(_: @This(), key: Key) u32 {
1154811548 return @truncate(std.hash.Wyhash.hash(
11549 std.hash.uint32(@intFromEnum(key.tag)),
11549 std.hash.int(@intFromEnum(key.tag)),
1155011550 std.mem.asBytes(&key.cast),
1155111551 ));
1155211552 }
......@@ -11621,7 +11621,7 @@ fn gepConstAssumeCapacity(
1162111621 const Adapter = struct {
1162211622 builder: *const Builder,
1162311623 pub fn hash(_: @This(), key: Key) u32 {
11624 var hasher = std.hash.Wyhash.init(comptime std.hash.uint32(@intFromEnum(tag)));
11624 var hasher = std.hash.Wyhash.init(comptime std.hash.int(@intFromEnum(tag)));
1162511625 hasher.update(std.mem.asBytes(&key.type));
1162611626 hasher.update(std.mem.asBytes(&key.base));
1162711627 hasher.update(std.mem.asBytes(&key.inrange));
......@@ -11685,7 +11685,7 @@ fn binConstAssumeCapacity(
1168511685 builder: *const Builder,
1168611686 pub fn hash(_: @This(), key: Key) u32 {
1168711687 return @truncate(std.hash.Wyhash.hash(
11688 std.hash.uint32(@intFromEnum(key.tag)),
11688 std.hash.int(@intFromEnum(key.tag)),
1168911689 std.mem.asBytes(&key.extra),
1169011690 ));
1169111691 }
......@@ -11723,7 +11723,7 @@ fn asmConstAssumeCapacity(
1172311723 builder: *const Builder,
1172411724 pub fn hash(_: @This(), key: Key) u32 {
1172511725 return @truncate(std.hash.Wyhash.hash(
11726 std.hash.uint32(@intFromEnum(key.tag)),
11726 std.hash.int(@intFromEnum(key.tag)),
1172711727 std.mem.asBytes(&key.extra),
1172811728 ));
1172911729 }
......@@ -11773,7 +11773,7 @@ fn getOrPutConstantNoExtraAssumeCapacity(
1177311773 builder: *const Builder,
1177411774 pub fn hash(_: @This(), key: Constant.Item) u32 {
1177511775 return @truncate(std.hash.Wyhash.hash(
11776 std.hash.uint32(@intFromEnum(key.tag)),
11776 std.hash.int(@intFromEnum(key.tag)),
1177711777 std.mem.asBytes(&key.data),
1177811778 ));
1177911779 }
......@@ -11804,7 +11804,7 @@ fn getOrPutConstantAggregateAssumeCapacity(
1180411804 const Adapter = struct {
1180511805 builder: *const Builder,
1180611806 pub fn hash(_: @This(), key: Key) u32 {
11807 var hasher = std.hash.Wyhash.init(std.hash.uint32(@intFromEnum(key.tag)));
11807 var hasher = std.hash.Wyhash.init(std.hash.int(@intFromEnum(key.tag)));
1180811808 hasher.update(std.mem.asBytes(&key.type));
1180911809 hasher.update(std.mem.sliceAsBytes(key.vals));
1181011810 return @truncate(hasher.final());
......@@ -12421,7 +12421,7 @@ fn metadataSimpleAssumeCapacity(self: *Builder, tag: Metadata.Tag, value: anytyp
1242112421 const Adapter = struct {
1242212422 builder: *const Builder,
1242312423 pub fn hash(_: @This(), key: Key) u32 {
12424 var hasher = std.hash.Wyhash.init(std.hash.uint32(@intFromEnum(key.tag)));
12424 var hasher = std.hash.Wyhash.init(std.hash.int(@intFromEnum(key.tag)));
1242512425 inline for (std.meta.fields(@TypeOf(value))) |field| {
1242612426 hasher.update(std.mem.asBytes(&@field(key.value, field.name)));
1242712427 }
......@@ -12457,7 +12457,7 @@ fn metadataDistinctAssumeCapacity(self: *Builder, tag: Metadata.Tag, value: anyt
1245712457 const Adapter = struct {
1245812458 pub fn hash(_: @This(), key: Key) u32 {
1245912459 return @truncate(std.hash.Wyhash.hash(
12460 std.hash.uint32(@intFromEnum(key.tag)),
12460 std.hash.int(@intFromEnum(key.tag)),
1246112461 std.mem.asBytes(&key.index),
1246212462 ));
1246312463 }
......@@ -12853,7 +12853,7 @@ fn debugEnumeratorAssumeCapacity(
1285312853 const Adapter = struct {
1285412854 builder: *const Builder,
1285512855 pub fn hash(_: @This(), key: Key) u32 {
12856 var hasher = std.hash.Wyhash.init(std.hash.uint32(@intFromEnum(key.tag)));
12856 var hasher = std.hash.Wyhash.init(std.hash.int(@intFromEnum(key.tag)));
1285712857 hasher.update(std.mem.asBytes(&key.name));
1285812858 hasher.update(std.mem.asBytes(&key.bit_width));
1285912859 hasher.update(std.mem.sliceAsBytes(key.value.limbs));
......@@ -12935,7 +12935,7 @@ fn debugExpressionAssumeCapacity(
1293512935 const Adapter = struct {
1293612936 builder: *const Builder,
1293712937 pub fn hash(_: @This(), key: Key) u32 {
12938 var hasher = comptime std.hash.Wyhash.init(std.hash.uint32(@intFromEnum(Metadata.Tag.expression)));
12938 var hasher = comptime std.hash.Wyhash.init(std.hash.int(@intFromEnum(Metadata.Tag.expression)));
1293912939 hasher.update(std.mem.sliceAsBytes(key.elements));
1294012940 return @truncate(hasher.final());
1294112941 }
......@@ -12981,7 +12981,7 @@ fn metadataTupleAssumeCapacity(
1298112981 const Adapter = struct {
1298212982 builder: *const Builder,
1298312983 pub fn hash(_: @This(), key: Key) u32 {
12984 var hasher = comptime std.hash.Wyhash.init(std.hash.uint32(@intFromEnum(Metadata.Tag.tuple)));
12984 var hasher = comptime std.hash.Wyhash.init(std.hash.int(@intFromEnum(Metadata.Tag.tuple)));
1298512985 hasher.update(std.mem.sliceAsBytes(key.elements));
1298612986 return @truncate(hasher.final());
1298712987 }
......@@ -13029,7 +13029,7 @@ fn strTupleAssumeCapacity(
1302913029 const Adapter = struct {
1303013030 builder: *const Builder,
1303113031 pub fn hash(_: @This(), key: Key) u32 {
13032 var hasher = comptime std.hash.Wyhash.init(std.hash.uint32(@intFromEnum(Metadata.Tag.tuple)));
13032 var hasher = comptime std.hash.Wyhash.init(std.hash.int(@intFromEnum(Metadata.Tag.tuple)));
1303313033 hasher.update(std.mem.sliceAsBytes(key.elements));
1303413034 return @truncate(hasher.final());
1303513035 }
......@@ -13159,7 +13159,7 @@ fn metadataConstantAssumeCapacity(self: *Builder, constant: Constant) Metadata {
1315913159 const Adapter = struct {
1316013160 builder: *const Builder,
1316113161 pub fn hash(_: @This(), key: Constant) u32 {
13162 var hasher = comptime std.hash.Wyhash.init(std.hash.uint32(@intFromEnum(Metadata.Tag.constant)));
13162 var hasher = comptime std.hash.Wyhash.init(std.hash.int(@intFromEnum(Metadata.Tag.constant)));
1316313163 hasher.update(std.mem.asBytes(&key));
1316413164 return @truncate(hasher.final());
1316513165 }
src/Compilation.zig+3-1
......@@ -1029,7 +1029,9 @@ pub const CObject = struct {
10291029
10301030 pub fn destroy(bundle: *Bundle, gpa: Allocator) void {
10311031 for (bundle.file_names.values()) |file_name| gpa.free(file_name);
1032 bundle.file_names.deinit(gpa);
10321033 for (bundle.category_names.values()) |category_name| gpa.free(category_name);
1034 bundle.category_names.deinit(gpa);
10331035 for (bundle.diags) |*diag| diag.deinit(gpa);
10341036 gpa.free(bundle.diags);
10351037 gpa.destroy(bundle);
......@@ -3040,7 +3042,7 @@ fn flush(
30403042 // If there's an output file, it wants to decide where the LLVM object goes!
30413043 const sub_prog_node = comp.link_prog_node.start("LLVM Emit Object", 0);
30423044 defer sub_prog_node.end();
3043 try llvm_object.emit(.{
3045 try llvm_object.emit(.{ .zcu = zcu, .tid = tid }, .{
30443046 .pre_ir_path = comp.verbose_llvm_ir,
30453047 .pre_bc_path = comp.verbose_llvm_bc,
30463048
src/IncrementalDebugServer.zig+4-3
......@@ -55,14 +55,15 @@ fn runThread(ids: *IncrementalDebugServer) void {
5555 const conn = server.accept() catch @panic("IncrementalDebugServer: failed to accept");
5656 defer conn.stream.close();
5757
58 var stream_reader = conn.stream.reader(&cmd_buf);
59
5860 while (ids.running.load(.monotonic)) {
5961 conn.stream.writeAll("zig> ") catch @panic("IncrementalDebugServer: failed to write");
60 var fbs = std.io.fixedBufferStream(&cmd_buf);
61 conn.stream.reader().streamUntilDelimiter(fbs.writer(), '\n', cmd_buf.len) catch |err| switch (err) {
62 const untrimmed = stream_reader.interface().takeSentinel('\n') catch |err| switch (err) {
6263 error.EndOfStream => break,
6364 else => @panic("IncrementalDebugServer: failed to read command"),
6465 };
65 const cmd_and_arg = std.mem.trim(u8, fbs.getWritten(), " \t\r\n");
66 const cmd_and_arg = std.mem.trim(u8, untrimmed, " \t\r\n");
6667 const cmd: []const u8, const arg: []const u8 = if (std.mem.indexOfScalar(u8, cmd_and_arg, ' ')) |i|
6768 .{ cmd_and_arg[0..i], cmd_and_arg[i + 1 ..] }
6869 else
src/InternPool.zig+4-4
......@@ -1861,7 +1861,7 @@ pub const NullTerminatedString = enum(u32) {
18611861
18621862 pub fn hash(ctx: @This(), a: NullTerminatedString) u32 {
18631863 _ = ctx;
1864 return std.hash.uint32(@intFromEnum(a));
1864 return std.hash.int(@intFromEnum(a));
18651865 }
18661866 };
18671867
......@@ -4740,7 +4740,7 @@ pub const Index = enum(u32) {
47404740
47414741 pub fn hash(ctx: @This(), a: Index) u32 {
47424742 _ = ctx;
4743 return std.hash.uint32(@intFromEnum(a));
4743 return std.hash.int(@intFromEnum(a));
47444744 }
47454745 };
47464746
......@@ -12725,7 +12725,7 @@ const GlobalErrorSet = struct {
1272512725 name: NullTerminatedString,
1272612726 ) Allocator.Error!GlobalErrorSet.Index {
1272712727 if (name == .empty) return .none;
12728 const hash = std.hash.uint32(@intFromEnum(name));
12728 const hash = std.hash.int(@intFromEnum(name));
1272912729 var map = ges.shared.map.acquire();
1273012730 const Map = @TypeOf(map);
1273112731 var map_mask = map.header().mask();
......@@ -12818,7 +12818,7 @@ const GlobalErrorSet = struct {
1281812818 name: NullTerminatedString,
1281912819 ) ?GlobalErrorSet.Index {
1282012820 if (name == .empty) return .none;
12821 const hash = std.hash.uint32(@intFromEnum(name));
12821 const hash = std.hash.int(@intFromEnum(name));
1282212822 const map = ges.shared.map.acquire();
1282312823 const map_mask = map.header().mask();
1282412824 const names_items = ges.shared.names.acquire().view().items(.@"0");
src/Sema.zig+3-12
......@@ -9705,7 +9705,6 @@ fn funcCommon(
97059705 func_inst,
97069706 cc_src,
97079707 is_noinline,
9708 is_generic,
97099708 );
97109709 }
97119710
......@@ -9745,7 +9744,6 @@ fn funcCommon(
97459744 func_inst,
97469745 cc_src,
97479746 is_noinline,
9748 is_generic,
97499747 );
97509748 }
97519749
......@@ -9762,7 +9760,6 @@ fn funcCommon(
97629760 func_inst,
97639761 cc_src,
97649762 is_noinline,
9765 is_generic,
97669763 );
97679764}
97689765
......@@ -9779,7 +9776,6 @@ fn finishFunc(
97799776 func_inst: Zir.Inst.Index,
97809777 cc_src: LazySrcLoc,
97819778 is_noinline: bool,
9782 is_generic: bool,
97839779) CompileError!Air.Inst.Ref {
97849780 const pt = sema.pt;
97859781 const zcu = pt.zcu;
......@@ -9911,13 +9907,6 @@ fn finishFunc(
99119907 }),
99129908 }
99139909
9914 if (!is_generic and sema.wantErrorReturnTracing(return_type)) {
9915 // Make sure that StackTrace's fields are resolved so that the backend can
9916 // lower this fn type.
9917 const unresolved_stack_trace_ty = try sema.getBuiltinType(block.nodeOffset(.zero), .StackTrace);
9918 try unresolved_stack_trace_ty.resolveFields(pt);
9919 }
9920
99219910 return Air.internedToRef(if (opt_func_index != .none) opt_func_index else func_ty);
99229911}
99239912
......@@ -13052,8 +13041,10 @@ fn analyzeSwitchRuntimeBlock(
1305213041 sema.air_extra.appendSliceAssumeCapacity(@ptrCast(cases_extra.items));
1305313042 sema.air_extra.appendSliceAssumeCapacity(@ptrCast(else_body));
1305413043
13044 const has_any_continues = spa.operand == .loop and child_block.label.?.merges.extra_insts.items.len > 0;
13045
1305513046 return try child_block.addInst(.{
13056 .tag = if (spa.operand == .loop) .loop_switch_br else .switch_br,
13047 .tag = if (has_any_continues) .loop_switch_br else .switch_br,
1305713048 .data = .{ .pl_op = .{
1305813049 .operand = operand,
1305913050 .payload = payload_index,
src/Zcu.zig+2-2
......@@ -808,7 +808,7 @@ pub const Namespace = struct {
808808
809809 pub fn hash(ctx: NavNameContext, nav: InternPool.Nav.Index) u32 {
810810 const name = ctx.zcu.intern_pool.getNav(nav).name;
811 return std.hash.uint32(@intFromEnum(name));
811 return std.hash.int(@intFromEnum(name));
812812 }
813813
814814 pub fn eql(ctx: NavNameContext, a_nav: InternPool.Nav.Index, b_nav: InternPool.Nav.Index, b_index: usize) bool {
......@@ -824,7 +824,7 @@ pub const Namespace = struct {
824824
825825 pub fn hash(ctx: NameAdapter, s: InternPool.NullTerminatedString) u32 {
826826 _ = ctx;
827 return std.hash.uint32(@intFromEnum(s));
827 return std.hash.int(@intFromEnum(s));
828828 }
829829
830830 pub fn eql(ctx: NameAdapter, a: InternPool.NullTerminatedString, b_nav: InternPool.Nav.Index, b_index: usize) bool {
src/arch/wasm/CodeGen.zig+4-4
......@@ -3975,7 +3975,7 @@ fn airSwitchBr(cg: *CodeGen, inst: Air.Inst.Index, is_dispatch_loop: bool) Inner
39753975 var width_bigint: std.math.big.int.Mutable = .{ .limbs = limbs, .positive = undefined, .len = undefined };
39763976 width_bigint.sub(max_bigint, min_bigint);
39773977 width_bigint.addScalar(width_bigint.toConst(), 1);
3978 break :width width_bigint.toConst().to(u32) catch null;
3978 break :width width_bigint.toConst().toInt(u32) catch null;
39793979 };
39803980
39813981 try cg.startBlock(.block, .empty); // whole switch block start
......@@ -4016,7 +4016,7 @@ fn airSwitchBr(cg: *CodeGen, inst: Air.Inst.Index, is_dispatch_loop: bool) Inner
40164016 const val_bigint = val.toBigInt(&val_space, zcu);
40174017 var index_bigint: std.math.big.int.Mutable = .{ .limbs = limbs, .positive = undefined, .len = undefined };
40184018 index_bigint.sub(val_bigint, min_bigint);
4019 branch_list[index_bigint.toConst().to(u32) catch unreachable] = case.idx;
4019 branch_list[index_bigint.toConst().toInt(u32) catch unreachable] = case.idx;
40204020 }
40214021 for (case.ranges) |range| {
40224022 var low_space: Value.BigIntSpace = undefined;
......@@ -4025,9 +4025,9 @@ fn airSwitchBr(cg: *CodeGen, inst: Air.Inst.Index, is_dispatch_loop: bool) Inner
40254025 const high_bigint = Value.fromInterned(range[1].toInterned().?).toBigInt(&high_space, zcu);
40264026 var index_bigint: std.math.big.int.Mutable = .{ .limbs = limbs, .positive = undefined, .len = undefined };
40274027 index_bigint.sub(low_bigint, min_bigint);
4028 const start = index_bigint.toConst().to(u32) catch unreachable;
4028 const start = index_bigint.toConst().toInt(u32) catch unreachable;
40294029 index_bigint.sub(high_bigint, min_bigint);
4030 const end = (index_bigint.toConst().to(u32) catch unreachable) + 1;
4030 const end = (index_bigint.toConst().toInt(u32) catch unreachable) + 1;
40314031 @memset(branch_list[start..end], case.idx);
40324032 }
40334033 }
src/arch/wasm/Mir.zig+2-2
......@@ -687,7 +687,7 @@ pub fn lower(mir: *const Mir, wasm: *Wasm, code: *std.ArrayListUnmanaged(u8)) st
687687 const sp_global: Wasm.GlobalIndex = .stack_pointer;
688688 // load stack pointer
689689 code.appendAssumeCapacity(@intFromEnum(std.wasm.Opcode.global_get));
690 std.leb.writeULEB128(code.fixedWriter(), @intFromEnum(sp_global)) catch unreachable;
690 std.leb.writeUleb128(code.fixedWriter(), @intFromEnum(sp_global)) catch unreachable;
691691 // store stack pointer so we can restore it when we return from the function
692692 code.appendAssumeCapacity(@intFromEnum(std.wasm.Opcode.local_tee));
693693 leb.writeUleb128(code.fixedWriter(), mir.prologue.sp_local) catch unreachable;
......@@ -710,7 +710,7 @@ pub fn lower(mir: *const Mir, wasm: *Wasm, code: *std.ArrayListUnmanaged(u8)) st
710710 // Store the current stack pointer value into the global stack pointer so other function calls will
711711 // start from this value instead and not overwrite the current stack.
712712 code.appendAssumeCapacity(@intFromEnum(std.wasm.Opcode.global_set));
713 std.leb.writeULEB128(code.fixedWriter(), @intFromEnum(sp_global)) catch unreachable;
713 std.leb.writeUleb128(code.fixedWriter(), @intFromEnum(sp_global)) catch unreachable;
714714 }
715715
716716 var emit: Emit = .{
src/arch/x86_64/CodeGen.zig+4-4
......@@ -179277,7 +179277,7 @@ fn lowerSwitchBr(
179277179277 var table_len_bigint: std.math.big.int.Mutable = .{ .limbs = limbs, .positive = undefined, .len = undefined };
179278179278 table_len_bigint.sub(max_bigint, min_bigint);
179279179279 assert(table_len_bigint.positive); // min <= max
179280 break :table_len @as(u11, table_len_bigint.toConst().to(u10) catch break :table) + 1; // no more than a 1024 entry table
179280 break :table_len @as(u11, table_len_bigint.toConst().toInt(u10) catch break :table) + 1; // no more than a 1024 entry table
179281179281 };
179282179282 assert(prong_items <= table_len); // each prong item introduces at least one unique integer to the range
179283179283 if (prong_items < table_len >> 2) break :table; // no more than 75% waste
......@@ -179353,7 +179353,7 @@ fn lowerSwitchBr(
179353179353 const val_bigint = val.toBigInt(&val_space, zcu);
179354179354 var index_bigint: std.math.big.int.Mutable = .{ .limbs = limbs, .positive = undefined, .len = undefined };
179355179355 index_bigint.sub(val_bigint, min_bigint);
179356 table[index_bigint.toConst().to(u10) catch unreachable] = @intCast(cg.mir_instructions.len);
179356 table[index_bigint.toConst().toInt(u10) catch unreachable] = @intCast(cg.mir_instructions.len);
179357179357 }
179358179358 for (case.ranges) |range| {
179359179359 var low_space: Value.BigIntSpace = undefined;
......@@ -179362,9 +179362,9 @@ fn lowerSwitchBr(
179362179362 const high_bigint = Value.fromInterned(range[1].toInterned().?).toBigInt(&high_space, zcu);
179363179363 var index_bigint: std.math.big.int.Mutable = .{ .limbs = limbs, .positive = undefined, .len = undefined };
179364179364 index_bigint.sub(low_bigint, min_bigint);
179365 const start = index_bigint.toConst().to(u10) catch unreachable;
179365 const start = index_bigint.toConst().toInt(u10) catch unreachable;
179366179366 index_bigint.sub(high_bigint, min_bigint);
179367 const end = @as(u11, index_bigint.toConst().to(u10) catch unreachable) + 1;
179367 const end = @as(u11, index_bigint.toConst().toInt(u10) catch unreachable) + 1;
179368179368 @memset(table[start..end], @intCast(cg.mir_instructions.len));
179369179369 }
179370179370 }
src/codegen/llvm.zig+609-610
......@@ -494,8 +494,6 @@ pub const Object = struct {
494494 gpa: Allocator,
495495 builder: Builder,
496496
497 pt: Zcu.PerThread,
498
499497 debug_compile_unit: Builder.Metadata,
500498
501499 debug_enums_fwd_ref: Builder.Metadata,
......@@ -626,10 +624,6 @@ pub const Object = struct {
626624 obj.* = .{
627625 .gpa = gpa,
628626 .builder = builder,
629 .pt = .{
630 .zcu = comp.zcu.?,
631 .tid = .main,
632 },
633627 .debug_compile_unit = debug_compile_unit,
634628 .debug_enums_fwd_ref = debug_enums_fwd_ref,
635629 .debug_globals_fwd_ref = debug_globals_fwd_ref,
......@@ -669,11 +663,10 @@ pub const Object = struct {
669663 self.* = undefined;
670664 }
671665
672 fn genErrorNameTable(o: *Object) Allocator.Error!void {
666 fn genErrorNameTable(o: *Object, pt: Zcu.PerThread) Allocator.Error!void {
673667 // If o.error_name_table is null, then it was not referenced by any instructions.
674668 if (o.error_name_table == .none) return;
675669
676 const pt = o.pt;
677670 const zcu = pt.zcu;
678671 const ip = &zcu.intern_pool;
679672
......@@ -683,8 +676,8 @@ pub const Object = struct {
683676
684677 // TODO: Address space
685678 const slice_ty = Type.slice_const_u8_sentinel_0;
686 const llvm_usize_ty = try o.lowerType(Type.usize);
687 const llvm_slice_ty = try o.lowerType(slice_ty);
679 const llvm_usize_ty = try o.lowerType(pt, Type.usize);
680 const llvm_slice_ty = try o.lowerType(pt, slice_ty);
688681 const llvm_table_ty = try o.builder.arrayType(1 + error_name_list.len, llvm_slice_ty);
689682
690683 llvm_errors[0] = try o.builder.undefConst(llvm_slice_ty);
......@@ -721,11 +714,11 @@ pub const Object = struct {
721714 try o.error_name_table.setInitializer(table_variable_index.toConst(&o.builder), &o.builder);
722715 }
723716
724 fn genCmpLtErrorsLenFunction(o: *Object) !void {
717 fn genCmpLtErrorsLenFunction(o: *Object, pt: Zcu.PerThread) !void {
725718 // If there is no such function in the module, it means the source code does not need it.
726719 const name = o.builder.strtabStringIfExists(lt_errors_fn_name) orelse return;
727720 const llvm_fn = o.builder.getGlobal(name) orelse return;
728 const errors_len = o.pt.zcu.intern_pool.global_error_set.getNamesFromMainThread().len;
721 const errors_len = pt.zcu.intern_pool.global_error_set.getNamesFromMainThread().len;
729722
730723 var wip = try Builder.WipFunction.init(&o.builder, .{
731724 .function = llvm_fn.ptrConst(&o.builder).kind.function,
......@@ -740,17 +733,17 @@ pub const Object = struct {
740733 // }
741734
742735 const lhs = wip.arg(0);
743 const rhs = try o.builder.intValue(try o.errorIntType(), errors_len);
736 const rhs = try o.builder.intValue(try o.errorIntType(pt), errors_len);
744737 const is_lt = try wip.icmp(.ule, lhs, rhs, "");
745738 _ = try wip.ret(is_lt);
746739 try wip.finish();
747740 }
748741
749 fn genModuleLevelAssembly(object: *Object) Allocator.Error!void {
742 fn genModuleLevelAssembly(object: *Object, pt: Zcu.PerThread) Allocator.Error!void {
750743 const b = &object.builder;
751744 const gpa = b.gpa;
752745 b.module_asm.clearRetainingCapacity();
753 for (object.pt.zcu.global_assembly.values()) |assembly| {
746 for (pt.zcu.global_assembly.values()) |assembly| {
754747 try b.module_asm.ensureUnusedCapacity(gpa, assembly.len + 1);
755748 b.module_asm.appendSliceAssumeCapacity(assembly);
756749 b.module_asm.appendAssumeCapacity('\n');
......@@ -776,15 +769,15 @@ pub const Object = struct {
776769 lto: std.zig.LtoMode,
777770 };
778771
779 pub fn emit(o: *Object, options: EmitOptions) error{ LinkFailure, OutOfMemory }!void {
780 const zcu = o.pt.zcu;
772 pub fn emit(o: *Object, pt: Zcu.PerThread, options: EmitOptions) error{ LinkFailure, OutOfMemory }!void {
773 const zcu = pt.zcu;
781774 const comp = zcu.comp;
782775 const diags = &comp.link_diags;
783776
784777 {
785 try o.genErrorNameTable();
786 try o.genCmpLtErrorsLenFunction();
787 try o.genModuleLevelAssembly();
778 try o.genErrorNameTable(pt);
779 try o.genCmpLtErrorsLenFunction(pt);
780 try o.genModuleLevelAssembly(pt);
788781
789782 if (o.used.items.len > 0) {
790783 const array_llvm_ty = try o.builder.arrayType(o.used.items.len, .ptr);
......@@ -807,7 +800,7 @@ pub const Object = struct {
807800 const fwd_ref = o.debug_unresolved_namespace_scopes.values()[i];
808801
809802 const namespace = zcu.namespacePtr(namespace_index);
810 const debug_type = try o.lowerDebugType(Type.fromInterned(namespace.owner_type));
803 const debug_type = try o.lowerDebugType(pt, Type.fromInterned(namespace.owner_type));
811804
812805 o.builder.debugForwardReferenceSetType(fwd_ref, debug_type);
813806 }
......@@ -1140,7 +1133,6 @@ pub const Object = struct {
11401133 air: *const Air,
11411134 liveness: *const Air.Liveness,
11421135 ) !void {
1143 assert(std.meta.eql(pt, o.pt));
11441136 const zcu = pt.zcu;
11451137 const comp = zcu.comp;
11461138 const ip = &zcu.intern_pool;
......@@ -1155,10 +1147,11 @@ pub const Object = struct {
11551147 var ng: NavGen = .{
11561148 .object = o,
11571149 .nav_index = func.owner_nav,
1150 .pt = pt,
11581151 .err_msg = null,
11591152 };
11601153
1161 const function_index = try o.resolveLlvmFunction(func.owner_nav);
1154 const function_index = try o.resolveLlvmFunction(pt, func.owner_nav);
11621155
11631156 var attributes = try function_index.ptrConst(&o.builder).attributes.toWip(&o.builder);
11641157 defer attributes.deinit(&o.builder);
......@@ -1272,7 +1265,7 @@ pub const Object = struct {
12721265 defer args.deinit(gpa);
12731266
12741267 {
1275 var it = iterateParamTypes(o, fn_info);
1268 var it = iterateParamTypes(o, pt, fn_info);
12761269 while (try it.next()) |lowering| {
12771270 try args.ensureUnusedCapacity(gpa, 1);
12781271
......@@ -1293,13 +1286,13 @@ pub const Object = struct {
12931286 } else {
12941287 args.appendAssumeCapacity(param);
12951288
1296 try o.addByValParamAttrs(&attributes, param_ty, param_index, fn_info, llvm_arg_i);
1289 try o.addByValParamAttrs(pt, &attributes, param_ty, param_index, fn_info, llvm_arg_i);
12971290 }
12981291 llvm_arg_i += 1;
12991292 },
13001293 .byref => {
13011294 const param_ty = Type.fromInterned(fn_info.param_types.get(ip)[it.zig_index - 1]);
1302 const param_llvm_ty = try o.lowerType(param_ty);
1295 const param_llvm_ty = try o.lowerType(pt, param_ty);
13031296 const param = wip.arg(llvm_arg_i);
13041297 const alignment = param_ty.abiAlignment(zcu).toLlvm();
13051298
......@@ -1314,7 +1307,7 @@ pub const Object = struct {
13141307 },
13151308 .byref_mut => {
13161309 const param_ty = Type.fromInterned(fn_info.param_types.get(ip)[it.zig_index - 1]);
1317 const param_llvm_ty = try o.lowerType(param_ty);
1310 const param_llvm_ty = try o.lowerType(pt, param_ty);
13181311 const param = wip.arg(llvm_arg_i);
13191312 const alignment = param_ty.abiAlignment(zcu).toLlvm();
13201313
......@@ -1333,7 +1326,7 @@ pub const Object = struct {
13331326 const param = wip.arg(llvm_arg_i);
13341327 llvm_arg_i += 1;
13351328
1336 const param_llvm_ty = try o.lowerType(param_ty);
1329 const param_llvm_ty = try o.lowerType(pt, param_ty);
13371330 const alignment = param_ty.abiAlignment(zcu).toLlvm();
13381331 const arg_ptr = try buildAllocaInner(&wip, param_llvm_ty, alignment, target);
13391332 _ = try wip.store(.normal, param, arg_ptr, alignment);
......@@ -1372,7 +1365,7 @@ pub const Object = struct {
13721365 const len_param = wip.arg(llvm_arg_i);
13731366 llvm_arg_i += 1;
13741367
1375 const slice_llvm_ty = try o.lowerType(param_ty);
1368 const slice_llvm_ty = try o.lowerType(pt, param_ty);
13761369 args.appendAssumeCapacity(
13771370 try wip.buildAggregate(slice_llvm_ty, &.{ ptr_param, len_param }, ""),
13781371 );
......@@ -1381,7 +1374,7 @@ pub const Object = struct {
13811374 assert(!it.byval_attr);
13821375 const field_types = it.types_buffer[0..it.types_len];
13831376 const param_ty = Type.fromInterned(fn_info.param_types.get(ip)[it.zig_index - 1]);
1384 const param_llvm_ty = try o.lowerType(param_ty);
1377 const param_llvm_ty = try o.lowerType(pt, param_ty);
13851378 const param_alignment = param_ty.abiAlignment(zcu).toLlvm();
13861379 const arg_ptr = try buildAllocaInner(&wip, param_llvm_ty, param_alignment, target);
13871380 const llvm_ty = try o.builder.structType(.normal, field_types);
......@@ -1402,7 +1395,7 @@ pub const Object = struct {
14021395 },
14031396 .float_array => {
14041397 const param_ty = Type.fromInterned(fn_info.param_types.get(ip)[it.zig_index - 1]);
1405 const param_llvm_ty = try o.lowerType(param_ty);
1398 const param_llvm_ty = try o.lowerType(pt, param_ty);
14061399 const param = wip.arg(llvm_arg_i);
14071400 llvm_arg_i += 1;
14081401
......@@ -1417,7 +1410,7 @@ pub const Object = struct {
14171410 },
14181411 .i32_array, .i64_array => {
14191412 const param_ty = Type.fromInterned(fn_info.param_types.get(ip)[it.zig_index - 1]);
1420 const param_llvm_ty = try o.lowerType(param_ty);
1413 const param_llvm_ty = try o.lowerType(pt, param_ty);
14211414 const param = wip.arg(llvm_arg_i);
14221415 llvm_arg_i += 1;
14231416
......@@ -1435,11 +1428,11 @@ pub const Object = struct {
14351428 }
14361429
14371430 const file, const subprogram = if (!wip.strip) debug_info: {
1438 const file = try o.getDebugFile(file_scope);
1431 const file = try o.getDebugFile(pt, file_scope);
14391432
14401433 const line_number = zcu.navSrcLine(func.owner_nav) + 1;
14411434 const is_internal_linkage = ip.indexToKey(nav.status.fully_resolved.val) != .@"extern";
1442 const debug_decl_type = try o.lowerDebugType(fn_ty);
1435 const debug_decl_type = try o.lowerDebugType(pt, fn_ty);
14431436
14441437 const subprogram = try o.builder.debugSubprogram(
14451438 file,
......@@ -1569,10 +1562,10 @@ pub const Object = struct {
15691562 }
15701563
15711564 pub fn updateNav(self: *Object, pt: Zcu.PerThread, nav_index: InternPool.Nav.Index) !void {
1572 assert(std.meta.eql(pt, self.pt));
15731565 var ng: NavGen = .{
15741566 .object = self,
15751567 .nav_index = nav_index,
1568 .pt = pt,
15761569 .err_msg = null,
15771570 };
15781571 ng.genDecl() catch |err| switch (err) {
......@@ -1590,11 +1583,10 @@ pub const Object = struct {
15901583 exported: Zcu.Exported,
15911584 export_indices: []const Zcu.Export.Index,
15921585 ) link.File.UpdateExportsError!void {
1593 assert(std.meta.eql(pt, self.pt));
15941586 const zcu = pt.zcu;
15951587 const nav_index = switch (exported) {
15961588 .nav => |nav| nav,
1597 .uav => |uav| return updateExportedValue(self, zcu, uav, export_indices),
1589 .uav => |uav| return updateExportedValue(self, pt, uav, export_indices),
15981590 };
15991591 const ip = &zcu.intern_pool;
16001592 const global_index = self.nav_map.get(nav_index).?;
......@@ -1635,10 +1627,11 @@ pub const Object = struct {
16351627
16361628 fn updateExportedValue(
16371629 o: *Object,
1638 zcu: *Zcu,
1630 pt: Zcu.PerThread,
16391631 exported_value: InternPool.Index,
16401632 export_indices: []const Zcu.Export.Index,
16411633 ) link.File.UpdateExportsError!void {
1634 const zcu = pt.zcu;
16421635 const gpa = zcu.gpa;
16431636 const ip = &zcu.intern_pool;
16441637 const main_exp_name = try o.builder.strtabString(export_indices[0].ptr(zcu).opts.name.toSlice(ip));
......@@ -1652,13 +1645,13 @@ pub const Object = struct {
16521645 const llvm_addr_space = toLlvmAddressSpace(.generic, o.target);
16531646 const variable_index = try o.builder.addVariable(
16541647 main_exp_name,
1655 try o.lowerType(Type.fromInterned(ip.typeOf(exported_value))),
1648 try o.lowerType(pt, Type.fromInterned(ip.typeOf(exported_value))),
16561649 llvm_addr_space,
16571650 );
16581651 const global_index = variable_index.ptrConst(&o.builder).global;
16591652 gop.value_ptr.* = global_index;
16601653 // This line invalidates `gop`.
1661 const init_val = o.lowerValue(exported_value) catch |err| switch (err) {
1654 const init_val = o.lowerValue(pt, exported_value) catch |err| switch (err) {
16621655 error.OutOfMemory => return error.OutOfMemory,
16631656 error.CodegenFail => return error.AnalysisFail,
16641657 };
......@@ -1761,14 +1754,13 @@ pub const Object = struct {
17611754 }
17621755 }
17631756
1764 fn getDebugFile(o: *Object, file_index: Zcu.File.Index) Allocator.Error!Builder.Metadata {
1757 fn getDebugFile(o: *Object, pt: Zcu.PerThread, file_index: Zcu.File.Index) Allocator.Error!Builder.Metadata {
17651758 const gpa = o.gpa;
17661759 const gop = try o.debug_file_map.getOrPut(gpa, file_index);
17671760 errdefer assert(o.debug_file_map.remove(file_index));
17681761 if (gop.found_existing) return gop.value_ptr.*;
1769 const zcu = o.pt.zcu;
1770 const path = zcu.fileByIndex(file_index).path;
1771 const abs_path = try path.toAbsolute(zcu.comp.dirs, gpa);
1762 const path = pt.zcu.fileByIndex(file_index).path;
1763 const abs_path = try path.toAbsolute(pt.zcu.comp.dirs, gpa);
17721764 defer gpa.free(abs_path);
17731765
17741766 gop.value_ptr.* = try o.builder.debugFile(
......@@ -1780,13 +1772,13 @@ pub const Object = struct {
17801772
17811773 pub fn lowerDebugType(
17821774 o: *Object,
1775 pt: Zcu.PerThread,
17831776 ty: Type,
17841777 ) Allocator.Error!Builder.Metadata {
17851778 assert(!o.builder.strip);
17861779
17871780 const gpa = o.gpa;
17881781 const target = o.target;
1789 const pt = o.pt;
17901782 const zcu = pt.zcu;
17911783 const ip = &zcu.intern_pool;
17921784
......@@ -1806,7 +1798,7 @@ pub const Object = struct {
18061798 .int => {
18071799 const info = ty.intInfo(zcu);
18081800 assert(info.bits != 0);
1809 const name = try o.allocTypeName(ty);
1801 const name = try o.allocTypeName(pt, ty);
18101802 defer gpa.free(name);
18111803 const builder_name = try o.builder.metadataString(name);
18121804 const debug_bits = ty.abiSize(zcu) * 8; // lldb cannot handle non-byte sized types
......@@ -1819,7 +1811,7 @@ pub const Object = struct {
18191811 },
18201812 .@"enum" => {
18211813 if (!ty.hasRuntimeBitsIgnoreComptime(zcu)) {
1822 const debug_enum_type = try o.makeEmptyNamespaceDebugType(ty);
1814 const debug_enum_type = try o.makeEmptyNamespaceDebugType(pt, ty);
18231815 try o.debug_type_map.put(gpa, ty, debug_enum_type);
18241816 return debug_enum_type;
18251817 }
......@@ -1847,13 +1839,13 @@ pub const Object = struct {
18471839 );
18481840 }
18491841
1850 const file = try o.getDebugFile(ty.typeDeclInstAllowGeneratedTag(zcu).?.resolveFile(ip));
1842 const file = try o.getDebugFile(pt, ty.typeDeclInstAllowGeneratedTag(zcu).?.resolveFile(ip));
18511843 const scope = if (ty.getParentNamespace(zcu).unwrap()) |parent_namespace|
1852 try o.namespaceToDebugScope(parent_namespace)
1844 try o.namespaceToDebugScope(pt, parent_namespace)
18531845 else
18541846 file;
18551847
1856 const name = try o.allocTypeName(ty);
1848 const name = try o.allocTypeName(pt, ty);
18571849 defer gpa.free(name);
18581850
18591851 const debug_enum_type = try o.builder.debugEnumerationType(
......@@ -1861,7 +1853,7 @@ pub const Object = struct {
18611853 file,
18621854 scope,
18631855 ty.typeDeclSrcLine(zcu).? + 1, // Line
1864 try o.lowerDebugType(int_ty),
1856 try o.lowerDebugType(pt, int_ty),
18651857 ty.abiSize(zcu) * 8,
18661858 (ty.abiAlignment(zcu).toByteUnits() orelse 0) * 8,
18671859 try o.builder.metadataTuple(enumerators),
......@@ -1873,7 +1865,7 @@ pub const Object = struct {
18731865 },
18741866 .float => {
18751867 const bits = ty.floatBits(target);
1876 const name = try o.allocTypeName(ty);
1868 const name = try o.allocTypeName(pt, ty);
18771869 defer gpa.free(name);
18781870 const debug_float_type = try o.builder.debugFloatType(
18791871 try o.builder.metadataString(name),
......@@ -1918,7 +1910,7 @@ pub const Object = struct {
19181910 },
19191911 },
19201912 });
1921 const debug_ptr_type = try o.lowerDebugType(bland_ptr_ty);
1913 const debug_ptr_type = try o.lowerDebugType(pt, bland_ptr_ty);
19221914 try o.debug_type_map.put(gpa, ty, debug_ptr_type);
19231915 return debug_ptr_type;
19241916 }
......@@ -1932,7 +1924,7 @@ pub const Object = struct {
19321924 const ptr_ty = ty.slicePtrFieldType(zcu);
19331925 const len_ty = Type.usize;
19341926
1935 const name = try o.allocTypeName(ty);
1927 const name = try o.allocTypeName(pt, ty);
19361928 defer gpa.free(name);
19371929 const line = 0;
19381930
......@@ -1948,7 +1940,7 @@ pub const Object = struct {
19481940 .none, // File
19491941 debug_fwd_ref,
19501942 0, // Line
1951 try o.lowerDebugType(ptr_ty),
1943 try o.lowerDebugType(pt, ptr_ty),
19521944 ptr_size * 8,
19531945 (ptr_align.toByteUnits() orelse 0) * 8,
19541946 0, // Offset
......@@ -1959,7 +1951,7 @@ pub const Object = struct {
19591951 .none, // File
19601952 debug_fwd_ref,
19611953 0, // Line
1962 try o.lowerDebugType(len_ty),
1954 try o.lowerDebugType(pt, len_ty),
19631955 len_size * 8,
19641956 (len_align.toByteUnits() orelse 0) * 8,
19651957 len_offset * 8,
......@@ -1988,9 +1980,9 @@ pub const Object = struct {
19881980 return debug_slice_type;
19891981 }
19901982
1991 const debug_elem_ty = try o.lowerDebugType(Type.fromInterned(ptr_info.child));
1983 const debug_elem_ty = try o.lowerDebugType(pt, Type.fromInterned(ptr_info.child));
19921984
1993 const name = try o.allocTypeName(ty);
1985 const name = try o.allocTypeName(pt, ty);
19941986 defer gpa.free(name);
19951987
19961988 const debug_ptr_type = try o.builder.debugPointerType(
......@@ -2022,12 +2014,12 @@ pub const Object = struct {
20222014 return debug_opaque_type;
20232015 }
20242016
2025 const name = try o.allocTypeName(ty);
2017 const name = try o.allocTypeName(pt, ty);
20262018 defer gpa.free(name);
20272019
2028 const file = try o.getDebugFile(ty.typeDeclInstAllowGeneratedTag(zcu).?.resolveFile(ip));
2020 const file = try o.getDebugFile(pt, ty.typeDeclInstAllowGeneratedTag(zcu).?.resolveFile(ip));
20292021 const scope = if (ty.getParentNamespace(zcu).unwrap()) |parent_namespace|
2030 try o.namespaceToDebugScope(parent_namespace)
2022 try o.namespaceToDebugScope(pt, parent_namespace)
20312023 else
20322024 file;
20332025
......@@ -2050,7 +2042,7 @@ pub const Object = struct {
20502042 .none, // File
20512043 .none, // Scope
20522044 0, // Line
2053 try o.lowerDebugType(ty.childType(zcu)),
2045 try o.lowerDebugType(pt, ty.childType(zcu)),
20542046 ty.abiSize(zcu) * 8,
20552047 (ty.abiAlignment(zcu).toByteUnits() orelse 0) * 8,
20562048 try o.builder.metadataTuple(&.{
......@@ -2073,7 +2065,7 @@ pub const Object = struct {
20732065 .int => blk: {
20742066 const info = elem_ty.intInfo(zcu);
20752067 assert(info.bits != 0);
2076 const name = try o.allocTypeName(ty);
2068 const name = try o.allocTypeName(pt, ty);
20772069 defer gpa.free(name);
20782070 const builder_name = try o.builder.metadataString(name);
20792071 break :blk switch (info.signedness) {
......@@ -2085,7 +2077,7 @@ pub const Object = struct {
20852077 try o.builder.metadataString("bool"),
20862078 1,
20872079 ),
2088 else => try o.lowerDebugType(ty.childType(zcu)),
2080 else => try o.lowerDebugType(pt, ty.childType(zcu)),
20892081 };
20902082
20912083 const debug_vector_type = try o.builder.debugVectorType(
......@@ -2108,7 +2100,7 @@ pub const Object = struct {
21082100 return debug_vector_type;
21092101 },
21102102 .optional => {
2111 const name = try o.allocTypeName(ty);
2103 const name = try o.allocTypeName(pt, ty);
21122104 defer gpa.free(name);
21132105 const child_ty = ty.optionalChild(zcu);
21142106 if (!child_ty.hasRuntimeBitsIgnoreComptime(zcu)) {
......@@ -2126,7 +2118,7 @@ pub const Object = struct {
21262118 try o.debug_type_map.put(gpa, ty, debug_fwd_ref);
21272119
21282120 if (ty.optionalReprIsPayload(zcu)) {
2129 const debug_optional_type = try o.lowerDebugType(child_ty);
2121 const debug_optional_type = try o.lowerDebugType(pt, child_ty);
21302122
21312123 o.builder.debugForwardReferenceSetType(debug_fwd_ref, debug_optional_type);
21322124
......@@ -2149,7 +2141,7 @@ pub const Object = struct {
21492141 .none, // File
21502142 debug_fwd_ref,
21512143 0, // Line
2152 try o.lowerDebugType(child_ty),
2144 try o.lowerDebugType(pt, child_ty),
21532145 payload_size * 8,
21542146 (payload_align.toByteUnits() orelse 0) * 8,
21552147 0, // Offset
......@@ -2160,7 +2152,7 @@ pub const Object = struct {
21602152 .none,
21612153 debug_fwd_ref,
21622154 0,
2163 try o.lowerDebugType(non_null_ty),
2155 try o.lowerDebugType(pt, non_null_ty),
21642156 non_null_size * 8,
21652157 (non_null_align.toByteUnits() orelse 0) * 8,
21662158 non_null_offset * 8,
......@@ -2192,12 +2184,12 @@ pub const Object = struct {
21922184 const payload_ty = ty.errorUnionPayload(zcu);
21932185 if (!payload_ty.hasRuntimeBitsIgnoreComptime(zcu)) {
21942186 // TODO: Maybe remove?
2195 const debug_error_union_type = try o.lowerDebugType(Type.anyerror);
2187 const debug_error_union_type = try o.lowerDebugType(pt, Type.anyerror);
21962188 try o.debug_type_map.put(gpa, ty, debug_error_union_type);
21972189 return debug_error_union_type;
21982190 }
21992191
2200 const name = try o.allocTypeName(ty);
2192 const name = try o.allocTypeName(pt, ty);
22012193 defer gpa.free(name);
22022194
22032195 const error_size = Type.anyerror.abiSize(zcu);
......@@ -2229,7 +2221,7 @@ pub const Object = struct {
22292221 .none, // File
22302222 debug_fwd_ref,
22312223 0, // Line
2232 try o.lowerDebugType(Type.anyerror),
2224 try o.lowerDebugType(pt, Type.anyerror),
22332225 error_size * 8,
22342226 (error_align.toByteUnits() orelse 0) * 8,
22352227 error_offset * 8,
......@@ -2239,7 +2231,7 @@ pub const Object = struct {
22392231 .none, // File
22402232 debug_fwd_ref,
22412233 0, // Line
2242 try o.lowerDebugType(payload_ty),
2234 try o.lowerDebugType(pt, payload_ty),
22432235 payload_size * 8,
22442236 (payload_align.toByteUnits() orelse 0) * 8,
22452237 payload_offset * 8,
......@@ -2270,7 +2262,7 @@ pub const Object = struct {
22702262 return debug_error_set;
22712263 },
22722264 .@"struct" => {
2273 const name = try o.allocTypeName(ty);
2265 const name = try o.allocTypeName(pt, ty);
22742266 defer gpa.free(name);
22752267
22762268 if (zcu.typeToPackedStruct(ty)) |struct_type| {
......@@ -2315,7 +2307,7 @@ pub const Object = struct {
23152307 .none, // File
23162308 debug_fwd_ref,
23172309 0,
2318 try o.lowerDebugType(Type.fromInterned(field_ty)),
2310 try o.lowerDebugType(pt, Type.fromInterned(field_ty)),
23192311 field_size * 8,
23202312 (field_align.toByteUnits() orelse 0) * 8,
23212313 field_offset * 8,
......@@ -2347,7 +2339,7 @@ pub const Object = struct {
23472339 // into. Therefore we can satisfy this by making an empty namespace,
23482340 // rather than changing the frontend to unnecessarily resolve the
23492341 // struct field types.
2350 const debug_struct_type = try o.makeEmptyNamespaceDebugType(ty);
2342 const debug_struct_type = try o.makeEmptyNamespaceDebugType(pt, ty);
23512343 try o.debug_type_map.put(gpa, ty, debug_struct_type);
23522344 return debug_struct_type;
23532345 }
......@@ -2356,7 +2348,7 @@ pub const Object = struct {
23562348 }
23572349
23582350 if (!ty.hasRuntimeBitsIgnoreComptime(zcu)) {
2359 const debug_struct_type = try o.makeEmptyNamespaceDebugType(ty);
2351 const debug_struct_type = try o.makeEmptyNamespaceDebugType(pt, ty);
23602352 try o.debug_type_map.put(gpa, ty, debug_struct_type);
23612353 return debug_struct_type;
23622354 }
......@@ -2388,7 +2380,7 @@ pub const Object = struct {
23882380 .none, // File
23892381 debug_fwd_ref,
23902382 0, // Line
2391 try o.lowerDebugType(field_ty),
2383 try o.lowerDebugType(pt, field_ty),
23922384 field_size * 8,
23932385 (field_align.toByteUnits() orelse 0) * 8,
23942386 field_offset * 8,
......@@ -2415,7 +2407,7 @@ pub const Object = struct {
24152407 return debug_struct_type;
24162408 },
24172409 .@"union" => {
2418 const name = try o.allocTypeName(ty);
2410 const name = try o.allocTypeName(pt, ty);
24192411 defer gpa.free(name);
24202412
24212413 const union_type = ip.loadUnionType(ty.toIntern());
......@@ -2423,7 +2415,7 @@ pub const Object = struct {
24232415 !ty.hasRuntimeBitsIgnoreComptime(zcu) or
24242416 !union_type.haveLayout(ip))
24252417 {
2426 const debug_union_type = try o.makeEmptyNamespaceDebugType(ty);
2418 const debug_union_type = try o.makeEmptyNamespaceDebugType(pt, ty);
24272419 try o.debug_type_map.put(gpa, ty, debug_union_type);
24282420 return debug_union_type;
24292421 }
......@@ -2445,7 +2437,7 @@ pub const Object = struct {
24452437 ty.abiSize(zcu) * 8,
24462438 (ty.abiAlignment(zcu).toByteUnits() orelse 0) * 8,
24472439 try o.builder.metadataTuple(
2448 &.{try o.lowerDebugType(Type.fromInterned(union_type.enum_tag_ty))},
2440 &.{try o.lowerDebugType(pt, Type.fromInterned(union_type.enum_tag_ty))},
24492441 ),
24502442 );
24512443
......@@ -2484,7 +2476,7 @@ pub const Object = struct {
24842476 .none, // File
24852477 debug_union_fwd_ref,
24862478 0, // Line
2487 try o.lowerDebugType(Type.fromInterned(field_ty)),
2479 try o.lowerDebugType(pt, Type.fromInterned(field_ty)),
24882480 field_size * 8,
24892481 (field_align.toByteUnits() orelse 0) * 8,
24902482 0, // Offset
......@@ -2534,7 +2526,7 @@ pub const Object = struct {
25342526 .none, // File
25352527 debug_fwd_ref,
25362528 0, // Line
2537 try o.lowerDebugType(Type.fromInterned(union_type.enum_tag_ty)),
2529 try o.lowerDebugType(pt, Type.fromInterned(union_type.enum_tag_ty)),
25382530 layout.tag_size * 8,
25392531 (layout.tag_align.toByteUnits() orelse 0) * 8,
25402532 tag_offset * 8,
......@@ -2588,19 +2580,19 @@ pub const Object = struct {
25882580 if (Type.fromInterned(fn_info.return_type).hasRuntimeBitsIgnoreComptime(zcu)) {
25892581 const sret = firstParamSRet(fn_info, zcu, target);
25902582 const ret_ty = if (sret) Type.void else Type.fromInterned(fn_info.return_type);
2591 debug_param_types.appendAssumeCapacity(try o.lowerDebugType(ret_ty));
2583 debug_param_types.appendAssumeCapacity(try o.lowerDebugType(pt, ret_ty));
25922584
25932585 if (sret) {
25942586 const ptr_ty = try pt.singleMutPtrType(Type.fromInterned(fn_info.return_type));
2595 debug_param_types.appendAssumeCapacity(try o.lowerDebugType(ptr_ty));
2587 debug_param_types.appendAssumeCapacity(try o.lowerDebugType(pt, ptr_ty));
25962588 }
25972589 } else {
2598 debug_param_types.appendAssumeCapacity(try o.lowerDebugType(Type.void));
2590 debug_param_types.appendAssumeCapacity(try o.lowerDebugType(pt, Type.void));
25992591 }
26002592
26012593 if (fn_info.cc == .auto and zcu.comp.config.any_error_tracing) {
2602 const ptr_ty = try pt.singleMutPtrType(try o.getStackTraceType());
2603 debug_param_types.appendAssumeCapacity(try o.lowerDebugType(ptr_ty));
2594 // Stack trace pointer.
2595 debug_param_types.appendAssumeCapacity(try o.lowerDebugType(pt, .fromInterned(.ptr_usize_type)));
26042596 }
26052597
26062598 for (0..fn_info.param_types.len) |i| {
......@@ -2609,9 +2601,9 @@ pub const Object = struct {
26092601
26102602 if (isByRef(param_ty, zcu)) {
26112603 const ptr_ty = try pt.singleMutPtrType(param_ty);
2612 debug_param_types.appendAssumeCapacity(try o.lowerDebugType(ptr_ty));
2604 debug_param_types.appendAssumeCapacity(try o.lowerDebugType(pt, ptr_ty));
26132605 } else {
2614 debug_param_types.appendAssumeCapacity(try o.lowerDebugType(param_ty));
2606 debug_param_types.appendAssumeCapacity(try o.lowerDebugType(pt, param_ty));
26152607 }
26162608 }
26172609
......@@ -2634,10 +2626,10 @@ pub const Object = struct {
26342626 }
26352627 }
26362628
2637 fn namespaceToDebugScope(o: *Object, namespace_index: InternPool.NamespaceIndex) !Builder.Metadata {
2638 const zcu = o.pt.zcu;
2629 fn namespaceToDebugScope(o: *Object, pt: Zcu.PerThread, namespace_index: InternPool.NamespaceIndex) !Builder.Metadata {
2630 const zcu = pt.zcu;
26392631 const namespace = zcu.namespacePtr(namespace_index);
2640 if (namespace.parent == .none) return try o.getDebugFile(namespace.file_scope);
2632 if (namespace.parent == .none) return try o.getDebugFile(pt, namespace.file_scope);
26412633
26422634 const gop = try o.debug_unresolved_namespace_scopes.getOrPut(o.gpa, namespace_index);
26432635
......@@ -2646,12 +2638,12 @@ pub const Object = struct {
26462638 return gop.value_ptr.*;
26472639 }
26482640
2649 fn makeEmptyNamespaceDebugType(o: *Object, ty: Type) !Builder.Metadata {
2650 const zcu = o.pt.zcu;
2641 fn makeEmptyNamespaceDebugType(o: *Object, pt: Zcu.PerThread, ty: Type) !Builder.Metadata {
2642 const zcu = pt.zcu;
26512643 const ip = &zcu.intern_pool;
2652 const file = try o.getDebugFile(ty.typeDeclInstAllowGeneratedTag(zcu).?.resolveFile(ip));
2644 const file = try o.getDebugFile(pt, ty.typeDeclInstAllowGeneratedTag(zcu).?.resolveFile(ip));
26532645 const scope = if (ty.getParentNamespace(zcu).unwrap()) |parent_namespace|
2654 try o.namespaceToDebugScope(parent_namespace)
2646 try o.namespaceToDebugScope(pt, parent_namespace)
26552647 else
26562648 file;
26572649 return o.builder.debugStructType(
......@@ -2666,31 +2658,10 @@ pub const Object = struct {
26662658 );
26672659 }
26682660
2669 fn getStackTraceType(o: *Object) Allocator.Error!Type {
2670 const pt = o.pt;
2671 const zcu = pt.zcu;
2672 const ip = &zcu.intern_pool;
2673
2674 const std_file_index = zcu.module_roots.get(zcu.std_mod).?.unwrap().?;
2675 const builtin_str = try ip.getOrPutString(zcu.gpa, pt.tid, "builtin", .no_embedded_nulls);
2676 const std_file_root_type = Type.fromInterned(zcu.fileRootType(std_file_index));
2677 const std_namespace = ip.namespacePtr(std_file_root_type.getNamespaceIndex(zcu));
2678 const builtin_nav = std_namespace.pub_decls.getKeyAdapted(builtin_str, Zcu.Namespace.NameAdapter{ .zcu = zcu }).?;
2679
2680 const stack_trace_str = try ip.getOrPutString(zcu.gpa, pt.tid, "StackTrace", .no_embedded_nulls);
2681 // buffer is only used for int_type, `builtin` is a struct.
2682 const builtin_ty = zcu.navValue(builtin_nav).toType();
2683 const builtin_namespace = zcu.namespacePtr(builtin_ty.getNamespaceIndex(zcu));
2684 const stack_trace_nav = builtin_namespace.pub_decls.getKeyAdapted(stack_trace_str, Zcu.Namespace.NameAdapter{ .zcu = zcu }).?;
2685
2686 // Sema should have ensured that StackTrace was analyzed.
2687 return zcu.navValue(stack_trace_nav).toType();
2688 }
2689
2690 fn allocTypeName(o: *Object, ty: Type) Allocator.Error![:0]const u8 {
2661 fn allocTypeName(o: *Object, pt: Zcu.PerThread, ty: Type) Allocator.Error![:0]const u8 {
26912662 var aw: std.io.Writer.Allocating = .init(o.gpa);
26922663 defer aw.deinit();
2693 ty.print(&aw.writer, o.pt) catch |err| switch (err) {
2664 ty.print(&aw.writer, pt) catch |err| switch (err) {
26942665 error.WriteFailed => return error.OutOfMemory,
26952666 };
26962667 return aw.toOwnedSliceSentinel(0);
......@@ -2701,9 +2672,9 @@ pub const Object = struct {
27012672 /// completed, so if any attributes rely on that, they must be done in updateFunc, not here.
27022673 fn resolveLlvmFunction(
27032674 o: *Object,
2675 pt: Zcu.PerThread,
27042676 nav_index: InternPool.Nav.Index,
27052677 ) Allocator.Error!Builder.Function.Index {
2706 const pt = o.pt;
27072678 const zcu = pt.zcu;
27082679 const ip = &zcu.intern_pool;
27092680 const gpa = o.gpa;
......@@ -2722,7 +2693,7 @@ pub const Object = struct {
27222693 else
27232694 .{ false, .none };
27242695 const function_index = try o.builder.addFunction(
2725 try o.lowerType(ty),
2696 try o.lowerType(pt, ty),
27262697 try o.builder.strtabString((if (is_extern) nav.name else nav.fqn).toSlice(ip)),
27272698 toLlvmAddressSpace(nav.getAddrspace(), target),
27282699 );
......@@ -2755,7 +2726,7 @@ pub const Object = struct {
27552726 try attributes.addParamAttr(llvm_arg_i, .nonnull, &o.builder);
27562727 try attributes.addParamAttr(llvm_arg_i, .@"noalias", &o.builder);
27572728
2758 const raw_llvm_ret_ty = try o.lowerType(Type.fromInterned(fn_info.return_type));
2729 const raw_llvm_ret_ty = try o.lowerType(pt, Type.fromInterned(fn_info.return_type));
27592730 try attributes.addParamAttr(llvm_arg_i, .{ .sret = raw_llvm_ret_ty }, &o.builder);
27602731
27612732 llvm_arg_i += 1;
......@@ -2862,19 +2833,19 @@ pub const Object = struct {
28622833 // Add parameter attributes. We handle only the case of extern functions (no body)
28632834 // because functions with bodies are handled in `updateFunc`.
28642835 if (is_extern) {
2865 var it = iterateParamTypes(o, fn_info);
2836 var it = iterateParamTypes(o, pt, fn_info);
28662837 it.llvm_index = llvm_arg_i;
28672838 while (try it.next()) |lowering| switch (lowering) {
28682839 .byval => {
28692840 const param_index = it.zig_index - 1;
28702841 const param_ty = Type.fromInterned(fn_info.param_types.get(ip)[param_index]);
28712842 if (!isByRef(param_ty, zcu)) {
2872 try o.addByValParamAttrs(&attributes, param_ty, param_index, fn_info, it.llvm_index - 1);
2843 try o.addByValParamAttrs(pt, &attributes, param_ty, param_index, fn_info, it.llvm_index - 1);
28732844 }
28742845 },
28752846 .byref => {
28762847 const param_ty = Type.fromInterned(fn_info.param_types.get(ip)[it.zig_index - 1]);
2877 const param_llvm_ty = try o.lowerType(param_ty);
2848 const param_llvm_ty = try o.lowerType(pt, param_ty);
28782849 const alignment = param_ty.abiAlignment(zcu);
28792850 try o.addByRefParamAttrs(&attributes, it.llvm_index - 1, alignment.toLlvm(), it.byval_attr, param_llvm_ty);
28802851 },
......@@ -2969,6 +2940,7 @@ pub const Object = struct {
29692940
29702941 fn resolveGlobalUav(
29712942 o: *Object,
2943 pt: Zcu.PerThread,
29722944 uav: InternPool.Index,
29732945 llvm_addr_space: Builder.AddrSpace,
29742946 alignment: InternPool.Alignment,
......@@ -2986,17 +2958,17 @@ pub const Object = struct {
29862958 }
29872959 errdefer assert(o.uav_map.remove(uav));
29882960
2989 const zcu = o.pt.zcu;
2961 const zcu = pt.zcu;
29902962 const decl_ty = zcu.intern_pool.typeOf(uav);
29912963
29922964 const variable_index = try o.builder.addVariable(
29932965 try o.builder.strtabStringFmt("__anon_{d}", .{@intFromEnum(uav)}),
2994 try o.lowerType(Type.fromInterned(decl_ty)),
2966 try o.lowerType(pt, Type.fromInterned(decl_ty)),
29952967 llvm_addr_space,
29962968 );
29972969 gop.value_ptr.* = variable_index.ptrConst(&o.builder).global;
29982970
2999 try variable_index.setInitializer(try o.lowerValue(uav), &o.builder);
2971 try variable_index.setInitializer(try o.lowerValue(pt, uav), &o.builder);
30002972 variable_index.setLinkage(.internal, &o.builder);
30012973 variable_index.setMutability(.constant, &o.builder);
30022974 variable_index.setUnnamedAddr(.unnamed_addr, &o.builder);
......@@ -3006,13 +2978,13 @@ pub const Object = struct {
30062978
30072979 fn resolveGlobalNav(
30082980 o: *Object,
2981 pt: Zcu.PerThread,
30092982 nav_index: InternPool.Nav.Index,
30102983 ) Allocator.Error!Builder.Variable.Index {
30112984 const gop = try o.nav_map.getOrPut(o.gpa, nav_index);
30122985 if (gop.found_existing) return gop.value_ptr.ptr(&o.builder).kind.variable;
30132986 errdefer assert(o.nav_map.remove(nav_index));
30142987
3015 const pt = o.pt;
30162988 const zcu = pt.zcu;
30172989 const ip = &zcu.intern_pool;
30182990 const nav = ip.getNav(nav_index);
......@@ -3033,7 +3005,7 @@ pub const Object = struct {
30333005 .strong, .weak => nav.name,
30343006 .link_once => unreachable,
30353007 }.toSlice(ip)),
3036 try o.lowerType(Type.fromInterned(nav.typeOf(ip))),
3008 try o.lowerType(pt, Type.fromInterned(nav.typeOf(ip))),
30373009 toLlvmGlobalAddressSpace(nav.getAddrspace(), zcu.getTarget()),
30383010 );
30393011 gop.value_ptr.* = variable_index.ptrConst(&o.builder).global;
......@@ -3062,12 +3034,11 @@ pub const Object = struct {
30623034 return variable_index;
30633035 }
30643036
3065 fn errorIntType(o: *Object) Allocator.Error!Builder.Type {
3066 return o.builder.intType(o.pt.zcu.errorSetBits());
3037 fn errorIntType(o: *Object, pt: Zcu.PerThread) Allocator.Error!Builder.Type {
3038 return o.builder.intType(pt.zcu.errorSetBits());
30673039 }
30683040
3069 fn lowerType(o: *Object, t: Type) Allocator.Error!Builder.Type {
3070 const pt = o.pt;
3041 fn lowerType(o: *Object, pt: Zcu.PerThread, t: Type) Allocator.Error!Builder.Type {
30713042 const zcu = pt.zcu;
30723043 const target = zcu.getTarget();
30733044 const ip = &zcu.intern_pool;
......@@ -3123,7 +3094,7 @@ pub const Object = struct {
31233094 .bool_type => .i1,
31243095 .void_type => .void,
31253096 .type_type => unreachable,
3126 .anyerror_type => try o.errorIntType(),
3097 .anyerror_type => try o.errorIntType(pt),
31273098 .comptime_int_type,
31283099 .comptime_float_type,
31293100 .noreturn_type,
......@@ -3141,11 +3112,11 @@ pub const Object = struct {
31413112 => .ptr,
31423113 .slice_const_u8_type,
31433114 .slice_const_u8_sentinel_0_type,
3144 => try o.builder.structType(.normal, &.{ .ptr, try o.lowerType(Type.usize) }),
3115 => try o.builder.structType(.normal, &.{ .ptr, try o.lowerType(pt, Type.usize) }),
31453116 .optional_noreturn_type => unreachable,
31463117 .anyerror_void_error_union_type,
31473118 .adhoc_inferred_error_set_type,
3148 => try o.errorIntType(),
3119 => try o.errorIntType(pt),
31493120 .generic_poison_type,
31503121 .empty_tuple_type,
31513122 => unreachable,
......@@ -3182,24 +3153,24 @@ pub const Object = struct {
31823153 .one, .many, .c => ptr_ty,
31833154 .slice => try o.builder.structType(.normal, &.{
31843155 ptr_ty,
3185 try o.lowerType(Type.usize),
3156 try o.lowerType(pt, Type.usize),
31863157 }),
31873158 };
31883159 },
31893160 .array_type => |array_type| o.builder.arrayType(
31903161 array_type.lenIncludingSentinel(),
3191 try o.lowerType(Type.fromInterned(array_type.child)),
3162 try o.lowerType(pt, Type.fromInterned(array_type.child)),
31923163 ),
31933164 .vector_type => |vector_type| o.builder.vectorType(
31943165 .normal,
31953166 vector_type.len,
3196 try o.lowerType(Type.fromInterned(vector_type.child)),
3167 try o.lowerType(pt, Type.fromInterned(vector_type.child)),
31973168 ),
31983169 .opt_type => |child_ty| {
31993170 // Must stay in sync with `opt_payload` logic in `lowerPtr`.
32003171 if (!Type.fromInterned(child_ty).hasRuntimeBitsIgnoreComptime(zcu)) return .i8;
32013172
3202 const payload_ty = try o.lowerType(Type.fromInterned(child_ty));
3173 const payload_ty = try o.lowerType(pt, Type.fromInterned(child_ty));
32033174 if (t.optionalReprIsPayload(zcu)) return payload_ty;
32043175
32053176 comptime assert(optional_layout_version == 3);
......@@ -3218,17 +3189,16 @@ pub const Object = struct {
32183189 .error_union_type => |error_union_type| {
32193190 // Must stay in sync with `codegen.errUnionPayloadOffset`.
32203191 // See logic in `lowerPtr`.
3221 const error_type = try o.errorIntType();
3192 const error_type = try o.errorIntType(pt);
32223193 if (!Type.fromInterned(error_union_type.payload_type).hasRuntimeBitsIgnoreComptime(zcu))
32233194 return error_type;
3224 const payload_type = try o.lowerType(Type.fromInterned(error_union_type.payload_type));
3225 const err_int_ty = try o.pt.errorIntType();
3195 const payload_type = try o.lowerType(pt, Type.fromInterned(error_union_type.payload_type));
32263196
32273197 const payload_align = Type.fromInterned(error_union_type.payload_type).abiAlignment(zcu);
3228 const error_align = err_int_ty.abiAlignment(zcu);
3198 const error_align: InternPool.Alignment = .fromByteUnits(std.zig.target.intAlignment(target, zcu.errorSetBits()));
32293199
32303200 const payload_size = Type.fromInterned(error_union_type.payload_type).abiSize(zcu);
3231 const error_size = err_int_ty.abiSize(zcu);
3201 const error_size = std.zig.target.intByteSize(target, zcu.errorSetBits());
32323202
32333203 var fields: [3]Builder.Type = undefined;
32343204 var fields_len: usize = 2;
......@@ -3262,7 +3232,7 @@ pub const Object = struct {
32623232 const struct_type = ip.loadStructType(t.toIntern());
32633233
32643234 if (struct_type.layout == .@"packed") {
3265 const int_ty = try o.lowerType(Type.fromInterned(struct_type.backingIntTypeUnordered(ip)));
3235 const int_ty = try o.lowerType(pt, Type.fromInterned(struct_type.backingIntTypeUnordered(ip)));
32663236 try o.type_map.put(o.gpa, t.toIntern(), int_ty);
32673237 return int_ty;
32683238 }
......@@ -3312,7 +3282,7 @@ pub const Object = struct {
33123282 .struct_ty = t.toIntern(),
33133283 .field_index = field_index,
33143284 }, @intCast(llvm_field_types.items.len));
3315 try llvm_field_types.append(o.gpa, try o.lowerType(field_ty));
3285 try llvm_field_types.append(o.gpa, try o.lowerType(pt, field_ty));
33163286
33173287 offset += field_ty.abiSize(zcu);
33183288 }
......@@ -3382,7 +3352,7 @@ pub const Object = struct {
33823352 .struct_ty = t.toIntern(),
33833353 .field_index = @intCast(field_index),
33843354 }, @intCast(llvm_field_types.items.len));
3385 try llvm_field_types.append(o.gpa, try o.lowerType(Type.fromInterned(field_ty)));
3355 try llvm_field_types.append(o.gpa, try o.lowerType(pt, Type.fromInterned(field_ty)));
33863356
33873357 offset += Type.fromInterned(field_ty).abiSize(zcu);
33883358 }
......@@ -3410,13 +3380,13 @@ pub const Object = struct {
34103380 }
34113381
34123382 if (layout.payload_size == 0) {
3413 const enum_tag_ty = try o.lowerType(Type.fromInterned(union_obj.enum_tag_ty));
3383 const enum_tag_ty = try o.lowerType(pt, Type.fromInterned(union_obj.enum_tag_ty));
34143384 try o.type_map.put(o.gpa, t.toIntern(), enum_tag_ty);
34153385 return enum_tag_ty;
34163386 }
34173387
34183388 const aligned_field_ty = Type.fromInterned(union_obj.field_types.get(ip)[layout.most_aligned_field]);
3419 const aligned_field_llvm_ty = try o.lowerType(aligned_field_ty);
3389 const aligned_field_llvm_ty = try o.lowerType(pt, aligned_field_ty);
34203390
34213391 const payload_ty = ty: {
34223392 if (layout.most_aligned_field_size == layout.payload_size) {
......@@ -3442,7 +3412,7 @@ pub const Object = struct {
34423412 );
34433413 return ty;
34443414 }
3445 const enum_tag_ty = try o.lowerType(Type.fromInterned(union_obj.enum_tag_ty));
3415 const enum_tag_ty = try o.lowerType(pt, Type.fromInterned(union_obj.enum_tag_ty));
34463416
34473417 // Put the tag before or after the payload depending on which one's
34483418 // alignment is greater.
......@@ -3477,9 +3447,9 @@ pub const Object = struct {
34773447 }
34783448 return gop.value_ptr.*;
34793449 },
3480 .enum_type => try o.lowerType(Type.fromInterned(ip.loadEnumType(t.toIntern()).tag_ty)),
3481 .func_type => |func_type| try o.lowerTypeFn(func_type),
3482 .error_set_type, .inferred_error_set_type => try o.errorIntType(),
3450 .enum_type => try o.lowerType(pt, Type.fromInterned(ip.loadEnumType(t.toIntern()).tag_ty)),
3451 .func_type => |func_type| try o.lowerTypeFn(pt, func_type),
3452 .error_set_type, .inferred_error_set_type => try o.errorIntType(pt),
34833453 // values, not types
34843454 .undef,
34853455 .simple_value,
......@@ -3508,8 +3478,7 @@ pub const Object = struct {
35083478 /// Use this instead of lowerType when you want to handle correctly the case of elem_ty
35093479 /// being a zero bit type, but it should still be lowered as an i8 in such case.
35103480 /// There are other similar cases handled here as well.
3511 fn lowerPtrElemTy(o: *Object, elem_ty: Type) Allocator.Error!Builder.Type {
3512 const pt = o.pt;
3481 fn lowerPtrElemTy(o: *Object, pt: Zcu.PerThread, elem_ty: Type) Allocator.Error!Builder.Type {
35133482 const zcu = pt.zcu;
35143483 const lower_elem_ty = switch (elem_ty.zigTypeTag(zcu)) {
35153484 .@"opaque" => true,
......@@ -3517,15 +3486,14 @@ pub const Object = struct {
35173486 .array => elem_ty.childType(zcu).hasRuntimeBitsIgnoreComptime(zcu),
35183487 else => elem_ty.hasRuntimeBitsIgnoreComptime(zcu),
35193488 };
3520 return if (lower_elem_ty) try o.lowerType(elem_ty) else .i8;
3489 return if (lower_elem_ty) try o.lowerType(pt, elem_ty) else .i8;
35213490 }
35223491
3523 fn lowerTypeFn(o: *Object, fn_info: InternPool.Key.FuncType) Allocator.Error!Builder.Type {
3524 const pt = o.pt;
3492 fn lowerTypeFn(o: *Object, pt: Zcu.PerThread, fn_info: InternPool.Key.FuncType) Allocator.Error!Builder.Type {
35253493 const zcu = pt.zcu;
35263494 const ip = &zcu.intern_pool;
35273495 const target = zcu.getTarget();
3528 const ret_ty = try lowerFnRetTy(o, fn_info);
3496 const ret_ty = try lowerFnRetTy(o, pt, fn_info);
35293497
35303498 var llvm_params: std.ArrayListUnmanaged(Builder.Type) = .empty;
35313499 defer llvm_params.deinit(o.gpa);
......@@ -3535,16 +3503,17 @@ pub const Object = struct {
35353503 }
35363504
35373505 if (fn_info.cc == .auto and zcu.comp.config.any_error_tracing) {
3538 const ptr_ty = try pt.singleMutPtrType(try o.getStackTraceType());
3539 try llvm_params.append(o.gpa, try o.lowerType(ptr_ty));
3506 const stack_trace_ty = zcu.builtin_decl_values.get(.StackTrace);
3507 const ptr_ty = try pt.ptrType(.{ .child = stack_trace_ty });
3508 try llvm_params.append(o.gpa, try o.lowerType(pt, ptr_ty));
35403509 }
35413510
3542 var it = iterateParamTypes(o, fn_info);
3511 var it = iterateParamTypes(o, pt, fn_info);
35433512 while (try it.next()) |lowering| switch (lowering) {
35443513 .no_bits => continue,
35453514 .byval => {
35463515 const param_ty = Type.fromInterned(fn_info.param_types.get(ip)[it.zig_index - 1]);
3547 try llvm_params.append(o.gpa, try o.lowerType(param_ty));
3516 try llvm_params.append(o.gpa, try o.lowerType(pt, param_ty));
35483517 },
35493518 .byref, .byref_mut => {
35503519 try llvm_params.append(o.gpa, .ptr);
......@@ -3559,7 +3528,7 @@ pub const Object = struct {
35593528 const param_ty = Type.fromInterned(fn_info.param_types.get(ip)[it.zig_index - 1]);
35603529 try llvm_params.appendSlice(o.gpa, &.{
35613530 try o.builder.ptrType(toLlvmAddressSpace(param_ty.ptrAddressSpace(zcu), target)),
3562 try o.lowerType(Type.usize),
3531 try o.lowerType(pt, Type.usize),
35633532 });
35643533 },
35653534 .multiple_llvm_types => {
......@@ -3567,7 +3536,7 @@ pub const Object = struct {
35673536 },
35683537 .float_array => |count| {
35693538 const param_ty = Type.fromInterned(fn_info.param_types.get(ip)[it.zig_index - 1]);
3570 const float_ty = try o.lowerType(aarch64_c_abi.getFloatArrayType(param_ty, zcu).?);
3539 const float_ty = try o.lowerType(pt, aarch64_c_abi.getFloatArrayType(param_ty, zcu).?);
35713540 try llvm_params.append(o.gpa, try o.builder.arrayType(count, float_ty));
35723541 },
35733542 .i32_array, .i64_array => |arr_len| {
......@@ -3586,8 +3555,7 @@ pub const Object = struct {
35863555 );
35873556 }
35883557
3589 fn lowerValueToInt(o: *Object, llvm_int_ty: Builder.Type, arg_val: InternPool.Index) Error!Builder.Constant {
3590 const pt = o.pt;
3558 fn lowerValueToInt(o: *Object, pt: Zcu.PerThread, llvm_int_ty: Builder.Type, arg_val: InternPool.Index) Error!Builder.Constant {
35913559 const zcu = pt.zcu;
35923560 const ip = &zcu.intern_pool;
35933561 const target = zcu.getTarget();
......@@ -3600,23 +3568,23 @@ pub const Object = struct {
36003568 const ty = Type.fromInterned(val_key.typeOf());
36013569 switch (val_key) {
36023570 .@"extern" => |@"extern"| {
3603 const function_index = try o.resolveLlvmFunction(@"extern".owner_nav);
3571 const function_index = try o.resolveLlvmFunction(pt, @"extern".owner_nav);
36043572 const ptr = function_index.ptrConst(&o.builder).global.toConst();
36053573 return o.builder.convConst(ptr, llvm_int_ty);
36063574 },
36073575 .func => |func| {
3608 const function_index = try o.resolveLlvmFunction(func.owner_nav);
3576 const function_index = try o.resolveLlvmFunction(pt, func.owner_nav);
36093577 const ptr = function_index.ptrConst(&o.builder).global.toConst();
36103578 return o.builder.convConst(ptr, llvm_int_ty);
36113579 },
3612 .ptr => return o.builder.convConst(try o.lowerPtr(arg_val, 0), llvm_int_ty),
3580 .ptr => return o.builder.convConst(try o.lowerPtr(pt, arg_val, 0), llvm_int_ty),
36133581 .aggregate => switch (ip.indexToKey(ty.toIntern())) {
36143582 .struct_type, .vector_type => {},
36153583 else => unreachable,
36163584 },
36173585 .un => |un| {
36183586 const layout = ty.unionGetLayout(zcu);
3619 if (layout.payload_size == 0) return o.lowerValue(un.tag);
3587 if (layout.payload_size == 0) return o.lowerValue(pt, un.tag);
36203588
36213589 const union_obj = zcu.typeToUnion(ty).?;
36223590 const container_layout = union_obj.flagsUnordered(ip).layout;
......@@ -3626,7 +3594,7 @@ pub const Object = struct {
36263594 var need_unnamed = false;
36273595 if (un.tag == .none) {
36283596 assert(layout.tag_size == 0);
3629 const union_val = try o.lowerValueToInt(llvm_int_ty, un.val);
3597 const union_val = try o.lowerValueToInt(pt, llvm_int_ty, un.val);
36303598
36313599 need_unnamed = true;
36323600 return union_val;
......@@ -3634,7 +3602,7 @@ pub const Object = struct {
36343602 const field_index = zcu.unionTagFieldIndex(union_obj, Value.fromInterned(un.tag)).?;
36353603 const field_ty = Type.fromInterned(union_obj.field_types.get(ip)[field_index]);
36363604 if (!field_ty.hasRuntimeBits(zcu)) return o.builder.intConst(llvm_int_ty, 0);
3637 return o.lowerValueToInt(llvm_int_ty, un.val);
3605 return o.lowerValueToInt(pt, llvm_int_ty, un.val);
36383606 },
36393607 .simple_value => |simple_value| switch (simple_value) {
36403608 .false, .true => {},
......@@ -3678,8 +3646,7 @@ pub const Object = struct {
36783646 });
36793647 }
36803648
3681 fn lowerValue(o: *Object, arg_val: InternPool.Index) Error!Builder.Constant {
3682 const pt = o.pt;
3649 fn lowerValue(o: *Object, pt: Zcu.PerThread, arg_val: InternPool.Index) Error!Builder.Constant {
36833650 const zcu = pt.zcu;
36843651 const ip = &zcu.intern_pool;
36853652 const target = zcu.getTarget();
......@@ -3688,7 +3655,7 @@ pub const Object = struct {
36883655 const val_key = ip.indexToKey(val.toIntern());
36893656
36903657 if (val.isUndefDeep(zcu)) {
3691 return o.builder.undefConst(try o.lowerType(Type.fromInterned(val_key.typeOf())));
3658 return o.builder.undefConst(try o.lowerType(pt, Type.fromInterned(val_key.typeOf())));
36923659 }
36933660
36943661 const ty = Type.fromInterned(val_key.typeOf());
......@@ -3727,21 +3694,21 @@ pub const Object = struct {
37273694 .empty_enum_value,
37283695 => unreachable, // non-runtime values
37293696 .@"extern" => |@"extern"| {
3730 const function_index = try o.resolveLlvmFunction(@"extern".owner_nav);
3697 const function_index = try o.resolveLlvmFunction(pt, @"extern".owner_nav);
37313698 return function_index.ptrConst(&o.builder).global.toConst();
37323699 },
37333700 .func => |func| {
3734 const function_index = try o.resolveLlvmFunction(func.owner_nav);
3701 const function_index = try o.resolveLlvmFunction(pt, func.owner_nav);
37353702 return function_index.ptrConst(&o.builder).global.toConst();
37363703 },
37373704 .int => {
37383705 var bigint_space: Value.BigIntSpace = undefined;
37393706 const bigint = val.toBigInt(&bigint_space, zcu);
3740 return lowerBigInt(o, ty, bigint);
3707 return lowerBigInt(o, pt, ty, bigint);
37413708 },
37423709 .err => |err| {
37433710 const int = try pt.getErrorValue(err.name);
3744 const llvm_int = try o.builder.intConst(try o.errorIntType(), int);
3711 const llvm_int = try o.builder.intConst(try o.errorIntType(pt), int);
37453712 return llvm_int;
37463713 },
37473714 .error_union => |error_union| {
......@@ -3756,13 +3723,13 @@ pub const Object = struct {
37563723 const payload_type = ty.errorUnionPayload(zcu);
37573724 if (!payload_type.hasRuntimeBitsIgnoreComptime(zcu)) {
37583725 // We use the error type directly as the type.
3759 return o.lowerValue(err_val);
3726 return o.lowerValue(pt, err_val);
37603727 }
37613728
37623729 const payload_align = payload_type.abiAlignment(zcu);
37633730 const error_align = err_int_ty.abiAlignment(zcu);
3764 const llvm_error_value = try o.lowerValue(err_val);
3765 const llvm_payload_value = try o.lowerValue(switch (error_union.val) {
3731 const llvm_error_value = try o.lowerValue(pt, err_val);
3732 const llvm_payload_value = try o.lowerValue(pt, switch (error_union.val) {
37663733 .err_name => try pt.intern(.{ .undef = payload_type.toIntern() }),
37673734 .payload => |payload| payload,
37683735 });
......@@ -3779,7 +3746,7 @@ pub const Object = struct {
37793746 fields[0] = vals[0].typeOf(&o.builder);
37803747 fields[1] = vals[1].typeOf(&o.builder);
37813748
3782 const llvm_ty = try o.lowerType(ty);
3749 const llvm_ty = try o.lowerType(pt, ty);
37833750 const llvm_ty_fields = llvm_ty.structFields(&o.builder);
37843751 if (llvm_ty_fields.len > 2) {
37853752 assert(llvm_ty_fields.len == 3);
......@@ -3791,7 +3758,7 @@ pub const Object = struct {
37913758 fields[0..llvm_ty_fields.len],
37923759 ), vals[0..llvm_ty_fields.len]);
37933760 },
3794 .enum_tag => |enum_tag| o.lowerValue(enum_tag.int),
3761 .enum_tag => |enum_tag| o.lowerValue(pt, enum_tag.int),
37953762 .float => switch (ty.floatBits(target)) {
37963763 16 => if (backendSupportsF16(target))
37973764 try o.builder.halfConst(val.toFloat(f16, zcu))
......@@ -3806,10 +3773,10 @@ pub const Object = struct {
38063773 128 => try o.builder.fp128Const(val.toFloat(f128, zcu)),
38073774 else => unreachable,
38083775 },
3809 .ptr => try o.lowerPtr(arg_val, 0),
3810 .slice => |slice| return o.builder.structConst(try o.lowerType(ty), &.{
3811 try o.lowerValue(slice.ptr),
3812 try o.lowerValue(slice.len),
3776 .ptr => try o.lowerPtr(pt, arg_val, 0),
3777 .slice => |slice| return o.builder.structConst(try o.lowerType(pt, ty), &.{
3778 try o.lowerValue(pt, slice.ptr),
3779 try o.lowerValue(pt, slice.len),
38133780 }),
38143781 .opt => |opt| {
38153782 comptime assert(optional_layout_version == 3);
......@@ -3819,7 +3786,7 @@ pub const Object = struct {
38193786 if (!payload_ty.hasRuntimeBitsIgnoreComptime(zcu)) {
38203787 return non_null_bit;
38213788 }
3822 const llvm_ty = try o.lowerType(ty);
3789 const llvm_ty = try o.lowerType(pt, ty);
38233790 if (ty.optionalReprIsPayload(zcu)) return switch (opt.val) {
38243791 .none => switch (llvm_ty.tag(&o.builder)) {
38253792 .integer => try o.builder.intConst(llvm_ty, 0),
......@@ -3827,13 +3794,13 @@ pub const Object = struct {
38273794 .structure => try o.builder.zeroInitConst(llvm_ty),
38283795 else => unreachable,
38293796 },
3830 else => |payload| try o.lowerValue(payload),
3797 else => |payload| try o.lowerValue(pt, payload),
38313798 };
38323799 assert(payload_ty.zigTypeTag(zcu) != .@"fn");
38333800
38343801 var fields: [3]Builder.Type = undefined;
38353802 var vals: [3]Builder.Constant = undefined;
3836 vals[0] = try o.lowerValue(switch (opt.val) {
3803 vals[0] = try o.lowerValue(pt, switch (opt.val) {
38373804 .none => try pt.intern(.{ .undef = payload_ty.toIntern() }),
38383805 else => |payload| payload,
38393806 });
......@@ -3858,7 +3825,7 @@ pub const Object = struct {
38583825 bytes.toSlice(array_type.lenIncludingSentinel(), ip),
38593826 )),
38603827 .elems => |elems| {
3861 const array_ty = try o.lowerType(ty);
3828 const array_ty = try o.lowerType(pt, ty);
38623829 const elem_ty = array_ty.childType(&o.builder);
38633830 assert(elems.len == array_ty.aggregateLen(&o.builder));
38643831
......@@ -3878,7 +3845,7 @@ pub const Object = struct {
38783845
38793846 var need_unnamed = false;
38803847 for (vals, fields, elems) |*result_val, *result_field, elem| {
3881 result_val.* = try o.lowerValue(elem);
3848 result_val.* = try o.lowerValue(pt, elem);
38823849 result_field.* = result_val.typeOf(&o.builder);
38833850 if (result_field.* != elem_ty) need_unnamed = true;
38843851 }
......@@ -3890,7 +3857,7 @@ pub const Object = struct {
38903857 .repeated_elem => |elem| {
38913858 const len: usize = @intCast(array_type.len);
38923859 const len_including_sentinel: usize = @intCast(array_type.lenIncludingSentinel());
3893 const array_ty = try o.lowerType(ty);
3860 const array_ty = try o.lowerType(pt, ty);
38943861 const elem_ty = array_ty.childType(&o.builder);
38953862
38963863 const ExpectedContents = extern struct {
......@@ -3908,12 +3875,12 @@ pub const Object = struct {
39083875 defer allocator.free(fields);
39093876
39103877 var need_unnamed = false;
3911 @memset(vals[0..len], try o.lowerValue(elem));
3878 @memset(vals[0..len], try o.lowerValue(pt, elem));
39123879 @memset(fields[0..len], vals[0].typeOf(&o.builder));
39133880 if (fields[0] != elem_ty) need_unnamed = true;
39143881
39153882 if (array_type.sentinel != .none) {
3916 vals[len] = try o.lowerValue(array_type.sentinel);
3883 vals[len] = try o.lowerValue(pt, array_type.sentinel);
39173884 fields[len] = vals[len].typeOf(&o.builder);
39183885 if (fields[len] != elem_ty) need_unnamed = true;
39193886 }
......@@ -3925,7 +3892,7 @@ pub const Object = struct {
39253892 },
39263893 },
39273894 .vector_type => |vector_type| {
3928 const vector_ty = try o.lowerType(ty);
3895 const vector_ty = try o.lowerType(pt, ty);
39293896 switch (aggregate.storage) {
39303897 .bytes, .elems => {
39313898 const ExpectedContents = [Builder.expected_fields_len]Builder.Constant;
......@@ -3942,7 +3909,7 @@ pub const Object = struct {
39423909 result_val.* = try o.builder.intConst(.i8, byte);
39433910 },
39443911 .elems => |elems| for (vals, elems) |*result_val, elem| {
3945 result_val.* = try o.lowerValue(elem);
3912 result_val.* = try o.lowerValue(pt, elem);
39463913 },
39473914 .repeated_elem => unreachable,
39483915 }
......@@ -3950,12 +3917,12 @@ pub const Object = struct {
39503917 },
39513918 .repeated_elem => |elem| return o.builder.splatConst(
39523919 vector_ty,
3953 try o.lowerValue(elem),
3920 try o.lowerValue(pt, elem),
39543921 ),
39553922 }
39563923 },
39573924 .tuple_type => |tuple| {
3958 const struct_ty = try o.lowerType(ty);
3925 const struct_ty = try o.lowerType(pt, ty);
39593926 const llvm_len = struct_ty.aggregateLen(&o.builder);
39603927
39613928 const ExpectedContents = extern struct {
......@@ -4001,7 +3968,7 @@ pub const Object = struct {
40013968 }
40023969
40033970 vals[llvm_index] =
4004 try o.lowerValue((try val.fieldValue(pt, field_index)).toIntern());
3971 try o.lowerValue(pt, (try val.fieldValue(pt, field_index)).toIntern());
40053972 fields[llvm_index] = vals[llvm_index].typeOf(&o.builder);
40063973 if (fields[llvm_index] != struct_ty.structFields(&o.builder)[llvm_index])
40073974 need_unnamed = true;
......@@ -4030,14 +3997,14 @@ pub const Object = struct {
40303997 .struct_type => {
40313998 const struct_type = ip.loadStructType(ty.toIntern());
40323999 assert(struct_type.haveLayout(ip));
4033 const struct_ty = try o.lowerType(ty);
4000 const struct_ty = try o.lowerType(pt, ty);
40344001 if (struct_type.layout == .@"packed") {
40354002 comptime assert(Type.packed_struct_layout_version == 2);
40364003
40374004 const bits = ty.bitSize(zcu);
40384005 const llvm_int_ty = try o.builder.intType(@intCast(bits));
40394006
4040 return o.lowerValueToInt(llvm_int_ty, arg_val);
4007 return o.lowerValueToInt(pt, llvm_int_ty, arg_val);
40414008 }
40424009 const llvm_len = struct_ty.aggregateLen(&o.builder);
40434010
......@@ -4085,6 +4052,7 @@ pub const Object = struct {
40854052 }
40864053
40874054 vals[llvm_index] = try o.lowerValue(
4055 pt,
40884056 (try val.fieldValue(pt, field_index)).toIntern(),
40894057 );
40904058 fields[llvm_index] = vals[llvm_index].typeOf(&o.builder);
......@@ -4115,9 +4083,9 @@ pub const Object = struct {
41154083 else => unreachable,
41164084 },
41174085 .un => |un| {
4118 const union_ty = try o.lowerType(ty);
4086 const union_ty = try o.lowerType(pt, ty);
41194087 const layout = ty.unionGetLayout(zcu);
4120 if (layout.payload_size == 0) return o.lowerValue(un.tag);
4088 if (layout.payload_size == 0) return o.lowerValue(pt, un.tag);
41214089
41224090 const union_obj = zcu.typeToUnion(ty).?;
41234091 const container_layout = union_obj.flagsUnordered(ip).layout;
......@@ -4131,7 +4099,7 @@ pub const Object = struct {
41314099 const bits = ty.bitSize(zcu);
41324100 const llvm_int_ty = try o.builder.intType(@intCast(bits));
41334101
4134 return o.lowerValueToInt(llvm_int_ty, arg_val);
4102 return o.lowerValueToInt(pt, llvm_int_ty, arg_val);
41354103 }
41364104
41374105 // Sometimes we must make an unnamed struct because LLVM does
......@@ -4144,7 +4112,7 @@ pub const Object = struct {
41444112 const padding_len = layout.payload_size;
41454113 break :p try o.builder.undefConst(try o.builder.arrayType(padding_len, .i8));
41464114 }
4147 const payload = try o.lowerValue(un.val);
4115 const payload = try o.lowerValue(pt, un.val);
41484116 const payload_ty = payload.typeOf(&o.builder);
41494117 if (payload_ty != union_ty.structFields(&o.builder)[
41504118 @intFromBool(layout.tag_align.compare(.gte, layout.payload_align))
......@@ -4163,10 +4131,10 @@ pub const Object = struct {
41634131 const bits = ty.bitSize(zcu);
41644132 const llvm_int_ty = try o.builder.intType(@intCast(bits));
41654133
4166 return o.lowerValueToInt(llvm_int_ty, arg_val);
4134 return o.lowerValueToInt(pt, llvm_int_ty, arg_val);
41674135 }
41684136
4169 const union_val = try o.lowerValue(un.val);
4137 const union_val = try o.lowerValue(pt, un.val);
41704138 need_unnamed = true;
41714139 break :p union_val;
41724140 };
......@@ -4176,7 +4144,7 @@ pub const Object = struct {
41764144 try o.builder.structType(union_ty.structKind(&o.builder), &.{payload_ty})
41774145 else
41784146 union_ty, &.{payload});
4179 const tag = try o.lowerValue(un.tag);
4147 const tag = try o.lowerValue(pt, un.tag);
41804148 const tag_ty = tag.typeOf(&o.builder);
41814149 var fields: [3]Builder.Type = undefined;
41824150 var vals: [3]Builder.Constant = undefined;
......@@ -4204,48 +4172,50 @@ pub const Object = struct {
42044172
42054173 fn lowerBigInt(
42064174 o: *Object,
4175 pt: Zcu.PerThread,
42074176 ty: Type,
42084177 bigint: std.math.big.int.Const,
42094178 ) Allocator.Error!Builder.Constant {
4210 const zcu = o.pt.zcu;
4179 const zcu = pt.zcu;
42114180 return o.builder.bigIntConst(try o.builder.intType(ty.intInfo(zcu).bits), bigint);
42124181 }
42134182
42144183 fn lowerPtr(
42154184 o: *Object,
4185 pt: Zcu.PerThread,
42164186 ptr_val: InternPool.Index,
42174187 prev_offset: u64,
42184188 ) Error!Builder.Constant {
4219 const pt = o.pt;
42204189 const zcu = pt.zcu;
42214190 const ptr = zcu.intern_pool.indexToKey(ptr_val).ptr;
42224191 const offset: u64 = prev_offset + ptr.byte_offset;
42234192 return switch (ptr.base_addr) {
42244193 .nav => |nav| {
4225 const base_ptr = try o.lowerNavRefValue(nav);
4194 const base_ptr = try o.lowerNavRefValue(pt, nav);
42264195 return o.builder.gepConst(.inbounds, .i8, base_ptr, null, &.{
42274196 try o.builder.intConst(.i64, offset),
42284197 });
42294198 },
42304199 .uav => |uav| {
4231 const base_ptr = try o.lowerUavRef(uav);
4200 const base_ptr = try o.lowerUavRef(pt, uav);
42324201 return o.builder.gepConst(.inbounds, .i8, base_ptr, null, &.{
42334202 try o.builder.intConst(.i64, offset),
42344203 });
42354204 },
42364205 .int => try o.builder.castConst(
42374206 .inttoptr,
4238 try o.builder.intConst(try o.lowerType(Type.usize), offset),
4239 try o.lowerType(Type.fromInterned(ptr.ty)),
4207 try o.builder.intConst(try o.lowerType(pt, Type.usize), offset),
4208 try o.lowerType(pt, Type.fromInterned(ptr.ty)),
42404209 ),
42414210 .eu_payload => |eu_ptr| try o.lowerPtr(
4211 pt,
42424212 eu_ptr,
42434213 offset + @import("../codegen.zig").errUnionPayloadOffset(
42444214 Value.fromInterned(eu_ptr).typeOf(zcu).childType(zcu),
42454215 zcu,
42464216 ),
42474217 ),
4248 .opt_payload => |opt_ptr| try o.lowerPtr(opt_ptr, offset),
4218 .opt_payload => |opt_ptr| try o.lowerPtr(pt, opt_ptr, offset),
42494219 .field => |field| {
42504220 const agg_ty = Value.fromInterned(field.base).typeOf(zcu).childType(zcu);
42514221 const field_off: u64 = switch (agg_ty.zigTypeTag(zcu)) {
......@@ -4263,7 +4233,7 @@ pub const Object = struct {
42634233 },
42644234 else => unreachable,
42654235 };
4266 return o.lowerPtr(field.base, offset + field_off);
4236 return o.lowerPtr(pt, field.base, offset + field_off);
42674237 },
42684238 .arr_elem, .comptime_field, .comptime_alloc => unreachable,
42694239 };
......@@ -4273,9 +4243,9 @@ pub const Object = struct {
42734243 /// Maybe the logic could be unified.
42744244 fn lowerUavRef(
42754245 o: *Object,
4246 pt: Zcu.PerThread,
42764247 uav: InternPool.Key.Ptr.BaseAddr.Uav,
42774248 ) Error!Builder.Constant {
4278 const pt = o.pt;
42794249 const zcu = pt.zcu;
42804250 const ip = &zcu.intern_pool;
42814251 const uav_val = uav.val;
......@@ -4292,25 +4262,24 @@ pub const Object = struct {
42924262
42934263 const is_fn_body = uav_ty.zigTypeTag(zcu) == .@"fn";
42944264 if ((!is_fn_body and !uav_ty.hasRuntimeBits(zcu)) or
4295 (is_fn_body and zcu.typeToFunc(uav_ty).?.is_generic)) return o.lowerPtrToVoid(ptr_ty);
4265 (is_fn_body and zcu.typeToFunc(uav_ty).?.is_generic)) return o.lowerPtrToVoid(pt, ptr_ty);
42964266
42974267 if (is_fn_body)
42984268 @panic("TODO");
42994269
43004270 const llvm_addr_space = toLlvmAddressSpace(ptr_ty.ptrAddressSpace(zcu), target);
43014271 const alignment = ptr_ty.ptrAlignment(zcu);
4302 const llvm_global = (try o.resolveGlobalUav(uav.val, llvm_addr_space, alignment)).ptrConst(&o.builder).global;
4272 const llvm_global = (try o.resolveGlobalUav(pt, uav.val, llvm_addr_space, alignment)).ptrConst(&o.builder).global;
43034273
43044274 const llvm_val = try o.builder.convConst(
43054275 llvm_global.toConst(),
43064276 try o.builder.ptrType(llvm_addr_space),
43074277 );
43084278
4309 return o.builder.convConst(llvm_val, try o.lowerType(ptr_ty));
4279 return o.builder.convConst(llvm_val, try o.lowerType(pt, ptr_ty));
43104280 }
43114281
4312 fn lowerNavRefValue(o: *Object, nav_index: InternPool.Nav.Index) Allocator.Error!Builder.Constant {
4313 const pt = o.pt;
4282 fn lowerNavRefValue(o: *Object, pt: Zcu.PerThread, nav_index: InternPool.Nav.Index) Allocator.Error!Builder.Constant {
43144283 const zcu = pt.zcu;
43154284 const ip = &zcu.intern_pool;
43164285
......@@ -4323,24 +4292,24 @@ pub const Object = struct {
43234292 if ((!is_fn_body and !nav_ty.hasRuntimeBits(zcu)) or
43244293 (is_fn_body and zcu.typeToFunc(nav_ty).?.is_generic))
43254294 {
4326 return o.lowerPtrToVoid(ptr_ty);
4295 return o.lowerPtrToVoid(pt, ptr_ty);
43274296 }
43284297
43294298 const llvm_global = if (is_fn_body)
4330 (try o.resolveLlvmFunction(nav_index)).ptrConst(&o.builder).global
4299 (try o.resolveLlvmFunction(pt, nav_index)).ptrConst(&o.builder).global
43314300 else
4332 (try o.resolveGlobalNav(nav_index)).ptrConst(&o.builder).global;
4301 (try o.resolveGlobalNav(pt, nav_index)).ptrConst(&o.builder).global;
43334302
43344303 const llvm_val = try o.builder.convConst(
43354304 llvm_global.toConst(),
43364305 try o.builder.ptrType(toLlvmAddressSpace(nav.getAddrspace(), zcu.getTarget())),
43374306 );
43384307
4339 return o.builder.convConst(llvm_val, try o.lowerType(ptr_ty));
4308 return o.builder.convConst(llvm_val, try o.lowerType(pt, ptr_ty));
43404309 }
43414310
4342 fn lowerPtrToVoid(o: *Object, ptr_ty: Type) Allocator.Error!Builder.Constant {
4343 const zcu = o.pt.zcu;
4311 fn lowerPtrToVoid(o: *Object, pt: Zcu.PerThread, ptr_ty: Type) Allocator.Error!Builder.Constant {
4312 const zcu = pt.zcu;
43444313 // Even though we are pointing at something which has zero bits (e.g. `void`),
43454314 // Pointers are defined to have bits. So we must return something here.
43464315 // The value cannot be undefined, because we use the `nonnull` annotation
......@@ -4358,8 +4327,8 @@ pub const Object = struct {
43584327 64 => 0xaaaaaaaa_aaaaaaaa,
43594328 else => unreachable,
43604329 };
4361 const llvm_usize = try o.lowerType(Type.usize);
4362 const llvm_ptr_ty = try o.lowerType(ptr_ty);
4330 const llvm_usize = try o.lowerType(pt, Type.usize);
4331 const llvm_ptr_ty = try o.lowerType(pt, ptr_ty);
43634332 return o.builder.castConst(.inttoptr, try o.builder.intConst(llvm_usize, int), llvm_ptr_ty);
43644333 }
43654334
......@@ -4367,8 +4336,7 @@ pub const Object = struct {
43674336 /// widen it before using it and then truncate the result.
43684337 /// RMW exchange of floating-point values is bitcasted to same-sized integer
43694338 /// types to work around a LLVM deficiency when targeting ARM/AArch64.
4370 fn getAtomicAbiType(o: *Object, ty: Type, is_rmw_xchg: bool) Allocator.Error!Builder.Type {
4371 const pt = o.pt;
4339 fn getAtomicAbiType(o: *Object, pt: Zcu.PerThread, ty: Type, is_rmw_xchg: bool) Allocator.Error!Builder.Type {
43724340 const zcu = pt.zcu;
43734341 const int_ty = switch (ty.zigTypeTag(zcu)) {
43744342 .int => ty,
......@@ -4390,13 +4358,13 @@ pub const Object = struct {
43904358
43914359 fn addByValParamAttrs(
43924360 o: *Object,
4361 pt: Zcu.PerThread,
43934362 attributes: *Builder.FunctionAttributes.Wip,
43944363 param_ty: Type,
43954364 param_index: u32,
43964365 fn_info: InternPool.Key.FuncType,
43974366 llvm_arg_i: u32,
43984367 ) Allocator.Error!void {
4399 const pt = o.pt;
44004368 const zcu = pt.zcu;
44014369 if (param_ty.isPtrAtRuntime(zcu)) {
44024370 const ptr_info = param_ty.ptrInfo(zcu);
......@@ -4416,7 +4384,7 @@ pub const Object = struct {
44164384 .x86_64_interrupt,
44174385 .x86_interrupt,
44184386 => {
4419 const child_type = try lowerType(o, Type.fromInterned(ptr_info.child));
4387 const child_type = try lowerType(o, pt, Type.fromInterned(ptr_info.child));
44204388 try attributes.addParamAttr(llvm_arg_i, .{ .byval = child_type }, &o.builder);
44214389 },
44224390 }
......@@ -4455,14 +4423,14 @@ pub const Object = struct {
44554423 });
44564424 }
44574425
4458 fn getCmpLtErrorsLenFunction(o: *Object) !Builder.Function.Index {
4426 fn getCmpLtErrorsLenFunction(o: *Object, pt: Zcu.PerThread) !Builder.Function.Index {
44594427 const name = try o.builder.strtabString(lt_errors_fn_name);
44604428 if (o.builder.getGlobal(name)) |llvm_fn| return llvm_fn.ptrConst(&o.builder).kind.function;
44614429
4462 const zcu = o.pt.zcu;
4430 const zcu = pt.zcu;
44634431 const target = &zcu.root_mod.resolved_target.result;
44644432 const function_index = try o.builder.addFunction(
4465 try o.builder.fnType(.i1, &.{try o.errorIntType()}, .normal),
4433 try o.builder.fnType(.i1, &.{try o.errorIntType(pt)}, .normal),
44664434 name,
44674435 toLlvmAddressSpace(.generic, target),
44684436 );
......@@ -4477,8 +4445,7 @@ pub const Object = struct {
44774445 return function_index;
44784446 }
44794447
4480 fn getEnumTagNameFunction(o: *Object, enum_ty: Type) !Builder.Function.Index {
4481 const pt = o.pt;
4448 fn getEnumTagNameFunction(o: *Object, pt: Zcu.PerThread, enum_ty: Type) !Builder.Function.Index {
44824449 const zcu = pt.zcu;
44834450 const ip = &zcu.intern_pool;
44844451 const enum_type = ip.loadEnumType(enum_ty.toIntern());
......@@ -4487,11 +4454,11 @@ pub const Object = struct {
44874454 if (gop.found_existing) return gop.value_ptr.ptrConst(&o.builder).kind.function;
44884455 errdefer assert(o.enum_tag_name_map.remove(enum_ty.toIntern()));
44894456
4490 const usize_ty = try o.lowerType(Type.usize);
4491 const ret_ty = try o.lowerType(Type.slice_const_u8_sentinel_0);
4457 const usize_ty = try o.lowerType(pt, Type.usize);
4458 const ret_ty = try o.lowerType(pt, Type.slice_const_u8_sentinel_0);
44924459 const target = &zcu.root_mod.resolved_target.result;
44934460 const function_index = try o.builder.addFunction(
4494 try o.builder.fnType(ret_ty, &.{try o.lowerType(Type.fromInterned(enum_type.tag_ty))}, .normal),
4461 try o.builder.fnType(ret_ty, &.{try o.lowerType(pt, Type.fromInterned(enum_type.tag_ty))}, .normal),
44954462 try o.builder.strtabStringFmt("__zig_tag_name_{f}", .{enum_type.name.fmt(ip)}),
44964463 toLlvmAddressSpace(.generic, target),
44974464 );
......@@ -4536,6 +4503,7 @@ pub const Object = struct {
45364503
45374504 const return_block = try wip.block(1, "Name");
45384505 const this_tag_int_value = try o.lowerValue(
4506 pt,
45394507 (try pt.enumValueFieldIndex(enum_ty, @intCast(field_index))).toIntern(),
45404508 );
45414509 try wip_switch.addCase(this_tag_int_value, return_block, &wip);
......@@ -4555,10 +4523,11 @@ pub const Object = struct {
45554523pub const NavGen = struct {
45564524 object: *Object,
45574525 nav_index: InternPool.Nav.Index,
4526 pt: Zcu.PerThread,
45584527 err_msg: ?*Zcu.ErrorMsg,
45594528
45604529 fn ownerModule(ng: NavGen) *Package.Module {
4561 return ng.object.pt.zcu.navFileScope(ng.nav_index).mod.?;
4530 return ng.pt.zcu.navFileScope(ng.nav_index).mod.?;
45624531 }
45634532
45644533 fn todo(ng: *NavGen, comptime format: []const u8, args: anytype) Error {
......@@ -4566,14 +4535,14 @@ pub const NavGen = struct {
45664535 assert(ng.err_msg == null);
45674536 const o = ng.object;
45684537 const gpa = o.gpa;
4569 const src_loc = o.pt.zcu.navSrcLoc(ng.nav_index);
4538 const src_loc = ng.pt.zcu.navSrcLoc(ng.nav_index);
45704539 ng.err_msg = try Zcu.ErrorMsg.create(gpa, src_loc, "TODO (LLVM): " ++ format, args);
45714540 return error.CodegenFail;
45724541 }
45734542
45744543 fn genDecl(ng: *NavGen) !void {
45754544 const o = ng.object;
4576 const pt = o.pt;
4545 const pt = ng.pt;
45774546 const zcu = pt.zcu;
45784547 const ip = &zcu.intern_pool;
45794548 const nav_index = ng.nav_index;
......@@ -4588,16 +4557,16 @@ pub const NavGen = struct {
45884557 const ty = Type.fromInterned(nav.typeOf(ip));
45894558
45904559 if (linkage != .internal and ip.isFunctionType(ty.toIntern())) {
4591 _ = try o.resolveLlvmFunction(owner_nav);
4560 _ = try o.resolveLlvmFunction(pt, owner_nav);
45924561 } else {
4593 const variable_index = try o.resolveGlobalNav(nav_index);
4562 const variable_index = try o.resolveGlobalNav(pt, nav_index);
45944563 variable_index.setAlignment(pt.navAlignment(nav_index).toLlvm(), &o.builder);
45954564 if (resolved.@"linksection".toSlice(ip)) |section|
45964565 variable_index.setSection(try o.builder.string(section), &o.builder);
45974566 if (is_const) variable_index.setMutability(.constant, &o.builder);
45984567 try variable_index.setInitializer(switch (init_val) {
45994568 .none => .no_init,
4600 else => try o.lowerValue(init_val),
4569 else => try o.lowerValue(pt, init_val),
46014570 }, &o.builder);
46024571 variable_index.setVisibility(visibility, &o.builder);
46034572
......@@ -4609,7 +4578,7 @@ pub const NavGen = struct {
46094578 const line_number = zcu.navSrcLine(nav_index) + 1;
46104579
46114580 if (!mod.strip) {
4612 const debug_file = try o.getDebugFile(file_scope);
4581 const debug_file = try o.getDebugFile(pt, file_scope);
46134582
46144583 const debug_global_var = try o.builder.debugGlobalVar(
46154584 try o.builder.metadataString(nav.name.toSlice(ip)), // Name
......@@ -4617,7 +4586,7 @@ pub const NavGen = struct {
46174586 debug_file, // File
46184587 debug_file, // Scope
46194588 line_number,
4620 try o.lowerDebugType(ty),
4589 try o.lowerDebugType(pt, ty),
46214590 variable_index,
46224591 .{ .local = linkage == .internal },
46234592 );
......@@ -4814,16 +4783,17 @@ pub const FuncGen = struct {
48144783 const gop = try self.func_inst_table.getOrPut(gpa, inst);
48154784 if (gop.found_existing) return gop.value_ptr.*;
48164785
4817 const llvm_val = try self.resolveValue((try self.air.value(inst, self.ng.object.pt)).?);
4786 const llvm_val = try self.resolveValue((try self.air.value(inst, self.ng.pt)).?);
48184787 gop.value_ptr.* = llvm_val.toValue();
48194788 return llvm_val.toValue();
48204789 }
48214790
48224791 fn resolveValue(self: *FuncGen, val: Value) Error!Builder.Constant {
48234792 const o = self.ng.object;
4824 const zcu = o.pt.zcu;
4793 const pt = self.ng.pt;
4794 const zcu = pt.zcu;
48254795 const ty = val.typeOf(zcu);
4826 const llvm_val = try o.lowerValue(val.toIntern());
4796 const llvm_val = try o.lowerValue(pt, val.toIntern());
48274797 if (!isByRef(ty, zcu)) return llvm_val;
48284798
48294799 // We have an LLVM value but we need to create a global constant and
......@@ -4847,7 +4817,7 @@ pub const FuncGen = struct {
48474817
48484818 fn genBody(self: *FuncGen, body: []const Air.Inst.Index, coverage_point: Air.CoveragePoint) Error!void {
48494819 const o = self.ng.object;
4850 const zcu = o.pt.zcu;
4820 const zcu = self.ng.pt.zcu;
48514821 const ip = &zcu.intern_pool;
48524822 const air_tags = self.air.instructions.items(.tag);
48534823 switch (coverage_point) {
......@@ -5173,7 +5143,7 @@ pub const FuncGen = struct {
51735143
51745144 if (maybe_inline_func) |inline_func| {
51755145 const o = self.ng.object;
5176 const pt = o.pt;
5146 const pt = self.ng.pt;
51775147 const zcu = pt.zcu;
51785148 const ip = &zcu.intern_pool;
51795149
......@@ -5182,7 +5152,7 @@ pub const FuncGen = struct {
51825152 const file_scope = zcu.navFileScopeIndex(func.owner_nav);
51835153 const mod = zcu.fileByIndex(file_scope).mod.?;
51845154
5185 self.file = try o.getDebugFile(file_scope);
5155 self.file = try o.getDebugFile(pt, file_scope);
51865156
51875157 const line_number = zcu.navSrcLine(func.owner_nav) + 1;
51885158 self.inlined = self.wip.debug_location;
......@@ -5198,7 +5168,7 @@ pub const FuncGen = struct {
51985168 try o.builder.metadataString(nav.fqn.toSlice(&zcu.intern_pool)),
51995169 line_number,
52005170 line_number + func.lbrace_line,
5201 try o.lowerDebugType(fn_ty),
5171 try o.lowerDebugType(pt, fn_ty),
52025172 .{
52035173 .di_flags = .{ .StaticMember = true },
52045174 .sp_flags = .{
......@@ -5255,7 +5225,7 @@ pub const FuncGen = struct {
52555225 const extra = self.air.extraData(Air.Call, pl_op.payload);
52565226 const args: []const Air.Inst.Ref = @ptrCast(self.air.extra.items[extra.end..][0..extra.data.args_len]);
52575227 const o = self.ng.object;
5258 const pt = o.pt;
5228 const pt = self.ng.pt;
52595229 const zcu = pt.zcu;
52605230 const ip = &zcu.intern_pool;
52615231 const callee_ty = self.typeOf(pl_op.operand);
......@@ -5287,7 +5257,7 @@ pub const FuncGen = struct {
52875257 }
52885258
52895259 const ret_ptr = if (!sret) null else blk: {
5290 const llvm_ret_ty = try o.lowerType(return_type);
5260 const llvm_ret_ty = try o.lowerType(pt, return_type);
52915261 try attributes.addParamAttr(0, .{ .sret = llvm_ret_ty }, &o.builder);
52925262
52935263 const alignment = return_type.abiAlignment(zcu).toLlvm();
......@@ -5302,14 +5272,14 @@ pub const FuncGen = struct {
53025272 try llvm_args.append(self.err_ret_trace);
53035273 }
53045274
5305 var it = iterateParamTypes(o, fn_info);
5275 var it = iterateParamTypes(o, pt, fn_info);
53065276 while (try it.nextCall(self, args)) |lowering| switch (lowering) {
53075277 .no_bits => continue,
53085278 .byval => {
53095279 const arg = args[it.zig_index - 1];
53105280 const param_ty = self.typeOf(arg);
53115281 const llvm_arg = try self.resolveInst(arg);
5312 const llvm_param_ty = try o.lowerType(param_ty);
5282 const llvm_param_ty = try o.lowerType(pt, param_ty);
53135283 if (isByRef(param_ty, zcu)) {
53145284 const alignment = param_ty.abiAlignment(zcu).toLlvm();
53155285 const loaded = try self.wip.load(.normal, llvm_param_ty, llvm_arg, alignment, "");
......@@ -5338,7 +5308,7 @@ pub const FuncGen = struct {
53385308 const llvm_arg = try self.resolveInst(arg);
53395309
53405310 const alignment = param_ty.abiAlignment(zcu).toLlvm();
5341 const param_llvm_ty = try o.lowerType(param_ty);
5311 const param_llvm_ty = try o.lowerType(pt, param_ty);
53425312 const arg_ptr = try self.buildAlloca(param_llvm_ty, alignment);
53435313 if (isByRef(param_ty, zcu)) {
53445314 const loaded = try self.wip.load(.normal, param_llvm_ty, llvm_arg, alignment, "");
......@@ -5409,7 +5379,7 @@ pub const FuncGen = struct {
54095379 llvm_arg = ptr;
54105380 }
54115381
5412 const float_ty = try o.lowerType(aarch64_c_abi.getFloatArrayType(arg_ty, zcu).?);
5382 const float_ty = try o.lowerType(pt, aarch64_c_abi.getFloatArrayType(arg_ty, zcu).?);
54135383 const array_ty = try o.builder.arrayType(count, float_ty);
54145384
54155385 const loaded = try self.wip.load(.normal, array_ty, llvm_arg, alignment, "");
......@@ -5436,7 +5406,7 @@ pub const FuncGen = struct {
54365406
54375407 {
54385408 // Add argument attributes.
5439 it = iterateParamTypes(o, fn_info);
5409 it = iterateParamTypes(o, pt, fn_info);
54405410 it.llvm_index += @intFromBool(sret);
54415411 it.llvm_index += @intFromBool(err_return_tracing);
54425412 while (try it.next()) |lowering| switch (lowering) {
......@@ -5444,13 +5414,13 @@ pub const FuncGen = struct {
54445414 const param_index = it.zig_index - 1;
54455415 const param_ty = Type.fromInterned(fn_info.param_types.get(ip)[param_index]);
54465416 if (!isByRef(param_ty, zcu)) {
5447 try o.addByValParamAttrs(&attributes, param_ty, param_index, fn_info, it.llvm_index - 1);
5417 try o.addByValParamAttrs(pt, &attributes, param_ty, param_index, fn_info, it.llvm_index - 1);
54485418 }
54495419 },
54505420 .byref => {
54515421 const param_index = it.zig_index - 1;
54525422 const param_ty = Type.fromInterned(fn_info.param_types.get(ip)[param_index]);
5453 const param_llvm_ty = try o.lowerType(param_ty);
5423 const param_llvm_ty = try o.lowerType(pt, param_ty);
54545424 const alignment = param_ty.abiAlignment(zcu).toLlvm();
54555425 try o.addByRefParamAttrs(&attributes, it.llvm_index - 1, alignment, it.byval_attr, param_llvm_ty);
54565426 },
......@@ -5502,7 +5472,7 @@ pub const FuncGen = struct {
55025472 },
55035473 toLlvmCallConvTag(fn_info.cc, target).?,
55045474 try attributes.finish(&o.builder),
5505 try o.lowerType(zig_fn_ty),
5475 try o.lowerType(pt, zig_fn_ty),
55065476 llvm_fn,
55075477 llvm_args.items,
55085478 "",
......@@ -5516,7 +5486,7 @@ pub const FuncGen = struct {
55165486 return .none;
55175487 }
55185488
5519 const llvm_ret_ty = try o.lowerType(return_type);
5489 const llvm_ret_ty = try o.lowerType(pt, return_type);
55205490 if (ret_ptr) |rp| {
55215491 if (isByRef(return_type, zcu)) {
55225492 return rp;
......@@ -5527,7 +5497,7 @@ pub const FuncGen = struct {
55275497 }
55285498 }
55295499
5530 const abi_ret_ty = try lowerFnRetTy(o, fn_info);
5500 const abi_ret_ty = try lowerFnRetTy(o, pt, fn_info);
55315501
55325502 if (abi_ret_ty != llvm_ret_ty) {
55335503 // In this case the function return type is honoring the calling convention by having
......@@ -5556,11 +5526,12 @@ pub const FuncGen = struct {
55565526
55575527 fn buildSimplePanic(fg: *FuncGen, panic_id: Zcu.SimplePanicId) !void {
55585528 const o = fg.ng.object;
5559 const zcu = o.pt.zcu;
5529 const pt = fg.ng.pt;
5530 const zcu = pt.zcu;
55605531 const target = zcu.getTarget();
55615532 const panic_func = zcu.funcInfo(zcu.builtin_decl_values.get(panic_id.toBuiltin()));
55625533 const fn_info = zcu.typeToFunc(.fromInterned(panic_func.ty)).?;
5563 const panic_global = try o.resolveLlvmFunction(panic_func.owner_nav);
5534 const panic_global = try o.resolveLlvmFunction(pt, panic_func.owner_nav);
55645535
55655536 const has_err_trace = zcu.comp.config.any_error_tracing and fn_info.cc == .auto;
55665537 if (has_err_trace) assert(fg.err_ret_trace != .none);
......@@ -5579,7 +5550,7 @@ pub const FuncGen = struct {
55795550
55805551 fn airRet(self: *FuncGen, inst: Air.Inst.Index, safety: bool) !void {
55815552 const o = self.ng.object;
5582 const pt = o.pt;
5553 const pt = self.ng.pt;
55835554 const zcu = pt.zcu;
55845555 const ip = &zcu.intern_pool;
55855556 const un_op = self.air.instructions.items(.data)[@intFromEnum(inst)].un_op;
......@@ -5599,7 +5570,7 @@ pub const FuncGen = struct {
55995570 // https://github.com/ziglang/zig/issues/15337
56005571 break :undef;
56015572 }
5602 const len = try o.builder.intValue(try o.lowerType(Type.usize), ret_ty.abiSize(zcu));
5573 const len = try o.builder.intValue(try o.lowerType(pt, Type.usize), ret_ty.abiSize(zcu));
56035574 _ = try self.wip.callMemSet(
56045575 self.ret_ptr,
56055576 ptr_ty.ptrAlignment(zcu).toLlvm(),
......@@ -5635,14 +5606,14 @@ pub const FuncGen = struct {
56355606 // Functions with an empty error set are emitted with an error code
56365607 // return type and return zero so they can be function pointers coerced
56375608 // to functions that return anyerror.
5638 _ = try self.wip.ret(try o.builder.intValue(try o.errorIntType(), 0));
5609 _ = try self.wip.ret(try o.builder.intValue(try o.errorIntType(pt), 0));
56395610 } else {
56405611 _ = try self.wip.retVoid();
56415612 }
56425613 return;
56435614 }
56445615
5645 const abi_ret_ty = try lowerFnRetTy(o, fn_info);
5616 const abi_ret_ty = try lowerFnRetTy(o, pt, fn_info);
56465617 const operand = try self.resolveInst(un_op);
56475618 const val_is_undef = if (try self.air.value(un_op, pt)) |val| val.isUndefDeep(zcu) else false;
56485619 const alignment = ret_ty.abiAlignment(zcu).toLlvm();
......@@ -5650,7 +5621,7 @@ pub const FuncGen = struct {
56505621 if (val_is_undef and safety) {
56515622 const llvm_ret_ty = operand.typeOfWip(&self.wip);
56525623 const rp = try self.buildAlloca(llvm_ret_ty, alignment);
5653 const len = try o.builder.intValue(try o.lowerType(Type.usize), ret_ty.abiSize(zcu));
5624 const len = try o.builder.intValue(try o.lowerType(pt, Type.usize), ret_ty.abiSize(zcu));
56545625 _ = try self.wip.callMemSet(
56555626 rp,
56565627 alignment,
......@@ -5688,7 +5659,7 @@ pub const FuncGen = struct {
56885659
56895660 fn airRetLoad(self: *FuncGen, inst: Air.Inst.Index) !void {
56905661 const o = self.ng.object;
5691 const pt = o.pt;
5662 const pt = self.ng.pt;
56925663 const zcu = pt.zcu;
56935664 const ip = &zcu.intern_pool;
56945665 const un_op = self.air.instructions.items(.data)[@intFromEnum(inst)].un_op;
......@@ -5700,7 +5671,7 @@ pub const FuncGen = struct {
57005671 // Functions with an empty error set are emitted with an error code
57015672 // return type and return zero so they can be function pointers coerced
57025673 // to functions that return anyerror.
5703 _ = try self.wip.ret(try o.builder.intValue(try o.errorIntType(), 0));
5674 _ = try self.wip.ret(try o.builder.intValue(try o.errorIntType(pt), 0));
57045675 } else {
57055676 _ = try self.wip.retVoid();
57065677 }
......@@ -5711,7 +5682,7 @@ pub const FuncGen = struct {
57115682 return;
57125683 }
57135684 const ptr = try self.resolveInst(un_op);
5714 const abi_ret_ty = try lowerFnRetTy(o, fn_info);
5685 const abi_ret_ty = try lowerFnRetTy(o, pt, fn_info);
57155686 const alignment = ret_ty.abiAlignment(zcu).toLlvm();
57165687 _ = try self.wip.ret(try self.wip.load(.normal, abi_ret_ty, ptr, alignment, ""));
57175688 return;
......@@ -5719,22 +5690,23 @@ pub const FuncGen = struct {
57195690
57205691 fn airCVaArg(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
57215692 const o = self.ng.object;
5693 const pt = self.ng.pt;
57225694 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
57235695 const list = try self.resolveInst(ty_op.operand);
57245696 const arg_ty = ty_op.ty.toType();
5725 const llvm_arg_ty = try o.lowerType(arg_ty);
5697 const llvm_arg_ty = try o.lowerType(pt, arg_ty);
57265698
57275699 return self.wip.vaArg(list, llvm_arg_ty, "");
57285700 }
57295701
57305702 fn airCVaCopy(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
57315703 const o = self.ng.object;
5732 const pt = o.pt;
5704 const pt = self.ng.pt;
57335705 const zcu = pt.zcu;
57345706 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
57355707 const src_list = try self.resolveInst(ty_op.operand);
57365708 const va_list_ty = ty_op.ty.toType();
5737 const llvm_va_list_ty = try o.lowerType(va_list_ty);
5709 const llvm_va_list_ty = try o.lowerType(pt, va_list_ty);
57385710
57395711 const result_alignment = va_list_ty.abiAlignment(pt.zcu).toLlvm();
57405712 const dest_list = try self.buildAlloca(llvm_va_list_ty, result_alignment);
......@@ -5756,10 +5728,10 @@ pub const FuncGen = struct {
57565728
57575729 fn airCVaStart(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
57585730 const o = self.ng.object;
5759 const pt = o.pt;
5731 const pt = self.ng.pt;
57605732 const zcu = pt.zcu;
57615733 const va_list_ty = self.typeOfIndex(inst);
5762 const llvm_va_list_ty = try o.lowerType(va_list_ty);
5734 const llvm_va_list_ty = try o.lowerType(pt, va_list_ty);
57635735
57645736 const result_alignment = va_list_ty.abiAlignment(pt.zcu).toLlvm();
57655737 const dest_list = try self.buildAlloca(llvm_va_list_ty, result_alignment);
......@@ -5799,9 +5771,10 @@ pub const FuncGen = struct {
57995771
58005772 fn airCmpLtErrorsLen(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
58015773 const o = self.ng.object;
5774 const pt = self.ng.pt;
58025775 const un_op = self.air.instructions.items(.data)[@intFromEnum(inst)].un_op;
58035776 const operand = try self.resolveInst(un_op);
5804 const llvm_fn = try o.getCmpLtErrorsLenFunction();
5777 const llvm_fn = try o.getCmpLtErrorsLenFunction(pt);
58055778 return self.wip.call(
58065779 .normal,
58075780 .fastcc,
......@@ -5822,7 +5795,7 @@ pub const FuncGen = struct {
58225795 rhs: Builder.Value,
58235796 ) Allocator.Error!Builder.Value {
58245797 const o = self.ng.object;
5825 const pt = o.pt;
5798 const pt = self.ng.pt;
58265799 const zcu = pt.zcu;
58275800 const ip = &zcu.intern_pool;
58285801 const scalar_ty = operand_ty.scalarType(zcu);
......@@ -5839,7 +5812,7 @@ pub const FuncGen = struct {
58395812 // We need to emit instructions to check for equality/inequality
58405813 // of optionals that are not pointers.
58415814 const is_by_ref = isByRef(scalar_ty, zcu);
5842 const opt_llvm_ty = try o.lowerType(scalar_ty);
5815 const opt_llvm_ty = try o.lowerType(pt, scalar_ty);
58435816 const lhs_non_null = try self.optCmpNull(.ne, opt_llvm_ty, lhs, is_by_ref, .normal);
58445817 const rhs_non_null = try self.optCmpNull(.ne, opt_llvm_ty, rhs, is_by_ref, .normal);
58455818 const llvm_i2 = try o.builder.intType(2);
......@@ -5936,7 +5909,7 @@ pub const FuncGen = struct {
59365909 body: []const Air.Inst.Index,
59375910 ) !Builder.Value {
59385911 const o = self.ng.object;
5939 const pt = o.pt;
5912 const pt = self.ng.pt;
59405913 const zcu = pt.zcu;
59415914 const inst_ty = self.typeOfIndex(inst);
59425915
......@@ -5963,7 +5936,7 @@ pub const FuncGen = struct {
59635936
59645937 // Create a phi node only if the block returns a value.
59655938 if (have_block_result) {
5966 const raw_llvm_ty = try o.lowerType(inst_ty);
5939 const raw_llvm_ty = try o.lowerType(pt, inst_ty);
59675940 const llvm_ty: Builder.Type = ty: {
59685941 // If the zig tag type is a function, this represents an actual function body; not
59695942 // a pointer to it. LLVM IR allows the call instruction to use function bodies instead
......@@ -5986,8 +5959,7 @@ pub const FuncGen = struct {
59865959 }
59875960
59885961 fn airBr(self: *FuncGen, inst: Air.Inst.Index) !void {
5989 const o = self.ng.object;
5990 const zcu = o.pt.zcu;
5962 const zcu = self.ng.pt.zcu;
59915963 const branch = self.air.instructions.items(.data)[@intFromEnum(inst)].br;
59925964 const block = self.blocks.get(branch.block_inst).?;
59935965
......@@ -6017,7 +5989,7 @@ pub const FuncGen = struct {
60175989 dispatch_info: SwitchDispatchInfo,
60185990 ) !void {
60195991 const o = self.ng.object;
6020 const pt = o.pt;
5992 const pt = self.ng.pt;
60215993 const zcu = pt.zcu;
60225994 const cond_ty = self.typeOf(cond_ref);
60235995 const switch_br = self.air.unwrapSwitch(switch_inst);
......@@ -6081,7 +6053,7 @@ pub const FuncGen = struct {
60816053 const table_index = try self.wip.cast(
60826054 .zext,
60836055 try self.wip.bin(.@"sub nuw", cond, jmp_table.min.toValue(), ""),
6084 try o.lowerType(Type.usize),
6056 try o.lowerType(pt, Type.usize),
60856057 "",
60866058 );
60876059 const target_ptr_ptr = try self.wip.gep(
......@@ -6108,7 +6080,7 @@ pub const FuncGen = struct {
61086080 // The switch prongs will correspond to our scalar cases. Ranges will
61096081 // be handled by conditional branches in the `else` prong.
61106082
6111 const llvm_usize = try o.lowerType(Type.usize);
6083 const llvm_usize = try o.lowerType(pt, Type.usize);
61126084 const cond_int = if (cond.typeOfWip(&self.wip).isPointer(&o.builder))
61136085 try self.wip.cast(.ptrtoint, cond, llvm_usize, "")
61146086 else
......@@ -6268,8 +6240,7 @@ pub const FuncGen = struct {
62686240 }
62696241
62706242 fn airTry(self: *FuncGen, body_tail: []const Air.Inst.Index, err_cold: bool) !Builder.Value {
6271 const o = self.ng.object;
6272 const pt = o.pt;
6243 const pt = self.ng.pt;
62736244 const zcu = pt.zcu;
62746245 const inst = body_tail[0];
62756246 const pl_op = self.air.instructions.items(.data)[@intFromEnum(inst)].pl_op;
......@@ -6284,8 +6255,7 @@ pub const FuncGen = struct {
62846255 }
62856256
62866257 fn airTryPtr(self: *FuncGen, inst: Air.Inst.Index, err_cold: bool) !Builder.Value {
6287 const o = self.ng.object;
6288 const zcu = o.pt.zcu;
6258 const zcu = self.ng.pt.zcu;
62896259 const ty_pl = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_pl;
62906260 const extra = self.air.extraData(Air.TryPtr, ty_pl.payload);
62916261 const err_union_ptr = try self.resolveInst(extra.data.ptr);
......@@ -6309,12 +6279,12 @@ pub const FuncGen = struct {
63096279 err_cold: bool,
63106280 ) !Builder.Value {
63116281 const o = fg.ng.object;
6312 const pt = o.pt;
6282 const pt = fg.ng.pt;
63136283 const zcu = pt.zcu;
63146284 const payload_ty = err_union_ty.errorUnionPayload(zcu);
63156285 const payload_has_bits = payload_ty.hasRuntimeBitsIgnoreComptime(zcu);
6316 const err_union_llvm_ty = try o.lowerType(err_union_ty);
6317 const error_type = try o.errorIntType();
6286 const err_union_llvm_ty = try o.lowerType(pt, err_union_ty);
6287 const error_type = try o.errorIntType(pt);
63186288
63196289 if (!err_union_ty.errorUnionSet(zcu).errorSetIsEmpty(zcu)) {
63206290 const loaded = loaded: {
......@@ -6378,7 +6348,8 @@ pub const FuncGen = struct {
63786348
63796349 fn airSwitchBr(self: *FuncGen, inst: Air.Inst.Index, is_dispatch_loop: bool) !void {
63806350 const o = self.ng.object;
6381 const zcu = o.pt.zcu;
6351 const pt = self.ng.pt;
6352 const zcu = pt.zcu;
63826353
63836354 const switch_br = self.air.unwrapSwitch(inst);
63846355
......@@ -6483,8 +6454,8 @@ pub const FuncGen = struct {
64836454 const table_includes_else = item_count != table_len;
64846455
64856456 break :jmp_table .{
6486 .min = try o.lowerValue(min.toIntern()),
6487 .max = try o.lowerValue(max.toIntern()),
6457 .min = try o.lowerValue(pt, min.toIntern()),
6458 .max = try o.lowerValue(pt, max.toIntern()),
64886459 .in_bounds_hint = if (table_includes_else) .none else switch (switch_br.getElseHint()) {
64896460 .none, .cold => .none,
64906461 .unpredictable => .unpredictable,
......@@ -6591,7 +6562,7 @@ pub const FuncGen = struct {
65916562 }
65926563
65936564 fn switchCaseItemRange(self: *FuncGen, switch_br: Air.UnwrappedSwitch) [2]Value {
6594 const zcu = self.ng.object.pt.zcu;
6565 const zcu = self.ng.pt.zcu;
65956566 var it = switch_br.iterateCases();
65966567 var min: ?Value = null;
65976568 var max: ?Value = null;
......@@ -6633,18 +6604,18 @@ pub const FuncGen = struct {
66336604
66346605 fn airArrayToSlice(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
66356606 const o = self.ng.object;
6636 const pt = o.pt;
6607 const pt = self.ng.pt;
66376608 const zcu = pt.zcu;
66386609 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
66396610 const operand_ty = self.typeOf(ty_op.operand);
66406611 const array_ty = operand_ty.childType(zcu);
6641 const llvm_usize = try o.lowerType(Type.usize);
6612 const llvm_usize = try o.lowerType(pt, Type.usize);
66426613 const len = try o.builder.intValue(llvm_usize, array_ty.arrayLen(zcu));
6643 const slice_llvm_ty = try o.lowerType(self.typeOfIndex(inst));
6614 const slice_llvm_ty = try o.lowerType(pt, self.typeOfIndex(inst));
66446615 const operand = try self.resolveInst(ty_op.operand);
66456616 if (!array_ty.hasRuntimeBitsIgnoreComptime(zcu))
66466617 return self.wip.buildAggregate(slice_llvm_ty, &.{ operand, len }, "");
6647 const ptr = try self.wip.gep(.inbounds, try o.lowerType(array_ty), operand, &.{
6618 const ptr = try self.wip.gep(.inbounds, try o.lowerType(pt, array_ty), operand, &.{
66486619 try o.builder.intValue(llvm_usize, 0), try o.builder.intValue(llvm_usize, 0),
66496620 }, "");
66506621 return self.wip.buildAggregate(slice_llvm_ty, &.{ ptr, len }, "");
......@@ -6652,7 +6623,7 @@ pub const FuncGen = struct {
66526623
66536624 fn airFloatFromInt(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
66546625 const o = self.ng.object;
6655 const pt = o.pt;
6626 const pt = self.ng.pt;
66566627 const zcu = pt.zcu;
66576628 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
66586629
......@@ -6663,7 +6634,7 @@ pub const FuncGen = struct {
66636634
66646635 const dest_ty = self.typeOfIndex(inst);
66656636 const dest_scalar_ty = dest_ty.scalarType(zcu);
6666 const dest_llvm_ty = try o.lowerType(dest_ty);
6637 const dest_llvm_ty = try o.lowerType(pt, dest_ty);
66676638 const target = zcu.getTarget();
66686639
66696640 if (intrinsicsAllowed(dest_scalar_ty, target)) return self.wip.conv(
......@@ -6719,7 +6690,7 @@ pub const FuncGen = struct {
67196690 _ = fast;
67206691
67216692 const o = self.ng.object;
6722 const pt = o.pt;
6693 const pt = self.ng.pt;
67236694 const zcu = pt.zcu;
67246695 const target = zcu.getTarget();
67256696 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
......@@ -6730,7 +6701,7 @@ pub const FuncGen = struct {
67306701
67316702 const dest_ty = self.typeOfIndex(inst);
67326703 const dest_scalar_ty = dest_ty.scalarType(zcu);
6733 const dest_llvm_ty = try o.lowerType(dest_ty);
6704 const dest_llvm_ty = try o.lowerType(pt, dest_ty);
67346705
67356706 if (intrinsicsAllowed(operand_scalar_ty, target)) {
67366707 // TODO set fast math flag
......@@ -6762,7 +6733,7 @@ pub const FuncGen = struct {
67626733 compiler_rt_dest_abbrev,
67636734 });
67646735
6765 const operand_llvm_ty = try o.lowerType(operand_ty);
6736 const operand_llvm_ty = try o.lowerType(pt, operand_ty);
67666737 const libc_fn = try self.getLibcFunction(fn_name, &.{operand_llvm_ty}, libc_ret_ty);
67676738 var result = try self.wip.call(
67686739 .normal,
......@@ -6780,16 +6751,15 @@ pub const FuncGen = struct {
67806751 }
67816752
67826753 fn sliceOrArrayPtr(fg: *FuncGen, ptr: Builder.Value, ty: Type) Allocator.Error!Builder.Value {
6783 const o = fg.ng.object;
6784 const zcu = o.pt.zcu;
6754 const zcu = fg.ng.pt.zcu;
67856755 return if (ty.isSlice(zcu)) fg.wip.extractValue(ptr, &.{0}, "") else ptr;
67866756 }
67876757
67886758 fn sliceOrArrayLenInBytes(fg: *FuncGen, ptr: Builder.Value, ty: Type) Allocator.Error!Builder.Value {
67896759 const o = fg.ng.object;
6790 const pt = o.pt;
6760 const pt = fg.ng.pt;
67916761 const zcu = pt.zcu;
6792 const llvm_usize = try o.lowerType(Type.usize);
6762 const llvm_usize = try o.lowerType(pt, Type.usize);
67936763 switch (ty.ptrSize(zcu)) {
67946764 .slice => {
67956765 const len = try fg.wip.extractValue(ptr, &.{1}, "");
......@@ -6817,18 +6787,19 @@ pub const FuncGen = struct {
68176787
68186788 fn airPtrSliceFieldPtr(self: *FuncGen, inst: Air.Inst.Index, index: c_uint) !Builder.Value {
68196789 const o = self.ng.object;
6820 const zcu = o.pt.zcu;
6790 const pt = self.ng.pt;
6791 const zcu = pt.zcu;
68216792 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
68226793 const slice_ptr = try self.resolveInst(ty_op.operand);
68236794 const slice_ptr_ty = self.typeOf(ty_op.operand);
6824 const slice_llvm_ty = try o.lowerPtrElemTy(slice_ptr_ty.childType(zcu));
6795 const slice_llvm_ty = try o.lowerPtrElemTy(pt, slice_ptr_ty.childType(zcu));
68256796
68266797 return self.wip.gepStruct(slice_llvm_ty, slice_ptr, index, "");
68276798 }
68286799
68296800 fn airSliceElemVal(self: *FuncGen, body_tail: []const Air.Inst.Index) !Builder.Value {
68306801 const o = self.ng.object;
6831 const pt = o.pt;
6802 const pt = self.ng.pt;
68326803 const zcu = pt.zcu;
68336804 const inst = body_tail[0];
68346805 const bin_op = self.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;
......@@ -6836,7 +6807,7 @@ pub const FuncGen = struct {
68366807 const slice = try self.resolveInst(bin_op.lhs);
68376808 const index = try self.resolveInst(bin_op.rhs);
68386809 const elem_ty = slice_ty.childType(zcu);
6839 const llvm_elem_ty = try o.lowerPtrElemTy(elem_ty);
6810 const llvm_elem_ty = try o.lowerPtrElemTy(pt, elem_ty);
68406811 const base_ptr = try self.wip.extractValue(slice, &.{0}, "");
68416812 const ptr = try self.wip.gep(.inbounds, llvm_elem_ty, base_ptr, &.{index}, "");
68426813 if (isByRef(elem_ty, zcu)) {
......@@ -6856,21 +6827,22 @@ pub const FuncGen = struct {
68566827
68576828 fn airSliceElemPtr(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
68586829 const o = self.ng.object;
6859 const zcu = o.pt.zcu;
6830 const pt = self.ng.pt;
6831 const zcu = pt.zcu;
68606832 const ty_pl = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_pl;
68616833 const bin_op = self.air.extraData(Air.Bin, ty_pl.payload).data;
68626834 const slice_ty = self.typeOf(bin_op.lhs);
68636835
68646836 const slice = try self.resolveInst(bin_op.lhs);
68656837 const index = try self.resolveInst(bin_op.rhs);
6866 const llvm_elem_ty = try o.lowerPtrElemTy(slice_ty.childType(zcu));
6838 const llvm_elem_ty = try o.lowerPtrElemTy(pt, slice_ty.childType(zcu));
68676839 const base_ptr = try self.wip.extractValue(slice, &.{0}, "");
68686840 return self.wip.gep(.inbounds, llvm_elem_ty, base_ptr, &.{index}, "");
68696841 }
68706842
68716843 fn airArrayElemVal(self: *FuncGen, body_tail: []const Air.Inst.Index) !Builder.Value {
68726844 const o = self.ng.object;
6873 const pt = o.pt;
6845 const pt = self.ng.pt;
68746846 const zcu = pt.zcu;
68756847 const inst = body_tail[0];
68766848
......@@ -6878,11 +6850,11 @@ pub const FuncGen = struct {
68786850 const array_ty = self.typeOf(bin_op.lhs);
68796851 const array_llvm_val = try self.resolveInst(bin_op.lhs);
68806852 const rhs = try self.resolveInst(bin_op.rhs);
6881 const array_llvm_ty = try o.lowerType(array_ty);
6853 const array_llvm_ty = try o.lowerType(pt, array_ty);
68826854 const elem_ty = array_ty.childType(zcu);
68836855 if (isByRef(array_ty, zcu)) {
68846856 const indices: [2]Builder.Value = .{
6885 try o.builder.intValue(try o.lowerType(Type.usize), 0), rhs,
6857 try o.builder.intValue(try o.lowerType(pt, Type.usize), 0), rhs,
68866858 };
68876859 if (isByRef(elem_ty, zcu)) {
68886860 const elem_ptr =
......@@ -6903,19 +6875,19 @@ pub const FuncGen = struct {
69036875
69046876 fn airPtrElemVal(self: *FuncGen, body_tail: []const Air.Inst.Index) !Builder.Value {
69056877 const o = self.ng.object;
6906 const pt = o.pt;
6878 const pt = self.ng.pt;
69076879 const zcu = pt.zcu;
69086880 const inst = body_tail[0];
69096881 const bin_op = self.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;
69106882 const ptr_ty = self.typeOf(bin_op.lhs);
69116883 const elem_ty = ptr_ty.childType(zcu);
6912 const llvm_elem_ty = try o.lowerPtrElemTy(elem_ty);
6884 const llvm_elem_ty = try o.lowerPtrElemTy(pt, elem_ty);
69136885 const base_ptr = try self.resolveInst(bin_op.lhs);
69146886 const rhs = try self.resolveInst(bin_op.rhs);
69156887 // TODO: when we go fully opaque pointers in LLVM 16 we can remove this branch
69166888 const ptr = try self.wip.gep(.inbounds, llvm_elem_ty, base_ptr, if (ptr_ty.isSinglePointer(zcu))
69176889 // If this is a single-item pointer to an array, we need another index in the GEP.
6918 &.{ try o.builder.intValue(try o.lowerType(Type.usize), 0), rhs }
6890 &.{ try o.builder.intValue(try o.lowerType(pt, Type.usize), 0), rhs }
69196891 else
69206892 &.{rhs}, "");
69216893 if (isByRef(elem_ty, zcu)) {
......@@ -6934,7 +6906,7 @@ pub const FuncGen = struct {
69346906
69356907 fn airPtrElemPtr(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
69366908 const o = self.ng.object;
6937 const pt = o.pt;
6909 const pt = self.ng.pt;
69386910 const zcu = pt.zcu;
69396911 const ty_pl = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_pl;
69406912 const bin_op = self.air.extraData(Air.Bin, ty_pl.payload).data;
......@@ -6948,10 +6920,10 @@ pub const FuncGen = struct {
69486920 const elem_ptr = ty_pl.ty.toType();
69496921 if (elem_ptr.ptrInfo(zcu).flags.vector_index != .none) return base_ptr;
69506922
6951 const llvm_elem_ty = try o.lowerPtrElemTy(elem_ty);
6923 const llvm_elem_ty = try o.lowerPtrElemTy(pt, elem_ty);
69526924 return self.wip.gep(.inbounds, llvm_elem_ty, base_ptr, if (ptr_ty.isSinglePointer(zcu))
69536925 // If this is a single-item pointer to an array, we need another index in the GEP.
6954 &.{ try o.builder.intValue(try o.lowerType(Type.usize), 0), rhs }
6926 &.{ try o.builder.intValue(try o.lowerType(pt, Type.usize), 0), rhs }
69556927 else
69566928 &.{rhs}, "");
69576929 }
......@@ -6977,7 +6949,7 @@ pub const FuncGen = struct {
69776949
69786950 fn airStructFieldVal(self: *FuncGen, body_tail: []const Air.Inst.Index) !Builder.Value {
69796951 const o = self.ng.object;
6980 const pt = o.pt;
6952 const pt = self.ng.pt;
69816953 const zcu = pt.zcu;
69826954 const inst = body_tail[0];
69836955 const ty_pl = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_pl;
......@@ -6999,7 +6971,7 @@ pub const FuncGen = struct {
69996971 const shift_amt =
70006972 try o.builder.intValue(containing_int.typeOfWip(&self.wip), bit_offset);
70016973 const shifted_value = try self.wip.bin(.lshr, containing_int, shift_amt, "");
7002 const elem_llvm_ty = try o.lowerType(field_ty);
6974 const elem_llvm_ty = try o.lowerType(pt, field_ty);
70036975 if (field_ty.zigTypeTag(zcu) == .float or field_ty.zigTypeTag(zcu) == .vector) {
70046976 const same_size_int = try o.builder.intType(@intCast(field_ty.bitSize(zcu)));
70056977 const truncated_int =
......@@ -7021,7 +6993,7 @@ pub const FuncGen = struct {
70216993 .@"union" => {
70226994 assert(struct_ty.containerLayout(zcu) == .@"packed");
70236995 const containing_int = struct_llvm_val;
7024 const elem_llvm_ty = try o.lowerType(field_ty);
6996 const elem_llvm_ty = try o.lowerType(pt, field_ty);
70256997 if (field_ty.zigTypeTag(zcu) == .float or field_ty.zigTypeTag(zcu) == .vector) {
70266998 const same_size_int = try o.builder.intType(@intCast(field_ty.bitSize(zcu)));
70276999 const truncated_int =
......@@ -7043,7 +7015,7 @@ pub const FuncGen = struct {
70437015 .@"struct" => {
70447016 const layout = struct_ty.containerLayout(zcu);
70457017 assert(layout != .@"packed");
7046 const struct_llvm_ty = try o.lowerType(struct_ty);
7018 const struct_llvm_ty = try o.lowerType(pt, struct_ty);
70477019 const llvm_field_index = o.llvmFieldIndex(struct_ty, field_index).?;
70487020 const field_ptr =
70497021 try self.wip.gepStruct(struct_llvm_ty, struct_llvm_val, llvm_field_index, "");
......@@ -7064,7 +7036,7 @@ pub const FuncGen = struct {
70647036 }
70657037 },
70667038 .@"union" => {
7067 const union_llvm_ty = try o.lowerType(struct_ty);
7039 const union_llvm_ty = try o.lowerType(pt, struct_ty);
70687040 const layout = struct_ty.unionGetLayout(zcu);
70697041 const payload_index = @intFromBool(layout.tag_align.compare(.gte, layout.payload_align));
70707042 const field_ptr =
......@@ -7083,7 +7055,7 @@ pub const FuncGen = struct {
70837055
70847056 fn airFieldParentPtr(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
70857057 const o = self.ng.object;
7086 const pt = o.pt;
7058 const pt = self.ng.pt;
70877059 const zcu = pt.zcu;
70887060 const ty_pl = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_pl;
70897061 const extra = self.air.extraData(Air.FieldParentPtr, ty_pl.payload).data;
......@@ -7094,8 +7066,8 @@ pub const FuncGen = struct {
70947066 const field_offset = parent_ty.structFieldOffset(extra.field_index, zcu);
70957067 if (field_offset == 0) return field_ptr;
70967068
7097 const res_ty = try o.lowerType(ty_pl.ty.toType());
7098 const llvm_usize = try o.lowerType(Type.usize);
7069 const res_ty = try o.lowerType(pt, ty_pl.ty.toType());
7070 const llvm_usize = try o.lowerType(pt, Type.usize);
70997071
71007072 const field_ptr_int = try self.wip.cast(.ptrtoint, field_ptr, llvm_usize, "");
71017073 const base_ptr_int = try self.wip.bin(
......@@ -7151,7 +7123,8 @@ pub const FuncGen = struct {
71517123
71527124 fn airDbgVarPtr(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
71537125 const o = self.ng.object;
7154 const zcu = o.pt.zcu;
7126 const pt = self.ng.pt;
7127 const zcu = pt.zcu;
71557128 const pl_op = self.air.instructions.items(.data)[@intFromEnum(inst)].pl_op;
71567129 const operand = try self.resolveInst(pl_op.operand);
71577130 const name: Air.NullTerminatedString = @enumFromInt(pl_op.payload);
......@@ -7162,7 +7135,7 @@ pub const FuncGen = struct {
71627135 self.file,
71637136 self.scope,
71647137 self.prev_dbg_line,
7165 try o.lowerDebugType(ptr_ty.childType(zcu)),
7138 try o.lowerDebugType(pt, ptr_ty.childType(zcu)),
71667139 );
71677140
71687141 _ = try self.wip.callIntrinsic(
......@@ -7183,6 +7156,7 @@ pub const FuncGen = struct {
71837156
71847157 fn airDbgVarVal(self: *FuncGen, inst: Air.Inst.Index, is_arg: bool) !Builder.Value {
71857158 const o = self.ng.object;
7159 const pt = self.ng.pt;
71867160 const pl_op = self.air.instructions.items(.data)[@intFromEnum(inst)].pl_op;
71877161 const operand = try self.resolveInst(pl_op.operand);
71887162 const operand_ty = self.typeOf(pl_op.operand);
......@@ -7193,7 +7167,7 @@ pub const FuncGen = struct {
71937167 self.file,
71947168 self.scope,
71957169 self.prev_dbg_line,
7196 try o.lowerDebugType(operand_ty),
7170 try o.lowerDebugType(pt, operand_ty),
71977171 arg_no: {
71987172 self.arg_inline_index += 1;
71997173 break :arg_no self.arg_inline_index;
......@@ -7203,10 +7177,10 @@ pub const FuncGen = struct {
72037177 self.file,
72047178 self.scope,
72057179 self.prev_dbg_line,
7206 try o.lowerDebugType(operand_ty),
7180 try o.lowerDebugType(pt, operand_ty),
72077181 );
72087182
7209 const zcu = o.pt.zcu;
7183 const zcu = pt.zcu;
72107184 const owner_mod = self.ng.ownerModule();
72117185 if (isByRef(operand_ty, zcu)) {
72127186 _ = try self.wip.callIntrinsic(
......@@ -7296,7 +7270,7 @@ pub const FuncGen = struct {
72967270 // This stores whether we need to add an elementtype attribute and
72977271 // if so, the element type itself.
72987272 const llvm_param_attrs = try arena.alloc(Builder.Type, max_param_count);
7299 const pt = o.pt;
7273 const pt = self.ng.pt;
73007274 const zcu = pt.zcu;
73017275 const target = zcu.getTarget();
73027276
......@@ -7326,7 +7300,7 @@ pub const FuncGen = struct {
73267300 const output_inst = try self.resolveInst(output);
73277301 const output_ty = self.typeOf(output);
73287302 assert(output_ty.zigTypeTag(zcu) == .pointer);
7329 const elem_llvm_ty = try o.lowerPtrElemTy(output_ty.childType(zcu));
7303 const elem_llvm_ty = try o.lowerPtrElemTy(pt, output_ty.childType(zcu));
73307304
73317305 switch (constraint[0]) {
73327306 '=' => {},
......@@ -7364,7 +7338,7 @@ pub const FuncGen = struct {
73647338 is_indirect.* = false;
73657339
73667340 const ret_ty = self.typeOfIndex(inst);
7367 llvm_ret_types[llvm_ret_i] = try o.lowerType(ret_ty);
7341 llvm_ret_types[llvm_ret_i] = try o.lowerType(pt, ret_ty);
73687342 llvm_ret_i += 1;
73697343 }
73707344
......@@ -7406,7 +7380,7 @@ pub const FuncGen = struct {
74067380 llvm_param_types[llvm_param_i] = arg_llvm_value.typeOfWip(&self.wip);
74077381 } else {
74087382 const alignment = arg_ty.abiAlignment(zcu).toLlvm();
7409 const arg_llvm_ty = try o.lowerType(arg_ty);
7383 const arg_llvm_ty = try o.lowerType(pt, arg_ty);
74107384 const load_inst =
74117385 try self.wip.load(.normal, arg_llvm_ty, arg_llvm_value, alignment, "");
74127386 llvm_param_values[llvm_param_i] = load_inst;
......@@ -7447,7 +7421,7 @@ pub const FuncGen = struct {
74477421 llvm_param_attrs[llvm_param_i] = if (constraint[0] == '*') blk: {
74487422 if (!is_by_ref) self.maybeMarkAllowZeroAccess(arg_ty.ptrInfo(zcu));
74497423
7450 break :blk try o.lowerPtrElemTy(if (is_by_ref) arg_ty else arg_ty.childType(zcu));
7424 break :blk try o.lowerPtrElemTy(pt, if (is_by_ref) arg_ty else arg_ty.childType(zcu));
74517425 } else .none;
74527426
74537427 llvm_param_i += 1;
......@@ -7465,7 +7439,7 @@ pub const FuncGen = struct {
74657439 if (constraint[0] != '+') continue;
74667440
74677441 const rw_ty = self.typeOf(output);
7468 const llvm_elem_ty = try o.lowerPtrElemTy(rw_ty.childType(zcu));
7442 const llvm_elem_ty = try o.lowerPtrElemTy(pt, rw_ty.childType(zcu));
74697443 if (is_indirect) {
74707444 llvm_param_values[llvm_param_i] = llvm_rw_val;
74717445 llvm_param_types[llvm_param_i] = llvm_rw_val.typeOfWip(&self.wip);
......@@ -7663,13 +7637,13 @@ pub const FuncGen = struct {
76637637 cond: Builder.IntegerCondition,
76647638 ) !Builder.Value {
76657639 const o = self.ng.object;
7666 const pt = o.pt;
7640 const pt = self.ng.pt;
76677641 const zcu = pt.zcu;
76687642 const un_op = self.air.instructions.items(.data)[@intFromEnum(inst)].un_op;
76697643 const operand = try self.resolveInst(un_op);
76707644 const operand_ty = self.typeOf(un_op);
76717645 const optional_ty = if (operand_is_ptr) operand_ty.childType(zcu) else operand_ty;
7672 const optional_llvm_ty = try o.lowerType(optional_ty);
7646 const optional_llvm_ty = try o.lowerType(pt, optional_ty);
76737647 const payload_ty = optional_ty.optionalChild(zcu);
76747648
76757649 const access_kind: Builder.MemoryAccessKind =
......@@ -7714,14 +7688,14 @@ pub const FuncGen = struct {
77147688 operand_is_ptr: bool,
77157689 ) !Builder.Value {
77167690 const o = self.ng.object;
7717 const pt = o.pt;
7691 const pt = self.ng.pt;
77187692 const zcu = pt.zcu;
77197693 const un_op = self.air.instructions.items(.data)[@intFromEnum(inst)].un_op;
77207694 const operand = try self.resolveInst(un_op);
77217695 const operand_ty = self.typeOf(un_op);
77227696 const err_union_ty = if (operand_is_ptr) operand_ty.childType(zcu) else operand_ty;
77237697 const payload_ty = err_union_ty.errorUnionPayload(zcu);
7724 const error_type = try o.errorIntType();
7698 const error_type = try o.errorIntType(pt);
77257699 const zero = try o.builder.intValue(error_type, 0);
77267700
77277701 const access_kind: Builder.MemoryAccessKind =
......@@ -7740,7 +7714,7 @@ pub const FuncGen = struct {
77407714
77417715 if (!payload_ty.hasRuntimeBitsIgnoreComptime(zcu)) {
77427716 const loaded = if (operand_is_ptr)
7743 try self.wip.load(access_kind, try o.lowerType(err_union_ty), operand, .default, "")
7717 try self.wip.load(access_kind, try o.lowerType(pt, err_union_ty), operand, .default, "")
77447718 else
77457719 operand;
77467720 return self.wip.icmp(cond, loaded, zero, "");
......@@ -7749,7 +7723,7 @@ pub const FuncGen = struct {
77497723 const err_field_index = try errUnionErrorOffset(payload_ty, pt);
77507724
77517725 const loaded = if (operand_is_ptr or isByRef(err_union_ty, zcu)) loaded: {
7752 const err_union_llvm_ty = try o.lowerType(err_union_ty);
7726 const err_union_llvm_ty = try o.lowerType(pt, err_union_ty);
77537727 const err_field_ptr =
77547728 try self.wip.gepStruct(err_union_llvm_ty, operand, err_field_index, "");
77557729 break :loaded try self.wip.load(access_kind, error_type, err_field_ptr, .default, "");
......@@ -7759,7 +7733,7 @@ pub const FuncGen = struct {
77597733
77607734 fn airOptionalPayloadPtr(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
77617735 const o = self.ng.object;
7762 const pt = o.pt;
7736 const pt = self.ng.pt;
77637737 const zcu = pt.zcu;
77647738 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
77657739 const operand = try self.resolveInst(ty_op.operand);
......@@ -7774,14 +7748,14 @@ pub const FuncGen = struct {
77747748 // The payload and the optional are the same value.
77757749 return operand;
77767750 }
7777 return self.wip.gepStruct(try o.lowerType(optional_ty), operand, 0, "");
7751 return self.wip.gepStruct(try o.lowerType(pt, optional_ty), operand, 0, "");
77787752 }
77797753
77807754 fn airOptionalPayloadPtrSet(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
77817755 comptime assert(optional_layout_version == 3);
77827756
77837757 const o = self.ng.object;
7784 const pt = o.pt;
7758 const pt = self.ng.pt;
77857759 const zcu = pt.zcu;
77867760 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
77877761 const operand = try self.resolveInst(ty_op.operand);
......@@ -7807,7 +7781,7 @@ pub const FuncGen = struct {
78077781 }
78087782
78097783 // First set the non-null bit.
7810 const optional_llvm_ty = try o.lowerType(optional_ty);
7784 const optional_llvm_ty = try o.lowerType(pt, optional_ty);
78117785 const non_null_ptr = try self.wip.gepStruct(optional_llvm_ty, operand, 1, "");
78127786
78137787 self.maybeMarkAllowZeroAccess(optional_ptr_ty.ptrInfo(zcu));
......@@ -7823,7 +7797,7 @@ pub const FuncGen = struct {
78237797
78247798 fn airOptionalPayload(self: *FuncGen, body_tail: []const Air.Inst.Index) !Builder.Value {
78257799 const o = self.ng.object;
7826 const pt = o.pt;
7800 const pt = self.ng.pt;
78277801 const zcu = pt.zcu;
78287802 const inst = body_tail[0];
78297803 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
......@@ -7837,7 +7811,7 @@ pub const FuncGen = struct {
78377811 return operand;
78387812 }
78397813
7840 const opt_llvm_ty = try o.lowerType(optional_ty);
7814 const opt_llvm_ty = try o.lowerType(pt, optional_ty);
78417815 const can_elide_load = if (isByRef(payload_ty, zcu)) self.canElideLoad(body_tail) else false;
78427816 return self.optPayloadHandle(opt_llvm_ty, operand, optional_ty, can_elide_load);
78437817 }
......@@ -7848,7 +7822,7 @@ pub const FuncGen = struct {
78487822 operand_is_ptr: bool,
78497823 ) !Builder.Value {
78507824 const o = self.ng.object;
7851 const pt = o.pt;
7825 const pt = self.ng.pt;
78527826 const zcu = pt.zcu;
78537827 const inst = body_tail[0];
78547828 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
......@@ -7862,7 +7836,7 @@ pub const FuncGen = struct {
78627836 return if (operand_is_ptr) operand else .none;
78637837 }
78647838 const offset = try errUnionPayloadOffset(payload_ty, pt);
7865 const err_union_llvm_ty = try o.lowerType(err_union_ty);
7839 const err_union_llvm_ty = try o.lowerType(pt, err_union_ty);
78667840 if (operand_is_ptr) {
78677841 return self.wip.gepStruct(err_union_llvm_ty, operand, offset, "");
78687842 } else if (isByRef(err_union_ty, zcu)) {
......@@ -7884,12 +7858,12 @@ pub const FuncGen = struct {
78847858 operand_is_ptr: bool,
78857859 ) !Builder.Value {
78867860 const o = self.ng.object;
7887 const pt = o.pt;
7861 const pt = self.ng.pt;
78887862 const zcu = pt.zcu;
78897863 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
78907864 const operand = try self.resolveInst(ty_op.operand);
78917865 const operand_ty = self.typeOf(ty_op.operand);
7892 const error_type = try o.errorIntType();
7866 const error_type = try o.errorIntType(pt);
78937867 const err_union_ty = if (operand_is_ptr) operand_ty.childType(zcu) else operand_ty;
78947868 if (err_union_ty.errorUnionSet(zcu).errorSetIsEmpty(zcu)) {
78957869 if (operand_is_ptr) {
......@@ -7916,7 +7890,7 @@ pub const FuncGen = struct {
79167890 if (operand_is_ptr or isByRef(err_union_ty, zcu)) {
79177891 if (operand_is_ptr) self.maybeMarkAllowZeroAccess(operand_ty.ptrInfo(zcu));
79187892
7919 const err_union_llvm_ty = try o.lowerType(err_union_ty);
7893 const err_union_llvm_ty = try o.lowerType(pt, err_union_ty);
79207894 const err_field_ptr = try self.wip.gepStruct(err_union_llvm_ty, operand, offset, "");
79217895 return self.wip.load(access_kind, error_type, err_field_ptr, .default, "");
79227896 }
......@@ -7926,7 +7900,7 @@ pub const FuncGen = struct {
79267900
79277901 fn airErrUnionPayloadPtrSet(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
79287902 const o = self.ng.object;
7929 const pt = o.pt;
7903 const pt = self.ng.pt;
79307904 const zcu = pt.zcu;
79317905 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
79327906 const operand = try self.resolveInst(ty_op.operand);
......@@ -7934,7 +7908,7 @@ pub const FuncGen = struct {
79347908 const err_union_ty = err_union_ptr_ty.childType(zcu);
79357909
79367910 const payload_ty = err_union_ty.errorUnionPayload(zcu);
7937 const non_error_val = try o.builder.intValue(try o.errorIntType(), 0);
7911 const non_error_val = try o.builder.intValue(try o.errorIntType(pt), 0);
79387912
79397913 const access_kind: Builder.MemoryAccessKind =
79407914 if (err_union_ptr_ty.isVolatilePtr(zcu)) .@"volatile" else .normal;
......@@ -7945,7 +7919,7 @@ pub const FuncGen = struct {
79457919 _ = try self.wip.store(access_kind, non_error_val, operand, .default);
79467920 return operand;
79477921 }
7948 const err_union_llvm_ty = try o.lowerType(err_union_ty);
7922 const err_union_llvm_ty = try o.lowerType(pt, err_union_ty);
79497923 {
79507924 self.maybeMarkAllowZeroAccess(err_union_ptr_ty.ptrInfo(zcu));
79517925
......@@ -7976,14 +7950,14 @@ pub const FuncGen = struct {
79767950
79777951 fn airSaveErrReturnTraceIndex(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
79787952 const o = self.ng.object;
7979 const pt = o.pt;
7953 const pt = self.ng.pt;
79807954 const zcu = pt.zcu;
79817955
79827956 const ty_pl = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_pl;
79837957 const struct_ty = ty_pl.ty.toType();
79847958 const field_index = ty_pl.payload;
79857959
7986 const struct_llvm_ty = try o.lowerType(struct_ty);
7960 const struct_llvm_ty = try o.lowerType(pt, struct_ty);
79877961 const llvm_field_index = o.llvmFieldIndex(struct_ty, field_index).?;
79887962 assert(self.err_ret_trace != .none);
79897963 const field_ptr =
......@@ -8022,7 +7996,7 @@ pub const FuncGen = struct {
80227996
80237997 fn airWrapOptional(self: *FuncGen, body_tail: []const Air.Inst.Index) !Builder.Value {
80247998 const o = self.ng.object;
8025 const pt = o.pt;
7999 const pt = self.ng.pt;
80268000 const zcu = pt.zcu;
80278001 const inst = body_tail[0];
80288002 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
......@@ -8033,7 +8007,7 @@ pub const FuncGen = struct {
80338007 const operand = try self.resolveInst(ty_op.operand);
80348008 const optional_ty = self.typeOfIndex(inst);
80358009 if (optional_ty.optionalReprIsPayload(zcu)) return operand;
8036 const llvm_optional_ty = try o.lowerType(optional_ty);
8010 const llvm_optional_ty = try o.lowerType(pt, optional_ty);
80378011 if (isByRef(optional_ty, zcu)) {
80388012 const directReturn = self.isNextRet(body_tail);
80398013 const optional_ptr = if (directReturn)
......@@ -8056,7 +8030,7 @@ pub const FuncGen = struct {
80568030
80578031 fn airWrapErrUnionPayload(self: *FuncGen, body_tail: []const Air.Inst.Index) !Builder.Value {
80588032 const o = self.ng.object;
8059 const pt = o.pt;
8033 const pt = self.ng.pt;
80608034 const zcu = pt.zcu;
80618035 const inst = body_tail[0];
80628036 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
......@@ -8066,8 +8040,8 @@ pub const FuncGen = struct {
80668040 if (!payload_ty.hasRuntimeBitsIgnoreComptime(zcu)) {
80678041 return operand;
80688042 }
8069 const ok_err_code = try o.builder.intValue(try o.errorIntType(), 0);
8070 const err_un_llvm_ty = try o.lowerType(err_un_ty);
8043 const ok_err_code = try o.builder.intValue(try o.errorIntType(pt), 0);
8044 const err_un_llvm_ty = try o.lowerType(pt, err_un_ty);
80718045
80728046 const payload_offset = try errUnionPayloadOffset(payload_ty, pt);
80738047 const error_offset = try errUnionErrorOffset(payload_ty, pt);
......@@ -8098,7 +8072,7 @@ pub const FuncGen = struct {
80988072
80998073 fn airWrapErrUnionErr(self: *FuncGen, body_tail: []const Air.Inst.Index) !Builder.Value {
81008074 const o = self.ng.object;
8101 const pt = o.pt;
8075 const pt = self.ng.pt;
81028076 const zcu = pt.zcu;
81038077 const inst = body_tail[0];
81048078 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
......@@ -8106,7 +8080,7 @@ pub const FuncGen = struct {
81068080 const payload_ty = err_un_ty.errorUnionPayload(zcu);
81078081 const operand = try self.resolveInst(ty_op.operand);
81088082 if (!payload_ty.hasRuntimeBitsIgnoreComptime(zcu)) return operand;
8109 const err_un_llvm_ty = try o.lowerType(err_un_ty);
8083 const err_un_llvm_ty = try o.lowerType(pt, err_un_ty);
81108084
81118085 const payload_offset = try errUnionPayloadOffset(payload_ty, pt);
81128086 const error_offset = try errUnionErrorOffset(payload_ty, pt);
......@@ -8139,9 +8113,10 @@ pub const FuncGen = struct {
81398113
81408114 fn airWasmMemorySize(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
81418115 const o = self.ng.object;
8116 const pt = self.ng.pt;
81428117 const pl_op = self.air.instructions.items(.data)[@intFromEnum(inst)].pl_op;
81438118 const index = pl_op.payload;
8144 const llvm_usize = try o.lowerType(Type.usize);
8119 const llvm_usize = try o.lowerType(pt, Type.usize);
81458120 return self.wip.callIntrinsic(.normal, .none, .@"wasm.memory.size", &.{llvm_usize}, &.{
81468121 try o.builder.intValue(.i32, index),
81478122 }, "");
......@@ -8149,9 +8124,10 @@ pub const FuncGen = struct {
81498124
81508125 fn airWasmMemoryGrow(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
81518126 const o = self.ng.object;
8127 const pt = self.ng.pt;
81528128 const pl_op = self.air.instructions.items(.data)[@intFromEnum(inst)].pl_op;
81538129 const index = pl_op.payload;
8154 const llvm_isize = try o.lowerType(Type.isize);
8130 const llvm_isize = try o.lowerType(pt, Type.isize);
81558131 return self.wip.callIntrinsic(.normal, .none, .@"wasm.memory.grow", &.{llvm_isize}, &.{
81568132 try o.builder.intValue(.i32, index), try self.resolveInst(pl_op.operand),
81578133 }, "");
......@@ -8159,7 +8135,7 @@ pub const FuncGen = struct {
81598135
81608136 fn airVectorStoreElem(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
81618137 const o = self.ng.object;
8162 const pt = o.pt;
8138 const pt = self.ng.pt;
81638139 const zcu = pt.zcu;
81648140 const data = self.air.instructions.items(.data)[@intFromEnum(inst)].vector_store_elem;
81658141 const extra = self.air.extraData(Air.Bin, data.payload).data;
......@@ -8175,7 +8151,7 @@ pub const FuncGen = struct {
81758151 // https://github.com/ziglang/zig/issues/18652#issuecomment-2452844908
81768152 const access_kind: Builder.MemoryAccessKind =
81778153 if (vector_ptr_ty.isVolatilePtr(zcu)) .@"volatile" else .normal;
8178 const elem_llvm_ty = try o.lowerType(vector_ptr_ty.childType(zcu));
8154 const elem_llvm_ty = try o.lowerType(pt, vector_ptr_ty.childType(zcu));
81798155 const alignment = vector_ptr_ty.ptrAlignment(zcu).toLlvm();
81808156 const loaded = try self.wip.load(access_kind, elem_llvm_ty, vector_ptr, alignment, "");
81818157
......@@ -8186,14 +8162,16 @@ pub const FuncGen = struct {
81868162
81878163 fn airRuntimeNavPtr(fg: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
81888164 const o = fg.ng.object;
8165 const pt = fg.ng.pt;
81898166 const ty_nav = fg.air.instructions.items(.data)[@intFromEnum(inst)].ty_nav;
8190 const llvm_ptr_const = try o.lowerNavRefValue(ty_nav.nav);
8167 const llvm_ptr_const = try o.lowerNavRefValue(pt, ty_nav.nav);
81918168 return llvm_ptr_const.toValue();
81928169 }
81938170
81948171 fn airMin(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
81958172 const o = self.ng.object;
8196 const zcu = o.pt.zcu;
8173 const pt = self.ng.pt;
8174 const zcu = pt.zcu;
81978175 const bin_op = self.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;
81988176 const lhs = try self.resolveInst(bin_op.lhs);
81998177 const rhs = try self.resolveInst(bin_op.rhs);
......@@ -8205,7 +8183,7 @@ pub const FuncGen = struct {
82058183 .normal,
82068184 .none,
82078185 if (scalar_ty.isSignedInt(zcu)) .smin else .umin,
8208 &.{try o.lowerType(inst_ty)},
8186 &.{try o.lowerType(pt, inst_ty)},
82098187 &.{ lhs, rhs },
82108188 "",
82118189 );
......@@ -8213,7 +8191,8 @@ pub const FuncGen = struct {
82138191
82148192 fn airMax(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
82158193 const o = self.ng.object;
8216 const zcu = o.pt.zcu;
8194 const pt = self.ng.pt;
8195 const zcu = pt.zcu;
82178196 const bin_op = self.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;
82188197 const lhs = try self.resolveInst(bin_op.lhs);
82198198 const rhs = try self.resolveInst(bin_op.rhs);
......@@ -8225,7 +8204,7 @@ pub const FuncGen = struct {
82258204 .normal,
82268205 .none,
82278206 if (scalar_ty.isSignedInt(zcu)) .smax else .umax,
8228 &.{try o.lowerType(inst_ty)},
8207 &.{try o.lowerType(pt, inst_ty)},
82298208 &.{ lhs, rhs },
82308209 "",
82318210 );
......@@ -8233,17 +8212,17 @@ pub const FuncGen = struct {
82338212
82348213 fn airSlice(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
82358214 const o = self.ng.object;
8215 const pt = self.ng.pt;
82368216 const ty_pl = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_pl;
82378217 const bin_op = self.air.extraData(Air.Bin, ty_pl.payload).data;
82388218 const ptr = try self.resolveInst(bin_op.lhs);
82398219 const len = try self.resolveInst(bin_op.rhs);
82408220 const inst_ty = self.typeOfIndex(inst);
8241 return self.wip.buildAggregate(try o.lowerType(inst_ty), &.{ ptr, len }, "");
8221 return self.wip.buildAggregate(try o.lowerType(pt, inst_ty), &.{ ptr, len }, "");
82428222 }
82438223
82448224 fn airAdd(self: *FuncGen, inst: Air.Inst.Index, fast: Builder.FastMathKind) !Builder.Value {
8245 const o = self.ng.object;
8246 const zcu = o.pt.zcu;
8225 const zcu = self.ng.pt.zcu;
82478226 const bin_op = self.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;
82488227 const lhs = try self.resolveInst(bin_op.lhs);
82498228 const rhs = try self.resolveInst(bin_op.rhs);
......@@ -8261,7 +8240,8 @@ pub const FuncGen = struct {
82618240 unsigned_intrinsic: Builder.Intrinsic,
82628241 ) !Builder.Value {
82638242 const o = fg.ng.object;
8264 const zcu = o.pt.zcu;
8243 const pt = fg.ng.pt;
8244 const zcu = pt.zcu;
82658245
82668246 const bin_op = fg.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;
82678247 const lhs = try fg.resolveInst(bin_op.lhs);
......@@ -8270,7 +8250,7 @@ pub const FuncGen = struct {
82708250 const scalar_ty = inst_ty.scalarType(zcu);
82718251
82728252 const intrinsic = if (scalar_ty.isSignedInt(zcu)) signed_intrinsic else unsigned_intrinsic;
8273 const llvm_inst_ty = try o.lowerType(inst_ty);
8253 const llvm_inst_ty = try o.lowerType(pt, inst_ty);
82748254 const results =
82758255 try fg.wip.callIntrinsic(.normal, .none, intrinsic, &.{llvm_inst_ty}, &.{ lhs, rhs }, "");
82768256
......@@ -8309,7 +8289,8 @@ pub const FuncGen = struct {
83098289
83108290 fn airAddSat(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
83118291 const o = self.ng.object;
8312 const zcu = o.pt.zcu;
8292 const pt = self.ng.pt;
8293 const zcu = pt.zcu;
83138294 const bin_op = self.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;
83148295 const lhs = try self.resolveInst(bin_op.lhs);
83158296 const rhs = try self.resolveInst(bin_op.rhs);
......@@ -8321,15 +8302,14 @@ pub const FuncGen = struct {
83218302 .normal,
83228303 .none,
83238304 if (scalar_ty.isSignedInt(zcu)) .@"sadd.sat" else .@"uadd.sat",
8324 &.{try o.lowerType(inst_ty)},
8305 &.{try o.lowerType(pt, inst_ty)},
83258306 &.{ lhs, rhs },
83268307 "",
83278308 );
83288309 }
83298310
83308311 fn airSub(self: *FuncGen, inst: Air.Inst.Index, fast: Builder.FastMathKind) !Builder.Value {
8331 const o = self.ng.object;
8332 const zcu = o.pt.zcu;
8312 const zcu = self.ng.pt.zcu;
83338313 const bin_op = self.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;
83348314 const lhs = try self.resolveInst(bin_op.lhs);
83358315 const rhs = try self.resolveInst(bin_op.rhs);
......@@ -8350,7 +8330,8 @@ pub const FuncGen = struct {
83508330
83518331 fn airSubSat(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
83528332 const o = self.ng.object;
8353 const zcu = o.pt.zcu;
8333 const pt = self.ng.pt;
8334 const zcu = pt.zcu;
83548335 const bin_op = self.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;
83558336 const lhs = try self.resolveInst(bin_op.lhs);
83568337 const rhs = try self.resolveInst(bin_op.rhs);
......@@ -8362,15 +8343,14 @@ pub const FuncGen = struct {
83628343 .normal,
83638344 .none,
83648345 if (scalar_ty.isSignedInt(zcu)) .@"ssub.sat" else .@"usub.sat",
8365 &.{try o.lowerType(inst_ty)},
8346 &.{try o.lowerType(pt, inst_ty)},
83668347 &.{ lhs, rhs },
83678348 "",
83688349 );
83698350 }
83708351
83718352 fn airMul(self: *FuncGen, inst: Air.Inst.Index, fast: Builder.FastMathKind) !Builder.Value {
8372 const o = self.ng.object;
8373 const zcu = o.pt.zcu;
8353 const zcu = self.ng.pt.zcu;
83748354 const bin_op = self.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;
83758355 const lhs = try self.resolveInst(bin_op.lhs);
83768356 const rhs = try self.resolveInst(bin_op.rhs);
......@@ -8391,7 +8371,8 @@ pub const FuncGen = struct {
83918371
83928372 fn airMulSat(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
83938373 const o = self.ng.object;
8394 const zcu = o.pt.zcu;
8374 const pt = self.ng.pt;
8375 const zcu = pt.zcu;
83958376 const bin_op = self.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;
83968377 const lhs = try self.resolveInst(bin_op.lhs);
83978378 const rhs = try self.resolveInst(bin_op.rhs);
......@@ -8403,7 +8384,7 @@ pub const FuncGen = struct {
84038384 .normal,
84048385 .none,
84058386 if (scalar_ty.isSignedInt(zcu)) .@"smul.fix.sat" else .@"umul.fix.sat",
8406 &.{try o.lowerType(inst_ty)},
8387 &.{try o.lowerType(pt, inst_ty)},
84078388 &.{ lhs, rhs, .@"0" },
84088389 "",
84098390 );
......@@ -8419,8 +8400,7 @@ pub const FuncGen = struct {
84198400 }
84208401
84218402 fn airDivTrunc(self: *FuncGen, inst: Air.Inst.Index, fast: Builder.FastMathKind) !Builder.Value {
8422 const o = self.ng.object;
8423 const zcu = o.pt.zcu;
8403 const zcu = self.ng.pt.zcu;
84248404 const bin_op = self.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;
84258405 const lhs = try self.resolveInst(bin_op.lhs);
84268406 const rhs = try self.resolveInst(bin_op.rhs);
......@@ -8436,7 +8416,8 @@ pub const FuncGen = struct {
84368416
84378417 fn airDivFloor(self: *FuncGen, inst: Air.Inst.Index, fast: Builder.FastMathKind) !Builder.Value {
84388418 const o = self.ng.object;
8439 const zcu = o.pt.zcu;
8419 const pt = self.ng.pt;
8420 const zcu = pt.zcu;
84408421 const bin_op = self.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;
84418422 const lhs = try self.resolveInst(bin_op.lhs);
84428423 const rhs = try self.resolveInst(bin_op.rhs);
......@@ -8448,7 +8429,7 @@ pub const FuncGen = struct {
84488429 return self.buildFloatOp(.floor, fast, inst_ty, 1, .{result});
84498430 }
84508431 if (scalar_ty.isSignedInt(zcu)) {
8451 const inst_llvm_ty = try o.lowerType(inst_ty);
8432 const inst_llvm_ty = try o.lowerType(pt, inst_ty);
84528433
84538434 const ExpectedContents = [std.math.big.int.calcTwosCompLimbCount(256)]std.math.big.Limb;
84548435 var stack align(@max(
......@@ -8485,8 +8466,7 @@ pub const FuncGen = struct {
84858466 }
84868467
84878468 fn airDivExact(self: *FuncGen, inst: Air.Inst.Index, fast: Builder.FastMathKind) !Builder.Value {
8488 const o = self.ng.object;
8489 const zcu = o.pt.zcu;
8469 const zcu = self.ng.pt.zcu;
84908470 const bin_op = self.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;
84918471 const lhs = try self.resolveInst(bin_op.lhs);
84928472 const rhs = try self.resolveInst(bin_op.rhs);
......@@ -8503,8 +8483,7 @@ pub const FuncGen = struct {
85038483 }
85048484
85058485 fn airRem(self: *FuncGen, inst: Air.Inst.Index, fast: Builder.FastMathKind) !Builder.Value {
8506 const o = self.ng.object;
8507 const zcu = o.pt.zcu;
8486 const zcu = self.ng.pt.zcu;
85088487 const bin_op = self.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;
85098488 const lhs = try self.resolveInst(bin_op.lhs);
85108489 const rhs = try self.resolveInst(bin_op.rhs);
......@@ -8521,12 +8500,13 @@ pub const FuncGen = struct {
85218500
85228501 fn airMod(self: *FuncGen, inst: Air.Inst.Index, fast: Builder.FastMathKind) !Builder.Value {
85238502 const o = self.ng.object;
8524 const zcu = o.pt.zcu;
8503 const pt = self.ng.pt;
8504 const zcu = pt.zcu;
85258505 const bin_op = self.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;
85268506 const lhs = try self.resolveInst(bin_op.lhs);
85278507 const rhs = try self.resolveInst(bin_op.rhs);
85288508 const inst_ty = self.typeOfIndex(inst);
8529 const inst_llvm_ty = try o.lowerType(inst_ty);
8509 const inst_llvm_ty = try o.lowerType(pt, inst_ty);
85308510 const scalar_ty = inst_ty.scalarType(zcu);
85318511
85328512 if (scalar_ty.isRuntimeFloat()) {
......@@ -8574,17 +8554,18 @@ pub const FuncGen = struct {
85748554
85758555 fn airPtrAdd(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
85768556 const o = self.ng.object;
8577 const zcu = o.pt.zcu;
8557 const pt = self.ng.pt;
8558 const zcu = pt.zcu;
85788559 const ty_pl = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_pl;
85798560 const bin_op = self.air.extraData(Air.Bin, ty_pl.payload).data;
85808561 const ptr = try self.resolveInst(bin_op.lhs);
85818562 const offset = try self.resolveInst(bin_op.rhs);
85828563 const ptr_ty = self.typeOf(bin_op.lhs);
8583 const llvm_elem_ty = try o.lowerPtrElemTy(ptr_ty.childType(zcu));
8564 const llvm_elem_ty = try o.lowerPtrElemTy(pt, ptr_ty.childType(zcu));
85848565 switch (ptr_ty.ptrSize(zcu)) {
85858566 // It's a pointer to an array, so according to LLVM we need an extra GEP index.
85868567 .one => return self.wip.gep(.inbounds, llvm_elem_ty, ptr, &.{
8587 try o.builder.intValue(try o.lowerType(Type.usize), 0), offset,
8568 try o.builder.intValue(try o.lowerType(pt, Type.usize), 0), offset,
85888569 }, ""),
85898570 .c, .many => return self.wip.gep(.inbounds, llvm_elem_ty, ptr, &.{offset}, ""),
85908571 .slice => {
......@@ -8596,18 +8577,19 @@ pub const FuncGen = struct {
85968577
85978578 fn airPtrSub(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
85988579 const o = self.ng.object;
8599 const zcu = o.pt.zcu;
8580 const pt = self.ng.pt;
8581 const zcu = pt.zcu;
86008582 const ty_pl = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_pl;
86018583 const bin_op = self.air.extraData(Air.Bin, ty_pl.payload).data;
86028584 const ptr = try self.resolveInst(bin_op.lhs);
86038585 const offset = try self.resolveInst(bin_op.rhs);
86048586 const negative_offset = try self.wip.neg(offset, "");
86058587 const ptr_ty = self.typeOf(bin_op.lhs);
8606 const llvm_elem_ty = try o.lowerPtrElemTy(ptr_ty.childType(zcu));
8588 const llvm_elem_ty = try o.lowerPtrElemTy(pt, ptr_ty.childType(zcu));
86078589 switch (ptr_ty.ptrSize(zcu)) {
86088590 // It's a pointer to an array, so according to LLVM we need an extra GEP index.
86098591 .one => return self.wip.gep(.inbounds, llvm_elem_ty, ptr, &.{
8610 try o.builder.intValue(try o.lowerType(Type.usize), 0), negative_offset,
8592 try o.builder.intValue(try o.lowerType(pt, Type.usize), 0), negative_offset,
86118593 }, ""),
86128594 .c, .many => return self.wip.gep(.inbounds, llvm_elem_ty, ptr, &.{negative_offset}, ""),
86138595 .slice => {
......@@ -8624,7 +8606,7 @@ pub const FuncGen = struct {
86248606 unsigned_intrinsic: Builder.Intrinsic,
86258607 ) !Builder.Value {
86268608 const o = self.ng.object;
8627 const pt = o.pt;
8609 const pt = self.ng.pt;
86288610 const zcu = pt.zcu;
86298611 const ty_pl = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_pl;
86308612 const extra = self.air.extraData(Air.Bin, ty_pl.payload).data;
......@@ -8637,8 +8619,8 @@ pub const FuncGen = struct {
86378619 const inst_ty = self.typeOfIndex(inst);
86388620
86398621 const intrinsic = if (scalar_ty.isSignedInt(zcu)) signed_intrinsic else unsigned_intrinsic;
8640 const llvm_inst_ty = try o.lowerType(inst_ty);
8641 const llvm_lhs_ty = try o.lowerType(lhs_ty);
8622 const llvm_inst_ty = try o.lowerType(pt, inst_ty);
8623 const llvm_lhs_ty = try o.lowerType(pt, lhs_ty);
86428624 const results =
86438625 try self.wip.callIntrinsic(.normal, .none, intrinsic, &.{llvm_lhs_ty}, &.{ lhs, rhs }, "");
86448626
......@@ -8718,7 +8700,7 @@ pub const FuncGen = struct {
87188700 return o.builder.addFunction(
87198701 try o.builder.fnType(return_type, param_types, .normal),
87208702 fn_name,
8721 toLlvmAddressSpace(.generic, o.pt.zcu.getTarget()),
8703 toLlvmAddressSpace(.generic, self.ng.pt.zcu.getTarget()),
87228704 );
87238705 }
87248706
......@@ -8732,10 +8714,11 @@ pub const FuncGen = struct {
87328714 params: [2]Builder.Value,
87338715 ) !Builder.Value {
87348716 const o = self.ng.object;
8735 const zcu = o.pt.zcu;
8717 const pt = self.ng.pt;
8718 const zcu = pt.zcu;
87368719 const target = zcu.getTarget();
87378720 const scalar_ty = ty.scalarType(zcu);
8738 const scalar_llvm_ty = try o.lowerType(scalar_ty);
8721 const scalar_llvm_ty = try o.lowerType(pt, scalar_ty);
87398722
87408723 if (intrinsicsAllowed(scalar_ty, target)) {
87418724 const cond: Builder.FloatCondition = switch (pred) {
......@@ -8838,10 +8821,11 @@ pub const FuncGen = struct {
88388821 params: [params_len]Builder.Value,
88398822 ) !Builder.Value {
88408823 const o = self.ng.object;
8841 const zcu = o.pt.zcu;
8824 const pt = self.ng.pt;
8825 const zcu = pt.zcu;
88428826 const target = zcu.getTarget();
88438827 const scalar_ty = ty.scalarType(zcu);
8844 const llvm_ty = try o.lowerType(ty);
8828 const llvm_ty = try o.lowerType(pt, ty);
88458829
88468830 if (op != .tan and intrinsicsAllowed(scalar_ty, target)) switch (op) {
88478831 // Some operations are dedicated LLVM instructions, not available as intrinsics
......@@ -8979,7 +8963,7 @@ pub const FuncGen = struct {
89798963
89808964 fn airShlWithOverflow(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
89818965 const o = self.ng.object;
8982 const pt = o.pt;
8966 const pt = self.ng.pt;
89838967 const zcu = pt.zcu;
89848968 const ty_pl = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_pl;
89858969 const extra = self.air.extraData(Air.Bin, ty_pl.payload).data;
......@@ -8993,9 +8977,9 @@ pub const FuncGen = struct {
89938977 const lhs_scalar_ty = lhs_ty.scalarType(zcu);
89948978
89958979 const dest_ty = self.typeOfIndex(inst);
8996 const llvm_dest_ty = try o.lowerType(dest_ty);
8980 const llvm_dest_ty = try o.lowerType(pt, dest_ty);
89978981
8998 const casted_rhs = try self.wip.conv(.unsigned, rhs, try o.lowerType(lhs_ty), "");
8982 const casted_rhs = try self.wip.conv(.unsigned, rhs, try o.lowerType(pt, lhs_ty), "");
89998983
90008984 const result = try self.wip.bin(.shl, lhs, casted_rhs, "");
90018985 const reconstructed = try self.wip.bin(if (lhs_scalar_ty.isSignedInt(zcu))
......@@ -9052,7 +9036,8 @@ pub const FuncGen = struct {
90529036
90539037 fn airShlExact(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
90549038 const o = self.ng.object;
9055 const zcu = o.pt.zcu;
9039 const pt = self.ng.pt;
9040 const zcu = pt.zcu;
90569041 const bin_op = self.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;
90579042
90589043 const lhs = try self.resolveInst(bin_op.lhs);
......@@ -9063,7 +9048,7 @@ pub const FuncGen = struct {
90639048 return self.ng.todo("implement vector shifts with scalar rhs", .{});
90649049 const lhs_scalar_ty = lhs_ty.scalarType(zcu);
90659050
9066 const casted_rhs = try self.wip.conv(.unsigned, rhs, try o.lowerType(lhs_ty), "");
9051 const casted_rhs = try self.wip.conv(.unsigned, rhs, try o.lowerType(pt, lhs_ty), "");
90679052 return self.wip.bin(if (lhs_scalar_ty.isSignedInt(zcu))
90689053 .@"shl nsw"
90699054 else
......@@ -9072,7 +9057,8 @@ pub const FuncGen = struct {
90729057
90739058 fn airShl(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
90749059 const o = self.ng.object;
9075 const zcu = o.pt.zcu;
9060 const pt = self.ng.pt;
9061 const zcu = pt.zcu;
90769062 const bin_op = self.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;
90779063
90789064 const lhs = try self.resolveInst(bin_op.lhs);
......@@ -9082,13 +9068,13 @@ pub const FuncGen = struct {
90829068 if (lhs_ty.isVector(zcu) and !self.typeOf(bin_op.rhs).isVector(zcu))
90839069 return self.ng.todo("implement vector shifts with scalar rhs", .{});
90849070
9085 const casted_rhs = try self.wip.conv(.unsigned, rhs, try o.lowerType(lhs_ty), "");
9071 const casted_rhs = try self.wip.conv(.unsigned, rhs, try o.lowerType(pt, lhs_ty), "");
90869072 return self.wip.bin(.shl, lhs, casted_rhs, "");
90879073 }
90889074
90899075 fn airShlSat(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
90909076 const o = self.ng.object;
9091 const pt = o.pt;
9077 const pt = self.ng.pt;
90929078 const zcu = pt.zcu;
90939079 const bin_op = self.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;
90949080
......@@ -9097,7 +9083,7 @@ pub const FuncGen = struct {
90979083
90989084 const lhs_ty = self.typeOf(bin_op.lhs);
90999085 const lhs_info = lhs_ty.intInfo(zcu);
9100 const llvm_lhs_ty = try o.lowerType(lhs_ty);
9086 const llvm_lhs_ty = try o.lowerType(pt, lhs_ty);
91019087 const llvm_lhs_scalar_ty = llvm_lhs_ty.scalarType(&o.builder);
91029088
91039089 const rhs_ty = self.typeOf(bin_op.rhs);
......@@ -9105,7 +9091,7 @@ pub const FuncGen = struct {
91059091 return self.ng.todo("implement vector shifts with scalar rhs", .{});
91069092 const rhs_info = rhs_ty.intInfo(zcu);
91079093 assert(rhs_info.signedness == .unsigned);
9108 const llvm_rhs_ty = try o.lowerType(rhs_ty);
9094 const llvm_rhs_ty = try o.lowerType(pt, rhs_ty);
91099095 const llvm_rhs_scalar_ty = llvm_rhs_ty.scalarType(&o.builder);
91109096
91119097 const result = try self.wip.callIntrinsic(
......@@ -9168,7 +9154,8 @@ pub const FuncGen = struct {
91689154
91699155 fn airShr(self: *FuncGen, inst: Air.Inst.Index, is_exact: bool) !Builder.Value {
91709156 const o = self.ng.object;
9171 const zcu = o.pt.zcu;
9157 const pt = self.ng.pt;
9158 const zcu = pt.zcu;
91729159 const bin_op = self.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;
91739160
91749161 const lhs = try self.resolveInst(bin_op.lhs);
......@@ -9179,7 +9166,7 @@ pub const FuncGen = struct {
91799166 return self.ng.todo("implement vector shifts with scalar rhs", .{});
91809167 const lhs_scalar_ty = lhs_ty.scalarType(zcu);
91819168
9182 const casted_rhs = try self.wip.conv(.unsigned, rhs, try o.lowerType(lhs_ty), "");
9169 const casted_rhs = try self.wip.conv(.unsigned, rhs, try o.lowerType(pt, lhs_ty), "");
91839170 const is_signed_int = lhs_scalar_ty.isSignedInt(zcu);
91849171
91859172 return self.wip.bin(if (is_exact)
......@@ -9189,7 +9176,8 @@ pub const FuncGen = struct {
91899176
91909177 fn airAbs(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
91919178 const o = self.ng.object;
9192 const zcu = o.pt.zcu;
9179 const pt = self.ng.pt;
9180 const zcu = pt.zcu;
91939181 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
91949182 const operand = try self.resolveInst(ty_op.operand);
91959183 const operand_ty = self.typeOf(ty_op.operand);
......@@ -9200,7 +9188,7 @@ pub const FuncGen = struct {
92009188 .normal,
92019189 .none,
92029190 .abs,
9203 &.{try o.lowerType(operand_ty)},
9191 &.{try o.lowerType(pt, operand_ty)},
92049192 &.{ operand, try o.builder.intValue(.i1, 0) },
92059193 "",
92069194 ),
......@@ -9211,10 +9199,11 @@ pub const FuncGen = struct {
92119199
92129200 fn airIntCast(fg: *FuncGen, inst: Air.Inst.Index, safety: bool) !Builder.Value {
92139201 const o = fg.ng.object;
9214 const zcu = o.pt.zcu;
9202 const pt = fg.ng.pt;
9203 const zcu = pt.zcu;
92159204 const ty_op = fg.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
92169205 const dest_ty = fg.typeOfIndex(inst);
9217 const dest_llvm_ty = try o.lowerType(dest_ty);
9206 const dest_llvm_ty = try o.lowerType(pt, dest_ty);
92189207 const operand = try fg.resolveInst(ty_op.operand);
92199208 const operand_ty = fg.typeOf(ty_op.operand);
92209209 const operand_info = operand_ty.intInfo(zcu);
......@@ -9243,8 +9232,8 @@ pub const FuncGen = struct {
92439232
92449233 if (!have_min_check and !have_max_check) break :safety;
92459234
9246 const operand_llvm_ty = try o.lowerType(operand_ty);
9247 const operand_scalar_llvm_ty = try o.lowerType(operand_scalar);
9235 const operand_llvm_ty = try o.lowerType(pt, operand_ty);
9236 const operand_scalar_llvm_ty = try o.lowerType(pt, operand_scalar);
92489237
92499238 const is_vector = operand_ty.zigTypeTag(zcu) == .vector;
92509239 assert(is_vector == (dest_ty.zigTypeTag(zcu) == .vector));
......@@ -9313,15 +9302,17 @@ pub const FuncGen = struct {
93139302
93149303 fn airTrunc(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
93159304 const o = self.ng.object;
9305 const pt = self.ng.pt;
93169306 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
93179307 const operand = try self.resolveInst(ty_op.operand);
9318 const dest_llvm_ty = try o.lowerType(self.typeOfIndex(inst));
9308 const dest_llvm_ty = try o.lowerType(pt, self.typeOfIndex(inst));
93199309 return self.wip.cast(.trunc, operand, dest_llvm_ty, "");
93209310 }
93219311
93229312 fn airFptrunc(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
93239313 const o = self.ng.object;
9324 const zcu = o.pt.zcu;
9314 const pt = self.ng.pt;
9315 const zcu = pt.zcu;
93259316 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
93269317 const operand = try self.resolveInst(ty_op.operand);
93279318 const operand_ty = self.typeOf(ty_op.operand);
......@@ -9329,10 +9320,10 @@ pub const FuncGen = struct {
93299320 const target = zcu.getTarget();
93309321
93319322 if (intrinsicsAllowed(dest_ty, target) and intrinsicsAllowed(operand_ty, target)) {
9332 return self.wip.cast(.fptrunc, operand, try o.lowerType(dest_ty), "");
9323 return self.wip.cast(.fptrunc, operand, try o.lowerType(pt, dest_ty), "");
93339324 } else {
9334 const operand_llvm_ty = try o.lowerType(operand_ty);
9335 const dest_llvm_ty = try o.lowerType(dest_ty);
9325 const operand_llvm_ty = try o.lowerType(pt, operand_ty);
9326 const dest_llvm_ty = try o.lowerType(pt, dest_ty);
93369327
93379328 const dest_bits = dest_ty.floatBits(target);
93389329 const src_bits = operand_ty.floatBits(target);
......@@ -9355,7 +9346,8 @@ pub const FuncGen = struct {
93559346
93569347 fn airFpext(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
93579348 const o = self.ng.object;
9358 const zcu = o.pt.zcu;
9349 const pt = self.ng.pt;
9350 const zcu = pt.zcu;
93599351 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
93609352 const operand = try self.resolveInst(ty_op.operand);
93619353 const operand_ty = self.typeOf(ty_op.operand);
......@@ -9363,10 +9355,10 @@ pub const FuncGen = struct {
93639355 const target = zcu.getTarget();
93649356
93659357 if (intrinsicsAllowed(dest_ty, target) and intrinsicsAllowed(operand_ty, target)) {
9366 return self.wip.cast(.fpext, operand, try o.lowerType(dest_ty), "");
9358 return self.wip.cast(.fpext, operand, try o.lowerType(pt, dest_ty), "");
93679359 } else {
9368 const operand_llvm_ty = try o.lowerType(operand_ty);
9369 const dest_llvm_ty = try o.lowerType(dest_ty);
9360 const operand_llvm_ty = try o.lowerType(pt, operand_ty);
9361 const dest_llvm_ty = try o.lowerType(pt, dest_ty);
93709362
93719363 const dest_bits = dest_ty.scalarType(zcu).floatBits(target);
93729364 const src_bits = operand_ty.scalarType(zcu).floatBits(target);
......@@ -9403,11 +9395,11 @@ pub const FuncGen = struct {
94039395
94049396 fn bitCast(self: *FuncGen, operand: Builder.Value, operand_ty: Type, inst_ty: Type) !Builder.Value {
94059397 const o = self.ng.object;
9406 const pt = o.pt;
9398 const pt = self.ng.pt;
94079399 const zcu = pt.zcu;
94089400 const operand_is_ref = isByRef(operand_ty, zcu);
94099401 const result_is_ref = isByRef(inst_ty, zcu);
9410 const llvm_dest_ty = try o.lowerType(inst_ty);
9402 const llvm_dest_ty = try o.lowerType(pt, inst_ty);
94119403
94129404 if (operand_is_ref and result_is_ref) {
94139405 // They are both pointers, so just return the same opaque pointer :)
......@@ -9442,7 +9434,7 @@ pub const FuncGen = struct {
94429434 } else {
94439435 // If the ABI size of the element type is not evenly divisible by size in bits;
94449436 // a simple bitcast will not work, and we fall back to extractelement.
9445 const llvm_usize = try o.lowerType(Type.usize);
9437 const llvm_usize = try o.lowerType(pt, Type.usize);
94469438 const usize_zero = try o.builder.intValue(llvm_usize, 0);
94479439 const vector_len = operand_ty.arrayLen(zcu);
94489440 var i: u64 = 0;
......@@ -9458,7 +9450,7 @@ pub const FuncGen = struct {
94589450 return array_ptr;
94599451 } else if (operand_ty.zigTypeTag(zcu) == .array and inst_ty.zigTypeTag(zcu) == .vector) {
94609452 const elem_ty = operand_ty.childType(zcu);
9461 const llvm_vector_ty = try o.lowerType(inst_ty);
9453 const llvm_vector_ty = try o.lowerType(pt, inst_ty);
94629454 if (!operand_is_ref) return self.ng.todo("implement bitcast non-ref array to vector", .{});
94639455
94649456 const bitcast_ok = elem_ty.bitSize(zcu) == elem_ty.abiSize(zcu) * 8;
......@@ -9470,9 +9462,9 @@ pub const FuncGen = struct {
94709462 } else {
94719463 // If the ABI size of the element type is not evenly divisible by size in bits;
94729464 // a simple bitcast will not work, and we fall back to extractelement.
9473 const array_llvm_ty = try o.lowerType(operand_ty);
9474 const elem_llvm_ty = try o.lowerType(elem_ty);
9475 const llvm_usize = try o.lowerType(Type.usize);
9465 const array_llvm_ty = try o.lowerType(pt, operand_ty);
9466 const elem_llvm_ty = try o.lowerType(pt, elem_ty);
9467 const llvm_usize = try o.lowerType(pt, Type.usize);
94769468 const usize_zero = try o.builder.intValue(llvm_usize, 0);
94779469 const vector_len = operand_ty.arrayLen(zcu);
94789470 var vector = try o.builder.poisonValue(llvm_vector_ty);
......@@ -9519,7 +9511,7 @@ pub const FuncGen = struct {
95199511
95209512 fn airArg(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
95219513 const o = self.ng.object;
9522 const pt = o.pt;
9514 const pt = self.ng.pt;
95239515 const zcu = pt.zcu;
95249516 const arg_val = self.args[self.arg_index];
95259517 self.arg_index += 1;
......@@ -9547,7 +9539,7 @@ pub const FuncGen = struct {
95479539 self.file,
95489540 self.scope,
95499541 lbrace_line,
9550 try o.lowerDebugType(inst_ty),
9542 try o.lowerDebugType(pt, inst_ty),
95519543 self.arg_index,
95529544 );
95539545
......@@ -9611,28 +9603,28 @@ pub const FuncGen = struct {
96119603
96129604 fn airAlloc(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
96139605 const o = self.ng.object;
9614 const pt = o.pt;
9606 const pt = self.ng.pt;
96159607 const zcu = pt.zcu;
96169608 const ptr_ty = self.typeOfIndex(inst);
96179609 const pointee_type = ptr_ty.childType(zcu);
96189610 if (!pointee_type.isFnOrHasRuntimeBitsIgnoreComptime(zcu))
9619 return (try o.lowerPtrToVoid(ptr_ty)).toValue();
9611 return (try o.lowerPtrToVoid(pt, ptr_ty)).toValue();
96209612
9621 const pointee_llvm_ty = try o.lowerType(pointee_type);
9613 const pointee_llvm_ty = try o.lowerType(pt, pointee_type);
96229614 const alignment = ptr_ty.ptrAlignment(zcu).toLlvm();
96239615 return self.buildAlloca(pointee_llvm_ty, alignment);
96249616 }
96259617
96269618 fn airRetPtr(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
96279619 const o = self.ng.object;
9628 const pt = o.pt;
9620 const pt = self.ng.pt;
96299621 const zcu = pt.zcu;
96309622 const ptr_ty = self.typeOfIndex(inst);
96319623 const ret_ty = ptr_ty.childType(zcu);
96329624 if (!ret_ty.isFnOrHasRuntimeBitsIgnoreComptime(zcu))
9633 return (try o.lowerPtrToVoid(ptr_ty)).toValue();
9625 return (try o.lowerPtrToVoid(pt, ptr_ty)).toValue();
96349626 if (self.ret_ptr != .none) return self.ret_ptr;
9635 const ret_llvm_ty = try o.lowerType(ret_ty);
9627 const ret_llvm_ty = try o.lowerType(pt, ret_ty);
96369628 const alignment = ptr_ty.ptrAlignment(zcu).toLlvm();
96379629 return self.buildAlloca(ret_llvm_ty, alignment);
96389630 }
......@@ -9644,13 +9636,13 @@ pub const FuncGen = struct {
96449636 llvm_ty: Builder.Type,
96459637 alignment: Builder.Alignment,
96469638 ) Allocator.Error!Builder.Value {
9647 const target = self.ng.object.pt.zcu.getTarget();
9639 const target = self.ng.pt.zcu.getTarget();
96489640 return buildAllocaInner(&self.wip, llvm_ty, alignment, target);
96499641 }
96509642
96519643 fn airStore(self: *FuncGen, inst: Air.Inst.Index, safety: bool) !Builder.Value {
96529644 const o = self.ng.object;
9653 const pt = o.pt;
9645 const pt = self.ng.pt;
96549646 const zcu = pt.zcu;
96559647 const bin_op = self.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;
96569648 const dest_ptr = try self.resolveInst(bin_op.lhs);
......@@ -9685,7 +9677,7 @@ pub const FuncGen = struct {
96859677
96869678 self.maybeMarkAllowZeroAccess(ptr_info);
96879679
9688 const len = try o.builder.intValue(try o.lowerType(Type.usize), operand_ty.abiSize(zcu));
9680 const len = try o.builder.intValue(try o.lowerType(pt, Type.usize), operand_ty.abiSize(zcu));
96899681 _ = try self.wip.callMemSet(
96909682 dest_ptr,
96919683 ptr_ty.ptrAlignment(zcu).toLlvm(),
......@@ -9714,8 +9706,7 @@ pub const FuncGen = struct {
97149706 ///
97159707 /// The first instruction of `body_tail` is the one whose copy we want to elide.
97169708 fn canElideLoad(fg: *FuncGen, body_tail: []const Air.Inst.Index) bool {
9717 const o = fg.ng.object;
9718 const zcu = o.pt.zcu;
9709 const zcu = fg.ng.pt.zcu;
97199710 const ip = &zcu.intern_pool;
97209711 for (body_tail[1..]) |body_inst| {
97219712 switch (fg.liveness.categorizeOperand(fg.air, zcu, body_inst, body_tail[0], ip)) {
......@@ -9730,8 +9721,7 @@ pub const FuncGen = struct {
97309721 }
97319722
97329723 fn airLoad(fg: *FuncGen, body_tail: []const Air.Inst.Index) !Builder.Value {
9733 const o = fg.ng.object;
9734 const pt = o.pt;
9724 const pt = fg.ng.pt;
97359725 const zcu = pt.zcu;
97369726 const inst = body_tail[0];
97379727 const ty_op = fg.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
......@@ -9765,8 +9755,9 @@ pub const FuncGen = struct {
97659755 fn airRetAddr(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
97669756 _ = inst;
97679757 const o = self.ng.object;
9768 const llvm_usize = try o.lowerType(Type.usize);
9769 if (!target_util.supportsReturnAddress(o.pt.zcu.getTarget(), self.ng.ownerModule().optimize_mode)) {
9758 const pt = self.ng.pt;
9759 const llvm_usize = try o.lowerType(pt, Type.usize);
9760 if (!target_util.supportsReturnAddress(self.ng.pt.zcu.getTarget(), self.ng.ownerModule().optimize_mode)) {
97709761 // https://github.com/ziglang/zig/issues/11946
97719762 return o.builder.intValue(llvm_usize, 0);
97729763 }
......@@ -9777,8 +9768,9 @@ pub const FuncGen = struct {
97779768 fn airFrameAddress(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
97789769 _ = inst;
97799770 const o = self.ng.object;
9771 const pt = self.ng.pt;
97809772 const result = try self.wip.callIntrinsic(.normal, .none, .frameaddress, &.{.ptr}, &.{.@"0"}, "");
9781 return self.wip.cast(.ptrtoint, result, try o.lowerType(Type.usize), "");
9773 return self.wip.cast(.ptrtoint, result, try o.lowerType(pt, Type.usize), "");
97829774 }
97839775
97849776 fn airCmpxchg(
......@@ -9787,7 +9779,7 @@ pub const FuncGen = struct {
97879779 kind: Builder.Function.Instruction.CmpXchg.Kind,
97889780 ) !Builder.Value {
97899781 const o = self.ng.object;
9790 const pt = o.pt;
9782 const pt = self.ng.pt;
97919783 const zcu = pt.zcu;
97929784 const ty_pl = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_pl;
97939785 const extra = self.air.extraData(Air.Cmpxchg, ty_pl.payload).data;
......@@ -9796,8 +9788,8 @@ pub const FuncGen = struct {
97969788 var expected_value = try self.resolveInst(extra.expected_value);
97979789 var new_value = try self.resolveInst(extra.new_value);
97989790 const operand_ty = ptr_ty.childType(zcu);
9799 const llvm_operand_ty = try o.lowerType(operand_ty);
9800 const llvm_abi_ty = try o.getAtomicAbiType(operand_ty, false);
9791 const llvm_operand_ty = try o.lowerType(pt, operand_ty);
9792 const llvm_abi_ty = try o.getAtomicAbiType(pt, operand_ty, false);
98019793 if (llvm_abi_ty != .none) {
98029794 // operand needs widening and truncating
98039795 const signedness: Builder.Function.Instruction.Cast.Signedness =
......@@ -9840,7 +9832,7 @@ pub const FuncGen = struct {
98409832
98419833 fn airAtomicRmw(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
98429834 const o = self.ng.object;
9843 const pt = o.pt;
9835 const pt = self.ng.pt;
98449836 const zcu = pt.zcu;
98459837 const pl_op = self.air.instructions.items(.data)[@intFromEnum(inst)].pl_op;
98469838 const extra = self.air.extraData(Air.AtomicRmw, pl_op.payload).data;
......@@ -9852,8 +9844,8 @@ pub const FuncGen = struct {
98529844 const is_float = operand_ty.isRuntimeFloat();
98539845 const op = toLlvmAtomicRmwBinOp(extra.op(), is_signed_int, is_float);
98549846 const ordering = toLlvmAtomicOrdering(extra.ordering());
9855 const llvm_abi_ty = try o.getAtomicAbiType(operand_ty, op == .xchg);
9856 const llvm_operand_ty = try o.lowerType(operand_ty);
9847 const llvm_abi_ty = try o.getAtomicAbiType(pt, operand_ty, op == .xchg);
9848 const llvm_operand_ty = try o.lowerType(pt, operand_ty);
98579849
98589850 const access_kind: Builder.MemoryAccessKind =
98599851 if (ptr_ty.isVolatilePtr(zcu)) .@"volatile" else .normal;
......@@ -9896,7 +9888,7 @@ pub const FuncGen = struct {
98969888 access_kind,
98979889 op,
98989890 ptr,
9899 try self.wip.cast(.ptrtoint, operand, try o.lowerType(Type.usize), ""),
9891 try self.wip.cast(.ptrtoint, operand, try o.lowerType(pt, Type.usize), ""),
99009892 self.sync_scope,
99019893 ordering,
99029894 ptr_alignment,
......@@ -9906,7 +9898,7 @@ pub const FuncGen = struct {
99069898
99079899 fn airAtomicLoad(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
99089900 const o = self.ng.object;
9909 const pt = o.pt;
9901 const pt = self.ng.pt;
99109902 const zcu = pt.zcu;
99119903 const atomic_load = self.air.instructions.items(.data)[@intFromEnum(inst)].atomic_load;
99129904 const ptr = try self.resolveInst(atomic_load.ptr);
......@@ -9915,14 +9907,14 @@ pub const FuncGen = struct {
99159907 const elem_ty = Type.fromInterned(info.child);
99169908 if (!elem_ty.hasRuntimeBitsIgnoreComptime(zcu)) return .none;
99179909 const ordering = toLlvmAtomicOrdering(atomic_load.order);
9918 const llvm_abi_ty = try o.getAtomicAbiType(elem_ty, false);
9910 const llvm_abi_ty = try o.getAtomicAbiType(pt, elem_ty, false);
99199911 const ptr_alignment = (if (info.flags.alignment != .none)
99209912 @as(InternPool.Alignment, info.flags.alignment)
99219913 else
99229914 Type.fromInterned(info.child).abiAlignment(zcu)).toLlvm();
99239915 const access_kind: Builder.MemoryAccessKind =
99249916 if (info.flags.is_volatile) .@"volatile" else .normal;
9925 const elem_llvm_ty = try o.lowerType(elem_ty);
9917 const elem_llvm_ty = try o.lowerType(pt, elem_ty);
99269918
99279919 self.maybeMarkAllowZeroAccess(info);
99289920
......@@ -9956,7 +9948,7 @@ pub const FuncGen = struct {
99569948 ordering: Builder.AtomicOrdering,
99579949 ) !Builder.Value {
99589950 const o = self.ng.object;
9959 const pt = o.pt;
9951 const pt = self.ng.pt;
99609952 const zcu = pt.zcu;
99619953 const bin_op = self.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;
99629954 const ptr_ty = self.typeOf(bin_op.lhs);
......@@ -9964,7 +9956,7 @@ pub const FuncGen = struct {
99649956 if (!operand_ty.isFnOrHasRuntimeBitsIgnoreComptime(zcu)) return .none;
99659957 const ptr = try self.resolveInst(bin_op.lhs);
99669958 var element = try self.resolveInst(bin_op.rhs);
9967 const llvm_abi_ty = try o.getAtomicAbiType(operand_ty, false);
9959 const llvm_abi_ty = try o.getAtomicAbiType(pt, operand_ty, false);
99689960
99699961 if (llvm_abi_ty != .none) {
99709962 // operand needs widening
......@@ -9984,7 +9976,7 @@ pub const FuncGen = struct {
99849976
99859977 fn airMemset(self: *FuncGen, inst: Air.Inst.Index, safety: bool) !Builder.Value {
99869978 const o = self.ng.object;
9987 const pt = o.pt;
9979 const pt = self.ng.pt;
99889980 const zcu = pt.zcu;
99899981 const bin_op = self.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;
99909982 const dest_slice = try self.resolveInst(bin_op.lhs);
......@@ -10081,13 +10073,13 @@ pub const FuncGen = struct {
1008110073 const body_block = try self.wip.block(1, "InlineMemsetBody");
1008210074 const end_block = try self.wip.block(1, "InlineMemsetEnd");
1008310075
10084 const llvm_usize_ty = try o.lowerType(Type.usize);
10076 const llvm_usize_ty = try o.lowerType(pt, Type.usize);
1008510077 const len = switch (ptr_ty.ptrSize(zcu)) {
1008610078 .slice => try self.wip.extractValue(dest_slice, &.{1}, ""),
1008710079 .one => try o.builder.intValue(llvm_usize_ty, ptr_ty.childType(zcu).arrayLen(zcu)),
1008810080 .many, .c => unreachable,
1008910081 };
10090 const elem_llvm_ty = try o.lowerType(elem_ty);
10082 const elem_llvm_ty = try o.lowerType(pt, elem_ty);
1009110083 const end_ptr = try self.wip.gep(.inbounds, elem_llvm_ty, dest_ptr, &.{len}, "");
1009210084 _ = try self.wip.br(loop_block);
1009310085
......@@ -10121,8 +10113,7 @@ pub const FuncGen = struct {
1012110113 }
1012210114
1012310115 fn airMemcpy(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
10124 const o = self.ng.object;
10125 const pt = o.pt;
10116 const pt = self.ng.pt;
1012610117 const zcu = pt.zcu;
1012710118 const bin_op = self.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;
1012810119 const dest_slice = try self.resolveInst(bin_op.lhs);
......@@ -10151,8 +10142,7 @@ pub const FuncGen = struct {
1015110142 }
1015210143
1015310144 fn airMemmove(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
10154 const o = self.ng.object;
10155 const pt = o.pt;
10145 const pt = self.ng.pt;
1015610146 const zcu = pt.zcu;
1015710147 const bin_op = self.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;
1015810148 const dest_slice = try self.resolveInst(bin_op.lhs);
......@@ -10178,7 +10168,7 @@ pub const FuncGen = struct {
1017810168
1017910169 fn airSetUnionTag(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
1018010170 const o = self.ng.object;
10181 const pt = o.pt;
10171 const pt = self.ng.pt;
1018210172 const zcu = pt.zcu;
1018310173 const bin_op = self.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;
1018410174 const un_ptr_ty = self.typeOf(bin_op.lhs);
......@@ -10199,7 +10189,7 @@ pub const FuncGen = struct {
1019910189 return .none;
1020010190 }
1020110191 const tag_index = @intFromBool(layout.tag_align.compare(.lt, layout.payload_align));
10202 const tag_field_ptr = try self.wip.gepStruct(try o.lowerType(un_ty), union_ptr, tag_index, "");
10192 const tag_field_ptr = try self.wip.gepStruct(try o.lowerType(pt, un_ty), union_ptr, tag_index, "");
1020310193 // TODO alignment on this store
1020410194 _ = try self.wip.store(access_kind, new_tag, tag_field_ptr, .default);
1020510195 return .none;
......@@ -10207,7 +10197,7 @@ pub const FuncGen = struct {
1020710197
1020810198 fn airGetUnionTag(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
1020910199 const o = self.ng.object;
10210 const pt = o.pt;
10200 const pt = self.ng.pt;
1021110201 const zcu = pt.zcu;
1021210202 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
1021310203 const un_ty = self.typeOf(ty_op.operand);
......@@ -10215,7 +10205,7 @@ pub const FuncGen = struct {
1021510205 if (layout.tag_size == 0) return .none;
1021610206 const union_handle = try self.resolveInst(ty_op.operand);
1021710207 if (isByRef(un_ty, zcu)) {
10218 const llvm_un_ty = try o.lowerType(un_ty);
10208 const llvm_un_ty = try o.lowerType(pt, un_ty);
1021910209 if (layout.payload_size == 0)
1022010210 return self.wip.load(.normal, llvm_un_ty, union_handle, .default, "");
1022110211 const tag_index = @intFromBool(layout.tag_align.compare(.lt, layout.payload_align));
......@@ -10247,6 +10237,7 @@ pub const FuncGen = struct {
1024710237
1024810238 fn airClzCtz(self: *FuncGen, inst: Air.Inst.Index, intrinsic: Builder.Intrinsic) !Builder.Value {
1024910239 const o = self.ng.object;
10240 const pt = self.ng.pt;
1025010241 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
1025110242 const inst_ty = self.typeOfIndex(inst);
1025210243 const operand_ty = self.typeOf(ty_op.operand);
......@@ -10256,15 +10247,16 @@ pub const FuncGen = struct {
1025610247 .normal,
1025710248 .none,
1025810249 intrinsic,
10259 &.{try o.lowerType(operand_ty)},
10250 &.{try o.lowerType(pt, operand_ty)},
1026010251 &.{ operand, .false },
1026110252 "",
1026210253 );
10263 return self.wip.conv(.unsigned, result, try o.lowerType(inst_ty), "");
10254 return self.wip.conv(.unsigned, result, try o.lowerType(pt, inst_ty), "");
1026410255 }
1026510256
1026610257 fn airBitOp(self: *FuncGen, inst: Air.Inst.Index, intrinsic: Builder.Intrinsic) !Builder.Value {
1026710258 const o = self.ng.object;
10259 const pt = self.ng.pt;
1026810260 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
1026910261 const inst_ty = self.typeOfIndex(inst);
1027010262 const operand_ty = self.typeOf(ty_op.operand);
......@@ -10274,16 +10266,17 @@ pub const FuncGen = struct {
1027410266 .normal,
1027510267 .none,
1027610268 intrinsic,
10277 &.{try o.lowerType(operand_ty)},
10269 &.{try o.lowerType(pt, operand_ty)},
1027810270 &.{operand},
1027910271 "",
1028010272 );
10281 return self.wip.conv(.unsigned, result, try o.lowerType(inst_ty), "");
10273 return self.wip.conv(.unsigned, result, try o.lowerType(pt, inst_ty), "");
1028210274 }
1028310275
1028410276 fn airByteSwap(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
1028510277 const o = self.ng.object;
10286 const zcu = o.pt.zcu;
10278 const pt = self.ng.pt;
10279 const zcu = pt.zcu;
1028710280 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
1028810281 const operand_ty = self.typeOf(ty_op.operand);
1028910282 var bits = operand_ty.intInfo(zcu).bits;
......@@ -10291,7 +10284,7 @@ pub const FuncGen = struct {
1029110284
1029210285 const inst_ty = self.typeOfIndex(inst);
1029310286 var operand = try self.resolveInst(ty_op.operand);
10294 var llvm_operand_ty = try o.lowerType(operand_ty);
10287 var llvm_operand_ty = try o.lowerType(pt, operand_ty);
1029510288
1029610289 if (bits % 16 == 8) {
1029710290 // If not an even byte-multiple, we need zero-extend + shift-left 1 byte
......@@ -10312,12 +10305,13 @@ pub const FuncGen = struct {
1031210305
1031310306 const result =
1031410307 try self.wip.callIntrinsic(.normal, .none, .bswap, &.{llvm_operand_ty}, &.{operand}, "");
10315 return self.wip.conv(.unsigned, result, try o.lowerType(inst_ty), "");
10308 return self.wip.conv(.unsigned, result, try o.lowerType(pt, inst_ty), "");
1031610309 }
1031710310
1031810311 fn airErrorSetHasValue(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
1031910312 const o = self.ng.object;
10320 const zcu = o.pt.zcu;
10313 const pt = self.ng.pt;
10314 const zcu = pt.zcu;
1032110315 const ip = &zcu.intern_pool;
1032210316 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
1032310317 const operand = try self.resolveInst(ty_op.operand);
......@@ -10332,7 +10326,7 @@ pub const FuncGen = struct {
1033210326
1033310327 for (0..names.len) |name_index| {
1033410328 const err_int = ip.getErrorValueIfExists(names.get(ip)[name_index]).?;
10335 const this_tag_int_value = try o.builder.intConst(try o.errorIntType(), err_int);
10329 const this_tag_int_value = try o.builder.intConst(try o.errorIntType(pt), err_int);
1033610330 try wip_switch.addCase(this_tag_int_value, valid_block, &self.wip);
1033710331 }
1033810332 self.wip.cursor = .{ .block = valid_block };
......@@ -10367,7 +10361,7 @@ pub const FuncGen = struct {
1036710361
1036810362 fn getIsNamedEnumValueFunction(self: *FuncGen, enum_ty: Type) !Builder.Function.Index {
1036910363 const o = self.ng.object;
10370 const pt = o.pt;
10364 const pt = self.ng.pt;
1037110365 const zcu = pt.zcu;
1037210366 const ip = &zcu.intern_pool;
1037310367 const enum_type = ip.loadEnumType(enum_ty.toIntern());
......@@ -10379,7 +10373,7 @@ pub const FuncGen = struct {
1037910373
1038010374 const target = &zcu.root_mod.resolved_target.result;
1038110375 const function_index = try o.builder.addFunction(
10382 try o.builder.fnType(.i1, &.{try o.lowerType(Type.fromInterned(enum_type.tag_ty))}, .normal),
10376 try o.builder.fnType(.i1, &.{try o.lowerType(pt, Type.fromInterned(enum_type.tag_ty))}, .normal),
1038310377 try o.builder.strtabStringFmt("__zig_is_named_enum_value_{f}", .{enum_type.name.fmt(ip)}),
1038410378 toLlvmAddressSpace(.generic, target),
1038510379 );
......@@ -10408,6 +10402,7 @@ pub const FuncGen = struct {
1040810402
1040910403 for (0..enum_type.names.len) |field_index| {
1041010404 const this_tag_int_value = try o.lowerValue(
10405 pt,
1041110406 (try pt.enumValueFieldIndex(enum_ty, @intCast(field_index))).toIntern(),
1041210407 );
1041310408 try wip_switch.addCase(this_tag_int_value, named_block, &wip);
......@@ -10424,11 +10419,12 @@ pub const FuncGen = struct {
1042410419
1042510420 fn airTagName(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
1042610421 const o = self.ng.object;
10422 const pt = self.ng.pt;
1042710423 const un_op = self.air.instructions.items(.data)[@intFromEnum(inst)].un_op;
1042810424 const operand = try self.resolveInst(un_op);
1042910425 const enum_ty = self.typeOf(un_op);
1043010426
10431 const llvm_fn = try o.getEnumTagNameFunction(enum_ty);
10427 const llvm_fn = try o.getEnumTagNameFunction(pt, enum_ty);
1043210428 return self.wip.call(
1043310429 .normal,
1043410430 .fastcc,
......@@ -10442,10 +10438,11 @@ pub const FuncGen = struct {
1044210438
1044310439 fn airErrorName(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
1044410440 const o = self.ng.object;
10441 const pt = self.ng.pt;
1044510442 const un_op = self.air.instructions.items(.data)[@intFromEnum(inst)].un_op;
1044610443 const operand = try self.resolveInst(un_op);
1044710444 const slice_ty = self.typeOfIndex(inst);
10448 const slice_llvm_ty = try o.lowerType(slice_ty);
10445 const slice_llvm_ty = try o.lowerType(pt, slice_ty);
1044910446
1045010447 const error_name_table_ptr = try self.getErrorNameTable();
1045110448 const error_name_table =
......@@ -10457,10 +10454,11 @@ pub const FuncGen = struct {
1045710454
1045810455 fn airSplat(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
1045910456 const o = self.ng.object;
10457 const pt = self.ng.pt;
1046010458 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
1046110459 const scalar = try self.resolveInst(ty_op.operand);
1046210460 const vector_ty = self.typeOfIndex(inst);
10463 return self.wip.splatVector(try o.lowerType(vector_ty), scalar, "");
10461 return self.wip.splatVector(try o.lowerType(pt, vector_ty), scalar, "");
1046410462 }
1046510463
1046610464 fn airSelect(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
......@@ -10475,7 +10473,7 @@ pub const FuncGen = struct {
1047510473
1047610474 fn airShuffleOne(fg: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
1047710475 const o = fg.ng.object;
10478 const pt = o.pt;
10476 const pt = fg.ng.pt;
1047910477 const zcu = pt.zcu;
1048010478 const gpa = zcu.gpa;
1048110479
......@@ -10484,9 +10482,9 @@ pub const FuncGen = struct {
1048410482 const operand = try fg.resolveInst(unwrapped.operand);
1048510483 const mask = unwrapped.mask;
1048610484 const operand_ty = fg.typeOf(unwrapped.operand);
10487 const llvm_operand_ty = try o.lowerType(operand_ty);
10488 const llvm_result_ty = try o.lowerType(unwrapped.result_ty);
10489 const llvm_elem_ty = try o.lowerType(unwrapped.result_ty.childType(zcu));
10485 const llvm_operand_ty = try o.lowerType(pt, operand_ty);
10486 const llvm_result_ty = try o.lowerType(pt, unwrapped.result_ty);
10487 const llvm_elem_ty = try o.lowerType(pt, unwrapped.result_ty.childType(zcu));
1049010488 const llvm_poison_elem = try o.builder.poisonConst(llvm_elem_ty);
1049110489 const llvm_poison_mask_elem = try o.builder.poisonConst(.i32);
1049210490 const llvm_mask_ty = try o.builder.vectorType(.normal, @intCast(mask.len), .i32);
......@@ -10516,7 +10514,7 @@ pub const FuncGen = struct {
1051610514 .elem => llvm_poison_elem,
1051710515 .value => |val| if (!Value.fromInterned(val).isUndef(zcu)) elem: {
1051810516 any_defined_comptime_value = true;
10519 break :elem try o.lowerValue(val);
10517 break :elem try o.lowerValue(pt, val);
1052010518 } else llvm_poison_elem,
1052110519 };
1052210520 }
......@@ -10582,14 +10580,14 @@ pub const FuncGen = struct {
1058210580
1058310581 fn airShuffleTwo(fg: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
1058410582 const o = fg.ng.object;
10585 const pt = o.pt;
10583 const pt = fg.ng.pt;
1058610584 const zcu = pt.zcu;
1058710585 const gpa = zcu.gpa;
1058810586
1058910587 const unwrapped = fg.air.unwrapShuffleTwo(zcu, inst);
1059010588
1059110589 const mask = unwrapped.mask;
10592 const llvm_elem_ty = try o.lowerType(unwrapped.result_ty.childType(zcu));
10590 const llvm_elem_ty = try o.lowerType(pt, unwrapped.result_ty.childType(zcu));
1059310591 const llvm_mask_ty = try o.builder.vectorType(.normal, @intCast(mask.len), .i32);
1059410592 const llvm_poison_mask_elem = try o.builder.poisonConst(.i32);
1059510593
......@@ -10681,7 +10679,8 @@ pub const FuncGen = struct {
1068110679 accum_init: Builder.Value,
1068210680 ) !Builder.Value {
1068310681 const o = self.ng.object;
10684 const usize_ty = try o.lowerType(Type.usize);
10682 const pt = self.ng.pt;
10683 const usize_ty = try o.lowerType(pt, Type.usize);
1068510684 const llvm_vector_len = try o.builder.intValue(usize_ty, vector_len);
1068610685 const llvm_result_ty = accum_init.typeOfWip(&self.wip);
1068710686
......@@ -10735,15 +10734,16 @@ pub const FuncGen = struct {
1073510734
1073610735 fn airReduce(self: *FuncGen, inst: Air.Inst.Index, fast: Builder.FastMathKind) !Builder.Value {
1073710736 const o = self.ng.object;
10738 const zcu = o.pt.zcu;
10737 const pt = self.ng.pt;
10738 const zcu = pt.zcu;
1073910739 const target = zcu.getTarget();
1074010740
1074110741 const reduce = self.air.instructions.items(.data)[@intFromEnum(inst)].reduce;
1074210742 const operand = try self.resolveInst(reduce.operand);
1074310743 const operand_ty = self.typeOf(reduce.operand);
10744 const llvm_operand_ty = try o.lowerType(operand_ty);
10744 const llvm_operand_ty = try o.lowerType(pt, operand_ty);
1074510745 const scalar_ty = self.typeOfIndex(inst);
10746 const llvm_scalar_ty = try o.lowerType(scalar_ty);
10746 const llvm_scalar_ty = try o.lowerType(pt, scalar_ty);
1074710747
1074810748 switch (reduce.operation) {
1074910749 .And, .Or, .Xor => return self.wip.callIntrinsic(.normal, .none, switch (reduce.operation) {
......@@ -10845,14 +10845,14 @@ pub const FuncGen = struct {
1084510845
1084610846 fn airAggregateInit(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
1084710847 const o = self.ng.object;
10848 const pt = o.pt;
10848 const pt = self.ng.pt;
1084910849 const zcu = pt.zcu;
1085010850 const ip = &zcu.intern_pool;
1085110851 const ty_pl = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_pl;
1085210852 const result_ty = self.typeOfIndex(inst);
1085310853 const len: usize = @intCast(result_ty.arrayLen(zcu));
1085410854 const elements: []const Air.Inst.Ref = @ptrCast(self.air.extra.items[ty_pl.payload..][0..len]);
10855 const llvm_result_ty = try o.lowerType(result_ty);
10855 const llvm_result_ty = try o.lowerType(pt, result_ty);
1085610856
1085710857 switch (result_ty.zigTypeTag(zcu)) {
1085810858 .vector => {
......@@ -10933,7 +10933,7 @@ pub const FuncGen = struct {
1093310933 .array => {
1093410934 assert(isByRef(result_ty, zcu));
1093510935
10936 const llvm_usize = try o.lowerType(Type.usize);
10936 const llvm_usize = try o.lowerType(pt, Type.usize);
1093710937 const usize_zero = try o.builder.intValue(llvm_usize, 0);
1093810938 const alignment = result_ty.abiAlignment(zcu).toLlvm();
1093910939 const alloca_inst = try self.buildAlloca(llvm_result_ty, alignment);
......@@ -10966,13 +10966,13 @@ pub const FuncGen = struct {
1096610966
1096710967 fn airUnionInit(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
1096810968 const o = self.ng.object;
10969 const pt = o.pt;
10969 const pt = self.ng.pt;
1097010970 const zcu = pt.zcu;
1097110971 const ip = &zcu.intern_pool;
1097210972 const ty_pl = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_pl;
1097310973 const extra = self.air.extraData(Air.UnionInit, ty_pl.payload).data;
1097410974 const union_ty = self.typeOfIndex(inst);
10975 const union_llvm_ty = try o.lowerType(union_ty);
10975 const union_llvm_ty = try o.lowerType(pt, union_ty);
1097610976 const layout = union_ty.unionGetLayout(zcu);
1097710977 const union_obj = zcu.typeToUnion(union_ty).?;
1097810978
......@@ -11014,10 +11014,10 @@ pub const FuncGen = struct {
1101411014 const result_ptr = try self.buildAlloca(union_llvm_ty, alignment);
1101511015 const llvm_payload = try self.resolveInst(extra.init);
1101611016 const field_ty = Type.fromInterned(union_obj.field_types.get(ip)[extra.field_index]);
11017 const field_llvm_ty = try o.lowerType(field_ty);
11017 const field_llvm_ty = try o.lowerType(pt, field_ty);
1101811018 const field_size = field_ty.abiSize(zcu);
1101911019 const field_align = union_ty.fieldAlignment(extra.field_index, zcu);
11020 const llvm_usize = try o.lowerType(Type.usize);
11020 const llvm_usize = try o.lowerType(pt, Type.usize);
1102111021 const usize_zero = try o.builder.intValue(llvm_usize, 0);
1102211022
1102311023 const llvm_union_ty = t: {
......@@ -11035,7 +11035,7 @@ pub const FuncGen = struct {
1103511035 });
1103611036 };
1103711037 if (layout.tag_size == 0) break :t try o.builder.structType(.normal, &.{payload_ty});
11038 const tag_ty = try o.lowerType(Type.fromInterned(union_obj.enum_tag_ty));
11038 const tag_ty = try o.lowerType(pt, Type.fromInterned(union_obj.enum_tag_ty));
1103911039 var fields: [3]Builder.Type = undefined;
1104011040 var fields_len: usize = 2;
1104111041 if (layout.tag_align.compare(.gte, layout.payload_align)) {
......@@ -11076,7 +11076,7 @@ pub const FuncGen = struct {
1107611076 const tag_index = @intFromBool(layout.tag_align.compare(.lt, layout.payload_align));
1107711077 const indices: [2]Builder.Value = .{ usize_zero, try o.builder.intValue(.i32, tag_index) };
1107811078 const field_ptr = try self.wip.gep(.inbounds, llvm_union_ty, result_ptr, &indices, "");
11079 const tag_ty = try o.lowerType(Type.fromInterned(union_obj.enum_tag_ty));
11079 const tag_ty = try o.lowerType(pt, Type.fromInterned(union_obj.enum_tag_ty));
1108011080 var big_int_space: Value.BigIntSpace = undefined;
1108111081 const tag_big_int = tag_int_val.toBigInt(&big_int_space, zcu);
1108211082 const llvm_tag = try o.builder.bigIntValue(tag_ty, tag_big_int);
......@@ -11106,7 +11106,7 @@ pub const FuncGen = struct {
1110611106 // by the target.
1110711107 // To work around this, don't emit llvm.prefetch in this case.
1110811108 // See https://bugs.llvm.org/show_bug.cgi?id=21037
11109 const zcu = o.pt.zcu;
11109 const zcu = self.ng.pt.zcu;
1111011110 const target = zcu.getTarget();
1111111111 switch (prefetch.cache) {
1111211112 .instruction => switch (target.cpu.arch) {
......@@ -11139,11 +11139,12 @@ pub const FuncGen = struct {
1113911139
1114011140 fn airAddrSpaceCast(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
1114111141 const o = self.ng.object;
11142 const pt = self.ng.pt;
1114211143 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
1114311144 const inst_ty = self.typeOfIndex(inst);
1114411145 const operand = try self.resolveInst(ty_op.operand);
1114511146
11146 return self.wip.cast(.addrspacecast, operand, try o.lowerType(inst_ty), "");
11147 return self.wip.cast(.addrspacecast, operand, try o.lowerType(pt, inst_ty), "");
1114711148 }
1114811149
1114911150 fn workIntrinsic(
......@@ -11161,8 +11162,7 @@ pub const FuncGen = struct {
1116111162 }
1116211163
1116311164 fn airWorkItemId(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
11164 const o = self.ng.object;
11165 const target = o.pt.zcu.getTarget();
11165 const target = self.ng.pt.zcu.getTarget();
1116611166
1116711167 const pl_op = self.air.instructions.items(.data)[@intFromEnum(inst)].pl_op;
1116811168 const dimension = pl_op.payload;
......@@ -11176,7 +11176,8 @@ pub const FuncGen = struct {
1117611176
1117711177 fn airWorkGroupSize(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
1117811178 const o = self.ng.object;
11179 const target = o.pt.zcu.getTarget();
11179 const pt = self.ng.pt;
11180 const target = pt.zcu.getTarget();
1118011181
1118111182 const pl_op = self.air.instructions.items(.data)[@intFromEnum(inst)].pl_op;
1118211183 const dimension = pl_op.payload;
......@@ -11193,7 +11194,7 @@ pub const FuncGen = struct {
1119311194 // Load the work_group_* member from the struct as u16.
1119411195 // Just treat the dispatch pointer as an array of u16 to keep things simple.
1119511196 const workgroup_size_ptr = try self.wip.gep(.inbounds, .i16, dispatch_ptr, &.{
11196 try o.builder.intValue(try o.lowerType(Type.usize), 2 + dimension),
11197 try o.builder.intValue(try o.lowerType(pt, Type.usize), 2 + dimension),
1119711198 }, "");
1119811199 const workgroup_size_alignment = comptime Builder.Alignment.fromByteUnits(2);
1119911200 return self.wip.load(.normal, .i16, workgroup_size_ptr, workgroup_size_alignment, "");
......@@ -11206,8 +11207,7 @@ pub const FuncGen = struct {
1120611207 }
1120711208
1120811209 fn airWorkGroupId(self: *FuncGen, inst: Air.Inst.Index) !Builder.Value {
11209 const o = self.ng.object;
11210 const target = o.pt.zcu.getTarget();
11210 const target = self.ng.pt.zcu.getTarget();
1121111211
1121211212 const pl_op = self.air.instructions.items(.data)[@intFromEnum(inst)].pl_op;
1121311213 const dimension = pl_op.payload;
......@@ -11221,7 +11221,7 @@ pub const FuncGen = struct {
1122111221
1122211222 fn getErrorNameTable(self: *FuncGen) Allocator.Error!Builder.Variable.Index {
1122311223 const o = self.ng.object;
11224 const pt = o.pt;
11224 const pt = self.ng.pt;
1122511225
1122611226 const table = o.error_name_table;
1122711227 if (table != .none) return table;
......@@ -11271,8 +11271,7 @@ pub const FuncGen = struct {
1127111271 opt_ty: Type,
1127211272 can_elide_load: bool,
1127311273 ) !Builder.Value {
11274 const o = fg.ng.object;
11275 const pt = o.pt;
11274 const pt = fg.ng.pt;
1127611275 const zcu = pt.zcu;
1127711276 const payload_ty = opt_ty.optionalChild(zcu);
1127811277
......@@ -11301,9 +11300,9 @@ pub const FuncGen = struct {
1130111300 non_null_bit: Builder.Value,
1130211301 ) !Builder.Value {
1130311302 const o = self.ng.object;
11304 const pt = o.pt;
11303 const pt = self.ng.pt;
1130511304 const zcu = pt.zcu;
11306 const optional_llvm_ty = try o.lowerType(optional_ty);
11305 const optional_llvm_ty = try o.lowerType(pt, optional_ty);
1130711306 const non_null_field = try self.wip.cast(.zext, non_null_bit, .i8, "");
1130811307
1130911308 if (isByRef(optional_ty, zcu)) {
......@@ -11334,7 +11333,7 @@ pub const FuncGen = struct {
1133411333 field_index: u32,
1133511334 ) !Builder.Value {
1133611335 const o = self.ng.object;
11337 const pt = o.pt;
11336 const pt = self.ng.pt;
1133811337 const zcu = pt.zcu;
1133911338 const struct_ty = struct_ptr_ty.childType(zcu);
1134011339 switch (struct_ty.zigTypeTag(zcu)) {
......@@ -11357,12 +11356,12 @@ pub const FuncGen = struct {
1135711356 // Offset our operand pointer by the correct number of bytes.
1135811357 const byte_offset = @divExact(pt.structPackedFieldBitOffset(struct_type, field_index) + struct_ptr_ty_info.packed_offset.bit_offset, 8);
1135911358 if (byte_offset == 0) return struct_ptr;
11360 const usize_ty = try o.lowerType(Type.usize);
11359 const usize_ty = try o.lowerType(pt, Type.usize);
1136111360 const llvm_index = try o.builder.intValue(usize_ty, byte_offset);
1136211361 return self.wip.gep(.inbounds, .i8, struct_ptr, &.{llvm_index}, "");
1136311362 },
1136411363 else => {
11365 const struct_llvm_ty = try o.lowerPtrElemTy(struct_ty);
11364 const struct_llvm_ty = try o.lowerPtrElemTy(pt, struct_ty);
1136611365
1136711366 if (o.llvmFieldIndex(struct_ty, field_index)) |llvm_field_index| {
1136811367 return self.wip.gepStruct(struct_llvm_ty, struct_ptr, llvm_field_index, "");
......@@ -11372,7 +11371,7 @@ pub const FuncGen = struct {
1137211371 // the index to the element at index `1` to get a pointer to the end of
1137311372 // the struct.
1137411373 const llvm_index = try o.builder.intValue(
11375 try o.lowerType(Type.usize),
11374 try o.lowerType(pt, Type.usize),
1137611375 @intFromBool(struct_ty.hasRuntimeBitsIgnoreComptime(zcu)),
1137711376 );
1137811377 return self.wip.gep(.inbounds, struct_llvm_ty, struct_ptr, &.{llvm_index}, "");
......@@ -11383,7 +11382,7 @@ pub const FuncGen = struct {
1138311382 const layout = struct_ty.unionGetLayout(zcu);
1138411383 if (layout.payload_size == 0 or struct_ty.containerLayout(zcu) == .@"packed") return struct_ptr;
1138511384 const payload_index = @intFromBool(layout.tag_align.compare(.gte, layout.payload_align));
11386 const union_llvm_ty = try o.lowerType(struct_ty);
11385 const union_llvm_ty = try o.lowerType(pt, struct_ty);
1138711386 return self.wip.gepStruct(union_llvm_ty, struct_ptr, payload_index, "");
1138811387 },
1138911388 else => unreachable,
......@@ -11403,9 +11402,9 @@ pub const FuncGen = struct {
1140311402 // => so load the byte aligned value and trunc the unwanted bits.
1140411403
1140511404 const o = fg.ng.object;
11406 const pt = o.pt;
11405 const pt = fg.ng.pt;
1140711406 const zcu = pt.zcu;
11408 const payload_llvm_ty = try o.lowerType(payload_ty);
11407 const payload_llvm_ty = try o.lowerType(pt, payload_ty);
1140911408 const abi_size = payload_ty.abiSize(zcu);
1141011409
1141111410 // llvm bug workarounds:
......@@ -11450,8 +11449,8 @@ pub const FuncGen = struct {
1145011449 access_kind: Builder.MemoryAccessKind,
1145111450 ) !Builder.Value {
1145211451 const o = fg.ng.object;
11453 const pt = o.pt;
11454 const pointee_llvm_ty = try o.lowerType(pointee_type);
11452 const pt = fg.ng.pt;
11453 const pointee_llvm_ty = try o.lowerType(pt, pointee_type);
1145511454 const result_align = InternPool.Alignment.fromLlvm(ptr_alignment)
1145611455 .max(pointee_type.abiAlignment(pt.zcu)).toLlvm();
1145711456 const result_ptr = try fg.buildAlloca(pointee_llvm_ty, result_align);
......@@ -11461,7 +11460,7 @@ pub const FuncGen = struct {
1146111460 result_align,
1146211461 ptr,
1146311462 ptr_alignment,
11464 try o.builder.intValue(try o.lowerType(Type.usize), size_bytes),
11463 try o.builder.intValue(try o.lowerType(pt, Type.usize), size_bytes),
1146511464 access_kind,
1146611465 fg.disable_intrinsics,
1146711466 );
......@@ -11473,7 +11472,7 @@ pub const FuncGen = struct {
1147311472 /// For isByRef=false types, it creates a load instruction and returns it.
1147411473 fn load(self: *FuncGen, ptr: Builder.Value, ptr_ty: Type) !Builder.Value {
1147511474 const o = self.ng.object;
11476 const pt = o.pt;
11475 const pt = self.ng.pt;
1147711476 const zcu = pt.zcu;
1147811477 const info = ptr_ty.ptrInfo(zcu);
1147911478 const elem_ty = Type.fromInterned(info.child);
......@@ -11490,7 +11489,7 @@ pub const FuncGen = struct {
1149011489 assert(info.flags.vector_index != .runtime);
1149111490 if (info.flags.vector_index != .none) {
1149211491 const index_u32 = try o.builder.intValue(.i32, info.flags.vector_index);
11493 const vec_elem_ty = try o.lowerType(elem_ty);
11492 const vec_elem_ty = try o.lowerType(pt, elem_ty);
1149411493 const vec_ty = try o.builder.vectorType(.normal, info.packed_offset.host_size, vec_elem_ty);
1149511494
1149611495 const loaded_vector = try self.wip.load(access_kind, vec_ty, ptr, ptr_alignment, "");
......@@ -11511,7 +11510,7 @@ pub const FuncGen = struct {
1151111510 const elem_bits = ptr_ty.childType(zcu).bitSize(zcu);
1151211511 const shift_amt = try o.builder.intValue(containing_int_ty, info.packed_offset.bit_offset);
1151311512 const shifted_value = try self.wip.bin(.lshr, containing_int, shift_amt, "");
11514 const elem_llvm_ty = try o.lowerType(elem_ty);
11513 const elem_llvm_ty = try o.lowerType(pt, elem_ty);
1151511514
1151611515 if (isByRef(elem_ty, zcu)) {
1151711516 const result_align = elem_ty.abiAlignment(zcu).toLlvm();
......@@ -11546,7 +11545,7 @@ pub const FuncGen = struct {
1154611545 ordering: Builder.AtomicOrdering,
1154711546 ) !void {
1154811547 const o = self.ng.object;
11549 const pt = o.pt;
11548 const pt = self.ng.pt;
1155011549 const zcu = pt.zcu;
1155111550 const info = ptr_ty.ptrInfo(zcu);
1155211551 const elem_ty = Type.fromInterned(info.child);
......@@ -11560,7 +11559,7 @@ pub const FuncGen = struct {
1156011559 assert(info.flags.vector_index != .runtime);
1156111560 if (info.flags.vector_index != .none) {
1156211561 const index_u32 = try o.builder.intValue(.i32, info.flags.vector_index);
11563 const vec_elem_ty = try o.lowerType(elem_ty);
11562 const vec_elem_ty = try o.lowerType(pt, elem_ty);
1156411563 const vec_ty = try o.builder.vectorType(.normal, info.packed_offset.host_size, vec_elem_ty);
1156511564
1156611565 const loaded_vector = try self.wip.load(.normal, vec_ty, ptr, ptr_alignment, "");
......@@ -11629,7 +11628,7 @@ pub const FuncGen = struct {
1162911628 ptr_alignment,
1163011629 elem,
1163111630 elem_ty.abiAlignment(zcu).toLlvm(),
11632 try o.builder.intValue(try o.lowerType(Type.usize), elem_ty.abiSize(zcu)),
11631 try o.builder.intValue(try o.lowerType(pt, Type.usize), elem_ty.abiSize(zcu)),
1163311632 access_kind,
1163411633 self.disable_intrinsics,
1163511634 );
......@@ -11638,7 +11637,8 @@ pub const FuncGen = struct {
1163811637 fn valgrindMarkUndef(fg: *FuncGen, ptr: Builder.Value, len: Builder.Value) Allocator.Error!void {
1163911638 const VG_USERREQ__MAKE_MEM_UNDEFINED = 1296236545;
1164011639 const o = fg.ng.object;
11641 const usize_ty = try o.lowerType(Type.usize);
11640 const pt = fg.ng.pt;
11641 const usize_ty = try o.lowerType(pt, Type.usize);
1164211642 const zero = try o.builder.intValue(usize_ty, 0);
1164311643 const req = try o.builder.intValue(usize_ty, VG_USERREQ__MAKE_MEM_UNDEFINED);
1164411644 const ptr_as_usize = try fg.wip.cast(.ptrtoint, ptr, usize_ty, "");
......@@ -11656,12 +11656,12 @@ pub const FuncGen = struct {
1165611656 a5: Builder.Value,
1165711657 ) Allocator.Error!Builder.Value {
1165811658 const o = fg.ng.object;
11659 const pt = o.pt;
11659 const pt = fg.ng.pt;
1166011660 const zcu = pt.zcu;
1166111661 const target = zcu.getTarget();
1166211662 if (!target_util.hasValgrindSupport(target, .stage2_llvm)) return default_value;
1166311663
11664 const llvm_usize = try o.lowerType(Type.usize);
11664 const llvm_usize = try o.lowerType(pt, Type.usize);
1166511665 const usize_alignment = Type.usize.abiAlignment(zcu).toLlvm();
1166611666
1166711667 const array_llvm_ty = try o.builder.arrayType(6, llvm_usize);
......@@ -11787,14 +11787,12 @@ pub const FuncGen = struct {
1178711787 }
1178811788
1178911789 fn typeOf(fg: *FuncGen, inst: Air.Inst.Ref) Type {
11790 const o = fg.ng.object;
11791 const zcu = o.pt.zcu;
11790 const zcu = fg.ng.pt.zcu;
1179211791 return fg.air.typeOf(inst, &zcu.intern_pool);
1179311792 }
1179411793
1179511794 fn typeOfIndex(fg: *FuncGen, inst: Air.Inst.Index) Type {
11796 const o = fg.ng.object;
11797 const zcu = o.pt.zcu;
11795 const zcu = fg.ng.pt.zcu;
1179811796 return fg.air.typeOfIndex(inst, &zcu.intern_pool);
1179911797 }
1180011798};
......@@ -12152,40 +12150,39 @@ fn firstParamSRetSystemV(ty: Type, zcu: *Zcu, target: *const std.Target) bool {
1215212150/// In order to support the C calling convention, some return types need to be lowered
1215312151/// completely differently in the function prototype to honor the C ABI, and then
1215412152/// be effectively bitcasted to the actual return type.
12155fn lowerFnRetTy(o: *Object, fn_info: InternPool.Key.FuncType) Allocator.Error!Builder.Type {
12156 const pt = o.pt;
12153fn lowerFnRetTy(o: *Object, pt: Zcu.PerThread, fn_info: InternPool.Key.FuncType) Allocator.Error!Builder.Type {
1215712154 const zcu = pt.zcu;
1215812155 const return_type = Type.fromInterned(fn_info.return_type);
1215912156 if (!return_type.hasRuntimeBitsIgnoreComptime(zcu)) {
1216012157 // If the return type is an error set or an error union, then we make this
1216112158 // anyerror return type instead, so that it can be coerced into a function
1216212159 // pointer type which has anyerror as the return type.
12163 return if (return_type.isError(zcu)) try o.errorIntType() else .void;
12160 return if (return_type.isError(zcu)) try o.errorIntType(pt) else .void;
1216412161 }
1216512162 const target = zcu.getTarget();
1216612163 switch (fn_info.cc) {
1216712164 .@"inline" => unreachable,
12168 .auto => return if (returnTypeByRef(zcu, target, return_type)) .void else o.lowerType(return_type),
12165 .auto => return if (returnTypeByRef(zcu, target, return_type)) .void else o.lowerType(pt, return_type),
1216912166
12170 .x86_64_sysv => return lowerSystemVFnRetTy(o, fn_info),
12171 .x86_64_win => return lowerWin64FnRetTy(o, fn_info),
12172 .x86_stdcall => return if (isScalar(zcu, return_type)) o.lowerType(return_type) else .void,
12173 .x86_sysv, .x86_win => return if (isByRef(return_type, zcu)) .void else o.lowerType(return_type),
12167 .x86_64_sysv => return lowerSystemVFnRetTy(o, pt, fn_info),
12168 .x86_64_win => return lowerWin64FnRetTy(o, pt, fn_info),
12169 .x86_stdcall => return if (isScalar(zcu, return_type)) o.lowerType(pt, return_type) else .void,
12170 .x86_sysv, .x86_win => return if (isByRef(return_type, zcu)) .void else o.lowerType(pt, return_type),
1217412171 .aarch64_aapcs, .aarch64_aapcs_darwin, .aarch64_aapcs_win => switch (aarch64_c_abi.classifyType(return_type, zcu)) {
1217512172 .memory => return .void,
12176 .float_array => return o.lowerType(return_type),
12177 .byval => return o.lowerType(return_type),
12173 .float_array => return o.lowerType(pt, return_type),
12174 .byval => return o.lowerType(pt, return_type),
1217812175 .integer => return o.builder.intType(@intCast(return_type.bitSize(zcu))),
1217912176 .double_integer => return o.builder.arrayType(2, .i64),
1218012177 },
1218112178 .arm_aapcs, .arm_aapcs_vfp => switch (arm_c_abi.classifyType(return_type, zcu, .ret)) {
1218212179 .memory, .i64_array => return .void,
1218312180 .i32_array => |len| return if (len == 1) .i32 else .void,
12184 .byval => return o.lowerType(return_type),
12181 .byval => return o.lowerType(pt, return_type),
1218512182 },
1218612183 .mips_o32 => switch (mips_c_abi.classifyType(return_type, zcu, .ret)) {
1218712184 .memory, .i32_array => return .void,
12188 .byval => return o.lowerType(return_type),
12185 .byval => return o.lowerType(pt, return_type),
1218912186 },
1219012187 .riscv64_lp64, .riscv32_ilp32 => switch (riscv_c_abi.classifyType(return_type, zcu)) {
1219112188 .memory => return .void,
......@@ -12195,53 +12192,52 @@ fn lowerFnRetTy(o: *Object, fn_info: InternPool.Key.FuncType) Allocator.Error!Bu
1219512192 .double_integer => {
1219612193 return o.builder.structType(.normal, &.{ .i64, .i64 });
1219712194 },
12198 .byval => return o.lowerType(return_type),
12195 .byval => return o.lowerType(pt, return_type),
1219912196 .fields => {
1220012197 var types_len: usize = 0;
1220112198 var types: [8]Builder.Type = undefined;
1220212199 for (0..return_type.structFieldCount(zcu)) |field_index| {
1220312200 const field_ty = return_type.fieldType(field_index, zcu);
1220412201 if (!field_ty.hasRuntimeBitsIgnoreComptime(zcu)) continue;
12205 types[types_len] = try o.lowerType(field_ty);
12202 types[types_len] = try o.lowerType(pt, field_ty);
1220612203 types_len += 1;
1220712204 }
1220812205 return o.builder.structType(.normal, types[0..types_len]);
1220912206 },
1221012207 },
1221112208 .wasm_mvp => switch (wasm_c_abi.classifyType(return_type, zcu)) {
12212 .direct => |scalar_ty| return o.lowerType(scalar_ty),
12209 .direct => |scalar_ty| return o.lowerType(pt, scalar_ty),
1221312210 .indirect => return .void,
1221412211 },
1221512212 // TODO investigate other callconvs
12216 else => return o.lowerType(return_type),
12213 else => return o.lowerType(pt, return_type),
1221712214 }
1221812215}
1221912216
12220fn lowerWin64FnRetTy(o: *Object, fn_info: InternPool.Key.FuncType) Allocator.Error!Builder.Type {
12221 const zcu = o.pt.zcu;
12217fn lowerWin64FnRetTy(o: *Object, pt: Zcu.PerThread, fn_info: InternPool.Key.FuncType) Allocator.Error!Builder.Type {
12218 const zcu = pt.zcu;
1222212219 const return_type = Type.fromInterned(fn_info.return_type);
1222312220 switch (x86_64_abi.classifyWindows(return_type, zcu, zcu.getTarget())) {
1222412221 .integer => {
1222512222 if (isScalar(zcu, return_type)) {
12226 return o.lowerType(return_type);
12223 return o.lowerType(pt, return_type);
1222712224 } else {
1222812225 return o.builder.intType(@intCast(return_type.abiSize(zcu) * 8));
1222912226 }
1223012227 },
1223112228 .win_i128 => return o.builder.vectorType(.normal, 2, .i64),
1223212229 .memory => return .void,
12233 .sse => return o.lowerType(return_type),
12230 .sse => return o.lowerType(pt, return_type),
1223412231 else => unreachable,
1223512232 }
1223612233}
1223712234
12238fn lowerSystemVFnRetTy(o: *Object, fn_info: InternPool.Key.FuncType) Allocator.Error!Builder.Type {
12239 const pt = o.pt;
12235fn lowerSystemVFnRetTy(o: *Object, pt: Zcu.PerThread, fn_info: InternPool.Key.FuncType) Allocator.Error!Builder.Type {
1224012236 const zcu = pt.zcu;
1224112237 const ip = &zcu.intern_pool;
1224212238 const return_type = Type.fromInterned(fn_info.return_type);
1224312239 if (isScalar(zcu, return_type)) {
12244 return o.lowerType(return_type);
12240 return o.lowerType(pt, return_type);
1224512241 }
1224612242 const classes = x86_64_abi.classifySystemV(return_type, zcu, zcu.getTarget(), .ret);
1224712243 var types_index: u32 = 0;
......@@ -12305,6 +12301,7 @@ fn lowerSystemVFnRetTy(o: *Object, fn_info: InternPool.Key.FuncType) Allocator.E
1230512301
1230612302const ParamTypeIterator = struct {
1230712303 object: *Object,
12304 pt: Zcu.PerThread,
1230812305 fn_info: InternPool.Key.FuncType,
1230912306 zig_index: u32,
1231012307 llvm_index: u32,
......@@ -12327,7 +12324,7 @@ const ParamTypeIterator = struct {
1232712324
1232812325 pub fn next(it: *ParamTypeIterator) Allocator.Error!?Lowering {
1232912326 if (it.zig_index >= it.fn_info.param_types.len) return null;
12330 const ip = &it.object.pt.zcu.intern_pool;
12327 const ip = &it.pt.zcu.intern_pool;
1233112328 const ty = it.fn_info.param_types.get(ip)[it.zig_index];
1233212329 it.byval_attr = false;
1233312330 return nextInner(it, Type.fromInterned(ty));
......@@ -12335,7 +12332,8 @@ const ParamTypeIterator = struct {
1233512332
1233612333 /// `airCall` uses this instead of `next` so that it can take into account variadic functions.
1233712334 pub fn nextCall(it: *ParamTypeIterator, fg: *FuncGen, args: []const Air.Inst.Ref) Allocator.Error!?Lowering {
12338 const ip = &it.object.pt.zcu.intern_pool;
12335 assert(std.meta.eql(it.pt, fg.ng.pt));
12336 const ip = &it.pt.zcu.intern_pool;
1233912337 if (it.zig_index >= it.fn_info.param_types.len) {
1234012338 if (it.zig_index >= args.len) {
1234112339 return null;
......@@ -12348,7 +12346,7 @@ const ParamTypeIterator = struct {
1234812346 }
1234912347
1235012348 fn nextInner(it: *ParamTypeIterator, ty: Type) Allocator.Error!?Lowering {
12351 const pt = it.object.pt;
12349 const pt = it.pt;
1235212350 const zcu = pt.zcu;
1235312351 const target = zcu.getTarget();
1235412352
......@@ -12448,7 +12446,7 @@ const ParamTypeIterator = struct {
1244812446 for (0..ty.structFieldCount(zcu)) |field_index| {
1244912447 const field_ty = ty.fieldType(field_index, zcu);
1245012448 if (!field_ty.hasRuntimeBitsIgnoreComptime(zcu)) continue;
12451 it.types_buffer[it.types_len] = try it.object.lowerType(field_ty);
12449 it.types_buffer[it.types_len] = try it.object.lowerType(pt, field_ty);
1245212450 it.types_len += 1;
1245312451 }
1245412452 it.llvm_index += it.types_len - 1;
......@@ -12464,7 +12462,7 @@ const ParamTypeIterator = struct {
1246412462 return .byval;
1246512463 } else {
1246612464 var types_buffer: [8]Builder.Type = undefined;
12467 types_buffer[0] = try it.object.lowerType(scalar_ty);
12465 types_buffer[0] = try it.object.lowerType(pt, scalar_ty);
1246812466 it.types_buffer = types_buffer;
1246912467 it.types_len = 1;
1247012468 it.llvm_index += 1;
......@@ -12489,7 +12487,7 @@ const ParamTypeIterator = struct {
1248912487 }
1249012488
1249112489 fn nextWin64(it: *ParamTypeIterator, ty: Type) ?Lowering {
12492 const zcu = it.object.pt.zcu;
12490 const zcu = it.pt.zcu;
1249312491 switch (x86_64_abi.classifyWindows(ty, zcu, zcu.getTarget())) {
1249412492 .integer => {
1249512493 if (isScalar(zcu, ty)) {
......@@ -12522,7 +12520,7 @@ const ParamTypeIterator = struct {
1252212520 }
1252312521
1252412522 fn nextSystemV(it: *ParamTypeIterator, ty: Type) Allocator.Error!?Lowering {
12525 const zcu = it.object.pt.zcu;
12523 const zcu = it.pt.zcu;
1252612524 const ip = &zcu.intern_pool;
1252712525 const classes = x86_64_abi.classifySystemV(ty, zcu, zcu.getTarget(), .arg);
1252812526 if (classes[0] == .memory) {
......@@ -12615,9 +12613,10 @@ const ParamTypeIterator = struct {
1261512613 }
1261612614};
1261712615
12618fn iterateParamTypes(object: *Object, fn_info: InternPool.Key.FuncType) ParamTypeIterator {
12616fn iterateParamTypes(object: *Object, pt: Zcu.PerThread, fn_info: InternPool.Key.FuncType) ParamTypeIterator {
1261912617 return .{
1262012618 .object = object,
12619 .pt = pt,
1262112620 .fn_info = fn_info,
1262212621 .zig_index = 0,
1262312622 .llvm_index = 0,
src/codegen/spirv.zig+258-292
......@@ -15,9 +15,7 @@ const InternPool = @import("../InternPool.zig");
1515const spec = @import("spirv/spec.zig");
1616const Opcode = spec.Opcode;
1717const Word = spec.Word;
18const IdRef = spec.IdRef;
19const IdResult = spec.IdResult;
20const IdResultType = spec.IdResultType;
18const Id = spec.Id;
2119const StorageClass = spec.StorageClass;
2220
2321const SpvModule = @import("spirv/Module.zig");
......@@ -26,7 +24,7 @@ const IdRange = SpvModule.IdRange;
2624const SpvSection = @import("spirv/Section.zig");
2725const SpvAssembler = @import("spirv/Assembler.zig");
2826
29const InstMap = std.AutoHashMapUnmanaged(Air.Inst.Index, IdRef);
27const InstMap = std.AutoHashMapUnmanaged(Air.Inst.Index, Id);
3028
3129pub fn legalizeFeatures(_: *const std.Target) *const Air.Legalize.Features {
3230 return comptime &.initMany(&.{
......@@ -42,10 +40,10 @@ pub fn legalizeFeatures(_: *const std.Target) *const Air.Legalize.Features {
4240pub const zig_call_abi_ver = 3;
4341pub const big_int_bits = 32;
4442
45const InternMap = std.AutoHashMapUnmanaged(struct { InternPool.Index, NavGen.Repr }, IdResult);
43const InternMap = std.AutoHashMapUnmanaged(struct { InternPool.Index, NavGen.Repr }, Id);
4644const PtrTypeMap = std.AutoHashMapUnmanaged(
4745 struct { InternPool.Index, StorageClass, NavGen.Repr },
48 struct { ty_id: IdRef, fwd_emitted: bool },
46 struct { ty_id: Id, fwd_emitted: bool },
4947);
5048
5149const ControlFlow = union(enum) {
......@@ -55,10 +53,10 @@ const ControlFlow = union(enum) {
5553 /// inside the block must reach the outside.
5654 const Block = union(enum) {
5755 const Incoming = struct {
58 src_label: IdRef,
56 src_label: Id,
5957 /// Instruction that returns an u32 value of the
6058 /// `Air.Inst.Index` that control flow should jump to.
61 next_block: IdRef,
59 next_block: Id,
6260 };
6361
6462 const SelectionMerge = struct {
......@@ -69,7 +67,7 @@ const ControlFlow = union(enum) {
6967 /// The label id of the cond_br's merge block.
7068 /// For the top-most element in the stack, this
7169 /// value is undefined.
72 merge_block: IdRef,
70 merge_block: Id,
7371 };
7472
7573 /// For a `selection` type block, we cannot use early exits, and we
......@@ -100,7 +98,7 @@ const ControlFlow = union(enum) {
10098 /// of conditions that jump to the loop exit.
10199 merges: std.ArrayListUnmanaged(Incoming) = .empty,
102100 /// The label id of the loop's merge block.
103 merge_block: IdRef,
101 merge_block: Id,
104102 },
105103
106104 fn deinit(self: *Structured.Block, a: Allocator) void {
......@@ -116,17 +114,17 @@ const ControlFlow = union(enum) {
116114 block_stack: std.ArrayListUnmanaged(*Structured.Block) = .empty,
117115 /// Maps `block` inst indices to the variable that the block's result
118116 /// value must be written to.
119 block_results: std.AutoHashMapUnmanaged(Air.Inst.Index, IdRef) = .empty,
117 block_results: std.AutoHashMapUnmanaged(Air.Inst.Index, Id) = .empty,
120118 };
121119
122120 const Unstructured = struct {
123121 const Incoming = struct {
124 src_label: IdRef,
125 break_value_id: IdRef,
122 src_label: Id,
123 break_value_id: Id,
126124 };
127125
128126 const Block = struct {
129 label: ?IdRef = null,
127 label: ?Id = null,
130128 incoming_blocks: std.ArrayListUnmanaged(Incoming) = .empty,
131129 };
132130
......@@ -318,7 +316,7 @@ const NavGen = struct {
318316
319317 /// An array of function argument result-ids. Each index corresponds with the
320318 /// function argument of the same index.
321 args: std.ArrayListUnmanaged(IdRef) = .empty,
319 args: std.ArrayListUnmanaged(Id) = .empty,
322320
323321 /// A counter to keep track of how many `arg` instructions we've seen yet.
324322 next_arg_index: u32 = 0,
......@@ -337,7 +335,7 @@ const NavGen = struct {
337335 control_flow: ControlFlow,
338336
339337 /// The label of the SPIR-V block we are currently generating.
340 current_block_label: IdRef,
338 current_block_label: Id,
341339
342340 /// The code (prologue and body) for the function we are currently generating code for.
343341 func: SpvModule.Fn = .{},
......@@ -436,17 +434,17 @@ const NavGen = struct {
436434
437435 /// This imports the "default" extended instruction set for the target
438436 /// For OpenCL, OpenCL.std.100. For Vulkan and OpenGL, GLSL.std.450.
439 fn importExtendedSet(self: *NavGen) !IdResult {
437 fn importExtendedSet(self: *NavGen) !Id {
440438 const target = self.spv.target;
441439 return switch (target.os.tag) {
442 .opencl, .amdhsa => try self.spv.importInstructionSet(.@"OpenCL.std"),
443 .vulkan, .opengl => try self.spv.importInstructionSet(.@"GLSL.std.450"),
440 .opencl, .amdhsa => try self.spv.importInstructionSet(.open_cl_std),
441 .vulkan, .opengl => try self.spv.importInstructionSet(.glsl_std_450),
444442 else => unreachable,
445443 };
446444 }
447445
448446 /// Fetch the result-id for a previously generated instruction or constant.
449 fn resolve(self: *NavGen, inst: Air.Inst.Ref) !IdRef {
447 fn resolve(self: *NavGen, inst: Air.Inst.Ref) !Id {
450448 const pt = self.pt;
451449 const zcu = pt.zcu;
452450 if (try self.air.value(inst, pt)) |val| {
......@@ -468,7 +466,7 @@ const NavGen = struct {
468466 return self.inst_results.get(index).?; // Assertion means instruction does not dominate usage.
469467 }
470468
471 fn resolveUav(self: *NavGen, val: InternPool.Index) !IdRef {
469 fn resolveUav(self: *NavGen, val: InternPool.Index) !Id {
472470 // TODO: This cannot be a function at this point, but it should probably be handled anyway.
473471
474472 const zcu = self.pt.zcu;
......@@ -476,16 +474,16 @@ const NavGen = struct {
476474 const decl_ptr_ty_id = try self.ptrType(ty, self.spvStorageClass(.generic), .indirect);
477475
478476 const spv_decl_index = blk: {
479 const entry = try self.object.uav_link.getOrPut(self.object.gpa, .{ val, .Function });
477 const entry = try self.object.uav_link.getOrPut(self.object.gpa, .{ val, .function });
480478 if (entry.found_existing) {
481 try self.addFunctionDep(entry.value_ptr.*, .Function);
479 try self.addFunctionDep(entry.value_ptr.*, .function);
482480
483481 const result_id = self.spv.declPtr(entry.value_ptr.*).result_id;
484482 return try self.castToGeneric(decl_ptr_ty_id, result_id);
485483 }
486484
487485 const spv_decl_index = try self.spv.allocDecl(.invocation_global);
488 try self.addFunctionDep(spv_decl_index, .Function);
486 try self.addFunctionDep(spv_decl_index, .function);
489487 entry.value_ptr.* = spv_decl_index;
490488 break :blk spv_decl_index;
491489 };
......@@ -536,7 +534,7 @@ const NavGen = struct {
536534
537535 try self.spv.debugNameFmt(initializer_id, "initializer of __anon_{d}", .{@intFromEnum(val)});
538536
539 const fn_decl_ptr_ty_id = try self.ptrType(ty, .Function, .indirect);
537 const fn_decl_ptr_ty_id = try self.ptrType(ty, .function, .indirect);
540538 try self.spv.sections.types_globals_constants.emit(self.spv.gpa, .OpExtInst, .{
541539 .id_result_type = fn_decl_ptr_ty_id,
542540 .id_result = result_id,
......@@ -552,7 +550,7 @@ const NavGen = struct {
552550 fn addFunctionDep(self: *NavGen, decl_index: SpvModule.Decl.Index, storage_class: StorageClass) !void {
553551 if (self.spv.version.minor < 4) {
554552 // Before version 1.4, the interface’s storage classes are limited to the Input and Output
555 if (storage_class == .Input or storage_class == .Output) {
553 if (storage_class == .input or storage_class == .output) {
556554 try self.func.decl_deps.put(self.spv.gpa, decl_index, {});
557555 }
558556 } else {
......@@ -560,7 +558,7 @@ const NavGen = struct {
560558 }
561559 }
562560
563 fn castToGeneric(self: *NavGen, type_id: IdRef, ptr_id: IdRef) !IdRef {
561 fn castToGeneric(self: *NavGen, type_id: Id, ptr_id: Id) !Id {
564562 if (self.spv.hasFeature(.generic_pointer)) {
565563 const result_id = self.spv.allocId();
566564 try self.func.body.emit(self.spv.gpa, .OpPtrCastToGeneric, .{
......@@ -578,7 +576,7 @@ const NavGen = struct {
578576 /// block we are currently generating.
579577 /// Note that there is no such thing as nested blocks like in ZIR or AIR, so we don't need to
580578 /// keep track of the previous block.
581 fn beginSpvBlock(self: *NavGen, label: IdResult) !void {
579 fn beginSpvBlock(self: *NavGen, label: Id) !void {
582580 try self.func.body.emit(self.spv.gpa, .OpLabel, .{ .id_result = label });
583581 self.current_block_label = label;
584582 }
......@@ -705,7 +703,7 @@ const NavGen = struct {
705703 }
706704
707705 /// Emits a bool constant in a particular representation.
708 fn constBool(self: *NavGen, value: bool, repr: Repr) !IdRef {
706 fn constBool(self: *NavGen, value: bool, repr: Repr) !Id {
709707 return switch (repr) {
710708 .indirect => self.constInt(Type.u1, @intFromBool(value)),
711709 .direct => self.spv.constBool(value),
......@@ -715,7 +713,7 @@ const NavGen = struct {
715713 /// Emits an integer constant.
716714 /// This function, unlike SpvModule.constInt, takes care to bitcast
717715 /// the value to an unsigned int first for Kernels.
718 fn constInt(self: *NavGen, ty: Type, value: anytype) !IdRef {
716 fn constInt(self: *NavGen, ty: Type, value: anytype) !Id {
719717 const zcu = self.pt.zcu;
720718 const scalar_ty = ty.scalarType(zcu);
721719 const int_info = scalar_ty.intInfo(zcu);
......@@ -773,7 +771,7 @@ const NavGen = struct {
773771 return self.constructCompositeSplat(ty, result_id);
774772 }
775773
776 pub fn constructComposite(self: *NavGen, result_ty_id: IdRef, constituents: []const IdRef) !IdRef {
774 pub fn constructComposite(self: *NavGen, result_ty_id: Id, constituents: []const Id) !Id {
777775 const result_id = self.spv.allocId();
778776 try self.func.body.emit(self.gpa, .OpCompositeConstruct, .{
779777 .id_result_type = result_ty_id,
......@@ -785,11 +783,11 @@ const NavGen = struct {
785783
786784 /// Construct a composite at runtime with all lanes set to the same value.
787785 /// ty must be an aggregate type.
788 fn constructCompositeSplat(self: *NavGen, ty: Type, constituent: IdRef) !IdRef {
786 fn constructCompositeSplat(self: *NavGen, ty: Type, constituent: Id) !Id {
789787 const zcu = self.pt.zcu;
790788 const n: usize = @intCast(ty.arrayLen(zcu));
791789
792 const constituents = try self.gpa.alloc(IdRef, n);
790 const constituents = try self.gpa.alloc(Id, n);
793791 defer self.gpa.free(constituents);
794792 @memset(constituents, constituent);
795793
......@@ -803,7 +801,7 @@ const NavGen = struct {
803801 /// is done by emitting a sequence of instructions that initialize the value.
804802 //
805803 /// This function should only be called during function code generation.
806 fn constant(self: *NavGen, ty: Type, val: Value, repr: Repr) !IdRef {
804 fn constant(self: *NavGen, ty: Type, val: Value, repr: Repr) !Id {
807805 // Note: Using intern_map can only be used with constants that DO NOT generate any runtime code!!
808806 // Ideally that should be all constants in the future, or it should be cleaned up somehow. For
809807 // now, only use the intern_map on case-by-case basis by breaking to :cache.
......@@ -909,7 +907,7 @@ const NavGen = struct {
909907 .payload => |payload| payload,
910908 });
911909
912 var constituents: [2]IdRef = undefined;
910 var constituents: [2]Id = undefined;
913911 var types: [2]Type = undefined;
914912 if (eu_layout.error_first) {
915913 constituents[0] = try self.constant(err_ty, err_val, .indirect);
......@@ -967,7 +965,7 @@ const NavGen = struct {
967965 inline .array_type, .vector_type => |array_type, tag| {
968966 const elem_ty = Type.fromInterned(array_type.child);
969967
970 const constituents = try self.gpa.alloc(IdRef, @intCast(ty.arrayLenIncludingSentinel(zcu)));
968 const constituents = try self.gpa.alloc(Id, @intCast(ty.arrayLenIncludingSentinel(zcu)));
971969 defer self.gpa.free(constituents);
972970
973971 const child_repr: Repr = switch (tag) {
......@@ -1015,7 +1013,7 @@ const NavGen = struct {
10151013 var types = std.ArrayList(Type).init(self.gpa);
10161014 defer types.deinit();
10171015
1018 var constituents = std.ArrayList(IdRef).init(self.gpa);
1016 var constituents = std.ArrayList(Id).init(self.gpa);
10191017 defer constituents.deinit();
10201018
10211019 var it = struct_type.iterateRuntimeOrder(ip);
......@@ -1064,7 +1062,7 @@ const NavGen = struct {
10641062 return cacheable_id;
10651063 }
10661064
1067 fn constantPtr(self: *NavGen, ptr_val: Value) Error!IdRef {
1065 fn constantPtr(self: *NavGen, ptr_val: Value) Error!Id {
10681066 const pt = self.pt;
10691067
10701068 if (ptr_val.isUndef(pt.zcu)) {
......@@ -1080,7 +1078,7 @@ const NavGen = struct {
10801078 return self.derivePtr(derivation);
10811079 }
10821080
1083 fn derivePtr(self: *NavGen, derivation: Value.PointerDeriveStep) Error!IdRef {
1081 fn derivePtr(self: *NavGen, derivation: Value.PointerDeriveStep) Error!Id {
10841082 const pt = self.pt;
10851083 const zcu = pt.zcu;
10861084 switch (derivation) {
......@@ -1159,7 +1157,7 @@ const NavGen = struct {
11591157 self: *NavGen,
11601158 ty: Type,
11611159 uav: InternPool.Key.Ptr.BaseAddr.Uav,
1162 ) !IdRef {
1160 ) !Id {
11631161 // TODO: Merge this function with constantDeclRef.
11641162
11651163 const pt = self.pt;
......@@ -1182,7 +1180,7 @@ const NavGen = struct {
11821180
11831181 // Uav refs are always generic.
11841182 assert(ty.ptrAddressSpace(zcu) == .generic);
1185 const decl_ptr_ty_id = try self.ptrType(uav_ty, .Generic, .indirect);
1183 const decl_ptr_ty_id = try self.ptrType(uav_ty, .generic, .indirect);
11861184 const ptr_id = try self.resolveUav(uav.val);
11871185
11881186 if (decl_ptr_ty_id != ty_id) {
......@@ -1199,7 +1197,7 @@ const NavGen = struct {
11991197 }
12001198 }
12011199
1202 fn constantNavRef(self: *NavGen, ty: Type, nav_index: InternPool.Nav.Index) !IdRef {
1200 fn constantNavRef(self: *NavGen, ty: Type, nav_index: InternPool.Nav.Index) !Id {
12031201 const pt = self.pt;
12041202 const zcu = pt.zcu;
12051203 const ip = &zcu.intern_pool;
......@@ -1240,7 +1238,7 @@ const NavGen = struct {
12401238 const decl_ptr_ty_id = try self.ptrType(nav_ty, storage_class, .indirect);
12411239
12421240 const ptr_id = switch (storage_class) {
1243 .Generic => try self.castToGeneric(decl_ptr_ty_id, decl_id),
1241 .generic => try self.castToGeneric(decl_ptr_ty_id, decl_id),
12441242 else => decl_id,
12451243 };
12461244
......@@ -1272,7 +1270,7 @@ const NavGen = struct {
12721270 /// The integer type that is returned by this function is the type that is used to perform
12731271 /// actual operations (as well as store) a Zig type of a particular number of bits. To create
12741272 /// a type with an exact size, use SpvModule.intType.
1275 fn intType(self: *NavGen, signedness: std.builtin.Signedness, bits: u16) !IdRef {
1273 fn intType(self: *NavGen, signedness: std.builtin.Signedness, bits: u16) !Id {
12761274 const backing_bits, const big_int = self.backingIntBits(bits);
12771275 if (big_int) {
12781276 if (backing_bits > 64) {
......@@ -1289,12 +1287,12 @@ const NavGen = struct {
12891287 };
12901288 }
12911289
1292 fn arrayType(self: *NavGen, len: u32, child_ty: IdRef) !IdRef {
1290 fn arrayType(self: *NavGen, len: u32, child_ty: Id) !Id {
12931291 const len_id = try self.constInt(Type.u32, len);
12941292 return self.spv.arrayType(len_id, child_ty);
12951293 }
12961294
1297 fn ptrType(self: *NavGen, child_ty: Type, storage_class: StorageClass, child_repr: Repr) !IdRef {
1295 fn ptrType(self: *NavGen, child_ty: Type, storage_class: StorageClass, child_repr: Repr) !Id {
12981296 const zcu = self.pt.zcu;
12991297 const ip = &zcu.intern_pool;
13001298 const key = .{ child_ty.toIntern(), storage_class, child_repr };
......@@ -1323,7 +1321,7 @@ const NavGen = struct {
13231321 .vulkan, .opengl => {
13241322 if (child_ty.zigTypeTag(zcu) == .@"struct") {
13251323 switch (storage_class) {
1326 .Uniform, .PushConstant => try self.spv.decorate(child_ty_id, .Block),
1324 .uniform, .push_constant => try self.spv.decorate(child_ty_id, .block),
13271325 else => {},
13281326 }
13291327 }
......@@ -1331,7 +1329,7 @@ const NavGen = struct {
13311329 switch (ip.indexToKey(child_ty.toIntern())) {
13321330 .func_type, .opaque_type => {},
13331331 else => {
1334 try self.spv.decorate(result_id, .{ .ArrayStride = .{ .array_stride = @intCast(child_ty.abiSize(zcu)) } });
1332 try self.spv.decorate(result_id, .{ .array_stride = .{ .array_stride = @intCast(child_ty.abiSize(zcu)) } });
13351333 },
13361334 }
13371335 },
......@@ -1349,9 +1347,9 @@ const NavGen = struct {
13491347 return result_id;
13501348 }
13511349
1352 fn functionType(self: *NavGen, return_ty: Type, param_types: []const Type) !IdRef {
1350 fn functionType(self: *NavGen, return_ty: Type, param_types: []const Type) !Id {
13531351 const return_ty_id = try self.resolveFnReturnType(return_ty);
1354 const param_ids = try self.gpa.alloc(IdRef, param_types.len);
1352 const param_ids = try self.gpa.alloc(Id, param_types.len);
13551353 defer self.gpa.free(param_ids);
13561354
13571355 for (param_types, param_ids) |param_ty, *param_id| {
......@@ -1379,7 +1377,7 @@ const NavGen = struct {
13791377 /// padding: [padding_size]u8,
13801378 /// }
13811379 /// If any of the fields' size is 0, it will be omitted.
1382 fn resolveUnionType(self: *NavGen, ty: Type) !IdRef {
1380 fn resolveUnionType(self: *NavGen, ty: Type) !Id {
13831381 const zcu = self.pt.zcu;
13841382 const ip = &zcu.intern_pool;
13851383 const union_obj = zcu.typeToUnion(ty).?;
......@@ -1394,7 +1392,7 @@ const NavGen = struct {
13941392 return try self.resolveType(Type.fromInterned(union_obj.enum_tag_ty), .indirect);
13951393 }
13961394
1397 var member_types: [4]IdRef = undefined;
1395 var member_types: [4]Id = undefined;
13981396 var member_names: [4][]const u8 = undefined;
13991397
14001398 const u8_ty_id = try self.resolveType(Type.u8, .direct);
......@@ -1433,7 +1431,7 @@ const NavGen = struct {
14331431 return result_id;
14341432 }
14351433
1436 fn resolveFnReturnType(self: *NavGen, ret_ty: Type) !IdRef {
1434 fn resolveFnReturnType(self: *NavGen, ret_ty: Type) !Id {
14371435 const zcu = self.pt.zcu;
14381436 if (!ret_ty.hasRuntimeBitsIgnoreComptime(zcu)) {
14391437 // If the return type is an error set or an error union, then we make this
......@@ -1450,7 +1448,7 @@ const NavGen = struct {
14501448 }
14511449
14521450 /// Turn a Zig type into a SPIR-V Type, and return a reference to it.
1453 fn resolveType(self: *NavGen, ty: Type, repr: Repr) Error!IdRef {
1451 fn resolveType(self: *NavGen, ty: Type, repr: Repr) Error!Id {
14541452 if (self.intern_map.get(.{ ty.toIntern(), repr })) |id| {
14551453 return id;
14561454 }
......@@ -1460,7 +1458,7 @@ const NavGen = struct {
14601458 return id;
14611459 }
14621460
1463 fn resolveTypeInner(self: *NavGen, ty: Type, repr: Repr) Error!IdRef {
1461 fn resolveTypeInner(self: *NavGen, ty: Type, repr: Repr) Error!Id {
14641462 const pt = self.pt;
14651463 const zcu = pt.zcu;
14661464 const ip = &zcu.intern_pool;
......@@ -1564,7 +1562,7 @@ const NavGen = struct {
15641562 const result_id = try self.arrayType(total_len, elem_ty_id);
15651563 switch (self.spv.target.os.tag) {
15661564 .vulkan, .opengl => {
1567 try self.spv.decorate(result_id, .{ .ArrayStride = .{
1565 try self.spv.decorate(result_id, .{ .array_stride = .{
15681566 .array_stride = @intCast(elem_ty.abiSize(zcu)),
15691567 } });
15701568 },
......@@ -1604,7 +1602,7 @@ const NavGen = struct {
16041602 assert(!fn_info.is_var_args);
16051603
16061604 // Note: Logic is different from functionType().
1607 const param_ty_ids = try self.gpa.alloc(IdRef, fn_info.param_types.len);
1605 const param_ty_ids = try self.gpa.alloc(Id, fn_info.param_types.len);
16081606 defer self.gpa.free(param_ty_ids);
16091607 var param_index: usize = 0;
16101608 for (fn_info.param_types.get(ip)) |param_ty_index| {
......@@ -1655,7 +1653,7 @@ const NavGen = struct {
16551653 .@"struct" => {
16561654 const struct_type = switch (ip.indexToKey(ty.toIntern())) {
16571655 .tuple_type => |tuple| {
1658 const member_types = try self.gpa.alloc(IdRef, tuple.values.len);
1656 const member_types = try self.gpa.alloc(Id, tuple.values.len);
16591657 defer self.gpa.free(member_types);
16601658
16611659 var member_index: usize = 0;
......@@ -1683,7 +1681,7 @@ const NavGen = struct {
16831681 return try self.resolveType(Type.fromInterned(struct_type.backingIntTypeUnordered(ip)), .direct);
16841682 }
16851683
1686 var member_types = std.ArrayList(IdRef).init(self.gpa);
1684 var member_types = std.ArrayList(Id).init(self.gpa);
16871685 defer member_types.deinit();
16881686
16891687 var member_names = std.ArrayList([]const u8).init(self.gpa);
......@@ -1701,7 +1699,7 @@ const NavGen = struct {
17011699
17021700 switch (self.spv.target.os.tag) {
17031701 .vulkan, .opengl => {
1704 try self.spv.decorateMember(result_id, index, .{ .Offset = .{
1702 try self.spv.decorateMember(result_id, index, .{ .offset = .{
17051703 .byte_offset = @intCast(ty.structFieldOffset(field_index, zcu)),
17061704 } });
17071705 },
......@@ -1765,7 +1763,7 @@ const NavGen = struct {
17651763
17661764 const payload_ty_id = try self.resolveType(payload_ty, .indirect);
17671765
1768 var member_types: [2]IdRef = undefined;
1766 var member_types: [2]Id = undefined;
17691767 var member_names: [2][]const u8 = undefined;
17701768 if (eu_layout.error_first) {
17711769 // Put the error first
......@@ -1809,30 +1807,30 @@ const NavGen = struct {
18091807
18101808 fn spvStorageClass(self: *NavGen, as: std.builtin.AddressSpace) StorageClass {
18111809 return switch (as) {
1812 .generic => if (self.spv.hasFeature(.generic_pointer)) .Generic else .Function,
1810 .generic => if (self.spv.hasFeature(.generic_pointer)) .generic else .function,
18131811 .global => switch (self.spv.target.os.tag) {
1814 .opencl, .amdhsa => .CrossWorkgroup,
1815 else => .StorageBuffer,
1812 .opencl, .amdhsa => .cross_workgroup,
1813 else => .storage_buffer,
18161814 },
18171815 .push_constant => {
1818 return .PushConstant;
1816 return .push_constant;
18191817 },
18201818 .output => {
1821 return .Output;
1819 return .output;
18221820 },
18231821 .uniform => {
1824 return .Uniform;
1822 return .uniform;
18251823 },
18261824 .storage_buffer => {
1827 return .StorageBuffer;
1825 return .storage_buffer;
18281826 },
18291827 .physical_storage_buffer => {
1830 return .PhysicalStorageBuffer;
1828 return .physical_storage_buffer;
18311829 },
1832 .constant => .UniformConstant,
1833 .shared => .Workgroup,
1834 .local => .Function,
1835 .input => .Input,
1830 .constant => .uniform_constant,
1831 .shared => .workgroup,
1832 .local => .function,
1833 .input => .input,
18361834 .gs,
18371835 .fs,
18381836 .ss,
......@@ -1980,22 +1978,22 @@ const NavGen = struct {
19801978 value: Temporary.Value,
19811979
19821980 const Value = union(enum) {
1983 singleton: IdResult,
1981 singleton: Id,
19841982 exploded_vector: IdRange,
19851983 };
19861984
1987 fn init(ty: Type, singleton: IdResult) Temporary {
1985 fn init(ty: Type, singleton: Id) Temporary {
19881986 return .{ .ty = ty, .value = .{ .singleton = singleton } };
19891987 }
19901988
1991 fn materialize(self: Temporary, ng: *NavGen) !IdResult {
1989 fn materialize(self: Temporary, ng: *NavGen) !Id {
19921990 const zcu = ng.pt.zcu;
19931991 switch (self.value) {
19941992 .singleton => |id| return id,
19951993 .exploded_vector => |range| {
19961994 assert(self.ty.isVector(zcu));
19971995 assert(self.ty.vectorLen(zcu) == range.len);
1998 const constituents = try ng.gpa.alloc(IdRef, range.len);
1996 const constituents = try ng.gpa.alloc(Id, range.len);
19991997 defer ng.gpa.free(constituents);
20001998 for (constituents, 0..range.len) |*id, i| {
20011999 id.* = range.at(i);
......@@ -2170,16 +2168,16 @@ const NavGen = struct {
21702168 /// on the operation and input value.
21712169 const Value = union(enum) {
21722170 /// A single scalar value that is used by a scalar operation.
2173 scalar: IdResult,
2171 scalar: Id,
21742172 /// A single scalar that is broadcasted in an unrolled operation.
2175 scalar_broadcast: IdResult,
2173 scalar_broadcast: Id,
21762174 /// A vector represented by a consecutive list of IDs that is used in an unrolled operation.
21772175 vector_exploded: IdRange,
21782176 };
21792177
21802178 /// Query the value at a particular index of the operation. Note that
21812179 /// the index is *not* the component/lane, but the index of the *operation*.
2182 fn at(self: PreparedOperand, i: usize) IdResult {
2180 fn at(self: PreparedOperand, i: usize) Id {
21832181 switch (self.value) {
21842182 .scalar => |id| {
21852183 assert(i == 0);
......@@ -2253,9 +2251,9 @@ const NavGen = struct {
22532251
22542252 for (0..ops) |i| {
22552253 try self.func.body.emitRaw(self.spv.gpa, opcode, 3);
2256 self.func.body.writeOperand(spec.IdResultType, op_result_ty_id);
2257 self.func.body.writeOperand(IdResult, results.at(i));
2258 self.func.body.writeOperand(IdResult, op_src.at(i));
2254 self.func.body.writeOperand(spec.Id, op_result_ty_id);
2255 self.func.body.writeOperand(Id, results.at(i));
2256 self.func.body.writeOperand(Id, op_src.at(i));
22592257 }
22602258
22612259 return v.finalize(result_ty, results);
......@@ -2388,10 +2386,10 @@ const NavGen = struct {
23882386
23892387 for (0..ops) |i| {
23902388 try self.func.body.emitRaw(self.spv.gpa, opcode, 4);
2391 self.func.body.writeOperand(spec.IdResultType, op_result_ty_id);
2392 self.func.body.writeOperand(IdResult, results.at(i));
2393 self.func.body.writeOperand(IdResult, op_lhs.at(i));
2394 self.func.body.writeOperand(IdResult, op_rhs.at(i));
2389 self.func.body.writeOperand(spec.Id, op_result_ty_id);
2390 self.func.body.writeOperand(Id, results.at(i));
2391 self.func.body.writeOperand(Id, op_lhs.at(i));
2392 self.func.body.writeOperand(Id, op_rhs.at(i));
23952393 }
23962394
23972395 return v.finalize(result_ty, results);
......@@ -2442,9 +2440,9 @@ const NavGen = struct {
24422440 }) |opcode| {
24432441 for (0..ops) |i| {
24442442 try self.func.body.emitRaw(self.spv.gpa, opcode, 3);
2445 self.func.body.writeOperand(spec.IdResultType, op_result_ty_id);
2446 self.func.body.writeOperand(IdResult, results.at(i));
2447 self.func.body.writeOperand(IdResult, op_operand.at(i));
2443 self.func.body.writeOperand(spec.Id, op_result_ty_id);
2444 self.func.body.writeOperand(Id, results.at(i));
2445 self.func.body.writeOperand(Id, op_operand.at(i));
24482446 }
24492447 } else {
24502448 const set = try self.importExtendedSet();
......@@ -2583,10 +2581,10 @@ const NavGen = struct {
25832581 }) |opcode| {
25842582 for (0..ops) |i| {
25852583 try self.func.body.emitRaw(self.spv.gpa, opcode, 4);
2586 self.func.body.writeOperand(spec.IdResultType, op_result_ty_id);
2587 self.func.body.writeOperand(IdResult, results.at(i));
2588 self.func.body.writeOperand(IdResult, op_lhs.at(i));
2589 self.func.body.writeOperand(IdResult, op_rhs.at(i));
2584 self.func.body.writeOperand(spec.Id, op_result_ty_id);
2585 self.func.body.writeOperand(Id, results.at(i));
2586 self.func.body.writeOperand(Id, op_lhs.at(i));
2587 self.func.body.writeOperand(Id, op_rhs.at(i));
25902588 }
25912589 } else {
25922590 const set = try self.importExtendedSet();
......@@ -2702,10 +2700,10 @@ const NavGen = struct {
27022700 const op_result = self.spv.allocId();
27032701
27042702 try self.func.body.emitRaw(self.spv.gpa, opcode, 4);
2705 self.func.body.writeOperand(spec.IdResultType, op_result_ty_id);
2706 self.func.body.writeOperand(IdResult, op_result);
2707 self.func.body.writeOperand(IdResult, lhs_op.at(i));
2708 self.func.body.writeOperand(IdResult, rhs_op.at(i));
2703 self.func.body.writeOperand(spec.Id, op_result_ty_id);
2704 self.func.body.writeOperand(Id, op_result);
2705 self.func.body.writeOperand(Id, lhs_op.at(i));
2706 self.func.body.writeOperand(Id, rhs_op.at(i));
27092707
27102708 // The above operation returns a struct. We might want to expand
27112709 // Temporary to deal with the fact that these are structs eventually,
......@@ -2804,8 +2802,8 @@ const NavGen = struct {
28042802
28052803 const buffer_struct_ty_id = self.spv.allocId();
28062804 try self.spv.structType(buffer_struct_ty_id, &.{anyerror_ty_id}, &.{"error_out"});
2807 try self.spv.decorate(buffer_struct_ty_id, .Block);
2808 try self.spv.decorateMember(buffer_struct_ty_id, 0, .{ .Offset = .{ .byte_offset = 0 } });
2805 try self.spv.decorate(buffer_struct_ty_id, .block);
2806 try self.spv.decorateMember(buffer_struct_ty_id, 0, .{ .offset = .{ .byte_offset = 0 } });
28092807
28102808 const ptr_buffer_struct_ty_id = self.spv.allocId();
28112809 try self.spv.sections.types_globals_constants.emit(self.spv.gpa, .OpTypePointer, .{
......@@ -2820,15 +2818,15 @@ const NavGen = struct {
28202818 .id_result = buffer_struct_id,
28212819 .storage_class = self.spvStorageClass(.global),
28222820 });
2823 try self.spv.decorate(buffer_struct_id, .{ .DescriptorSet = .{ .descriptor_set = 0 } });
2824 try self.spv.decorate(buffer_struct_id, .{ .Binding = .{ .binding_point = 0 } });
2821 try self.spv.decorate(buffer_struct_id, .{ .descriptor_set = .{ .descriptor_set = 0 } });
2822 try self.spv.decorate(buffer_struct_id, .{ .binding = .{ .binding_point = 0 } });
28252823
28262824 self.object.error_buffer = spv_err_decl_index;
28272825 }
28282826
28292827 try self.spv.sections.execution_modes.emit(self.spv.gpa, .OpExecutionMode, .{
28302828 .entry_point = kernel_id,
2831 .mode = .{ .LocalSize = .{
2829 .mode = .{ .local_size = .{
28322830 .x_size = 1,
28332831 .y_size = 1,
28342832 .z_size = 1,
......@@ -2873,7 +2871,7 @@ const NavGen = struct {
28732871 .pointer = p_error_id,
28742872 .object = error_id,
28752873 .memory_access = .{
2876 .Aligned = .{ .literal_integer = @intCast(Type.abiAlignment(.anyerror, zcu).toByteUnits().?) },
2874 .aligned = .{ .literal_integer = @intCast(Type.abiAlignment(.anyerror, zcu).toByteUnits().?) },
28772875 },
28782876 });
28792877 try section.emit(self.spv.gpa, .OpReturn, {});
......@@ -2885,8 +2883,8 @@ const NavGen = struct {
28852883 defer self.gpa.free(test_name);
28862884
28872885 const execution_mode: spec.ExecutionModel = switch (target.os.tag) {
2888 .vulkan, .opengl => .GLCompute,
2889 .opencl, .amdhsa => .Kernel,
2886 .vulkan, .opengl => .gl_compute,
2887 .opencl, .amdhsa => .kernel,
28902888 else => unreachable,
28912889 };
28922890
......@@ -2983,7 +2981,7 @@ const NavGen = struct {
29832981 assert(maybe_init_val == null); // TODO
29842982
29852983 const storage_class = self.spvStorageClass(nav.getAddrspace());
2986 assert(storage_class != .Generic); // These should be instance globals
2984 assert(storage_class != .generic); // These should be instance globals
29872985
29882986 const ptr_ty_id = try self.ptrType(ty, storage_class, .indirect);
29892987
......@@ -2993,38 +2991,8 @@ const NavGen = struct {
29932991 .storage_class = storage_class,
29942992 });
29952993
2996 if (nav.fqn.eqlSlice("position", ip)) {
2997 try self.spv.decorate(result_id, .{ .BuiltIn = .{ .built_in = .Position } });
2998 } else if (nav.fqn.eqlSlice("point_size", ip)) {
2999 try self.spv.decorate(result_id, .{ .BuiltIn = .{ .built_in = .PointSize } });
3000 } else if (nav.fqn.eqlSlice("invocation_id", ip)) {
3001 try self.spv.decorate(result_id, .{ .BuiltIn = .{ .built_in = .InvocationId } });
3002 } else if (nav.fqn.eqlSlice("frag_coord", ip)) {
3003 try self.spv.decorate(result_id, .{ .BuiltIn = .{ .built_in = .FragCoord } });
3004 } else if (nav.fqn.eqlSlice("point_coord", ip)) {
3005 try self.spv.decorate(result_id, .{ .BuiltIn = .{ .built_in = .PointCoord } });
3006 } else if (nav.fqn.eqlSlice("front_facing", ip)) {
3007 try self.spv.decorate(result_id, .{ .BuiltIn = .{ .built_in = .FrontFacing } });
3008 } else if (nav.fqn.eqlSlice("sample_mask", ip)) {
3009 try self.spv.decorate(result_id, .{ .BuiltIn = .{ .built_in = .SampleMask } });
3010 } else if (nav.fqn.eqlSlice("frag_depth", ip)) {
3011 try self.spv.decorate(result_id, .{ .BuiltIn = .{ .built_in = .FragDepth } });
3012 } else if (nav.fqn.eqlSlice("num_workgroups", ip)) {
3013 try self.spv.decorate(result_id, .{ .BuiltIn = .{ .built_in = .NumWorkgroups } });
3014 } else if (nav.fqn.eqlSlice("workgroup_size", ip)) {
3015 try self.spv.decorate(result_id, .{ .BuiltIn = .{ .built_in = .WorkgroupSize } });
3016 } else if (nav.fqn.eqlSlice("workgroup_id", ip)) {
3017 try self.spv.decorate(result_id, .{ .BuiltIn = .{ .built_in = .WorkgroupId } });
3018 } else if (nav.fqn.eqlSlice("local_invocation_id", ip)) {
3019 try self.spv.decorate(result_id, .{ .BuiltIn = .{ .built_in = .LocalInvocationId } });
3020 } else if (nav.fqn.eqlSlice("global_invocation_id", ip)) {
3021 try self.spv.decorate(result_id, .{ .BuiltIn = .{ .built_in = .GlobalInvocationId } });
3022 } else if (nav.fqn.eqlSlice("local_invocation_index", ip)) {
3023 try self.spv.decorate(result_id, .{ .BuiltIn = .{ .built_in = .LocalInvocationIndex } });
3024 } else if (nav.fqn.eqlSlice("vertex_index", ip)) {
3025 try self.spv.decorate(result_id, .{ .BuiltIn = .{ .built_in = .VertexIndex } });
3026 } else if (nav.fqn.eqlSlice("instance_index", ip)) {
3027 try self.spv.decorate(result_id, .{ .BuiltIn = .{ .built_in = .InstanceIndex } });
2994 if (std.meta.stringToEnum(spec.BuiltIn, nav.fqn.toSlice(ip))) |builtin| {
2995 try self.spv.decorate(result_id, .{ .built_in = .{ .built_in = builtin } });
30282996 }
30292997
30302998 try self.spv.debugName(result_id, nav.fqn.toSlice(ip));
......@@ -3040,7 +3008,7 @@ const NavGen = struct {
30403008
30413009 try self.spv.declareDeclDeps(spv_decl_index, &.{});
30423010
3043 const ptr_ty_id = try self.ptrType(ty, .Function, .indirect);
3011 const ptr_ty_id = try self.ptrType(ty, .function, .indirect);
30443012
30453013 if (maybe_init_val) |init_val| {
30463014 // TODO: Combine with resolveAnonDecl?
......@@ -3109,7 +3077,7 @@ const NavGen = struct {
31093077
31103078 /// Convert representation from indirect (in memory) to direct (in 'register')
31113079 /// This converts the argument type from resolveType(ty, .indirect) to resolveType(ty, .direct).
3112 fn convertToDirect(self: *NavGen, ty: Type, operand_id: IdRef) !IdRef {
3080 fn convertToDirect(self: *NavGen, ty: Type, operand_id: Id) !Id {
31133081 const pt = self.pt;
31143082 const zcu = pt.zcu;
31153083 switch (ty.scalarType(zcu).zigTypeTag(zcu)) {
......@@ -3136,7 +3104,7 @@ const NavGen = struct {
31363104
31373105 /// Convert representation from direct (in 'register) to direct (in memory)
31383106 /// This converts the argument type from resolveType(ty, .direct) to resolveType(ty, .indirect).
3139 fn convertToIndirect(self: *NavGen, ty: Type, operand_id: IdRef) !IdRef {
3107 fn convertToIndirect(self: *NavGen, ty: Type, operand_id: Id) !Id {
31403108 const zcu = self.pt.zcu;
31413109 switch (ty.scalarType(zcu).zigTypeTag(zcu)) {
31423110 .bool => {
......@@ -3147,7 +3115,7 @@ const NavGen = struct {
31473115 }
31483116 }
31493117
3150 fn extractField(self: *NavGen, result_ty: Type, object: IdRef, field: u32) !IdRef {
3118 fn extractField(self: *NavGen, result_ty: Type, object: Id, field: u32) !Id {
31513119 const result_ty_id = try self.resolveType(result_ty, .indirect);
31523120 const result_id = self.spv.allocId();
31533121 const indexes = [_]u32{field};
......@@ -3161,7 +3129,7 @@ const NavGen = struct {
31613129 return try self.convertToDirect(result_ty, result_id);
31623130 }
31633131
3164 fn extractVectorComponent(self: *NavGen, result_ty: Type, vector_id: IdRef, field: u32) !IdRef {
3132 fn extractVectorComponent(self: *NavGen, result_ty: Type, vector_id: Id, field: u32) !Id {
31653133 const result_ty_id = try self.resolveType(result_ty, .direct);
31663134 const result_id = self.spv.allocId();
31673135 const indexes = [_]u32{field};
......@@ -3179,14 +3147,14 @@ const NavGen = struct {
31793147 is_volatile: bool = false,
31803148 };
31813149
3182 fn load(self: *NavGen, value_ty: Type, ptr_id: IdRef, options: MemoryOptions) !IdRef {
3150 fn load(self: *NavGen, value_ty: Type, ptr_id: Id, options: MemoryOptions) !Id {
31833151 const zcu = self.pt.zcu;
31843152 const alignment: u32 = @intCast(value_ty.abiAlignment(zcu).toByteUnits().?);
31853153 const indirect_value_ty_id = try self.resolveType(value_ty, .indirect);
31863154 const result_id = self.spv.allocId();
3187 const access = spec.MemoryAccess.Extended{
3188 .Volatile = options.is_volatile,
3189 .Aligned = .{ .literal_integer = alignment },
3155 const access: spec.MemoryAccess.Extended = .{
3156 .@"volatile" = options.is_volatile,
3157 .aligned = .{ .literal_integer = alignment },
31903158 };
31913159 try self.func.body.emit(self.spv.gpa, .OpLoad, .{
31923160 .id_result_type = indirect_value_ty_id,
......@@ -3197,11 +3165,9 @@ const NavGen = struct {
31973165 return try self.convertToDirect(value_ty, result_id);
31983166 }
31993167
3200 fn store(self: *NavGen, value_ty: Type, ptr_id: IdRef, value_id: IdRef, options: MemoryOptions) !void {
3168 fn store(self: *NavGen, value_ty: Type, ptr_id: Id, value_id: Id, options: MemoryOptions) !void {
32013169 const indirect_value_id = try self.convertToIndirect(value_ty, value_id);
3202 const access = spec.MemoryAccess.Extended{
3203 .Volatile = options.is_volatile,
3204 };
3170 const access: spec.MemoryAccess.Extended = .{ .@"volatile" = options.is_volatile };
32053171 try self.func.body.emit(self.spv.gpa, .OpStore, .{
32063172 .pointer = ptr_id,
32073173 .object = indirect_value_id,
......@@ -3222,7 +3188,7 @@ const NavGen = struct {
32223188 return;
32233189
32243190 const air_tags = self.air.instructions.items(.tag);
3225 const maybe_result_id: ?IdRef = switch (air_tags[@intFromEnum(inst)]) {
3191 const maybe_result_id: ?Id = switch (air_tags[@intFromEnum(inst)]) {
32263192 // zig fmt: off
32273193 .add, .add_wrap, .add_optimized => try self.airArithOp(inst, .f_add, .i_add, .i_add),
32283194 .sub, .sub_wrap, .sub_optimized => try self.airArithOp(inst, .f_sub, .i_sub, .i_sub),
......@@ -3390,7 +3356,7 @@ const NavGen = struct {
33903356 try self.inst_results.putNoClobber(self.gpa, inst, result_id);
33913357 }
33923358
3393 fn airBinOpSimple(self: *NavGen, inst: Air.Inst.Index, op: BinaryOp) !?IdRef {
3359 fn airBinOpSimple(self: *NavGen, inst: Air.Inst.Index, op: BinaryOp) !?Id {
33943360 const bin_op = self.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;
33953361 const lhs = try self.temporary(bin_op.lhs);
33963362 const rhs = try self.temporary(bin_op.rhs);
......@@ -3399,7 +3365,7 @@ const NavGen = struct {
33993365 return try result.materialize(self);
34003366 }
34013367
3402 fn airShift(self: *NavGen, inst: Air.Inst.Index, unsigned: BinaryOp, signed: BinaryOp) !?IdRef {
3368 fn airShift(self: *NavGen, inst: Air.Inst.Index, unsigned: BinaryOp, signed: BinaryOp) !?Id {
34033369 const zcu = self.pt.zcu;
34043370 const bin_op = self.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;
34053371
......@@ -3438,7 +3404,7 @@ const NavGen = struct {
34383404
34393405 const MinMax = enum { min, max };
34403406
3441 fn airMinMax(self: *NavGen, inst: Air.Inst.Index, op: MinMax) !?IdRef {
3407 fn airMinMax(self: *NavGen, inst: Air.Inst.Index, op: MinMax) !?Id {
34423408 const bin_op = self.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;
34433409
34443410 const lhs = try self.temporary(bin_op.lhs);
......@@ -3503,7 +3469,7 @@ const NavGen = struct {
35033469 }
35043470 }
35053471
3506 fn airDivFloor(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
3472 fn airDivFloor(self: *NavGen, inst: Air.Inst.Index) !?Id {
35073473 const bin_op = self.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;
35083474
35093475 const lhs = try self.temporary(bin_op.lhs);
......@@ -3560,7 +3526,7 @@ const NavGen = struct {
35603526 }
35613527 }
35623528
3563 fn airDivTrunc(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
3529 fn airDivTrunc(self: *NavGen, inst: Air.Inst.Index) !?Id {
35643530 const bin_op = self.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;
35653531
35663532 const lhs = try self.temporary(bin_op.lhs);
......@@ -3588,7 +3554,7 @@ const NavGen = struct {
35883554 }
35893555 }
35903556
3591 fn airUnOpSimple(self: *NavGen, inst: Air.Inst.Index, op: UnaryOp) !?IdRef {
3557 fn airUnOpSimple(self: *NavGen, inst: Air.Inst.Index, op: UnaryOp) !?Id {
35923558 const un_op = self.air.instructions.items(.data)[@intFromEnum(inst)].un_op;
35933559 const operand = try self.temporary(un_op);
35943560 const result = try self.buildUnary(op, operand);
......@@ -3601,7 +3567,7 @@ const NavGen = struct {
36013567 comptime fop: BinaryOp,
36023568 comptime sop: BinaryOp,
36033569 comptime uop: BinaryOp,
3604 ) !?IdRef {
3570 ) !?Id {
36053571 const bin_op = self.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;
36063572
36073573 const lhs = try self.temporary(bin_op.lhs);
......@@ -3622,7 +3588,7 @@ const NavGen = struct {
36223588 return try result.materialize(self);
36233589 }
36243590
3625 fn airAbs(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
3591 fn airAbs(self: *NavGen, inst: Air.Inst.Index) !?Id {
36263592 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
36273593 const operand = try self.temporary(ty_op.operand);
36283594 // Note: operand_ty may be signed, while ty is always unsigned!
......@@ -3662,7 +3628,7 @@ const NavGen = struct {
36623628 comptime add: BinaryOp,
36633629 comptime ucmp: CmpPredicate,
36643630 comptime scmp: CmpPredicate,
3665 ) !?IdRef {
3631 ) !?Id {
36663632 _ = scmp;
36673633 // Note: OpIAddCarry and OpISubBorrow are not really useful here: For unsigned numbers,
36683634 // there is in both cases only one extra operation required. For signed operations,
......@@ -3725,7 +3691,7 @@ const NavGen = struct {
37253691 return try self.constructComposite(result_ty_id, &.{ try result.materialize(self), try ov.materialize(self) });
37263692 }
37273693
3728 fn airMulOverflow(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
3694 fn airMulOverflow(self: *NavGen, inst: Air.Inst.Index) !?Id {
37293695 const pt = self.pt;
37303696
37313697 const ty_pl = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_pl;
......@@ -3897,7 +3863,7 @@ const NavGen = struct {
38973863 return try self.constructComposite(result_ty_id, &.{ try result.materialize(self), try ov.materialize(self) });
38983864 }
38993865
3900 fn airShlOverflow(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
3866 fn airShlOverflow(self: *NavGen, inst: Air.Inst.Index) !?Id {
39013867 const zcu = self.pt.zcu;
39023868
39033869 const ty_pl = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_pl;
......@@ -3938,7 +3904,7 @@ const NavGen = struct {
39383904 return try self.constructComposite(result_ty_id, &.{ try result.materialize(self), try ov.materialize(self) });
39393905 }
39403906
3941 fn airMulAdd(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
3907 fn airMulAdd(self: *NavGen, inst: Air.Inst.Index) !?Id {
39423908 const pl_op = self.air.instructions.items(.data)[@intFromEnum(inst)].pl_op;
39433909 const extra = self.air.extraData(Air.Bin, pl_op.payload).data;
39443910
......@@ -3954,7 +3920,7 @@ const NavGen = struct {
39543920 return try result.materialize(self);
39553921 }
39563922
3957 fn airClzCtz(self: *NavGen, inst: Air.Inst.Index, op: UnaryOp) !?IdRef {
3923 fn airClzCtz(self: *NavGen, inst: Air.Inst.Index, op: UnaryOp) !?Id {
39583924 if (self.liveness.isUnused(inst)) return null;
39593925
39603926 const zcu = self.pt.zcu;
......@@ -3979,7 +3945,7 @@ const NavGen = struct {
39793945 return try result.materialize(self);
39803946 }
39813947
3982 fn airSelect(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
3948 fn airSelect(self: *NavGen, inst: Air.Inst.Index) !?Id {
39833949 const pl_op = self.air.instructions.items(.data)[@intFromEnum(inst)].pl_op;
39843950 const extra = self.air.extraData(Air.Bin, pl_op.payload).data;
39853951 const pred = try self.temporary(pl_op.operand);
......@@ -3990,7 +3956,7 @@ const NavGen = struct {
39903956 return try result.materialize(self);
39913957 }
39923958
3993 fn airSplat(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
3959 fn airSplat(self: *NavGen, inst: Air.Inst.Index) !?Id {
39943960 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
39953961
39963962 const operand_id = try self.resolve(ty_op.operand);
......@@ -3999,7 +3965,7 @@ const NavGen = struct {
39993965 return try self.constructCompositeSplat(result_ty, operand_id);
40003966 }
40013967
4002 fn airReduce(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
3968 fn airReduce(self: *NavGen, inst: Air.Inst.Index) !?Id {
40033969 const zcu = self.pt.zcu;
40043970 const reduce = self.air.instructions.items(.data)[@intFromEnum(inst)].reduce;
40053971 const operand = try self.resolve(reduce.operand);
......@@ -4062,16 +4028,16 @@ const NavGen = struct {
40624028 result_id = self.spv.allocId();
40634029
40644030 try self.func.body.emitRaw(self.spv.gpa, opcode, 4);
4065 self.func.body.writeOperand(spec.IdResultType, scalar_ty_id);
4066 self.func.body.writeOperand(spec.IdResult, result_id);
4067 self.func.body.writeOperand(spec.IdResultType, lhs);
4068 self.func.body.writeOperand(spec.IdResultType, rhs);
4031 self.func.body.writeOperand(spec.Id, scalar_ty_id);
4032 self.func.body.writeOperand(spec.Id, result_id);
4033 self.func.body.writeOperand(spec.Id, lhs);
4034 self.func.body.writeOperand(spec.Id, rhs);
40694035 }
40704036
40714037 return result_id;
40724038 }
40734039
4074 fn airShuffleOne(ng: *NavGen, inst: Air.Inst.Index) !?IdRef {
4040 fn airShuffleOne(ng: *NavGen, inst: Air.Inst.Index) !?Id {
40754041 const pt = ng.pt;
40764042 const zcu = pt.zcu;
40774043 const gpa = zcu.gpa;
......@@ -4082,7 +4048,7 @@ const NavGen = struct {
40824048 const elem_ty = result_ty.childType(zcu);
40834049 const operand = try ng.resolve(unwrapped.operand);
40844050
4085 const constituents = try gpa.alloc(IdRef, mask.len);
4051 const constituents = try gpa.alloc(Id, mask.len);
40864052 defer gpa.free(constituents);
40874053
40884054 for (constituents, mask) |*id, mask_elem| {
......@@ -4096,7 +4062,7 @@ const NavGen = struct {
40964062 return try ng.constructComposite(result_ty_id, constituents);
40974063 }
40984064
4099 fn airShuffleTwo(ng: *NavGen, inst: Air.Inst.Index) !?IdRef {
4065 fn airShuffleTwo(ng: *NavGen, inst: Air.Inst.Index) !?Id {
41004066 const pt = ng.pt;
41014067 const zcu = pt.zcu;
41024068 const gpa = zcu.gpa;
......@@ -4109,7 +4075,7 @@ const NavGen = struct {
41094075 const operand_a = try ng.resolve(unwrapped.operand_a);
41104076 const operand_b = try ng.resolve(unwrapped.operand_b);
41114077
4112 const constituents = try gpa.alloc(IdRef, mask.len);
4078 const constituents = try gpa.alloc(Id, mask.len);
41134079 defer gpa.free(constituents);
41144080
41154081 for (constituents, mask) |*id, mask_elem| {
......@@ -4124,8 +4090,8 @@ const NavGen = struct {
41244090 return try ng.constructComposite(result_ty_id, constituents);
41254091 }
41264092
4127 fn indicesToIds(self: *NavGen, indices: []const u32) ![]IdRef {
4128 const ids = try self.gpa.alloc(IdRef, indices.len);
4093 fn indicesToIds(self: *NavGen, indices: []const u32) ![]Id {
4094 const ids = try self.gpa.alloc(Id, indices.len);
41294095 errdefer self.gpa.free(ids);
41304096 for (indices, ids) |index, *id| {
41314097 id.* = try self.constInt(Type.u32, index);
......@@ -4136,10 +4102,10 @@ const NavGen = struct {
41364102
41374103 fn accessChainId(
41384104 self: *NavGen,
4139 result_ty_id: IdRef,
4140 base: IdRef,
4141 indices: []const IdRef,
4142 ) !IdRef {
4105 result_ty_id: Id,
4106 base: Id,
4107 indices: []const Id,
4108 ) !Id {
41434109 const result_id = self.spv.allocId();
41444110 try self.func.body.emit(self.spv.gpa, .OpInBoundsAccessChain, .{
41454111 .id_result_type = result_ty_id,
......@@ -4156,10 +4122,10 @@ const NavGen = struct {
41564122 /// is the latter and PtrAccessChain is the former.
41574123 fn accessChain(
41584124 self: *NavGen,
4159 result_ty_id: IdRef,
4160 base: IdRef,
4125 result_ty_id: Id,
4126 base: Id,
41614127 indices: []const u32,
4162 ) !IdRef {
4128 ) !Id {
41634129 const ids = try self.indicesToIds(indices);
41644130 defer self.gpa.free(ids);
41654131 return try self.accessChainId(result_ty_id, base, ids);
......@@ -4167,11 +4133,11 @@ const NavGen = struct {
41674133
41684134 fn ptrAccessChain(
41694135 self: *NavGen,
4170 result_ty_id: IdRef,
4171 base: IdRef,
4172 element: IdRef,
4136 result_ty_id: Id,
4137 base: Id,
4138 element: Id,
41734139 indices: []const u32,
4174 ) !IdRef {
4140 ) !Id {
41754141 const ids = try self.indicesToIds(indices);
41764142 defer self.gpa.free(ids);
41774143
......@@ -4199,7 +4165,7 @@ const NavGen = struct {
41994165 return result_id;
42004166 }
42014167
4202 fn ptrAdd(self: *NavGen, result_ty: Type, ptr_ty: Type, ptr_id: IdRef, offset_id: IdRef) !IdRef {
4168 fn ptrAdd(self: *NavGen, result_ty: Type, ptr_ty: Type, ptr_id: Id, offset_id: Id) !Id {
42034169 const zcu = self.pt.zcu;
42044170 const result_ty_id = try self.resolveType(result_ty, .direct);
42054171
......@@ -4220,7 +4186,7 @@ const NavGen = struct {
42204186 }
42214187 }
42224188
4223 fn airPtrAdd(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
4189 fn airPtrAdd(self: *NavGen, inst: Air.Inst.Index) !?Id {
42244190 const ty_pl = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_pl;
42254191 const bin_op = self.air.extraData(Air.Bin, ty_pl.payload).data;
42264192 const ptr_id = try self.resolve(bin_op.lhs);
......@@ -4231,7 +4197,7 @@ const NavGen = struct {
42314197 return try self.ptrAdd(result_ty, ptr_ty, ptr_id, offset_id);
42324198 }
42334199
4234 fn airPtrSub(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
4200 fn airPtrSub(self: *NavGen, inst: Air.Inst.Index) !?Id {
42354201 const ty_pl = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_pl;
42364202 const bin_op = self.air.extraData(Air.Bin, ty_pl.payload).data;
42374203 const ptr_id = try self.resolve(bin_op.lhs);
......@@ -4427,7 +4393,7 @@ const NavGen = struct {
44274393 self: *NavGen,
44284394 inst: Air.Inst.Index,
44294395 comptime op: std.math.CompareOperator,
4430 ) !?IdRef {
4396 ) !?Id {
44314397 const bin_op = self.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;
44324398 const lhs = try self.temporary(bin_op.lhs);
44334399 const rhs = try self.temporary(bin_op.rhs);
......@@ -4436,7 +4402,7 @@ const NavGen = struct {
44364402 return try result.materialize(self);
44374403 }
44384404
4439 fn airVectorCmp(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
4405 fn airVectorCmp(self: *NavGen, inst: Air.Inst.Index) !?Id {
44404406 const ty_pl = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_pl;
44414407 const vec_cmp = self.air.extraData(Air.VectorCmp, ty_pl.payload).data;
44424408 const lhs = try self.temporary(vec_cmp.lhs);
......@@ -4452,8 +4418,8 @@ const NavGen = struct {
44524418 self: *NavGen,
44534419 dst_ty: Type,
44544420 src_ty: Type,
4455 src_id: IdRef,
4456 ) !IdRef {
4421 src_id: Id,
4422 ) !Id {
44574423 const zcu = self.pt.zcu;
44584424 const src_ty_id = try self.resolveType(src_ty, .direct);
44594425 const dst_ty_id = try self.resolveType(dst_ty, .direct);
......@@ -4489,9 +4455,9 @@ const NavGen = struct {
44894455 break :blk result_id;
44904456 }
44914457
4492 const dst_ptr_ty_id = try self.ptrType(dst_ty, .Function, .indirect);
4458 const dst_ptr_ty_id = try self.ptrType(dst_ty, .function, .indirect);
44934459
4494 const tmp_id = try self.alloc(src_ty, .{ .storage_class = .Function });
4460 const tmp_id = try self.alloc(src_ty, .{ .storage_class = .function });
44954461 try self.store(src_ty, tmp_id, src_id, .{});
44964462 const casted_ptr_id = self.spv.allocId();
44974463 try self.func.body.emit(self.spv.gpa, .OpBitcast, .{
......@@ -4515,7 +4481,7 @@ const NavGen = struct {
45154481 return result_id;
45164482 }
45174483
4518 fn airBitCast(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
4484 fn airBitCast(self: *NavGen, inst: Air.Inst.Index) !?Id {
45194485 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
45204486 const operand_ty = self.typeOf(ty_op.operand);
45214487 const result_ty = self.typeOfIndex(inst);
......@@ -4528,7 +4494,7 @@ const NavGen = struct {
45284494 return try self.bitCast(result_ty, operand_ty, operand_id);
45294495 }
45304496
4531 fn airIntCast(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
4497 fn airIntCast(self: *NavGen, inst: Air.Inst.Index) !?Id {
45324498 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
45334499 const src = try self.temporary(ty_op.operand);
45344500 const dst_ty = self.typeOfIndex(inst);
......@@ -4554,7 +4520,7 @@ const NavGen = struct {
45544520 return try result.materialize(self);
45554521 }
45564522
4557 fn intFromPtr(self: *NavGen, operand_id: IdRef) !IdRef {
4523 fn intFromPtr(self: *NavGen, operand_id: Id) !Id {
45584524 const result_type_id = try self.resolveType(Type.usize, .direct);
45594525 const result_id = self.spv.allocId();
45604526 try self.func.body.emit(self.spv.gpa, .OpConvertPtrToU, .{
......@@ -4565,7 +4531,7 @@ const NavGen = struct {
45654531 return result_id;
45664532 }
45674533
4568 fn airFloatFromInt(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
4534 fn airFloatFromInt(self: *NavGen, inst: Air.Inst.Index) !?Id {
45694535 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
45704536 const operand_ty = self.typeOf(ty_op.operand);
45714537 const operand_id = try self.resolve(ty_op.operand);
......@@ -4573,7 +4539,7 @@ const NavGen = struct {
45734539 return try self.floatFromInt(result_ty, operand_ty, operand_id);
45744540 }
45754541
4576 fn floatFromInt(self: *NavGen, result_ty: Type, operand_ty: Type, operand_id: IdRef) !IdRef {
4542 fn floatFromInt(self: *NavGen, result_ty: Type, operand_ty: Type, operand_id: Id) !Id {
45774543 const operand_info = self.arithmeticTypeInfo(operand_ty);
45784544 const result_id = self.spv.allocId();
45794545 const result_ty_id = try self.resolveType(result_ty, .direct);
......@@ -4592,14 +4558,14 @@ const NavGen = struct {
45924558 return result_id;
45934559 }
45944560
4595 fn airIntFromFloat(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
4561 fn airIntFromFloat(self: *NavGen, inst: Air.Inst.Index) !?Id {
45964562 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
45974563 const operand_id = try self.resolve(ty_op.operand);
45984564 const result_ty = self.typeOfIndex(inst);
45994565 return try self.intFromFloat(result_ty, operand_id);
46004566 }
46014567
4602 fn intFromFloat(self: *NavGen, result_ty: Type, operand_id: IdRef) !IdRef {
4568 fn intFromFloat(self: *NavGen, result_ty: Type, operand_id: Id) !Id {
46034569 const result_info = self.arithmeticTypeInfo(result_ty);
46044570 const result_ty_id = try self.resolveType(result_ty, .direct);
46054571 const result_id = self.spv.allocId();
......@@ -4618,7 +4584,7 @@ const NavGen = struct {
46184584 return result_id;
46194585 }
46204586
4621 fn airFloatCast(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
4587 fn airFloatCast(self: *NavGen, inst: Air.Inst.Index) !?Id {
46224588 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
46234589 const operand = try self.temporary(ty_op.operand);
46244590 const dest_ty = self.typeOfIndex(inst);
......@@ -4626,7 +4592,7 @@ const NavGen = struct {
46264592 return try result.materialize(self);
46274593 }
46284594
4629 fn airNot(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
4595 fn airNot(self: *NavGen, inst: Air.Inst.Index) !?Id {
46304596 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
46314597 const operand = try self.temporary(ty_op.operand);
46324598 const result_ty = self.typeOfIndex(inst);
......@@ -4645,7 +4611,7 @@ const NavGen = struct {
46454611 return try result.materialize(self);
46464612 }
46474613
4648 fn airArrayToSlice(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
4614 fn airArrayToSlice(self: *NavGen, inst: Air.Inst.Index) !?Id {
46494615 const pt = self.pt;
46504616 const zcu = pt.zcu;
46514617 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
......@@ -4670,7 +4636,7 @@ const NavGen = struct {
46704636 return try self.constructComposite(slice_ty_id, &.{ elem_ptr_id, len_id });
46714637 }
46724638
4673 fn airSlice(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
4639 fn airSlice(self: *NavGen, inst: Air.Inst.Index) !?Id {
46744640 const ty_pl = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_pl;
46754641 const bin_op = self.air.extraData(Air.Bin, ty_pl.payload).data;
46764642 const ptr_id = try self.resolve(bin_op.lhs);
......@@ -4680,7 +4646,7 @@ const NavGen = struct {
46804646 return try self.constructComposite(slice_ty_id, &.{ ptr_id, len_id });
46814647 }
46824648
4683 fn airAggregateInit(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
4649 fn airAggregateInit(self: *NavGen, inst: Air.Inst.Index) !?Id {
46844650 const pt = self.pt;
46854651 const zcu = pt.zcu;
46864652 const ip = &zcu.intern_pool;
......@@ -4732,7 +4698,7 @@ const NavGen = struct {
47324698
47334699 const types = try self.gpa.alloc(Type, elements.len);
47344700 defer self.gpa.free(types);
4735 const constituents = try self.gpa.alloc(IdRef, elements.len);
4701 const constituents = try self.gpa.alloc(Id, elements.len);
47364702 defer self.gpa.free(constituents);
47374703 var index: usize = 0;
47384704
......@@ -4771,7 +4737,7 @@ const NavGen = struct {
47714737 },
47724738 .vector => {
47734739 const n_elems = result_ty.vectorLen(zcu);
4774 const elem_ids = try self.gpa.alloc(IdRef, n_elems);
4740 const elem_ids = try self.gpa.alloc(Id, n_elems);
47754741 defer self.gpa.free(elem_ids);
47764742
47774743 for (elements, 0..) |element, i| {
......@@ -4784,7 +4750,7 @@ const NavGen = struct {
47844750 .array => {
47854751 const array_info = result_ty.arrayInfo(zcu);
47864752 const n_elems: usize = @intCast(result_ty.arrayLenIncludingSentinel(zcu));
4787 const elem_ids = try self.gpa.alloc(IdRef, n_elems);
4753 const elem_ids = try self.gpa.alloc(Id, n_elems);
47884754 defer self.gpa.free(elem_ids);
47894755
47904756 for (elements, 0..) |element, i| {
......@@ -4803,7 +4769,7 @@ const NavGen = struct {
48034769 }
48044770 }
48054771
4806 fn sliceOrArrayLen(self: *NavGen, operand_id: IdRef, ty: Type) !IdRef {
4772 fn sliceOrArrayLen(self: *NavGen, operand_id: Id, ty: Type) !Id {
48074773 const pt = self.pt;
48084774 const zcu = pt.zcu;
48094775 switch (ty.ptrSize(zcu)) {
......@@ -4819,7 +4785,7 @@ const NavGen = struct {
48194785 }
48204786 }
48214787
4822 fn sliceOrArrayPtr(self: *NavGen, operand_id: IdRef, ty: Type) !IdRef {
4788 fn sliceOrArrayPtr(self: *NavGen, operand_id: Id, ty: Type) !Id {
48234789 const zcu = self.pt.zcu;
48244790 if (ty.isSlice(zcu)) {
48254791 const ptr_ty = ty.slicePtrFieldType(zcu);
......@@ -4849,14 +4815,14 @@ const NavGen = struct {
48494815 return self.fail("TODO implement airMemcpy for spirv", .{});
48504816 }
48514817
4852 fn airSliceField(self: *NavGen, inst: Air.Inst.Index, field: u32) !?IdRef {
4818 fn airSliceField(self: *NavGen, inst: Air.Inst.Index, field: u32) !?Id {
48534819 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
48544820 const field_ty = self.typeOfIndex(inst);
48554821 const operand_id = try self.resolve(ty_op.operand);
48564822 return try self.extractField(field_ty, operand_id, field);
48574823 }
48584824
4859 fn airSliceElemPtr(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
4825 fn airSliceElemPtr(self: *NavGen, inst: Air.Inst.Index) !?Id {
48604826 const zcu = self.pt.zcu;
48614827 const ty_pl = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_pl;
48624828 const bin_op = self.air.extraData(Air.Bin, ty_pl.payload).data;
......@@ -4873,7 +4839,7 @@ const NavGen = struct {
48734839 return try self.ptrAccessChain(ptr_ty_id, slice_ptr, index_id, &.{});
48744840 }
48754841
4876 fn airSliceElemVal(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
4842 fn airSliceElemVal(self: *NavGen, inst: Air.Inst.Index) !?Id {
48774843 const zcu = self.pt.zcu;
48784844 const bin_op = self.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;
48794845 const slice_ty = self.typeOf(bin_op.lhs);
......@@ -4890,7 +4856,7 @@ const NavGen = struct {
48904856 return try self.load(slice_ty.childType(zcu), elem_ptr, .{ .is_volatile = slice_ty.isVolatilePtr(zcu) });
48914857 }
48924858
4893 fn ptrElemPtr(self: *NavGen, ptr_ty: Type, ptr_id: IdRef, index_id: IdRef) !IdRef {
4859 fn ptrElemPtr(self: *NavGen, ptr_ty: Type, ptr_id: Id, index_id: Id) !Id {
48944860 const zcu = self.pt.zcu;
48954861 // Construct new pointer type for the resulting pointer
48964862 const elem_ty = ptr_ty.elemType2(zcu); // use elemType() so that we get T for *[N]T.
......@@ -4905,7 +4871,7 @@ const NavGen = struct {
49054871 }
49064872 }
49074873
4908 fn airPtrElemPtr(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
4874 fn airPtrElemPtr(self: *NavGen, inst: Air.Inst.Index) !?Id {
49094875 const pt = self.pt;
49104876 const zcu = pt.zcu;
49114877 const ty_pl = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_pl;
......@@ -4923,7 +4889,7 @@ const NavGen = struct {
49234889 return try self.ptrElemPtr(src_ptr_ty, ptr_id, index_id);
49244890 }
49254891
4926 fn airArrayElemVal(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
4892 fn airArrayElemVal(self: *NavGen, inst: Air.Inst.Index) !?Id {
49274893 const zcu = self.pt.zcu;
49284894 const bin_op = self.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;
49294895 const array_ty = self.typeOf(bin_op.lhs);
......@@ -4938,14 +4904,14 @@ const NavGen = struct {
49384904 const is_vector = array_ty.isVector(zcu);
49394905
49404906 const elem_repr: Repr = if (is_vector) .direct else .indirect;
4941 const ptr_array_ty_id = try self.ptrType(array_ty, .Function, .direct);
4942 const ptr_elem_ty_id = try self.ptrType(elem_ty, .Function, elem_repr);
4907 const ptr_array_ty_id = try self.ptrType(array_ty, .function, .direct);
4908 const ptr_elem_ty_id = try self.ptrType(elem_ty, .function, elem_repr);
49434909
49444910 const tmp_id = self.spv.allocId();
49454911 try self.func.prologue.emit(self.spv.gpa, .OpVariable, .{
49464912 .id_result_type = ptr_array_ty_id,
49474913 .id_result = tmp_id,
4948 .storage_class = .Function,
4914 .storage_class = .function,
49494915 });
49504916
49514917 try self.func.body.emit(self.spv.gpa, .OpStore, .{
......@@ -4973,7 +4939,7 @@ const NavGen = struct {
49734939 return try self.convertToDirect(elem_ty, result_id);
49744940 }
49754941
4976 fn airPtrElemVal(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
4942 fn airPtrElemVal(self: *NavGen, inst: Air.Inst.Index) !?Id {
49774943 const zcu = self.pt.zcu;
49784944 const bin_op = self.air.instructions.items(.data)[@intFromEnum(inst)].bin_op;
49794945 const ptr_ty = self.typeOf(bin_op.lhs);
......@@ -5029,7 +4995,7 @@ const NavGen = struct {
50294995 }
50304996 }
50314997
5032 fn airGetUnionTag(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
4998 fn airGetUnionTag(self: *NavGen, inst: Air.Inst.Index) !?Id {
50334999 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
50345000 const un_ty = self.typeOf(ty_op.operand);
50355001
......@@ -5048,8 +5014,8 @@ const NavGen = struct {
50485014 self: *NavGen,
50495015 ty: Type,
50505016 active_field: u32,
5051 payload: ?IdRef,
5052 ) !IdRef {
5017 payload: ?Id,
5018 ) !Id {
50535019 // To initialize a union, generate a temporary variable with the
50545020 // union type, then get the field pointer and pointer-cast it to the
50555021 // right type to store it. Finally load the entire union.
......@@ -5100,20 +5066,20 @@ const NavGen = struct {
51005066 return try self.constInt(tag_ty, tag_int);
51015067 }
51025068
5103 const tmp_id = try self.alloc(ty, .{ .storage_class = .Function });
5069 const tmp_id = try self.alloc(ty, .{ .storage_class = .function });
51045070
51055071 if (layout.tag_size != 0) {
5106 const tag_ptr_ty_id = try self.ptrType(tag_ty, .Function, .indirect);
5072 const tag_ptr_ty_id = try self.ptrType(tag_ty, .function, .indirect);
51075073 const ptr_id = try self.accessChain(tag_ptr_ty_id, tmp_id, &.{@as(u32, @intCast(layout.tag_index))});
51085074 const tag_id = try self.constInt(tag_ty, tag_int);
51095075 try self.store(tag_ty, ptr_id, tag_id, .{});
51105076 }
51115077
51125078 if (payload_ty.hasRuntimeBitsIgnoreComptime(zcu)) {
5113 const pl_ptr_ty_id = try self.ptrType(layout.payload_ty, .Function, .indirect);
5079 const pl_ptr_ty_id = try self.ptrType(layout.payload_ty, .function, .indirect);
51145080 const pl_ptr_id = try self.accessChain(pl_ptr_ty_id, tmp_id, &.{layout.payload_index});
51155081 const active_pl_ptr_id = if (!layout.payload_ty.eql(payload_ty, zcu)) blk: {
5116 const active_pl_ptr_ty_id = try self.ptrType(payload_ty, .Function, .indirect);
5082 const active_pl_ptr_ty_id = try self.ptrType(payload_ty, .function, .indirect);
51175083 const active_pl_ptr_id = self.spv.allocId();
51185084 try self.func.body.emit(self.spv.gpa, .OpBitcast, .{
51195085 .id_result_type = active_pl_ptr_ty_id,
......@@ -5134,7 +5100,7 @@ const NavGen = struct {
51345100 return try self.load(ty, tmp_id, .{});
51355101 }
51365102
5137 fn airUnionInit(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
5103 fn airUnionInit(self: *NavGen, inst: Air.Inst.Index) !?Id {
51385104 const pt = self.pt;
51395105 const zcu = pt.zcu;
51405106 const ip = &zcu.intern_pool;
......@@ -5151,7 +5117,7 @@ const NavGen = struct {
51515117 return try self.unionInit(ty, extra.field_index, payload);
51525118 }
51535119
5154 fn airStructFieldVal(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
5120 fn airStructFieldVal(self: *NavGen, inst: Air.Inst.Index) !?Id {
51555121 const pt = self.pt;
51565122 const zcu = pt.zcu;
51575123 const ty_pl = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_pl;
......@@ -5216,13 +5182,13 @@ const NavGen = struct {
52165182 const layout = self.unionLayout(object_ty);
52175183 assert(layout.has_payload);
52185184
5219 const tmp_id = try self.alloc(object_ty, .{ .storage_class = .Function });
5185 const tmp_id = try self.alloc(object_ty, .{ .storage_class = .function });
52205186 try self.store(object_ty, tmp_id, object_id, .{});
52215187
5222 const pl_ptr_ty_id = try self.ptrType(layout.payload_ty, .Function, .indirect);
5188 const pl_ptr_ty_id = try self.ptrType(layout.payload_ty, .function, .indirect);
52235189 const pl_ptr_id = try self.accessChain(pl_ptr_ty_id, tmp_id, &.{layout.payload_index});
52245190
5225 const active_pl_ptr_ty_id = try self.ptrType(field_ty, .Function, .indirect);
5191 const active_pl_ptr_ty_id = try self.ptrType(field_ty, .function, .indirect);
52265192 const active_pl_ptr_id = self.spv.allocId();
52275193 try self.func.body.emit(self.spv.gpa, .OpBitcast, .{
52285194 .id_result_type = active_pl_ptr_ty_id,
......@@ -5236,7 +5202,7 @@ const NavGen = struct {
52365202 }
52375203 }
52385204
5239 fn airFieldParentPtr(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
5205 fn airFieldParentPtr(self: *NavGen, inst: Air.Inst.Index) !?Id {
52405206 const pt = self.pt;
52415207 const zcu = pt.zcu;
52425208 const ty_pl = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_pl;
......@@ -5273,9 +5239,9 @@ const NavGen = struct {
52735239 self: *NavGen,
52745240 result_ptr_ty: Type,
52755241 object_ptr_ty: Type,
5276 object_ptr: IdRef,
5242 object_ptr: Id,
52775243 field_index: u32,
5278 ) !IdRef {
5244 ) !Id {
52795245 const result_ty_id = try self.resolveType(result_ptr_ty, .direct);
52805246
52815247 const zcu = self.pt.zcu;
......@@ -5318,7 +5284,7 @@ const NavGen = struct {
53185284 }
53195285 }
53205286
5321 fn airStructFieldPtrIndex(self: *NavGen, inst: Air.Inst.Index, field_index: u32) !?IdRef {
5287 fn airStructFieldPtrIndex(self: *NavGen, inst: Air.Inst.Index, field_index: u32) !?Id {
53225288 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
53235289 const struct_ptr = try self.resolve(ty_op.operand);
53245290 const struct_ptr_ty = self.typeOf(ty_op.operand);
......@@ -5327,7 +5293,7 @@ const NavGen = struct {
53275293 }
53285294
53295295 const AllocOptions = struct {
5330 initializer: ?IdRef = null,
5296 initializer: ?Id = null,
53315297 /// The final storage class of the pointer. This may be either `.Generic` or `.Function`.
53325298 /// In either case, the local is allocated in the `.Function` storage class, and optionally
53335299 /// cast back to `.Generic`.
......@@ -5342,8 +5308,8 @@ const NavGen = struct {
53425308 self: *NavGen,
53435309 ty: Type,
53445310 options: AllocOptions,
5345 ) !IdRef {
5346 const ptr_fn_ty_id = try self.ptrType(ty, .Function, .indirect);
5311 ) !Id {
5312 const ptr_fn_ty_id = try self.ptrType(ty, .function, .indirect);
53475313
53485314 // SPIR-V requires that OpVariable declarations for locals go into the first block, so we are just going to
53495315 // directly generate them into func.prologue instead of the body.
......@@ -5351,7 +5317,7 @@ const NavGen = struct {
53515317 try self.func.prologue.emit(self.spv.gpa, .OpVariable, .{
53525318 .id_result_type = ptr_fn_ty_id,
53535319 .id_result = var_id,
5354 .storage_class = .Function,
5320 .storage_class = .function,
53555321 .initializer = options.initializer,
53565322 });
53575323
......@@ -5361,17 +5327,17 @@ const NavGen = struct {
53615327 }
53625328
53635329 switch (options.storage_class) {
5364 .Generic => {
5365 const ptr_gn_ty_id = try self.ptrType(ty, .Generic, .indirect);
5330 .generic => {
5331 const ptr_gn_ty_id = try self.ptrType(ty, .generic, .indirect);
53665332 // Convert to a generic pointer
53675333 return self.castToGeneric(ptr_gn_ty_id, var_id);
53685334 },
5369 .Function => return var_id,
5335 .function => return var_id,
53705336 else => unreachable,
53715337 }
53725338 }
53735339
5374 fn airAlloc(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
5340 fn airAlloc(self: *NavGen, inst: Air.Inst.Index) !?Id {
53755341 const zcu = self.pt.zcu;
53765342 const ptr_ty = self.typeOfIndex(inst);
53775343 const child_ty = ptr_ty.childType(zcu);
......@@ -5380,7 +5346,7 @@ const NavGen = struct {
53805346 });
53815347 }
53825348
5383 fn airArg(self: *NavGen) IdRef {
5349 fn airArg(self: *NavGen) Id {
53845350 defer self.next_arg_index += 1;
53855351 return self.args.items[self.next_arg_index];
53865352 }
......@@ -5389,14 +5355,14 @@ const NavGen = struct {
53895355 /// block to jump to. This function emits instructions, so it should be emitted
53905356 /// inside the merge block of the block.
53915357 /// This function should only be called with structured control flow generation.
5392 fn structuredNextBlock(self: *NavGen, incoming: []const ControlFlow.Structured.Block.Incoming) !IdRef {
5358 fn structuredNextBlock(self: *NavGen, incoming: []const ControlFlow.Structured.Block.Incoming) !Id {
53935359 assert(self.control_flow == .structured);
53945360
53955361 const result_id = self.spv.allocId();
53965362 const block_id_ty_id = try self.resolveType(Type.u32, .direct);
53975363 try self.func.body.emitRaw(self.spv.gpa, .OpPhi, @intCast(2 + incoming.len * 2)); // result type + result + variable/parent...
5398 self.func.body.writeOperand(spec.IdResultType, block_id_ty_id);
5399 self.func.body.writeOperand(spec.IdRef, result_id);
5364 self.func.body.writeOperand(spec.Id, block_id_ty_id);
5365 self.func.body.writeOperand(spec.Id, result_id);
54005366
54015367 for (incoming) |incoming_block| {
54025368 self.func.body.writeOperand(spec.PairIdRefIdRef, .{ incoming_block.next_block, incoming_block.src_label });
......@@ -5408,7 +5374,7 @@ const NavGen = struct {
54085374 /// Jumps to the block with the target block-id. This function must only be called when
54095375 /// terminating a body, there should be no instructions after it.
54105376 /// This function should only be called with structured control flow generation.
5411 fn structuredBreak(self: *NavGen, target_block: IdRef) !void {
5377 fn structuredBreak(self: *NavGen, target_block: Id) !void {
54125378 assert(self.control_flow == .structured);
54135379
54145380 const sblock = self.control_flow.structured.block_stack.getLast();
......@@ -5448,12 +5414,12 @@ const NavGen = struct {
54485414 /// Using loops; loops can be early exited by jumping to the merge block at
54495415 /// any time.
54505416 loop: struct {
5451 merge_label: IdRef,
5452 continue_label: IdRef,
5417 merge_label: Id,
5418 continue_label: Id,
54535419 },
54545420 },
54555421 body: []const Air.Inst.Index,
5456 ) !IdRef {
5422 ) !Id {
54575423 assert(self.control_flow == .structured);
54585424
54595425 var sblock: ControlFlow.Structured.Block = switch (block_merge_type) {
......@@ -5533,13 +5499,13 @@ const NavGen = struct {
55335499 }
55345500 }
55355501
5536 fn airBlock(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
5502 fn airBlock(self: *NavGen, inst: Air.Inst.Index) !?Id {
55375503 const inst_datas = self.air.instructions.items(.data);
55385504 const extra = self.air.extraData(Air.Block, inst_datas[@intFromEnum(inst)].ty_pl.payload);
55395505 return self.lowerBlock(inst, @ptrCast(self.air.extra.items[extra.end..][0..extra.data.body_len]));
55405506 }
55415507
5542 fn lowerBlock(self: *NavGen, inst: Air.Inst.Index, body: []const Air.Inst.Index) !?IdRef {
5508 fn lowerBlock(self: *NavGen, inst: Air.Inst.Index, body: []const Air.Inst.Index) !?Id {
55435509 // In AIR, a block doesn't really define an entry point like a block, but
55445510 // more like a scope that breaks can jump out of and "return" a value from.
55455511 // This cannot be directly modelled in SPIR-V, so in a block instruction,
......@@ -5584,8 +5550,8 @@ const NavGen = struct {
55845550 // result type + result + variable/parent...
55855551 2 + @as(u16, @intCast(block.incoming_blocks.items.len * 2)),
55865552 );
5587 self.func.body.writeOperand(spec.IdResultType, result_type_id);
5588 self.func.body.writeOperand(spec.IdRef, result_id);
5553 self.func.body.writeOperand(spec.Id, result_type_id);
5554 self.func.body.writeOperand(spec.Id, result_id);
55895555
55905556 for (block.incoming_blocks.items) |incoming| {
55915557 self.func.body.writeOperand(
......@@ -5599,7 +5565,7 @@ const NavGen = struct {
55995565 };
56005566
56015567 const maybe_block_result_var_id = if (have_block_result) blk: {
5602 const block_result_var_id = try self.alloc(ty, .{ .storage_class = .Function });
5568 const block_result_var_id = try self.alloc(ty, .{ .storage_class = .function });
56035569 try cf.block_results.putNoClobber(self.gpa, inst, block_result_var_id);
56045570 break :blk block_result_var_id;
56055571 } else null;
......@@ -5823,7 +5789,7 @@ const NavGen = struct {
58235789 }
58245790 }
58255791
5826 fn airLoad(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
5792 fn airLoad(self: *NavGen, inst: Air.Inst.Index) !?Id {
58275793 const zcu = self.pt.zcu;
58285794 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
58295795 const ptr_ty = self.typeOf(ty_op.operand);
......@@ -5894,7 +5860,7 @@ const NavGen = struct {
58945860 });
58955861 }
58965862
5897 fn airTry(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
5863 fn airTry(self: *NavGen, inst: Air.Inst.Index) !?Id {
58985864 const zcu = self.pt.zcu;
58995865 const pl_op = self.air.instructions.items(.data)[@intFromEnum(inst)].pl_op;
59005866 const err_union_id = try self.resolve(pl_op.operand);
......@@ -5964,7 +5930,7 @@ const NavGen = struct {
59645930 return try self.extractField(payload_ty, err_union_id, eu_layout.payloadFieldIndex());
59655931 }
59665932
5967 fn airErrUnionErr(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
5933 fn airErrUnionErr(self: *NavGen, inst: Air.Inst.Index) !?Id {
59685934 const zcu = self.pt.zcu;
59695935 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
59705936 const operand_id = try self.resolve(ty_op.operand);
......@@ -5987,7 +5953,7 @@ const NavGen = struct {
59875953 return try self.extractField(Type.anyerror, operand_id, eu_layout.errorFieldIndex());
59885954 }
59895955
5990 fn airErrUnionPayload(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
5956 fn airErrUnionPayload(self: *NavGen, inst: Air.Inst.Index) !?Id {
59915957 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
59925958 const operand_id = try self.resolve(ty_op.operand);
59935959 const payload_ty = self.typeOfIndex(inst);
......@@ -6000,7 +5966,7 @@ const NavGen = struct {
60005966 return try self.extractField(payload_ty, operand_id, eu_layout.payloadFieldIndex());
60015967 }
60025968
6003 fn airWrapErrUnionErr(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
5969 fn airWrapErrUnionErr(self: *NavGen, inst: Air.Inst.Index) !?Id {
60045970 const zcu = self.pt.zcu;
60055971 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
60065972 const err_union_ty = self.typeOfIndex(inst);
......@@ -6014,7 +5980,7 @@ const NavGen = struct {
60145980
60155981 const payload_ty_id = try self.resolveType(payload_ty, .indirect);
60165982
6017 var members: [2]IdRef = undefined;
5983 var members: [2]Id = undefined;
60185984 members[eu_layout.errorFieldIndex()] = operand_id;
60195985 members[eu_layout.payloadFieldIndex()] = try self.spv.constUndef(payload_ty_id);
60205986
......@@ -6026,7 +5992,7 @@ const NavGen = struct {
60265992 return try self.constructComposite(err_union_ty_id, &members);
60275993 }
60285994
6029 fn airWrapErrUnionPayload(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
5995 fn airWrapErrUnionPayload(self: *NavGen, inst: Air.Inst.Index) !?Id {
60305996 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
60315997 const err_union_ty = self.typeOfIndex(inst);
60325998 const operand_id = try self.resolve(ty_op.operand);
......@@ -6037,7 +6003,7 @@ const NavGen = struct {
60376003 return try self.constInt(Type.anyerror, 0);
60386004 }
60396005
6040 var members: [2]IdRef = undefined;
6006 var members: [2]Id = undefined;
60416007 members[eu_layout.errorFieldIndex()] = try self.constInt(Type.anyerror, 0);
60426008 members[eu_layout.payloadFieldIndex()] = try self.convertToIndirect(payload_ty, operand_id);
60436009
......@@ -6049,7 +6015,7 @@ const NavGen = struct {
60496015 return try self.constructComposite(err_union_ty_id, &members);
60506016 }
60516017
6052 fn airIsNull(self: *NavGen, inst: Air.Inst.Index, is_pointer: bool, pred: enum { is_null, is_non_null }) !?IdRef {
6018 fn airIsNull(self: *NavGen, inst: Air.Inst.Index, is_pointer: bool, pred: enum { is_null, is_non_null }) !?Id {
60536019 const pt = self.pt;
60546020 const zcu = pt.zcu;
60556021 const un_op = self.air.instructions.items(.data)[@intFromEnum(inst)].un_op;
......@@ -6126,7 +6092,7 @@ const NavGen = struct {
61266092 };
61276093 }
61286094
6129 fn airIsErr(self: *NavGen, inst: Air.Inst.Index, pred: enum { is_err, is_non_err }) !?IdRef {
6095 fn airIsErr(self: *NavGen, inst: Air.Inst.Index, pred: enum { is_err, is_non_err }) !?Id {
61306096 const zcu = self.pt.zcu;
61316097 const un_op = self.air.instructions.items(.data)[@intFromEnum(inst)].un_op;
61326098 const operand_id = try self.resolve(un_op);
......@@ -6164,7 +6130,7 @@ const NavGen = struct {
61646130 return result_id;
61656131 }
61666132
6167 fn airUnwrapOptional(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
6133 fn airUnwrapOptional(self: *NavGen, inst: Air.Inst.Index) !?Id {
61686134 const pt = self.pt;
61696135 const zcu = pt.zcu;
61706136 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
......@@ -6181,7 +6147,7 @@ const NavGen = struct {
61816147 return try self.extractField(payload_ty, operand_id, 0);
61826148 }
61836149
6184 fn airUnwrapOptionalPtr(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
6150 fn airUnwrapOptionalPtr(self: *NavGen, inst: Air.Inst.Index) !?Id {
61856151 const pt = self.pt;
61866152 const zcu = pt.zcu;
61876153 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
......@@ -6206,7 +6172,7 @@ const NavGen = struct {
62066172 return try self.accessChain(result_ty_id, operand_id, &.{0});
62076173 }
62086174
6209 fn airWrapOptional(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
6175 fn airWrapOptional(self: *NavGen, inst: Air.Inst.Index) !?Id {
62106176 const pt = self.pt;
62116177 const zcu = pt.zcu;
62126178 const ty_op = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_op;
......@@ -6224,7 +6190,7 @@ const NavGen = struct {
62246190 }
62256191
62266192 const payload_id = try self.convertToIndirect(payload_ty, operand_id);
6227 const members = [_]IdRef{ payload_id, try self.constBool(true, .indirect) };
6193 const members = [_]Id{ payload_id, try self.constBool(true, .indirect) };
62286194 const optional_ty_id = try self.resolveType(optional_ty, .direct);
62296195 return try self.constructComposite(optional_ty_id, &members);
62306196 }
......@@ -6294,8 +6260,8 @@ const NavGen = struct {
62946260
62956261 // Emit the instruction before generating the blocks.
62966262 try self.func.body.emitRaw(self.spv.gpa, .OpSwitch, 2 + (cond_words + 1) * num_conditions);
6297 self.func.body.writeOperand(IdRef, cond_indirect);
6298 self.func.body.writeOperand(IdRef, default);
6263 self.func.body.writeOperand(Id, cond_indirect);
6264 self.func.body.writeOperand(Id, default);
62996265
63006266 // Emit each of the cases
63016267 {
......@@ -6322,7 +6288,7 @@ const NavGen = struct {
63226288 else => unreachable,
63236289 };
63246290 self.func.body.writeOperand(spec.LiteralContextDependentNumber, int_lit);
6325 self.func.body.writeOperand(IdRef, label);
6291 self.func.body.writeOperand(Id, label);
63266292 }
63276293 }
63286294 }
......@@ -6399,7 +6365,7 @@ const NavGen = struct {
63996365 });
64006366 }
64016367
6402 fn airDbgInlineBlock(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
6368 fn airDbgInlineBlock(self: *NavGen, inst: Air.Inst.Index) !?Id {
64036369 const zcu = self.pt.zcu;
64046370 const inst_datas = self.air.instructions.items(.data);
64056371 const extra = self.air.extraData(Air.DbgInlineBlock, inst_datas[@intFromEnum(inst)].ty_pl.payload);
......@@ -6416,7 +6382,7 @@ const NavGen = struct {
64166382 try self.spv.debugName(target_id, name.toSlice(self.air));
64176383 }
64186384
6419 fn airAssembly(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
6385 fn airAssembly(self: *NavGen, inst: Air.Inst.Index) !?Id {
64206386 const zcu = self.pt.zcu;
64216387 const ty_pl = self.air.instructions.items(.data)[@intFromEnum(inst)].ty_pl;
64226388 const extra = self.air.extraData(Air.Asm, ty_pl.payload);
......@@ -6586,7 +6552,7 @@ const NavGen = struct {
65866552 return null;
65876553 }
65886554
6589 fn airCall(self: *NavGen, inst: Air.Inst.Index, modifier: std.builtin.CallModifier) !?IdRef {
6555 fn airCall(self: *NavGen, inst: Air.Inst.Index, modifier: std.builtin.CallModifier) !?Id {
65906556 _ = modifier;
65916557
65926558 const pt = self.pt;
......@@ -6608,7 +6574,7 @@ const NavGen = struct {
66086574 const callee_id = try self.resolve(pl_op.operand);
66096575
66106576 comptime assert(zig_call_abi_ver == 3);
6611 const params = try self.gpa.alloc(spec.IdRef, args.len);
6577 const params = try self.gpa.alloc(spec.Id, args.len);
66126578 defer self.gpa.free(params);
66136579 var n_params: usize = 0;
66146580 for (args) |arg| {
......@@ -6637,7 +6603,7 @@ const NavGen = struct {
66376603 return result_id;
66386604 }
66396605
6640 fn builtin3D(self: *NavGen, result_ty: Type, builtin: spec.BuiltIn, dimension: u32, out_of_range_value: anytype) !IdRef {
6606 fn builtin3D(self: *NavGen, result_ty: Type, builtin: spec.BuiltIn, dimension: u32, out_of_range_value: anytype) !Id {
66416607 if (dimension >= 3) {
66426608 return try self.constInt(result_ty, out_of_range_value);
66436609 }
......@@ -6645,7 +6611,7 @@ const NavGen = struct {
66456611 .len = 3,
66466612 .child = result_ty.toIntern(),
66476613 });
6648 const ptr_ty_id = try self.ptrType(vec_ty, .Input, .indirect);
6614 const ptr_ty_id = try self.ptrType(vec_ty, .input, .indirect);
66496615 const spv_decl_index = try self.spv.builtin(ptr_ty_id, builtin);
66506616 try self.func.decl_deps.put(self.spv.gpa, spv_decl_index, {});
66516617 const ptr = self.spv.declPtr(spv_decl_index).result_id;
......@@ -6653,34 +6619,34 @@ const NavGen = struct {
66536619 return try self.extractVectorComponent(result_ty, vec, dimension);
66546620 }
66556621
6656 fn airWorkItemId(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
6622 fn airWorkItemId(self: *NavGen, inst: Air.Inst.Index) !?Id {
66576623 if (self.liveness.isUnused(inst)) return null;
66586624 const pl_op = self.air.instructions.items(.data)[@intFromEnum(inst)].pl_op;
66596625 const dimension = pl_op.payload;
66606626 // TODO: Should we make these builtins return usize?
6661 const result_id = try self.builtin3D(Type.u64, .LocalInvocationId, dimension, 0);
6627 const result_id = try self.builtin3D(Type.u64, .local_invocation_id, dimension, 0);
66626628 const tmp = Temporary.init(Type.u64, result_id);
66636629 const result = try self.buildConvert(Type.u32, tmp);
66646630 return try result.materialize(self);
66656631 }
66666632
6667 fn airWorkGroupSize(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
6633 fn airWorkGroupSize(self: *NavGen, inst: Air.Inst.Index) !?Id {
66686634 if (self.liveness.isUnused(inst)) return null;
66696635 const pl_op = self.air.instructions.items(.data)[@intFromEnum(inst)].pl_op;
66706636 const dimension = pl_op.payload;
66716637 // TODO: Should we make these builtins return usize?
6672 const result_id = try self.builtin3D(Type.u64, .WorkgroupSize, dimension, 0);
6638 const result_id = try self.builtin3D(Type.u64, .workgroup_size, dimension, 0);
66736639 const tmp = Temporary.init(Type.u64, result_id);
66746640 const result = try self.buildConvert(Type.u32, tmp);
66756641 return try result.materialize(self);
66766642 }
66776643
6678 fn airWorkGroupId(self: *NavGen, inst: Air.Inst.Index) !?IdRef {
6644 fn airWorkGroupId(self: *NavGen, inst: Air.Inst.Index) !?Id {
66796645 if (self.liveness.isUnused(inst)) return null;
66806646 const pl_op = self.air.instructions.items(.data)[@intFromEnum(inst)].pl_op;
66816647 const dimension = pl_op.payload;
66826648 // TODO: Should we make these builtins return usize?
6683 const result_id = try self.builtin3D(Type.u64, .WorkgroupId, dimension, 0);
6649 const result_id = try self.builtin3D(Type.u64, .workgroup_id, dimension, 0);
66846650 const tmp = Temporary.init(Type.u64, result_id);
66856651 const result = try self.buildConvert(Type.u32, tmp);
66866652 return try result.materialize(self);
src/codegen/spirv/Assembler.zig+23-24
......@@ -7,8 +7,7 @@ const assert = std.debug.assert;
77const spec = @import("spec.zig");
88const Opcode = spec.Opcode;
99const Word = spec.Word;
10const IdRef = spec.IdRef;
11const IdResult = spec.IdResult;
10const Id = spec.Id;
1211const StorageClass = spec.StorageClass;
1312
1413const SpvModule = @import("Module.zig");
......@@ -127,10 +126,10 @@ const AsmValue = union(enum) {
127126 unresolved_forward_reference,
128127
129128 /// This result-value is a normal result produced by a different instruction.
130 value: IdRef,
129 value: Id,
131130
132131 /// This result-value represents a type registered into the module's type system.
133 ty: IdRef,
132 ty: Id,
134133
135134 /// This is a pre-supplied constant integer value.
136135 constant: u32,
......@@ -141,7 +140,7 @@ const AsmValue = union(enum) {
141140 /// Retrieve the result-id of this AsmValue. Asserts that this AsmValue
142141 /// is of a variant that allows the result to be obtained (not an unresolved
143142 /// forward declaration, not in the process of being declared, etc).
144 pub fn resultId(self: AsmValue) IdRef {
143 pub fn resultId(self: AsmValue) Id {
145144 return switch (self) {
146145 .just_declared,
147146 .unresolved_forward_reference,
......@@ -314,7 +313,7 @@ fn processInstruction(self: *Assembler) !void {
314313 return;
315314 },
316315 else => switch (self.inst.opcode.class()) {
317 .TypeDeclaration => try self.processTypeInstruction(),
316 .type_declaration => try self.processTypeInstruction(),
318317 else => (try self.processGenericInstruction()) orelse return,
319318 },
320319 };
......@@ -392,7 +391,7 @@ fn processTypeInstruction(self: *Assembler) !AsmValue {
392391 break :blk result_id;
393392 },
394393 .OpTypeStruct => blk: {
395 const ids = try self.gpa.alloc(IdRef, operands[1..].len);
394 const ids = try self.gpa.alloc(Id, operands[1..].len);
396395 defer self.gpa.free(ids);
397396 for (operands[1..], ids) |op, *id| id.* = try self.resolveRefId(op.ref_id);
398397 const result_id = self.spv.allocId();
......@@ -429,7 +428,7 @@ fn processTypeInstruction(self: *Assembler) !AsmValue {
429428 const param_operands = operands[2..];
430429 const return_type = try self.resolveRefId(operands[1].ref_id);
431430
432 const param_types = try self.spv.gpa.alloc(IdRef, param_operands.len);
431 const param_types = try self.spv.gpa.alloc(Id, param_operands.len);
433432 defer self.spv.gpa.free(param_types);
434433 for (param_types, param_operands) |*param, operand| {
435434 param.* = try self.resolveRefId(operand.ref_id);
......@@ -457,17 +456,17 @@ fn processGenericInstruction(self: *Assembler) !?AsmValue {
457456 const operands = self.inst.operands.items;
458457 var maybe_spv_decl_index: ?SpvModule.Decl.Index = null;
459458 const section = switch (self.inst.opcode.class()) {
460 .ConstantCreation => &self.spv.sections.types_globals_constants,
461 .Annotation => &self.spv.sections.annotations,
462 .TypeDeclaration => unreachable, // Handled elsewhere.
459 .constant_creation => &self.spv.sections.types_globals_constants,
460 .annotation => &self.spv.sections.annotations,
461 .type_declaration => unreachable, // Handled elsewhere.
463462 else => switch (self.inst.opcode) {
464463 .OpEntryPoint => unreachable,
465464 .OpExecutionMode, .OpExecutionModeId => &self.spv.sections.execution_modes,
466465 .OpVariable => section: {
467466 const storage_class: spec.StorageClass = @enumFromInt(operands[2].value);
468 if (storage_class == .Function) break :section &self.func.prologue;
467 if (storage_class == .function) break :section &self.func.prologue;
469468 maybe_spv_decl_index = try self.spv.allocDecl(.global);
470 if (self.spv.version.minor < 4 and storage_class != .Input and storage_class != .Output) {
469 if (self.spv.version.minor < 4 and storage_class != .input and storage_class != .output) {
471470 // Before version 1.4, the interface’s storage classes are limited to the Input and Output
472471 break :section &self.spv.sections.types_globals_constants;
473472 }
......@@ -481,7 +480,7 @@ fn processGenericInstruction(self: *Assembler) !?AsmValue {
481480 },
482481 };
483482
484 var maybe_result_id: ?IdResult = null;
483 var maybe_result_id: ?Id = null;
485484 const first_word = section.instructions.items.len;
486485 // At this point we're not quite sure how many operands this instruction is going to have,
487486 // so insert 0 and patch up the actual opcode word later.
......@@ -504,12 +503,12 @@ fn processGenericInstruction(self: *Assembler) !?AsmValue {
504503 else
505504 self.spv.allocId();
506505 try section.ensureUnusedCapacity(self.spv.gpa, 1);
507 section.writeOperand(IdResult, maybe_result_id.?);
506 section.writeOperand(Id, maybe_result_id.?);
508507 },
509508 .ref_id => |index| {
510509 const result = try self.resolveRef(index);
511510 try section.ensureUnusedCapacity(self.spv.gpa, 1);
512 section.writeOperand(spec.IdRef, result.resultId());
511 section.writeOperand(spec.Id, result.resultId());
513512 },
514513 .string => |offset| {
515514 const text = std.mem.sliceTo(self.inst.string_bytes.items[offset..], 0);
......@@ -558,7 +557,7 @@ fn resolveRef(self: *Assembler, ref: AsmValue.Ref) !AsmValue {
558557 }
559558}
560559
561fn resolveRefId(self: *Assembler, ref: AsmValue.Ref) !IdRef {
560fn resolveRefId(self: *Assembler, ref: AsmValue.Ref) !Id {
562561 const value = try self.resolveRef(ref);
563562 return value.resultId();
564563}
......@@ -600,7 +599,7 @@ fn parseInstruction(self: *Assembler) !void {
600599 const expected_operands = inst.operands;
601600 // This is a loop because the result-id is not always the first operand.
602601 const requires_lhs_result = for (expected_operands) |op| {
603 if (op.kind == .IdResult) break true;
602 if (op.kind == .id_result) break true;
604603 } else false;
605604
606605 if (requires_lhs_result and maybe_lhs_result == null) {
......@@ -614,7 +613,7 @@ fn parseInstruction(self: *Assembler) !void {
614613 }
615614
616615 for (expected_operands) |operand| {
617 if (operand.kind == .IdResult) {
616 if (operand.kind == .id_result) {
618617 try self.inst.operands.append(self.gpa, .{ .result_id = maybe_lhs_result.? });
619618 continue;
620619 }
......@@ -646,11 +645,11 @@ fn parseOperand(self: *Assembler, kind: spec.OperandKind) Error!void {
646645 .value_enum => try self.parseValueEnum(kind),
647646 .id => try self.parseRefId(),
648647 else => switch (kind) {
649 .LiteralInteger => try self.parseLiteralInteger(),
650 .LiteralString => try self.parseString(),
651 .LiteralContextDependentNumber => try self.parseContextDependentNumber(),
652 .LiteralExtInstInteger => try self.parseLiteralExtInstInteger(),
653 .PairIdRefIdRef => try self.parsePhiSource(),
648 .literal_integer => try self.parseLiteralInteger(),
649 .literal_string => try self.parseString(),
650 .literal_context_dependent_number => try self.parseContextDependentNumber(),
651 .literal_ext_inst_integer => try self.parseLiteralExtInstInteger(),
652 .pair_id_ref_id_ref => try self.parsePhiSource(),
654653 else => return self.todo("parse operand of type {s}", .{@tagName(kind)}),
655654 },
656655 }
src/codegen/spirv/Module.zig+68-70
......@@ -15,9 +15,7 @@ const Wyhash = std.hash.Wyhash;
1515
1616const spec = @import("spec.zig");
1717const Word = spec.Word;
18const IdRef = spec.IdRef;
19const IdResult = spec.IdResult;
20const IdResultType = spec.IdResultType;
18const Id = spec.Id;
2119
2220const Section = @import("Section.zig");
2321
......@@ -82,7 +80,7 @@ pub const Decl = struct {
8280 /// - For `func`, this is the result-id of the associated OpFunction instruction.
8381 /// - For `global`, this is the result-id of the associated OpVariable instruction.
8482 /// - For `invocation_global`, this is the result-id of the associated InvocationGlobal instruction.
85 result_id: IdRef,
83 result_id: Id,
8684 /// The offset of the first dependency of this decl in the `decl_deps` array.
8785 begin_dep: u32,
8886 /// The past-end offset of the dependencies of this decl in the `decl_deps` array.
......@@ -150,7 +148,7 @@ sections: struct {
150148next_result_id: Word,
151149
152150/// Cache for results of OpString instructions.
153strings: std.StringArrayHashMapUnmanaged(IdRef) = .empty,
151strings: std.StringArrayHashMapUnmanaged(Id) = .empty,
154152
155153/// Some types shouldn't be emitted more than one time, but cannot be caught by
156154/// the `intern_map` during codegen. Sometimes, IDs are compared to check if
......@@ -161,20 +159,20 @@ strings: std.StringArrayHashMapUnmanaged(IdRef) = .empty,
161159/// Additionally, this is used for other values which can be cached, for example,
162160/// built-in variables.
163161cache: struct {
164 bool_type: ?IdRef = null,
165 void_type: ?IdRef = null,
166 int_types: std.AutoHashMapUnmanaged(std.builtin.Type.Int, IdRef) = .empty,
167 float_types: std.AutoHashMapUnmanaged(std.builtin.Type.Float, IdRef) = .empty,
168 vector_types: std.AutoHashMapUnmanaged(struct { IdRef, u32 }, IdRef) = .empty,
169 array_types: std.AutoHashMapUnmanaged(struct { IdRef, IdRef }, IdRef) = .empty,
162 bool_type: ?Id = null,
163 void_type: ?Id = null,
164 int_types: std.AutoHashMapUnmanaged(std.builtin.Type.Int, Id) = .empty,
165 float_types: std.AutoHashMapUnmanaged(std.builtin.Type.Float, Id) = .empty,
166 vector_types: std.AutoHashMapUnmanaged(struct { Id, u32 }, Id) = .empty,
167 array_types: std.AutoHashMapUnmanaged(struct { Id, Id }, Id) = .empty,
170168
171169 capabilities: std.AutoHashMapUnmanaged(spec.Capability, void) = .empty,
172170 extensions: std.StringHashMapUnmanaged(void) = .empty,
173 extended_instruction_set: std.AutoHashMapUnmanaged(spec.InstructionSet, IdRef) = .empty,
174 decorations: std.AutoHashMapUnmanaged(struct { IdRef, spec.Decoration }, void) = .empty,
175 builtins: std.AutoHashMapUnmanaged(struct { IdRef, spec.BuiltIn }, Decl.Index) = .empty,
171 extended_instruction_set: std.AutoHashMapUnmanaged(spec.InstructionSet, Id) = .empty,
172 decorations: std.AutoHashMapUnmanaged(struct { Id, spec.Decoration }, void) = .empty,
173 builtins: std.AutoHashMapUnmanaged(struct { Id, spec.BuiltIn }, Decl.Index) = .empty,
176174
177 bool_const: [2]?IdRef = .{ null, null },
175 bool_const: [2]?Id = .{ null, null },
178176} = .{},
179177
180178/// Set of Decls, referred to by Decl.Index.
......@@ -185,7 +183,7 @@ decls: std.ArrayListUnmanaged(Decl) = .empty,
185183decl_deps: std.ArrayListUnmanaged(Decl.Index) = .empty,
186184
187185/// The list of entry points that should be exported from this module.
188entry_points: std.AutoArrayHashMapUnmanaged(IdRef, EntryPoint) = .empty,
186entry_points: std.AutoArrayHashMapUnmanaged(Id, EntryPoint) = .empty,
189187
190188pub fn init(gpa: Allocator, target: *const std.Target) Module {
191189 const version_minor: u8 = blk: {
......@@ -245,7 +243,7 @@ pub const IdRange = struct {
245243 base: u32,
246244 len: u32,
247245
248 pub fn at(range: IdRange, i: usize) IdResult {
246 pub fn at(range: IdRange, i: usize) Id {
249247 assert(i < range.len);
250248 return @enumFromInt(range.base + i);
251249 }
......@@ -259,7 +257,7 @@ pub fn allocIds(self: *Module, n: u32) IdRange {
259257 };
260258}
261259
262pub fn allocId(self: *Module) IdResult {
260pub fn allocId(self: *Module) Id {
263261 return self.allocIds(1).at(0);
264262}
265263
......@@ -275,7 +273,7 @@ fn addEntryPointDeps(
275273 self: *Module,
276274 decl_index: Decl.Index,
277275 seen: *std.DynamicBitSetUnmanaged,
278 interface: *std.ArrayList(IdRef),
276 interface: *std.ArrayList(Id),
279277) !void {
280278 const decl = self.declPtr(decl_index);
281279 const deps = self.decl_deps.items[decl.begin_dep..decl.end_dep];
......@@ -299,7 +297,7 @@ fn entryPoints(self: *Module) !Section {
299297 var entry_points = Section{};
300298 errdefer entry_points.deinit(self.gpa);
301299
302 var interface = std.ArrayList(IdRef).init(self.gpa);
300 var interface = std.ArrayList(Id).init(self.gpa);
303301 defer interface.deinit();
304302
305303 var seen = try std.DynamicBitSetUnmanaged.initEmpty(self.gpa, self.decls.items.len);
......@@ -317,12 +315,12 @@ fn entryPoints(self: *Module) !Section {
317315 .interface = interface.items,
318316 });
319317
320 if (entry_point.exec_mode == null and entry_point.exec_model == .Fragment) {
318 if (entry_point.exec_mode == null and entry_point.exec_model == .fragment) {
321319 switch (self.target.os.tag) {
322320 .vulkan, .opengl => |tag| {
323321 try self.sections.execution_modes.emit(self.gpa, .OpExecutionMode, .{
324322 .entry_point = entry_point_id,
325 .mode = if (tag == .vulkan) .OriginUpperLeft else .OriginLowerLeft,
323 .mode = if (tag == .vulkan) .origin_upper_left else .origin_lower_left,
326324 });
327325 },
328326 .opencl => {},
......@@ -338,59 +336,59 @@ pub fn finalize(self: *Module, a: Allocator) ![]Word {
338336 // Emit capabilities and extensions
339337 switch (self.target.os.tag) {
340338 .opengl => {
341 try self.addCapability(.Shader);
342 try self.addCapability(.Matrix);
339 try self.addCapability(.shader);
340 try self.addCapability(.matrix);
343341 },
344342 .vulkan => {
345 try self.addCapability(.Shader);
346 try self.addCapability(.Matrix);
343 try self.addCapability(.shader);
344 try self.addCapability(.matrix);
347345 if (self.target.cpu.arch == .spirv64) {
348346 try self.addExtension("SPV_KHR_physical_storage_buffer");
349 try self.addCapability(.PhysicalStorageBufferAddresses);
347 try self.addCapability(.physical_storage_buffer_addresses);
350348 }
351349 },
352350 .opencl, .amdhsa => {
353 try self.addCapability(.Kernel);
354 try self.addCapability(.Addresses);
351 try self.addCapability(.kernel);
352 try self.addCapability(.addresses);
355353 },
356354 else => unreachable,
357355 }
358 if (self.target.cpu.arch == .spirv64) try self.addCapability(.Int64);
359 if (self.target.cpu.has(.spirv, .int64)) try self.addCapability(.Int64);
360 if (self.target.cpu.has(.spirv, .float16)) try self.addCapability(.Float16);
361 if (self.target.cpu.has(.spirv, .float64)) try self.addCapability(.Float64);
362 if (self.target.cpu.has(.spirv, .generic_pointer)) try self.addCapability(.GenericPointer);
363 if (self.target.cpu.has(.spirv, .vector16)) try self.addCapability(.Vector16);
356 if (self.target.cpu.arch == .spirv64) try self.addCapability(.int64);
357 if (self.target.cpu.has(.spirv, .int64)) try self.addCapability(.int64);
358 if (self.target.cpu.has(.spirv, .float16)) try self.addCapability(.float16);
359 if (self.target.cpu.has(.spirv, .float64)) try self.addCapability(.float64);
360 if (self.target.cpu.has(.spirv, .generic_pointer)) try self.addCapability(.generic_pointer);
361 if (self.target.cpu.has(.spirv, .vector16)) try self.addCapability(.vector16);
364362 if (self.target.cpu.has(.spirv, .storage_push_constant16)) {
365363 try self.addExtension("SPV_KHR_16bit_storage");
366 try self.addCapability(.StoragePushConstant16);
364 try self.addCapability(.storage_push_constant16);
367365 }
368366 if (self.target.cpu.has(.spirv, .arbitrary_precision_integers)) {
369367 try self.addExtension("SPV_INTEL_arbitrary_precision_integers");
370 try self.addCapability(.ArbitraryPrecisionIntegersINTEL);
368 try self.addCapability(.arbitrary_precision_integers_intel);
371369 }
372370 if (self.target.cpu.has(.spirv, .variable_pointers)) {
373371 try self.addExtension("SPV_KHR_variable_pointers");
374 try self.addCapability(.VariablePointersStorageBuffer);
375 try self.addCapability(.VariablePointers);
372 try self.addCapability(.variable_pointers_storage_buffer);
373 try self.addCapability(.variable_pointers);
376374 }
377375 // These are well supported
378 try self.addCapability(.Int8);
379 try self.addCapability(.Int16);
376 try self.addCapability(.int8);
377 try self.addCapability(.int16);
380378
381379 // Emit memory model
382380 const addressing_model: spec.AddressingModel = switch (self.target.os.tag) {
383 .opengl => .Logical,
384 .vulkan => if (self.target.cpu.arch == .spirv32) .Logical else .PhysicalStorageBuffer64,
385 .opencl => if (self.target.cpu.arch == .spirv32) .Physical32 else .Physical64,
386 .amdhsa => .Physical64,
381 .opengl => .logical,
382 .vulkan => if (self.target.cpu.arch == .spirv32) .logical else .physical_storage_buffer64,
383 .opencl => if (self.target.cpu.arch == .spirv32) .physical32 else .physical64,
384 .amdhsa => .physical64,
387385 else => unreachable,
388386 };
389387 try self.sections.memory_model.emit(self.gpa, .OpMemoryModel, .{
390388 .addressing_model = addressing_model,
391389 .memory_model = switch (self.target.os.tag) {
392 .opencl => .OpenCL,
393 .vulkan, .opengl => .GLSL450,
390 .opencl => .open_cl,
391 .vulkan, .opengl => .glsl450,
394392 else => unreachable,
395393 },
396394 });
......@@ -411,7 +409,7 @@ pub fn finalize(self: *Module, a: Allocator) ![]Word {
411409 var source = Section{};
412410 defer source.deinit(self.gpa);
413411 try self.sections.debug_strings.emit(self.gpa, .OpSource, .{
414 .source_language = .Zig,
412 .source_language = .zig,
415413 .version = 0,
416414 // We cannot emit these because the Khronos translator does not parse this instruction
417415 // correctly.
......@@ -473,7 +471,7 @@ pub fn addExtension(self: *Module, ext: []const u8) !void {
473471}
474472
475473/// Imports or returns the existing id of an extended instruction set
476pub fn importInstructionSet(self: *Module, set: spec.InstructionSet) !IdRef {
474pub fn importInstructionSet(self: *Module, set: spec.InstructionSet) !Id {
477475 assert(set != .core);
478476
479477 const gop = try self.cache.extended_instruction_set.getOrPut(self.gpa, set);
......@@ -490,7 +488,7 @@ pub fn importInstructionSet(self: *Module, set: spec.InstructionSet) !IdRef {
490488}
491489
492490/// Fetch the result-id of an instruction corresponding to a string.
493pub fn resolveString(self: *Module, string: []const u8) !IdRef {
491pub fn resolveString(self: *Module, string: []const u8) !Id {
494492 if (self.strings.get(string)) |id| {
495493 return id;
496494 }
......@@ -506,7 +504,7 @@ pub fn resolveString(self: *Module, string: []const u8) !IdRef {
506504 return id;
507505}
508506
509pub fn structType(self: *Module, result_id: IdResult, types: []const IdRef, maybe_names: ?[]const []const u8) !void {
507pub fn structType(self: *Module, result_id: Id, types: []const Id, maybe_names: ?[]const []const u8) !void {
510508 try self.sections.types_globals_constants.emit(self.gpa, .OpTypeStruct, .{
511509 .id_result = result_id,
512510 .id_ref = types,
......@@ -520,7 +518,7 @@ pub fn structType(self: *Module, result_id: IdResult, types: []const IdRef, mayb
520518 }
521519}
522520
523pub fn boolType(self: *Module) !IdRef {
521pub fn boolType(self: *Module) !Id {
524522 if (self.cache.bool_type) |id| return id;
525523
526524 const result_id = self.allocId();
......@@ -531,7 +529,7 @@ pub fn boolType(self: *Module) !IdRef {
531529 return result_id;
532530}
533531
534pub fn voidType(self: *Module) !IdRef {
532pub fn voidType(self: *Module) !Id {
535533 if (self.cache.void_type) |id| return id;
536534
537535 const result_id = self.allocId();
......@@ -543,7 +541,7 @@ pub fn voidType(self: *Module) !IdRef {
543541 return result_id;
544542}
545543
546pub fn intType(self: *Module, signedness: std.builtin.Signedness, bits: u16) !IdRef {
544pub fn intType(self: *Module, signedness: std.builtin.Signedness, bits: u16) !Id {
547545 assert(bits > 0);
548546 const entry = try self.cache.int_types.getOrPut(self.gpa, .{ .signedness = signedness, .bits = bits });
549547 if (!entry.found_existing) {
......@@ -566,7 +564,7 @@ pub fn intType(self: *Module, signedness: std.builtin.Signedness, bits: u16) !Id
566564 return entry.value_ptr.*;
567565}
568566
569pub fn floatType(self: *Module, bits: u16) !IdRef {
567pub fn floatType(self: *Module, bits: u16) !Id {
570568 assert(bits > 0);
571569 const entry = try self.cache.float_types.getOrPut(self.gpa, .{ .bits = bits });
572570 if (!entry.found_existing) {
......@@ -581,7 +579,7 @@ pub fn floatType(self: *Module, bits: u16) !IdRef {
581579 return entry.value_ptr.*;
582580}
583581
584pub fn vectorType(self: *Module, len: u32, child_ty_id: IdRef) !IdRef {
582pub fn vectorType(self: *Module, len: u32, child_ty_id: Id) !Id {
585583 const entry = try self.cache.vector_types.getOrPut(self.gpa, .{ child_ty_id, len });
586584 if (!entry.found_existing) {
587585 const result_id = self.allocId();
......@@ -595,7 +593,7 @@ pub fn vectorType(self: *Module, len: u32, child_ty_id: IdRef) !IdRef {
595593 return entry.value_ptr.*;
596594}
597595
598pub fn arrayType(self: *Module, len_id: IdRef, child_ty_id: IdRef) !IdRef {
596pub fn arrayType(self: *Module, len_id: Id, child_ty_id: Id) !Id {
599597 const entry = try self.cache.array_types.getOrPut(self.gpa, .{ child_ty_id, len_id });
600598 if (!entry.found_existing) {
601599 const result_id = self.allocId();
......@@ -609,7 +607,7 @@ pub fn arrayType(self: *Module, len_id: IdRef, child_ty_id: IdRef) !IdRef {
609607 return entry.value_ptr.*;
610608}
611609
612pub fn functionType(self: *Module, return_ty_id: IdRef, param_type_ids: []const IdRef) !IdRef {
610pub fn functionType(self: *Module, return_ty_id: Id, param_type_ids: []const Id) !Id {
613611 const result_id = self.allocId();
614612 try self.sections.types_globals_constants.emit(self.gpa, .OpTypeFunction, .{
615613 .id_result = result_id,
......@@ -619,7 +617,7 @@ pub fn functionType(self: *Module, return_ty_id: IdRef, param_type_ids: []const
619617 return result_id;
620618}
621619
622pub fn constant(self: *Module, result_ty_id: IdRef, value: spec.LiteralContextDependentNumber) !IdRef {
620pub fn constant(self: *Module, result_ty_id: Id, value: spec.LiteralContextDependentNumber) !Id {
623621 const result_id = self.allocId();
624622 const section = &self.sections.types_globals_constants;
625623 try section.emit(self.gpa, .OpConstant, .{
......@@ -630,7 +628,7 @@ pub fn constant(self: *Module, result_ty_id: IdRef, value: spec.LiteralContextDe
630628 return result_id;
631629}
632630
633pub fn constBool(self: *Module, value: bool) !IdRef {
631pub fn constBool(self: *Module, value: bool) !Id {
634632 if (self.cache.bool_const[@intFromBool(value)]) |b| return b;
635633
636634 const result_ty_id = try self.boolType();
......@@ -653,7 +651,7 @@ pub fn constBool(self: *Module, value: bool) !IdRef {
653651
654652/// Return a pointer to a builtin variable. `result_ty_id` must be a **pointer**
655653/// with storage class `.Input`.
656pub fn builtin(self: *Module, result_ty_id: IdRef, spirv_builtin: spec.BuiltIn) !Decl.Index {
654pub fn builtin(self: *Module, result_ty_id: Id, spirv_builtin: spec.BuiltIn) !Decl.Index {
657655 const entry = try self.cache.builtins.getOrPut(self.gpa, .{ result_ty_id, spirv_builtin });
658656 if (!entry.found_existing) {
659657 const decl_index = try self.allocDecl(.global);
......@@ -662,15 +660,15 @@ pub fn builtin(self: *Module, result_ty_id: IdRef, spirv_builtin: spec.BuiltIn)
662660 try self.sections.types_globals_constants.emit(self.gpa, .OpVariable, .{
663661 .id_result_type = result_ty_id,
664662 .id_result = result_id,
665 .storage_class = .Input,
663 .storage_class = .input,
666664 });
667 try self.decorate(result_id, .{ .BuiltIn = .{ .built_in = spirv_builtin } });
665 try self.decorate(result_id, .{ .built_in = .{ .built_in = spirv_builtin } });
668666 try self.declareDeclDeps(decl_index, &.{});
669667 }
670668 return entry.value_ptr.*;
671669}
672670
673pub fn constUndef(self: *Module, ty_id: IdRef) !IdRef {
671pub fn constUndef(self: *Module, ty_id: Id) !Id {
674672 const result_id = self.allocId();
675673 try self.sections.types_globals_constants.emit(self.gpa, .OpUndef, .{
676674 .id_result_type = ty_id,
......@@ -679,7 +677,7 @@ pub fn constUndef(self: *Module, ty_id: IdRef) !IdRef {
679677 return result_id;
680678}
681679
682pub fn constNull(self: *Module, ty_id: IdRef) !IdRef {
680pub fn constNull(self: *Module, ty_id: Id) !Id {
683681 const result_id = self.allocId();
684682 try self.sections.types_globals_constants.emit(self.gpa, .OpConstantNull, .{
685683 .id_result_type = ty_id,
......@@ -691,7 +689,7 @@ pub fn constNull(self: *Module, ty_id: IdRef) !IdRef {
691689/// Decorate a result-id.
692690pub fn decorate(
693691 self: *Module,
694 target: IdRef,
692 target: Id,
695693 decoration: spec.Decoration.Extended,
696694) !void {
697695 const entry = try self.cache.decorations.getOrPut(self.gpa, .{ target, decoration });
......@@ -707,7 +705,7 @@ pub fn decorate(
707705/// We really don't have to and shouldn't need to cache this.
708706pub fn decorateMember(
709707 self: *Module,
710 structure_type: IdRef,
708 structure_type: Id,
711709 member: u32,
712710 decoration: spec.Decoration.Extended,
713711) !void {
......@@ -762,20 +760,20 @@ pub fn declareEntryPoint(
762760 if (!gop.found_existing) gop.value_ptr.exec_mode = exec_mode;
763761}
764762
765pub fn debugName(self: *Module, target: IdResult, name: []const u8) !void {
763pub fn debugName(self: *Module, target: Id, name: []const u8) !void {
766764 try self.sections.debug_names.emit(self.gpa, .OpName, .{
767765 .target = target,
768766 .name = name,
769767 });
770768}
771769
772pub fn debugNameFmt(self: *Module, target: IdResult, comptime fmt: []const u8, args: anytype) !void {
770pub fn debugNameFmt(self: *Module, target: Id, comptime fmt: []const u8, args: anytype) !void {
773771 const name = try std.fmt.allocPrint(self.gpa, fmt, args);
774772 defer self.gpa.free(name);
775773 try self.debugName(target, name);
776774}
777775
778pub fn memberDebugName(self: *Module, target: IdResult, member: u32, name: []const u8) !void {
776pub fn memberDebugName(self: *Module, target: Id, member: u32, name: []const u8) !void {
779777 try self.sections.debug_names.emit(self.gpa, .OpMemberName, .{
780778 .type = target,
781779 .member = member,
src/codegen/spirv/Section.zig+5-5
......@@ -79,7 +79,7 @@ pub fn emit(
7979pub fn emitBranch(
8080 section: *Section,
8181 allocator: Allocator,
82 target_label: spec.IdRef,
82 target_label: spec.Id,
8383) !void {
8484 try section.emit(allocator, .OpBranch, .{
8585 .target_label = target_label,
......@@ -94,8 +94,8 @@ pub fn emitSpecConstantOp(
9494) !void {
9595 const word_count = operandsSize(opcode.Operands(), operands);
9696 try section.emitRaw(allocator, .OpSpecConstantOp, 1 + word_count);
97 section.writeOperand(spec.IdRef, operands.id_result_type);
98 section.writeOperand(spec.IdRef, operands.id_result);
97 section.writeOperand(spec.Id, operands.id_result_type);
98 section.writeOperand(spec.Id, operands.id_result);
9999 section.writeOperand(Opcode, opcode);
100100
101101 const fields = @typeInfo(opcode.Operands()).@"struct".fields;
......@@ -134,7 +134,7 @@ fn writeOperands(section: *Section, comptime Operands: type, operands: Operands)
134134
135135pub fn writeOperand(section: *Section, comptime Operand: type, operand: Operand) void {
136136 switch (Operand) {
137 spec.IdResult => section.writeWord(@intFromEnum(operand)),
137 spec.Id => section.writeWord(@intFromEnum(operand)),
138138
139139 spec.LiteralInteger => section.writeWord(operand),
140140
......@@ -266,7 +266,7 @@ fn operandsSize(comptime Operands: type, operands: Operands) usize {
266266
267267fn operandSize(comptime Operand: type, operand: Operand) usize {
268268 return switch (Operand) {
269 spec.IdResult,
269 spec.Id,
270270 spec.LiteralInteger,
271271 spec.LiteralExtInstInteger,
272272 => 1,
src/codegen/spirv/extinst.zig.grammar.json+9-11
......@@ -1,13 +1,11 @@
11{
2 "version": 0,
3 "revision": 0,
4 "instructions": [
5 {
6 "opname": "InvocationGlobal",
7 "opcode": 0,
8 "operands": [
9 { "kind": "IdRef", "name": "initializer function" }
10 ]
11 }
12 ]
2 "version": 0,
3 "revision": 0,
4 "instructions": [
5 {
6 "opname": "InvocationGlobal",
7 "opcode": 0,
8 "operands": [{ "kind": "IdRef", "name": "initializer function" }]
9 }
10 ]
1311}
src/codegen/spirv/spec.zig+11928-10043
......@@ -1,7 +1,6 @@
11//! This file is auto-generated by tools/gen_spirv_spec.zig.
22
33const std = @import("std");
4const assert = std.debug.assert;
54
65pub const Version = packed struct(Word) {
76 padding: u8 = 0,
......@@ -15,22 +14,17 @@ pub const Version = packed struct(Word) {
1514};
1615
1716pub const Word = u32;
18pub const IdResult = enum(Word) {
17pub const Id = enum(Word) {
1918 none,
2019 _,
2120
22 pub fn format(self: IdResult, writer: *std.io.Writer) std.io.Writer.Error!void {
21 pub fn format(self: Id, writer: *std.io.Writer) std.io.Writer.Error!void {
2322 switch (self) {
2423 .none => try writer.writeAll("(none)"),
2524 else => try writer.print("%{d}", .{@intFromEnum(self)}),
2625 }
2726 }
2827};
29pub const IdResultType = IdResult;
30pub const IdRef = IdResult;
31
32pub const IdMemorySemantics = IdRef;
33pub const IdScope = IdRef;
3428
3529pub const LiteralInteger = Word;
3630pub const LiteralFloat = Word;
......@@ -45,9 +39,9 @@ pub const LiteralContextDependentNumber = union(enum) {
4539};
4640pub const LiteralExtInstInteger = struct { inst: Word };
4741pub const LiteralSpecConstantOpInteger = struct { opcode: Opcode };
48pub const PairLiteralIntegerIdRef = struct { value: LiteralInteger, label: IdRef };
49pub const PairIdRefLiteralInteger = struct { target: IdRef, member: LiteralInteger };
50pub const PairIdRefIdRef = [2]IdRef;
42pub const PairLiteralIntegerIdRef = struct { value: LiteralInteger, label: Id };
43pub const PairIdRefLiteralInteger = struct { target: Id, member: LiteralInteger };
44pub const PairIdRefIdRef = [2]Id;
5145
5246pub const Quantifier = enum {
5347 required,
......@@ -81,1499 +75,1564 @@ pub const Instruction = struct {
8175};
8276
8377pub const zig_generator_id: Word = 41;
84pub const version = Version{ .major = 1, .minor = 6, .patch = 1 };
78pub const version: Version = .{ .major = 1, .minor = 6, .patch = 4 };
8579pub const magic_number: Word = 0x07230203;
8680
8781pub const Class = enum {
88 Miscellaneous,
89 Debug,
90 Extension,
91 ModeSetting,
92 TypeDeclaration,
93 ConstantCreation,
94 Function,
95 Memory,
96 Annotation,
97 Composite,
98 Image,
99 Conversion,
100 Arithmetic,
101 RelationalAndLogical,
102 Bit,
103 Derivative,
104 Primitive,
105 Barrier,
106 Atomic,
107 ControlFlow,
108 Group,
109 Pipe,
110 DeviceSideEnqueue,
111 NonUniform,
112 Reserved,
82 miscellaneous,
83 debug,
84 extension,
85 mode_setting,
86 type_declaration,
87 constant_creation,
88 function,
89 memory,
90 annotation,
91 composite,
92 image,
93 conversion,
94 arithmetic,
95 relational_and_logical,
96 bit,
97 derivative,
98 primitive,
99 barrier,
100 atomic,
101 control_flow,
102 group,
103 pipe,
104 device_side_enqueue,
105 non_uniform,
106 tensor,
107 graph,
108 reserved,
113109};
114110
115111pub const OperandKind = enum {
116 Opcode,
117 ImageOperands,
118 FPFastMathMode,
119 SelectionControl,
120 LoopControl,
121 FunctionControl,
122 MemorySemantics,
123 MemoryAccess,
124 KernelProfilingInfo,
125 RayFlags,
126 FragmentShadingRate,
127 RawAccessChainOperands,
128 SourceLanguage,
129 ExecutionModel,
130 AddressingModel,
131 MemoryModel,
132 ExecutionMode,
133 StorageClass,
134 Dim,
135 SamplerAddressingMode,
136 SamplerFilterMode,
137 ImageFormat,
138 ImageChannelOrder,
139 ImageChannelDataType,
140 FPRoundingMode,
141 FPDenormMode,
142 QuantizationModes,
143 FPOperationMode,
144 OverflowModes,
145 LinkageType,
146 AccessQualifier,
147 HostAccessQualifier,
148 FunctionParameterAttribute,
149 Decoration,
150 BuiltIn,
151 Scope,
152 GroupOperation,
153 KernelEnqueueFlags,
154 Capability,
155 RayQueryIntersection,
156 RayQueryCommittedIntersectionType,
157 RayQueryCandidateIntersectionType,
158 PackedVectorFormat,
159 CooperativeMatrixOperands,
160 CooperativeMatrixLayout,
161 CooperativeMatrixUse,
162 InitializationModeQualifier,
163 LoadCacheControl,
164 StoreCacheControl,
165 NamedMaximumNumberOfRegisters,
166 IdResultType,
167 IdResult,
168 IdMemorySemantics,
169 IdScope,
170 IdRef,
171 LiteralInteger,
172 LiteralString,
173 LiteralFloat,
174 LiteralContextDependentNumber,
175 LiteralExtInstInteger,
176 LiteralSpecConstantOpInteger,
177 PairLiteralIntegerIdRef,
178 PairIdRefLiteralInteger,
179 PairIdRefIdRef,
180 @"OpenCL.DebugInfo.100.DebugInfoFlags",
181 @"OpenCL.DebugInfo.100.DebugBaseTypeAttributeEncoding",
182 @"OpenCL.DebugInfo.100.DebugCompositeType",
183 @"OpenCL.DebugInfo.100.DebugTypeQualifier",
184 @"OpenCL.DebugInfo.100.DebugOperation",
185 @"OpenCL.DebugInfo.100.DebugImportedEntity",
186 @"NonSemantic.Shader.DebugInfo.100.DebugInfoFlags",
187 @"NonSemantic.Shader.DebugInfo.100.BuildIdentifierFlags",
188 @"NonSemantic.Shader.DebugInfo.100.DebugBaseTypeAttributeEncoding",
189 @"NonSemantic.Shader.DebugInfo.100.DebugCompositeType",
190 @"NonSemantic.Shader.DebugInfo.100.DebugTypeQualifier",
191 @"NonSemantic.Shader.DebugInfo.100.DebugOperation",
192 @"NonSemantic.Shader.DebugInfo.100.DebugImportedEntity",
193 @"NonSemantic.ClspvReflection.6.KernelPropertyFlags",
194 @"DebugInfo.DebugInfoFlags",
195 @"DebugInfo.DebugBaseTypeAttributeEncoding",
196 @"DebugInfo.DebugCompositeType",
197 @"DebugInfo.DebugTypeQualifier",
198 @"DebugInfo.DebugOperation",
112 opcode,
113 image_operands,
114 fp_fast_math_mode,
115 selection_control,
116 loop_control,
117 function_control,
118 memory_semantics,
119 memory_access,
120 kernel_profiling_info,
121 ray_flags,
122 fragment_shading_rate,
123 raw_access_chain_operands,
124 source_language,
125 execution_model,
126 addressing_model,
127 memory_model,
128 execution_mode,
129 storage_class,
130 dim,
131 sampler_addressing_mode,
132 sampler_filter_mode,
133 image_format,
134 image_channel_order,
135 image_channel_data_type,
136 fp_rounding_mode,
137 fp_denorm_mode,
138 quantization_modes,
139 fp_operation_mode,
140 overflow_modes,
141 linkage_type,
142 access_qualifier,
143 host_access_qualifier,
144 function_parameter_attribute,
145 decoration,
146 built_in,
147 scope,
148 group_operation,
149 kernel_enqueue_flags,
150 capability,
151 ray_query_intersection,
152 ray_query_committed_intersection_type,
153 ray_query_candidate_intersection_type,
154 packed_vector_format,
155 cooperative_matrix_operands,
156 cooperative_matrix_layout,
157 cooperative_matrix_use,
158 cooperative_matrix_reduce,
159 tensor_clamp_mode,
160 tensor_addressing_operands,
161 initialization_mode_qualifier,
162 load_cache_control,
163 store_cache_control,
164 named_maximum_number_of_registers,
165 matrix_multiply_accumulate_operands,
166 fp_encoding,
167 cooperative_vector_matrix_layout,
168 component_type,
169 id_result_type,
170 id_result,
171 id_memory_semantics,
172 id_scope,
173 id_ref,
174 literal_integer,
175 literal_string,
176 literal_float,
177 literal_context_dependent_number,
178 literal_ext_inst_integer,
179 literal_spec_constant_op_integer,
180 pair_literal_integer_id_ref,
181 pair_id_ref_literal_integer,
182 pair_id_ref_id_ref,
183 tensor_operands,
184 debug_info_debug_info_flags,
185 debug_info_debug_base_type_attribute_encoding,
186 debug_info_debug_composite_type,
187 debug_info_debug_type_qualifier,
188 debug_info_debug_operation,
189 open_cl_debug_info_100_debug_info_flags,
190 open_cl_debug_info_100_debug_base_type_attribute_encoding,
191 open_cl_debug_info_100_debug_composite_type,
192 open_cl_debug_info_100_debug_type_qualifier,
193 open_cl_debug_info_100_debug_operation,
194 open_cl_debug_info_100_debug_imported_entity,
195 non_semantic_clspv_reflection_6_kernel_property_flags,
196 non_semantic_shader_debug_info_100_debug_info_flags,
197 non_semantic_shader_debug_info_100_build_identifier_flags,
198 non_semantic_shader_debug_info_100_debug_base_type_attribute_encoding,
199 non_semantic_shader_debug_info_100_debug_composite_type,
200 non_semantic_shader_debug_info_100_debug_type_qualifier,
201 non_semantic_shader_debug_info_100_debug_operation,
202 non_semantic_shader_debug_info_100_debug_imported_entity,
199203
200204 pub fn category(self: OperandKind) OperandCategory {
201205 return switch (self) {
202 .Opcode => .literal,
203 .ImageOperands => .bit_enum,
204 .FPFastMathMode => .bit_enum,
205 .SelectionControl => .bit_enum,
206 .LoopControl => .bit_enum,
207 .FunctionControl => .bit_enum,
208 .MemorySemantics => .bit_enum,
209 .MemoryAccess => .bit_enum,
210 .KernelProfilingInfo => .bit_enum,
211 .RayFlags => .bit_enum,
212 .FragmentShadingRate => .bit_enum,
213 .RawAccessChainOperands => .bit_enum,
214 .SourceLanguage => .value_enum,
215 .ExecutionModel => .value_enum,
216 .AddressingModel => .value_enum,
217 .MemoryModel => .value_enum,
218 .ExecutionMode => .value_enum,
219 .StorageClass => .value_enum,
220 .Dim => .value_enum,
221 .SamplerAddressingMode => .value_enum,
222 .SamplerFilterMode => .value_enum,
223 .ImageFormat => .value_enum,
224 .ImageChannelOrder => .value_enum,
225 .ImageChannelDataType => .value_enum,
226 .FPRoundingMode => .value_enum,
227 .FPDenormMode => .value_enum,
228 .QuantizationModes => .value_enum,
229 .FPOperationMode => .value_enum,
230 .OverflowModes => .value_enum,
231 .LinkageType => .value_enum,
232 .AccessQualifier => .value_enum,
233 .HostAccessQualifier => .value_enum,
234 .FunctionParameterAttribute => .value_enum,
235 .Decoration => .value_enum,
236 .BuiltIn => .value_enum,
237 .Scope => .value_enum,
238 .GroupOperation => .value_enum,
239 .KernelEnqueueFlags => .value_enum,
240 .Capability => .value_enum,
241 .RayQueryIntersection => .value_enum,
242 .RayQueryCommittedIntersectionType => .value_enum,
243 .RayQueryCandidateIntersectionType => .value_enum,
244 .PackedVectorFormat => .value_enum,
245 .CooperativeMatrixOperands => .bit_enum,
246 .CooperativeMatrixLayout => .value_enum,
247 .CooperativeMatrixUse => .value_enum,
248 .InitializationModeQualifier => .value_enum,
249 .LoadCacheControl => .value_enum,
250 .StoreCacheControl => .value_enum,
251 .NamedMaximumNumberOfRegisters => .value_enum,
252 .IdResultType => .id,
253 .IdResult => .id,
254 .IdMemorySemantics => .id,
255 .IdScope => .id,
256 .IdRef => .id,
257 .LiteralInteger => .literal,
258 .LiteralString => .literal,
259 .LiteralFloat => .literal,
260 .LiteralContextDependentNumber => .literal,
261 .LiteralExtInstInteger => .literal,
262 .LiteralSpecConstantOpInteger => .literal,
263 .PairLiteralIntegerIdRef => .composite,
264 .PairIdRefLiteralInteger => .composite,
265 .PairIdRefIdRef => .composite,
266 .@"OpenCL.DebugInfo.100.DebugInfoFlags" => .bit_enum,
267 .@"OpenCL.DebugInfo.100.DebugBaseTypeAttributeEncoding" => .value_enum,
268 .@"OpenCL.DebugInfo.100.DebugCompositeType" => .value_enum,
269 .@"OpenCL.DebugInfo.100.DebugTypeQualifier" => .value_enum,
270 .@"OpenCL.DebugInfo.100.DebugOperation" => .value_enum,
271 .@"OpenCL.DebugInfo.100.DebugImportedEntity" => .value_enum,
272 .@"NonSemantic.Shader.DebugInfo.100.DebugInfoFlags" => .bit_enum,
273 .@"NonSemantic.Shader.DebugInfo.100.BuildIdentifierFlags" => .bit_enum,
274 .@"NonSemantic.Shader.DebugInfo.100.DebugBaseTypeAttributeEncoding" => .value_enum,
275 .@"NonSemantic.Shader.DebugInfo.100.DebugCompositeType" => .value_enum,
276 .@"NonSemantic.Shader.DebugInfo.100.DebugTypeQualifier" => .value_enum,
277 .@"NonSemantic.Shader.DebugInfo.100.DebugOperation" => .value_enum,
278 .@"NonSemantic.Shader.DebugInfo.100.DebugImportedEntity" => .value_enum,
279 .@"NonSemantic.ClspvReflection.6.KernelPropertyFlags" => .bit_enum,
280 .@"DebugInfo.DebugInfoFlags" => .bit_enum,
281 .@"DebugInfo.DebugBaseTypeAttributeEncoding" => .value_enum,
282 .@"DebugInfo.DebugCompositeType" => .value_enum,
283 .@"DebugInfo.DebugTypeQualifier" => .value_enum,
284 .@"DebugInfo.DebugOperation" => .value_enum,
206 .opcode => .literal,
207 .image_operands => .bit_enum,
208 .fp_fast_math_mode => .bit_enum,
209 .selection_control => .bit_enum,
210 .loop_control => .bit_enum,
211 .function_control => .bit_enum,
212 .memory_semantics => .bit_enum,
213 .memory_access => .bit_enum,
214 .kernel_profiling_info => .bit_enum,
215 .ray_flags => .bit_enum,
216 .fragment_shading_rate => .bit_enum,
217 .raw_access_chain_operands => .bit_enum,
218 .source_language => .value_enum,
219 .execution_model => .value_enum,
220 .addressing_model => .value_enum,
221 .memory_model => .value_enum,
222 .execution_mode => .value_enum,
223 .storage_class => .value_enum,
224 .dim => .value_enum,
225 .sampler_addressing_mode => .value_enum,
226 .sampler_filter_mode => .value_enum,
227 .image_format => .value_enum,
228 .image_channel_order => .value_enum,
229 .image_channel_data_type => .value_enum,
230 .fp_rounding_mode => .value_enum,
231 .fp_denorm_mode => .value_enum,
232 .quantization_modes => .value_enum,
233 .fp_operation_mode => .value_enum,
234 .overflow_modes => .value_enum,
235 .linkage_type => .value_enum,
236 .access_qualifier => .value_enum,
237 .host_access_qualifier => .value_enum,
238 .function_parameter_attribute => .value_enum,
239 .decoration => .value_enum,
240 .built_in => .value_enum,
241 .scope => .value_enum,
242 .group_operation => .value_enum,
243 .kernel_enqueue_flags => .value_enum,
244 .capability => .value_enum,
245 .ray_query_intersection => .value_enum,
246 .ray_query_committed_intersection_type => .value_enum,
247 .ray_query_candidate_intersection_type => .value_enum,
248 .packed_vector_format => .value_enum,
249 .cooperative_matrix_operands => .bit_enum,
250 .cooperative_matrix_layout => .value_enum,
251 .cooperative_matrix_use => .value_enum,
252 .cooperative_matrix_reduce => .bit_enum,
253 .tensor_clamp_mode => .value_enum,
254 .tensor_addressing_operands => .bit_enum,
255 .initialization_mode_qualifier => .value_enum,
256 .load_cache_control => .value_enum,
257 .store_cache_control => .value_enum,
258 .named_maximum_number_of_registers => .value_enum,
259 .matrix_multiply_accumulate_operands => .bit_enum,
260 .fp_encoding => .value_enum,
261 .cooperative_vector_matrix_layout => .value_enum,
262 .component_type => .value_enum,
263 .id_result_type => .id,
264 .id_result => .id,
265 .id_memory_semantics => .id,
266 .id_scope => .id,
267 .id_ref => .id,
268 .literal_integer => .literal,
269 .literal_string => .literal,
270 .literal_float => .literal,
271 .literal_context_dependent_number => .literal,
272 .literal_ext_inst_integer => .literal,
273 .literal_spec_constant_op_integer => .literal,
274 .pair_literal_integer_id_ref => .composite,
275 .pair_id_ref_literal_integer => .composite,
276 .pair_id_ref_id_ref => .composite,
277 .tensor_operands => .bit_enum,
278 .debug_info_debug_info_flags => .bit_enum,
279 .debug_info_debug_base_type_attribute_encoding => .value_enum,
280 .debug_info_debug_composite_type => .value_enum,
281 .debug_info_debug_type_qualifier => .value_enum,
282 .debug_info_debug_operation => .value_enum,
283 .open_cl_debug_info_100_debug_info_flags => .bit_enum,
284 .open_cl_debug_info_100_debug_base_type_attribute_encoding => .value_enum,
285 .open_cl_debug_info_100_debug_composite_type => .value_enum,
286 .open_cl_debug_info_100_debug_type_qualifier => .value_enum,
287 .open_cl_debug_info_100_debug_operation => .value_enum,
288 .open_cl_debug_info_100_debug_imported_entity => .value_enum,
289 .non_semantic_clspv_reflection_6_kernel_property_flags => .bit_enum,
290 .non_semantic_shader_debug_info_100_debug_info_flags => .bit_enum,
291 .non_semantic_shader_debug_info_100_build_identifier_flags => .bit_enum,
292 .non_semantic_shader_debug_info_100_debug_base_type_attribute_encoding => .value_enum,
293 .non_semantic_shader_debug_info_100_debug_composite_type => .value_enum,
294 .non_semantic_shader_debug_info_100_debug_type_qualifier => .value_enum,
295 .non_semantic_shader_debug_info_100_debug_operation => .value_enum,
296 .non_semantic_shader_debug_info_100_debug_imported_entity => .value_enum,
285297 };
286298 }
287299 pub fn enumerants(self: OperandKind) []const Enumerant {
288300 return switch (self) {
289 .Opcode => unreachable,
290 .ImageOperands => &[_]Enumerant{
291 .{ .name = "Bias", .value = 0x0001, .parameters = &[_]OperandKind{.IdRef} },
292 .{ .name = "Lod", .value = 0x0002, .parameters = &[_]OperandKind{.IdRef} },
293 .{ .name = "Grad", .value = 0x0004, .parameters = &[_]OperandKind{ .IdRef, .IdRef } },
294 .{ .name = "ConstOffset", .value = 0x0008, .parameters = &[_]OperandKind{.IdRef} },
295 .{ .name = "Offset", .value = 0x0010, .parameters = &[_]OperandKind{.IdRef} },
296 .{ .name = "ConstOffsets", .value = 0x0020, .parameters = &[_]OperandKind{.IdRef} },
297 .{ .name = "Sample", .value = 0x0040, .parameters = &[_]OperandKind{.IdRef} },
298 .{ .name = "MinLod", .value = 0x0080, .parameters = &[_]OperandKind{.IdRef} },
299 .{ .name = "MakeTexelAvailable", .value = 0x0100, .parameters = &[_]OperandKind{.IdScope} },
300 .{ .name = "MakeTexelAvailableKHR", .value = 0x0100, .parameters = &[_]OperandKind{.IdScope} },
301 .{ .name = "MakeTexelVisible", .value = 0x0200, .parameters = &[_]OperandKind{.IdScope} },
302 .{ .name = "MakeTexelVisibleKHR", .value = 0x0200, .parameters = &[_]OperandKind{.IdScope} },
303 .{ .name = "NonPrivateTexel", .value = 0x0400, .parameters = &[_]OperandKind{} },
304 .{ .name = "NonPrivateTexelKHR", .value = 0x0400, .parameters = &[_]OperandKind{} },
305 .{ .name = "VolatileTexel", .value = 0x0800, .parameters = &[_]OperandKind{} },
306 .{ .name = "VolatileTexelKHR", .value = 0x0800, .parameters = &[_]OperandKind{} },
307 .{ .name = "SignExtend", .value = 0x1000, .parameters = &[_]OperandKind{} },
308 .{ .name = "ZeroExtend", .value = 0x2000, .parameters = &[_]OperandKind{} },
309 .{ .name = "Nontemporal", .value = 0x4000, .parameters = &[_]OperandKind{} },
310 .{ .name = "Offsets", .value = 0x10000, .parameters = &[_]OperandKind{.IdRef} },
301 .opcode => unreachable,
302 .image_operands => &.{
303 .{ .name = "Bias", .value = 0x0001, .parameters = &.{.id_ref} },
304 .{ .name = "Lod", .value = 0x0002, .parameters = &.{.id_ref} },
305 .{ .name = "Grad", .value = 0x0004, .parameters = &.{ .id_ref, .id_ref } },
306 .{ .name = "ConstOffset", .value = 0x0008, .parameters = &.{.id_ref} },
307 .{ .name = "Offset", .value = 0x0010, .parameters = &.{.id_ref} },
308 .{ .name = "ConstOffsets", .value = 0x0020, .parameters = &.{.id_ref} },
309 .{ .name = "Sample", .value = 0x0040, .parameters = &.{.id_ref} },
310 .{ .name = "MinLod", .value = 0x0080, .parameters = &.{.id_ref} },
311 .{ .name = "MakeTexelAvailable", .value = 0x0100, .parameters = &.{.id_scope} },
312 .{ .name = "MakeTexelVisible", .value = 0x0200, .parameters = &.{.id_scope} },
313 .{ .name = "NonPrivateTexel", .value = 0x0400, .parameters = &.{} },
314 .{ .name = "VolatileTexel", .value = 0x0800, .parameters = &.{} },
315 .{ .name = "SignExtend", .value = 0x1000, .parameters = &.{} },
316 .{ .name = "ZeroExtend", .value = 0x2000, .parameters = &.{} },
317 .{ .name = "Nontemporal", .value = 0x4000, .parameters = &.{} },
318 .{ .name = "Offsets", .value = 0x10000, .parameters = &.{.id_ref} },
319 },
320 .fp_fast_math_mode => &.{
321 .{ .name = "NotNaN", .value = 0x0001, .parameters = &.{} },
322 .{ .name = "NotInf", .value = 0x0002, .parameters = &.{} },
323 .{ .name = "NSZ", .value = 0x0004, .parameters = &.{} },
324 .{ .name = "AllowRecip", .value = 0x0008, .parameters = &.{} },
325 .{ .name = "Fast", .value = 0x0010, .parameters = &.{} },
326 .{ .name = "AllowContract", .value = 0x10000, .parameters = &.{} },
327 .{ .name = "AllowReassoc", .value = 0x20000, .parameters = &.{} },
328 .{ .name = "AllowTransform", .value = 0x40000, .parameters = &.{} },
329 },
330 .selection_control => &.{
331 .{ .name = "Flatten", .value = 0x0001, .parameters = &.{} },
332 .{ .name = "DontFlatten", .value = 0x0002, .parameters = &.{} },
333 },
334 .loop_control => &.{
335 .{ .name = "Unroll", .value = 0x0001, .parameters = &.{} },
336 .{ .name = "DontUnroll", .value = 0x0002, .parameters = &.{} },
337 .{ .name = "DependencyInfinite", .value = 0x0004, .parameters = &.{} },
338 .{ .name = "DependencyLength", .value = 0x0008, .parameters = &.{.literal_integer} },
339 .{ .name = "MinIterations", .value = 0x0010, .parameters = &.{.literal_integer} },
340 .{ .name = "MaxIterations", .value = 0x0020, .parameters = &.{.literal_integer} },
341 .{ .name = "IterationMultiple", .value = 0x0040, .parameters = &.{.literal_integer} },
342 .{ .name = "PeelCount", .value = 0x0080, .parameters = &.{.literal_integer} },
343 .{ .name = "PartialCount", .value = 0x0100, .parameters = &.{.literal_integer} },
344 .{ .name = "InitiationIntervalINTEL", .value = 0x10000, .parameters = &.{.literal_integer} },
345 .{ .name = "MaxConcurrencyINTEL", .value = 0x20000, .parameters = &.{.literal_integer} },
346 .{ .name = "DependencyArrayINTEL", .value = 0x40000, .parameters = &.{.literal_integer} },
347 .{ .name = "PipelineEnableINTEL", .value = 0x80000, .parameters = &.{.literal_integer} },
348 .{ .name = "LoopCoalesceINTEL", .value = 0x100000, .parameters = &.{.literal_integer} },
349 .{ .name = "MaxInterleavingINTEL", .value = 0x200000, .parameters = &.{.literal_integer} },
350 .{ .name = "SpeculatedIterationsINTEL", .value = 0x400000, .parameters = &.{.literal_integer} },
351 .{ .name = "NoFusionINTEL", .value = 0x800000, .parameters = &.{} },
352 .{ .name = "LoopCountINTEL", .value = 0x1000000, .parameters = &.{.literal_integer} },
353 .{ .name = "MaxReinvocationDelayINTEL", .value = 0x2000000, .parameters = &.{.literal_integer} },
354 },
355 .function_control => &.{
356 .{ .name = "Inline", .value = 0x0001, .parameters = &.{} },
357 .{ .name = "DontInline", .value = 0x0002, .parameters = &.{} },
358 .{ .name = "Pure", .value = 0x0004, .parameters = &.{} },
359 .{ .name = "Const", .value = 0x0008, .parameters = &.{} },
360 .{ .name = "OptNoneEXT", .value = 0x10000, .parameters = &.{} },
361 },
362 .memory_semantics => &.{
363 .{ .name = "Relaxed", .value = 0x0000, .parameters = &.{} },
364 .{ .name = "Acquire", .value = 0x0002, .parameters = &.{} },
365 .{ .name = "Release", .value = 0x0004, .parameters = &.{} },
366 .{ .name = "AcquireRelease", .value = 0x0008, .parameters = &.{} },
367 .{ .name = "SequentiallyConsistent", .value = 0x0010, .parameters = &.{} },
368 .{ .name = "UniformMemory", .value = 0x0040, .parameters = &.{} },
369 .{ .name = "SubgroupMemory", .value = 0x0080, .parameters = &.{} },
370 .{ .name = "WorkgroupMemory", .value = 0x0100, .parameters = &.{} },
371 .{ .name = "CrossWorkgroupMemory", .value = 0x0200, .parameters = &.{} },
372 .{ .name = "AtomicCounterMemory", .value = 0x0400, .parameters = &.{} },
373 .{ .name = "ImageMemory", .value = 0x0800, .parameters = &.{} },
374 .{ .name = "OutputMemory", .value = 0x1000, .parameters = &.{} },
375 .{ .name = "MakeAvailable", .value = 0x2000, .parameters = &.{} },
376 .{ .name = "MakeVisible", .value = 0x4000, .parameters = &.{} },
377 .{ .name = "Volatile", .value = 0x8000, .parameters = &.{} },
378 },
379 .memory_access => &.{
380 .{ .name = "Volatile", .value = 0x0001, .parameters = &.{} },
381 .{ .name = "Aligned", .value = 0x0002, .parameters = &.{.literal_integer} },
382 .{ .name = "Nontemporal", .value = 0x0004, .parameters = &.{} },
383 .{ .name = "MakePointerAvailable", .value = 0x0008, .parameters = &.{.id_scope} },
384 .{ .name = "MakePointerVisible", .value = 0x0010, .parameters = &.{.id_scope} },
385 .{ .name = "NonPrivatePointer", .value = 0x0020, .parameters = &.{} },
386 .{ .name = "AliasScopeINTELMask", .value = 0x10000, .parameters = &.{.id_ref} },
387 .{ .name = "NoAliasINTELMask", .value = 0x20000, .parameters = &.{.id_ref} },
311388 },
312 .FPFastMathMode => &[_]Enumerant{
313 .{ .name = "NotNaN", .value = 0x0001, .parameters = &[_]OperandKind{} },
314 .{ .name = "NotInf", .value = 0x0002, .parameters = &[_]OperandKind{} },
315 .{ .name = "NSZ", .value = 0x0004, .parameters = &[_]OperandKind{} },
316 .{ .name = "AllowRecip", .value = 0x0008, .parameters = &[_]OperandKind{} },
317 .{ .name = "Fast", .value = 0x0010, .parameters = &[_]OperandKind{} },
318 .{ .name = "AllowContract", .value = 0x10000, .parameters = &[_]OperandKind{} },
319 .{ .name = "AllowContractFastINTEL", .value = 0x10000, .parameters = &[_]OperandKind{} },
320 .{ .name = "AllowReassoc", .value = 0x20000, .parameters = &[_]OperandKind{} },
321 .{ .name = "AllowReassocINTEL", .value = 0x20000, .parameters = &[_]OperandKind{} },
322 .{ .name = "AllowTransform", .value = 0x40000, .parameters = &[_]OperandKind{} },
389 .kernel_profiling_info => &.{
390 .{ .name = "CmdExecTime", .value = 0x0001, .parameters = &.{} },
323391 },
324 .SelectionControl => &[_]Enumerant{
325 .{ .name = "Flatten", .value = 0x0001, .parameters = &[_]OperandKind{} },
326 .{ .name = "DontFlatten", .value = 0x0002, .parameters = &[_]OperandKind{} },
392 .ray_flags => &.{
393 .{ .name = "NoneKHR", .value = 0x0000, .parameters = &.{} },
394 .{ .name = "OpaqueKHR", .value = 0x0001, .parameters = &.{} },
395 .{ .name = "NoOpaqueKHR", .value = 0x0002, .parameters = &.{} },
396 .{ .name = "TerminateOnFirstHitKHR", .value = 0x0004, .parameters = &.{} },
397 .{ .name = "SkipClosestHitShaderKHR", .value = 0x0008, .parameters = &.{} },
398 .{ .name = "CullBackFacingTrianglesKHR", .value = 0x0010, .parameters = &.{} },
399 .{ .name = "CullFrontFacingTrianglesKHR", .value = 0x0020, .parameters = &.{} },
400 .{ .name = "CullOpaqueKHR", .value = 0x0040, .parameters = &.{} },
401 .{ .name = "CullNoOpaqueKHR", .value = 0x0080, .parameters = &.{} },
402 .{ .name = "SkipTrianglesKHR", .value = 0x0100, .parameters = &.{} },
403 .{ .name = "SkipAABBsKHR", .value = 0x0200, .parameters = &.{} },
404 .{ .name = "ForceOpacityMicromap2StateEXT", .value = 0x0400, .parameters = &.{} },
327405 },
328 .LoopControl => &[_]Enumerant{
329 .{ .name = "Unroll", .value = 0x0001, .parameters = &[_]OperandKind{} },
330 .{ .name = "DontUnroll", .value = 0x0002, .parameters = &[_]OperandKind{} },
331 .{ .name = "DependencyInfinite", .value = 0x0004, .parameters = &[_]OperandKind{} },
332 .{ .name = "DependencyLength", .value = 0x0008, .parameters = &[_]OperandKind{.LiteralInteger} },
333 .{ .name = "MinIterations", .value = 0x0010, .parameters = &[_]OperandKind{.LiteralInteger} },
334 .{ .name = "MaxIterations", .value = 0x0020, .parameters = &[_]OperandKind{.LiteralInteger} },
335 .{ .name = "IterationMultiple", .value = 0x0040, .parameters = &[_]OperandKind{.LiteralInteger} },
336 .{ .name = "PeelCount", .value = 0x0080, .parameters = &[_]OperandKind{.LiteralInteger} },
337 .{ .name = "PartialCount", .value = 0x0100, .parameters = &[_]OperandKind{.LiteralInteger} },
338 .{ .name = "InitiationIntervalINTEL", .value = 0x10000, .parameters = &[_]OperandKind{.LiteralInteger} },
339 .{ .name = "MaxConcurrencyINTEL", .value = 0x20000, .parameters = &[_]OperandKind{.LiteralInteger} },
340 .{ .name = "DependencyArrayINTEL", .value = 0x40000, .parameters = &[_]OperandKind{.LiteralInteger} },
341 .{ .name = "PipelineEnableINTEL", .value = 0x80000, .parameters = &[_]OperandKind{.LiteralInteger} },
342 .{ .name = "LoopCoalesceINTEL", .value = 0x100000, .parameters = &[_]OperandKind{.LiteralInteger} },
343 .{ .name = "MaxInterleavingINTEL", .value = 0x200000, .parameters = &[_]OperandKind{.LiteralInteger} },
344 .{ .name = "SpeculatedIterationsINTEL", .value = 0x400000, .parameters = &[_]OperandKind{.LiteralInteger} },
345 .{ .name = "NoFusionINTEL", .value = 0x800000, .parameters = &[_]OperandKind{} },
346 .{ .name = "LoopCountINTEL", .value = 0x1000000, .parameters = &[_]OperandKind{.LiteralInteger} },
347 .{ .name = "MaxReinvocationDelayINTEL", .value = 0x2000000, .parameters = &[_]OperandKind{.LiteralInteger} },
406 .fragment_shading_rate => &.{
407 .{ .name = "Vertical2Pixels", .value = 0x0001, .parameters = &.{} },
408 .{ .name = "Vertical4Pixels", .value = 0x0002, .parameters = &.{} },
409 .{ .name = "Horizontal2Pixels", .value = 0x0004, .parameters = &.{} },
410 .{ .name = "Horizontal4Pixels", .value = 0x0008, .parameters = &.{} },
348411 },
349 .FunctionControl => &[_]Enumerant{
350 .{ .name = "Inline", .value = 0x0001, .parameters = &[_]OperandKind{} },
351 .{ .name = "DontInline", .value = 0x0002, .parameters = &[_]OperandKind{} },
352 .{ .name = "Pure", .value = 0x0004, .parameters = &[_]OperandKind{} },
353 .{ .name = "Const", .value = 0x0008, .parameters = &[_]OperandKind{} },
354 .{ .name = "OptNoneINTEL", .value = 0x10000, .parameters = &[_]OperandKind{} },
412 .raw_access_chain_operands => &.{
413 .{ .name = "RobustnessPerComponentNV", .value = 0x0001, .parameters = &.{} },
414 .{ .name = "RobustnessPerElementNV", .value = 0x0002, .parameters = &.{} },
355415 },
356 .MemorySemantics => &[_]Enumerant{
357 .{ .name = "Relaxed", .value = 0x0000, .parameters = &[_]OperandKind{} },
358 .{ .name = "Acquire", .value = 0x0002, .parameters = &[_]OperandKind{} },
359 .{ .name = "Release", .value = 0x0004, .parameters = &[_]OperandKind{} },
360 .{ .name = "AcquireRelease", .value = 0x0008, .parameters = &[_]OperandKind{} },
361 .{ .name = "SequentiallyConsistent", .value = 0x0010, .parameters = &[_]OperandKind{} },
362 .{ .name = "UniformMemory", .value = 0x0040, .parameters = &[_]OperandKind{} },
363 .{ .name = "SubgroupMemory", .value = 0x0080, .parameters = &[_]OperandKind{} },
364 .{ .name = "WorkgroupMemory", .value = 0x0100, .parameters = &[_]OperandKind{} },
365 .{ .name = "CrossWorkgroupMemory", .value = 0x0200, .parameters = &[_]OperandKind{} },
366 .{ .name = "AtomicCounterMemory", .value = 0x0400, .parameters = &[_]OperandKind{} },
367 .{ .name = "ImageMemory", .value = 0x0800, .parameters = &[_]OperandKind{} },
368 .{ .name = "OutputMemory", .value = 0x1000, .parameters = &[_]OperandKind{} },
369 .{ .name = "OutputMemoryKHR", .value = 0x1000, .parameters = &[_]OperandKind{} },
370 .{ .name = "MakeAvailable", .value = 0x2000, .parameters = &[_]OperandKind{} },
371 .{ .name = "MakeAvailableKHR", .value = 0x2000, .parameters = &[_]OperandKind{} },
372 .{ .name = "MakeVisible", .value = 0x4000, .parameters = &[_]OperandKind{} },
373 .{ .name = "MakeVisibleKHR", .value = 0x4000, .parameters = &[_]OperandKind{} },
374 .{ .name = "Volatile", .value = 0x8000, .parameters = &[_]OperandKind{} },
416 .source_language => &.{
417 .{ .name = "Unknown", .value = 0, .parameters = &.{} },
418 .{ .name = "ESSL", .value = 1, .parameters = &.{} },
419 .{ .name = "GLSL", .value = 2, .parameters = &.{} },
420 .{ .name = "OpenCL_C", .value = 3, .parameters = &.{} },
421 .{ .name = "OpenCL_CPP", .value = 4, .parameters = &.{} },
422 .{ .name = "HLSL", .value = 5, .parameters = &.{} },
423 .{ .name = "CPP_for_OpenCL", .value = 6, .parameters = &.{} },
424 .{ .name = "SYCL", .value = 7, .parameters = &.{} },
425 .{ .name = "HERO_C", .value = 8, .parameters = &.{} },
426 .{ .name = "NZSL", .value = 9, .parameters = &.{} },
427 .{ .name = "WGSL", .value = 10, .parameters = &.{} },
428 .{ .name = "Slang", .value = 11, .parameters = &.{} },
429 .{ .name = "Zig", .value = 12, .parameters = &.{} },
430 .{ .name = "Rust", .value = 13, .parameters = &.{} },
375431 },
376 .MemoryAccess => &[_]Enumerant{
377 .{ .name = "Volatile", .value = 0x0001, .parameters = &[_]OperandKind{} },
378 .{ .name = "Aligned", .value = 0x0002, .parameters = &[_]OperandKind{.LiteralInteger} },
379 .{ .name = "Nontemporal", .value = 0x0004, .parameters = &[_]OperandKind{} },
380 .{ .name = "MakePointerAvailable", .value = 0x0008, .parameters = &[_]OperandKind{.IdScope} },
381 .{ .name = "MakePointerAvailableKHR", .value = 0x0008, .parameters = &[_]OperandKind{.IdScope} },
382 .{ .name = "MakePointerVisible", .value = 0x0010, .parameters = &[_]OperandKind{.IdScope} },
383 .{ .name = "MakePointerVisibleKHR", .value = 0x0010, .parameters = &[_]OperandKind{.IdScope} },
384 .{ .name = "NonPrivatePointer", .value = 0x0020, .parameters = &[_]OperandKind{} },
385 .{ .name = "NonPrivatePointerKHR", .value = 0x0020, .parameters = &[_]OperandKind{} },
386 .{ .name = "AliasScopeINTELMask", .value = 0x10000, .parameters = &[_]OperandKind{.IdRef} },
387 .{ .name = "NoAliasINTELMask", .value = 0x20000, .parameters = &[_]OperandKind{.IdRef} },
432 .execution_model => &.{
433 .{ .name = "Vertex", .value = 0, .parameters = &.{} },
434 .{ .name = "TessellationControl", .value = 1, .parameters = &.{} },
435 .{ .name = "TessellationEvaluation", .value = 2, .parameters = &.{} },
436 .{ .name = "Geometry", .value = 3, .parameters = &.{} },
437 .{ .name = "Fragment", .value = 4, .parameters = &.{} },
438 .{ .name = "GLCompute", .value = 5, .parameters = &.{} },
439 .{ .name = "Kernel", .value = 6, .parameters = &.{} },
440 .{ .name = "TaskNV", .value = 5267, .parameters = &.{} },
441 .{ .name = "MeshNV", .value = 5268, .parameters = &.{} },
442 .{ .name = "RayGenerationKHR", .value = 5313, .parameters = &.{} },
443 .{ .name = "IntersectionKHR", .value = 5314, .parameters = &.{} },
444 .{ .name = "AnyHitKHR", .value = 5315, .parameters = &.{} },
445 .{ .name = "ClosestHitKHR", .value = 5316, .parameters = &.{} },
446 .{ .name = "MissKHR", .value = 5317, .parameters = &.{} },
447 .{ .name = "CallableKHR", .value = 5318, .parameters = &.{} },
448 .{ .name = "TaskEXT", .value = 5364, .parameters = &.{} },
449 .{ .name = "MeshEXT", .value = 5365, .parameters = &.{} },
388450 },
389 .KernelProfilingInfo => &[_]Enumerant{
390 .{ .name = "CmdExecTime", .value = 0x0001, .parameters = &[_]OperandKind{} },
451 .addressing_model => &.{
452 .{ .name = "Logical", .value = 0, .parameters = &.{} },
453 .{ .name = "Physical32", .value = 1, .parameters = &.{} },
454 .{ .name = "Physical64", .value = 2, .parameters = &.{} },
455 .{ .name = "PhysicalStorageBuffer64", .value = 5348, .parameters = &.{} },
391456 },
392 .RayFlags => &[_]Enumerant{
393 .{ .name = "NoneKHR", .value = 0x0000, .parameters = &[_]OperandKind{} },
394 .{ .name = "OpaqueKHR", .value = 0x0001, .parameters = &[_]OperandKind{} },
395 .{ .name = "NoOpaqueKHR", .value = 0x0002, .parameters = &[_]OperandKind{} },
396 .{ .name = "TerminateOnFirstHitKHR", .value = 0x0004, .parameters = &[_]OperandKind{} },
397 .{ .name = "SkipClosestHitShaderKHR", .value = 0x0008, .parameters = &[_]OperandKind{} },
398 .{ .name = "CullBackFacingTrianglesKHR", .value = 0x0010, .parameters = &[_]OperandKind{} },
399 .{ .name = "CullFrontFacingTrianglesKHR", .value = 0x0020, .parameters = &[_]OperandKind{} },
400 .{ .name = "CullOpaqueKHR", .value = 0x0040, .parameters = &[_]OperandKind{} },
401 .{ .name = "CullNoOpaqueKHR", .value = 0x0080, .parameters = &[_]OperandKind{} },
402 .{ .name = "SkipTrianglesKHR", .value = 0x0100, .parameters = &[_]OperandKind{} },
403 .{ .name = "SkipAABBsKHR", .value = 0x0200, .parameters = &[_]OperandKind{} },
404 .{ .name = "ForceOpacityMicromap2StateEXT", .value = 0x0400, .parameters = &[_]OperandKind{} },
457 .memory_model => &.{
458 .{ .name = "Simple", .value = 0, .parameters = &.{} },
459 .{ .name = "GLSL450", .value = 1, .parameters = &.{} },
460 .{ .name = "OpenCL", .value = 2, .parameters = &.{} },
461 .{ .name = "Vulkan", .value = 3, .parameters = &.{} },
405462 },
406 .FragmentShadingRate => &[_]Enumerant{
407 .{ .name = "Vertical2Pixels", .value = 0x0001, .parameters = &[_]OperandKind{} },
408 .{ .name = "Vertical4Pixels", .value = 0x0002, .parameters = &[_]OperandKind{} },
409 .{ .name = "Horizontal2Pixels", .value = 0x0004, .parameters = &[_]OperandKind{} },
410 .{ .name = "Horizontal4Pixels", .value = 0x0008, .parameters = &[_]OperandKind{} },
463 .execution_mode => &.{
464 .{ .name = "Invocations", .value = 0, .parameters = &.{.literal_integer} },
465 .{ .name = "SpacingEqual", .value = 1, .parameters = &.{} },
466 .{ .name = "SpacingFractionalEven", .value = 2, .parameters = &.{} },
467 .{ .name = "SpacingFractionalOdd", .value = 3, .parameters = &.{} },
468 .{ .name = "VertexOrderCw", .value = 4, .parameters = &.{} },
469 .{ .name = "VertexOrderCcw", .value = 5, .parameters = &.{} },
470 .{ .name = "PixelCenterInteger", .value = 6, .parameters = &.{} },
471 .{ .name = "OriginUpperLeft", .value = 7, .parameters = &.{} },
472 .{ .name = "OriginLowerLeft", .value = 8, .parameters = &.{} },
473 .{ .name = "EarlyFragmentTests", .value = 9, .parameters = &.{} },
474 .{ .name = "PointMode", .value = 10, .parameters = &.{} },
475 .{ .name = "Xfb", .value = 11, .parameters = &.{} },
476 .{ .name = "DepthReplacing", .value = 12, .parameters = &.{} },
477 .{ .name = "DepthGreater", .value = 14, .parameters = &.{} },
478 .{ .name = "DepthLess", .value = 15, .parameters = &.{} },
479 .{ .name = "DepthUnchanged", .value = 16, .parameters = &.{} },
480 .{ .name = "LocalSize", .value = 17, .parameters = &.{ .literal_integer, .literal_integer, .literal_integer } },
481 .{ .name = "LocalSizeHint", .value = 18, .parameters = &.{ .literal_integer, .literal_integer, .literal_integer } },
482 .{ .name = "InputPoints", .value = 19, .parameters = &.{} },
483 .{ .name = "InputLines", .value = 20, .parameters = &.{} },
484 .{ .name = "InputLinesAdjacency", .value = 21, .parameters = &.{} },
485 .{ .name = "Triangles", .value = 22, .parameters = &.{} },
486 .{ .name = "InputTrianglesAdjacency", .value = 23, .parameters = &.{} },
487 .{ .name = "Quads", .value = 24, .parameters = &.{} },
488 .{ .name = "Isolines", .value = 25, .parameters = &.{} },
489 .{ .name = "OutputVertices", .value = 26, .parameters = &.{.literal_integer} },
490 .{ .name = "OutputPoints", .value = 27, .parameters = &.{} },
491 .{ .name = "OutputLineStrip", .value = 28, .parameters = &.{} },
492 .{ .name = "OutputTriangleStrip", .value = 29, .parameters = &.{} },
493 .{ .name = "VecTypeHint", .value = 30, .parameters = &.{.literal_integer} },
494 .{ .name = "ContractionOff", .value = 31, .parameters = &.{} },
495 .{ .name = "Initializer", .value = 33, .parameters = &.{} },
496 .{ .name = "Finalizer", .value = 34, .parameters = &.{} },
497 .{ .name = "SubgroupSize", .value = 35, .parameters = &.{.literal_integer} },
498 .{ .name = "SubgroupsPerWorkgroup", .value = 36, .parameters = &.{.literal_integer} },
499 .{ .name = "SubgroupsPerWorkgroupId", .value = 37, .parameters = &.{.id_ref} },
500 .{ .name = "LocalSizeId", .value = 38, .parameters = &.{ .id_ref, .id_ref, .id_ref } },
501 .{ .name = "LocalSizeHintId", .value = 39, .parameters = &.{ .id_ref, .id_ref, .id_ref } },
502 .{ .name = "NonCoherentColorAttachmentReadEXT", .value = 4169, .parameters = &.{} },
503 .{ .name = "NonCoherentDepthAttachmentReadEXT", .value = 4170, .parameters = &.{} },
504 .{ .name = "NonCoherentStencilAttachmentReadEXT", .value = 4171, .parameters = &.{} },
505 .{ .name = "SubgroupUniformControlFlowKHR", .value = 4421, .parameters = &.{} },
506 .{ .name = "PostDepthCoverage", .value = 4446, .parameters = &.{} },
507 .{ .name = "DenormPreserve", .value = 4459, .parameters = &.{.literal_integer} },
508 .{ .name = "DenormFlushToZero", .value = 4460, .parameters = &.{.literal_integer} },
509 .{ .name = "SignedZeroInfNanPreserve", .value = 4461, .parameters = &.{.literal_integer} },
510 .{ .name = "RoundingModeRTE", .value = 4462, .parameters = &.{.literal_integer} },
511 .{ .name = "RoundingModeRTZ", .value = 4463, .parameters = &.{.literal_integer} },
512 .{ .name = "NonCoherentTileAttachmentReadQCOM", .value = 4489, .parameters = &.{} },
513 .{ .name = "TileShadingRateQCOM", .value = 4490, .parameters = &.{ .literal_integer, .literal_integer, .literal_integer } },
514 .{ .name = "EarlyAndLateFragmentTestsAMD", .value = 5017, .parameters = &.{} },
515 .{ .name = "StencilRefReplacingEXT", .value = 5027, .parameters = &.{} },
516 .{ .name = "CoalescingAMDX", .value = 5069, .parameters = &.{} },
517 .{ .name = "IsApiEntryAMDX", .value = 5070, .parameters = &.{.id_ref} },
518 .{ .name = "MaxNodeRecursionAMDX", .value = 5071, .parameters = &.{.id_ref} },
519 .{ .name = "StaticNumWorkgroupsAMDX", .value = 5072, .parameters = &.{ .id_ref, .id_ref, .id_ref } },
520 .{ .name = "ShaderIndexAMDX", .value = 5073, .parameters = &.{.id_ref} },
521 .{ .name = "MaxNumWorkgroupsAMDX", .value = 5077, .parameters = &.{ .id_ref, .id_ref, .id_ref } },
522 .{ .name = "StencilRefUnchangedFrontAMD", .value = 5079, .parameters = &.{} },
523 .{ .name = "StencilRefGreaterFrontAMD", .value = 5080, .parameters = &.{} },
524 .{ .name = "StencilRefLessFrontAMD", .value = 5081, .parameters = &.{} },
525 .{ .name = "StencilRefUnchangedBackAMD", .value = 5082, .parameters = &.{} },
526 .{ .name = "StencilRefGreaterBackAMD", .value = 5083, .parameters = &.{} },
527 .{ .name = "StencilRefLessBackAMD", .value = 5084, .parameters = &.{} },
528 .{ .name = "QuadDerivativesKHR", .value = 5088, .parameters = &.{} },
529 .{ .name = "RequireFullQuadsKHR", .value = 5089, .parameters = &.{} },
530 .{ .name = "SharesInputWithAMDX", .value = 5102, .parameters = &.{ .id_ref, .id_ref } },
531 .{ .name = "OutputLinesEXT", .value = 5269, .parameters = &.{} },
532 .{ .name = "OutputPrimitivesEXT", .value = 5270, .parameters = &.{.literal_integer} },
533 .{ .name = "DerivativeGroupQuadsKHR", .value = 5289, .parameters = &.{} },
534 .{ .name = "DerivativeGroupLinearKHR", .value = 5290, .parameters = &.{} },
535 .{ .name = "OutputTrianglesEXT", .value = 5298, .parameters = &.{} },
536 .{ .name = "PixelInterlockOrderedEXT", .value = 5366, .parameters = &.{} },
537 .{ .name = "PixelInterlockUnorderedEXT", .value = 5367, .parameters = &.{} },
538 .{ .name = "SampleInterlockOrderedEXT", .value = 5368, .parameters = &.{} },
539 .{ .name = "SampleInterlockUnorderedEXT", .value = 5369, .parameters = &.{} },
540 .{ .name = "ShadingRateInterlockOrderedEXT", .value = 5370, .parameters = &.{} },
541 .{ .name = "ShadingRateInterlockUnorderedEXT", .value = 5371, .parameters = &.{} },
542 .{ .name = "SharedLocalMemorySizeINTEL", .value = 5618, .parameters = &.{.literal_integer} },
543 .{ .name = "RoundingModeRTPINTEL", .value = 5620, .parameters = &.{.literal_integer} },
544 .{ .name = "RoundingModeRTNINTEL", .value = 5621, .parameters = &.{.literal_integer} },
545 .{ .name = "FloatingPointModeALTINTEL", .value = 5622, .parameters = &.{.literal_integer} },
546 .{ .name = "FloatingPointModeIEEEINTEL", .value = 5623, .parameters = &.{.literal_integer} },
547 .{ .name = "MaxWorkgroupSizeINTEL", .value = 5893, .parameters = &.{ .literal_integer, .literal_integer, .literal_integer } },
548 .{ .name = "MaxWorkDimINTEL", .value = 5894, .parameters = &.{.literal_integer} },
549 .{ .name = "NoGlobalOffsetINTEL", .value = 5895, .parameters = &.{} },
550 .{ .name = "NumSIMDWorkitemsINTEL", .value = 5896, .parameters = &.{.literal_integer} },
551 .{ .name = "SchedulerTargetFmaxMhzINTEL", .value = 5903, .parameters = &.{.literal_integer} },
552 .{ .name = "MaximallyReconvergesKHR", .value = 6023, .parameters = &.{} },
553 .{ .name = "FPFastMathDefault", .value = 6028, .parameters = &.{ .id_ref, .id_ref } },
554 .{ .name = "StreamingInterfaceINTEL", .value = 6154, .parameters = &.{.literal_integer} },
555 .{ .name = "RegisterMapInterfaceINTEL", .value = 6160, .parameters = &.{.literal_integer} },
556 .{ .name = "NamedBarrierCountINTEL", .value = 6417, .parameters = &.{.literal_integer} },
557 .{ .name = "MaximumRegistersINTEL", .value = 6461, .parameters = &.{.literal_integer} },
558 .{ .name = "MaximumRegistersIdINTEL", .value = 6462, .parameters = &.{.id_ref} },
559 .{ .name = "NamedMaximumRegistersINTEL", .value = 6463, .parameters = &.{.named_maximum_number_of_registers} },
411560 },
412 .RawAccessChainOperands => &[_]Enumerant{
413 .{ .name = "RobustnessPerComponentNV", .value = 0x0001, .parameters = &[_]OperandKind{} },
414 .{ .name = "RobustnessPerElementNV", .value = 0x0002, .parameters = &[_]OperandKind{} },
561 .storage_class => &.{
562 .{ .name = "UniformConstant", .value = 0, .parameters = &.{} },
563 .{ .name = "Input", .value = 1, .parameters = &.{} },
564 .{ .name = "Uniform", .value = 2, .parameters = &.{} },
565 .{ .name = "Output", .value = 3, .parameters = &.{} },
566 .{ .name = "Workgroup", .value = 4, .parameters = &.{} },
567 .{ .name = "CrossWorkgroup", .value = 5, .parameters = &.{} },
568 .{ .name = "Private", .value = 6, .parameters = &.{} },
569 .{ .name = "Function", .value = 7, .parameters = &.{} },
570 .{ .name = "Generic", .value = 8, .parameters = &.{} },
571 .{ .name = "PushConstant", .value = 9, .parameters = &.{} },
572 .{ .name = "AtomicCounter", .value = 10, .parameters = &.{} },
573 .{ .name = "Image", .value = 11, .parameters = &.{} },
574 .{ .name = "StorageBuffer", .value = 12, .parameters = &.{} },
575 .{ .name = "TileImageEXT", .value = 4172, .parameters = &.{} },
576 .{ .name = "TileAttachmentQCOM", .value = 4491, .parameters = &.{} },
577 .{ .name = "NodePayloadAMDX", .value = 5068, .parameters = &.{} },
578 .{ .name = "CallableDataKHR", .value = 5328, .parameters = &.{} },
579 .{ .name = "IncomingCallableDataKHR", .value = 5329, .parameters = &.{} },
580 .{ .name = "RayPayloadKHR", .value = 5338, .parameters = &.{} },
581 .{ .name = "HitAttributeKHR", .value = 5339, .parameters = &.{} },
582 .{ .name = "IncomingRayPayloadKHR", .value = 5342, .parameters = &.{} },
583 .{ .name = "ShaderRecordBufferKHR", .value = 5343, .parameters = &.{} },
584 .{ .name = "PhysicalStorageBuffer", .value = 5349, .parameters = &.{} },
585 .{ .name = "HitObjectAttributeNV", .value = 5385, .parameters = &.{} },
586 .{ .name = "TaskPayloadWorkgroupEXT", .value = 5402, .parameters = &.{} },
587 .{ .name = "CodeSectionINTEL", .value = 5605, .parameters = &.{} },
588 .{ .name = "DeviceOnlyINTEL", .value = 5936, .parameters = &.{} },
589 .{ .name = "HostOnlyINTEL", .value = 5937, .parameters = &.{} },
415590 },
416 .SourceLanguage => &[_]Enumerant{
417 .{ .name = "Unknown", .value = 0, .parameters = &[_]OperandKind{} },
418 .{ .name = "ESSL", .value = 1, .parameters = &[_]OperandKind{} },
419 .{ .name = "GLSL", .value = 2, .parameters = &[_]OperandKind{} },
420 .{ .name = "OpenCL_C", .value = 3, .parameters = &[_]OperandKind{} },
421 .{ .name = "OpenCL_CPP", .value = 4, .parameters = &[_]OperandKind{} },
422 .{ .name = "HLSL", .value = 5, .parameters = &[_]OperandKind{} },
423 .{ .name = "CPP_for_OpenCL", .value = 6, .parameters = &[_]OperandKind{} },
424 .{ .name = "SYCL", .value = 7, .parameters = &[_]OperandKind{} },
425 .{ .name = "HERO_C", .value = 8, .parameters = &[_]OperandKind{} },
426 .{ .name = "NZSL", .value = 9, .parameters = &[_]OperandKind{} },
427 .{ .name = "WGSL", .value = 10, .parameters = &[_]OperandKind{} },
428 .{ .name = "Slang", .value = 11, .parameters = &[_]OperandKind{} },
429 .{ .name = "Zig", .value = 12, .parameters = &[_]OperandKind{} },
591 .dim => &.{
592 .{ .name = "1D", .value = 0, .parameters = &.{} },
593 .{ .name = "2D", .value = 1, .parameters = &.{} },
594 .{ .name = "3D", .value = 2, .parameters = &.{} },
595 .{ .name = "Cube", .value = 3, .parameters = &.{} },
596 .{ .name = "Rect", .value = 4, .parameters = &.{} },
597 .{ .name = "Buffer", .value = 5, .parameters = &.{} },
598 .{ .name = "SubpassData", .value = 6, .parameters = &.{} },
599 .{ .name = "TileImageDataEXT", .value = 4173, .parameters = &.{} },
430600 },
431 .ExecutionModel => &[_]Enumerant{
432 .{ .name = "Vertex", .value = 0, .parameters = &[_]OperandKind{} },
433 .{ .name = "TessellationControl", .value = 1, .parameters = &[_]OperandKind{} },
434 .{ .name = "TessellationEvaluation", .value = 2, .parameters = &[_]OperandKind{} },
435 .{ .name = "Geometry", .value = 3, .parameters = &[_]OperandKind{} },
436 .{ .name = "Fragment", .value = 4, .parameters = &[_]OperandKind{} },
437 .{ .name = "GLCompute", .value = 5, .parameters = &[_]OperandKind{} },
438 .{ .name = "Kernel", .value = 6, .parameters = &[_]OperandKind{} },
439 .{ .name = "TaskNV", .value = 5267, .parameters = &[_]OperandKind{} },
440 .{ .name = "MeshNV", .value = 5268, .parameters = &[_]OperandKind{} },
441 .{ .name = "RayGenerationNV", .value = 5313, .parameters = &[_]OperandKind{} },
442 .{ .name = "RayGenerationKHR", .value = 5313, .parameters = &[_]OperandKind{} },
443 .{ .name = "IntersectionNV", .value = 5314, .parameters = &[_]OperandKind{} },
444 .{ .name = "IntersectionKHR", .value = 5314, .parameters = &[_]OperandKind{} },
445 .{ .name = "AnyHitNV", .value = 5315, .parameters = &[_]OperandKind{} },
446 .{ .name = "AnyHitKHR", .value = 5315, .parameters = &[_]OperandKind{} },
447 .{ .name = "ClosestHitNV", .value = 5316, .parameters = &[_]OperandKind{} },
448 .{ .name = "ClosestHitKHR", .value = 5316, .parameters = &[_]OperandKind{} },
449 .{ .name = "MissNV", .value = 5317, .parameters = &[_]OperandKind{} },
450 .{ .name = "MissKHR", .value = 5317, .parameters = &[_]OperandKind{} },
451 .{ .name = "CallableNV", .value = 5318, .parameters = &[_]OperandKind{} },
452 .{ .name = "CallableKHR", .value = 5318, .parameters = &[_]OperandKind{} },
453 .{ .name = "TaskEXT", .value = 5364, .parameters = &[_]OperandKind{} },
454 .{ .name = "MeshEXT", .value = 5365, .parameters = &[_]OperandKind{} },
601 .sampler_addressing_mode => &.{
602 .{ .name = "None", .value = 0, .parameters = &.{} },
603 .{ .name = "ClampToEdge", .value = 1, .parameters = &.{} },
604 .{ .name = "Clamp", .value = 2, .parameters = &.{} },
605 .{ .name = "Repeat", .value = 3, .parameters = &.{} },
606 .{ .name = "RepeatMirrored", .value = 4, .parameters = &.{} },
455607 },
456 .AddressingModel => &[_]Enumerant{
457 .{ .name = "Logical", .value = 0, .parameters = &[_]OperandKind{} },
458 .{ .name = "Physical32", .value = 1, .parameters = &[_]OperandKind{} },
459 .{ .name = "Physical64", .value = 2, .parameters = &[_]OperandKind{} },
460 .{ .name = "PhysicalStorageBuffer64", .value = 5348, .parameters = &[_]OperandKind{} },
461 .{ .name = "PhysicalStorageBuffer64EXT", .value = 5348, .parameters = &[_]OperandKind{} },
608 .sampler_filter_mode => &.{
609 .{ .name = "Nearest", .value = 0, .parameters = &.{} },
610 .{ .name = "Linear", .value = 1, .parameters = &.{} },
462611 },
463 .MemoryModel => &[_]Enumerant{
464 .{ .name = "Simple", .value = 0, .parameters = &[_]OperandKind{} },
465 .{ .name = "GLSL450", .value = 1, .parameters = &[_]OperandKind{} },
466 .{ .name = "OpenCL", .value = 2, .parameters = &[_]OperandKind{} },
467 .{ .name = "Vulkan", .value = 3, .parameters = &[_]OperandKind{} },
468 .{ .name = "VulkanKHR", .value = 3, .parameters = &[_]OperandKind{} },
612 .image_format => &.{
613 .{ .name = "Unknown", .value = 0, .parameters = &.{} },
614 .{ .name = "Rgba32f", .value = 1, .parameters = &.{} },
615 .{ .name = "Rgba16f", .value = 2, .parameters = &.{} },
616 .{ .name = "R32f", .value = 3, .parameters = &.{} },
617 .{ .name = "Rgba8", .value = 4, .parameters = &.{} },
618 .{ .name = "Rgba8Snorm", .value = 5, .parameters = &.{} },
619 .{ .name = "Rg32f", .value = 6, .parameters = &.{} },
620 .{ .name = "Rg16f", .value = 7, .parameters = &.{} },
621 .{ .name = "R11fG11fB10f", .value = 8, .parameters = &.{} },
622 .{ .name = "R16f", .value = 9, .parameters = &.{} },
623 .{ .name = "Rgba16", .value = 10, .parameters = &.{} },
624 .{ .name = "Rgb10A2", .value = 11, .parameters = &.{} },
625 .{ .name = "Rg16", .value = 12, .parameters = &.{} },
626 .{ .name = "Rg8", .value = 13, .parameters = &.{} },
627 .{ .name = "R16", .value = 14, .parameters = &.{} },
628 .{ .name = "R8", .value = 15, .parameters = &.{} },
629 .{ .name = "Rgba16Snorm", .value = 16, .parameters = &.{} },
630 .{ .name = "Rg16Snorm", .value = 17, .parameters = &.{} },
631 .{ .name = "Rg8Snorm", .value = 18, .parameters = &.{} },
632 .{ .name = "R16Snorm", .value = 19, .parameters = &.{} },
633 .{ .name = "R8Snorm", .value = 20, .parameters = &.{} },
634 .{ .name = "Rgba32i", .value = 21, .parameters = &.{} },
635 .{ .name = "Rgba16i", .value = 22, .parameters = &.{} },
636 .{ .name = "Rgba8i", .value = 23, .parameters = &.{} },
637 .{ .name = "R32i", .value = 24, .parameters = &.{} },
638 .{ .name = "Rg32i", .value = 25, .parameters = &.{} },
639 .{ .name = "Rg16i", .value = 26, .parameters = &.{} },
640 .{ .name = "Rg8i", .value = 27, .parameters = &.{} },
641 .{ .name = "R16i", .value = 28, .parameters = &.{} },
642 .{ .name = "R8i", .value = 29, .parameters = &.{} },
643 .{ .name = "Rgba32ui", .value = 30, .parameters = &.{} },
644 .{ .name = "Rgba16ui", .value = 31, .parameters = &.{} },
645 .{ .name = "Rgba8ui", .value = 32, .parameters = &.{} },
646 .{ .name = "R32ui", .value = 33, .parameters = &.{} },
647 .{ .name = "Rgb10a2ui", .value = 34, .parameters = &.{} },
648 .{ .name = "Rg32ui", .value = 35, .parameters = &.{} },
649 .{ .name = "Rg16ui", .value = 36, .parameters = &.{} },
650 .{ .name = "Rg8ui", .value = 37, .parameters = &.{} },
651 .{ .name = "R16ui", .value = 38, .parameters = &.{} },
652 .{ .name = "R8ui", .value = 39, .parameters = &.{} },
653 .{ .name = "R64ui", .value = 40, .parameters = &.{} },
654 .{ .name = "R64i", .value = 41, .parameters = &.{} },
469655 },
470 .ExecutionMode => &[_]Enumerant{
471 .{ .name = "Invocations", .value = 0, .parameters = &[_]OperandKind{.LiteralInteger} },
472 .{ .name = "SpacingEqual", .value = 1, .parameters = &[_]OperandKind{} },
473 .{ .name = "SpacingFractionalEven", .value = 2, .parameters = &[_]OperandKind{} },
474 .{ .name = "SpacingFractionalOdd", .value = 3, .parameters = &[_]OperandKind{} },
475 .{ .name = "VertexOrderCw", .value = 4, .parameters = &[_]OperandKind{} },
476 .{ .name = "VertexOrderCcw", .value = 5, .parameters = &[_]OperandKind{} },
477 .{ .name = "PixelCenterInteger", .value = 6, .parameters = &[_]OperandKind{} },
478 .{ .name = "OriginUpperLeft", .value = 7, .parameters = &[_]OperandKind{} },
479 .{ .name = "OriginLowerLeft", .value = 8, .parameters = &[_]OperandKind{} },
480 .{ .name = "EarlyFragmentTests", .value = 9, .parameters = &[_]OperandKind{} },
481 .{ .name = "PointMode", .value = 10, .parameters = &[_]OperandKind{} },
482 .{ .name = "Xfb", .value = 11, .parameters = &[_]OperandKind{} },
483 .{ .name = "DepthReplacing", .value = 12, .parameters = &[_]OperandKind{} },
484 .{ .name = "DepthGreater", .value = 14, .parameters = &[_]OperandKind{} },
485 .{ .name = "DepthLess", .value = 15, .parameters = &[_]OperandKind{} },
486 .{ .name = "DepthUnchanged", .value = 16, .parameters = &[_]OperandKind{} },
487 .{ .name = "LocalSize", .value = 17, .parameters = &[_]OperandKind{ .LiteralInteger, .LiteralInteger, .LiteralInteger } },
488 .{ .name = "LocalSizeHint", .value = 18, .parameters = &[_]OperandKind{ .LiteralInteger, .LiteralInteger, .LiteralInteger } },
489 .{ .name = "InputPoints", .value = 19, .parameters = &[_]OperandKind{} },
490 .{ .name = "InputLines", .value = 20, .parameters = &[_]OperandKind{} },
491 .{ .name = "InputLinesAdjacency", .value = 21, .parameters = &[_]OperandKind{} },
492 .{ .name = "Triangles", .value = 22, .parameters = &[_]OperandKind{} },
493 .{ .name = "InputTrianglesAdjacency", .value = 23, .parameters = &[_]OperandKind{} },
494 .{ .name = "Quads", .value = 24, .parameters = &[_]OperandKind{} },
495 .{ .name = "Isolines", .value = 25, .parameters = &[_]OperandKind{} },
496 .{ .name = "OutputVertices", .value = 26, .parameters = &[_]OperandKind{.LiteralInteger} },
497 .{ .name = "OutputPoints", .value = 27, .parameters = &[_]OperandKind{} },
498 .{ .name = "OutputLineStrip", .value = 28, .parameters = &[_]OperandKind{} },
499 .{ .name = "OutputTriangleStrip", .value = 29, .parameters = &[_]OperandKind{} },
500 .{ .name = "VecTypeHint", .value = 30, .parameters = &[_]OperandKind{.LiteralInteger} },
501 .{ .name = "ContractionOff", .value = 31, .parameters = &[_]OperandKind{} },
502 .{ .name = "Initializer", .value = 33, .parameters = &[_]OperandKind{} },
503 .{ .name = "Finalizer", .value = 34, .parameters = &[_]OperandKind{} },
504 .{ .name = "SubgroupSize", .value = 35, .parameters = &[_]OperandKind{.LiteralInteger} },
505 .{ .name = "SubgroupsPerWorkgroup", .value = 36, .parameters = &[_]OperandKind{.LiteralInteger} },
506 .{ .name = "SubgroupsPerWorkgroupId", .value = 37, .parameters = &[_]OperandKind{.IdRef} },
507 .{ .name = "LocalSizeId", .value = 38, .parameters = &[_]OperandKind{ .IdRef, .IdRef, .IdRef } },
508 .{ .name = "LocalSizeHintId", .value = 39, .parameters = &[_]OperandKind{ .IdRef, .IdRef, .IdRef } },
509 .{ .name = "NonCoherentColorAttachmentReadEXT", .value = 4169, .parameters = &[_]OperandKind{} },
510 .{ .name = "NonCoherentDepthAttachmentReadEXT", .value = 4170, .parameters = &[_]OperandKind{} },
511 .{ .name = "NonCoherentStencilAttachmentReadEXT", .value = 4171, .parameters = &[_]OperandKind{} },
512 .{ .name = "SubgroupUniformControlFlowKHR", .value = 4421, .parameters = &[_]OperandKind{} },
513 .{ .name = "PostDepthCoverage", .value = 4446, .parameters = &[_]OperandKind{} },
514 .{ .name = "DenormPreserve", .value = 4459, .parameters = &[_]OperandKind{.LiteralInteger} },
515 .{ .name = "DenormFlushToZero", .value = 4460, .parameters = &[_]OperandKind{.LiteralInteger} },
516 .{ .name = "SignedZeroInfNanPreserve", .value = 4461, .parameters = &[_]OperandKind{.LiteralInteger} },
517 .{ .name = "RoundingModeRTE", .value = 4462, .parameters = &[_]OperandKind{.LiteralInteger} },
518 .{ .name = "RoundingModeRTZ", .value = 4463, .parameters = &[_]OperandKind{.LiteralInteger} },
519 .{ .name = "EarlyAndLateFragmentTestsAMD", .value = 5017, .parameters = &[_]OperandKind{} },
520 .{ .name = "StencilRefReplacingEXT", .value = 5027, .parameters = &[_]OperandKind{} },
521 .{ .name = "CoalescingAMDX", .value = 5069, .parameters = &[_]OperandKind{} },
522 .{ .name = "MaxNodeRecursionAMDX", .value = 5071, .parameters = &[_]OperandKind{.IdRef} },
523 .{ .name = "StaticNumWorkgroupsAMDX", .value = 5072, .parameters = &[_]OperandKind{ .IdRef, .IdRef, .IdRef } },
524 .{ .name = "ShaderIndexAMDX", .value = 5073, .parameters = &[_]OperandKind{.IdRef} },
525 .{ .name = "MaxNumWorkgroupsAMDX", .value = 5077, .parameters = &[_]OperandKind{ .IdRef, .IdRef, .IdRef } },
526 .{ .name = "StencilRefUnchangedFrontAMD", .value = 5079, .parameters = &[_]OperandKind{} },
527 .{ .name = "StencilRefGreaterFrontAMD", .value = 5080, .parameters = &[_]OperandKind{} },
528 .{ .name = "StencilRefLessFrontAMD", .value = 5081, .parameters = &[_]OperandKind{} },
529 .{ .name = "StencilRefUnchangedBackAMD", .value = 5082, .parameters = &[_]OperandKind{} },
530 .{ .name = "StencilRefGreaterBackAMD", .value = 5083, .parameters = &[_]OperandKind{} },
531 .{ .name = "StencilRefLessBackAMD", .value = 5084, .parameters = &[_]OperandKind{} },
532 .{ .name = "QuadDerivativesKHR", .value = 5088, .parameters = &[_]OperandKind{} },
533 .{ .name = "RequireFullQuadsKHR", .value = 5089, .parameters = &[_]OperandKind{} },
534 .{ .name = "OutputLinesNV", .value = 5269, .parameters = &[_]OperandKind{} },
535 .{ .name = "OutputLinesEXT", .value = 5269, .parameters = &[_]OperandKind{} },
536 .{ .name = "OutputPrimitivesNV", .value = 5270, .parameters = &[_]OperandKind{.LiteralInteger} },
537 .{ .name = "OutputPrimitivesEXT", .value = 5270, .parameters = &[_]OperandKind{.LiteralInteger} },
538 .{ .name = "DerivativeGroupQuadsNV", .value = 5289, .parameters = &[_]OperandKind{} },
539 .{ .name = "DerivativeGroupLinearNV", .value = 5290, .parameters = &[_]OperandKind{} },
540 .{ .name = "OutputTrianglesNV", .value = 5298, .parameters = &[_]OperandKind{} },
541 .{ .name = "OutputTrianglesEXT", .value = 5298, .parameters = &[_]OperandKind{} },
542 .{ .name = "PixelInterlockOrderedEXT", .value = 5366, .parameters = &[_]OperandKind{} },
543 .{ .name = "PixelInterlockUnorderedEXT", .value = 5367, .parameters = &[_]OperandKind{} },
544 .{ .name = "SampleInterlockOrderedEXT", .value = 5368, .parameters = &[_]OperandKind{} },
545 .{ .name = "SampleInterlockUnorderedEXT", .value = 5369, .parameters = &[_]OperandKind{} },
546 .{ .name = "ShadingRateInterlockOrderedEXT", .value = 5370, .parameters = &[_]OperandKind{} },
547 .{ .name = "ShadingRateInterlockUnorderedEXT", .value = 5371, .parameters = &[_]OperandKind{} },
548 .{ .name = "SharedLocalMemorySizeINTEL", .value = 5618, .parameters = &[_]OperandKind{.LiteralInteger} },
549 .{ .name = "RoundingModeRTPINTEL", .value = 5620, .parameters = &[_]OperandKind{.LiteralInteger} },
550 .{ .name = "RoundingModeRTNINTEL", .value = 5621, .parameters = &[_]OperandKind{.LiteralInteger} },
551 .{ .name = "FloatingPointModeALTINTEL", .value = 5622, .parameters = &[_]OperandKind{.LiteralInteger} },
552 .{ .name = "FloatingPointModeIEEEINTEL", .value = 5623, .parameters = &[_]OperandKind{.LiteralInteger} },
553 .{ .name = "MaxWorkgroupSizeINTEL", .value = 5893, .parameters = &[_]OperandKind{ .LiteralInteger, .LiteralInteger, .LiteralInteger } },
554 .{ .name = "MaxWorkDimINTEL", .value = 5894, .parameters = &[_]OperandKind{.LiteralInteger} },
555 .{ .name = "NoGlobalOffsetINTEL", .value = 5895, .parameters = &[_]OperandKind{} },
556 .{ .name = "NumSIMDWorkitemsINTEL", .value = 5896, .parameters = &[_]OperandKind{.LiteralInteger} },
557 .{ .name = "SchedulerTargetFmaxMhzINTEL", .value = 5903, .parameters = &[_]OperandKind{.LiteralInteger} },
558 .{ .name = "MaximallyReconvergesKHR", .value = 6023, .parameters = &[_]OperandKind{} },
559 .{ .name = "FPFastMathDefault", .value = 6028, .parameters = &[_]OperandKind{ .IdRef, .IdRef } },
560 .{ .name = "StreamingInterfaceINTEL", .value = 6154, .parameters = &[_]OperandKind{.LiteralInteger} },
561 .{ .name = "RegisterMapInterfaceINTEL", .value = 6160, .parameters = &[_]OperandKind{.LiteralInteger} },
562 .{ .name = "NamedBarrierCountINTEL", .value = 6417, .parameters = &[_]OperandKind{.LiteralInteger} },
563 .{ .name = "MaximumRegistersINTEL", .value = 6461, .parameters = &[_]OperandKind{.LiteralInteger} },
564 .{ .name = "MaximumRegistersIdINTEL", .value = 6462, .parameters = &[_]OperandKind{.IdRef} },
565 .{ .name = "NamedMaximumRegistersINTEL", .value = 6463, .parameters = &[_]OperandKind{.NamedMaximumNumberOfRegisters} },
656 .image_channel_order => &.{
657 .{ .name = "R", .value = 0, .parameters = &.{} },
658 .{ .name = "A", .value = 1, .parameters = &.{} },
659 .{ .name = "RG", .value = 2, .parameters = &.{} },
660 .{ .name = "RA", .value = 3, .parameters = &.{} },
661 .{ .name = "RGB", .value = 4, .parameters = &.{} },
662 .{ .name = "RGBA", .value = 5, .parameters = &.{} },
663 .{ .name = "BGRA", .value = 6, .parameters = &.{} },
664 .{ .name = "ARGB", .value = 7, .parameters = &.{} },
665 .{ .name = "Intensity", .value = 8, .parameters = &.{} },
666 .{ .name = "Luminance", .value = 9, .parameters = &.{} },
667 .{ .name = "Rx", .value = 10, .parameters = &.{} },
668 .{ .name = "RGx", .value = 11, .parameters = &.{} },
669 .{ .name = "RGBx", .value = 12, .parameters = &.{} },
670 .{ .name = "Depth", .value = 13, .parameters = &.{} },
671 .{ .name = "DepthStencil", .value = 14, .parameters = &.{} },
672 .{ .name = "sRGB", .value = 15, .parameters = &.{} },
673 .{ .name = "sRGBx", .value = 16, .parameters = &.{} },
674 .{ .name = "sRGBA", .value = 17, .parameters = &.{} },
675 .{ .name = "sBGRA", .value = 18, .parameters = &.{} },
676 .{ .name = "ABGR", .value = 19, .parameters = &.{} },
566677 },
567 .StorageClass => &[_]Enumerant{
568 .{ .name = "UniformConstant", .value = 0, .parameters = &[_]OperandKind{} },
569 .{ .name = "Input", .value = 1, .parameters = &[_]OperandKind{} },
570 .{ .name = "Uniform", .value = 2, .parameters = &[_]OperandKind{} },
571 .{ .name = "Output", .value = 3, .parameters = &[_]OperandKind{} },
572 .{ .name = "Workgroup", .value = 4, .parameters = &[_]OperandKind{} },
573 .{ .name = "CrossWorkgroup", .value = 5, .parameters = &[_]OperandKind{} },
574 .{ .name = "Private", .value = 6, .parameters = &[_]OperandKind{} },
575 .{ .name = "Function", .value = 7, .parameters = &[_]OperandKind{} },
576 .{ .name = "Generic", .value = 8, .parameters = &[_]OperandKind{} },
577 .{ .name = "PushConstant", .value = 9, .parameters = &[_]OperandKind{} },
578 .{ .name = "AtomicCounter", .value = 10, .parameters = &[_]OperandKind{} },
579 .{ .name = "Image", .value = 11, .parameters = &[_]OperandKind{} },
580 .{ .name = "StorageBuffer", .value = 12, .parameters = &[_]OperandKind{} },
581 .{ .name = "TileImageEXT", .value = 4172, .parameters = &[_]OperandKind{} },
582 .{ .name = "NodePayloadAMDX", .value = 5068, .parameters = &[_]OperandKind{} },
583 .{ .name = "NodeOutputPayloadAMDX", .value = 5076, .parameters = &[_]OperandKind{} },
584 .{ .name = "CallableDataNV", .value = 5328, .parameters = &[_]OperandKind{} },
585 .{ .name = "CallableDataKHR", .value = 5328, .parameters = &[_]OperandKind{} },
586 .{ .name = "IncomingCallableDataNV", .value = 5329, .parameters = &[_]OperandKind{} },
587 .{ .name = "IncomingCallableDataKHR", .value = 5329, .parameters = &[_]OperandKind{} },
588 .{ .name = "RayPayloadNV", .value = 5338, .parameters = &[_]OperandKind{} },
589 .{ .name = "RayPayloadKHR", .value = 5338, .parameters = &[_]OperandKind{} },
590 .{ .name = "HitAttributeNV", .value = 5339, .parameters = &[_]OperandKind{} },
591 .{ .name = "HitAttributeKHR", .value = 5339, .parameters = &[_]OperandKind{} },
592 .{ .name = "IncomingRayPayloadNV", .value = 5342, .parameters = &[_]OperandKind{} },
593 .{ .name = "IncomingRayPayloadKHR", .value = 5342, .parameters = &[_]OperandKind{} },
594 .{ .name = "ShaderRecordBufferNV", .value = 5343, .parameters = &[_]OperandKind{} },
595 .{ .name = "ShaderRecordBufferKHR", .value = 5343, .parameters = &[_]OperandKind{} },
596 .{ .name = "PhysicalStorageBuffer", .value = 5349, .parameters = &[_]OperandKind{} },
597 .{ .name = "PhysicalStorageBufferEXT", .value = 5349, .parameters = &[_]OperandKind{} },
598 .{ .name = "HitObjectAttributeNV", .value = 5385, .parameters = &[_]OperandKind{} },
599 .{ .name = "TaskPayloadWorkgroupEXT", .value = 5402, .parameters = &[_]OperandKind{} },
600 .{ .name = "CodeSectionINTEL", .value = 5605, .parameters = &[_]OperandKind{} },
601 .{ .name = "DeviceOnlyINTEL", .value = 5936, .parameters = &[_]OperandKind{} },
602 .{ .name = "HostOnlyINTEL", .value = 5937, .parameters = &[_]OperandKind{} },
678 .image_channel_data_type => &.{
679 .{ .name = "SnormInt8", .value = 0, .parameters = &.{} },
680 .{ .name = "SnormInt16", .value = 1, .parameters = &.{} },
681 .{ .name = "UnormInt8", .value = 2, .parameters = &.{} },
682 .{ .name = "UnormInt16", .value = 3, .parameters = &.{} },
683 .{ .name = "UnormShort565", .value = 4, .parameters = &.{} },
684 .{ .name = "UnormShort555", .value = 5, .parameters = &.{} },
685 .{ .name = "UnormInt101010", .value = 6, .parameters = &.{} },
686 .{ .name = "SignedInt8", .value = 7, .parameters = &.{} },
687 .{ .name = "SignedInt16", .value = 8, .parameters = &.{} },
688 .{ .name = "SignedInt32", .value = 9, .parameters = &.{} },
689 .{ .name = "UnsignedInt8", .value = 10, .parameters = &.{} },
690 .{ .name = "UnsignedInt16", .value = 11, .parameters = &.{} },
691 .{ .name = "UnsignedInt32", .value = 12, .parameters = &.{} },
692 .{ .name = "HalfFloat", .value = 13, .parameters = &.{} },
693 .{ .name = "Float", .value = 14, .parameters = &.{} },
694 .{ .name = "UnormInt24", .value = 15, .parameters = &.{} },
695 .{ .name = "UnormInt101010_2", .value = 16, .parameters = &.{} },
696 .{ .name = "UnormInt10X6EXT", .value = 17, .parameters = &.{} },
697 .{ .name = "UnsignedIntRaw10EXT", .value = 19, .parameters = &.{} },
698 .{ .name = "UnsignedIntRaw12EXT", .value = 20, .parameters = &.{} },
699 .{ .name = "UnormInt2_101010EXT", .value = 21, .parameters = &.{} },
700 .{ .name = "UnsignedInt10X6EXT", .value = 22, .parameters = &.{} },
701 .{ .name = "UnsignedInt12X4EXT", .value = 23, .parameters = &.{} },
702 .{ .name = "UnsignedInt14X2EXT", .value = 24, .parameters = &.{} },
703 .{ .name = "UnormInt12X4EXT", .value = 25, .parameters = &.{} },
704 .{ .name = "UnormInt14X2EXT", .value = 26, .parameters = &.{} },
603705 },
604 .Dim => &[_]Enumerant{
605 .{ .name = "1D", .value = 0, .parameters = &[_]OperandKind{} },
606 .{ .name = "2D", .value = 1, .parameters = &[_]OperandKind{} },
607 .{ .name = "3D", .value = 2, .parameters = &[_]OperandKind{} },
608 .{ .name = "Cube", .value = 3, .parameters = &[_]OperandKind{} },
609 .{ .name = "Rect", .value = 4, .parameters = &[_]OperandKind{} },
610 .{ .name = "Buffer", .value = 5, .parameters = &[_]OperandKind{} },
611 .{ .name = "SubpassData", .value = 6, .parameters = &[_]OperandKind{} },
612 .{ .name = "TileImageDataEXT", .value = 4173, .parameters = &[_]OperandKind{} },
706 .fp_rounding_mode => &.{
707 .{ .name = "RTE", .value = 0, .parameters = &.{} },
708 .{ .name = "RTZ", .value = 1, .parameters = &.{} },
709 .{ .name = "RTP", .value = 2, .parameters = &.{} },
710 .{ .name = "RTN", .value = 3, .parameters = &.{} },
613711 },
614 .SamplerAddressingMode => &[_]Enumerant{
615 .{ .name = "None", .value = 0, .parameters = &[_]OperandKind{} },
616 .{ .name = "ClampToEdge", .value = 1, .parameters = &[_]OperandKind{} },
617 .{ .name = "Clamp", .value = 2, .parameters = &[_]OperandKind{} },
618 .{ .name = "Repeat", .value = 3, .parameters = &[_]OperandKind{} },
619 .{ .name = "RepeatMirrored", .value = 4, .parameters = &[_]OperandKind{} },
712 .fp_denorm_mode => &.{
713 .{ .name = "Preserve", .value = 0, .parameters = &.{} },
714 .{ .name = "FlushToZero", .value = 1, .parameters = &.{} },
620715 },
621 .SamplerFilterMode => &[_]Enumerant{
622 .{ .name = "Nearest", .value = 0, .parameters = &[_]OperandKind{} },
623 .{ .name = "Linear", .value = 1, .parameters = &[_]OperandKind{} },
716 .quantization_modes => &.{
717 .{ .name = "TRN", .value = 0, .parameters = &.{} },
718 .{ .name = "TRN_ZERO", .value = 1, .parameters = &.{} },
719 .{ .name = "RND", .value = 2, .parameters = &.{} },
720 .{ .name = "RND_ZERO", .value = 3, .parameters = &.{} },
721 .{ .name = "RND_INF", .value = 4, .parameters = &.{} },
722 .{ .name = "RND_MIN_INF", .value = 5, .parameters = &.{} },
723 .{ .name = "RND_CONV", .value = 6, .parameters = &.{} },
724 .{ .name = "RND_CONV_ODD", .value = 7, .parameters = &.{} },
624725 },
625 .ImageFormat => &[_]Enumerant{
626 .{ .name = "Unknown", .value = 0, .parameters = &[_]OperandKind{} },
627 .{ .name = "Rgba32f", .value = 1, .parameters = &[_]OperandKind{} },
628 .{ .name = "Rgba16f", .value = 2, .parameters = &[_]OperandKind{} },
629 .{ .name = "R32f", .value = 3, .parameters = &[_]OperandKind{} },
630 .{ .name = "Rgba8", .value = 4, .parameters = &[_]OperandKind{} },
631 .{ .name = "Rgba8Snorm", .value = 5, .parameters = &[_]OperandKind{} },
632 .{ .name = "Rg32f", .value = 6, .parameters = &[_]OperandKind{} },
633 .{ .name = "Rg16f", .value = 7, .parameters = &[_]OperandKind{} },
634 .{ .name = "R11fG11fB10f", .value = 8, .parameters = &[_]OperandKind{} },
635 .{ .name = "R16f", .value = 9, .parameters = &[_]OperandKind{} },
636 .{ .name = "Rgba16", .value = 10, .parameters = &[_]OperandKind{} },
637 .{ .name = "Rgb10A2", .value = 11, .parameters = &[_]OperandKind{} },
638 .{ .name = "Rg16", .value = 12, .parameters = &[_]OperandKind{} },
639 .{ .name = "Rg8", .value = 13, .parameters = &[_]OperandKind{} },
640 .{ .name = "R16", .value = 14, .parameters = &[_]OperandKind{} },
641 .{ .name = "R8", .value = 15, .parameters = &[_]OperandKind{} },
642 .{ .name = "Rgba16Snorm", .value = 16, .parameters = &[_]OperandKind{} },
643 .{ .name = "Rg16Snorm", .value = 17, .parameters = &[_]OperandKind{} },
644 .{ .name = "Rg8Snorm", .value = 18, .parameters = &[_]OperandKind{} },
645 .{ .name = "R16Snorm", .value = 19, .parameters = &[_]OperandKind{} },
646 .{ .name = "R8Snorm", .value = 20, .parameters = &[_]OperandKind{} },
647 .{ .name = "Rgba32i", .value = 21, .parameters = &[_]OperandKind{} },
648 .{ .name = "Rgba16i", .value = 22, .parameters = &[_]OperandKind{} },
649 .{ .name = "Rgba8i", .value = 23, .parameters = &[_]OperandKind{} },
650 .{ .name = "R32i", .value = 24, .parameters = &[_]OperandKind{} },
651 .{ .name = "Rg32i", .value = 25, .parameters = &[_]OperandKind{} },
652 .{ .name = "Rg16i", .value = 26, .parameters = &[_]OperandKind{} },
653 .{ .name = "Rg8i", .value = 27, .parameters = &[_]OperandKind{} },
654 .{ .name = "R16i", .value = 28, .parameters = &[_]OperandKind{} },
655 .{ .name = "R8i", .value = 29, .parameters = &[_]OperandKind{} },
656 .{ .name = "Rgba32ui", .value = 30, .parameters = &[_]OperandKind{} },
657 .{ .name = "Rgba16ui", .value = 31, .parameters = &[_]OperandKind{} },
658 .{ .name = "Rgba8ui", .value = 32, .parameters = &[_]OperandKind{} },
659 .{ .name = "R32ui", .value = 33, .parameters = &[_]OperandKind{} },
660 .{ .name = "Rgb10a2ui", .value = 34, .parameters = &[_]OperandKind{} },
661 .{ .name = "Rg32ui", .value = 35, .parameters = &[_]OperandKind{} },
662 .{ .name = "Rg16ui", .value = 36, .parameters = &[_]OperandKind{} },
663 .{ .name = "Rg8ui", .value = 37, .parameters = &[_]OperandKind{} },
664 .{ .name = "R16ui", .value = 38, .parameters = &[_]OperandKind{} },
665 .{ .name = "R8ui", .value = 39, .parameters = &[_]OperandKind{} },
666 .{ .name = "R64ui", .value = 40, .parameters = &[_]OperandKind{} },
667 .{ .name = "R64i", .value = 41, .parameters = &[_]OperandKind{} },
726 .fp_operation_mode => &.{
727 .{ .name = "IEEE", .value = 0, .parameters = &.{} },
728 .{ .name = "ALT", .value = 1, .parameters = &.{} },
668729 },
669 .ImageChannelOrder => &[_]Enumerant{
670 .{ .name = "R", .value = 0, .parameters = &[_]OperandKind{} },
671 .{ .name = "A", .value = 1, .parameters = &[_]OperandKind{} },
672 .{ .name = "RG", .value = 2, .parameters = &[_]OperandKind{} },
673 .{ .name = "RA", .value = 3, .parameters = &[_]OperandKind{} },
674 .{ .name = "RGB", .value = 4, .parameters = &[_]OperandKind{} },
675 .{ .name = "RGBA", .value = 5, .parameters = &[_]OperandKind{} },
676 .{ .name = "BGRA", .value = 6, .parameters = &[_]OperandKind{} },
677 .{ .name = "ARGB", .value = 7, .parameters = &[_]OperandKind{} },
678 .{ .name = "Intensity", .value = 8, .parameters = &[_]OperandKind{} },
679 .{ .name = "Luminance", .value = 9, .parameters = &[_]OperandKind{} },
680 .{ .name = "Rx", .value = 10, .parameters = &[_]OperandKind{} },
681 .{ .name = "RGx", .value = 11, .parameters = &[_]OperandKind{} },
682 .{ .name = "RGBx", .value = 12, .parameters = &[_]OperandKind{} },
683 .{ .name = "Depth", .value = 13, .parameters = &[_]OperandKind{} },
684 .{ .name = "DepthStencil", .value = 14, .parameters = &[_]OperandKind{} },
685 .{ .name = "sRGB", .value = 15, .parameters = &[_]OperandKind{} },
686 .{ .name = "sRGBx", .value = 16, .parameters = &[_]OperandKind{} },
687 .{ .name = "sRGBA", .value = 17, .parameters = &[_]OperandKind{} },
688 .{ .name = "sBGRA", .value = 18, .parameters = &[_]OperandKind{} },
689 .{ .name = "ABGR", .value = 19, .parameters = &[_]OperandKind{} },
730 .overflow_modes => &.{
731 .{ .name = "WRAP", .value = 0, .parameters = &.{} },
732 .{ .name = "SAT", .value = 1, .parameters = &.{} },
733 .{ .name = "SAT_ZERO", .value = 2, .parameters = &.{} },
734 .{ .name = "SAT_SYM", .value = 3, .parameters = &.{} },
690735 },
691 .ImageChannelDataType => &[_]Enumerant{
692 .{ .name = "SnormInt8", .value = 0, .parameters = &[_]OperandKind{} },
693 .{ .name = "SnormInt16", .value = 1, .parameters = &[_]OperandKind{} },
694 .{ .name = "UnormInt8", .value = 2, .parameters = &[_]OperandKind{} },
695 .{ .name = "UnormInt16", .value = 3, .parameters = &[_]OperandKind{} },
696 .{ .name = "UnormShort565", .value = 4, .parameters = &[_]OperandKind{} },
697 .{ .name = "UnormShort555", .value = 5, .parameters = &[_]OperandKind{} },
698 .{ .name = "UnormInt101010", .value = 6, .parameters = &[_]OperandKind{} },
699 .{ .name = "SignedInt8", .value = 7, .parameters = &[_]OperandKind{} },
700 .{ .name = "SignedInt16", .value = 8, .parameters = &[_]OperandKind{} },
701 .{ .name = "SignedInt32", .value = 9, .parameters = &[_]OperandKind{} },
702 .{ .name = "UnsignedInt8", .value = 10, .parameters = &[_]OperandKind{} },
703 .{ .name = "UnsignedInt16", .value = 11, .parameters = &[_]OperandKind{} },
704 .{ .name = "UnsignedInt32", .value = 12, .parameters = &[_]OperandKind{} },
705 .{ .name = "HalfFloat", .value = 13, .parameters = &[_]OperandKind{} },
706 .{ .name = "Float", .value = 14, .parameters = &[_]OperandKind{} },
707 .{ .name = "UnormInt24", .value = 15, .parameters = &[_]OperandKind{} },
708 .{ .name = "UnormInt101010_2", .value = 16, .parameters = &[_]OperandKind{} },
709 .{ .name = "UnsignedIntRaw10EXT", .value = 19, .parameters = &[_]OperandKind{} },
710 .{ .name = "UnsignedIntRaw12EXT", .value = 20, .parameters = &[_]OperandKind{} },
736 .linkage_type => &.{
737 .{ .name = "Export", .value = 0, .parameters = &.{} },
738 .{ .name = "Import", .value = 1, .parameters = &.{} },
739 .{ .name = "LinkOnceODR", .value = 2, .parameters = &.{} },
711740 },
712 .FPRoundingMode => &[_]Enumerant{
713 .{ .name = "RTE", .value = 0, .parameters = &[_]OperandKind{} },
714 .{ .name = "RTZ", .value = 1, .parameters = &[_]OperandKind{} },
715 .{ .name = "RTP", .value = 2, .parameters = &[_]OperandKind{} },
716 .{ .name = "RTN", .value = 3, .parameters = &[_]OperandKind{} },
741 .access_qualifier => &.{
742 .{ .name = "ReadOnly", .value = 0, .parameters = &.{} },
743 .{ .name = "WriteOnly", .value = 1, .parameters = &.{} },
744 .{ .name = "ReadWrite", .value = 2, .parameters = &.{} },
717745 },
718 .FPDenormMode => &[_]Enumerant{
719 .{ .name = "Preserve", .value = 0, .parameters = &[_]OperandKind{} },
720 .{ .name = "FlushToZero", .value = 1, .parameters = &[_]OperandKind{} },
746 .host_access_qualifier => &.{
747 .{ .name = "NoneINTEL", .value = 0, .parameters = &.{} },
748 .{ .name = "ReadINTEL", .value = 1, .parameters = &.{} },
749 .{ .name = "WriteINTEL", .value = 2, .parameters = &.{} },
750 .{ .name = "ReadWriteINTEL", .value = 3, .parameters = &.{} },
721751 },
722 .QuantizationModes => &[_]Enumerant{
723 .{ .name = "TRN", .value = 0, .parameters = &[_]OperandKind{} },
724 .{ .name = "TRN_ZERO", .value = 1, .parameters = &[_]OperandKind{} },
725 .{ .name = "RND", .value = 2, .parameters = &[_]OperandKind{} },
726 .{ .name = "RND_ZERO", .value = 3, .parameters = &[_]OperandKind{} },
727 .{ .name = "RND_INF", .value = 4, .parameters = &[_]OperandKind{} },
728 .{ .name = "RND_MIN_INF", .value = 5, .parameters = &[_]OperandKind{} },
729 .{ .name = "RND_CONV", .value = 6, .parameters = &[_]OperandKind{} },
730 .{ .name = "RND_CONV_ODD", .value = 7, .parameters = &[_]OperandKind{} },
752 .function_parameter_attribute => &.{
753 .{ .name = "Zext", .value = 0, .parameters = &.{} },
754 .{ .name = "Sext", .value = 1, .parameters = &.{} },
755 .{ .name = "ByVal", .value = 2, .parameters = &.{} },
756 .{ .name = "Sret", .value = 3, .parameters = &.{} },
757 .{ .name = "NoAlias", .value = 4, .parameters = &.{} },
758 .{ .name = "NoCapture", .value = 5, .parameters = &.{} },
759 .{ .name = "NoWrite", .value = 6, .parameters = &.{} },
760 .{ .name = "NoReadWrite", .value = 7, .parameters = &.{} },
761 .{ .name = "RuntimeAlignedINTEL", .value = 5940, .parameters = &.{} },
731762 },
732 .FPOperationMode => &[_]Enumerant{
733 .{ .name = "IEEE", .value = 0, .parameters = &[_]OperandKind{} },
734 .{ .name = "ALT", .value = 1, .parameters = &[_]OperandKind{} },
763 .decoration => &.{
764 .{ .name = "RelaxedPrecision", .value = 0, .parameters = &.{} },
765 .{ .name = "SpecId", .value = 1, .parameters = &.{.literal_integer} },
766 .{ .name = "Block", .value = 2, .parameters = &.{} },
767 .{ .name = "BufferBlock", .value = 3, .parameters = &.{} },
768 .{ .name = "RowMajor", .value = 4, .parameters = &.{} },
769 .{ .name = "ColMajor", .value = 5, .parameters = &.{} },
770 .{ .name = "ArrayStride", .value = 6, .parameters = &.{.literal_integer} },
771 .{ .name = "MatrixStride", .value = 7, .parameters = &.{.literal_integer} },
772 .{ .name = "GLSLShared", .value = 8, .parameters = &.{} },
773 .{ .name = "GLSLPacked", .value = 9, .parameters = &.{} },
774 .{ .name = "CPacked", .value = 10, .parameters = &.{} },
775 .{ .name = "BuiltIn", .value = 11, .parameters = &.{.built_in} },
776 .{ .name = "NoPerspective", .value = 13, .parameters = &.{} },
777 .{ .name = "Flat", .value = 14, .parameters = &.{} },
778 .{ .name = "Patch", .value = 15, .parameters = &.{} },
779 .{ .name = "Centroid", .value = 16, .parameters = &.{} },
780 .{ .name = "Sample", .value = 17, .parameters = &.{} },
781 .{ .name = "Invariant", .value = 18, .parameters = &.{} },
782 .{ .name = "Restrict", .value = 19, .parameters = &.{} },
783 .{ .name = "Aliased", .value = 20, .parameters = &.{} },
784 .{ .name = "Volatile", .value = 21, .parameters = &.{} },
785 .{ .name = "Constant", .value = 22, .parameters = &.{} },
786 .{ .name = "Coherent", .value = 23, .parameters = &.{} },
787 .{ .name = "NonWritable", .value = 24, .parameters = &.{} },
788 .{ .name = "NonReadable", .value = 25, .parameters = &.{} },
789 .{ .name = "Uniform", .value = 26, .parameters = &.{} },
790 .{ .name = "UniformId", .value = 27, .parameters = &.{.id_scope} },
791 .{ .name = "SaturatedConversion", .value = 28, .parameters = &.{} },
792 .{ .name = "Stream", .value = 29, .parameters = &.{.literal_integer} },
793 .{ .name = "Location", .value = 30, .parameters = &.{.literal_integer} },
794 .{ .name = "Component", .value = 31, .parameters = &.{.literal_integer} },
795 .{ .name = "Index", .value = 32, .parameters = &.{.literal_integer} },
796 .{ .name = "Binding", .value = 33, .parameters = &.{.literal_integer} },
797 .{ .name = "DescriptorSet", .value = 34, .parameters = &.{.literal_integer} },
798 .{ .name = "Offset", .value = 35, .parameters = &.{.literal_integer} },
799 .{ .name = "XfbBuffer", .value = 36, .parameters = &.{.literal_integer} },
800 .{ .name = "XfbStride", .value = 37, .parameters = &.{.literal_integer} },
801 .{ .name = "FuncParamAttr", .value = 38, .parameters = &.{.function_parameter_attribute} },
802 .{ .name = "FPRoundingMode", .value = 39, .parameters = &.{.fp_rounding_mode} },
803 .{ .name = "FPFastMathMode", .value = 40, .parameters = &.{.fp_fast_math_mode} },
804 .{ .name = "LinkageAttributes", .value = 41, .parameters = &.{ .literal_string, .linkage_type } },
805 .{ .name = "NoContraction", .value = 42, .parameters = &.{} },
806 .{ .name = "InputAttachmentIndex", .value = 43, .parameters = &.{.literal_integer} },
807 .{ .name = "Alignment", .value = 44, .parameters = &.{.literal_integer} },
808 .{ .name = "MaxByteOffset", .value = 45, .parameters = &.{.literal_integer} },
809 .{ .name = "AlignmentId", .value = 46, .parameters = &.{.id_ref} },
810 .{ .name = "MaxByteOffsetId", .value = 47, .parameters = &.{.id_ref} },
811 .{ .name = "SaturatedToLargestFloat8NormalConversionEXT", .value = 4216, .parameters = &.{} },
812 .{ .name = "NoSignedWrap", .value = 4469, .parameters = &.{} },
813 .{ .name = "NoUnsignedWrap", .value = 4470, .parameters = &.{} },
814 .{ .name = "WeightTextureQCOM", .value = 4487, .parameters = &.{} },
815 .{ .name = "BlockMatchTextureQCOM", .value = 4488, .parameters = &.{} },
816 .{ .name = "BlockMatchSamplerQCOM", .value = 4499, .parameters = &.{} },
817 .{ .name = "ExplicitInterpAMD", .value = 4999, .parameters = &.{} },
818 .{ .name = "NodeSharesPayloadLimitsWithAMDX", .value = 5019, .parameters = &.{.id_ref} },
819 .{ .name = "NodeMaxPayloadsAMDX", .value = 5020, .parameters = &.{.id_ref} },
820 .{ .name = "TrackFinishWritingAMDX", .value = 5078, .parameters = &.{} },
821 .{ .name = "PayloadNodeNameAMDX", .value = 5091, .parameters = &.{.id_ref} },
822 .{ .name = "PayloadNodeBaseIndexAMDX", .value = 5098, .parameters = &.{.id_ref} },
823 .{ .name = "PayloadNodeSparseArrayAMDX", .value = 5099, .parameters = &.{} },
824 .{ .name = "PayloadNodeArraySizeAMDX", .value = 5100, .parameters = &.{.id_ref} },
825 .{ .name = "PayloadDispatchIndirectAMDX", .value = 5105, .parameters = &.{} },
826 .{ .name = "OverrideCoverageNV", .value = 5248, .parameters = &.{} },
827 .{ .name = "PassthroughNV", .value = 5250, .parameters = &.{} },
828 .{ .name = "ViewportRelativeNV", .value = 5252, .parameters = &.{} },
829 .{ .name = "SecondaryViewportRelativeNV", .value = 5256, .parameters = &.{.literal_integer} },
830 .{ .name = "PerPrimitiveEXT", .value = 5271, .parameters = &.{} },
831 .{ .name = "PerViewNV", .value = 5272, .parameters = &.{} },
832 .{ .name = "PerTaskNV", .value = 5273, .parameters = &.{} },
833 .{ .name = "PerVertexKHR", .value = 5285, .parameters = &.{} },
834 .{ .name = "NonUniform", .value = 5300, .parameters = &.{} },
835 .{ .name = "RestrictPointer", .value = 5355, .parameters = &.{} },
836 .{ .name = "AliasedPointer", .value = 5356, .parameters = &.{} },
837 .{ .name = "HitObjectShaderRecordBufferNV", .value = 5386, .parameters = &.{} },
838 .{ .name = "BindlessSamplerNV", .value = 5398, .parameters = &.{} },
839 .{ .name = "BindlessImageNV", .value = 5399, .parameters = &.{} },
840 .{ .name = "BoundSamplerNV", .value = 5400, .parameters = &.{} },
841 .{ .name = "BoundImageNV", .value = 5401, .parameters = &.{} },
842 .{ .name = "SIMTCallINTEL", .value = 5599, .parameters = &.{.literal_integer} },
843 .{ .name = "ReferencedIndirectlyINTEL", .value = 5602, .parameters = &.{} },
844 .{ .name = "ClobberINTEL", .value = 5607, .parameters = &.{.literal_string} },
845 .{ .name = "SideEffectsINTEL", .value = 5608, .parameters = &.{} },
846 .{ .name = "VectorComputeVariableINTEL", .value = 5624, .parameters = &.{} },
847 .{ .name = "FuncParamIOKindINTEL", .value = 5625, .parameters = &.{.literal_integer} },
848 .{ .name = "VectorComputeFunctionINTEL", .value = 5626, .parameters = &.{} },
849 .{ .name = "StackCallINTEL", .value = 5627, .parameters = &.{} },
850 .{ .name = "GlobalVariableOffsetINTEL", .value = 5628, .parameters = &.{.literal_integer} },
851 .{ .name = "CounterBuffer", .value = 5634, .parameters = &.{.id_ref} },
852 .{ .name = "UserSemantic", .value = 5635, .parameters = &.{.literal_string} },
853 .{ .name = "UserTypeGOOGLE", .value = 5636, .parameters = &.{.literal_string} },
854 .{ .name = "FunctionRoundingModeINTEL", .value = 5822, .parameters = &.{ .literal_integer, .fp_rounding_mode } },
855 .{ .name = "FunctionDenormModeINTEL", .value = 5823, .parameters = &.{ .literal_integer, .fp_denorm_mode } },
856 .{ .name = "RegisterINTEL", .value = 5825, .parameters = &.{} },
857 .{ .name = "MemoryINTEL", .value = 5826, .parameters = &.{.literal_string} },
858 .{ .name = "NumbanksINTEL", .value = 5827, .parameters = &.{.literal_integer} },
859 .{ .name = "BankwidthINTEL", .value = 5828, .parameters = &.{.literal_integer} },
860 .{ .name = "MaxPrivateCopiesINTEL", .value = 5829, .parameters = &.{.literal_integer} },
861 .{ .name = "SinglepumpINTEL", .value = 5830, .parameters = &.{} },
862 .{ .name = "DoublepumpINTEL", .value = 5831, .parameters = &.{} },
863 .{ .name = "MaxReplicatesINTEL", .value = 5832, .parameters = &.{.literal_integer} },
864 .{ .name = "SimpleDualPortINTEL", .value = 5833, .parameters = &.{} },
865 .{ .name = "MergeINTEL", .value = 5834, .parameters = &.{ .literal_string, .literal_string } },
866 .{ .name = "BankBitsINTEL", .value = 5835, .parameters = &.{.literal_integer} },
867 .{ .name = "ForcePow2DepthINTEL", .value = 5836, .parameters = &.{.literal_integer} },
868 .{ .name = "StridesizeINTEL", .value = 5883, .parameters = &.{.literal_integer} },
869 .{ .name = "WordsizeINTEL", .value = 5884, .parameters = &.{.literal_integer} },
870 .{ .name = "TrueDualPortINTEL", .value = 5885, .parameters = &.{} },
871 .{ .name = "BurstCoalesceINTEL", .value = 5899, .parameters = &.{} },
872 .{ .name = "CacheSizeINTEL", .value = 5900, .parameters = &.{.literal_integer} },
873 .{ .name = "DontStaticallyCoalesceINTEL", .value = 5901, .parameters = &.{} },
874 .{ .name = "PrefetchINTEL", .value = 5902, .parameters = &.{.literal_integer} },
875 .{ .name = "StallEnableINTEL", .value = 5905, .parameters = &.{} },
876 .{ .name = "FuseLoopsInFunctionINTEL", .value = 5907, .parameters = &.{} },
877 .{ .name = "MathOpDSPModeINTEL", .value = 5909, .parameters = &.{ .literal_integer, .literal_integer } },
878 .{ .name = "AliasScopeINTEL", .value = 5914, .parameters = &.{.id_ref} },
879 .{ .name = "NoAliasINTEL", .value = 5915, .parameters = &.{.id_ref} },
880 .{ .name = "InitiationIntervalINTEL", .value = 5917, .parameters = &.{.literal_integer} },
881 .{ .name = "MaxConcurrencyINTEL", .value = 5918, .parameters = &.{.literal_integer} },
882 .{ .name = "PipelineEnableINTEL", .value = 5919, .parameters = &.{.literal_integer} },
883 .{ .name = "BufferLocationINTEL", .value = 5921, .parameters = &.{.literal_integer} },
884 .{ .name = "IOPipeStorageINTEL", .value = 5944, .parameters = &.{.literal_integer} },
885 .{ .name = "FunctionFloatingPointModeINTEL", .value = 6080, .parameters = &.{ .literal_integer, .fp_operation_mode } },
886 .{ .name = "SingleElementVectorINTEL", .value = 6085, .parameters = &.{} },
887 .{ .name = "VectorComputeCallableFunctionINTEL", .value = 6087, .parameters = &.{} },
888 .{ .name = "MediaBlockIOINTEL", .value = 6140, .parameters = &.{} },
889 .{ .name = "StallFreeINTEL", .value = 6151, .parameters = &.{} },
890 .{ .name = "FPMaxErrorDecorationINTEL", .value = 6170, .parameters = &.{.literal_float} },
891 .{ .name = "LatencyControlLabelINTEL", .value = 6172, .parameters = &.{.literal_integer} },
892 .{ .name = "LatencyControlConstraintINTEL", .value = 6173, .parameters = &.{ .literal_integer, .literal_integer, .literal_integer } },
893 .{ .name = "ConduitKernelArgumentINTEL", .value = 6175, .parameters = &.{} },
894 .{ .name = "RegisterMapKernelArgumentINTEL", .value = 6176, .parameters = &.{} },
895 .{ .name = "MMHostInterfaceAddressWidthINTEL", .value = 6177, .parameters = &.{.literal_integer} },
896 .{ .name = "MMHostInterfaceDataWidthINTEL", .value = 6178, .parameters = &.{.literal_integer} },
897 .{ .name = "MMHostInterfaceLatencyINTEL", .value = 6179, .parameters = &.{.literal_integer} },
898 .{ .name = "MMHostInterfaceReadWriteModeINTEL", .value = 6180, .parameters = &.{.access_qualifier} },
899 .{ .name = "MMHostInterfaceMaxBurstINTEL", .value = 6181, .parameters = &.{.literal_integer} },
900 .{ .name = "MMHostInterfaceWaitRequestINTEL", .value = 6182, .parameters = &.{.literal_integer} },
901 .{ .name = "StableKernelArgumentINTEL", .value = 6183, .parameters = &.{} },
902 .{ .name = "HostAccessINTEL", .value = 6188, .parameters = &.{ .host_access_qualifier, .literal_string } },
903 .{ .name = "InitModeINTEL", .value = 6190, .parameters = &.{.initialization_mode_qualifier} },
904 .{ .name = "ImplementInRegisterMapINTEL", .value = 6191, .parameters = &.{.literal_integer} },
905 .{ .name = "CacheControlLoadINTEL", .value = 6442, .parameters = &.{ .literal_integer, .load_cache_control } },
906 .{ .name = "CacheControlStoreINTEL", .value = 6443, .parameters = &.{ .literal_integer, .store_cache_control } },
735907 },
736 .OverflowModes => &[_]Enumerant{
737 .{ .name = "WRAP", .value = 0, .parameters = &[_]OperandKind{} },
738 .{ .name = "SAT", .value = 1, .parameters = &[_]OperandKind{} },
739 .{ .name = "SAT_ZERO", .value = 2, .parameters = &[_]OperandKind{} },
740 .{ .name = "SAT_SYM", .value = 3, .parameters = &[_]OperandKind{} },
908 .built_in => &.{
909 .{ .name = "Position", .value = 0, .parameters = &.{} },
910 .{ .name = "PointSize", .value = 1, .parameters = &.{} },
911 .{ .name = "ClipDistance", .value = 3, .parameters = &.{} },
912 .{ .name = "CullDistance", .value = 4, .parameters = &.{} },
913 .{ .name = "VertexId", .value = 5, .parameters = &.{} },
914 .{ .name = "InstanceId", .value = 6, .parameters = &.{} },
915 .{ .name = "PrimitiveId", .value = 7, .parameters = &.{} },
916 .{ .name = "InvocationId", .value = 8, .parameters = &.{} },
917 .{ .name = "Layer", .value = 9, .parameters = &.{} },
918 .{ .name = "ViewportIndex", .value = 10, .parameters = &.{} },
919 .{ .name = "TessLevelOuter", .value = 11, .parameters = &.{} },
920 .{ .name = "TessLevelInner", .value = 12, .parameters = &.{} },
921 .{ .name = "TessCoord", .value = 13, .parameters = &.{} },
922 .{ .name = "PatchVertices", .value = 14, .parameters = &.{} },
923 .{ .name = "FragCoord", .value = 15, .parameters = &.{} },
924 .{ .name = "PointCoord", .value = 16, .parameters = &.{} },
925 .{ .name = "FrontFacing", .value = 17, .parameters = &.{} },
926 .{ .name = "SampleId", .value = 18, .parameters = &.{} },
927 .{ .name = "SamplePosition", .value = 19, .parameters = &.{} },
928 .{ .name = "SampleMask", .value = 20, .parameters = &.{} },
929 .{ .name = "FragDepth", .value = 22, .parameters = &.{} },
930 .{ .name = "HelperInvocation", .value = 23, .parameters = &.{} },
931 .{ .name = "NumWorkgroups", .value = 24, .parameters = &.{} },
932 .{ .name = "WorkgroupSize", .value = 25, .parameters = &.{} },
933 .{ .name = "WorkgroupId", .value = 26, .parameters = &.{} },
934 .{ .name = "LocalInvocationId", .value = 27, .parameters = &.{} },
935 .{ .name = "GlobalInvocationId", .value = 28, .parameters = &.{} },
936 .{ .name = "LocalInvocationIndex", .value = 29, .parameters = &.{} },
937 .{ .name = "WorkDim", .value = 30, .parameters = &.{} },
938 .{ .name = "GlobalSize", .value = 31, .parameters = &.{} },
939 .{ .name = "EnqueuedWorkgroupSize", .value = 32, .parameters = &.{} },
940 .{ .name = "GlobalOffset", .value = 33, .parameters = &.{} },
941 .{ .name = "GlobalLinearId", .value = 34, .parameters = &.{} },
942 .{ .name = "SubgroupSize", .value = 36, .parameters = &.{} },
943 .{ .name = "SubgroupMaxSize", .value = 37, .parameters = &.{} },
944 .{ .name = "NumSubgroups", .value = 38, .parameters = &.{} },
945 .{ .name = "NumEnqueuedSubgroups", .value = 39, .parameters = &.{} },
946 .{ .name = "SubgroupId", .value = 40, .parameters = &.{} },
947 .{ .name = "SubgroupLocalInvocationId", .value = 41, .parameters = &.{} },
948 .{ .name = "VertexIndex", .value = 42, .parameters = &.{} },
949 .{ .name = "InstanceIndex", .value = 43, .parameters = &.{} },
950 .{ .name = "CoreIDARM", .value = 4160, .parameters = &.{} },
951 .{ .name = "CoreCountARM", .value = 4161, .parameters = &.{} },
952 .{ .name = "CoreMaxIDARM", .value = 4162, .parameters = &.{} },
953 .{ .name = "WarpIDARM", .value = 4163, .parameters = &.{} },
954 .{ .name = "WarpMaxIDARM", .value = 4164, .parameters = &.{} },
955 .{ .name = "SubgroupEqMask", .value = 4416, .parameters = &.{} },
956 .{ .name = "SubgroupGeMask", .value = 4417, .parameters = &.{} },
957 .{ .name = "SubgroupGtMask", .value = 4418, .parameters = &.{} },
958 .{ .name = "SubgroupLeMask", .value = 4419, .parameters = &.{} },
959 .{ .name = "SubgroupLtMask", .value = 4420, .parameters = &.{} },
960 .{ .name = "BaseVertex", .value = 4424, .parameters = &.{} },
961 .{ .name = "BaseInstance", .value = 4425, .parameters = &.{} },
962 .{ .name = "DrawIndex", .value = 4426, .parameters = &.{} },
963 .{ .name = "PrimitiveShadingRateKHR", .value = 4432, .parameters = &.{} },
964 .{ .name = "DeviceIndex", .value = 4438, .parameters = &.{} },
965 .{ .name = "ViewIndex", .value = 4440, .parameters = &.{} },
966 .{ .name = "ShadingRateKHR", .value = 4444, .parameters = &.{} },
967 .{ .name = "TileOffsetQCOM", .value = 4492, .parameters = &.{} },
968 .{ .name = "TileDimensionQCOM", .value = 4493, .parameters = &.{} },
969 .{ .name = "TileApronSizeQCOM", .value = 4494, .parameters = &.{} },
970 .{ .name = "BaryCoordNoPerspAMD", .value = 4992, .parameters = &.{} },
971 .{ .name = "BaryCoordNoPerspCentroidAMD", .value = 4993, .parameters = &.{} },
972 .{ .name = "BaryCoordNoPerspSampleAMD", .value = 4994, .parameters = &.{} },
973 .{ .name = "BaryCoordSmoothAMD", .value = 4995, .parameters = &.{} },
974 .{ .name = "BaryCoordSmoothCentroidAMD", .value = 4996, .parameters = &.{} },
975 .{ .name = "BaryCoordSmoothSampleAMD", .value = 4997, .parameters = &.{} },
976 .{ .name = "BaryCoordPullModelAMD", .value = 4998, .parameters = &.{} },
977 .{ .name = "FragStencilRefEXT", .value = 5014, .parameters = &.{} },
978 .{ .name = "RemainingRecursionLevelsAMDX", .value = 5021, .parameters = &.{} },
979 .{ .name = "ShaderIndexAMDX", .value = 5073, .parameters = &.{} },
980 .{ .name = "ViewportMaskNV", .value = 5253, .parameters = &.{} },
981 .{ .name = "SecondaryPositionNV", .value = 5257, .parameters = &.{} },
982 .{ .name = "SecondaryViewportMaskNV", .value = 5258, .parameters = &.{} },
983 .{ .name = "PositionPerViewNV", .value = 5261, .parameters = &.{} },
984 .{ .name = "ViewportMaskPerViewNV", .value = 5262, .parameters = &.{} },
985 .{ .name = "FullyCoveredEXT", .value = 5264, .parameters = &.{} },
986 .{ .name = "TaskCountNV", .value = 5274, .parameters = &.{} },
987 .{ .name = "PrimitiveCountNV", .value = 5275, .parameters = &.{} },
988 .{ .name = "PrimitiveIndicesNV", .value = 5276, .parameters = &.{} },
989 .{ .name = "ClipDistancePerViewNV", .value = 5277, .parameters = &.{} },
990 .{ .name = "CullDistancePerViewNV", .value = 5278, .parameters = &.{} },
991 .{ .name = "LayerPerViewNV", .value = 5279, .parameters = &.{} },
992 .{ .name = "MeshViewCountNV", .value = 5280, .parameters = &.{} },
993 .{ .name = "MeshViewIndicesNV", .value = 5281, .parameters = &.{} },
994 .{ .name = "BaryCoordKHR", .value = 5286, .parameters = &.{} },
995 .{ .name = "BaryCoordNoPerspKHR", .value = 5287, .parameters = &.{} },
996 .{ .name = "FragSizeEXT", .value = 5292, .parameters = &.{} },
997 .{ .name = "FragInvocationCountEXT", .value = 5293, .parameters = &.{} },
998 .{ .name = "PrimitivePointIndicesEXT", .value = 5294, .parameters = &.{} },
999 .{ .name = "PrimitiveLineIndicesEXT", .value = 5295, .parameters = &.{} },
1000 .{ .name = "PrimitiveTriangleIndicesEXT", .value = 5296, .parameters = &.{} },
1001 .{ .name = "CullPrimitiveEXT", .value = 5299, .parameters = &.{} },
1002 .{ .name = "LaunchIdKHR", .value = 5319, .parameters = &.{} },
1003 .{ .name = "LaunchSizeKHR", .value = 5320, .parameters = &.{} },
1004 .{ .name = "WorldRayOriginKHR", .value = 5321, .parameters = &.{} },
1005 .{ .name = "WorldRayDirectionKHR", .value = 5322, .parameters = &.{} },
1006 .{ .name = "ObjectRayOriginKHR", .value = 5323, .parameters = &.{} },
1007 .{ .name = "ObjectRayDirectionKHR", .value = 5324, .parameters = &.{} },
1008 .{ .name = "RayTminKHR", .value = 5325, .parameters = &.{} },
1009 .{ .name = "RayTmaxKHR", .value = 5326, .parameters = &.{} },
1010 .{ .name = "InstanceCustomIndexKHR", .value = 5327, .parameters = &.{} },
1011 .{ .name = "ObjectToWorldKHR", .value = 5330, .parameters = &.{} },
1012 .{ .name = "WorldToObjectKHR", .value = 5331, .parameters = &.{} },
1013 .{ .name = "HitTNV", .value = 5332, .parameters = &.{} },
1014 .{ .name = "HitKindKHR", .value = 5333, .parameters = &.{} },
1015 .{ .name = "CurrentRayTimeNV", .value = 5334, .parameters = &.{} },
1016 .{ .name = "HitTriangleVertexPositionsKHR", .value = 5335, .parameters = &.{} },
1017 .{ .name = "HitMicroTriangleVertexPositionsNV", .value = 5337, .parameters = &.{} },
1018 .{ .name = "HitMicroTriangleVertexBarycentricsNV", .value = 5344, .parameters = &.{} },
1019 .{ .name = "IncomingRayFlagsKHR", .value = 5351, .parameters = &.{} },
1020 .{ .name = "RayGeometryIndexKHR", .value = 5352, .parameters = &.{} },
1021 .{ .name = "HitIsSphereNV", .value = 5359, .parameters = &.{} },
1022 .{ .name = "HitIsLSSNV", .value = 5360, .parameters = &.{} },
1023 .{ .name = "HitSpherePositionNV", .value = 5361, .parameters = &.{} },
1024 .{ .name = "WarpsPerSMNV", .value = 5374, .parameters = &.{} },
1025 .{ .name = "SMCountNV", .value = 5375, .parameters = &.{} },
1026 .{ .name = "WarpIDNV", .value = 5376, .parameters = &.{} },
1027 .{ .name = "SMIDNV", .value = 5377, .parameters = &.{} },
1028 .{ .name = "HitLSSPositionsNV", .value = 5396, .parameters = &.{} },
1029 .{ .name = "HitKindFrontFacingMicroTriangleNV", .value = 5405, .parameters = &.{} },
1030 .{ .name = "HitKindBackFacingMicroTriangleNV", .value = 5406, .parameters = &.{} },
1031 .{ .name = "HitSphereRadiusNV", .value = 5420, .parameters = &.{} },
1032 .{ .name = "HitLSSRadiiNV", .value = 5421, .parameters = &.{} },
1033 .{ .name = "ClusterIDNV", .value = 5436, .parameters = &.{} },
1034 .{ .name = "CullMaskKHR", .value = 6021, .parameters = &.{} },
7411035 },
742 .LinkageType => &[_]Enumerant{
743 .{ .name = "Export", .value = 0, .parameters = &[_]OperandKind{} },
744 .{ .name = "Import", .value = 1, .parameters = &[_]OperandKind{} },
745 .{ .name = "LinkOnceODR", .value = 2, .parameters = &[_]OperandKind{} },
1036 .scope => &.{
1037 .{ .name = "CrossDevice", .value = 0, .parameters = &.{} },
1038 .{ .name = "Device", .value = 1, .parameters = &.{} },
1039 .{ .name = "Workgroup", .value = 2, .parameters = &.{} },
1040 .{ .name = "Subgroup", .value = 3, .parameters = &.{} },
1041 .{ .name = "Invocation", .value = 4, .parameters = &.{} },
1042 .{ .name = "QueueFamily", .value = 5, .parameters = &.{} },
1043 .{ .name = "ShaderCallKHR", .value = 6, .parameters = &.{} },
7461044 },
747 .AccessQualifier => &[_]Enumerant{
748 .{ .name = "ReadOnly", .value = 0, .parameters = &[_]OperandKind{} },
749 .{ .name = "WriteOnly", .value = 1, .parameters = &[_]OperandKind{} },
750 .{ .name = "ReadWrite", .value = 2, .parameters = &[_]OperandKind{} },
1045 .group_operation => &.{
1046 .{ .name = "Reduce", .value = 0, .parameters = &.{} },
1047 .{ .name = "InclusiveScan", .value = 1, .parameters = &.{} },
1048 .{ .name = "ExclusiveScan", .value = 2, .parameters = &.{} },
1049 .{ .name = "ClusteredReduce", .value = 3, .parameters = &.{} },
1050 .{ .name = "PartitionedReduceNV", .value = 6, .parameters = &.{} },
1051 .{ .name = "PartitionedInclusiveScanNV", .value = 7, .parameters = &.{} },
1052 .{ .name = "PartitionedExclusiveScanNV", .value = 8, .parameters = &.{} },
7511053 },
752 .HostAccessQualifier => &[_]Enumerant{
753 .{ .name = "NoneINTEL", .value = 0, .parameters = &[_]OperandKind{} },
754 .{ .name = "ReadINTEL", .value = 1, .parameters = &[_]OperandKind{} },
755 .{ .name = "WriteINTEL", .value = 2, .parameters = &[_]OperandKind{} },
756 .{ .name = "ReadWriteINTEL", .value = 3, .parameters = &[_]OperandKind{} },
1054 .kernel_enqueue_flags => &.{
1055 .{ .name = "NoWait", .value = 0, .parameters = &.{} },
1056 .{ .name = "WaitKernel", .value = 1, .parameters = &.{} },
1057 .{ .name = "WaitWorkGroup", .value = 2, .parameters = &.{} },
7571058 },
758 .FunctionParameterAttribute => &[_]Enumerant{
759 .{ .name = "Zext", .value = 0, .parameters = &[_]OperandKind{} },
760 .{ .name = "Sext", .value = 1, .parameters = &[_]OperandKind{} },
761 .{ .name = "ByVal", .value = 2, .parameters = &[_]OperandKind{} },
762 .{ .name = "Sret", .value = 3, .parameters = &[_]OperandKind{} },
763 .{ .name = "NoAlias", .value = 4, .parameters = &[_]OperandKind{} },
764 .{ .name = "NoCapture", .value = 5, .parameters = &[_]OperandKind{} },
765 .{ .name = "NoWrite", .value = 6, .parameters = &[_]OperandKind{} },
766 .{ .name = "NoReadWrite", .value = 7, .parameters = &[_]OperandKind{} },
767 .{ .name = "RuntimeAlignedINTEL", .value = 5940, .parameters = &[_]OperandKind{} },
1059 .capability => &.{
1060 .{ .name = "Matrix", .value = 0, .parameters = &.{} },
1061 .{ .name = "Shader", .value = 1, .parameters = &.{} },
1062 .{ .name = "Geometry", .value = 2, .parameters = &.{} },
1063 .{ .name = "Tessellation", .value = 3, .parameters = &.{} },
1064 .{ .name = "Addresses", .value = 4, .parameters = &.{} },
1065 .{ .name = "Linkage", .value = 5, .parameters = &.{} },
1066 .{ .name = "Kernel", .value = 6, .parameters = &.{} },
1067 .{ .name = "Vector16", .value = 7, .parameters = &.{} },
1068 .{ .name = "Float16Buffer", .value = 8, .parameters = &.{} },
1069 .{ .name = "Float16", .value = 9, .parameters = &.{} },
1070 .{ .name = "Float64", .value = 10, .parameters = &.{} },
1071 .{ .name = "Int64", .value = 11, .parameters = &.{} },
1072 .{ .name = "Int64Atomics", .value = 12, .parameters = &.{} },
1073 .{ .name = "ImageBasic", .value = 13, .parameters = &.{} },
1074 .{ .name = "ImageReadWrite", .value = 14, .parameters = &.{} },
1075 .{ .name = "ImageMipmap", .value = 15, .parameters = &.{} },
1076 .{ .name = "Pipes", .value = 17, .parameters = &.{} },
1077 .{ .name = "Groups", .value = 18, .parameters = &.{} },
1078 .{ .name = "DeviceEnqueue", .value = 19, .parameters = &.{} },
1079 .{ .name = "LiteralSampler", .value = 20, .parameters = &.{} },
1080 .{ .name = "AtomicStorage", .value = 21, .parameters = &.{} },
1081 .{ .name = "Int16", .value = 22, .parameters = &.{} },
1082 .{ .name = "TessellationPointSize", .value = 23, .parameters = &.{} },
1083 .{ .name = "GeometryPointSize", .value = 24, .parameters = &.{} },
1084 .{ .name = "ImageGatherExtended", .value = 25, .parameters = &.{} },
1085 .{ .name = "StorageImageMultisample", .value = 27, .parameters = &.{} },
1086 .{ .name = "UniformBufferArrayDynamicIndexing", .value = 28, .parameters = &.{} },
1087 .{ .name = "SampledImageArrayDynamicIndexing", .value = 29, .parameters = &.{} },
1088 .{ .name = "StorageBufferArrayDynamicIndexing", .value = 30, .parameters = &.{} },
1089 .{ .name = "StorageImageArrayDynamicIndexing", .value = 31, .parameters = &.{} },
1090 .{ .name = "ClipDistance", .value = 32, .parameters = &.{} },
1091 .{ .name = "CullDistance", .value = 33, .parameters = &.{} },
1092 .{ .name = "ImageCubeArray", .value = 34, .parameters = &.{} },
1093 .{ .name = "SampleRateShading", .value = 35, .parameters = &.{} },
1094 .{ .name = "ImageRect", .value = 36, .parameters = &.{} },
1095 .{ .name = "SampledRect", .value = 37, .parameters = &.{} },
1096 .{ .name = "GenericPointer", .value = 38, .parameters = &.{} },
1097 .{ .name = "Int8", .value = 39, .parameters = &.{} },
1098 .{ .name = "InputAttachment", .value = 40, .parameters = &.{} },
1099 .{ .name = "SparseResidency", .value = 41, .parameters = &.{} },
1100 .{ .name = "MinLod", .value = 42, .parameters = &.{} },
1101 .{ .name = "Sampled1D", .value = 43, .parameters = &.{} },
1102 .{ .name = "Image1D", .value = 44, .parameters = &.{} },
1103 .{ .name = "SampledCubeArray", .value = 45, .parameters = &.{} },
1104 .{ .name = "SampledBuffer", .value = 46, .parameters = &.{} },
1105 .{ .name = "ImageBuffer", .value = 47, .parameters = &.{} },
1106 .{ .name = "ImageMSArray", .value = 48, .parameters = &.{} },
1107 .{ .name = "StorageImageExtendedFormats", .value = 49, .parameters = &.{} },
1108 .{ .name = "ImageQuery", .value = 50, .parameters = &.{} },
1109 .{ .name = "DerivativeControl", .value = 51, .parameters = &.{} },
1110 .{ .name = "InterpolationFunction", .value = 52, .parameters = &.{} },
1111 .{ .name = "TransformFeedback", .value = 53, .parameters = &.{} },
1112 .{ .name = "GeometryStreams", .value = 54, .parameters = &.{} },
1113 .{ .name = "StorageImageReadWithoutFormat", .value = 55, .parameters = &.{} },
1114 .{ .name = "StorageImageWriteWithoutFormat", .value = 56, .parameters = &.{} },
1115 .{ .name = "MultiViewport", .value = 57, .parameters = &.{} },
1116 .{ .name = "SubgroupDispatch", .value = 58, .parameters = &.{} },
1117 .{ .name = "NamedBarrier", .value = 59, .parameters = &.{} },
1118 .{ .name = "PipeStorage", .value = 60, .parameters = &.{} },
1119 .{ .name = "GroupNonUniform", .value = 61, .parameters = &.{} },
1120 .{ .name = "GroupNonUniformVote", .value = 62, .parameters = &.{} },
1121 .{ .name = "GroupNonUniformArithmetic", .value = 63, .parameters = &.{} },
1122 .{ .name = "GroupNonUniformBallot", .value = 64, .parameters = &.{} },
1123 .{ .name = "GroupNonUniformShuffle", .value = 65, .parameters = &.{} },
1124 .{ .name = "GroupNonUniformShuffleRelative", .value = 66, .parameters = &.{} },
1125 .{ .name = "GroupNonUniformClustered", .value = 67, .parameters = &.{} },
1126 .{ .name = "GroupNonUniformQuad", .value = 68, .parameters = &.{} },
1127 .{ .name = "ShaderLayer", .value = 69, .parameters = &.{} },
1128 .{ .name = "ShaderViewportIndex", .value = 70, .parameters = &.{} },
1129 .{ .name = "UniformDecoration", .value = 71, .parameters = &.{} },
1130 .{ .name = "CoreBuiltinsARM", .value = 4165, .parameters = &.{} },
1131 .{ .name = "TileImageColorReadAccessEXT", .value = 4166, .parameters = &.{} },
1132 .{ .name = "TileImageDepthReadAccessEXT", .value = 4167, .parameters = &.{} },
1133 .{ .name = "TileImageStencilReadAccessEXT", .value = 4168, .parameters = &.{} },
1134 .{ .name = "TensorsARM", .value = 4174, .parameters = &.{} },
1135 .{ .name = "StorageTensorArrayDynamicIndexingARM", .value = 4175, .parameters = &.{} },
1136 .{ .name = "StorageTensorArrayNonUniformIndexingARM", .value = 4176, .parameters = &.{} },
1137 .{ .name = "GraphARM", .value = 4191, .parameters = &.{} },
1138 .{ .name = "CooperativeMatrixLayoutsARM", .value = 4201, .parameters = &.{} },
1139 .{ .name = "Float8EXT", .value = 4212, .parameters = &.{} },
1140 .{ .name = "Float8CooperativeMatrixEXT", .value = 4213, .parameters = &.{} },
1141 .{ .name = "FragmentShadingRateKHR", .value = 4422, .parameters = &.{} },
1142 .{ .name = "SubgroupBallotKHR", .value = 4423, .parameters = &.{} },
1143 .{ .name = "DrawParameters", .value = 4427, .parameters = &.{} },
1144 .{ .name = "WorkgroupMemoryExplicitLayoutKHR", .value = 4428, .parameters = &.{} },
1145 .{ .name = "WorkgroupMemoryExplicitLayout8BitAccessKHR", .value = 4429, .parameters = &.{} },
1146 .{ .name = "WorkgroupMemoryExplicitLayout16BitAccessKHR", .value = 4430, .parameters = &.{} },
1147 .{ .name = "SubgroupVoteKHR", .value = 4431, .parameters = &.{} },
1148 .{ .name = "StorageBuffer16BitAccess", .value = 4433, .parameters = &.{} },
1149 .{ .name = "UniformAndStorageBuffer16BitAccess", .value = 4434, .parameters = &.{} },
1150 .{ .name = "StoragePushConstant16", .value = 4435, .parameters = &.{} },
1151 .{ .name = "StorageInputOutput16", .value = 4436, .parameters = &.{} },
1152 .{ .name = "DeviceGroup", .value = 4437, .parameters = &.{} },
1153 .{ .name = "MultiView", .value = 4439, .parameters = &.{} },
1154 .{ .name = "VariablePointersStorageBuffer", .value = 4441, .parameters = &.{} },
1155 .{ .name = "VariablePointers", .value = 4442, .parameters = &.{} },
1156 .{ .name = "AtomicStorageOps", .value = 4445, .parameters = &.{} },
1157 .{ .name = "SampleMaskPostDepthCoverage", .value = 4447, .parameters = &.{} },
1158 .{ .name = "StorageBuffer8BitAccess", .value = 4448, .parameters = &.{} },
1159 .{ .name = "UniformAndStorageBuffer8BitAccess", .value = 4449, .parameters = &.{} },
1160 .{ .name = "StoragePushConstant8", .value = 4450, .parameters = &.{} },
1161 .{ .name = "DenormPreserve", .value = 4464, .parameters = &.{} },
1162 .{ .name = "DenormFlushToZero", .value = 4465, .parameters = &.{} },
1163 .{ .name = "SignedZeroInfNanPreserve", .value = 4466, .parameters = &.{} },
1164 .{ .name = "RoundingModeRTE", .value = 4467, .parameters = &.{} },
1165 .{ .name = "RoundingModeRTZ", .value = 4468, .parameters = &.{} },
1166 .{ .name = "RayQueryProvisionalKHR", .value = 4471, .parameters = &.{} },
1167 .{ .name = "RayQueryKHR", .value = 4472, .parameters = &.{} },
1168 .{ .name = "UntypedPointersKHR", .value = 4473, .parameters = &.{} },
1169 .{ .name = "RayTraversalPrimitiveCullingKHR", .value = 4478, .parameters = &.{} },
1170 .{ .name = "RayTracingKHR", .value = 4479, .parameters = &.{} },
1171 .{ .name = "TextureSampleWeightedQCOM", .value = 4484, .parameters = &.{} },
1172 .{ .name = "TextureBoxFilterQCOM", .value = 4485, .parameters = &.{} },
1173 .{ .name = "TextureBlockMatchQCOM", .value = 4486, .parameters = &.{} },
1174 .{ .name = "TileShadingQCOM", .value = 4495, .parameters = &.{} },
1175 .{ .name = "TextureBlockMatch2QCOM", .value = 4498, .parameters = &.{} },
1176 .{ .name = "Float16ImageAMD", .value = 5008, .parameters = &.{} },
1177 .{ .name = "ImageGatherBiasLodAMD", .value = 5009, .parameters = &.{} },
1178 .{ .name = "FragmentMaskAMD", .value = 5010, .parameters = &.{} },
1179 .{ .name = "StencilExportEXT", .value = 5013, .parameters = &.{} },
1180 .{ .name = "ImageReadWriteLodAMD", .value = 5015, .parameters = &.{} },
1181 .{ .name = "Int64ImageEXT", .value = 5016, .parameters = &.{} },
1182 .{ .name = "ShaderClockKHR", .value = 5055, .parameters = &.{} },
1183 .{ .name = "ShaderEnqueueAMDX", .value = 5067, .parameters = &.{} },
1184 .{ .name = "QuadControlKHR", .value = 5087, .parameters = &.{} },
1185 .{ .name = "Int4TypeINTEL", .value = 5112, .parameters = &.{} },
1186 .{ .name = "Int4CooperativeMatrixINTEL", .value = 5114, .parameters = &.{} },
1187 .{ .name = "BFloat16TypeKHR", .value = 5116, .parameters = &.{} },
1188 .{ .name = "BFloat16DotProductKHR", .value = 5117, .parameters = &.{} },
1189 .{ .name = "BFloat16CooperativeMatrixKHR", .value = 5118, .parameters = &.{} },
1190 .{ .name = "SampleMaskOverrideCoverageNV", .value = 5249, .parameters = &.{} },
1191 .{ .name = "GeometryShaderPassthroughNV", .value = 5251, .parameters = &.{} },
1192 .{ .name = "ShaderViewportIndexLayerEXT", .value = 5254, .parameters = &.{} },
1193 .{ .name = "ShaderViewportMaskNV", .value = 5255, .parameters = &.{} },
1194 .{ .name = "ShaderStereoViewNV", .value = 5259, .parameters = &.{} },
1195 .{ .name = "PerViewAttributesNV", .value = 5260, .parameters = &.{} },
1196 .{ .name = "FragmentFullyCoveredEXT", .value = 5265, .parameters = &.{} },
1197 .{ .name = "MeshShadingNV", .value = 5266, .parameters = &.{} },
1198 .{ .name = "ImageFootprintNV", .value = 5282, .parameters = &.{} },
1199 .{ .name = "MeshShadingEXT", .value = 5283, .parameters = &.{} },
1200 .{ .name = "FragmentBarycentricKHR", .value = 5284, .parameters = &.{} },
1201 .{ .name = "ComputeDerivativeGroupQuadsKHR", .value = 5288, .parameters = &.{} },
1202 .{ .name = "FragmentDensityEXT", .value = 5291, .parameters = &.{} },
1203 .{ .name = "GroupNonUniformPartitionedNV", .value = 5297, .parameters = &.{} },
1204 .{ .name = "ShaderNonUniform", .value = 5301, .parameters = &.{} },
1205 .{ .name = "RuntimeDescriptorArray", .value = 5302, .parameters = &.{} },
1206 .{ .name = "InputAttachmentArrayDynamicIndexing", .value = 5303, .parameters = &.{} },
1207 .{ .name = "UniformTexelBufferArrayDynamicIndexing", .value = 5304, .parameters = &.{} },
1208 .{ .name = "StorageTexelBufferArrayDynamicIndexing", .value = 5305, .parameters = &.{} },
1209 .{ .name = "UniformBufferArrayNonUniformIndexing", .value = 5306, .parameters = &.{} },
1210 .{ .name = "SampledImageArrayNonUniformIndexing", .value = 5307, .parameters = &.{} },
1211 .{ .name = "StorageBufferArrayNonUniformIndexing", .value = 5308, .parameters = &.{} },
1212 .{ .name = "StorageImageArrayNonUniformIndexing", .value = 5309, .parameters = &.{} },
1213 .{ .name = "InputAttachmentArrayNonUniformIndexing", .value = 5310, .parameters = &.{} },
1214 .{ .name = "UniformTexelBufferArrayNonUniformIndexing", .value = 5311, .parameters = &.{} },
1215 .{ .name = "StorageTexelBufferArrayNonUniformIndexing", .value = 5312, .parameters = &.{} },
1216 .{ .name = "RayTracingPositionFetchKHR", .value = 5336, .parameters = &.{} },
1217 .{ .name = "RayTracingNV", .value = 5340, .parameters = &.{} },
1218 .{ .name = "RayTracingMotionBlurNV", .value = 5341, .parameters = &.{} },
1219 .{ .name = "VulkanMemoryModel", .value = 5345, .parameters = &.{} },
1220 .{ .name = "VulkanMemoryModelDeviceScope", .value = 5346, .parameters = &.{} },
1221 .{ .name = "PhysicalStorageBufferAddresses", .value = 5347, .parameters = &.{} },
1222 .{ .name = "ComputeDerivativeGroupLinearKHR", .value = 5350, .parameters = &.{} },
1223 .{ .name = "RayTracingProvisionalKHR", .value = 5353, .parameters = &.{} },
1224 .{ .name = "CooperativeMatrixNV", .value = 5357, .parameters = &.{} },
1225 .{ .name = "FragmentShaderSampleInterlockEXT", .value = 5363, .parameters = &.{} },
1226 .{ .name = "FragmentShaderShadingRateInterlockEXT", .value = 5372, .parameters = &.{} },
1227 .{ .name = "ShaderSMBuiltinsNV", .value = 5373, .parameters = &.{} },
1228 .{ .name = "FragmentShaderPixelInterlockEXT", .value = 5378, .parameters = &.{} },
1229 .{ .name = "DemoteToHelperInvocation", .value = 5379, .parameters = &.{} },
1230 .{ .name = "DisplacementMicromapNV", .value = 5380, .parameters = &.{} },
1231 .{ .name = "RayTracingOpacityMicromapEXT", .value = 5381, .parameters = &.{} },
1232 .{ .name = "ShaderInvocationReorderNV", .value = 5383, .parameters = &.{} },
1233 .{ .name = "BindlessTextureNV", .value = 5390, .parameters = &.{} },
1234 .{ .name = "RayQueryPositionFetchKHR", .value = 5391, .parameters = &.{} },
1235 .{ .name = "CooperativeVectorNV", .value = 5394, .parameters = &.{} },
1236 .{ .name = "AtomicFloat16VectorNV", .value = 5404, .parameters = &.{} },
1237 .{ .name = "RayTracingDisplacementMicromapNV", .value = 5409, .parameters = &.{} },
1238 .{ .name = "RawAccessChainsNV", .value = 5414, .parameters = &.{} },
1239 .{ .name = "RayTracingSpheresGeometryNV", .value = 5418, .parameters = &.{} },
1240 .{ .name = "RayTracingLinearSweptSpheresGeometryNV", .value = 5419, .parameters = &.{} },
1241 .{ .name = "CooperativeMatrixReductionsNV", .value = 5430, .parameters = &.{} },
1242 .{ .name = "CooperativeMatrixConversionsNV", .value = 5431, .parameters = &.{} },
1243 .{ .name = "CooperativeMatrixPerElementOperationsNV", .value = 5432, .parameters = &.{} },
1244 .{ .name = "CooperativeMatrixTensorAddressingNV", .value = 5433, .parameters = &.{} },
1245 .{ .name = "CooperativeMatrixBlockLoadsNV", .value = 5434, .parameters = &.{} },
1246 .{ .name = "CooperativeVectorTrainingNV", .value = 5435, .parameters = &.{} },
1247 .{ .name = "RayTracingClusterAccelerationStructureNV", .value = 5437, .parameters = &.{} },
1248 .{ .name = "TensorAddressingNV", .value = 5439, .parameters = &.{} },
1249 .{ .name = "SubgroupShuffleINTEL", .value = 5568, .parameters = &.{} },
1250 .{ .name = "SubgroupBufferBlockIOINTEL", .value = 5569, .parameters = &.{} },
1251 .{ .name = "SubgroupImageBlockIOINTEL", .value = 5570, .parameters = &.{} },
1252 .{ .name = "SubgroupImageMediaBlockIOINTEL", .value = 5579, .parameters = &.{} },
1253 .{ .name = "RoundToInfinityINTEL", .value = 5582, .parameters = &.{} },
1254 .{ .name = "FloatingPointModeINTEL", .value = 5583, .parameters = &.{} },
1255 .{ .name = "IntegerFunctions2INTEL", .value = 5584, .parameters = &.{} },
1256 .{ .name = "FunctionPointersINTEL", .value = 5603, .parameters = &.{} },
1257 .{ .name = "IndirectReferencesINTEL", .value = 5604, .parameters = &.{} },
1258 .{ .name = "AsmINTEL", .value = 5606, .parameters = &.{} },
1259 .{ .name = "AtomicFloat32MinMaxEXT", .value = 5612, .parameters = &.{} },
1260 .{ .name = "AtomicFloat64MinMaxEXT", .value = 5613, .parameters = &.{} },
1261 .{ .name = "AtomicFloat16MinMaxEXT", .value = 5616, .parameters = &.{} },
1262 .{ .name = "VectorComputeINTEL", .value = 5617, .parameters = &.{} },
1263 .{ .name = "VectorAnyINTEL", .value = 5619, .parameters = &.{} },
1264 .{ .name = "ExpectAssumeKHR", .value = 5629, .parameters = &.{} },
1265 .{ .name = "SubgroupAvcMotionEstimationINTEL", .value = 5696, .parameters = &.{} },
1266 .{ .name = "SubgroupAvcMotionEstimationIntraINTEL", .value = 5697, .parameters = &.{} },
1267 .{ .name = "SubgroupAvcMotionEstimationChromaINTEL", .value = 5698, .parameters = &.{} },
1268 .{ .name = "VariableLengthArrayINTEL", .value = 5817, .parameters = &.{} },
1269 .{ .name = "FunctionFloatControlINTEL", .value = 5821, .parameters = &.{} },
1270 .{ .name = "FPGAMemoryAttributesINTEL", .value = 5824, .parameters = &.{} },
1271 .{ .name = "FPFastMathModeINTEL", .value = 5837, .parameters = &.{} },
1272 .{ .name = "ArbitraryPrecisionIntegersINTEL", .value = 5844, .parameters = &.{} },
1273 .{ .name = "ArbitraryPrecisionFloatingPointINTEL", .value = 5845, .parameters = &.{} },
1274 .{ .name = "UnstructuredLoopControlsINTEL", .value = 5886, .parameters = &.{} },
1275 .{ .name = "FPGALoopControlsINTEL", .value = 5888, .parameters = &.{} },
1276 .{ .name = "KernelAttributesINTEL", .value = 5892, .parameters = &.{} },
1277 .{ .name = "FPGAKernelAttributesINTEL", .value = 5897, .parameters = &.{} },
1278 .{ .name = "FPGAMemoryAccessesINTEL", .value = 5898, .parameters = &.{} },
1279 .{ .name = "FPGAClusterAttributesINTEL", .value = 5904, .parameters = &.{} },
1280 .{ .name = "LoopFuseINTEL", .value = 5906, .parameters = &.{} },
1281 .{ .name = "FPGADSPControlINTEL", .value = 5908, .parameters = &.{} },
1282 .{ .name = "MemoryAccessAliasingINTEL", .value = 5910, .parameters = &.{} },
1283 .{ .name = "FPGAInvocationPipeliningAttributesINTEL", .value = 5916, .parameters = &.{} },
1284 .{ .name = "FPGABufferLocationINTEL", .value = 5920, .parameters = &.{} },
1285 .{ .name = "ArbitraryPrecisionFixedPointINTEL", .value = 5922, .parameters = &.{} },
1286 .{ .name = "USMStorageClassesINTEL", .value = 5935, .parameters = &.{} },
1287 .{ .name = "RuntimeAlignedAttributeINTEL", .value = 5939, .parameters = &.{} },
1288 .{ .name = "IOPipesINTEL", .value = 5943, .parameters = &.{} },
1289 .{ .name = "BlockingPipesINTEL", .value = 5945, .parameters = &.{} },
1290 .{ .name = "FPGARegINTEL", .value = 5948, .parameters = &.{} },
1291 .{ .name = "DotProductInputAll", .value = 6016, .parameters = &.{} },
1292 .{ .name = "DotProductInput4x8Bit", .value = 6017, .parameters = &.{} },
1293 .{ .name = "DotProductInput4x8BitPacked", .value = 6018, .parameters = &.{} },
1294 .{ .name = "DotProduct", .value = 6019, .parameters = &.{} },
1295 .{ .name = "RayCullMaskKHR", .value = 6020, .parameters = &.{} },
1296 .{ .name = "CooperativeMatrixKHR", .value = 6022, .parameters = &.{} },
1297 .{ .name = "ReplicatedCompositesEXT", .value = 6024, .parameters = &.{} },
1298 .{ .name = "BitInstructions", .value = 6025, .parameters = &.{} },
1299 .{ .name = "GroupNonUniformRotateKHR", .value = 6026, .parameters = &.{} },
1300 .{ .name = "FloatControls2", .value = 6029, .parameters = &.{} },
1301 .{ .name = "AtomicFloat32AddEXT", .value = 6033, .parameters = &.{} },
1302 .{ .name = "AtomicFloat64AddEXT", .value = 6034, .parameters = &.{} },
1303 .{ .name = "LongCompositesINTEL", .value = 6089, .parameters = &.{} },
1304 .{ .name = "OptNoneEXT", .value = 6094, .parameters = &.{} },
1305 .{ .name = "AtomicFloat16AddEXT", .value = 6095, .parameters = &.{} },
1306 .{ .name = "DebugInfoModuleINTEL", .value = 6114, .parameters = &.{} },
1307 .{ .name = "BFloat16ConversionINTEL", .value = 6115, .parameters = &.{} },
1308 .{ .name = "SplitBarrierINTEL", .value = 6141, .parameters = &.{} },
1309 .{ .name = "ArithmeticFenceEXT", .value = 6144, .parameters = &.{} },
1310 .{ .name = "FPGAClusterAttributesV2INTEL", .value = 6150, .parameters = &.{} },
1311 .{ .name = "FPGAKernelAttributesv2INTEL", .value = 6161, .parameters = &.{} },
1312 .{ .name = "TaskSequenceINTEL", .value = 6162, .parameters = &.{} },
1313 .{ .name = "FPMaxErrorINTEL", .value = 6169, .parameters = &.{} },
1314 .{ .name = "FPGALatencyControlINTEL", .value = 6171, .parameters = &.{} },
1315 .{ .name = "FPGAArgumentInterfacesINTEL", .value = 6174, .parameters = &.{} },
1316 .{ .name = "GlobalVariableHostAccessINTEL", .value = 6187, .parameters = &.{} },
1317 .{ .name = "GlobalVariableFPGADecorationsINTEL", .value = 6189, .parameters = &.{} },
1318 .{ .name = "SubgroupBufferPrefetchINTEL", .value = 6220, .parameters = &.{} },
1319 .{ .name = "Subgroup2DBlockIOINTEL", .value = 6228, .parameters = &.{} },
1320 .{ .name = "Subgroup2DBlockTransformINTEL", .value = 6229, .parameters = &.{} },
1321 .{ .name = "Subgroup2DBlockTransposeINTEL", .value = 6230, .parameters = &.{} },
1322 .{ .name = "SubgroupMatrixMultiplyAccumulateINTEL", .value = 6236, .parameters = &.{} },
1323 .{ .name = "TernaryBitwiseFunctionINTEL", .value = 6241, .parameters = &.{} },
1324 .{ .name = "GroupUniformArithmeticKHR", .value = 6400, .parameters = &.{} },
1325 .{ .name = "TensorFloat32RoundingINTEL", .value = 6425, .parameters = &.{} },
1326 .{ .name = "MaskedGatherScatterINTEL", .value = 6427, .parameters = &.{} },
1327 .{ .name = "CacheControlsINTEL", .value = 6441, .parameters = &.{} },
1328 .{ .name = "RegisterLimitsINTEL", .value = 6460, .parameters = &.{} },
1329 .{ .name = "BindlessImagesINTEL", .value = 6528, .parameters = &.{} },
7681330 },
769 .Decoration => &[_]Enumerant{
770 .{ .name = "RelaxedPrecision", .value = 0, .parameters = &[_]OperandKind{} },
771 .{ .name = "SpecId", .value = 1, .parameters = &[_]OperandKind{.LiteralInteger} },
772 .{ .name = "Block", .value = 2, .parameters = &[_]OperandKind{} },
773 .{ .name = "BufferBlock", .value = 3, .parameters = &[_]OperandKind{} },
774 .{ .name = "RowMajor", .value = 4, .parameters = &[_]OperandKind{} },
775 .{ .name = "ColMajor", .value = 5, .parameters = &[_]OperandKind{} },
776 .{ .name = "ArrayStride", .value = 6, .parameters = &[_]OperandKind{.LiteralInteger} },
777 .{ .name = "MatrixStride", .value = 7, .parameters = &[_]OperandKind{.LiteralInteger} },
778 .{ .name = "GLSLShared", .value = 8, .parameters = &[_]OperandKind{} },
779 .{ .name = "GLSLPacked", .value = 9, .parameters = &[_]OperandKind{} },
780 .{ .name = "CPacked", .value = 10, .parameters = &[_]OperandKind{} },
781 .{ .name = "BuiltIn", .value = 11, .parameters = &[_]OperandKind{.BuiltIn} },
782 .{ .name = "NoPerspective", .value = 13, .parameters = &[_]OperandKind{} },
783 .{ .name = "Flat", .value = 14, .parameters = &[_]OperandKind{} },
784 .{ .name = "Patch", .value = 15, .parameters = &[_]OperandKind{} },
785 .{ .name = "Centroid", .value = 16, .parameters = &[_]OperandKind{} },
786 .{ .name = "Sample", .value = 17, .parameters = &[_]OperandKind{} },
787 .{ .name = "Invariant", .value = 18, .parameters = &[_]OperandKind{} },
788 .{ .name = "Restrict", .value = 19, .parameters = &[_]OperandKind{} },
789 .{ .name = "Aliased", .value = 20, .parameters = &[_]OperandKind{} },
790 .{ .name = "Volatile", .value = 21, .parameters = &[_]OperandKind{} },
791 .{ .name = "Constant", .value = 22, .parameters = &[_]OperandKind{} },
792 .{ .name = "Coherent", .value = 23, .parameters = &[_]OperandKind{} },
793 .{ .name = "NonWritable", .value = 24, .parameters = &[_]OperandKind{} },
794 .{ .name = "NonReadable", .value = 25, .parameters = &[_]OperandKind{} },
795 .{ .name = "Uniform", .value = 26, .parameters = &[_]OperandKind{} },
796 .{ .name = "UniformId", .value = 27, .parameters = &[_]OperandKind{.IdScope} },
797 .{ .name = "SaturatedConversion", .value = 28, .parameters = &[_]OperandKind{} },
798 .{ .name = "Stream", .value = 29, .parameters = &[_]OperandKind{.LiteralInteger} },
799 .{ .name = "Location", .value = 30, .parameters = &[_]OperandKind{.LiteralInteger} },
800 .{ .name = "Component", .value = 31, .parameters = &[_]OperandKind{.LiteralInteger} },
801 .{ .name = "Index", .value = 32, .parameters = &[_]OperandKind{.LiteralInteger} },
802 .{ .name = "Binding", .value = 33, .parameters = &[_]OperandKind{.LiteralInteger} },
803 .{ .name = "DescriptorSet", .value = 34, .parameters = &[_]OperandKind{.LiteralInteger} },
804 .{ .name = "Offset", .value = 35, .parameters = &[_]OperandKind{.LiteralInteger} },
805 .{ .name = "XfbBuffer", .value = 36, .parameters = &[_]OperandKind{.LiteralInteger} },
806 .{ .name = "XfbStride", .value = 37, .parameters = &[_]OperandKind{.LiteralInteger} },
807 .{ .name = "FuncParamAttr", .value = 38, .parameters = &[_]OperandKind{.FunctionParameterAttribute} },
808 .{ .name = "FPRoundingMode", .value = 39, .parameters = &[_]OperandKind{.FPRoundingMode} },
809 .{ .name = "FPFastMathMode", .value = 40, .parameters = &[_]OperandKind{.FPFastMathMode} },
810 .{ .name = "LinkageAttributes", .value = 41, .parameters = &[_]OperandKind{ .LiteralString, .LinkageType } },
811 .{ .name = "NoContraction", .value = 42, .parameters = &[_]OperandKind{} },
812 .{ .name = "InputAttachmentIndex", .value = 43, .parameters = &[_]OperandKind{.LiteralInteger} },
813 .{ .name = "Alignment", .value = 44, .parameters = &[_]OperandKind{.LiteralInteger} },
814 .{ .name = "MaxByteOffset", .value = 45, .parameters = &[_]OperandKind{.LiteralInteger} },
815 .{ .name = "AlignmentId", .value = 46, .parameters = &[_]OperandKind{.IdRef} },
816 .{ .name = "MaxByteOffsetId", .value = 47, .parameters = &[_]OperandKind{.IdRef} },
817 .{ .name = "NoSignedWrap", .value = 4469, .parameters = &[_]OperandKind{} },
818 .{ .name = "NoUnsignedWrap", .value = 4470, .parameters = &[_]OperandKind{} },
819 .{ .name = "WeightTextureQCOM", .value = 4487, .parameters = &[_]OperandKind{} },
820 .{ .name = "BlockMatchTextureQCOM", .value = 4488, .parameters = &[_]OperandKind{} },
821 .{ .name = "BlockMatchSamplerQCOM", .value = 4499, .parameters = &[_]OperandKind{} },
822 .{ .name = "ExplicitInterpAMD", .value = 4999, .parameters = &[_]OperandKind{} },
823 .{ .name = "NodeSharesPayloadLimitsWithAMDX", .value = 5019, .parameters = &[_]OperandKind{.IdRef} },
824 .{ .name = "NodeMaxPayloadsAMDX", .value = 5020, .parameters = &[_]OperandKind{.IdRef} },
825 .{ .name = "TrackFinishWritingAMDX", .value = 5078, .parameters = &[_]OperandKind{} },
826 .{ .name = "PayloadNodeNameAMDX", .value = 5091, .parameters = &[_]OperandKind{.LiteralString} },
827 .{ .name = "OverrideCoverageNV", .value = 5248, .parameters = &[_]OperandKind{} },
828 .{ .name = "PassthroughNV", .value = 5250, .parameters = &[_]OperandKind{} },
829 .{ .name = "ViewportRelativeNV", .value = 5252, .parameters = &[_]OperandKind{} },
830 .{ .name = "SecondaryViewportRelativeNV", .value = 5256, .parameters = &[_]OperandKind{.LiteralInteger} },
831 .{ .name = "PerPrimitiveNV", .value = 5271, .parameters = &[_]OperandKind{} },
832 .{ .name = "PerPrimitiveEXT", .value = 5271, .parameters = &[_]OperandKind{} },
833 .{ .name = "PerViewNV", .value = 5272, .parameters = &[_]OperandKind{} },
834 .{ .name = "PerTaskNV", .value = 5273, .parameters = &[_]OperandKind{} },
835 .{ .name = "PerVertexKHR", .value = 5285, .parameters = &[_]OperandKind{} },
836 .{ .name = "PerVertexNV", .value = 5285, .parameters = &[_]OperandKind{} },
837 .{ .name = "NonUniform", .value = 5300, .parameters = &[_]OperandKind{} },
838 .{ .name = "NonUniformEXT", .value = 5300, .parameters = &[_]OperandKind{} },
839 .{ .name = "RestrictPointer", .value = 5355, .parameters = &[_]OperandKind{} },
840 .{ .name = "RestrictPointerEXT", .value = 5355, .parameters = &[_]OperandKind{} },
841 .{ .name = "AliasedPointer", .value = 5356, .parameters = &[_]OperandKind{} },
842 .{ .name = "AliasedPointerEXT", .value = 5356, .parameters = &[_]OperandKind{} },
843 .{ .name = "HitObjectShaderRecordBufferNV", .value = 5386, .parameters = &[_]OperandKind{} },
844 .{ .name = "BindlessSamplerNV", .value = 5398, .parameters = &[_]OperandKind{} },
845 .{ .name = "BindlessImageNV", .value = 5399, .parameters = &[_]OperandKind{} },
846 .{ .name = "BoundSamplerNV", .value = 5400, .parameters = &[_]OperandKind{} },
847 .{ .name = "BoundImageNV", .value = 5401, .parameters = &[_]OperandKind{} },
848 .{ .name = "SIMTCallINTEL", .value = 5599, .parameters = &[_]OperandKind{.LiteralInteger} },
849 .{ .name = "ReferencedIndirectlyINTEL", .value = 5602, .parameters = &[_]OperandKind{} },
850 .{ .name = "ClobberINTEL", .value = 5607, .parameters = &[_]OperandKind{.LiteralString} },
851 .{ .name = "SideEffectsINTEL", .value = 5608, .parameters = &[_]OperandKind{} },
852 .{ .name = "VectorComputeVariableINTEL", .value = 5624, .parameters = &[_]OperandKind{} },
853 .{ .name = "FuncParamIOKindINTEL", .value = 5625, .parameters = &[_]OperandKind{.LiteralInteger} },
854 .{ .name = "VectorComputeFunctionINTEL", .value = 5626, .parameters = &[_]OperandKind{} },
855 .{ .name = "StackCallINTEL", .value = 5627, .parameters = &[_]OperandKind{} },
856 .{ .name = "GlobalVariableOffsetINTEL", .value = 5628, .parameters = &[_]OperandKind{.LiteralInteger} },
857 .{ .name = "CounterBuffer", .value = 5634, .parameters = &[_]OperandKind{.IdRef} },
858 .{ .name = "HlslCounterBufferGOOGLE", .value = 5634, .parameters = &[_]OperandKind{.IdRef} },
859 .{ .name = "UserSemantic", .value = 5635, .parameters = &[_]OperandKind{.LiteralString} },
860 .{ .name = "HlslSemanticGOOGLE", .value = 5635, .parameters = &[_]OperandKind{.LiteralString} },
861 .{ .name = "UserTypeGOOGLE", .value = 5636, .parameters = &[_]OperandKind{.LiteralString} },
862 .{ .name = "FunctionRoundingModeINTEL", .value = 5822, .parameters = &[_]OperandKind{ .LiteralInteger, .FPRoundingMode } },
863 .{ .name = "FunctionDenormModeINTEL", .value = 5823, .parameters = &[_]OperandKind{ .LiteralInteger, .FPDenormMode } },
864 .{ .name = "RegisterINTEL", .value = 5825, .parameters = &[_]OperandKind{} },
865 .{ .name = "MemoryINTEL", .value = 5826, .parameters = &[_]OperandKind{.LiteralString} },
866 .{ .name = "NumbanksINTEL", .value = 5827, .parameters = &[_]OperandKind{.LiteralInteger} },
867 .{ .name = "BankwidthINTEL", .value = 5828, .parameters = &[_]OperandKind{.LiteralInteger} },
868 .{ .name = "MaxPrivateCopiesINTEL", .value = 5829, .parameters = &[_]OperandKind{.LiteralInteger} },
869 .{ .name = "SinglepumpINTEL", .value = 5830, .parameters = &[_]OperandKind{} },
870 .{ .name = "DoublepumpINTEL", .value = 5831, .parameters = &[_]OperandKind{} },
871 .{ .name = "MaxReplicatesINTEL", .value = 5832, .parameters = &[_]OperandKind{.LiteralInteger} },
872 .{ .name = "SimpleDualPortINTEL", .value = 5833, .parameters = &[_]OperandKind{} },
873 .{ .name = "MergeINTEL", .value = 5834, .parameters = &[_]OperandKind{ .LiteralString, .LiteralString } },
874 .{ .name = "BankBitsINTEL", .value = 5835, .parameters = &[_]OperandKind{.LiteralInteger} },
875 .{ .name = "ForcePow2DepthINTEL", .value = 5836, .parameters = &[_]OperandKind{.LiteralInteger} },
876 .{ .name = "StridesizeINTEL", .value = 5883, .parameters = &[_]OperandKind{.LiteralInteger} },
877 .{ .name = "WordsizeINTEL", .value = 5884, .parameters = &[_]OperandKind{.LiteralInteger} },
878 .{ .name = "TrueDualPortINTEL", .value = 5885, .parameters = &[_]OperandKind{} },
879 .{ .name = "BurstCoalesceINTEL", .value = 5899, .parameters = &[_]OperandKind{} },
880 .{ .name = "CacheSizeINTEL", .value = 5900, .parameters = &[_]OperandKind{.LiteralInteger} },
881 .{ .name = "DontStaticallyCoalesceINTEL", .value = 5901, .parameters = &[_]OperandKind{} },
882 .{ .name = "PrefetchINTEL", .value = 5902, .parameters = &[_]OperandKind{.LiteralInteger} },
883 .{ .name = "StallEnableINTEL", .value = 5905, .parameters = &[_]OperandKind{} },
884 .{ .name = "FuseLoopsInFunctionINTEL", .value = 5907, .parameters = &[_]OperandKind{} },
885 .{ .name = "MathOpDSPModeINTEL", .value = 5909, .parameters = &[_]OperandKind{ .LiteralInteger, .LiteralInteger } },
886 .{ .name = "AliasScopeINTEL", .value = 5914, .parameters = &[_]OperandKind{.IdRef} },
887 .{ .name = "NoAliasINTEL", .value = 5915, .parameters = &[_]OperandKind{.IdRef} },
888 .{ .name = "InitiationIntervalINTEL", .value = 5917, .parameters = &[_]OperandKind{.LiteralInteger} },
889 .{ .name = "MaxConcurrencyINTEL", .value = 5918, .parameters = &[_]OperandKind{.LiteralInteger} },
890 .{ .name = "PipelineEnableINTEL", .value = 5919, .parameters = &[_]OperandKind{.LiteralInteger} },
891 .{ .name = "BufferLocationINTEL", .value = 5921, .parameters = &[_]OperandKind{.LiteralInteger} },
892 .{ .name = "IOPipeStorageINTEL", .value = 5944, .parameters = &[_]OperandKind{.LiteralInteger} },
893 .{ .name = "FunctionFloatingPointModeINTEL", .value = 6080, .parameters = &[_]OperandKind{ .LiteralInteger, .FPOperationMode } },
894 .{ .name = "SingleElementVectorINTEL", .value = 6085, .parameters = &[_]OperandKind{} },
895 .{ .name = "VectorComputeCallableFunctionINTEL", .value = 6087, .parameters = &[_]OperandKind{} },
896 .{ .name = "MediaBlockIOINTEL", .value = 6140, .parameters = &[_]OperandKind{} },
897 .{ .name = "StallFreeINTEL", .value = 6151, .parameters = &[_]OperandKind{} },
898 .{ .name = "FPMaxErrorDecorationINTEL", .value = 6170, .parameters = &[_]OperandKind{.LiteralFloat} },
899 .{ .name = "LatencyControlLabelINTEL", .value = 6172, .parameters = &[_]OperandKind{.LiteralInteger} },
900 .{ .name = "LatencyControlConstraintINTEL", .value = 6173, .parameters = &[_]OperandKind{ .LiteralInteger, .LiteralInteger, .LiteralInteger } },
901 .{ .name = "ConduitKernelArgumentINTEL", .value = 6175, .parameters = &[_]OperandKind{} },
902 .{ .name = "RegisterMapKernelArgumentINTEL", .value = 6176, .parameters = &[_]OperandKind{} },
903 .{ .name = "MMHostInterfaceAddressWidthINTEL", .value = 6177, .parameters = &[_]OperandKind{.LiteralInteger} },
904 .{ .name = "MMHostInterfaceDataWidthINTEL", .value = 6178, .parameters = &[_]OperandKind{.LiteralInteger} },
905 .{ .name = "MMHostInterfaceLatencyINTEL", .value = 6179, .parameters = &[_]OperandKind{.LiteralInteger} },
906 .{ .name = "MMHostInterfaceReadWriteModeINTEL", .value = 6180, .parameters = &[_]OperandKind{.AccessQualifier} },
907 .{ .name = "MMHostInterfaceMaxBurstINTEL", .value = 6181, .parameters = &[_]OperandKind{.LiteralInteger} },
908 .{ .name = "MMHostInterfaceWaitRequestINTEL", .value = 6182, .parameters = &[_]OperandKind{.LiteralInteger} },
909 .{ .name = "StableKernelArgumentINTEL", .value = 6183, .parameters = &[_]OperandKind{} },
910 .{ .name = "HostAccessINTEL", .value = 6188, .parameters = &[_]OperandKind{ .HostAccessQualifier, .LiteralString } },
911 .{ .name = "InitModeINTEL", .value = 6190, .parameters = &[_]OperandKind{.InitializationModeQualifier} },
912 .{ .name = "ImplementInRegisterMapINTEL", .value = 6191, .parameters = &[_]OperandKind{.LiteralInteger} },
913 .{ .name = "CacheControlLoadINTEL", .value = 6442, .parameters = &[_]OperandKind{ .LiteralInteger, .LoadCacheControl } },
914 .{ .name = "CacheControlStoreINTEL", .value = 6443, .parameters = &[_]OperandKind{ .LiteralInteger, .StoreCacheControl } },
1331 .ray_query_intersection => &.{
1332 .{ .name = "RayQueryCandidateIntersectionKHR", .value = 0, .parameters = &.{} },
1333 .{ .name = "RayQueryCommittedIntersectionKHR", .value = 1, .parameters = &.{} },
9151334 },
916 .BuiltIn => &[_]Enumerant{
917 .{ .name = "Position", .value = 0, .parameters = &[_]OperandKind{} },
918 .{ .name = "PointSize", .value = 1, .parameters = &[_]OperandKind{} },
919 .{ .name = "ClipDistance", .value = 3, .parameters = &[_]OperandKind{} },
920 .{ .name = "CullDistance", .value = 4, .parameters = &[_]OperandKind{} },
921 .{ .name = "VertexId", .value = 5, .parameters = &[_]OperandKind{} },
922 .{ .name = "InstanceId", .value = 6, .parameters = &[_]OperandKind{} },
923 .{ .name = "PrimitiveId", .value = 7, .parameters = &[_]OperandKind{} },
924 .{ .name = "InvocationId", .value = 8, .parameters = &[_]OperandKind{} },
925 .{ .name = "Layer", .value = 9, .parameters = &[_]OperandKind{} },
926 .{ .name = "ViewportIndex", .value = 10, .parameters = &[_]OperandKind{} },
927 .{ .name = "TessLevelOuter", .value = 11, .parameters = &[_]OperandKind{} },
928 .{ .name = "TessLevelInner", .value = 12, .parameters = &[_]OperandKind{} },
929 .{ .name = "TessCoord", .value = 13, .parameters = &[_]OperandKind{} },
930 .{ .name = "PatchVertices", .value = 14, .parameters = &[_]OperandKind{} },
931 .{ .name = "FragCoord", .value = 15, .parameters = &[_]OperandKind{} },
932 .{ .name = "PointCoord", .value = 16, .parameters = &[_]OperandKind{} },
933 .{ .name = "FrontFacing", .value = 17, .parameters = &[_]OperandKind{} },
934 .{ .name = "SampleId", .value = 18, .parameters = &[_]OperandKind{} },
935 .{ .name = "SamplePosition", .value = 19, .parameters = &[_]OperandKind{} },
936 .{ .name = "SampleMask", .value = 20, .parameters = &[_]OperandKind{} },
937 .{ .name = "FragDepth", .value = 22, .parameters = &[_]OperandKind{} },
938 .{ .name = "HelperInvocation", .value = 23, .parameters = &[_]OperandKind{} },
939 .{ .name = "NumWorkgroups", .value = 24, .parameters = &[_]OperandKind{} },
940 .{ .name = "WorkgroupSize", .value = 25, .parameters = &[_]OperandKind{} },
941 .{ .name = "WorkgroupId", .value = 26, .parameters = &[_]OperandKind{} },
942 .{ .name = "LocalInvocationId", .value = 27, .parameters = &[_]OperandKind{} },
943 .{ .name = "GlobalInvocationId", .value = 28, .parameters = &[_]OperandKind{} },
944 .{ .name = "LocalInvocationIndex", .value = 29, .parameters = &[_]OperandKind{} },
945 .{ .name = "WorkDim", .value = 30, .parameters = &[_]OperandKind{} },
946 .{ .name = "GlobalSize", .value = 31, .parameters = &[_]OperandKind{} },
947 .{ .name = "EnqueuedWorkgroupSize", .value = 32, .parameters = &[_]OperandKind{} },
948 .{ .name = "GlobalOffset", .value = 33, .parameters = &[_]OperandKind{} },
949 .{ .name = "GlobalLinearId", .value = 34, .parameters = &[_]OperandKind{} },
950 .{ .name = "SubgroupSize", .value = 36, .parameters = &[_]OperandKind{} },
951 .{ .name = "SubgroupMaxSize", .value = 37, .parameters = &[_]OperandKind{} },
952 .{ .name = "NumSubgroups", .value = 38, .parameters = &[_]OperandKind{} },
953 .{ .name = "NumEnqueuedSubgroups", .value = 39, .parameters = &[_]OperandKind{} },
954 .{ .name = "SubgroupId", .value = 40, .parameters = &[_]OperandKind{} },
955 .{ .name = "SubgroupLocalInvocationId", .value = 41, .parameters = &[_]OperandKind{} },
956 .{ .name = "VertexIndex", .value = 42, .parameters = &[_]OperandKind{} },
957 .{ .name = "InstanceIndex", .value = 43, .parameters = &[_]OperandKind{} },
958 .{ .name = "CoreIDARM", .value = 4160, .parameters = &[_]OperandKind{} },
959 .{ .name = "CoreCountARM", .value = 4161, .parameters = &[_]OperandKind{} },
960 .{ .name = "CoreMaxIDARM", .value = 4162, .parameters = &[_]OperandKind{} },
961 .{ .name = "WarpIDARM", .value = 4163, .parameters = &[_]OperandKind{} },
962 .{ .name = "WarpMaxIDARM", .value = 4164, .parameters = &[_]OperandKind{} },
963 .{ .name = "SubgroupEqMask", .value = 4416, .parameters = &[_]OperandKind{} },
964 .{ .name = "SubgroupEqMaskKHR", .value = 4416, .parameters = &[_]OperandKind{} },
965 .{ .name = "SubgroupGeMask", .value = 4417, .parameters = &[_]OperandKind{} },
966 .{ .name = "SubgroupGeMaskKHR", .value = 4417, .parameters = &[_]OperandKind{} },
967 .{ .name = "SubgroupGtMask", .value = 4418, .parameters = &[_]OperandKind{} },
968 .{ .name = "SubgroupGtMaskKHR", .value = 4418, .parameters = &[_]OperandKind{} },
969 .{ .name = "SubgroupLeMask", .value = 4419, .parameters = &[_]OperandKind{} },
970 .{ .name = "SubgroupLeMaskKHR", .value = 4419, .parameters = &[_]OperandKind{} },
971 .{ .name = "SubgroupLtMask", .value = 4420, .parameters = &[_]OperandKind{} },
972 .{ .name = "SubgroupLtMaskKHR", .value = 4420, .parameters = &[_]OperandKind{} },
973 .{ .name = "BaseVertex", .value = 4424, .parameters = &[_]OperandKind{} },
974 .{ .name = "BaseInstance", .value = 4425, .parameters = &[_]OperandKind{} },
975 .{ .name = "DrawIndex", .value = 4426, .parameters = &[_]OperandKind{} },
976 .{ .name = "PrimitiveShadingRateKHR", .value = 4432, .parameters = &[_]OperandKind{} },
977 .{ .name = "DeviceIndex", .value = 4438, .parameters = &[_]OperandKind{} },
978 .{ .name = "ViewIndex", .value = 4440, .parameters = &[_]OperandKind{} },
979 .{ .name = "ShadingRateKHR", .value = 4444, .parameters = &[_]OperandKind{} },
980 .{ .name = "BaryCoordNoPerspAMD", .value = 4992, .parameters = &[_]OperandKind{} },
981 .{ .name = "BaryCoordNoPerspCentroidAMD", .value = 4993, .parameters = &[_]OperandKind{} },
982 .{ .name = "BaryCoordNoPerspSampleAMD", .value = 4994, .parameters = &[_]OperandKind{} },
983 .{ .name = "BaryCoordSmoothAMD", .value = 4995, .parameters = &[_]OperandKind{} },
984 .{ .name = "BaryCoordSmoothCentroidAMD", .value = 4996, .parameters = &[_]OperandKind{} },
985 .{ .name = "BaryCoordSmoothSampleAMD", .value = 4997, .parameters = &[_]OperandKind{} },
986 .{ .name = "BaryCoordPullModelAMD", .value = 4998, .parameters = &[_]OperandKind{} },
987 .{ .name = "FragStencilRefEXT", .value = 5014, .parameters = &[_]OperandKind{} },
988 .{ .name = "CoalescedInputCountAMDX", .value = 5021, .parameters = &[_]OperandKind{} },
989 .{ .name = "ShaderIndexAMDX", .value = 5073, .parameters = &[_]OperandKind{} },
990 .{ .name = "ViewportMaskNV", .value = 5253, .parameters = &[_]OperandKind{} },
991 .{ .name = "SecondaryPositionNV", .value = 5257, .parameters = &[_]OperandKind{} },
992 .{ .name = "SecondaryViewportMaskNV", .value = 5258, .parameters = &[_]OperandKind{} },
993 .{ .name = "PositionPerViewNV", .value = 5261, .parameters = &[_]OperandKind{} },
994 .{ .name = "ViewportMaskPerViewNV", .value = 5262, .parameters = &[_]OperandKind{} },
995 .{ .name = "FullyCoveredEXT", .value = 5264, .parameters = &[_]OperandKind{} },
996 .{ .name = "TaskCountNV", .value = 5274, .parameters = &[_]OperandKind{} },
997 .{ .name = "PrimitiveCountNV", .value = 5275, .parameters = &[_]OperandKind{} },
998 .{ .name = "PrimitiveIndicesNV", .value = 5276, .parameters = &[_]OperandKind{} },
999 .{ .name = "ClipDistancePerViewNV", .value = 5277, .parameters = &[_]OperandKind{} },
1000 .{ .name = "CullDistancePerViewNV", .value = 5278, .parameters = &[_]OperandKind{} },
1001 .{ .name = "LayerPerViewNV", .value = 5279, .parameters = &[_]OperandKind{} },
1002 .{ .name = "MeshViewCountNV", .value = 5280, .parameters = &[_]OperandKind{} },
1003 .{ .name = "MeshViewIndicesNV", .value = 5281, .parameters = &[_]OperandKind{} },
1004 .{ .name = "BaryCoordKHR", .value = 5286, .parameters = &[_]OperandKind{} },
1005 .{ .name = "BaryCoordNV", .value = 5286, .parameters = &[_]OperandKind{} },
1006 .{ .name = "BaryCoordNoPerspKHR", .value = 5287, .parameters = &[_]OperandKind{} },
1007 .{ .name = "BaryCoordNoPerspNV", .value = 5287, .parameters = &[_]OperandKind{} },
1008 .{ .name = "FragSizeEXT", .value = 5292, .parameters = &[_]OperandKind{} },
1009 .{ .name = "FragmentSizeNV", .value = 5292, .parameters = &[_]OperandKind{} },
1010 .{ .name = "FragInvocationCountEXT", .value = 5293, .parameters = &[_]OperandKind{} },
1011 .{ .name = "InvocationsPerPixelNV", .value = 5293, .parameters = &[_]OperandKind{} },
1012 .{ .name = "PrimitivePointIndicesEXT", .value = 5294, .parameters = &[_]OperandKind{} },
1013 .{ .name = "PrimitiveLineIndicesEXT", .value = 5295, .parameters = &[_]OperandKind{} },
1014 .{ .name = "PrimitiveTriangleIndicesEXT", .value = 5296, .parameters = &[_]OperandKind{} },
1015 .{ .name = "CullPrimitiveEXT", .value = 5299, .parameters = &[_]OperandKind{} },
1016 .{ .name = "LaunchIdNV", .value = 5319, .parameters = &[_]OperandKind{} },
1017 .{ .name = "LaunchIdKHR", .value = 5319, .parameters = &[_]OperandKind{} },
1018 .{ .name = "LaunchSizeNV", .value = 5320, .parameters = &[_]OperandKind{} },
1019 .{ .name = "LaunchSizeKHR", .value = 5320, .parameters = &[_]OperandKind{} },
1020 .{ .name = "WorldRayOriginNV", .value = 5321, .parameters = &[_]OperandKind{} },
1021 .{ .name = "WorldRayOriginKHR", .value = 5321, .parameters = &[_]OperandKind{} },
1022 .{ .name = "WorldRayDirectionNV", .value = 5322, .parameters = &[_]OperandKind{} },
1023 .{ .name = "WorldRayDirectionKHR", .value = 5322, .parameters = &[_]OperandKind{} },
1024 .{ .name = "ObjectRayOriginNV", .value = 5323, .parameters = &[_]OperandKind{} },
1025 .{ .name = "ObjectRayOriginKHR", .value = 5323, .parameters = &[_]OperandKind{} },
1026 .{ .name = "ObjectRayDirectionNV", .value = 5324, .parameters = &[_]OperandKind{} },
1027 .{ .name = "ObjectRayDirectionKHR", .value = 5324, .parameters = &[_]OperandKind{} },
1028 .{ .name = "RayTminNV", .value = 5325, .parameters = &[_]OperandKind{} },
1029 .{ .name = "RayTminKHR", .value = 5325, .parameters = &[_]OperandKind{} },
1030 .{ .name = "RayTmaxNV", .value = 5326, .parameters = &[_]OperandKind{} },
1031 .{ .name = "RayTmaxKHR", .value = 5326, .parameters = &[_]OperandKind{} },
1032 .{ .name = "InstanceCustomIndexNV", .value = 5327, .parameters = &[_]OperandKind{} },
1033 .{ .name = "InstanceCustomIndexKHR", .value = 5327, .parameters = &[_]OperandKind{} },
1034 .{ .name = "ObjectToWorldNV", .value = 5330, .parameters = &[_]OperandKind{} },
1035 .{ .name = "ObjectToWorldKHR", .value = 5330, .parameters = &[_]OperandKind{} },
1036 .{ .name = "WorldToObjectNV", .value = 5331, .parameters = &[_]OperandKind{} },
1037 .{ .name = "WorldToObjectKHR", .value = 5331, .parameters = &[_]OperandKind{} },
1038 .{ .name = "HitTNV", .value = 5332, .parameters = &[_]OperandKind{} },
1039 .{ .name = "HitKindNV", .value = 5333, .parameters = &[_]OperandKind{} },
1040 .{ .name = "HitKindKHR", .value = 5333, .parameters = &[_]OperandKind{} },
1041 .{ .name = "CurrentRayTimeNV", .value = 5334, .parameters = &[_]OperandKind{} },
1042 .{ .name = "HitTriangleVertexPositionsKHR", .value = 5335, .parameters = &[_]OperandKind{} },
1043 .{ .name = "HitMicroTriangleVertexPositionsNV", .value = 5337, .parameters = &[_]OperandKind{} },
1044 .{ .name = "HitMicroTriangleVertexBarycentricsNV", .value = 5344, .parameters = &[_]OperandKind{} },
1045 .{ .name = "IncomingRayFlagsNV", .value = 5351, .parameters = &[_]OperandKind{} },
1046 .{ .name = "IncomingRayFlagsKHR", .value = 5351, .parameters = &[_]OperandKind{} },
1047 .{ .name = "RayGeometryIndexKHR", .value = 5352, .parameters = &[_]OperandKind{} },
1048 .{ .name = "WarpsPerSMNV", .value = 5374, .parameters = &[_]OperandKind{} },
1049 .{ .name = "SMCountNV", .value = 5375, .parameters = &[_]OperandKind{} },
1050 .{ .name = "WarpIDNV", .value = 5376, .parameters = &[_]OperandKind{} },
1051 .{ .name = "SMIDNV", .value = 5377, .parameters = &[_]OperandKind{} },
1052 .{ .name = "HitKindFrontFacingMicroTriangleNV", .value = 5405, .parameters = &[_]OperandKind{} },
1053 .{ .name = "HitKindBackFacingMicroTriangleNV", .value = 5406, .parameters = &[_]OperandKind{} },
1054 .{ .name = "CullMaskKHR", .value = 6021, .parameters = &[_]OperandKind{} },
1335 .ray_query_committed_intersection_type => &.{
1336 .{ .name = "RayQueryCommittedIntersectionNoneKHR", .value = 0, .parameters = &.{} },
1337 .{ .name = "RayQueryCommittedIntersectionTriangleKHR", .value = 1, .parameters = &.{} },
1338 .{ .name = "RayQueryCommittedIntersectionGeneratedKHR", .value = 2, .parameters = &.{} },
10551339 },
1056 .Scope => &[_]Enumerant{
1057 .{ .name = "CrossDevice", .value = 0, .parameters = &[_]OperandKind{} },
1058 .{ .name = "Device", .value = 1, .parameters = &[_]OperandKind{} },
1059 .{ .name = "Workgroup", .value = 2, .parameters = &[_]OperandKind{} },
1060 .{ .name = "Subgroup", .value = 3, .parameters = &[_]OperandKind{} },
1061 .{ .name = "Invocation", .value = 4, .parameters = &[_]OperandKind{} },
1062 .{ .name = "QueueFamily", .value = 5, .parameters = &[_]OperandKind{} },
1063 .{ .name = "QueueFamilyKHR", .value = 5, .parameters = &[_]OperandKind{} },
1064 .{ .name = "ShaderCallKHR", .value = 6, .parameters = &[_]OperandKind{} },
1340 .ray_query_candidate_intersection_type => &.{
1341 .{ .name = "RayQueryCandidateIntersectionTriangleKHR", .value = 0, .parameters = &.{} },
1342 .{ .name = "RayQueryCandidateIntersectionAABBKHR", .value = 1, .parameters = &.{} },
10651343 },
1066 .GroupOperation => &[_]Enumerant{
1067 .{ .name = "Reduce", .value = 0, .parameters = &[_]OperandKind{} },
1068 .{ .name = "InclusiveScan", .value = 1, .parameters = &[_]OperandKind{} },
1069 .{ .name = "ExclusiveScan", .value = 2, .parameters = &[_]OperandKind{} },
1070 .{ .name = "ClusteredReduce", .value = 3, .parameters = &[_]OperandKind{} },
1071 .{ .name = "PartitionedReduceNV", .value = 6, .parameters = &[_]OperandKind{} },
1072 .{ .name = "PartitionedInclusiveScanNV", .value = 7, .parameters = &[_]OperandKind{} },
1073 .{ .name = "PartitionedExclusiveScanNV", .value = 8, .parameters = &[_]OperandKind{} },
1344 .packed_vector_format => &.{
1345 .{ .name = "PackedVectorFormat4x8Bit", .value = 0, .parameters = &.{} },
10741346 },
1075 .KernelEnqueueFlags => &[_]Enumerant{
1076 .{ .name = "NoWait", .value = 0, .parameters = &[_]OperandKind{} },
1077 .{ .name = "WaitKernel", .value = 1, .parameters = &[_]OperandKind{} },
1078 .{ .name = "WaitWorkGroup", .value = 2, .parameters = &[_]OperandKind{} },
1347 .cooperative_matrix_operands => &.{
1348 .{ .name = "NoneKHR", .value = 0x0000, .parameters = &.{} },
1349 .{ .name = "MatrixASignedComponentsKHR", .value = 0x0001, .parameters = &.{} },
1350 .{ .name = "MatrixBSignedComponentsKHR", .value = 0x0002, .parameters = &.{} },
1351 .{ .name = "MatrixCSignedComponentsKHR", .value = 0x0004, .parameters = &.{} },
1352 .{ .name = "MatrixResultSignedComponentsKHR", .value = 0x0008, .parameters = &.{} },
1353 .{ .name = "SaturatingAccumulationKHR", .value = 0x0010, .parameters = &.{} },
10791354 },
1080 .Capability => &[_]Enumerant{
1081 .{ .name = "Matrix", .value = 0, .parameters = &[_]OperandKind{} },
1082 .{ .name = "Shader", .value = 1, .parameters = &[_]OperandKind{} },
1083 .{ .name = "Geometry", .value = 2, .parameters = &[_]OperandKind{} },
1084 .{ .name = "Tessellation", .value = 3, .parameters = &[_]OperandKind{} },
1085 .{ .name = "Addresses", .value = 4, .parameters = &[_]OperandKind{} },
1086 .{ .name = "Linkage", .value = 5, .parameters = &[_]OperandKind{} },
1087 .{ .name = "Kernel", .value = 6, .parameters = &[_]OperandKind{} },
1088 .{ .name = "Vector16", .value = 7, .parameters = &[_]OperandKind{} },
1089 .{ .name = "Float16Buffer", .value = 8, .parameters = &[_]OperandKind{} },
1090 .{ .name = "Float16", .value = 9, .parameters = &[_]OperandKind{} },
1091 .{ .name = "Float64", .value = 10, .parameters = &[_]OperandKind{} },
1092 .{ .name = "Int64", .value = 11, .parameters = &[_]OperandKind{} },
1093 .{ .name = "Int64Atomics", .value = 12, .parameters = &[_]OperandKind{} },
1094 .{ .name = "ImageBasic", .value = 13, .parameters = &[_]OperandKind{} },
1095 .{ .name = "ImageReadWrite", .value = 14, .parameters = &[_]OperandKind{} },
1096 .{ .name = "ImageMipmap", .value = 15, .parameters = &[_]OperandKind{} },
1097 .{ .name = "Pipes", .value = 17, .parameters = &[_]OperandKind{} },
1098 .{ .name = "Groups", .value = 18, .parameters = &[_]OperandKind{} },
1099 .{ .name = "DeviceEnqueue", .value = 19, .parameters = &[_]OperandKind{} },
1100 .{ .name = "LiteralSampler", .value = 20, .parameters = &[_]OperandKind{} },
1101 .{ .name = "AtomicStorage", .value = 21, .parameters = &[_]OperandKind{} },
1102 .{ .name = "Int16", .value = 22, .parameters = &[_]OperandKind{} },
1103 .{ .name = "TessellationPointSize", .value = 23, .parameters = &[_]OperandKind{} },
1104 .{ .name = "GeometryPointSize", .value = 24, .parameters = &[_]OperandKind{} },
1105 .{ .name = "ImageGatherExtended", .value = 25, .parameters = &[_]OperandKind{} },
1106 .{ .name = "StorageImageMultisample", .value = 27, .parameters = &[_]OperandKind{} },
1107 .{ .name = "UniformBufferArrayDynamicIndexing", .value = 28, .parameters = &[_]OperandKind{} },
1108 .{ .name = "SampledImageArrayDynamicIndexing", .value = 29, .parameters = &[_]OperandKind{} },
1109 .{ .name = "StorageBufferArrayDynamicIndexing", .value = 30, .parameters = &[_]OperandKind{} },
1110 .{ .name = "StorageImageArrayDynamicIndexing", .value = 31, .parameters = &[_]OperandKind{} },
1111 .{ .name = "ClipDistance", .value = 32, .parameters = &[_]OperandKind{} },
1112 .{ .name = "CullDistance", .value = 33, .parameters = &[_]OperandKind{} },
1113 .{ .name = "ImageCubeArray", .value = 34, .parameters = &[_]OperandKind{} },
1114 .{ .name = "SampleRateShading", .value = 35, .parameters = &[_]OperandKind{} },
1115 .{ .name = "ImageRect", .value = 36, .parameters = &[_]OperandKind{} },
1116 .{ .name = "SampledRect", .value = 37, .parameters = &[_]OperandKind{} },
1117 .{ .name = "GenericPointer", .value = 38, .parameters = &[_]OperandKind{} },
1118 .{ .name = "Int8", .value = 39, .parameters = &[_]OperandKind{} },
1119 .{ .name = "InputAttachment", .value = 40, .parameters = &[_]OperandKind{} },
1120 .{ .name = "SparseResidency", .value = 41, .parameters = &[_]OperandKind{} },
1121 .{ .name = "MinLod", .value = 42, .parameters = &[_]OperandKind{} },
1122 .{ .name = "Sampled1D", .value = 43, .parameters = &[_]OperandKind{} },
1123 .{ .name = "Image1D", .value = 44, .parameters = &[_]OperandKind{} },
1124 .{ .name = "SampledCubeArray", .value = 45, .parameters = &[_]OperandKind{} },
1125 .{ .name = "SampledBuffer", .value = 46, .parameters = &[_]OperandKind{} },
1126 .{ .name = "ImageBuffer", .value = 47, .parameters = &[_]OperandKind{} },
1127 .{ .name = "ImageMSArray", .value = 48, .parameters = &[_]OperandKind{} },
1128 .{ .name = "StorageImageExtendedFormats", .value = 49, .parameters = &[_]OperandKind{} },
1129 .{ .name = "ImageQuery", .value = 50, .parameters = &[_]OperandKind{} },
1130 .{ .name = "DerivativeControl", .value = 51, .parameters = &[_]OperandKind{} },
1131 .{ .name = "InterpolationFunction", .value = 52, .parameters = &[_]OperandKind{} },
1132 .{ .name = "TransformFeedback", .value = 53, .parameters = &[_]OperandKind{} },
1133 .{ .name = "GeometryStreams", .value = 54, .parameters = &[_]OperandKind{} },
1134 .{ .name = "StorageImageReadWithoutFormat", .value = 55, .parameters = &[_]OperandKind{} },
1135 .{ .name = "StorageImageWriteWithoutFormat", .value = 56, .parameters = &[_]OperandKind{} },
1136 .{ .name = "MultiViewport", .value = 57, .parameters = &[_]OperandKind{} },
1137 .{ .name = "SubgroupDispatch", .value = 58, .parameters = &[_]OperandKind{} },
1138 .{ .name = "NamedBarrier", .value = 59, .parameters = &[_]OperandKind{} },
1139 .{ .name = "PipeStorage", .value = 60, .parameters = &[_]OperandKind{} },
1140 .{ .name = "GroupNonUniform", .value = 61, .parameters = &[_]OperandKind{} },
1141 .{ .name = "GroupNonUniformVote", .value = 62, .parameters = &[_]OperandKind{} },
1142 .{ .name = "GroupNonUniformArithmetic", .value = 63, .parameters = &[_]OperandKind{} },
1143 .{ .name = "GroupNonUniformBallot", .value = 64, .parameters = &[_]OperandKind{} },
1144 .{ .name = "GroupNonUniformShuffle", .value = 65, .parameters = &[_]OperandKind{} },
1145 .{ .name = "GroupNonUniformShuffleRelative", .value = 66, .parameters = &[_]OperandKind{} },
1146 .{ .name = "GroupNonUniformClustered", .value = 67, .parameters = &[_]OperandKind{} },
1147 .{ .name = "GroupNonUniformQuad", .value = 68, .parameters = &[_]OperandKind{} },
1148 .{ .name = "ShaderLayer", .value = 69, .parameters = &[_]OperandKind{} },
1149 .{ .name = "ShaderViewportIndex", .value = 70, .parameters = &[_]OperandKind{} },
1150 .{ .name = "UniformDecoration", .value = 71, .parameters = &[_]OperandKind{} },
1151 .{ .name = "CoreBuiltinsARM", .value = 4165, .parameters = &[_]OperandKind{} },
1152 .{ .name = "TileImageColorReadAccessEXT", .value = 4166, .parameters = &[_]OperandKind{} },
1153 .{ .name = "TileImageDepthReadAccessEXT", .value = 4167, .parameters = &[_]OperandKind{} },
1154 .{ .name = "TileImageStencilReadAccessEXT", .value = 4168, .parameters = &[_]OperandKind{} },
1155 .{ .name = "FragmentShadingRateKHR", .value = 4422, .parameters = &[_]OperandKind{} },
1156 .{ .name = "SubgroupBallotKHR", .value = 4423, .parameters = &[_]OperandKind{} },
1157 .{ .name = "DrawParameters", .value = 4427, .parameters = &[_]OperandKind{} },
1158 .{ .name = "WorkgroupMemoryExplicitLayoutKHR", .value = 4428, .parameters = &[_]OperandKind{} },
1159 .{ .name = "WorkgroupMemoryExplicitLayout8BitAccessKHR", .value = 4429, .parameters = &[_]OperandKind{} },
1160 .{ .name = "WorkgroupMemoryExplicitLayout16BitAccessKHR", .value = 4430, .parameters = &[_]OperandKind{} },
1161 .{ .name = "SubgroupVoteKHR", .value = 4431, .parameters = &[_]OperandKind{} },
1162 .{ .name = "StorageBuffer16BitAccess", .value = 4433, .parameters = &[_]OperandKind{} },
1163 .{ .name = "StorageUniformBufferBlock16", .value = 4433, .parameters = &[_]OperandKind{} },
1164 .{ .name = "UniformAndStorageBuffer16BitAccess", .value = 4434, .parameters = &[_]OperandKind{} },
1165 .{ .name = "StorageUniform16", .value = 4434, .parameters = &[_]OperandKind{} },
1166 .{ .name = "StoragePushConstant16", .value = 4435, .parameters = &[_]OperandKind{} },
1167 .{ .name = "StorageInputOutput16", .value = 4436, .parameters = &[_]OperandKind{} },
1168 .{ .name = "DeviceGroup", .value = 4437, .parameters = &[_]OperandKind{} },
1169 .{ .name = "MultiView", .value = 4439, .parameters = &[_]OperandKind{} },
1170 .{ .name = "VariablePointersStorageBuffer", .value = 4441, .parameters = &[_]OperandKind{} },
1171 .{ .name = "VariablePointers", .value = 4442, .parameters = &[_]OperandKind{} },
1172 .{ .name = "AtomicStorageOps", .value = 4445, .parameters = &[_]OperandKind{} },
1173 .{ .name = "SampleMaskPostDepthCoverage", .value = 4447, .parameters = &[_]OperandKind{} },
1174 .{ .name = "StorageBuffer8BitAccess", .value = 4448, .parameters = &[_]OperandKind{} },
1175 .{ .name = "UniformAndStorageBuffer8BitAccess", .value = 4449, .parameters = &[_]OperandKind{} },
1176 .{ .name = "StoragePushConstant8", .value = 4450, .parameters = &[_]OperandKind{} },
1177 .{ .name = "DenormPreserve", .value = 4464, .parameters = &[_]OperandKind{} },
1178 .{ .name = "DenormFlushToZero", .value = 4465, .parameters = &[_]OperandKind{} },
1179 .{ .name = "SignedZeroInfNanPreserve", .value = 4466, .parameters = &[_]OperandKind{} },
1180 .{ .name = "RoundingModeRTE", .value = 4467, .parameters = &[_]OperandKind{} },
1181 .{ .name = "RoundingModeRTZ", .value = 4468, .parameters = &[_]OperandKind{} },
1182 .{ .name = "RayQueryProvisionalKHR", .value = 4471, .parameters = &[_]OperandKind{} },
1183 .{ .name = "RayQueryKHR", .value = 4472, .parameters = &[_]OperandKind{} },
1184 .{ .name = "RayTraversalPrimitiveCullingKHR", .value = 4478, .parameters = &[_]OperandKind{} },
1185 .{ .name = "RayTracingKHR", .value = 4479, .parameters = &[_]OperandKind{} },
1186 .{ .name = "TextureSampleWeightedQCOM", .value = 4484, .parameters = &[_]OperandKind{} },
1187 .{ .name = "TextureBoxFilterQCOM", .value = 4485, .parameters = &[_]OperandKind{} },
1188 .{ .name = "TextureBlockMatchQCOM", .value = 4486, .parameters = &[_]OperandKind{} },
1189 .{ .name = "TextureBlockMatch2QCOM", .value = 4498, .parameters = &[_]OperandKind{} },
1190 .{ .name = "Float16ImageAMD", .value = 5008, .parameters = &[_]OperandKind{} },
1191 .{ .name = "ImageGatherBiasLodAMD", .value = 5009, .parameters = &[_]OperandKind{} },
1192 .{ .name = "FragmentMaskAMD", .value = 5010, .parameters = &[_]OperandKind{} },
1193 .{ .name = "StencilExportEXT", .value = 5013, .parameters = &[_]OperandKind{} },
1194 .{ .name = "ImageReadWriteLodAMD", .value = 5015, .parameters = &[_]OperandKind{} },
1195 .{ .name = "Int64ImageEXT", .value = 5016, .parameters = &[_]OperandKind{} },
1196 .{ .name = "ShaderClockKHR", .value = 5055, .parameters = &[_]OperandKind{} },
1197 .{ .name = "ShaderEnqueueAMDX", .value = 5067, .parameters = &[_]OperandKind{} },
1198 .{ .name = "QuadControlKHR", .value = 5087, .parameters = &[_]OperandKind{} },
1199 .{ .name = "SampleMaskOverrideCoverageNV", .value = 5249, .parameters = &[_]OperandKind{} },
1200 .{ .name = "GeometryShaderPassthroughNV", .value = 5251, .parameters = &[_]OperandKind{} },
1201 .{ .name = "ShaderViewportIndexLayerEXT", .value = 5254, .parameters = &[_]OperandKind{} },
1202 .{ .name = "ShaderViewportIndexLayerNV", .value = 5254, .parameters = &[_]OperandKind{} },
1203 .{ .name = "ShaderViewportMaskNV", .value = 5255, .parameters = &[_]OperandKind{} },
1204 .{ .name = "ShaderStereoViewNV", .value = 5259, .parameters = &[_]OperandKind{} },
1205 .{ .name = "PerViewAttributesNV", .value = 5260, .parameters = &[_]OperandKind{} },
1206 .{ .name = "FragmentFullyCoveredEXT", .value = 5265, .parameters = &[_]OperandKind{} },
1207 .{ .name = "MeshShadingNV", .value = 5266, .parameters = &[_]OperandKind{} },
1208 .{ .name = "ImageFootprintNV", .value = 5282, .parameters = &[_]OperandKind{} },
1209 .{ .name = "MeshShadingEXT", .value = 5283, .parameters = &[_]OperandKind{} },
1210 .{ .name = "FragmentBarycentricKHR", .value = 5284, .parameters = &[_]OperandKind{} },
1211 .{ .name = "FragmentBarycentricNV", .value = 5284, .parameters = &[_]OperandKind{} },
1212 .{ .name = "ComputeDerivativeGroupQuadsNV", .value = 5288, .parameters = &[_]OperandKind{} },
1213 .{ .name = "FragmentDensityEXT", .value = 5291, .parameters = &[_]OperandKind{} },
1214 .{ .name = "ShadingRateNV", .value = 5291, .parameters = &[_]OperandKind{} },
1215 .{ .name = "GroupNonUniformPartitionedNV", .value = 5297, .parameters = &[_]OperandKind{} },
1216 .{ .name = "ShaderNonUniform", .value = 5301, .parameters = &[_]OperandKind{} },
1217 .{ .name = "ShaderNonUniformEXT", .value = 5301, .parameters = &[_]OperandKind{} },
1218 .{ .name = "RuntimeDescriptorArray", .value = 5302, .parameters = &[_]OperandKind{} },
1219 .{ .name = "RuntimeDescriptorArrayEXT", .value = 5302, .parameters = &[_]OperandKind{} },
1220 .{ .name = "InputAttachmentArrayDynamicIndexing", .value = 5303, .parameters = &[_]OperandKind{} },
1221 .{ .name = "InputAttachmentArrayDynamicIndexingEXT", .value = 5303, .parameters = &[_]OperandKind{} },
1222 .{ .name = "UniformTexelBufferArrayDynamicIndexing", .value = 5304, .parameters = &[_]OperandKind{} },
1223 .{ .name = "UniformTexelBufferArrayDynamicIndexingEXT", .value = 5304, .parameters = &[_]OperandKind{} },
1224 .{ .name = "StorageTexelBufferArrayDynamicIndexing", .value = 5305, .parameters = &[_]OperandKind{} },
1225 .{ .name = "StorageTexelBufferArrayDynamicIndexingEXT", .value = 5305, .parameters = &[_]OperandKind{} },
1226 .{ .name = "UniformBufferArrayNonUniformIndexing", .value = 5306, .parameters = &[_]OperandKind{} },
1227 .{ .name = "UniformBufferArrayNonUniformIndexingEXT", .value = 5306, .parameters = &[_]OperandKind{} },
1228 .{ .name = "SampledImageArrayNonUniformIndexing", .value = 5307, .parameters = &[_]OperandKind{} },
1229 .{ .name = "SampledImageArrayNonUniformIndexingEXT", .value = 5307, .parameters = &[_]OperandKind{} },
1230 .{ .name = "StorageBufferArrayNonUniformIndexing", .value = 5308, .parameters = &[_]OperandKind{} },
1231 .{ .name = "StorageBufferArrayNonUniformIndexingEXT", .value = 5308, .parameters = &[_]OperandKind{} },
1232 .{ .name = "StorageImageArrayNonUniformIndexing", .value = 5309, .parameters = &[_]OperandKind{} },
1233 .{ .name = "StorageImageArrayNonUniformIndexingEXT", .value = 5309, .parameters = &[_]OperandKind{} },
1234 .{ .name = "InputAttachmentArrayNonUniformIndexing", .value = 5310, .parameters = &[_]OperandKind{} },
1235 .{ .name = "InputAttachmentArrayNonUniformIndexingEXT", .value = 5310, .parameters = &[_]OperandKind{} },
1236 .{ .name = "UniformTexelBufferArrayNonUniformIndexing", .value = 5311, .parameters = &[_]OperandKind{} },
1237 .{ .name = "UniformTexelBufferArrayNonUniformIndexingEXT", .value = 5311, .parameters = &[_]OperandKind{} },
1238 .{ .name = "StorageTexelBufferArrayNonUniformIndexing", .value = 5312, .parameters = &[_]OperandKind{} },
1239 .{ .name = "StorageTexelBufferArrayNonUniformIndexingEXT", .value = 5312, .parameters = &[_]OperandKind{} },
1240 .{ .name = "RayTracingPositionFetchKHR", .value = 5336, .parameters = &[_]OperandKind{} },
1241 .{ .name = "RayTracingNV", .value = 5340, .parameters = &[_]OperandKind{} },
1242 .{ .name = "RayTracingMotionBlurNV", .value = 5341, .parameters = &[_]OperandKind{} },
1243 .{ .name = "VulkanMemoryModel", .value = 5345, .parameters = &[_]OperandKind{} },
1244 .{ .name = "VulkanMemoryModelKHR", .value = 5345, .parameters = &[_]OperandKind{} },
1245 .{ .name = "VulkanMemoryModelDeviceScope", .value = 5346, .parameters = &[_]OperandKind{} },
1246 .{ .name = "VulkanMemoryModelDeviceScopeKHR", .value = 5346, .parameters = &[_]OperandKind{} },
1247 .{ .name = "PhysicalStorageBufferAddresses", .value = 5347, .parameters = &[_]OperandKind{} },
1248 .{ .name = "PhysicalStorageBufferAddressesEXT", .value = 5347, .parameters = &[_]OperandKind{} },
1249 .{ .name = "ComputeDerivativeGroupLinearNV", .value = 5350, .parameters = &[_]OperandKind{} },
1250 .{ .name = "RayTracingProvisionalKHR", .value = 5353, .parameters = &[_]OperandKind{} },
1251 .{ .name = "CooperativeMatrixNV", .value = 5357, .parameters = &[_]OperandKind{} },
1252 .{ .name = "FragmentShaderSampleInterlockEXT", .value = 5363, .parameters = &[_]OperandKind{} },
1253 .{ .name = "FragmentShaderShadingRateInterlockEXT", .value = 5372, .parameters = &[_]OperandKind{} },
1254 .{ .name = "ShaderSMBuiltinsNV", .value = 5373, .parameters = &[_]OperandKind{} },
1255 .{ .name = "FragmentShaderPixelInterlockEXT", .value = 5378, .parameters = &[_]OperandKind{} },
1256 .{ .name = "DemoteToHelperInvocation", .value = 5379, .parameters = &[_]OperandKind{} },
1257 .{ .name = "DemoteToHelperInvocationEXT", .value = 5379, .parameters = &[_]OperandKind{} },
1258 .{ .name = "DisplacementMicromapNV", .value = 5380, .parameters = &[_]OperandKind{} },
1259 .{ .name = "RayTracingOpacityMicromapEXT", .value = 5381, .parameters = &[_]OperandKind{} },
1260 .{ .name = "ShaderInvocationReorderNV", .value = 5383, .parameters = &[_]OperandKind{} },
1261 .{ .name = "BindlessTextureNV", .value = 5390, .parameters = &[_]OperandKind{} },
1262 .{ .name = "RayQueryPositionFetchKHR", .value = 5391, .parameters = &[_]OperandKind{} },
1263 .{ .name = "AtomicFloat16VectorNV", .value = 5404, .parameters = &[_]OperandKind{} },
1264 .{ .name = "RayTracingDisplacementMicromapNV", .value = 5409, .parameters = &[_]OperandKind{} },
1265 .{ .name = "RawAccessChainsNV", .value = 5414, .parameters = &[_]OperandKind{} },
1266 .{ .name = "SubgroupShuffleINTEL", .value = 5568, .parameters = &[_]OperandKind{} },
1267 .{ .name = "SubgroupBufferBlockIOINTEL", .value = 5569, .parameters = &[_]OperandKind{} },
1268 .{ .name = "SubgroupImageBlockIOINTEL", .value = 5570, .parameters = &[_]OperandKind{} },
1269 .{ .name = "SubgroupImageMediaBlockIOINTEL", .value = 5579, .parameters = &[_]OperandKind{} },
1270 .{ .name = "RoundToInfinityINTEL", .value = 5582, .parameters = &[_]OperandKind{} },
1271 .{ .name = "FloatingPointModeINTEL", .value = 5583, .parameters = &[_]OperandKind{} },
1272 .{ .name = "IntegerFunctions2INTEL", .value = 5584, .parameters = &[_]OperandKind{} },
1273 .{ .name = "FunctionPointersINTEL", .value = 5603, .parameters = &[_]OperandKind{} },
1274 .{ .name = "IndirectReferencesINTEL", .value = 5604, .parameters = &[_]OperandKind{} },
1275 .{ .name = "AsmINTEL", .value = 5606, .parameters = &[_]OperandKind{} },
1276 .{ .name = "AtomicFloat32MinMaxEXT", .value = 5612, .parameters = &[_]OperandKind{} },
1277 .{ .name = "AtomicFloat64MinMaxEXT", .value = 5613, .parameters = &[_]OperandKind{} },
1278 .{ .name = "AtomicFloat16MinMaxEXT", .value = 5616, .parameters = &[_]OperandKind{} },
1279 .{ .name = "VectorComputeINTEL", .value = 5617, .parameters = &[_]OperandKind{} },
1280 .{ .name = "VectorAnyINTEL", .value = 5619, .parameters = &[_]OperandKind{} },
1281 .{ .name = "ExpectAssumeKHR", .value = 5629, .parameters = &[_]OperandKind{} },
1282 .{ .name = "SubgroupAvcMotionEstimationINTEL", .value = 5696, .parameters = &[_]OperandKind{} },
1283 .{ .name = "SubgroupAvcMotionEstimationIntraINTEL", .value = 5697, .parameters = &[_]OperandKind{} },
1284 .{ .name = "SubgroupAvcMotionEstimationChromaINTEL", .value = 5698, .parameters = &[_]OperandKind{} },
1285 .{ .name = "VariableLengthArrayINTEL", .value = 5817, .parameters = &[_]OperandKind{} },
1286 .{ .name = "FunctionFloatControlINTEL", .value = 5821, .parameters = &[_]OperandKind{} },
1287 .{ .name = "FPGAMemoryAttributesINTEL", .value = 5824, .parameters = &[_]OperandKind{} },
1288 .{ .name = "FPFastMathModeINTEL", .value = 5837, .parameters = &[_]OperandKind{} },
1289 .{ .name = "ArbitraryPrecisionIntegersINTEL", .value = 5844, .parameters = &[_]OperandKind{} },
1290 .{ .name = "ArbitraryPrecisionFloatingPointINTEL", .value = 5845, .parameters = &[_]OperandKind{} },
1291 .{ .name = "UnstructuredLoopControlsINTEL", .value = 5886, .parameters = &[_]OperandKind{} },
1292 .{ .name = "FPGALoopControlsINTEL", .value = 5888, .parameters = &[_]OperandKind{} },
1293 .{ .name = "KernelAttributesINTEL", .value = 5892, .parameters = &[_]OperandKind{} },
1294 .{ .name = "FPGAKernelAttributesINTEL", .value = 5897, .parameters = &[_]OperandKind{} },
1295 .{ .name = "FPGAMemoryAccessesINTEL", .value = 5898, .parameters = &[_]OperandKind{} },
1296 .{ .name = "FPGAClusterAttributesINTEL", .value = 5904, .parameters = &[_]OperandKind{} },
1297 .{ .name = "LoopFuseINTEL", .value = 5906, .parameters = &[_]OperandKind{} },
1298 .{ .name = "FPGADSPControlINTEL", .value = 5908, .parameters = &[_]OperandKind{} },
1299 .{ .name = "MemoryAccessAliasingINTEL", .value = 5910, .parameters = &[_]OperandKind{} },
1300 .{ .name = "FPGAInvocationPipeliningAttributesINTEL", .value = 5916, .parameters = &[_]OperandKind{} },
1301 .{ .name = "FPGABufferLocationINTEL", .value = 5920, .parameters = &[_]OperandKind{} },
1302 .{ .name = "ArbitraryPrecisionFixedPointINTEL", .value = 5922, .parameters = &[_]OperandKind{} },
1303 .{ .name = "USMStorageClassesINTEL", .value = 5935, .parameters = &[_]OperandKind{} },
1304 .{ .name = "RuntimeAlignedAttributeINTEL", .value = 5939, .parameters = &[_]OperandKind{} },
1305 .{ .name = "IOPipesINTEL", .value = 5943, .parameters = &[_]OperandKind{} },
1306 .{ .name = "BlockingPipesINTEL", .value = 5945, .parameters = &[_]OperandKind{} },
1307 .{ .name = "FPGARegINTEL", .value = 5948, .parameters = &[_]OperandKind{} },
1308 .{ .name = "DotProductInputAll", .value = 6016, .parameters = &[_]OperandKind{} },
1309 .{ .name = "DotProductInputAllKHR", .value = 6016, .parameters = &[_]OperandKind{} },
1310 .{ .name = "DotProductInput4x8Bit", .value = 6017, .parameters = &[_]OperandKind{} },
1311 .{ .name = "DotProductInput4x8BitKHR", .value = 6017, .parameters = &[_]OperandKind{} },
1312 .{ .name = "DotProductInput4x8BitPacked", .value = 6018, .parameters = &[_]OperandKind{} },
1313 .{ .name = "DotProductInput4x8BitPackedKHR", .value = 6018, .parameters = &[_]OperandKind{} },
1314 .{ .name = "DotProduct", .value = 6019, .parameters = &[_]OperandKind{} },
1315 .{ .name = "DotProductKHR", .value = 6019, .parameters = &[_]OperandKind{} },
1316 .{ .name = "RayCullMaskKHR", .value = 6020, .parameters = &[_]OperandKind{} },
1317 .{ .name = "CooperativeMatrixKHR", .value = 6022, .parameters = &[_]OperandKind{} },
1318 .{ .name = "BitInstructions", .value = 6025, .parameters = &[_]OperandKind{} },
1319 .{ .name = "GroupNonUniformRotateKHR", .value = 6026, .parameters = &[_]OperandKind{} },
1320 .{ .name = "FloatControls2", .value = 6029, .parameters = &[_]OperandKind{} },
1321 .{ .name = "AtomicFloat32AddEXT", .value = 6033, .parameters = &[_]OperandKind{} },
1322 .{ .name = "AtomicFloat64AddEXT", .value = 6034, .parameters = &[_]OperandKind{} },
1323 .{ .name = "LongCompositesINTEL", .value = 6089, .parameters = &[_]OperandKind{} },
1324 .{ .name = "OptNoneINTEL", .value = 6094, .parameters = &[_]OperandKind{} },
1325 .{ .name = "AtomicFloat16AddEXT", .value = 6095, .parameters = &[_]OperandKind{} },
1326 .{ .name = "DebugInfoModuleINTEL", .value = 6114, .parameters = &[_]OperandKind{} },
1327 .{ .name = "BFloat16ConversionINTEL", .value = 6115, .parameters = &[_]OperandKind{} },
1328 .{ .name = "SplitBarrierINTEL", .value = 6141, .parameters = &[_]OperandKind{} },
1329 .{ .name = "FPGAClusterAttributesV2INTEL", .value = 6150, .parameters = &[_]OperandKind{} },
1330 .{ .name = "FPGAKernelAttributesv2INTEL", .value = 6161, .parameters = &[_]OperandKind{} },
1331 .{ .name = "FPMaxErrorINTEL", .value = 6169, .parameters = &[_]OperandKind{} },
1332 .{ .name = "FPGALatencyControlINTEL", .value = 6171, .parameters = &[_]OperandKind{} },
1333 .{ .name = "FPGAArgumentInterfacesINTEL", .value = 6174, .parameters = &[_]OperandKind{} },
1334 .{ .name = "GlobalVariableHostAccessINTEL", .value = 6187, .parameters = &[_]OperandKind{} },
1335 .{ .name = "GlobalVariableFPGADecorationsINTEL", .value = 6189, .parameters = &[_]OperandKind{} },
1336 .{ .name = "GroupUniformArithmeticKHR", .value = 6400, .parameters = &[_]OperandKind{} },
1337 .{ .name = "MaskedGatherScatterINTEL", .value = 6427, .parameters = &[_]OperandKind{} },
1338 .{ .name = "CacheControlsINTEL", .value = 6441, .parameters = &[_]OperandKind{} },
1339 .{ .name = "RegisterLimitsINTEL", .value = 6460, .parameters = &[_]OperandKind{} },
1355 .cooperative_matrix_layout => &.{
1356 .{ .name = "RowMajorKHR", .value = 0, .parameters = &.{} },
1357 .{ .name = "ColumnMajorKHR", .value = 1, .parameters = &.{} },
1358 .{ .name = "RowBlockedInterleavedARM", .value = 4202, .parameters = &.{} },
1359 .{ .name = "ColumnBlockedInterleavedARM", .value = 4203, .parameters = &.{} },
13401360 },
1341 .RayQueryIntersection => &[_]Enumerant{
1342 .{ .name = "RayQueryCandidateIntersectionKHR", .value = 0, .parameters = &[_]OperandKind{} },
1343 .{ .name = "RayQueryCommittedIntersectionKHR", .value = 1, .parameters = &[_]OperandKind{} },
1361 .cooperative_matrix_use => &.{
1362 .{ .name = "MatrixAKHR", .value = 0, .parameters = &.{} },
1363 .{ .name = "MatrixBKHR", .value = 1, .parameters = &.{} },
1364 .{ .name = "MatrixAccumulatorKHR", .value = 2, .parameters = &.{} },
13441365 },
1345 .RayQueryCommittedIntersectionType => &[_]Enumerant{
1346 .{ .name = "RayQueryCommittedIntersectionNoneKHR", .value = 0, .parameters = &[_]OperandKind{} },
1347 .{ .name = "RayQueryCommittedIntersectionTriangleKHR", .value = 1, .parameters = &[_]OperandKind{} },
1348 .{ .name = "RayQueryCommittedIntersectionGeneratedKHR", .value = 2, .parameters = &[_]OperandKind{} },
1366 .cooperative_matrix_reduce => &.{
1367 .{ .name = "Row", .value = 0x0001, .parameters = &.{} },
1368 .{ .name = "Column", .value = 0x0002, .parameters = &.{} },
1369 .{ .name = "2x2", .value = 0x0004, .parameters = &.{} },
13491370 },
1350 .RayQueryCandidateIntersectionType => &[_]Enumerant{
1351 .{ .name = "RayQueryCandidateIntersectionTriangleKHR", .value = 0, .parameters = &[_]OperandKind{} },
1352 .{ .name = "RayQueryCandidateIntersectionAABBKHR", .value = 1, .parameters = &[_]OperandKind{} },
1371 .tensor_clamp_mode => &.{
1372 .{ .name = "Undefined", .value = 0, .parameters = &.{} },
1373 .{ .name = "Constant", .value = 1, .parameters = &.{} },
1374 .{ .name = "ClampToEdge", .value = 2, .parameters = &.{} },
1375 .{ .name = "Repeat", .value = 3, .parameters = &.{} },
1376 .{ .name = "RepeatMirrored", .value = 4, .parameters = &.{} },
13531377 },
1354 .PackedVectorFormat => &[_]Enumerant{
1355 .{ .name = "PackedVectorFormat4x8Bit", .value = 0, .parameters = &[_]OperandKind{} },
1356 .{ .name = "PackedVectorFormat4x8BitKHR", .value = 0, .parameters = &[_]OperandKind{} },
1378 .tensor_addressing_operands => &.{
1379 .{ .name = "TensorView", .value = 0x0001, .parameters = &.{.id_ref} },
1380 .{ .name = "DecodeFunc", .value = 0x0002, .parameters = &.{.id_ref} },
13571381 },
1358 .CooperativeMatrixOperands => &[_]Enumerant{
1359 .{ .name = "NoneKHR", .value = 0x0000, .parameters = &[_]OperandKind{} },
1360 .{ .name = "MatrixASignedComponentsKHR", .value = 0x0001, .parameters = &[_]OperandKind{} },
1361 .{ .name = "MatrixBSignedComponentsKHR", .value = 0x0002, .parameters = &[_]OperandKind{} },
1362 .{ .name = "MatrixCSignedComponentsKHR", .value = 0x0004, .parameters = &[_]OperandKind{} },
1363 .{ .name = "MatrixResultSignedComponentsKHR", .value = 0x0008, .parameters = &[_]OperandKind{} },
1364 .{ .name = "SaturatingAccumulationKHR", .value = 0x0010, .parameters = &[_]OperandKind{} },
1382 .initialization_mode_qualifier => &.{
1383 .{ .name = "InitOnDeviceReprogramINTEL", .value = 0, .parameters = &.{} },
1384 .{ .name = "InitOnDeviceResetINTEL", .value = 1, .parameters = &.{} },
13651385 },
1366 .CooperativeMatrixLayout => &[_]Enumerant{
1367 .{ .name = "RowMajorKHR", .value = 0, .parameters = &[_]OperandKind{} },
1368 .{ .name = "ColumnMajorKHR", .value = 1, .parameters = &[_]OperandKind{} },
1386 .load_cache_control => &.{
1387 .{ .name = "UncachedINTEL", .value = 0, .parameters = &.{} },
1388 .{ .name = "CachedINTEL", .value = 1, .parameters = &.{} },
1389 .{ .name = "StreamingINTEL", .value = 2, .parameters = &.{} },
1390 .{ .name = "InvalidateAfterReadINTEL", .value = 3, .parameters = &.{} },
1391 .{ .name = "ConstCachedINTEL", .value = 4, .parameters = &.{} },
13691392 },
1370 .CooperativeMatrixUse => &[_]Enumerant{
1371 .{ .name = "MatrixAKHR", .value = 0, .parameters = &[_]OperandKind{} },
1372 .{ .name = "MatrixBKHR", .value = 1, .parameters = &[_]OperandKind{} },
1373 .{ .name = "MatrixAccumulatorKHR", .value = 2, .parameters = &[_]OperandKind{} },
1393 .store_cache_control => &.{
1394 .{ .name = "UncachedINTEL", .value = 0, .parameters = &.{} },
1395 .{ .name = "WriteThroughINTEL", .value = 1, .parameters = &.{} },
1396 .{ .name = "WriteBackINTEL", .value = 2, .parameters = &.{} },
1397 .{ .name = "StreamingINTEL", .value = 3, .parameters = &.{} },
13741398 },
1375 .InitializationModeQualifier => &[_]Enumerant{
1376 .{ .name = "InitOnDeviceReprogramINTEL", .value = 0, .parameters = &[_]OperandKind{} },
1377 .{ .name = "InitOnDeviceResetINTEL", .value = 1, .parameters = &[_]OperandKind{} },
1399 .named_maximum_number_of_registers => &.{
1400 .{ .name = "AutoINTEL", .value = 0, .parameters = &.{} },
13781401 },
1379 .LoadCacheControl => &[_]Enumerant{
1380 .{ .name = "UncachedINTEL", .value = 0, .parameters = &[_]OperandKind{} },
1381 .{ .name = "CachedINTEL", .value = 1, .parameters = &[_]OperandKind{} },
1382 .{ .name = "StreamingINTEL", .value = 2, .parameters = &[_]OperandKind{} },
1383 .{ .name = "InvalidateAfterReadINTEL", .value = 3, .parameters = &[_]OperandKind{} },
1384 .{ .name = "ConstCachedINTEL", .value = 4, .parameters = &[_]OperandKind{} },
1402 .matrix_multiply_accumulate_operands => &.{
1403 .{ .name = "MatrixASignedComponentsINTEL", .value = 0x1, .parameters = &.{} },
1404 .{ .name = "MatrixBSignedComponentsINTEL", .value = 0x2, .parameters = &.{} },
1405 .{ .name = "MatrixCBFloat16INTEL", .value = 0x4, .parameters = &.{} },
1406 .{ .name = "MatrixResultBFloat16INTEL", .value = 0x8, .parameters = &.{} },
1407 .{ .name = "MatrixAPackedInt8INTEL", .value = 0x10, .parameters = &.{} },
1408 .{ .name = "MatrixBPackedInt8INTEL", .value = 0x20, .parameters = &.{} },
1409 .{ .name = "MatrixAPackedInt4INTEL", .value = 0x40, .parameters = &.{} },
1410 .{ .name = "MatrixBPackedInt4INTEL", .value = 0x80, .parameters = &.{} },
1411 .{ .name = "MatrixATF32INTEL", .value = 0x100, .parameters = &.{} },
1412 .{ .name = "MatrixBTF32INTEL", .value = 0x200, .parameters = &.{} },
1413 .{ .name = "MatrixAPackedFloat16INTEL", .value = 0x400, .parameters = &.{} },
1414 .{ .name = "MatrixBPackedFloat16INTEL", .value = 0x800, .parameters = &.{} },
1415 .{ .name = "MatrixAPackedBFloat16INTEL", .value = 0x1000, .parameters = &.{} },
1416 .{ .name = "MatrixBPackedBFloat16INTEL", .value = 0x2000, .parameters = &.{} },
13851417 },
1386 .StoreCacheControl => &[_]Enumerant{
1387 .{ .name = "UncachedINTEL", .value = 0, .parameters = &[_]OperandKind{} },
1388 .{ .name = "WriteThroughINTEL", .value = 1, .parameters = &[_]OperandKind{} },
1389 .{ .name = "WriteBackINTEL", .value = 2, .parameters = &[_]OperandKind{} },
1390 .{ .name = "StreamingINTEL", .value = 3, .parameters = &[_]OperandKind{} },
1418 .fp_encoding => &.{
1419 .{ .name = "BFloat16KHR", .value = 0, .parameters = &.{} },
1420 .{ .name = "Float8E4M3EXT", .value = 4214, .parameters = &.{} },
1421 .{ .name = "Float8E5M2EXT", .value = 4215, .parameters = &.{} },
13911422 },
1392 .NamedMaximumNumberOfRegisters => &[_]Enumerant{
1393 .{ .name = "AutoINTEL", .value = 0, .parameters = &[_]OperandKind{} },
1423 .cooperative_vector_matrix_layout => &.{
1424 .{ .name = "RowMajorNV", .value = 0, .parameters = &.{} },
1425 .{ .name = "ColumnMajorNV", .value = 1, .parameters = &.{} },
1426 .{ .name = "InferencingOptimalNV", .value = 2, .parameters = &.{} },
1427 .{ .name = "TrainingOptimalNV", .value = 3, .parameters = &.{} },
13941428 },
1395 .IdResultType => unreachable,
1396 .IdResult => unreachable,
1397 .IdMemorySemantics => unreachable,
1398 .IdScope => unreachable,
1399 .IdRef => unreachable,
1400 .LiteralInteger => unreachable,
1401 .LiteralString => unreachable,
1402 .LiteralFloat => unreachable,
1403 .LiteralContextDependentNumber => unreachable,
1404 .LiteralExtInstInteger => unreachable,
1405 .LiteralSpecConstantOpInteger => unreachable,
1406 .PairLiteralIntegerIdRef => unreachable,
1407 .PairIdRefLiteralInteger => unreachable,
1408 .PairIdRefIdRef => unreachable,
1409 .@"OpenCL.DebugInfo.100.DebugInfoFlags" => &[_]Enumerant{
1410 .{ .name = "FlagIsProtected", .value = 0x01, .parameters = &[_]OperandKind{} },
1411 .{ .name = "FlagIsPrivate", .value = 0x02, .parameters = &[_]OperandKind{} },
1412 .{ .name = "FlagIsPublic", .value = 0x03, .parameters = &[_]OperandKind{} },
1413 .{ .name = "FlagIsLocal", .value = 0x04, .parameters = &[_]OperandKind{} },
1414 .{ .name = "FlagIsDefinition", .value = 0x08, .parameters = &[_]OperandKind{} },
1415 .{ .name = "FlagFwdDecl", .value = 0x10, .parameters = &[_]OperandKind{} },
1416 .{ .name = "FlagArtificial", .value = 0x20, .parameters = &[_]OperandKind{} },
1417 .{ .name = "FlagExplicit", .value = 0x40, .parameters = &[_]OperandKind{} },
1418 .{ .name = "FlagPrototyped", .value = 0x80, .parameters = &[_]OperandKind{} },
1419 .{ .name = "FlagObjectPointer", .value = 0x100, .parameters = &[_]OperandKind{} },
1420 .{ .name = "FlagStaticMember", .value = 0x200, .parameters = &[_]OperandKind{} },
1421 .{ .name = "FlagIndirectVariable", .value = 0x400, .parameters = &[_]OperandKind{} },
1422 .{ .name = "FlagLValueReference", .value = 0x800, .parameters = &[_]OperandKind{} },
1423 .{ .name = "FlagRValueReference", .value = 0x1000, .parameters = &[_]OperandKind{} },
1424 .{ .name = "FlagIsOptimized", .value = 0x2000, .parameters = &[_]OperandKind{} },
1425 .{ .name = "FlagIsEnumClass", .value = 0x4000, .parameters = &[_]OperandKind{} },
1426 .{ .name = "FlagTypePassByValue", .value = 0x8000, .parameters = &[_]OperandKind{} },
1427 .{ .name = "FlagTypePassByReference", .value = 0x10000, .parameters = &[_]OperandKind{} },
1429 .component_type => &.{
1430 .{ .name = "Float16NV", .value = 0, .parameters = &.{} },
1431 .{ .name = "Float32NV", .value = 1, .parameters = &.{} },
1432 .{ .name = "Float64NV", .value = 2, .parameters = &.{} },
1433 .{ .name = "SignedInt8NV", .value = 3, .parameters = &.{} },
1434 .{ .name = "SignedInt16NV", .value = 4, .parameters = &.{} },
1435 .{ .name = "SignedInt32NV", .value = 5, .parameters = &.{} },
1436 .{ .name = "SignedInt64NV", .value = 6, .parameters = &.{} },
1437 .{ .name = "UnsignedInt8NV", .value = 7, .parameters = &.{} },
1438 .{ .name = "UnsignedInt16NV", .value = 8, .parameters = &.{} },
1439 .{ .name = "UnsignedInt32NV", .value = 9, .parameters = &.{} },
1440 .{ .name = "UnsignedInt64NV", .value = 10, .parameters = &.{} },
1441 .{ .name = "SignedInt8PackedNV", .value = 1000491000, .parameters = &.{} },
1442 .{ .name = "UnsignedInt8PackedNV", .value = 1000491001, .parameters = &.{} },
1443 .{ .name = "FloatE4M3NV", .value = 1000491002, .parameters = &.{} },
1444 .{ .name = "FloatE5M2NV", .value = 1000491003, .parameters = &.{} },
14281445 },
1429 .@"OpenCL.DebugInfo.100.DebugBaseTypeAttributeEncoding" => &[_]Enumerant{
1430 .{ .name = "Unspecified", .value = 0, .parameters = &[_]OperandKind{} },
1431 .{ .name = "Address", .value = 1, .parameters = &[_]OperandKind{} },
1432 .{ .name = "Boolean", .value = 2, .parameters = &[_]OperandKind{} },
1433 .{ .name = "Float", .value = 3, .parameters = &[_]OperandKind{} },
1434 .{ .name = "Signed", .value = 4, .parameters = &[_]OperandKind{} },
1435 .{ .name = "SignedChar", .value = 5, .parameters = &[_]OperandKind{} },
1436 .{ .name = "Unsigned", .value = 6, .parameters = &[_]OperandKind{} },
1437 .{ .name = "UnsignedChar", .value = 7, .parameters = &[_]OperandKind{} },
1446 .id_result_type => unreachable,
1447 .id_result => unreachable,
1448 .id_memory_semantics => unreachable,
1449 .id_scope => unreachable,
1450 .id_ref => unreachable,
1451 .literal_integer => unreachable,
1452 .literal_string => unreachable,
1453 .literal_float => unreachable,
1454 .literal_context_dependent_number => unreachable,
1455 .literal_ext_inst_integer => unreachable,
1456 .literal_spec_constant_op_integer => unreachable,
1457 .pair_literal_integer_id_ref => unreachable,
1458 .pair_id_ref_literal_integer => unreachable,
1459 .pair_id_ref_id_ref => unreachable,
1460 .tensor_operands => &.{
1461 .{ .name = "NoneARM", .value = 0x0000, .parameters = &.{} },
1462 .{ .name = "NontemporalARM", .value = 0x0001, .parameters = &.{} },
1463 .{ .name = "OutOfBoundsValueARM", .value = 0x0002, .parameters = &.{.id_ref} },
1464 .{ .name = "MakeElementAvailableARM", .value = 0x0004, .parameters = &.{.id_ref} },
1465 .{ .name = "MakeElementVisibleARM", .value = 0x0008, .parameters = &.{.id_ref} },
1466 .{ .name = "NonPrivateElementARM", .value = 0x0010, .parameters = &.{} },
14381467 },
1439 .@"OpenCL.DebugInfo.100.DebugCompositeType" => &[_]Enumerant{
1440 .{ .name = "Class", .value = 0, .parameters = &[_]OperandKind{} },
1441 .{ .name = "Structure", .value = 1, .parameters = &[_]OperandKind{} },
1442 .{ .name = "Union", .value = 2, .parameters = &[_]OperandKind{} },
1468 .debug_info_debug_info_flags => &.{
1469 .{ .name = "FlagIsProtected", .value = 0x01, .parameters = &.{} },
1470 .{ .name = "FlagIsPrivate", .value = 0x02, .parameters = &.{} },
1471 .{ .name = "FlagIsPublic", .value = 0x03, .parameters = &.{} },
1472 .{ .name = "FlagIsLocal", .value = 0x04, .parameters = &.{} },
1473 .{ .name = "FlagIsDefinition", .value = 0x08, .parameters = &.{} },
1474 .{ .name = "FlagFwdDecl", .value = 0x10, .parameters = &.{} },
1475 .{ .name = "FlagArtificial", .value = 0x20, .parameters = &.{} },
1476 .{ .name = "FlagExplicit", .value = 0x40, .parameters = &.{} },
1477 .{ .name = "FlagPrototyped", .value = 0x80, .parameters = &.{} },
1478 .{ .name = "FlagObjectPointer", .value = 0x100, .parameters = &.{} },
1479 .{ .name = "FlagStaticMember", .value = 0x200, .parameters = &.{} },
1480 .{ .name = "FlagIndirectVariable", .value = 0x400, .parameters = &.{} },
1481 .{ .name = "FlagLValueReference", .value = 0x800, .parameters = &.{} },
1482 .{ .name = "FlagRValueReference", .value = 0x1000, .parameters = &.{} },
1483 .{ .name = "FlagIsOptimized", .value = 0x2000, .parameters = &.{} },
14431484 },
1444 .@"OpenCL.DebugInfo.100.DebugTypeQualifier" => &[_]Enumerant{
1445 .{ .name = "ConstType", .value = 0, .parameters = &[_]OperandKind{} },
1446 .{ .name = "VolatileType", .value = 1, .parameters = &[_]OperandKind{} },
1447 .{ .name = "RestrictType", .value = 2, .parameters = &[_]OperandKind{} },
1448 .{ .name = "AtomicType", .value = 3, .parameters = &[_]OperandKind{} },
1485 .debug_info_debug_base_type_attribute_encoding => &.{
1486 .{ .name = "Unspecified", .value = 0, .parameters = &.{} },
1487 .{ .name = "Address", .value = 1, .parameters = &.{} },
1488 .{ .name = "Boolean", .value = 2, .parameters = &.{} },
1489 .{ .name = "Float", .value = 4, .parameters = &.{} },
1490 .{ .name = "Signed", .value = 5, .parameters = &.{} },
1491 .{ .name = "SignedChar", .value = 6, .parameters = &.{} },
1492 .{ .name = "Unsigned", .value = 7, .parameters = &.{} },
1493 .{ .name = "UnsignedChar", .value = 8, .parameters = &.{} },
14491494 },
1450 .@"OpenCL.DebugInfo.100.DebugOperation" => &[_]Enumerant{
1451 .{ .name = "Deref", .value = 0, .parameters = &[_]OperandKind{} },
1452 .{ .name = "Plus", .value = 1, .parameters = &[_]OperandKind{} },
1453 .{ .name = "Minus", .value = 2, .parameters = &[_]OperandKind{} },
1454 .{ .name = "PlusUconst", .value = 3, .parameters = &[_]OperandKind{.LiteralInteger} },
1455 .{ .name = "BitPiece", .value = 4, .parameters = &[_]OperandKind{ .LiteralInteger, .LiteralInteger } },
1456 .{ .name = "Swap", .value = 5, .parameters = &[_]OperandKind{} },
1457 .{ .name = "Xderef", .value = 6, .parameters = &[_]OperandKind{} },
1458 .{ .name = "StackValue", .value = 7, .parameters = &[_]OperandKind{} },
1459 .{ .name = "Constu", .value = 8, .parameters = &[_]OperandKind{.LiteralInteger} },
1460 .{ .name = "Fragment", .value = 9, .parameters = &[_]OperandKind{ .LiteralInteger, .LiteralInteger } },
1495 .debug_info_debug_composite_type => &.{
1496 .{ .name = "Class", .value = 0, .parameters = &.{} },
1497 .{ .name = "Structure", .value = 1, .parameters = &.{} },
1498 .{ .name = "Union", .value = 2, .parameters = &.{} },
14611499 },
1462 .@"OpenCL.DebugInfo.100.DebugImportedEntity" => &[_]Enumerant{
1463 .{ .name = "ImportedModule", .value = 0, .parameters = &[_]OperandKind{} },
1464 .{ .name = "ImportedDeclaration", .value = 1, .parameters = &[_]OperandKind{} },
1500 .debug_info_debug_type_qualifier => &.{
1501 .{ .name = "ConstType", .value = 0, .parameters = &.{} },
1502 .{ .name = "VolatileType", .value = 1, .parameters = &.{} },
1503 .{ .name = "RestrictType", .value = 2, .parameters = &.{} },
14651504 },
1466 .@"NonSemantic.Shader.DebugInfo.100.DebugInfoFlags" => &[_]Enumerant{
1467 .{ .name = "FlagIsProtected", .value = 0x01, .parameters = &[_]OperandKind{} },
1468 .{ .name = "FlagIsPrivate", .value = 0x02, .parameters = &[_]OperandKind{} },
1469 .{ .name = "FlagIsPublic", .value = 0x03, .parameters = &[_]OperandKind{} },
1470 .{ .name = "FlagIsLocal", .value = 0x04, .parameters = &[_]OperandKind{} },
1471 .{ .name = "FlagIsDefinition", .value = 0x08, .parameters = &[_]OperandKind{} },
1472 .{ .name = "FlagFwdDecl", .value = 0x10, .parameters = &[_]OperandKind{} },
1473 .{ .name = "FlagArtificial", .value = 0x20, .parameters = &[_]OperandKind{} },
1474 .{ .name = "FlagExplicit", .value = 0x40, .parameters = &[_]OperandKind{} },
1475 .{ .name = "FlagPrototyped", .value = 0x80, .parameters = &[_]OperandKind{} },
1476 .{ .name = "FlagObjectPointer", .value = 0x100, .parameters = &[_]OperandKind{} },
1477 .{ .name = "FlagStaticMember", .value = 0x200, .parameters = &[_]OperandKind{} },
1478 .{ .name = "FlagIndirectVariable", .value = 0x400, .parameters = &[_]OperandKind{} },
1479 .{ .name = "FlagLValueReference", .value = 0x800, .parameters = &[_]OperandKind{} },
1480 .{ .name = "FlagRValueReference", .value = 0x1000, .parameters = &[_]OperandKind{} },
1481 .{ .name = "FlagIsOptimized", .value = 0x2000, .parameters = &[_]OperandKind{} },
1482 .{ .name = "FlagIsEnumClass", .value = 0x4000, .parameters = &[_]OperandKind{} },
1483 .{ .name = "FlagTypePassByValue", .value = 0x8000, .parameters = &[_]OperandKind{} },
1484 .{ .name = "FlagTypePassByReference", .value = 0x10000, .parameters = &[_]OperandKind{} },
1485 .{ .name = "FlagUnknownPhysicalLayout", .value = 0x20000, .parameters = &[_]OperandKind{} },
1505 .debug_info_debug_operation => &.{
1506 .{ .name = "Deref", .value = 0, .parameters = &.{} },
1507 .{ .name = "Plus", .value = 1, .parameters = &.{} },
1508 .{ .name = "Minus", .value = 2, .parameters = &.{} },
1509 .{ .name = "PlusUconst", .value = 3, .parameters = &.{.literal_integer} },
1510 .{ .name = "BitPiece", .value = 4, .parameters = &.{ .literal_integer, .literal_integer } },
1511 .{ .name = "Swap", .value = 5, .parameters = &.{} },
1512 .{ .name = "Xderef", .value = 6, .parameters = &.{} },
1513 .{ .name = "StackValue", .value = 7, .parameters = &.{} },
1514 .{ .name = "Constu", .value = 8, .parameters = &.{.literal_integer} },
14861515 },
1487 .@"NonSemantic.Shader.DebugInfo.100.BuildIdentifierFlags" => &[_]Enumerant{
1488 .{ .name = "IdentifierPossibleDuplicates", .value = 0x01, .parameters = &[_]OperandKind{} },
1516 .open_cl_debug_info_100_debug_info_flags => &.{
1517 .{ .name = "FlagIsProtected", .value = 0x01, .parameters = &.{} },
1518 .{ .name = "FlagIsPrivate", .value = 0x02, .parameters = &.{} },
1519 .{ .name = "FlagIsPublic", .value = 0x03, .parameters = &.{} },
1520 .{ .name = "FlagIsLocal", .value = 0x04, .parameters = &.{} },
1521 .{ .name = "FlagIsDefinition", .value = 0x08, .parameters = &.{} },
1522 .{ .name = "FlagFwdDecl", .value = 0x10, .parameters = &.{} },
1523 .{ .name = "FlagArtificial", .value = 0x20, .parameters = &.{} },
1524 .{ .name = "FlagExplicit", .value = 0x40, .parameters = &.{} },
1525 .{ .name = "FlagPrototyped", .value = 0x80, .parameters = &.{} },
1526 .{ .name = "FlagObjectPointer", .value = 0x100, .parameters = &.{} },
1527 .{ .name = "FlagStaticMember", .value = 0x200, .parameters = &.{} },
1528 .{ .name = "FlagIndirectVariable", .value = 0x400, .parameters = &.{} },
1529 .{ .name = "FlagLValueReference", .value = 0x800, .parameters = &.{} },
1530 .{ .name = "FlagRValueReference", .value = 0x1000, .parameters = &.{} },
1531 .{ .name = "FlagIsOptimized", .value = 0x2000, .parameters = &.{} },
1532 .{ .name = "FlagIsEnumClass", .value = 0x4000, .parameters = &.{} },
1533 .{ .name = "FlagTypePassByValue", .value = 0x8000, .parameters = &.{} },
1534 .{ .name = "FlagTypePassByReference", .value = 0x10000, .parameters = &.{} },
14891535 },
1490 .@"NonSemantic.Shader.DebugInfo.100.DebugBaseTypeAttributeEncoding" => &[_]Enumerant{
1491 .{ .name = "Unspecified", .value = 0, .parameters = &[_]OperandKind{} },
1492 .{ .name = "Address", .value = 1, .parameters = &[_]OperandKind{} },
1493 .{ .name = "Boolean", .value = 2, .parameters = &[_]OperandKind{} },
1494 .{ .name = "Float", .value = 3, .parameters = &[_]OperandKind{} },
1495 .{ .name = "Signed", .value = 4, .parameters = &[_]OperandKind{} },
1496 .{ .name = "SignedChar", .value = 5, .parameters = &[_]OperandKind{} },
1497 .{ .name = "Unsigned", .value = 6, .parameters = &[_]OperandKind{} },
1498 .{ .name = "UnsignedChar", .value = 7, .parameters = &[_]OperandKind{} },
1536 .open_cl_debug_info_100_debug_base_type_attribute_encoding => &.{
1537 .{ .name = "Unspecified", .value = 0, .parameters = &.{} },
1538 .{ .name = "Address", .value = 1, .parameters = &.{} },
1539 .{ .name = "Boolean", .value = 2, .parameters = &.{} },
1540 .{ .name = "Float", .value = 3, .parameters = &.{} },
1541 .{ .name = "Signed", .value = 4, .parameters = &.{} },
1542 .{ .name = "SignedChar", .value = 5, .parameters = &.{} },
1543 .{ .name = "Unsigned", .value = 6, .parameters = &.{} },
1544 .{ .name = "UnsignedChar", .value = 7, .parameters = &.{} },
14991545 },
1500 .@"NonSemantic.Shader.DebugInfo.100.DebugCompositeType" => &[_]Enumerant{
1501 .{ .name = "Class", .value = 0, .parameters = &[_]OperandKind{} },
1502 .{ .name = "Structure", .value = 1, .parameters = &[_]OperandKind{} },
1503 .{ .name = "Union", .value = 2, .parameters = &[_]OperandKind{} },
1546 .open_cl_debug_info_100_debug_composite_type => &.{
1547 .{ .name = "Class", .value = 0, .parameters = &.{} },
1548 .{ .name = "Structure", .value = 1, .parameters = &.{} },
1549 .{ .name = "Union", .value = 2, .parameters = &.{} },
15041550 },
1505 .@"NonSemantic.Shader.DebugInfo.100.DebugTypeQualifier" => &[_]Enumerant{
1506 .{ .name = "ConstType", .value = 0, .parameters = &[_]OperandKind{} },
1507 .{ .name = "VolatileType", .value = 1, .parameters = &[_]OperandKind{} },
1508 .{ .name = "RestrictType", .value = 2, .parameters = &[_]OperandKind{} },
1509 .{ .name = "AtomicType", .value = 3, .parameters = &[_]OperandKind{} },
1551 .open_cl_debug_info_100_debug_type_qualifier => &.{
1552 .{ .name = "ConstType", .value = 0, .parameters = &.{} },
1553 .{ .name = "VolatileType", .value = 1, .parameters = &.{} },
1554 .{ .name = "RestrictType", .value = 2, .parameters = &.{} },
1555 .{ .name = "AtomicType", .value = 3, .parameters = &.{} },
15101556 },
1511 .@"NonSemantic.Shader.DebugInfo.100.DebugOperation" => &[_]Enumerant{
1512 .{ .name = "Deref", .value = 0, .parameters = &[_]OperandKind{} },
1513 .{ .name = "Plus", .value = 1, .parameters = &[_]OperandKind{} },
1514 .{ .name = "Minus", .value = 2, .parameters = &[_]OperandKind{} },
1515 .{ .name = "PlusUconst", .value = 3, .parameters = &[_]OperandKind{.IdRef} },
1516 .{ .name = "BitPiece", .value = 4, .parameters = &[_]OperandKind{ .IdRef, .IdRef } },
1517 .{ .name = "Swap", .value = 5, .parameters = &[_]OperandKind{} },
1518 .{ .name = "Xderef", .value = 6, .parameters = &[_]OperandKind{} },
1519 .{ .name = "StackValue", .value = 7, .parameters = &[_]OperandKind{} },
1520 .{ .name = "Constu", .value = 8, .parameters = &[_]OperandKind{.IdRef} },
1521 .{ .name = "Fragment", .value = 9, .parameters = &[_]OperandKind{ .IdRef, .IdRef } },
1557 .open_cl_debug_info_100_debug_operation => &.{
1558 .{ .name = "Deref", .value = 0, .parameters = &.{} },
1559 .{ .name = "Plus", .value = 1, .parameters = &.{} },
1560 .{ .name = "Minus", .value = 2, .parameters = &.{} },
1561 .{ .name = "PlusUconst", .value = 3, .parameters = &.{.literal_integer} },
1562 .{ .name = "BitPiece", .value = 4, .parameters = &.{ .literal_integer, .literal_integer } },
1563 .{ .name = "Swap", .value = 5, .parameters = &.{} },
1564 .{ .name = "Xderef", .value = 6, .parameters = &.{} },
1565 .{ .name = "StackValue", .value = 7, .parameters = &.{} },
1566 .{ .name = "Constu", .value = 8, .parameters = &.{.literal_integer} },
1567 .{ .name = "Fragment", .value = 9, .parameters = &.{ .literal_integer, .literal_integer } },
15221568 },
1523 .@"NonSemantic.Shader.DebugInfo.100.DebugImportedEntity" => &[_]Enumerant{
1524 .{ .name = "ImportedModule", .value = 0, .parameters = &[_]OperandKind{} },
1525 .{ .name = "ImportedDeclaration", .value = 1, .parameters = &[_]OperandKind{} },
1569 .open_cl_debug_info_100_debug_imported_entity => &.{
1570 .{ .name = "ImportedModule", .value = 0, .parameters = &.{} },
1571 .{ .name = "ImportedDeclaration", .value = 1, .parameters = &.{} },
15261572 },
1527 .@"NonSemantic.ClspvReflection.6.KernelPropertyFlags" => &[_]Enumerant{
1528 .{ .name = "MayUsePrintf", .value = 0x1, .parameters = &[_]OperandKind{} },
1573 .non_semantic_clspv_reflection_6_kernel_property_flags => &.{
1574 .{ .name = "MayUsePrintf", .value = 0x1, .parameters = &.{} },
15291575 },
1530 .@"DebugInfo.DebugInfoFlags" => &[_]Enumerant{
1531 .{ .name = "FlagIsProtected", .value = 0x01, .parameters = &[_]OperandKind{} },
1532 .{ .name = "FlagIsPrivate", .value = 0x02, .parameters = &[_]OperandKind{} },
1533 .{ .name = "FlagIsPublic", .value = 0x03, .parameters = &[_]OperandKind{} },
1534 .{ .name = "FlagIsLocal", .value = 0x04, .parameters = &[_]OperandKind{} },
1535 .{ .name = "FlagIsDefinition", .value = 0x08, .parameters = &[_]OperandKind{} },
1536 .{ .name = "FlagFwdDecl", .value = 0x10, .parameters = &[_]OperandKind{} },
1537 .{ .name = "FlagArtificial", .value = 0x20, .parameters = &[_]OperandKind{} },
1538 .{ .name = "FlagExplicit", .value = 0x40, .parameters = &[_]OperandKind{} },
1539 .{ .name = "FlagPrototyped", .value = 0x80, .parameters = &[_]OperandKind{} },
1540 .{ .name = "FlagObjectPointer", .value = 0x100, .parameters = &[_]OperandKind{} },
1541 .{ .name = "FlagStaticMember", .value = 0x200, .parameters = &[_]OperandKind{} },
1542 .{ .name = "FlagIndirectVariable", .value = 0x400, .parameters = &[_]OperandKind{} },
1543 .{ .name = "FlagLValueReference", .value = 0x800, .parameters = &[_]OperandKind{} },
1544 .{ .name = "FlagRValueReference", .value = 0x1000, .parameters = &[_]OperandKind{} },
1545 .{ .name = "FlagIsOptimized", .value = 0x2000, .parameters = &[_]OperandKind{} },
1576 .non_semantic_shader_debug_info_100_debug_info_flags => &.{
1577 .{ .name = "FlagIsProtected", .value = 0x01, .parameters = &.{} },
1578 .{ .name = "FlagIsPrivate", .value = 0x02, .parameters = &.{} },
1579 .{ .name = "FlagIsPublic", .value = 0x03, .parameters = &.{} },
1580 .{ .name = "FlagIsLocal", .value = 0x04, .parameters = &.{} },
1581 .{ .name = "FlagIsDefinition", .value = 0x08, .parameters = &.{} },
1582 .{ .name = "FlagFwdDecl", .value = 0x10, .parameters = &.{} },
1583 .{ .name = "FlagArtificial", .value = 0x20, .parameters = &.{} },
1584 .{ .name = "FlagExplicit", .value = 0x40, .parameters = &.{} },
1585 .{ .name = "FlagPrototyped", .value = 0x80, .parameters = &.{} },
1586 .{ .name = "FlagObjectPointer", .value = 0x100, .parameters = &.{} },
1587 .{ .name = "FlagStaticMember", .value = 0x200, .parameters = &.{} },
1588 .{ .name = "FlagIndirectVariable", .value = 0x400, .parameters = &.{} },
1589 .{ .name = "FlagLValueReference", .value = 0x800, .parameters = &.{} },
1590 .{ .name = "FlagRValueReference", .value = 0x1000, .parameters = &.{} },
1591 .{ .name = "FlagIsOptimized", .value = 0x2000, .parameters = &.{} },
1592 .{ .name = "FlagIsEnumClass", .value = 0x4000, .parameters = &.{} },
1593 .{ .name = "FlagTypePassByValue", .value = 0x8000, .parameters = &.{} },
1594 .{ .name = "FlagTypePassByReference", .value = 0x10000, .parameters = &.{} },
1595 .{ .name = "FlagUnknownPhysicalLayout", .value = 0x20000, .parameters = &.{} },
15461596 },
1547 .@"DebugInfo.DebugBaseTypeAttributeEncoding" => &[_]Enumerant{
1548 .{ .name = "Unspecified", .value = 0, .parameters = &[_]OperandKind{} },
1549 .{ .name = "Address", .value = 1, .parameters = &[_]OperandKind{} },
1550 .{ .name = "Boolean", .value = 2, .parameters = &[_]OperandKind{} },
1551 .{ .name = "Float", .value = 4, .parameters = &[_]OperandKind{} },
1552 .{ .name = "Signed", .value = 5, .parameters = &[_]OperandKind{} },
1553 .{ .name = "SignedChar", .value = 6, .parameters = &[_]OperandKind{} },
1554 .{ .name = "Unsigned", .value = 7, .parameters = &[_]OperandKind{} },
1555 .{ .name = "UnsignedChar", .value = 8, .parameters = &[_]OperandKind{} },
1597 .non_semantic_shader_debug_info_100_build_identifier_flags => &.{
1598 .{ .name = "IdentifierPossibleDuplicates", .value = 0x01, .parameters = &.{} },
15561599 },
1557 .@"DebugInfo.DebugCompositeType" => &[_]Enumerant{
1558 .{ .name = "Class", .value = 0, .parameters = &[_]OperandKind{} },
1559 .{ .name = "Structure", .value = 1, .parameters = &[_]OperandKind{} },
1560 .{ .name = "Union", .value = 2, .parameters = &[_]OperandKind{} },
1600 .non_semantic_shader_debug_info_100_debug_base_type_attribute_encoding => &.{
1601 .{ .name = "Unspecified", .value = 0, .parameters = &.{} },
1602 .{ .name = "Address", .value = 1, .parameters = &.{} },
1603 .{ .name = "Boolean", .value = 2, .parameters = &.{} },
1604 .{ .name = "Float", .value = 3, .parameters = &.{} },
1605 .{ .name = "Signed", .value = 4, .parameters = &.{} },
1606 .{ .name = "SignedChar", .value = 5, .parameters = &.{} },
1607 .{ .name = "Unsigned", .value = 6, .parameters = &.{} },
1608 .{ .name = "UnsignedChar", .value = 7, .parameters = &.{} },
15611609 },
1562 .@"DebugInfo.DebugTypeQualifier" => &[_]Enumerant{
1563 .{ .name = "ConstType", .value = 0, .parameters = &[_]OperandKind{} },
1564 .{ .name = "VolatileType", .value = 1, .parameters = &[_]OperandKind{} },
1565 .{ .name = "RestrictType", .value = 2, .parameters = &[_]OperandKind{} },
1610 .non_semantic_shader_debug_info_100_debug_composite_type => &.{
1611 .{ .name = "Class", .value = 0, .parameters = &.{} },
1612 .{ .name = "Structure", .value = 1, .parameters = &.{} },
1613 .{ .name = "Union", .value = 2, .parameters = &.{} },
15661614 },
1567 .@"DebugInfo.DebugOperation" => &[_]Enumerant{
1568 .{ .name = "Deref", .value = 0, .parameters = &[_]OperandKind{} },
1569 .{ .name = "Plus", .value = 1, .parameters = &[_]OperandKind{} },
1570 .{ .name = "Minus", .value = 2, .parameters = &[_]OperandKind{} },
1571 .{ .name = "PlusUconst", .value = 3, .parameters = &[_]OperandKind{.LiteralInteger} },
1572 .{ .name = "BitPiece", .value = 4, .parameters = &[_]OperandKind{ .LiteralInteger, .LiteralInteger } },
1573 .{ .name = "Swap", .value = 5, .parameters = &[_]OperandKind{} },
1574 .{ .name = "Xderef", .value = 6, .parameters = &[_]OperandKind{} },
1575 .{ .name = "StackValue", .value = 7, .parameters = &[_]OperandKind{} },
1576 .{ .name = "Constu", .value = 8, .parameters = &[_]OperandKind{.LiteralInteger} },
1615 .non_semantic_shader_debug_info_100_debug_type_qualifier => &.{
1616 .{ .name = "ConstType", .value = 0, .parameters = &.{} },
1617 .{ .name = "VolatileType", .value = 1, .parameters = &.{} },
1618 .{ .name = "RestrictType", .value = 2, .parameters = &.{} },
1619 .{ .name = "AtomicType", .value = 3, .parameters = &.{} },
1620 },
1621 .non_semantic_shader_debug_info_100_debug_operation => &.{
1622 .{ .name = "Deref", .value = 0, .parameters = &.{} },
1623 .{ .name = "Plus", .value = 1, .parameters = &.{} },
1624 .{ .name = "Minus", .value = 2, .parameters = &.{} },
1625 .{ .name = "PlusUconst", .value = 3, .parameters = &.{.id_ref} },
1626 .{ .name = "BitPiece", .value = 4, .parameters = &.{ .id_ref, .id_ref } },
1627 .{ .name = "Swap", .value = 5, .parameters = &.{} },
1628 .{ .name = "Xderef", .value = 6, .parameters = &.{} },
1629 .{ .name = "StackValue", .value = 7, .parameters = &.{} },
1630 .{ .name = "Constu", .value = 8, .parameters = &.{.id_ref} },
1631 .{ .name = "Fragment", .value = 9, .parameters = &.{ .id_ref, .id_ref } },
1632 },
1633 .non_semantic_shader_debug_info_100_debug_imported_entity => &.{
1634 .{ .name = "ImportedModule", .value = 0, .parameters = &.{} },
1635 .{ .name = "ImportedDeclaration", .value = 1, .parameters = &.{} },
15771636 },
15781637 };
15791638 }
......@@ -1926,14 +1985,34 @@ pub const Opcode = enum(u16) {
19261985 OpColorAttachmentReadEXT = 4160,
19271986 OpDepthAttachmentReadEXT = 4161,
19281987 OpStencilAttachmentReadEXT = 4162,
1988 OpTypeTensorARM = 4163,
1989 OpTensorReadARM = 4164,
1990 OpTensorWriteARM = 4165,
1991 OpTensorQuerySizeARM = 4166,
1992 OpGraphConstantARM = 4181,
1993 OpGraphEntryPointARM = 4182,
1994 OpGraphARM = 4183,
1995 OpGraphInputARM = 4184,
1996 OpGraphSetOutputARM = 4185,
1997 OpGraphEndARM = 4186,
1998 OpTypeGraphARM = 4190,
19291999 OpTerminateInvocation = 4416,
2000 OpTypeUntypedPointerKHR = 4417,
2001 OpUntypedVariableKHR = 4418,
2002 OpUntypedAccessChainKHR = 4419,
2003 OpUntypedInBoundsAccessChainKHR = 4420,
19302004 OpSubgroupBallotKHR = 4421,
19312005 OpSubgroupFirstInvocationKHR = 4422,
2006 OpUntypedPtrAccessChainKHR = 4423,
2007 OpUntypedInBoundsPtrAccessChainKHR = 4424,
2008 OpUntypedArrayLengthKHR = 4425,
2009 OpUntypedPrefetchKHR = 4426,
19322010 OpSubgroupAllKHR = 4428,
19332011 OpSubgroupAnyKHR = 4429,
19342012 OpSubgroupAllEqualKHR = 4430,
19352013 OpGroupNonUniformRotateKHR = 4431,
19362014 OpSubgroupReadInvocationKHR = 4432,
2015 OpExtInstWithForwardRefsKHR = 4433,
19372016 OpTraceRayKHR = 4445,
19382017 OpExecuteCallableKHR = 4446,
19392018 OpConvertUToAccelerationStructureKHR = 4447,
......@@ -1950,6 +2029,9 @@ pub const Opcode = enum(u16) {
19502029 OpCooperativeMatrixStoreKHR = 4458,
19512030 OpCooperativeMatrixMulAddKHR = 4459,
19522031 OpCooperativeMatrixLengthKHR = 4460,
2032 OpConstantCompositeReplicateEXT = 4461,
2033 OpSpecConstantCompositeReplicateEXT = 4462,
2034 OpCompositeConstructReplicateEXT = 4463,
19532035 OpTypeRayQueryKHR = 4472,
19542036 OpRayQueryInitializeKHR = 4473,
19552037 OpRayQueryTerminateKHR = 4474,
......@@ -1976,9 +2058,14 @@ pub const Opcode = enum(u16) {
19762058 OpFragmentMaskFetchAMD = 5011,
19772059 OpFragmentFetchAMD = 5012,
19782060 OpReadClockKHR = 5056,
1979 OpFinalizeNodePayloadsAMDX = 5075,
2061 OpAllocateNodePayloadsAMDX = 5074,
2062 OpEnqueueNodePayloadsAMDX = 5075,
2063 OpTypeNodePayloadArrayAMDX = 5076,
19802064 OpFinishWritingNodePayloadAMDX = 5078,
1981 OpInitializeNodePayloadsAMDX = 5090,
2065 OpNodePayloadArrayLengthAMDX = 5090,
2066 OpIsNodePayloadValidAMDX = 5101,
2067 OpConstantStringAMDX = 5103,
2068 OpSpecConstantStringAMDX = 5104,
19822069 OpGroupNonUniformQuadAllKHR = 5110,
19832070 OpGroupNonUniformQuadAnyKHR = 5111,
19842071 OpHitObjectRecordHitMotionNV = 5249,
......@@ -2015,12 +2102,20 @@ pub const Opcode = enum(u16) {
20152102 OpReorderThreadWithHintNV = 5280,
20162103 OpTypeHitObjectNV = 5281,
20172104 OpImageSampleFootprintNV = 5283,
2105 OpTypeCooperativeVectorNV = 5288,
2106 OpCooperativeVectorMatrixMulNV = 5289,
2107 OpCooperativeVectorOuterProductAccumulateNV = 5290,
2108 OpCooperativeVectorReduceSumAccumulateNV = 5291,
2109 OpCooperativeVectorMatrixMulAddNV = 5292,
2110 OpCooperativeMatrixConvertNV = 5293,
20182111 OpEmitMeshTasksEXT = 5294,
20192112 OpSetMeshOutputsEXT = 5295,
20202113 OpGroupNonUniformPartitionNV = 5296,
20212114 OpWritePackedPrimitiveIndices4x8NV = 5299,
20222115 OpFetchMicroTriangleVertexPositionNV = 5300,
20232116 OpFetchMicroTriangleVertexBarycentricNV = 5301,
2117 OpCooperativeVectorLoadNV = 5302,
2118 OpCooperativeVectorStoreNV = 5303,
20242119 OpReportIntersectionKHR = 5334,
20252120 OpIgnoreIntersectionNV = 5335,
20262121 OpTerminateRayNV = 5336,
......@@ -2030,6 +2125,8 @@ pub const Opcode = enum(u16) {
20302125 OpRayQueryGetIntersectionTriangleVertexPositionsKHR = 5340,
20312126 OpTypeAccelerationStructureKHR = 5341,
20322127 OpExecuteCallableNV = 5344,
2128 OpRayQueryGetClusterIdNV = 5345,
2129 OpHitObjectGetClusterIdNV = 5346,
20332130 OpTypeCooperativeMatrixNV = 5358,
20342131 OpCooperativeMatrixLoadNV = 5359,
20352132 OpCooperativeMatrixStoreNV = 5360,
......@@ -2037,8 +2134,25 @@ pub const Opcode = enum(u16) {
20372134 OpCooperativeMatrixLengthNV = 5362,
20382135 OpBeginInvocationInterlockEXT = 5364,
20392136 OpEndInvocationInterlockEXT = 5365,
2137 OpCooperativeMatrixReduceNV = 5366,
2138 OpCooperativeMatrixLoadTensorNV = 5367,
2139 OpCooperativeMatrixStoreTensorNV = 5368,
2140 OpCooperativeMatrixPerElementOpNV = 5369,
2141 OpTypeTensorLayoutNV = 5370,
2142 OpTypeTensorViewNV = 5371,
2143 OpCreateTensorLayoutNV = 5372,
2144 OpTensorLayoutSetDimensionNV = 5373,
2145 OpTensorLayoutSetStrideNV = 5374,
2146 OpTensorLayoutSliceNV = 5375,
2147 OpTensorLayoutSetClampValueNV = 5376,
2148 OpCreateTensorViewNV = 5377,
2149 OpTensorViewSetDimensionNV = 5378,
2150 OpTensorViewSetStrideNV = 5379,
20402151 OpDemoteToHelperInvocation = 5380,
20412152 OpIsHelperInvocationEXT = 5381,
2153 OpTensorViewSetClipNV = 5382,
2154 OpTensorLayoutSetBlockSizeNV = 5384,
2155 OpCooperativeMatrixTransposeNV = 5390,
20422156 OpConvertUToImageNV = 5391,
20432157 OpConvertUToSamplerNV = 5392,
20442158 OpConvertImageToUNV = 5393,
......@@ -2047,6 +2161,19 @@ pub const Opcode = enum(u16) {
20472161 OpConvertSampledImageToUNV = 5396,
20482162 OpSamplerImageAddressingModeNV = 5397,
20492163 OpRawAccessChainNV = 5398,
2164 OpRayQueryGetIntersectionSpherePositionNV = 5427,
2165 OpRayQueryGetIntersectionSphereRadiusNV = 5428,
2166 OpRayQueryGetIntersectionLSSPositionsNV = 5429,
2167 OpRayQueryGetIntersectionLSSRadiiNV = 5430,
2168 OpRayQueryGetIntersectionLSSHitValueNV = 5431,
2169 OpHitObjectGetSpherePositionNV = 5432,
2170 OpHitObjectGetSphereRadiusNV = 5433,
2171 OpHitObjectGetLSSPositionsNV = 5434,
2172 OpHitObjectGetLSSRadiiNV = 5435,
2173 OpHitObjectIsSphereHitNV = 5436,
2174 OpHitObjectIsLSSHitNV = 5437,
2175 OpRayQueryIsSphereHitNV = 5438,
2176 OpRayQueryIsLSSHitNV = 5439,
20502177 OpSubgroupShuffleINTEL = 5571,
20512178 OpSubgroupShuffleDownINTEL = 5572,
20522179 OpSubgroupShuffleUpINTEL = 5573,
......@@ -2108,6 +2235,20 @@ pub const Opcode = enum(u16) {
21082235 OpConvertBF16ToFINTEL = 6117,
21092236 OpControlBarrierArriveINTEL = 6142,
21102237 OpControlBarrierWaitINTEL = 6143,
2238 OpArithmeticFenceEXT = 6145,
2239 OpTaskSequenceCreateINTEL = 6163,
2240 OpTaskSequenceAsyncINTEL = 6164,
2241 OpTaskSequenceGetINTEL = 6165,
2242 OpTaskSequenceReleaseINTEL = 6166,
2243 OpTypeTaskSequenceINTEL = 6199,
2244 OpSubgroupBlockPrefetchINTEL = 6221,
2245 OpSubgroup2DBlockLoadINTEL = 6231,
2246 OpSubgroup2DBlockLoadTransformINTEL = 6232,
2247 OpSubgroup2DBlockLoadTransposeINTEL = 6233,
2248 OpSubgroup2DBlockPrefetchINTEL = 6234,
2249 OpSubgroup2DBlockStoreINTEL = 6235,
2250 OpSubgroupMatrixMultiplyAccumulateINTEL = 6237,
2251 OpBitwiseFunctionINTEL = 6242,
21112252 OpGroupIMulKHR = 6401,
21122253 OpGroupFMulKHR = 6402,
21132254 OpGroupBitwiseAndKHR = 6403,
......@@ -2116,1125 +2257,1290 @@ pub const Opcode = enum(u16) {
21162257 OpGroupLogicalAndKHR = 6406,
21172258 OpGroupLogicalOrKHR = 6407,
21182259 OpGroupLogicalXorKHR = 6408,
2260 OpRoundFToTF32INTEL = 6426,
21192261 OpMaskedGatherINTEL = 6428,
21202262 OpMaskedScatterINTEL = 6429,
2121 pub const OpSDotKHR = Opcode.OpSDot;
2122 pub const OpUDotKHR = Opcode.OpUDot;
2123 pub const OpSUDotKHR = Opcode.OpSUDot;
2124 pub const OpSDotAccSatKHR = Opcode.OpSDotAccSat;
2125 pub const OpUDotAccSatKHR = Opcode.OpUDotAccSat;
2126 pub const OpSUDotAccSatKHR = Opcode.OpSUDotAccSat;
2127 pub const OpReportIntersectionNV = Opcode.OpReportIntersectionKHR;
2128 pub const OpTypeAccelerationStructureNV = Opcode.OpTypeAccelerationStructureKHR;
2129 pub const OpDemoteToHelperInvocationEXT = Opcode.OpDemoteToHelperInvocation;
2130 pub const OpDecorateStringGOOGLE = Opcode.OpDecorateString;
2131 pub const OpMemberDecorateStringGOOGLE = Opcode.OpMemberDecorateString;
2263 OpConvertHandleToImageINTEL = 6529,
2264 OpConvertHandleToSamplerINTEL = 6530,
2265 OpConvertHandleToSampledImageINTEL = 6531,
21322266
21332267 pub fn Operands(comptime self: Opcode) type {
21342268 return switch (self) {
21352269 .OpNop => void,
2136 .OpUndef => struct { id_result_type: IdResultType, id_result: IdResult },
2270 .OpUndef => struct { id_result_type: Id, id_result: Id },
21372271 .OpSourceContinued => struct { continued_source: LiteralString },
2138 .OpSource => struct { source_language: SourceLanguage, version: LiteralInteger, file: ?IdRef = null, source: ?LiteralString = null },
2272 .OpSource => struct { source_language: SourceLanguage, version: LiteralInteger, file: ?Id = null, source: ?LiteralString = null },
21392273 .OpSourceExtension => struct { extension: LiteralString },
2140 .OpName => struct { target: IdRef, name: LiteralString },
2141 .OpMemberName => struct { type: IdRef, member: LiteralInteger, name: LiteralString },
2142 .OpString => struct { id_result: IdResult, string: LiteralString },
2143 .OpLine => struct { file: IdRef, line: LiteralInteger, column: LiteralInteger },
2274 .OpName => struct { target: Id, name: LiteralString },
2275 .OpMemberName => struct { type: Id, member: LiteralInteger, name: LiteralString },
2276 .OpString => struct { id_result: Id, string: LiteralString },
2277 .OpLine => struct { file: Id, line: LiteralInteger, column: LiteralInteger },
21442278 .OpExtension => struct { name: LiteralString },
2145 .OpExtInstImport => struct { id_result: IdResult, name: LiteralString },
2146 .OpExtInst => struct { id_result_type: IdResultType, id_result: IdResult, set: IdRef, instruction: LiteralExtInstInteger, id_ref_4: []const IdRef = &.{} },
2279 .OpExtInstImport => struct { id_result: Id, name: LiteralString },
2280 .OpExtInst => struct { id_result_type: Id, id_result: Id, set: Id, instruction: LiteralExtInstInteger, id_ref_4: []const Id = &.{} },
21472281 .OpMemoryModel => struct { addressing_model: AddressingModel, memory_model: MemoryModel },
2148 .OpEntryPoint => struct { execution_model: ExecutionModel, entry_point: IdRef, name: LiteralString, interface: []const IdRef = &.{} },
2149 .OpExecutionMode => struct { entry_point: IdRef, mode: ExecutionMode.Extended },
2282 .OpEntryPoint => struct { execution_model: ExecutionModel, entry_point: Id, name: LiteralString, interface: []const Id = &.{} },
2283 .OpExecutionMode => struct { entry_point: Id, mode: ExecutionMode.Extended },
21502284 .OpCapability => struct { capability: Capability },
2151 .OpTypeVoid => struct { id_result: IdResult },
2152 .OpTypeBool => struct { id_result: IdResult },
2153 .OpTypeInt => struct { id_result: IdResult, width: LiteralInteger, signedness: LiteralInteger },
2154 .OpTypeFloat => struct { id_result: IdResult, width: LiteralInteger },
2155 .OpTypeVector => struct { id_result: IdResult, component_type: IdRef, component_count: LiteralInteger },
2156 .OpTypeMatrix => struct { id_result: IdResult, column_type: IdRef, column_count: LiteralInteger },
2157 .OpTypeImage => struct { id_result: IdResult, sampled_type: IdRef, dim: Dim, depth: LiteralInteger, arrayed: LiteralInteger, ms: LiteralInteger, sampled: LiteralInteger, image_format: ImageFormat, access_qualifier: ?AccessQualifier = null },
2158 .OpTypeSampler => struct { id_result: IdResult },
2159 .OpTypeSampledImage => struct { id_result: IdResult, image_type: IdRef },
2160 .OpTypeArray => struct { id_result: IdResult, element_type: IdRef, length: IdRef },
2161 .OpTypeRuntimeArray => struct { id_result: IdResult, element_type: IdRef },
2162 .OpTypeStruct => struct { id_result: IdResult, id_ref: []const IdRef = &.{} },
2163 .OpTypeOpaque => struct { id_result: IdResult, literal_string: LiteralString },
2164 .OpTypePointer => struct { id_result: IdResult, storage_class: StorageClass, type: IdRef },
2165 .OpTypeFunction => struct { id_result: IdResult, return_type: IdRef, id_ref_2: []const IdRef = &.{} },
2166 .OpTypeEvent => struct { id_result: IdResult },
2167 .OpTypeDeviceEvent => struct { id_result: IdResult },
2168 .OpTypeReserveId => struct { id_result: IdResult },
2169 .OpTypeQueue => struct { id_result: IdResult },
2170 .OpTypePipe => struct { id_result: IdResult, qualifier: AccessQualifier },
2171 .OpTypeForwardPointer => struct { pointer_type: IdRef, storage_class: StorageClass },
2172 .OpConstantTrue => struct { id_result_type: IdResultType, id_result: IdResult },
2173 .OpConstantFalse => struct { id_result_type: IdResultType, id_result: IdResult },
2174 .OpConstant => struct { id_result_type: IdResultType, id_result: IdResult, value: LiteralContextDependentNumber },
2175 .OpConstantComposite => struct { id_result_type: IdResultType, id_result: IdResult, constituents: []const IdRef = &.{} },
2176 .OpConstantSampler => struct { id_result_type: IdResultType, id_result: IdResult, sampler_addressing_mode: SamplerAddressingMode, param: LiteralInteger, sampler_filter_mode: SamplerFilterMode },
2177 .OpConstantNull => struct { id_result_type: IdResultType, id_result: IdResult },
2178 .OpSpecConstantTrue => struct { id_result_type: IdResultType, id_result: IdResult },
2179 .OpSpecConstantFalse => struct { id_result_type: IdResultType, id_result: IdResult },
2180 .OpSpecConstant => struct { id_result_type: IdResultType, id_result: IdResult, value: LiteralContextDependentNumber },
2181 .OpSpecConstantComposite => struct { id_result_type: IdResultType, id_result: IdResult, constituents: []const IdRef = &.{} },
2182 .OpSpecConstantOp => struct { id_result_type: IdResultType, id_result: IdResult, opcode: LiteralSpecConstantOpInteger },
2183 .OpFunction => struct { id_result_type: IdResultType, id_result: IdResult, function_control: FunctionControl, function_type: IdRef },
2184 .OpFunctionParameter => struct { id_result_type: IdResultType, id_result: IdResult },
2285 .OpTypeVoid => struct { id_result: Id },
2286 .OpTypeBool => struct { id_result: Id },
2287 .OpTypeInt => struct { id_result: Id, width: LiteralInteger, signedness: LiteralInteger },
2288 .OpTypeFloat => struct { id_result: Id, width: LiteralInteger, floating_point_encoding: ?FPEncoding = null },
2289 .OpTypeVector => struct { id_result: Id, component_type: Id, component_count: LiteralInteger },
2290 .OpTypeMatrix => struct { id_result: Id, column_type: Id, column_count: LiteralInteger },
2291 .OpTypeImage => struct { id_result: Id, sampled_type: Id, dim: Dim, depth: LiteralInteger, arrayed: LiteralInteger, ms: LiteralInteger, sampled: LiteralInteger, image_format: ImageFormat, access_qualifier: ?AccessQualifier = null },
2292 .OpTypeSampler => struct { id_result: Id },
2293 .OpTypeSampledImage => struct { id_result: Id, image_type: Id },
2294 .OpTypeArray => struct { id_result: Id, element_type: Id, length: Id },
2295 .OpTypeRuntimeArray => struct { id_result: Id, element_type: Id },
2296 .OpTypeStruct => struct { id_result: Id, id_ref: []const Id = &.{} },
2297 .OpTypeOpaque => struct { id_result: Id, literal_string: LiteralString },
2298 .OpTypePointer => struct { id_result: Id, storage_class: StorageClass, type: Id },
2299 .OpTypeFunction => struct { id_result: Id, return_type: Id, id_ref_2: []const Id = &.{} },
2300 .OpTypeEvent => struct { id_result: Id },
2301 .OpTypeDeviceEvent => struct { id_result: Id },
2302 .OpTypeReserveId => struct { id_result: Id },
2303 .OpTypeQueue => struct { id_result: Id },
2304 .OpTypePipe => struct { id_result: Id, qualifier: AccessQualifier },
2305 .OpTypeForwardPointer => struct { pointer_type: Id, storage_class: StorageClass },
2306 .OpConstantTrue => struct { id_result_type: Id, id_result: Id },
2307 .OpConstantFalse => struct { id_result_type: Id, id_result: Id },
2308 .OpConstant => struct { id_result_type: Id, id_result: Id, value: LiteralContextDependentNumber },
2309 .OpConstantComposite => struct { id_result_type: Id, id_result: Id, constituents: []const Id = &.{} },
2310 .OpConstantSampler => struct { id_result_type: Id, id_result: Id, sampler_addressing_mode: SamplerAddressingMode, param: LiteralInteger, sampler_filter_mode: SamplerFilterMode },
2311 .OpConstantNull => struct { id_result_type: Id, id_result: Id },
2312 .OpSpecConstantTrue => struct { id_result_type: Id, id_result: Id },
2313 .OpSpecConstantFalse => struct { id_result_type: Id, id_result: Id },
2314 .OpSpecConstant => struct { id_result_type: Id, id_result: Id, value: LiteralContextDependentNumber },
2315 .OpSpecConstantComposite => struct { id_result_type: Id, id_result: Id, constituents: []const Id = &.{} },
2316 .OpSpecConstantOp => struct { id_result_type: Id, id_result: Id, opcode: LiteralSpecConstantOpInteger },
2317 .OpFunction => struct { id_result_type: Id, id_result: Id, function_control: FunctionControl, function_type: Id },
2318 .OpFunctionParameter => struct { id_result_type: Id, id_result: Id },
21852319 .OpFunctionEnd => void,
2186 .OpFunctionCall => struct { id_result_type: IdResultType, id_result: IdResult, function: IdRef, id_ref_3: []const IdRef = &.{} },
2187 .OpVariable => struct { id_result_type: IdResultType, id_result: IdResult, storage_class: StorageClass, initializer: ?IdRef = null },
2188 .OpImageTexelPointer => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef, coordinate: IdRef, sample: IdRef },
2189 .OpLoad => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory_access: ?MemoryAccess.Extended = null },
2190 .OpStore => struct { pointer: IdRef, object: IdRef, memory_access: ?MemoryAccess.Extended = null },
2191 .OpCopyMemory => struct { target: IdRef, source: IdRef, memory_access_2: ?MemoryAccess.Extended = null, memory_access_3: ?MemoryAccess.Extended = null },
2192 .OpCopyMemorySized => struct { target: IdRef, source: IdRef, size: IdRef, memory_access_3: ?MemoryAccess.Extended = null, memory_access_4: ?MemoryAccess.Extended = null },
2193 .OpAccessChain => struct { id_result_type: IdResultType, id_result: IdResult, base: IdRef, indexes: []const IdRef = &.{} },
2194 .OpInBoundsAccessChain => struct { id_result_type: IdResultType, id_result: IdResult, base: IdRef, indexes: []const IdRef = &.{} },
2195 .OpPtrAccessChain => struct { id_result_type: IdResultType, id_result: IdResult, base: IdRef, element: IdRef, indexes: []const IdRef = &.{} },
2196 .OpArrayLength => struct { id_result_type: IdResultType, id_result: IdResult, structure: IdRef, array_member: LiteralInteger },
2197 .OpGenericPtrMemSemantics => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef },
2198 .OpInBoundsPtrAccessChain => struct { id_result_type: IdResultType, id_result: IdResult, base: IdRef, element: IdRef, indexes: []const IdRef = &.{} },
2199 .OpDecorate => struct { target: IdRef, decoration: Decoration.Extended },
2200 .OpMemberDecorate => struct { structure_type: IdRef, member: LiteralInteger, decoration: Decoration.Extended },
2201 .OpDecorationGroup => struct { id_result: IdResult },
2202 .OpGroupDecorate => struct { decoration_group: IdRef, targets: []const IdRef = &.{} },
2203 .OpGroupMemberDecorate => struct { decoration_group: IdRef, targets: []const PairIdRefLiteralInteger = &.{} },
2204 .OpVectorExtractDynamic => struct { id_result_type: IdResultType, id_result: IdResult, vector: IdRef, index: IdRef },
2205 .OpVectorInsertDynamic => struct { id_result_type: IdResultType, id_result: IdResult, vector: IdRef, component: IdRef, index: IdRef },
2206 .OpVectorShuffle => struct { id_result_type: IdResultType, id_result: IdResult, vector_1: IdRef, vector_2: IdRef, components: []const LiteralInteger = &.{} },
2207 .OpCompositeConstruct => struct { id_result_type: IdResultType, id_result: IdResult, constituents: []const IdRef = &.{} },
2208 .OpCompositeExtract => struct { id_result_type: IdResultType, id_result: IdResult, composite: IdRef, indexes: []const LiteralInteger = &.{} },
2209 .OpCompositeInsert => struct { id_result_type: IdResultType, id_result: IdResult, object: IdRef, composite: IdRef, indexes: []const LiteralInteger = &.{} },
2210 .OpCopyObject => struct { id_result_type: IdResultType, id_result: IdResult, operand: IdRef },
2211 .OpTranspose => struct { id_result_type: IdResultType, id_result: IdResult, matrix: IdRef },
2212 .OpSampledImage => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef, sampler: IdRef },
2213 .OpImageSampleImplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, image_operands: ?ImageOperands.Extended = null },
2214 .OpImageSampleExplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, image_operands: ImageOperands.Extended },
2215 .OpImageSampleDrefImplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, d_ref: IdRef, image_operands: ?ImageOperands.Extended = null },
2216 .OpImageSampleDrefExplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, d_ref: IdRef, image_operands: ImageOperands.Extended },
2217 .OpImageSampleProjImplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, image_operands: ?ImageOperands.Extended = null },
2218 .OpImageSampleProjExplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, image_operands: ImageOperands.Extended },
2219 .OpImageSampleProjDrefImplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, d_ref: IdRef, image_operands: ?ImageOperands.Extended = null },
2220 .OpImageSampleProjDrefExplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, d_ref: IdRef, image_operands: ImageOperands.Extended },
2221 .OpImageFetch => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef, coordinate: IdRef, image_operands: ?ImageOperands.Extended = null },
2222 .OpImageGather => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, component: IdRef, image_operands: ?ImageOperands.Extended = null },
2223 .OpImageDrefGather => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, d_ref: IdRef, image_operands: ?ImageOperands.Extended = null },
2224 .OpImageRead => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef, coordinate: IdRef, image_operands: ?ImageOperands.Extended = null },
2225 .OpImageWrite => struct { image: IdRef, coordinate: IdRef, texel: IdRef, image_operands: ?ImageOperands.Extended = null },
2226 .OpImage => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef },
2227 .OpImageQueryFormat => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef },
2228 .OpImageQueryOrder => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef },
2229 .OpImageQuerySizeLod => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef, level_of_detail: IdRef },
2230 .OpImageQuerySize => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef },
2231 .OpImageQueryLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef },
2232 .OpImageQueryLevels => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef },
2233 .OpImageQuerySamples => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef },
2234 .OpConvertFToU => struct { id_result_type: IdResultType, id_result: IdResult, float_value: IdRef },
2235 .OpConvertFToS => struct { id_result_type: IdResultType, id_result: IdResult, float_value: IdRef },
2236 .OpConvertSToF => struct { id_result_type: IdResultType, id_result: IdResult, signed_value: IdRef },
2237 .OpConvertUToF => struct { id_result_type: IdResultType, id_result: IdResult, unsigned_value: IdRef },
2238 .OpUConvert => struct { id_result_type: IdResultType, id_result: IdResult, unsigned_value: IdRef },
2239 .OpSConvert => struct { id_result_type: IdResultType, id_result: IdResult, signed_value: IdRef },
2240 .OpFConvert => struct { id_result_type: IdResultType, id_result: IdResult, float_value: IdRef },
2241 .OpQuantizeToF16 => struct { id_result_type: IdResultType, id_result: IdResult, value: IdRef },
2242 .OpConvertPtrToU => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef },
2243 .OpSatConvertSToU => struct { id_result_type: IdResultType, id_result: IdResult, signed_value: IdRef },
2244 .OpSatConvertUToS => struct { id_result_type: IdResultType, id_result: IdResult, unsigned_value: IdRef },
2245 .OpConvertUToPtr => struct { id_result_type: IdResultType, id_result: IdResult, integer_value: IdRef },
2246 .OpPtrCastToGeneric => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef },
2247 .OpGenericCastToPtr => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef },
2248 .OpGenericCastToPtrExplicit => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, storage: StorageClass },
2249 .OpBitcast => struct { id_result_type: IdResultType, id_result: IdResult, operand: IdRef },
2250 .OpSNegate => struct { id_result_type: IdResultType, id_result: IdResult, operand: IdRef },
2251 .OpFNegate => struct { id_result_type: IdResultType, id_result: IdResult, operand: IdRef },
2252 .OpIAdd => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2253 .OpFAdd => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2254 .OpISub => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2255 .OpFSub => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2256 .OpIMul => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2257 .OpFMul => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2258 .OpUDiv => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2259 .OpSDiv => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2260 .OpFDiv => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2261 .OpUMod => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2262 .OpSRem => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2263 .OpSMod => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2264 .OpFRem => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2265 .OpFMod => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2266 .OpVectorTimesScalar => struct { id_result_type: IdResultType, id_result: IdResult, vector: IdRef, scalar: IdRef },
2267 .OpMatrixTimesScalar => struct { id_result_type: IdResultType, id_result: IdResult, matrix: IdRef, scalar: IdRef },
2268 .OpVectorTimesMatrix => struct { id_result_type: IdResultType, id_result: IdResult, vector: IdRef, matrix: IdRef },
2269 .OpMatrixTimesVector => struct { id_result_type: IdResultType, id_result: IdResult, matrix: IdRef, vector: IdRef },
2270 .OpMatrixTimesMatrix => struct { id_result_type: IdResultType, id_result: IdResult, leftmatrix: IdRef, rightmatrix: IdRef },
2271 .OpOuterProduct => struct { id_result_type: IdResultType, id_result: IdResult, vector_1: IdRef, vector_2: IdRef },
2272 .OpDot => struct { id_result_type: IdResultType, id_result: IdResult, vector_1: IdRef, vector_2: IdRef },
2273 .OpIAddCarry => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2274 .OpISubBorrow => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2275 .OpUMulExtended => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2276 .OpSMulExtended => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2277 .OpAny => struct { id_result_type: IdResultType, id_result: IdResult, vector: IdRef },
2278 .OpAll => struct { id_result_type: IdResultType, id_result: IdResult, vector: IdRef },
2279 .OpIsNan => struct { id_result_type: IdResultType, id_result: IdResult, x: IdRef },
2280 .OpIsInf => struct { id_result_type: IdResultType, id_result: IdResult, x: IdRef },
2281 .OpIsFinite => struct { id_result_type: IdResultType, id_result: IdResult, x: IdRef },
2282 .OpIsNormal => struct { id_result_type: IdResultType, id_result: IdResult, x: IdRef },
2283 .OpSignBitSet => struct { id_result_type: IdResultType, id_result: IdResult, x: IdRef },
2284 .OpLessOrGreater => struct { id_result_type: IdResultType, id_result: IdResult, x: IdRef, y: IdRef },
2285 .OpOrdered => struct { id_result_type: IdResultType, id_result: IdResult, x: IdRef, y: IdRef },
2286 .OpUnordered => struct { id_result_type: IdResultType, id_result: IdResult, x: IdRef, y: IdRef },
2287 .OpLogicalEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2288 .OpLogicalNotEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2289 .OpLogicalOr => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2290 .OpLogicalAnd => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2291 .OpLogicalNot => struct { id_result_type: IdResultType, id_result: IdResult, operand: IdRef },
2292 .OpSelect => struct { id_result_type: IdResultType, id_result: IdResult, condition: IdRef, object_1: IdRef, object_2: IdRef },
2293 .OpIEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2294 .OpINotEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2295 .OpUGreaterThan => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2296 .OpSGreaterThan => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2297 .OpUGreaterThanEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2298 .OpSGreaterThanEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2299 .OpULessThan => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2300 .OpSLessThan => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2301 .OpULessThanEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2302 .OpSLessThanEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2303 .OpFOrdEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2304 .OpFUnordEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2305 .OpFOrdNotEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2306 .OpFUnordNotEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2307 .OpFOrdLessThan => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2308 .OpFUnordLessThan => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2309 .OpFOrdGreaterThan => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2310 .OpFUnordGreaterThan => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2311 .OpFOrdLessThanEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2312 .OpFUnordLessThanEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2313 .OpFOrdGreaterThanEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2314 .OpFUnordGreaterThanEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2315 .OpShiftRightLogical => struct { id_result_type: IdResultType, id_result: IdResult, base: IdRef, shift: IdRef },
2316 .OpShiftRightArithmetic => struct { id_result_type: IdResultType, id_result: IdResult, base: IdRef, shift: IdRef },
2317 .OpShiftLeftLogical => struct { id_result_type: IdResultType, id_result: IdResult, base: IdRef, shift: IdRef },
2318 .OpBitwiseOr => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2319 .OpBitwiseXor => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2320 .OpBitwiseAnd => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2321 .OpNot => struct { id_result_type: IdResultType, id_result: IdResult, operand: IdRef },
2322 .OpBitFieldInsert => struct { id_result_type: IdResultType, id_result: IdResult, base: IdRef, insert: IdRef, offset: IdRef, count: IdRef },
2323 .OpBitFieldSExtract => struct { id_result_type: IdResultType, id_result: IdResult, base: IdRef, offset: IdRef, count: IdRef },
2324 .OpBitFieldUExtract => struct { id_result_type: IdResultType, id_result: IdResult, base: IdRef, offset: IdRef, count: IdRef },
2325 .OpBitReverse => struct { id_result_type: IdResultType, id_result: IdResult, base: IdRef },
2326 .OpBitCount => struct { id_result_type: IdResultType, id_result: IdResult, base: IdRef },
2327 .OpDPdx => struct { id_result_type: IdResultType, id_result: IdResult, p: IdRef },
2328 .OpDPdy => struct { id_result_type: IdResultType, id_result: IdResult, p: IdRef },
2329 .OpFwidth => struct { id_result_type: IdResultType, id_result: IdResult, p: IdRef },
2330 .OpDPdxFine => struct { id_result_type: IdResultType, id_result: IdResult, p: IdRef },
2331 .OpDPdyFine => struct { id_result_type: IdResultType, id_result: IdResult, p: IdRef },
2332 .OpFwidthFine => struct { id_result_type: IdResultType, id_result: IdResult, p: IdRef },
2333 .OpDPdxCoarse => struct { id_result_type: IdResultType, id_result: IdResult, p: IdRef },
2334 .OpDPdyCoarse => struct { id_result_type: IdResultType, id_result: IdResult, p: IdRef },
2335 .OpFwidthCoarse => struct { id_result_type: IdResultType, id_result: IdResult, p: IdRef },
2320 .OpFunctionCall => struct { id_result_type: Id, id_result: Id, function: Id, id_ref_3: []const Id = &.{} },
2321 .OpVariable => struct { id_result_type: Id, id_result: Id, storage_class: StorageClass, initializer: ?Id = null },
2322 .OpImageTexelPointer => struct { id_result_type: Id, id_result: Id, image: Id, coordinate: Id, sample: Id },
2323 .OpLoad => struct { id_result_type: Id, id_result: Id, pointer: Id, memory_access: ?MemoryAccess.Extended = null },
2324 .OpStore => struct { pointer: Id, object: Id, memory_access: ?MemoryAccess.Extended = null },
2325 .OpCopyMemory => struct { target: Id, source: Id, memory_access_2: ?MemoryAccess.Extended = null, memory_access_3: ?MemoryAccess.Extended = null },
2326 .OpCopyMemorySized => struct { target: Id, source: Id, size: Id, memory_access_3: ?MemoryAccess.Extended = null, memory_access_4: ?MemoryAccess.Extended = null },
2327 .OpAccessChain => struct { id_result_type: Id, id_result: Id, base: Id, indexes: []const Id = &.{} },
2328 .OpInBoundsAccessChain => struct { id_result_type: Id, id_result: Id, base: Id, indexes: []const Id = &.{} },
2329 .OpPtrAccessChain => struct { id_result_type: Id, id_result: Id, base: Id, element: Id, indexes: []const Id = &.{} },
2330 .OpArrayLength => struct { id_result_type: Id, id_result: Id, structure: Id, array_member: LiteralInteger },
2331 .OpGenericPtrMemSemantics => struct { id_result_type: Id, id_result: Id, pointer: Id },
2332 .OpInBoundsPtrAccessChain => struct { id_result_type: Id, id_result: Id, base: Id, element: Id, indexes: []const Id = &.{} },
2333 .OpDecorate => struct { target: Id, decoration: Decoration.Extended },
2334 .OpMemberDecorate => struct { structure_type: Id, member: LiteralInteger, decoration: Decoration.Extended },
2335 .OpDecorationGroup => struct { id_result: Id },
2336 .OpGroupDecorate => struct { decoration_group: Id, targets: []const Id = &.{} },
2337 .OpGroupMemberDecorate => struct { decoration_group: Id, targets: []const PairIdRefLiteralInteger = &.{} },
2338 .OpVectorExtractDynamic => struct { id_result_type: Id, id_result: Id, vector: Id, index: Id },
2339 .OpVectorInsertDynamic => struct { id_result_type: Id, id_result: Id, vector: Id, component: Id, index: Id },
2340 .OpVectorShuffle => struct { id_result_type: Id, id_result: Id, vector_1: Id, vector_2: Id, components: []const LiteralInteger = &.{} },
2341 .OpCompositeConstruct => struct { id_result_type: Id, id_result: Id, constituents: []const Id = &.{} },
2342 .OpCompositeExtract => struct { id_result_type: Id, id_result: Id, composite: Id, indexes: []const LiteralInteger = &.{} },
2343 .OpCompositeInsert => struct { id_result_type: Id, id_result: Id, object: Id, composite: Id, indexes: []const LiteralInteger = &.{} },
2344 .OpCopyObject => struct { id_result_type: Id, id_result: Id, operand: Id },
2345 .OpTranspose => struct { id_result_type: Id, id_result: Id, matrix: Id },
2346 .OpSampledImage => struct { id_result_type: Id, id_result: Id, image: Id, sampler: Id },
2347 .OpImageSampleImplicitLod => struct { id_result_type: Id, id_result: Id, sampled_image: Id, coordinate: Id, image_operands: ?ImageOperands.Extended = null },
2348 .OpImageSampleExplicitLod => struct { id_result_type: Id, id_result: Id, sampled_image: Id, coordinate: Id, image_operands: ImageOperands.Extended },
2349 .OpImageSampleDrefImplicitLod => struct { id_result_type: Id, id_result: Id, sampled_image: Id, coordinate: Id, d_ref: Id, image_operands: ?ImageOperands.Extended = null },
2350 .OpImageSampleDrefExplicitLod => struct { id_result_type: Id, id_result: Id, sampled_image: Id, coordinate: Id, d_ref: Id, image_operands: ImageOperands.Extended },
2351 .OpImageSampleProjImplicitLod => struct { id_result_type: Id, id_result: Id, sampled_image: Id, coordinate: Id, image_operands: ?ImageOperands.Extended = null },
2352 .OpImageSampleProjExplicitLod => struct { id_result_type: Id, id_result: Id, sampled_image: Id, coordinate: Id, image_operands: ImageOperands.Extended },
2353 .OpImageSampleProjDrefImplicitLod => struct { id_result_type: Id, id_result: Id, sampled_image: Id, coordinate: Id, d_ref: Id, image_operands: ?ImageOperands.Extended = null },
2354 .OpImageSampleProjDrefExplicitLod => struct { id_result_type: Id, id_result: Id, sampled_image: Id, coordinate: Id, d_ref: Id, image_operands: ImageOperands.Extended },
2355 .OpImageFetch => struct { id_result_type: Id, id_result: Id, image: Id, coordinate: Id, image_operands: ?ImageOperands.Extended = null },
2356 .OpImageGather => struct { id_result_type: Id, id_result: Id, sampled_image: Id, coordinate: Id, component: Id, image_operands: ?ImageOperands.Extended = null },
2357 .OpImageDrefGather => struct { id_result_type: Id, id_result: Id, sampled_image: Id, coordinate: Id, d_ref: Id, image_operands: ?ImageOperands.Extended = null },
2358 .OpImageRead => struct { id_result_type: Id, id_result: Id, image: Id, coordinate: Id, image_operands: ?ImageOperands.Extended = null },
2359 .OpImageWrite => struct { image: Id, coordinate: Id, texel: Id, image_operands: ?ImageOperands.Extended = null },
2360 .OpImage => struct { id_result_type: Id, id_result: Id, sampled_image: Id },
2361 .OpImageQueryFormat => struct { id_result_type: Id, id_result: Id, image: Id },
2362 .OpImageQueryOrder => struct { id_result_type: Id, id_result: Id, image: Id },
2363 .OpImageQuerySizeLod => struct { id_result_type: Id, id_result: Id, image: Id, level_of_detail: Id },
2364 .OpImageQuerySize => struct { id_result_type: Id, id_result: Id, image: Id },
2365 .OpImageQueryLod => struct { id_result_type: Id, id_result: Id, sampled_image: Id, coordinate: Id },
2366 .OpImageQueryLevels => struct { id_result_type: Id, id_result: Id, image: Id },
2367 .OpImageQuerySamples => struct { id_result_type: Id, id_result: Id, image: Id },
2368 .OpConvertFToU => struct { id_result_type: Id, id_result: Id, float_value: Id },
2369 .OpConvertFToS => struct { id_result_type: Id, id_result: Id, float_value: Id },
2370 .OpConvertSToF => struct { id_result_type: Id, id_result: Id, signed_value: Id },
2371 .OpConvertUToF => struct { id_result_type: Id, id_result: Id, unsigned_value: Id },
2372 .OpUConvert => struct { id_result_type: Id, id_result: Id, unsigned_value: Id },
2373 .OpSConvert => struct { id_result_type: Id, id_result: Id, signed_value: Id },
2374 .OpFConvert => struct { id_result_type: Id, id_result: Id, float_value: Id },
2375 .OpQuantizeToF16 => struct { id_result_type: Id, id_result: Id, value: Id },
2376 .OpConvertPtrToU => struct { id_result_type: Id, id_result: Id, pointer: Id },
2377 .OpSatConvertSToU => struct { id_result_type: Id, id_result: Id, signed_value: Id },
2378 .OpSatConvertUToS => struct { id_result_type: Id, id_result: Id, unsigned_value: Id },
2379 .OpConvertUToPtr => struct { id_result_type: Id, id_result: Id, integer_value: Id },
2380 .OpPtrCastToGeneric => struct { id_result_type: Id, id_result: Id, pointer: Id },
2381 .OpGenericCastToPtr => struct { id_result_type: Id, id_result: Id, pointer: Id },
2382 .OpGenericCastToPtrExplicit => struct { id_result_type: Id, id_result: Id, pointer: Id, storage: StorageClass },
2383 .OpBitcast => struct { id_result_type: Id, id_result: Id, operand: Id },
2384 .OpSNegate => struct { id_result_type: Id, id_result: Id, operand: Id },
2385 .OpFNegate => struct { id_result_type: Id, id_result: Id, operand: Id },
2386 .OpIAdd => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2387 .OpFAdd => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2388 .OpISub => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2389 .OpFSub => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2390 .OpIMul => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2391 .OpFMul => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2392 .OpUDiv => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2393 .OpSDiv => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2394 .OpFDiv => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2395 .OpUMod => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2396 .OpSRem => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2397 .OpSMod => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2398 .OpFRem => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2399 .OpFMod => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2400 .OpVectorTimesScalar => struct { id_result_type: Id, id_result: Id, vector: Id, scalar: Id },
2401 .OpMatrixTimesScalar => struct { id_result_type: Id, id_result: Id, matrix: Id, scalar: Id },
2402 .OpVectorTimesMatrix => struct { id_result_type: Id, id_result: Id, vector: Id, matrix: Id },
2403 .OpMatrixTimesVector => struct { id_result_type: Id, id_result: Id, matrix: Id, vector: Id },
2404 .OpMatrixTimesMatrix => struct { id_result_type: Id, id_result: Id, left_matrix: Id, right_matrix: Id },
2405 .OpOuterProduct => struct { id_result_type: Id, id_result: Id, vector_1: Id, vector_2: Id },
2406 .OpDot => struct { id_result_type: Id, id_result: Id, vector_1: Id, vector_2: Id },
2407 .OpIAddCarry => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2408 .OpISubBorrow => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2409 .OpUMulExtended => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2410 .OpSMulExtended => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2411 .OpAny => struct { id_result_type: Id, id_result: Id, vector: Id },
2412 .OpAll => struct { id_result_type: Id, id_result: Id, vector: Id },
2413 .OpIsNan => struct { id_result_type: Id, id_result: Id, x: Id },
2414 .OpIsInf => struct { id_result_type: Id, id_result: Id, x: Id },
2415 .OpIsFinite => struct { id_result_type: Id, id_result: Id, x: Id },
2416 .OpIsNormal => struct { id_result_type: Id, id_result: Id, x: Id },
2417 .OpSignBitSet => struct { id_result_type: Id, id_result: Id, x: Id },
2418 .OpLessOrGreater => struct { id_result_type: Id, id_result: Id, x: Id, y: Id },
2419 .OpOrdered => struct { id_result_type: Id, id_result: Id, x: Id, y: Id },
2420 .OpUnordered => struct { id_result_type: Id, id_result: Id, x: Id, y: Id },
2421 .OpLogicalEqual => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2422 .OpLogicalNotEqual => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2423 .OpLogicalOr => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2424 .OpLogicalAnd => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2425 .OpLogicalNot => struct { id_result_type: Id, id_result: Id, operand: Id },
2426 .OpSelect => struct { id_result_type: Id, id_result: Id, condition: Id, object_1: Id, object_2: Id },
2427 .OpIEqual => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2428 .OpINotEqual => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2429 .OpUGreaterThan => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2430 .OpSGreaterThan => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2431 .OpUGreaterThanEqual => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2432 .OpSGreaterThanEqual => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2433 .OpULessThan => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2434 .OpSLessThan => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2435 .OpULessThanEqual => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2436 .OpSLessThanEqual => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2437 .OpFOrdEqual => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2438 .OpFUnordEqual => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2439 .OpFOrdNotEqual => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2440 .OpFUnordNotEqual => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2441 .OpFOrdLessThan => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2442 .OpFUnordLessThan => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2443 .OpFOrdGreaterThan => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2444 .OpFUnordGreaterThan => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2445 .OpFOrdLessThanEqual => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2446 .OpFUnordLessThanEqual => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2447 .OpFOrdGreaterThanEqual => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2448 .OpFUnordGreaterThanEqual => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2449 .OpShiftRightLogical => struct { id_result_type: Id, id_result: Id, base: Id, shift: Id },
2450 .OpShiftRightArithmetic => struct { id_result_type: Id, id_result: Id, base: Id, shift: Id },
2451 .OpShiftLeftLogical => struct { id_result_type: Id, id_result: Id, base: Id, shift: Id },
2452 .OpBitwiseOr => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2453 .OpBitwiseXor => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2454 .OpBitwiseAnd => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2455 .OpNot => struct { id_result_type: Id, id_result: Id, operand: Id },
2456 .OpBitFieldInsert => struct { id_result_type: Id, id_result: Id, base: Id, insert: Id, offset: Id, count: Id },
2457 .OpBitFieldSExtract => struct { id_result_type: Id, id_result: Id, base: Id, offset: Id, count: Id },
2458 .OpBitFieldUExtract => struct { id_result_type: Id, id_result: Id, base: Id, offset: Id, count: Id },
2459 .OpBitReverse => struct { id_result_type: Id, id_result: Id, base: Id },
2460 .OpBitCount => struct { id_result_type: Id, id_result: Id, base: Id },
2461 .OpDPdx => struct { id_result_type: Id, id_result: Id, p: Id },
2462 .OpDPdy => struct { id_result_type: Id, id_result: Id, p: Id },
2463 .OpFwidth => struct { id_result_type: Id, id_result: Id, p: Id },
2464 .OpDPdxFine => struct { id_result_type: Id, id_result: Id, p: Id },
2465 .OpDPdyFine => struct { id_result_type: Id, id_result: Id, p: Id },
2466 .OpFwidthFine => struct { id_result_type: Id, id_result: Id, p: Id },
2467 .OpDPdxCoarse => struct { id_result_type: Id, id_result: Id, p: Id },
2468 .OpDPdyCoarse => struct { id_result_type: Id, id_result: Id, p: Id },
2469 .OpFwidthCoarse => struct { id_result_type: Id, id_result: Id, p: Id },
23362470 .OpEmitVertex => void,
23372471 .OpEndPrimitive => void,
2338 .OpEmitStreamVertex => struct { stream: IdRef },
2339 .OpEndStreamPrimitive => struct { stream: IdRef },
2340 .OpControlBarrier => struct { execution: IdScope, memory: IdScope, semantics: IdMemorySemantics },
2341 .OpMemoryBarrier => struct { memory: IdScope, semantics: IdMemorySemantics },
2342 .OpAtomicLoad => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics },
2343 .OpAtomicStore => struct { pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics, value: IdRef },
2344 .OpAtomicExchange => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics, value: IdRef },
2345 .OpAtomicCompareExchange => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, equal: IdMemorySemantics, unequal: IdMemorySemantics, value: IdRef, comparator: IdRef },
2346 .OpAtomicCompareExchangeWeak => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, equal: IdMemorySemantics, unequal: IdMemorySemantics, value: IdRef, comparator: IdRef },
2347 .OpAtomicIIncrement => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics },
2348 .OpAtomicIDecrement => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics },
2349 .OpAtomicIAdd => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics, value: IdRef },
2350 .OpAtomicISub => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics, value: IdRef },
2351 .OpAtomicSMin => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics, value: IdRef },
2352 .OpAtomicUMin => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics, value: IdRef },
2353 .OpAtomicSMax => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics, value: IdRef },
2354 .OpAtomicUMax => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics, value: IdRef },
2355 .OpAtomicAnd => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics, value: IdRef },
2356 .OpAtomicOr => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics, value: IdRef },
2357 .OpAtomicXor => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics, value: IdRef },
2358 .OpPhi => struct { id_result_type: IdResultType, id_result: IdResult, pair_id_ref_id_ref: []const PairIdRefIdRef = &.{} },
2359 .OpLoopMerge => struct { merge_block: IdRef, continue_target: IdRef, loop_control: LoopControl.Extended },
2360 .OpSelectionMerge => struct { merge_block: IdRef, selection_control: SelectionControl },
2361 .OpLabel => struct { id_result: IdResult },
2362 .OpBranch => struct { target_label: IdRef },
2363 .OpBranchConditional => struct { condition: IdRef, true_label: IdRef, false_label: IdRef, branch_weights: []const LiteralInteger = &.{} },
2364 .OpSwitch => struct { selector: IdRef, default: IdRef, target: []const PairLiteralIntegerIdRef = &.{} },
2472 .OpEmitStreamVertex => struct { stream: Id },
2473 .OpEndStreamPrimitive => struct { stream: Id },
2474 .OpControlBarrier => struct { execution: Id, memory: Id, semantics: Id },
2475 .OpMemoryBarrier => struct { memory: Id, semantics: Id },
2476 .OpAtomicLoad => struct { id_result_type: Id, id_result: Id, pointer: Id, memory: Id, semantics: Id },
2477 .OpAtomicStore => struct { pointer: Id, memory: Id, semantics: Id, value: Id },
2478 .OpAtomicExchange => struct { id_result_type: Id, id_result: Id, pointer: Id, memory: Id, semantics: Id, value: Id },
2479 .OpAtomicCompareExchange => struct { id_result_type: Id, id_result: Id, pointer: Id, memory: Id, equal: Id, unequal: Id, value: Id, comparator: Id },
2480 .OpAtomicCompareExchangeWeak => struct { id_result_type: Id, id_result: Id, pointer: Id, memory: Id, equal: Id, unequal: Id, value: Id, comparator: Id },
2481 .OpAtomicIIncrement => struct { id_result_type: Id, id_result: Id, pointer: Id, memory: Id, semantics: Id },
2482 .OpAtomicIDecrement => struct { id_result_type: Id, id_result: Id, pointer: Id, memory: Id, semantics: Id },
2483 .OpAtomicIAdd => struct { id_result_type: Id, id_result: Id, pointer: Id, memory: Id, semantics: Id, value: Id },
2484 .OpAtomicISub => struct { id_result_type: Id, id_result: Id, pointer: Id, memory: Id, semantics: Id, value: Id },
2485 .OpAtomicSMin => struct { id_result_type: Id, id_result: Id, pointer: Id, memory: Id, semantics: Id, value: Id },
2486 .OpAtomicUMin => struct { id_result_type: Id, id_result: Id, pointer: Id, memory: Id, semantics: Id, value: Id },
2487 .OpAtomicSMax => struct { id_result_type: Id, id_result: Id, pointer: Id, memory: Id, semantics: Id, value: Id },
2488 .OpAtomicUMax => struct { id_result_type: Id, id_result: Id, pointer: Id, memory: Id, semantics: Id, value: Id },
2489 .OpAtomicAnd => struct { id_result_type: Id, id_result: Id, pointer: Id, memory: Id, semantics: Id, value: Id },
2490 .OpAtomicOr => struct { id_result_type: Id, id_result: Id, pointer: Id, memory: Id, semantics: Id, value: Id },
2491 .OpAtomicXor => struct { id_result_type: Id, id_result: Id, pointer: Id, memory: Id, semantics: Id, value: Id },
2492 .OpPhi => struct { id_result_type: Id, id_result: Id, pair_id_ref_id_ref: []const PairIdRefIdRef = &.{} },
2493 .OpLoopMerge => struct { merge_block: Id, continue_target: Id, loop_control: LoopControl.Extended },
2494 .OpSelectionMerge => struct { merge_block: Id, selection_control: SelectionControl },
2495 .OpLabel => struct { id_result: Id },
2496 .OpBranch => struct { target_label: Id },
2497 .OpBranchConditional => struct { condition: Id, true_label: Id, false_label: Id, branch_weights: []const LiteralInteger = &.{} },
2498 .OpSwitch => struct { selector: Id, default: Id, target: []const PairLiteralIntegerIdRef = &.{} },
23652499 .OpKill => void,
23662500 .OpReturn => void,
2367 .OpReturnValue => struct { value: IdRef },
2501 .OpReturnValue => struct { value: Id },
23682502 .OpUnreachable => void,
2369 .OpLifetimeStart => struct { pointer: IdRef, size: LiteralInteger },
2370 .OpLifetimeStop => struct { pointer: IdRef, size: LiteralInteger },
2371 .OpGroupAsyncCopy => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, destination: IdRef, source: IdRef, num_elements: IdRef, stride: IdRef, event: IdRef },
2372 .OpGroupWaitEvents => struct { execution: IdScope, num_events: IdRef, events_list: IdRef },
2373 .OpGroupAll => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, predicate: IdRef },
2374 .OpGroupAny => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, predicate: IdRef },
2375 .OpGroupBroadcast => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, value: IdRef, localid: IdRef },
2376 .OpGroupIAdd => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
2377 .OpGroupFAdd => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
2378 .OpGroupFMin => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
2379 .OpGroupUMin => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
2380 .OpGroupSMin => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
2381 .OpGroupFMax => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
2382 .OpGroupUMax => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
2383 .OpGroupSMax => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
2384 .OpReadPipe => struct { id_result_type: IdResultType, id_result: IdResult, pipe: IdRef, pointer: IdRef, packet_size: IdRef, packet_alignment: IdRef },
2385 .OpWritePipe => struct { id_result_type: IdResultType, id_result: IdResult, pipe: IdRef, pointer: IdRef, packet_size: IdRef, packet_alignment: IdRef },
2386 .OpReservedReadPipe => struct { id_result_type: IdResultType, id_result: IdResult, pipe: IdRef, reserve_id: IdRef, index: IdRef, pointer: IdRef, packet_size: IdRef, packet_alignment: IdRef },
2387 .OpReservedWritePipe => struct { id_result_type: IdResultType, id_result: IdResult, pipe: IdRef, reserve_id: IdRef, index: IdRef, pointer: IdRef, packet_size: IdRef, packet_alignment: IdRef },
2388 .OpReserveReadPipePackets => struct { id_result_type: IdResultType, id_result: IdResult, pipe: IdRef, num_packets: IdRef, packet_size: IdRef, packet_alignment: IdRef },
2389 .OpReserveWritePipePackets => struct { id_result_type: IdResultType, id_result: IdResult, pipe: IdRef, num_packets: IdRef, packet_size: IdRef, packet_alignment: IdRef },
2390 .OpCommitReadPipe => struct { pipe: IdRef, reserve_id: IdRef, packet_size: IdRef, packet_alignment: IdRef },
2391 .OpCommitWritePipe => struct { pipe: IdRef, reserve_id: IdRef, packet_size: IdRef, packet_alignment: IdRef },
2392 .OpIsValidReserveId => struct { id_result_type: IdResultType, id_result: IdResult, reserve_id: IdRef },
2393 .OpGetNumPipePackets => struct { id_result_type: IdResultType, id_result: IdResult, pipe: IdRef, packet_size: IdRef, packet_alignment: IdRef },
2394 .OpGetMaxPipePackets => struct { id_result_type: IdResultType, id_result: IdResult, pipe: IdRef, packet_size: IdRef, packet_alignment: IdRef },
2395 .OpGroupReserveReadPipePackets => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, pipe: IdRef, num_packets: IdRef, packet_size: IdRef, packet_alignment: IdRef },
2396 .OpGroupReserveWritePipePackets => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, pipe: IdRef, num_packets: IdRef, packet_size: IdRef, packet_alignment: IdRef },
2397 .OpGroupCommitReadPipe => struct { execution: IdScope, pipe: IdRef, reserve_id: IdRef, packet_size: IdRef, packet_alignment: IdRef },
2398 .OpGroupCommitWritePipe => struct { execution: IdScope, pipe: IdRef, reserve_id: IdRef, packet_size: IdRef, packet_alignment: IdRef },
2399 .OpEnqueueMarker => struct { id_result_type: IdResultType, id_result: IdResult, queue: IdRef, num_events: IdRef, wait_events: IdRef, ret_event: IdRef },
2400 .OpEnqueueKernel => struct { id_result_type: IdResultType, id_result: IdResult, queue: IdRef, flags: IdRef, nd_range: IdRef, num_events: IdRef, wait_events: IdRef, ret_event: IdRef, invoke: IdRef, param: IdRef, param_size: IdRef, param_align: IdRef, local_size: []const IdRef = &.{} },
2401 .OpGetKernelNDrangeSubGroupCount => struct { id_result_type: IdResultType, id_result: IdResult, nd_range: IdRef, invoke: IdRef, param: IdRef, param_size: IdRef, param_align: IdRef },
2402 .OpGetKernelNDrangeMaxSubGroupSize => struct { id_result_type: IdResultType, id_result: IdResult, nd_range: IdRef, invoke: IdRef, param: IdRef, param_size: IdRef, param_align: IdRef },
2403 .OpGetKernelWorkGroupSize => struct { id_result_type: IdResultType, id_result: IdResult, invoke: IdRef, param: IdRef, param_size: IdRef, param_align: IdRef },
2404 .OpGetKernelPreferredWorkGroupSizeMultiple => struct { id_result_type: IdResultType, id_result: IdResult, invoke: IdRef, param: IdRef, param_size: IdRef, param_align: IdRef },
2405 .OpRetainEvent => struct { event: IdRef },
2406 .OpReleaseEvent => struct { event: IdRef },
2407 .OpCreateUserEvent => struct { id_result_type: IdResultType, id_result: IdResult },
2408 .OpIsValidEvent => struct { id_result_type: IdResultType, id_result: IdResult, event: IdRef },
2409 .OpSetUserEventStatus => struct { event: IdRef, status: IdRef },
2410 .OpCaptureEventProfilingInfo => struct { event: IdRef, profiling_info: IdRef, value: IdRef },
2411 .OpGetDefaultQueue => struct { id_result_type: IdResultType, id_result: IdResult },
2412 .OpBuildNDRange => struct { id_result_type: IdResultType, id_result: IdResult, globalworksize: IdRef, localworksize: IdRef, globalworkoffset: IdRef },
2413 .OpImageSparseSampleImplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, image_operands: ?ImageOperands.Extended = null },
2414 .OpImageSparseSampleExplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, image_operands: ImageOperands.Extended },
2415 .OpImageSparseSampleDrefImplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, d_ref: IdRef, image_operands: ?ImageOperands.Extended = null },
2416 .OpImageSparseSampleDrefExplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, d_ref: IdRef, image_operands: ImageOperands.Extended },
2417 .OpImageSparseSampleProjImplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, image_operands: ?ImageOperands.Extended = null },
2418 .OpImageSparseSampleProjExplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, image_operands: ImageOperands.Extended },
2419 .OpImageSparseSampleProjDrefImplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, d_ref: IdRef, image_operands: ?ImageOperands.Extended = null },
2420 .OpImageSparseSampleProjDrefExplicitLod => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, d_ref: IdRef, image_operands: ImageOperands.Extended },
2421 .OpImageSparseFetch => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef, coordinate: IdRef, image_operands: ?ImageOperands.Extended = null },
2422 .OpImageSparseGather => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, component: IdRef, image_operands: ?ImageOperands.Extended = null },
2423 .OpImageSparseDrefGather => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, d_ref: IdRef, image_operands: ?ImageOperands.Extended = null },
2424 .OpImageSparseTexelsResident => struct { id_result_type: IdResultType, id_result: IdResult, resident_code: IdRef },
2503 .OpLifetimeStart => struct { pointer: Id, size: LiteralInteger },
2504 .OpLifetimeStop => struct { pointer: Id, size: LiteralInteger },
2505 .OpGroupAsyncCopy => struct { id_result_type: Id, id_result: Id, execution: Id, destination: Id, source: Id, num_elements: Id, stride: Id, event: Id },
2506 .OpGroupWaitEvents => struct { execution: Id, num_events: Id, events_list: Id },
2507 .OpGroupAll => struct { id_result_type: Id, id_result: Id, execution: Id, predicate: Id },
2508 .OpGroupAny => struct { id_result_type: Id, id_result: Id, execution: Id, predicate: Id },
2509 .OpGroupBroadcast => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id, local_id: Id },
2510 .OpGroupIAdd => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id },
2511 .OpGroupFAdd => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id },
2512 .OpGroupFMin => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id },
2513 .OpGroupUMin => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id },
2514 .OpGroupSMin => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id },
2515 .OpGroupFMax => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id },
2516 .OpGroupUMax => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id },
2517 .OpGroupSMax => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id },
2518 .OpReadPipe => struct { id_result_type: Id, id_result: Id, pipe: Id, pointer: Id, packet_size: Id, packet_alignment: Id },
2519 .OpWritePipe => struct { id_result_type: Id, id_result: Id, pipe: Id, pointer: Id, packet_size: Id, packet_alignment: Id },
2520 .OpReservedReadPipe => struct { id_result_type: Id, id_result: Id, pipe: Id, reserve_id: Id, index: Id, pointer: Id, packet_size: Id, packet_alignment: Id },
2521 .OpReservedWritePipe => struct { id_result_type: Id, id_result: Id, pipe: Id, reserve_id: Id, index: Id, pointer: Id, packet_size: Id, packet_alignment: Id },
2522 .OpReserveReadPipePackets => struct { id_result_type: Id, id_result: Id, pipe: Id, num_packets: Id, packet_size: Id, packet_alignment: Id },
2523 .OpReserveWritePipePackets => struct { id_result_type: Id, id_result: Id, pipe: Id, num_packets: Id, packet_size: Id, packet_alignment: Id },
2524 .OpCommitReadPipe => struct { pipe: Id, reserve_id: Id, packet_size: Id, packet_alignment: Id },
2525 .OpCommitWritePipe => struct { pipe: Id, reserve_id: Id, packet_size: Id, packet_alignment: Id },
2526 .OpIsValidReserveId => struct { id_result_type: Id, id_result: Id, reserve_id: Id },
2527 .OpGetNumPipePackets => struct { id_result_type: Id, id_result: Id, pipe: Id, packet_size: Id, packet_alignment: Id },
2528 .OpGetMaxPipePackets => struct { id_result_type: Id, id_result: Id, pipe: Id, packet_size: Id, packet_alignment: Id },
2529 .OpGroupReserveReadPipePackets => struct { id_result_type: Id, id_result: Id, execution: Id, pipe: Id, num_packets: Id, packet_size: Id, packet_alignment: Id },
2530 .OpGroupReserveWritePipePackets => struct { id_result_type: Id, id_result: Id, execution: Id, pipe: Id, num_packets: Id, packet_size: Id, packet_alignment: Id },
2531 .OpGroupCommitReadPipe => struct { execution: Id, pipe: Id, reserve_id: Id, packet_size: Id, packet_alignment: Id },
2532 .OpGroupCommitWritePipe => struct { execution: Id, pipe: Id, reserve_id: Id, packet_size: Id, packet_alignment: Id },
2533 .OpEnqueueMarker => struct { id_result_type: Id, id_result: Id, queue: Id, num_events: Id, wait_events: Id, ret_event: Id },
2534 .OpEnqueueKernel => struct { id_result_type: Id, id_result: Id, queue: Id, flags: Id, nd_range: Id, num_events: Id, wait_events: Id, ret_event: Id, invoke: Id, param: Id, param_size: Id, param_align: Id, local_size: []const Id = &.{} },
2535 .OpGetKernelNDrangeSubGroupCount => struct { id_result_type: Id, id_result: Id, nd_range: Id, invoke: Id, param: Id, param_size: Id, param_align: Id },
2536 .OpGetKernelNDrangeMaxSubGroupSize => struct { id_result_type: Id, id_result: Id, nd_range: Id, invoke: Id, param: Id, param_size: Id, param_align: Id },
2537 .OpGetKernelWorkGroupSize => struct { id_result_type: Id, id_result: Id, invoke: Id, param: Id, param_size: Id, param_align: Id },
2538 .OpGetKernelPreferredWorkGroupSizeMultiple => struct { id_result_type: Id, id_result: Id, invoke: Id, param: Id, param_size: Id, param_align: Id },
2539 .OpRetainEvent => struct { event: Id },
2540 .OpReleaseEvent => struct { event: Id },
2541 .OpCreateUserEvent => struct { id_result_type: Id, id_result: Id },
2542 .OpIsValidEvent => struct { id_result_type: Id, id_result: Id, event: Id },
2543 .OpSetUserEventStatus => struct { event: Id, status: Id },
2544 .OpCaptureEventProfilingInfo => struct { event: Id, profiling_info: Id, value: Id },
2545 .OpGetDefaultQueue => struct { id_result_type: Id, id_result: Id },
2546 .OpBuildNDRange => struct { id_result_type: Id, id_result: Id, global_work_size: Id, local_work_size: Id, global_work_offset: Id },
2547 .OpImageSparseSampleImplicitLod => struct { id_result_type: Id, id_result: Id, sampled_image: Id, coordinate: Id, image_operands: ?ImageOperands.Extended = null },
2548 .OpImageSparseSampleExplicitLod => struct { id_result_type: Id, id_result: Id, sampled_image: Id, coordinate: Id, image_operands: ImageOperands.Extended },
2549 .OpImageSparseSampleDrefImplicitLod => struct { id_result_type: Id, id_result: Id, sampled_image: Id, coordinate: Id, d_ref: Id, image_operands: ?ImageOperands.Extended = null },
2550 .OpImageSparseSampleDrefExplicitLod => struct { id_result_type: Id, id_result: Id, sampled_image: Id, coordinate: Id, d_ref: Id, image_operands: ImageOperands.Extended },
2551 .OpImageSparseSampleProjImplicitLod => struct { id_result_type: Id, id_result: Id, sampled_image: Id, coordinate: Id, image_operands: ?ImageOperands.Extended = null },
2552 .OpImageSparseSampleProjExplicitLod => struct { id_result_type: Id, id_result: Id, sampled_image: Id, coordinate: Id, image_operands: ImageOperands.Extended },
2553 .OpImageSparseSampleProjDrefImplicitLod => struct { id_result_type: Id, id_result: Id, sampled_image: Id, coordinate: Id, d_ref: Id, image_operands: ?ImageOperands.Extended = null },
2554 .OpImageSparseSampleProjDrefExplicitLod => struct { id_result_type: Id, id_result: Id, sampled_image: Id, coordinate: Id, d_ref: Id, image_operands: ImageOperands.Extended },
2555 .OpImageSparseFetch => struct { id_result_type: Id, id_result: Id, image: Id, coordinate: Id, image_operands: ?ImageOperands.Extended = null },
2556 .OpImageSparseGather => struct { id_result_type: Id, id_result: Id, sampled_image: Id, coordinate: Id, component: Id, image_operands: ?ImageOperands.Extended = null },
2557 .OpImageSparseDrefGather => struct { id_result_type: Id, id_result: Id, sampled_image: Id, coordinate: Id, d_ref: Id, image_operands: ?ImageOperands.Extended = null },
2558 .OpImageSparseTexelsResident => struct { id_result_type: Id, id_result: Id, resident_code: Id },
24252559 .OpNoLine => void,
2426 .OpAtomicFlagTestAndSet => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics },
2427 .OpAtomicFlagClear => struct { pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics },
2428 .OpImageSparseRead => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef, coordinate: IdRef, image_operands: ?ImageOperands.Extended = null },
2429 .OpSizeOf => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef },
2430 .OpTypePipeStorage => struct { id_result: IdResult },
2431 .OpConstantPipeStorage => struct { id_result_type: IdResultType, id_result: IdResult, packet_size: LiteralInteger, packet_alignment: LiteralInteger, capacity: LiteralInteger },
2432 .OpCreatePipeFromPipeStorage => struct { id_result_type: IdResultType, id_result: IdResult, pipe_storage: IdRef },
2433 .OpGetKernelLocalSizeForSubgroupCount => struct { id_result_type: IdResultType, id_result: IdResult, subgroup_count: IdRef, invoke: IdRef, param: IdRef, param_size: IdRef, param_align: IdRef },
2434 .OpGetKernelMaxNumSubgroups => struct { id_result_type: IdResultType, id_result: IdResult, invoke: IdRef, param: IdRef, param_size: IdRef, param_align: IdRef },
2435 .OpTypeNamedBarrier => struct { id_result: IdResult },
2436 .OpNamedBarrierInitialize => struct { id_result_type: IdResultType, id_result: IdResult, subgroup_count: IdRef },
2437 .OpMemoryNamedBarrier => struct { named_barrier: IdRef, memory: IdScope, semantics: IdMemorySemantics },
2560 .OpAtomicFlagTestAndSet => struct { id_result_type: Id, id_result: Id, pointer: Id, memory: Id, semantics: Id },
2561 .OpAtomicFlagClear => struct { pointer: Id, memory: Id, semantics: Id },
2562 .OpImageSparseRead => struct { id_result_type: Id, id_result: Id, image: Id, coordinate: Id, image_operands: ?ImageOperands.Extended = null },
2563 .OpSizeOf => struct { id_result_type: Id, id_result: Id, pointer: Id },
2564 .OpTypePipeStorage => struct { id_result: Id },
2565 .OpConstantPipeStorage => struct { id_result_type: Id, id_result: Id, packet_size: LiteralInteger, packet_alignment: LiteralInteger, capacity: LiteralInteger },
2566 .OpCreatePipeFromPipeStorage => struct { id_result_type: Id, id_result: Id, pipe_storage: Id },
2567 .OpGetKernelLocalSizeForSubgroupCount => struct { id_result_type: Id, id_result: Id, subgroup_count: Id, invoke: Id, param: Id, param_size: Id, param_align: Id },
2568 .OpGetKernelMaxNumSubgroups => struct { id_result_type: Id, id_result: Id, invoke: Id, param: Id, param_size: Id, param_align: Id },
2569 .OpTypeNamedBarrier => struct { id_result: Id },
2570 .OpNamedBarrierInitialize => struct { id_result_type: Id, id_result: Id, subgroup_count: Id },
2571 .OpMemoryNamedBarrier => struct { named_barrier: Id, memory: Id, semantics: Id },
24382572 .OpModuleProcessed => struct { process: LiteralString },
2439 .OpExecutionModeId => struct { entry_point: IdRef, mode: ExecutionMode.Extended },
2440 .OpDecorateId => struct { target: IdRef, decoration: Decoration.Extended },
2441 .OpGroupNonUniformElect => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope },
2442 .OpGroupNonUniformAll => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, predicate: IdRef },
2443 .OpGroupNonUniformAny => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, predicate: IdRef },
2444 .OpGroupNonUniformAllEqual => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, value: IdRef },
2445 .OpGroupNonUniformBroadcast => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, value: IdRef, id: IdRef },
2446 .OpGroupNonUniformBroadcastFirst => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, value: IdRef },
2447 .OpGroupNonUniformBallot => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, predicate: IdRef },
2448 .OpGroupNonUniformInverseBallot => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, value: IdRef },
2449 .OpGroupNonUniformBallotBitExtract => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, value: IdRef, index: IdRef },
2450 .OpGroupNonUniformBallotBitCount => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef },
2451 .OpGroupNonUniformBallotFindLSB => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, value: IdRef },
2452 .OpGroupNonUniformBallotFindMSB => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, value: IdRef },
2453 .OpGroupNonUniformShuffle => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, value: IdRef, id: IdRef },
2454 .OpGroupNonUniformShuffleXor => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, value: IdRef, mask: IdRef },
2455 .OpGroupNonUniformShuffleUp => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, value: IdRef, delta: IdRef },
2456 .OpGroupNonUniformShuffleDown => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, value: IdRef, delta: IdRef },
2457 .OpGroupNonUniformIAdd => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
2458 .OpGroupNonUniformFAdd => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
2459 .OpGroupNonUniformIMul => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
2460 .OpGroupNonUniformFMul => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
2461 .OpGroupNonUniformSMin => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
2462 .OpGroupNonUniformUMin => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
2463 .OpGroupNonUniformFMin => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
2464 .OpGroupNonUniformSMax => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
2465 .OpGroupNonUniformUMax => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
2466 .OpGroupNonUniformFMax => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
2467 .OpGroupNonUniformBitwiseAnd => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
2468 .OpGroupNonUniformBitwiseOr => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
2469 .OpGroupNonUniformBitwiseXor => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
2470 .OpGroupNonUniformLogicalAnd => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
2471 .OpGroupNonUniformLogicalOr => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
2472 .OpGroupNonUniformLogicalXor => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, value: IdRef, clustersize: ?IdRef = null },
2473 .OpGroupNonUniformQuadBroadcast => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, value: IdRef, index: IdRef },
2474 .OpGroupNonUniformQuadSwap => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, value: IdRef, direction: IdRef },
2475 .OpCopyLogical => struct { id_result_type: IdResultType, id_result: IdResult, operand: IdRef },
2476 .OpPtrEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2477 .OpPtrNotEqual => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2478 .OpPtrDiff => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2479 .OpColorAttachmentReadEXT => struct { id_result_type: IdResultType, id_result: IdResult, attachment: IdRef, sample: ?IdRef = null },
2480 .OpDepthAttachmentReadEXT => struct { id_result_type: IdResultType, id_result: IdResult, sample: ?IdRef = null },
2481 .OpStencilAttachmentReadEXT => struct { id_result_type: IdResultType, id_result: IdResult, sample: ?IdRef = null },
2573 .OpExecutionModeId => struct { entry_point: Id, mode: ExecutionMode.Extended },
2574 .OpDecorateId => struct { target: Id, decoration: Decoration.Extended },
2575 .OpGroupNonUniformElect => struct { id_result_type: Id, id_result: Id, execution: Id },
2576 .OpGroupNonUniformAll => struct { id_result_type: Id, id_result: Id, execution: Id, predicate: Id },
2577 .OpGroupNonUniformAny => struct { id_result_type: Id, id_result: Id, execution: Id, predicate: Id },
2578 .OpGroupNonUniformAllEqual => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id },
2579 .OpGroupNonUniformBroadcast => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id, id: Id },
2580 .OpGroupNonUniformBroadcastFirst => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id },
2581 .OpGroupNonUniformBallot => struct { id_result_type: Id, id_result: Id, execution: Id, predicate: Id },
2582 .OpGroupNonUniformInverseBallot => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id },
2583 .OpGroupNonUniformBallotBitExtract => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id, index: Id },
2584 .OpGroupNonUniformBallotBitCount => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, value: Id },
2585 .OpGroupNonUniformBallotFindLSB => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id },
2586 .OpGroupNonUniformBallotFindMSB => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id },
2587 .OpGroupNonUniformShuffle => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id, id: Id },
2588 .OpGroupNonUniformShuffleXor => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id, mask: Id },
2589 .OpGroupNonUniformShuffleUp => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id, delta: Id },
2590 .OpGroupNonUniformShuffleDown => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id, delta: Id },
2591 .OpGroupNonUniformIAdd => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, value: Id, cluster_size: ?Id = null },
2592 .OpGroupNonUniformFAdd => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, value: Id, cluster_size: ?Id = null },
2593 .OpGroupNonUniformIMul => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, value: Id, cluster_size: ?Id = null },
2594 .OpGroupNonUniformFMul => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, value: Id, cluster_size: ?Id = null },
2595 .OpGroupNonUniformSMin => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, value: Id, cluster_size: ?Id = null },
2596 .OpGroupNonUniformUMin => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, value: Id, cluster_size: ?Id = null },
2597 .OpGroupNonUniformFMin => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, value: Id, cluster_size: ?Id = null },
2598 .OpGroupNonUniformSMax => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, value: Id, cluster_size: ?Id = null },
2599 .OpGroupNonUniformUMax => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, value: Id, cluster_size: ?Id = null },
2600 .OpGroupNonUniformFMax => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, value: Id, cluster_size: ?Id = null },
2601 .OpGroupNonUniformBitwiseAnd => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, value: Id, cluster_size: ?Id = null },
2602 .OpGroupNonUniformBitwiseOr => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, value: Id, cluster_size: ?Id = null },
2603 .OpGroupNonUniformBitwiseXor => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, value: Id, cluster_size: ?Id = null },
2604 .OpGroupNonUniformLogicalAnd => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, value: Id, cluster_size: ?Id = null },
2605 .OpGroupNonUniformLogicalOr => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, value: Id, cluster_size: ?Id = null },
2606 .OpGroupNonUniformLogicalXor => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, value: Id, cluster_size: ?Id = null },
2607 .OpGroupNonUniformQuadBroadcast => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id, index: Id },
2608 .OpGroupNonUniformQuadSwap => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id, direction: Id },
2609 .OpCopyLogical => struct { id_result_type: Id, id_result: Id, operand: Id },
2610 .OpPtrEqual => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2611 .OpPtrNotEqual => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2612 .OpPtrDiff => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2613 .OpColorAttachmentReadEXT => struct { id_result_type: Id, id_result: Id, attachment: Id, sample: ?Id = null },
2614 .OpDepthAttachmentReadEXT => struct { id_result_type: Id, id_result: Id, sample: ?Id = null },
2615 .OpStencilAttachmentReadEXT => struct { id_result_type: Id, id_result: Id, sample: ?Id = null },
2616 .OpTypeTensorARM => struct { id_result: Id, element_type: Id, rank: ?Id = null, shape: ?Id = null },
2617 .OpTensorReadARM => struct { id_result_type: Id, id_result: Id, tensor: Id, coordinates: Id, tensor_operands: ?TensorOperands.Extended = null },
2618 .OpTensorWriteARM => struct { tensor: Id, coordinates: Id, object: Id, tensor_operands: ?TensorOperands.Extended = null },
2619 .OpTensorQuerySizeARM => struct { id_result_type: Id, id_result: Id, tensor: Id, dimension: Id },
2620 .OpGraphConstantARM => struct { id_result_type: Id, id_result: Id, graph_constant_id: LiteralInteger },
2621 .OpGraphEntryPointARM => struct { graph: Id, name: LiteralString, interface: []const Id = &.{} },
2622 .OpGraphARM => struct { id_result_type: Id, id_result: Id },
2623 .OpGraphInputARM => struct { id_result_type: Id, id_result: Id, input_index: Id, element_index: []const Id = &.{} },
2624 .OpGraphSetOutputARM => struct { value: Id, output_index: Id, element_index: []const Id = &.{} },
2625 .OpGraphEndARM => void,
2626 .OpTypeGraphARM => struct { id_result: Id, num_inputs: LiteralInteger, in_out_types: []const Id = &.{} },
24822627 .OpTerminateInvocation => void,
2483 .OpSubgroupBallotKHR => struct { id_result_type: IdResultType, id_result: IdResult, predicate: IdRef },
2484 .OpSubgroupFirstInvocationKHR => struct { id_result_type: IdResultType, id_result: IdResult, value: IdRef },
2485 .OpSubgroupAllKHR => struct { id_result_type: IdResultType, id_result: IdResult, predicate: IdRef },
2486 .OpSubgroupAnyKHR => struct { id_result_type: IdResultType, id_result: IdResult, predicate: IdRef },
2487 .OpSubgroupAllEqualKHR => struct { id_result_type: IdResultType, id_result: IdResult, predicate: IdRef },
2488 .OpGroupNonUniformRotateKHR => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, value: IdRef, delta: IdRef, clustersize: ?IdRef = null },
2489 .OpSubgroupReadInvocationKHR => struct { id_result_type: IdResultType, id_result: IdResult, value: IdRef, index: IdRef },
2490 .OpTraceRayKHR => struct { accel: IdRef, ray_flags: IdRef, cull_mask: IdRef, sbt_offset: IdRef, sbt_stride: IdRef, miss_index: IdRef, ray_origin: IdRef, ray_tmin: IdRef, ray_direction: IdRef, ray_tmax: IdRef, payload: IdRef },
2491 .OpExecuteCallableKHR => struct { sbt_index: IdRef, callable_data: IdRef },
2492 .OpConvertUToAccelerationStructureKHR => struct { id_result_type: IdResultType, id_result: IdResult, accel: IdRef },
2628 .OpTypeUntypedPointerKHR => struct { id_result: Id, storage_class: StorageClass },
2629 .OpUntypedVariableKHR => struct { id_result_type: Id, id_result: Id, storage_class: StorageClass, data_type: ?Id = null, initializer: ?Id = null },
2630 .OpUntypedAccessChainKHR => struct { id_result_type: Id, id_result: Id, base_type: Id, base: Id, indexes: []const Id = &.{} },
2631 .OpUntypedInBoundsAccessChainKHR => struct { id_result_type: Id, id_result: Id, base_type: Id, base: Id, indexes: []const Id = &.{} },
2632 .OpSubgroupBallotKHR => struct { id_result_type: Id, id_result: Id, predicate: Id },
2633 .OpSubgroupFirstInvocationKHR => struct { id_result_type: Id, id_result: Id, value: Id },
2634 .OpUntypedPtrAccessChainKHR => struct { id_result_type: Id, id_result: Id, base_type: Id, base: Id, element: Id, indexes: []const Id = &.{} },
2635 .OpUntypedInBoundsPtrAccessChainKHR => struct { id_result_type: Id, id_result: Id, base_type: Id, base: Id, element: Id, indexes: []const Id = &.{} },
2636 .OpUntypedArrayLengthKHR => struct { id_result_type: Id, id_result: Id, structure: Id, pointer: Id, array_member: LiteralInteger },
2637 .OpUntypedPrefetchKHR => struct { pointer_type: Id, num_bytes: Id, rw: ?Id = null, locality: ?Id = null, cache_type: ?Id = null },
2638 .OpSubgroupAllKHR => struct { id_result_type: Id, id_result: Id, predicate: Id },
2639 .OpSubgroupAnyKHR => struct { id_result_type: Id, id_result: Id, predicate: Id },
2640 .OpSubgroupAllEqualKHR => struct { id_result_type: Id, id_result: Id, predicate: Id },
2641 .OpGroupNonUniformRotateKHR => struct { id_result_type: Id, id_result: Id, execution: Id, value: Id, delta: Id, cluster_size: ?Id = null },
2642 .OpSubgroupReadInvocationKHR => struct { id_result_type: Id, id_result: Id, value: Id, index: Id },
2643 .OpExtInstWithForwardRefsKHR => struct { id_result_type: Id, id_result: Id, set: Id, instruction: LiteralExtInstInteger, id_ref_4: []const Id = &.{} },
2644 .OpTraceRayKHR => struct { accel: Id, ray_flags: Id, cull_mask: Id, sbt_offset: Id, sbt_stride: Id, miss_index: Id, ray_origin: Id, ray_tmin: Id, ray_direction: Id, ray_tmax: Id, payload: Id },
2645 .OpExecuteCallableKHR => struct { sbt_index: Id, callable_data: Id },
2646 .OpConvertUToAccelerationStructureKHR => struct { id_result_type: Id, id_result: Id, accel: Id },
24932647 .OpIgnoreIntersectionKHR => void,
24942648 .OpTerminateRayKHR => void,
2495 .OpSDot => struct { id_result_type: IdResultType, id_result: IdResult, vector_1: IdRef, vector_2: IdRef, packed_vector_format: ?PackedVectorFormat = null },
2496 .OpUDot => struct { id_result_type: IdResultType, id_result: IdResult, vector_1: IdRef, vector_2: IdRef, packed_vector_format: ?PackedVectorFormat = null },
2497 .OpSUDot => struct { id_result_type: IdResultType, id_result: IdResult, vector_1: IdRef, vector_2: IdRef, packed_vector_format: ?PackedVectorFormat = null },
2498 .OpSDotAccSat => struct { id_result_type: IdResultType, id_result: IdResult, vector_1: IdRef, vector_2: IdRef, accumulator: IdRef, packed_vector_format: ?PackedVectorFormat = null },
2499 .OpUDotAccSat => struct { id_result_type: IdResultType, id_result: IdResult, vector_1: IdRef, vector_2: IdRef, accumulator: IdRef, packed_vector_format: ?PackedVectorFormat = null },
2500 .OpSUDotAccSat => struct { id_result_type: IdResultType, id_result: IdResult, vector_1: IdRef, vector_2: IdRef, accumulator: IdRef, packed_vector_format: ?PackedVectorFormat = null },
2501 .OpTypeCooperativeMatrixKHR => struct { id_result: IdResult, component_type: IdRef, scope: IdScope, rows: IdRef, columns: IdRef, use: IdRef },
2502 .OpCooperativeMatrixLoadKHR => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memorylayout: IdRef, stride: ?IdRef = null, memory_operand: ?MemoryAccess.Extended = null },
2503 .OpCooperativeMatrixStoreKHR => struct { pointer: IdRef, object: IdRef, memorylayout: IdRef, stride: ?IdRef = null, memory_operand: ?MemoryAccess.Extended = null },
2504 .OpCooperativeMatrixMulAddKHR => struct { id_result_type: IdResultType, id_result: IdResult, a: IdRef, b: IdRef, c: IdRef, cooperative_matrix_operands: ?CooperativeMatrixOperands = null },
2505 .OpCooperativeMatrixLengthKHR => struct { id_result_type: IdResultType, id_result: IdResult, type: IdRef },
2506 .OpTypeRayQueryKHR => struct { id_result: IdResult },
2507 .OpRayQueryInitializeKHR => struct { rayquery: IdRef, accel: IdRef, rayflags: IdRef, cullmask: IdRef, rayorigin: IdRef, raytmin: IdRef, raydirection: IdRef, raytmax: IdRef },
2508 .OpRayQueryTerminateKHR => struct { rayquery: IdRef },
2509 .OpRayQueryGenerateIntersectionKHR => struct { rayquery: IdRef, hitt: IdRef },
2510 .OpRayQueryConfirmIntersectionKHR => struct { rayquery: IdRef },
2511 .OpRayQueryProceedKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef },
2512 .OpRayQueryGetIntersectionTypeKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef, intersection: IdRef },
2513 .OpImageSampleWeightedQCOM => struct { id_result_type: IdResultType, id_result: IdResult, texture: IdRef, coordinates: IdRef, weights: IdRef },
2514 .OpImageBoxFilterQCOM => struct { id_result_type: IdResultType, id_result: IdResult, texture: IdRef, coordinates: IdRef, box_size: IdRef },
2515 .OpImageBlockMatchSSDQCOM => struct { id_result_type: IdResultType, id_result: IdResult, target: IdRef, target_coordinates: IdRef, reference: IdRef, reference_coordinates: IdRef, block_size: IdRef },
2516 .OpImageBlockMatchSADQCOM => struct { id_result_type: IdResultType, id_result: IdResult, target: IdRef, target_coordinates: IdRef, reference: IdRef, reference_coordinates: IdRef, block_size: IdRef },
2517 .OpImageBlockMatchWindowSSDQCOM => struct { id_result_type: IdResultType, id_result: IdResult, target_sampled_image: IdRef, target_coordinates: IdRef, reference_sampled_image: IdRef, reference_coordinates: IdRef, block_size: IdRef },
2518 .OpImageBlockMatchWindowSADQCOM => struct { id_result_type: IdResultType, id_result: IdResult, target_sampled_image: IdRef, target_coordinates: IdRef, reference_sampled_image: IdRef, reference_coordinates: IdRef, block_size: IdRef },
2519 .OpImageBlockMatchGatherSSDQCOM => struct { id_result_type: IdResultType, id_result: IdResult, target_sampled_image: IdRef, target_coordinates: IdRef, reference_sampled_image: IdRef, reference_coordinates: IdRef, block_size: IdRef },
2520 .OpImageBlockMatchGatherSADQCOM => struct { id_result_type: IdResultType, id_result: IdResult, target_sampled_image: IdRef, target_coordinates: IdRef, reference_sampled_image: IdRef, reference_coordinates: IdRef, block_size: IdRef },
2521 .OpGroupIAddNonUniformAMD => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
2522 .OpGroupFAddNonUniformAMD => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
2523 .OpGroupFMinNonUniformAMD => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
2524 .OpGroupUMinNonUniformAMD => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
2525 .OpGroupSMinNonUniformAMD => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
2526 .OpGroupFMaxNonUniformAMD => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
2527 .OpGroupUMaxNonUniformAMD => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
2528 .OpGroupSMaxNonUniformAMD => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
2529 .OpFragmentMaskFetchAMD => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef, coordinate: IdRef },
2530 .OpFragmentFetchAMD => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef, coordinate: IdRef, fragment_index: IdRef },
2531 .OpReadClockKHR => struct { id_result_type: IdResultType, id_result: IdResult, scope: IdScope },
2532 .OpFinalizeNodePayloadsAMDX => struct { payload_array: IdRef },
2533 .OpFinishWritingNodePayloadAMDX => struct { id_result_type: IdResultType, id_result: IdResult, payload: IdRef },
2534 .OpInitializeNodePayloadsAMDX => struct { payload_array: IdRef, visibility: IdScope, payload_count: IdRef, node_index: IdRef },
2535 .OpGroupNonUniformQuadAllKHR => struct { id_result_type: IdResultType, id_result: IdResult, predicate: IdRef },
2536 .OpGroupNonUniformQuadAnyKHR => struct { id_result_type: IdResultType, id_result: IdResult, predicate: IdRef },
2537 .OpHitObjectRecordHitMotionNV => struct { hit_object: IdRef, acceleration_structure: IdRef, instanceid: IdRef, primitiveid: IdRef, geometryindex: IdRef, hit_kind: IdRef, sbt_record_offset: IdRef, sbt_record_stride: IdRef, origin: IdRef, tmin: IdRef, direction: IdRef, tmax: IdRef, current_time: IdRef, hitobject_attributes: IdRef },
2538 .OpHitObjectRecordHitWithIndexMotionNV => struct { hit_object: IdRef, acceleration_structure: IdRef, instanceid: IdRef, primitiveid: IdRef, geometryindex: IdRef, hit_kind: IdRef, sbt_record_index: IdRef, origin: IdRef, tmin: IdRef, direction: IdRef, tmax: IdRef, current_time: IdRef, hitobject_attributes: IdRef },
2539 .OpHitObjectRecordMissMotionNV => struct { hit_object: IdRef, sbt_index: IdRef, origin: IdRef, tmin: IdRef, direction: IdRef, tmax: IdRef, current_time: IdRef },
2540 .OpHitObjectGetWorldToObjectNV => struct { id_result_type: IdResultType, id_result: IdResult, hit_object: IdRef },
2541 .OpHitObjectGetObjectToWorldNV => struct { id_result_type: IdResultType, id_result: IdResult, hit_object: IdRef },
2542 .OpHitObjectGetObjectRayDirectionNV => struct { id_result_type: IdResultType, id_result: IdResult, hit_object: IdRef },
2543 .OpHitObjectGetObjectRayOriginNV => struct { id_result_type: IdResultType, id_result: IdResult, hit_object: IdRef },
2544 .OpHitObjectTraceRayMotionNV => struct { hit_object: IdRef, acceleration_structure: IdRef, rayflags: IdRef, cullmask: IdRef, sbt_record_offset: IdRef, sbt_record_stride: IdRef, miss_index: IdRef, origin: IdRef, tmin: IdRef, direction: IdRef, tmax: IdRef, time: IdRef, payload: IdRef },
2545 .OpHitObjectGetShaderRecordBufferHandleNV => struct { id_result_type: IdResultType, id_result: IdResult, hit_object: IdRef },
2546 .OpHitObjectGetShaderBindingTableRecordIndexNV => struct { id_result_type: IdResultType, id_result: IdResult, hit_object: IdRef },
2547 .OpHitObjectRecordEmptyNV => struct { hit_object: IdRef },
2548 .OpHitObjectTraceRayNV => struct { hit_object: IdRef, acceleration_structure: IdRef, rayflags: IdRef, cullmask: IdRef, sbt_record_offset: IdRef, sbt_record_stride: IdRef, miss_index: IdRef, origin: IdRef, tmin: IdRef, direction: IdRef, tmax: IdRef, payload: IdRef },
2549 .OpHitObjectRecordHitNV => struct { hit_object: IdRef, acceleration_structure: IdRef, instanceid: IdRef, primitiveid: IdRef, geometryindex: IdRef, hit_kind: IdRef, sbt_record_offset: IdRef, sbt_record_stride: IdRef, origin: IdRef, tmin: IdRef, direction: IdRef, tmax: IdRef, hitobject_attributes: IdRef },
2550 .OpHitObjectRecordHitWithIndexNV => struct { hit_object: IdRef, acceleration_structure: IdRef, instanceid: IdRef, primitiveid: IdRef, geometryindex: IdRef, hit_kind: IdRef, sbt_record_index: IdRef, origin: IdRef, tmin: IdRef, direction: IdRef, tmax: IdRef, hitobject_attributes: IdRef },
2551 .OpHitObjectRecordMissNV => struct { hit_object: IdRef, sbt_index: IdRef, origin: IdRef, tmin: IdRef, direction: IdRef, tmax: IdRef },
2552 .OpHitObjectExecuteShaderNV => struct { hit_object: IdRef, payload: IdRef },
2553 .OpHitObjectGetCurrentTimeNV => struct { id_result_type: IdResultType, id_result: IdResult, hit_object: IdRef },
2554 .OpHitObjectGetAttributesNV => struct { hit_object: IdRef, hit_object_attribute: IdRef },
2555 .OpHitObjectGetHitKindNV => struct { id_result_type: IdResultType, id_result: IdResult, hit_object: IdRef },
2556 .OpHitObjectGetPrimitiveIndexNV => struct { id_result_type: IdResultType, id_result: IdResult, hit_object: IdRef },
2557 .OpHitObjectGetGeometryIndexNV => struct { id_result_type: IdResultType, id_result: IdResult, hit_object: IdRef },
2558 .OpHitObjectGetInstanceIdNV => struct { id_result_type: IdResultType, id_result: IdResult, hit_object: IdRef },
2559 .OpHitObjectGetInstanceCustomIndexNV => struct { id_result_type: IdResultType, id_result: IdResult, hit_object: IdRef },
2560 .OpHitObjectGetWorldRayDirectionNV => struct { id_result_type: IdResultType, id_result: IdResult, hit_object: IdRef },
2561 .OpHitObjectGetWorldRayOriginNV => struct { id_result_type: IdResultType, id_result: IdResult, hit_object: IdRef },
2562 .OpHitObjectGetRayTMaxNV => struct { id_result_type: IdResultType, id_result: IdResult, hit_object: IdRef },
2563 .OpHitObjectGetRayTMinNV => struct { id_result_type: IdResultType, id_result: IdResult, hit_object: IdRef },
2564 .OpHitObjectIsEmptyNV => struct { id_result_type: IdResultType, id_result: IdResult, hit_object: IdRef },
2565 .OpHitObjectIsHitNV => struct { id_result_type: IdResultType, id_result: IdResult, hit_object: IdRef },
2566 .OpHitObjectIsMissNV => struct { id_result_type: IdResultType, id_result: IdResult, hit_object: IdRef },
2567 .OpReorderThreadWithHitObjectNV => struct { hit_object: IdRef, hint: ?IdRef = null, bits: ?IdRef = null },
2568 .OpReorderThreadWithHintNV => struct { hint: IdRef, bits: IdRef },
2569 .OpTypeHitObjectNV => struct { id_result: IdResult },
2570 .OpImageSampleFootprintNV => struct { id_result_type: IdResultType, id_result: IdResult, sampled_image: IdRef, coordinate: IdRef, granularity: IdRef, coarse: IdRef, image_operands: ?ImageOperands.Extended = null },
2571 .OpEmitMeshTasksEXT => struct { group_count_x: IdRef, group_count_y: IdRef, group_count_z: IdRef, payload: ?IdRef = null },
2572 .OpSetMeshOutputsEXT => struct { vertex_count: IdRef, primitive_count: IdRef },
2573 .OpGroupNonUniformPartitionNV => struct { id_result_type: IdResultType, id_result: IdResult, value: IdRef },
2574 .OpWritePackedPrimitiveIndices4x8NV => struct { index_offset: IdRef, packed_indices: IdRef },
2575 .OpFetchMicroTriangleVertexPositionNV => struct { id_result_type: IdResultType, id_result: IdResult, accel: IdRef, instance_id: IdRef, geometry_index: IdRef, primitive_index: IdRef, barycentric: IdRef },
2576 .OpFetchMicroTriangleVertexBarycentricNV => struct { id_result_type: IdResultType, id_result: IdResult, accel: IdRef, instance_id: IdRef, geometry_index: IdRef, primitive_index: IdRef, barycentric: IdRef },
2577 .OpReportIntersectionKHR => struct { id_result_type: IdResultType, id_result: IdResult, hit: IdRef, hitkind: IdRef },
2649 .OpSDot => struct { id_result_type: Id, id_result: Id, vector_1: Id, vector_2: Id, packed_vector_format: ?PackedVectorFormat = null },
2650 .OpUDot => struct { id_result_type: Id, id_result: Id, vector_1: Id, vector_2: Id, packed_vector_format: ?PackedVectorFormat = null },
2651 .OpSUDot => struct { id_result_type: Id, id_result: Id, vector_1: Id, vector_2: Id, packed_vector_format: ?PackedVectorFormat = null },
2652 .OpSDotAccSat => struct { id_result_type: Id, id_result: Id, vector_1: Id, vector_2: Id, accumulator: Id, packed_vector_format: ?PackedVectorFormat = null },
2653 .OpUDotAccSat => struct { id_result_type: Id, id_result: Id, vector_1: Id, vector_2: Id, accumulator: Id, packed_vector_format: ?PackedVectorFormat = null },
2654 .OpSUDotAccSat => struct { id_result_type: Id, id_result: Id, vector_1: Id, vector_2: Id, accumulator: Id, packed_vector_format: ?PackedVectorFormat = null },
2655 .OpTypeCooperativeMatrixKHR => struct { id_result: Id, component_type: Id, scope: Id, rows: Id, columns: Id, use: Id },
2656 .OpCooperativeMatrixLoadKHR => struct { id_result_type: Id, id_result: Id, pointer: Id, memory_layout: Id, stride: ?Id = null, memory_operand: ?MemoryAccess.Extended = null },
2657 .OpCooperativeMatrixStoreKHR => struct { pointer: Id, object: Id, memory_layout: Id, stride: ?Id = null, memory_operand: ?MemoryAccess.Extended = null },
2658 .OpCooperativeMatrixMulAddKHR => struct { id_result_type: Id, id_result: Id, a: Id, b: Id, c: Id, cooperative_matrix_operands: ?CooperativeMatrixOperands = null },
2659 .OpCooperativeMatrixLengthKHR => struct { id_result_type: Id, id_result: Id, type: Id },
2660 .OpConstantCompositeReplicateEXT => struct { id_result_type: Id, id_result: Id, value: Id },
2661 .OpSpecConstantCompositeReplicateEXT => struct { id_result_type: Id, id_result: Id, value: Id },
2662 .OpCompositeConstructReplicateEXT => struct { id_result_type: Id, id_result: Id, value: Id },
2663 .OpTypeRayQueryKHR => struct { id_result: Id },
2664 .OpRayQueryInitializeKHR => struct { ray_query: Id, accel: Id, ray_flags: Id, cull_mask: Id, ray_origin: Id, ray_t_min: Id, ray_direction: Id, ray_t_max: Id },
2665 .OpRayQueryTerminateKHR => struct { ray_query: Id },
2666 .OpRayQueryGenerateIntersectionKHR => struct { ray_query: Id, hit_t: Id },
2667 .OpRayQueryConfirmIntersectionKHR => struct { ray_query: Id },
2668 .OpRayQueryProceedKHR => struct { id_result_type: Id, id_result: Id, ray_query: Id },
2669 .OpRayQueryGetIntersectionTypeKHR => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id },
2670 .OpImageSampleWeightedQCOM => struct { id_result_type: Id, id_result: Id, texture: Id, coordinates: Id, weights: Id },
2671 .OpImageBoxFilterQCOM => struct { id_result_type: Id, id_result: Id, texture: Id, coordinates: Id, box_size: Id },
2672 .OpImageBlockMatchSSDQCOM => struct { id_result_type: Id, id_result: Id, target: Id, target_coordinates: Id, reference: Id, reference_coordinates: Id, block_size: Id },
2673 .OpImageBlockMatchSADQCOM => struct { id_result_type: Id, id_result: Id, target: Id, target_coordinates: Id, reference: Id, reference_coordinates: Id, block_size: Id },
2674 .OpImageBlockMatchWindowSSDQCOM => struct { id_result_type: Id, id_result: Id, target_sampled_image: Id, target_coordinates: Id, reference_sampled_image: Id, reference_coordinates: Id, block_size: Id },
2675 .OpImageBlockMatchWindowSADQCOM => struct { id_result_type: Id, id_result: Id, target_sampled_image: Id, target_coordinates: Id, reference_sampled_image: Id, reference_coordinates: Id, block_size: Id },
2676 .OpImageBlockMatchGatherSSDQCOM => struct { id_result_type: Id, id_result: Id, target_sampled_image: Id, target_coordinates: Id, reference_sampled_image: Id, reference_coordinates: Id, block_size: Id },
2677 .OpImageBlockMatchGatherSADQCOM => struct { id_result_type: Id, id_result: Id, target_sampled_image: Id, target_coordinates: Id, reference_sampled_image: Id, reference_coordinates: Id, block_size: Id },
2678 .OpGroupIAddNonUniformAMD => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id },
2679 .OpGroupFAddNonUniformAMD => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id },
2680 .OpGroupFMinNonUniformAMD => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id },
2681 .OpGroupUMinNonUniformAMD => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id },
2682 .OpGroupSMinNonUniformAMD => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id },
2683 .OpGroupFMaxNonUniformAMD => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id },
2684 .OpGroupUMaxNonUniformAMD => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id },
2685 .OpGroupSMaxNonUniformAMD => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id },
2686 .OpFragmentMaskFetchAMD => struct { id_result_type: Id, id_result: Id, image: Id, coordinate: Id },
2687 .OpFragmentFetchAMD => struct { id_result_type: Id, id_result: Id, image: Id, coordinate: Id, fragment_index: Id },
2688 .OpReadClockKHR => struct { id_result_type: Id, id_result: Id, scope: Id },
2689 .OpAllocateNodePayloadsAMDX => struct { id_result_type: Id, id_result: Id, visibility: Id, payload_count: Id, node_index: Id },
2690 .OpEnqueueNodePayloadsAMDX => struct { payload_array: Id },
2691 .OpTypeNodePayloadArrayAMDX => struct { id_result: Id, payload_type: Id },
2692 .OpFinishWritingNodePayloadAMDX => struct { id_result_type: Id, id_result: Id, payload: Id },
2693 .OpNodePayloadArrayLengthAMDX => struct { id_result_type: Id, id_result: Id, payload_array: Id },
2694 .OpIsNodePayloadValidAMDX => struct { id_result_type: Id, id_result: Id, payload_type: Id, node_index: Id },
2695 .OpConstantStringAMDX => struct { id_result: Id, literal_string: LiteralString },
2696 .OpSpecConstantStringAMDX => struct { id_result: Id, literal_string: LiteralString },
2697 .OpGroupNonUniformQuadAllKHR => struct { id_result_type: Id, id_result: Id, predicate: Id },
2698 .OpGroupNonUniformQuadAnyKHR => struct { id_result_type: Id, id_result: Id, predicate: Id },
2699 .OpHitObjectRecordHitMotionNV => struct { hit_object: Id, acceleration_structure: Id, instance_id: Id, primitive_id: Id, geometry_index: Id, hit_kind: Id, sbt_record_offset: Id, sbt_record_stride: Id, origin: Id, t_min: Id, direction: Id, t_max: Id, current_time: Id, hit_object_attributes: Id },
2700 .OpHitObjectRecordHitWithIndexMotionNV => struct { hit_object: Id, acceleration_structure: Id, instance_id: Id, primitive_id: Id, geometry_index: Id, hit_kind: Id, sbt_record_index: Id, origin: Id, t_min: Id, direction: Id, t_max: Id, current_time: Id, hit_object_attributes: Id },
2701 .OpHitObjectRecordMissMotionNV => struct { hit_object: Id, sbt_index: Id, origin: Id, t_min: Id, direction: Id, t_max: Id, current_time: Id },
2702 .OpHitObjectGetWorldToObjectNV => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2703 .OpHitObjectGetObjectToWorldNV => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2704 .OpHitObjectGetObjectRayDirectionNV => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2705 .OpHitObjectGetObjectRayOriginNV => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2706 .OpHitObjectTraceRayMotionNV => struct { hit_object: Id, acceleration_structure: Id, ray_flags: Id, cullmask: Id, sbt_record_offset: Id, sbt_record_stride: Id, miss_index: Id, origin: Id, t_min: Id, direction: Id, t_max: Id, time: Id, payload: Id },
2707 .OpHitObjectGetShaderRecordBufferHandleNV => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2708 .OpHitObjectGetShaderBindingTableRecordIndexNV => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2709 .OpHitObjectRecordEmptyNV => struct { hit_object: Id },
2710 .OpHitObjectTraceRayNV => struct { hit_object: Id, acceleration_structure: Id, ray_flags: Id, cullmask: Id, sbt_record_offset: Id, sbt_record_stride: Id, miss_index: Id, origin: Id, t_min: Id, direction: Id, t_max: Id, payload: Id },
2711 .OpHitObjectRecordHitNV => struct { hit_object: Id, acceleration_structure: Id, instance_id: Id, primitive_id: Id, geometry_index: Id, hit_kind: Id, sbt_record_offset: Id, sbt_record_stride: Id, origin: Id, t_min: Id, direction: Id, t_max: Id, hit_object_attributes: Id },
2712 .OpHitObjectRecordHitWithIndexNV => struct { hit_object: Id, acceleration_structure: Id, instance_id: Id, primitive_id: Id, geometry_index: Id, hit_kind: Id, sbt_record_index: Id, origin: Id, t_min: Id, direction: Id, t_max: Id, hit_object_attributes: Id },
2713 .OpHitObjectRecordMissNV => struct { hit_object: Id, sbt_index: Id, origin: Id, t_min: Id, direction: Id, t_max: Id },
2714 .OpHitObjectExecuteShaderNV => struct { hit_object: Id, payload: Id },
2715 .OpHitObjectGetCurrentTimeNV => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2716 .OpHitObjectGetAttributesNV => struct { hit_object: Id, hit_object_attribute: Id },
2717 .OpHitObjectGetHitKindNV => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2718 .OpHitObjectGetPrimitiveIndexNV => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2719 .OpHitObjectGetGeometryIndexNV => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2720 .OpHitObjectGetInstanceIdNV => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2721 .OpHitObjectGetInstanceCustomIndexNV => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2722 .OpHitObjectGetWorldRayDirectionNV => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2723 .OpHitObjectGetWorldRayOriginNV => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2724 .OpHitObjectGetRayTMaxNV => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2725 .OpHitObjectGetRayTMinNV => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2726 .OpHitObjectIsEmptyNV => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2727 .OpHitObjectIsHitNV => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2728 .OpHitObjectIsMissNV => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2729 .OpReorderThreadWithHitObjectNV => struct { hit_object: Id, hint: ?Id = null, bits: ?Id = null },
2730 .OpReorderThreadWithHintNV => struct { hint: Id, bits: Id },
2731 .OpTypeHitObjectNV => struct { id_result: Id },
2732 .OpImageSampleFootprintNV => struct { id_result_type: Id, id_result: Id, sampled_image: Id, coordinate: Id, granularity: Id, coarse: Id, image_operands: ?ImageOperands.Extended = null },
2733 .OpTypeCooperativeVectorNV => struct { id_result: Id, component_type: Id, component_count: Id },
2734 .OpCooperativeVectorMatrixMulNV => struct { id_result_type: Id, id_result: Id, input: Id, input_interpretation: Id, matrix: Id, matrix_offset: Id, matrix_interpretation: Id, m: Id, k: Id, memory_layout: Id, transpose: Id, matrix_stride: ?Id = null, cooperative_matrix_operands: ?CooperativeMatrixOperands = null },
2735 .OpCooperativeVectorOuterProductAccumulateNV => struct { pointer: Id, offset: Id, a: Id, b: Id, memory_layout: Id, matrix_interpretation: Id, matrix_stride: ?Id = null },
2736 .OpCooperativeVectorReduceSumAccumulateNV => struct { pointer: Id, offset: Id, v: Id },
2737 .OpCooperativeVectorMatrixMulAddNV => struct { id_result_type: Id, id_result: Id, input: Id, input_interpretation: Id, matrix: Id, matrix_offset: Id, matrix_interpretation: Id, bias: Id, bias_offset: Id, bias_interpretation: Id, m: Id, k: Id, memory_layout: Id, transpose: Id, matrix_stride: ?Id = null, cooperative_matrix_operands: ?CooperativeMatrixOperands = null },
2738 .OpCooperativeMatrixConvertNV => struct { id_result_type: Id, id_result: Id, matrix: Id },
2739 .OpEmitMeshTasksEXT => struct { group_count_x: Id, group_count_y: Id, group_count_z: Id, payload: ?Id = null },
2740 .OpSetMeshOutputsEXT => struct { vertex_count: Id, primitive_count: Id },
2741 .OpGroupNonUniformPartitionNV => struct { id_result_type: Id, id_result: Id, value: Id },
2742 .OpWritePackedPrimitiveIndices4x8NV => struct { index_offset: Id, packed_indices: Id },
2743 .OpFetchMicroTriangleVertexPositionNV => struct { id_result_type: Id, id_result: Id, accel: Id, instance_id: Id, geometry_index: Id, primitive_index: Id, barycentric: Id },
2744 .OpFetchMicroTriangleVertexBarycentricNV => struct { id_result_type: Id, id_result: Id, accel: Id, instance_id: Id, geometry_index: Id, primitive_index: Id, barycentric: Id },
2745 .OpCooperativeVectorLoadNV => struct { id_result_type: Id, id_result: Id, pointer: Id, offset: Id, memory_access: ?MemoryAccess.Extended = null },
2746 .OpCooperativeVectorStoreNV => struct { pointer: Id, offset: Id, object: Id, memory_access: ?MemoryAccess.Extended = null },
2747 .OpReportIntersectionKHR => struct { id_result_type: Id, id_result: Id, hit: Id, hit_kind: Id },
25782748 .OpIgnoreIntersectionNV => void,
25792749 .OpTerminateRayNV => void,
2580 .OpTraceNV => struct { accel: IdRef, ray_flags: IdRef, cull_mask: IdRef, sbt_offset: IdRef, sbt_stride: IdRef, miss_index: IdRef, ray_origin: IdRef, ray_tmin: IdRef, ray_direction: IdRef, ray_tmax: IdRef, payloadid: IdRef },
2581 .OpTraceMotionNV => struct { accel: IdRef, ray_flags: IdRef, cull_mask: IdRef, sbt_offset: IdRef, sbt_stride: IdRef, miss_index: IdRef, ray_origin: IdRef, ray_tmin: IdRef, ray_direction: IdRef, ray_tmax: IdRef, time: IdRef, payloadid: IdRef },
2582 .OpTraceRayMotionNV => struct { accel: IdRef, ray_flags: IdRef, cull_mask: IdRef, sbt_offset: IdRef, sbt_stride: IdRef, miss_index: IdRef, ray_origin: IdRef, ray_tmin: IdRef, ray_direction: IdRef, ray_tmax: IdRef, time: IdRef, payload: IdRef },
2583 .OpRayQueryGetIntersectionTriangleVertexPositionsKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef, intersection: IdRef },
2584 .OpTypeAccelerationStructureKHR => struct { id_result: IdResult },
2585 .OpExecuteCallableNV => struct { sbt_index: IdRef, callable_dataid: IdRef },
2586 .OpTypeCooperativeMatrixNV => struct { id_result: IdResult, component_type: IdRef, execution: IdScope, rows: IdRef, columns: IdRef },
2587 .OpCooperativeMatrixLoadNV => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, stride: IdRef, column_major: IdRef, memory_access: ?MemoryAccess.Extended = null },
2588 .OpCooperativeMatrixStoreNV => struct { pointer: IdRef, object: IdRef, stride: IdRef, column_major: IdRef, memory_access: ?MemoryAccess.Extended = null },
2589 .OpCooperativeMatrixMulAddNV => struct { id_result_type: IdResultType, id_result: IdResult, a: IdRef, b: IdRef, c: IdRef },
2590 .OpCooperativeMatrixLengthNV => struct { id_result_type: IdResultType, id_result: IdResult, type: IdRef },
2750 .OpTraceNV => struct { accel: Id, ray_flags: Id, cull_mask: Id, sbt_offset: Id, sbt_stride: Id, miss_index: Id, ray_origin: Id, ray_tmin: Id, ray_direction: Id, ray_tmax: Id, payload_id: Id },
2751 .OpTraceMotionNV => struct { accel: Id, ray_flags: Id, cull_mask: Id, sbt_offset: Id, sbt_stride: Id, miss_index: Id, ray_origin: Id, ray_tmin: Id, ray_direction: Id, ray_tmax: Id, time: Id, payload_id: Id },
2752 .OpTraceRayMotionNV => struct { accel: Id, ray_flags: Id, cull_mask: Id, sbt_offset: Id, sbt_stride: Id, miss_index: Id, ray_origin: Id, ray_tmin: Id, ray_direction: Id, ray_tmax: Id, time: Id, payload: Id },
2753 .OpRayQueryGetIntersectionTriangleVertexPositionsKHR => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id },
2754 .OpTypeAccelerationStructureKHR => struct { id_result: Id },
2755 .OpExecuteCallableNV => struct { sbt_index: Id, callable_data_id: Id },
2756 .OpRayQueryGetClusterIdNV => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id },
2757 .OpHitObjectGetClusterIdNV => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2758 .OpTypeCooperativeMatrixNV => struct { id_result: Id, component_type: Id, execution: Id, rows: Id, columns: Id },
2759 .OpCooperativeMatrixLoadNV => struct { id_result_type: Id, id_result: Id, pointer: Id, stride: Id, column_major: Id, memory_access: ?MemoryAccess.Extended = null },
2760 .OpCooperativeMatrixStoreNV => struct { pointer: Id, object: Id, stride: Id, column_major: Id, memory_access: ?MemoryAccess.Extended = null },
2761 .OpCooperativeMatrixMulAddNV => struct { id_result_type: Id, id_result: Id, a: Id, b: Id, c: Id },
2762 .OpCooperativeMatrixLengthNV => struct { id_result_type: Id, id_result: Id, type: Id },
25912763 .OpBeginInvocationInterlockEXT => void,
25922764 .OpEndInvocationInterlockEXT => void,
2765 .OpCooperativeMatrixReduceNV => struct { id_result_type: Id, id_result: Id, matrix: Id, reduce: CooperativeMatrixReduce, combine_func: Id },
2766 .OpCooperativeMatrixLoadTensorNV => struct { id_result_type: Id, id_result: Id, pointer: Id, object: Id, tensor_layout: Id, memory_operand: MemoryAccess.Extended, tensor_addressing_operands: TensorAddressingOperands.Extended },
2767 .OpCooperativeMatrixStoreTensorNV => struct { pointer: Id, object: Id, tensor_layout: Id, memory_operand: MemoryAccess.Extended, tensor_addressing_operands: TensorAddressingOperands.Extended },
2768 .OpCooperativeMatrixPerElementOpNV => struct { id_result_type: Id, id_result: Id, matrix: Id, func: Id, operands: []const Id = &.{} },
2769 .OpTypeTensorLayoutNV => struct { id_result: Id, dim: Id, clamp_mode: Id },
2770 .OpTypeTensorViewNV => struct { id_result: Id, dim: Id, has_dimensions: Id, p: []const Id = &.{} },
2771 .OpCreateTensorLayoutNV => struct { id_result_type: Id, id_result: Id },
2772 .OpTensorLayoutSetDimensionNV => struct { id_result_type: Id, id_result: Id, tensor_layout: Id, dim: []const Id = &.{} },
2773 .OpTensorLayoutSetStrideNV => struct { id_result_type: Id, id_result: Id, tensor_layout: Id, stride: []const Id = &.{} },
2774 .OpTensorLayoutSliceNV => struct { id_result_type: Id, id_result: Id, tensor_layout: Id, operands: []const Id = &.{} },
2775 .OpTensorLayoutSetClampValueNV => struct { id_result_type: Id, id_result: Id, tensor_layout: Id, value: Id },
2776 .OpCreateTensorViewNV => struct { id_result_type: Id, id_result: Id },
2777 .OpTensorViewSetDimensionNV => struct { id_result_type: Id, id_result: Id, tensor_view: Id, dim: []const Id = &.{} },
2778 .OpTensorViewSetStrideNV => struct { id_result_type: Id, id_result: Id, tensor_view: Id, stride: []const Id = &.{} },
25932779 .OpDemoteToHelperInvocation => void,
2594 .OpIsHelperInvocationEXT => struct { id_result_type: IdResultType, id_result: IdResult },
2595 .OpConvertUToImageNV => struct { id_result_type: IdResultType, id_result: IdResult, operand: IdRef },
2596 .OpConvertUToSamplerNV => struct { id_result_type: IdResultType, id_result: IdResult, operand: IdRef },
2597 .OpConvertImageToUNV => struct { id_result_type: IdResultType, id_result: IdResult, operand: IdRef },
2598 .OpConvertSamplerToUNV => struct { id_result_type: IdResultType, id_result: IdResult, operand: IdRef },
2599 .OpConvertUToSampledImageNV => struct { id_result_type: IdResultType, id_result: IdResult, operand: IdRef },
2600 .OpConvertSampledImageToUNV => struct { id_result_type: IdResultType, id_result: IdResult, operand: IdRef },
2780 .OpIsHelperInvocationEXT => struct { id_result_type: Id, id_result: Id },
2781 .OpTensorViewSetClipNV => struct { id_result_type: Id, id_result: Id, tensor_view: Id, clip_row_offset: Id, clip_row_span: Id, clip_col_offset: Id, clip_col_span: Id },
2782 .OpTensorLayoutSetBlockSizeNV => struct { id_result_type: Id, id_result: Id, tensor_layout: Id, block_size: []const Id = &.{} },
2783 .OpCooperativeMatrixTransposeNV => struct { id_result_type: Id, id_result: Id, matrix: Id },
2784 .OpConvertUToImageNV => struct { id_result_type: Id, id_result: Id, operand: Id },
2785 .OpConvertUToSamplerNV => struct { id_result_type: Id, id_result: Id, operand: Id },
2786 .OpConvertImageToUNV => struct { id_result_type: Id, id_result: Id, operand: Id },
2787 .OpConvertSamplerToUNV => struct { id_result_type: Id, id_result: Id, operand: Id },
2788 .OpConvertUToSampledImageNV => struct { id_result_type: Id, id_result: Id, operand: Id },
2789 .OpConvertSampledImageToUNV => struct { id_result_type: Id, id_result: Id, operand: Id },
26012790 .OpSamplerImageAddressingModeNV => struct { bit_width: LiteralInteger },
2602 .OpRawAccessChainNV => struct { id_result_type: IdResultType, id_result: IdResult, base: IdRef, byte_stride: IdRef, element_index: IdRef, byte_offset: IdRef, raw_access_chain_operands: ?RawAccessChainOperands = null },
2603 .OpSubgroupShuffleINTEL => struct { id_result_type: IdResultType, id_result: IdResult, data: IdRef, invocationid: IdRef },
2604 .OpSubgroupShuffleDownINTEL => struct { id_result_type: IdResultType, id_result: IdResult, current: IdRef, next: IdRef, delta: IdRef },
2605 .OpSubgroupShuffleUpINTEL => struct { id_result_type: IdResultType, id_result: IdResult, previous: IdRef, current: IdRef, delta: IdRef },
2606 .OpSubgroupShuffleXorINTEL => struct { id_result_type: IdResultType, id_result: IdResult, data: IdRef, value: IdRef },
2607 .OpSubgroupBlockReadINTEL => struct { id_result_type: IdResultType, id_result: IdResult, ptr: IdRef },
2608 .OpSubgroupBlockWriteINTEL => struct { ptr: IdRef, data: IdRef },
2609 .OpSubgroupImageBlockReadINTEL => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef, coordinate: IdRef },
2610 .OpSubgroupImageBlockWriteINTEL => struct { image: IdRef, coordinate: IdRef, data: IdRef },
2611 .OpSubgroupImageMediaBlockReadINTEL => struct { id_result_type: IdResultType, id_result: IdResult, image: IdRef, coordinate: IdRef, width: IdRef, height: IdRef },
2612 .OpSubgroupImageMediaBlockWriteINTEL => struct { image: IdRef, coordinate: IdRef, width: IdRef, height: IdRef, data: IdRef },
2613 .OpUCountLeadingZerosINTEL => struct { id_result_type: IdResultType, id_result: IdResult, operand: IdRef },
2614 .OpUCountTrailingZerosINTEL => struct { id_result_type: IdResultType, id_result: IdResult, operand: IdRef },
2615 .OpAbsISubINTEL => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2616 .OpAbsUSubINTEL => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2617 .OpIAddSatINTEL => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2618 .OpUAddSatINTEL => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2619 .OpIAverageINTEL => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2620 .OpUAverageINTEL => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2621 .OpIAverageRoundedINTEL => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2622 .OpUAverageRoundedINTEL => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2623 .OpISubSatINTEL => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2624 .OpUSubSatINTEL => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2625 .OpIMul32x16INTEL => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2626 .OpUMul32x16INTEL => struct { id_result_type: IdResultType, id_result: IdResult, operand_1: IdRef, operand_2: IdRef },
2627 .OpAtomicFMinEXT => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics, value: IdRef },
2628 .OpAtomicFMaxEXT => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics, value: IdRef },
2629 .OpAssumeTrueKHR => struct { condition: IdRef },
2630 .OpExpectKHR => struct { id_result_type: IdResultType, id_result: IdResult, value: IdRef, expectedvalue: IdRef },
2631 .OpDecorateString => struct { target: IdRef, decoration: Decoration.Extended },
2632 .OpMemberDecorateString => struct { struct_type: IdRef, member: LiteralInteger, decoration: Decoration.Extended },
2791 .OpRawAccessChainNV => struct { id_result_type: Id, id_result: Id, base: Id, byte_stride: Id, element_index: Id, byte_offset: Id, raw_access_chain_operands: ?RawAccessChainOperands = null },
2792 .OpRayQueryGetIntersectionSpherePositionNV => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id },
2793 .OpRayQueryGetIntersectionSphereRadiusNV => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id },
2794 .OpRayQueryGetIntersectionLSSPositionsNV => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id },
2795 .OpRayQueryGetIntersectionLSSRadiiNV => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id },
2796 .OpRayQueryGetIntersectionLSSHitValueNV => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id },
2797 .OpHitObjectGetSpherePositionNV => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2798 .OpHitObjectGetSphereRadiusNV => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2799 .OpHitObjectGetLSSPositionsNV => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2800 .OpHitObjectGetLSSRadiiNV => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2801 .OpHitObjectIsSphereHitNV => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2802 .OpHitObjectIsLSSHitNV => struct { id_result_type: Id, id_result: Id, hit_object: Id },
2803 .OpRayQueryIsSphereHitNV => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id },
2804 .OpRayQueryIsLSSHitNV => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id },
2805 .OpSubgroupShuffleINTEL => struct { id_result_type: Id, id_result: Id, data: Id, invocation_id: Id },
2806 .OpSubgroupShuffleDownINTEL => struct { id_result_type: Id, id_result: Id, current: Id, next: Id, delta: Id },
2807 .OpSubgroupShuffleUpINTEL => struct { id_result_type: Id, id_result: Id, previous: Id, current: Id, delta: Id },
2808 .OpSubgroupShuffleXorINTEL => struct { id_result_type: Id, id_result: Id, data: Id, value: Id },
2809 .OpSubgroupBlockReadINTEL => struct { id_result_type: Id, id_result: Id, ptr: Id },
2810 .OpSubgroupBlockWriteINTEL => struct { ptr: Id, data: Id },
2811 .OpSubgroupImageBlockReadINTEL => struct { id_result_type: Id, id_result: Id, image: Id, coordinate: Id },
2812 .OpSubgroupImageBlockWriteINTEL => struct { image: Id, coordinate: Id, data: Id },
2813 .OpSubgroupImageMediaBlockReadINTEL => struct { id_result_type: Id, id_result: Id, image: Id, coordinate: Id, width: Id, height: Id },
2814 .OpSubgroupImageMediaBlockWriteINTEL => struct { image: Id, coordinate: Id, width: Id, height: Id, data: Id },
2815 .OpUCountLeadingZerosINTEL => struct { id_result_type: Id, id_result: Id, operand: Id },
2816 .OpUCountTrailingZerosINTEL => struct { id_result_type: Id, id_result: Id, operand: Id },
2817 .OpAbsISubINTEL => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2818 .OpAbsUSubINTEL => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2819 .OpIAddSatINTEL => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2820 .OpUAddSatINTEL => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2821 .OpIAverageINTEL => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2822 .OpUAverageINTEL => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2823 .OpIAverageRoundedINTEL => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2824 .OpUAverageRoundedINTEL => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2825 .OpISubSatINTEL => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2826 .OpUSubSatINTEL => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2827 .OpIMul32x16INTEL => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2828 .OpUMul32x16INTEL => struct { id_result_type: Id, id_result: Id, operand_1: Id, operand_2: Id },
2829 .OpAtomicFMinEXT => struct { id_result_type: Id, id_result: Id, pointer: Id, memory: Id, semantics: Id, value: Id },
2830 .OpAtomicFMaxEXT => struct { id_result_type: Id, id_result: Id, pointer: Id, memory: Id, semantics: Id, value: Id },
2831 .OpAssumeTrueKHR => struct { condition: Id },
2832 .OpExpectKHR => struct { id_result_type: Id, id_result: Id, value: Id, expected_value: Id },
2833 .OpDecorateString => struct { target: Id, decoration: Decoration.Extended },
2834 .OpMemberDecorateString => struct { struct_type: Id, member: LiteralInteger, decoration: Decoration.Extended },
26332835 .OpLoopControlINTEL => struct { loop_control_parameters: []const LiteralInteger = &.{} },
2634 .OpReadPipeBlockingINTEL => struct { id_result_type: IdResultType, id_result: IdResult, packet_size: IdRef, packet_alignment: IdRef },
2635 .OpWritePipeBlockingINTEL => struct { id_result_type: IdResultType, id_result: IdResult, packet_size: IdRef, packet_alignment: IdRef },
2636 .OpFPGARegINTEL => struct { id_result_type: IdResultType, id_result: IdResult, result: IdRef, input: IdRef },
2637 .OpRayQueryGetRayTMinKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef },
2638 .OpRayQueryGetRayFlagsKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef },
2639 .OpRayQueryGetIntersectionTKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef, intersection: IdRef },
2640 .OpRayQueryGetIntersectionInstanceCustomIndexKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef, intersection: IdRef },
2641 .OpRayQueryGetIntersectionInstanceIdKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef, intersection: IdRef },
2642 .OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef, intersection: IdRef },
2643 .OpRayQueryGetIntersectionGeometryIndexKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef, intersection: IdRef },
2644 .OpRayQueryGetIntersectionPrimitiveIndexKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef, intersection: IdRef },
2645 .OpRayQueryGetIntersectionBarycentricsKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef, intersection: IdRef },
2646 .OpRayQueryGetIntersectionFrontFaceKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef, intersection: IdRef },
2647 .OpRayQueryGetIntersectionCandidateAABBOpaqueKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef },
2648 .OpRayQueryGetIntersectionObjectRayDirectionKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef, intersection: IdRef },
2649 .OpRayQueryGetIntersectionObjectRayOriginKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef, intersection: IdRef },
2650 .OpRayQueryGetWorldRayDirectionKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef },
2651 .OpRayQueryGetWorldRayOriginKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef },
2652 .OpRayQueryGetIntersectionObjectToWorldKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef, intersection: IdRef },
2653 .OpRayQueryGetIntersectionWorldToObjectKHR => struct { id_result_type: IdResultType, id_result: IdResult, rayquery: IdRef, intersection: IdRef },
2654 .OpAtomicFAddEXT => struct { id_result_type: IdResultType, id_result: IdResult, pointer: IdRef, memory: IdScope, semantics: IdMemorySemantics, value: IdRef },
2655 .OpTypeBufferSurfaceINTEL => struct { id_result: IdResult, accessqualifier: AccessQualifier },
2656 .OpTypeStructContinuedINTEL => struct { id_ref: []const IdRef = &.{} },
2657 .OpConstantCompositeContinuedINTEL => struct { constituents: []const IdRef = &.{} },
2658 .OpSpecConstantCompositeContinuedINTEL => struct { constituents: []const IdRef = &.{} },
2659 .OpCompositeConstructContinuedINTEL => struct { id_result_type: IdResultType, id_result: IdResult, constituents: []const IdRef = &.{} },
2660 .OpConvertFToBF16INTEL => struct { id_result_type: IdResultType, id_result: IdResult, float_value: IdRef },
2661 .OpConvertBF16ToFINTEL => struct { id_result_type: IdResultType, id_result: IdResult, bfloat16_value: IdRef },
2662 .OpControlBarrierArriveINTEL => struct { execution: IdScope, memory: IdScope, semantics: IdMemorySemantics },
2663 .OpControlBarrierWaitINTEL => struct { execution: IdScope, memory: IdScope, semantics: IdMemorySemantics },
2664 .OpGroupIMulKHR => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
2665 .OpGroupFMulKHR => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
2666 .OpGroupBitwiseAndKHR => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
2667 .OpGroupBitwiseOrKHR => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
2668 .OpGroupBitwiseXorKHR => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
2669 .OpGroupLogicalAndKHR => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
2670 .OpGroupLogicalOrKHR => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
2671 .OpGroupLogicalXorKHR => struct { id_result_type: IdResultType, id_result: IdResult, execution: IdScope, operation: GroupOperation, x: IdRef },
2672 .OpMaskedGatherINTEL => struct { id_result_type: IdResultType, id_result: IdResult, ptrvector: IdRef, alignment: LiteralInteger, mask: IdRef, fillempty: IdRef },
2673 .OpMaskedScatterINTEL => struct { inputvector: IdRef, ptrvector: IdRef, alignment: LiteralInteger, mask: IdRef },
2836 .OpReadPipeBlockingINTEL => struct { id_result_type: Id, id_result: Id, packet_size: Id, packet_alignment: Id },
2837 .OpWritePipeBlockingINTEL => struct { id_result_type: Id, id_result: Id, packet_size: Id, packet_alignment: Id },
2838 .OpFPGARegINTEL => struct { id_result_type: Id, id_result: Id, input: Id },
2839 .OpRayQueryGetRayTMinKHR => struct { id_result_type: Id, id_result: Id, ray_query: Id },
2840 .OpRayQueryGetRayFlagsKHR => struct { id_result_type: Id, id_result: Id, ray_query: Id },
2841 .OpRayQueryGetIntersectionTKHR => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id },
2842 .OpRayQueryGetIntersectionInstanceCustomIndexKHR => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id },
2843 .OpRayQueryGetIntersectionInstanceIdKHR => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id },
2844 .OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id },
2845 .OpRayQueryGetIntersectionGeometryIndexKHR => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id },
2846 .OpRayQueryGetIntersectionPrimitiveIndexKHR => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id },
2847 .OpRayQueryGetIntersectionBarycentricsKHR => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id },
2848 .OpRayQueryGetIntersectionFrontFaceKHR => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id },
2849 .OpRayQueryGetIntersectionCandidateAABBOpaqueKHR => struct { id_result_type: Id, id_result: Id, ray_query: Id },
2850 .OpRayQueryGetIntersectionObjectRayDirectionKHR => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id },
2851 .OpRayQueryGetIntersectionObjectRayOriginKHR => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id },
2852 .OpRayQueryGetWorldRayDirectionKHR => struct { id_result_type: Id, id_result: Id, ray_query: Id },
2853 .OpRayQueryGetWorldRayOriginKHR => struct { id_result_type: Id, id_result: Id, ray_query: Id },
2854 .OpRayQueryGetIntersectionObjectToWorldKHR => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id },
2855 .OpRayQueryGetIntersectionWorldToObjectKHR => struct { id_result_type: Id, id_result: Id, ray_query: Id, intersection: Id },
2856 .OpAtomicFAddEXT => struct { id_result_type: Id, id_result: Id, pointer: Id, memory: Id, semantics: Id, value: Id },
2857 .OpTypeBufferSurfaceINTEL => struct { id_result: Id, access_qualifier: AccessQualifier },
2858 .OpTypeStructContinuedINTEL => struct { id_ref: []const Id = &.{} },
2859 .OpConstantCompositeContinuedINTEL => struct { constituents: []const Id = &.{} },
2860 .OpSpecConstantCompositeContinuedINTEL => struct { constituents: []const Id = &.{} },
2861 .OpCompositeConstructContinuedINTEL => struct { id_result_type: Id, id_result: Id, constituents: []const Id = &.{} },
2862 .OpConvertFToBF16INTEL => struct { id_result_type: Id, id_result: Id, float_value: Id },
2863 .OpConvertBF16ToFINTEL => struct { id_result_type: Id, id_result: Id, b_float16_value: Id },
2864 .OpControlBarrierArriveINTEL => struct { execution: Id, memory: Id, semantics: Id },
2865 .OpControlBarrierWaitINTEL => struct { execution: Id, memory: Id, semantics: Id },
2866 .OpArithmeticFenceEXT => struct { id_result_type: Id, id_result: Id, target: Id },
2867 .OpTaskSequenceCreateINTEL => struct { id_result_type: Id, id_result: Id, function: Id, pipelined: LiteralInteger, use_stall_enable_clusters: LiteralInteger, get_capacity: LiteralInteger, async_capacity: LiteralInteger },
2868 .OpTaskSequenceAsyncINTEL => struct { sequence: Id, arguments: []const Id = &.{} },
2869 .OpTaskSequenceGetINTEL => struct { id_result_type: Id, id_result: Id, sequence: Id },
2870 .OpTaskSequenceReleaseINTEL => struct { sequence: Id },
2871 .OpTypeTaskSequenceINTEL => struct { id_result: Id },
2872 .OpSubgroupBlockPrefetchINTEL => struct { ptr: Id, num_bytes: Id, memory_access: ?MemoryAccess.Extended = null },
2873 .OpSubgroup2DBlockLoadINTEL => struct { element_size: Id, block_width: Id, block_height: Id, block_count: Id, src_base_pointer: Id, memory_width: Id, memory_height: Id, memory_pitch: Id, coordinate: Id, dst_pointer: Id },
2874 .OpSubgroup2DBlockLoadTransformINTEL => struct { element_size: Id, block_width: Id, block_height: Id, block_count: Id, src_base_pointer: Id, memory_width: Id, memory_height: Id, memory_pitch: Id, coordinate: Id, dst_pointer: Id },
2875 .OpSubgroup2DBlockLoadTransposeINTEL => struct { element_size: Id, block_width: Id, block_height: Id, block_count: Id, src_base_pointer: Id, memory_width: Id, memory_height: Id, memory_pitch: Id, coordinate: Id, dst_pointer: Id },
2876 .OpSubgroup2DBlockPrefetchINTEL => struct { element_size: Id, block_width: Id, block_height: Id, block_count: Id, src_base_pointer: Id, memory_width: Id, memory_height: Id, memory_pitch: Id, coordinate: Id },
2877 .OpSubgroup2DBlockStoreINTEL => struct { element_size: Id, block_width: Id, block_height: Id, block_count: Id, src_pointer: Id, dst_base_pointer: Id, memory_width: Id, memory_height: Id, memory_pitch: Id, coordinate: Id },
2878 .OpSubgroupMatrixMultiplyAccumulateINTEL => struct { id_result_type: Id, id_result: Id, k_dim: Id, matrix_a: Id, matrix_b: Id, matrix_c: Id, matrix_multiply_accumulate_operands: ?MatrixMultiplyAccumulateOperands = null },
2879 .OpBitwiseFunctionINTEL => struct { id_result_type: Id, id_result: Id, a: Id, b: Id, c: Id, lut_index: Id },
2880 .OpGroupIMulKHR => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id },
2881 .OpGroupFMulKHR => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id },
2882 .OpGroupBitwiseAndKHR => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id },
2883 .OpGroupBitwiseOrKHR => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id },
2884 .OpGroupBitwiseXorKHR => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id },
2885 .OpGroupLogicalAndKHR => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id },
2886 .OpGroupLogicalOrKHR => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id },
2887 .OpGroupLogicalXorKHR => struct { id_result_type: Id, id_result: Id, execution: Id, operation: GroupOperation, x: Id },
2888 .OpRoundFToTF32INTEL => struct { id_result_type: Id, id_result: Id, float_value: Id },
2889 .OpMaskedGatherINTEL => struct { id_result_type: Id, id_result: Id, ptr_vector: Id, alignment: LiteralInteger, mask: Id, fill_empty: Id },
2890 .OpMaskedScatterINTEL => struct { input_vector: Id, ptr_vector: Id, alignment: LiteralInteger, mask: Id },
2891 .OpConvertHandleToImageINTEL => struct { id_result_type: Id, id_result: Id, operand: Id },
2892 .OpConvertHandleToSamplerINTEL => struct { id_result_type: Id, id_result: Id, operand: Id },
2893 .OpConvertHandleToSampledImageINTEL => struct { id_result_type: Id, id_result: Id, operand: Id },
26742894 };
26752895 }
26762896 pub fn class(self: Opcode) Class {
26772897 return switch (self) {
2678 .OpNop => .Miscellaneous,
2679 .OpUndef => .Miscellaneous,
2680 .OpSourceContinued => .Debug,
2681 .OpSource => .Debug,
2682 .OpSourceExtension => .Debug,
2683 .OpName => .Debug,
2684 .OpMemberName => .Debug,
2685 .OpString => .Debug,
2686 .OpLine => .Debug,
2687 .OpExtension => .Extension,
2688 .OpExtInstImport => .Extension,
2689 .OpExtInst => .Extension,
2690 .OpMemoryModel => .ModeSetting,
2691 .OpEntryPoint => .ModeSetting,
2692 .OpExecutionMode => .ModeSetting,
2693 .OpCapability => .ModeSetting,
2694 .OpTypeVoid => .TypeDeclaration,
2695 .OpTypeBool => .TypeDeclaration,
2696 .OpTypeInt => .TypeDeclaration,
2697 .OpTypeFloat => .TypeDeclaration,
2698 .OpTypeVector => .TypeDeclaration,
2699 .OpTypeMatrix => .TypeDeclaration,
2700 .OpTypeImage => .TypeDeclaration,
2701 .OpTypeSampler => .TypeDeclaration,
2702 .OpTypeSampledImage => .TypeDeclaration,
2703 .OpTypeArray => .TypeDeclaration,
2704 .OpTypeRuntimeArray => .TypeDeclaration,
2705 .OpTypeStruct => .TypeDeclaration,
2706 .OpTypeOpaque => .TypeDeclaration,
2707 .OpTypePointer => .TypeDeclaration,
2708 .OpTypeFunction => .TypeDeclaration,
2709 .OpTypeEvent => .TypeDeclaration,
2710 .OpTypeDeviceEvent => .TypeDeclaration,
2711 .OpTypeReserveId => .TypeDeclaration,
2712 .OpTypeQueue => .TypeDeclaration,
2713 .OpTypePipe => .TypeDeclaration,
2714 .OpTypeForwardPointer => .TypeDeclaration,
2715 .OpConstantTrue => .ConstantCreation,
2716 .OpConstantFalse => .ConstantCreation,
2717 .OpConstant => .ConstantCreation,
2718 .OpConstantComposite => .ConstantCreation,
2719 .OpConstantSampler => .ConstantCreation,
2720 .OpConstantNull => .ConstantCreation,
2721 .OpSpecConstantTrue => .ConstantCreation,
2722 .OpSpecConstantFalse => .ConstantCreation,
2723 .OpSpecConstant => .ConstantCreation,
2724 .OpSpecConstantComposite => .ConstantCreation,
2725 .OpSpecConstantOp => .ConstantCreation,
2726 .OpFunction => .Function,
2727 .OpFunctionParameter => .Function,
2728 .OpFunctionEnd => .Function,
2729 .OpFunctionCall => .Function,
2730 .OpVariable => .Memory,
2731 .OpImageTexelPointer => .Memory,
2732 .OpLoad => .Memory,
2733 .OpStore => .Memory,
2734 .OpCopyMemory => .Memory,
2735 .OpCopyMemorySized => .Memory,
2736 .OpAccessChain => .Memory,
2737 .OpInBoundsAccessChain => .Memory,
2738 .OpPtrAccessChain => .Memory,
2739 .OpArrayLength => .Memory,
2740 .OpGenericPtrMemSemantics => .Memory,
2741 .OpInBoundsPtrAccessChain => .Memory,
2742 .OpDecorate => .Annotation,
2743 .OpMemberDecorate => .Annotation,
2744 .OpDecorationGroup => .Annotation,
2745 .OpGroupDecorate => .Annotation,
2746 .OpGroupMemberDecorate => .Annotation,
2747 .OpVectorExtractDynamic => .Composite,
2748 .OpVectorInsertDynamic => .Composite,
2749 .OpVectorShuffle => .Composite,
2750 .OpCompositeConstruct => .Composite,
2751 .OpCompositeExtract => .Composite,
2752 .OpCompositeInsert => .Composite,
2753 .OpCopyObject => .Composite,
2754 .OpTranspose => .Composite,
2755 .OpSampledImage => .Image,
2756 .OpImageSampleImplicitLod => .Image,
2757 .OpImageSampleExplicitLod => .Image,
2758 .OpImageSampleDrefImplicitLod => .Image,
2759 .OpImageSampleDrefExplicitLod => .Image,
2760 .OpImageSampleProjImplicitLod => .Image,
2761 .OpImageSampleProjExplicitLod => .Image,
2762 .OpImageSampleProjDrefImplicitLod => .Image,
2763 .OpImageSampleProjDrefExplicitLod => .Image,
2764 .OpImageFetch => .Image,
2765 .OpImageGather => .Image,
2766 .OpImageDrefGather => .Image,
2767 .OpImageRead => .Image,
2768 .OpImageWrite => .Image,
2769 .OpImage => .Image,
2770 .OpImageQueryFormat => .Image,
2771 .OpImageQueryOrder => .Image,
2772 .OpImageQuerySizeLod => .Image,
2773 .OpImageQuerySize => .Image,
2774 .OpImageQueryLod => .Image,
2775 .OpImageQueryLevels => .Image,
2776 .OpImageQuerySamples => .Image,
2777 .OpConvertFToU => .Conversion,
2778 .OpConvertFToS => .Conversion,
2779 .OpConvertSToF => .Conversion,
2780 .OpConvertUToF => .Conversion,
2781 .OpUConvert => .Conversion,
2782 .OpSConvert => .Conversion,
2783 .OpFConvert => .Conversion,
2784 .OpQuantizeToF16 => .Conversion,
2785 .OpConvertPtrToU => .Conversion,
2786 .OpSatConvertSToU => .Conversion,
2787 .OpSatConvertUToS => .Conversion,
2788 .OpConvertUToPtr => .Conversion,
2789 .OpPtrCastToGeneric => .Conversion,
2790 .OpGenericCastToPtr => .Conversion,
2791 .OpGenericCastToPtrExplicit => .Conversion,
2792 .OpBitcast => .Conversion,
2793 .OpSNegate => .Arithmetic,
2794 .OpFNegate => .Arithmetic,
2795 .OpIAdd => .Arithmetic,
2796 .OpFAdd => .Arithmetic,
2797 .OpISub => .Arithmetic,
2798 .OpFSub => .Arithmetic,
2799 .OpIMul => .Arithmetic,
2800 .OpFMul => .Arithmetic,
2801 .OpUDiv => .Arithmetic,
2802 .OpSDiv => .Arithmetic,
2803 .OpFDiv => .Arithmetic,
2804 .OpUMod => .Arithmetic,
2805 .OpSRem => .Arithmetic,
2806 .OpSMod => .Arithmetic,
2807 .OpFRem => .Arithmetic,
2808 .OpFMod => .Arithmetic,
2809 .OpVectorTimesScalar => .Arithmetic,
2810 .OpMatrixTimesScalar => .Arithmetic,
2811 .OpVectorTimesMatrix => .Arithmetic,
2812 .OpMatrixTimesVector => .Arithmetic,
2813 .OpMatrixTimesMatrix => .Arithmetic,
2814 .OpOuterProduct => .Arithmetic,
2815 .OpDot => .Arithmetic,
2816 .OpIAddCarry => .Arithmetic,
2817 .OpISubBorrow => .Arithmetic,
2818 .OpUMulExtended => .Arithmetic,
2819 .OpSMulExtended => .Arithmetic,
2820 .OpAny => .RelationalAndLogical,
2821 .OpAll => .RelationalAndLogical,
2822 .OpIsNan => .RelationalAndLogical,
2823 .OpIsInf => .RelationalAndLogical,
2824 .OpIsFinite => .RelationalAndLogical,
2825 .OpIsNormal => .RelationalAndLogical,
2826 .OpSignBitSet => .RelationalAndLogical,
2827 .OpLessOrGreater => .RelationalAndLogical,
2828 .OpOrdered => .RelationalAndLogical,
2829 .OpUnordered => .RelationalAndLogical,
2830 .OpLogicalEqual => .RelationalAndLogical,
2831 .OpLogicalNotEqual => .RelationalAndLogical,
2832 .OpLogicalOr => .RelationalAndLogical,
2833 .OpLogicalAnd => .RelationalAndLogical,
2834 .OpLogicalNot => .RelationalAndLogical,
2835 .OpSelect => .RelationalAndLogical,
2836 .OpIEqual => .RelationalAndLogical,
2837 .OpINotEqual => .RelationalAndLogical,
2838 .OpUGreaterThan => .RelationalAndLogical,
2839 .OpSGreaterThan => .RelationalAndLogical,
2840 .OpUGreaterThanEqual => .RelationalAndLogical,
2841 .OpSGreaterThanEqual => .RelationalAndLogical,
2842 .OpULessThan => .RelationalAndLogical,
2843 .OpSLessThan => .RelationalAndLogical,
2844 .OpULessThanEqual => .RelationalAndLogical,
2845 .OpSLessThanEqual => .RelationalAndLogical,
2846 .OpFOrdEqual => .RelationalAndLogical,
2847 .OpFUnordEqual => .RelationalAndLogical,
2848 .OpFOrdNotEqual => .RelationalAndLogical,
2849 .OpFUnordNotEqual => .RelationalAndLogical,
2850 .OpFOrdLessThan => .RelationalAndLogical,
2851 .OpFUnordLessThan => .RelationalAndLogical,
2852 .OpFOrdGreaterThan => .RelationalAndLogical,
2853 .OpFUnordGreaterThan => .RelationalAndLogical,
2854 .OpFOrdLessThanEqual => .RelationalAndLogical,
2855 .OpFUnordLessThanEqual => .RelationalAndLogical,
2856 .OpFOrdGreaterThanEqual => .RelationalAndLogical,
2857 .OpFUnordGreaterThanEqual => .RelationalAndLogical,
2858 .OpShiftRightLogical => .Bit,
2859 .OpShiftRightArithmetic => .Bit,
2860 .OpShiftLeftLogical => .Bit,
2861 .OpBitwiseOr => .Bit,
2862 .OpBitwiseXor => .Bit,
2863 .OpBitwiseAnd => .Bit,
2864 .OpNot => .Bit,
2865 .OpBitFieldInsert => .Bit,
2866 .OpBitFieldSExtract => .Bit,
2867 .OpBitFieldUExtract => .Bit,
2868 .OpBitReverse => .Bit,
2869 .OpBitCount => .Bit,
2870 .OpDPdx => .Derivative,
2871 .OpDPdy => .Derivative,
2872 .OpFwidth => .Derivative,
2873 .OpDPdxFine => .Derivative,
2874 .OpDPdyFine => .Derivative,
2875 .OpFwidthFine => .Derivative,
2876 .OpDPdxCoarse => .Derivative,
2877 .OpDPdyCoarse => .Derivative,
2878 .OpFwidthCoarse => .Derivative,
2879 .OpEmitVertex => .Primitive,
2880 .OpEndPrimitive => .Primitive,
2881 .OpEmitStreamVertex => .Primitive,
2882 .OpEndStreamPrimitive => .Primitive,
2883 .OpControlBarrier => .Barrier,
2884 .OpMemoryBarrier => .Barrier,
2885 .OpAtomicLoad => .Atomic,
2886 .OpAtomicStore => .Atomic,
2887 .OpAtomicExchange => .Atomic,
2888 .OpAtomicCompareExchange => .Atomic,
2889 .OpAtomicCompareExchangeWeak => .Atomic,
2890 .OpAtomicIIncrement => .Atomic,
2891 .OpAtomicIDecrement => .Atomic,
2892 .OpAtomicIAdd => .Atomic,
2893 .OpAtomicISub => .Atomic,
2894 .OpAtomicSMin => .Atomic,
2895 .OpAtomicUMin => .Atomic,
2896 .OpAtomicSMax => .Atomic,
2897 .OpAtomicUMax => .Atomic,
2898 .OpAtomicAnd => .Atomic,
2899 .OpAtomicOr => .Atomic,
2900 .OpAtomicXor => .Atomic,
2901 .OpPhi => .ControlFlow,
2902 .OpLoopMerge => .ControlFlow,
2903 .OpSelectionMerge => .ControlFlow,
2904 .OpLabel => .ControlFlow,
2905 .OpBranch => .ControlFlow,
2906 .OpBranchConditional => .ControlFlow,
2907 .OpSwitch => .ControlFlow,
2908 .OpKill => .ControlFlow,
2909 .OpReturn => .ControlFlow,
2910 .OpReturnValue => .ControlFlow,
2911 .OpUnreachable => .ControlFlow,
2912 .OpLifetimeStart => .ControlFlow,
2913 .OpLifetimeStop => .ControlFlow,
2914 .OpGroupAsyncCopy => .Group,
2915 .OpGroupWaitEvents => .Group,
2916 .OpGroupAll => .Group,
2917 .OpGroupAny => .Group,
2918 .OpGroupBroadcast => .Group,
2919 .OpGroupIAdd => .Group,
2920 .OpGroupFAdd => .Group,
2921 .OpGroupFMin => .Group,
2922 .OpGroupUMin => .Group,
2923 .OpGroupSMin => .Group,
2924 .OpGroupFMax => .Group,
2925 .OpGroupUMax => .Group,
2926 .OpGroupSMax => .Group,
2927 .OpReadPipe => .Pipe,
2928 .OpWritePipe => .Pipe,
2929 .OpReservedReadPipe => .Pipe,
2930 .OpReservedWritePipe => .Pipe,
2931 .OpReserveReadPipePackets => .Pipe,
2932 .OpReserveWritePipePackets => .Pipe,
2933 .OpCommitReadPipe => .Pipe,
2934 .OpCommitWritePipe => .Pipe,
2935 .OpIsValidReserveId => .Pipe,
2936 .OpGetNumPipePackets => .Pipe,
2937 .OpGetMaxPipePackets => .Pipe,
2938 .OpGroupReserveReadPipePackets => .Pipe,
2939 .OpGroupReserveWritePipePackets => .Pipe,
2940 .OpGroupCommitReadPipe => .Pipe,
2941 .OpGroupCommitWritePipe => .Pipe,
2942 .OpEnqueueMarker => .DeviceSideEnqueue,
2943 .OpEnqueueKernel => .DeviceSideEnqueue,
2944 .OpGetKernelNDrangeSubGroupCount => .DeviceSideEnqueue,
2945 .OpGetKernelNDrangeMaxSubGroupSize => .DeviceSideEnqueue,
2946 .OpGetKernelWorkGroupSize => .DeviceSideEnqueue,
2947 .OpGetKernelPreferredWorkGroupSizeMultiple => .DeviceSideEnqueue,
2948 .OpRetainEvent => .DeviceSideEnqueue,
2949 .OpReleaseEvent => .DeviceSideEnqueue,
2950 .OpCreateUserEvent => .DeviceSideEnqueue,
2951 .OpIsValidEvent => .DeviceSideEnqueue,
2952 .OpSetUserEventStatus => .DeviceSideEnqueue,
2953 .OpCaptureEventProfilingInfo => .DeviceSideEnqueue,
2954 .OpGetDefaultQueue => .DeviceSideEnqueue,
2955 .OpBuildNDRange => .DeviceSideEnqueue,
2956 .OpImageSparseSampleImplicitLod => .Image,
2957 .OpImageSparseSampleExplicitLod => .Image,
2958 .OpImageSparseSampleDrefImplicitLod => .Image,
2959 .OpImageSparseSampleDrefExplicitLod => .Image,
2960 .OpImageSparseSampleProjImplicitLod => .Image,
2961 .OpImageSparseSampleProjExplicitLod => .Image,
2962 .OpImageSparseSampleProjDrefImplicitLod => .Image,
2963 .OpImageSparseSampleProjDrefExplicitLod => .Image,
2964 .OpImageSparseFetch => .Image,
2965 .OpImageSparseGather => .Image,
2966 .OpImageSparseDrefGather => .Image,
2967 .OpImageSparseTexelsResident => .Image,
2968 .OpNoLine => .Debug,
2969 .OpAtomicFlagTestAndSet => .Atomic,
2970 .OpAtomicFlagClear => .Atomic,
2971 .OpImageSparseRead => .Image,
2972 .OpSizeOf => .Miscellaneous,
2973 .OpTypePipeStorage => .TypeDeclaration,
2974 .OpConstantPipeStorage => .Pipe,
2975 .OpCreatePipeFromPipeStorage => .Pipe,
2976 .OpGetKernelLocalSizeForSubgroupCount => .DeviceSideEnqueue,
2977 .OpGetKernelMaxNumSubgroups => .DeviceSideEnqueue,
2978 .OpTypeNamedBarrier => .TypeDeclaration,
2979 .OpNamedBarrierInitialize => .Barrier,
2980 .OpMemoryNamedBarrier => .Barrier,
2981 .OpModuleProcessed => .Debug,
2982 .OpExecutionModeId => .ModeSetting,
2983 .OpDecorateId => .Annotation,
2984 .OpGroupNonUniformElect => .NonUniform,
2985 .OpGroupNonUniformAll => .NonUniform,
2986 .OpGroupNonUniformAny => .NonUniform,
2987 .OpGroupNonUniformAllEqual => .NonUniform,
2988 .OpGroupNonUniformBroadcast => .NonUniform,
2989 .OpGroupNonUniformBroadcastFirst => .NonUniform,
2990 .OpGroupNonUniformBallot => .NonUniform,
2991 .OpGroupNonUniformInverseBallot => .NonUniform,
2992 .OpGroupNonUniformBallotBitExtract => .NonUniform,
2993 .OpGroupNonUniformBallotBitCount => .NonUniform,
2994 .OpGroupNonUniformBallotFindLSB => .NonUniform,
2995 .OpGroupNonUniformBallotFindMSB => .NonUniform,
2996 .OpGroupNonUniformShuffle => .NonUniform,
2997 .OpGroupNonUniformShuffleXor => .NonUniform,
2998 .OpGroupNonUniformShuffleUp => .NonUniform,
2999 .OpGroupNonUniformShuffleDown => .NonUniform,
3000 .OpGroupNonUniformIAdd => .NonUniform,
3001 .OpGroupNonUniformFAdd => .NonUniform,
3002 .OpGroupNonUniformIMul => .NonUniform,
3003 .OpGroupNonUniformFMul => .NonUniform,
3004 .OpGroupNonUniformSMin => .NonUniform,
3005 .OpGroupNonUniformUMin => .NonUniform,
3006 .OpGroupNonUniformFMin => .NonUniform,
3007 .OpGroupNonUniformSMax => .NonUniform,
3008 .OpGroupNonUniformUMax => .NonUniform,
3009 .OpGroupNonUniformFMax => .NonUniform,
3010 .OpGroupNonUniformBitwiseAnd => .NonUniform,
3011 .OpGroupNonUniformBitwiseOr => .NonUniform,
3012 .OpGroupNonUniformBitwiseXor => .NonUniform,
3013 .OpGroupNonUniformLogicalAnd => .NonUniform,
3014 .OpGroupNonUniformLogicalOr => .NonUniform,
3015 .OpGroupNonUniformLogicalXor => .NonUniform,
3016 .OpGroupNonUniformQuadBroadcast => .NonUniform,
3017 .OpGroupNonUniformQuadSwap => .NonUniform,
3018 .OpCopyLogical => .Composite,
3019 .OpPtrEqual => .Memory,
3020 .OpPtrNotEqual => .Memory,
3021 .OpPtrDiff => .Memory,
3022 .OpColorAttachmentReadEXT => .Image,
3023 .OpDepthAttachmentReadEXT => .Image,
3024 .OpStencilAttachmentReadEXT => .Image,
3025 .OpTerminateInvocation => .ControlFlow,
3026 .OpSubgroupBallotKHR => .Group,
3027 .OpSubgroupFirstInvocationKHR => .Group,
3028 .OpSubgroupAllKHR => .Group,
3029 .OpSubgroupAnyKHR => .Group,
3030 .OpSubgroupAllEqualKHR => .Group,
3031 .OpGroupNonUniformRotateKHR => .Group,
3032 .OpSubgroupReadInvocationKHR => .Group,
3033 .OpTraceRayKHR => .Reserved,
3034 .OpExecuteCallableKHR => .Reserved,
3035 .OpConvertUToAccelerationStructureKHR => .Reserved,
3036 .OpIgnoreIntersectionKHR => .Reserved,
3037 .OpTerminateRayKHR => .Reserved,
3038 .OpSDot => .Arithmetic,
3039 .OpUDot => .Arithmetic,
3040 .OpSUDot => .Arithmetic,
3041 .OpSDotAccSat => .Arithmetic,
3042 .OpUDotAccSat => .Arithmetic,
3043 .OpSUDotAccSat => .Arithmetic,
3044 .OpTypeCooperativeMatrixKHR => .TypeDeclaration,
3045 .OpCooperativeMatrixLoadKHR => .Memory,
3046 .OpCooperativeMatrixStoreKHR => .Memory,
3047 .OpCooperativeMatrixMulAddKHR => .Arithmetic,
3048 .OpCooperativeMatrixLengthKHR => .Miscellaneous,
3049 .OpTypeRayQueryKHR => .TypeDeclaration,
3050 .OpRayQueryInitializeKHR => .Reserved,
3051 .OpRayQueryTerminateKHR => .Reserved,
3052 .OpRayQueryGenerateIntersectionKHR => .Reserved,
3053 .OpRayQueryConfirmIntersectionKHR => .Reserved,
3054 .OpRayQueryProceedKHR => .Reserved,
3055 .OpRayQueryGetIntersectionTypeKHR => .Reserved,
3056 .OpImageSampleWeightedQCOM => .Image,
3057 .OpImageBoxFilterQCOM => .Image,
3058 .OpImageBlockMatchSSDQCOM => .Image,
3059 .OpImageBlockMatchSADQCOM => .Image,
3060 .OpImageBlockMatchWindowSSDQCOM => .Image,
3061 .OpImageBlockMatchWindowSADQCOM => .Image,
3062 .OpImageBlockMatchGatherSSDQCOM => .Image,
3063 .OpImageBlockMatchGatherSADQCOM => .Image,
3064 .OpGroupIAddNonUniformAMD => .Group,
3065 .OpGroupFAddNonUniformAMD => .Group,
3066 .OpGroupFMinNonUniformAMD => .Group,
3067 .OpGroupUMinNonUniformAMD => .Group,
3068 .OpGroupSMinNonUniformAMD => .Group,
3069 .OpGroupFMaxNonUniformAMD => .Group,
3070 .OpGroupUMaxNonUniformAMD => .Group,
3071 .OpGroupSMaxNonUniformAMD => .Group,
3072 .OpFragmentMaskFetchAMD => .Reserved,
3073 .OpFragmentFetchAMD => .Reserved,
3074 .OpReadClockKHR => .Reserved,
3075 .OpFinalizeNodePayloadsAMDX => .Reserved,
3076 .OpFinishWritingNodePayloadAMDX => .Reserved,
3077 .OpInitializeNodePayloadsAMDX => .Reserved,
3078 .OpGroupNonUniformQuadAllKHR => .NonUniform,
3079 .OpGroupNonUniformQuadAnyKHR => .NonUniform,
3080 .OpHitObjectRecordHitMotionNV => .Reserved,
3081 .OpHitObjectRecordHitWithIndexMotionNV => .Reserved,
3082 .OpHitObjectRecordMissMotionNV => .Reserved,
3083 .OpHitObjectGetWorldToObjectNV => .Reserved,
3084 .OpHitObjectGetObjectToWorldNV => .Reserved,
3085 .OpHitObjectGetObjectRayDirectionNV => .Reserved,
3086 .OpHitObjectGetObjectRayOriginNV => .Reserved,
3087 .OpHitObjectTraceRayMotionNV => .Reserved,
3088 .OpHitObjectGetShaderRecordBufferHandleNV => .Reserved,
3089 .OpHitObjectGetShaderBindingTableRecordIndexNV => .Reserved,
3090 .OpHitObjectRecordEmptyNV => .Reserved,
3091 .OpHitObjectTraceRayNV => .Reserved,
3092 .OpHitObjectRecordHitNV => .Reserved,
3093 .OpHitObjectRecordHitWithIndexNV => .Reserved,
3094 .OpHitObjectRecordMissNV => .Reserved,
3095 .OpHitObjectExecuteShaderNV => .Reserved,
3096 .OpHitObjectGetCurrentTimeNV => .Reserved,
3097 .OpHitObjectGetAttributesNV => .Reserved,
3098 .OpHitObjectGetHitKindNV => .Reserved,
3099 .OpHitObjectGetPrimitiveIndexNV => .Reserved,
3100 .OpHitObjectGetGeometryIndexNV => .Reserved,
3101 .OpHitObjectGetInstanceIdNV => .Reserved,
3102 .OpHitObjectGetInstanceCustomIndexNV => .Reserved,
3103 .OpHitObjectGetWorldRayDirectionNV => .Reserved,
3104 .OpHitObjectGetWorldRayOriginNV => .Reserved,
3105 .OpHitObjectGetRayTMaxNV => .Reserved,
3106 .OpHitObjectGetRayTMinNV => .Reserved,
3107 .OpHitObjectIsEmptyNV => .Reserved,
3108 .OpHitObjectIsHitNV => .Reserved,
3109 .OpHitObjectIsMissNV => .Reserved,
3110 .OpReorderThreadWithHitObjectNV => .Reserved,
3111 .OpReorderThreadWithHintNV => .Reserved,
3112 .OpTypeHitObjectNV => .TypeDeclaration,
3113 .OpImageSampleFootprintNV => .Image,
3114 .OpEmitMeshTasksEXT => .Reserved,
3115 .OpSetMeshOutputsEXT => .Reserved,
3116 .OpGroupNonUniformPartitionNV => .NonUniform,
3117 .OpWritePackedPrimitiveIndices4x8NV => .Reserved,
3118 .OpFetchMicroTriangleVertexPositionNV => .Reserved,
3119 .OpFetchMicroTriangleVertexBarycentricNV => .Reserved,
3120 .OpReportIntersectionKHR => .Reserved,
3121 .OpIgnoreIntersectionNV => .Reserved,
3122 .OpTerminateRayNV => .Reserved,
3123 .OpTraceNV => .Reserved,
3124 .OpTraceMotionNV => .Reserved,
3125 .OpTraceRayMotionNV => .Reserved,
3126 .OpRayQueryGetIntersectionTriangleVertexPositionsKHR => .Reserved,
3127 .OpTypeAccelerationStructureKHR => .TypeDeclaration,
3128 .OpExecuteCallableNV => .Reserved,
3129 .OpTypeCooperativeMatrixNV => .TypeDeclaration,
3130 .OpCooperativeMatrixLoadNV => .Reserved,
3131 .OpCooperativeMatrixStoreNV => .Reserved,
3132 .OpCooperativeMatrixMulAddNV => .Reserved,
3133 .OpCooperativeMatrixLengthNV => .Reserved,
3134 .OpBeginInvocationInterlockEXT => .Reserved,
3135 .OpEndInvocationInterlockEXT => .Reserved,
3136 .OpDemoteToHelperInvocation => .ControlFlow,
3137 .OpIsHelperInvocationEXT => .Reserved,
3138 .OpConvertUToImageNV => .Reserved,
3139 .OpConvertUToSamplerNV => .Reserved,
3140 .OpConvertImageToUNV => .Reserved,
3141 .OpConvertSamplerToUNV => .Reserved,
3142 .OpConvertUToSampledImageNV => .Reserved,
3143 .OpConvertSampledImageToUNV => .Reserved,
3144 .OpSamplerImageAddressingModeNV => .Reserved,
3145 .OpRawAccessChainNV => .Memory,
3146 .OpSubgroupShuffleINTEL => .Group,
3147 .OpSubgroupShuffleDownINTEL => .Group,
3148 .OpSubgroupShuffleUpINTEL => .Group,
3149 .OpSubgroupShuffleXorINTEL => .Group,
3150 .OpSubgroupBlockReadINTEL => .Group,
3151 .OpSubgroupBlockWriteINTEL => .Group,
3152 .OpSubgroupImageBlockReadINTEL => .Group,
3153 .OpSubgroupImageBlockWriteINTEL => .Group,
3154 .OpSubgroupImageMediaBlockReadINTEL => .Group,
3155 .OpSubgroupImageMediaBlockWriteINTEL => .Group,
3156 .OpUCountLeadingZerosINTEL => .Reserved,
3157 .OpUCountTrailingZerosINTEL => .Reserved,
3158 .OpAbsISubINTEL => .Reserved,
3159 .OpAbsUSubINTEL => .Reserved,
3160 .OpIAddSatINTEL => .Reserved,
3161 .OpUAddSatINTEL => .Reserved,
3162 .OpIAverageINTEL => .Reserved,
3163 .OpUAverageINTEL => .Reserved,
3164 .OpIAverageRoundedINTEL => .Reserved,
3165 .OpUAverageRoundedINTEL => .Reserved,
3166 .OpISubSatINTEL => .Reserved,
3167 .OpUSubSatINTEL => .Reserved,
3168 .OpIMul32x16INTEL => .Reserved,
3169 .OpUMul32x16INTEL => .Reserved,
3170 .OpAtomicFMinEXT => .Atomic,
3171 .OpAtomicFMaxEXT => .Atomic,
3172 .OpAssumeTrueKHR => .Miscellaneous,
3173 .OpExpectKHR => .Miscellaneous,
3174 .OpDecorateString => .Annotation,
3175 .OpMemberDecorateString => .Annotation,
3176 .OpLoopControlINTEL => .Reserved,
3177 .OpReadPipeBlockingINTEL => .Pipe,
3178 .OpWritePipeBlockingINTEL => .Pipe,
3179 .OpFPGARegINTEL => .Reserved,
3180 .OpRayQueryGetRayTMinKHR => .Reserved,
3181 .OpRayQueryGetRayFlagsKHR => .Reserved,
3182 .OpRayQueryGetIntersectionTKHR => .Reserved,
3183 .OpRayQueryGetIntersectionInstanceCustomIndexKHR => .Reserved,
3184 .OpRayQueryGetIntersectionInstanceIdKHR => .Reserved,
3185 .OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR => .Reserved,
3186 .OpRayQueryGetIntersectionGeometryIndexKHR => .Reserved,
3187 .OpRayQueryGetIntersectionPrimitiveIndexKHR => .Reserved,
3188 .OpRayQueryGetIntersectionBarycentricsKHR => .Reserved,
3189 .OpRayQueryGetIntersectionFrontFaceKHR => .Reserved,
3190 .OpRayQueryGetIntersectionCandidateAABBOpaqueKHR => .Reserved,
3191 .OpRayQueryGetIntersectionObjectRayDirectionKHR => .Reserved,
3192 .OpRayQueryGetIntersectionObjectRayOriginKHR => .Reserved,
3193 .OpRayQueryGetWorldRayDirectionKHR => .Reserved,
3194 .OpRayQueryGetWorldRayOriginKHR => .Reserved,
3195 .OpRayQueryGetIntersectionObjectToWorldKHR => .Reserved,
3196 .OpRayQueryGetIntersectionWorldToObjectKHR => .Reserved,
3197 .OpAtomicFAddEXT => .Atomic,
3198 .OpTypeBufferSurfaceINTEL => .TypeDeclaration,
3199 .OpTypeStructContinuedINTEL => .TypeDeclaration,
3200 .OpConstantCompositeContinuedINTEL => .ConstantCreation,
3201 .OpSpecConstantCompositeContinuedINTEL => .ConstantCreation,
3202 .OpCompositeConstructContinuedINTEL => .Composite,
3203 .OpConvertFToBF16INTEL => .Conversion,
3204 .OpConvertBF16ToFINTEL => .Conversion,
3205 .OpControlBarrierArriveINTEL => .Barrier,
3206 .OpControlBarrierWaitINTEL => .Barrier,
3207 .OpGroupIMulKHR => .Group,
3208 .OpGroupFMulKHR => .Group,
3209 .OpGroupBitwiseAndKHR => .Group,
3210 .OpGroupBitwiseOrKHR => .Group,
3211 .OpGroupBitwiseXorKHR => .Group,
3212 .OpGroupLogicalAndKHR => .Group,
3213 .OpGroupLogicalOrKHR => .Group,
3214 .OpGroupLogicalXorKHR => .Group,
3215 .OpMaskedGatherINTEL => .Memory,
3216 .OpMaskedScatterINTEL => .Memory,
2898 .OpNop => .miscellaneous,
2899 .OpUndef => .miscellaneous,
2900 .OpSourceContinued => .debug,
2901 .OpSource => .debug,
2902 .OpSourceExtension => .debug,
2903 .OpName => .debug,
2904 .OpMemberName => .debug,
2905 .OpString => .debug,
2906 .OpLine => .debug,
2907 .OpExtension => .extension,
2908 .OpExtInstImport => .extension,
2909 .OpExtInst => .extension,
2910 .OpMemoryModel => .mode_setting,
2911 .OpEntryPoint => .mode_setting,
2912 .OpExecutionMode => .mode_setting,
2913 .OpCapability => .mode_setting,
2914 .OpTypeVoid => .type_declaration,
2915 .OpTypeBool => .type_declaration,
2916 .OpTypeInt => .type_declaration,
2917 .OpTypeFloat => .type_declaration,
2918 .OpTypeVector => .type_declaration,
2919 .OpTypeMatrix => .type_declaration,
2920 .OpTypeImage => .type_declaration,
2921 .OpTypeSampler => .type_declaration,
2922 .OpTypeSampledImage => .type_declaration,
2923 .OpTypeArray => .type_declaration,
2924 .OpTypeRuntimeArray => .type_declaration,
2925 .OpTypeStruct => .type_declaration,
2926 .OpTypeOpaque => .type_declaration,
2927 .OpTypePointer => .type_declaration,
2928 .OpTypeFunction => .type_declaration,
2929 .OpTypeEvent => .type_declaration,
2930 .OpTypeDeviceEvent => .type_declaration,
2931 .OpTypeReserveId => .type_declaration,
2932 .OpTypeQueue => .type_declaration,
2933 .OpTypePipe => .type_declaration,
2934 .OpTypeForwardPointer => .type_declaration,
2935 .OpConstantTrue => .constant_creation,
2936 .OpConstantFalse => .constant_creation,
2937 .OpConstant => .constant_creation,
2938 .OpConstantComposite => .constant_creation,
2939 .OpConstantSampler => .constant_creation,
2940 .OpConstantNull => .constant_creation,
2941 .OpSpecConstantTrue => .constant_creation,
2942 .OpSpecConstantFalse => .constant_creation,
2943 .OpSpecConstant => .constant_creation,
2944 .OpSpecConstantComposite => .constant_creation,
2945 .OpSpecConstantOp => .constant_creation,
2946 .OpFunction => .function,
2947 .OpFunctionParameter => .function,
2948 .OpFunctionEnd => .function,
2949 .OpFunctionCall => .function,
2950 .OpVariable => .memory,
2951 .OpImageTexelPointer => .memory,
2952 .OpLoad => .memory,
2953 .OpStore => .memory,
2954 .OpCopyMemory => .memory,
2955 .OpCopyMemorySized => .memory,
2956 .OpAccessChain => .memory,
2957 .OpInBoundsAccessChain => .memory,
2958 .OpPtrAccessChain => .memory,
2959 .OpArrayLength => .memory,
2960 .OpGenericPtrMemSemantics => .memory,
2961 .OpInBoundsPtrAccessChain => .memory,
2962 .OpDecorate => .annotation,
2963 .OpMemberDecorate => .annotation,
2964 .OpDecorationGroup => .annotation,
2965 .OpGroupDecorate => .annotation,
2966 .OpGroupMemberDecorate => .annotation,
2967 .OpVectorExtractDynamic => .composite,
2968 .OpVectorInsertDynamic => .composite,
2969 .OpVectorShuffle => .composite,
2970 .OpCompositeConstruct => .composite,
2971 .OpCompositeExtract => .composite,
2972 .OpCompositeInsert => .composite,
2973 .OpCopyObject => .composite,
2974 .OpTranspose => .composite,
2975 .OpSampledImage => .image,
2976 .OpImageSampleImplicitLod => .image,
2977 .OpImageSampleExplicitLod => .image,
2978 .OpImageSampleDrefImplicitLod => .image,
2979 .OpImageSampleDrefExplicitLod => .image,
2980 .OpImageSampleProjImplicitLod => .image,
2981 .OpImageSampleProjExplicitLod => .image,
2982 .OpImageSampleProjDrefImplicitLod => .image,
2983 .OpImageSampleProjDrefExplicitLod => .image,
2984 .OpImageFetch => .image,
2985 .OpImageGather => .image,
2986 .OpImageDrefGather => .image,
2987 .OpImageRead => .image,
2988 .OpImageWrite => .image,
2989 .OpImage => .image,
2990 .OpImageQueryFormat => .image,
2991 .OpImageQueryOrder => .image,
2992 .OpImageQuerySizeLod => .image,
2993 .OpImageQuerySize => .image,
2994 .OpImageQueryLod => .image,
2995 .OpImageQueryLevels => .image,
2996 .OpImageQuerySamples => .image,
2997 .OpConvertFToU => .conversion,
2998 .OpConvertFToS => .conversion,
2999 .OpConvertSToF => .conversion,
3000 .OpConvertUToF => .conversion,
3001 .OpUConvert => .conversion,
3002 .OpSConvert => .conversion,
3003 .OpFConvert => .conversion,
3004 .OpQuantizeToF16 => .conversion,
3005 .OpConvertPtrToU => .conversion,
3006 .OpSatConvertSToU => .conversion,
3007 .OpSatConvertUToS => .conversion,
3008 .OpConvertUToPtr => .conversion,
3009 .OpPtrCastToGeneric => .conversion,
3010 .OpGenericCastToPtr => .conversion,
3011 .OpGenericCastToPtrExplicit => .conversion,
3012 .OpBitcast => .conversion,
3013 .OpSNegate => .arithmetic,
3014 .OpFNegate => .arithmetic,
3015 .OpIAdd => .arithmetic,
3016 .OpFAdd => .arithmetic,
3017 .OpISub => .arithmetic,
3018 .OpFSub => .arithmetic,
3019 .OpIMul => .arithmetic,
3020 .OpFMul => .arithmetic,
3021 .OpUDiv => .arithmetic,
3022 .OpSDiv => .arithmetic,
3023 .OpFDiv => .arithmetic,
3024 .OpUMod => .arithmetic,
3025 .OpSRem => .arithmetic,
3026 .OpSMod => .arithmetic,
3027 .OpFRem => .arithmetic,
3028 .OpFMod => .arithmetic,
3029 .OpVectorTimesScalar => .arithmetic,
3030 .OpMatrixTimesScalar => .arithmetic,
3031 .OpVectorTimesMatrix => .arithmetic,
3032 .OpMatrixTimesVector => .arithmetic,
3033 .OpMatrixTimesMatrix => .arithmetic,
3034 .OpOuterProduct => .arithmetic,
3035 .OpDot => .arithmetic,
3036 .OpIAddCarry => .arithmetic,
3037 .OpISubBorrow => .arithmetic,
3038 .OpUMulExtended => .arithmetic,
3039 .OpSMulExtended => .arithmetic,
3040 .OpAny => .relational_and_logical,
3041 .OpAll => .relational_and_logical,
3042 .OpIsNan => .relational_and_logical,
3043 .OpIsInf => .relational_and_logical,
3044 .OpIsFinite => .relational_and_logical,
3045 .OpIsNormal => .relational_and_logical,
3046 .OpSignBitSet => .relational_and_logical,
3047 .OpLessOrGreater => .relational_and_logical,
3048 .OpOrdered => .relational_and_logical,
3049 .OpUnordered => .relational_and_logical,
3050 .OpLogicalEqual => .relational_and_logical,
3051 .OpLogicalNotEqual => .relational_and_logical,
3052 .OpLogicalOr => .relational_and_logical,
3053 .OpLogicalAnd => .relational_and_logical,
3054 .OpLogicalNot => .relational_and_logical,
3055 .OpSelect => .relational_and_logical,
3056 .OpIEqual => .relational_and_logical,
3057 .OpINotEqual => .relational_and_logical,
3058 .OpUGreaterThan => .relational_and_logical,
3059 .OpSGreaterThan => .relational_and_logical,
3060 .OpUGreaterThanEqual => .relational_and_logical,
3061 .OpSGreaterThanEqual => .relational_and_logical,
3062 .OpULessThan => .relational_and_logical,
3063 .OpSLessThan => .relational_and_logical,
3064 .OpULessThanEqual => .relational_and_logical,
3065 .OpSLessThanEqual => .relational_and_logical,
3066 .OpFOrdEqual => .relational_and_logical,
3067 .OpFUnordEqual => .relational_and_logical,
3068 .OpFOrdNotEqual => .relational_and_logical,
3069 .OpFUnordNotEqual => .relational_and_logical,
3070 .OpFOrdLessThan => .relational_and_logical,
3071 .OpFUnordLessThan => .relational_and_logical,
3072 .OpFOrdGreaterThan => .relational_and_logical,
3073 .OpFUnordGreaterThan => .relational_and_logical,
3074 .OpFOrdLessThanEqual => .relational_and_logical,
3075 .OpFUnordLessThanEqual => .relational_and_logical,
3076 .OpFOrdGreaterThanEqual => .relational_and_logical,
3077 .OpFUnordGreaterThanEqual => .relational_and_logical,
3078 .OpShiftRightLogical => .bit,
3079 .OpShiftRightArithmetic => .bit,
3080 .OpShiftLeftLogical => .bit,
3081 .OpBitwiseOr => .bit,
3082 .OpBitwiseXor => .bit,
3083 .OpBitwiseAnd => .bit,
3084 .OpNot => .bit,
3085 .OpBitFieldInsert => .bit,
3086 .OpBitFieldSExtract => .bit,
3087 .OpBitFieldUExtract => .bit,
3088 .OpBitReverse => .bit,
3089 .OpBitCount => .bit,
3090 .OpDPdx => .derivative,
3091 .OpDPdy => .derivative,
3092 .OpFwidth => .derivative,
3093 .OpDPdxFine => .derivative,
3094 .OpDPdyFine => .derivative,
3095 .OpFwidthFine => .derivative,
3096 .OpDPdxCoarse => .derivative,
3097 .OpDPdyCoarse => .derivative,
3098 .OpFwidthCoarse => .derivative,
3099 .OpEmitVertex => .primitive,
3100 .OpEndPrimitive => .primitive,
3101 .OpEmitStreamVertex => .primitive,
3102 .OpEndStreamPrimitive => .primitive,
3103 .OpControlBarrier => .barrier,
3104 .OpMemoryBarrier => .barrier,
3105 .OpAtomicLoad => .atomic,
3106 .OpAtomicStore => .atomic,
3107 .OpAtomicExchange => .atomic,
3108 .OpAtomicCompareExchange => .atomic,
3109 .OpAtomicCompareExchangeWeak => .atomic,
3110 .OpAtomicIIncrement => .atomic,
3111 .OpAtomicIDecrement => .atomic,
3112 .OpAtomicIAdd => .atomic,
3113 .OpAtomicISub => .atomic,
3114 .OpAtomicSMin => .atomic,
3115 .OpAtomicUMin => .atomic,
3116 .OpAtomicSMax => .atomic,
3117 .OpAtomicUMax => .atomic,
3118 .OpAtomicAnd => .atomic,
3119 .OpAtomicOr => .atomic,
3120 .OpAtomicXor => .atomic,
3121 .OpPhi => .control_flow,
3122 .OpLoopMerge => .control_flow,
3123 .OpSelectionMerge => .control_flow,
3124 .OpLabel => .control_flow,
3125 .OpBranch => .control_flow,
3126 .OpBranchConditional => .control_flow,
3127 .OpSwitch => .control_flow,
3128 .OpKill => .control_flow,
3129 .OpReturn => .control_flow,
3130 .OpReturnValue => .control_flow,
3131 .OpUnreachable => .control_flow,
3132 .OpLifetimeStart => .control_flow,
3133 .OpLifetimeStop => .control_flow,
3134 .OpGroupAsyncCopy => .group,
3135 .OpGroupWaitEvents => .group,
3136 .OpGroupAll => .group,
3137 .OpGroupAny => .group,
3138 .OpGroupBroadcast => .group,
3139 .OpGroupIAdd => .group,
3140 .OpGroupFAdd => .group,
3141 .OpGroupFMin => .group,
3142 .OpGroupUMin => .group,
3143 .OpGroupSMin => .group,
3144 .OpGroupFMax => .group,
3145 .OpGroupUMax => .group,
3146 .OpGroupSMax => .group,
3147 .OpReadPipe => .pipe,
3148 .OpWritePipe => .pipe,
3149 .OpReservedReadPipe => .pipe,
3150 .OpReservedWritePipe => .pipe,
3151 .OpReserveReadPipePackets => .pipe,
3152 .OpReserveWritePipePackets => .pipe,
3153 .OpCommitReadPipe => .pipe,
3154 .OpCommitWritePipe => .pipe,
3155 .OpIsValidReserveId => .pipe,
3156 .OpGetNumPipePackets => .pipe,
3157 .OpGetMaxPipePackets => .pipe,
3158 .OpGroupReserveReadPipePackets => .pipe,
3159 .OpGroupReserveWritePipePackets => .pipe,
3160 .OpGroupCommitReadPipe => .pipe,
3161 .OpGroupCommitWritePipe => .pipe,
3162 .OpEnqueueMarker => .device_side_enqueue,
3163 .OpEnqueueKernel => .device_side_enqueue,
3164 .OpGetKernelNDrangeSubGroupCount => .device_side_enqueue,
3165 .OpGetKernelNDrangeMaxSubGroupSize => .device_side_enqueue,
3166 .OpGetKernelWorkGroupSize => .device_side_enqueue,
3167 .OpGetKernelPreferredWorkGroupSizeMultiple => .device_side_enqueue,
3168 .OpRetainEvent => .device_side_enqueue,
3169 .OpReleaseEvent => .device_side_enqueue,
3170 .OpCreateUserEvent => .device_side_enqueue,
3171 .OpIsValidEvent => .device_side_enqueue,
3172 .OpSetUserEventStatus => .device_side_enqueue,
3173 .OpCaptureEventProfilingInfo => .device_side_enqueue,
3174 .OpGetDefaultQueue => .device_side_enqueue,
3175 .OpBuildNDRange => .device_side_enqueue,
3176 .OpImageSparseSampleImplicitLod => .image,
3177 .OpImageSparseSampleExplicitLod => .image,
3178 .OpImageSparseSampleDrefImplicitLod => .image,
3179 .OpImageSparseSampleDrefExplicitLod => .image,
3180 .OpImageSparseSampleProjImplicitLod => .image,
3181 .OpImageSparseSampleProjExplicitLod => .image,
3182 .OpImageSparseSampleProjDrefImplicitLod => .image,
3183 .OpImageSparseSampleProjDrefExplicitLod => .image,
3184 .OpImageSparseFetch => .image,
3185 .OpImageSparseGather => .image,
3186 .OpImageSparseDrefGather => .image,
3187 .OpImageSparseTexelsResident => .image,
3188 .OpNoLine => .debug,
3189 .OpAtomicFlagTestAndSet => .atomic,
3190 .OpAtomicFlagClear => .atomic,
3191 .OpImageSparseRead => .image,
3192 .OpSizeOf => .miscellaneous,
3193 .OpTypePipeStorage => .type_declaration,
3194 .OpConstantPipeStorage => .pipe,
3195 .OpCreatePipeFromPipeStorage => .pipe,
3196 .OpGetKernelLocalSizeForSubgroupCount => .device_side_enqueue,
3197 .OpGetKernelMaxNumSubgroups => .device_side_enqueue,
3198 .OpTypeNamedBarrier => .type_declaration,
3199 .OpNamedBarrierInitialize => .barrier,
3200 .OpMemoryNamedBarrier => .barrier,
3201 .OpModuleProcessed => .debug,
3202 .OpExecutionModeId => .mode_setting,
3203 .OpDecorateId => .annotation,
3204 .OpGroupNonUniformElect => .non_uniform,
3205 .OpGroupNonUniformAll => .non_uniform,
3206 .OpGroupNonUniformAny => .non_uniform,
3207 .OpGroupNonUniformAllEqual => .non_uniform,
3208 .OpGroupNonUniformBroadcast => .non_uniform,
3209 .OpGroupNonUniformBroadcastFirst => .non_uniform,
3210 .OpGroupNonUniformBallot => .non_uniform,
3211 .OpGroupNonUniformInverseBallot => .non_uniform,
3212 .OpGroupNonUniformBallotBitExtract => .non_uniform,
3213 .OpGroupNonUniformBallotBitCount => .non_uniform,
3214 .OpGroupNonUniformBallotFindLSB => .non_uniform,
3215 .OpGroupNonUniformBallotFindMSB => .non_uniform,
3216 .OpGroupNonUniformShuffle => .non_uniform,
3217 .OpGroupNonUniformShuffleXor => .non_uniform,
3218 .OpGroupNonUniformShuffleUp => .non_uniform,
3219 .OpGroupNonUniformShuffleDown => .non_uniform,
3220 .OpGroupNonUniformIAdd => .non_uniform,
3221 .OpGroupNonUniformFAdd => .non_uniform,
3222 .OpGroupNonUniformIMul => .non_uniform,
3223 .OpGroupNonUniformFMul => .non_uniform,
3224 .OpGroupNonUniformSMin => .non_uniform,
3225 .OpGroupNonUniformUMin => .non_uniform,
3226 .OpGroupNonUniformFMin => .non_uniform,
3227 .OpGroupNonUniformSMax => .non_uniform,
3228 .OpGroupNonUniformUMax => .non_uniform,
3229 .OpGroupNonUniformFMax => .non_uniform,
3230 .OpGroupNonUniformBitwiseAnd => .non_uniform,
3231 .OpGroupNonUniformBitwiseOr => .non_uniform,
3232 .OpGroupNonUniformBitwiseXor => .non_uniform,
3233 .OpGroupNonUniformLogicalAnd => .non_uniform,
3234 .OpGroupNonUniformLogicalOr => .non_uniform,
3235 .OpGroupNonUniformLogicalXor => .non_uniform,
3236 .OpGroupNonUniformQuadBroadcast => .non_uniform,
3237 .OpGroupNonUniformQuadSwap => .non_uniform,
3238 .OpCopyLogical => .composite,
3239 .OpPtrEqual => .memory,
3240 .OpPtrNotEqual => .memory,
3241 .OpPtrDiff => .memory,
3242 .OpColorAttachmentReadEXT => .image,
3243 .OpDepthAttachmentReadEXT => .image,
3244 .OpStencilAttachmentReadEXT => .image,
3245 .OpTypeTensorARM => .type_declaration,
3246 .OpTensorReadARM => .tensor,
3247 .OpTensorWriteARM => .tensor,
3248 .OpTensorQuerySizeARM => .tensor,
3249 .OpGraphConstantARM => .graph,
3250 .OpGraphEntryPointARM => .graph,
3251 .OpGraphARM => .graph,
3252 .OpGraphInputARM => .graph,
3253 .OpGraphSetOutputARM => .graph,
3254 .OpGraphEndARM => .graph,
3255 .OpTypeGraphARM => .type_declaration,
3256 .OpTerminateInvocation => .control_flow,
3257 .OpTypeUntypedPointerKHR => .type_declaration,
3258 .OpUntypedVariableKHR => .memory,
3259 .OpUntypedAccessChainKHR => .memory,
3260 .OpUntypedInBoundsAccessChainKHR => .memory,
3261 .OpSubgroupBallotKHR => .group,
3262 .OpSubgroupFirstInvocationKHR => .group,
3263 .OpUntypedPtrAccessChainKHR => .memory,
3264 .OpUntypedInBoundsPtrAccessChainKHR => .memory,
3265 .OpUntypedArrayLengthKHR => .memory,
3266 .OpUntypedPrefetchKHR => .memory,
3267 .OpSubgroupAllKHR => .group,
3268 .OpSubgroupAnyKHR => .group,
3269 .OpSubgroupAllEqualKHR => .group,
3270 .OpGroupNonUniformRotateKHR => .group,
3271 .OpSubgroupReadInvocationKHR => .group,
3272 .OpExtInstWithForwardRefsKHR => .extension,
3273 .OpTraceRayKHR => .reserved,
3274 .OpExecuteCallableKHR => .reserved,
3275 .OpConvertUToAccelerationStructureKHR => .reserved,
3276 .OpIgnoreIntersectionKHR => .reserved,
3277 .OpTerminateRayKHR => .reserved,
3278 .OpSDot => .arithmetic,
3279 .OpUDot => .arithmetic,
3280 .OpSUDot => .arithmetic,
3281 .OpSDotAccSat => .arithmetic,
3282 .OpUDotAccSat => .arithmetic,
3283 .OpSUDotAccSat => .arithmetic,
3284 .OpTypeCooperativeMatrixKHR => .type_declaration,
3285 .OpCooperativeMatrixLoadKHR => .memory,
3286 .OpCooperativeMatrixStoreKHR => .memory,
3287 .OpCooperativeMatrixMulAddKHR => .arithmetic,
3288 .OpCooperativeMatrixLengthKHR => .miscellaneous,
3289 .OpConstantCompositeReplicateEXT => .constant_creation,
3290 .OpSpecConstantCompositeReplicateEXT => .constant_creation,
3291 .OpCompositeConstructReplicateEXT => .composite,
3292 .OpTypeRayQueryKHR => .type_declaration,
3293 .OpRayQueryInitializeKHR => .reserved,
3294 .OpRayQueryTerminateKHR => .reserved,
3295 .OpRayQueryGenerateIntersectionKHR => .reserved,
3296 .OpRayQueryConfirmIntersectionKHR => .reserved,
3297 .OpRayQueryProceedKHR => .reserved,
3298 .OpRayQueryGetIntersectionTypeKHR => .reserved,
3299 .OpImageSampleWeightedQCOM => .image,
3300 .OpImageBoxFilterQCOM => .image,
3301 .OpImageBlockMatchSSDQCOM => .image,
3302 .OpImageBlockMatchSADQCOM => .image,
3303 .OpImageBlockMatchWindowSSDQCOM => .image,
3304 .OpImageBlockMatchWindowSADQCOM => .image,
3305 .OpImageBlockMatchGatherSSDQCOM => .image,
3306 .OpImageBlockMatchGatherSADQCOM => .image,
3307 .OpGroupIAddNonUniformAMD => .group,
3308 .OpGroupFAddNonUniformAMD => .group,
3309 .OpGroupFMinNonUniformAMD => .group,
3310 .OpGroupUMinNonUniformAMD => .group,
3311 .OpGroupSMinNonUniformAMD => .group,
3312 .OpGroupFMaxNonUniformAMD => .group,
3313 .OpGroupUMaxNonUniformAMD => .group,
3314 .OpGroupSMaxNonUniformAMD => .group,
3315 .OpFragmentMaskFetchAMD => .reserved,
3316 .OpFragmentFetchAMD => .reserved,
3317 .OpReadClockKHR => .reserved,
3318 .OpAllocateNodePayloadsAMDX => .reserved,
3319 .OpEnqueueNodePayloadsAMDX => .reserved,
3320 .OpTypeNodePayloadArrayAMDX => .reserved,
3321 .OpFinishWritingNodePayloadAMDX => .reserved,
3322 .OpNodePayloadArrayLengthAMDX => .reserved,
3323 .OpIsNodePayloadValidAMDX => .reserved,
3324 .OpConstantStringAMDX => .reserved,
3325 .OpSpecConstantStringAMDX => .reserved,
3326 .OpGroupNonUniformQuadAllKHR => .non_uniform,
3327 .OpGroupNonUniformQuadAnyKHR => .non_uniform,
3328 .OpHitObjectRecordHitMotionNV => .reserved,
3329 .OpHitObjectRecordHitWithIndexMotionNV => .reserved,
3330 .OpHitObjectRecordMissMotionNV => .reserved,
3331 .OpHitObjectGetWorldToObjectNV => .reserved,
3332 .OpHitObjectGetObjectToWorldNV => .reserved,
3333 .OpHitObjectGetObjectRayDirectionNV => .reserved,
3334 .OpHitObjectGetObjectRayOriginNV => .reserved,
3335 .OpHitObjectTraceRayMotionNV => .reserved,
3336 .OpHitObjectGetShaderRecordBufferHandleNV => .reserved,
3337 .OpHitObjectGetShaderBindingTableRecordIndexNV => .reserved,
3338 .OpHitObjectRecordEmptyNV => .reserved,
3339 .OpHitObjectTraceRayNV => .reserved,
3340 .OpHitObjectRecordHitNV => .reserved,
3341 .OpHitObjectRecordHitWithIndexNV => .reserved,
3342 .OpHitObjectRecordMissNV => .reserved,
3343 .OpHitObjectExecuteShaderNV => .reserved,
3344 .OpHitObjectGetCurrentTimeNV => .reserved,
3345 .OpHitObjectGetAttributesNV => .reserved,
3346 .OpHitObjectGetHitKindNV => .reserved,
3347 .OpHitObjectGetPrimitiveIndexNV => .reserved,
3348 .OpHitObjectGetGeometryIndexNV => .reserved,
3349 .OpHitObjectGetInstanceIdNV => .reserved,
3350 .OpHitObjectGetInstanceCustomIndexNV => .reserved,
3351 .OpHitObjectGetWorldRayDirectionNV => .reserved,
3352 .OpHitObjectGetWorldRayOriginNV => .reserved,
3353 .OpHitObjectGetRayTMaxNV => .reserved,
3354 .OpHitObjectGetRayTMinNV => .reserved,
3355 .OpHitObjectIsEmptyNV => .reserved,
3356 .OpHitObjectIsHitNV => .reserved,
3357 .OpHitObjectIsMissNV => .reserved,
3358 .OpReorderThreadWithHitObjectNV => .reserved,
3359 .OpReorderThreadWithHintNV => .reserved,
3360 .OpTypeHitObjectNV => .type_declaration,
3361 .OpImageSampleFootprintNV => .image,
3362 .OpTypeCooperativeVectorNV => .type_declaration,
3363 .OpCooperativeVectorMatrixMulNV => .reserved,
3364 .OpCooperativeVectorOuterProductAccumulateNV => .reserved,
3365 .OpCooperativeVectorReduceSumAccumulateNV => .reserved,
3366 .OpCooperativeVectorMatrixMulAddNV => .reserved,
3367 .OpCooperativeMatrixConvertNV => .conversion,
3368 .OpEmitMeshTasksEXT => .reserved,
3369 .OpSetMeshOutputsEXT => .reserved,
3370 .OpGroupNonUniformPartitionNV => .non_uniform,
3371 .OpWritePackedPrimitiveIndices4x8NV => .reserved,
3372 .OpFetchMicroTriangleVertexPositionNV => .reserved,
3373 .OpFetchMicroTriangleVertexBarycentricNV => .reserved,
3374 .OpCooperativeVectorLoadNV => .memory,
3375 .OpCooperativeVectorStoreNV => .memory,
3376 .OpReportIntersectionKHR => .reserved,
3377 .OpIgnoreIntersectionNV => .reserved,
3378 .OpTerminateRayNV => .reserved,
3379 .OpTraceNV => .reserved,
3380 .OpTraceMotionNV => .reserved,
3381 .OpTraceRayMotionNV => .reserved,
3382 .OpRayQueryGetIntersectionTriangleVertexPositionsKHR => .reserved,
3383 .OpTypeAccelerationStructureKHR => .type_declaration,
3384 .OpExecuteCallableNV => .reserved,
3385 .OpRayQueryGetClusterIdNV => .reserved,
3386 .OpHitObjectGetClusterIdNV => .reserved,
3387 .OpTypeCooperativeMatrixNV => .type_declaration,
3388 .OpCooperativeMatrixLoadNV => .reserved,
3389 .OpCooperativeMatrixStoreNV => .reserved,
3390 .OpCooperativeMatrixMulAddNV => .reserved,
3391 .OpCooperativeMatrixLengthNV => .reserved,
3392 .OpBeginInvocationInterlockEXT => .reserved,
3393 .OpEndInvocationInterlockEXT => .reserved,
3394 .OpCooperativeMatrixReduceNV => .arithmetic,
3395 .OpCooperativeMatrixLoadTensorNV => .memory,
3396 .OpCooperativeMatrixStoreTensorNV => .memory,
3397 .OpCooperativeMatrixPerElementOpNV => .function,
3398 .OpTypeTensorLayoutNV => .type_declaration,
3399 .OpTypeTensorViewNV => .type_declaration,
3400 .OpCreateTensorLayoutNV => .reserved,
3401 .OpTensorLayoutSetDimensionNV => .reserved,
3402 .OpTensorLayoutSetStrideNV => .reserved,
3403 .OpTensorLayoutSliceNV => .reserved,
3404 .OpTensorLayoutSetClampValueNV => .reserved,
3405 .OpCreateTensorViewNV => .reserved,
3406 .OpTensorViewSetDimensionNV => .reserved,
3407 .OpTensorViewSetStrideNV => .reserved,
3408 .OpDemoteToHelperInvocation => .control_flow,
3409 .OpIsHelperInvocationEXT => .reserved,
3410 .OpTensorViewSetClipNV => .reserved,
3411 .OpTensorLayoutSetBlockSizeNV => .reserved,
3412 .OpCooperativeMatrixTransposeNV => .conversion,
3413 .OpConvertUToImageNV => .reserved,
3414 .OpConvertUToSamplerNV => .reserved,
3415 .OpConvertImageToUNV => .reserved,
3416 .OpConvertSamplerToUNV => .reserved,
3417 .OpConvertUToSampledImageNV => .reserved,
3418 .OpConvertSampledImageToUNV => .reserved,
3419 .OpSamplerImageAddressingModeNV => .reserved,
3420 .OpRawAccessChainNV => .memory,
3421 .OpRayQueryGetIntersectionSpherePositionNV => .reserved,
3422 .OpRayQueryGetIntersectionSphereRadiusNV => .reserved,
3423 .OpRayQueryGetIntersectionLSSPositionsNV => .reserved,
3424 .OpRayQueryGetIntersectionLSSRadiiNV => .reserved,
3425 .OpRayQueryGetIntersectionLSSHitValueNV => .reserved,
3426 .OpHitObjectGetSpherePositionNV => .reserved,
3427 .OpHitObjectGetSphereRadiusNV => .reserved,
3428 .OpHitObjectGetLSSPositionsNV => .reserved,
3429 .OpHitObjectGetLSSRadiiNV => .reserved,
3430 .OpHitObjectIsSphereHitNV => .reserved,
3431 .OpHitObjectIsLSSHitNV => .reserved,
3432 .OpRayQueryIsSphereHitNV => .reserved,
3433 .OpRayQueryIsLSSHitNV => .reserved,
3434 .OpSubgroupShuffleINTEL => .group,
3435 .OpSubgroupShuffleDownINTEL => .group,
3436 .OpSubgroupShuffleUpINTEL => .group,
3437 .OpSubgroupShuffleXorINTEL => .group,
3438 .OpSubgroupBlockReadINTEL => .group,
3439 .OpSubgroupBlockWriteINTEL => .group,
3440 .OpSubgroupImageBlockReadINTEL => .group,
3441 .OpSubgroupImageBlockWriteINTEL => .group,
3442 .OpSubgroupImageMediaBlockReadINTEL => .group,
3443 .OpSubgroupImageMediaBlockWriteINTEL => .group,
3444 .OpUCountLeadingZerosINTEL => .reserved,
3445 .OpUCountTrailingZerosINTEL => .reserved,
3446 .OpAbsISubINTEL => .reserved,
3447 .OpAbsUSubINTEL => .reserved,
3448 .OpIAddSatINTEL => .reserved,
3449 .OpUAddSatINTEL => .reserved,
3450 .OpIAverageINTEL => .reserved,
3451 .OpUAverageINTEL => .reserved,
3452 .OpIAverageRoundedINTEL => .reserved,
3453 .OpUAverageRoundedINTEL => .reserved,
3454 .OpISubSatINTEL => .reserved,
3455 .OpUSubSatINTEL => .reserved,
3456 .OpIMul32x16INTEL => .reserved,
3457 .OpUMul32x16INTEL => .reserved,
3458 .OpAtomicFMinEXT => .atomic,
3459 .OpAtomicFMaxEXT => .atomic,
3460 .OpAssumeTrueKHR => .miscellaneous,
3461 .OpExpectKHR => .miscellaneous,
3462 .OpDecorateString => .annotation,
3463 .OpMemberDecorateString => .annotation,
3464 .OpLoopControlINTEL => .reserved,
3465 .OpReadPipeBlockingINTEL => .pipe,
3466 .OpWritePipeBlockingINTEL => .pipe,
3467 .OpFPGARegINTEL => .reserved,
3468 .OpRayQueryGetRayTMinKHR => .reserved,
3469 .OpRayQueryGetRayFlagsKHR => .reserved,
3470 .OpRayQueryGetIntersectionTKHR => .reserved,
3471 .OpRayQueryGetIntersectionInstanceCustomIndexKHR => .reserved,
3472 .OpRayQueryGetIntersectionInstanceIdKHR => .reserved,
3473 .OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR => .reserved,
3474 .OpRayQueryGetIntersectionGeometryIndexKHR => .reserved,
3475 .OpRayQueryGetIntersectionPrimitiveIndexKHR => .reserved,
3476 .OpRayQueryGetIntersectionBarycentricsKHR => .reserved,
3477 .OpRayQueryGetIntersectionFrontFaceKHR => .reserved,
3478 .OpRayQueryGetIntersectionCandidateAABBOpaqueKHR => .reserved,
3479 .OpRayQueryGetIntersectionObjectRayDirectionKHR => .reserved,
3480 .OpRayQueryGetIntersectionObjectRayOriginKHR => .reserved,
3481 .OpRayQueryGetWorldRayDirectionKHR => .reserved,
3482 .OpRayQueryGetWorldRayOriginKHR => .reserved,
3483 .OpRayQueryGetIntersectionObjectToWorldKHR => .reserved,
3484 .OpRayQueryGetIntersectionWorldToObjectKHR => .reserved,
3485 .OpAtomicFAddEXT => .atomic,
3486 .OpTypeBufferSurfaceINTEL => .type_declaration,
3487 .OpTypeStructContinuedINTEL => .type_declaration,
3488 .OpConstantCompositeContinuedINTEL => .constant_creation,
3489 .OpSpecConstantCompositeContinuedINTEL => .constant_creation,
3490 .OpCompositeConstructContinuedINTEL => .composite,
3491 .OpConvertFToBF16INTEL => .conversion,
3492 .OpConvertBF16ToFINTEL => .conversion,
3493 .OpControlBarrierArriveINTEL => .barrier,
3494 .OpControlBarrierWaitINTEL => .barrier,
3495 .OpArithmeticFenceEXT => .miscellaneous,
3496 .OpTaskSequenceCreateINTEL => .reserved,
3497 .OpTaskSequenceAsyncINTEL => .reserved,
3498 .OpTaskSequenceGetINTEL => .reserved,
3499 .OpTaskSequenceReleaseINTEL => .reserved,
3500 .OpTypeTaskSequenceINTEL => .type_declaration,
3501 .OpSubgroupBlockPrefetchINTEL => .group,
3502 .OpSubgroup2DBlockLoadINTEL => .group,
3503 .OpSubgroup2DBlockLoadTransformINTEL => .group,
3504 .OpSubgroup2DBlockLoadTransposeINTEL => .group,
3505 .OpSubgroup2DBlockPrefetchINTEL => .group,
3506 .OpSubgroup2DBlockStoreINTEL => .group,
3507 .OpSubgroupMatrixMultiplyAccumulateINTEL => .group,
3508 .OpBitwiseFunctionINTEL => .bit,
3509 .OpGroupIMulKHR => .group,
3510 .OpGroupFMulKHR => .group,
3511 .OpGroupBitwiseAndKHR => .group,
3512 .OpGroupBitwiseOrKHR => .group,
3513 .OpGroupBitwiseXorKHR => .group,
3514 .OpGroupLogicalAndKHR => .group,
3515 .OpGroupLogicalOrKHR => .group,
3516 .OpGroupLogicalXorKHR => .group,
3517 .OpRoundFToTF32INTEL => .conversion,
3518 .OpMaskedGatherINTEL => .memory,
3519 .OpMaskedScatterINTEL => .memory,
3520 .OpConvertHandleToImageINTEL => .image,
3521 .OpConvertHandleToSamplerINTEL => .image,
3522 .OpConvertHandleToSampledImageINTEL => .image,
32173523 };
32183524 }
32193525};
32203526pub const ImageOperands = packed struct {
3221 Bias: bool = false,
3222 Lod: bool = false,
3223 Grad: bool = false,
3224 ConstOffset: bool = false,
3225 Offset: bool = false,
3226 ConstOffsets: bool = false,
3227 Sample: bool = false,
3228 MinLod: bool = false,
3229 MakeTexelAvailable: bool = false,
3230 MakeTexelVisible: bool = false,
3231 NonPrivateTexel: bool = false,
3232 VolatileTexel: bool = false,
3233 SignExtend: bool = false,
3234 ZeroExtend: bool = false,
3235 Nontemporal: bool = false,
3527 bias: bool = false,
3528 lod: bool = false,
3529 grad: bool = false,
3530 const_offset: bool = false,
3531 offset: bool = false,
3532 const_offsets: bool = false,
3533 sample: bool = false,
3534 min_lod: bool = false,
3535 make_texel_available: bool = false,
3536 make_texel_visible: bool = false,
3537 non_private_texel: bool = false,
3538 volatile_texel: bool = false,
3539 sign_extend: bool = false,
3540 zero_extend: bool = false,
3541 nontemporal: bool = false,
32363542 _reserved_bit_15: bool = false,
3237 Offsets: bool = false,
3543 offsets: bool = false,
32383544 _reserved_bit_17: bool = false,
32393545 _reserved_bit_18: bool = false,
32403546 _reserved_bit_19: bool = false,
......@@ -3251,29 +3557,24 @@ pub const ImageOperands = packed struct {
32513557 _reserved_bit_30: bool = false,
32523558 _reserved_bit_31: bool = false,
32533559
3254 pub const MakeTexelAvailableKHR: ImageOperands = .{ .MakeTexelAvailable = true };
3255 pub const MakeTexelVisibleKHR: ImageOperands = .{ .MakeTexelVisible = true };
3256 pub const NonPrivateTexelKHR: ImageOperands = .{ .NonPrivateTexel = true };
3257 pub const VolatileTexelKHR: ImageOperands = .{ .VolatileTexel = true };
3258
32593560 pub const Extended = struct {
3260 Bias: ?struct { id_ref: IdRef } = null,
3261 Lod: ?struct { id_ref: IdRef } = null,
3262 Grad: ?struct { id_ref_0: IdRef, id_ref_1: IdRef } = null,
3263 ConstOffset: ?struct { id_ref: IdRef } = null,
3264 Offset: ?struct { id_ref: IdRef } = null,
3265 ConstOffsets: ?struct { id_ref: IdRef } = null,
3266 Sample: ?struct { id_ref: IdRef } = null,
3267 MinLod: ?struct { id_ref: IdRef } = null,
3268 MakeTexelAvailable: ?struct { id_scope: IdScope } = null,
3269 MakeTexelVisible: ?struct { id_scope: IdScope } = null,
3270 NonPrivateTexel: bool = false,
3271 VolatileTexel: bool = false,
3272 SignExtend: bool = false,
3273 ZeroExtend: bool = false,
3274 Nontemporal: bool = false,
3561 bias: ?struct { id_ref: Id } = null,
3562 lod: ?struct { id_ref: Id } = null,
3563 grad: ?struct { id_ref_0: Id, id_ref_1: Id } = null,
3564 const_offset: ?struct { id_ref: Id } = null,
3565 offset: ?struct { id_ref: Id } = null,
3566 const_offsets: ?struct { id_ref: Id } = null,
3567 sample: ?struct { id_ref: Id } = null,
3568 min_lod: ?struct { id_ref: Id } = null,
3569 make_texel_available: ?struct { id_scope: Id } = null,
3570 make_texel_visible: ?struct { id_scope: Id } = null,
3571 non_private_texel: bool = false,
3572 volatile_texel: bool = false,
3573 sign_extend: bool = false,
3574 zero_extend: bool = false,
3575 nontemporal: bool = false,
32753576 _reserved_bit_15: bool = false,
3276 Offsets: ?struct { id_ref: IdRef } = null,
3577 offsets: ?struct { id_ref: Id } = null,
32773578 _reserved_bit_17: bool = false,
32783579 _reserved_bit_18: bool = false,
32793580 _reserved_bit_19: bool = false,
......@@ -3292,11 +3593,11 @@ pub const ImageOperands = packed struct {
32923593 };
32933594};
32943595pub const FPFastMathMode = packed struct {
3295 NotNaN: bool = false,
3296 NotInf: bool = false,
3297 NSZ: bool = false,
3298 AllowRecip: bool = false,
3299 Fast: bool = false,
3596 not_na_n: bool = false,
3597 not_inf: bool = false,
3598 nsz: bool = false,
3599 allow_recip: bool = false,
3600 fast: bool = false,
33003601 _reserved_bit_5: bool = false,
33013602 _reserved_bit_6: bool = false,
33023603 _reserved_bit_7: bool = false,
......@@ -3308,9 +3609,9 @@ pub const FPFastMathMode = packed struct {
33083609 _reserved_bit_13: bool = false,
33093610 _reserved_bit_14: bool = false,
33103611 _reserved_bit_15: bool = false,
3311 AllowContract: bool = false,
3312 AllowReassoc: bool = false,
3313 AllowTransform: bool = false,
3612 allow_contract: bool = false,
3613 allow_reassoc: bool = false,
3614 allow_transform: bool = false,
33143615 _reserved_bit_19: bool = false,
33153616 _reserved_bit_20: bool = false,
33163617 _reserved_bit_21: bool = false,
......@@ -3324,13 +3625,10 @@ pub const FPFastMathMode = packed struct {
33243625 _reserved_bit_29: bool = false,
33253626 _reserved_bit_30: bool = false,
33263627 _reserved_bit_31: bool = false,
3327
3328 pub const AllowContractFastINTEL: FPFastMathMode = .{ .AllowContract = true };
3329 pub const AllowReassocINTEL: FPFastMathMode = .{ .AllowReassoc = true };
33303628};
33313629pub const SelectionControl = packed struct {
3332 Flatten: bool = false,
3333 DontFlatten: bool = false,
3630 flatten: bool = false,
3631 dont_flatten: bool = false,
33343632 _reserved_bit_2: bool = false,
33353633 _reserved_bit_3: bool = false,
33363634 _reserved_bit_4: bool = false,
......@@ -3363,15 +3661,15 @@ pub const SelectionControl = packed struct {
33633661 _reserved_bit_31: bool = false,
33643662};
33653663pub const LoopControl = packed struct {
3366 Unroll: bool = false,
3367 DontUnroll: bool = false,
3368 DependencyInfinite: bool = false,
3369 DependencyLength: bool = false,
3370 MinIterations: bool = false,
3371 MaxIterations: bool = false,
3372 IterationMultiple: bool = false,
3373 PeelCount: bool = false,
3374 PartialCount: bool = false,
3664 unroll: bool = false,
3665 dont_unroll: bool = false,
3666 dependency_infinite: bool = false,
3667 dependency_length: bool = false,
3668 min_iterations: bool = false,
3669 max_iterations: bool = false,
3670 iteration_multiple: bool = false,
3671 peel_count: bool = false,
3672 partial_count: bool = false,
33753673 _reserved_bit_9: bool = false,
33763674 _reserved_bit_10: bool = false,
33773675 _reserved_bit_11: bool = false,
......@@ -3379,16 +3677,16 @@ pub const LoopControl = packed struct {
33793677 _reserved_bit_13: bool = false,
33803678 _reserved_bit_14: bool = false,
33813679 _reserved_bit_15: bool = false,
3382 InitiationIntervalINTEL: bool = false,
3383 MaxConcurrencyINTEL: bool = false,
3384 DependencyArrayINTEL: bool = false,
3385 PipelineEnableINTEL: bool = false,
3386 LoopCoalesceINTEL: bool = false,
3387 MaxInterleavingINTEL: bool = false,
3388 SpeculatedIterationsINTEL: bool = false,
3389 NoFusionINTEL: bool = false,
3390 LoopCountINTEL: bool = false,
3391 MaxReinvocationDelayINTEL: bool = false,
3680 initiation_interval_intel: bool = false,
3681 max_concurrency_intel: bool = false,
3682 dependency_array_intel: bool = false,
3683 pipeline_enable_intel: bool = false,
3684 loop_coalesce_intel: bool = false,
3685 max_interleaving_intel: bool = false,
3686 speculated_iterations_intel: bool = false,
3687 no_fusion_intel: bool = false,
3688 loop_count_intel: bool = false,
3689 max_reinvocation_delay_intel: bool = false,
33923690 _reserved_bit_26: bool = false,
33933691 _reserved_bit_27: bool = false,
33943692 _reserved_bit_28: bool = false,
......@@ -3397,15 +3695,15 @@ pub const LoopControl = packed struct {
33973695 _reserved_bit_31: bool = false,
33983696
33993697 pub const Extended = struct {
3400 Unroll: bool = false,
3401 DontUnroll: bool = false,
3402 DependencyInfinite: bool = false,
3403 DependencyLength: ?struct { literal_integer: LiteralInteger } = null,
3404 MinIterations: ?struct { literal_integer: LiteralInteger } = null,
3405 MaxIterations: ?struct { literal_integer: LiteralInteger } = null,
3406 IterationMultiple: ?struct { literal_integer: LiteralInteger } = null,
3407 PeelCount: ?struct { literal_integer: LiteralInteger } = null,
3408 PartialCount: ?struct { literal_integer: LiteralInteger } = null,
3698 unroll: bool = false,
3699 dont_unroll: bool = false,
3700 dependency_infinite: bool = false,
3701 dependency_length: ?struct { literal_integer: LiteralInteger } = null,
3702 min_iterations: ?struct { literal_integer: LiteralInteger } = null,
3703 max_iterations: ?struct { literal_integer: LiteralInteger } = null,
3704 iteration_multiple: ?struct { literal_integer: LiteralInteger } = null,
3705 peel_count: ?struct { literal_integer: LiteralInteger } = null,
3706 partial_count: ?struct { literal_integer: LiteralInteger } = null,
34093707 _reserved_bit_9: bool = false,
34103708 _reserved_bit_10: bool = false,
34113709 _reserved_bit_11: bool = false,
......@@ -3413,16 +3711,16 @@ pub const LoopControl = packed struct {
34133711 _reserved_bit_13: bool = false,
34143712 _reserved_bit_14: bool = false,
34153713 _reserved_bit_15: bool = false,
3416 InitiationIntervalINTEL: ?struct { literal_integer: LiteralInteger } = null,
3417 MaxConcurrencyINTEL: ?struct { literal_integer: LiteralInteger } = null,
3418 DependencyArrayINTEL: ?struct { literal_integer: LiteralInteger } = null,
3419 PipelineEnableINTEL: ?struct { literal_integer: LiteralInteger } = null,
3420 LoopCoalesceINTEL: ?struct { literal_integer: LiteralInteger } = null,
3421 MaxInterleavingINTEL: ?struct { literal_integer: LiteralInteger } = null,
3422 SpeculatedIterationsINTEL: ?struct { literal_integer: LiteralInteger } = null,
3423 NoFusionINTEL: bool = false,
3424 LoopCountINTEL: ?struct { literal_integer: LiteralInteger } = null,
3425 MaxReinvocationDelayINTEL: ?struct { literal_integer: LiteralInteger } = null,
3714 initiation_interval_intel: ?struct { literal_integer: LiteralInteger } = null,
3715 max_concurrency_intel: ?struct { literal_integer: LiteralInteger } = null,
3716 dependency_array_intel: ?struct { literal_integer: LiteralInteger } = null,
3717 pipeline_enable_intel: ?struct { literal_integer: LiteralInteger } = null,
3718 loop_coalesce_intel: ?struct { literal_integer: LiteralInteger } = null,
3719 max_interleaving_intel: ?struct { literal_integer: LiteralInteger } = null,
3720 speculated_iterations_intel: ?struct { literal_integer: LiteralInteger } = null,
3721 no_fusion_intel: bool = false,
3722 loop_count_intel: ?struct { literal_integer: LiteralInteger } = null,
3723 max_reinvocation_delay_intel: ?struct { literal_integer: LiteralInteger } = null,
34263724 _reserved_bit_26: bool = false,
34273725 _reserved_bit_27: bool = false,
34283726 _reserved_bit_28: bool = false,
......@@ -3432,10 +3730,10 @@ pub const LoopControl = packed struct {
34323730 };
34333731};
34343732pub const FunctionControl = packed struct {
3435 Inline: bool = false,
3436 DontInline: bool = false,
3437 Pure: bool = false,
3438 Const: bool = false,
3733 @"inline": bool = false,
3734 dont_inline: bool = false,
3735 pure: bool = false,
3736 @"const": bool = false,
34393737 _reserved_bit_4: bool = false,
34403738 _reserved_bit_5: bool = false,
34413739 _reserved_bit_6: bool = false,
......@@ -3448,7 +3746,7 @@ pub const FunctionControl = packed struct {
34483746 _reserved_bit_13: bool = false,
34493747 _reserved_bit_14: bool = false,
34503748 _reserved_bit_15: bool = false,
3451 OptNoneINTEL: bool = false,
3749 opt_none_ext: bool = false,
34523750 _reserved_bit_17: bool = false,
34533751 _reserved_bit_18: bool = false,
34543752 _reserved_bit_19: bool = false,
......@@ -3467,21 +3765,21 @@ pub const FunctionControl = packed struct {
34673765};
34683766pub const MemorySemantics = packed struct {
34693767 _reserved_bit_0: bool = false,
3470 Acquire: bool = false,
3471 Release: bool = false,
3472 AcquireRelease: bool = false,
3473 SequentiallyConsistent: bool = false,
3768 acquire: bool = false,
3769 release: bool = false,
3770 acquire_release: bool = false,
3771 sequentially_consistent: bool = false,
34743772 _reserved_bit_5: bool = false,
3475 UniformMemory: bool = false,
3476 SubgroupMemory: bool = false,
3477 WorkgroupMemory: bool = false,
3478 CrossWorkgroupMemory: bool = false,
3479 AtomicCounterMemory: bool = false,
3480 ImageMemory: bool = false,
3481 OutputMemory: bool = false,
3482 MakeAvailable: bool = false,
3483 MakeVisible: bool = false,
3484 Volatile: bool = false,
3773 uniform_memory: bool = false,
3774 subgroup_memory: bool = false,
3775 workgroup_memory: bool = false,
3776 cross_workgroup_memory: bool = false,
3777 atomic_counter_memory: bool = false,
3778 image_memory: bool = false,
3779 output_memory: bool = false,
3780 make_available: bool = false,
3781 make_visible: bool = false,
3782 @"volatile": bool = false,
34853783 _reserved_bit_16: bool = false,
34863784 _reserved_bit_17: bool = false,
34873785 _reserved_bit_18: bool = false,
......@@ -3498,18 +3796,14 @@ pub const MemorySemantics = packed struct {
34983796 _reserved_bit_29: bool = false,
34993797 _reserved_bit_30: bool = false,
35003798 _reserved_bit_31: bool = false,
3501
3502 pub const OutputMemoryKHR: MemorySemantics = .{ .OutputMemory = true };
3503 pub const MakeAvailableKHR: MemorySemantics = .{ .MakeAvailable = true };
3504 pub const MakeVisibleKHR: MemorySemantics = .{ .MakeVisible = true };
35053799};
35063800pub const MemoryAccess = packed struct {
3507 Volatile: bool = false,
3508 Aligned: bool = false,
3509 Nontemporal: bool = false,
3510 MakePointerAvailable: bool = false,
3511 MakePointerVisible: bool = false,
3512 NonPrivatePointer: bool = false,
3801 @"volatile": bool = false,
3802 aligned: bool = false,
3803 nontemporal: bool = false,
3804 make_pointer_available: bool = false,
3805 make_pointer_visible: bool = false,
3806 non_private_pointer: bool = false,
35133807 _reserved_bit_6: bool = false,
35143808 _reserved_bit_7: bool = false,
35153809 _reserved_bit_8: bool = false,
......@@ -3520,8 +3814,8 @@ pub const MemoryAccess = packed struct {
35203814 _reserved_bit_13: bool = false,
35213815 _reserved_bit_14: bool = false,
35223816 _reserved_bit_15: bool = false,
3523 AliasScopeINTELMask: bool = false,
3524 NoAliasINTELMask: bool = false,
3817 alias_scope_intel_mask: bool = false,
3818 no_alias_intel_mask: bool = false,
35253819 _reserved_bit_18: bool = false,
35263820 _reserved_bit_19: bool = false,
35273821 _reserved_bit_20: bool = false,
......@@ -3537,17 +3831,13 @@ pub const MemoryAccess = packed struct {
35373831 _reserved_bit_30: bool = false,
35383832 _reserved_bit_31: bool = false,
35393833
3540 pub const MakePointerAvailableKHR: MemoryAccess = .{ .MakePointerAvailable = true };
3541 pub const MakePointerVisibleKHR: MemoryAccess = .{ .MakePointerVisible = true };
3542 pub const NonPrivatePointerKHR: MemoryAccess = .{ .NonPrivatePointer = true };
3543
35443834 pub const Extended = struct {
3545 Volatile: bool = false,
3546 Aligned: ?struct { literal_integer: LiteralInteger } = null,
3547 Nontemporal: bool = false,
3548 MakePointerAvailable: ?struct { id_scope: IdScope } = null,
3549 MakePointerVisible: ?struct { id_scope: IdScope } = null,
3550 NonPrivatePointer: bool = false,
3835 @"volatile": bool = false,
3836 aligned: ?struct { literal_integer: LiteralInteger } = null,
3837 nontemporal: bool = false,
3838 make_pointer_available: ?struct { id_scope: Id } = null,
3839 make_pointer_visible: ?struct { id_scope: Id } = null,
3840 non_private_pointer: bool = false,
35513841 _reserved_bit_6: bool = false,
35523842 _reserved_bit_7: bool = false,
35533843 _reserved_bit_8: bool = false,
......@@ -3558,8 +3848,8 @@ pub const MemoryAccess = packed struct {
35583848 _reserved_bit_13: bool = false,
35593849 _reserved_bit_14: bool = false,
35603850 _reserved_bit_15: bool = false,
3561 AliasScopeINTELMask: ?struct { id_ref: IdRef } = null,
3562 NoAliasINTELMask: ?struct { id_ref: IdRef } = null,
3851 alias_scope_intel_mask: ?struct { id_ref: Id } = null,
3852 no_alias_intel_mask: ?struct { id_ref: Id } = null,
35633853 _reserved_bit_18: bool = false,
35643854 _reserved_bit_19: bool = false,
35653855 _reserved_bit_20: bool = false,
......@@ -3577,7 +3867,7 @@ pub const MemoryAccess = packed struct {
35773867 };
35783868};
35793869pub const KernelProfilingInfo = packed struct {
3580 CmdExecTime: bool = false,
3870 cmd_exec_time: bool = false,
35813871 _reserved_bit_1: bool = false,
35823872 _reserved_bit_2: bool = false,
35833873 _reserved_bit_3: bool = false,
......@@ -3611,17 +3901,17 @@ pub const KernelProfilingInfo = packed struct {
36113901 _reserved_bit_31: bool = false,
36123902};
36133903pub const RayFlags = packed struct {
3614 OpaqueKHR: bool = false,
3615 NoOpaqueKHR: bool = false,
3616 TerminateOnFirstHitKHR: bool = false,
3617 SkipClosestHitShaderKHR: bool = false,
3618 CullBackFacingTrianglesKHR: bool = false,
3619 CullFrontFacingTrianglesKHR: bool = false,
3620 CullOpaqueKHR: bool = false,
3621 CullNoOpaqueKHR: bool = false,
3622 SkipTrianglesKHR: bool = false,
3623 SkipAABBsKHR: bool = false,
3624 ForceOpacityMicromap2StateEXT: bool = false,
3904 opaque_khr: bool = false,
3905 no_opaque_khr: bool = false,
3906 terminate_on_first_hit_khr: bool = false,
3907 skip_closest_hit_shader_khr: bool = false,
3908 cull_back_facing_triangles_khr: bool = false,
3909 cull_front_facing_triangles_khr: bool = false,
3910 cull_opaque_khr: bool = false,
3911 cull_no_opaque_khr: bool = false,
3912 skip_triangles_khr: bool = false,
3913 skip_aab_bs_khr: bool = false,
3914 force_opacity_micromap2state_ext: bool = false,
36253915 _reserved_bit_11: bool = false,
36263916 _reserved_bit_12: bool = false,
36273917 _reserved_bit_13: bool = false,
......@@ -3645,10 +3935,10 @@ pub const RayFlags = packed struct {
36453935 _reserved_bit_31: bool = false,
36463936};
36473937pub const FragmentShadingRate = packed struct {
3648 Vertical2Pixels: bool = false,
3649 Vertical4Pixels: bool = false,
3650 Horizontal2Pixels: bool = false,
3651 Horizontal4Pixels: bool = false,
3938 vertical2pixels: bool = false,
3939 vertical4pixels: bool = false,
3940 horizontal2pixels: bool = false,
3941 horizontal4pixels: bool = false,
36523942 _reserved_bit_4: bool = false,
36533943 _reserved_bit_5: bool = false,
36543944 _reserved_bit_6: bool = false,
......@@ -3679,8 +3969,8 @@ pub const FragmentShadingRate = packed struct {
36793969 _reserved_bit_31: bool = false,
36803970};
36813971pub const RawAccessChainOperands = packed struct {
3682 RobustnessPerComponentNV: bool = false,
3683 RobustnessPerElementNV: bool = false,
3972 robustness_per_component_nv: bool = false,
3973 robustness_per_element_nv: bool = false,
36843974 _reserved_bit_2: bool = false,
36853975 _reserved_bit_3: bool = false,
36863976 _reserved_bit_4: bool = false,
......@@ -3713,1199 +4003,1187 @@ pub const RawAccessChainOperands = packed struct {
37134003 _reserved_bit_31: bool = false,
37144004};
37154005pub const SourceLanguage = enum(u32) {
3716 Unknown = 0,
3717 ESSL = 1,
3718 GLSL = 2,
3719 OpenCL_C = 3,
3720 OpenCL_CPP = 4,
3721 HLSL = 5,
3722 CPP_for_OpenCL = 6,
3723 SYCL = 7,
3724 HERO_C = 8,
3725 NZSL = 9,
3726 WGSL = 10,
3727 Slang = 11,
3728 Zig = 12,
4006 unknown = 0,
4007 essl = 1,
4008 glsl = 2,
4009 open_cl_c = 3,
4010 open_cl_cpp = 4,
4011 hlsl = 5,
4012 cpp_for_open_cl = 6,
4013 sycl = 7,
4014 hero_c = 8,
4015 nzsl = 9,
4016 wgsl = 10,
4017 slang = 11,
4018 zig = 12,
4019 rust = 13,
37294020};
37304021pub const ExecutionModel = enum(u32) {
3731 Vertex = 0,
3732 TessellationControl = 1,
3733 TessellationEvaluation = 2,
3734 Geometry = 3,
3735 Fragment = 4,
3736 GLCompute = 5,
3737 Kernel = 6,
3738 TaskNV = 5267,
3739 MeshNV = 5268,
3740 RayGenerationKHR = 5313,
3741 IntersectionKHR = 5314,
3742 AnyHitKHR = 5315,
3743 ClosestHitKHR = 5316,
3744 MissKHR = 5317,
3745 CallableKHR = 5318,
3746 TaskEXT = 5364,
3747 MeshEXT = 5365,
3748
3749 pub const RayGenerationNV = ExecutionModel.RayGenerationKHR;
3750 pub const IntersectionNV = ExecutionModel.IntersectionKHR;
3751 pub const AnyHitNV = ExecutionModel.AnyHitKHR;
3752 pub const ClosestHitNV = ExecutionModel.ClosestHitKHR;
3753 pub const MissNV = ExecutionModel.MissKHR;
3754 pub const CallableNV = ExecutionModel.CallableKHR;
4022 vertex = 0,
4023 tessellation_control = 1,
4024 tessellation_evaluation = 2,
4025 geometry = 3,
4026 fragment = 4,
4027 gl_compute = 5,
4028 kernel = 6,
4029 task_nv = 5267,
4030 mesh_nv = 5268,
4031 ray_generation_khr = 5313,
4032 intersection_khr = 5314,
4033 any_hit_khr = 5315,
4034 closest_hit_khr = 5316,
4035 miss_khr = 5317,
4036 callable_khr = 5318,
4037 task_ext = 5364,
4038 mesh_ext = 5365,
37554039};
37564040pub const AddressingModel = enum(u32) {
3757 Logical = 0,
3758 Physical32 = 1,
3759 Physical64 = 2,
3760 PhysicalStorageBuffer64 = 5348,
3761
3762 pub const PhysicalStorageBuffer64EXT = AddressingModel.PhysicalStorageBuffer64;
4041 logical = 0,
4042 physical32 = 1,
4043 physical64 = 2,
4044 physical_storage_buffer64 = 5348,
37634045};
37644046pub const MemoryModel = enum(u32) {
3765 Simple = 0,
3766 GLSL450 = 1,
3767 OpenCL = 2,
3768 Vulkan = 3,
3769
3770 pub const VulkanKHR = MemoryModel.Vulkan;
4047 simple = 0,
4048 glsl450 = 1,
4049 open_cl = 2,
4050 vulkan = 3,
37714051};
37724052pub const ExecutionMode = enum(u32) {
3773 Invocations = 0,
3774 SpacingEqual = 1,
3775 SpacingFractionalEven = 2,
3776 SpacingFractionalOdd = 3,
3777 VertexOrderCw = 4,
3778 VertexOrderCcw = 5,
3779 PixelCenterInteger = 6,
3780 OriginUpperLeft = 7,
3781 OriginLowerLeft = 8,
3782 EarlyFragmentTests = 9,
3783 PointMode = 10,
3784 Xfb = 11,
3785 DepthReplacing = 12,
3786 DepthGreater = 14,
3787 DepthLess = 15,
3788 DepthUnchanged = 16,
3789 LocalSize = 17,
3790 LocalSizeHint = 18,
3791 InputPoints = 19,
3792 InputLines = 20,
3793 InputLinesAdjacency = 21,
3794 Triangles = 22,
3795 InputTrianglesAdjacency = 23,
3796 Quads = 24,
3797 Isolines = 25,
3798 OutputVertices = 26,
3799 OutputPoints = 27,
3800 OutputLineStrip = 28,
3801 OutputTriangleStrip = 29,
3802 VecTypeHint = 30,
3803 ContractionOff = 31,
3804 Initializer = 33,
3805 Finalizer = 34,
3806 SubgroupSize = 35,
3807 SubgroupsPerWorkgroup = 36,
3808 SubgroupsPerWorkgroupId = 37,
3809 LocalSizeId = 38,
3810 LocalSizeHintId = 39,
3811 NonCoherentColorAttachmentReadEXT = 4169,
3812 NonCoherentDepthAttachmentReadEXT = 4170,
3813 NonCoherentStencilAttachmentReadEXT = 4171,
3814 SubgroupUniformControlFlowKHR = 4421,
3815 PostDepthCoverage = 4446,
3816 DenormPreserve = 4459,
3817 DenormFlushToZero = 4460,
3818 SignedZeroInfNanPreserve = 4461,
3819 RoundingModeRTE = 4462,
3820 RoundingModeRTZ = 4463,
3821 EarlyAndLateFragmentTestsAMD = 5017,
3822 StencilRefReplacingEXT = 5027,
3823 CoalescingAMDX = 5069,
3824 MaxNodeRecursionAMDX = 5071,
3825 StaticNumWorkgroupsAMDX = 5072,
3826 ShaderIndexAMDX = 5073,
3827 MaxNumWorkgroupsAMDX = 5077,
3828 StencilRefUnchangedFrontAMD = 5079,
3829 StencilRefGreaterFrontAMD = 5080,
3830 StencilRefLessFrontAMD = 5081,
3831 StencilRefUnchangedBackAMD = 5082,
3832 StencilRefGreaterBackAMD = 5083,
3833 StencilRefLessBackAMD = 5084,
3834 QuadDerivativesKHR = 5088,
3835 RequireFullQuadsKHR = 5089,
3836 OutputLinesEXT = 5269,
3837 OutputPrimitivesEXT = 5270,
3838 DerivativeGroupQuadsNV = 5289,
3839 DerivativeGroupLinearNV = 5290,
3840 OutputTrianglesEXT = 5298,
3841 PixelInterlockOrderedEXT = 5366,
3842 PixelInterlockUnorderedEXT = 5367,
3843 SampleInterlockOrderedEXT = 5368,
3844 SampleInterlockUnorderedEXT = 5369,
3845 ShadingRateInterlockOrderedEXT = 5370,
3846 ShadingRateInterlockUnorderedEXT = 5371,
3847 SharedLocalMemorySizeINTEL = 5618,
3848 RoundingModeRTPINTEL = 5620,
3849 RoundingModeRTNINTEL = 5621,
3850 FloatingPointModeALTINTEL = 5622,
3851 FloatingPointModeIEEEINTEL = 5623,
3852 MaxWorkgroupSizeINTEL = 5893,
3853 MaxWorkDimINTEL = 5894,
3854 NoGlobalOffsetINTEL = 5895,
3855 NumSIMDWorkitemsINTEL = 5896,
3856 SchedulerTargetFmaxMhzINTEL = 5903,
3857 MaximallyReconvergesKHR = 6023,
3858 FPFastMathDefault = 6028,
3859 StreamingInterfaceINTEL = 6154,
3860 RegisterMapInterfaceINTEL = 6160,
3861 NamedBarrierCountINTEL = 6417,
3862 MaximumRegistersINTEL = 6461,
3863 MaximumRegistersIdINTEL = 6462,
3864 NamedMaximumRegistersINTEL = 6463,
3865
3866 pub const OutputLinesNV = ExecutionMode.OutputLinesEXT;
3867 pub const OutputPrimitivesNV = ExecutionMode.OutputPrimitivesEXT;
3868 pub const OutputTrianglesNV = ExecutionMode.OutputTrianglesEXT;
4053 invocations = 0,
4054 spacing_equal = 1,
4055 spacing_fractional_even = 2,
4056 spacing_fractional_odd = 3,
4057 vertex_order_cw = 4,
4058 vertex_order_ccw = 5,
4059 pixel_center_integer = 6,
4060 origin_upper_left = 7,
4061 origin_lower_left = 8,
4062 early_fragment_tests = 9,
4063 point_mode = 10,
4064 xfb = 11,
4065 depth_replacing = 12,
4066 depth_greater = 14,
4067 depth_less = 15,
4068 depth_unchanged = 16,
4069 local_size = 17,
4070 local_size_hint = 18,
4071 input_points = 19,
4072 input_lines = 20,
4073 input_lines_adjacency = 21,
4074 triangles = 22,
4075 input_triangles_adjacency = 23,
4076 quads = 24,
4077 isolines = 25,
4078 output_vertices = 26,
4079 output_points = 27,
4080 output_line_strip = 28,
4081 output_triangle_strip = 29,
4082 vec_type_hint = 30,
4083 contraction_off = 31,
4084 initializer = 33,
4085 finalizer = 34,
4086 subgroup_size = 35,
4087 subgroups_per_workgroup = 36,
4088 subgroups_per_workgroup_id = 37,
4089 local_size_id = 38,
4090 local_size_hint_id = 39,
4091 non_coherent_color_attachment_read_ext = 4169,
4092 non_coherent_depth_attachment_read_ext = 4170,
4093 non_coherent_stencil_attachment_read_ext = 4171,
4094 subgroup_uniform_control_flow_khr = 4421,
4095 post_depth_coverage = 4446,
4096 denorm_preserve = 4459,
4097 denorm_flush_to_zero = 4460,
4098 signed_zero_inf_nan_preserve = 4461,
4099 rounding_mode_rte = 4462,
4100 rounding_mode_rtz = 4463,
4101 non_coherent_tile_attachment_read_qcom = 4489,
4102 tile_shading_rate_qcom = 4490,
4103 early_and_late_fragment_tests_amd = 5017,
4104 stencil_ref_replacing_ext = 5027,
4105 coalescing_amdx = 5069,
4106 is_api_entry_amdx = 5070,
4107 max_node_recursion_amdx = 5071,
4108 static_num_workgroups_amdx = 5072,
4109 shader_index_amdx = 5073,
4110 max_num_workgroups_amdx = 5077,
4111 stencil_ref_unchanged_front_amd = 5079,
4112 stencil_ref_greater_front_amd = 5080,
4113 stencil_ref_less_front_amd = 5081,
4114 stencil_ref_unchanged_back_amd = 5082,
4115 stencil_ref_greater_back_amd = 5083,
4116 stencil_ref_less_back_amd = 5084,
4117 quad_derivatives_khr = 5088,
4118 require_full_quads_khr = 5089,
4119 shares_input_with_amdx = 5102,
4120 output_lines_ext = 5269,
4121 output_primitives_ext = 5270,
4122 derivative_group_quads_khr = 5289,
4123 derivative_group_linear_khr = 5290,
4124 output_triangles_ext = 5298,
4125 pixel_interlock_ordered_ext = 5366,
4126 pixel_interlock_unordered_ext = 5367,
4127 sample_interlock_ordered_ext = 5368,
4128 sample_interlock_unordered_ext = 5369,
4129 shading_rate_interlock_ordered_ext = 5370,
4130 shading_rate_interlock_unordered_ext = 5371,
4131 shared_local_memory_size_intel = 5618,
4132 rounding_mode_rtpintel = 5620,
4133 rounding_mode_rtnintel = 5621,
4134 floating_point_mode_altintel = 5622,
4135 floating_point_mode_ieeeintel = 5623,
4136 max_workgroup_size_intel = 5893,
4137 max_work_dim_intel = 5894,
4138 no_global_offset_intel = 5895,
4139 num_simd_workitems_intel = 5896,
4140 scheduler_target_fmax_mhz_intel = 5903,
4141 maximally_reconverges_khr = 6023,
4142 fp_fast_math_default = 6028,
4143 streaming_interface_intel = 6154,
4144 register_map_interface_intel = 6160,
4145 named_barrier_count_intel = 6417,
4146 maximum_registers_intel = 6461,
4147 maximum_registers_id_intel = 6462,
4148 named_maximum_registers_intel = 6463,
38694149
38704150 pub const Extended = union(ExecutionMode) {
3871 Invocations: struct { literal_integer: LiteralInteger },
3872 SpacingEqual,
3873 SpacingFractionalEven,
3874 SpacingFractionalOdd,
3875 VertexOrderCw,
3876 VertexOrderCcw,
3877 PixelCenterInteger,
3878 OriginUpperLeft,
3879 OriginLowerLeft,
3880 EarlyFragmentTests,
3881 PointMode,
3882 Xfb,
3883 DepthReplacing,
3884 DepthGreater,
3885 DepthLess,
3886 DepthUnchanged,
3887 LocalSize: struct { x_size: LiteralInteger, y_size: LiteralInteger, z_size: LiteralInteger },
3888 LocalSizeHint: struct { x_size: LiteralInteger, y_size: LiteralInteger, z_size: LiteralInteger },
3889 InputPoints,
3890 InputLines,
3891 InputLinesAdjacency,
3892 Triangles,
3893 InputTrianglesAdjacency,
3894 Quads,
3895 Isolines,
3896 OutputVertices: struct { vertex_count: LiteralInteger },
3897 OutputPoints,
3898 OutputLineStrip,
3899 OutputTriangleStrip,
3900 VecTypeHint: struct { vector_type: LiteralInteger },
3901 ContractionOff,
3902 Initializer,
3903 Finalizer,
3904 SubgroupSize: struct { subgroup_size: LiteralInteger },
3905 SubgroupsPerWorkgroup: struct { subgroups_per_workgroup: LiteralInteger },
3906 SubgroupsPerWorkgroupId: struct { subgroups_per_workgroup: IdRef },
3907 LocalSizeId: struct { x_size: IdRef, y_size: IdRef, z_size: IdRef },
3908 LocalSizeHintId: struct { x_size_hint: IdRef, y_size_hint: IdRef, z_size_hint: IdRef },
3909 NonCoherentColorAttachmentReadEXT,
3910 NonCoherentDepthAttachmentReadEXT,
3911 NonCoherentStencilAttachmentReadEXT,
3912 SubgroupUniformControlFlowKHR,
3913 PostDepthCoverage,
3914 DenormPreserve: struct { target_width: LiteralInteger },
3915 DenormFlushToZero: struct { target_width: LiteralInteger },
3916 SignedZeroInfNanPreserve: struct { target_width: LiteralInteger },
3917 RoundingModeRTE: struct { target_width: LiteralInteger },
3918 RoundingModeRTZ: struct { target_width: LiteralInteger },
3919 EarlyAndLateFragmentTestsAMD,
3920 StencilRefReplacingEXT,
3921 CoalescingAMDX,
3922 MaxNodeRecursionAMDX: struct { number_of_recursions: IdRef },
3923 StaticNumWorkgroupsAMDX: struct { x_size: IdRef, y_size: IdRef, z_size: IdRef },
3924 ShaderIndexAMDX: struct { shader_index: IdRef },
3925 MaxNumWorkgroupsAMDX: struct { x_size: IdRef, y_size: IdRef, z_size: IdRef },
3926 StencilRefUnchangedFrontAMD,
3927 StencilRefGreaterFrontAMD,
3928 StencilRefLessFrontAMD,
3929 StencilRefUnchangedBackAMD,
3930 StencilRefGreaterBackAMD,
3931 StencilRefLessBackAMD,
3932 QuadDerivativesKHR,
3933 RequireFullQuadsKHR,
3934 OutputLinesEXT,
3935 OutputPrimitivesEXT: struct { primitive_count: LiteralInteger },
3936 DerivativeGroupQuadsNV,
3937 DerivativeGroupLinearNV,
3938 OutputTrianglesEXT,
3939 PixelInterlockOrderedEXT,
3940 PixelInterlockUnorderedEXT,
3941 SampleInterlockOrderedEXT,
3942 SampleInterlockUnorderedEXT,
3943 ShadingRateInterlockOrderedEXT,
3944 ShadingRateInterlockUnorderedEXT,
3945 SharedLocalMemorySizeINTEL: struct { size: LiteralInteger },
3946 RoundingModeRTPINTEL: struct { target_width: LiteralInteger },
3947 RoundingModeRTNINTEL: struct { target_width: LiteralInteger },
3948 FloatingPointModeALTINTEL: struct { target_width: LiteralInteger },
3949 FloatingPointModeIEEEINTEL: struct { target_width: LiteralInteger },
3950 MaxWorkgroupSizeINTEL: struct { literal_integer_0: LiteralInteger, literal_integer_1: LiteralInteger, literal_integer_2: LiteralInteger },
3951 MaxWorkDimINTEL: struct { literal_integer: LiteralInteger },
3952 NoGlobalOffsetINTEL,
3953 NumSIMDWorkitemsINTEL: struct { literal_integer: LiteralInteger },
3954 SchedulerTargetFmaxMhzINTEL: struct { literal_integer: LiteralInteger },
3955 MaximallyReconvergesKHR,
3956 FPFastMathDefault: struct { target_type: IdRef, id_ref_1: IdRef },
3957 StreamingInterfaceINTEL: struct { stallfreereturn: LiteralInteger },
3958 RegisterMapInterfaceINTEL: struct { waitfordonewrite: LiteralInteger },
3959 NamedBarrierCountINTEL: struct { barrier_count: LiteralInteger },
3960 MaximumRegistersINTEL: struct { number_of_registers: LiteralInteger },
3961 MaximumRegistersIdINTEL: struct { number_of_registers: IdRef },
3962 NamedMaximumRegistersINTEL: struct { named_maximum_number_of_registers: NamedMaximumNumberOfRegisters },
4151 invocations: struct { literal_integer: LiteralInteger },
4152 spacing_equal,
4153 spacing_fractional_even,
4154 spacing_fractional_odd,
4155 vertex_order_cw,
4156 vertex_order_ccw,
4157 pixel_center_integer,
4158 origin_upper_left,
4159 origin_lower_left,
4160 early_fragment_tests,
4161 point_mode,
4162 xfb,
4163 depth_replacing,
4164 depth_greater,
4165 depth_less,
4166 depth_unchanged,
4167 local_size: struct { x_size: LiteralInteger, y_size: LiteralInteger, z_size: LiteralInteger },
4168 local_size_hint: struct { x_size: LiteralInteger, y_size: LiteralInteger, z_size: LiteralInteger },
4169 input_points,
4170 input_lines,
4171 input_lines_adjacency,
4172 triangles,
4173 input_triangles_adjacency,
4174 quads,
4175 isolines,
4176 output_vertices: struct { vertex_count: LiteralInteger },
4177 output_points,
4178 output_line_strip,
4179 output_triangle_strip,
4180 vec_type_hint: struct { vector_type: LiteralInteger },
4181 contraction_off,
4182 initializer,
4183 finalizer,
4184 subgroup_size: struct { subgroup_size: LiteralInteger },
4185 subgroups_per_workgroup: struct { subgroups_per_workgroup: LiteralInteger },
4186 subgroups_per_workgroup_id: struct { subgroups_per_workgroup: Id },
4187 local_size_id: struct { x_size: Id, y_size: Id, z_size: Id },
4188 local_size_hint_id: struct { x_size_hint: Id, y_size_hint: Id, z_size_hint: Id },
4189 non_coherent_color_attachment_read_ext,
4190 non_coherent_depth_attachment_read_ext,
4191 non_coherent_stencil_attachment_read_ext,
4192 subgroup_uniform_control_flow_khr,
4193 post_depth_coverage,
4194 denorm_preserve: struct { target_width: LiteralInteger },
4195 denorm_flush_to_zero: struct { target_width: LiteralInteger },
4196 signed_zero_inf_nan_preserve: struct { target_width: LiteralInteger },
4197 rounding_mode_rte: struct { target_width: LiteralInteger },
4198 rounding_mode_rtz: struct { target_width: LiteralInteger },
4199 non_coherent_tile_attachment_read_qcom,
4200 tile_shading_rate_qcom: struct { x_rate: LiteralInteger, y_rate: LiteralInteger, z_rate: LiteralInteger },
4201 early_and_late_fragment_tests_amd,
4202 stencil_ref_replacing_ext,
4203 coalescing_amdx,
4204 is_api_entry_amdx: struct { is_entry: Id },
4205 max_node_recursion_amdx: struct { number_of_recursions: Id },
4206 static_num_workgroups_amdx: struct { x_size: Id, y_size: Id, z_size: Id },
4207 shader_index_amdx: struct { shader_index: Id },
4208 max_num_workgroups_amdx: struct { x_size: Id, y_size: Id, z_size: Id },
4209 stencil_ref_unchanged_front_amd,
4210 stencil_ref_greater_front_amd,
4211 stencil_ref_less_front_amd,
4212 stencil_ref_unchanged_back_amd,
4213 stencil_ref_greater_back_amd,
4214 stencil_ref_less_back_amd,
4215 quad_derivatives_khr,
4216 require_full_quads_khr,
4217 shares_input_with_amdx: struct { node_name: Id, shader_index: Id },
4218 output_lines_ext,
4219 output_primitives_ext: struct { primitive_count: LiteralInteger },
4220 derivative_group_quads_khr,
4221 derivative_group_linear_khr,
4222 output_triangles_ext,
4223 pixel_interlock_ordered_ext,
4224 pixel_interlock_unordered_ext,
4225 sample_interlock_ordered_ext,
4226 sample_interlock_unordered_ext,
4227 shading_rate_interlock_ordered_ext,
4228 shading_rate_interlock_unordered_ext,
4229 shared_local_memory_size_intel: struct { size: LiteralInteger },
4230 rounding_mode_rtpintel: struct { target_width: LiteralInteger },
4231 rounding_mode_rtnintel: struct { target_width: LiteralInteger },
4232 floating_point_mode_altintel: struct { target_width: LiteralInteger },
4233 floating_point_mode_ieeeintel: struct { target_width: LiteralInteger },
4234 max_workgroup_size_intel: struct { literal_integer_0: LiteralInteger, literal_integer_1: LiteralInteger, literal_integer_2: LiteralInteger },
4235 max_work_dim_intel: struct { literal_integer: LiteralInteger },
4236 no_global_offset_intel,
4237 num_simd_workitems_intel: struct { literal_integer: LiteralInteger },
4238 scheduler_target_fmax_mhz_intel: struct { literal_integer: LiteralInteger },
4239 maximally_reconverges_khr,
4240 fp_fast_math_default: struct { target_type: Id, id_ref_1: Id },
4241 streaming_interface_intel: struct { stall_free_return: LiteralInteger },
4242 register_map_interface_intel: struct { wait_for_done_write: LiteralInteger },
4243 named_barrier_count_intel: struct { barrier_count: LiteralInteger },
4244 maximum_registers_intel: struct { number_of_registers: LiteralInteger },
4245 maximum_registers_id_intel: struct { number_of_registers: Id },
4246 named_maximum_registers_intel: struct { named_maximum_number_of_registers: NamedMaximumNumberOfRegisters },
39634247 };
39644248};
39654249pub const StorageClass = enum(u32) {
3966 UniformConstant = 0,
3967 Input = 1,
3968 Uniform = 2,
3969 Output = 3,
3970 Workgroup = 4,
3971 CrossWorkgroup = 5,
3972 Private = 6,
3973 Function = 7,
3974 Generic = 8,
3975 PushConstant = 9,
3976 AtomicCounter = 10,
3977 Image = 11,
3978 StorageBuffer = 12,
3979 TileImageEXT = 4172,
3980 NodePayloadAMDX = 5068,
3981 NodeOutputPayloadAMDX = 5076,
3982 CallableDataKHR = 5328,
3983 IncomingCallableDataKHR = 5329,
3984 RayPayloadKHR = 5338,
3985 HitAttributeKHR = 5339,
3986 IncomingRayPayloadKHR = 5342,
3987 ShaderRecordBufferKHR = 5343,
3988 PhysicalStorageBuffer = 5349,
3989 HitObjectAttributeNV = 5385,
3990 TaskPayloadWorkgroupEXT = 5402,
3991 CodeSectionINTEL = 5605,
3992 DeviceOnlyINTEL = 5936,
3993 HostOnlyINTEL = 5937,
3994
3995 pub const CallableDataNV = StorageClass.CallableDataKHR;
3996 pub const IncomingCallableDataNV = StorageClass.IncomingCallableDataKHR;
3997 pub const RayPayloadNV = StorageClass.RayPayloadKHR;
3998 pub const HitAttributeNV = StorageClass.HitAttributeKHR;
3999 pub const IncomingRayPayloadNV = StorageClass.IncomingRayPayloadKHR;
4000 pub const ShaderRecordBufferNV = StorageClass.ShaderRecordBufferKHR;
4001 pub const PhysicalStorageBufferEXT = StorageClass.PhysicalStorageBuffer;
4250 uniform_constant = 0,
4251 input = 1,
4252 uniform = 2,
4253 output = 3,
4254 workgroup = 4,
4255 cross_workgroup = 5,
4256 private = 6,
4257 function = 7,
4258 generic = 8,
4259 push_constant = 9,
4260 atomic_counter = 10,
4261 image = 11,
4262 storage_buffer = 12,
4263 tile_image_ext = 4172,
4264 tile_attachment_qcom = 4491,
4265 node_payload_amdx = 5068,
4266 callable_data_khr = 5328,
4267 incoming_callable_data_khr = 5329,
4268 ray_payload_khr = 5338,
4269 hit_attribute_khr = 5339,
4270 incoming_ray_payload_khr = 5342,
4271 shader_record_buffer_khr = 5343,
4272 physical_storage_buffer = 5349,
4273 hit_object_attribute_nv = 5385,
4274 task_payload_workgroup_ext = 5402,
4275 code_section_intel = 5605,
4276 device_only_intel = 5936,
4277 host_only_intel = 5937,
40024278};
40034279pub const Dim = enum(u32) {
4004 @"1D" = 0,
4005 @"2D" = 1,
4006 @"3D" = 2,
4007 Cube = 3,
4008 Rect = 4,
4009 Buffer = 5,
4010 SubpassData = 6,
4011 TileImageDataEXT = 4173,
4280 @"1d" = 0,
4281 @"2d" = 1,
4282 @"3d" = 2,
4283 cube = 3,
4284 rect = 4,
4285 buffer = 5,
4286 subpass_data = 6,
4287 tile_image_data_ext = 4173,
40124288};
40134289pub const SamplerAddressingMode = enum(u32) {
4014 None = 0,
4015 ClampToEdge = 1,
4016 Clamp = 2,
4017 Repeat = 3,
4018 RepeatMirrored = 4,
4290 none = 0,
4291 clamp_to_edge = 1,
4292 clamp = 2,
4293 repeat = 3,
4294 repeat_mirrored = 4,
40194295};
40204296pub const SamplerFilterMode = enum(u32) {
4021 Nearest = 0,
4022 Linear = 1,
4297 nearest = 0,
4298 linear = 1,
40234299};
40244300pub const ImageFormat = enum(u32) {
4025 Unknown = 0,
4026 Rgba32f = 1,
4027 Rgba16f = 2,
4028 R32f = 3,
4029 Rgba8 = 4,
4030 Rgba8Snorm = 5,
4031 Rg32f = 6,
4032 Rg16f = 7,
4033 R11fG11fB10f = 8,
4034 R16f = 9,
4035 Rgba16 = 10,
4036 Rgb10A2 = 11,
4037 Rg16 = 12,
4038 Rg8 = 13,
4039 R16 = 14,
4040 R8 = 15,
4041 Rgba16Snorm = 16,
4042 Rg16Snorm = 17,
4043 Rg8Snorm = 18,
4044 R16Snorm = 19,
4045 R8Snorm = 20,
4046 Rgba32i = 21,
4047 Rgba16i = 22,
4048 Rgba8i = 23,
4049 R32i = 24,
4050 Rg32i = 25,
4051 Rg16i = 26,
4052 Rg8i = 27,
4053 R16i = 28,
4054 R8i = 29,
4055 Rgba32ui = 30,
4056 Rgba16ui = 31,
4057 Rgba8ui = 32,
4058 R32ui = 33,
4059 Rgb10a2ui = 34,
4060 Rg32ui = 35,
4061 Rg16ui = 36,
4062 Rg8ui = 37,
4063 R16ui = 38,
4064 R8ui = 39,
4065 R64ui = 40,
4066 R64i = 41,
4301 unknown = 0,
4302 rgba32f = 1,
4303 rgba16f = 2,
4304 r32f = 3,
4305 rgba8 = 4,
4306 rgba8snorm = 5,
4307 rg32f = 6,
4308 rg16f = 7,
4309 r11f_g11f_b10f = 8,
4310 r16f = 9,
4311 rgba16 = 10,
4312 rgb10a2 = 11,
4313 rg16 = 12,
4314 rg8 = 13,
4315 r16 = 14,
4316 r8 = 15,
4317 rgba16snorm = 16,
4318 rg16snorm = 17,
4319 rg8snorm = 18,
4320 r16snorm = 19,
4321 r8snorm = 20,
4322 rgba32i = 21,
4323 rgba16i = 22,
4324 rgba8i = 23,
4325 r32i = 24,
4326 rg32i = 25,
4327 rg16i = 26,
4328 rg8i = 27,
4329 r16i = 28,
4330 r8i = 29,
4331 rgba32ui = 30,
4332 rgba16ui = 31,
4333 rgba8ui = 32,
4334 r32ui = 33,
4335 rgb10a2ui = 34,
4336 rg32ui = 35,
4337 rg16ui = 36,
4338 rg8ui = 37,
4339 r16ui = 38,
4340 r8ui = 39,
4341 r64ui = 40,
4342 r64i = 41,
40674343};
40684344pub const ImageChannelOrder = enum(u32) {
4069 R = 0,
4070 A = 1,
4071 RG = 2,
4072 RA = 3,
4073 RGB = 4,
4074 RGBA = 5,
4075 BGRA = 6,
4076 ARGB = 7,
4077 Intensity = 8,
4078 Luminance = 9,
4079 Rx = 10,
4080 RGx = 11,
4081 RGBx = 12,
4082 Depth = 13,
4083 DepthStencil = 14,
4084 sRGB = 15,
4085 sRGBx = 16,
4086 sRGBA = 17,
4087 sBGRA = 18,
4088 ABGR = 19,
4345 r = 0,
4346 a = 1,
4347 rg = 2,
4348 ra = 3,
4349 rgb = 4,
4350 rgba = 5,
4351 bgra = 6,
4352 argb = 7,
4353 intensity = 8,
4354 luminance = 9,
4355 rx = 10,
4356 r_gx = 11,
4357 rg_bx = 12,
4358 depth = 13,
4359 depth_stencil = 14,
4360 s_rgb = 15,
4361 s_rg_bx = 16,
4362 s_rgba = 17,
4363 s_bgra = 18,
4364 abgr = 19,
40894365};
40904366pub const ImageChannelDataType = enum(u32) {
4091 SnormInt8 = 0,
4092 SnormInt16 = 1,
4093 UnormInt8 = 2,
4094 UnormInt16 = 3,
4095 UnormShort565 = 4,
4096 UnormShort555 = 5,
4097 UnormInt101010 = 6,
4098 SignedInt8 = 7,
4099 SignedInt16 = 8,
4100 SignedInt32 = 9,
4101 UnsignedInt8 = 10,
4102 UnsignedInt16 = 11,
4103 UnsignedInt32 = 12,
4104 HalfFloat = 13,
4105 Float = 14,
4106 UnormInt24 = 15,
4107 UnormInt101010_2 = 16,
4108 UnsignedIntRaw10EXT = 19,
4109 UnsignedIntRaw12EXT = 20,
4367 snorm_int8 = 0,
4368 snorm_int16 = 1,
4369 unorm_int8 = 2,
4370 unorm_int16 = 3,
4371 unorm_short565 = 4,
4372 unorm_short555 = 5,
4373 unorm_int101010 = 6,
4374 signed_int8 = 7,
4375 signed_int16 = 8,
4376 signed_int32 = 9,
4377 unsigned_int8 = 10,
4378 unsigned_int16 = 11,
4379 unsigned_int32 = 12,
4380 half_float = 13,
4381 float = 14,
4382 unorm_int24 = 15,
4383 unorm_int101010_2 = 16,
4384 unorm_int10x6ext = 17,
4385 unsigned_int_raw10ext = 19,
4386 unsigned_int_raw12ext = 20,
4387 unorm_int2_101010ext = 21,
4388 unsigned_int10x6ext = 22,
4389 unsigned_int12x4ext = 23,
4390 unsigned_int14x2ext = 24,
4391 unorm_int12x4ext = 25,
4392 unorm_int14x2ext = 26,
41104393};
41114394pub const FPRoundingMode = enum(u32) {
4112 RTE = 0,
4113 RTZ = 1,
4114 RTP = 2,
4115 RTN = 3,
4395 rte = 0,
4396 rtz = 1,
4397 rtp = 2,
4398 rtn = 3,
41164399};
41174400pub const FPDenormMode = enum(u32) {
4118 Preserve = 0,
4119 FlushToZero = 1,
4401 preserve = 0,
4402 flush_to_zero = 1,
41204403};
41214404pub const QuantizationModes = enum(u32) {
4122 TRN = 0,
4123 TRN_ZERO = 1,
4124 RND = 2,
4125 RND_ZERO = 3,
4126 RND_INF = 4,
4127 RND_MIN_INF = 5,
4128 RND_CONV = 6,
4129 RND_CONV_ODD = 7,
4405 trn = 0,
4406 trn_zero = 1,
4407 rnd = 2,
4408 rnd_zero = 3,
4409 rnd_inf = 4,
4410 rnd_min_inf = 5,
4411 rnd_conv = 6,
4412 rnd_conv_odd = 7,
41304413};
41314414pub const FPOperationMode = enum(u32) {
4132 IEEE = 0,
4133 ALT = 1,
4415 ieee = 0,
4416 alt = 1,
41344417};
41354418pub const OverflowModes = enum(u32) {
4136 WRAP = 0,
4137 SAT = 1,
4138 SAT_ZERO = 2,
4139 SAT_SYM = 3,
4419 wrap = 0,
4420 sat = 1,
4421 sat_zero = 2,
4422 sat_sym = 3,
41404423};
41414424pub const LinkageType = enum(u32) {
4142 Export = 0,
4143 Import = 1,
4144 LinkOnceODR = 2,
4425 @"export" = 0,
4426 import = 1,
4427 link_once_odr = 2,
41454428};
41464429pub const AccessQualifier = enum(u32) {
4147 ReadOnly = 0,
4148 WriteOnly = 1,
4149 ReadWrite = 2,
4430 read_only = 0,
4431 write_only = 1,
4432 read_write = 2,
41504433};
41514434pub const HostAccessQualifier = enum(u32) {
4152 NoneINTEL = 0,
4153 ReadINTEL = 1,
4154 WriteINTEL = 2,
4155 ReadWriteINTEL = 3,
4435 none_intel = 0,
4436 read_intel = 1,
4437 write_intel = 2,
4438 read_write_intel = 3,
41564439};
41574440pub const FunctionParameterAttribute = enum(u32) {
4158 Zext = 0,
4159 Sext = 1,
4160 ByVal = 2,
4161 Sret = 3,
4162 NoAlias = 4,
4163 NoCapture = 5,
4164 NoWrite = 6,
4165 NoReadWrite = 7,
4166 RuntimeAlignedINTEL = 5940,
4441 zext = 0,
4442 sext = 1,
4443 by_val = 2,
4444 sret = 3,
4445 no_alias = 4,
4446 no_capture = 5,
4447 no_write = 6,
4448 no_read_write = 7,
4449 runtime_aligned_intel = 5940,
41674450};
41684451pub const Decoration = enum(u32) {
4169 RelaxedPrecision = 0,
4170 SpecId = 1,
4171 Block = 2,
4172 BufferBlock = 3,
4173 RowMajor = 4,
4174 ColMajor = 5,
4175 ArrayStride = 6,
4176 MatrixStride = 7,
4177 GLSLShared = 8,
4178 GLSLPacked = 9,
4179 CPacked = 10,
4180 BuiltIn = 11,
4181 NoPerspective = 13,
4182 Flat = 14,
4183 Patch = 15,
4184 Centroid = 16,
4185 Sample = 17,
4186 Invariant = 18,
4187 Restrict = 19,
4188 Aliased = 20,
4189 Volatile = 21,
4190 Constant = 22,
4191 Coherent = 23,
4192 NonWritable = 24,
4193 NonReadable = 25,
4194 Uniform = 26,
4195 UniformId = 27,
4196 SaturatedConversion = 28,
4197 Stream = 29,
4198 Location = 30,
4199 Component = 31,
4200 Index = 32,
4201 Binding = 33,
4202 DescriptorSet = 34,
4203 Offset = 35,
4204 XfbBuffer = 36,
4205 XfbStride = 37,
4206 FuncParamAttr = 38,
4207 FPRoundingMode = 39,
4208 FPFastMathMode = 40,
4209 LinkageAttributes = 41,
4210 NoContraction = 42,
4211 InputAttachmentIndex = 43,
4212 Alignment = 44,
4213 MaxByteOffset = 45,
4214 AlignmentId = 46,
4215 MaxByteOffsetId = 47,
4216 NoSignedWrap = 4469,
4217 NoUnsignedWrap = 4470,
4218 WeightTextureQCOM = 4487,
4219 BlockMatchTextureQCOM = 4488,
4220 BlockMatchSamplerQCOM = 4499,
4221 ExplicitInterpAMD = 4999,
4222 NodeSharesPayloadLimitsWithAMDX = 5019,
4223 NodeMaxPayloadsAMDX = 5020,
4224 TrackFinishWritingAMDX = 5078,
4225 PayloadNodeNameAMDX = 5091,
4226 OverrideCoverageNV = 5248,
4227 PassthroughNV = 5250,
4228 ViewportRelativeNV = 5252,
4229 SecondaryViewportRelativeNV = 5256,
4230 PerPrimitiveEXT = 5271,
4231 PerViewNV = 5272,
4232 PerTaskNV = 5273,
4233 PerVertexKHR = 5285,
4234 NonUniform = 5300,
4235 RestrictPointer = 5355,
4236 AliasedPointer = 5356,
4237 HitObjectShaderRecordBufferNV = 5386,
4238 BindlessSamplerNV = 5398,
4239 BindlessImageNV = 5399,
4240 BoundSamplerNV = 5400,
4241 BoundImageNV = 5401,
4242 SIMTCallINTEL = 5599,
4243 ReferencedIndirectlyINTEL = 5602,
4244 ClobberINTEL = 5607,
4245 SideEffectsINTEL = 5608,
4246 VectorComputeVariableINTEL = 5624,
4247 FuncParamIOKindINTEL = 5625,
4248 VectorComputeFunctionINTEL = 5626,
4249 StackCallINTEL = 5627,
4250 GlobalVariableOffsetINTEL = 5628,
4251 CounterBuffer = 5634,
4252 UserSemantic = 5635,
4253 UserTypeGOOGLE = 5636,
4254 FunctionRoundingModeINTEL = 5822,
4255 FunctionDenormModeINTEL = 5823,
4256 RegisterINTEL = 5825,
4257 MemoryINTEL = 5826,
4258 NumbanksINTEL = 5827,
4259 BankwidthINTEL = 5828,
4260 MaxPrivateCopiesINTEL = 5829,
4261 SinglepumpINTEL = 5830,
4262 DoublepumpINTEL = 5831,
4263 MaxReplicatesINTEL = 5832,
4264 SimpleDualPortINTEL = 5833,
4265 MergeINTEL = 5834,
4266 BankBitsINTEL = 5835,
4267 ForcePow2DepthINTEL = 5836,
4268 StridesizeINTEL = 5883,
4269 WordsizeINTEL = 5884,
4270 TrueDualPortINTEL = 5885,
4271 BurstCoalesceINTEL = 5899,
4272 CacheSizeINTEL = 5900,
4273 DontStaticallyCoalesceINTEL = 5901,
4274 PrefetchINTEL = 5902,
4275 StallEnableINTEL = 5905,
4276 FuseLoopsInFunctionINTEL = 5907,
4277 MathOpDSPModeINTEL = 5909,
4278 AliasScopeINTEL = 5914,
4279 NoAliasINTEL = 5915,
4280 InitiationIntervalINTEL = 5917,
4281 MaxConcurrencyINTEL = 5918,
4282 PipelineEnableINTEL = 5919,
4283 BufferLocationINTEL = 5921,
4284 IOPipeStorageINTEL = 5944,
4285 FunctionFloatingPointModeINTEL = 6080,
4286 SingleElementVectorINTEL = 6085,
4287 VectorComputeCallableFunctionINTEL = 6087,
4288 MediaBlockIOINTEL = 6140,
4289 StallFreeINTEL = 6151,
4290 FPMaxErrorDecorationINTEL = 6170,
4291 LatencyControlLabelINTEL = 6172,
4292 LatencyControlConstraintINTEL = 6173,
4293 ConduitKernelArgumentINTEL = 6175,
4294 RegisterMapKernelArgumentINTEL = 6176,
4295 MMHostInterfaceAddressWidthINTEL = 6177,
4296 MMHostInterfaceDataWidthINTEL = 6178,
4297 MMHostInterfaceLatencyINTEL = 6179,
4298 MMHostInterfaceReadWriteModeINTEL = 6180,
4299 MMHostInterfaceMaxBurstINTEL = 6181,
4300 MMHostInterfaceWaitRequestINTEL = 6182,
4301 StableKernelArgumentINTEL = 6183,
4302 HostAccessINTEL = 6188,
4303 InitModeINTEL = 6190,
4304 ImplementInRegisterMapINTEL = 6191,
4305 CacheControlLoadINTEL = 6442,
4306 CacheControlStoreINTEL = 6443,
4307
4308 pub const PerPrimitiveNV = Decoration.PerPrimitiveEXT;
4309 pub const PerVertexNV = Decoration.PerVertexKHR;
4310 pub const NonUniformEXT = Decoration.NonUniform;
4311 pub const RestrictPointerEXT = Decoration.RestrictPointer;
4312 pub const AliasedPointerEXT = Decoration.AliasedPointer;
4313 pub const HlslCounterBufferGOOGLE = Decoration.CounterBuffer;
4314 pub const HlslSemanticGOOGLE = Decoration.UserSemantic;
4452 relaxed_precision = 0,
4453 spec_id = 1,
4454 block = 2,
4455 buffer_block = 3,
4456 row_major = 4,
4457 col_major = 5,
4458 array_stride = 6,
4459 matrix_stride = 7,
4460 glsl_shared = 8,
4461 glsl_packed = 9,
4462 c_packed = 10,
4463 built_in = 11,
4464 no_perspective = 13,
4465 flat = 14,
4466 patch = 15,
4467 centroid = 16,
4468 sample = 17,
4469 invariant = 18,
4470 restrict = 19,
4471 aliased = 20,
4472 @"volatile" = 21,
4473 constant = 22,
4474 coherent = 23,
4475 non_writable = 24,
4476 non_readable = 25,
4477 uniform = 26,
4478 uniform_id = 27,
4479 saturated_conversion = 28,
4480 stream = 29,
4481 location = 30,
4482 component = 31,
4483 index = 32,
4484 binding = 33,
4485 descriptor_set = 34,
4486 offset = 35,
4487 xfb_buffer = 36,
4488 xfb_stride = 37,
4489 func_param_attr = 38,
4490 fp_rounding_mode = 39,
4491 fp_fast_math_mode = 40,
4492 linkage_attributes = 41,
4493 no_contraction = 42,
4494 input_attachment_index = 43,
4495 alignment = 44,
4496 max_byte_offset = 45,
4497 alignment_id = 46,
4498 max_byte_offset_id = 47,
4499 saturated_to_largest_float8normal_conversion_ext = 4216,
4500 no_signed_wrap = 4469,
4501 no_unsigned_wrap = 4470,
4502 weight_texture_qcom = 4487,
4503 block_match_texture_qcom = 4488,
4504 block_match_sampler_qcom = 4499,
4505 explicit_interp_amd = 4999,
4506 node_shares_payload_limits_with_amdx = 5019,
4507 node_max_payloads_amdx = 5020,
4508 track_finish_writing_amdx = 5078,
4509 payload_node_name_amdx = 5091,
4510 payload_node_base_index_amdx = 5098,
4511 payload_node_sparse_array_amdx = 5099,
4512 payload_node_array_size_amdx = 5100,
4513 payload_dispatch_indirect_amdx = 5105,
4514 override_coverage_nv = 5248,
4515 passthrough_nv = 5250,
4516 viewport_relative_nv = 5252,
4517 secondary_viewport_relative_nv = 5256,
4518 per_primitive_ext = 5271,
4519 per_view_nv = 5272,
4520 per_task_nv = 5273,
4521 per_vertex_khr = 5285,
4522 non_uniform = 5300,
4523 restrict_pointer = 5355,
4524 aliased_pointer = 5356,
4525 hit_object_shader_record_buffer_nv = 5386,
4526 bindless_sampler_nv = 5398,
4527 bindless_image_nv = 5399,
4528 bound_sampler_nv = 5400,
4529 bound_image_nv = 5401,
4530 simt_call_intel = 5599,
4531 referenced_indirectly_intel = 5602,
4532 clobber_intel = 5607,
4533 side_effects_intel = 5608,
4534 vector_compute_variable_intel = 5624,
4535 func_param_io_kind_intel = 5625,
4536 vector_compute_function_intel = 5626,
4537 stack_call_intel = 5627,
4538 global_variable_offset_intel = 5628,
4539 counter_buffer = 5634,
4540 user_semantic = 5635,
4541 user_type_google = 5636,
4542 function_rounding_mode_intel = 5822,
4543 function_denorm_mode_intel = 5823,
4544 register_intel = 5825,
4545 memory_intel = 5826,
4546 numbanks_intel = 5827,
4547 bankwidth_intel = 5828,
4548 max_private_copies_intel = 5829,
4549 singlepump_intel = 5830,
4550 doublepump_intel = 5831,
4551 max_replicates_intel = 5832,
4552 simple_dual_port_intel = 5833,
4553 merge_intel = 5834,
4554 bank_bits_intel = 5835,
4555 force_pow2depth_intel = 5836,
4556 stridesize_intel = 5883,
4557 wordsize_intel = 5884,
4558 true_dual_port_intel = 5885,
4559 burst_coalesce_intel = 5899,
4560 cache_size_intel = 5900,
4561 dont_statically_coalesce_intel = 5901,
4562 prefetch_intel = 5902,
4563 stall_enable_intel = 5905,
4564 fuse_loops_in_function_intel = 5907,
4565 math_op_dsp_mode_intel = 5909,
4566 alias_scope_intel = 5914,
4567 no_alias_intel = 5915,
4568 initiation_interval_intel = 5917,
4569 max_concurrency_intel = 5918,
4570 pipeline_enable_intel = 5919,
4571 buffer_location_intel = 5921,
4572 io_pipe_storage_intel = 5944,
4573 function_floating_point_mode_intel = 6080,
4574 single_element_vector_intel = 6085,
4575 vector_compute_callable_function_intel = 6087,
4576 media_block_iointel = 6140,
4577 stall_free_intel = 6151,
4578 fp_max_error_decoration_intel = 6170,
4579 latency_control_label_intel = 6172,
4580 latency_control_constraint_intel = 6173,
4581 conduit_kernel_argument_intel = 6175,
4582 register_map_kernel_argument_intel = 6176,
4583 mm_host_interface_address_width_intel = 6177,
4584 mm_host_interface_data_width_intel = 6178,
4585 mm_host_interface_latency_intel = 6179,
4586 mm_host_interface_read_write_mode_intel = 6180,
4587 mm_host_interface_max_burst_intel = 6181,
4588 mm_host_interface_wait_request_intel = 6182,
4589 stable_kernel_argument_intel = 6183,
4590 host_access_intel = 6188,
4591 init_mode_intel = 6190,
4592 implement_in_register_map_intel = 6191,
4593 cache_control_load_intel = 6442,
4594 cache_control_store_intel = 6443,
43154595
43164596 pub const Extended = union(Decoration) {
4317 RelaxedPrecision,
4318 SpecId: struct { specialization_constant_id: LiteralInteger },
4319 Block,
4320 BufferBlock,
4321 RowMajor,
4322 ColMajor,
4323 ArrayStride: struct { array_stride: LiteralInteger },
4324 MatrixStride: struct { matrix_stride: LiteralInteger },
4325 GLSLShared,
4326 GLSLPacked,
4327 CPacked,
4328 BuiltIn: struct { built_in: BuiltIn },
4329 NoPerspective,
4330 Flat,
4331 Patch,
4332 Centroid,
4333 Sample,
4334 Invariant,
4335 Restrict,
4336 Aliased,
4337 Volatile,
4338 Constant,
4339 Coherent,
4340 NonWritable,
4341 NonReadable,
4342 Uniform,
4343 UniformId: struct { execution: IdScope },
4344 SaturatedConversion,
4345 Stream: struct { stream_number: LiteralInteger },
4346 Location: struct { location: LiteralInteger },
4347 Component: struct { component: LiteralInteger },
4348 Index: struct { index: LiteralInteger },
4349 Binding: struct { binding_point: LiteralInteger },
4350 DescriptorSet: struct { descriptor_set: LiteralInteger },
4351 Offset: struct { byte_offset: LiteralInteger },
4352 XfbBuffer: struct { xfb_buffer_number: LiteralInteger },
4353 XfbStride: struct { xfb_stride: LiteralInteger },
4354 FuncParamAttr: struct { function_parameter_attribute: FunctionParameterAttribute },
4355 FPRoundingMode: struct { fprounding_mode: FPRoundingMode },
4356 FPFastMathMode: struct { fpfast_math_mode: FPFastMathMode },
4357 LinkageAttributes: struct { name: LiteralString, linkage_type: LinkageType },
4358 NoContraction,
4359 InputAttachmentIndex: struct { attachment_index: LiteralInteger },
4360 Alignment: struct { alignment: LiteralInteger },
4361 MaxByteOffset: struct { max_byte_offset: LiteralInteger },
4362 AlignmentId: struct { alignment: IdRef },
4363 MaxByteOffsetId: struct { max_byte_offset: IdRef },
4364 NoSignedWrap,
4365 NoUnsignedWrap,
4366 WeightTextureQCOM,
4367 BlockMatchTextureQCOM,
4368 BlockMatchSamplerQCOM,
4369 ExplicitInterpAMD,
4370 NodeSharesPayloadLimitsWithAMDX: struct { payload_array: IdRef },
4371 NodeMaxPayloadsAMDX: struct { max_number_of_payloads: IdRef },
4372 TrackFinishWritingAMDX,
4373 PayloadNodeNameAMDX: struct { node_name: LiteralString },
4374 OverrideCoverageNV,
4375 PassthroughNV,
4376 ViewportRelativeNV,
4377 SecondaryViewportRelativeNV: struct { offset: LiteralInteger },
4378 PerPrimitiveEXT,
4379 PerViewNV,
4380 PerTaskNV,
4381 PerVertexKHR,
4382 NonUniform,
4383 RestrictPointer,
4384 AliasedPointer,
4385 HitObjectShaderRecordBufferNV,
4386 BindlessSamplerNV,
4387 BindlessImageNV,
4388 BoundSamplerNV,
4389 BoundImageNV,
4390 SIMTCallINTEL: struct { n: LiteralInteger },
4391 ReferencedIndirectlyINTEL,
4392 ClobberINTEL: struct { register: LiteralString },
4393 SideEffectsINTEL,
4394 VectorComputeVariableINTEL,
4395 FuncParamIOKindINTEL: struct { kind: LiteralInteger },
4396 VectorComputeFunctionINTEL,
4397 StackCallINTEL,
4398 GlobalVariableOffsetINTEL: struct { offset: LiteralInteger },
4399 CounterBuffer: struct { counter_buffer: IdRef },
4400 UserSemantic: struct { semantic: LiteralString },
4401 UserTypeGOOGLE: struct { user_type: LiteralString },
4402 FunctionRoundingModeINTEL: struct { target_width: LiteralInteger, fp_rounding_mode: FPRoundingMode },
4403 FunctionDenormModeINTEL: struct { target_width: LiteralInteger, fp_denorm_mode: FPDenormMode },
4404 RegisterINTEL,
4405 MemoryINTEL: struct { memory_type: LiteralString },
4406 NumbanksINTEL: struct { banks: LiteralInteger },
4407 BankwidthINTEL: struct { bank_width: LiteralInteger },
4408 MaxPrivateCopiesINTEL: struct { maximum_copies: LiteralInteger },
4409 SinglepumpINTEL,
4410 DoublepumpINTEL,
4411 MaxReplicatesINTEL: struct { maximum_replicates: LiteralInteger },
4412 SimpleDualPortINTEL,
4413 MergeINTEL: struct { merge_key: LiteralString, merge_type: LiteralString },
4414 BankBitsINTEL: struct { bank_bits: []const LiteralInteger = &.{} },
4415 ForcePow2DepthINTEL: struct { force_key: LiteralInteger },
4416 StridesizeINTEL: struct { stride_size: LiteralInteger },
4417 WordsizeINTEL: struct { word_size: LiteralInteger },
4418 TrueDualPortINTEL,
4419 BurstCoalesceINTEL,
4420 CacheSizeINTEL: struct { cache_size_in_bytes: LiteralInteger },
4421 DontStaticallyCoalesceINTEL,
4422 PrefetchINTEL: struct { prefetcher_size_in_bytes: LiteralInteger },
4423 StallEnableINTEL,
4424 FuseLoopsInFunctionINTEL,
4425 MathOpDSPModeINTEL: struct { mode: LiteralInteger, propagate: LiteralInteger },
4426 AliasScopeINTEL: struct { aliasing_scopes_list: IdRef },
4427 NoAliasINTEL: struct { aliasing_scopes_list: IdRef },
4428 InitiationIntervalINTEL: struct { cycles: LiteralInteger },
4429 MaxConcurrencyINTEL: struct { invocations: LiteralInteger },
4430 PipelineEnableINTEL: struct { enable: LiteralInteger },
4431 BufferLocationINTEL: struct { buffer_location_id: LiteralInteger },
4432 IOPipeStorageINTEL: struct { io_pipe_id: LiteralInteger },
4433 FunctionFloatingPointModeINTEL: struct { target_width: LiteralInteger, fp_operation_mode: FPOperationMode },
4434 SingleElementVectorINTEL,
4435 VectorComputeCallableFunctionINTEL,
4436 MediaBlockIOINTEL,
4437 StallFreeINTEL,
4438 FPMaxErrorDecorationINTEL: struct { max_error: LiteralFloat },
4439 LatencyControlLabelINTEL: struct { latency_label: LiteralInteger },
4440 LatencyControlConstraintINTEL: struct { relative_to: LiteralInteger, control_type: LiteralInteger, relative_cycle: LiteralInteger },
4441 ConduitKernelArgumentINTEL,
4442 RegisterMapKernelArgumentINTEL,
4443 MMHostInterfaceAddressWidthINTEL: struct { addresswidth: LiteralInteger },
4444 MMHostInterfaceDataWidthINTEL: struct { datawidth: LiteralInteger },
4445 MMHostInterfaceLatencyINTEL: struct { latency: LiteralInteger },
4446 MMHostInterfaceReadWriteModeINTEL: struct { readwritemode: AccessQualifier },
4447 MMHostInterfaceMaxBurstINTEL: struct { maxburstcount: LiteralInteger },
4448 MMHostInterfaceWaitRequestINTEL: struct { waitrequest: LiteralInteger },
4449 StableKernelArgumentINTEL,
4450 HostAccessINTEL: struct { access: HostAccessQualifier, name: LiteralString },
4451 InitModeINTEL: struct { trigger: InitializationModeQualifier },
4452 ImplementInRegisterMapINTEL: struct { value: LiteralInteger },
4453 CacheControlLoadINTEL: struct { cache_level: LiteralInteger, cache_control: LoadCacheControl },
4454 CacheControlStoreINTEL: struct { cache_level: LiteralInteger, cache_control: StoreCacheControl },
4597 relaxed_precision,
4598 spec_id: struct { specialization_constant_id: LiteralInteger },
4599 block,
4600 buffer_block,
4601 row_major,
4602 col_major,
4603 array_stride: struct { array_stride: LiteralInteger },
4604 matrix_stride: struct { matrix_stride: LiteralInteger },
4605 glsl_shared,
4606 glsl_packed,
4607 c_packed,
4608 built_in: struct { built_in: BuiltIn },
4609 no_perspective,
4610 flat,
4611 patch,
4612 centroid,
4613 sample,
4614 invariant,
4615 restrict,
4616 aliased,
4617 @"volatile",
4618 constant,
4619 coherent,
4620 non_writable,
4621 non_readable,
4622 uniform,
4623 uniform_id: struct { execution: Id },
4624 saturated_conversion,
4625 stream: struct { stream_number: LiteralInteger },
4626 location: struct { location: LiteralInteger },
4627 component: struct { component: LiteralInteger },
4628 index: struct { index: LiteralInteger },
4629 binding: struct { binding_point: LiteralInteger },
4630 descriptor_set: struct { descriptor_set: LiteralInteger },
4631 offset: struct { byte_offset: LiteralInteger },
4632 xfb_buffer: struct { xfb_buffer_number: LiteralInteger },
4633 xfb_stride: struct { xfb_stride: LiteralInteger },
4634 func_param_attr: struct { function_parameter_attribute: FunctionParameterAttribute },
4635 fp_rounding_mode: struct { fp_rounding_mode: FPRoundingMode },
4636 fp_fast_math_mode: struct { fp_fast_math_mode: FPFastMathMode },
4637 linkage_attributes: struct { name: LiteralString, linkage_type: LinkageType },
4638 no_contraction,
4639 input_attachment_index: struct { attachment_index: LiteralInteger },
4640 alignment: struct { alignment: LiteralInteger },
4641 max_byte_offset: struct { max_byte_offset: LiteralInteger },
4642 alignment_id: struct { alignment: Id },
4643 max_byte_offset_id: struct { max_byte_offset: Id },
4644 saturated_to_largest_float8normal_conversion_ext,
4645 no_signed_wrap,
4646 no_unsigned_wrap,
4647 weight_texture_qcom,
4648 block_match_texture_qcom,
4649 block_match_sampler_qcom,
4650 explicit_interp_amd,
4651 node_shares_payload_limits_with_amdx: struct { payload_type: Id },
4652 node_max_payloads_amdx: struct { max_number_of_payloads: Id },
4653 track_finish_writing_amdx,
4654 payload_node_name_amdx: struct { node_name: Id },
4655 payload_node_base_index_amdx: struct { base_index: Id },
4656 payload_node_sparse_array_amdx,
4657 payload_node_array_size_amdx: struct { array_size: Id },
4658 payload_dispatch_indirect_amdx,
4659 override_coverage_nv,
4660 passthrough_nv,
4661 viewport_relative_nv,
4662 secondary_viewport_relative_nv: struct { offset: LiteralInteger },
4663 per_primitive_ext,
4664 per_view_nv,
4665 per_task_nv,
4666 per_vertex_khr,
4667 non_uniform,
4668 restrict_pointer,
4669 aliased_pointer,
4670 hit_object_shader_record_buffer_nv,
4671 bindless_sampler_nv,
4672 bindless_image_nv,
4673 bound_sampler_nv,
4674 bound_image_nv,
4675 simt_call_intel: struct { n: LiteralInteger },
4676 referenced_indirectly_intel,
4677 clobber_intel: struct { register: LiteralString },
4678 side_effects_intel,
4679 vector_compute_variable_intel,
4680 func_param_io_kind_intel: struct { kind: LiteralInteger },
4681 vector_compute_function_intel,
4682 stack_call_intel,
4683 global_variable_offset_intel: struct { offset: LiteralInteger },
4684 counter_buffer: struct { counter_buffer: Id },
4685 user_semantic: struct { semantic: LiteralString },
4686 user_type_google: struct { user_type: LiteralString },
4687 function_rounding_mode_intel: struct { target_width: LiteralInteger, fp_rounding_mode: FPRoundingMode },
4688 function_denorm_mode_intel: struct { target_width: LiteralInteger, fp_denorm_mode: FPDenormMode },
4689 register_intel,
4690 memory_intel: struct { memory_type: LiteralString },
4691 numbanks_intel: struct { banks: LiteralInteger },
4692 bankwidth_intel: struct { bank_width: LiteralInteger },
4693 max_private_copies_intel: struct { maximum_copies: LiteralInteger },
4694 singlepump_intel,
4695 doublepump_intel,
4696 max_replicates_intel: struct { maximum_replicates: LiteralInteger },
4697 simple_dual_port_intel,
4698 merge_intel: struct { merge_key: LiteralString, merge_type: LiteralString },
4699 bank_bits_intel: struct { bank_bits: []const LiteralInteger = &.{} },
4700 force_pow2depth_intel: struct { force_key: LiteralInteger },
4701 stridesize_intel: struct { stride_size: LiteralInteger },
4702 wordsize_intel: struct { word_size: LiteralInteger },
4703 true_dual_port_intel,
4704 burst_coalesce_intel,
4705 cache_size_intel: struct { cache_size_in_bytes: LiteralInteger },
4706 dont_statically_coalesce_intel,
4707 prefetch_intel: struct { prefetcher_size_in_bytes: LiteralInteger },
4708 stall_enable_intel,
4709 fuse_loops_in_function_intel,
4710 math_op_dsp_mode_intel: struct { mode: LiteralInteger, propagate: LiteralInteger },
4711 alias_scope_intel: struct { aliasing_scopes_list: Id },
4712 no_alias_intel: struct { aliasing_scopes_list: Id },
4713 initiation_interval_intel: struct { cycles: LiteralInteger },
4714 max_concurrency_intel: struct { invocations: LiteralInteger },
4715 pipeline_enable_intel: struct { enable: LiteralInteger },
4716 buffer_location_intel: struct { buffer_location_id: LiteralInteger },
4717 io_pipe_storage_intel: struct { io_pipe_id: LiteralInteger },
4718 function_floating_point_mode_intel: struct { target_width: LiteralInteger, fp_operation_mode: FPOperationMode },
4719 single_element_vector_intel,
4720 vector_compute_callable_function_intel,
4721 media_block_iointel,
4722 stall_free_intel,
4723 fp_max_error_decoration_intel: struct { max_error: LiteralFloat },
4724 latency_control_label_intel: struct { latency_label: LiteralInteger },
4725 latency_control_constraint_intel: struct { relative_to: LiteralInteger, control_type: LiteralInteger, relative_cycle: LiteralInteger },
4726 conduit_kernel_argument_intel,
4727 register_map_kernel_argument_intel,
4728 mm_host_interface_address_width_intel: struct { address_width: LiteralInteger },
4729 mm_host_interface_data_width_intel: struct { data_width: LiteralInteger },
4730 mm_host_interface_latency_intel: struct { latency: LiteralInteger },
4731 mm_host_interface_read_write_mode_intel: struct { read_write_mode: AccessQualifier },
4732 mm_host_interface_max_burst_intel: struct { max_burst_count: LiteralInteger },
4733 mm_host_interface_wait_request_intel: struct { waitrequest: LiteralInteger },
4734 stable_kernel_argument_intel,
4735 host_access_intel: struct { access: HostAccessQualifier, name: LiteralString },
4736 init_mode_intel: struct { trigger: InitializationModeQualifier },
4737 implement_in_register_map_intel: struct { value: LiteralInteger },
4738 cache_control_load_intel: struct { cache_level: LiteralInteger, cache_control: LoadCacheControl },
4739 cache_control_store_intel: struct { cache_level: LiteralInteger, cache_control: StoreCacheControl },
44554740 };
44564741};
44574742pub const BuiltIn = enum(u32) {
4458 Position = 0,
4459 PointSize = 1,
4460 ClipDistance = 3,
4461 CullDistance = 4,
4462 VertexId = 5,
4463 InstanceId = 6,
4464 PrimitiveId = 7,
4465 InvocationId = 8,
4466 Layer = 9,
4467 ViewportIndex = 10,
4468 TessLevelOuter = 11,
4469 TessLevelInner = 12,
4470 TessCoord = 13,
4471 PatchVertices = 14,
4472 FragCoord = 15,
4473 PointCoord = 16,
4474 FrontFacing = 17,
4475 SampleId = 18,
4476 SamplePosition = 19,
4477 SampleMask = 20,
4478 FragDepth = 22,
4479 HelperInvocation = 23,
4480 NumWorkgroups = 24,
4481 WorkgroupSize = 25,
4482 WorkgroupId = 26,
4483 LocalInvocationId = 27,
4484 GlobalInvocationId = 28,
4485 LocalInvocationIndex = 29,
4486 WorkDim = 30,
4487 GlobalSize = 31,
4488 EnqueuedWorkgroupSize = 32,
4489 GlobalOffset = 33,
4490 GlobalLinearId = 34,
4491 SubgroupSize = 36,
4492 SubgroupMaxSize = 37,
4493 NumSubgroups = 38,
4494 NumEnqueuedSubgroups = 39,
4495 SubgroupId = 40,
4496 SubgroupLocalInvocationId = 41,
4497 VertexIndex = 42,
4498 InstanceIndex = 43,
4499 CoreIDARM = 4160,
4500 CoreCountARM = 4161,
4501 CoreMaxIDARM = 4162,
4502 WarpIDARM = 4163,
4503 WarpMaxIDARM = 4164,
4504 SubgroupEqMask = 4416,
4505 SubgroupGeMask = 4417,
4506 SubgroupGtMask = 4418,
4507 SubgroupLeMask = 4419,
4508 SubgroupLtMask = 4420,
4509 BaseVertex = 4424,
4510 BaseInstance = 4425,
4511 DrawIndex = 4426,
4512 PrimitiveShadingRateKHR = 4432,
4513 DeviceIndex = 4438,
4514 ViewIndex = 4440,
4515 ShadingRateKHR = 4444,
4516 BaryCoordNoPerspAMD = 4992,
4517 BaryCoordNoPerspCentroidAMD = 4993,
4518 BaryCoordNoPerspSampleAMD = 4994,
4519 BaryCoordSmoothAMD = 4995,
4520 BaryCoordSmoothCentroidAMD = 4996,
4521 BaryCoordSmoothSampleAMD = 4997,
4522 BaryCoordPullModelAMD = 4998,
4523 FragStencilRefEXT = 5014,
4524 CoalescedInputCountAMDX = 5021,
4525 ShaderIndexAMDX = 5073,
4526 ViewportMaskNV = 5253,
4527 SecondaryPositionNV = 5257,
4528 SecondaryViewportMaskNV = 5258,
4529 PositionPerViewNV = 5261,
4530 ViewportMaskPerViewNV = 5262,
4531 FullyCoveredEXT = 5264,
4532 TaskCountNV = 5274,
4533 PrimitiveCountNV = 5275,
4534 PrimitiveIndicesNV = 5276,
4535 ClipDistancePerViewNV = 5277,
4536 CullDistancePerViewNV = 5278,
4537 LayerPerViewNV = 5279,
4538 MeshViewCountNV = 5280,
4539 MeshViewIndicesNV = 5281,
4540 BaryCoordKHR = 5286,
4541 BaryCoordNoPerspKHR = 5287,
4542 FragSizeEXT = 5292,
4543 FragInvocationCountEXT = 5293,
4544 PrimitivePointIndicesEXT = 5294,
4545 PrimitiveLineIndicesEXT = 5295,
4546 PrimitiveTriangleIndicesEXT = 5296,
4547 CullPrimitiveEXT = 5299,
4548 LaunchIdKHR = 5319,
4549 LaunchSizeKHR = 5320,
4550 WorldRayOriginKHR = 5321,
4551 WorldRayDirectionKHR = 5322,
4552 ObjectRayOriginKHR = 5323,
4553 ObjectRayDirectionKHR = 5324,
4554 RayTminKHR = 5325,
4555 RayTmaxKHR = 5326,
4556 InstanceCustomIndexKHR = 5327,
4557 ObjectToWorldKHR = 5330,
4558 WorldToObjectKHR = 5331,
4559 HitTNV = 5332,
4560 HitKindKHR = 5333,
4561 CurrentRayTimeNV = 5334,
4562 HitTriangleVertexPositionsKHR = 5335,
4563 HitMicroTriangleVertexPositionsNV = 5337,
4564 HitMicroTriangleVertexBarycentricsNV = 5344,
4565 IncomingRayFlagsKHR = 5351,
4566 RayGeometryIndexKHR = 5352,
4567 WarpsPerSMNV = 5374,
4568 SMCountNV = 5375,
4569 WarpIDNV = 5376,
4570 SMIDNV = 5377,
4571 HitKindFrontFacingMicroTriangleNV = 5405,
4572 HitKindBackFacingMicroTriangleNV = 5406,
4573 CullMaskKHR = 6021,
4574
4575 pub const SubgroupEqMaskKHR = BuiltIn.SubgroupEqMask;
4576 pub const SubgroupGeMaskKHR = BuiltIn.SubgroupGeMask;
4577 pub const SubgroupGtMaskKHR = BuiltIn.SubgroupGtMask;
4578 pub const SubgroupLeMaskKHR = BuiltIn.SubgroupLeMask;
4579 pub const SubgroupLtMaskKHR = BuiltIn.SubgroupLtMask;
4580 pub const BaryCoordNV = BuiltIn.BaryCoordKHR;
4581 pub const BaryCoordNoPerspNV = BuiltIn.BaryCoordNoPerspKHR;
4582 pub const FragmentSizeNV = BuiltIn.FragSizeEXT;
4583 pub const InvocationsPerPixelNV = BuiltIn.FragInvocationCountEXT;
4584 pub const LaunchIdNV = BuiltIn.LaunchIdKHR;
4585 pub const LaunchSizeNV = BuiltIn.LaunchSizeKHR;
4586 pub const WorldRayOriginNV = BuiltIn.WorldRayOriginKHR;
4587 pub const WorldRayDirectionNV = BuiltIn.WorldRayDirectionKHR;
4588 pub const ObjectRayOriginNV = BuiltIn.ObjectRayOriginKHR;
4589 pub const ObjectRayDirectionNV = BuiltIn.ObjectRayDirectionKHR;
4590 pub const RayTminNV = BuiltIn.RayTminKHR;
4591 pub const RayTmaxNV = BuiltIn.RayTmaxKHR;
4592 pub const InstanceCustomIndexNV = BuiltIn.InstanceCustomIndexKHR;
4593 pub const ObjectToWorldNV = BuiltIn.ObjectToWorldKHR;
4594 pub const WorldToObjectNV = BuiltIn.WorldToObjectKHR;
4595 pub const HitKindNV = BuiltIn.HitKindKHR;
4596 pub const IncomingRayFlagsNV = BuiltIn.IncomingRayFlagsKHR;
4743 position = 0,
4744 point_size = 1,
4745 clip_distance = 3,
4746 cull_distance = 4,
4747 vertex_id = 5,
4748 instance_id = 6,
4749 primitive_id = 7,
4750 invocation_id = 8,
4751 layer = 9,
4752 viewport_index = 10,
4753 tess_level_outer = 11,
4754 tess_level_inner = 12,
4755 tess_coord = 13,
4756 patch_vertices = 14,
4757 frag_coord = 15,
4758 point_coord = 16,
4759 front_facing = 17,
4760 sample_id = 18,
4761 sample_position = 19,
4762 sample_mask = 20,
4763 frag_depth = 22,
4764 helper_invocation = 23,
4765 num_workgroups = 24,
4766 workgroup_size = 25,
4767 workgroup_id = 26,
4768 local_invocation_id = 27,
4769 global_invocation_id = 28,
4770 local_invocation_index = 29,
4771 work_dim = 30,
4772 global_size = 31,
4773 enqueued_workgroup_size = 32,
4774 global_offset = 33,
4775 global_linear_id = 34,
4776 subgroup_size = 36,
4777 subgroup_max_size = 37,
4778 num_subgroups = 38,
4779 num_enqueued_subgroups = 39,
4780 subgroup_id = 40,
4781 subgroup_local_invocation_id = 41,
4782 vertex_index = 42,
4783 instance_index = 43,
4784 core_idarm = 4160,
4785 core_count_arm = 4161,
4786 core_max_idarm = 4162,
4787 warp_idarm = 4163,
4788 warp_max_idarm = 4164,
4789 subgroup_eq_mask = 4416,
4790 subgroup_ge_mask = 4417,
4791 subgroup_gt_mask = 4418,
4792 subgroup_le_mask = 4419,
4793 subgroup_lt_mask = 4420,
4794 base_vertex = 4424,
4795 base_instance = 4425,
4796 draw_index = 4426,
4797 primitive_shading_rate_khr = 4432,
4798 device_index = 4438,
4799 view_index = 4440,
4800 shading_rate_khr = 4444,
4801 tile_offset_qcom = 4492,
4802 tile_dimension_qcom = 4493,
4803 tile_apron_size_qcom = 4494,
4804 bary_coord_no_persp_amd = 4992,
4805 bary_coord_no_persp_centroid_amd = 4993,
4806 bary_coord_no_persp_sample_amd = 4994,
4807 bary_coord_smooth_amd = 4995,
4808 bary_coord_smooth_centroid_amd = 4996,
4809 bary_coord_smooth_sample_amd = 4997,
4810 bary_coord_pull_model_amd = 4998,
4811 frag_stencil_ref_ext = 5014,
4812 remaining_recursion_levels_amdx = 5021,
4813 shader_index_amdx = 5073,
4814 viewport_mask_nv = 5253,
4815 secondary_position_nv = 5257,
4816 secondary_viewport_mask_nv = 5258,
4817 position_per_view_nv = 5261,
4818 viewport_mask_per_view_nv = 5262,
4819 fully_covered_ext = 5264,
4820 task_count_nv = 5274,
4821 primitive_count_nv = 5275,
4822 primitive_indices_nv = 5276,
4823 clip_distance_per_view_nv = 5277,
4824 cull_distance_per_view_nv = 5278,
4825 layer_per_view_nv = 5279,
4826 mesh_view_count_nv = 5280,
4827 mesh_view_indices_nv = 5281,
4828 bary_coord_khr = 5286,
4829 bary_coord_no_persp_khr = 5287,
4830 frag_size_ext = 5292,
4831 frag_invocation_count_ext = 5293,
4832 primitive_point_indices_ext = 5294,
4833 primitive_line_indices_ext = 5295,
4834 primitive_triangle_indices_ext = 5296,
4835 cull_primitive_ext = 5299,
4836 launch_id_khr = 5319,
4837 launch_size_khr = 5320,
4838 world_ray_origin_khr = 5321,
4839 world_ray_direction_khr = 5322,
4840 object_ray_origin_khr = 5323,
4841 object_ray_direction_khr = 5324,
4842 ray_tmin_khr = 5325,
4843 ray_tmax_khr = 5326,
4844 instance_custom_index_khr = 5327,
4845 object_to_world_khr = 5330,
4846 world_to_object_khr = 5331,
4847 hit_tnv = 5332,
4848 hit_kind_khr = 5333,
4849 current_ray_time_nv = 5334,
4850 hit_triangle_vertex_positions_khr = 5335,
4851 hit_micro_triangle_vertex_positions_nv = 5337,
4852 hit_micro_triangle_vertex_barycentrics_nv = 5344,
4853 incoming_ray_flags_khr = 5351,
4854 ray_geometry_index_khr = 5352,
4855 hit_is_sphere_nv = 5359,
4856 hit_is_lssnv = 5360,
4857 hit_sphere_position_nv = 5361,
4858 warps_per_smnv = 5374,
4859 sm_count_nv = 5375,
4860 warp_idnv = 5376,
4861 smidnv = 5377,
4862 hit_lss_positions_nv = 5396,
4863 hit_kind_front_facing_micro_triangle_nv = 5405,
4864 hit_kind_back_facing_micro_triangle_nv = 5406,
4865 hit_sphere_radius_nv = 5420,
4866 hit_lss_radii_nv = 5421,
4867 cluster_idnv = 5436,
4868 cull_mask_khr = 6021,
45974869};
45984870pub const Scope = enum(u32) {
4599 CrossDevice = 0,
4600 Device = 1,
4601 Workgroup = 2,
4602 Subgroup = 3,
4603 Invocation = 4,
4604 QueueFamily = 5,
4605 ShaderCallKHR = 6,
4606
4607 pub const QueueFamilyKHR = Scope.QueueFamily;
4871 cross_device = 0,
4872 device = 1,
4873 workgroup = 2,
4874 subgroup = 3,
4875 invocation = 4,
4876 queue_family = 5,
4877 shader_call_khr = 6,
46084878};
46094879pub const GroupOperation = enum(u32) {
4610 Reduce = 0,
4611 InclusiveScan = 1,
4612 ExclusiveScan = 2,
4613 ClusteredReduce = 3,
4614 PartitionedReduceNV = 6,
4615 PartitionedInclusiveScanNV = 7,
4616 PartitionedExclusiveScanNV = 8,
4880 reduce = 0,
4881 inclusive_scan = 1,
4882 exclusive_scan = 2,
4883 clustered_reduce = 3,
4884 partitioned_reduce_nv = 6,
4885 partitioned_inclusive_scan_nv = 7,
4886 partitioned_exclusive_scan_nv = 8,
46174887};
46184888pub const KernelEnqueueFlags = enum(u32) {
4619 NoWait = 0,
4620 WaitKernel = 1,
4621 WaitWorkGroup = 2,
4889 no_wait = 0,
4890 wait_kernel = 1,
4891 wait_work_group = 2,
46224892};
46234893pub const Capability = enum(u32) {
4624 Matrix = 0,
4625 Shader = 1,
4626 Geometry = 2,
4627 Tessellation = 3,
4628 Addresses = 4,
4629 Linkage = 5,
4630 Kernel = 6,
4631 Vector16 = 7,
4632 Float16Buffer = 8,
4633 Float16 = 9,
4634 Float64 = 10,
4635 Int64 = 11,
4636 Int64Atomics = 12,
4637 ImageBasic = 13,
4638 ImageReadWrite = 14,
4639 ImageMipmap = 15,
4640 Pipes = 17,
4641 Groups = 18,
4642 DeviceEnqueue = 19,
4643 LiteralSampler = 20,
4644 AtomicStorage = 21,
4645 Int16 = 22,
4646 TessellationPointSize = 23,
4647 GeometryPointSize = 24,
4648 ImageGatherExtended = 25,
4649 StorageImageMultisample = 27,
4650 UniformBufferArrayDynamicIndexing = 28,
4651 SampledImageArrayDynamicIndexing = 29,
4652 StorageBufferArrayDynamicIndexing = 30,
4653 StorageImageArrayDynamicIndexing = 31,
4654 ClipDistance = 32,
4655 CullDistance = 33,
4656 ImageCubeArray = 34,
4657 SampleRateShading = 35,
4658 ImageRect = 36,
4659 SampledRect = 37,
4660 GenericPointer = 38,
4661 Int8 = 39,
4662 InputAttachment = 40,
4663 SparseResidency = 41,
4664 MinLod = 42,
4665 Sampled1D = 43,
4666 Image1D = 44,
4667 SampledCubeArray = 45,
4668 SampledBuffer = 46,
4669 ImageBuffer = 47,
4670 ImageMSArray = 48,
4671 StorageImageExtendedFormats = 49,
4672 ImageQuery = 50,
4673 DerivativeControl = 51,
4674 InterpolationFunction = 52,
4675 TransformFeedback = 53,
4676 GeometryStreams = 54,
4677 StorageImageReadWithoutFormat = 55,
4678 StorageImageWriteWithoutFormat = 56,
4679 MultiViewport = 57,
4680 SubgroupDispatch = 58,
4681 NamedBarrier = 59,
4682 PipeStorage = 60,
4683 GroupNonUniform = 61,
4684 GroupNonUniformVote = 62,
4685 GroupNonUniformArithmetic = 63,
4686 GroupNonUniformBallot = 64,
4687 GroupNonUniformShuffle = 65,
4688 GroupNonUniformShuffleRelative = 66,
4689 GroupNonUniformClustered = 67,
4690 GroupNonUniformQuad = 68,
4691 ShaderLayer = 69,
4692 ShaderViewportIndex = 70,
4693 UniformDecoration = 71,
4694 CoreBuiltinsARM = 4165,
4695 TileImageColorReadAccessEXT = 4166,
4696 TileImageDepthReadAccessEXT = 4167,
4697 TileImageStencilReadAccessEXT = 4168,
4698 FragmentShadingRateKHR = 4422,
4699 SubgroupBallotKHR = 4423,
4700 DrawParameters = 4427,
4701 WorkgroupMemoryExplicitLayoutKHR = 4428,
4702 WorkgroupMemoryExplicitLayout8BitAccessKHR = 4429,
4703 WorkgroupMemoryExplicitLayout16BitAccessKHR = 4430,
4704 SubgroupVoteKHR = 4431,
4705 StorageBuffer16BitAccess = 4433,
4706 UniformAndStorageBuffer16BitAccess = 4434,
4707 StoragePushConstant16 = 4435,
4708 StorageInputOutput16 = 4436,
4709 DeviceGroup = 4437,
4710 MultiView = 4439,
4711 VariablePointersStorageBuffer = 4441,
4712 VariablePointers = 4442,
4713 AtomicStorageOps = 4445,
4714 SampleMaskPostDepthCoverage = 4447,
4715 StorageBuffer8BitAccess = 4448,
4716 UniformAndStorageBuffer8BitAccess = 4449,
4717 StoragePushConstant8 = 4450,
4718 DenormPreserve = 4464,
4719 DenormFlushToZero = 4465,
4720 SignedZeroInfNanPreserve = 4466,
4721 RoundingModeRTE = 4467,
4722 RoundingModeRTZ = 4468,
4723 RayQueryProvisionalKHR = 4471,
4724 RayQueryKHR = 4472,
4725 RayTraversalPrimitiveCullingKHR = 4478,
4726 RayTracingKHR = 4479,
4727 TextureSampleWeightedQCOM = 4484,
4728 TextureBoxFilterQCOM = 4485,
4729 TextureBlockMatchQCOM = 4486,
4730 TextureBlockMatch2QCOM = 4498,
4731 Float16ImageAMD = 5008,
4732 ImageGatherBiasLodAMD = 5009,
4733 FragmentMaskAMD = 5010,
4734 StencilExportEXT = 5013,
4735 ImageReadWriteLodAMD = 5015,
4736 Int64ImageEXT = 5016,
4737 ShaderClockKHR = 5055,
4738 ShaderEnqueueAMDX = 5067,
4739 QuadControlKHR = 5087,
4740 SampleMaskOverrideCoverageNV = 5249,
4741 GeometryShaderPassthroughNV = 5251,
4742 ShaderViewportIndexLayerEXT = 5254,
4743 ShaderViewportMaskNV = 5255,
4744 ShaderStereoViewNV = 5259,
4745 PerViewAttributesNV = 5260,
4746 FragmentFullyCoveredEXT = 5265,
4747 MeshShadingNV = 5266,
4748 ImageFootprintNV = 5282,
4749 MeshShadingEXT = 5283,
4750 FragmentBarycentricKHR = 5284,
4751 ComputeDerivativeGroupQuadsNV = 5288,
4752 FragmentDensityEXT = 5291,
4753 GroupNonUniformPartitionedNV = 5297,
4754 ShaderNonUniform = 5301,
4755 RuntimeDescriptorArray = 5302,
4756 InputAttachmentArrayDynamicIndexing = 5303,
4757 UniformTexelBufferArrayDynamicIndexing = 5304,
4758 StorageTexelBufferArrayDynamicIndexing = 5305,
4759 UniformBufferArrayNonUniformIndexing = 5306,
4760 SampledImageArrayNonUniformIndexing = 5307,
4761 StorageBufferArrayNonUniformIndexing = 5308,
4762 StorageImageArrayNonUniformIndexing = 5309,
4763 InputAttachmentArrayNonUniformIndexing = 5310,
4764 UniformTexelBufferArrayNonUniformIndexing = 5311,
4765 StorageTexelBufferArrayNonUniformIndexing = 5312,
4766 RayTracingPositionFetchKHR = 5336,
4767 RayTracingNV = 5340,
4768 RayTracingMotionBlurNV = 5341,
4769 VulkanMemoryModel = 5345,
4770 VulkanMemoryModelDeviceScope = 5346,
4771 PhysicalStorageBufferAddresses = 5347,
4772 ComputeDerivativeGroupLinearNV = 5350,
4773 RayTracingProvisionalKHR = 5353,
4774 CooperativeMatrixNV = 5357,
4775 FragmentShaderSampleInterlockEXT = 5363,
4776 FragmentShaderShadingRateInterlockEXT = 5372,
4777 ShaderSMBuiltinsNV = 5373,
4778 FragmentShaderPixelInterlockEXT = 5378,
4779 DemoteToHelperInvocation = 5379,
4780 DisplacementMicromapNV = 5380,
4781 RayTracingOpacityMicromapEXT = 5381,
4782 ShaderInvocationReorderNV = 5383,
4783 BindlessTextureNV = 5390,
4784 RayQueryPositionFetchKHR = 5391,
4785 AtomicFloat16VectorNV = 5404,
4786 RayTracingDisplacementMicromapNV = 5409,
4787 RawAccessChainsNV = 5414,
4788 SubgroupShuffleINTEL = 5568,
4789 SubgroupBufferBlockIOINTEL = 5569,
4790 SubgroupImageBlockIOINTEL = 5570,
4791 SubgroupImageMediaBlockIOINTEL = 5579,
4792 RoundToInfinityINTEL = 5582,
4793 FloatingPointModeINTEL = 5583,
4794 IntegerFunctions2INTEL = 5584,
4795 FunctionPointersINTEL = 5603,
4796 IndirectReferencesINTEL = 5604,
4797 AsmINTEL = 5606,
4798 AtomicFloat32MinMaxEXT = 5612,
4799 AtomicFloat64MinMaxEXT = 5613,
4800 AtomicFloat16MinMaxEXT = 5616,
4801 VectorComputeINTEL = 5617,
4802 VectorAnyINTEL = 5619,
4803 ExpectAssumeKHR = 5629,
4804 SubgroupAvcMotionEstimationINTEL = 5696,
4805 SubgroupAvcMotionEstimationIntraINTEL = 5697,
4806 SubgroupAvcMotionEstimationChromaINTEL = 5698,
4807 VariableLengthArrayINTEL = 5817,
4808 FunctionFloatControlINTEL = 5821,
4809 FPGAMemoryAttributesINTEL = 5824,
4810 FPFastMathModeINTEL = 5837,
4811 ArbitraryPrecisionIntegersINTEL = 5844,
4812 ArbitraryPrecisionFloatingPointINTEL = 5845,
4813 UnstructuredLoopControlsINTEL = 5886,
4814 FPGALoopControlsINTEL = 5888,
4815 KernelAttributesINTEL = 5892,
4816 FPGAKernelAttributesINTEL = 5897,
4817 FPGAMemoryAccessesINTEL = 5898,
4818 FPGAClusterAttributesINTEL = 5904,
4819 LoopFuseINTEL = 5906,
4820 FPGADSPControlINTEL = 5908,
4821 MemoryAccessAliasingINTEL = 5910,
4822 FPGAInvocationPipeliningAttributesINTEL = 5916,
4823 FPGABufferLocationINTEL = 5920,
4824 ArbitraryPrecisionFixedPointINTEL = 5922,
4825 USMStorageClassesINTEL = 5935,
4826 RuntimeAlignedAttributeINTEL = 5939,
4827 IOPipesINTEL = 5943,
4828 BlockingPipesINTEL = 5945,
4829 FPGARegINTEL = 5948,
4830 DotProductInputAll = 6016,
4831 DotProductInput4x8Bit = 6017,
4832 DotProductInput4x8BitPacked = 6018,
4833 DotProduct = 6019,
4834 RayCullMaskKHR = 6020,
4835 CooperativeMatrixKHR = 6022,
4836 BitInstructions = 6025,
4837 GroupNonUniformRotateKHR = 6026,
4838 FloatControls2 = 6029,
4839 AtomicFloat32AddEXT = 6033,
4840 AtomicFloat64AddEXT = 6034,
4841 LongCompositesINTEL = 6089,
4842 OptNoneINTEL = 6094,
4843 AtomicFloat16AddEXT = 6095,
4844 DebugInfoModuleINTEL = 6114,
4845 BFloat16ConversionINTEL = 6115,
4846 SplitBarrierINTEL = 6141,
4847 FPGAClusterAttributesV2INTEL = 6150,
4848 FPGAKernelAttributesv2INTEL = 6161,
4849 FPMaxErrorINTEL = 6169,
4850 FPGALatencyControlINTEL = 6171,
4851 FPGAArgumentInterfacesINTEL = 6174,
4852 GlobalVariableHostAccessINTEL = 6187,
4853 GlobalVariableFPGADecorationsINTEL = 6189,
4854 GroupUniformArithmeticKHR = 6400,
4855 MaskedGatherScatterINTEL = 6427,
4856 CacheControlsINTEL = 6441,
4857 RegisterLimitsINTEL = 6460,
4858
4859 pub const StorageUniformBufferBlock16 = Capability.StorageBuffer16BitAccess;
4860 pub const StorageUniform16 = Capability.UniformAndStorageBuffer16BitAccess;
4861 pub const ShaderViewportIndexLayerNV = Capability.ShaderViewportIndexLayerEXT;
4862 pub const FragmentBarycentricNV = Capability.FragmentBarycentricKHR;
4863 pub const ShadingRateNV = Capability.FragmentDensityEXT;
4864 pub const ShaderNonUniformEXT = Capability.ShaderNonUniform;
4865 pub const RuntimeDescriptorArrayEXT = Capability.RuntimeDescriptorArray;
4866 pub const InputAttachmentArrayDynamicIndexingEXT = Capability.InputAttachmentArrayDynamicIndexing;
4867 pub const UniformTexelBufferArrayDynamicIndexingEXT = Capability.UniformTexelBufferArrayDynamicIndexing;
4868 pub const StorageTexelBufferArrayDynamicIndexingEXT = Capability.StorageTexelBufferArrayDynamicIndexing;
4869 pub const UniformBufferArrayNonUniformIndexingEXT = Capability.UniformBufferArrayNonUniformIndexing;
4870 pub const SampledImageArrayNonUniformIndexingEXT = Capability.SampledImageArrayNonUniformIndexing;
4871 pub const StorageBufferArrayNonUniformIndexingEXT = Capability.StorageBufferArrayNonUniformIndexing;
4872 pub const StorageImageArrayNonUniformIndexingEXT = Capability.StorageImageArrayNonUniformIndexing;
4873 pub const InputAttachmentArrayNonUniformIndexingEXT = Capability.InputAttachmentArrayNonUniformIndexing;
4874 pub const UniformTexelBufferArrayNonUniformIndexingEXT = Capability.UniformTexelBufferArrayNonUniformIndexing;
4875 pub const StorageTexelBufferArrayNonUniformIndexingEXT = Capability.StorageTexelBufferArrayNonUniformIndexing;
4876 pub const VulkanMemoryModelKHR = Capability.VulkanMemoryModel;
4877 pub const VulkanMemoryModelDeviceScopeKHR = Capability.VulkanMemoryModelDeviceScope;
4878 pub const PhysicalStorageBufferAddressesEXT = Capability.PhysicalStorageBufferAddresses;
4879 pub const DemoteToHelperInvocationEXT = Capability.DemoteToHelperInvocation;
4880 pub const DotProductInputAllKHR = Capability.DotProductInputAll;
4881 pub const DotProductInput4x8BitKHR = Capability.DotProductInput4x8Bit;
4882 pub const DotProductInput4x8BitPackedKHR = Capability.DotProductInput4x8BitPacked;
4883 pub const DotProductKHR = Capability.DotProduct;
4894 matrix = 0,
4895 shader = 1,
4896 geometry = 2,
4897 tessellation = 3,
4898 addresses = 4,
4899 linkage = 5,
4900 kernel = 6,
4901 vector16 = 7,
4902 float16buffer = 8,
4903 float16 = 9,
4904 float64 = 10,
4905 int64 = 11,
4906 int64atomics = 12,
4907 image_basic = 13,
4908 image_read_write = 14,
4909 image_mipmap = 15,
4910 pipes = 17,
4911 groups = 18,
4912 device_enqueue = 19,
4913 literal_sampler = 20,
4914 atomic_storage = 21,
4915 int16 = 22,
4916 tessellation_point_size = 23,
4917 geometry_point_size = 24,
4918 image_gather_extended = 25,
4919 storage_image_multisample = 27,
4920 uniform_buffer_array_dynamic_indexing = 28,
4921 sampled_image_array_dynamic_indexing = 29,
4922 storage_buffer_array_dynamic_indexing = 30,
4923 storage_image_array_dynamic_indexing = 31,
4924 clip_distance = 32,
4925 cull_distance = 33,
4926 image_cube_array = 34,
4927 sample_rate_shading = 35,
4928 image_rect = 36,
4929 sampled_rect = 37,
4930 generic_pointer = 38,
4931 int8 = 39,
4932 input_attachment = 40,
4933 sparse_residency = 41,
4934 min_lod = 42,
4935 sampled1d = 43,
4936 image1d = 44,
4937 sampled_cube_array = 45,
4938 sampled_buffer = 46,
4939 image_buffer = 47,
4940 image_ms_array = 48,
4941 storage_image_extended_formats = 49,
4942 image_query = 50,
4943 derivative_control = 51,
4944 interpolation_function = 52,
4945 transform_feedback = 53,
4946 geometry_streams = 54,
4947 storage_image_read_without_format = 55,
4948 storage_image_write_without_format = 56,
4949 multi_viewport = 57,
4950 subgroup_dispatch = 58,
4951 named_barrier = 59,
4952 pipe_storage = 60,
4953 group_non_uniform = 61,
4954 group_non_uniform_vote = 62,
4955 group_non_uniform_arithmetic = 63,
4956 group_non_uniform_ballot = 64,
4957 group_non_uniform_shuffle = 65,
4958 group_non_uniform_shuffle_relative = 66,
4959 group_non_uniform_clustered = 67,
4960 group_non_uniform_quad = 68,
4961 shader_layer = 69,
4962 shader_viewport_index = 70,
4963 uniform_decoration = 71,
4964 core_builtins_arm = 4165,
4965 tile_image_color_read_access_ext = 4166,
4966 tile_image_depth_read_access_ext = 4167,
4967 tile_image_stencil_read_access_ext = 4168,
4968 tensors_arm = 4174,
4969 storage_tensor_array_dynamic_indexing_arm = 4175,
4970 storage_tensor_array_non_uniform_indexing_arm = 4176,
4971 graph_arm = 4191,
4972 cooperative_matrix_layouts_arm = 4201,
4973 float8ext = 4212,
4974 float8cooperative_matrix_ext = 4213,
4975 fragment_shading_rate_khr = 4422,
4976 subgroup_ballot_khr = 4423,
4977 draw_parameters = 4427,
4978 workgroup_memory_explicit_layout_khr = 4428,
4979 workgroup_memory_explicit_layout8bit_access_khr = 4429,
4980 workgroup_memory_explicit_layout16bit_access_khr = 4430,
4981 subgroup_vote_khr = 4431,
4982 storage_buffer16bit_access = 4433,
4983 uniform_and_storage_buffer16bit_access = 4434,
4984 storage_push_constant16 = 4435,
4985 storage_input_output16 = 4436,
4986 device_group = 4437,
4987 multi_view = 4439,
4988 variable_pointers_storage_buffer = 4441,
4989 variable_pointers = 4442,
4990 atomic_storage_ops = 4445,
4991 sample_mask_post_depth_coverage = 4447,
4992 storage_buffer8bit_access = 4448,
4993 uniform_and_storage_buffer8bit_access = 4449,
4994 storage_push_constant8 = 4450,
4995 denorm_preserve = 4464,
4996 denorm_flush_to_zero = 4465,
4997 signed_zero_inf_nan_preserve = 4466,
4998 rounding_mode_rte = 4467,
4999 rounding_mode_rtz = 4468,
5000 ray_query_provisional_khr = 4471,
5001 ray_query_khr = 4472,
5002 untyped_pointers_khr = 4473,
5003 ray_traversal_primitive_culling_khr = 4478,
5004 ray_tracing_khr = 4479,
5005 texture_sample_weighted_qcom = 4484,
5006 texture_box_filter_qcom = 4485,
5007 texture_block_match_qcom = 4486,
5008 tile_shading_qcom = 4495,
5009 texture_block_match2qcom = 4498,
5010 float16image_amd = 5008,
5011 image_gather_bias_lod_amd = 5009,
5012 fragment_mask_amd = 5010,
5013 stencil_export_ext = 5013,
5014 image_read_write_lod_amd = 5015,
5015 int64image_ext = 5016,
5016 shader_clock_khr = 5055,
5017 shader_enqueue_amdx = 5067,
5018 quad_control_khr = 5087,
5019 int4type_intel = 5112,
5020 int4cooperative_matrix_intel = 5114,
5021 b_float16type_khr = 5116,
5022 b_float16dot_product_khr = 5117,
5023 b_float16cooperative_matrix_khr = 5118,
5024 sample_mask_override_coverage_nv = 5249,
5025 geometry_shader_passthrough_nv = 5251,
5026 shader_viewport_index_layer_ext = 5254,
5027 shader_viewport_mask_nv = 5255,
5028 shader_stereo_view_nv = 5259,
5029 per_view_attributes_nv = 5260,
5030 fragment_fully_covered_ext = 5265,
5031 mesh_shading_nv = 5266,
5032 image_footprint_nv = 5282,
5033 mesh_shading_ext = 5283,
5034 fragment_barycentric_khr = 5284,
5035 compute_derivative_group_quads_khr = 5288,
5036 fragment_density_ext = 5291,
5037 group_non_uniform_partitioned_nv = 5297,
5038 shader_non_uniform = 5301,
5039 runtime_descriptor_array = 5302,
5040 input_attachment_array_dynamic_indexing = 5303,
5041 uniform_texel_buffer_array_dynamic_indexing = 5304,
5042 storage_texel_buffer_array_dynamic_indexing = 5305,
5043 uniform_buffer_array_non_uniform_indexing = 5306,
5044 sampled_image_array_non_uniform_indexing = 5307,
5045 storage_buffer_array_non_uniform_indexing = 5308,
5046 storage_image_array_non_uniform_indexing = 5309,
5047 input_attachment_array_non_uniform_indexing = 5310,
5048 uniform_texel_buffer_array_non_uniform_indexing = 5311,
5049 storage_texel_buffer_array_non_uniform_indexing = 5312,
5050 ray_tracing_position_fetch_khr = 5336,
5051 ray_tracing_nv = 5340,
5052 ray_tracing_motion_blur_nv = 5341,
5053 vulkan_memory_model = 5345,
5054 vulkan_memory_model_device_scope = 5346,
5055 physical_storage_buffer_addresses = 5347,
5056 compute_derivative_group_linear_khr = 5350,
5057 ray_tracing_provisional_khr = 5353,
5058 cooperative_matrix_nv = 5357,
5059 fragment_shader_sample_interlock_ext = 5363,
5060 fragment_shader_shading_rate_interlock_ext = 5372,
5061 shader_sm_builtins_nv = 5373,
5062 fragment_shader_pixel_interlock_ext = 5378,
5063 demote_to_helper_invocation = 5379,
5064 displacement_micromap_nv = 5380,
5065 ray_tracing_opacity_micromap_ext = 5381,
5066 shader_invocation_reorder_nv = 5383,
5067 bindless_texture_nv = 5390,
5068 ray_query_position_fetch_khr = 5391,
5069 cooperative_vector_nv = 5394,
5070 atomic_float16vector_nv = 5404,
5071 ray_tracing_displacement_micromap_nv = 5409,
5072 raw_access_chains_nv = 5414,
5073 ray_tracing_spheres_geometry_nv = 5418,
5074 ray_tracing_linear_swept_spheres_geometry_nv = 5419,
5075 cooperative_matrix_reductions_nv = 5430,
5076 cooperative_matrix_conversions_nv = 5431,
5077 cooperative_matrix_per_element_operations_nv = 5432,
5078 cooperative_matrix_tensor_addressing_nv = 5433,
5079 cooperative_matrix_block_loads_nv = 5434,
5080 cooperative_vector_training_nv = 5435,
5081 ray_tracing_cluster_acceleration_structure_nv = 5437,
5082 tensor_addressing_nv = 5439,
5083 subgroup_shuffle_intel = 5568,
5084 subgroup_buffer_block_iointel = 5569,
5085 subgroup_image_block_iointel = 5570,
5086 subgroup_image_media_block_iointel = 5579,
5087 round_to_infinity_intel = 5582,
5088 floating_point_mode_intel = 5583,
5089 integer_functions2intel = 5584,
5090 function_pointers_intel = 5603,
5091 indirect_references_intel = 5604,
5092 asm_intel = 5606,
5093 atomic_float32min_max_ext = 5612,
5094 atomic_float64min_max_ext = 5613,
5095 atomic_float16min_max_ext = 5616,
5096 vector_compute_intel = 5617,
5097 vector_any_intel = 5619,
5098 expect_assume_khr = 5629,
5099 subgroup_avc_motion_estimation_intel = 5696,
5100 subgroup_avc_motion_estimation_intra_intel = 5697,
5101 subgroup_avc_motion_estimation_chroma_intel = 5698,
5102 variable_length_array_intel = 5817,
5103 function_float_control_intel = 5821,
5104 fpga_memory_attributes_intel = 5824,
5105 fp_fast_math_mode_intel = 5837,
5106 arbitrary_precision_integers_intel = 5844,
5107 arbitrary_precision_floating_point_intel = 5845,
5108 unstructured_loop_controls_intel = 5886,
5109 fpga_loop_controls_intel = 5888,
5110 kernel_attributes_intel = 5892,
5111 fpga_kernel_attributes_intel = 5897,
5112 fpga_memory_accesses_intel = 5898,
5113 fpga_cluster_attributes_intel = 5904,
5114 loop_fuse_intel = 5906,
5115 fpgadsp_control_intel = 5908,
5116 memory_access_aliasing_intel = 5910,
5117 fpga_invocation_pipelining_attributes_intel = 5916,
5118 fpga_buffer_location_intel = 5920,
5119 arbitrary_precision_fixed_point_intel = 5922,
5120 usm_storage_classes_intel = 5935,
5121 runtime_aligned_attribute_intel = 5939,
5122 io_pipes_intel = 5943,
5123 blocking_pipes_intel = 5945,
5124 fpga_reg_intel = 5948,
5125 dot_product_input_all = 6016,
5126 dot_product_input4x8bit = 6017,
5127 dot_product_input4x8bit_packed = 6018,
5128 dot_product = 6019,
5129 ray_cull_mask_khr = 6020,
5130 cooperative_matrix_khr = 6022,
5131 replicated_composites_ext = 6024,
5132 bit_instructions = 6025,
5133 group_non_uniform_rotate_khr = 6026,
5134 float_controls2 = 6029,
5135 atomic_float32add_ext = 6033,
5136 atomic_float64add_ext = 6034,
5137 long_composites_intel = 6089,
5138 opt_none_ext = 6094,
5139 atomic_float16add_ext = 6095,
5140 debug_info_module_intel = 6114,
5141 b_float16conversion_intel = 6115,
5142 split_barrier_intel = 6141,
5143 arithmetic_fence_ext = 6144,
5144 fpga_cluster_attributes_v2intel = 6150,
5145 fpga_kernel_attributesv2intel = 6161,
5146 task_sequence_intel = 6162,
5147 fp_max_error_intel = 6169,
5148 fpga_latency_control_intel = 6171,
5149 fpga_argument_interfaces_intel = 6174,
5150 global_variable_host_access_intel = 6187,
5151 global_variable_fpga_decorations_intel = 6189,
5152 subgroup_buffer_prefetch_intel = 6220,
5153 subgroup2d_block_iointel = 6228,
5154 subgroup2d_block_transform_intel = 6229,
5155 subgroup2d_block_transpose_intel = 6230,
5156 subgroup_matrix_multiply_accumulate_intel = 6236,
5157 ternary_bitwise_function_intel = 6241,
5158 group_uniform_arithmetic_khr = 6400,
5159 tensor_float32rounding_intel = 6425,
5160 masked_gather_scatter_intel = 6427,
5161 cache_controls_intel = 6441,
5162 register_limits_intel = 6460,
5163 bindless_images_intel = 6528,
48845164};
48855165pub const RayQueryIntersection = enum(u32) {
4886 RayQueryCandidateIntersectionKHR = 0,
4887 RayQueryCommittedIntersectionKHR = 1,
5166 ray_query_candidate_intersection_khr = 0,
5167 ray_query_committed_intersection_khr = 1,
48885168};
48895169pub const RayQueryCommittedIntersectionType = enum(u32) {
4890 RayQueryCommittedIntersectionNoneKHR = 0,
4891 RayQueryCommittedIntersectionTriangleKHR = 1,
4892 RayQueryCommittedIntersectionGeneratedKHR = 2,
5170 ray_query_committed_intersection_none_khr = 0,
5171 ray_query_committed_intersection_triangle_khr = 1,
5172 ray_query_committed_intersection_generated_khr = 2,
48935173};
48945174pub const RayQueryCandidateIntersectionType = enum(u32) {
4895 RayQueryCandidateIntersectionTriangleKHR = 0,
4896 RayQueryCandidateIntersectionAABBKHR = 1,
5175 ray_query_candidate_intersection_triangle_khr = 0,
5176 ray_query_candidate_intersection_aabbkhr = 1,
48975177};
48985178pub const PackedVectorFormat = enum(u32) {
4899 PackedVectorFormat4x8Bit = 0,
4900
4901 pub const PackedVectorFormat4x8BitKHR = PackedVectorFormat.PackedVectorFormat4x8Bit;
5179 packed_vector_format4x8bit = 0,
49025180};
49035181pub const CooperativeMatrixOperands = packed struct {
4904 MatrixASignedComponentsKHR: bool = false,
4905 MatrixBSignedComponentsKHR: bool = false,
4906 MatrixCSignedComponentsKHR: bool = false,
4907 MatrixResultSignedComponentsKHR: bool = false,
4908 SaturatingAccumulationKHR: bool = false,
5182 matrix_a_signed_components_khr: bool = false,
5183 matrix_b_signed_components_khr: bool = false,
5184 matrix_c_signed_components_khr: bool = false,
5185 matrix_result_signed_components_khr: bool = false,
5186 saturating_accumulation_khr: bool = false,
49095187 _reserved_bit_5: bool = false,
49105188 _reserved_bit_6: bool = false,
49115189 _reserved_bit_7: bool = false,
......@@ -4935,52 +5213,75 @@ pub const CooperativeMatrixOperands = packed struct {
49355213 _reserved_bit_31: bool = false,
49365214};
49375215pub const CooperativeMatrixLayout = enum(u32) {
4938 RowMajorKHR = 0,
4939 ColumnMajorKHR = 1,
5216 row_major_khr = 0,
5217 column_major_khr = 1,
5218 row_blocked_interleaved_arm = 4202,
5219 column_blocked_interleaved_arm = 4203,
49405220};
49415221pub const CooperativeMatrixUse = enum(u32) {
4942 MatrixAKHR = 0,
4943 MatrixBKHR = 1,
4944 MatrixAccumulatorKHR = 2,
5222 matrix_akhr = 0,
5223 matrix_bkhr = 1,
5224 matrix_accumulator_khr = 2,
49455225};
4946pub const InitializationModeQualifier = enum(u32) {
4947 InitOnDeviceReprogramINTEL = 0,
4948 InitOnDeviceResetINTEL = 1,
4949};
4950pub const LoadCacheControl = enum(u32) {
4951 UncachedINTEL = 0,
4952 CachedINTEL = 1,
4953 StreamingINTEL = 2,
4954 InvalidateAfterReadINTEL = 3,
4955 ConstCachedINTEL = 4,
4956};
4957pub const StoreCacheControl = enum(u32) {
4958 UncachedINTEL = 0,
4959 WriteThroughINTEL = 1,
4960 WriteBackINTEL = 2,
4961 StreamingINTEL = 3,
5226pub const CooperativeMatrixReduce = packed struct {
5227 row: bool = false,
5228 column: bool = false,
5229 @"2x2": bool = false,
5230 _reserved_bit_3: bool = false,
5231 _reserved_bit_4: bool = false,
5232 _reserved_bit_5: bool = false,
5233 _reserved_bit_6: bool = false,
5234 _reserved_bit_7: bool = false,
5235 _reserved_bit_8: bool = false,
5236 _reserved_bit_9: bool = false,
5237 _reserved_bit_10: bool = false,
5238 _reserved_bit_11: bool = false,
5239 _reserved_bit_12: bool = false,
5240 _reserved_bit_13: bool = false,
5241 _reserved_bit_14: bool = false,
5242 _reserved_bit_15: bool = false,
5243 _reserved_bit_16: bool = false,
5244 _reserved_bit_17: bool = false,
5245 _reserved_bit_18: bool = false,
5246 _reserved_bit_19: bool = false,
5247 _reserved_bit_20: bool = false,
5248 _reserved_bit_21: bool = false,
5249 _reserved_bit_22: bool = false,
5250 _reserved_bit_23: bool = false,
5251 _reserved_bit_24: bool = false,
5252 _reserved_bit_25: bool = false,
5253 _reserved_bit_26: bool = false,
5254 _reserved_bit_27: bool = false,
5255 _reserved_bit_28: bool = false,
5256 _reserved_bit_29: bool = false,
5257 _reserved_bit_30: bool = false,
5258 _reserved_bit_31: bool = false,
49625259};
4963pub const NamedMaximumNumberOfRegisters = enum(u32) {
4964 AutoINTEL = 0,
5260pub const TensorClampMode = enum(u32) {
5261 undefined = 0,
5262 constant = 1,
5263 clamp_to_edge = 2,
5264 repeat = 3,
5265 repeat_mirrored = 4,
49655266};
4966pub const @"OpenCL.DebugInfo.100.DebugInfoFlags" = packed struct {
4967 FlagIsProtected: bool = false,
4968 FlagIsPrivate: bool = false,
4969 FlagIsLocal: bool = false,
4970 FlagIsDefinition: bool = false,
4971 FlagFwdDecl: bool = false,
4972 FlagArtificial: bool = false,
4973 FlagExplicit: bool = false,
4974 FlagPrototyped: bool = false,
4975 FlagObjectPointer: bool = false,
4976 FlagStaticMember: bool = false,
4977 FlagIndirectVariable: bool = false,
4978 FlagLValueReference: bool = false,
4979 FlagRValueReference: bool = false,
4980 FlagIsOptimized: bool = false,
4981 FlagIsEnumClass: bool = false,
4982 FlagTypePassByValue: bool = false,
4983 FlagTypePassByReference: bool = false,
5267pub const TensorAddressingOperands = packed struct {
5268 tensor_view: bool = false,
5269 decode_func: bool = false,
5270 _reserved_bit_2: bool = false,
5271 _reserved_bit_3: bool = false,
5272 _reserved_bit_4: bool = false,
5273 _reserved_bit_5: bool = false,
5274 _reserved_bit_6: bool = false,
5275 _reserved_bit_7: bool = false,
5276 _reserved_bit_8: bool = false,
5277 _reserved_bit_9: bool = false,
5278 _reserved_bit_10: bool = false,
5279 _reserved_bit_11: bool = false,
5280 _reserved_bit_12: bool = false,
5281 _reserved_bit_13: bool = false,
5282 _reserved_bit_14: bool = false,
5283 _reserved_bit_15: bool = false,
5284 _reserved_bit_16: bool = false,
49845285 _reserved_bit_17: bool = false,
49855286 _reserved_bit_18: bool = false,
49865287 _reserved_bit_19: bool = false,
......@@ -4996,76 +5297,81 @@ pub const @"OpenCL.DebugInfo.100.DebugInfoFlags" = packed struct {
49965297 _reserved_bit_29: bool = false,
49975298 _reserved_bit_30: bool = false,
49985299 _reserved_bit_31: bool = false,
5300
5301 pub const Extended = struct {
5302 tensor_view: ?struct { id_ref: Id } = null,
5303 decode_func: ?struct { id_ref: Id } = null,
5304 _reserved_bit_2: bool = false,
5305 _reserved_bit_3: bool = false,
5306 _reserved_bit_4: bool = false,
5307 _reserved_bit_5: bool = false,
5308 _reserved_bit_6: bool = false,
5309 _reserved_bit_7: bool = false,
5310 _reserved_bit_8: bool = false,
5311 _reserved_bit_9: bool = false,
5312 _reserved_bit_10: bool = false,
5313 _reserved_bit_11: bool = false,
5314 _reserved_bit_12: bool = false,
5315 _reserved_bit_13: bool = false,
5316 _reserved_bit_14: bool = false,
5317 _reserved_bit_15: bool = false,
5318 _reserved_bit_16: bool = false,
5319 _reserved_bit_17: bool = false,
5320 _reserved_bit_18: bool = false,
5321 _reserved_bit_19: bool = false,
5322 _reserved_bit_20: bool = false,
5323 _reserved_bit_21: bool = false,
5324 _reserved_bit_22: bool = false,
5325 _reserved_bit_23: bool = false,
5326 _reserved_bit_24: bool = false,
5327 _reserved_bit_25: bool = false,
5328 _reserved_bit_26: bool = false,
5329 _reserved_bit_27: bool = false,
5330 _reserved_bit_28: bool = false,
5331 _reserved_bit_29: bool = false,
5332 _reserved_bit_30: bool = false,
5333 _reserved_bit_31: bool = false,
5334 };
49995335};
5000pub const @"OpenCL.DebugInfo.100.DebugBaseTypeAttributeEncoding" = enum(u32) {
5001 Unspecified = 0,
5002 Address = 1,
5003 Boolean = 2,
5004 Float = 3,
5005 Signed = 4,
5006 SignedChar = 5,
5007 Unsigned = 6,
5008 UnsignedChar = 7,
5009};
5010pub const @"OpenCL.DebugInfo.100.DebugCompositeType" = enum(u32) {
5011 Class = 0,
5012 Structure = 1,
5013 Union = 2,
5336pub const InitializationModeQualifier = enum(u32) {
5337 init_on_device_reprogram_intel = 0,
5338 init_on_device_reset_intel = 1,
50145339};
5015pub const @"OpenCL.DebugInfo.100.DebugTypeQualifier" = enum(u32) {
5016 ConstType = 0,
5017 VolatileType = 1,
5018 RestrictType = 2,
5019 AtomicType = 3,
5340pub const LoadCacheControl = enum(u32) {
5341 uncached_intel = 0,
5342 cached_intel = 1,
5343 streaming_intel = 2,
5344 invalidate_after_read_intel = 3,
5345 const_cached_intel = 4,
50205346};
5021pub const @"OpenCL.DebugInfo.100.DebugOperation" = enum(u32) {
5022 Deref = 0,
5023 Plus = 1,
5024 Minus = 2,
5025 PlusUconst = 3,
5026 BitPiece = 4,
5027 Swap = 5,
5028 Xderef = 6,
5029 StackValue = 7,
5030 Constu = 8,
5031 Fragment = 9,
5032
5033 pub const Extended = union(@"OpenCL.DebugInfo.100.DebugOperation") {
5034 Deref,
5035 Plus,
5036 Minus,
5037 PlusUconst: struct { literal_integer: LiteralInteger },
5038 BitPiece: struct { literal_integer_0: LiteralInteger, literal_integer_1: LiteralInteger },
5039 Swap,
5040 Xderef,
5041 StackValue,
5042 Constu: struct { literal_integer: LiteralInteger },
5043 Fragment: struct { literal_integer_0: LiteralInteger, literal_integer_1: LiteralInteger },
5044 };
5347pub const StoreCacheControl = enum(u32) {
5348 uncached_intel = 0,
5349 write_through_intel = 1,
5350 write_back_intel = 2,
5351 streaming_intel = 3,
50455352};
5046pub const @"OpenCL.DebugInfo.100.DebugImportedEntity" = enum(u32) {
5047 ImportedModule = 0,
5048 ImportedDeclaration = 1,
5353pub const NamedMaximumNumberOfRegisters = enum(u32) {
5354 auto_intel = 0,
50495355};
5050pub const @"NonSemantic.Shader.DebugInfo.100.DebugInfoFlags" = packed struct {
5051 FlagIsProtected: bool = false,
5052 FlagIsPrivate: bool = false,
5053 FlagIsLocal: bool = false,
5054 FlagIsDefinition: bool = false,
5055 FlagFwdDecl: bool = false,
5056 FlagArtificial: bool = false,
5057 FlagExplicit: bool = false,
5058 FlagPrototyped: bool = false,
5059 FlagObjectPointer: bool = false,
5060 FlagStaticMember: bool = false,
5061 FlagIndirectVariable: bool = false,
5062 FlagLValueReference: bool = false,
5063 FlagRValueReference: bool = false,
5064 FlagIsOptimized: bool = false,
5065 FlagIsEnumClass: bool = false,
5066 FlagTypePassByValue: bool = false,
5067 FlagTypePassByReference: bool = false,
5068 FlagUnknownPhysicalLayout: bool = false,
5356pub const MatrixMultiplyAccumulateOperands = packed struct {
5357 matrix_a_signed_components_intel: bool = false,
5358 matrix_b_signed_components_intel: bool = false,
5359 matrix_cb_float16intel: bool = false,
5360 matrix_result_b_float16intel: bool = false,
5361 matrix_a_packed_int8intel: bool = false,
5362 matrix_b_packed_int8intel: bool = false,
5363 matrix_a_packed_int4intel: bool = false,
5364 matrix_b_packed_int4intel: bool = false,
5365 matrix_atf32intel: bool = false,
5366 matrix_btf32intel: bool = false,
5367 matrix_a_packed_float16intel: bool = false,
5368 matrix_b_packed_float16intel: bool = false,
5369 matrix_a_packed_b_float16intel: bool = false,
5370 matrix_b_packed_b_float16intel: bool = false,
5371 _reserved_bit_14: bool = false,
5372 _reserved_bit_15: bool = false,
5373 _reserved_bit_16: bool = false,
5374 _reserved_bit_17: bool = false,
50695375 _reserved_bit_18: bool = false,
50705376 _reserved_bit_19: bool = false,
50715377 _reserved_bit_20: bool = false,
......@@ -5081,12 +5387,40 @@ pub const @"NonSemantic.Shader.DebugInfo.100.DebugInfoFlags" = packed struct {
50815387 _reserved_bit_30: bool = false,
50825388 _reserved_bit_31: bool = false,
50835389};
5084pub const @"NonSemantic.Shader.DebugInfo.100.BuildIdentifierFlags" = packed struct {
5085 IdentifierPossibleDuplicates: bool = false,
5086 _reserved_bit_1: bool = false,
5087 _reserved_bit_2: bool = false,
5088 _reserved_bit_3: bool = false,
5089 _reserved_bit_4: bool = false,
5390pub const FPEncoding = enum(u32) {
5391 b_float16khr = 0,
5392 float8e4m3ext = 4214,
5393 float8e5m2ext = 4215,
5394};
5395pub const CooperativeVectorMatrixLayout = enum(u32) {
5396 row_major_nv = 0,
5397 column_major_nv = 1,
5398 inferencing_optimal_nv = 2,
5399 training_optimal_nv = 3,
5400};
5401pub const ComponentType = enum(u32) {
5402 float16nv = 0,
5403 float32nv = 1,
5404 float64nv = 2,
5405 signed_int8nv = 3,
5406 signed_int16nv = 4,
5407 signed_int32nv = 5,
5408 signed_int64nv = 6,
5409 unsigned_int8nv = 7,
5410 unsigned_int16nv = 8,
5411 unsigned_int32nv = 9,
5412 unsigned_int64nv = 10,
5413 signed_int8packed_nv = 1000491000,
5414 unsigned_int8packed_nv = 1000491001,
5415 float_e4m3nv = 1000491002,
5416 float_e5m2nv = 1000491003,
5417};
5418pub const TensorOperands = packed struct {
5419 nontemporal_arm: bool = false,
5420 out_of_bounds_value_arm: bool = false,
5421 make_element_available_arm: bool = false,
5422 make_element_visible_arm: bool = false,
5423 non_private_element_arm: bool = false,
50905424 _reserved_bit_5: bool = false,
50915425 _reserved_bit_6: bool = false,
50925426 _reserved_bit_7: bool = false,
......@@ -5114,59 +5448,205 @@ pub const @"NonSemantic.Shader.DebugInfo.100.BuildIdentifierFlags" = packed stru
51145448 _reserved_bit_29: bool = false,
51155449 _reserved_bit_30: bool = false,
51165450 _reserved_bit_31: bool = false,
5451
5452 pub const Extended = struct {
5453 nontemporal_arm: bool = false,
5454 out_of_bounds_value_arm: ?struct { id_ref: Id } = null,
5455 make_element_available_arm: ?struct { id_ref: Id } = null,
5456 make_element_visible_arm: ?struct { id_ref: Id } = null,
5457 non_private_element_arm: bool = false,
5458 _reserved_bit_5: bool = false,
5459 _reserved_bit_6: bool = false,
5460 _reserved_bit_7: bool = false,
5461 _reserved_bit_8: bool = false,
5462 _reserved_bit_9: bool = false,
5463 _reserved_bit_10: bool = false,
5464 _reserved_bit_11: bool = false,
5465 _reserved_bit_12: bool = false,
5466 _reserved_bit_13: bool = false,
5467 _reserved_bit_14: bool = false,
5468 _reserved_bit_15: bool = false,
5469 _reserved_bit_16: bool = false,
5470 _reserved_bit_17: bool = false,
5471 _reserved_bit_18: bool = false,
5472 _reserved_bit_19: bool = false,
5473 _reserved_bit_20: bool = false,
5474 _reserved_bit_21: bool = false,
5475 _reserved_bit_22: bool = false,
5476 _reserved_bit_23: bool = false,
5477 _reserved_bit_24: bool = false,
5478 _reserved_bit_25: bool = false,
5479 _reserved_bit_26: bool = false,
5480 _reserved_bit_27: bool = false,
5481 _reserved_bit_28: bool = false,
5482 _reserved_bit_29: bool = false,
5483 _reserved_bit_30: bool = false,
5484 _reserved_bit_31: bool = false,
5485 };
51175486};
5118pub const @"NonSemantic.Shader.DebugInfo.100.DebugBaseTypeAttributeEncoding" = enum(u32) {
5119 Unspecified = 0,
5120 Address = 1,
5121 Boolean = 2,
5122 Float = 3,
5123 Signed = 4,
5124 SignedChar = 5,
5125 Unsigned = 6,
5126 UnsignedChar = 7,
5487pub const @"DebugInfo.DebugInfoFlags" = packed struct {
5488 flag_is_protected: bool = false,
5489 flag_is_private: bool = false,
5490 flag_is_local: bool = false,
5491 flag_is_definition: bool = false,
5492 flag_fwd_decl: bool = false,
5493 flag_artificial: bool = false,
5494 flag_explicit: bool = false,
5495 flag_prototyped: bool = false,
5496 flag_object_pointer: bool = false,
5497 flag_static_member: bool = false,
5498 flag_indirect_variable: bool = false,
5499 flag_l_value_reference: bool = false,
5500 flag_r_value_reference: bool = false,
5501 flag_is_optimized: bool = false,
5502 _reserved_bit_14: bool = false,
5503 _reserved_bit_15: bool = false,
5504 _reserved_bit_16: bool = false,
5505 _reserved_bit_17: bool = false,
5506 _reserved_bit_18: bool = false,
5507 _reserved_bit_19: bool = false,
5508 _reserved_bit_20: bool = false,
5509 _reserved_bit_21: bool = false,
5510 _reserved_bit_22: bool = false,
5511 _reserved_bit_23: bool = false,
5512 _reserved_bit_24: bool = false,
5513 _reserved_bit_25: bool = false,
5514 _reserved_bit_26: bool = false,
5515 _reserved_bit_27: bool = false,
5516 _reserved_bit_28: bool = false,
5517 _reserved_bit_29: bool = false,
5518 _reserved_bit_30: bool = false,
5519 _reserved_bit_31: bool = false,
51275520};
5128pub const @"NonSemantic.Shader.DebugInfo.100.DebugCompositeType" = enum(u32) {
5129 Class = 0,
5130 Structure = 1,
5131 Union = 2,
5521pub const @"DebugInfo.DebugBaseTypeAttributeEncoding" = enum(u32) {
5522 unspecified = 0,
5523 address = 1,
5524 boolean = 2,
5525 float = 4,
5526 signed = 5,
5527 signed_char = 6,
5528 unsigned = 7,
5529 unsigned_char = 8,
51325530};
5133pub const @"NonSemantic.Shader.DebugInfo.100.DebugTypeQualifier" = enum(u32) {
5134 ConstType = 0,
5135 VolatileType = 1,
5136 RestrictType = 2,
5137 AtomicType = 3,
5531pub const @"DebugInfo.DebugCompositeType" = enum(u32) {
5532 class = 0,
5533 structure = 1,
5534 @"union" = 2,
51385535};
5139pub const @"NonSemantic.Shader.DebugInfo.100.DebugOperation" = enum(u32) {
5140 Deref = 0,
5141 Plus = 1,
5142 Minus = 2,
5143 PlusUconst = 3,
5144 BitPiece = 4,
5145 Swap = 5,
5146 Xderef = 6,
5147 StackValue = 7,
5148 Constu = 8,
5149 Fragment = 9,
5536pub const @"DebugInfo.DebugTypeQualifier" = enum(u32) {
5537 const_type = 0,
5538 volatile_type = 1,
5539 restrict_type = 2,
5540};
5541pub const @"DebugInfo.DebugOperation" = enum(u32) {
5542 deref = 0,
5543 plus = 1,
5544 minus = 2,
5545 plus_uconst = 3,
5546 bit_piece = 4,
5547 swap = 5,
5548 xderef = 6,
5549 stack_value = 7,
5550 constu = 8,
51505551
5151 pub const Extended = union(@"NonSemantic.Shader.DebugInfo.100.DebugOperation") {
5152 Deref,
5153 Plus,
5154 Minus,
5155 PlusUconst: struct { id_ref: IdRef },
5156 BitPiece: struct { id_ref_0: IdRef, id_ref_1: IdRef },
5157 Swap,
5158 Xderef,
5159 StackValue,
5160 Constu: struct { id_ref: IdRef },
5161 Fragment: struct { id_ref_0: IdRef, id_ref_1: IdRef },
5552 pub const Extended = union(@"DebugInfo.DebugOperation") {
5553 deref,
5554 plus,
5555 minus,
5556 plus_uconst: struct { literal_integer: LiteralInteger },
5557 bit_piece: struct { literal_integer_0: LiteralInteger, literal_integer_1: LiteralInteger },
5558 swap,
5559 xderef,
5560 stack_value,
5561 constu: struct { literal_integer: LiteralInteger },
51625562 };
51635563};
5164pub const @"NonSemantic.Shader.DebugInfo.100.DebugImportedEntity" = enum(u32) {
5165 ImportedModule = 0,
5166 ImportedDeclaration = 1,
5564pub const @"OpenCL.DebugInfo.100.DebugInfoFlags" = packed struct {
5565 flag_is_protected: bool = false,
5566 flag_is_private: bool = false,
5567 flag_is_local: bool = false,
5568 flag_is_definition: bool = false,
5569 flag_fwd_decl: bool = false,
5570 flag_artificial: bool = false,
5571 flag_explicit: bool = false,
5572 flag_prototyped: bool = false,
5573 flag_object_pointer: bool = false,
5574 flag_static_member: bool = false,
5575 flag_indirect_variable: bool = false,
5576 flag_l_value_reference: bool = false,
5577 flag_r_value_reference: bool = false,
5578 flag_is_optimized: bool = false,
5579 flag_is_enum_class: bool = false,
5580 flag_type_pass_by_value: bool = false,
5581 flag_type_pass_by_reference: bool = false,
5582 _reserved_bit_17: bool = false,
5583 _reserved_bit_18: bool = false,
5584 _reserved_bit_19: bool = false,
5585 _reserved_bit_20: bool = false,
5586 _reserved_bit_21: bool = false,
5587 _reserved_bit_22: bool = false,
5588 _reserved_bit_23: bool = false,
5589 _reserved_bit_24: bool = false,
5590 _reserved_bit_25: bool = false,
5591 _reserved_bit_26: bool = false,
5592 _reserved_bit_27: bool = false,
5593 _reserved_bit_28: bool = false,
5594 _reserved_bit_29: bool = false,
5595 _reserved_bit_30: bool = false,
5596 _reserved_bit_31: bool = false,
5597};
5598pub const @"OpenCL.DebugInfo.100.DebugBaseTypeAttributeEncoding" = enum(u32) {
5599 unspecified = 0,
5600 address = 1,
5601 boolean = 2,
5602 float = 3,
5603 signed = 4,
5604 signed_char = 5,
5605 unsigned = 6,
5606 unsigned_char = 7,
5607};
5608pub const @"OpenCL.DebugInfo.100.DebugCompositeType" = enum(u32) {
5609 class = 0,
5610 structure = 1,
5611 @"union" = 2,
5612};
5613pub const @"OpenCL.DebugInfo.100.DebugTypeQualifier" = enum(u32) {
5614 const_type = 0,
5615 volatile_type = 1,
5616 restrict_type = 2,
5617 atomic_type = 3,
5618};
5619pub const @"OpenCL.DebugInfo.100.DebugOperation" = enum(u32) {
5620 deref = 0,
5621 plus = 1,
5622 minus = 2,
5623 plus_uconst = 3,
5624 bit_piece = 4,
5625 swap = 5,
5626 xderef = 6,
5627 stack_value = 7,
5628 constu = 8,
5629 fragment = 9,
5630
5631 pub const Extended = union(@"OpenCL.DebugInfo.100.DebugOperation") {
5632 deref,
5633 plus,
5634 minus,
5635 plus_uconst: struct { literal_integer: LiteralInteger },
5636 bit_piece: struct { literal_integer_0: LiteralInteger, literal_integer_1: LiteralInteger },
5637 swap,
5638 xderef,
5639 stack_value,
5640 constu: struct { literal_integer: LiteralInteger },
5641 fragment: struct { literal_integer_0: LiteralInteger, literal_integer_1: LiteralInteger },
5642 };
5643};
5644pub const @"OpenCL.DebugInfo.100.DebugImportedEntity" = enum(u32) {
5645 imported_module = 0,
5646 imported_declaration = 1,
51675647};
51685648pub const @"NonSemantic.ClspvReflection.6.KernelPropertyFlags" = packed struct {
5169 MayUsePrintf: bool = false,
5649 may_use_printf: bool = false,
51705650 _reserved_bit_1: bool = false,
51715651 _reserved_bit_2: bool = false,
51725652 _reserved_bit_3: bool = false,
......@@ -5199,21 +5679,55 @@ pub const @"NonSemantic.ClspvReflection.6.KernelPropertyFlags" = packed struct {
51995679 _reserved_bit_30: bool = false,
52005680 _reserved_bit_31: bool = false,
52015681};
5202pub const @"DebugInfo.DebugInfoFlags" = packed struct {
5203 FlagIsProtected: bool = false,
5204 FlagIsPrivate: bool = false,
5205 FlagIsLocal: bool = false,
5206 FlagIsDefinition: bool = false,
5207 FlagFwdDecl: bool = false,
5208 FlagArtificial: bool = false,
5209 FlagExplicit: bool = false,
5210 FlagPrototyped: bool = false,
5211 FlagObjectPointer: bool = false,
5212 FlagStaticMember: bool = false,
5213 FlagIndirectVariable: bool = false,
5214 FlagLValueReference: bool = false,
5215 FlagRValueReference: bool = false,
5216 FlagIsOptimized: bool = false,
5682pub const @"NonSemantic.Shader.DebugInfo.100.DebugInfoFlags" = packed struct {
5683 flag_is_protected: bool = false,
5684 flag_is_private: bool = false,
5685 flag_is_local: bool = false,
5686 flag_is_definition: bool = false,
5687 flag_fwd_decl: bool = false,
5688 flag_artificial: bool = false,
5689 flag_explicit: bool = false,
5690 flag_prototyped: bool = false,
5691 flag_object_pointer: bool = false,
5692 flag_static_member: bool = false,
5693 flag_indirect_variable: bool = false,
5694 flag_l_value_reference: bool = false,
5695 flag_r_value_reference: bool = false,
5696 flag_is_optimized: bool = false,
5697 flag_is_enum_class: bool = false,
5698 flag_type_pass_by_value: bool = false,
5699 flag_type_pass_by_reference: bool = false,
5700 flag_unknown_physical_layout: bool = false,
5701 _reserved_bit_18: bool = false,
5702 _reserved_bit_19: bool = false,
5703 _reserved_bit_20: bool = false,
5704 _reserved_bit_21: bool = false,
5705 _reserved_bit_22: bool = false,
5706 _reserved_bit_23: bool = false,
5707 _reserved_bit_24: bool = false,
5708 _reserved_bit_25: bool = false,
5709 _reserved_bit_26: bool = false,
5710 _reserved_bit_27: bool = false,
5711 _reserved_bit_28: bool = false,
5712 _reserved_bit_29: bool = false,
5713 _reserved_bit_30: bool = false,
5714 _reserved_bit_31: bool = false,
5715};
5716pub const @"NonSemantic.Shader.DebugInfo.100.BuildIdentifierFlags" = packed struct {
5717 identifier_possible_duplicates: bool = false,
5718 _reserved_bit_1: bool = false,
5719 _reserved_bit_2: bool = false,
5720 _reserved_bit_3: bool = false,
5721 _reserved_bit_4: bool = false,
5722 _reserved_bit_5: bool = false,
5723 _reserved_bit_6: bool = false,
5724 _reserved_bit_7: bool = false,
5725 _reserved_bit_8: bool = false,
5726 _reserved_bit_9: bool = false,
5727 _reserved_bit_10: bool = false,
5728 _reserved_bit_11: bool = false,
5729 _reserved_bit_12: bool = false,
5730 _reserved_bit_13: bool = false,
52175731 _reserved_bit_14: bool = false,
52185732 _reserved_bit_15: bool = false,
52195733 _reserved_bit_16: bool = false,
......@@ -5233,11298 +5747,12669 @@ pub const @"DebugInfo.DebugInfoFlags" = packed struct {
52335747 _reserved_bit_30: bool = false,
52345748 _reserved_bit_31: bool = false,
52355749};
5236pub const @"DebugInfo.DebugBaseTypeAttributeEncoding" = enum(u32) {
5237 Unspecified = 0,
5238 Address = 1,
5239 Boolean = 2,
5240 Float = 4,
5241 Signed = 5,
5242 SignedChar = 6,
5243 Unsigned = 7,
5244 UnsignedChar = 8,
5750pub const @"NonSemantic.Shader.DebugInfo.100.DebugBaseTypeAttributeEncoding" = enum(u32) {
5751 unspecified = 0,
5752 address = 1,
5753 boolean = 2,
5754 float = 3,
5755 signed = 4,
5756 signed_char = 5,
5757 unsigned = 6,
5758 unsigned_char = 7,
52455759};
5246pub const @"DebugInfo.DebugCompositeType" = enum(u32) {
5247 Class = 0,
5248 Structure = 1,
5249 Union = 2,
5760pub const @"NonSemantic.Shader.DebugInfo.100.DebugCompositeType" = enum(u32) {
5761 class = 0,
5762 structure = 1,
5763 @"union" = 2,
52505764};
5251pub const @"DebugInfo.DebugTypeQualifier" = enum(u32) {
5252 ConstType = 0,
5253 VolatileType = 1,
5254 RestrictType = 2,
5765pub const @"NonSemantic.Shader.DebugInfo.100.DebugTypeQualifier" = enum(u32) {
5766 const_type = 0,
5767 volatile_type = 1,
5768 restrict_type = 2,
5769 atomic_type = 3,
52555770};
5256pub const @"DebugInfo.DebugOperation" = enum(u32) {
5257 Deref = 0,
5258 Plus = 1,
5259 Minus = 2,
5260 PlusUconst = 3,
5261 BitPiece = 4,
5262 Swap = 5,
5263 Xderef = 6,
5264 StackValue = 7,
5265 Constu = 8,
5771pub const @"NonSemantic.Shader.DebugInfo.100.DebugOperation" = enum(u32) {
5772 deref = 0,
5773 plus = 1,
5774 minus = 2,
5775 plus_uconst = 3,
5776 bit_piece = 4,
5777 swap = 5,
5778 xderef = 6,
5779 stack_value = 7,
5780 constu = 8,
5781 fragment = 9,
52665782
5267 pub const Extended = union(@"DebugInfo.DebugOperation") {
5268 Deref,
5269 Plus,
5270 Minus,
5271 PlusUconst: struct { literal_integer: LiteralInteger },
5272 BitPiece: struct { literal_integer_0: LiteralInteger, literal_integer_1: LiteralInteger },
5273 Swap,
5274 Xderef,
5275 StackValue,
5276 Constu: struct { literal_integer: LiteralInteger },
5783 pub const Extended = union(@"NonSemantic.Shader.DebugInfo.100.DebugOperation") {
5784 deref,
5785 plus,
5786 minus,
5787 plus_uconst: struct { id_ref: Id },
5788 bit_piece: struct { id_ref_0: Id, id_ref_1: Id },
5789 swap,
5790 xderef,
5791 stack_value,
5792 constu: struct { id_ref: Id },
5793 fragment: struct { id_ref_0: Id, id_ref_1: Id },
52775794 };
52785795};
5796pub const @"NonSemantic.Shader.DebugInfo.100.DebugImportedEntity" = enum(u32) {
5797 imported_module = 0,
5798 imported_declaration = 1,
5799};
52795800pub const InstructionSet = enum {
52805801 core,
5281 @"OpenCL.std",
5282 @"GLSL.std.450",
5283 @"OpenCL.DebugInfo.100",
5284 SPV_AMD_shader_ballot,
5285 @"NonSemantic.Shader.DebugInfo.100",
5286 @"NonSemantic.VkspReflection",
5287 @"NonSemantic.ClspvReflection.6",
5288 SPV_AMD_gcn_shader,
5289 SPV_AMD_shader_trinary_minmax,
5290 DebugInfo,
5291 @"NonSemantic.DebugPrintf",
5292 SPV_AMD_shader_explicit_vertex_parameter,
5293 @"NonSemantic.DebugBreak",
5802 spv_amd_shader_trinary_minmax,
5803 spv_ext_inst_type_tosa_001000_1,
5804 non_semantic_vksp_reflection,
5805 spv_amd_shader_explicit_vertex_parameter,
5806 debug_info,
5807 non_semantic_debug_break,
5808 open_cl_debug_info_100,
5809 non_semantic_clspv_reflection_6,
5810 glsl_std_450,
5811 spv_amd_shader_ballot,
5812 non_semantic_debug_printf,
5813 spv_amd_gcn_shader,
5814 open_cl_std,
5815 non_semantic_shader_debug_info_100,
52945816 zig,
52955817
52965818 pub fn instructions(self: InstructionSet) []const Instruction {
52975819 return switch (self) {
5298 .core => &[_]Instruction{
5820 .core => &.{
52995821 .{
53005822 .name = "OpNop",
53015823 .opcode = 0,
5302 .operands = &[_]Operand{},
5824 .operands = &.{},
53035825 },
53045826 .{
53055827 .name = "OpUndef",
53065828 .opcode = 1,
5307 .operands = &[_]Operand{
5308 .{ .kind = .IdResultType, .quantifier = .required },
5309 .{ .kind = .IdResult, .quantifier = .required },
5829 .operands = &.{
5830 .{ .kind = .id_result_type, .quantifier = .required },
5831 .{ .kind = .id_result, .quantifier = .required },
53105832 },
53115833 },
53125834 .{
53135835 .name = "OpSourceContinued",
53145836 .opcode = 2,
5315 .operands = &[_]Operand{
5316 .{ .kind = .LiteralString, .quantifier = .required },
5837 .operands = &.{
5838 .{ .kind = .literal_string, .quantifier = .required },
53175839 },
53185840 },
53195841 .{
53205842 .name = "OpSource",
53215843 .opcode = 3,
5322 .operands = &[_]Operand{
5323 .{ .kind = .SourceLanguage, .quantifier = .required },
5324 .{ .kind = .LiteralInteger, .quantifier = .required },
5325 .{ .kind = .IdRef, .quantifier = .optional },
5326 .{ .kind = .LiteralString, .quantifier = .optional },
5844 .operands = &.{
5845 .{ .kind = .source_language, .quantifier = .required },
5846 .{ .kind = .literal_integer, .quantifier = .required },
5847 .{ .kind = .id_ref, .quantifier = .optional },
5848 .{ .kind = .literal_string, .quantifier = .optional },
53275849 },
53285850 },
53295851 .{
53305852 .name = "OpSourceExtension",
53315853 .opcode = 4,
5332 .operands = &[_]Operand{
5333 .{ .kind = .LiteralString, .quantifier = .required },
5854 .operands = &.{
5855 .{ .kind = .literal_string, .quantifier = .required },
53345856 },
53355857 },
53365858 .{
53375859 .name = "OpName",
53385860 .opcode = 5,
5339 .operands = &[_]Operand{
5340 .{ .kind = .IdRef, .quantifier = .required },
5341 .{ .kind = .LiteralString, .quantifier = .required },
5861 .operands = &.{
5862 .{ .kind = .id_ref, .quantifier = .required },
5863 .{ .kind = .literal_string, .quantifier = .required },
53425864 },
53435865 },
53445866 .{
53455867 .name = "OpMemberName",
53465868 .opcode = 6,
5347 .operands = &[_]Operand{
5348 .{ .kind = .IdRef, .quantifier = .required },
5349 .{ .kind = .LiteralInteger, .quantifier = .required },
5350 .{ .kind = .LiteralString, .quantifier = .required },
5869 .operands = &.{
5870 .{ .kind = .id_ref, .quantifier = .required },
5871 .{ .kind = .literal_integer, .quantifier = .required },
5872 .{ .kind = .literal_string, .quantifier = .required },
53515873 },
53525874 },
53535875 .{
53545876 .name = "OpString",
53555877 .opcode = 7,
5356 .operands = &[_]Operand{
5357 .{ .kind = .IdResult, .quantifier = .required },
5358 .{ .kind = .LiteralString, .quantifier = .required },
5878 .operands = &.{
5879 .{ .kind = .id_result, .quantifier = .required },
5880 .{ .kind = .literal_string, .quantifier = .required },
53595881 },
53605882 },
53615883 .{
53625884 .name = "OpLine",
53635885 .opcode = 8,
5364 .operands = &[_]Operand{
5365 .{ .kind = .IdRef, .quantifier = .required },
5366 .{ .kind = .LiteralInteger, .quantifier = .required },
5367 .{ .kind = .LiteralInteger, .quantifier = .required },
5886 .operands = &.{
5887 .{ .kind = .id_ref, .quantifier = .required },
5888 .{ .kind = .literal_integer, .quantifier = .required },
5889 .{ .kind = .literal_integer, .quantifier = .required },
53685890 },
53695891 },
53705892 .{
53715893 .name = "OpExtension",
53725894 .opcode = 10,
5373 .operands = &[_]Operand{
5374 .{ .kind = .LiteralString, .quantifier = .required },
5895 .operands = &.{
5896 .{ .kind = .literal_string, .quantifier = .required },
53755897 },
53765898 },
53775899 .{
53785900 .name = "OpExtInstImport",
53795901 .opcode = 11,
5380 .operands = &[_]Operand{
5381 .{ .kind = .IdResult, .quantifier = .required },
5382 .{ .kind = .LiteralString, .quantifier = .required },
5902 .operands = &.{
5903 .{ .kind = .id_result, .quantifier = .required },
5904 .{ .kind = .literal_string, .quantifier = .required },
53835905 },
53845906 },
53855907 .{
53865908 .name = "OpExtInst",
53875909 .opcode = 12,
5388 .operands = &[_]Operand{
5389 .{ .kind = .IdResultType, .quantifier = .required },
5390 .{ .kind = .IdResult, .quantifier = .required },
5391 .{ .kind = .IdRef, .quantifier = .required },
5392 .{ .kind = .LiteralExtInstInteger, .quantifier = .required },
5393 .{ .kind = .IdRef, .quantifier = .variadic },
5910 .operands = &.{
5911 .{ .kind = .id_result_type, .quantifier = .required },
5912 .{ .kind = .id_result, .quantifier = .required },
5913 .{ .kind = .id_ref, .quantifier = .required },
5914 .{ .kind = .literal_ext_inst_integer, .quantifier = .required },
5915 .{ .kind = .id_ref, .quantifier = .variadic },
53945916 },
53955917 },
53965918 .{
53975919 .name = "OpMemoryModel",
53985920 .opcode = 14,
5399 .operands = &[_]Operand{
5400 .{ .kind = .AddressingModel, .quantifier = .required },
5401 .{ .kind = .MemoryModel, .quantifier = .required },
5921 .operands = &.{
5922 .{ .kind = .addressing_model, .quantifier = .required },
5923 .{ .kind = .memory_model, .quantifier = .required },
54025924 },
54035925 },
54045926 .{
54055927 .name = "OpEntryPoint",
54065928 .opcode = 15,
5407 .operands = &[_]Operand{
5408 .{ .kind = .ExecutionModel, .quantifier = .required },
5409 .{ .kind = .IdRef, .quantifier = .required },
5410 .{ .kind = .LiteralString, .quantifier = .required },
5411 .{ .kind = .IdRef, .quantifier = .variadic },
5929 .operands = &.{
5930 .{ .kind = .execution_model, .quantifier = .required },
5931 .{ .kind = .id_ref, .quantifier = .required },
5932 .{ .kind = .literal_string, .quantifier = .required },
5933 .{ .kind = .id_ref, .quantifier = .variadic },
54125934 },
54135935 },
54145936 .{
54155937 .name = "OpExecutionMode",
54165938 .opcode = 16,
5417 .operands = &[_]Operand{
5418 .{ .kind = .IdRef, .quantifier = .required },
5419 .{ .kind = .ExecutionMode, .quantifier = .required },
5939 .operands = &.{
5940 .{ .kind = .id_ref, .quantifier = .required },
5941 .{ .kind = .execution_mode, .quantifier = .required },
54205942 },
54215943 },
54225944 .{
54235945 .name = "OpCapability",
54245946 .opcode = 17,
5425 .operands = &[_]Operand{
5426 .{ .kind = .Capability, .quantifier = .required },
5947 .operands = &.{
5948 .{ .kind = .capability, .quantifier = .required },
54275949 },
54285950 },
54295951 .{
54305952 .name = "OpTypeVoid",
54315953 .opcode = 19,
5432 .operands = &[_]Operand{
5433 .{ .kind = .IdResult, .quantifier = .required },
5954 .operands = &.{
5955 .{ .kind = .id_result, .quantifier = .required },
54345956 },
54355957 },
54365958 .{
54375959 .name = "OpTypeBool",
54385960 .opcode = 20,
5439 .operands = &[_]Operand{
5440 .{ .kind = .IdResult, .quantifier = .required },
5961 .operands = &.{
5962 .{ .kind = .id_result, .quantifier = .required },
54415963 },
54425964 },
54435965 .{
54445966 .name = "OpTypeInt",
54455967 .opcode = 21,
5446 .operands = &[_]Operand{
5447 .{ .kind = .IdResult, .quantifier = .required },
5448 .{ .kind = .LiteralInteger, .quantifier = .required },
5449 .{ .kind = .LiteralInteger, .quantifier = .required },
5968 .operands = &.{
5969 .{ .kind = .id_result, .quantifier = .required },
5970 .{ .kind = .literal_integer, .quantifier = .required },
5971 .{ .kind = .literal_integer, .quantifier = .required },
54505972 },
54515973 },
54525974 .{
54535975 .name = "OpTypeFloat",
54545976 .opcode = 22,
5455 .operands = &[_]Operand{
5456 .{ .kind = .IdResult, .quantifier = .required },
5457 .{ .kind = .LiteralInteger, .quantifier = .required },
5977 .operands = &.{
5978 .{ .kind = .id_result, .quantifier = .required },
5979 .{ .kind = .literal_integer, .quantifier = .required },
5980 .{ .kind = .fp_encoding, .quantifier = .optional },
54585981 },
54595982 },
54605983 .{
54615984 .name = "OpTypeVector",
54625985 .opcode = 23,
5463 .operands = &[_]Operand{
5464 .{ .kind = .IdResult, .quantifier = .required },
5465 .{ .kind = .IdRef, .quantifier = .required },
5466 .{ .kind = .LiteralInteger, .quantifier = .required },
5986 .operands = &.{
5987 .{ .kind = .id_result, .quantifier = .required },
5988 .{ .kind = .id_ref, .quantifier = .required },
5989 .{ .kind = .literal_integer, .quantifier = .required },
54675990 },
54685991 },
54695992 .{
54705993 .name = "OpTypeMatrix",
54715994 .opcode = 24,
5472 .operands = &[_]Operand{
5473 .{ .kind = .IdResult, .quantifier = .required },
5474 .{ .kind = .IdRef, .quantifier = .required },
5475 .{ .kind = .LiteralInteger, .quantifier = .required },
5995 .operands = &.{
5996 .{ .kind = .id_result, .quantifier = .required },
5997 .{ .kind = .id_ref, .quantifier = .required },
5998 .{ .kind = .literal_integer, .quantifier = .required },
54765999 },
54776000 },
54786001 .{
54796002 .name = "OpTypeImage",
54806003 .opcode = 25,
5481 .operands = &[_]Operand{
5482 .{ .kind = .IdResult, .quantifier = .required },
5483 .{ .kind = .IdRef, .quantifier = .required },
5484 .{ .kind = .Dim, .quantifier = .required },
5485 .{ .kind = .LiteralInteger, .quantifier = .required },
5486 .{ .kind = .LiteralInteger, .quantifier = .required },
5487 .{ .kind = .LiteralInteger, .quantifier = .required },
5488 .{ .kind = .LiteralInteger, .quantifier = .required },
5489 .{ .kind = .ImageFormat, .quantifier = .required },
5490 .{ .kind = .AccessQualifier, .quantifier = .optional },
6004 .operands = &.{
6005 .{ .kind = .id_result, .quantifier = .required },
6006 .{ .kind = .id_ref, .quantifier = .required },
6007 .{ .kind = .dim, .quantifier = .required },
6008 .{ .kind = .literal_integer, .quantifier = .required },
6009 .{ .kind = .literal_integer, .quantifier = .required },
6010 .{ .kind = .literal_integer, .quantifier = .required },
6011 .{ .kind = .literal_integer, .quantifier = .required },
6012 .{ .kind = .image_format, .quantifier = .required },
6013 .{ .kind = .access_qualifier, .quantifier = .optional },
54916014 },
54926015 },
54936016 .{
54946017 .name = "OpTypeSampler",
54956018 .opcode = 26,
5496 .operands = &[_]Operand{
5497 .{ .kind = .IdResult, .quantifier = .required },
6019 .operands = &.{
6020 .{ .kind = .id_result, .quantifier = .required },
54986021 },
54996022 },
55006023 .{
55016024 .name = "OpTypeSampledImage",
55026025 .opcode = 27,
5503 .operands = &[_]Operand{
5504 .{ .kind = .IdResult, .quantifier = .required },
5505 .{ .kind = .IdRef, .quantifier = .required },
6026 .operands = &.{
6027 .{ .kind = .id_result, .quantifier = .required },
6028 .{ .kind = .id_ref, .quantifier = .required },
55066029 },
55076030 },
55086031 .{
55096032 .name = "OpTypeArray",
55106033 .opcode = 28,
5511 .operands = &[_]Operand{
5512 .{ .kind = .IdResult, .quantifier = .required },
5513 .{ .kind = .IdRef, .quantifier = .required },
5514 .{ .kind = .IdRef, .quantifier = .required },
6034 .operands = &.{
6035 .{ .kind = .id_result, .quantifier = .required },
6036 .{ .kind = .id_ref, .quantifier = .required },
6037 .{ .kind = .id_ref, .quantifier = .required },
55156038 },
55166039 },
55176040 .{
55186041 .name = "OpTypeRuntimeArray",
55196042 .opcode = 29,
5520 .operands = &[_]Operand{
5521 .{ .kind = .IdResult, .quantifier = .required },
5522 .{ .kind = .IdRef, .quantifier = .required },
6043 .operands = &.{
6044 .{ .kind = .id_result, .quantifier = .required },
6045 .{ .kind = .id_ref, .quantifier = .required },
55236046 },
55246047 },
55256048 .{
55266049 .name = "OpTypeStruct",
55276050 .opcode = 30,
5528 .operands = &[_]Operand{
5529 .{ .kind = .IdResult, .quantifier = .required },
5530 .{ .kind = .IdRef, .quantifier = .variadic },
6051 .operands = &.{
6052 .{ .kind = .id_result, .quantifier = .required },
6053 .{ .kind = .id_ref, .quantifier = .variadic },
55316054 },
55326055 },
55336056 .{
55346057 .name = "OpTypeOpaque",
55356058 .opcode = 31,
5536 .operands = &[_]Operand{
5537 .{ .kind = .IdResult, .quantifier = .required },
5538 .{ .kind = .LiteralString, .quantifier = .required },
6059 .operands = &.{
6060 .{ .kind = .id_result, .quantifier = .required },
6061 .{ .kind = .literal_string, .quantifier = .required },
55396062 },
55406063 },
55416064 .{
55426065 .name = "OpTypePointer",
55436066 .opcode = 32,
5544 .operands = &[_]Operand{
5545 .{ .kind = .IdResult, .quantifier = .required },
5546 .{ .kind = .StorageClass, .quantifier = .required },
5547 .{ .kind = .IdRef, .quantifier = .required },
6067 .operands = &.{
6068 .{ .kind = .id_result, .quantifier = .required },
6069 .{ .kind = .storage_class, .quantifier = .required },
6070 .{ .kind = .id_ref, .quantifier = .required },
55486071 },
55496072 },
55506073 .{
55516074 .name = "OpTypeFunction",
55526075 .opcode = 33,
5553 .operands = &[_]Operand{
5554 .{ .kind = .IdResult, .quantifier = .required },
5555 .{ .kind = .IdRef, .quantifier = .required },
5556 .{ .kind = .IdRef, .quantifier = .variadic },
6076 .operands = &.{
6077 .{ .kind = .id_result, .quantifier = .required },
6078 .{ .kind = .id_ref, .quantifier = .required },
6079 .{ .kind = .id_ref, .quantifier = .variadic },
55576080 },
55586081 },
55596082 .{
55606083 .name = "OpTypeEvent",
55616084 .opcode = 34,
5562 .operands = &[_]Operand{
5563 .{ .kind = .IdResult, .quantifier = .required },
6085 .operands = &.{
6086 .{ .kind = .id_result, .quantifier = .required },
55646087 },
55656088 },
55666089 .{
55676090 .name = "OpTypeDeviceEvent",
55686091 .opcode = 35,
5569 .operands = &[_]Operand{
5570 .{ .kind = .IdResult, .quantifier = .required },
6092 .operands = &.{
6093 .{ .kind = .id_result, .quantifier = .required },
55716094 },
55726095 },
55736096 .{
55746097 .name = "OpTypeReserveId",
55756098 .opcode = 36,
5576 .operands = &[_]Operand{
5577 .{ .kind = .IdResult, .quantifier = .required },
6099 .operands = &.{
6100 .{ .kind = .id_result, .quantifier = .required },
55786101 },
55796102 },
55806103 .{
55816104 .name = "OpTypeQueue",
55826105 .opcode = 37,
5583 .operands = &[_]Operand{
5584 .{ .kind = .IdResult, .quantifier = .required },
6106 .operands = &.{
6107 .{ .kind = .id_result, .quantifier = .required },
55856108 },
55866109 },
55876110 .{
55886111 .name = "OpTypePipe",
55896112 .opcode = 38,
5590 .operands = &[_]Operand{
5591 .{ .kind = .IdResult, .quantifier = .required },
5592 .{ .kind = .AccessQualifier, .quantifier = .required },
6113 .operands = &.{
6114 .{ .kind = .id_result, .quantifier = .required },
6115 .{ .kind = .access_qualifier, .quantifier = .required },
55936116 },
55946117 },
55956118 .{
55966119 .name = "OpTypeForwardPointer",
55976120 .opcode = 39,
5598 .operands = &[_]Operand{
5599 .{ .kind = .IdRef, .quantifier = .required },
5600 .{ .kind = .StorageClass, .quantifier = .required },
6121 .operands = &.{
6122 .{ .kind = .id_ref, .quantifier = .required },
6123 .{ .kind = .storage_class, .quantifier = .required },
56016124 },
56026125 },
56036126 .{
56046127 .name = "OpConstantTrue",
56056128 .opcode = 41,
5606 .operands = &[_]Operand{
5607 .{ .kind = .IdResultType, .quantifier = .required },
5608 .{ .kind = .IdResult, .quantifier = .required },
6129 .operands = &.{
6130 .{ .kind = .id_result_type, .quantifier = .required },
6131 .{ .kind = .id_result, .quantifier = .required },
56096132 },
56106133 },
56116134 .{
56126135 .name = "OpConstantFalse",
56136136 .opcode = 42,
5614 .operands = &[_]Operand{
5615 .{ .kind = .IdResultType, .quantifier = .required },
5616 .{ .kind = .IdResult, .quantifier = .required },
6137 .operands = &.{
6138 .{ .kind = .id_result_type, .quantifier = .required },
6139 .{ .kind = .id_result, .quantifier = .required },
56176140 },
56186141 },
56196142 .{
56206143 .name = "OpConstant",
56216144 .opcode = 43,
5622 .operands = &[_]Operand{
5623 .{ .kind = .IdResultType, .quantifier = .required },
5624 .{ .kind = .IdResult, .quantifier = .required },
5625 .{ .kind = .LiteralContextDependentNumber, .quantifier = .required },
6145 .operands = &.{
6146 .{ .kind = .id_result_type, .quantifier = .required },
6147 .{ .kind = .id_result, .quantifier = .required },
6148 .{ .kind = .literal_context_dependent_number, .quantifier = .required },
56266149 },
56276150 },
56286151 .{
56296152 .name = "OpConstantComposite",
56306153 .opcode = 44,
5631 .operands = &[_]Operand{
5632 .{ .kind = .IdResultType, .quantifier = .required },
5633 .{ .kind = .IdResult, .quantifier = .required },
5634 .{ .kind = .IdRef, .quantifier = .variadic },
6154 .operands = &.{
6155 .{ .kind = .id_result_type, .quantifier = .required },
6156 .{ .kind = .id_result, .quantifier = .required },
6157 .{ .kind = .id_ref, .quantifier = .variadic },
56356158 },
56366159 },
56376160 .{
56386161 .name = "OpConstantSampler",
56396162 .opcode = 45,
5640 .operands = &[_]Operand{
5641 .{ .kind = .IdResultType, .quantifier = .required },
5642 .{ .kind = .IdResult, .quantifier = .required },
5643 .{ .kind = .SamplerAddressingMode, .quantifier = .required },
5644 .{ .kind = .LiteralInteger, .quantifier = .required },
5645 .{ .kind = .SamplerFilterMode, .quantifier = .required },
6163 .operands = &.{
6164 .{ .kind = .id_result_type, .quantifier = .required },
6165 .{ .kind = .id_result, .quantifier = .required },
6166 .{ .kind = .sampler_addressing_mode, .quantifier = .required },
6167 .{ .kind = .literal_integer, .quantifier = .required },
6168 .{ .kind = .sampler_filter_mode, .quantifier = .required },
56466169 },
56476170 },
56486171 .{
56496172 .name = "OpConstantNull",
56506173 .opcode = 46,
5651 .operands = &[_]Operand{
5652 .{ .kind = .IdResultType, .quantifier = .required },
5653 .{ .kind = .IdResult, .quantifier = .required },
6174 .operands = &.{
6175 .{ .kind = .id_result_type, .quantifier = .required },
6176 .{ .kind = .id_result, .quantifier = .required },
56546177 },
56556178 },
56566179 .{
56576180 .name = "OpSpecConstantTrue",
56586181 .opcode = 48,
5659 .operands = &[_]Operand{
5660 .{ .kind = .IdResultType, .quantifier = .required },
5661 .{ .kind = .IdResult, .quantifier = .required },
6182 .operands = &.{
6183 .{ .kind = .id_result_type, .quantifier = .required },
6184 .{ .kind = .id_result, .quantifier = .required },
56626185 },
56636186 },
56646187 .{
56656188 .name = "OpSpecConstantFalse",
56666189 .opcode = 49,
5667 .operands = &[_]Operand{
5668 .{ .kind = .IdResultType, .quantifier = .required },
5669 .{ .kind = .IdResult, .quantifier = .required },
6190 .operands = &.{
6191 .{ .kind = .id_result_type, .quantifier = .required },
6192 .{ .kind = .id_result, .quantifier = .required },
56706193 },
56716194 },
56726195 .{
56736196 .name = "OpSpecConstant",
56746197 .opcode = 50,
5675 .operands = &[_]Operand{
5676 .{ .kind = .IdResultType, .quantifier = .required },
5677 .{ .kind = .IdResult, .quantifier = .required },
5678 .{ .kind = .LiteralContextDependentNumber, .quantifier = .required },
6198 .operands = &.{
6199 .{ .kind = .id_result_type, .quantifier = .required },
6200 .{ .kind = .id_result, .quantifier = .required },
6201 .{ .kind = .literal_context_dependent_number, .quantifier = .required },
56796202 },
56806203 },
56816204 .{
56826205 .name = "OpSpecConstantComposite",
56836206 .opcode = 51,
5684 .operands = &[_]Operand{
5685 .{ .kind = .IdResultType, .quantifier = .required },
5686 .{ .kind = .IdResult, .quantifier = .required },
5687 .{ .kind = .IdRef, .quantifier = .variadic },
6207 .operands = &.{
6208 .{ .kind = .id_result_type, .quantifier = .required },
6209 .{ .kind = .id_result, .quantifier = .required },
6210 .{ .kind = .id_ref, .quantifier = .variadic },
56886211 },
56896212 },
56906213 .{
56916214 .name = "OpSpecConstantOp",
56926215 .opcode = 52,
5693 .operands = &[_]Operand{
5694 .{ .kind = .IdResultType, .quantifier = .required },
5695 .{ .kind = .IdResult, .quantifier = .required },
5696 .{ .kind = .LiteralSpecConstantOpInteger, .quantifier = .required },
6216 .operands = &.{
6217 .{ .kind = .id_result_type, .quantifier = .required },
6218 .{ .kind = .id_result, .quantifier = .required },
6219 .{ .kind = .literal_spec_constant_op_integer, .quantifier = .required },
56976220 },
56986221 },
56996222 .{
57006223 .name = "OpFunction",
57016224 .opcode = 54,
5702 .operands = &[_]Operand{
5703 .{ .kind = .IdResultType, .quantifier = .required },
5704 .{ .kind = .IdResult, .quantifier = .required },
5705 .{ .kind = .FunctionControl, .quantifier = .required },
5706 .{ .kind = .IdRef, .quantifier = .required },
6225 .operands = &.{
6226 .{ .kind = .id_result_type, .quantifier = .required },
6227 .{ .kind = .id_result, .quantifier = .required },
6228 .{ .kind = .function_control, .quantifier = .required },
6229 .{ .kind = .id_ref, .quantifier = .required },
57076230 },
57086231 },
57096232 .{
57106233 .name = "OpFunctionParameter",
57116234 .opcode = 55,
5712 .operands = &[_]Operand{
5713 .{ .kind = .IdResultType, .quantifier = .required },
5714 .{ .kind = .IdResult, .quantifier = .required },
6235 .operands = &.{
6236 .{ .kind = .id_result_type, .quantifier = .required },
6237 .{ .kind = .id_result, .quantifier = .required },
57156238 },
57166239 },
57176240 .{
57186241 .name = "OpFunctionEnd",
57196242 .opcode = 56,
5720 .operands = &[_]Operand{},
6243 .operands = &.{},
57216244 },
57226245 .{
57236246 .name = "OpFunctionCall",
57246247 .opcode = 57,
5725 .operands = &[_]Operand{
5726 .{ .kind = .IdResultType, .quantifier = .required },
5727 .{ .kind = .IdResult, .quantifier = .required },
5728 .{ .kind = .IdRef, .quantifier = .required },
5729 .{ .kind = .IdRef, .quantifier = .variadic },
6248 .operands = &.{
6249 .{ .kind = .id_result_type, .quantifier = .required },
6250 .{ .kind = .id_result, .quantifier = .required },
6251 .{ .kind = .id_ref, .quantifier = .required },
6252 .{ .kind = .id_ref, .quantifier = .variadic },
57306253 },
57316254 },
57326255 .{
57336256 .name = "OpVariable",
57346257 .opcode = 59,
5735 .operands = &[_]Operand{
5736 .{ .kind = .IdResultType, .quantifier = .required },
5737 .{ .kind = .IdResult, .quantifier = .required },
5738 .{ .kind = .StorageClass, .quantifier = .required },
5739 .{ .kind = .IdRef, .quantifier = .optional },
6258 .operands = &.{
6259 .{ .kind = .id_result_type, .quantifier = .required },
6260 .{ .kind = .id_result, .quantifier = .required },
6261 .{ .kind = .storage_class, .quantifier = .required },
6262 .{ .kind = .id_ref, .quantifier = .optional },
57406263 },
57416264 },
57426265 .{
57436266 .name = "OpImageTexelPointer",
57446267 .opcode = 60,
5745 .operands = &[_]Operand{
5746 .{ .kind = .IdResultType, .quantifier = .required },
5747 .{ .kind = .IdResult, .quantifier = .required },
5748 .{ .kind = .IdRef, .quantifier = .required },
5749 .{ .kind = .IdRef, .quantifier = .required },
5750 .{ .kind = .IdRef, .quantifier = .required },
6268 .operands = &.{
6269 .{ .kind = .id_result_type, .quantifier = .required },
6270 .{ .kind = .id_result, .quantifier = .required },
6271 .{ .kind = .id_ref, .quantifier = .required },
6272 .{ .kind = .id_ref, .quantifier = .required },
6273 .{ .kind = .id_ref, .quantifier = .required },
57516274 },
57526275 },
57536276 .{
57546277 .name = "OpLoad",
57556278 .opcode = 61,
5756 .operands = &[_]Operand{
5757 .{ .kind = .IdResultType, .quantifier = .required },
5758 .{ .kind = .IdResult, .quantifier = .required },
5759 .{ .kind = .IdRef, .quantifier = .required },
5760 .{ .kind = .MemoryAccess, .quantifier = .optional },
6279 .operands = &.{
6280 .{ .kind = .id_result_type, .quantifier = .required },
6281 .{ .kind = .id_result, .quantifier = .required },
6282 .{ .kind = .id_ref, .quantifier = .required },
6283 .{ .kind = .memory_access, .quantifier = .optional },
57616284 },
57626285 },
57636286 .{
57646287 .name = "OpStore",
57656288 .opcode = 62,
5766 .operands = &[_]Operand{
5767 .{ .kind = .IdRef, .quantifier = .required },
5768 .{ .kind = .IdRef, .quantifier = .required },
5769 .{ .kind = .MemoryAccess, .quantifier = .optional },
6289 .operands = &.{
6290 .{ .kind = .id_ref, .quantifier = .required },
6291 .{ .kind = .id_ref, .quantifier = .required },
6292 .{ .kind = .memory_access, .quantifier = .optional },
57706293 },
57716294 },
57726295 .{
57736296 .name = "OpCopyMemory",
57746297 .opcode = 63,
5775 .operands = &[_]Operand{
5776 .{ .kind = .IdRef, .quantifier = .required },
5777 .{ .kind = .IdRef, .quantifier = .required },
5778 .{ .kind = .MemoryAccess, .quantifier = .optional },
5779 .{ .kind = .MemoryAccess, .quantifier = .optional },
6298 .operands = &.{
6299 .{ .kind = .id_ref, .quantifier = .required },
6300 .{ .kind = .id_ref, .quantifier = .required },
6301 .{ .kind = .memory_access, .quantifier = .optional },
6302 .{ .kind = .memory_access, .quantifier = .optional },
57806303 },
57816304 },
57826305 .{
57836306 .name = "OpCopyMemorySized",
57846307 .opcode = 64,
5785 .operands = &[_]Operand{
5786 .{ .kind = .IdRef, .quantifier = .required },
5787 .{ .kind = .IdRef, .quantifier = .required },
5788 .{ .kind = .IdRef, .quantifier = .required },
5789 .{ .kind = .MemoryAccess, .quantifier = .optional },
5790 .{ .kind = .MemoryAccess, .quantifier = .optional },
6308 .operands = &.{
6309 .{ .kind = .id_ref, .quantifier = .required },
6310 .{ .kind = .id_ref, .quantifier = .required },
6311 .{ .kind = .id_ref, .quantifier = .required },
6312 .{ .kind = .memory_access, .quantifier = .optional },
6313 .{ .kind = .memory_access, .quantifier = .optional },
57916314 },
57926315 },
57936316 .{
57946317 .name = "OpAccessChain",
57956318 .opcode = 65,
5796 .operands = &[_]Operand{
5797 .{ .kind = .IdResultType, .quantifier = .required },
5798 .{ .kind = .IdResult, .quantifier = .required },
5799 .{ .kind = .IdRef, .quantifier = .required },
5800 .{ .kind = .IdRef, .quantifier = .variadic },
6319 .operands = &.{
6320 .{ .kind = .id_result_type, .quantifier = .required },
6321 .{ .kind = .id_result, .quantifier = .required },
6322 .{ .kind = .id_ref, .quantifier = .required },
6323 .{ .kind = .id_ref, .quantifier = .variadic },
58016324 },
58026325 },
58036326 .{
58046327 .name = "OpInBoundsAccessChain",
58056328 .opcode = 66,
5806 .operands = &[_]Operand{
5807 .{ .kind = .IdResultType, .quantifier = .required },
5808 .{ .kind = .IdResult, .quantifier = .required },
5809 .{ .kind = .IdRef, .quantifier = .required },
5810 .{ .kind = .IdRef, .quantifier = .variadic },
6329 .operands = &.{
6330 .{ .kind = .id_result_type, .quantifier = .required },
6331 .{ .kind = .id_result, .quantifier = .required },
6332 .{ .kind = .id_ref, .quantifier = .required },
6333 .{ .kind = .id_ref, .quantifier = .variadic },
58116334 },
58126335 },
58136336 .{
58146337 .name = "OpPtrAccessChain",
58156338 .opcode = 67,
5816 .operands = &[_]Operand{
5817 .{ .kind = .IdResultType, .quantifier = .required },
5818 .{ .kind = .IdResult, .quantifier = .required },
5819 .{ .kind = .IdRef, .quantifier = .required },
5820 .{ .kind = .IdRef, .quantifier = .required },
5821 .{ .kind = .IdRef, .quantifier = .variadic },
6339 .operands = &.{
6340 .{ .kind = .id_result_type, .quantifier = .required },
6341 .{ .kind = .id_result, .quantifier = .required },
6342 .{ .kind = .id_ref, .quantifier = .required },
6343 .{ .kind = .id_ref, .quantifier = .required },
6344 .{ .kind = .id_ref, .quantifier = .variadic },
58226345 },
58236346 },
58246347 .{
58256348 .name = "OpArrayLength",
58266349 .opcode = 68,
5827 .operands = &[_]Operand{
5828 .{ .kind = .IdResultType, .quantifier = .required },
5829 .{ .kind = .IdResult, .quantifier = .required },
5830 .{ .kind = .IdRef, .quantifier = .required },
5831 .{ .kind = .LiteralInteger, .quantifier = .required },
6350 .operands = &.{
6351 .{ .kind = .id_result_type, .quantifier = .required },
6352 .{ .kind = .id_result, .quantifier = .required },
6353 .{ .kind = .id_ref, .quantifier = .required },
6354 .{ .kind = .literal_integer, .quantifier = .required },
58326355 },
58336356 },
58346357 .{
58356358 .name = "OpGenericPtrMemSemantics",
58366359 .opcode = 69,
5837 .operands = &[_]Operand{
5838 .{ .kind = .IdResultType, .quantifier = .required },
5839 .{ .kind = .IdResult, .quantifier = .required },
5840 .{ .kind = .IdRef, .quantifier = .required },
6360 .operands = &.{
6361 .{ .kind = .id_result_type, .quantifier = .required },
6362 .{ .kind = .id_result, .quantifier = .required },
6363 .{ .kind = .id_ref, .quantifier = .required },
58416364 },
58426365 },
58436366 .{
58446367 .name = "OpInBoundsPtrAccessChain",
58456368 .opcode = 70,
5846 .operands = &[_]Operand{
5847 .{ .kind = .IdResultType, .quantifier = .required },
5848 .{ .kind = .IdResult, .quantifier = .required },
5849 .{ .kind = .IdRef, .quantifier = .required },
5850 .{ .kind = .IdRef, .quantifier = .required },
5851 .{ .kind = .IdRef, .quantifier = .variadic },
6369 .operands = &.{
6370 .{ .kind = .id_result_type, .quantifier = .required },
6371 .{ .kind = .id_result, .quantifier = .required },
6372 .{ .kind = .id_ref, .quantifier = .required },
6373 .{ .kind = .id_ref, .quantifier = .required },
6374 .{ .kind = .id_ref, .quantifier = .variadic },
58526375 },
58536376 },
58546377 .{
58556378 .name = "OpDecorate",
58566379 .opcode = 71,
5857 .operands = &[_]Operand{
5858 .{ .kind = .IdRef, .quantifier = .required },
5859 .{ .kind = .Decoration, .quantifier = .required },
6380 .operands = &.{
6381 .{ .kind = .id_ref, .quantifier = .required },
6382 .{ .kind = .decoration, .quantifier = .required },
58606383 },
58616384 },
58626385 .{
58636386 .name = "OpMemberDecorate",
58646387 .opcode = 72,
5865 .operands = &[_]Operand{
5866 .{ .kind = .IdRef, .quantifier = .required },
5867 .{ .kind = .LiteralInteger, .quantifier = .required },
5868 .{ .kind = .Decoration, .quantifier = .required },
6388 .operands = &.{
6389 .{ .kind = .id_ref, .quantifier = .required },
6390 .{ .kind = .literal_integer, .quantifier = .required },
6391 .{ .kind = .decoration, .quantifier = .required },
58696392 },
58706393 },
58716394 .{
58726395 .name = "OpDecorationGroup",
58736396 .opcode = 73,
5874 .operands = &[_]Operand{
5875 .{ .kind = .IdResult, .quantifier = .required },
6397 .operands = &.{
6398 .{ .kind = .id_result, .quantifier = .required },
58766399 },
58776400 },
58786401 .{
58796402 .name = "OpGroupDecorate",
58806403 .opcode = 74,
5881 .operands = &[_]Operand{
5882 .{ .kind = .IdRef, .quantifier = .required },
5883 .{ .kind = .IdRef, .quantifier = .variadic },
6404 .operands = &.{
6405 .{ .kind = .id_ref, .quantifier = .required },
6406 .{ .kind = .id_ref, .quantifier = .variadic },
58846407 },
58856408 },
58866409 .{
58876410 .name = "OpGroupMemberDecorate",
58886411 .opcode = 75,
5889 .operands = &[_]Operand{
5890 .{ .kind = .IdRef, .quantifier = .required },
5891 .{ .kind = .PairIdRefLiteralInteger, .quantifier = .variadic },
6412 .operands = &.{
6413 .{ .kind = .id_ref, .quantifier = .required },
6414 .{ .kind = .pair_id_ref_literal_integer, .quantifier = .variadic },
58926415 },
58936416 },
58946417 .{
58956418 .name = "OpVectorExtractDynamic",
58966419 .opcode = 77,
5897 .operands = &[_]Operand{
5898 .{ .kind = .IdResultType, .quantifier = .required },
5899 .{ .kind = .IdResult, .quantifier = .required },
5900 .{ .kind = .IdRef, .quantifier = .required },
5901 .{ .kind = .IdRef, .quantifier = .required },
6420 .operands = &.{
6421 .{ .kind = .id_result_type, .quantifier = .required },
6422 .{ .kind = .id_result, .quantifier = .required },
6423 .{ .kind = .id_ref, .quantifier = .required },
6424 .{ .kind = .id_ref, .quantifier = .required },
59026425 },
59036426 },
59046427 .{
59056428 .name = "OpVectorInsertDynamic",
59066429 .opcode = 78,
5907 .operands = &[_]Operand{
5908 .{ .kind = .IdResultType, .quantifier = .required },
5909 .{ .kind = .IdResult, .quantifier = .required },
5910 .{ .kind = .IdRef, .quantifier = .required },
5911 .{ .kind = .IdRef, .quantifier = .required },
5912 .{ .kind = .IdRef, .quantifier = .required },
6430 .operands = &.{
6431 .{ .kind = .id_result_type, .quantifier = .required },
6432 .{ .kind = .id_result, .quantifier = .required },
6433 .{ .kind = .id_ref, .quantifier = .required },
6434 .{ .kind = .id_ref, .quantifier = .required },
6435 .{ .kind = .id_ref, .quantifier = .required },
59136436 },
59146437 },
59156438 .{
59166439 .name = "OpVectorShuffle",
59176440 .opcode = 79,
5918 .operands = &[_]Operand{
5919 .{ .kind = .IdResultType, .quantifier = .required },
5920 .{ .kind = .IdResult, .quantifier = .required },
5921 .{ .kind = .IdRef, .quantifier = .required },
5922 .{ .kind = .IdRef, .quantifier = .required },
5923 .{ .kind = .LiteralInteger, .quantifier = .variadic },
6441 .operands = &.{
6442 .{ .kind = .id_result_type, .quantifier = .required },
6443 .{ .kind = .id_result, .quantifier = .required },
6444 .{ .kind = .id_ref, .quantifier = .required },
6445 .{ .kind = .id_ref, .quantifier = .required },
6446 .{ .kind = .literal_integer, .quantifier = .variadic },
59246447 },
59256448 },
59266449 .{
59276450 .name = "OpCompositeConstruct",
59286451 .opcode = 80,
5929 .operands = &[_]Operand{
5930 .{ .kind = .IdResultType, .quantifier = .required },
5931 .{ .kind = .IdResult, .quantifier = .required },
5932 .{ .kind = .IdRef, .quantifier = .variadic },
6452 .operands = &.{
6453 .{ .kind = .id_result_type, .quantifier = .required },
6454 .{ .kind = .id_result, .quantifier = .required },
6455 .{ .kind = .id_ref, .quantifier = .variadic },
59336456 },
59346457 },
59356458 .{
59366459 .name = "OpCompositeExtract",
59376460 .opcode = 81,
5938 .operands = &[_]Operand{
5939 .{ .kind = .IdResultType, .quantifier = .required },
5940 .{ .kind = .IdResult, .quantifier = .required },
5941 .{ .kind = .IdRef, .quantifier = .required },
5942 .{ .kind = .LiteralInteger, .quantifier = .variadic },
6461 .operands = &.{
6462 .{ .kind = .id_result_type, .quantifier = .required },
6463 .{ .kind = .id_result, .quantifier = .required },
6464 .{ .kind = .id_ref, .quantifier = .required },
6465 .{ .kind = .literal_integer, .quantifier = .variadic },
59436466 },
59446467 },
59456468 .{
59466469 .name = "OpCompositeInsert",
59476470 .opcode = 82,
5948 .operands = &[_]Operand{
5949 .{ .kind = .IdResultType, .quantifier = .required },
5950 .{ .kind = .IdResult, .quantifier = .required },
5951 .{ .kind = .IdRef, .quantifier = .required },
5952 .{ .kind = .IdRef, .quantifier = .required },
5953 .{ .kind = .LiteralInteger, .quantifier = .variadic },
6471 .operands = &.{
6472 .{ .kind = .id_result_type, .quantifier = .required },
6473 .{ .kind = .id_result, .quantifier = .required },
6474 .{ .kind = .id_ref, .quantifier = .required },
6475 .{ .kind = .id_ref, .quantifier = .required },
6476 .{ .kind = .literal_integer, .quantifier = .variadic },
59546477 },
59556478 },
59566479 .{
59576480 .name = "OpCopyObject",
59586481 .opcode = 83,
5959 .operands = &[_]Operand{
5960 .{ .kind = .IdResultType, .quantifier = .required },
5961 .{ .kind = .IdResult, .quantifier = .required },
5962 .{ .kind = .IdRef, .quantifier = .required },
6482 .operands = &.{
6483 .{ .kind = .id_result_type, .quantifier = .required },
6484 .{ .kind = .id_result, .quantifier = .required },
6485 .{ .kind = .id_ref, .quantifier = .required },
59636486 },
59646487 },
59656488 .{
59666489 .name = "OpTranspose",
59676490 .opcode = 84,
5968 .operands = &[_]Operand{
5969 .{ .kind = .IdResultType, .quantifier = .required },
5970 .{ .kind = .IdResult, .quantifier = .required },
5971 .{ .kind = .IdRef, .quantifier = .required },
6491 .operands = &.{
6492 .{ .kind = .id_result_type, .quantifier = .required },
6493 .{ .kind = .id_result, .quantifier = .required },
6494 .{ .kind = .id_ref, .quantifier = .required },
59726495 },
59736496 },
59746497 .{
59756498 .name = "OpSampledImage",
59766499 .opcode = 86,
5977 .operands = &[_]Operand{
5978 .{ .kind = .IdResultType, .quantifier = .required },
5979 .{ .kind = .IdResult, .quantifier = .required },
5980 .{ .kind = .IdRef, .quantifier = .required },
5981 .{ .kind = .IdRef, .quantifier = .required },
6500 .operands = &.{
6501 .{ .kind = .id_result_type, .quantifier = .required },
6502 .{ .kind = .id_result, .quantifier = .required },
6503 .{ .kind = .id_ref, .quantifier = .required },
6504 .{ .kind = .id_ref, .quantifier = .required },
59826505 },
59836506 },
59846507 .{
59856508 .name = "OpImageSampleImplicitLod",
59866509 .opcode = 87,
5987 .operands = &[_]Operand{
5988 .{ .kind = .IdResultType, .quantifier = .required },
5989 .{ .kind = .IdResult, .quantifier = .required },
5990 .{ .kind = .IdRef, .quantifier = .required },
5991 .{ .kind = .IdRef, .quantifier = .required },
5992 .{ .kind = .ImageOperands, .quantifier = .optional },
6510 .operands = &.{
6511 .{ .kind = .id_result_type, .quantifier = .required },
6512 .{ .kind = .id_result, .quantifier = .required },
6513 .{ .kind = .id_ref, .quantifier = .required },
6514 .{ .kind = .id_ref, .quantifier = .required },
6515 .{ .kind = .image_operands, .quantifier = .optional },
59936516 },
59946517 },
59956518 .{
59966519 .name = "OpImageSampleExplicitLod",
59976520 .opcode = 88,
5998 .operands = &[_]Operand{
5999 .{ .kind = .IdResultType, .quantifier = .required },
6000 .{ .kind = .IdResult, .quantifier = .required },
6001 .{ .kind = .IdRef, .quantifier = .required },
6002 .{ .kind = .IdRef, .quantifier = .required },
6003 .{ .kind = .ImageOperands, .quantifier = .required },
6521 .operands = &.{
6522 .{ .kind = .id_result_type, .quantifier = .required },
6523 .{ .kind = .id_result, .quantifier = .required },
6524 .{ .kind = .id_ref, .quantifier = .required },
6525 .{ .kind = .id_ref, .quantifier = .required },
6526 .{ .kind = .image_operands, .quantifier = .required },
60046527 },
60056528 },
60066529 .{
60076530 .name = "OpImageSampleDrefImplicitLod",
60086531 .opcode = 89,
6009 .operands = &[_]Operand{
6010 .{ .kind = .IdResultType, .quantifier = .required },
6011 .{ .kind = .IdResult, .quantifier = .required },
6012 .{ .kind = .IdRef, .quantifier = .required },
6013 .{ .kind = .IdRef, .quantifier = .required },
6014 .{ .kind = .IdRef, .quantifier = .required },
6015 .{ .kind = .ImageOperands, .quantifier = .optional },
6532 .operands = &.{
6533 .{ .kind = .id_result_type, .quantifier = .required },
6534 .{ .kind = .id_result, .quantifier = .required },
6535 .{ .kind = .id_ref, .quantifier = .required },
6536 .{ .kind = .id_ref, .quantifier = .required },
6537 .{ .kind = .id_ref, .quantifier = .required },
6538 .{ .kind = .image_operands, .quantifier = .optional },
60166539 },
60176540 },
60186541 .{
60196542 .name = "OpImageSampleDrefExplicitLod",
60206543 .opcode = 90,
6021 .operands = &[_]Operand{
6022 .{ .kind = .IdResultType, .quantifier = .required },
6023 .{ .kind = .IdResult, .quantifier = .required },
6024 .{ .kind = .IdRef, .quantifier = .required },
6025 .{ .kind = .IdRef, .quantifier = .required },
6026 .{ .kind = .IdRef, .quantifier = .required },
6027 .{ .kind = .ImageOperands, .quantifier = .required },
6544 .operands = &.{
6545 .{ .kind = .id_result_type, .quantifier = .required },
6546 .{ .kind = .id_result, .quantifier = .required },
6547 .{ .kind = .id_ref, .quantifier = .required },
6548 .{ .kind = .id_ref, .quantifier = .required },
6549 .{ .kind = .id_ref, .quantifier = .required },
6550 .{ .kind = .image_operands, .quantifier = .required },
60286551 },
60296552 },
60306553 .{
60316554 .name = "OpImageSampleProjImplicitLod",
60326555 .opcode = 91,
6033 .operands = &[_]Operand{
6034 .{ .kind = .IdResultType, .quantifier = .required },
6035 .{ .kind = .IdResult, .quantifier = .required },
6036 .{ .kind = .IdRef, .quantifier = .required },
6037 .{ .kind = .IdRef, .quantifier = .required },
6038 .{ .kind = .ImageOperands, .quantifier = .optional },
6556 .operands = &.{
6557 .{ .kind = .id_result_type, .quantifier = .required },
6558 .{ .kind = .id_result, .quantifier = .required },
6559 .{ .kind = .id_ref, .quantifier = .required },
6560 .{ .kind = .id_ref, .quantifier = .required },
6561 .{ .kind = .image_operands, .quantifier = .optional },
60396562 },
60406563 },
60416564 .{
60426565 .name = "OpImageSampleProjExplicitLod",
60436566 .opcode = 92,
6044 .operands = &[_]Operand{
6045 .{ .kind = .IdResultType, .quantifier = .required },
6046 .{ .kind = .IdResult, .quantifier = .required },
6047 .{ .kind = .IdRef, .quantifier = .required },
6048 .{ .kind = .IdRef, .quantifier = .required },
6049 .{ .kind = .ImageOperands, .quantifier = .required },
6567 .operands = &.{
6568 .{ .kind = .id_result_type, .quantifier = .required },
6569 .{ .kind = .id_result, .quantifier = .required },
6570 .{ .kind = .id_ref, .quantifier = .required },
6571 .{ .kind = .id_ref, .quantifier = .required },
6572 .{ .kind = .image_operands, .quantifier = .required },
60506573 },
60516574 },
60526575 .{
60536576 .name = "OpImageSampleProjDrefImplicitLod",
60546577 .opcode = 93,
6055 .operands = &[_]Operand{
6056 .{ .kind = .IdResultType, .quantifier = .required },
6057 .{ .kind = .IdResult, .quantifier = .required },
6058 .{ .kind = .IdRef, .quantifier = .required },
6059 .{ .kind = .IdRef, .quantifier = .required },
6060 .{ .kind = .IdRef, .quantifier = .required },
6061 .{ .kind = .ImageOperands, .quantifier = .optional },
6578 .operands = &.{
6579 .{ .kind = .id_result_type, .quantifier = .required },
6580 .{ .kind = .id_result, .quantifier = .required },
6581 .{ .kind = .id_ref, .quantifier = .required },
6582 .{ .kind = .id_ref, .quantifier = .required },
6583 .{ .kind = .id_ref, .quantifier = .required },
6584 .{ .kind = .image_operands, .quantifier = .optional },
60626585 },
60636586 },
60646587 .{
60656588 .name = "OpImageSampleProjDrefExplicitLod",
60666589 .opcode = 94,
6067 .operands = &[_]Operand{
6068 .{ .kind = .IdResultType, .quantifier = .required },
6069 .{ .kind = .IdResult, .quantifier = .required },
6070 .{ .kind = .IdRef, .quantifier = .required },
6071 .{ .kind = .IdRef, .quantifier = .required },
6072 .{ .kind = .IdRef, .quantifier = .required },
6073 .{ .kind = .ImageOperands, .quantifier = .required },
6590 .operands = &.{
6591 .{ .kind = .id_result_type, .quantifier = .required },
6592 .{ .kind = .id_result, .quantifier = .required },
6593 .{ .kind = .id_ref, .quantifier = .required },
6594 .{ .kind = .id_ref, .quantifier = .required },
6595 .{ .kind = .id_ref, .quantifier = .required },
6596 .{ .kind = .image_operands, .quantifier = .required },
60746597 },
60756598 },
60766599 .{
60776600 .name = "OpImageFetch",
60786601 .opcode = 95,
6079 .operands = &[_]Operand{
6080 .{ .kind = .IdResultType, .quantifier = .required },
6081 .{ .kind = .IdResult, .quantifier = .required },
6082 .{ .kind = .IdRef, .quantifier = .required },
6083 .{ .kind = .IdRef, .quantifier = .required },
6084 .{ .kind = .ImageOperands, .quantifier = .optional },
6602 .operands = &.{
6603 .{ .kind = .id_result_type, .quantifier = .required },
6604 .{ .kind = .id_result, .quantifier = .required },
6605 .{ .kind = .id_ref, .quantifier = .required },
6606 .{ .kind = .id_ref, .quantifier = .required },
6607 .{ .kind = .image_operands, .quantifier = .optional },
60856608 },
60866609 },
60876610 .{
60886611 .name = "OpImageGather",
60896612 .opcode = 96,
6090 .operands = &[_]Operand{
6091 .{ .kind = .IdResultType, .quantifier = .required },
6092 .{ .kind = .IdResult, .quantifier = .required },
6093 .{ .kind = .IdRef, .quantifier = .required },
6094 .{ .kind = .IdRef, .quantifier = .required },
6095 .{ .kind = .IdRef, .quantifier = .required },
6096 .{ .kind = .ImageOperands, .quantifier = .optional },
6613 .operands = &.{
6614 .{ .kind = .id_result_type, .quantifier = .required },
6615 .{ .kind = .id_result, .quantifier = .required },
6616 .{ .kind = .id_ref, .quantifier = .required },
6617 .{ .kind = .id_ref, .quantifier = .required },
6618 .{ .kind = .id_ref, .quantifier = .required },
6619 .{ .kind = .image_operands, .quantifier = .optional },
60976620 },
60986621 },
60996622 .{
61006623 .name = "OpImageDrefGather",
61016624 .opcode = 97,
6102 .operands = &[_]Operand{
6103 .{ .kind = .IdResultType, .quantifier = .required },
6104 .{ .kind = .IdResult, .quantifier = .required },
6105 .{ .kind = .IdRef, .quantifier = .required },
6106 .{ .kind = .IdRef, .quantifier = .required },
6107 .{ .kind = .IdRef, .quantifier = .required },
6108 .{ .kind = .ImageOperands, .quantifier = .optional },
6625 .operands = &.{
6626 .{ .kind = .id_result_type, .quantifier = .required },
6627 .{ .kind = .id_result, .quantifier = .required },
6628 .{ .kind = .id_ref, .quantifier = .required },
6629 .{ .kind = .id_ref, .quantifier = .required },
6630 .{ .kind = .id_ref, .quantifier = .required },
6631 .{ .kind = .image_operands, .quantifier = .optional },
61096632 },
61106633 },
61116634 .{
61126635 .name = "OpImageRead",
61136636 .opcode = 98,
6114 .operands = &[_]Operand{
6115 .{ .kind = .IdResultType, .quantifier = .required },
6116 .{ .kind = .IdResult, .quantifier = .required },
6117 .{ .kind = .IdRef, .quantifier = .required },
6118 .{ .kind = .IdRef, .quantifier = .required },
6119 .{ .kind = .ImageOperands, .quantifier = .optional },
6637 .operands = &.{
6638 .{ .kind = .id_result_type, .quantifier = .required },
6639 .{ .kind = .id_result, .quantifier = .required },
6640 .{ .kind = .id_ref, .quantifier = .required },
6641 .{ .kind = .id_ref, .quantifier = .required },
6642 .{ .kind = .image_operands, .quantifier = .optional },
61206643 },
61216644 },
61226645 .{
61236646 .name = "OpImageWrite",
61246647 .opcode = 99,
6125 .operands = &[_]Operand{
6126 .{ .kind = .IdRef, .quantifier = .required },
6127 .{ .kind = .IdRef, .quantifier = .required },
6128 .{ .kind = .IdRef, .quantifier = .required },
6129 .{ .kind = .ImageOperands, .quantifier = .optional },
6648 .operands = &.{
6649 .{ .kind = .id_ref, .quantifier = .required },
6650 .{ .kind = .id_ref, .quantifier = .required },
6651 .{ .kind = .id_ref, .quantifier = .required },
6652 .{ .kind = .image_operands, .quantifier = .optional },
61306653 },
61316654 },
61326655 .{
61336656 .name = "OpImage",
61346657 .opcode = 100,
6135 .operands = &[_]Operand{
6136 .{ .kind = .IdResultType, .quantifier = .required },
6137 .{ .kind = .IdResult, .quantifier = .required },
6138 .{ .kind = .IdRef, .quantifier = .required },
6658 .operands = &.{
6659 .{ .kind = .id_result_type, .quantifier = .required },
6660 .{ .kind = .id_result, .quantifier = .required },
6661 .{ .kind = .id_ref, .quantifier = .required },
61396662 },
61406663 },
61416664 .{
61426665 .name = "OpImageQueryFormat",
61436666 .opcode = 101,
6144 .operands = &[_]Operand{
6145 .{ .kind = .IdResultType, .quantifier = .required },
6146 .{ .kind = .IdResult, .quantifier = .required },
6147 .{ .kind = .IdRef, .quantifier = .required },
6667 .operands = &.{
6668 .{ .kind = .id_result_type, .quantifier = .required },
6669 .{ .kind = .id_result, .quantifier = .required },
6670 .{ .kind = .id_ref, .quantifier = .required },
61486671 },
61496672 },
61506673 .{
61516674 .name = "OpImageQueryOrder",
61526675 .opcode = 102,
6153 .operands = &[_]Operand{
6154 .{ .kind = .IdResultType, .quantifier = .required },
6155 .{ .kind = .IdResult, .quantifier = .required },
6156 .{ .kind = .IdRef, .quantifier = .required },
6676 .operands = &.{
6677 .{ .kind = .id_result_type, .quantifier = .required },
6678 .{ .kind = .id_result, .quantifier = .required },
6679 .{ .kind = .id_ref, .quantifier = .required },
61576680 },
61586681 },
61596682 .{
61606683 .name = "OpImageQuerySizeLod",
61616684 .opcode = 103,
6162 .operands = &[_]Operand{
6163 .{ .kind = .IdResultType, .quantifier = .required },
6164 .{ .kind = .IdResult, .quantifier = .required },
6165 .{ .kind = .IdRef, .quantifier = .required },
6166 .{ .kind = .IdRef, .quantifier = .required },
6685 .operands = &.{
6686 .{ .kind = .id_result_type, .quantifier = .required },
6687 .{ .kind = .id_result, .quantifier = .required },
6688 .{ .kind = .id_ref, .quantifier = .required },
6689 .{ .kind = .id_ref, .quantifier = .required },
61676690 },
61686691 },
61696692 .{
61706693 .name = "OpImageQuerySize",
61716694 .opcode = 104,
6172 .operands = &[_]Operand{
6173 .{ .kind = .IdResultType, .quantifier = .required },
6174 .{ .kind = .IdResult, .quantifier = .required },
6175 .{ .kind = .IdRef, .quantifier = .required },
6695 .operands = &.{
6696 .{ .kind = .id_result_type, .quantifier = .required },
6697 .{ .kind = .id_result, .quantifier = .required },
6698 .{ .kind = .id_ref, .quantifier = .required },
61766699 },
61776700 },
61786701 .{
61796702 .name = "OpImageQueryLod",
61806703 .opcode = 105,
6181 .operands = &[_]Operand{
6182 .{ .kind = .IdResultType, .quantifier = .required },
6183 .{ .kind = .IdResult, .quantifier = .required },
6184 .{ .kind = .IdRef, .quantifier = .required },
6185 .{ .kind = .IdRef, .quantifier = .required },
6704 .operands = &.{
6705 .{ .kind = .id_result_type, .quantifier = .required },
6706 .{ .kind = .id_result, .quantifier = .required },
6707 .{ .kind = .id_ref, .quantifier = .required },
6708 .{ .kind = .id_ref, .quantifier = .required },
61866709 },
61876710 },
61886711 .{
61896712 .name = "OpImageQueryLevels",
61906713 .opcode = 106,
6191 .operands = &[_]Operand{
6192 .{ .kind = .IdResultType, .quantifier = .required },
6193 .{ .kind = .IdResult, .quantifier = .required },
6194 .{ .kind = .IdRef, .quantifier = .required },
6714 .operands = &.{
6715 .{ .kind = .id_result_type, .quantifier = .required },
6716 .{ .kind = .id_result, .quantifier = .required },
6717 .{ .kind = .id_ref, .quantifier = .required },
61956718 },
61966719 },
61976720 .{
61986721 .name = "OpImageQuerySamples",
61996722 .opcode = 107,
6200 .operands = &[_]Operand{
6201 .{ .kind = .IdResultType, .quantifier = .required },
6202 .{ .kind = .IdResult, .quantifier = .required },
6203 .{ .kind = .IdRef, .quantifier = .required },
6723 .operands = &.{
6724 .{ .kind = .id_result_type, .quantifier = .required },
6725 .{ .kind = .id_result, .quantifier = .required },
6726 .{ .kind = .id_ref, .quantifier = .required },
62046727 },
62056728 },
62066729 .{
62076730 .name = "OpConvertFToU",
62086731 .opcode = 109,
6209 .operands = &[_]Operand{
6210 .{ .kind = .IdResultType, .quantifier = .required },
6211 .{ .kind = .IdResult, .quantifier = .required },
6212 .{ .kind = .IdRef, .quantifier = .required },
6732 .operands = &.{
6733 .{ .kind = .id_result_type, .quantifier = .required },
6734 .{ .kind = .id_result, .quantifier = .required },
6735 .{ .kind = .id_ref, .quantifier = .required },
62136736 },
62146737 },
62156738 .{
62166739 .name = "OpConvertFToS",
62176740 .opcode = 110,
6218 .operands = &[_]Operand{
6219 .{ .kind = .IdResultType, .quantifier = .required },
6220 .{ .kind = .IdResult, .quantifier = .required },
6221 .{ .kind = .IdRef, .quantifier = .required },
6741 .operands = &.{
6742 .{ .kind = .id_result_type, .quantifier = .required },
6743 .{ .kind = .id_result, .quantifier = .required },
6744 .{ .kind = .id_ref, .quantifier = .required },
62226745 },
62236746 },
62246747 .{
62256748 .name = "OpConvertSToF",
62266749 .opcode = 111,
6227 .operands = &[_]Operand{
6228 .{ .kind = .IdResultType, .quantifier = .required },
6229 .{ .kind = .IdResult, .quantifier = .required },
6230 .{ .kind = .IdRef, .quantifier = .required },
6750 .operands = &.{
6751 .{ .kind = .id_result_type, .quantifier = .required },
6752 .{ .kind = .id_result, .quantifier = .required },
6753 .{ .kind = .id_ref, .quantifier = .required },
62316754 },
62326755 },
62336756 .{
62346757 .name = "OpConvertUToF",
62356758 .opcode = 112,
6236 .operands = &[_]Operand{
6237 .{ .kind = .IdResultType, .quantifier = .required },
6238 .{ .kind = .IdResult, .quantifier = .required },
6239 .{ .kind = .IdRef, .quantifier = .required },
6759 .operands = &.{
6760 .{ .kind = .id_result_type, .quantifier = .required },
6761 .{ .kind = .id_result, .quantifier = .required },
6762 .{ .kind = .id_ref, .quantifier = .required },
62406763 },
62416764 },
62426765 .{
62436766 .name = "OpUConvert",
62446767 .opcode = 113,
6245 .operands = &[_]Operand{
6246 .{ .kind = .IdResultType, .quantifier = .required },
6247 .{ .kind = .IdResult, .quantifier = .required },
6248 .{ .kind = .IdRef, .quantifier = .required },
6768 .operands = &.{
6769 .{ .kind = .id_result_type, .quantifier = .required },
6770 .{ .kind = .id_result, .quantifier = .required },
6771 .{ .kind = .id_ref, .quantifier = .required },
62496772 },
62506773 },
62516774 .{
62526775 .name = "OpSConvert",
62536776 .opcode = 114,
6254 .operands = &[_]Operand{
6255 .{ .kind = .IdResultType, .quantifier = .required },
6256 .{ .kind = .IdResult, .quantifier = .required },
6257 .{ .kind = .IdRef, .quantifier = .required },
6777 .operands = &.{
6778 .{ .kind = .id_result_type, .quantifier = .required },
6779 .{ .kind = .id_result, .quantifier = .required },
6780 .{ .kind = .id_ref, .quantifier = .required },
62586781 },
62596782 },
62606783 .{
62616784 .name = "OpFConvert",
62626785 .opcode = 115,
6263 .operands = &[_]Operand{
6264 .{ .kind = .IdResultType, .quantifier = .required },
6265 .{ .kind = .IdResult, .quantifier = .required },
6266 .{ .kind = .IdRef, .quantifier = .required },
6786 .operands = &.{
6787 .{ .kind = .id_result_type, .quantifier = .required },
6788 .{ .kind = .id_result, .quantifier = .required },
6789 .{ .kind = .id_ref, .quantifier = .required },
62676790 },
62686791 },
62696792 .{
62706793 .name = "OpQuantizeToF16",
62716794 .opcode = 116,
6272 .operands = &[_]Operand{
6273 .{ .kind = .IdResultType, .quantifier = .required },
6274 .{ .kind = .IdResult, .quantifier = .required },
6275 .{ .kind = .IdRef, .quantifier = .required },
6795 .operands = &.{
6796 .{ .kind = .id_result_type, .quantifier = .required },
6797 .{ .kind = .id_result, .quantifier = .required },
6798 .{ .kind = .id_ref, .quantifier = .required },
62766799 },
62776800 },
62786801 .{
62796802 .name = "OpConvertPtrToU",
62806803 .opcode = 117,
6281 .operands = &[_]Operand{
6282 .{ .kind = .IdResultType, .quantifier = .required },
6283 .{ .kind = .IdResult, .quantifier = .required },
6284 .{ .kind = .IdRef, .quantifier = .required },
6804 .operands = &.{
6805 .{ .kind = .id_result_type, .quantifier = .required },
6806 .{ .kind = .id_result, .quantifier = .required },
6807 .{ .kind = .id_ref, .quantifier = .required },
62856808 },
62866809 },
62876810 .{
62886811 .name = "OpSatConvertSToU",
62896812 .opcode = 118,
6290 .operands = &[_]Operand{
6291 .{ .kind = .IdResultType, .quantifier = .required },
6292 .{ .kind = .IdResult, .quantifier = .required },
6293 .{ .kind = .IdRef, .quantifier = .required },
6813 .operands = &.{
6814 .{ .kind = .id_result_type, .quantifier = .required },
6815 .{ .kind = .id_result, .quantifier = .required },
6816 .{ .kind = .id_ref, .quantifier = .required },
62946817 },
62956818 },
62966819 .{
62976820 .name = "OpSatConvertUToS",
62986821 .opcode = 119,
6299 .operands = &[_]Operand{
6300 .{ .kind = .IdResultType, .quantifier = .required },
6301 .{ .kind = .IdResult, .quantifier = .required },
6302 .{ .kind = .IdRef, .quantifier = .required },
6822 .operands = &.{
6823 .{ .kind = .id_result_type, .quantifier = .required },
6824 .{ .kind = .id_result, .quantifier = .required },
6825 .{ .kind = .id_ref, .quantifier = .required },
63036826 },
63046827 },
63056828 .{
63066829 .name = "OpConvertUToPtr",
63076830 .opcode = 120,
6308 .operands = &[_]Operand{
6309 .{ .kind = .IdResultType, .quantifier = .required },
6310 .{ .kind = .IdResult, .quantifier = .required },
6311 .{ .kind = .IdRef, .quantifier = .required },
6831 .operands = &.{
6832 .{ .kind = .id_result_type, .quantifier = .required },
6833 .{ .kind = .id_result, .quantifier = .required },
6834 .{ .kind = .id_ref, .quantifier = .required },
63126835 },
63136836 },
63146837 .{
63156838 .name = "OpPtrCastToGeneric",
63166839 .opcode = 121,
6317 .operands = &[_]Operand{
6318 .{ .kind = .IdResultType, .quantifier = .required },
6319 .{ .kind = .IdResult, .quantifier = .required },
6320 .{ .kind = .IdRef, .quantifier = .required },
6840 .operands = &.{
6841 .{ .kind = .id_result_type, .quantifier = .required },
6842 .{ .kind = .id_result, .quantifier = .required },
6843 .{ .kind = .id_ref, .quantifier = .required },
63216844 },
63226845 },
63236846 .{
63246847 .name = "OpGenericCastToPtr",
63256848 .opcode = 122,
6326 .operands = &[_]Operand{
6327 .{ .kind = .IdResultType, .quantifier = .required },
6328 .{ .kind = .IdResult, .quantifier = .required },
6329 .{ .kind = .IdRef, .quantifier = .required },
6849 .operands = &.{
6850 .{ .kind = .id_result_type, .quantifier = .required },
6851 .{ .kind = .id_result, .quantifier = .required },
6852 .{ .kind = .id_ref, .quantifier = .required },
63306853 },
63316854 },
63326855 .{
63336856 .name = "OpGenericCastToPtrExplicit",
63346857 .opcode = 123,
6335 .operands = &[_]Operand{
6336 .{ .kind = .IdResultType, .quantifier = .required },
6337 .{ .kind = .IdResult, .quantifier = .required },
6338 .{ .kind = .IdRef, .quantifier = .required },
6339 .{ .kind = .StorageClass, .quantifier = .required },
6858 .operands = &.{
6859 .{ .kind = .id_result_type, .quantifier = .required },
6860 .{ .kind = .id_result, .quantifier = .required },
6861 .{ .kind = .id_ref, .quantifier = .required },
6862 .{ .kind = .storage_class, .quantifier = .required },
63406863 },
63416864 },
63426865 .{
63436866 .name = "OpBitcast",
63446867 .opcode = 124,
6345 .operands = &[_]Operand{
6346 .{ .kind = .IdResultType, .quantifier = .required },
6347 .{ .kind = .IdResult, .quantifier = .required },
6348 .{ .kind = .IdRef, .quantifier = .required },
6868 .operands = &.{
6869 .{ .kind = .id_result_type, .quantifier = .required },
6870 .{ .kind = .id_result, .quantifier = .required },
6871 .{ .kind = .id_ref, .quantifier = .required },
63496872 },
63506873 },
63516874 .{
63526875 .name = "OpSNegate",
63536876 .opcode = 126,
6354 .operands = &[_]Operand{
6355 .{ .kind = .IdResultType, .quantifier = .required },
6356 .{ .kind = .IdResult, .quantifier = .required },
6357 .{ .kind = .IdRef, .quantifier = .required },
6877 .operands = &.{
6878 .{ .kind = .id_result_type, .quantifier = .required },
6879 .{ .kind = .id_result, .quantifier = .required },
6880 .{ .kind = .id_ref, .quantifier = .required },
63586881 },
63596882 },
63606883 .{
63616884 .name = "OpFNegate",
63626885 .opcode = 127,
6363 .operands = &[_]Operand{
6364 .{ .kind = .IdResultType, .quantifier = .required },
6365 .{ .kind = .IdResult, .quantifier = .required },
6366 .{ .kind = .IdRef, .quantifier = .required },
6886 .operands = &.{
6887 .{ .kind = .id_result_type, .quantifier = .required },
6888 .{ .kind = .id_result, .quantifier = .required },
6889 .{ .kind = .id_ref, .quantifier = .required },
63676890 },
63686891 },
63696892 .{
63706893 .name = "OpIAdd",
63716894 .opcode = 128,
6372 .operands = &[_]Operand{
6373 .{ .kind = .IdResultType, .quantifier = .required },
6374 .{ .kind = .IdResult, .quantifier = .required },
6375 .{ .kind = .IdRef, .quantifier = .required },
6376 .{ .kind = .IdRef, .quantifier = .required },
6895 .operands = &.{
6896 .{ .kind = .id_result_type, .quantifier = .required },
6897 .{ .kind = .id_result, .quantifier = .required },
6898 .{ .kind = .id_ref, .quantifier = .required },
6899 .{ .kind = .id_ref, .quantifier = .required },
63776900 },
63786901 },
63796902 .{
63806903 .name = "OpFAdd",
63816904 .opcode = 129,
6382 .operands = &[_]Operand{
6383 .{ .kind = .IdResultType, .quantifier = .required },
6384 .{ .kind = .IdResult, .quantifier = .required },
6385 .{ .kind = .IdRef, .quantifier = .required },
6386 .{ .kind = .IdRef, .quantifier = .required },
6905 .operands = &.{
6906 .{ .kind = .id_result_type, .quantifier = .required },
6907 .{ .kind = .id_result, .quantifier = .required },
6908 .{ .kind = .id_ref, .quantifier = .required },
6909 .{ .kind = .id_ref, .quantifier = .required },
63876910 },
63886911 },
63896912 .{
63906913 .name = "OpISub",
63916914 .opcode = 130,
6392 .operands = &[_]Operand{
6393 .{ .kind = .IdResultType, .quantifier = .required },
6394 .{ .kind = .IdResult, .quantifier = .required },
6395 .{ .kind = .IdRef, .quantifier = .required },
6396 .{ .kind = .IdRef, .quantifier = .required },
6915 .operands = &.{
6916 .{ .kind = .id_result_type, .quantifier = .required },
6917 .{ .kind = .id_result, .quantifier = .required },
6918 .{ .kind = .id_ref, .quantifier = .required },
6919 .{ .kind = .id_ref, .quantifier = .required },
63976920 },
63986921 },
63996922 .{
64006923 .name = "OpFSub",
64016924 .opcode = 131,
6402 .operands = &[_]Operand{
6403 .{ .kind = .IdResultType, .quantifier = .required },
6404 .{ .kind = .IdResult, .quantifier = .required },
6405 .{ .kind = .IdRef, .quantifier = .required },
6406 .{ .kind = .IdRef, .quantifier = .required },
6925 .operands = &.{
6926 .{ .kind = .id_result_type, .quantifier = .required },
6927 .{ .kind = .id_result, .quantifier = .required },
6928 .{ .kind = .id_ref, .quantifier = .required },
6929 .{ .kind = .id_ref, .quantifier = .required },
64076930 },
64086931 },
64096932 .{
64106933 .name = "OpIMul",
64116934 .opcode = 132,
6412 .operands = &[_]Operand{
6413 .{ .kind = .IdResultType, .quantifier = .required },
6414 .{ .kind = .IdResult, .quantifier = .required },
6415 .{ .kind = .IdRef, .quantifier = .required },
6416 .{ .kind = .IdRef, .quantifier = .required },
6935 .operands = &.{
6936 .{ .kind = .id_result_type, .quantifier = .required },
6937 .{ .kind = .id_result, .quantifier = .required },
6938 .{ .kind = .id_ref, .quantifier = .required },
6939 .{ .kind = .id_ref, .quantifier = .required },
64176940 },
64186941 },
64196942 .{
64206943 .name = "OpFMul",
64216944 .opcode = 133,
6422 .operands = &[_]Operand{
6423 .{ .kind = .IdResultType, .quantifier = .required },
6424 .{ .kind = .IdResult, .quantifier = .required },
6425 .{ .kind = .IdRef, .quantifier = .required },
6426 .{ .kind = .IdRef, .quantifier = .required },
6945 .operands = &.{
6946 .{ .kind = .id_result_type, .quantifier = .required },
6947 .{ .kind = .id_result, .quantifier = .required },
6948 .{ .kind = .id_ref, .quantifier = .required },
6949 .{ .kind = .id_ref, .quantifier = .required },
64276950 },
64286951 },
64296952 .{
64306953 .name = "OpUDiv",
64316954 .opcode = 134,
6432 .operands = &[_]Operand{
6433 .{ .kind = .IdResultType, .quantifier = .required },
6434 .{ .kind = .IdResult, .quantifier = .required },
6435 .{ .kind = .IdRef, .quantifier = .required },
6436 .{ .kind = .IdRef, .quantifier = .required },
6955 .operands = &.{
6956 .{ .kind = .id_result_type, .quantifier = .required },
6957 .{ .kind = .id_result, .quantifier = .required },
6958 .{ .kind = .id_ref, .quantifier = .required },
6959 .{ .kind = .id_ref, .quantifier = .required },
64376960 },
64386961 },
64396962 .{
64406963 .name = "OpSDiv",
64416964 .opcode = 135,
6442 .operands = &[_]Operand{
6443 .{ .kind = .IdResultType, .quantifier = .required },
6444 .{ .kind = .IdResult, .quantifier = .required },
6445 .{ .kind = .IdRef, .quantifier = .required },
6446 .{ .kind = .IdRef, .quantifier = .required },
6965 .operands = &.{
6966 .{ .kind = .id_result_type, .quantifier = .required },
6967 .{ .kind = .id_result, .quantifier = .required },
6968 .{ .kind = .id_ref, .quantifier = .required },
6969 .{ .kind = .id_ref, .quantifier = .required },
64476970 },
64486971 },
64496972 .{
64506973 .name = "OpFDiv",
64516974 .opcode = 136,
6452 .operands = &[_]Operand{
6453 .{ .kind = .IdResultType, .quantifier = .required },
6454 .{ .kind = .IdResult, .quantifier = .required },
6455 .{ .kind = .IdRef, .quantifier = .required },
6456 .{ .kind = .IdRef, .quantifier = .required },
6975 .operands = &.{
6976 .{ .kind = .id_result_type, .quantifier = .required },
6977 .{ .kind = .id_result, .quantifier = .required },
6978 .{ .kind = .id_ref, .quantifier = .required },
6979 .{ .kind = .id_ref, .quantifier = .required },
64576980 },
64586981 },
64596982 .{
64606983 .name = "OpUMod",
64616984 .opcode = 137,
6462 .operands = &[_]Operand{
6463 .{ .kind = .IdResultType, .quantifier = .required },
6464 .{ .kind = .IdResult, .quantifier = .required },
6465 .{ .kind = .IdRef, .quantifier = .required },
6466 .{ .kind = .IdRef, .quantifier = .required },
6985 .operands = &.{
6986 .{ .kind = .id_result_type, .quantifier = .required },
6987 .{ .kind = .id_result, .quantifier = .required },
6988 .{ .kind = .id_ref, .quantifier = .required },
6989 .{ .kind = .id_ref, .quantifier = .required },
64676990 },
64686991 },
64696992 .{
64706993 .name = "OpSRem",
64716994 .opcode = 138,
6472 .operands = &[_]Operand{
6473 .{ .kind = .IdResultType, .quantifier = .required },
6474 .{ .kind = .IdResult, .quantifier = .required },
6475 .{ .kind = .IdRef, .quantifier = .required },
6476 .{ .kind = .IdRef, .quantifier = .required },
6995 .operands = &.{
6996 .{ .kind = .id_result_type, .quantifier = .required },
6997 .{ .kind = .id_result, .quantifier = .required },
6998 .{ .kind = .id_ref, .quantifier = .required },
6999 .{ .kind = .id_ref, .quantifier = .required },
64777000 },
64787001 },
64797002 .{
64807003 .name = "OpSMod",
64817004 .opcode = 139,
6482 .operands = &[_]Operand{
6483 .{ .kind = .IdResultType, .quantifier = .required },
6484 .{ .kind = .IdResult, .quantifier = .required },
6485 .{ .kind = .IdRef, .quantifier = .required },
6486 .{ .kind = .IdRef, .quantifier = .required },
7005 .operands = &.{
7006 .{ .kind = .id_result_type, .quantifier = .required },
7007 .{ .kind = .id_result, .quantifier = .required },
7008 .{ .kind = .id_ref, .quantifier = .required },
7009 .{ .kind = .id_ref, .quantifier = .required },
64877010 },
64887011 },
64897012 .{
64907013 .name = "OpFRem",
64917014 .opcode = 140,
6492 .operands = &[_]Operand{
6493 .{ .kind = .IdResultType, .quantifier = .required },
6494 .{ .kind = .IdResult, .quantifier = .required },
6495 .{ .kind = .IdRef, .quantifier = .required },
6496 .{ .kind = .IdRef, .quantifier = .required },
7015 .operands = &.{
7016 .{ .kind = .id_result_type, .quantifier = .required },
7017 .{ .kind = .id_result, .quantifier = .required },
7018 .{ .kind = .id_ref, .quantifier = .required },
7019 .{ .kind = .id_ref, .quantifier = .required },
64977020 },
64987021 },
64997022 .{
65007023 .name = "OpFMod",
65017024 .opcode = 141,
6502 .operands = &[_]Operand{
6503 .{ .kind = .IdResultType, .quantifier = .required },
6504 .{ .kind = .IdResult, .quantifier = .required },
6505 .{ .kind = .IdRef, .quantifier = .required },
6506 .{ .kind = .IdRef, .quantifier = .required },
7025 .operands = &.{
7026 .{ .kind = .id_result_type, .quantifier = .required },
7027 .{ .kind = .id_result, .quantifier = .required },
7028 .{ .kind = .id_ref, .quantifier = .required },
7029 .{ .kind = .id_ref, .quantifier = .required },
65077030 },
65087031 },
65097032 .{
65107033 .name = "OpVectorTimesScalar",
65117034 .opcode = 142,
6512 .operands = &[_]Operand{
6513 .{ .kind = .IdResultType, .quantifier = .required },
6514 .{ .kind = .IdResult, .quantifier = .required },
6515 .{ .kind = .IdRef, .quantifier = .required },
6516 .{ .kind = .IdRef, .quantifier = .required },
7035 .operands = &.{
7036 .{ .kind = .id_result_type, .quantifier = .required },
7037 .{ .kind = .id_result, .quantifier = .required },
7038 .{ .kind = .id_ref, .quantifier = .required },
7039 .{ .kind = .id_ref, .quantifier = .required },
65177040 },
65187041 },
65197042 .{
65207043 .name = "OpMatrixTimesScalar",
65217044 .opcode = 143,
6522 .operands = &[_]Operand{
6523 .{ .kind = .IdResultType, .quantifier = .required },
6524 .{ .kind = .IdResult, .quantifier = .required },
6525 .{ .kind = .IdRef, .quantifier = .required },
6526 .{ .kind = .IdRef, .quantifier = .required },
7045 .operands = &.{
7046 .{ .kind = .id_result_type, .quantifier = .required },
7047 .{ .kind = .id_result, .quantifier = .required },
7048 .{ .kind = .id_ref, .quantifier = .required },
7049 .{ .kind = .id_ref, .quantifier = .required },
65277050 },
65287051 },
65297052 .{
65307053 .name = "OpVectorTimesMatrix",
65317054 .opcode = 144,
6532 .operands = &[_]Operand{
6533 .{ .kind = .IdResultType, .quantifier = .required },
6534 .{ .kind = .IdResult, .quantifier = .required },
6535 .{ .kind = .IdRef, .quantifier = .required },
6536 .{ .kind = .IdRef, .quantifier = .required },
7055 .operands = &.{
7056 .{ .kind = .id_result_type, .quantifier = .required },
7057 .{ .kind = .id_result, .quantifier = .required },
7058 .{ .kind = .id_ref, .quantifier = .required },
7059 .{ .kind = .id_ref, .quantifier = .required },
65377060 },
65387061 },
65397062 .{
65407063 .name = "OpMatrixTimesVector",
65417064 .opcode = 145,
6542 .operands = &[_]Operand{
6543 .{ .kind = .IdResultType, .quantifier = .required },
6544 .{ .kind = .IdResult, .quantifier = .required },
6545 .{ .kind = .IdRef, .quantifier = .required },
6546 .{ .kind = .IdRef, .quantifier = .required },
7065 .operands = &.{
7066 .{ .kind = .id_result_type, .quantifier = .required },
7067 .{ .kind = .id_result, .quantifier = .required },
7068 .{ .kind = .id_ref, .quantifier = .required },
7069 .{ .kind = .id_ref, .quantifier = .required },
65477070 },
65487071 },
65497072 .{
65507073 .name = "OpMatrixTimesMatrix",
65517074 .opcode = 146,
6552 .operands = &[_]Operand{
6553 .{ .kind = .IdResultType, .quantifier = .required },
6554 .{ .kind = .IdResult, .quantifier = .required },
6555 .{ .kind = .IdRef, .quantifier = .required },
6556 .{ .kind = .IdRef, .quantifier = .required },
7075 .operands = &.{
7076 .{ .kind = .id_result_type, .quantifier = .required },
7077 .{ .kind = .id_result, .quantifier = .required },
7078 .{ .kind = .id_ref, .quantifier = .required },
7079 .{ .kind = .id_ref, .quantifier = .required },
65577080 },
65587081 },
65597082 .{
65607083 .name = "OpOuterProduct",
65617084 .opcode = 147,
6562 .operands = &[_]Operand{
6563 .{ .kind = .IdResultType, .quantifier = .required },
6564 .{ .kind = .IdResult, .quantifier = .required },
6565 .{ .kind = .IdRef, .quantifier = .required },
6566 .{ .kind = .IdRef, .quantifier = .required },
7085 .operands = &.{
7086 .{ .kind = .id_result_type, .quantifier = .required },
7087 .{ .kind = .id_result, .quantifier = .required },
7088 .{ .kind = .id_ref, .quantifier = .required },
7089 .{ .kind = .id_ref, .quantifier = .required },
65677090 },
65687091 },
65697092 .{
65707093 .name = "OpDot",
65717094 .opcode = 148,
6572 .operands = &[_]Operand{
6573 .{ .kind = .IdResultType, .quantifier = .required },
6574 .{ .kind = .IdResult, .quantifier = .required },
6575 .{ .kind = .IdRef, .quantifier = .required },
6576 .{ .kind = .IdRef, .quantifier = .required },
7095 .operands = &.{
7096 .{ .kind = .id_result_type, .quantifier = .required },
7097 .{ .kind = .id_result, .quantifier = .required },
7098 .{ .kind = .id_ref, .quantifier = .required },
7099 .{ .kind = .id_ref, .quantifier = .required },
65777100 },
65787101 },
65797102 .{
65807103 .name = "OpIAddCarry",
65817104 .opcode = 149,
6582 .operands = &[_]Operand{
6583 .{ .kind = .IdResultType, .quantifier = .required },
6584 .{ .kind = .IdResult, .quantifier = .required },
6585 .{ .kind = .IdRef, .quantifier = .required },
6586 .{ .kind = .IdRef, .quantifier = .required },
7105 .operands = &.{
7106 .{ .kind = .id_result_type, .quantifier = .required },
7107 .{ .kind = .id_result, .quantifier = .required },
7108 .{ .kind = .id_ref, .quantifier = .required },
7109 .{ .kind = .id_ref, .quantifier = .required },
65877110 },
65887111 },
65897112 .{
65907113 .name = "OpISubBorrow",
65917114 .opcode = 150,
6592 .operands = &[_]Operand{
6593 .{ .kind = .IdResultType, .quantifier = .required },
6594 .{ .kind = .IdResult, .quantifier = .required },
6595 .{ .kind = .IdRef, .quantifier = .required },
6596 .{ .kind = .IdRef, .quantifier = .required },
7115 .operands = &.{
7116 .{ .kind = .id_result_type, .quantifier = .required },
7117 .{ .kind = .id_result, .quantifier = .required },
7118 .{ .kind = .id_ref, .quantifier = .required },
7119 .{ .kind = .id_ref, .quantifier = .required },
65977120 },
65987121 },
65997122 .{
66007123 .name = "OpUMulExtended",
66017124 .opcode = 151,
6602 .operands = &[_]Operand{
6603 .{ .kind = .IdResultType, .quantifier = .required },
6604 .{ .kind = .IdResult, .quantifier = .required },
6605 .{ .kind = .IdRef, .quantifier = .required },
6606 .{ .kind = .IdRef, .quantifier = .required },
7125 .operands = &.{
7126 .{ .kind = .id_result_type, .quantifier = .required },
7127 .{ .kind = .id_result, .quantifier = .required },
7128 .{ .kind = .id_ref, .quantifier = .required },
7129 .{ .kind = .id_ref, .quantifier = .required },
66077130 },
66087131 },
66097132 .{
66107133 .name = "OpSMulExtended",
66117134 .opcode = 152,
6612 .operands = &[_]Operand{
6613 .{ .kind = .IdResultType, .quantifier = .required },
6614 .{ .kind = .IdResult, .quantifier = .required },
6615 .{ .kind = .IdRef, .quantifier = .required },
6616 .{ .kind = .IdRef, .quantifier = .required },
7135 .operands = &.{
7136 .{ .kind = .id_result_type, .quantifier = .required },
7137 .{ .kind = .id_result, .quantifier = .required },
7138 .{ .kind = .id_ref, .quantifier = .required },
7139 .{ .kind = .id_ref, .quantifier = .required },
66177140 },
66187141 },
66197142 .{
66207143 .name = "OpAny",
66217144 .opcode = 154,
6622 .operands = &[_]Operand{
6623 .{ .kind = .IdResultType, .quantifier = .required },
6624 .{ .kind = .IdResult, .quantifier = .required },
6625 .{ .kind = .IdRef, .quantifier = .required },
7145 .operands = &.{
7146 .{ .kind = .id_result_type, .quantifier = .required },
7147 .{ .kind = .id_result, .quantifier = .required },
7148 .{ .kind = .id_ref, .quantifier = .required },
66267149 },
66277150 },
66287151 .{
66297152 .name = "OpAll",
66307153 .opcode = 155,
6631 .operands = &[_]Operand{
6632 .{ .kind = .IdResultType, .quantifier = .required },
6633 .{ .kind = .IdResult, .quantifier = .required },
6634 .{ .kind = .IdRef, .quantifier = .required },
7154 .operands = &.{
7155 .{ .kind = .id_result_type, .quantifier = .required },
7156 .{ .kind = .id_result, .quantifier = .required },
7157 .{ .kind = .id_ref, .quantifier = .required },
66357158 },
66367159 },
66377160 .{
66387161 .name = "OpIsNan",
66397162 .opcode = 156,
6640 .operands = &[_]Operand{
6641 .{ .kind = .IdResultType, .quantifier = .required },
6642 .{ .kind = .IdResult, .quantifier = .required },
6643 .{ .kind = .IdRef, .quantifier = .required },
7163 .operands = &.{
7164 .{ .kind = .id_result_type, .quantifier = .required },
7165 .{ .kind = .id_result, .quantifier = .required },
7166 .{ .kind = .id_ref, .quantifier = .required },
66447167 },
66457168 },
66467169 .{
66477170 .name = "OpIsInf",
66487171 .opcode = 157,
6649 .operands = &[_]Operand{
6650 .{ .kind = .IdResultType, .quantifier = .required },
6651 .{ .kind = .IdResult, .quantifier = .required },
6652 .{ .kind = .IdRef, .quantifier = .required },
7172 .operands = &.{
7173 .{ .kind = .id_result_type, .quantifier = .required },
7174 .{ .kind = .id_result, .quantifier = .required },
7175 .{ .kind = .id_ref, .quantifier = .required },
66537176 },
66547177 },
66557178 .{
66567179 .name = "OpIsFinite",
66577180 .opcode = 158,
6658 .operands = &[_]Operand{
6659 .{ .kind = .IdResultType, .quantifier = .required },
6660 .{ .kind = .IdResult, .quantifier = .required },
6661 .{ .kind = .IdRef, .quantifier = .required },
7181 .operands = &.{
7182 .{ .kind = .id_result_type, .quantifier = .required },
7183 .{ .kind = .id_result, .quantifier = .required },
7184 .{ .kind = .id_ref, .quantifier = .required },
66627185 },
66637186 },
66647187 .{
66657188 .name = "OpIsNormal",
66667189 .opcode = 159,
6667 .operands = &[_]Operand{
6668 .{ .kind = .IdResultType, .quantifier = .required },
6669 .{ .kind = .IdResult, .quantifier = .required },
6670 .{ .kind = .IdRef, .quantifier = .required },
7190 .operands = &.{
7191 .{ .kind = .id_result_type, .quantifier = .required },
7192 .{ .kind = .id_result, .quantifier = .required },
7193 .{ .kind = .id_ref, .quantifier = .required },
66717194 },
66727195 },
66737196 .{
66747197 .name = "OpSignBitSet",
66757198 .opcode = 160,
6676 .operands = &[_]Operand{
6677 .{ .kind = .IdResultType, .quantifier = .required },
6678 .{ .kind = .IdResult, .quantifier = .required },
6679 .{ .kind = .IdRef, .quantifier = .required },
7199 .operands = &.{
7200 .{ .kind = .id_result_type, .quantifier = .required },
7201 .{ .kind = .id_result, .quantifier = .required },
7202 .{ .kind = .id_ref, .quantifier = .required },
66807203 },
66817204 },
66827205 .{
66837206 .name = "OpLessOrGreater",
66847207 .opcode = 161,
6685 .operands = &[_]Operand{
6686 .{ .kind = .IdResultType, .quantifier = .required },
6687 .{ .kind = .IdResult, .quantifier = .required },
6688 .{ .kind = .IdRef, .quantifier = .required },
6689 .{ .kind = .IdRef, .quantifier = .required },
7208 .operands = &.{
7209 .{ .kind = .id_result_type, .quantifier = .required },
7210 .{ .kind = .id_result, .quantifier = .required },
7211 .{ .kind = .id_ref, .quantifier = .required },
7212 .{ .kind = .id_ref, .quantifier = .required },
66907213 },
66917214 },
66927215 .{
66937216 .name = "OpOrdered",
66947217 .opcode = 162,
6695 .operands = &[_]Operand{
6696 .{ .kind = .IdResultType, .quantifier = .required },
6697 .{ .kind = .IdResult, .quantifier = .required },
6698 .{ .kind = .IdRef, .quantifier = .required },
6699 .{ .kind = .IdRef, .quantifier = .required },
7218 .operands = &.{
7219 .{ .kind = .id_result_type, .quantifier = .required },
7220 .{ .kind = .id_result, .quantifier = .required },
7221 .{ .kind = .id_ref, .quantifier = .required },
7222 .{ .kind = .id_ref, .quantifier = .required },
67007223 },
67017224 },
67027225 .{
67037226 .name = "OpUnordered",
67047227 .opcode = 163,
6705 .operands = &[_]Operand{
6706 .{ .kind = .IdResultType, .quantifier = .required },
6707 .{ .kind = .IdResult, .quantifier = .required },
6708 .{ .kind = .IdRef, .quantifier = .required },
6709 .{ .kind = .IdRef, .quantifier = .required },
7228 .operands = &.{
7229 .{ .kind = .id_result_type, .quantifier = .required },
7230 .{ .kind = .id_result, .quantifier = .required },
7231 .{ .kind = .id_ref, .quantifier = .required },
7232 .{ .kind = .id_ref, .quantifier = .required },
67107233 },
67117234 },
67127235 .{
67137236 .name = "OpLogicalEqual",
67147237 .opcode = 164,
6715 .operands = &[_]Operand{
6716 .{ .kind = .IdResultType, .quantifier = .required },
6717 .{ .kind = .IdResult, .quantifier = .required },
6718 .{ .kind = .IdRef, .quantifier = .required },
6719 .{ .kind = .IdRef, .quantifier = .required },
7238 .operands = &.{
7239 .{ .kind = .id_result_type, .quantifier = .required },
7240 .{ .kind = .id_result, .quantifier = .required },
7241 .{ .kind = .id_ref, .quantifier = .required },
7242 .{ .kind = .id_ref, .quantifier = .required },
67207243 },
67217244 },
67227245 .{
67237246 .name = "OpLogicalNotEqual",
67247247 .opcode = 165,
6725 .operands = &[_]Operand{
6726 .{ .kind = .IdResultType, .quantifier = .required },
6727 .{ .kind = .IdResult, .quantifier = .required },
6728 .{ .kind = .IdRef, .quantifier = .required },
6729 .{ .kind = .IdRef, .quantifier = .required },
7248 .operands = &.{
7249 .{ .kind = .id_result_type, .quantifier = .required },
7250 .{ .kind = .id_result, .quantifier = .required },
7251 .{ .kind = .id_ref, .quantifier = .required },
7252 .{ .kind = .id_ref, .quantifier = .required },
67307253 },
67317254 },
67327255 .{
67337256 .name = "OpLogicalOr",
67347257 .opcode = 166,
6735 .operands = &[_]Operand{
6736 .{ .kind = .IdResultType, .quantifier = .required },
6737 .{ .kind = .IdResult, .quantifier = .required },
6738 .{ .kind = .IdRef, .quantifier = .required },
6739 .{ .kind = .IdRef, .quantifier = .required },
7258 .operands = &.{
7259 .{ .kind = .id_result_type, .quantifier = .required },
7260 .{ .kind = .id_result, .quantifier = .required },
7261 .{ .kind = .id_ref, .quantifier = .required },
7262 .{ .kind = .id_ref, .quantifier = .required },
67407263 },
67417264 },
67427265 .{
67437266 .name = "OpLogicalAnd",
67447267 .opcode = 167,
6745 .operands = &[_]Operand{
6746 .{ .kind = .IdResultType, .quantifier = .required },
6747 .{ .kind = .IdResult, .quantifier = .required },
6748 .{ .kind = .IdRef, .quantifier = .required },
6749 .{ .kind = .IdRef, .quantifier = .required },
7268 .operands = &.{
7269 .{ .kind = .id_result_type, .quantifier = .required },
7270 .{ .kind = .id_result, .quantifier = .required },
7271 .{ .kind = .id_ref, .quantifier = .required },
7272 .{ .kind = .id_ref, .quantifier = .required },
67507273 },
67517274 },
67527275 .{
67537276 .name = "OpLogicalNot",
67547277 .opcode = 168,
6755 .operands = &[_]Operand{
6756 .{ .kind = .IdResultType, .quantifier = .required },
6757 .{ .kind = .IdResult, .quantifier = .required },
6758 .{ .kind = .IdRef, .quantifier = .required },
7278 .operands = &.{
7279 .{ .kind = .id_result_type, .quantifier = .required },
7280 .{ .kind = .id_result, .quantifier = .required },
7281 .{ .kind = .id_ref, .quantifier = .required },
67597282 },
67607283 },
67617284 .{
67627285 .name = "OpSelect",
67637286 .opcode = 169,
6764 .operands = &[_]Operand{
6765 .{ .kind = .IdResultType, .quantifier = .required },
6766 .{ .kind = .IdResult, .quantifier = .required },
6767 .{ .kind = .IdRef, .quantifier = .required },
6768 .{ .kind = .IdRef, .quantifier = .required },
6769 .{ .kind = .IdRef, .quantifier = .required },
7287 .operands = &.{
7288 .{ .kind = .id_result_type, .quantifier = .required },
7289 .{ .kind = .id_result, .quantifier = .required },
7290 .{ .kind = .id_ref, .quantifier = .required },
7291 .{ .kind = .id_ref, .quantifier = .required },
7292 .{ .kind = .id_ref, .quantifier = .required },
67707293 },
67717294 },
67727295 .{
67737296 .name = "OpIEqual",
67747297 .opcode = 170,
6775 .operands = &[_]Operand{
6776 .{ .kind = .IdResultType, .quantifier = .required },
6777 .{ .kind = .IdResult, .quantifier = .required },
6778 .{ .kind = .IdRef, .quantifier = .required },
6779 .{ .kind = .IdRef, .quantifier = .required },
7298 .operands = &.{
7299 .{ .kind = .id_result_type, .quantifier = .required },
7300 .{ .kind = .id_result, .quantifier = .required },
7301 .{ .kind = .id_ref, .quantifier = .required },
7302 .{ .kind = .id_ref, .quantifier = .required },
67807303 },
67817304 },
67827305 .{
67837306 .name = "OpINotEqual",
67847307 .opcode = 171,
6785 .operands = &[_]Operand{
6786 .{ .kind = .IdResultType, .quantifier = .required },
6787 .{ .kind = .IdResult, .quantifier = .required },
6788 .{ .kind = .IdRef, .quantifier = .required },
6789 .{ .kind = .IdRef, .quantifier = .required },
7308 .operands = &.{
7309 .{ .kind = .id_result_type, .quantifier = .required },
7310 .{ .kind = .id_result, .quantifier = .required },
7311 .{ .kind = .id_ref, .quantifier = .required },
7312 .{ .kind = .id_ref, .quantifier = .required },
67907313 },
67917314 },
67927315 .{
67937316 .name = "OpUGreaterThan",
67947317 .opcode = 172,
6795 .operands = &[_]Operand{
6796 .{ .kind = .IdResultType, .quantifier = .required },
6797 .{ .kind = .IdResult, .quantifier = .required },
6798 .{ .kind = .IdRef, .quantifier = .required },
6799 .{ .kind = .IdRef, .quantifier = .required },
7318 .operands = &.{
7319 .{ .kind = .id_result_type, .quantifier = .required },
7320 .{ .kind = .id_result, .quantifier = .required },
7321 .{ .kind = .id_ref, .quantifier = .required },
7322 .{ .kind = .id_ref, .quantifier = .required },
68007323 },
68017324 },
68027325 .{
68037326 .name = "OpSGreaterThan",
68047327 .opcode = 173,
6805 .operands = &[_]Operand{
6806 .{ .kind = .IdResultType, .quantifier = .required },
6807 .{ .kind = .IdResult, .quantifier = .required },
6808 .{ .kind = .IdRef, .quantifier = .required },
6809 .{ .kind = .IdRef, .quantifier = .required },
7328 .operands = &.{
7329 .{ .kind = .id_result_type, .quantifier = .required },
7330 .{ .kind = .id_result, .quantifier = .required },
7331 .{ .kind = .id_ref, .quantifier = .required },
7332 .{ .kind = .id_ref, .quantifier = .required },
68107333 },
68117334 },
68127335 .{
68137336 .name = "OpUGreaterThanEqual",
68147337 .opcode = 174,
6815 .operands = &[_]Operand{
6816 .{ .kind = .IdResultType, .quantifier = .required },
6817 .{ .kind = .IdResult, .quantifier = .required },
6818 .{ .kind = .IdRef, .quantifier = .required },
6819 .{ .kind = .IdRef, .quantifier = .required },
7338 .operands = &.{
7339 .{ .kind = .id_result_type, .quantifier = .required },
7340 .{ .kind = .id_result, .quantifier = .required },
7341 .{ .kind = .id_ref, .quantifier = .required },
7342 .{ .kind = .id_ref, .quantifier = .required },
68207343 },
68217344 },
68227345 .{
68237346 .name = "OpSGreaterThanEqual",
68247347 .opcode = 175,
6825 .operands = &[_]Operand{
6826 .{ .kind = .IdResultType, .quantifier = .required },
6827 .{ .kind = .IdResult, .quantifier = .required },
6828 .{ .kind = .IdRef, .quantifier = .required },
6829 .{ .kind = .IdRef, .quantifier = .required },
7348 .operands = &.{
7349 .{ .kind = .id_result_type, .quantifier = .required },
7350 .{ .kind = .id_result, .quantifier = .required },
7351 .{ .kind = .id_ref, .quantifier = .required },
7352 .{ .kind = .id_ref, .quantifier = .required },
68307353 },
68317354 },
68327355 .{
68337356 .name = "OpULessThan",
68347357 .opcode = 176,
6835 .operands = &[_]Operand{
6836 .{ .kind = .IdResultType, .quantifier = .required },
6837 .{ .kind = .IdResult, .quantifier = .required },
6838 .{ .kind = .IdRef, .quantifier = .required },
6839 .{ .kind = .IdRef, .quantifier = .required },
7358 .operands = &.{
7359 .{ .kind = .id_result_type, .quantifier = .required },
7360 .{ .kind = .id_result, .quantifier = .required },
7361 .{ .kind = .id_ref, .quantifier = .required },
7362 .{ .kind = .id_ref, .quantifier = .required },
68407363 },
68417364 },
68427365 .{
68437366 .name = "OpSLessThan",
68447367 .opcode = 177,
6845 .operands = &[_]Operand{
6846 .{ .kind = .IdResultType, .quantifier = .required },
6847 .{ .kind = .IdResult, .quantifier = .required },
6848 .{ .kind = .IdRef, .quantifier = .required },
6849 .{ .kind = .IdRef, .quantifier = .required },
7368 .operands = &.{
7369 .{ .kind = .id_result_type, .quantifier = .required },
7370 .{ .kind = .id_result, .quantifier = .required },
7371 .{ .kind = .id_ref, .quantifier = .required },
7372 .{ .kind = .id_ref, .quantifier = .required },
68507373 },
68517374 },
68527375 .{
68537376 .name = "OpULessThanEqual",
68547377 .opcode = 178,
6855 .operands = &[_]Operand{
6856 .{ .kind = .IdResultType, .quantifier = .required },
6857 .{ .kind = .IdResult, .quantifier = .required },
6858 .{ .kind = .IdRef, .quantifier = .required },
6859 .{ .kind = .IdRef, .quantifier = .required },
7378 .operands = &.{
7379 .{ .kind = .id_result_type, .quantifier = .required },
7380 .{ .kind = .id_result, .quantifier = .required },
7381 .{ .kind = .id_ref, .quantifier = .required },
7382 .{ .kind = .id_ref, .quantifier = .required },
68607383 },
68617384 },
68627385 .{
68637386 .name = "OpSLessThanEqual",
68647387 .opcode = 179,
6865 .operands = &[_]Operand{
6866 .{ .kind = .IdResultType, .quantifier = .required },
6867 .{ .kind = .IdResult, .quantifier = .required },
6868 .{ .kind = .IdRef, .quantifier = .required },
6869 .{ .kind = .IdRef, .quantifier = .required },
7388 .operands = &.{
7389 .{ .kind = .id_result_type, .quantifier = .required },
7390 .{ .kind = .id_result, .quantifier = .required },
7391 .{ .kind = .id_ref, .quantifier = .required },
7392 .{ .kind = .id_ref, .quantifier = .required },
68707393 },
68717394 },
68727395 .{
68737396 .name = "OpFOrdEqual",
68747397 .opcode = 180,
6875 .operands = &[_]Operand{
6876 .{ .kind = .IdResultType, .quantifier = .required },
6877 .{ .kind = .IdResult, .quantifier = .required },
6878 .{ .kind = .IdRef, .quantifier = .required },
6879 .{ .kind = .IdRef, .quantifier = .required },
7398 .operands = &.{
7399 .{ .kind = .id_result_type, .quantifier = .required },
7400 .{ .kind = .id_result, .quantifier = .required },
7401 .{ .kind = .id_ref, .quantifier = .required },
7402 .{ .kind = .id_ref, .quantifier = .required },
68807403 },
68817404 },
68827405 .{
68837406 .name = "OpFUnordEqual",
68847407 .opcode = 181,
6885 .operands = &[_]Operand{
6886 .{ .kind = .IdResultType, .quantifier = .required },
6887 .{ .kind = .IdResult, .quantifier = .required },
6888 .{ .kind = .IdRef, .quantifier = .required },
6889 .{ .kind = .IdRef, .quantifier = .required },
7408 .operands = &.{
7409 .{ .kind = .id_result_type, .quantifier = .required },
7410 .{ .kind = .id_result, .quantifier = .required },
7411 .{ .kind = .id_ref, .quantifier = .required },
7412 .{ .kind = .id_ref, .quantifier = .required },
68907413 },
68917414 },
68927415 .{
68937416 .name = "OpFOrdNotEqual",
68947417 .opcode = 182,
6895 .operands = &[_]Operand{
6896 .{ .kind = .IdResultType, .quantifier = .required },
6897 .{ .kind = .IdResult, .quantifier = .required },
6898 .{ .kind = .IdRef, .quantifier = .required },
6899 .{ .kind = .IdRef, .quantifier = .required },
7418 .operands = &.{
7419 .{ .kind = .id_result_type, .quantifier = .required },
7420 .{ .kind = .id_result, .quantifier = .required },
7421 .{ .kind = .id_ref, .quantifier = .required },
7422 .{ .kind = .id_ref, .quantifier = .required },
69007423 },
69017424 },
69027425 .{
69037426 .name = "OpFUnordNotEqual",
69047427 .opcode = 183,
6905 .operands = &[_]Operand{
6906 .{ .kind = .IdResultType, .quantifier = .required },
6907 .{ .kind = .IdResult, .quantifier = .required },
6908 .{ .kind = .IdRef, .quantifier = .required },
6909 .{ .kind = .IdRef, .quantifier = .required },
7428 .operands = &.{
7429 .{ .kind = .id_result_type, .quantifier = .required },
7430 .{ .kind = .id_result, .quantifier = .required },
7431 .{ .kind = .id_ref, .quantifier = .required },
7432 .{ .kind = .id_ref, .quantifier = .required },
69107433 },
69117434 },
69127435 .{
69137436 .name = "OpFOrdLessThan",
69147437 .opcode = 184,
6915 .operands = &[_]Operand{
6916 .{ .kind = .IdResultType, .quantifier = .required },
6917 .{ .kind = .IdResult, .quantifier = .required },
6918 .{ .kind = .IdRef, .quantifier = .required },
6919 .{ .kind = .IdRef, .quantifier = .required },
7438 .operands = &.{
7439 .{ .kind = .id_result_type, .quantifier = .required },
7440 .{ .kind = .id_result, .quantifier = .required },
7441 .{ .kind = .id_ref, .quantifier = .required },
7442 .{ .kind = .id_ref, .quantifier = .required },
69207443 },
69217444 },
69227445 .{
69237446 .name = "OpFUnordLessThan",
69247447 .opcode = 185,
6925 .operands = &[_]Operand{
6926 .{ .kind = .IdResultType, .quantifier = .required },
6927 .{ .kind = .IdResult, .quantifier = .required },
6928 .{ .kind = .IdRef, .quantifier = .required },
6929 .{ .kind = .IdRef, .quantifier = .required },
7448 .operands = &.{
7449 .{ .kind = .id_result_type, .quantifier = .required },
7450 .{ .kind = .id_result, .quantifier = .required },
7451 .{ .kind = .id_ref, .quantifier = .required },
7452 .{ .kind = .id_ref, .quantifier = .required },
69307453 },
69317454 },
69327455 .{
69337456 .name = "OpFOrdGreaterThan",
69347457 .opcode = 186,
6935 .operands = &[_]Operand{
6936 .{ .kind = .IdResultType, .quantifier = .required },
6937 .{ .kind = .IdResult, .quantifier = .required },
6938 .{ .kind = .IdRef, .quantifier = .required },
6939 .{ .kind = .IdRef, .quantifier = .required },
7458 .operands = &.{
7459 .{ .kind = .id_result_type, .quantifier = .required },
7460 .{ .kind = .id_result, .quantifier = .required },
7461 .{ .kind = .id_ref, .quantifier = .required },
7462 .{ .kind = .id_ref, .quantifier = .required },
69407463 },
69417464 },
69427465 .{
69437466 .name = "OpFUnordGreaterThan",
69447467 .opcode = 187,
6945 .operands = &[_]Operand{
6946 .{ .kind = .IdResultType, .quantifier = .required },
6947 .{ .kind = .IdResult, .quantifier = .required },
6948 .{ .kind = .IdRef, .quantifier = .required },
6949 .{ .kind = .IdRef, .quantifier = .required },
7468 .operands = &.{
7469 .{ .kind = .id_result_type, .quantifier = .required },
7470 .{ .kind = .id_result, .quantifier = .required },
7471 .{ .kind = .id_ref, .quantifier = .required },
7472 .{ .kind = .id_ref, .quantifier = .required },
69507473 },
69517474 },
69527475 .{
69537476 .name = "OpFOrdLessThanEqual",
69547477 .opcode = 188,
6955 .operands = &[_]Operand{
6956 .{ .kind = .IdResultType, .quantifier = .required },
6957 .{ .kind = .IdResult, .quantifier = .required },
6958 .{ .kind = .IdRef, .quantifier = .required },
6959 .{ .kind = .IdRef, .quantifier = .required },
7478 .operands = &.{
7479 .{ .kind = .id_result_type, .quantifier = .required },
7480 .{ .kind = .id_result, .quantifier = .required },
7481 .{ .kind = .id_ref, .quantifier = .required },
7482 .{ .kind = .id_ref, .quantifier = .required },
69607483 },
69617484 },
69627485 .{
69637486 .name = "OpFUnordLessThanEqual",
69647487 .opcode = 189,
6965 .operands = &[_]Operand{
6966 .{ .kind = .IdResultType, .quantifier = .required },
6967 .{ .kind = .IdResult, .quantifier = .required },
6968 .{ .kind = .IdRef, .quantifier = .required },
6969 .{ .kind = .IdRef, .quantifier = .required },
7488 .operands = &.{
7489 .{ .kind = .id_result_type, .quantifier = .required },
7490 .{ .kind = .id_result, .quantifier = .required },
7491 .{ .kind = .id_ref, .quantifier = .required },
7492 .{ .kind = .id_ref, .quantifier = .required },
69707493 },
69717494 },
69727495 .{
69737496 .name = "OpFOrdGreaterThanEqual",
69747497 .opcode = 190,
6975 .operands = &[_]Operand{
6976 .{ .kind = .IdResultType, .quantifier = .required },
6977 .{ .kind = .IdResult, .quantifier = .required },
6978 .{ .kind = .IdRef, .quantifier = .required },
6979 .{ .kind = .IdRef, .quantifier = .required },
7498 .operands = &.{
7499 .{ .kind = .id_result_type, .quantifier = .required },
7500 .{ .kind = .id_result, .quantifier = .required },
7501 .{ .kind = .id_ref, .quantifier = .required },
7502 .{ .kind = .id_ref, .quantifier = .required },
69807503 },
69817504 },
69827505 .{
69837506 .name = "OpFUnordGreaterThanEqual",
69847507 .opcode = 191,
6985 .operands = &[_]Operand{
6986 .{ .kind = .IdResultType, .quantifier = .required },
6987 .{ .kind = .IdResult, .quantifier = .required },
6988 .{ .kind = .IdRef, .quantifier = .required },
6989 .{ .kind = .IdRef, .quantifier = .required },
7508 .operands = &.{
7509 .{ .kind = .id_result_type, .quantifier = .required },
7510 .{ .kind = .id_result, .quantifier = .required },
7511 .{ .kind = .id_ref, .quantifier = .required },
7512 .{ .kind = .id_ref, .quantifier = .required },
69907513 },
69917514 },
69927515 .{
69937516 .name = "OpShiftRightLogical",
69947517 .opcode = 194,
6995 .operands = &[_]Operand{
6996 .{ .kind = .IdResultType, .quantifier = .required },
6997 .{ .kind = .IdResult, .quantifier = .required },
6998 .{ .kind = .IdRef, .quantifier = .required },
6999 .{ .kind = .IdRef, .quantifier = .required },
7518 .operands = &.{
7519 .{ .kind = .id_result_type, .quantifier = .required },
7520 .{ .kind = .id_result, .quantifier = .required },
7521 .{ .kind = .id_ref, .quantifier = .required },
7522 .{ .kind = .id_ref, .quantifier = .required },
70007523 },
70017524 },
70027525 .{
70037526 .name = "OpShiftRightArithmetic",
70047527 .opcode = 195,
7005 .operands = &[_]Operand{
7006 .{ .kind = .IdResultType, .quantifier = .required },
7007 .{ .kind = .IdResult, .quantifier = .required },
7008 .{ .kind = .IdRef, .quantifier = .required },
7009 .{ .kind = .IdRef, .quantifier = .required },
7528 .operands = &.{
7529 .{ .kind = .id_result_type, .quantifier = .required },
7530 .{ .kind = .id_result, .quantifier = .required },
7531 .{ .kind = .id_ref, .quantifier = .required },
7532 .{ .kind = .id_ref, .quantifier = .required },
70107533 },
70117534 },
70127535 .{
70137536 .name = "OpShiftLeftLogical",
70147537 .opcode = 196,
7015 .operands = &[_]Operand{
7016 .{ .kind = .IdResultType, .quantifier = .required },
7017 .{ .kind = .IdResult, .quantifier = .required },
7018 .{ .kind = .IdRef, .quantifier = .required },
7019 .{ .kind = .IdRef, .quantifier = .required },
7538 .operands = &.{
7539 .{ .kind = .id_result_type, .quantifier = .required },
7540 .{ .kind = .id_result, .quantifier = .required },
7541 .{ .kind = .id_ref, .quantifier = .required },
7542 .{ .kind = .id_ref, .quantifier = .required },
70207543 },
70217544 },
70227545 .{
70237546 .name = "OpBitwiseOr",
70247547 .opcode = 197,
7025 .operands = &[_]Operand{
7026 .{ .kind = .IdResultType, .quantifier = .required },
7027 .{ .kind = .IdResult, .quantifier = .required },
7028 .{ .kind = .IdRef, .quantifier = .required },
7029 .{ .kind = .IdRef, .quantifier = .required },
7548 .operands = &.{
7549 .{ .kind = .id_result_type, .quantifier = .required },
7550 .{ .kind = .id_result, .quantifier = .required },
7551 .{ .kind = .id_ref, .quantifier = .required },
7552 .{ .kind = .id_ref, .quantifier = .required },
70307553 },
70317554 },
70327555 .{
70337556 .name = "OpBitwiseXor",
70347557 .opcode = 198,
7035 .operands = &[_]Operand{
7036 .{ .kind = .IdResultType, .quantifier = .required },
7037 .{ .kind = .IdResult, .quantifier = .required },
7038 .{ .kind = .IdRef, .quantifier = .required },
7039 .{ .kind = .IdRef, .quantifier = .required },
7558 .operands = &.{
7559 .{ .kind = .id_result_type, .quantifier = .required },
7560 .{ .kind = .id_result, .quantifier = .required },
7561 .{ .kind = .id_ref, .quantifier = .required },
7562 .{ .kind = .id_ref, .quantifier = .required },
70407563 },
70417564 },
70427565 .{
70437566 .name = "OpBitwiseAnd",
70447567 .opcode = 199,
7045 .operands = &[_]Operand{
7046 .{ .kind = .IdResultType, .quantifier = .required },
7047 .{ .kind = .IdResult, .quantifier = .required },
7048 .{ .kind = .IdRef, .quantifier = .required },
7049 .{ .kind = .IdRef, .quantifier = .required },
7568 .operands = &.{
7569 .{ .kind = .id_result_type, .quantifier = .required },
7570 .{ .kind = .id_result, .quantifier = .required },
7571 .{ .kind = .id_ref, .quantifier = .required },
7572 .{ .kind = .id_ref, .quantifier = .required },
70507573 },
70517574 },
70527575 .{
70537576 .name = "OpNot",
70547577 .opcode = 200,
7055 .operands = &[_]Operand{
7056 .{ .kind = .IdResultType, .quantifier = .required },
7057 .{ .kind = .IdResult, .quantifier = .required },
7058 .{ .kind = .IdRef, .quantifier = .required },
7578 .operands = &.{
7579 .{ .kind = .id_result_type, .quantifier = .required },
7580 .{ .kind = .id_result, .quantifier = .required },
7581 .{ .kind = .id_ref, .quantifier = .required },
70597582 },
70607583 },
70617584 .{
70627585 .name = "OpBitFieldInsert",
70637586 .opcode = 201,
7064 .operands = &[_]Operand{
7065 .{ .kind = .IdResultType, .quantifier = .required },
7066 .{ .kind = .IdResult, .quantifier = .required },
7067 .{ .kind = .IdRef, .quantifier = .required },
7068 .{ .kind = .IdRef, .quantifier = .required },
7069 .{ .kind = .IdRef, .quantifier = .required },
7070 .{ .kind = .IdRef, .quantifier = .required },
7587 .operands = &.{
7588 .{ .kind = .id_result_type, .quantifier = .required },
7589 .{ .kind = .id_result, .quantifier = .required },
7590 .{ .kind = .id_ref, .quantifier = .required },
7591 .{ .kind = .id_ref, .quantifier = .required },
7592 .{ .kind = .id_ref, .quantifier = .required },
7593 .{ .kind = .id_ref, .quantifier = .required },
70717594 },
70727595 },
70737596 .{
70747597 .name = "OpBitFieldSExtract",
70757598 .opcode = 202,
7076 .operands = &[_]Operand{
7077 .{ .kind = .IdResultType, .quantifier = .required },
7078 .{ .kind = .IdResult, .quantifier = .required },
7079 .{ .kind = .IdRef, .quantifier = .required },
7080 .{ .kind = .IdRef, .quantifier = .required },
7081 .{ .kind = .IdRef, .quantifier = .required },
7599 .operands = &.{
7600 .{ .kind = .id_result_type, .quantifier = .required },
7601 .{ .kind = .id_result, .quantifier = .required },
7602 .{ .kind = .id_ref, .quantifier = .required },
7603 .{ .kind = .id_ref, .quantifier = .required },
7604 .{ .kind = .id_ref, .quantifier = .required },
70827605 },
70837606 },
70847607 .{
70857608 .name = "OpBitFieldUExtract",
70867609 .opcode = 203,
7087 .operands = &[_]Operand{
7088 .{ .kind = .IdResultType, .quantifier = .required },
7089 .{ .kind = .IdResult, .quantifier = .required },
7090 .{ .kind = .IdRef, .quantifier = .required },
7091 .{ .kind = .IdRef, .quantifier = .required },
7092 .{ .kind = .IdRef, .quantifier = .required },
7610 .operands = &.{
7611 .{ .kind = .id_result_type, .quantifier = .required },
7612 .{ .kind = .id_result, .quantifier = .required },
7613 .{ .kind = .id_ref, .quantifier = .required },
7614 .{ .kind = .id_ref, .quantifier = .required },
7615 .{ .kind = .id_ref, .quantifier = .required },
70937616 },
70947617 },
70957618 .{
70967619 .name = "OpBitReverse",
70977620 .opcode = 204,
7098 .operands = &[_]Operand{
7099 .{ .kind = .IdResultType, .quantifier = .required },
7100 .{ .kind = .IdResult, .quantifier = .required },
7101 .{ .kind = .IdRef, .quantifier = .required },
7621 .operands = &.{
7622 .{ .kind = .id_result_type, .quantifier = .required },
7623 .{ .kind = .id_result, .quantifier = .required },
7624 .{ .kind = .id_ref, .quantifier = .required },
71027625 },
71037626 },
71047627 .{
71057628 .name = "OpBitCount",
71067629 .opcode = 205,
7107 .operands = &[_]Operand{
7108 .{ .kind = .IdResultType, .quantifier = .required },
7109 .{ .kind = .IdResult, .quantifier = .required },
7110 .{ .kind = .IdRef, .quantifier = .required },
7630 .operands = &.{
7631 .{ .kind = .id_result_type, .quantifier = .required },
7632 .{ .kind = .id_result, .quantifier = .required },
7633 .{ .kind = .id_ref, .quantifier = .required },
71117634 },
71127635 },
71137636 .{
71147637 .name = "OpDPdx",
71157638 .opcode = 207,
7116 .operands = &[_]Operand{
7117 .{ .kind = .IdResultType, .quantifier = .required },
7118 .{ .kind = .IdResult, .quantifier = .required },
7119 .{ .kind = .IdRef, .quantifier = .required },
7639 .operands = &.{
7640 .{ .kind = .id_result_type, .quantifier = .required },
7641 .{ .kind = .id_result, .quantifier = .required },
7642 .{ .kind = .id_ref, .quantifier = .required },
71207643 },
71217644 },
71227645 .{
71237646 .name = "OpDPdy",
71247647 .opcode = 208,
7125 .operands = &[_]Operand{
7126 .{ .kind = .IdResultType, .quantifier = .required },
7127 .{ .kind = .IdResult, .quantifier = .required },
7128 .{ .kind = .IdRef, .quantifier = .required },
7648 .operands = &.{
7649 .{ .kind = .id_result_type, .quantifier = .required },
7650 .{ .kind = .id_result, .quantifier = .required },
7651 .{ .kind = .id_ref, .quantifier = .required },
71297652 },
71307653 },
71317654 .{
71327655 .name = "OpFwidth",
71337656 .opcode = 209,
7134 .operands = &[_]Operand{
7135 .{ .kind = .IdResultType, .quantifier = .required },
7136 .{ .kind = .IdResult, .quantifier = .required },
7137 .{ .kind = .IdRef, .quantifier = .required },
7657 .operands = &.{
7658 .{ .kind = .id_result_type, .quantifier = .required },
7659 .{ .kind = .id_result, .quantifier = .required },
7660 .{ .kind = .id_ref, .quantifier = .required },
71387661 },
71397662 },
71407663 .{
71417664 .name = "OpDPdxFine",
71427665 .opcode = 210,
7143 .operands = &[_]Operand{
7144 .{ .kind = .IdResultType, .quantifier = .required },
7145 .{ .kind = .IdResult, .quantifier = .required },
7146 .{ .kind = .IdRef, .quantifier = .required },
7666 .operands = &.{
7667 .{ .kind = .id_result_type, .quantifier = .required },
7668 .{ .kind = .id_result, .quantifier = .required },
7669 .{ .kind = .id_ref, .quantifier = .required },
71477670 },
71487671 },
71497672 .{
71507673 .name = "OpDPdyFine",
71517674 .opcode = 211,
7152 .operands = &[_]Operand{
7153 .{ .kind = .IdResultType, .quantifier = .required },
7154 .{ .kind = .IdResult, .quantifier = .required },
7155 .{ .kind = .IdRef, .quantifier = .required },
7675 .operands = &.{
7676 .{ .kind = .id_result_type, .quantifier = .required },
7677 .{ .kind = .id_result, .quantifier = .required },
7678 .{ .kind = .id_ref, .quantifier = .required },
71567679 },
71577680 },
71587681 .{
71597682 .name = "OpFwidthFine",
71607683 .opcode = 212,
7161 .operands = &[_]Operand{
7162 .{ .kind = .IdResultType, .quantifier = .required },
7163 .{ .kind = .IdResult, .quantifier = .required },
7164 .{ .kind = .IdRef, .quantifier = .required },
7684 .operands = &.{
7685 .{ .kind = .id_result_type, .quantifier = .required },
7686 .{ .kind = .id_result, .quantifier = .required },
7687 .{ .kind = .id_ref, .quantifier = .required },
71657688 },
71667689 },
71677690 .{
71687691 .name = "OpDPdxCoarse",
71697692 .opcode = 213,
7170 .operands = &[_]Operand{
7171 .{ .kind = .IdResultType, .quantifier = .required },
7172 .{ .kind = .IdResult, .quantifier = .required },
7173 .{ .kind = .IdRef, .quantifier = .required },
7693 .operands = &.{
7694 .{ .kind = .id_result_type, .quantifier = .required },
7695 .{ .kind = .id_result, .quantifier = .required },
7696 .{ .kind = .id_ref, .quantifier = .required },
71747697 },
71757698 },
71767699 .{
71777700 .name = "OpDPdyCoarse",
71787701 .opcode = 214,
7179 .operands = &[_]Operand{
7180 .{ .kind = .IdResultType, .quantifier = .required },
7181 .{ .kind = .IdResult, .quantifier = .required },
7182 .{ .kind = .IdRef, .quantifier = .required },
7702 .operands = &.{
7703 .{ .kind = .id_result_type, .quantifier = .required },
7704 .{ .kind = .id_result, .quantifier = .required },
7705 .{ .kind = .id_ref, .quantifier = .required },
71837706 },
71847707 },
71857708 .{
71867709 .name = "OpFwidthCoarse",
71877710 .opcode = 215,
7188 .operands = &[_]Operand{
7189 .{ .kind = .IdResultType, .quantifier = .required },
7190 .{ .kind = .IdResult, .quantifier = .required },
7191 .{ .kind = .IdRef, .quantifier = .required },
7711 .operands = &.{
7712 .{ .kind = .id_result_type, .quantifier = .required },
7713 .{ .kind = .id_result, .quantifier = .required },
7714 .{ .kind = .id_ref, .quantifier = .required },
71927715 },
71937716 },
71947717 .{
71957718 .name = "OpEmitVertex",
71967719 .opcode = 218,
7197 .operands = &[_]Operand{},
7720 .operands = &.{},
71987721 },
71997722 .{
72007723 .name = "OpEndPrimitive",
72017724 .opcode = 219,
7202 .operands = &[_]Operand{},
7725 .operands = &.{},
72037726 },
72047727 .{
72057728 .name = "OpEmitStreamVertex",
72067729 .opcode = 220,
7207 .operands = &[_]Operand{
7208 .{ .kind = .IdRef, .quantifier = .required },
7730 .operands = &.{
7731 .{ .kind = .id_ref, .quantifier = .required },
72097732 },
72107733 },
72117734 .{
72127735 .name = "OpEndStreamPrimitive",
72137736 .opcode = 221,
7214 .operands = &[_]Operand{
7215 .{ .kind = .IdRef, .quantifier = .required },
7737 .operands = &.{
7738 .{ .kind = .id_ref, .quantifier = .required },
72167739 },
72177740 },
72187741 .{
72197742 .name = "OpControlBarrier",
72207743 .opcode = 224,
7221 .operands = &[_]Operand{
7222 .{ .kind = .IdScope, .quantifier = .required },
7223 .{ .kind = .IdScope, .quantifier = .required },
7224 .{ .kind = .IdMemorySemantics, .quantifier = .required },
7744 .operands = &.{
7745 .{ .kind = .id_scope, .quantifier = .required },
7746 .{ .kind = .id_scope, .quantifier = .required },
7747 .{ .kind = .id_memory_semantics, .quantifier = .required },
72257748 },
72267749 },
72277750 .{
72287751 .name = "OpMemoryBarrier",
72297752 .opcode = 225,
7230 .operands = &[_]Operand{
7231 .{ .kind = .IdScope, .quantifier = .required },
7232 .{ .kind = .IdMemorySemantics, .quantifier = .required },
7753 .operands = &.{
7754 .{ .kind = .id_scope, .quantifier = .required },
7755 .{ .kind = .id_memory_semantics, .quantifier = .required },
72337756 },
72347757 },
72357758 .{
72367759 .name = "OpAtomicLoad",
72377760 .opcode = 227,
7238 .operands = &[_]Operand{
7239 .{ .kind = .IdResultType, .quantifier = .required },
7240 .{ .kind = .IdResult, .quantifier = .required },
7241 .{ .kind = .IdRef, .quantifier = .required },
7242 .{ .kind = .IdScope, .quantifier = .required },
7243 .{ .kind = .IdMemorySemantics, .quantifier = .required },
7761 .operands = &.{
7762 .{ .kind = .id_result_type, .quantifier = .required },
7763 .{ .kind = .id_result, .quantifier = .required },
7764 .{ .kind = .id_ref, .quantifier = .required },
7765 .{ .kind = .id_scope, .quantifier = .required },
7766 .{ .kind = .id_memory_semantics, .quantifier = .required },
72447767 },
72457768 },
72467769 .{
72477770 .name = "OpAtomicStore",
72487771 .opcode = 228,
7249 .operands = &[_]Operand{
7250 .{ .kind = .IdRef, .quantifier = .required },
7251 .{ .kind = .IdScope, .quantifier = .required },
7252 .{ .kind = .IdMemorySemantics, .quantifier = .required },
7253 .{ .kind = .IdRef, .quantifier = .required },
7772 .operands = &.{
7773 .{ .kind = .id_ref, .quantifier = .required },
7774 .{ .kind = .id_scope, .quantifier = .required },
7775 .{ .kind = .id_memory_semantics, .quantifier = .required },
7776 .{ .kind = .id_ref, .quantifier = .required },
72547777 },
72557778 },
72567779 .{
72577780 .name = "OpAtomicExchange",
72587781 .opcode = 229,
7259 .operands = &[_]Operand{
7260 .{ .kind = .IdResultType, .quantifier = .required },
7261 .{ .kind = .IdResult, .quantifier = .required },
7262 .{ .kind = .IdRef, .quantifier = .required },
7263 .{ .kind = .IdScope, .quantifier = .required },
7264 .{ .kind = .IdMemorySemantics, .quantifier = .required },
7265 .{ .kind = .IdRef, .quantifier = .required },
7782 .operands = &.{
7783 .{ .kind = .id_result_type, .quantifier = .required },
7784 .{ .kind = .id_result, .quantifier = .required },
7785 .{ .kind = .id_ref, .quantifier = .required },
7786 .{ .kind = .id_scope, .quantifier = .required },
7787 .{ .kind = .id_memory_semantics, .quantifier = .required },
7788 .{ .kind = .id_ref, .quantifier = .required },
72667789 },
72677790 },
72687791 .{
72697792 .name = "OpAtomicCompareExchange",
72707793 .opcode = 230,
7271 .operands = &[_]Operand{
7272 .{ .kind = .IdResultType, .quantifier = .required },
7273 .{ .kind = .IdResult, .quantifier = .required },
7274 .{ .kind = .IdRef, .quantifier = .required },
7275 .{ .kind = .IdScope, .quantifier = .required },
7276 .{ .kind = .IdMemorySemantics, .quantifier = .required },
7277 .{ .kind = .IdMemorySemantics, .quantifier = .required },
7278 .{ .kind = .IdRef, .quantifier = .required },
7279 .{ .kind = .IdRef, .quantifier = .required },
7794 .operands = &.{
7795 .{ .kind = .id_result_type, .quantifier = .required },
7796 .{ .kind = .id_result, .quantifier = .required },
7797 .{ .kind = .id_ref, .quantifier = .required },
7798 .{ .kind = .id_scope, .quantifier = .required },
7799 .{ .kind = .id_memory_semantics, .quantifier = .required },
7800 .{ .kind = .id_memory_semantics, .quantifier = .required },
7801 .{ .kind = .id_ref, .quantifier = .required },
7802 .{ .kind = .id_ref, .quantifier = .required },
72807803 },
72817804 },
72827805 .{
72837806 .name = "OpAtomicCompareExchangeWeak",
72847807 .opcode = 231,
7285 .operands = &[_]Operand{
7286 .{ .kind = .IdResultType, .quantifier = .required },
7287 .{ .kind = .IdResult, .quantifier = .required },
7288 .{ .kind = .IdRef, .quantifier = .required },
7289 .{ .kind = .IdScope, .quantifier = .required },
7290 .{ .kind = .IdMemorySemantics, .quantifier = .required },
7291 .{ .kind = .IdMemorySemantics, .quantifier = .required },
7292 .{ .kind = .IdRef, .quantifier = .required },
7293 .{ .kind = .IdRef, .quantifier = .required },
7808 .operands = &.{
7809 .{ .kind = .id_result_type, .quantifier = .required },
7810 .{ .kind = .id_result, .quantifier = .required },
7811 .{ .kind = .id_ref, .quantifier = .required },
7812 .{ .kind = .id_scope, .quantifier = .required },
7813 .{ .kind = .id_memory_semantics, .quantifier = .required },
7814 .{ .kind = .id_memory_semantics, .quantifier = .required },
7815 .{ .kind = .id_ref, .quantifier = .required },
7816 .{ .kind = .id_ref, .quantifier = .required },
72947817 },
72957818 },
72967819 .{
72977820 .name = "OpAtomicIIncrement",
72987821 .opcode = 232,
7299 .operands = &[_]Operand{
7300 .{ .kind = .IdResultType, .quantifier = .required },
7301 .{ .kind = .IdResult, .quantifier = .required },
7302 .{ .kind = .IdRef, .quantifier = .required },
7303 .{ .kind = .IdScope, .quantifier = .required },
7304 .{ .kind = .IdMemorySemantics, .quantifier = .required },
7822 .operands = &.{
7823 .{ .kind = .id_result_type, .quantifier = .required },
7824 .{ .kind = .id_result, .quantifier = .required },
7825 .{ .kind = .id_ref, .quantifier = .required },
7826 .{ .kind = .id_scope, .quantifier = .required },
7827 .{ .kind = .id_memory_semantics, .quantifier = .required },
73057828 },
73067829 },
73077830 .{
73087831 .name = "OpAtomicIDecrement",
73097832 .opcode = 233,
7310 .operands = &[_]Operand{
7311 .{ .kind = .IdResultType, .quantifier = .required },
7312 .{ .kind = .IdResult, .quantifier = .required },
7313 .{ .kind = .IdRef, .quantifier = .required },
7314 .{ .kind = .IdScope, .quantifier = .required },
7315 .{ .kind = .IdMemorySemantics, .quantifier = .required },
7833 .operands = &.{
7834 .{ .kind = .id_result_type, .quantifier = .required },
7835 .{ .kind = .id_result, .quantifier = .required },
7836 .{ .kind = .id_ref, .quantifier = .required },
7837 .{ .kind = .id_scope, .quantifier = .required },
7838 .{ .kind = .id_memory_semantics, .quantifier = .required },
73167839 },
73177840 },
73187841 .{
73197842 .name = "OpAtomicIAdd",
73207843 .opcode = 234,
7321 .operands = &[_]Operand{
7322 .{ .kind = .IdResultType, .quantifier = .required },
7323 .{ .kind = .IdResult, .quantifier = .required },
7324 .{ .kind = .IdRef, .quantifier = .required },
7325 .{ .kind = .IdScope, .quantifier = .required },
7326 .{ .kind = .IdMemorySemantics, .quantifier = .required },
7327 .{ .kind = .IdRef, .quantifier = .required },
7844 .operands = &.{
7845 .{ .kind = .id_result_type, .quantifier = .required },
7846 .{ .kind = .id_result, .quantifier = .required },
7847 .{ .kind = .id_ref, .quantifier = .required },
7848 .{ .kind = .id_scope, .quantifier = .required },
7849 .{ .kind = .id_memory_semantics, .quantifier = .required },
7850 .{ .kind = .id_ref, .quantifier = .required },
73287851 },
73297852 },
73307853 .{
73317854 .name = "OpAtomicISub",
73327855 .opcode = 235,
7333 .operands = &[_]Operand{
7334 .{ .kind = .IdResultType, .quantifier = .required },
7335 .{ .kind = .IdResult, .quantifier = .required },
7336 .{ .kind = .IdRef, .quantifier = .required },
7337 .{ .kind = .IdScope, .quantifier = .required },
7338 .{ .kind = .IdMemorySemantics, .quantifier = .required },
7339 .{ .kind = .IdRef, .quantifier = .required },
7856 .operands = &.{
7857 .{ .kind = .id_result_type, .quantifier = .required },
7858 .{ .kind = .id_result, .quantifier = .required },
7859 .{ .kind = .id_ref, .quantifier = .required },
7860 .{ .kind = .id_scope, .quantifier = .required },
7861 .{ .kind = .id_memory_semantics, .quantifier = .required },
7862 .{ .kind = .id_ref, .quantifier = .required },
73407863 },
73417864 },
73427865 .{
73437866 .name = "OpAtomicSMin",
73447867 .opcode = 236,
7345 .operands = &[_]Operand{
7346 .{ .kind = .IdResultType, .quantifier = .required },
7347 .{ .kind = .IdResult, .quantifier = .required },
7348 .{ .kind = .IdRef, .quantifier = .required },
7349 .{ .kind = .IdScope, .quantifier = .required },
7350 .{ .kind = .IdMemorySemantics, .quantifier = .required },
7351 .{ .kind = .IdRef, .quantifier = .required },
7868 .operands = &.{
7869 .{ .kind = .id_result_type, .quantifier = .required },
7870 .{ .kind = .id_result, .quantifier = .required },
7871 .{ .kind = .id_ref, .quantifier = .required },
7872 .{ .kind = .id_scope, .quantifier = .required },
7873 .{ .kind = .id_memory_semantics, .quantifier = .required },
7874 .{ .kind = .id_ref, .quantifier = .required },
73527875 },
73537876 },
73547877 .{
73557878 .name = "OpAtomicUMin",
73567879 .opcode = 237,
7357 .operands = &[_]Operand{
7358 .{ .kind = .IdResultType, .quantifier = .required },
7359 .{ .kind = .IdResult, .quantifier = .required },
7360 .{ .kind = .IdRef, .quantifier = .required },
7361 .{ .kind = .IdScope, .quantifier = .required },
7362 .{ .kind = .IdMemorySemantics, .quantifier = .required },
7363 .{ .kind = .IdRef, .quantifier = .required },
7880 .operands = &.{
7881 .{ .kind = .id_result_type, .quantifier = .required },
7882 .{ .kind = .id_result, .quantifier = .required },
7883 .{ .kind = .id_ref, .quantifier = .required },
7884 .{ .kind = .id_scope, .quantifier = .required },
7885 .{ .kind = .id_memory_semantics, .quantifier = .required },
7886 .{ .kind = .id_ref, .quantifier = .required },
73647887 },
73657888 },
73667889 .{
73677890 .name = "OpAtomicSMax",
73687891 .opcode = 238,
7369 .operands = &[_]Operand{
7370 .{ .kind = .IdResultType, .quantifier = .required },
7371 .{ .kind = .IdResult, .quantifier = .required },
7372 .{ .kind = .IdRef, .quantifier = .required },
7373 .{ .kind = .IdScope, .quantifier = .required },
7374 .{ .kind = .IdMemorySemantics, .quantifier = .required },
7375 .{ .kind = .IdRef, .quantifier = .required },
7892 .operands = &.{
7893 .{ .kind = .id_result_type, .quantifier = .required },
7894 .{ .kind = .id_result, .quantifier = .required },
7895 .{ .kind = .id_ref, .quantifier = .required },
7896 .{ .kind = .id_scope, .quantifier = .required },
7897 .{ .kind = .id_memory_semantics, .quantifier = .required },
7898 .{ .kind = .id_ref, .quantifier = .required },
73767899 },
73777900 },
73787901 .{
73797902 .name = "OpAtomicUMax",
73807903 .opcode = 239,
7381 .operands = &[_]Operand{
7382 .{ .kind = .IdResultType, .quantifier = .required },
7383 .{ .kind = .IdResult, .quantifier = .required },
7384 .{ .kind = .IdRef, .quantifier = .required },
7385 .{ .kind = .IdScope, .quantifier = .required },
7386 .{ .kind = .IdMemorySemantics, .quantifier = .required },
7387 .{ .kind = .IdRef, .quantifier = .required },
7904 .operands = &.{
7905 .{ .kind = .id_result_type, .quantifier = .required },
7906 .{ .kind = .id_result, .quantifier = .required },
7907 .{ .kind = .id_ref, .quantifier = .required },
7908 .{ .kind = .id_scope, .quantifier = .required },
7909 .{ .kind = .id_memory_semantics, .quantifier = .required },
7910 .{ .kind = .id_ref, .quantifier = .required },
73887911 },
73897912 },
73907913 .{
73917914 .name = "OpAtomicAnd",
73927915 .opcode = 240,
7393 .operands = &[_]Operand{
7394 .{ .kind = .IdResultType, .quantifier = .required },
7395 .{ .kind = .IdResult, .quantifier = .required },
7396 .{ .kind = .IdRef, .quantifier = .required },
7397 .{ .kind = .IdScope, .quantifier = .required },
7398 .{ .kind = .IdMemorySemantics, .quantifier = .required },
7399 .{ .kind = .IdRef, .quantifier = .required },
7916 .operands = &.{
7917 .{ .kind = .id_result_type, .quantifier = .required },
7918 .{ .kind = .id_result, .quantifier = .required },
7919 .{ .kind = .id_ref, .quantifier = .required },
7920 .{ .kind = .id_scope, .quantifier = .required },
7921 .{ .kind = .id_memory_semantics, .quantifier = .required },
7922 .{ .kind = .id_ref, .quantifier = .required },
74007923 },
74017924 },
74027925 .{
74037926 .name = "OpAtomicOr",
74047927 .opcode = 241,
7405 .operands = &[_]Operand{
7406 .{ .kind = .IdResultType, .quantifier = .required },
7407 .{ .kind = .IdResult, .quantifier = .required },
7408 .{ .kind = .IdRef, .quantifier = .required },
7409 .{ .kind = .IdScope, .quantifier = .required },
7410 .{ .kind = .IdMemorySemantics, .quantifier = .required },
7411 .{ .kind = .IdRef, .quantifier = .required },
7928 .operands = &.{
7929 .{ .kind = .id_result_type, .quantifier = .required },
7930 .{ .kind = .id_result, .quantifier = .required },
7931 .{ .kind = .id_ref, .quantifier = .required },
7932 .{ .kind = .id_scope, .quantifier = .required },
7933 .{ .kind = .id_memory_semantics, .quantifier = .required },
7934 .{ .kind = .id_ref, .quantifier = .required },
74127935 },
74137936 },
74147937 .{
74157938 .name = "OpAtomicXor",
74167939 .opcode = 242,
7417 .operands = &[_]Operand{
7418 .{ .kind = .IdResultType, .quantifier = .required },
7419 .{ .kind = .IdResult, .quantifier = .required },
7420 .{ .kind = .IdRef, .quantifier = .required },
7421 .{ .kind = .IdScope, .quantifier = .required },
7422 .{ .kind = .IdMemorySemantics, .quantifier = .required },
7423 .{ .kind = .IdRef, .quantifier = .required },
7940 .operands = &.{
7941 .{ .kind = .id_result_type, .quantifier = .required },
7942 .{ .kind = .id_result, .quantifier = .required },
7943 .{ .kind = .id_ref, .quantifier = .required },
7944 .{ .kind = .id_scope, .quantifier = .required },
7945 .{ .kind = .id_memory_semantics, .quantifier = .required },
7946 .{ .kind = .id_ref, .quantifier = .required },
74247947 },
74257948 },
74267949 .{
74277950 .name = "OpPhi",
74287951 .opcode = 245,
7429 .operands = &[_]Operand{
7430 .{ .kind = .IdResultType, .quantifier = .required },
7431 .{ .kind = .IdResult, .quantifier = .required },
7432 .{ .kind = .PairIdRefIdRef, .quantifier = .variadic },
7952 .operands = &.{
7953 .{ .kind = .id_result_type, .quantifier = .required },
7954 .{ .kind = .id_result, .quantifier = .required },
7955 .{ .kind = .pair_id_ref_id_ref, .quantifier = .variadic },
74337956 },
74347957 },
74357958 .{
74367959 .name = "OpLoopMerge",
74377960 .opcode = 246,
7438 .operands = &[_]Operand{
7439 .{ .kind = .IdRef, .quantifier = .required },
7440 .{ .kind = .IdRef, .quantifier = .required },
7441 .{ .kind = .LoopControl, .quantifier = .required },
7961 .operands = &.{
7962 .{ .kind = .id_ref, .quantifier = .required },
7963 .{ .kind = .id_ref, .quantifier = .required },
7964 .{ .kind = .loop_control, .quantifier = .required },
74427965 },
74437966 },
74447967 .{
74457968 .name = "OpSelectionMerge",
74467969 .opcode = 247,
7447 .operands = &[_]Operand{
7448 .{ .kind = .IdRef, .quantifier = .required },
7449 .{ .kind = .SelectionControl, .quantifier = .required },
7970 .operands = &.{
7971 .{ .kind = .id_ref, .quantifier = .required },
7972 .{ .kind = .selection_control, .quantifier = .required },
74507973 },
74517974 },
74527975 .{
74537976 .name = "OpLabel",
74547977 .opcode = 248,
7455 .operands = &[_]Operand{
7456 .{ .kind = .IdResult, .quantifier = .required },
7978 .operands = &.{
7979 .{ .kind = .id_result, .quantifier = .required },
74577980 },
74587981 },
74597982 .{
74607983 .name = "OpBranch",
74617984 .opcode = 249,
7462 .operands = &[_]Operand{
7463 .{ .kind = .IdRef, .quantifier = .required },
7985 .operands = &.{
7986 .{ .kind = .id_ref, .quantifier = .required },
74647987 },
74657988 },
74667989 .{
74677990 .name = "OpBranchConditional",
74687991 .opcode = 250,
7469 .operands = &[_]Operand{
7470 .{ .kind = .IdRef, .quantifier = .required },
7471 .{ .kind = .IdRef, .quantifier = .required },
7472 .{ .kind = .IdRef, .quantifier = .required },
7473 .{ .kind = .LiteralInteger, .quantifier = .variadic },
7992 .operands = &.{
7993 .{ .kind = .id_ref, .quantifier = .required },
7994 .{ .kind = .id_ref, .quantifier = .required },
7995 .{ .kind = .id_ref, .quantifier = .required },
7996 .{ .kind = .literal_integer, .quantifier = .variadic },
74747997 },
74757998 },
74767999 .{
74778000 .name = "OpSwitch",
74788001 .opcode = 251,
7479 .operands = &[_]Operand{
7480 .{ .kind = .IdRef, .quantifier = .required },
7481 .{ .kind = .IdRef, .quantifier = .required },
7482 .{ .kind = .PairLiteralIntegerIdRef, .quantifier = .variadic },
8002 .operands = &.{
8003 .{ .kind = .id_ref, .quantifier = .required },
8004 .{ .kind = .id_ref, .quantifier = .required },
8005 .{ .kind = .pair_literal_integer_id_ref, .quantifier = .variadic },
74838006 },
74848007 },
74858008 .{
74868009 .name = "OpKill",
74878010 .opcode = 252,
7488 .operands = &[_]Operand{},
8011 .operands = &.{},
74898012 },
74908013 .{
74918014 .name = "OpReturn",
74928015 .opcode = 253,
7493 .operands = &[_]Operand{},
8016 .operands = &.{},
74948017 },
74958018 .{
74968019 .name = "OpReturnValue",
74978020 .opcode = 254,
7498 .operands = &[_]Operand{
7499 .{ .kind = .IdRef, .quantifier = .required },
8021 .operands = &.{
8022 .{ .kind = .id_ref, .quantifier = .required },
75008023 },
75018024 },
75028025 .{
75038026 .name = "OpUnreachable",
75048027 .opcode = 255,
7505 .operands = &[_]Operand{},
8028 .operands = &.{},
75068029 },
75078030 .{
75088031 .name = "OpLifetimeStart",
75098032 .opcode = 256,
7510 .operands = &[_]Operand{
7511 .{ .kind = .IdRef, .quantifier = .required },
7512 .{ .kind = .LiteralInteger, .quantifier = .required },
8033 .operands = &.{
8034 .{ .kind = .id_ref, .quantifier = .required },
8035 .{ .kind = .literal_integer, .quantifier = .required },
75138036 },
75148037 },
75158038 .{
75168039 .name = "OpLifetimeStop",
75178040 .opcode = 257,
7518 .operands = &[_]Operand{
7519 .{ .kind = .IdRef, .quantifier = .required },
7520 .{ .kind = .LiteralInteger, .quantifier = .required },
8041 .operands = &.{
8042 .{ .kind = .id_ref, .quantifier = .required },
8043 .{ .kind = .literal_integer, .quantifier = .required },
75218044 },
75228045 },
75238046 .{
75248047 .name = "OpGroupAsyncCopy",
75258048 .opcode = 259,
7526 .operands = &[_]Operand{
7527 .{ .kind = .IdResultType, .quantifier = .required },
7528 .{ .kind = .IdResult, .quantifier = .required },
7529 .{ .kind = .IdScope, .quantifier = .required },
7530 .{ .kind = .IdRef, .quantifier = .required },
7531 .{ .kind = .IdRef, .quantifier = .required },
7532 .{ .kind = .IdRef, .quantifier = .required },
7533 .{ .kind = .IdRef, .quantifier = .required },
7534 .{ .kind = .IdRef, .quantifier = .required },
8049 .operands = &.{
8050 .{ .kind = .id_result_type, .quantifier = .required },
8051 .{ .kind = .id_result, .quantifier = .required },
8052 .{ .kind = .id_scope, .quantifier = .required },
8053 .{ .kind = .id_ref, .quantifier = .required },
8054 .{ .kind = .id_ref, .quantifier = .required },
8055 .{ .kind = .id_ref, .quantifier = .required },
8056 .{ .kind = .id_ref, .quantifier = .required },
8057 .{ .kind = .id_ref, .quantifier = .required },
75358058 },
75368059 },
75378060 .{
75388061 .name = "OpGroupWaitEvents",
75398062 .opcode = 260,
7540 .operands = &[_]Operand{
7541 .{ .kind = .IdScope, .quantifier = .required },
7542 .{ .kind = .IdRef, .quantifier = .required },
7543 .{ .kind = .IdRef, .quantifier = .required },
8063 .operands = &.{
8064 .{ .kind = .id_scope, .quantifier = .required },
8065 .{ .kind = .id_ref, .quantifier = .required },
8066 .{ .kind = .id_ref, .quantifier = .required },
75448067 },
75458068 },
75468069 .{
75478070 .name = "OpGroupAll",
75488071 .opcode = 261,
7549 .operands = &[_]Operand{
7550 .{ .kind = .IdResultType, .quantifier = .required },
7551 .{ .kind = .IdResult, .quantifier = .required },
7552 .{ .kind = .IdScope, .quantifier = .required },
7553 .{ .kind = .IdRef, .quantifier = .required },
8072 .operands = &.{
8073 .{ .kind = .id_result_type, .quantifier = .required },
8074 .{ .kind = .id_result, .quantifier = .required },
8075 .{ .kind = .id_scope, .quantifier = .required },
8076 .{ .kind = .id_ref, .quantifier = .required },
75548077 },
75558078 },
75568079 .{
75578080 .name = "OpGroupAny",
75588081 .opcode = 262,
7559 .operands = &[_]Operand{
7560 .{ .kind = .IdResultType, .quantifier = .required },
7561 .{ .kind = .IdResult, .quantifier = .required },
7562 .{ .kind = .IdScope, .quantifier = .required },
7563 .{ .kind = .IdRef, .quantifier = .required },
8082 .operands = &.{
8083 .{ .kind = .id_result_type, .quantifier = .required },
8084 .{ .kind = .id_result, .quantifier = .required },
8085 .{ .kind = .id_scope, .quantifier = .required },
8086 .{ .kind = .id_ref, .quantifier = .required },
75648087 },
75658088 },
75668089 .{
75678090 .name = "OpGroupBroadcast",
75688091 .opcode = 263,
7569 .operands = &[_]Operand{
7570 .{ .kind = .IdResultType, .quantifier = .required },
7571 .{ .kind = .IdResult, .quantifier = .required },
7572 .{ .kind = .IdScope, .quantifier = .required },
7573 .{ .kind = .IdRef, .quantifier = .required },
7574 .{ .kind = .IdRef, .quantifier = .required },
8092 .operands = &.{
8093 .{ .kind = .id_result_type, .quantifier = .required },
8094 .{ .kind = .id_result, .quantifier = .required },
8095 .{ .kind = .id_scope, .quantifier = .required },
8096 .{ .kind = .id_ref, .quantifier = .required },
8097 .{ .kind = .id_ref, .quantifier = .required },
75758098 },
75768099 },
75778100 .{
75788101 .name = "OpGroupIAdd",
75798102 .opcode = 264,
7580 .operands = &[_]Operand{
7581 .{ .kind = .IdResultType, .quantifier = .required },
7582 .{ .kind = .IdResult, .quantifier = .required },
7583 .{ .kind = .IdScope, .quantifier = .required },
7584 .{ .kind = .GroupOperation, .quantifier = .required },
7585 .{ .kind = .IdRef, .quantifier = .required },
8103 .operands = &.{
8104 .{ .kind = .id_result_type, .quantifier = .required },
8105 .{ .kind = .id_result, .quantifier = .required },
8106 .{ .kind = .id_scope, .quantifier = .required },
8107 .{ .kind = .group_operation, .quantifier = .required },
8108 .{ .kind = .id_ref, .quantifier = .required },
75868109 },
75878110 },
75888111 .{
75898112 .name = "OpGroupFAdd",
75908113 .opcode = 265,
7591 .operands = &[_]Operand{
7592 .{ .kind = .IdResultType, .quantifier = .required },
7593 .{ .kind = .IdResult, .quantifier = .required },
7594 .{ .kind = .IdScope, .quantifier = .required },
7595 .{ .kind = .GroupOperation, .quantifier = .required },
7596 .{ .kind = .IdRef, .quantifier = .required },
8114 .operands = &.{
8115 .{ .kind = .id_result_type, .quantifier = .required },
8116 .{ .kind = .id_result, .quantifier = .required },
8117 .{ .kind = .id_scope, .quantifier = .required },
8118 .{ .kind = .group_operation, .quantifier = .required },
8119 .{ .kind = .id_ref, .quantifier = .required },
75978120 },
75988121 },
75998122 .{
76008123 .name = "OpGroupFMin",
76018124 .opcode = 266,
7602 .operands = &[_]Operand{
7603 .{ .kind = .IdResultType, .quantifier = .required },
7604 .{ .kind = .IdResult, .quantifier = .required },
7605 .{ .kind = .IdScope, .quantifier = .required },
7606 .{ .kind = .GroupOperation, .quantifier = .required },
7607 .{ .kind = .IdRef, .quantifier = .required },
8125 .operands = &.{
8126 .{ .kind = .id_result_type, .quantifier = .required },
8127 .{ .kind = .id_result, .quantifier = .required },
8128 .{ .kind = .id_scope, .quantifier = .required },
8129 .{ .kind = .group_operation, .quantifier = .required },
8130 .{ .kind = .id_ref, .quantifier = .required },
76088131 },
76098132 },
76108133 .{
76118134 .name = "OpGroupUMin",
76128135 .opcode = 267,
7613 .operands = &[_]Operand{
7614 .{ .kind = .IdResultType, .quantifier = .required },
7615 .{ .kind = .IdResult, .quantifier = .required },
7616 .{ .kind = .IdScope, .quantifier = .required },
7617 .{ .kind = .GroupOperation, .quantifier = .required },
7618 .{ .kind = .IdRef, .quantifier = .required },
8136 .operands = &.{
8137 .{ .kind = .id_result_type, .quantifier = .required },
8138 .{ .kind = .id_result, .quantifier = .required },
8139 .{ .kind = .id_scope, .quantifier = .required },
8140 .{ .kind = .group_operation, .quantifier = .required },
8141 .{ .kind = .id_ref, .quantifier = .required },
76198142 },
76208143 },
76218144 .{
76228145 .name = "OpGroupSMin",
76238146 .opcode = 268,
7624 .operands = &[_]Operand{
7625 .{ .kind = .IdResultType, .quantifier = .required },
7626 .{ .kind = .IdResult, .quantifier = .required },
7627 .{ .kind = .IdScope, .quantifier = .required },
7628 .{ .kind = .GroupOperation, .quantifier = .required },
7629 .{ .kind = .IdRef, .quantifier = .required },
8147 .operands = &.{
8148 .{ .kind = .id_result_type, .quantifier = .required },
8149 .{ .kind = .id_result, .quantifier = .required },
8150 .{ .kind = .id_scope, .quantifier = .required },
8151 .{ .kind = .group_operation, .quantifier = .required },
8152 .{ .kind = .id_ref, .quantifier = .required },
76308153 },
76318154 },
76328155 .{
76338156 .name = "OpGroupFMax",
76348157 .opcode = 269,
7635 .operands = &[_]Operand{
7636 .{ .kind = .IdResultType, .quantifier = .required },
7637 .{ .kind = .IdResult, .quantifier = .required },
7638 .{ .kind = .IdScope, .quantifier = .required },
7639 .{ .kind = .GroupOperation, .quantifier = .required },
7640 .{ .kind = .IdRef, .quantifier = .required },
8158 .operands = &.{
8159 .{ .kind = .id_result_type, .quantifier = .required },
8160 .{ .kind = .id_result, .quantifier = .required },
8161 .{ .kind = .id_scope, .quantifier = .required },
8162 .{ .kind = .group_operation, .quantifier = .required },
8163 .{ .kind = .id_ref, .quantifier = .required },
76418164 },
76428165 },
76438166 .{
76448167 .name = "OpGroupUMax",
76458168 .opcode = 270,
7646 .operands = &[_]Operand{
7647 .{ .kind = .IdResultType, .quantifier = .required },
7648 .{ .kind = .IdResult, .quantifier = .required },
7649 .{ .kind = .IdScope, .quantifier = .required },
7650 .{ .kind = .GroupOperation, .quantifier = .required },
7651 .{ .kind = .IdRef, .quantifier = .required },
8169 .operands = &.{
8170 .{ .kind = .id_result_type, .quantifier = .required },
8171 .{ .kind = .id_result, .quantifier = .required },
8172 .{ .kind = .id_scope, .quantifier = .required },
8173 .{ .kind = .group_operation, .quantifier = .required },
8174 .{ .kind = .id_ref, .quantifier = .required },
76528175 },
76538176 },
76548177 .{
76558178 .name = "OpGroupSMax",
76568179 .opcode = 271,
7657 .operands = &[_]Operand{
7658 .{ .kind = .IdResultType, .quantifier = .required },
7659 .{ .kind = .IdResult, .quantifier = .required },
7660 .{ .kind = .IdScope, .quantifier = .required },
7661 .{ .kind = .GroupOperation, .quantifier = .required },
7662 .{ .kind = .IdRef, .quantifier = .required },
8180 .operands = &.{
8181 .{ .kind = .id_result_type, .quantifier = .required },
8182 .{ .kind = .id_result, .quantifier = .required },
8183 .{ .kind = .id_scope, .quantifier = .required },
8184 .{ .kind = .group_operation, .quantifier = .required },
8185 .{ .kind = .id_ref, .quantifier = .required },
76638186 },
76648187 },
76658188 .{
76668189 .name = "OpReadPipe",
76678190 .opcode = 274,
7668 .operands = &[_]Operand{
7669 .{ .kind = .IdResultType, .quantifier = .required },
7670 .{ .kind = .IdResult, .quantifier = .required },
7671 .{ .kind = .IdRef, .quantifier = .required },
7672 .{ .kind = .IdRef, .quantifier = .required },
7673 .{ .kind = .IdRef, .quantifier = .required },
7674 .{ .kind = .IdRef, .quantifier = .required },
8191 .operands = &.{
8192 .{ .kind = .id_result_type, .quantifier = .required },
8193 .{ .kind = .id_result, .quantifier = .required },
8194 .{ .kind = .id_ref, .quantifier = .required },
8195 .{ .kind = .id_ref, .quantifier = .required },
8196 .{ .kind = .id_ref, .quantifier = .required },
8197 .{ .kind = .id_ref, .quantifier = .required },
76758198 },
76768199 },
76778200 .{
76788201 .name = "OpWritePipe",
76798202 .opcode = 275,
7680 .operands = &[_]Operand{
7681 .{ .kind = .IdResultType, .quantifier = .required },
7682 .{ .kind = .IdResult, .quantifier = .required },
7683 .{ .kind = .IdRef, .quantifier = .required },
7684 .{ .kind = .IdRef, .quantifier = .required },
7685 .{ .kind = .IdRef, .quantifier = .required },
7686 .{ .kind = .IdRef, .quantifier = .required },
8203 .operands = &.{
8204 .{ .kind = .id_result_type, .quantifier = .required },
8205 .{ .kind = .id_result, .quantifier = .required },
8206 .{ .kind = .id_ref, .quantifier = .required },
8207 .{ .kind = .id_ref, .quantifier = .required },
8208 .{ .kind = .id_ref, .quantifier = .required },
8209 .{ .kind = .id_ref, .quantifier = .required },
76878210 },
76888211 },
76898212 .{
76908213 .name = "OpReservedReadPipe",
76918214 .opcode = 276,
7692 .operands = &[_]Operand{
7693 .{ .kind = .IdResultType, .quantifier = .required },
7694 .{ .kind = .IdResult, .quantifier = .required },
7695 .{ .kind = .IdRef, .quantifier = .required },
7696 .{ .kind = .IdRef, .quantifier = .required },
7697 .{ .kind = .IdRef, .quantifier = .required },
7698 .{ .kind = .IdRef, .quantifier = .required },
7699 .{ .kind = .IdRef, .quantifier = .required },
7700 .{ .kind = .IdRef, .quantifier = .required },
8215 .operands = &.{
8216 .{ .kind = .id_result_type, .quantifier = .required },
8217 .{ .kind = .id_result, .quantifier = .required },
8218 .{ .kind = .id_ref, .quantifier = .required },
8219 .{ .kind = .id_ref, .quantifier = .required },
8220 .{ .kind = .id_ref, .quantifier = .required },
8221 .{ .kind = .id_ref, .quantifier = .required },
8222 .{ .kind = .id_ref, .quantifier = .required },
8223 .{ .kind = .id_ref, .quantifier = .required },
77018224 },
77028225 },
77038226 .{
77048227 .name = "OpReservedWritePipe",
77058228 .opcode = 277,
7706 .operands = &[_]Operand{
7707 .{ .kind = .IdResultType, .quantifier = .required },
7708 .{ .kind = .IdResult, .quantifier = .required },
7709 .{ .kind = .IdRef, .quantifier = .required },
7710 .{ .kind = .IdRef, .quantifier = .required },
7711 .{ .kind = .IdRef, .quantifier = .required },
7712 .{ .kind = .IdRef, .quantifier = .required },
7713 .{ .kind = .IdRef, .quantifier = .required },
7714 .{ .kind = .IdRef, .quantifier = .required },
8229 .operands = &.{
8230 .{ .kind = .id_result_type, .quantifier = .required },
8231 .{ .kind = .id_result, .quantifier = .required },
8232 .{ .kind = .id_ref, .quantifier = .required },
8233 .{ .kind = .id_ref, .quantifier = .required },
8234 .{ .kind = .id_ref, .quantifier = .required },
8235 .{ .kind = .id_ref, .quantifier = .required },
8236 .{ .kind = .id_ref, .quantifier = .required },
8237 .{ .kind = .id_ref, .quantifier = .required },
77158238 },
77168239 },
77178240 .{
77188241 .name = "OpReserveReadPipePackets",
77198242 .opcode = 278,
7720 .operands = &[_]Operand{
7721 .{ .kind = .IdResultType, .quantifier = .required },
7722 .{ .kind = .IdResult, .quantifier = .required },
7723 .{ .kind = .IdRef, .quantifier = .required },
7724 .{ .kind = .IdRef, .quantifier = .required },
7725 .{ .kind = .IdRef, .quantifier = .required },
7726 .{ .kind = .IdRef, .quantifier = .required },
8243 .operands = &.{
8244 .{ .kind = .id_result_type, .quantifier = .required },
8245 .{ .kind = .id_result, .quantifier = .required },
8246 .{ .kind = .id_ref, .quantifier = .required },
8247 .{ .kind = .id_ref, .quantifier = .required },
8248 .{ .kind = .id_ref, .quantifier = .required },
8249 .{ .kind = .id_ref, .quantifier = .required },
77278250 },
77288251 },
77298252 .{
77308253 .name = "OpReserveWritePipePackets",
77318254 .opcode = 279,
7732 .operands = &[_]Operand{
7733 .{ .kind = .IdResultType, .quantifier = .required },
7734 .{ .kind = .IdResult, .quantifier = .required },
7735 .{ .kind = .IdRef, .quantifier = .required },
7736 .{ .kind = .IdRef, .quantifier = .required },
7737 .{ .kind = .IdRef, .quantifier = .required },
7738 .{ .kind = .IdRef, .quantifier = .required },
8255 .operands = &.{
8256 .{ .kind = .id_result_type, .quantifier = .required },
8257 .{ .kind = .id_result, .quantifier = .required },
8258 .{ .kind = .id_ref, .quantifier = .required },
8259 .{ .kind = .id_ref, .quantifier = .required },
8260 .{ .kind = .id_ref, .quantifier = .required },
8261 .{ .kind = .id_ref, .quantifier = .required },
77398262 },
77408263 },
77418264 .{
77428265 .name = "OpCommitReadPipe",
77438266 .opcode = 280,
7744 .operands = &[_]Operand{
7745 .{ .kind = .IdRef, .quantifier = .required },
7746 .{ .kind = .IdRef, .quantifier = .required },
7747 .{ .kind = .IdRef, .quantifier = .required },
7748 .{ .kind = .IdRef, .quantifier = .required },
8267 .operands = &.{
8268 .{ .kind = .id_ref, .quantifier = .required },
8269 .{ .kind = .id_ref, .quantifier = .required },
8270 .{ .kind = .id_ref, .quantifier = .required },
8271 .{ .kind = .id_ref, .quantifier = .required },
77498272 },
77508273 },
77518274 .{
77528275 .name = "OpCommitWritePipe",
77538276 .opcode = 281,
7754 .operands = &[_]Operand{
7755 .{ .kind = .IdRef, .quantifier = .required },
7756 .{ .kind = .IdRef, .quantifier = .required },
7757 .{ .kind = .IdRef, .quantifier = .required },
7758 .{ .kind = .IdRef, .quantifier = .required },
8277 .operands = &.{
8278 .{ .kind = .id_ref, .quantifier = .required },
8279 .{ .kind = .id_ref, .quantifier = .required },
8280 .{ .kind = .id_ref, .quantifier = .required },
8281 .{ .kind = .id_ref, .quantifier = .required },
77598282 },
77608283 },
77618284 .{
77628285 .name = "OpIsValidReserveId",
77638286 .opcode = 282,
7764 .operands = &[_]Operand{
7765 .{ .kind = .IdResultType, .quantifier = .required },
7766 .{ .kind = .IdResult, .quantifier = .required },
7767 .{ .kind = .IdRef, .quantifier = .required },
8287 .operands = &.{
8288 .{ .kind = .id_result_type, .quantifier = .required },
8289 .{ .kind = .id_result, .quantifier = .required },
8290 .{ .kind = .id_ref, .quantifier = .required },
77688291 },
77698292 },
77708293 .{
77718294 .name = "OpGetNumPipePackets",
77728295 .opcode = 283,
7773 .operands = &[_]Operand{
7774 .{ .kind = .IdResultType, .quantifier = .required },
7775 .{ .kind = .IdResult, .quantifier = .required },
7776 .{ .kind = .IdRef, .quantifier = .required },
7777 .{ .kind = .IdRef, .quantifier = .required },
7778 .{ .kind = .IdRef, .quantifier = .required },
8296 .operands = &.{
8297 .{ .kind = .id_result_type, .quantifier = .required },
8298 .{ .kind = .id_result, .quantifier = .required },
8299 .{ .kind = .id_ref, .quantifier = .required },
8300 .{ .kind = .id_ref, .quantifier = .required },
8301 .{ .kind = .id_ref, .quantifier = .required },
77798302 },
77808303 },
77818304 .{
77828305 .name = "OpGetMaxPipePackets",
77838306 .opcode = 284,
7784 .operands = &[_]Operand{
7785 .{ .kind = .IdResultType, .quantifier = .required },
7786 .{ .kind = .IdResult, .quantifier = .required },
7787 .{ .kind = .IdRef, .quantifier = .required },
7788 .{ .kind = .IdRef, .quantifier = .required },
7789 .{ .kind = .IdRef, .quantifier = .required },
8307 .operands = &.{
8308 .{ .kind = .id_result_type, .quantifier = .required },
8309 .{ .kind = .id_result, .quantifier = .required },
8310 .{ .kind = .id_ref, .quantifier = .required },
8311 .{ .kind = .id_ref, .quantifier = .required },
8312 .{ .kind = .id_ref, .quantifier = .required },
77908313 },
77918314 },
77928315 .{
77938316 .name = "OpGroupReserveReadPipePackets",
77948317 .opcode = 285,
7795 .operands = &[_]Operand{
7796 .{ .kind = .IdResultType, .quantifier = .required },
7797 .{ .kind = .IdResult, .quantifier = .required },
7798 .{ .kind = .IdScope, .quantifier = .required },
7799 .{ .kind = .IdRef, .quantifier = .required },
7800 .{ .kind = .IdRef, .quantifier = .required },
7801 .{ .kind = .IdRef, .quantifier = .required },
7802 .{ .kind = .IdRef, .quantifier = .required },
8318 .operands = &.{
8319 .{ .kind = .id_result_type, .quantifier = .required },
8320 .{ .kind = .id_result, .quantifier = .required },
8321 .{ .kind = .id_scope, .quantifier = .required },
8322 .{ .kind = .id_ref, .quantifier = .required },
8323 .{ .kind = .id_ref, .quantifier = .required },
8324 .{ .kind = .id_ref, .quantifier = .required },
8325 .{ .kind = .id_ref, .quantifier = .required },
78038326 },
78048327 },
78058328 .{
78068329 .name = "OpGroupReserveWritePipePackets",
78078330 .opcode = 286,
7808 .operands = &[_]Operand{
7809 .{ .kind = .IdResultType, .quantifier = .required },
7810 .{ .kind = .IdResult, .quantifier = .required },
7811 .{ .kind = .IdScope, .quantifier = .required },
7812 .{ .kind = .IdRef, .quantifier = .required },
7813 .{ .kind = .IdRef, .quantifier = .required },
7814 .{ .kind = .IdRef, .quantifier = .required },
7815 .{ .kind = .IdRef, .quantifier = .required },
8331 .operands = &.{
8332 .{ .kind = .id_result_type, .quantifier = .required },
8333 .{ .kind = .id_result, .quantifier = .required },
8334 .{ .kind = .id_scope, .quantifier = .required },
8335 .{ .kind = .id_ref, .quantifier = .required },
8336 .{ .kind = .id_ref, .quantifier = .required },
8337 .{ .kind = .id_ref, .quantifier = .required },
8338 .{ .kind = .id_ref, .quantifier = .required },
78168339 },
78178340 },
78188341 .{
78198342 .name = "OpGroupCommitReadPipe",
78208343 .opcode = 287,
7821 .operands = &[_]Operand{
7822 .{ .kind = .IdScope, .quantifier = .required },
7823 .{ .kind = .IdRef, .quantifier = .required },
7824 .{ .kind = .IdRef, .quantifier = .required },
7825 .{ .kind = .IdRef, .quantifier = .required },
7826 .{ .kind = .IdRef, .quantifier = .required },
8344 .operands = &.{
8345 .{ .kind = .id_scope, .quantifier = .required },
8346 .{ .kind = .id_ref, .quantifier = .required },
8347 .{ .kind = .id_ref, .quantifier = .required },
8348 .{ .kind = .id_ref, .quantifier = .required },
8349 .{ .kind = .id_ref, .quantifier = .required },
78278350 },
78288351 },
78298352 .{
78308353 .name = "OpGroupCommitWritePipe",
78318354 .opcode = 288,
7832 .operands = &[_]Operand{
7833 .{ .kind = .IdScope, .quantifier = .required },
7834 .{ .kind = .IdRef, .quantifier = .required },
7835 .{ .kind = .IdRef, .quantifier = .required },
7836 .{ .kind = .IdRef, .quantifier = .required },
7837 .{ .kind = .IdRef, .quantifier = .required },
8355 .operands = &.{
8356 .{ .kind = .id_scope, .quantifier = .required },
8357 .{ .kind = .id_ref, .quantifier = .required },
8358 .{ .kind = .id_ref, .quantifier = .required },
8359 .{ .kind = .id_ref, .quantifier = .required },
8360 .{ .kind = .id_ref, .quantifier = .required },
78388361 },
78398362 },
78408363 .{
78418364 .name = "OpEnqueueMarker",
78428365 .opcode = 291,
7843 .operands = &[_]Operand{
7844 .{ .kind = .IdResultType, .quantifier = .required },
7845 .{ .kind = .IdResult, .quantifier = .required },
7846 .{ .kind = .IdRef, .quantifier = .required },
7847 .{ .kind = .IdRef, .quantifier = .required },
7848 .{ .kind = .IdRef, .quantifier = .required },
7849 .{ .kind = .IdRef, .quantifier = .required },
8366 .operands = &.{
8367 .{ .kind = .id_result_type, .quantifier = .required },
8368 .{ .kind = .id_result, .quantifier = .required },
8369 .{ .kind = .id_ref, .quantifier = .required },
8370 .{ .kind = .id_ref, .quantifier = .required },
8371 .{ .kind = .id_ref, .quantifier = .required },
8372 .{ .kind = .id_ref, .quantifier = .required },
78508373 },
78518374 },
78528375 .{
78538376 .name = "OpEnqueueKernel",
78548377 .opcode = 292,
7855 .operands = &[_]Operand{
7856 .{ .kind = .IdResultType, .quantifier = .required },
7857 .{ .kind = .IdResult, .quantifier = .required },
7858 .{ .kind = .IdRef, .quantifier = .required },
7859 .{ .kind = .IdRef, .quantifier = .required },
7860 .{ .kind = .IdRef, .quantifier = .required },
7861 .{ .kind = .IdRef, .quantifier = .required },
7862 .{ .kind = .IdRef, .quantifier = .required },
7863 .{ .kind = .IdRef, .quantifier = .required },
7864 .{ .kind = .IdRef, .quantifier = .required },
7865 .{ .kind = .IdRef, .quantifier = .required },
7866 .{ .kind = .IdRef, .quantifier = .required },
7867 .{ .kind = .IdRef, .quantifier = .required },
7868 .{ .kind = .IdRef, .quantifier = .variadic },
8378 .operands = &.{
8379 .{ .kind = .id_result_type, .quantifier = .required },
8380 .{ .kind = .id_result, .quantifier = .required },
8381 .{ .kind = .id_ref, .quantifier = .required },
8382 .{ .kind = .id_ref, .quantifier = .required },
8383 .{ .kind = .id_ref, .quantifier = .required },
8384 .{ .kind = .id_ref, .quantifier = .required },
8385 .{ .kind = .id_ref, .quantifier = .required },
8386 .{ .kind = .id_ref, .quantifier = .required },
8387 .{ .kind = .id_ref, .quantifier = .required },
8388 .{ .kind = .id_ref, .quantifier = .required },
8389 .{ .kind = .id_ref, .quantifier = .required },
8390 .{ .kind = .id_ref, .quantifier = .required },
8391 .{ .kind = .id_ref, .quantifier = .variadic },
78698392 },
78708393 },
78718394 .{
78728395 .name = "OpGetKernelNDrangeSubGroupCount",
78738396 .opcode = 293,
7874 .operands = &[_]Operand{
7875 .{ .kind = .IdResultType, .quantifier = .required },
7876 .{ .kind = .IdResult, .quantifier = .required },
7877 .{ .kind = .IdRef, .quantifier = .required },
7878 .{ .kind = .IdRef, .quantifier = .required },
7879 .{ .kind = .IdRef, .quantifier = .required },
7880 .{ .kind = .IdRef, .quantifier = .required },
7881 .{ .kind = .IdRef, .quantifier = .required },
8397 .operands = &.{
8398 .{ .kind = .id_result_type, .quantifier = .required },
8399 .{ .kind = .id_result, .quantifier = .required },
8400 .{ .kind = .id_ref, .quantifier = .required },
8401 .{ .kind = .id_ref, .quantifier = .required },
8402 .{ .kind = .id_ref, .quantifier = .required },
8403 .{ .kind = .id_ref, .quantifier = .required },
8404 .{ .kind = .id_ref, .quantifier = .required },
78828405 },
78838406 },
78848407 .{
78858408 .name = "OpGetKernelNDrangeMaxSubGroupSize",
78868409 .opcode = 294,
7887 .operands = &[_]Operand{
7888 .{ .kind = .IdResultType, .quantifier = .required },
7889 .{ .kind = .IdResult, .quantifier = .required },
7890 .{ .kind = .IdRef, .quantifier = .required },
7891 .{ .kind = .IdRef, .quantifier = .required },
7892 .{ .kind = .IdRef, .quantifier = .required },
7893 .{ .kind = .IdRef, .quantifier = .required },
7894 .{ .kind = .IdRef, .quantifier = .required },
8410 .operands = &.{
8411 .{ .kind = .id_result_type, .quantifier = .required },
8412 .{ .kind = .id_result, .quantifier = .required },
8413 .{ .kind = .id_ref, .quantifier = .required },
8414 .{ .kind = .id_ref, .quantifier = .required },
8415 .{ .kind = .id_ref, .quantifier = .required },
8416 .{ .kind = .id_ref, .quantifier = .required },
8417 .{ .kind = .id_ref, .quantifier = .required },
78958418 },
78968419 },
78978420 .{
78988421 .name = "OpGetKernelWorkGroupSize",
78998422 .opcode = 295,
7900 .operands = &[_]Operand{
7901 .{ .kind = .IdResultType, .quantifier = .required },
7902 .{ .kind = .IdResult, .quantifier = .required },
7903 .{ .kind = .IdRef, .quantifier = .required },
7904 .{ .kind = .IdRef, .quantifier = .required },
7905 .{ .kind = .IdRef, .quantifier = .required },
7906 .{ .kind = .IdRef, .quantifier = .required },
8423 .operands = &.{
8424 .{ .kind = .id_result_type, .quantifier = .required },
8425 .{ .kind = .id_result, .quantifier = .required },
8426 .{ .kind = .id_ref, .quantifier = .required },
8427 .{ .kind = .id_ref, .quantifier = .required },
8428 .{ .kind = .id_ref, .quantifier = .required },
8429 .{ .kind = .id_ref, .quantifier = .required },
79078430 },
79088431 },
79098432 .{
79108433 .name = "OpGetKernelPreferredWorkGroupSizeMultiple",
79118434 .opcode = 296,
7912 .operands = &[_]Operand{
7913 .{ .kind = .IdResultType, .quantifier = .required },
7914 .{ .kind = .IdResult, .quantifier = .required },
7915 .{ .kind = .IdRef, .quantifier = .required },
7916 .{ .kind = .IdRef, .quantifier = .required },
7917 .{ .kind = .IdRef, .quantifier = .required },
7918 .{ .kind = .IdRef, .quantifier = .required },
8435 .operands = &.{
8436 .{ .kind = .id_result_type, .quantifier = .required },
8437 .{ .kind = .id_result, .quantifier = .required },
8438 .{ .kind = .id_ref, .quantifier = .required },
8439 .{ .kind = .id_ref, .quantifier = .required },
8440 .{ .kind = .id_ref, .quantifier = .required },
8441 .{ .kind = .id_ref, .quantifier = .required },
79198442 },
79208443 },
79218444 .{
79228445 .name = "OpRetainEvent",
79238446 .opcode = 297,
7924 .operands = &[_]Operand{
7925 .{ .kind = .IdRef, .quantifier = .required },
8447 .operands = &.{
8448 .{ .kind = .id_ref, .quantifier = .required },
79268449 },
79278450 },
79288451 .{
79298452 .name = "OpReleaseEvent",
79308453 .opcode = 298,
7931 .operands = &[_]Operand{
7932 .{ .kind = .IdRef, .quantifier = .required },
8454 .operands = &.{
8455 .{ .kind = .id_ref, .quantifier = .required },
79338456 },
79348457 },
79358458 .{
79368459 .name = "OpCreateUserEvent",
79378460 .opcode = 299,
7938 .operands = &[_]Operand{
7939 .{ .kind = .IdResultType, .quantifier = .required },
7940 .{ .kind = .IdResult, .quantifier = .required },
8461 .operands = &.{
8462 .{ .kind = .id_result_type, .quantifier = .required },
8463 .{ .kind = .id_result, .quantifier = .required },
79418464 },
79428465 },
79438466 .{
79448467 .name = "OpIsValidEvent",
79458468 .opcode = 300,
7946 .operands = &[_]Operand{
7947 .{ .kind = .IdResultType, .quantifier = .required },
7948 .{ .kind = .IdResult, .quantifier = .required },
7949 .{ .kind = .IdRef, .quantifier = .required },
8469 .operands = &.{
8470 .{ .kind = .id_result_type, .quantifier = .required },
8471 .{ .kind = .id_result, .quantifier = .required },
8472 .{ .kind = .id_ref, .quantifier = .required },
79508473 },
79518474 },
79528475 .{
79538476 .name = "OpSetUserEventStatus",
79548477 .opcode = 301,
7955 .operands = &[_]Operand{
7956 .{ .kind = .IdRef, .quantifier = .required },
7957 .{ .kind = .IdRef, .quantifier = .required },
8478 .operands = &.{
8479 .{ .kind = .id_ref, .quantifier = .required },
8480 .{ .kind = .id_ref, .quantifier = .required },
79588481 },
79598482 },
79608483 .{
79618484 .name = "OpCaptureEventProfilingInfo",
79628485 .opcode = 302,
7963 .operands = &[_]Operand{
7964 .{ .kind = .IdRef, .quantifier = .required },
7965 .{ .kind = .IdRef, .quantifier = .required },
7966 .{ .kind = .IdRef, .quantifier = .required },
8486 .operands = &.{
8487 .{ .kind = .id_ref, .quantifier = .required },
8488 .{ .kind = .id_ref, .quantifier = .required },
8489 .{ .kind = .id_ref, .quantifier = .required },
79678490 },
79688491 },
79698492 .{
79708493 .name = "OpGetDefaultQueue",
79718494 .opcode = 303,
7972 .operands = &[_]Operand{
7973 .{ .kind = .IdResultType, .quantifier = .required },
7974 .{ .kind = .IdResult, .quantifier = .required },
8495 .operands = &.{
8496 .{ .kind = .id_result_type, .quantifier = .required },
8497 .{ .kind = .id_result, .quantifier = .required },
79758498 },
79768499 },
79778500 .{
79788501 .name = "OpBuildNDRange",
79798502 .opcode = 304,
7980 .operands = &[_]Operand{
7981 .{ .kind = .IdResultType, .quantifier = .required },
7982 .{ .kind = .IdResult, .quantifier = .required },
7983 .{ .kind = .IdRef, .quantifier = .required },
7984 .{ .kind = .IdRef, .quantifier = .required },
7985 .{ .kind = .IdRef, .quantifier = .required },
8503 .operands = &.{
8504 .{ .kind = .id_result_type, .quantifier = .required },
8505 .{ .kind = .id_result, .quantifier = .required },
8506 .{ .kind = .id_ref, .quantifier = .required },
8507 .{ .kind = .id_ref, .quantifier = .required },
8508 .{ .kind = .id_ref, .quantifier = .required },
79868509 },
79878510 },
79888511 .{
79898512 .name = "OpImageSparseSampleImplicitLod",
79908513 .opcode = 305,
7991 .operands = &[_]Operand{
7992 .{ .kind = .IdResultType, .quantifier = .required },
7993 .{ .kind = .IdResult, .quantifier = .required },
7994 .{ .kind = .IdRef, .quantifier = .required },
7995 .{ .kind = .IdRef, .quantifier = .required },
7996 .{ .kind = .ImageOperands, .quantifier = .optional },
8514 .operands = &.{
8515 .{ .kind = .id_result_type, .quantifier = .required },
8516 .{ .kind = .id_result, .quantifier = .required },
8517 .{ .kind = .id_ref, .quantifier = .required },
8518 .{ .kind = .id_ref, .quantifier = .required },
8519 .{ .kind = .image_operands, .quantifier = .optional },
79978520 },
79988521 },
79998522 .{
80008523 .name = "OpImageSparseSampleExplicitLod",
80018524 .opcode = 306,
8002 .operands = &[_]Operand{
8003 .{ .kind = .IdResultType, .quantifier = .required },
8004 .{ .kind = .IdResult, .quantifier = .required },
8005 .{ .kind = .IdRef, .quantifier = .required },
8006 .{ .kind = .IdRef, .quantifier = .required },
8007 .{ .kind = .ImageOperands, .quantifier = .required },
8525 .operands = &.{
8526 .{ .kind = .id_result_type, .quantifier = .required },
8527 .{ .kind = .id_result, .quantifier = .required },
8528 .{ .kind = .id_ref, .quantifier = .required },
8529 .{ .kind = .id_ref, .quantifier = .required },
8530 .{ .kind = .image_operands, .quantifier = .required },
80088531 },
80098532 },
80108533 .{
80118534 .name = "OpImageSparseSampleDrefImplicitLod",
80128535 .opcode = 307,
8013 .operands = &[_]Operand{
8014 .{ .kind = .IdResultType, .quantifier = .required },
8015 .{ .kind = .IdResult, .quantifier = .required },
8016 .{ .kind = .IdRef, .quantifier = .required },
8017 .{ .kind = .IdRef, .quantifier = .required },
8018 .{ .kind = .IdRef, .quantifier = .required },
8019 .{ .kind = .ImageOperands, .quantifier = .optional },
8536 .operands = &.{
8537 .{ .kind = .id_result_type, .quantifier = .required },
8538 .{ .kind = .id_result, .quantifier = .required },
8539 .{ .kind = .id_ref, .quantifier = .required },
8540 .{ .kind = .id_ref, .quantifier = .required },
8541 .{ .kind = .id_ref, .quantifier = .required },
8542 .{ .kind = .image_operands, .quantifier = .optional },
80208543 },
80218544 },
80228545 .{
80238546 .name = "OpImageSparseSampleDrefExplicitLod",
80248547 .opcode = 308,
8025 .operands = &[_]Operand{
8026 .{ .kind = .IdResultType, .quantifier = .required },
8027 .{ .kind = .IdResult, .quantifier = .required },
8028 .{ .kind = .IdRef, .quantifier = .required },
8029 .{ .kind = .IdRef, .quantifier = .required },
8030 .{ .kind = .IdRef, .quantifier = .required },
8031 .{ .kind = .ImageOperands, .quantifier = .required },
8548 .operands = &.{
8549 .{ .kind = .id_result_type, .quantifier = .required },
8550 .{ .kind = .id_result, .quantifier = .required },
8551 .{ .kind = .id_ref, .quantifier = .required },
8552 .{ .kind = .id_ref, .quantifier = .required },
8553 .{ .kind = .id_ref, .quantifier = .required },
8554 .{ .kind = .image_operands, .quantifier = .required },
80328555 },
80338556 },
80348557 .{
80358558 .name = "OpImageSparseSampleProjImplicitLod",
80368559 .opcode = 309,
8037 .operands = &[_]Operand{
8038 .{ .kind = .IdResultType, .quantifier = .required },
8039 .{ .kind = .IdResult, .quantifier = .required },
8040 .{ .kind = .IdRef, .quantifier = .required },
8041 .{ .kind = .IdRef, .quantifier = .required },
8042 .{ .kind = .ImageOperands, .quantifier = .optional },
8560 .operands = &.{
8561 .{ .kind = .id_result_type, .quantifier = .required },
8562 .{ .kind = .id_result, .quantifier = .required },
8563 .{ .kind = .id_ref, .quantifier = .required },
8564 .{ .kind = .id_ref, .quantifier = .required },
8565 .{ .kind = .image_operands, .quantifier = .optional },
80438566 },
80448567 },
80458568 .{
80468569 .name = "OpImageSparseSampleProjExplicitLod",
80478570 .opcode = 310,
8048 .operands = &[_]Operand{
8049 .{ .kind = .IdResultType, .quantifier = .required },
8050 .{ .kind = .IdResult, .quantifier = .required },
8051 .{ .kind = .IdRef, .quantifier = .required },
8052 .{ .kind = .IdRef, .quantifier = .required },
8053 .{ .kind = .ImageOperands, .quantifier = .required },
8571 .operands = &.{
8572 .{ .kind = .id_result_type, .quantifier = .required },
8573 .{ .kind = .id_result, .quantifier = .required },
8574 .{ .kind = .id_ref, .quantifier = .required },
8575 .{ .kind = .id_ref, .quantifier = .required },
8576 .{ .kind = .image_operands, .quantifier = .required },
80548577 },
80558578 },
80568579 .{
80578580 .name = "OpImageSparseSampleProjDrefImplicitLod",
80588581 .opcode = 311,
8059 .operands = &[_]Operand{
8060 .{ .kind = .IdResultType, .quantifier = .required },
8061 .{ .kind = .IdResult, .quantifier = .required },
8062 .{ .kind = .IdRef, .quantifier = .required },
8063 .{ .kind = .IdRef, .quantifier = .required },
8064 .{ .kind = .IdRef, .quantifier = .required },
8065 .{ .kind = .ImageOperands, .quantifier = .optional },
8582 .operands = &.{
8583 .{ .kind = .id_result_type, .quantifier = .required },
8584 .{ .kind = .id_result, .quantifier = .required },
8585 .{ .kind = .id_ref, .quantifier = .required },
8586 .{ .kind = .id_ref, .quantifier = .required },
8587 .{ .kind = .id_ref, .quantifier = .required },
8588 .{ .kind = .image_operands, .quantifier = .optional },
80668589 },
80678590 },
80688591 .{
80698592 .name = "OpImageSparseSampleProjDrefExplicitLod",
80708593 .opcode = 312,
8071 .operands = &[_]Operand{
8072 .{ .kind = .IdResultType, .quantifier = .required },
8073 .{ .kind = .IdResult, .quantifier = .required },
8074 .{ .kind = .IdRef, .quantifier = .required },
8075 .{ .kind = .IdRef, .quantifier = .required },
8076 .{ .kind = .IdRef, .quantifier = .required },
8077 .{ .kind = .ImageOperands, .quantifier = .required },
8594 .operands = &.{
8595 .{ .kind = .id_result_type, .quantifier = .required },
8596 .{ .kind = .id_result, .quantifier = .required },
8597 .{ .kind = .id_ref, .quantifier = .required },
8598 .{ .kind = .id_ref, .quantifier = .required },
8599 .{ .kind = .id_ref, .quantifier = .required },
8600 .{ .kind = .image_operands, .quantifier = .required },
80788601 },
80798602 },
80808603 .{
80818604 .name = "OpImageSparseFetch",
80828605 .opcode = 313,
8083 .operands = &[_]Operand{
8084 .{ .kind = .IdResultType, .quantifier = .required },
8085 .{ .kind = .IdResult, .quantifier = .required },
8086 .{ .kind = .IdRef, .quantifier = .required },
8087 .{ .kind = .IdRef, .quantifier = .required },
8088 .{ .kind = .ImageOperands, .quantifier = .optional },
8606 .operands = &.{
8607 .{ .kind = .id_result_type, .quantifier = .required },
8608 .{ .kind = .id_result, .quantifier = .required },
8609 .{ .kind = .id_ref, .quantifier = .required },
8610 .{ .kind = .id_ref, .quantifier = .required },
8611 .{ .kind = .image_operands, .quantifier = .optional },
80898612 },
80908613 },
80918614 .{
80928615 .name = "OpImageSparseGather",
80938616 .opcode = 314,
8094 .operands = &[_]Operand{
8095 .{ .kind = .IdResultType, .quantifier = .required },
8096 .{ .kind = .IdResult, .quantifier = .required },
8097 .{ .kind = .IdRef, .quantifier = .required },
8098 .{ .kind = .IdRef, .quantifier = .required },
8099 .{ .kind = .IdRef, .quantifier = .required },
8100 .{ .kind = .ImageOperands, .quantifier = .optional },
8617 .operands = &.{
8618 .{ .kind = .id_result_type, .quantifier = .required },
8619 .{ .kind = .id_result, .quantifier = .required },
8620 .{ .kind = .id_ref, .quantifier = .required },
8621 .{ .kind = .id_ref, .quantifier = .required },
8622 .{ .kind = .id_ref, .quantifier = .required },
8623 .{ .kind = .image_operands, .quantifier = .optional },
81018624 },
81028625 },
81038626 .{
81048627 .name = "OpImageSparseDrefGather",
81058628 .opcode = 315,
8106 .operands = &[_]Operand{
8107 .{ .kind = .IdResultType, .quantifier = .required },
8108 .{ .kind = .IdResult, .quantifier = .required },
8109 .{ .kind = .IdRef, .quantifier = .required },
8110 .{ .kind = .IdRef, .quantifier = .required },
8111 .{ .kind = .IdRef, .quantifier = .required },
8112 .{ .kind = .ImageOperands, .quantifier = .optional },
8629 .operands = &.{
8630 .{ .kind = .id_result_type, .quantifier = .required },
8631 .{ .kind = .id_result, .quantifier = .required },
8632 .{ .kind = .id_ref, .quantifier = .required },
8633 .{ .kind = .id_ref, .quantifier = .required },
8634 .{ .kind = .id_ref, .quantifier = .required },
8635 .{ .kind = .image_operands, .quantifier = .optional },
81138636 },
81148637 },
81158638 .{
81168639 .name = "OpImageSparseTexelsResident",
81178640 .opcode = 316,
8118 .operands = &[_]Operand{
8119 .{ .kind = .IdResultType, .quantifier = .required },
8120 .{ .kind = .IdResult, .quantifier = .required },
8121 .{ .kind = .IdRef, .quantifier = .required },
8641 .operands = &.{
8642 .{ .kind = .id_result_type, .quantifier = .required },
8643 .{ .kind = .id_result, .quantifier = .required },
8644 .{ .kind = .id_ref, .quantifier = .required },
81228645 },
81238646 },
81248647 .{
81258648 .name = "OpNoLine",
81268649 .opcode = 317,
8127 .operands = &[_]Operand{},
8650 .operands = &.{},
81288651 },
81298652 .{
81308653 .name = "OpAtomicFlagTestAndSet",
81318654 .opcode = 318,
8132 .operands = &[_]Operand{
8133 .{ .kind = .IdResultType, .quantifier = .required },
8134 .{ .kind = .IdResult, .quantifier = .required },
8135 .{ .kind = .IdRef, .quantifier = .required },
8136 .{ .kind = .IdScope, .quantifier = .required },
8137 .{ .kind = .IdMemorySemantics, .quantifier = .required },
8655 .operands = &.{
8656 .{ .kind = .id_result_type, .quantifier = .required },
8657 .{ .kind = .id_result, .quantifier = .required },
8658 .{ .kind = .id_ref, .quantifier = .required },
8659 .{ .kind = .id_scope, .quantifier = .required },
8660 .{ .kind = .id_memory_semantics, .quantifier = .required },
81388661 },
81398662 },
81408663 .{
81418664 .name = "OpAtomicFlagClear",
81428665 .opcode = 319,
8143 .operands = &[_]Operand{
8144 .{ .kind = .IdRef, .quantifier = .required },
8145 .{ .kind = .IdScope, .quantifier = .required },
8146 .{ .kind = .IdMemorySemantics, .quantifier = .required },
8666 .operands = &.{
8667 .{ .kind = .id_ref, .quantifier = .required },
8668 .{ .kind = .id_scope, .quantifier = .required },
8669 .{ .kind = .id_memory_semantics, .quantifier = .required },
81478670 },
81488671 },
81498672 .{
81508673 .name = "OpImageSparseRead",
81518674 .opcode = 320,
8152 .operands = &[_]Operand{
8153 .{ .kind = .IdResultType, .quantifier = .required },
8154 .{ .kind = .IdResult, .quantifier = .required },
8155 .{ .kind = .IdRef, .quantifier = .required },
8156 .{ .kind = .IdRef, .quantifier = .required },
8157 .{ .kind = .ImageOperands, .quantifier = .optional },
8675 .operands = &.{
8676 .{ .kind = .id_result_type, .quantifier = .required },
8677 .{ .kind = .id_result, .quantifier = .required },
8678 .{ .kind = .id_ref, .quantifier = .required },
8679 .{ .kind = .id_ref, .quantifier = .required },
8680 .{ .kind = .image_operands, .quantifier = .optional },
81588681 },
81598682 },
81608683 .{
81618684 .name = "OpSizeOf",
81628685 .opcode = 321,
8163 .operands = &[_]Operand{
8164 .{ .kind = .IdResultType, .quantifier = .required },
8165 .{ .kind = .IdResult, .quantifier = .required },
8166 .{ .kind = .IdRef, .quantifier = .required },
8686 .operands = &.{
8687 .{ .kind = .id_result_type, .quantifier = .required },
8688 .{ .kind = .id_result, .quantifier = .required },
8689 .{ .kind = .id_ref, .quantifier = .required },
81678690 },
81688691 },
81698692 .{
81708693 .name = "OpTypePipeStorage",
81718694 .opcode = 322,
8172 .operands = &[_]Operand{
8173 .{ .kind = .IdResult, .quantifier = .required },
8695 .operands = &.{
8696 .{ .kind = .id_result, .quantifier = .required },
81748697 },
81758698 },
81768699 .{
81778700 .name = "OpConstantPipeStorage",
81788701 .opcode = 323,
8179 .operands = &[_]Operand{
8180 .{ .kind = .IdResultType, .quantifier = .required },
8181 .{ .kind = .IdResult, .quantifier = .required },
8182 .{ .kind = .LiteralInteger, .quantifier = .required },
8183 .{ .kind = .LiteralInteger, .quantifier = .required },
8184 .{ .kind = .LiteralInteger, .quantifier = .required },
8702 .operands = &.{
8703 .{ .kind = .id_result_type, .quantifier = .required },
8704 .{ .kind = .id_result, .quantifier = .required },
8705 .{ .kind = .literal_integer, .quantifier = .required },
8706 .{ .kind = .literal_integer, .quantifier = .required },
8707 .{ .kind = .literal_integer, .quantifier = .required },
81858708 },
81868709 },
81878710 .{
81888711 .name = "OpCreatePipeFromPipeStorage",
81898712 .opcode = 324,
8190 .operands = &[_]Operand{
8191 .{ .kind = .IdResultType, .quantifier = .required },
8192 .{ .kind = .IdResult, .quantifier = .required },
8193 .{ .kind = .IdRef, .quantifier = .required },
8713 .operands = &.{
8714 .{ .kind = .id_result_type, .quantifier = .required },
8715 .{ .kind = .id_result, .quantifier = .required },
8716 .{ .kind = .id_ref, .quantifier = .required },
81948717 },
81958718 },
81968719 .{
81978720 .name = "OpGetKernelLocalSizeForSubgroupCount",
81988721 .opcode = 325,
8199 .operands = &[_]Operand{
8200 .{ .kind = .IdResultType, .quantifier = .required },
8201 .{ .kind = .IdResult, .quantifier = .required },
8202 .{ .kind = .IdRef, .quantifier = .required },
8203 .{ .kind = .IdRef, .quantifier = .required },
8204 .{ .kind = .IdRef, .quantifier = .required },
8205 .{ .kind = .IdRef, .quantifier = .required },
8206 .{ .kind = .IdRef, .quantifier = .required },
8722 .operands = &.{
8723 .{ .kind = .id_result_type, .quantifier = .required },
8724 .{ .kind = .id_result, .quantifier = .required },
8725 .{ .kind = .id_ref, .quantifier = .required },
8726 .{ .kind = .id_ref, .quantifier = .required },
8727 .{ .kind = .id_ref, .quantifier = .required },
8728 .{ .kind = .id_ref, .quantifier = .required },
8729 .{ .kind = .id_ref, .quantifier = .required },
82078730 },
82088731 },
82098732 .{
82108733 .name = "OpGetKernelMaxNumSubgroups",
82118734 .opcode = 326,
8212 .operands = &[_]Operand{
8213 .{ .kind = .IdResultType, .quantifier = .required },
8214 .{ .kind = .IdResult, .quantifier = .required },
8215 .{ .kind = .IdRef, .quantifier = .required },
8216 .{ .kind = .IdRef, .quantifier = .required },
8217 .{ .kind = .IdRef, .quantifier = .required },
8218 .{ .kind = .IdRef, .quantifier = .required },
8735 .operands = &.{
8736 .{ .kind = .id_result_type, .quantifier = .required },
8737 .{ .kind = .id_result, .quantifier = .required },
8738 .{ .kind = .id_ref, .quantifier = .required },
8739 .{ .kind = .id_ref, .quantifier = .required },
8740 .{ .kind = .id_ref, .quantifier = .required },
8741 .{ .kind = .id_ref, .quantifier = .required },
82198742 },
82208743 },
82218744 .{
82228745 .name = "OpTypeNamedBarrier",
82238746 .opcode = 327,
8224 .operands = &[_]Operand{
8225 .{ .kind = .IdResult, .quantifier = .required },
8747 .operands = &.{
8748 .{ .kind = .id_result, .quantifier = .required },
82268749 },
82278750 },
82288751 .{
82298752 .name = "OpNamedBarrierInitialize",
82308753 .opcode = 328,
8231 .operands = &[_]Operand{
8232 .{ .kind = .IdResultType, .quantifier = .required },
8233 .{ .kind = .IdResult, .quantifier = .required },
8234 .{ .kind = .IdRef, .quantifier = .required },
8754 .operands = &.{
8755 .{ .kind = .id_result_type, .quantifier = .required },
8756 .{ .kind = .id_result, .quantifier = .required },
8757 .{ .kind = .id_ref, .quantifier = .required },
82358758 },
82368759 },
82378760 .{
82388761 .name = "OpMemoryNamedBarrier",
82398762 .opcode = 329,
8240 .operands = &[_]Operand{
8241 .{ .kind = .IdRef, .quantifier = .required },
8242 .{ .kind = .IdScope, .quantifier = .required },
8243 .{ .kind = .IdMemorySemantics, .quantifier = .required },
8763 .operands = &.{
8764 .{ .kind = .id_ref, .quantifier = .required },
8765 .{ .kind = .id_scope, .quantifier = .required },
8766 .{ .kind = .id_memory_semantics, .quantifier = .required },
82448767 },
82458768 },
82468769 .{
82478770 .name = "OpModuleProcessed",
82488771 .opcode = 330,
8249 .operands = &[_]Operand{
8250 .{ .kind = .LiteralString, .quantifier = .required },
8772 .operands = &.{
8773 .{ .kind = .literal_string, .quantifier = .required },
82518774 },
82528775 },
82538776 .{
82548777 .name = "OpExecutionModeId",
82558778 .opcode = 331,
8256 .operands = &[_]Operand{
8257 .{ .kind = .IdRef, .quantifier = .required },
8258 .{ .kind = .ExecutionMode, .quantifier = .required },
8779 .operands = &.{
8780 .{ .kind = .id_ref, .quantifier = .required },
8781 .{ .kind = .execution_mode, .quantifier = .required },
82598782 },
82608783 },
82618784 .{
82628785 .name = "OpDecorateId",
82638786 .opcode = 332,
8264 .operands = &[_]Operand{
8265 .{ .kind = .IdRef, .quantifier = .required },
8266 .{ .kind = .Decoration, .quantifier = .required },
8787 .operands = &.{
8788 .{ .kind = .id_ref, .quantifier = .required },
8789 .{ .kind = .decoration, .quantifier = .required },
82678790 },
82688791 },
82698792 .{
82708793 .name = "OpGroupNonUniformElect",
82718794 .opcode = 333,
8272 .operands = &[_]Operand{
8273 .{ .kind = .IdResultType, .quantifier = .required },
8274 .{ .kind = .IdResult, .quantifier = .required },
8275 .{ .kind = .IdScope, .quantifier = .required },
8795 .operands = &.{
8796 .{ .kind = .id_result_type, .quantifier = .required },
8797 .{ .kind = .id_result, .quantifier = .required },
8798 .{ .kind = .id_scope, .quantifier = .required },
82768799 },
82778800 },
82788801 .{
82798802 .name = "OpGroupNonUniformAll",
82808803 .opcode = 334,
8281 .operands = &[_]Operand{
8282 .{ .kind = .IdResultType, .quantifier = .required },
8283 .{ .kind = .IdResult, .quantifier = .required },
8284 .{ .kind = .IdScope, .quantifier = .required },
8285 .{ .kind = .IdRef, .quantifier = .required },
8804 .operands = &.{
8805 .{ .kind = .id_result_type, .quantifier = .required },
8806 .{ .kind = .id_result, .quantifier = .required },
8807 .{ .kind = .id_scope, .quantifier = .required },
8808 .{ .kind = .id_ref, .quantifier = .required },
82868809 },
82878810 },
82888811 .{
82898812 .name = "OpGroupNonUniformAny",
82908813 .opcode = 335,
8291 .operands = &[_]Operand{
8292 .{ .kind = .IdResultType, .quantifier = .required },
8293 .{ .kind = .IdResult, .quantifier = .required },
8294 .{ .kind = .IdScope, .quantifier = .required },
8295 .{ .kind = .IdRef, .quantifier = .required },
8814 .operands = &.{
8815 .{ .kind = .id_result_type, .quantifier = .required },
8816 .{ .kind = .id_result, .quantifier = .required },
8817 .{ .kind = .id_scope, .quantifier = .required },
8818 .{ .kind = .id_ref, .quantifier = .required },
82968819 },
82978820 },
82988821 .{
82998822 .name = "OpGroupNonUniformAllEqual",
83008823 .opcode = 336,
8301 .operands = &[_]Operand{
8302 .{ .kind = .IdResultType, .quantifier = .required },
8303 .{ .kind = .IdResult, .quantifier = .required },
8304 .{ .kind = .IdScope, .quantifier = .required },
8305 .{ .kind = .IdRef, .quantifier = .required },
8824 .operands = &.{
8825 .{ .kind = .id_result_type, .quantifier = .required },
8826 .{ .kind = .id_result, .quantifier = .required },
8827 .{ .kind = .id_scope, .quantifier = .required },
8828 .{ .kind = .id_ref, .quantifier = .required },
83068829 },
83078830 },
83088831 .{
83098832 .name = "OpGroupNonUniformBroadcast",
83108833 .opcode = 337,
8311 .operands = &[_]Operand{
8312 .{ .kind = .IdResultType, .quantifier = .required },
8313 .{ .kind = .IdResult, .quantifier = .required },
8314 .{ .kind = .IdScope, .quantifier = .required },
8315 .{ .kind = .IdRef, .quantifier = .required },
8316 .{ .kind = .IdRef, .quantifier = .required },
8834 .operands = &.{
8835 .{ .kind = .id_result_type, .quantifier = .required },
8836 .{ .kind = .id_result, .quantifier = .required },
8837 .{ .kind = .id_scope, .quantifier = .required },
8838 .{ .kind = .id_ref, .quantifier = .required },
8839 .{ .kind = .id_ref, .quantifier = .required },
83178840 },
83188841 },
83198842 .{
83208843 .name = "OpGroupNonUniformBroadcastFirst",
83218844 .opcode = 338,
8322 .operands = &[_]Operand{
8323 .{ .kind = .IdResultType, .quantifier = .required },
8324 .{ .kind = .IdResult, .quantifier = .required },
8325 .{ .kind = .IdScope, .quantifier = .required },
8326 .{ .kind = .IdRef, .quantifier = .required },
8845 .operands = &.{
8846 .{ .kind = .id_result_type, .quantifier = .required },
8847 .{ .kind = .id_result, .quantifier = .required },
8848 .{ .kind = .id_scope, .quantifier = .required },
8849 .{ .kind = .id_ref, .quantifier = .required },
83278850 },
83288851 },
83298852 .{
83308853 .name = "OpGroupNonUniformBallot",
83318854 .opcode = 339,
8332 .operands = &[_]Operand{
8333 .{ .kind = .IdResultType, .quantifier = .required },
8334 .{ .kind = .IdResult, .quantifier = .required },
8335 .{ .kind = .IdScope, .quantifier = .required },
8336 .{ .kind = .IdRef, .quantifier = .required },
8855 .operands = &.{
8856 .{ .kind = .id_result_type, .quantifier = .required },
8857 .{ .kind = .id_result, .quantifier = .required },
8858 .{ .kind = .id_scope, .quantifier = .required },
8859 .{ .kind = .id_ref, .quantifier = .required },
83378860 },
83388861 },
83398862 .{
83408863 .name = "OpGroupNonUniformInverseBallot",
83418864 .opcode = 340,
8342 .operands = &[_]Operand{
8343 .{ .kind = .IdResultType, .quantifier = .required },
8344 .{ .kind = .IdResult, .quantifier = .required },
8345 .{ .kind = .IdScope, .quantifier = .required },
8346 .{ .kind = .IdRef, .quantifier = .required },
8865 .operands = &.{
8866 .{ .kind = .id_result_type, .quantifier = .required },
8867 .{ .kind = .id_result, .quantifier = .required },
8868 .{ .kind = .id_scope, .quantifier = .required },
8869 .{ .kind = .id_ref, .quantifier = .required },
83478870 },
83488871 },
83498872 .{
83508873 .name = "OpGroupNonUniformBallotBitExtract",
83518874 .opcode = 341,
8352 .operands = &[_]Operand{
8353 .{ .kind = .IdResultType, .quantifier = .required },
8354 .{ .kind = .IdResult, .quantifier = .required },
8355 .{ .kind = .IdScope, .quantifier = .required },
8356 .{ .kind = .IdRef, .quantifier = .required },
8357 .{ .kind = .IdRef, .quantifier = .required },
8875 .operands = &.{
8876 .{ .kind = .id_result_type, .quantifier = .required },
8877 .{ .kind = .id_result, .quantifier = .required },
8878 .{ .kind = .id_scope, .quantifier = .required },
8879 .{ .kind = .id_ref, .quantifier = .required },
8880 .{ .kind = .id_ref, .quantifier = .required },
83588881 },
83598882 },
83608883 .{
83618884 .name = "OpGroupNonUniformBallotBitCount",
83628885 .opcode = 342,
8363 .operands = &[_]Operand{
8364 .{ .kind = .IdResultType, .quantifier = .required },
8365 .{ .kind = .IdResult, .quantifier = .required },
8366 .{ .kind = .IdScope, .quantifier = .required },
8367 .{ .kind = .GroupOperation, .quantifier = .required },
8368 .{ .kind = .IdRef, .quantifier = .required },
8886 .operands = &.{
8887 .{ .kind = .id_result_type, .quantifier = .required },
8888 .{ .kind = .id_result, .quantifier = .required },
8889 .{ .kind = .id_scope, .quantifier = .required },
8890 .{ .kind = .group_operation, .quantifier = .required },
8891 .{ .kind = .id_ref, .quantifier = .required },
83698892 },
83708893 },
83718894 .{
83728895 .name = "OpGroupNonUniformBallotFindLSB",
83738896 .opcode = 343,
8374 .operands = &[_]Operand{
8375 .{ .kind = .IdResultType, .quantifier = .required },
8376 .{ .kind = .IdResult, .quantifier = .required },
8377 .{ .kind = .IdScope, .quantifier = .required },
8378 .{ .kind = .IdRef, .quantifier = .required },
8897 .operands = &.{
8898 .{ .kind = .id_result_type, .quantifier = .required },
8899 .{ .kind = .id_result, .quantifier = .required },
8900 .{ .kind = .id_scope, .quantifier = .required },
8901 .{ .kind = .id_ref, .quantifier = .required },
83798902 },
83808903 },
83818904 .{
83828905 .name = "OpGroupNonUniformBallotFindMSB",
83838906 .opcode = 344,
8384 .operands = &[_]Operand{
8385 .{ .kind = .IdResultType, .quantifier = .required },
8386 .{ .kind = .IdResult, .quantifier = .required },
8387 .{ .kind = .IdScope, .quantifier = .required },
8388 .{ .kind = .IdRef, .quantifier = .required },
8907 .operands = &.{
8908 .{ .kind = .id_result_type, .quantifier = .required },
8909 .{ .kind = .id_result, .quantifier = .required },
8910 .{ .kind = .id_scope, .quantifier = .required },
8911 .{ .kind = .id_ref, .quantifier = .required },
83898912 },
83908913 },
83918914 .{
83928915 .name = "OpGroupNonUniformShuffle",
83938916 .opcode = 345,
8394 .operands = &[_]Operand{
8395 .{ .kind = .IdResultType, .quantifier = .required },
8396 .{ .kind = .IdResult, .quantifier = .required },
8397 .{ .kind = .IdScope, .quantifier = .required },
8398 .{ .kind = .IdRef, .quantifier = .required },
8399 .{ .kind = .IdRef, .quantifier = .required },
8917 .operands = &.{
8918 .{ .kind = .id_result_type, .quantifier = .required },
8919 .{ .kind = .id_result, .quantifier = .required },
8920 .{ .kind = .id_scope, .quantifier = .required },
8921 .{ .kind = .id_ref, .quantifier = .required },
8922 .{ .kind = .id_ref, .quantifier = .required },
84008923 },
84018924 },
84028925 .{
84038926 .name = "OpGroupNonUniformShuffleXor",
84048927 .opcode = 346,
8405 .operands = &[_]Operand{
8406 .{ .kind = .IdResultType, .quantifier = .required },
8407 .{ .kind = .IdResult, .quantifier = .required },
8408 .{ .kind = .IdScope, .quantifier = .required },
8409 .{ .kind = .IdRef, .quantifier = .required },
8410 .{ .kind = .IdRef, .quantifier = .required },
8928 .operands = &.{
8929 .{ .kind = .id_result_type, .quantifier = .required },
8930 .{ .kind = .id_result, .quantifier = .required },
8931 .{ .kind = .id_scope, .quantifier = .required },
8932 .{ .kind = .id_ref, .quantifier = .required },
8933 .{ .kind = .id_ref, .quantifier = .required },
84118934 },
84128935 },
84138936 .{
84148937 .name = "OpGroupNonUniformShuffleUp",
84158938 .opcode = 347,
8416 .operands = &[_]Operand{
8417 .{ .kind = .IdResultType, .quantifier = .required },
8418 .{ .kind = .IdResult, .quantifier = .required },
8419 .{ .kind = .IdScope, .quantifier = .required },
8420 .{ .kind = .IdRef, .quantifier = .required },
8421 .{ .kind = .IdRef, .quantifier = .required },
8939 .operands = &.{
8940 .{ .kind = .id_result_type, .quantifier = .required },
8941 .{ .kind = .id_result, .quantifier = .required },
8942 .{ .kind = .id_scope, .quantifier = .required },
8943 .{ .kind = .id_ref, .quantifier = .required },
8944 .{ .kind = .id_ref, .quantifier = .required },
84228945 },
84238946 },
84248947 .{
84258948 .name = "OpGroupNonUniformShuffleDown",
84268949 .opcode = 348,
8427 .operands = &[_]Operand{
8428 .{ .kind = .IdResultType, .quantifier = .required },
8429 .{ .kind = .IdResult, .quantifier = .required },
8430 .{ .kind = .IdScope, .quantifier = .required },
8431 .{ .kind = .IdRef, .quantifier = .required },
8432 .{ .kind = .IdRef, .quantifier = .required },
8950 .operands = &.{
8951 .{ .kind = .id_result_type, .quantifier = .required },
8952 .{ .kind = .id_result, .quantifier = .required },
8953 .{ .kind = .id_scope, .quantifier = .required },
8954 .{ .kind = .id_ref, .quantifier = .required },
8955 .{ .kind = .id_ref, .quantifier = .required },
84338956 },
84348957 },
84358958 .{
84368959 .name = "OpGroupNonUniformIAdd",
84378960 .opcode = 349,
8438 .operands = &[_]Operand{
8439 .{ .kind = .IdResultType, .quantifier = .required },
8440 .{ .kind = .IdResult, .quantifier = .required },
8441 .{ .kind = .IdScope, .quantifier = .required },
8442 .{ .kind = .GroupOperation, .quantifier = .required },
8443 .{ .kind = .IdRef, .quantifier = .required },
8444 .{ .kind = .IdRef, .quantifier = .optional },
8961 .operands = &.{
8962 .{ .kind = .id_result_type, .quantifier = .required },
8963 .{ .kind = .id_result, .quantifier = .required },
8964 .{ .kind = .id_scope, .quantifier = .required },
8965 .{ .kind = .group_operation, .quantifier = .required },
8966 .{ .kind = .id_ref, .quantifier = .required },
8967 .{ .kind = .id_ref, .quantifier = .optional },
84458968 },
84468969 },
84478970 .{
84488971 .name = "OpGroupNonUniformFAdd",
84498972 .opcode = 350,
8450 .operands = &[_]Operand{
8451 .{ .kind = .IdResultType, .quantifier = .required },
8452 .{ .kind = .IdResult, .quantifier = .required },
8453 .{ .kind = .IdScope, .quantifier = .required },
8454 .{ .kind = .GroupOperation, .quantifier = .required },
8455 .{ .kind = .IdRef, .quantifier = .required },
8456 .{ .kind = .IdRef, .quantifier = .optional },
8973 .operands = &.{
8974 .{ .kind = .id_result_type, .quantifier = .required },
8975 .{ .kind = .id_result, .quantifier = .required },
8976 .{ .kind = .id_scope, .quantifier = .required },
8977 .{ .kind = .group_operation, .quantifier = .required },
8978 .{ .kind = .id_ref, .quantifier = .required },
8979 .{ .kind = .id_ref, .quantifier = .optional },
84578980 },
84588981 },
84598982 .{
84608983 .name = "OpGroupNonUniformIMul",
84618984 .opcode = 351,
8462 .operands = &[_]Operand{
8463 .{ .kind = .IdResultType, .quantifier = .required },
8464 .{ .kind = .IdResult, .quantifier = .required },
8465 .{ .kind = .IdScope, .quantifier = .required },
8466 .{ .kind = .GroupOperation, .quantifier = .required },
8467 .{ .kind = .IdRef, .quantifier = .required },
8468 .{ .kind = .IdRef, .quantifier = .optional },
8985 .operands = &.{
8986 .{ .kind = .id_result_type, .quantifier = .required },
8987 .{ .kind = .id_result, .quantifier = .required },
8988 .{ .kind = .id_scope, .quantifier = .required },
8989 .{ .kind = .group_operation, .quantifier = .required },
8990 .{ .kind = .id_ref, .quantifier = .required },
8991 .{ .kind = .id_ref, .quantifier = .optional },
84698992 },
84708993 },
84718994 .{
84728995 .name = "OpGroupNonUniformFMul",
84738996 .opcode = 352,
8474 .operands = &[_]Operand{
8475 .{ .kind = .IdResultType, .quantifier = .required },
8476 .{ .kind = .IdResult, .quantifier = .required },
8477 .{ .kind = .IdScope, .quantifier = .required },
8478 .{ .kind = .GroupOperation, .quantifier = .required },
8479 .{ .kind = .IdRef, .quantifier = .required },
8480 .{ .kind = .IdRef, .quantifier = .optional },
8997 .operands = &.{
8998 .{ .kind = .id_result_type, .quantifier = .required },
8999 .{ .kind = .id_result, .quantifier = .required },
9000 .{ .kind = .id_scope, .quantifier = .required },
9001 .{ .kind = .group_operation, .quantifier = .required },
9002 .{ .kind = .id_ref, .quantifier = .required },
9003 .{ .kind = .id_ref, .quantifier = .optional },
84819004 },
84829005 },
84839006 .{
84849007 .name = "OpGroupNonUniformSMin",
84859008 .opcode = 353,
8486 .operands = &[_]Operand{
8487 .{ .kind = .IdResultType, .quantifier = .required },
8488 .{ .kind = .IdResult, .quantifier = .required },
8489 .{ .kind = .IdScope, .quantifier = .required },
8490 .{ .kind = .GroupOperation, .quantifier = .required },
8491 .{ .kind = .IdRef, .quantifier = .required },
8492 .{ .kind = .IdRef, .quantifier = .optional },
9009 .operands = &.{
9010 .{ .kind = .id_result_type, .quantifier = .required },
9011 .{ .kind = .id_result, .quantifier = .required },
9012 .{ .kind = .id_scope, .quantifier = .required },
9013 .{ .kind = .group_operation, .quantifier = .required },
9014 .{ .kind = .id_ref, .quantifier = .required },
9015 .{ .kind = .id_ref, .quantifier = .optional },
84939016 },
84949017 },
84959018 .{
84969019 .name = "OpGroupNonUniformUMin",
84979020 .opcode = 354,
8498 .operands = &[_]Operand{
8499 .{ .kind = .IdResultType, .quantifier = .required },
8500 .{ .kind = .IdResult, .quantifier = .required },
8501 .{ .kind = .IdScope, .quantifier = .required },
8502 .{ .kind = .GroupOperation, .quantifier = .required },
8503 .{ .kind = .IdRef, .quantifier = .required },
8504 .{ .kind = .IdRef, .quantifier = .optional },
9021 .operands = &.{
9022 .{ .kind = .id_result_type, .quantifier = .required },
9023 .{ .kind = .id_result, .quantifier = .required },
9024 .{ .kind = .id_scope, .quantifier = .required },
9025 .{ .kind = .group_operation, .quantifier = .required },
9026 .{ .kind = .id_ref, .quantifier = .required },
9027 .{ .kind = .id_ref, .quantifier = .optional },
85059028 },
85069029 },
85079030 .{
85089031 .name = "OpGroupNonUniformFMin",
85099032 .opcode = 355,
8510 .operands = &[_]Operand{
8511 .{ .kind = .IdResultType, .quantifier = .required },
8512 .{ .kind = .IdResult, .quantifier = .required },
8513 .{ .kind = .IdScope, .quantifier = .required },
8514 .{ .kind = .GroupOperation, .quantifier = .required },
8515 .{ .kind = .IdRef, .quantifier = .required },
8516 .{ .kind = .IdRef, .quantifier = .optional },
9033 .operands = &.{
9034 .{ .kind = .id_result_type, .quantifier = .required },
9035 .{ .kind = .id_result, .quantifier = .required },
9036 .{ .kind = .id_scope, .quantifier = .required },
9037 .{ .kind = .group_operation, .quantifier = .required },
9038 .{ .kind = .id_ref, .quantifier = .required },
9039 .{ .kind = .id_ref, .quantifier = .optional },
85179040 },
85189041 },
85199042 .{
85209043 .name = "OpGroupNonUniformSMax",
85219044 .opcode = 356,
8522 .operands = &[_]Operand{
8523 .{ .kind = .IdResultType, .quantifier = .required },
8524 .{ .kind = .IdResult, .quantifier = .required },
8525 .{ .kind = .IdScope, .quantifier = .required },
8526 .{ .kind = .GroupOperation, .quantifier = .required },
8527 .{ .kind = .IdRef, .quantifier = .required },
8528 .{ .kind = .IdRef, .quantifier = .optional },
9045 .operands = &.{
9046 .{ .kind = .id_result_type, .quantifier = .required },
9047 .{ .kind = .id_result, .quantifier = .required },
9048 .{ .kind = .id_scope, .quantifier = .required },
9049 .{ .kind = .group_operation, .quantifier = .required },
9050 .{ .kind = .id_ref, .quantifier = .required },
9051 .{ .kind = .id_ref, .quantifier = .optional },
85299052 },
85309053 },
85319054 .{
85329055 .name = "OpGroupNonUniformUMax",
85339056 .opcode = 357,
8534 .operands = &[_]Operand{
8535 .{ .kind = .IdResultType, .quantifier = .required },
8536 .{ .kind = .IdResult, .quantifier = .required },
8537 .{ .kind = .IdScope, .quantifier = .required },
8538 .{ .kind = .GroupOperation, .quantifier = .required },
8539 .{ .kind = .IdRef, .quantifier = .required },
8540 .{ .kind = .IdRef, .quantifier = .optional },
9057 .operands = &.{
9058 .{ .kind = .id_result_type, .quantifier = .required },
9059 .{ .kind = .id_result, .quantifier = .required },
9060 .{ .kind = .id_scope, .quantifier = .required },
9061 .{ .kind = .group_operation, .quantifier = .required },
9062 .{ .kind = .id_ref, .quantifier = .required },
9063 .{ .kind = .id_ref, .quantifier = .optional },
85419064 },
85429065 },
85439066 .{
85449067 .name = "OpGroupNonUniformFMax",
85459068 .opcode = 358,
8546 .operands = &[_]Operand{
8547 .{ .kind = .IdResultType, .quantifier = .required },
8548 .{ .kind = .IdResult, .quantifier = .required },
8549 .{ .kind = .IdScope, .quantifier = .required },
8550 .{ .kind = .GroupOperation, .quantifier = .required },
8551 .{ .kind = .IdRef, .quantifier = .required },
8552 .{ .kind = .IdRef, .quantifier = .optional },
9069 .operands = &.{
9070 .{ .kind = .id_result_type, .quantifier = .required },
9071 .{ .kind = .id_result, .quantifier = .required },
9072 .{ .kind = .id_scope, .quantifier = .required },
9073 .{ .kind = .group_operation, .quantifier = .required },
9074 .{ .kind = .id_ref, .quantifier = .required },
9075 .{ .kind = .id_ref, .quantifier = .optional },
85539076 },
85549077 },
85559078 .{
85569079 .name = "OpGroupNonUniformBitwiseAnd",
85579080 .opcode = 359,
8558 .operands = &[_]Operand{
8559 .{ .kind = .IdResultType, .quantifier = .required },
8560 .{ .kind = .IdResult, .quantifier = .required },
8561 .{ .kind = .IdScope, .quantifier = .required },
8562 .{ .kind = .GroupOperation, .quantifier = .required },
8563 .{ .kind = .IdRef, .quantifier = .required },
8564 .{ .kind = .IdRef, .quantifier = .optional },
9081 .operands = &.{
9082 .{ .kind = .id_result_type, .quantifier = .required },
9083 .{ .kind = .id_result, .quantifier = .required },
9084 .{ .kind = .id_scope, .quantifier = .required },
9085 .{ .kind = .group_operation, .quantifier = .required },
9086 .{ .kind = .id_ref, .quantifier = .required },
9087 .{ .kind = .id_ref, .quantifier = .optional },
85659088 },
85669089 },
85679090 .{
85689091 .name = "OpGroupNonUniformBitwiseOr",
85699092 .opcode = 360,
8570 .operands = &[_]Operand{
8571 .{ .kind = .IdResultType, .quantifier = .required },
8572 .{ .kind = .IdResult, .quantifier = .required },
8573 .{ .kind = .IdScope, .quantifier = .required },
8574 .{ .kind = .GroupOperation, .quantifier = .required },
8575 .{ .kind = .IdRef, .quantifier = .required },
8576 .{ .kind = .IdRef, .quantifier = .optional },
9093 .operands = &.{
9094 .{ .kind = .id_result_type, .quantifier = .required },
9095 .{ .kind = .id_result, .quantifier = .required },
9096 .{ .kind = .id_scope, .quantifier = .required },
9097 .{ .kind = .group_operation, .quantifier = .required },
9098 .{ .kind = .id_ref, .quantifier = .required },
9099 .{ .kind = .id_ref, .quantifier = .optional },
85779100 },
85789101 },
85799102 .{
85809103 .name = "OpGroupNonUniformBitwiseXor",
85819104 .opcode = 361,
8582 .operands = &[_]Operand{
8583 .{ .kind = .IdResultType, .quantifier = .required },
8584 .{ .kind = .IdResult, .quantifier = .required },
8585 .{ .kind = .IdScope, .quantifier = .required },
8586 .{ .kind = .GroupOperation, .quantifier = .required },
8587 .{ .kind = .IdRef, .quantifier = .required },
8588 .{ .kind = .IdRef, .quantifier = .optional },
9105 .operands = &.{
9106 .{ .kind = .id_result_type, .quantifier = .required },
9107 .{ .kind = .id_result, .quantifier = .required },
9108 .{ .kind = .id_scope, .quantifier = .required },
9109 .{ .kind = .group_operation, .quantifier = .required },
9110 .{ .kind = .id_ref, .quantifier = .required },
9111 .{ .kind = .id_ref, .quantifier = .optional },
85899112 },
85909113 },
85919114 .{
85929115 .name = "OpGroupNonUniformLogicalAnd",
85939116 .opcode = 362,
8594 .operands = &[_]Operand{
8595 .{ .kind = .IdResultType, .quantifier = .required },
8596 .{ .kind = .IdResult, .quantifier = .required },
8597 .{ .kind = .IdScope, .quantifier = .required },
8598 .{ .kind = .GroupOperation, .quantifier = .required },
8599 .{ .kind = .IdRef, .quantifier = .required },
8600 .{ .kind = .IdRef, .quantifier = .optional },
9117 .operands = &.{
9118 .{ .kind = .id_result_type, .quantifier = .required },
9119 .{ .kind = .id_result, .quantifier = .required },
9120 .{ .kind = .id_scope, .quantifier = .required },
9121 .{ .kind = .group_operation, .quantifier = .required },
9122 .{ .kind = .id_ref, .quantifier = .required },
9123 .{ .kind = .id_ref, .quantifier = .optional },
86019124 },
86029125 },
86039126 .{
86049127 .name = "OpGroupNonUniformLogicalOr",
86059128 .opcode = 363,
8606 .operands = &[_]Operand{
8607 .{ .kind = .IdResultType, .quantifier = .required },
8608 .{ .kind = .IdResult, .quantifier = .required },
8609 .{ .kind = .IdScope, .quantifier = .required },
8610 .{ .kind = .GroupOperation, .quantifier = .required },
8611 .{ .kind = .IdRef, .quantifier = .required },
8612 .{ .kind = .IdRef, .quantifier = .optional },
9129 .operands = &.{
9130 .{ .kind = .id_result_type, .quantifier = .required },
9131 .{ .kind = .id_result, .quantifier = .required },
9132 .{ .kind = .id_scope, .quantifier = .required },
9133 .{ .kind = .group_operation, .quantifier = .required },
9134 .{ .kind = .id_ref, .quantifier = .required },
9135 .{ .kind = .id_ref, .quantifier = .optional },
86139136 },
86149137 },
86159138 .{
86169139 .name = "OpGroupNonUniformLogicalXor",
86179140 .opcode = 364,
8618 .operands = &[_]Operand{
8619 .{ .kind = .IdResultType, .quantifier = .required },
8620 .{ .kind = .IdResult, .quantifier = .required },
8621 .{ .kind = .IdScope, .quantifier = .required },
8622 .{ .kind = .GroupOperation, .quantifier = .required },
8623 .{ .kind = .IdRef, .quantifier = .required },
8624 .{ .kind = .IdRef, .quantifier = .optional },
9141 .operands = &.{
9142 .{ .kind = .id_result_type, .quantifier = .required },
9143 .{ .kind = .id_result, .quantifier = .required },
9144 .{ .kind = .id_scope, .quantifier = .required },
9145 .{ .kind = .group_operation, .quantifier = .required },
9146 .{ .kind = .id_ref, .quantifier = .required },
9147 .{ .kind = .id_ref, .quantifier = .optional },
86259148 },
86269149 },
86279150 .{
86289151 .name = "OpGroupNonUniformQuadBroadcast",
86299152 .opcode = 365,
8630 .operands = &[_]Operand{
8631 .{ .kind = .IdResultType, .quantifier = .required },
8632 .{ .kind = .IdResult, .quantifier = .required },
8633 .{ .kind = .IdScope, .quantifier = .required },
8634 .{ .kind = .IdRef, .quantifier = .required },
8635 .{ .kind = .IdRef, .quantifier = .required },
9153 .operands = &.{
9154 .{ .kind = .id_result_type, .quantifier = .required },
9155 .{ .kind = .id_result, .quantifier = .required },
9156 .{ .kind = .id_scope, .quantifier = .required },
9157 .{ .kind = .id_ref, .quantifier = .required },
9158 .{ .kind = .id_ref, .quantifier = .required },
86369159 },
86379160 },
86389161 .{
86399162 .name = "OpGroupNonUniformQuadSwap",
86409163 .opcode = 366,
8641 .operands = &[_]Operand{
8642 .{ .kind = .IdResultType, .quantifier = .required },
8643 .{ .kind = .IdResult, .quantifier = .required },
8644 .{ .kind = .IdScope, .quantifier = .required },
8645 .{ .kind = .IdRef, .quantifier = .required },
8646 .{ .kind = .IdRef, .quantifier = .required },
9164 .operands = &.{
9165 .{ .kind = .id_result_type, .quantifier = .required },
9166 .{ .kind = .id_result, .quantifier = .required },
9167 .{ .kind = .id_scope, .quantifier = .required },
9168 .{ .kind = .id_ref, .quantifier = .required },
9169 .{ .kind = .id_ref, .quantifier = .required },
86479170 },
86489171 },
86499172 .{
86509173 .name = "OpCopyLogical",
86519174 .opcode = 400,
8652 .operands = &[_]Operand{
8653 .{ .kind = .IdResultType, .quantifier = .required },
8654 .{ .kind = .IdResult, .quantifier = .required },
8655 .{ .kind = .IdRef, .quantifier = .required },
9175 .operands = &.{
9176 .{ .kind = .id_result_type, .quantifier = .required },
9177 .{ .kind = .id_result, .quantifier = .required },
9178 .{ .kind = .id_ref, .quantifier = .required },
86569179 },
86579180 },
86589181 .{
86599182 .name = "OpPtrEqual",
86609183 .opcode = 401,
8661 .operands = &[_]Operand{
8662 .{ .kind = .IdResultType, .quantifier = .required },
8663 .{ .kind = .IdResult, .quantifier = .required },
8664 .{ .kind = .IdRef, .quantifier = .required },
8665 .{ .kind = .IdRef, .quantifier = .required },
9184 .operands = &.{
9185 .{ .kind = .id_result_type, .quantifier = .required },
9186 .{ .kind = .id_result, .quantifier = .required },
9187 .{ .kind = .id_ref, .quantifier = .required },
9188 .{ .kind = .id_ref, .quantifier = .required },
86669189 },
86679190 },
86689191 .{
86699192 .name = "OpPtrNotEqual",
86709193 .opcode = 402,
8671 .operands = &[_]Operand{
8672 .{ .kind = .IdResultType, .quantifier = .required },
8673 .{ .kind = .IdResult, .quantifier = .required },
8674 .{ .kind = .IdRef, .quantifier = .required },
8675 .{ .kind = .IdRef, .quantifier = .required },
9194 .operands = &.{
9195 .{ .kind = .id_result_type, .quantifier = .required },
9196 .{ .kind = .id_result, .quantifier = .required },
9197 .{ .kind = .id_ref, .quantifier = .required },
9198 .{ .kind = .id_ref, .quantifier = .required },
86769199 },
86779200 },
86789201 .{
86799202 .name = "OpPtrDiff",
86809203 .opcode = 403,
8681 .operands = &[_]Operand{
8682 .{ .kind = .IdResultType, .quantifier = .required },
8683 .{ .kind = .IdResult, .quantifier = .required },
8684 .{ .kind = .IdRef, .quantifier = .required },
8685 .{ .kind = .IdRef, .quantifier = .required },
9204 .operands = &.{
9205 .{ .kind = .id_result_type, .quantifier = .required },
9206 .{ .kind = .id_result, .quantifier = .required },
9207 .{ .kind = .id_ref, .quantifier = .required },
9208 .{ .kind = .id_ref, .quantifier = .required },
86869209 },
86879210 },
86889211 .{
86899212 .name = "OpColorAttachmentReadEXT",
86909213 .opcode = 4160,
8691 .operands = &[_]Operand{
8692 .{ .kind = .IdResultType, .quantifier = .required },
8693 .{ .kind = .IdResult, .quantifier = .required },
8694 .{ .kind = .IdRef, .quantifier = .required },
8695 .{ .kind = .IdRef, .quantifier = .optional },
9214 .operands = &.{
9215 .{ .kind = .id_result_type, .quantifier = .required },
9216 .{ .kind = .id_result, .quantifier = .required },
9217 .{ .kind = .id_ref, .quantifier = .required },
9218 .{ .kind = .id_ref, .quantifier = .optional },
86969219 },
86979220 },
86989221 .{
86999222 .name = "OpDepthAttachmentReadEXT",
87009223 .opcode = 4161,
8701 .operands = &[_]Operand{
8702 .{ .kind = .IdResultType, .quantifier = .required },
8703 .{ .kind = .IdResult, .quantifier = .required },
8704 .{ .kind = .IdRef, .quantifier = .optional },
9224 .operands = &.{
9225 .{ .kind = .id_result_type, .quantifier = .required },
9226 .{ .kind = .id_result, .quantifier = .required },
9227 .{ .kind = .id_ref, .quantifier = .optional },
87059228 },
87069229 },
87079230 .{
87089231 .name = "OpStencilAttachmentReadEXT",
87099232 .opcode = 4162,
8710 .operands = &[_]Operand{
8711 .{ .kind = .IdResultType, .quantifier = .required },
8712 .{ .kind = .IdResult, .quantifier = .required },
8713 .{ .kind = .IdRef, .quantifier = .optional },
9233 .operands = &.{
9234 .{ .kind = .id_result_type, .quantifier = .required },
9235 .{ .kind = .id_result, .quantifier = .required },
9236 .{ .kind = .id_ref, .quantifier = .optional },
9237 },
9238 },
9239 .{
9240 .name = "OpTypeTensorARM",
9241 .opcode = 4163,
9242 .operands = &.{
9243 .{ .kind = .id_result, .quantifier = .required },
9244 .{ .kind = .id_ref, .quantifier = .required },
9245 .{ .kind = .id_ref, .quantifier = .optional },
9246 .{ .kind = .id_ref, .quantifier = .optional },
9247 },
9248 },
9249 .{
9250 .name = "OpTensorReadARM",
9251 .opcode = 4164,
9252 .operands = &.{
9253 .{ .kind = .id_result_type, .quantifier = .required },
9254 .{ .kind = .id_result, .quantifier = .required },
9255 .{ .kind = .id_ref, .quantifier = .required },
9256 .{ .kind = .id_ref, .quantifier = .required },
9257 .{ .kind = .tensor_operands, .quantifier = .optional },
9258 },
9259 },
9260 .{
9261 .name = "OpTensorWriteARM",
9262 .opcode = 4165,
9263 .operands = &.{
9264 .{ .kind = .id_ref, .quantifier = .required },
9265 .{ .kind = .id_ref, .quantifier = .required },
9266 .{ .kind = .id_ref, .quantifier = .required },
9267 .{ .kind = .tensor_operands, .quantifier = .optional },
9268 },
9269 },
9270 .{
9271 .name = "OpTensorQuerySizeARM",
9272 .opcode = 4166,
9273 .operands = &.{
9274 .{ .kind = .id_result_type, .quantifier = .required },
9275 .{ .kind = .id_result, .quantifier = .required },
9276 .{ .kind = .id_ref, .quantifier = .required },
9277 .{ .kind = .id_ref, .quantifier = .required },
9278 },
9279 },
9280 .{
9281 .name = "OpGraphConstantARM",
9282 .opcode = 4181,
9283 .operands = &.{
9284 .{ .kind = .id_result_type, .quantifier = .required },
9285 .{ .kind = .id_result, .quantifier = .required },
9286 .{ .kind = .literal_integer, .quantifier = .required },
9287 },
9288 },
9289 .{
9290 .name = "OpGraphEntryPointARM",
9291 .opcode = 4182,
9292 .operands = &.{
9293 .{ .kind = .id_ref, .quantifier = .required },
9294 .{ .kind = .literal_string, .quantifier = .required },
9295 .{ .kind = .id_ref, .quantifier = .variadic },
9296 },
9297 },
9298 .{
9299 .name = "OpGraphARM",
9300 .opcode = 4183,
9301 .operands = &.{
9302 .{ .kind = .id_result_type, .quantifier = .required },
9303 .{ .kind = .id_result, .quantifier = .required },
9304 },
9305 },
9306 .{
9307 .name = "OpGraphInputARM",
9308 .opcode = 4184,
9309 .operands = &.{
9310 .{ .kind = .id_result_type, .quantifier = .required },
9311 .{ .kind = .id_result, .quantifier = .required },
9312 .{ .kind = .id_ref, .quantifier = .required },
9313 .{ .kind = .id_ref, .quantifier = .variadic },
9314 },
9315 },
9316 .{
9317 .name = "OpGraphSetOutputARM",
9318 .opcode = 4185,
9319 .operands = &.{
9320 .{ .kind = .id_ref, .quantifier = .required },
9321 .{ .kind = .id_ref, .quantifier = .required },
9322 .{ .kind = .id_ref, .quantifier = .variadic },
9323 },
9324 },
9325 .{
9326 .name = "OpGraphEndARM",
9327 .opcode = 4186,
9328 .operands = &.{},
9329 },
9330 .{
9331 .name = "OpTypeGraphARM",
9332 .opcode = 4190,
9333 .operands = &.{
9334 .{ .kind = .id_result, .quantifier = .required },
9335 .{ .kind = .literal_integer, .quantifier = .required },
9336 .{ .kind = .id_ref, .quantifier = .variadic },
87149337 },
87159338 },
87169339 .{
87179340 .name = "OpTerminateInvocation",
87189341 .opcode = 4416,
8719 .operands = &[_]Operand{},
9342 .operands = &.{},
9343 },
9344 .{
9345 .name = "OpTypeUntypedPointerKHR",
9346 .opcode = 4417,
9347 .operands = &.{
9348 .{ .kind = .id_result, .quantifier = .required },
9349 .{ .kind = .storage_class, .quantifier = .required },
9350 },
9351 },
9352 .{
9353 .name = "OpUntypedVariableKHR",
9354 .opcode = 4418,
9355 .operands = &.{
9356 .{ .kind = .id_result_type, .quantifier = .required },
9357 .{ .kind = .id_result, .quantifier = .required },
9358 .{ .kind = .storage_class, .quantifier = .required },
9359 .{ .kind = .id_ref, .quantifier = .optional },
9360 .{ .kind = .id_ref, .quantifier = .optional },
9361 },
9362 },
9363 .{
9364 .name = "OpUntypedAccessChainKHR",
9365 .opcode = 4419,
9366 .operands = &.{
9367 .{ .kind = .id_result_type, .quantifier = .required },
9368 .{ .kind = .id_result, .quantifier = .required },
9369 .{ .kind = .id_ref, .quantifier = .required },
9370 .{ .kind = .id_ref, .quantifier = .required },
9371 .{ .kind = .id_ref, .quantifier = .variadic },
9372 },
9373 },
9374 .{
9375 .name = "OpUntypedInBoundsAccessChainKHR",
9376 .opcode = 4420,
9377 .operands = &.{
9378 .{ .kind = .id_result_type, .quantifier = .required },
9379 .{ .kind = .id_result, .quantifier = .required },
9380 .{ .kind = .id_ref, .quantifier = .required },
9381 .{ .kind = .id_ref, .quantifier = .required },
9382 .{ .kind = .id_ref, .quantifier = .variadic },
9383 },
87209384 },
87219385 .{
87229386 .name = "OpSubgroupBallotKHR",
87239387 .opcode = 4421,
8724 .operands = &[_]Operand{
8725 .{ .kind = .IdResultType, .quantifier = .required },
8726 .{ .kind = .IdResult, .quantifier = .required },
8727 .{ .kind = .IdRef, .quantifier = .required },
9388 .operands = &.{
9389 .{ .kind = .id_result_type, .quantifier = .required },
9390 .{ .kind = .id_result, .quantifier = .required },
9391 .{ .kind = .id_ref, .quantifier = .required },
87289392 },
87299393 },
87309394 .{
87319395 .name = "OpSubgroupFirstInvocationKHR",
87329396 .opcode = 4422,
8733 .operands = &[_]Operand{
8734 .{ .kind = .IdResultType, .quantifier = .required },
8735 .{ .kind = .IdResult, .quantifier = .required },
8736 .{ .kind = .IdRef, .quantifier = .required },
9397 .operands = &.{
9398 .{ .kind = .id_result_type, .quantifier = .required },
9399 .{ .kind = .id_result, .quantifier = .required },
9400 .{ .kind = .id_ref, .quantifier = .required },
9401 },
9402 },
9403 .{
9404 .name = "OpUntypedPtrAccessChainKHR",
9405 .opcode = 4423,
9406 .operands = &.{
9407 .{ .kind = .id_result_type, .quantifier = .required },
9408 .{ .kind = .id_result, .quantifier = .required },
9409 .{ .kind = .id_ref, .quantifier = .required },
9410 .{ .kind = .id_ref, .quantifier = .required },
9411 .{ .kind = .id_ref, .quantifier = .required },
9412 .{ .kind = .id_ref, .quantifier = .variadic },
9413 },
9414 },
9415 .{
9416 .name = "OpUntypedInBoundsPtrAccessChainKHR",
9417 .opcode = 4424,
9418 .operands = &.{
9419 .{ .kind = .id_result_type, .quantifier = .required },
9420 .{ .kind = .id_result, .quantifier = .required },
9421 .{ .kind = .id_ref, .quantifier = .required },
9422 .{ .kind = .id_ref, .quantifier = .required },
9423 .{ .kind = .id_ref, .quantifier = .required },
9424 .{ .kind = .id_ref, .quantifier = .variadic },
9425 },
9426 },
9427 .{
9428 .name = "OpUntypedArrayLengthKHR",
9429 .opcode = 4425,
9430 .operands = &.{
9431 .{ .kind = .id_result_type, .quantifier = .required },
9432 .{ .kind = .id_result, .quantifier = .required },
9433 .{ .kind = .id_ref, .quantifier = .required },
9434 .{ .kind = .id_ref, .quantifier = .required },
9435 .{ .kind = .literal_integer, .quantifier = .required },
9436 },
9437 },
9438 .{
9439 .name = "OpUntypedPrefetchKHR",
9440 .opcode = 4426,
9441 .operands = &.{
9442 .{ .kind = .id_ref, .quantifier = .required },
9443 .{ .kind = .id_ref, .quantifier = .required },
9444 .{ .kind = .id_ref, .quantifier = .optional },
9445 .{ .kind = .id_ref, .quantifier = .optional },
9446 .{ .kind = .id_ref, .quantifier = .optional },
87379447 },
87389448 },
87399449 .{
87409450 .name = "OpSubgroupAllKHR",
87419451 .opcode = 4428,
8742 .operands = &[_]Operand{
8743 .{ .kind = .IdResultType, .quantifier = .required },
8744 .{ .kind = .IdResult, .quantifier = .required },
8745 .{ .kind = .IdRef, .quantifier = .required },
9452 .operands = &.{
9453 .{ .kind = .id_result_type, .quantifier = .required },
9454 .{ .kind = .id_result, .quantifier = .required },
9455 .{ .kind = .id_ref, .quantifier = .required },
87469456 },
87479457 },
87489458 .{
87499459 .name = "OpSubgroupAnyKHR",
87509460 .opcode = 4429,
8751 .operands = &[_]Operand{
8752 .{ .kind = .IdResultType, .quantifier = .required },
8753 .{ .kind = .IdResult, .quantifier = .required },
8754 .{ .kind = .IdRef, .quantifier = .required },
9461 .operands = &.{
9462 .{ .kind = .id_result_type, .quantifier = .required },
9463 .{ .kind = .id_result, .quantifier = .required },
9464 .{ .kind = .id_ref, .quantifier = .required },
87559465 },
87569466 },
87579467 .{
87589468 .name = "OpSubgroupAllEqualKHR",
87599469 .opcode = 4430,
8760 .operands = &[_]Operand{
8761 .{ .kind = .IdResultType, .quantifier = .required },
8762 .{ .kind = .IdResult, .quantifier = .required },
8763 .{ .kind = .IdRef, .quantifier = .required },
9470 .operands = &.{
9471 .{ .kind = .id_result_type, .quantifier = .required },
9472 .{ .kind = .id_result, .quantifier = .required },
9473 .{ .kind = .id_ref, .quantifier = .required },
87649474 },
87659475 },
87669476 .{
87679477 .name = "OpGroupNonUniformRotateKHR",
87689478 .opcode = 4431,
8769 .operands = &[_]Operand{
8770 .{ .kind = .IdResultType, .quantifier = .required },
8771 .{ .kind = .IdResult, .quantifier = .required },
8772 .{ .kind = .IdScope, .quantifier = .required },
8773 .{ .kind = .IdRef, .quantifier = .required },
8774 .{ .kind = .IdRef, .quantifier = .required },
8775 .{ .kind = .IdRef, .quantifier = .optional },
9479 .operands = &.{
9480 .{ .kind = .id_result_type, .quantifier = .required },
9481 .{ .kind = .id_result, .quantifier = .required },
9482 .{ .kind = .id_scope, .quantifier = .required },
9483 .{ .kind = .id_ref, .quantifier = .required },
9484 .{ .kind = .id_ref, .quantifier = .required },
9485 .{ .kind = .id_ref, .quantifier = .optional },
87769486 },
87779487 },
87789488 .{
87799489 .name = "OpSubgroupReadInvocationKHR",
87809490 .opcode = 4432,
8781 .operands = &[_]Operand{
8782 .{ .kind = .IdResultType, .quantifier = .required },
8783 .{ .kind = .IdResult, .quantifier = .required },
8784 .{ .kind = .IdRef, .quantifier = .required },
8785 .{ .kind = .IdRef, .quantifier = .required },
9491 .operands = &.{
9492 .{ .kind = .id_result_type, .quantifier = .required },
9493 .{ .kind = .id_result, .quantifier = .required },
9494 .{ .kind = .id_ref, .quantifier = .required },
9495 .{ .kind = .id_ref, .quantifier = .required },
9496 },
9497 },
9498 .{
9499 .name = "OpExtInstWithForwardRefsKHR",
9500 .opcode = 4433,
9501 .operands = &.{
9502 .{ .kind = .id_result_type, .quantifier = .required },
9503 .{ .kind = .id_result, .quantifier = .required },
9504 .{ .kind = .id_ref, .quantifier = .required },
9505 .{ .kind = .literal_ext_inst_integer, .quantifier = .required },
9506 .{ .kind = .id_ref, .quantifier = .variadic },
87869507 },
87879508 },
87889509 .{
87899510 .name = "OpTraceRayKHR",
87909511 .opcode = 4445,
8791 .operands = &[_]Operand{
8792 .{ .kind = .IdRef, .quantifier = .required },
8793 .{ .kind = .IdRef, .quantifier = .required },
8794 .{ .kind = .IdRef, .quantifier = .required },
8795 .{ .kind = .IdRef, .quantifier = .required },
8796 .{ .kind = .IdRef, .quantifier = .required },
8797 .{ .kind = .IdRef, .quantifier = .required },
8798 .{ .kind = .IdRef, .quantifier = .required },
8799 .{ .kind = .IdRef, .quantifier = .required },
8800 .{ .kind = .IdRef, .quantifier = .required },
8801 .{ .kind = .IdRef, .quantifier = .required },
8802 .{ .kind = .IdRef, .quantifier = .required },
9512 .operands = &.{
9513 .{ .kind = .id_ref, .quantifier = .required },
9514 .{ .kind = .id_ref, .quantifier = .required },
9515 .{ .kind = .id_ref, .quantifier = .required },
9516 .{ .kind = .id_ref, .quantifier = .required },
9517 .{ .kind = .id_ref, .quantifier = .required },
9518 .{ .kind = .id_ref, .quantifier = .required },
9519 .{ .kind = .id_ref, .quantifier = .required },
9520 .{ .kind = .id_ref, .quantifier = .required },
9521 .{ .kind = .id_ref, .quantifier = .required },
9522 .{ .kind = .id_ref, .quantifier = .required },
9523 .{ .kind = .id_ref, .quantifier = .required },
88039524 },
88049525 },
88059526 .{
88069527 .name = "OpExecuteCallableKHR",
88079528 .opcode = 4446,
8808 .operands = &[_]Operand{
8809 .{ .kind = .IdRef, .quantifier = .required },
8810 .{ .kind = .IdRef, .quantifier = .required },
9529 .operands = &.{
9530 .{ .kind = .id_ref, .quantifier = .required },
9531 .{ .kind = .id_ref, .quantifier = .required },
88119532 },
88129533 },
88139534 .{
88149535 .name = "OpConvertUToAccelerationStructureKHR",
88159536 .opcode = 4447,
8816 .operands = &[_]Operand{
8817 .{ .kind = .IdResultType, .quantifier = .required },
8818 .{ .kind = .IdResult, .quantifier = .required },
8819 .{ .kind = .IdRef, .quantifier = .required },
9537 .operands = &.{
9538 .{ .kind = .id_result_type, .quantifier = .required },
9539 .{ .kind = .id_result, .quantifier = .required },
9540 .{ .kind = .id_ref, .quantifier = .required },
88209541 },
88219542 },
88229543 .{
88239544 .name = "OpIgnoreIntersectionKHR",
88249545 .opcode = 4448,
8825 .operands = &[_]Operand{},
9546 .operands = &.{},
88269547 },
88279548 .{
88289549 .name = "OpTerminateRayKHR",
88299550 .opcode = 4449,
8830 .operands = &[_]Operand{},
9551 .operands = &.{},
88319552 },
88329553 .{
88339554 .name = "OpSDot",
88349555 .opcode = 4450,
8835 .operands = &[_]Operand{
8836 .{ .kind = .IdResultType, .quantifier = .required },
8837 .{ .kind = .IdResult, .quantifier = .required },
8838 .{ .kind = .IdRef, .quantifier = .required },
8839 .{ .kind = .IdRef, .quantifier = .required },
8840 .{ .kind = .PackedVectorFormat, .quantifier = .optional },
8841 },
8842 },
8843 .{
8844 .name = "OpSDotKHR",
8845 .opcode = 4450,
8846 .operands = &[_]Operand{
8847 .{ .kind = .IdResultType, .quantifier = .required },
8848 .{ .kind = .IdResult, .quantifier = .required },
8849 .{ .kind = .IdRef, .quantifier = .required },
8850 .{ .kind = .IdRef, .quantifier = .required },
8851 .{ .kind = .PackedVectorFormat, .quantifier = .optional },
9556 .operands = &.{
9557 .{ .kind = .id_result_type, .quantifier = .required },
9558 .{ .kind = .id_result, .quantifier = .required },
9559 .{ .kind = .id_ref, .quantifier = .required },
9560 .{ .kind = .id_ref, .quantifier = .required },
9561 .{ .kind = .packed_vector_format, .quantifier = .optional },
88529562 },
88539563 },
88549564 .{
88559565 .name = "OpUDot",
88569566 .opcode = 4451,
8857 .operands = &[_]Operand{
8858 .{ .kind = .IdResultType, .quantifier = .required },
8859 .{ .kind = .IdResult, .quantifier = .required },
8860 .{ .kind = .IdRef, .quantifier = .required },
8861 .{ .kind = .IdRef, .quantifier = .required },
8862 .{ .kind = .PackedVectorFormat, .quantifier = .optional },
8863 },
8864 },
8865 .{
8866 .name = "OpUDotKHR",
8867 .opcode = 4451,
8868 .operands = &[_]Operand{
8869 .{ .kind = .IdResultType, .quantifier = .required },
8870 .{ .kind = .IdResult, .quantifier = .required },
8871 .{ .kind = .IdRef, .quantifier = .required },
8872 .{ .kind = .IdRef, .quantifier = .required },
8873 .{ .kind = .PackedVectorFormat, .quantifier = .optional },
9567 .operands = &.{
9568 .{ .kind = .id_result_type, .quantifier = .required },
9569 .{ .kind = .id_result, .quantifier = .required },
9570 .{ .kind = .id_ref, .quantifier = .required },
9571 .{ .kind = .id_ref, .quantifier = .required },
9572 .{ .kind = .packed_vector_format, .quantifier = .optional },
88749573 },
88759574 },
88769575 .{
88779576 .name = "OpSUDot",
88789577 .opcode = 4452,
8879 .operands = &[_]Operand{
8880 .{ .kind = .IdResultType, .quantifier = .required },
8881 .{ .kind = .IdResult, .quantifier = .required },
8882 .{ .kind = .IdRef, .quantifier = .required },
8883 .{ .kind = .IdRef, .quantifier = .required },
8884 .{ .kind = .PackedVectorFormat, .quantifier = .optional },
8885 },
8886 },
8887 .{
8888 .name = "OpSUDotKHR",
8889 .opcode = 4452,
8890 .operands = &[_]Operand{
8891 .{ .kind = .IdResultType, .quantifier = .required },
8892 .{ .kind = .IdResult, .quantifier = .required },
8893 .{ .kind = .IdRef, .quantifier = .required },
8894 .{ .kind = .IdRef, .quantifier = .required },
8895 .{ .kind = .PackedVectorFormat, .quantifier = .optional },
9578 .operands = &.{
9579 .{ .kind = .id_result_type, .quantifier = .required },
9580 .{ .kind = .id_result, .quantifier = .required },
9581 .{ .kind = .id_ref, .quantifier = .required },
9582 .{ .kind = .id_ref, .quantifier = .required },
9583 .{ .kind = .packed_vector_format, .quantifier = .optional },
88969584 },
88979585 },
88989586 .{
88999587 .name = "OpSDotAccSat",
89009588 .opcode = 4453,
8901 .operands = &[_]Operand{
8902 .{ .kind = .IdResultType, .quantifier = .required },
8903 .{ .kind = .IdResult, .quantifier = .required },
8904 .{ .kind = .IdRef, .quantifier = .required },
8905 .{ .kind = .IdRef, .quantifier = .required },
8906 .{ .kind = .IdRef, .quantifier = .required },
8907 .{ .kind = .PackedVectorFormat, .quantifier = .optional },
8908 },
8909 },
8910 .{
8911 .name = "OpSDotAccSatKHR",
8912 .opcode = 4453,
8913 .operands = &[_]Operand{
8914 .{ .kind = .IdResultType, .quantifier = .required },
8915 .{ .kind = .IdResult, .quantifier = .required },
8916 .{ .kind = .IdRef, .quantifier = .required },
8917 .{ .kind = .IdRef, .quantifier = .required },
8918 .{ .kind = .IdRef, .quantifier = .required },
8919 .{ .kind = .PackedVectorFormat, .quantifier = .optional },
9589 .operands = &.{
9590 .{ .kind = .id_result_type, .quantifier = .required },
9591 .{ .kind = .id_result, .quantifier = .required },
9592 .{ .kind = .id_ref, .quantifier = .required },
9593 .{ .kind = .id_ref, .quantifier = .required },
9594 .{ .kind = .id_ref, .quantifier = .required },
9595 .{ .kind = .packed_vector_format, .quantifier = .optional },
89209596 },
89219597 },
89229598 .{
89239599 .name = "OpUDotAccSat",
89249600 .opcode = 4454,
8925 .operands = &[_]Operand{
8926 .{ .kind = .IdResultType, .quantifier = .required },
8927 .{ .kind = .IdResult, .quantifier = .required },
8928 .{ .kind = .IdRef, .quantifier = .required },
8929 .{ .kind = .IdRef, .quantifier = .required },
8930 .{ .kind = .IdRef, .quantifier = .required },
8931 .{ .kind = .PackedVectorFormat, .quantifier = .optional },
8932 },
8933 },
8934 .{
8935 .name = "OpUDotAccSatKHR",
8936 .opcode = 4454,
8937 .operands = &[_]Operand{
8938 .{ .kind = .IdResultType, .quantifier = .required },
8939 .{ .kind = .IdResult, .quantifier = .required },
8940 .{ .kind = .IdRef, .quantifier = .required },
8941 .{ .kind = .IdRef, .quantifier = .required },
8942 .{ .kind = .IdRef, .quantifier = .required },
8943 .{ .kind = .PackedVectorFormat, .quantifier = .optional },
9601 .operands = &.{
9602 .{ .kind = .id_result_type, .quantifier = .required },
9603 .{ .kind = .id_result, .quantifier = .required },
9604 .{ .kind = .id_ref, .quantifier = .required },
9605 .{ .kind = .id_ref, .quantifier = .required },
9606 .{ .kind = .id_ref, .quantifier = .required },
9607 .{ .kind = .packed_vector_format, .quantifier = .optional },
89449608 },
89459609 },
89469610 .{
89479611 .name = "OpSUDotAccSat",
89489612 .opcode = 4455,
8949 .operands = &[_]Operand{
8950 .{ .kind = .IdResultType, .quantifier = .required },
8951 .{ .kind = .IdResult, .quantifier = .required },
8952 .{ .kind = .IdRef, .quantifier = .required },
8953 .{ .kind = .IdRef, .quantifier = .required },
8954 .{ .kind = .IdRef, .quantifier = .required },
8955 .{ .kind = .PackedVectorFormat, .quantifier = .optional },
8956 },
8957 },
8958 .{
8959 .name = "OpSUDotAccSatKHR",
8960 .opcode = 4455,
8961 .operands = &[_]Operand{
8962 .{ .kind = .IdResultType, .quantifier = .required },
8963 .{ .kind = .IdResult, .quantifier = .required },
8964 .{ .kind = .IdRef, .quantifier = .required },
8965 .{ .kind = .IdRef, .quantifier = .required },
8966 .{ .kind = .IdRef, .quantifier = .required },
8967 .{ .kind = .PackedVectorFormat, .quantifier = .optional },
9613 .operands = &.{
9614 .{ .kind = .id_result_type, .quantifier = .required },
9615 .{ .kind = .id_result, .quantifier = .required },
9616 .{ .kind = .id_ref, .quantifier = .required },
9617 .{ .kind = .id_ref, .quantifier = .required },
9618 .{ .kind = .id_ref, .quantifier = .required },
9619 .{ .kind = .packed_vector_format, .quantifier = .optional },
89689620 },
89699621 },
89709622 .{
89719623 .name = "OpTypeCooperativeMatrixKHR",
89729624 .opcode = 4456,
8973 .operands = &[_]Operand{
8974 .{ .kind = .IdResult, .quantifier = .required },
8975 .{ .kind = .IdRef, .quantifier = .required },
8976 .{ .kind = .IdScope, .quantifier = .required },
8977 .{ .kind = .IdRef, .quantifier = .required },
8978 .{ .kind = .IdRef, .quantifier = .required },
8979 .{ .kind = .IdRef, .quantifier = .required },
9625 .operands = &.{
9626 .{ .kind = .id_result, .quantifier = .required },
9627 .{ .kind = .id_ref, .quantifier = .required },
9628 .{ .kind = .id_scope, .quantifier = .required },
9629 .{ .kind = .id_ref, .quantifier = .required },
9630 .{ .kind = .id_ref, .quantifier = .required },
9631 .{ .kind = .id_ref, .quantifier = .required },
89809632 },
89819633 },
89829634 .{
89839635 .name = "OpCooperativeMatrixLoadKHR",
89849636 .opcode = 4457,
8985 .operands = &[_]Operand{
8986 .{ .kind = .IdResultType, .quantifier = .required },
8987 .{ .kind = .IdResult, .quantifier = .required },
8988 .{ .kind = .IdRef, .quantifier = .required },
8989 .{ .kind = .IdRef, .quantifier = .required },
8990 .{ .kind = .IdRef, .quantifier = .optional },
8991 .{ .kind = .MemoryAccess, .quantifier = .optional },
9637 .operands = &.{
9638 .{ .kind = .id_result_type, .quantifier = .required },
9639 .{ .kind = .id_result, .quantifier = .required },
9640 .{ .kind = .id_ref, .quantifier = .required },
9641 .{ .kind = .id_ref, .quantifier = .required },
9642 .{ .kind = .id_ref, .quantifier = .optional },
9643 .{ .kind = .memory_access, .quantifier = .optional },
89929644 },
89939645 },
89949646 .{
89959647 .name = "OpCooperativeMatrixStoreKHR",
89969648 .opcode = 4458,
8997 .operands = &[_]Operand{
8998 .{ .kind = .IdRef, .quantifier = .required },
8999 .{ .kind = .IdRef, .quantifier = .required },
9000 .{ .kind = .IdRef, .quantifier = .required },
9001 .{ .kind = .IdRef, .quantifier = .optional },
9002 .{ .kind = .MemoryAccess, .quantifier = .optional },
9649 .operands = &.{
9650 .{ .kind = .id_ref, .quantifier = .required },
9651 .{ .kind = .id_ref, .quantifier = .required },
9652 .{ .kind = .id_ref, .quantifier = .required },
9653 .{ .kind = .id_ref, .quantifier = .optional },
9654 .{ .kind = .memory_access, .quantifier = .optional },
90039655 },
90049656 },
90059657 .{
90069658 .name = "OpCooperativeMatrixMulAddKHR",
90079659 .opcode = 4459,
9008 .operands = &[_]Operand{
9009 .{ .kind = .IdResultType, .quantifier = .required },
9010 .{ .kind = .IdResult, .quantifier = .required },
9011 .{ .kind = .IdRef, .quantifier = .required },
9012 .{ .kind = .IdRef, .quantifier = .required },
9013 .{ .kind = .IdRef, .quantifier = .required },
9014 .{ .kind = .CooperativeMatrixOperands, .quantifier = .optional },
9660 .operands = &.{
9661 .{ .kind = .id_result_type, .quantifier = .required },
9662 .{ .kind = .id_result, .quantifier = .required },
9663 .{ .kind = .id_ref, .quantifier = .required },
9664 .{ .kind = .id_ref, .quantifier = .required },
9665 .{ .kind = .id_ref, .quantifier = .required },
9666 .{ .kind = .cooperative_matrix_operands, .quantifier = .optional },
90159667 },
90169668 },
90179669 .{
90189670 .name = "OpCooperativeMatrixLengthKHR",
90199671 .opcode = 4460,
9020 .operands = &[_]Operand{
9021 .{ .kind = .IdResultType, .quantifier = .required },
9022 .{ .kind = .IdResult, .quantifier = .required },
9023 .{ .kind = .IdRef, .quantifier = .required },
9672 .operands = &.{
9673 .{ .kind = .id_result_type, .quantifier = .required },
9674 .{ .kind = .id_result, .quantifier = .required },
9675 .{ .kind = .id_ref, .quantifier = .required },
9676 },
9677 },
9678 .{
9679 .name = "OpConstantCompositeReplicateEXT",
9680 .opcode = 4461,
9681 .operands = &.{
9682 .{ .kind = .id_result_type, .quantifier = .required },
9683 .{ .kind = .id_result, .quantifier = .required },
9684 .{ .kind = .id_ref, .quantifier = .required },
9685 },
9686 },
9687 .{
9688 .name = "OpSpecConstantCompositeReplicateEXT",
9689 .opcode = 4462,
9690 .operands = &.{
9691 .{ .kind = .id_result_type, .quantifier = .required },
9692 .{ .kind = .id_result, .quantifier = .required },
9693 .{ .kind = .id_ref, .quantifier = .required },
9694 },
9695 },
9696 .{
9697 .name = "OpCompositeConstructReplicateEXT",
9698 .opcode = 4463,
9699 .operands = &.{
9700 .{ .kind = .id_result_type, .quantifier = .required },
9701 .{ .kind = .id_result, .quantifier = .required },
9702 .{ .kind = .id_ref, .quantifier = .required },
90249703 },
90259704 },
90269705 .{
90279706 .name = "OpTypeRayQueryKHR",
90289707 .opcode = 4472,
9029 .operands = &[_]Operand{
9030 .{ .kind = .IdResult, .quantifier = .required },
9708 .operands = &.{
9709 .{ .kind = .id_result, .quantifier = .required },
90319710 },
90329711 },
90339712 .{
90349713 .name = "OpRayQueryInitializeKHR",
90359714 .opcode = 4473,
9036 .operands = &[_]Operand{
9037 .{ .kind = .IdRef, .quantifier = .required },
9038 .{ .kind = .IdRef, .quantifier = .required },
9039 .{ .kind = .IdRef, .quantifier = .required },
9040 .{ .kind = .IdRef, .quantifier = .required },
9041 .{ .kind = .IdRef, .quantifier = .required },
9042 .{ .kind = .IdRef, .quantifier = .required },
9043 .{ .kind = .IdRef, .quantifier = .required },
9044 .{ .kind = .IdRef, .quantifier = .required },
9715 .operands = &.{
9716 .{ .kind = .id_ref, .quantifier = .required },
9717 .{ .kind = .id_ref, .quantifier = .required },
9718 .{ .kind = .id_ref, .quantifier = .required },
9719 .{ .kind = .id_ref, .quantifier = .required },
9720 .{ .kind = .id_ref, .quantifier = .required },
9721 .{ .kind = .id_ref, .quantifier = .required },
9722 .{ .kind = .id_ref, .quantifier = .required },
9723 .{ .kind = .id_ref, .quantifier = .required },
90459724 },
90469725 },
90479726 .{
90489727 .name = "OpRayQueryTerminateKHR",
90499728 .opcode = 4474,
9050 .operands = &[_]Operand{
9051 .{ .kind = .IdRef, .quantifier = .required },
9729 .operands = &.{
9730 .{ .kind = .id_ref, .quantifier = .required },
90529731 },
90539732 },
90549733 .{
90559734 .name = "OpRayQueryGenerateIntersectionKHR",
90569735 .opcode = 4475,
9057 .operands = &[_]Operand{
9058 .{ .kind = .IdRef, .quantifier = .required },
9059 .{ .kind = .IdRef, .quantifier = .required },
9736 .operands = &.{
9737 .{ .kind = .id_ref, .quantifier = .required },
9738 .{ .kind = .id_ref, .quantifier = .required },
90609739 },
90619740 },
90629741 .{
90639742 .name = "OpRayQueryConfirmIntersectionKHR",
90649743 .opcode = 4476,
9065 .operands = &[_]Operand{
9066 .{ .kind = .IdRef, .quantifier = .required },
9744 .operands = &.{
9745 .{ .kind = .id_ref, .quantifier = .required },
90679746 },
90689747 },
90699748 .{
90709749 .name = "OpRayQueryProceedKHR",
90719750 .opcode = 4477,
9072 .operands = &[_]Operand{
9073 .{ .kind = .IdResultType, .quantifier = .required },
9074 .{ .kind = .IdResult, .quantifier = .required },
9075 .{ .kind = .IdRef, .quantifier = .required },
9751 .operands = &.{
9752 .{ .kind = .id_result_type, .quantifier = .required },
9753 .{ .kind = .id_result, .quantifier = .required },
9754 .{ .kind = .id_ref, .quantifier = .required },
90769755 },
90779756 },
90789757 .{
90799758 .name = "OpRayQueryGetIntersectionTypeKHR",
90809759 .opcode = 4479,
9081 .operands = &[_]Operand{
9082 .{ .kind = .IdResultType, .quantifier = .required },
9083 .{ .kind = .IdResult, .quantifier = .required },
9084 .{ .kind = .IdRef, .quantifier = .required },
9085 .{ .kind = .IdRef, .quantifier = .required },
9760 .operands = &.{
9761 .{ .kind = .id_result_type, .quantifier = .required },
9762 .{ .kind = .id_result, .quantifier = .required },
9763 .{ .kind = .id_ref, .quantifier = .required },
9764 .{ .kind = .id_ref, .quantifier = .required },
90869765 },
90879766 },
90889767 .{
90899768 .name = "OpImageSampleWeightedQCOM",
90909769 .opcode = 4480,
9091 .operands = &[_]Operand{
9092 .{ .kind = .IdResultType, .quantifier = .required },
9093 .{ .kind = .IdResult, .quantifier = .required },
9094 .{ .kind = .IdRef, .quantifier = .required },
9095 .{ .kind = .IdRef, .quantifier = .required },
9096 .{ .kind = .IdRef, .quantifier = .required },
9770 .operands = &.{
9771 .{ .kind = .id_result_type, .quantifier = .required },
9772 .{ .kind = .id_result, .quantifier = .required },
9773 .{ .kind = .id_ref, .quantifier = .required },
9774 .{ .kind = .id_ref, .quantifier = .required },
9775 .{ .kind = .id_ref, .quantifier = .required },
90979776 },
90989777 },
90999778 .{
91009779 .name = "OpImageBoxFilterQCOM",
91019780 .opcode = 4481,
9102 .operands = &[_]Operand{
9103 .{ .kind = .IdResultType, .quantifier = .required },
9104 .{ .kind = .IdResult, .quantifier = .required },
9105 .{ .kind = .IdRef, .quantifier = .required },
9106 .{ .kind = .IdRef, .quantifier = .required },
9107 .{ .kind = .IdRef, .quantifier = .required },
9781 .operands = &.{
9782 .{ .kind = .id_result_type, .quantifier = .required },
9783 .{ .kind = .id_result, .quantifier = .required },
9784 .{ .kind = .id_ref, .quantifier = .required },
9785 .{ .kind = .id_ref, .quantifier = .required },
9786 .{ .kind = .id_ref, .quantifier = .required },
91089787 },
91099788 },
91109789 .{
91119790 .name = "OpImageBlockMatchSSDQCOM",
91129791 .opcode = 4482,
9113 .operands = &[_]Operand{
9114 .{ .kind = .IdResultType, .quantifier = .required },
9115 .{ .kind = .IdResult, .quantifier = .required },
9116 .{ .kind = .IdRef, .quantifier = .required },
9117 .{ .kind = .IdRef, .quantifier = .required },
9118 .{ .kind = .IdRef, .quantifier = .required },
9119 .{ .kind = .IdRef, .quantifier = .required },
9120 .{ .kind = .IdRef, .quantifier = .required },
9792 .operands = &.{
9793 .{ .kind = .id_result_type, .quantifier = .required },
9794 .{ .kind = .id_result, .quantifier = .required },
9795 .{ .kind = .id_ref, .quantifier = .required },
9796 .{ .kind = .id_ref, .quantifier = .required },
9797 .{ .kind = .id_ref, .quantifier = .required },
9798 .{ .kind = .id_ref, .quantifier = .required },
9799 .{ .kind = .id_ref, .quantifier = .required },
91219800 },
91229801 },
91239802 .{
91249803 .name = "OpImageBlockMatchSADQCOM",
91259804 .opcode = 4483,
9126 .operands = &[_]Operand{
9127 .{ .kind = .IdResultType, .quantifier = .required },
9128 .{ .kind = .IdResult, .quantifier = .required },
9129 .{ .kind = .IdRef, .quantifier = .required },
9130 .{ .kind = .IdRef, .quantifier = .required },
9131 .{ .kind = .IdRef, .quantifier = .required },
9132 .{ .kind = .IdRef, .quantifier = .required },
9133 .{ .kind = .IdRef, .quantifier = .required },
9805 .operands = &.{
9806 .{ .kind = .id_result_type, .quantifier = .required },
9807 .{ .kind = .id_result, .quantifier = .required },
9808 .{ .kind = .id_ref, .quantifier = .required },
9809 .{ .kind = .id_ref, .quantifier = .required },
9810 .{ .kind = .id_ref, .quantifier = .required },
9811 .{ .kind = .id_ref, .quantifier = .required },
9812 .{ .kind = .id_ref, .quantifier = .required },
91349813 },
91359814 },
91369815 .{
91379816 .name = "OpImageBlockMatchWindowSSDQCOM",
91389817 .opcode = 4500,
9139 .operands = &[_]Operand{
9140 .{ .kind = .IdResultType, .quantifier = .required },
9141 .{ .kind = .IdResult, .quantifier = .required },
9142 .{ .kind = .IdRef, .quantifier = .required },
9143 .{ .kind = .IdRef, .quantifier = .required },
9144 .{ .kind = .IdRef, .quantifier = .required },
9145 .{ .kind = .IdRef, .quantifier = .required },
9146 .{ .kind = .IdRef, .quantifier = .required },
9818 .operands = &.{
9819 .{ .kind = .id_result_type, .quantifier = .required },
9820 .{ .kind = .id_result, .quantifier = .required },
9821 .{ .kind = .id_ref, .quantifier = .required },
9822 .{ .kind = .id_ref, .quantifier = .required },
9823 .{ .kind = .id_ref, .quantifier = .required },
9824 .{ .kind = .id_ref, .quantifier = .required },
9825 .{ .kind = .id_ref, .quantifier = .required },
91479826 },
91489827 },
91499828 .{
91509829 .name = "OpImageBlockMatchWindowSADQCOM",
91519830 .opcode = 4501,
9152 .operands = &[_]Operand{
9153 .{ .kind = .IdResultType, .quantifier = .required },
9154 .{ .kind = .IdResult, .quantifier = .required },
9155 .{ .kind = .IdRef, .quantifier = .required },
9156 .{ .kind = .IdRef, .quantifier = .required },
9157 .{ .kind = .IdRef, .quantifier = .required },
9158 .{ .kind = .IdRef, .quantifier = .required },
9159 .{ .kind = .IdRef, .quantifier = .required },
9831 .operands = &.{
9832 .{ .kind = .id_result_type, .quantifier = .required },
9833 .{ .kind = .id_result, .quantifier = .required },
9834 .{ .kind = .id_ref, .quantifier = .required },
9835 .{ .kind = .id_ref, .quantifier = .required },
9836 .{ .kind = .id_ref, .quantifier = .required },
9837 .{ .kind = .id_ref, .quantifier = .required },
9838 .{ .kind = .id_ref, .quantifier = .required },
91609839 },
91619840 },
91629841 .{
91639842 .name = "OpImageBlockMatchGatherSSDQCOM",
91649843 .opcode = 4502,
9165 .operands = &[_]Operand{
9166 .{ .kind = .IdResultType, .quantifier = .required },
9167 .{ .kind = .IdResult, .quantifier = .required },
9168 .{ .kind = .IdRef, .quantifier = .required },
9169 .{ .kind = .IdRef, .quantifier = .required },
9170 .{ .kind = .IdRef, .quantifier = .required },
9171 .{ .kind = .IdRef, .quantifier = .required },
9172 .{ .kind = .IdRef, .quantifier = .required },
9844 .operands = &.{
9845 .{ .kind = .id_result_type, .quantifier = .required },
9846 .{ .kind = .id_result, .quantifier = .required },
9847 .{ .kind = .id_ref, .quantifier = .required },
9848 .{ .kind = .id_ref, .quantifier = .required },
9849 .{ .kind = .id_ref, .quantifier = .required },
9850 .{ .kind = .id_ref, .quantifier = .required },
9851 .{ .kind = .id_ref, .quantifier = .required },
91739852 },
91749853 },
91759854 .{
91769855 .name = "OpImageBlockMatchGatherSADQCOM",
91779856 .opcode = 4503,
9178 .operands = &[_]Operand{
9179 .{ .kind = .IdResultType, .quantifier = .required },
9180 .{ .kind = .IdResult, .quantifier = .required },
9181 .{ .kind = .IdRef, .quantifier = .required },
9182 .{ .kind = .IdRef, .quantifier = .required },
9183 .{ .kind = .IdRef, .quantifier = .required },
9184 .{ .kind = .IdRef, .quantifier = .required },
9185 .{ .kind = .IdRef, .quantifier = .required },
9857 .operands = &.{
9858 .{ .kind = .id_result_type, .quantifier = .required },
9859 .{ .kind = .id_result, .quantifier = .required },
9860 .{ .kind = .id_ref, .quantifier = .required },
9861 .{ .kind = .id_ref, .quantifier = .required },
9862 .{ .kind = .id_ref, .quantifier = .required },
9863 .{ .kind = .id_ref, .quantifier = .required },
9864 .{ .kind = .id_ref, .quantifier = .required },
91869865 },
91879866 },
91889867 .{
91899868 .name = "OpGroupIAddNonUniformAMD",
91909869 .opcode = 5000,
9191 .operands = &[_]Operand{
9192 .{ .kind = .IdResultType, .quantifier = .required },
9193 .{ .kind = .IdResult, .quantifier = .required },
9194 .{ .kind = .IdScope, .quantifier = .required },
9195 .{ .kind = .GroupOperation, .quantifier = .required },
9196 .{ .kind = .IdRef, .quantifier = .required },
9870 .operands = &.{
9871 .{ .kind = .id_result_type, .quantifier = .required },
9872 .{ .kind = .id_result, .quantifier = .required },
9873 .{ .kind = .id_scope, .quantifier = .required },
9874 .{ .kind = .group_operation, .quantifier = .required },
9875 .{ .kind = .id_ref, .quantifier = .required },
91979876 },
91989877 },
91999878 .{
92009879 .name = "OpGroupFAddNonUniformAMD",
92019880 .opcode = 5001,
9202 .operands = &[_]Operand{
9203 .{ .kind = .IdResultType, .quantifier = .required },
9204 .{ .kind = .IdResult, .quantifier = .required },
9205 .{ .kind = .IdScope, .quantifier = .required },
9206 .{ .kind = .GroupOperation, .quantifier = .required },
9207 .{ .kind = .IdRef, .quantifier = .required },
9881 .operands = &.{
9882 .{ .kind = .id_result_type, .quantifier = .required },
9883 .{ .kind = .id_result, .quantifier = .required },
9884 .{ .kind = .id_scope, .quantifier = .required },
9885 .{ .kind = .group_operation, .quantifier = .required },
9886 .{ .kind = .id_ref, .quantifier = .required },
92089887 },
92099888 },
92109889 .{
92119890 .name = "OpGroupFMinNonUniformAMD",
92129891 .opcode = 5002,
9213 .operands = &[_]Operand{
9214 .{ .kind = .IdResultType, .quantifier = .required },
9215 .{ .kind = .IdResult, .quantifier = .required },
9216 .{ .kind = .IdScope, .quantifier = .required },
9217 .{ .kind = .GroupOperation, .quantifier = .required },
9218 .{ .kind = .IdRef, .quantifier = .required },
9892 .operands = &.{
9893 .{ .kind = .id_result_type, .quantifier = .required },
9894 .{ .kind = .id_result, .quantifier = .required },
9895 .{ .kind = .id_scope, .quantifier = .required },
9896 .{ .kind = .group_operation, .quantifier = .required },
9897 .{ .kind = .id_ref, .quantifier = .required },
92199898 },
92209899 },
92219900 .{
92229901 .name = "OpGroupUMinNonUniformAMD",
92239902 .opcode = 5003,
9224 .operands = &[_]Operand{
9225 .{ .kind = .IdResultType, .quantifier = .required },
9226 .{ .kind = .IdResult, .quantifier = .required },
9227 .{ .kind = .IdScope, .quantifier = .required },
9228 .{ .kind = .GroupOperation, .quantifier = .required },
9229 .{ .kind = .IdRef, .quantifier = .required },
9903 .operands = &.{
9904 .{ .kind = .id_result_type, .quantifier = .required },
9905 .{ .kind = .id_result, .quantifier = .required },
9906 .{ .kind = .id_scope, .quantifier = .required },
9907 .{ .kind = .group_operation, .quantifier = .required },
9908 .{ .kind = .id_ref, .quantifier = .required },
92309909 },
92319910 },
92329911 .{
92339912 .name = "OpGroupSMinNonUniformAMD",
92349913 .opcode = 5004,
9235 .operands = &[_]Operand{
9236 .{ .kind = .IdResultType, .quantifier = .required },
9237 .{ .kind = .IdResult, .quantifier = .required },
9238 .{ .kind = .IdScope, .quantifier = .required },
9239 .{ .kind = .GroupOperation, .quantifier = .required },
9240 .{ .kind = .IdRef, .quantifier = .required },
9914 .operands = &.{
9915 .{ .kind = .id_result_type, .quantifier = .required },
9916 .{ .kind = .id_result, .quantifier = .required },
9917 .{ .kind = .id_scope, .quantifier = .required },
9918 .{ .kind = .group_operation, .quantifier = .required },
9919 .{ .kind = .id_ref, .quantifier = .required },
92419920 },
92429921 },
92439922 .{
92449923 .name = "OpGroupFMaxNonUniformAMD",
92459924 .opcode = 5005,
9246 .operands = &[_]Operand{
9247 .{ .kind = .IdResultType, .quantifier = .required },
9248 .{ .kind = .IdResult, .quantifier = .required },
9249 .{ .kind = .IdScope, .quantifier = .required },
9250 .{ .kind = .GroupOperation, .quantifier = .required },
9251 .{ .kind = .IdRef, .quantifier = .required },
9925 .operands = &.{
9926 .{ .kind = .id_result_type, .quantifier = .required },
9927 .{ .kind = .id_result, .quantifier = .required },
9928 .{ .kind = .id_scope, .quantifier = .required },
9929 .{ .kind = .group_operation, .quantifier = .required },
9930 .{ .kind = .id_ref, .quantifier = .required },
92529931 },
92539932 },
92549933 .{
92559934 .name = "OpGroupUMaxNonUniformAMD",
92569935 .opcode = 5006,
9257 .operands = &[_]Operand{
9258 .{ .kind = .IdResultType, .quantifier = .required },
9259 .{ .kind = .IdResult, .quantifier = .required },
9260 .{ .kind = .IdScope, .quantifier = .required },
9261 .{ .kind = .GroupOperation, .quantifier = .required },
9262 .{ .kind = .IdRef, .quantifier = .required },
9936 .operands = &.{
9937 .{ .kind = .id_result_type, .quantifier = .required },
9938 .{ .kind = .id_result, .quantifier = .required },
9939 .{ .kind = .id_scope, .quantifier = .required },
9940 .{ .kind = .group_operation, .quantifier = .required },
9941 .{ .kind = .id_ref, .quantifier = .required },
92639942 },
92649943 },
92659944 .{
92669945 .name = "OpGroupSMaxNonUniformAMD",
92679946 .opcode = 5007,
9268 .operands = &[_]Operand{
9269 .{ .kind = .IdResultType, .quantifier = .required },
9270 .{ .kind = .IdResult, .quantifier = .required },
9271 .{ .kind = .IdScope, .quantifier = .required },
9272 .{ .kind = .GroupOperation, .quantifier = .required },
9273 .{ .kind = .IdRef, .quantifier = .required },
9947 .operands = &.{
9948 .{ .kind = .id_result_type, .quantifier = .required },
9949 .{ .kind = .id_result, .quantifier = .required },
9950 .{ .kind = .id_scope, .quantifier = .required },
9951 .{ .kind = .group_operation, .quantifier = .required },
9952 .{ .kind = .id_ref, .quantifier = .required },
92749953 },
92759954 },
92769955 .{
92779956 .name = "OpFragmentMaskFetchAMD",
92789957 .opcode = 5011,
9279 .operands = &[_]Operand{
9280 .{ .kind = .IdResultType, .quantifier = .required },
9281 .{ .kind = .IdResult, .quantifier = .required },
9282 .{ .kind = .IdRef, .quantifier = .required },
9283 .{ .kind = .IdRef, .quantifier = .required },
9958 .operands = &.{
9959 .{ .kind = .id_result_type, .quantifier = .required },
9960 .{ .kind = .id_result, .quantifier = .required },
9961 .{ .kind = .id_ref, .quantifier = .required },
9962 .{ .kind = .id_ref, .quantifier = .required },
92849963 },
92859964 },
92869965 .{
92879966 .name = "OpFragmentFetchAMD",
92889967 .opcode = 5012,
9289 .operands = &[_]Operand{
9290 .{ .kind = .IdResultType, .quantifier = .required },
9291 .{ .kind = .IdResult, .quantifier = .required },
9292 .{ .kind = .IdRef, .quantifier = .required },
9293 .{ .kind = .IdRef, .quantifier = .required },
9294 .{ .kind = .IdRef, .quantifier = .required },
9968 .operands = &.{
9969 .{ .kind = .id_result_type, .quantifier = .required },
9970 .{ .kind = .id_result, .quantifier = .required },
9971 .{ .kind = .id_ref, .quantifier = .required },
9972 .{ .kind = .id_ref, .quantifier = .required },
9973 .{ .kind = .id_ref, .quantifier = .required },
92959974 },
92969975 },
92979976 .{
92989977 .name = "OpReadClockKHR",
92999978 .opcode = 5056,
9300 .operands = &[_]Operand{
9301 .{ .kind = .IdResultType, .quantifier = .required },
9302 .{ .kind = .IdResult, .quantifier = .required },
9303 .{ .kind = .IdScope, .quantifier = .required },
9979 .operands = &.{
9980 .{ .kind = .id_result_type, .quantifier = .required },
9981 .{ .kind = .id_result, .quantifier = .required },
9982 .{ .kind = .id_scope, .quantifier = .required },
93049983 },
93059984 },
93069985 .{
9307 .name = "OpFinalizeNodePayloadsAMDX",
9986 .name = "OpAllocateNodePayloadsAMDX",
9987 .opcode = 5074,
9988 .operands = &.{
9989 .{ .kind = .id_result_type, .quantifier = .required },
9990 .{ .kind = .id_result, .quantifier = .required },
9991 .{ .kind = .id_scope, .quantifier = .required },
9992 .{ .kind = .id_ref, .quantifier = .required },
9993 .{ .kind = .id_ref, .quantifier = .required },
9994 },
9995 },
9996 .{
9997 .name = "OpEnqueueNodePayloadsAMDX",
93089998 .opcode = 5075,
9309 .operands = &[_]Operand{
9310 .{ .kind = .IdRef, .quantifier = .required },
9999 .operands = &.{
10000 .{ .kind = .id_ref, .quantifier = .required },
10001 },
10002 },
10003 .{
10004 .name = "OpTypeNodePayloadArrayAMDX",
10005 .opcode = 5076,
10006 .operands = &.{
10007 .{ .kind = .id_result, .quantifier = .required },
10008 .{ .kind = .id_ref, .quantifier = .required },
931110009 },
931210010 },
931310011 .{
931410012 .name = "OpFinishWritingNodePayloadAMDX",
931510013 .opcode = 5078,
9316 .operands = &[_]Operand{
9317 .{ .kind = .IdResultType, .quantifier = .required },
9318 .{ .kind = .IdResult, .quantifier = .required },
9319 .{ .kind = .IdRef, .quantifier = .required },
10014 .operands = &.{
10015 .{ .kind = .id_result_type, .quantifier = .required },
10016 .{ .kind = .id_result, .quantifier = .required },
10017 .{ .kind = .id_ref, .quantifier = .required },
932010018 },
932110019 },
932210020 .{
9323 .name = "OpInitializeNodePayloadsAMDX",
10021 .name = "OpNodePayloadArrayLengthAMDX",
932410022 .opcode = 5090,
9325 .operands = &[_]Operand{
9326 .{ .kind = .IdRef, .quantifier = .required },
9327 .{ .kind = .IdScope, .quantifier = .required },
9328 .{ .kind = .IdRef, .quantifier = .required },
9329 .{ .kind = .IdRef, .quantifier = .required },
10023 .operands = &.{
10024 .{ .kind = .id_result_type, .quantifier = .required },
10025 .{ .kind = .id_result, .quantifier = .required },
10026 .{ .kind = .id_ref, .quantifier = .required },
10027 },
10028 },
10029 .{
10030 .name = "OpIsNodePayloadValidAMDX",
10031 .opcode = 5101,
10032 .operands = &.{
10033 .{ .kind = .id_result_type, .quantifier = .required },
10034 .{ .kind = .id_result, .quantifier = .required },
10035 .{ .kind = .id_ref, .quantifier = .required },
10036 .{ .kind = .id_ref, .quantifier = .required },
10037 },
10038 },
10039 .{
10040 .name = "OpConstantStringAMDX",
10041 .opcode = 5103,
10042 .operands = &.{
10043 .{ .kind = .id_result, .quantifier = .required },
10044 .{ .kind = .literal_string, .quantifier = .required },
10045 },
10046 },
10047 .{
10048 .name = "OpSpecConstantStringAMDX",
10049 .opcode = 5104,
10050 .operands = &.{
10051 .{ .kind = .id_result, .quantifier = .required },
10052 .{ .kind = .literal_string, .quantifier = .required },
933010053 },
933110054 },
933210055 .{
933310056 .name = "OpGroupNonUniformQuadAllKHR",
933410057 .opcode = 5110,
9335 .operands = &[_]Operand{
9336 .{ .kind = .IdResultType, .quantifier = .required },
9337 .{ .kind = .IdResult, .quantifier = .required },
9338 .{ .kind = .IdRef, .quantifier = .required },
10058 .operands = &.{
10059 .{ .kind = .id_result_type, .quantifier = .required },
10060 .{ .kind = .id_result, .quantifier = .required },
10061 .{ .kind = .id_ref, .quantifier = .required },
933910062 },
934010063 },
934110064 .{
934210065 .name = "OpGroupNonUniformQuadAnyKHR",
934310066 .opcode = 5111,
9344 .operands = &[_]Operand{
9345 .{ .kind = .IdResultType, .quantifier = .required },
9346 .{ .kind = .IdResult, .quantifier = .required },
9347 .{ .kind = .IdRef, .quantifier = .required },
10067 .operands = &.{
10068 .{ .kind = .id_result_type, .quantifier = .required },
10069 .{ .kind = .id_result, .quantifier = .required },
10070 .{ .kind = .id_ref, .quantifier = .required },
934810071 },
934910072 },
935010073 .{
935110074 .name = "OpHitObjectRecordHitMotionNV",
935210075 .opcode = 5249,
9353 .operands = &[_]Operand{
9354 .{ .kind = .IdRef, .quantifier = .required },
9355 .{ .kind = .IdRef, .quantifier = .required },
9356 .{ .kind = .IdRef, .quantifier = .required },
9357 .{ .kind = .IdRef, .quantifier = .required },
9358 .{ .kind = .IdRef, .quantifier = .required },
9359 .{ .kind = .IdRef, .quantifier = .required },
9360 .{ .kind = .IdRef, .quantifier = .required },
9361 .{ .kind = .IdRef, .quantifier = .required },
9362 .{ .kind = .IdRef, .quantifier = .required },
9363 .{ .kind = .IdRef, .quantifier = .required },
9364 .{ .kind = .IdRef, .quantifier = .required },
9365 .{ .kind = .IdRef, .quantifier = .required },
9366 .{ .kind = .IdRef, .quantifier = .required },
9367 .{ .kind = .IdRef, .quantifier = .required },
10076 .operands = &.{
10077 .{ .kind = .id_ref, .quantifier = .required },
10078 .{ .kind = .id_ref, .quantifier = .required },
10079 .{ .kind = .id_ref, .quantifier = .required },
10080 .{ .kind = .id_ref, .quantifier = .required },
10081 .{ .kind = .id_ref, .quantifier = .required },
10082 .{ .kind = .id_ref, .quantifier = .required },
10083 .{ .kind = .id_ref, .quantifier = .required },
10084 .{ .kind = .id_ref, .quantifier = .required },
10085 .{ .kind = .id_ref, .quantifier = .required },
10086 .{ .kind = .id_ref, .quantifier = .required },
10087 .{ .kind = .id_ref, .quantifier = .required },
10088 .{ .kind = .id_ref, .quantifier = .required },
10089 .{ .kind = .id_ref, .quantifier = .required },
10090 .{ .kind = .id_ref, .quantifier = .required },
936810091 },
936910092 },
937010093 .{
937110094 .name = "OpHitObjectRecordHitWithIndexMotionNV",
937210095 .opcode = 5250,
9373 .operands = &[_]Operand{
9374 .{ .kind = .IdRef, .quantifier = .required },
9375 .{ .kind = .IdRef, .quantifier = .required },
9376 .{ .kind = .IdRef, .quantifier = .required },
9377 .{ .kind = .IdRef, .quantifier = .required },
9378 .{ .kind = .IdRef, .quantifier = .required },
9379 .{ .kind = .IdRef, .quantifier = .required },
9380 .{ .kind = .IdRef, .quantifier = .required },
9381 .{ .kind = .IdRef, .quantifier = .required },
9382 .{ .kind = .IdRef, .quantifier = .required },
9383 .{ .kind = .IdRef, .quantifier = .required },
9384 .{ .kind = .IdRef, .quantifier = .required },
9385 .{ .kind = .IdRef, .quantifier = .required },
9386 .{ .kind = .IdRef, .quantifier = .required },
10096 .operands = &.{
10097 .{ .kind = .id_ref, .quantifier = .required },
10098 .{ .kind = .id_ref, .quantifier = .required },
10099 .{ .kind = .id_ref, .quantifier = .required },
10100 .{ .kind = .id_ref, .quantifier = .required },
10101 .{ .kind = .id_ref, .quantifier = .required },
10102 .{ .kind = .id_ref, .quantifier = .required },
10103 .{ .kind = .id_ref, .quantifier = .required },
10104 .{ .kind = .id_ref, .quantifier = .required },
10105 .{ .kind = .id_ref, .quantifier = .required },
10106 .{ .kind = .id_ref, .quantifier = .required },
10107 .{ .kind = .id_ref, .quantifier = .required },
10108 .{ .kind = .id_ref, .quantifier = .required },
10109 .{ .kind = .id_ref, .quantifier = .required },
938710110 },
938810111 },
938910112 .{
939010113 .name = "OpHitObjectRecordMissMotionNV",
939110114 .opcode = 5251,
9392 .operands = &[_]Operand{
9393 .{ .kind = .IdRef, .quantifier = .required },
9394 .{ .kind = .IdRef, .quantifier = .required },
9395 .{ .kind = .IdRef, .quantifier = .required },
9396 .{ .kind = .IdRef, .quantifier = .required },
9397 .{ .kind = .IdRef, .quantifier = .required },
9398 .{ .kind = .IdRef, .quantifier = .required },
9399 .{ .kind = .IdRef, .quantifier = .required },
10115 .operands = &.{
10116 .{ .kind = .id_ref, .quantifier = .required },
10117 .{ .kind = .id_ref, .quantifier = .required },
10118 .{ .kind = .id_ref, .quantifier = .required },
10119 .{ .kind = .id_ref, .quantifier = .required },
10120 .{ .kind = .id_ref, .quantifier = .required },
10121 .{ .kind = .id_ref, .quantifier = .required },
10122 .{ .kind = .id_ref, .quantifier = .required },
940010123 },
940110124 },
940210125 .{
940310126 .name = "OpHitObjectGetWorldToObjectNV",
940410127 .opcode = 5252,
9405 .operands = &[_]Operand{
9406 .{ .kind = .IdResultType, .quantifier = .required },
9407 .{ .kind = .IdResult, .quantifier = .required },
9408 .{ .kind = .IdRef, .quantifier = .required },
10128 .operands = &.{
10129 .{ .kind = .id_result_type, .quantifier = .required },
10130 .{ .kind = .id_result, .quantifier = .required },
10131 .{ .kind = .id_ref, .quantifier = .required },
940910132 },
941010133 },
941110134 .{
941210135 .name = "OpHitObjectGetObjectToWorldNV",
941310136 .opcode = 5253,
9414 .operands = &[_]Operand{
9415 .{ .kind = .IdResultType, .quantifier = .required },
9416 .{ .kind = .IdResult, .quantifier = .required },
9417 .{ .kind = .IdRef, .quantifier = .required },
10137 .operands = &.{
10138 .{ .kind = .id_result_type, .quantifier = .required },
10139 .{ .kind = .id_result, .quantifier = .required },
10140 .{ .kind = .id_ref, .quantifier = .required },
941810141 },
941910142 },
942010143 .{
942110144 .name = "OpHitObjectGetObjectRayDirectionNV",
942210145 .opcode = 5254,
9423 .operands = &[_]Operand{
9424 .{ .kind = .IdResultType, .quantifier = .required },
9425 .{ .kind = .IdResult, .quantifier = .required },
9426 .{ .kind = .IdRef, .quantifier = .required },
10146 .operands = &.{
10147 .{ .kind = .id_result_type, .quantifier = .required },
10148 .{ .kind = .id_result, .quantifier = .required },
10149 .{ .kind = .id_ref, .quantifier = .required },
942710150 },
942810151 },
942910152 .{
943010153 .name = "OpHitObjectGetObjectRayOriginNV",
943110154 .opcode = 5255,
9432 .operands = &[_]Operand{
9433 .{ .kind = .IdResultType, .quantifier = .required },
9434 .{ .kind = .IdResult, .quantifier = .required },
9435 .{ .kind = .IdRef, .quantifier = .required },
10155 .operands = &.{
10156 .{ .kind = .id_result_type, .quantifier = .required },
10157 .{ .kind = .id_result, .quantifier = .required },
10158 .{ .kind = .id_ref, .quantifier = .required },
943610159 },
943710160 },
943810161 .{
943910162 .name = "OpHitObjectTraceRayMotionNV",
944010163 .opcode = 5256,
9441 .operands = &[_]Operand{
9442 .{ .kind = .IdRef, .quantifier = .required },
9443 .{ .kind = .IdRef, .quantifier = .required },
9444 .{ .kind = .IdRef, .quantifier = .required },
9445 .{ .kind = .IdRef, .quantifier = .required },
9446 .{ .kind = .IdRef, .quantifier = .required },
9447 .{ .kind = .IdRef, .quantifier = .required },
9448 .{ .kind = .IdRef, .quantifier = .required },
9449 .{ .kind = .IdRef, .quantifier = .required },
9450 .{ .kind = .IdRef, .quantifier = .required },
9451 .{ .kind = .IdRef, .quantifier = .required },
9452 .{ .kind = .IdRef, .quantifier = .required },
9453 .{ .kind = .IdRef, .quantifier = .required },
9454 .{ .kind = .IdRef, .quantifier = .required },
10164 .operands = &.{
10165 .{ .kind = .id_ref, .quantifier = .required },
10166 .{ .kind = .id_ref, .quantifier = .required },
10167 .{ .kind = .id_ref, .quantifier = .required },
10168 .{ .kind = .id_ref, .quantifier = .required },
10169 .{ .kind = .id_ref, .quantifier = .required },
10170 .{ .kind = .id_ref, .quantifier = .required },
10171 .{ .kind = .id_ref, .quantifier = .required },
10172 .{ .kind = .id_ref, .quantifier = .required },
10173 .{ .kind = .id_ref, .quantifier = .required },
10174 .{ .kind = .id_ref, .quantifier = .required },
10175 .{ .kind = .id_ref, .quantifier = .required },
10176 .{ .kind = .id_ref, .quantifier = .required },
10177 .{ .kind = .id_ref, .quantifier = .required },
945510178 },
945610179 },
945710180 .{
945810181 .name = "OpHitObjectGetShaderRecordBufferHandleNV",
945910182 .opcode = 5257,
9460 .operands = &[_]Operand{
9461 .{ .kind = .IdResultType, .quantifier = .required },
9462 .{ .kind = .IdResult, .quantifier = .required },
9463 .{ .kind = .IdRef, .quantifier = .required },
10183 .operands = &.{
10184 .{ .kind = .id_result_type, .quantifier = .required },
10185 .{ .kind = .id_result, .quantifier = .required },
10186 .{ .kind = .id_ref, .quantifier = .required },
946410187 },
946510188 },
946610189 .{
946710190 .name = "OpHitObjectGetShaderBindingTableRecordIndexNV",
946810191 .opcode = 5258,
9469 .operands = &[_]Operand{
9470 .{ .kind = .IdResultType, .quantifier = .required },
9471 .{ .kind = .IdResult, .quantifier = .required },
9472 .{ .kind = .IdRef, .quantifier = .required },
10192 .operands = &.{
10193 .{ .kind = .id_result_type, .quantifier = .required },
10194 .{ .kind = .id_result, .quantifier = .required },
10195 .{ .kind = .id_ref, .quantifier = .required },
947310196 },
947410197 },
947510198 .{
947610199 .name = "OpHitObjectRecordEmptyNV",
947710200 .opcode = 5259,
9478 .operands = &[_]Operand{
9479 .{ .kind = .IdRef, .quantifier = .required },
10201 .operands = &.{
10202 .{ .kind = .id_ref, .quantifier = .required },
948010203 },
948110204 },
948210205 .{
948310206 .name = "OpHitObjectTraceRayNV",
948410207 .opcode = 5260,
9485 .operands = &[_]Operand{
9486 .{ .kind = .IdRef, .quantifier = .required },
9487 .{ .kind = .IdRef, .quantifier = .required },
9488 .{ .kind = .IdRef, .quantifier = .required },
9489 .{ .kind = .IdRef, .quantifier = .required },
9490 .{ .kind = .IdRef, .quantifier = .required },
9491 .{ .kind = .IdRef, .quantifier = .required },
9492 .{ .kind = .IdRef, .quantifier = .required },
9493 .{ .kind = .IdRef, .quantifier = .required },
9494 .{ .kind = .IdRef, .quantifier = .required },
9495 .{ .kind = .IdRef, .quantifier = .required },
9496 .{ .kind = .IdRef, .quantifier = .required },
9497 .{ .kind = .IdRef, .quantifier = .required },
10208 .operands = &.{
10209 .{ .kind = .id_ref, .quantifier = .required },
10210 .{ .kind = .id_ref, .quantifier = .required },
10211 .{ .kind = .id_ref, .quantifier = .required },
10212 .{ .kind = .id_ref, .quantifier = .required },
10213 .{ .kind = .id_ref, .quantifier = .required },
10214 .{ .kind = .id_ref, .quantifier = .required },
10215 .{ .kind = .id_ref, .quantifier = .required },
10216 .{ .kind = .id_ref, .quantifier = .required },
10217 .{ .kind = .id_ref, .quantifier = .required },
10218 .{ .kind = .id_ref, .quantifier = .required },
10219 .{ .kind = .id_ref, .quantifier = .required },
10220 .{ .kind = .id_ref, .quantifier = .required },
949810221 },
949910222 },
950010223 .{
950110224 .name = "OpHitObjectRecordHitNV",
950210225 .opcode = 5261,
9503 .operands = &[_]Operand{
9504 .{ .kind = .IdRef, .quantifier = .required },
9505 .{ .kind = .IdRef, .quantifier = .required },
9506 .{ .kind = .IdRef, .quantifier = .required },
9507 .{ .kind = .IdRef, .quantifier = .required },
9508 .{ .kind = .IdRef, .quantifier = .required },
9509 .{ .kind = .IdRef, .quantifier = .required },
9510 .{ .kind = .IdRef, .quantifier = .required },
9511 .{ .kind = .IdRef, .quantifier = .required },
9512 .{ .kind = .IdRef, .quantifier = .required },
9513 .{ .kind = .IdRef, .quantifier = .required },
9514 .{ .kind = .IdRef, .quantifier = .required },
9515 .{ .kind = .IdRef, .quantifier = .required },
9516 .{ .kind = .IdRef, .quantifier = .required },
10226 .operands = &.{
10227 .{ .kind = .id_ref, .quantifier = .required },
10228 .{ .kind = .id_ref, .quantifier = .required },
10229 .{ .kind = .id_ref, .quantifier = .required },
10230 .{ .kind = .id_ref, .quantifier = .required },
10231 .{ .kind = .id_ref, .quantifier = .required },
10232 .{ .kind = .id_ref, .quantifier = .required },
10233 .{ .kind = .id_ref, .quantifier = .required },
10234 .{ .kind = .id_ref, .quantifier = .required },
10235 .{ .kind = .id_ref, .quantifier = .required },
10236 .{ .kind = .id_ref, .quantifier = .required },
10237 .{ .kind = .id_ref, .quantifier = .required },
10238 .{ .kind = .id_ref, .quantifier = .required },
10239 .{ .kind = .id_ref, .quantifier = .required },
951710240 },
951810241 },
951910242 .{
952010243 .name = "OpHitObjectRecordHitWithIndexNV",
952110244 .opcode = 5262,
9522 .operands = &[_]Operand{
9523 .{ .kind = .IdRef, .quantifier = .required },
9524 .{ .kind = .IdRef, .quantifier = .required },
9525 .{ .kind = .IdRef, .quantifier = .required },
9526 .{ .kind = .IdRef, .quantifier = .required },
9527 .{ .kind = .IdRef, .quantifier = .required },
9528 .{ .kind = .IdRef, .quantifier = .required },
9529 .{ .kind = .IdRef, .quantifier = .required },
9530 .{ .kind = .IdRef, .quantifier = .required },
9531 .{ .kind = .IdRef, .quantifier = .required },
9532 .{ .kind = .IdRef, .quantifier = .required },
9533 .{ .kind = .IdRef, .quantifier = .required },
9534 .{ .kind = .IdRef, .quantifier = .required },
10245 .operands = &.{
10246 .{ .kind = .id_ref, .quantifier = .required },
10247 .{ .kind = .id_ref, .quantifier = .required },
10248 .{ .kind = .id_ref, .quantifier = .required },
10249 .{ .kind = .id_ref, .quantifier = .required },
10250 .{ .kind = .id_ref, .quantifier = .required },
10251 .{ .kind = .id_ref, .quantifier = .required },
10252 .{ .kind = .id_ref, .quantifier = .required },
10253 .{ .kind = .id_ref, .quantifier = .required },
10254 .{ .kind = .id_ref, .quantifier = .required },
10255 .{ .kind = .id_ref, .quantifier = .required },
10256 .{ .kind = .id_ref, .quantifier = .required },
10257 .{ .kind = .id_ref, .quantifier = .required },
953510258 },
953610259 },
953710260 .{
953810261 .name = "OpHitObjectRecordMissNV",
953910262 .opcode = 5263,
9540 .operands = &[_]Operand{
9541 .{ .kind = .IdRef, .quantifier = .required },
9542 .{ .kind = .IdRef, .quantifier = .required },
9543 .{ .kind = .IdRef, .quantifier = .required },
9544 .{ .kind = .IdRef, .quantifier = .required },
9545 .{ .kind = .IdRef, .quantifier = .required },
9546 .{ .kind = .IdRef, .quantifier = .required },
10263 .operands = &.{
10264 .{ .kind = .id_ref, .quantifier = .required },
10265 .{ .kind = .id_ref, .quantifier = .required },
10266 .{ .kind = .id_ref, .quantifier = .required },
10267 .{ .kind = .id_ref, .quantifier = .required },
10268 .{ .kind = .id_ref, .quantifier = .required },
10269 .{ .kind = .id_ref, .quantifier = .required },
954710270 },
954810271 },
954910272 .{
955010273 .name = "OpHitObjectExecuteShaderNV",
955110274 .opcode = 5264,
9552 .operands = &[_]Operand{
9553 .{ .kind = .IdRef, .quantifier = .required },
9554 .{ .kind = .IdRef, .quantifier = .required },
10275 .operands = &.{
10276 .{ .kind = .id_ref, .quantifier = .required },
10277 .{ .kind = .id_ref, .quantifier = .required },
955510278 },
955610279 },
955710280 .{
955810281 .name = "OpHitObjectGetCurrentTimeNV",
955910282 .opcode = 5265,
9560 .operands = &[_]Operand{
9561 .{ .kind = .IdResultType, .quantifier = .required },
9562 .{ .kind = .IdResult, .quantifier = .required },
9563 .{ .kind = .IdRef, .quantifier = .required },
10283 .operands = &.{
10284 .{ .kind = .id_result_type, .quantifier = .required },
10285 .{ .kind = .id_result, .quantifier = .required },
10286 .{ .kind = .id_ref, .quantifier = .required },
956410287 },
956510288 },
956610289 .{
956710290 .name = "OpHitObjectGetAttributesNV",
956810291 .opcode = 5266,
9569 .operands = &[_]Operand{
9570 .{ .kind = .IdRef, .quantifier = .required },
9571 .{ .kind = .IdRef, .quantifier = .required },
10292 .operands = &.{
10293 .{ .kind = .id_ref, .quantifier = .required },
10294 .{ .kind = .id_ref, .quantifier = .required },
957210295 },
957310296 },
957410297 .{
957510298 .name = "OpHitObjectGetHitKindNV",
957610299 .opcode = 5267,
9577 .operands = &[_]Operand{
9578 .{ .kind = .IdResultType, .quantifier = .required },
9579 .{ .kind = .IdResult, .quantifier = .required },
9580 .{ .kind = .IdRef, .quantifier = .required },
10300 .operands = &.{
10301 .{ .kind = .id_result_type, .quantifier = .required },
10302 .{ .kind = .id_result, .quantifier = .required },
10303 .{ .kind = .id_ref, .quantifier = .required },
958110304 },
958210305 },
958310306 .{
958410307 .name = "OpHitObjectGetPrimitiveIndexNV",
958510308 .opcode = 5268,
9586 .operands = &[_]Operand{
9587 .{ .kind = .IdResultType, .quantifier = .required },
9588 .{ .kind = .IdResult, .quantifier = .required },
9589 .{ .kind = .IdRef, .quantifier = .required },
10309 .operands = &.{
10310 .{ .kind = .id_result_type, .quantifier = .required },
10311 .{ .kind = .id_result, .quantifier = .required },
10312 .{ .kind = .id_ref, .quantifier = .required },
959010313 },
959110314 },
959210315 .{
959310316 .name = "OpHitObjectGetGeometryIndexNV",
959410317 .opcode = 5269,
9595 .operands = &[_]Operand{
9596 .{ .kind = .IdResultType, .quantifier = .required },
9597 .{ .kind = .IdResult, .quantifier = .required },
9598 .{ .kind = .IdRef, .quantifier = .required },
10318 .operands = &.{
10319 .{ .kind = .id_result_type, .quantifier = .required },
10320 .{ .kind = .id_result, .quantifier = .required },
10321 .{ .kind = .id_ref, .quantifier = .required },
959910322 },
960010323 },
960110324 .{
960210325 .name = "OpHitObjectGetInstanceIdNV",
960310326 .opcode = 5270,
9604 .operands = &[_]Operand{
9605 .{ .kind = .IdResultType, .quantifier = .required },
9606 .{ .kind = .IdResult, .quantifier = .required },
9607 .{ .kind = .IdRef, .quantifier = .required },
10327 .operands = &.{
10328 .{ .kind = .id_result_type, .quantifier = .required },
10329 .{ .kind = .id_result, .quantifier = .required },
10330 .{ .kind = .id_ref, .quantifier = .required },
960810331 },
960910332 },
961010333 .{
961110334 .name = "OpHitObjectGetInstanceCustomIndexNV",
961210335 .opcode = 5271,
9613 .operands = &[_]Operand{
9614 .{ .kind = .IdResultType, .quantifier = .required },
9615 .{ .kind = .IdResult, .quantifier = .required },
9616 .{ .kind = .IdRef, .quantifier = .required },
10336 .operands = &.{
10337 .{ .kind = .id_result_type, .quantifier = .required },
10338 .{ .kind = .id_result, .quantifier = .required },
10339 .{ .kind = .id_ref, .quantifier = .required },
961710340 },
961810341 },
961910342 .{
962010343 .name = "OpHitObjectGetWorldRayDirectionNV",
962110344 .opcode = 5272,
9622 .operands = &[_]Operand{
9623 .{ .kind = .IdResultType, .quantifier = .required },
9624 .{ .kind = .IdResult, .quantifier = .required },
9625 .{ .kind = .IdRef, .quantifier = .required },
10345 .operands = &.{
10346 .{ .kind = .id_result_type, .quantifier = .required },
10347 .{ .kind = .id_result, .quantifier = .required },
10348 .{ .kind = .id_ref, .quantifier = .required },
962610349 },
962710350 },
962810351 .{
962910352 .name = "OpHitObjectGetWorldRayOriginNV",
963010353 .opcode = 5273,
9631 .operands = &[_]Operand{
9632 .{ .kind = .IdResultType, .quantifier = .required },
9633 .{ .kind = .IdResult, .quantifier = .required },
9634 .{ .kind = .IdRef, .quantifier = .required },
10354 .operands = &.{
10355 .{ .kind = .id_result_type, .quantifier = .required },
10356 .{ .kind = .id_result, .quantifier = .required },
10357 .{ .kind = .id_ref, .quantifier = .required },
963510358 },
963610359 },
963710360 .{
963810361 .name = "OpHitObjectGetRayTMaxNV",
963910362 .opcode = 5274,
9640 .operands = &[_]Operand{
9641 .{ .kind = .IdResultType, .quantifier = .required },
9642 .{ .kind = .IdResult, .quantifier = .required },
9643 .{ .kind = .IdRef, .quantifier = .required },
10363 .operands = &.{
10364 .{ .kind = .id_result_type, .quantifier = .required },
10365 .{ .kind = .id_result, .quantifier = .required },
10366 .{ .kind = .id_ref, .quantifier = .required },
964410367 },
964510368 },
964610369 .{
964710370 .name = "OpHitObjectGetRayTMinNV",
964810371 .opcode = 5275,
9649 .operands = &[_]Operand{
9650 .{ .kind = .IdResultType, .quantifier = .required },
9651 .{ .kind = .IdResult, .quantifier = .required },
9652 .{ .kind = .IdRef, .quantifier = .required },
10372 .operands = &.{
10373 .{ .kind = .id_result_type, .quantifier = .required },
10374 .{ .kind = .id_result, .quantifier = .required },
10375 .{ .kind = .id_ref, .quantifier = .required },
965310376 },
965410377 },
965510378 .{
965610379 .name = "OpHitObjectIsEmptyNV",
965710380 .opcode = 5276,
9658 .operands = &[_]Operand{
9659 .{ .kind = .IdResultType, .quantifier = .required },
9660 .{ .kind = .IdResult, .quantifier = .required },
9661 .{ .kind = .IdRef, .quantifier = .required },
10381 .operands = &.{
10382 .{ .kind = .id_result_type, .quantifier = .required },
10383 .{ .kind = .id_result, .quantifier = .required },
10384 .{ .kind = .id_ref, .quantifier = .required },
966210385 },
966310386 },
966410387 .{
966510388 .name = "OpHitObjectIsHitNV",
966610389 .opcode = 5277,
9667 .operands = &[_]Operand{
9668 .{ .kind = .IdResultType, .quantifier = .required },
9669 .{ .kind = .IdResult, .quantifier = .required },
9670 .{ .kind = .IdRef, .quantifier = .required },
10390 .operands = &.{
10391 .{ .kind = .id_result_type, .quantifier = .required },
10392 .{ .kind = .id_result, .quantifier = .required },
10393 .{ .kind = .id_ref, .quantifier = .required },
967110394 },
967210395 },
967310396 .{
967410397 .name = "OpHitObjectIsMissNV",
967510398 .opcode = 5278,
9676 .operands = &[_]Operand{
9677 .{ .kind = .IdResultType, .quantifier = .required },
9678 .{ .kind = .IdResult, .quantifier = .required },
9679 .{ .kind = .IdRef, .quantifier = .required },
10399 .operands = &.{
10400 .{ .kind = .id_result_type, .quantifier = .required },
10401 .{ .kind = .id_result, .quantifier = .required },
10402 .{ .kind = .id_ref, .quantifier = .required },
968010403 },
968110404 },
968210405 .{
968310406 .name = "OpReorderThreadWithHitObjectNV",
968410407 .opcode = 5279,
9685 .operands = &[_]Operand{
9686 .{ .kind = .IdRef, .quantifier = .required },
9687 .{ .kind = .IdRef, .quantifier = .optional },
9688 .{ .kind = .IdRef, .quantifier = .optional },
10408 .operands = &.{
10409 .{ .kind = .id_ref, .quantifier = .required },
10410 .{ .kind = .id_ref, .quantifier = .optional },
10411 .{ .kind = .id_ref, .quantifier = .optional },
968910412 },
969010413 },
969110414 .{
969210415 .name = "OpReorderThreadWithHintNV",
969310416 .opcode = 5280,
9694 .operands = &[_]Operand{
9695 .{ .kind = .IdRef, .quantifier = .required },
9696 .{ .kind = .IdRef, .quantifier = .required },
10417 .operands = &.{
10418 .{ .kind = .id_ref, .quantifier = .required },
10419 .{ .kind = .id_ref, .quantifier = .required },
969710420 },
969810421 },
969910422 .{
970010423 .name = "OpTypeHitObjectNV",
970110424 .opcode = 5281,
9702 .operands = &[_]Operand{
9703 .{ .kind = .IdResult, .quantifier = .required },
10425 .operands = &.{
10426 .{ .kind = .id_result, .quantifier = .required },
970410427 },
970510428 },
970610429 .{
970710430 .name = "OpImageSampleFootprintNV",
970810431 .opcode = 5283,
9709 .operands = &[_]Operand{
9710 .{ .kind = .IdResultType, .quantifier = .required },
9711 .{ .kind = .IdResult, .quantifier = .required },
9712 .{ .kind = .IdRef, .quantifier = .required },
9713 .{ .kind = .IdRef, .quantifier = .required },
9714 .{ .kind = .IdRef, .quantifier = .required },
9715 .{ .kind = .IdRef, .quantifier = .required },
9716 .{ .kind = .ImageOperands, .quantifier = .optional },
10432 .operands = &.{
10433 .{ .kind = .id_result_type, .quantifier = .required },
10434 .{ .kind = .id_result, .quantifier = .required },
10435 .{ .kind = .id_ref, .quantifier = .required },
10436 .{ .kind = .id_ref, .quantifier = .required },
10437 .{ .kind = .id_ref, .quantifier = .required },
10438 .{ .kind = .id_ref, .quantifier = .required },
10439 .{ .kind = .image_operands, .quantifier = .optional },
10440 },
10441 },
10442 .{
10443 .name = "OpTypeCooperativeVectorNV",
10444 .opcode = 5288,
10445 .operands = &.{
10446 .{ .kind = .id_result, .quantifier = .required },
10447 .{ .kind = .id_ref, .quantifier = .required },
10448 .{ .kind = .id_ref, .quantifier = .required },
10449 },
10450 },
10451 .{
10452 .name = "OpCooperativeVectorMatrixMulNV",
10453 .opcode = 5289,
10454 .operands = &.{
10455 .{ .kind = .id_result_type, .quantifier = .required },
10456 .{ .kind = .id_result, .quantifier = .required },
10457 .{ .kind = .id_ref, .quantifier = .required },
10458 .{ .kind = .id_ref, .quantifier = .required },
10459 .{ .kind = .id_ref, .quantifier = .required },
10460 .{ .kind = .id_ref, .quantifier = .required },
10461 .{ .kind = .id_ref, .quantifier = .required },
10462 .{ .kind = .id_ref, .quantifier = .required },
10463 .{ .kind = .id_ref, .quantifier = .required },
10464 .{ .kind = .id_ref, .quantifier = .required },
10465 .{ .kind = .id_ref, .quantifier = .required },
10466 .{ .kind = .id_ref, .quantifier = .optional },
10467 .{ .kind = .cooperative_matrix_operands, .quantifier = .optional },
10468 },
10469 },
10470 .{
10471 .name = "OpCooperativeVectorOuterProductAccumulateNV",
10472 .opcode = 5290,
10473 .operands = &.{
10474 .{ .kind = .id_ref, .quantifier = .required },
10475 .{ .kind = .id_ref, .quantifier = .required },
10476 .{ .kind = .id_ref, .quantifier = .required },
10477 .{ .kind = .id_ref, .quantifier = .required },
10478 .{ .kind = .id_ref, .quantifier = .required },
10479 .{ .kind = .id_ref, .quantifier = .required },
10480 .{ .kind = .id_ref, .quantifier = .optional },
10481 },
10482 },
10483 .{
10484 .name = "OpCooperativeVectorReduceSumAccumulateNV",
10485 .opcode = 5291,
10486 .operands = &.{
10487 .{ .kind = .id_ref, .quantifier = .required },
10488 .{ .kind = .id_ref, .quantifier = .required },
10489 .{ .kind = .id_ref, .quantifier = .required },
10490 },
10491 },
10492 .{
10493 .name = "OpCooperativeVectorMatrixMulAddNV",
10494 .opcode = 5292,
10495 .operands = &.{
10496 .{ .kind = .id_result_type, .quantifier = .required },
10497 .{ .kind = .id_result, .quantifier = .required },
10498 .{ .kind = .id_ref, .quantifier = .required },
10499 .{ .kind = .id_ref, .quantifier = .required },
10500 .{ .kind = .id_ref, .quantifier = .required },
10501 .{ .kind = .id_ref, .quantifier = .required },
10502 .{ .kind = .id_ref, .quantifier = .required },
10503 .{ .kind = .id_ref, .quantifier = .required },
10504 .{ .kind = .id_ref, .quantifier = .required },
10505 .{ .kind = .id_ref, .quantifier = .required },
10506 .{ .kind = .id_ref, .quantifier = .required },
10507 .{ .kind = .id_ref, .quantifier = .required },
10508 .{ .kind = .id_ref, .quantifier = .required },
10509 .{ .kind = .id_ref, .quantifier = .required },
10510 .{ .kind = .id_ref, .quantifier = .optional },
10511 .{ .kind = .cooperative_matrix_operands, .quantifier = .optional },
10512 },
10513 },
10514 .{
10515 .name = "OpCooperativeMatrixConvertNV",
10516 .opcode = 5293,
10517 .operands = &.{
10518 .{ .kind = .id_result_type, .quantifier = .required },
10519 .{ .kind = .id_result, .quantifier = .required },
10520 .{ .kind = .id_ref, .quantifier = .required },
971710521 },
971810522 },
971910523 .{
972010524 .name = "OpEmitMeshTasksEXT",
972110525 .opcode = 5294,
9722 .operands = &[_]Operand{
9723 .{ .kind = .IdRef, .quantifier = .required },
9724 .{ .kind = .IdRef, .quantifier = .required },
9725 .{ .kind = .IdRef, .quantifier = .required },
9726 .{ .kind = .IdRef, .quantifier = .optional },
10526 .operands = &.{
10527 .{ .kind = .id_ref, .quantifier = .required },
10528 .{ .kind = .id_ref, .quantifier = .required },
10529 .{ .kind = .id_ref, .quantifier = .required },
10530 .{ .kind = .id_ref, .quantifier = .optional },
972710531 },
972810532 },
972910533 .{
973010534 .name = "OpSetMeshOutputsEXT",
973110535 .opcode = 5295,
9732 .operands = &[_]Operand{
9733 .{ .kind = .IdRef, .quantifier = .required },
9734 .{ .kind = .IdRef, .quantifier = .required },
10536 .operands = &.{
10537 .{ .kind = .id_ref, .quantifier = .required },
10538 .{ .kind = .id_ref, .quantifier = .required },
973510539 },
973610540 },
973710541 .{
973810542 .name = "OpGroupNonUniformPartitionNV",
973910543 .opcode = 5296,
9740 .operands = &[_]Operand{
9741 .{ .kind = .IdResultType, .quantifier = .required },
9742 .{ .kind = .IdResult, .quantifier = .required },
9743 .{ .kind = .IdRef, .quantifier = .required },
10544 .operands = &.{
10545 .{ .kind = .id_result_type, .quantifier = .required },
10546 .{ .kind = .id_result, .quantifier = .required },
10547 .{ .kind = .id_ref, .quantifier = .required },
974410548 },
974510549 },
974610550 .{
974710551 .name = "OpWritePackedPrimitiveIndices4x8NV",
974810552 .opcode = 5299,
9749 .operands = &[_]Operand{
9750 .{ .kind = .IdRef, .quantifier = .required },
9751 .{ .kind = .IdRef, .quantifier = .required },
10553 .operands = &.{
10554 .{ .kind = .id_ref, .quantifier = .required },
10555 .{ .kind = .id_ref, .quantifier = .required },
975210556 },
975310557 },
975410558 .{
975510559 .name = "OpFetchMicroTriangleVertexPositionNV",
975610560 .opcode = 5300,
9757 .operands = &[_]Operand{
9758 .{ .kind = .IdResultType, .quantifier = .required },
9759 .{ .kind = .IdResult, .quantifier = .required },
9760 .{ .kind = .IdRef, .quantifier = .required },
9761 .{ .kind = .IdRef, .quantifier = .required },
9762 .{ .kind = .IdRef, .quantifier = .required },
9763 .{ .kind = .IdRef, .quantifier = .required },
9764 .{ .kind = .IdRef, .quantifier = .required },
10561 .operands = &.{
10562 .{ .kind = .id_result_type, .quantifier = .required },
10563 .{ .kind = .id_result, .quantifier = .required },
10564 .{ .kind = .id_ref, .quantifier = .required },
10565 .{ .kind = .id_ref, .quantifier = .required },
10566 .{ .kind = .id_ref, .quantifier = .required },
10567 .{ .kind = .id_ref, .quantifier = .required },
10568 .{ .kind = .id_ref, .quantifier = .required },
976510569 },
976610570 },
976710571 .{
976810572 .name = "OpFetchMicroTriangleVertexBarycentricNV",
976910573 .opcode = 5301,
9770 .operands = &[_]Operand{
9771 .{ .kind = .IdResultType, .quantifier = .required },
9772 .{ .kind = .IdResult, .quantifier = .required },
9773 .{ .kind = .IdRef, .quantifier = .required },
9774 .{ .kind = .IdRef, .quantifier = .required },
9775 .{ .kind = .IdRef, .quantifier = .required },
9776 .{ .kind = .IdRef, .quantifier = .required },
9777 .{ .kind = .IdRef, .quantifier = .required },
10574 .operands = &.{
10575 .{ .kind = .id_result_type, .quantifier = .required },
10576 .{ .kind = .id_result, .quantifier = .required },
10577 .{ .kind = .id_ref, .quantifier = .required },
10578 .{ .kind = .id_ref, .quantifier = .required },
10579 .{ .kind = .id_ref, .quantifier = .required },
10580 .{ .kind = .id_ref, .quantifier = .required },
10581 .{ .kind = .id_ref, .quantifier = .required },
977810582 },
977910583 },
978010584 .{
9781 .name = "OpReportIntersectionNV",
9782 .opcode = 5334,
9783 .operands = &[_]Operand{
9784 .{ .kind = .IdResultType, .quantifier = .required },
9785 .{ .kind = .IdResult, .quantifier = .required },
9786 .{ .kind = .IdRef, .quantifier = .required },
9787 .{ .kind = .IdRef, .quantifier = .required },
10585 .name = "OpCooperativeVectorLoadNV",
10586 .opcode = 5302,
10587 .operands = &.{
10588 .{ .kind = .id_result_type, .quantifier = .required },
10589 .{ .kind = .id_result, .quantifier = .required },
10590 .{ .kind = .id_ref, .quantifier = .required },
10591 .{ .kind = .id_ref, .quantifier = .required },
10592 .{ .kind = .memory_access, .quantifier = .optional },
10593 },
10594 },
10595 .{
10596 .name = "OpCooperativeVectorStoreNV",
10597 .opcode = 5303,
10598 .operands = &.{
10599 .{ .kind = .id_ref, .quantifier = .required },
10600 .{ .kind = .id_ref, .quantifier = .required },
10601 .{ .kind = .id_ref, .quantifier = .required },
10602 .{ .kind = .memory_access, .quantifier = .optional },
978810603 },
978910604 },
979010605 .{
979110606 .name = "OpReportIntersectionKHR",
979210607 .opcode = 5334,
9793 .operands = &[_]Operand{
9794 .{ .kind = .IdResultType, .quantifier = .required },
9795 .{ .kind = .IdResult, .quantifier = .required },
9796 .{ .kind = .IdRef, .quantifier = .required },
9797 .{ .kind = .IdRef, .quantifier = .required },
10608 .operands = &.{
10609 .{ .kind = .id_result_type, .quantifier = .required },
10610 .{ .kind = .id_result, .quantifier = .required },
10611 .{ .kind = .id_ref, .quantifier = .required },
10612 .{ .kind = .id_ref, .quantifier = .required },
979810613 },
979910614 },
980010615 .{
980110616 .name = "OpIgnoreIntersectionNV",
980210617 .opcode = 5335,
9803 .operands = &[_]Operand{},
10618 .operands = &.{},
980410619 },
980510620 .{
980610621 .name = "OpTerminateRayNV",
980710622 .opcode = 5336,
9808 .operands = &[_]Operand{},
10623 .operands = &.{},
980910624 },
981010625 .{
981110626 .name = "OpTraceNV",
981210627 .opcode = 5337,
9813 .operands = &[_]Operand{
9814 .{ .kind = .IdRef, .quantifier = .required },
9815 .{ .kind = .IdRef, .quantifier = .required },
9816 .{ .kind = .IdRef, .quantifier = .required },
9817 .{ .kind = .IdRef, .quantifier = .required },
9818 .{ .kind = .IdRef, .quantifier = .required },
9819 .{ .kind = .IdRef, .quantifier = .required },
9820 .{ .kind = .IdRef, .quantifier = .required },
9821 .{ .kind = .IdRef, .quantifier = .required },
9822 .{ .kind = .IdRef, .quantifier = .required },
9823 .{ .kind = .IdRef, .quantifier = .required },
9824 .{ .kind = .IdRef, .quantifier = .required },
10628 .operands = &.{
10629 .{ .kind = .id_ref, .quantifier = .required },
10630 .{ .kind = .id_ref, .quantifier = .required },
10631 .{ .kind = .id_ref, .quantifier = .required },
10632 .{ .kind = .id_ref, .quantifier = .required },
10633 .{ .kind = .id_ref, .quantifier = .required },
10634 .{ .kind = .id_ref, .quantifier = .required },
10635 .{ .kind = .id_ref, .quantifier = .required },
10636 .{ .kind = .id_ref, .quantifier = .required },
10637 .{ .kind = .id_ref, .quantifier = .required },
10638 .{ .kind = .id_ref, .quantifier = .required },
10639 .{ .kind = .id_ref, .quantifier = .required },
982510640 },
982610641 },
982710642 .{
982810643 .name = "OpTraceMotionNV",
982910644 .opcode = 5338,
9830 .operands = &[_]Operand{
9831 .{ .kind = .IdRef, .quantifier = .required },
9832 .{ .kind = .IdRef, .quantifier = .required },
9833 .{ .kind = .IdRef, .quantifier = .required },
9834 .{ .kind = .IdRef, .quantifier = .required },
9835 .{ .kind = .IdRef, .quantifier = .required },
9836 .{ .kind = .IdRef, .quantifier = .required },
9837 .{ .kind = .IdRef, .quantifier = .required },
9838 .{ .kind = .IdRef, .quantifier = .required },
9839 .{ .kind = .IdRef, .quantifier = .required },
9840 .{ .kind = .IdRef, .quantifier = .required },
9841 .{ .kind = .IdRef, .quantifier = .required },
9842 .{ .kind = .IdRef, .quantifier = .required },
10645 .operands = &.{
10646 .{ .kind = .id_ref, .quantifier = .required },
10647 .{ .kind = .id_ref, .quantifier = .required },
10648 .{ .kind = .id_ref, .quantifier = .required },
10649 .{ .kind = .id_ref, .quantifier = .required },
10650 .{ .kind = .id_ref, .quantifier = .required },
10651 .{ .kind = .id_ref, .quantifier = .required },
10652 .{ .kind = .id_ref, .quantifier = .required },
10653 .{ .kind = .id_ref, .quantifier = .required },
10654 .{ .kind = .id_ref, .quantifier = .required },
10655 .{ .kind = .id_ref, .quantifier = .required },
10656 .{ .kind = .id_ref, .quantifier = .required },
10657 .{ .kind = .id_ref, .quantifier = .required },
984310658 },
984410659 },
984510660 .{
984610661 .name = "OpTraceRayMotionNV",
984710662 .opcode = 5339,
9848 .operands = &[_]Operand{
9849 .{ .kind = .IdRef, .quantifier = .required },
9850 .{ .kind = .IdRef, .quantifier = .required },
9851 .{ .kind = .IdRef, .quantifier = .required },
9852 .{ .kind = .IdRef, .quantifier = .required },
9853 .{ .kind = .IdRef, .quantifier = .required },
9854 .{ .kind = .IdRef, .quantifier = .required },
9855 .{ .kind = .IdRef, .quantifier = .required },
9856 .{ .kind = .IdRef, .quantifier = .required },
9857 .{ .kind = .IdRef, .quantifier = .required },
9858 .{ .kind = .IdRef, .quantifier = .required },
9859 .{ .kind = .IdRef, .quantifier = .required },
9860 .{ .kind = .IdRef, .quantifier = .required },
10663 .operands = &.{
10664 .{ .kind = .id_ref, .quantifier = .required },
10665 .{ .kind = .id_ref, .quantifier = .required },
10666 .{ .kind = .id_ref, .quantifier = .required },
10667 .{ .kind = .id_ref, .quantifier = .required },
10668 .{ .kind = .id_ref, .quantifier = .required },
10669 .{ .kind = .id_ref, .quantifier = .required },
10670 .{ .kind = .id_ref, .quantifier = .required },
10671 .{ .kind = .id_ref, .quantifier = .required },
10672 .{ .kind = .id_ref, .quantifier = .required },
10673 .{ .kind = .id_ref, .quantifier = .required },
10674 .{ .kind = .id_ref, .quantifier = .required },
10675 .{ .kind = .id_ref, .quantifier = .required },
986110676 },
986210677 },
986310678 .{
986410679 .name = "OpRayQueryGetIntersectionTriangleVertexPositionsKHR",
986510680 .opcode = 5340,
9866 .operands = &[_]Operand{
9867 .{ .kind = .IdResultType, .quantifier = .required },
9868 .{ .kind = .IdResult, .quantifier = .required },
9869 .{ .kind = .IdRef, .quantifier = .required },
9870 .{ .kind = .IdRef, .quantifier = .required },
9871 },
9872 },
9873 .{
9874 .name = "OpTypeAccelerationStructureNV",
9875 .opcode = 5341,
9876 .operands = &[_]Operand{
9877 .{ .kind = .IdResult, .quantifier = .required },
10681 .operands = &.{
10682 .{ .kind = .id_result_type, .quantifier = .required },
10683 .{ .kind = .id_result, .quantifier = .required },
10684 .{ .kind = .id_ref, .quantifier = .required },
10685 .{ .kind = .id_ref, .quantifier = .required },
987810686 },
987910687 },
988010688 .{
988110689 .name = "OpTypeAccelerationStructureKHR",
988210690 .opcode = 5341,
9883 .operands = &[_]Operand{
9884 .{ .kind = .IdResult, .quantifier = .required },
10691 .operands = &.{
10692 .{ .kind = .id_result, .quantifier = .required },
988510693 },
988610694 },
988710695 .{
988810696 .name = "OpExecuteCallableNV",
988910697 .opcode = 5344,
9890 .operands = &[_]Operand{
9891 .{ .kind = .IdRef, .quantifier = .required },
9892 .{ .kind = .IdRef, .quantifier = .required },
10698 .operands = &.{
10699 .{ .kind = .id_ref, .quantifier = .required },
10700 .{ .kind = .id_ref, .quantifier = .required },
10701 },
10702 },
10703 .{
10704 .name = "OpRayQueryGetClusterIdNV",
10705 .opcode = 5345,
10706 .operands = &.{
10707 .{ .kind = .id_result_type, .quantifier = .required },
10708 .{ .kind = .id_result, .quantifier = .required },
10709 .{ .kind = .id_ref, .quantifier = .required },
10710 .{ .kind = .id_ref, .quantifier = .required },
10711 },
10712 },
10713 .{
10714 .name = "OpHitObjectGetClusterIdNV",
10715 .opcode = 5346,
10716 .operands = &.{
10717 .{ .kind = .id_result_type, .quantifier = .required },
10718 .{ .kind = .id_result, .quantifier = .required },
10719 .{ .kind = .id_ref, .quantifier = .required },
989310720 },
989410721 },
989510722 .{
989610723 .name = "OpTypeCooperativeMatrixNV",
989710724 .opcode = 5358,
9898 .operands = &[_]Operand{
9899 .{ .kind = .IdResult, .quantifier = .required },
9900 .{ .kind = .IdRef, .quantifier = .required },
9901 .{ .kind = .IdScope, .quantifier = .required },
9902 .{ .kind = .IdRef, .quantifier = .required },
9903 .{ .kind = .IdRef, .quantifier = .required },
10725 .operands = &.{
10726 .{ .kind = .id_result, .quantifier = .required },
10727 .{ .kind = .id_ref, .quantifier = .required },
10728 .{ .kind = .id_scope, .quantifier = .required },
10729 .{ .kind = .id_ref, .quantifier = .required },
10730 .{ .kind = .id_ref, .quantifier = .required },
990410731 },
990510732 },
990610733 .{
990710734 .name = "OpCooperativeMatrixLoadNV",
990810735 .opcode = 5359,
9909 .operands = &[_]Operand{
9910 .{ .kind = .IdResultType, .quantifier = .required },
9911 .{ .kind = .IdResult, .quantifier = .required },
9912 .{ .kind = .IdRef, .quantifier = .required },
9913 .{ .kind = .IdRef, .quantifier = .required },
9914 .{ .kind = .IdRef, .quantifier = .required },
9915 .{ .kind = .MemoryAccess, .quantifier = .optional },
10736 .operands = &.{
10737 .{ .kind = .id_result_type, .quantifier = .required },
10738 .{ .kind = .id_result, .quantifier = .required },
10739 .{ .kind = .id_ref, .quantifier = .required },
10740 .{ .kind = .id_ref, .quantifier = .required },
10741 .{ .kind = .id_ref, .quantifier = .required },
10742 .{ .kind = .memory_access, .quantifier = .optional },
991610743 },
991710744 },
991810745 .{
991910746 .name = "OpCooperativeMatrixStoreNV",
992010747 .opcode = 5360,
9921 .operands = &[_]Operand{
9922 .{ .kind = .IdRef, .quantifier = .required },
9923 .{ .kind = .IdRef, .quantifier = .required },
9924 .{ .kind = .IdRef, .quantifier = .required },
9925 .{ .kind = .IdRef, .quantifier = .required },
9926 .{ .kind = .MemoryAccess, .quantifier = .optional },
10748 .operands = &.{
10749 .{ .kind = .id_ref, .quantifier = .required },
10750 .{ .kind = .id_ref, .quantifier = .required },
10751 .{ .kind = .id_ref, .quantifier = .required },
10752 .{ .kind = .id_ref, .quantifier = .required },
10753 .{ .kind = .memory_access, .quantifier = .optional },
992710754 },
992810755 },
992910756 .{
993010757 .name = "OpCooperativeMatrixMulAddNV",
993110758 .opcode = 5361,
9932 .operands = &[_]Operand{
9933 .{ .kind = .IdResultType, .quantifier = .required },
9934 .{ .kind = .IdResult, .quantifier = .required },
9935 .{ .kind = .IdRef, .quantifier = .required },
9936 .{ .kind = .IdRef, .quantifier = .required },
9937 .{ .kind = .IdRef, .quantifier = .required },
10759 .operands = &.{
10760 .{ .kind = .id_result_type, .quantifier = .required },
10761 .{ .kind = .id_result, .quantifier = .required },
10762 .{ .kind = .id_ref, .quantifier = .required },
10763 .{ .kind = .id_ref, .quantifier = .required },
10764 .{ .kind = .id_ref, .quantifier = .required },
993810765 },
993910766 },
994010767 .{
994110768 .name = "OpCooperativeMatrixLengthNV",
994210769 .opcode = 5362,
9943 .operands = &[_]Operand{
9944 .{ .kind = .IdResultType, .quantifier = .required },
9945 .{ .kind = .IdResult, .quantifier = .required },
9946 .{ .kind = .IdRef, .quantifier = .required },
10770 .operands = &.{
10771 .{ .kind = .id_result_type, .quantifier = .required },
10772 .{ .kind = .id_result, .quantifier = .required },
10773 .{ .kind = .id_ref, .quantifier = .required },
994710774 },
994810775 },
994910776 .{
995010777 .name = "OpBeginInvocationInterlockEXT",
995110778 .opcode = 5364,
9952 .operands = &[_]Operand{},
10779 .operands = &.{},
995310780 },
995410781 .{
995510782 .name = "OpEndInvocationInterlockEXT",
995610783 .opcode = 5365,
9957 .operands = &[_]Operand{},
10784 .operands = &.{},
995810785 },
995910786 .{
9960 .name = "OpDemoteToHelperInvocation",
9961 .opcode = 5380,
9962 .operands = &[_]Operand{},
10787 .name = "OpCooperativeMatrixReduceNV",
10788 .opcode = 5366,
10789 .operands = &.{
10790 .{ .kind = .id_result_type, .quantifier = .required },
10791 .{ .kind = .id_result, .quantifier = .required },
10792 .{ .kind = .id_ref, .quantifier = .required },
10793 .{ .kind = .cooperative_matrix_reduce, .quantifier = .required },
10794 .{ .kind = .id_ref, .quantifier = .required },
10795 },
996310796 },
996410797 .{
9965 .name = "OpDemoteToHelperInvocationEXT",
10798 .name = "OpCooperativeMatrixLoadTensorNV",
10799 .opcode = 5367,
10800 .operands = &.{
10801 .{ .kind = .id_result_type, .quantifier = .required },
10802 .{ .kind = .id_result, .quantifier = .required },
10803 .{ .kind = .id_ref, .quantifier = .required },
10804 .{ .kind = .id_ref, .quantifier = .required },
10805 .{ .kind = .id_ref, .quantifier = .required },
10806 .{ .kind = .memory_access, .quantifier = .required },
10807 .{ .kind = .tensor_addressing_operands, .quantifier = .required },
10808 },
10809 },
10810 .{
10811 .name = "OpCooperativeMatrixStoreTensorNV",
10812 .opcode = 5368,
10813 .operands = &.{
10814 .{ .kind = .id_ref, .quantifier = .required },
10815 .{ .kind = .id_ref, .quantifier = .required },
10816 .{ .kind = .id_ref, .quantifier = .required },
10817 .{ .kind = .memory_access, .quantifier = .required },
10818 .{ .kind = .tensor_addressing_operands, .quantifier = .required },
10819 },
10820 },
10821 .{
10822 .name = "OpCooperativeMatrixPerElementOpNV",
10823 .opcode = 5369,
10824 .operands = &.{
10825 .{ .kind = .id_result_type, .quantifier = .required },
10826 .{ .kind = .id_result, .quantifier = .required },
10827 .{ .kind = .id_ref, .quantifier = .required },
10828 .{ .kind = .id_ref, .quantifier = .required },
10829 .{ .kind = .id_ref, .quantifier = .variadic },
10830 },
10831 },
10832 .{
10833 .name = "OpTypeTensorLayoutNV",
10834 .opcode = 5370,
10835 .operands = &.{
10836 .{ .kind = .id_result, .quantifier = .required },
10837 .{ .kind = .id_ref, .quantifier = .required },
10838 .{ .kind = .id_ref, .quantifier = .required },
10839 },
10840 },
10841 .{
10842 .name = "OpTypeTensorViewNV",
10843 .opcode = 5371,
10844 .operands = &.{
10845 .{ .kind = .id_result, .quantifier = .required },
10846 .{ .kind = .id_ref, .quantifier = .required },
10847 .{ .kind = .id_ref, .quantifier = .required },
10848 .{ .kind = .id_ref, .quantifier = .variadic },
10849 },
10850 },
10851 .{
10852 .name = "OpCreateTensorLayoutNV",
10853 .opcode = 5372,
10854 .operands = &.{
10855 .{ .kind = .id_result_type, .quantifier = .required },
10856 .{ .kind = .id_result, .quantifier = .required },
10857 },
10858 },
10859 .{
10860 .name = "OpTensorLayoutSetDimensionNV",
10861 .opcode = 5373,
10862 .operands = &.{
10863 .{ .kind = .id_result_type, .quantifier = .required },
10864 .{ .kind = .id_result, .quantifier = .required },
10865 .{ .kind = .id_ref, .quantifier = .required },
10866 .{ .kind = .id_ref, .quantifier = .variadic },
10867 },
10868 },
10869 .{
10870 .name = "OpTensorLayoutSetStrideNV",
10871 .opcode = 5374,
10872 .operands = &.{
10873 .{ .kind = .id_result_type, .quantifier = .required },
10874 .{ .kind = .id_result, .quantifier = .required },
10875 .{ .kind = .id_ref, .quantifier = .required },
10876 .{ .kind = .id_ref, .quantifier = .variadic },
10877 },
10878 },
10879 .{
10880 .name = "OpTensorLayoutSliceNV",
10881 .opcode = 5375,
10882 .operands = &.{
10883 .{ .kind = .id_result_type, .quantifier = .required },
10884 .{ .kind = .id_result, .quantifier = .required },
10885 .{ .kind = .id_ref, .quantifier = .required },
10886 .{ .kind = .id_ref, .quantifier = .variadic },
10887 },
10888 },
10889 .{
10890 .name = "OpTensorLayoutSetClampValueNV",
10891 .opcode = 5376,
10892 .operands = &.{
10893 .{ .kind = .id_result_type, .quantifier = .required },
10894 .{ .kind = .id_result, .quantifier = .required },
10895 .{ .kind = .id_ref, .quantifier = .required },
10896 .{ .kind = .id_ref, .quantifier = .required },
10897 },
10898 },
10899 .{
10900 .name = "OpCreateTensorViewNV",
10901 .opcode = 5377,
10902 .operands = &.{
10903 .{ .kind = .id_result_type, .quantifier = .required },
10904 .{ .kind = .id_result, .quantifier = .required },
10905 },
10906 },
10907 .{
10908 .name = "OpTensorViewSetDimensionNV",
10909 .opcode = 5378,
10910 .operands = &.{
10911 .{ .kind = .id_result_type, .quantifier = .required },
10912 .{ .kind = .id_result, .quantifier = .required },
10913 .{ .kind = .id_ref, .quantifier = .required },
10914 .{ .kind = .id_ref, .quantifier = .variadic },
10915 },
10916 },
10917 .{
10918 .name = "OpTensorViewSetStrideNV",
10919 .opcode = 5379,
10920 .operands = &.{
10921 .{ .kind = .id_result_type, .quantifier = .required },
10922 .{ .kind = .id_result, .quantifier = .required },
10923 .{ .kind = .id_ref, .quantifier = .required },
10924 .{ .kind = .id_ref, .quantifier = .variadic },
10925 },
10926 },
10927 .{
10928 .name = "OpDemoteToHelperInvocation",
996610929 .opcode = 5380,
9967 .operands = &[_]Operand{},
10930 .operands = &.{},
996810931 },
996910932 .{
997010933 .name = "OpIsHelperInvocationEXT",
997110934 .opcode = 5381,
9972 .operands = &[_]Operand{
9973 .{ .kind = .IdResultType, .quantifier = .required },
9974 .{ .kind = .IdResult, .quantifier = .required },
10935 .operands = &.{
10936 .{ .kind = .id_result_type, .quantifier = .required },
10937 .{ .kind = .id_result, .quantifier = .required },
10938 },
10939 },
10940 .{
10941 .name = "OpTensorViewSetClipNV",
10942 .opcode = 5382,
10943 .operands = &.{
10944 .{ .kind = .id_result_type, .quantifier = .required },
10945 .{ .kind = .id_result, .quantifier = .required },
10946 .{ .kind = .id_ref, .quantifier = .required },
10947 .{ .kind = .id_ref, .quantifier = .required },
10948 .{ .kind = .id_ref, .quantifier = .required },
10949 .{ .kind = .id_ref, .quantifier = .required },
10950 .{ .kind = .id_ref, .quantifier = .required },
10951 },
10952 },
10953 .{
10954 .name = "OpTensorLayoutSetBlockSizeNV",
10955 .opcode = 5384,
10956 .operands = &.{
10957 .{ .kind = .id_result_type, .quantifier = .required },
10958 .{ .kind = .id_result, .quantifier = .required },
10959 .{ .kind = .id_ref, .quantifier = .required },
10960 .{ .kind = .id_ref, .quantifier = .variadic },
10961 },
10962 },
10963 .{
10964 .name = "OpCooperativeMatrixTransposeNV",
10965 .opcode = 5390,
10966 .operands = &.{
10967 .{ .kind = .id_result_type, .quantifier = .required },
10968 .{ .kind = .id_result, .quantifier = .required },
10969 .{ .kind = .id_ref, .quantifier = .required },
997510970 },
997610971 },
997710972 .{
997810973 .name = "OpConvertUToImageNV",
997910974 .opcode = 5391,
9980 .operands = &[_]Operand{
9981 .{ .kind = .IdResultType, .quantifier = .required },
9982 .{ .kind = .IdResult, .quantifier = .required },
9983 .{ .kind = .IdRef, .quantifier = .required },
10975 .operands = &.{
10976 .{ .kind = .id_result_type, .quantifier = .required },
10977 .{ .kind = .id_result, .quantifier = .required },
10978 .{ .kind = .id_ref, .quantifier = .required },
998410979 },
998510980 },
998610981 .{
998710982 .name = "OpConvertUToSamplerNV",
998810983 .opcode = 5392,
9989 .operands = &[_]Operand{
9990 .{ .kind = .IdResultType, .quantifier = .required },
9991 .{ .kind = .IdResult, .quantifier = .required },
9992 .{ .kind = .IdRef, .quantifier = .required },
10984 .operands = &.{
10985 .{ .kind = .id_result_type, .quantifier = .required },
10986 .{ .kind = .id_result, .quantifier = .required },
10987 .{ .kind = .id_ref, .quantifier = .required },
999310988 },
999410989 },
999510990 .{
999610991 .name = "OpConvertImageToUNV",
999710992 .opcode = 5393,
9998 .operands = &[_]Operand{
9999 .{ .kind = .IdResultType, .quantifier = .required },
10000 .{ .kind = .IdResult, .quantifier = .required },
10001 .{ .kind = .IdRef, .quantifier = .required },
10993 .operands = &.{
10994 .{ .kind = .id_result_type, .quantifier = .required },
10995 .{ .kind = .id_result, .quantifier = .required },
10996 .{ .kind = .id_ref, .quantifier = .required },
1000210997 },
1000310998 },
1000410999 .{
1000511000 .name = "OpConvertSamplerToUNV",
1000611001 .opcode = 5394,
10007 .operands = &[_]Operand{
10008 .{ .kind = .IdResultType, .quantifier = .required },
10009 .{ .kind = .IdResult, .quantifier = .required },
10010 .{ .kind = .IdRef, .quantifier = .required },
11002 .operands = &.{
11003 .{ .kind = .id_result_type, .quantifier = .required },
11004 .{ .kind = .id_result, .quantifier = .required },
11005 .{ .kind = .id_ref, .quantifier = .required },
1001111006 },
1001211007 },
1001311008 .{
1001411009 .name = "OpConvertUToSampledImageNV",
1001511010 .opcode = 5395,
10016 .operands = &[_]Operand{
10017 .{ .kind = .IdResultType, .quantifier = .required },
10018 .{ .kind = .IdResult, .quantifier = .required },
10019 .{ .kind = .IdRef, .quantifier = .required },
11011 .operands = &.{
11012 .{ .kind = .id_result_type, .quantifier = .required },
11013 .{ .kind = .id_result, .quantifier = .required },
11014 .{ .kind = .id_ref, .quantifier = .required },
1002011015 },
1002111016 },
1002211017 .{
1002311018 .name = "OpConvertSampledImageToUNV",
1002411019 .opcode = 5396,
10025 .operands = &[_]Operand{
10026 .{ .kind = .IdResultType, .quantifier = .required },
10027 .{ .kind = .IdResult, .quantifier = .required },
10028 .{ .kind = .IdRef, .quantifier = .required },
11020 .operands = &.{
11021 .{ .kind = .id_result_type, .quantifier = .required },
11022 .{ .kind = .id_result, .quantifier = .required },
11023 .{ .kind = .id_ref, .quantifier = .required },
1002911024 },
1003011025 },
1003111026 .{
1003211027 .name = "OpSamplerImageAddressingModeNV",
1003311028 .opcode = 5397,
10034 .operands = &[_]Operand{
10035 .{ .kind = .LiteralInteger, .quantifier = .required },
11029 .operands = &.{
11030 .{ .kind = .literal_integer, .quantifier = .required },
1003611031 },
1003711032 },
1003811033 .{
1003911034 .name = "OpRawAccessChainNV",
1004011035 .opcode = 5398,
10041 .operands = &[_]Operand{
10042 .{ .kind = .IdResultType, .quantifier = .required },
10043 .{ .kind = .IdResult, .quantifier = .required },
10044 .{ .kind = .IdRef, .quantifier = .required },
10045 .{ .kind = .IdRef, .quantifier = .required },
10046 .{ .kind = .IdRef, .quantifier = .required },
10047 .{ .kind = .IdRef, .quantifier = .required },
10048 .{ .kind = .RawAccessChainOperands, .quantifier = .optional },
11036 .operands = &.{
11037 .{ .kind = .id_result_type, .quantifier = .required },
11038 .{ .kind = .id_result, .quantifier = .required },
11039 .{ .kind = .id_ref, .quantifier = .required },
11040 .{ .kind = .id_ref, .quantifier = .required },
11041 .{ .kind = .id_ref, .quantifier = .required },
11042 .{ .kind = .id_ref, .quantifier = .required },
11043 .{ .kind = .raw_access_chain_operands, .quantifier = .optional },
11044 },
11045 },
11046 .{
11047 .name = "OpRayQueryGetIntersectionSpherePositionNV",
11048 .opcode = 5427,
11049 .operands = &.{
11050 .{ .kind = .id_result_type, .quantifier = .required },
11051 .{ .kind = .id_result, .quantifier = .required },
11052 .{ .kind = .id_ref, .quantifier = .required },
11053 .{ .kind = .id_ref, .quantifier = .required },
11054 },
11055 },
11056 .{
11057 .name = "OpRayQueryGetIntersectionSphereRadiusNV",
11058 .opcode = 5428,
11059 .operands = &.{
11060 .{ .kind = .id_result_type, .quantifier = .required },
11061 .{ .kind = .id_result, .quantifier = .required },
11062 .{ .kind = .id_ref, .quantifier = .required },
11063 .{ .kind = .id_ref, .quantifier = .required },
11064 },
11065 },
11066 .{
11067 .name = "OpRayQueryGetIntersectionLSSPositionsNV",
11068 .opcode = 5429,
11069 .operands = &.{
11070 .{ .kind = .id_result_type, .quantifier = .required },
11071 .{ .kind = .id_result, .quantifier = .required },
11072 .{ .kind = .id_ref, .quantifier = .required },
11073 .{ .kind = .id_ref, .quantifier = .required },
11074 },
11075 },
11076 .{
11077 .name = "OpRayQueryGetIntersectionLSSRadiiNV",
11078 .opcode = 5430,
11079 .operands = &.{
11080 .{ .kind = .id_result_type, .quantifier = .required },
11081 .{ .kind = .id_result, .quantifier = .required },
11082 .{ .kind = .id_ref, .quantifier = .required },
11083 .{ .kind = .id_ref, .quantifier = .required },
11084 },
11085 },
11086 .{
11087 .name = "OpRayQueryGetIntersectionLSSHitValueNV",
11088 .opcode = 5431,
11089 .operands = &.{
11090 .{ .kind = .id_result_type, .quantifier = .required },
11091 .{ .kind = .id_result, .quantifier = .required },
11092 .{ .kind = .id_ref, .quantifier = .required },
11093 .{ .kind = .id_ref, .quantifier = .required },
11094 },
11095 },
11096 .{
11097 .name = "OpHitObjectGetSpherePositionNV",
11098 .opcode = 5432,
11099 .operands = &.{
11100 .{ .kind = .id_result_type, .quantifier = .required },
11101 .{ .kind = .id_result, .quantifier = .required },
11102 .{ .kind = .id_ref, .quantifier = .required },
11103 },
11104 },
11105 .{
11106 .name = "OpHitObjectGetSphereRadiusNV",
11107 .opcode = 5433,
11108 .operands = &.{
11109 .{ .kind = .id_result_type, .quantifier = .required },
11110 .{ .kind = .id_result, .quantifier = .required },
11111 .{ .kind = .id_ref, .quantifier = .required },
11112 },
11113 },
11114 .{
11115 .name = "OpHitObjectGetLSSPositionsNV",
11116 .opcode = 5434,
11117 .operands = &.{
11118 .{ .kind = .id_result_type, .quantifier = .required },
11119 .{ .kind = .id_result, .quantifier = .required },
11120 .{ .kind = .id_ref, .quantifier = .required },
11121 },
11122 },
11123 .{
11124 .name = "OpHitObjectGetLSSRadiiNV",
11125 .opcode = 5435,
11126 .operands = &.{
11127 .{ .kind = .id_result_type, .quantifier = .required },
11128 .{ .kind = .id_result, .quantifier = .required },
11129 .{ .kind = .id_ref, .quantifier = .required },
11130 },
11131 },
11132 .{
11133 .name = "OpHitObjectIsSphereHitNV",
11134 .opcode = 5436,
11135 .operands = &.{
11136 .{ .kind = .id_result_type, .quantifier = .required },
11137 .{ .kind = .id_result, .quantifier = .required },
11138 .{ .kind = .id_ref, .quantifier = .required },
11139 },
11140 },
11141 .{
11142 .name = "OpHitObjectIsLSSHitNV",
11143 .opcode = 5437,
11144 .operands = &.{
11145 .{ .kind = .id_result_type, .quantifier = .required },
11146 .{ .kind = .id_result, .quantifier = .required },
11147 .{ .kind = .id_ref, .quantifier = .required },
11148 },
11149 },
11150 .{
11151 .name = "OpRayQueryIsSphereHitNV",
11152 .opcode = 5438,
11153 .operands = &.{
11154 .{ .kind = .id_result_type, .quantifier = .required },
11155 .{ .kind = .id_result, .quantifier = .required },
11156 .{ .kind = .id_ref, .quantifier = .required },
11157 .{ .kind = .id_ref, .quantifier = .required },
11158 },
11159 },
11160 .{
11161 .name = "OpRayQueryIsLSSHitNV",
11162 .opcode = 5439,
11163 .operands = &.{
11164 .{ .kind = .id_result_type, .quantifier = .required },
11165 .{ .kind = .id_result, .quantifier = .required },
11166 .{ .kind = .id_ref, .quantifier = .required },
11167 .{ .kind = .id_ref, .quantifier = .required },
1004911168 },
1005011169 },
1005111170 .{
1005211171 .name = "OpSubgroupShuffleINTEL",
1005311172 .opcode = 5571,
10054 .operands = &[_]Operand{
10055 .{ .kind = .IdResultType, .quantifier = .required },
10056 .{ .kind = .IdResult, .quantifier = .required },
10057 .{ .kind = .IdRef, .quantifier = .required },
10058 .{ .kind = .IdRef, .quantifier = .required },
11173 .operands = &.{
11174 .{ .kind = .id_result_type, .quantifier = .required },
11175 .{ .kind = .id_result, .quantifier = .required },
11176 .{ .kind = .id_ref, .quantifier = .required },
11177 .{ .kind = .id_ref, .quantifier = .required },
1005911178 },
1006011179 },
1006111180 .{
1006211181 .name = "OpSubgroupShuffleDownINTEL",
1006311182 .opcode = 5572,
10064 .operands = &[_]Operand{
10065 .{ .kind = .IdResultType, .quantifier = .required },
10066 .{ .kind = .IdResult, .quantifier = .required },
10067 .{ .kind = .IdRef, .quantifier = .required },
10068 .{ .kind = .IdRef, .quantifier = .required },
10069 .{ .kind = .IdRef, .quantifier = .required },
11183 .operands = &.{
11184 .{ .kind = .id_result_type, .quantifier = .required },
11185 .{ .kind = .id_result, .quantifier = .required },
11186 .{ .kind = .id_ref, .quantifier = .required },
11187 .{ .kind = .id_ref, .quantifier = .required },
11188 .{ .kind = .id_ref, .quantifier = .required },
1007011189 },
1007111190 },
1007211191 .{
1007311192 .name = "OpSubgroupShuffleUpINTEL",
1007411193 .opcode = 5573,
10075 .operands = &[_]Operand{
10076 .{ .kind = .IdResultType, .quantifier = .required },
10077 .{ .kind = .IdResult, .quantifier = .required },
10078 .{ .kind = .IdRef, .quantifier = .required },
10079 .{ .kind = .IdRef, .quantifier = .required },
10080 .{ .kind = .IdRef, .quantifier = .required },
11194 .operands = &.{
11195 .{ .kind = .id_result_type, .quantifier = .required },
11196 .{ .kind = .id_result, .quantifier = .required },
11197 .{ .kind = .id_ref, .quantifier = .required },
11198 .{ .kind = .id_ref, .quantifier = .required },
11199 .{ .kind = .id_ref, .quantifier = .required },
1008111200 },
1008211201 },
1008311202 .{
1008411203 .name = "OpSubgroupShuffleXorINTEL",
1008511204 .opcode = 5574,
10086 .operands = &[_]Operand{
10087 .{ .kind = .IdResultType, .quantifier = .required },
10088 .{ .kind = .IdResult, .quantifier = .required },
10089 .{ .kind = .IdRef, .quantifier = .required },
10090 .{ .kind = .IdRef, .quantifier = .required },
11205 .operands = &.{
11206 .{ .kind = .id_result_type, .quantifier = .required },
11207 .{ .kind = .id_result, .quantifier = .required },
11208 .{ .kind = .id_ref, .quantifier = .required },
11209 .{ .kind = .id_ref, .quantifier = .required },
1009111210 },
1009211211 },
1009311212 .{
1009411213 .name = "OpSubgroupBlockReadINTEL",
1009511214 .opcode = 5575,
10096 .operands = &[_]Operand{
10097 .{ .kind = .IdResultType, .quantifier = .required },
10098 .{ .kind = .IdResult, .quantifier = .required },
10099 .{ .kind = .IdRef, .quantifier = .required },
11215 .operands = &.{
11216 .{ .kind = .id_result_type, .quantifier = .required },
11217 .{ .kind = .id_result, .quantifier = .required },
11218 .{ .kind = .id_ref, .quantifier = .required },
1010011219 },
1010111220 },
1010211221 .{
1010311222 .name = "OpSubgroupBlockWriteINTEL",
1010411223 .opcode = 5576,
10105 .operands = &[_]Operand{
10106 .{ .kind = .IdRef, .quantifier = .required },
10107 .{ .kind = .IdRef, .quantifier = .required },
11224 .operands = &.{
11225 .{ .kind = .id_ref, .quantifier = .required },
11226 .{ .kind = .id_ref, .quantifier = .required },
1010811227 },
1010911228 },
1011011229 .{
1011111230 .name = "OpSubgroupImageBlockReadINTEL",
1011211231 .opcode = 5577,
10113 .operands = &[_]Operand{
10114 .{ .kind = .IdResultType, .quantifier = .required },
10115 .{ .kind = .IdResult, .quantifier = .required },
10116 .{ .kind = .IdRef, .quantifier = .required },
10117 .{ .kind = .IdRef, .quantifier = .required },
11232 .operands = &.{
11233 .{ .kind = .id_result_type, .quantifier = .required },
11234 .{ .kind = .id_result, .quantifier = .required },
11235 .{ .kind = .id_ref, .quantifier = .required },
11236 .{ .kind = .id_ref, .quantifier = .required },
1011811237 },
1011911238 },
1012011239 .{
1012111240 .name = "OpSubgroupImageBlockWriteINTEL",
1012211241 .opcode = 5578,
10123 .operands = &[_]Operand{
10124 .{ .kind = .IdRef, .quantifier = .required },
10125 .{ .kind = .IdRef, .quantifier = .required },
10126 .{ .kind = .IdRef, .quantifier = .required },
11242 .operands = &.{
11243 .{ .kind = .id_ref, .quantifier = .required },
11244 .{ .kind = .id_ref, .quantifier = .required },
11245 .{ .kind = .id_ref, .quantifier = .required },
1012711246 },
1012811247 },
1012911248 .{
1013011249 .name = "OpSubgroupImageMediaBlockReadINTEL",
1013111250 .opcode = 5580,
10132 .operands = &[_]Operand{
10133 .{ .kind = .IdResultType, .quantifier = .required },
10134 .{ .kind = .IdResult, .quantifier = .required },
10135 .{ .kind = .IdRef, .quantifier = .required },
10136 .{ .kind = .IdRef, .quantifier = .required },
10137 .{ .kind = .IdRef, .quantifier = .required },
10138 .{ .kind = .IdRef, .quantifier = .required },
11251 .operands = &.{
11252 .{ .kind = .id_result_type, .quantifier = .required },
11253 .{ .kind = .id_result, .quantifier = .required },
11254 .{ .kind = .id_ref, .quantifier = .required },
11255 .{ .kind = .id_ref, .quantifier = .required },
11256 .{ .kind = .id_ref, .quantifier = .required },
11257 .{ .kind = .id_ref, .quantifier = .required },
1013911258 },
1014011259 },
1014111260 .{
1014211261 .name = "OpSubgroupImageMediaBlockWriteINTEL",
1014311262 .opcode = 5581,
10144 .operands = &[_]Operand{
10145 .{ .kind = .IdRef, .quantifier = .required },
10146 .{ .kind = .IdRef, .quantifier = .required },
10147 .{ .kind = .IdRef, .quantifier = .required },
10148 .{ .kind = .IdRef, .quantifier = .required },
10149 .{ .kind = .IdRef, .quantifier = .required },
11263 .operands = &.{
11264 .{ .kind = .id_ref, .quantifier = .required },
11265 .{ .kind = .id_ref, .quantifier = .required },
11266 .{ .kind = .id_ref, .quantifier = .required },
11267 .{ .kind = .id_ref, .quantifier = .required },
11268 .{ .kind = .id_ref, .quantifier = .required },
1015011269 },
1015111270 },
1015211271 .{
1015311272 .name = "OpUCountLeadingZerosINTEL",
1015411273 .opcode = 5585,
10155 .operands = &[_]Operand{
10156 .{ .kind = .IdResultType, .quantifier = .required },
10157 .{ .kind = .IdResult, .quantifier = .required },
10158 .{ .kind = .IdRef, .quantifier = .required },
11274 .operands = &.{
11275 .{ .kind = .id_result_type, .quantifier = .required },
11276 .{ .kind = .id_result, .quantifier = .required },
11277 .{ .kind = .id_ref, .quantifier = .required },
1015911278 },
1016011279 },
1016111280 .{
1016211281 .name = "OpUCountTrailingZerosINTEL",
1016311282 .opcode = 5586,
10164 .operands = &[_]Operand{
10165 .{ .kind = .IdResultType, .quantifier = .required },
10166 .{ .kind = .IdResult, .quantifier = .required },
10167 .{ .kind = .IdRef, .quantifier = .required },
11283 .operands = &.{
11284 .{ .kind = .id_result_type, .quantifier = .required },
11285 .{ .kind = .id_result, .quantifier = .required },
11286 .{ .kind = .id_ref, .quantifier = .required },
1016811287 },
1016911288 },
1017011289 .{
1017111290 .name = "OpAbsISubINTEL",
1017211291 .opcode = 5587,
10173 .operands = &[_]Operand{
10174 .{ .kind = .IdResultType, .quantifier = .required },
10175 .{ .kind = .IdResult, .quantifier = .required },
10176 .{ .kind = .IdRef, .quantifier = .required },
10177 .{ .kind = .IdRef, .quantifier = .required },
11292 .operands = &.{
11293 .{ .kind = .id_result_type, .quantifier = .required },
11294 .{ .kind = .id_result, .quantifier = .required },
11295 .{ .kind = .id_ref, .quantifier = .required },
11296 .{ .kind = .id_ref, .quantifier = .required },
1017811297 },
1017911298 },
1018011299 .{
1018111300 .name = "OpAbsUSubINTEL",
1018211301 .opcode = 5588,
10183 .operands = &[_]Operand{
10184 .{ .kind = .IdResultType, .quantifier = .required },
10185 .{ .kind = .IdResult, .quantifier = .required },
10186 .{ .kind = .IdRef, .quantifier = .required },
10187 .{ .kind = .IdRef, .quantifier = .required },
11302 .operands = &.{
11303 .{ .kind = .id_result_type, .quantifier = .required },
11304 .{ .kind = .id_result, .quantifier = .required },
11305 .{ .kind = .id_ref, .quantifier = .required },
11306 .{ .kind = .id_ref, .quantifier = .required },
1018811307 },
1018911308 },
1019011309 .{
1019111310 .name = "OpIAddSatINTEL",
1019211311 .opcode = 5589,
10193 .operands = &[_]Operand{
10194 .{ .kind = .IdResultType, .quantifier = .required },
10195 .{ .kind = .IdResult, .quantifier = .required },
10196 .{ .kind = .IdRef, .quantifier = .required },
10197 .{ .kind = .IdRef, .quantifier = .required },
11312 .operands = &.{
11313 .{ .kind = .id_result_type, .quantifier = .required },
11314 .{ .kind = .id_result, .quantifier = .required },
11315 .{ .kind = .id_ref, .quantifier = .required },
11316 .{ .kind = .id_ref, .quantifier = .required },
1019811317 },
1019911318 },
1020011319 .{
1020111320 .name = "OpUAddSatINTEL",
1020211321 .opcode = 5590,
10203 .operands = &[_]Operand{
10204 .{ .kind = .IdResultType, .quantifier = .required },
10205 .{ .kind = .IdResult, .quantifier = .required },
10206 .{ .kind = .IdRef, .quantifier = .required },
10207 .{ .kind = .IdRef, .quantifier = .required },
11322 .operands = &.{
11323 .{ .kind = .id_result_type, .quantifier = .required },
11324 .{ .kind = .id_result, .quantifier = .required },
11325 .{ .kind = .id_ref, .quantifier = .required },
11326 .{ .kind = .id_ref, .quantifier = .required },
1020811327 },
1020911328 },
1021011329 .{
1021111330 .name = "OpIAverageINTEL",
1021211331 .opcode = 5591,
10213 .operands = &[_]Operand{
10214 .{ .kind = .IdResultType, .quantifier = .required },
10215 .{ .kind = .IdResult, .quantifier = .required },
10216 .{ .kind = .IdRef, .quantifier = .required },
10217 .{ .kind = .IdRef, .quantifier = .required },
11332 .operands = &.{
11333 .{ .kind = .id_result_type, .quantifier = .required },
11334 .{ .kind = .id_result, .quantifier = .required },
11335 .{ .kind = .id_ref, .quantifier = .required },
11336 .{ .kind = .id_ref, .quantifier = .required },
1021811337 },
1021911338 },
1022011339 .{
1022111340 .name = "OpUAverageINTEL",
1022211341 .opcode = 5592,
10223 .operands = &[_]Operand{
10224 .{ .kind = .IdResultType, .quantifier = .required },
10225 .{ .kind = .IdResult, .quantifier = .required },
10226 .{ .kind = .IdRef, .quantifier = .required },
10227 .{ .kind = .IdRef, .quantifier = .required },
11342 .operands = &.{
11343 .{ .kind = .id_result_type, .quantifier = .required },
11344 .{ .kind = .id_result, .quantifier = .required },
11345 .{ .kind = .id_ref, .quantifier = .required },
11346 .{ .kind = .id_ref, .quantifier = .required },
1022811347 },
1022911348 },
1023011349 .{
1023111350 .name = "OpIAverageRoundedINTEL",
1023211351 .opcode = 5593,
10233 .operands = &[_]Operand{
10234 .{ .kind = .IdResultType, .quantifier = .required },
10235 .{ .kind = .IdResult, .quantifier = .required },
10236 .{ .kind = .IdRef, .quantifier = .required },
10237 .{ .kind = .IdRef, .quantifier = .required },
11352 .operands = &.{
11353 .{ .kind = .id_result_type, .quantifier = .required },
11354 .{ .kind = .id_result, .quantifier = .required },
11355 .{ .kind = .id_ref, .quantifier = .required },
11356 .{ .kind = .id_ref, .quantifier = .required },
1023811357 },
1023911358 },
1024011359 .{
1024111360 .name = "OpUAverageRoundedINTEL",
1024211361 .opcode = 5594,
10243 .operands = &[_]Operand{
10244 .{ .kind = .IdResultType, .quantifier = .required },
10245 .{ .kind = .IdResult, .quantifier = .required },
10246 .{ .kind = .IdRef, .quantifier = .required },
10247 .{ .kind = .IdRef, .quantifier = .required },
11362 .operands = &.{
11363 .{ .kind = .id_result_type, .quantifier = .required },
11364 .{ .kind = .id_result, .quantifier = .required },
11365 .{ .kind = .id_ref, .quantifier = .required },
11366 .{ .kind = .id_ref, .quantifier = .required },
1024811367 },
1024911368 },
1025011369 .{
1025111370 .name = "OpISubSatINTEL",
1025211371 .opcode = 5595,
10253 .operands = &[_]Operand{
10254 .{ .kind = .IdResultType, .quantifier = .required },
10255 .{ .kind = .IdResult, .quantifier = .required },
10256 .{ .kind = .IdRef, .quantifier = .required },
10257 .{ .kind = .IdRef, .quantifier = .required },
11372 .operands = &.{
11373 .{ .kind = .id_result_type, .quantifier = .required },
11374 .{ .kind = .id_result, .quantifier = .required },
11375 .{ .kind = .id_ref, .quantifier = .required },
11376 .{ .kind = .id_ref, .quantifier = .required },
1025811377 },
1025911378 },
1026011379 .{
1026111380 .name = "OpUSubSatINTEL",
1026211381 .opcode = 5596,
10263 .operands = &[_]Operand{
10264 .{ .kind = .IdResultType, .quantifier = .required },
10265 .{ .kind = .IdResult, .quantifier = .required },
10266 .{ .kind = .IdRef, .quantifier = .required },
10267 .{ .kind = .IdRef, .quantifier = .required },
11382 .operands = &.{
11383 .{ .kind = .id_result_type, .quantifier = .required },
11384 .{ .kind = .id_result, .quantifier = .required },
11385 .{ .kind = .id_ref, .quantifier = .required },
11386 .{ .kind = .id_ref, .quantifier = .required },
1026811387 },
1026911388 },
1027011389 .{
1027111390 .name = "OpIMul32x16INTEL",
1027211391 .opcode = 5597,
10273 .operands = &[_]Operand{
10274 .{ .kind = .IdResultType, .quantifier = .required },
10275 .{ .kind = .IdResult, .quantifier = .required },
10276 .{ .kind = .IdRef, .quantifier = .required },
10277 .{ .kind = .IdRef, .quantifier = .required },
11392 .operands = &.{
11393 .{ .kind = .id_result_type, .quantifier = .required },
11394 .{ .kind = .id_result, .quantifier = .required },
11395 .{ .kind = .id_ref, .quantifier = .required },
11396 .{ .kind = .id_ref, .quantifier = .required },
1027811397 },
1027911398 },
1028011399 .{
1028111400 .name = "OpUMul32x16INTEL",
1028211401 .opcode = 5598,
10283 .operands = &[_]Operand{
10284 .{ .kind = .IdResultType, .quantifier = .required },
10285 .{ .kind = .IdResult, .quantifier = .required },
10286 .{ .kind = .IdRef, .quantifier = .required },
10287 .{ .kind = .IdRef, .quantifier = .required },
11402 .operands = &.{
11403 .{ .kind = .id_result_type, .quantifier = .required },
11404 .{ .kind = .id_result, .quantifier = .required },
11405 .{ .kind = .id_ref, .quantifier = .required },
11406 .{ .kind = .id_ref, .quantifier = .required },
1028811407 },
1028911408 },
1029011409 .{
1029111410 .name = "OpConstantFunctionPointerINTEL",
1029211411 .opcode = 5600,
10293 .operands = &[_]Operand{
10294 .{ .kind = .IdResultType, .quantifier = .required },
10295 .{ .kind = .IdResult, .quantifier = .required },
10296 .{ .kind = .IdRef, .quantifier = .required },
11412 .operands = &.{
11413 .{ .kind = .id_result_type, .quantifier = .required },
11414 .{ .kind = .id_result, .quantifier = .required },
11415 .{ .kind = .id_ref, .quantifier = .required },
1029711416 },
1029811417 },
1029911418 .{
1030011419 .name = "OpFunctionPointerCallINTEL",
1030111420 .opcode = 5601,
10302 .operands = &[_]Operand{
10303 .{ .kind = .IdResultType, .quantifier = .required },
10304 .{ .kind = .IdResult, .quantifier = .required },
10305 .{ .kind = .IdRef, .quantifier = .variadic },
11421 .operands = &.{
11422 .{ .kind = .id_result_type, .quantifier = .required },
11423 .{ .kind = .id_result, .quantifier = .required },
11424 .{ .kind = .id_ref, .quantifier = .variadic },
1030611425 },
1030711426 },
1030811427 .{
1030911428 .name = "OpAsmTargetINTEL",
1031011429 .opcode = 5609,
10311 .operands = &[_]Operand{
10312 .{ .kind = .IdResultType, .quantifier = .required },
10313 .{ .kind = .IdResult, .quantifier = .required },
10314 .{ .kind = .LiteralString, .quantifier = .required },
11430 .operands = &.{
11431 .{ .kind = .id_result, .quantifier = .required },
11432 .{ .kind = .literal_string, .quantifier = .required },
1031511433 },
1031611434 },
1031711435 .{
1031811436 .name = "OpAsmINTEL",
1031911437 .opcode = 5610,
10320 .operands = &[_]Operand{
10321 .{ .kind = .IdResultType, .quantifier = .required },
10322 .{ .kind = .IdResult, .quantifier = .required },
10323 .{ .kind = .IdRef, .quantifier = .required },
10324 .{ .kind = .IdRef, .quantifier = .required },
10325 .{ .kind = .LiteralString, .quantifier = .required },
10326 .{ .kind = .LiteralString, .quantifier = .required },
11438 .operands = &.{
11439 .{ .kind = .id_result_type, .quantifier = .required },
11440 .{ .kind = .id_result, .quantifier = .required },
11441 .{ .kind = .id_ref, .quantifier = .required },
11442 .{ .kind = .id_ref, .quantifier = .required },
11443 .{ .kind = .literal_string, .quantifier = .required },
11444 .{ .kind = .literal_string, .quantifier = .required },
1032711445 },
1032811446 },
1032911447 .{
1033011448 .name = "OpAsmCallINTEL",
1033111449 .opcode = 5611,
10332 .operands = &[_]Operand{
10333 .{ .kind = .IdResultType, .quantifier = .required },
10334 .{ .kind = .IdResult, .quantifier = .required },
10335 .{ .kind = .IdRef, .quantifier = .required },
10336 .{ .kind = .IdRef, .quantifier = .variadic },
11450 .operands = &.{
11451 .{ .kind = .id_result_type, .quantifier = .required },
11452 .{ .kind = .id_result, .quantifier = .required },
11453 .{ .kind = .id_ref, .quantifier = .required },
11454 .{ .kind = .id_ref, .quantifier = .variadic },
1033711455 },
1033811456 },
1033911457 .{
1034011458 .name = "OpAtomicFMinEXT",
1034111459 .opcode = 5614,
10342 .operands = &[_]Operand{
10343 .{ .kind = .IdResultType, .quantifier = .required },
10344 .{ .kind = .IdResult, .quantifier = .required },
10345 .{ .kind = .IdRef, .quantifier = .required },
10346 .{ .kind = .IdScope, .quantifier = .required },
10347 .{ .kind = .IdMemorySemantics, .quantifier = .required },
10348 .{ .kind = .IdRef, .quantifier = .required },
11460 .operands = &.{
11461 .{ .kind = .id_result_type, .quantifier = .required },
11462 .{ .kind = .id_result, .quantifier = .required },
11463 .{ .kind = .id_ref, .quantifier = .required },
11464 .{ .kind = .id_scope, .quantifier = .required },
11465 .{ .kind = .id_memory_semantics, .quantifier = .required },
11466 .{ .kind = .id_ref, .quantifier = .required },
1034911467 },
1035011468 },
1035111469 .{
1035211470 .name = "OpAtomicFMaxEXT",
1035311471 .opcode = 5615,
10354 .operands = &[_]Operand{
10355 .{ .kind = .IdResultType, .quantifier = .required },
10356 .{ .kind = .IdResult, .quantifier = .required },
10357 .{ .kind = .IdRef, .quantifier = .required },
10358 .{ .kind = .IdScope, .quantifier = .required },
10359 .{ .kind = .IdMemorySemantics, .quantifier = .required },
10360 .{ .kind = .IdRef, .quantifier = .required },
11472 .operands = &.{
11473 .{ .kind = .id_result_type, .quantifier = .required },
11474 .{ .kind = .id_result, .quantifier = .required },
11475 .{ .kind = .id_ref, .quantifier = .required },
11476 .{ .kind = .id_scope, .quantifier = .required },
11477 .{ .kind = .id_memory_semantics, .quantifier = .required },
11478 .{ .kind = .id_ref, .quantifier = .required },
1036111479 },
1036211480 },
1036311481 .{
1036411482 .name = "OpAssumeTrueKHR",
1036511483 .opcode = 5630,
10366 .operands = &[_]Operand{
10367 .{ .kind = .IdRef, .quantifier = .required },
11484 .operands = &.{
11485 .{ .kind = .id_ref, .quantifier = .required },
1036811486 },
1036911487 },
1037011488 .{
1037111489 .name = "OpExpectKHR",
1037211490 .opcode = 5631,
10373 .operands = &[_]Operand{
10374 .{ .kind = .IdResultType, .quantifier = .required },
10375 .{ .kind = .IdResult, .quantifier = .required },
10376 .{ .kind = .IdRef, .quantifier = .required },
10377 .{ .kind = .IdRef, .quantifier = .required },
11491 .operands = &.{
11492 .{ .kind = .id_result_type, .quantifier = .required },
11493 .{ .kind = .id_result, .quantifier = .required },
11494 .{ .kind = .id_ref, .quantifier = .required },
11495 .{ .kind = .id_ref, .quantifier = .required },
1037811496 },
1037911497 },
1038011498 .{
1038111499 .name = "OpDecorateString",
1038211500 .opcode = 5632,
10383 .operands = &[_]Operand{
10384 .{ .kind = .IdRef, .quantifier = .required },
10385 .{ .kind = .Decoration, .quantifier = .required },
10386 },
10387 },
10388 .{
10389 .name = "OpDecorateStringGOOGLE",
10390 .opcode = 5632,
10391 .operands = &[_]Operand{
10392 .{ .kind = .IdRef, .quantifier = .required },
10393 .{ .kind = .Decoration, .quantifier = .required },
11501 .operands = &.{
11502 .{ .kind = .id_ref, .quantifier = .required },
11503 .{ .kind = .decoration, .quantifier = .required },
1039411504 },
1039511505 },
1039611506 .{
1039711507 .name = "OpMemberDecorateString",
1039811508 .opcode = 5633,
10399 .operands = &[_]Operand{
10400 .{ .kind = .IdRef, .quantifier = .required },
10401 .{ .kind = .LiteralInteger, .quantifier = .required },
10402 .{ .kind = .Decoration, .quantifier = .required },
10403 },
10404 },
10405 .{
10406 .name = "OpMemberDecorateStringGOOGLE",
10407 .opcode = 5633,
10408 .operands = &[_]Operand{
10409 .{ .kind = .IdRef, .quantifier = .required },
10410 .{ .kind = .LiteralInteger, .quantifier = .required },
10411 .{ .kind = .Decoration, .quantifier = .required },
11509 .operands = &.{
11510 .{ .kind = .id_ref, .quantifier = .required },
11511 .{ .kind = .literal_integer, .quantifier = .required },
11512 .{ .kind = .decoration, .quantifier = .required },
1041211513 },
1041311514 },
1041411515 .{
1041511516 .name = "OpVmeImageINTEL",
1041611517 .opcode = 5699,
10417 .operands = &[_]Operand{
10418 .{ .kind = .IdResultType, .quantifier = .required },
10419 .{ .kind = .IdResult, .quantifier = .required },
10420 .{ .kind = .IdRef, .quantifier = .required },
10421 .{ .kind = .IdRef, .quantifier = .required },
11518 .operands = &.{
11519 .{ .kind = .id_result_type, .quantifier = .required },
11520 .{ .kind = .id_result, .quantifier = .required },
11521 .{ .kind = .id_ref, .quantifier = .required },
11522 .{ .kind = .id_ref, .quantifier = .required },
1042211523 },
1042311524 },
1042411525 .{
1042511526 .name = "OpTypeVmeImageINTEL",
1042611527 .opcode = 5700,
10427 .operands = &[_]Operand{
10428 .{ .kind = .IdResult, .quantifier = .required },
10429 .{ .kind = .IdRef, .quantifier = .required },
11528 .operands = &.{
11529 .{ .kind = .id_result, .quantifier = .required },
11530 .{ .kind = .id_ref, .quantifier = .required },
1043011531 },
1043111532 },
1043211533 .{
1043311534 .name = "OpTypeAvcImePayloadINTEL",
1043411535 .opcode = 5701,
10435 .operands = &[_]Operand{
10436 .{ .kind = .IdResult, .quantifier = .required },
11536 .operands = &.{
11537 .{ .kind = .id_result, .quantifier = .required },
1043711538 },
1043811539 },
1043911540 .{
1044011541 .name = "OpTypeAvcRefPayloadINTEL",
1044111542 .opcode = 5702,
10442 .operands = &[_]Operand{
10443 .{ .kind = .IdResult, .quantifier = .required },
11543 .operands = &.{
11544 .{ .kind = .id_result, .quantifier = .required },
1044411545 },
1044511546 },
1044611547 .{
1044711548 .name = "OpTypeAvcSicPayloadINTEL",
1044811549 .opcode = 5703,
10449 .operands = &[_]Operand{
10450 .{ .kind = .IdResult, .quantifier = .required },
11550 .operands = &.{
11551 .{ .kind = .id_result, .quantifier = .required },
1045111552 },
1045211553 },
1045311554 .{
1045411555 .name = "OpTypeAvcMcePayloadINTEL",
1045511556 .opcode = 5704,
10456 .operands = &[_]Operand{
10457 .{ .kind = .IdResult, .quantifier = .required },
11557 .operands = &.{
11558 .{ .kind = .id_result, .quantifier = .required },
1045811559 },
1045911560 },
1046011561 .{
1046111562 .name = "OpTypeAvcMceResultINTEL",
1046211563 .opcode = 5705,
10463 .operands = &[_]Operand{
10464 .{ .kind = .IdResult, .quantifier = .required },
11564 .operands = &.{
11565 .{ .kind = .id_result, .quantifier = .required },
1046511566 },
1046611567 },
1046711568 .{
1046811569 .name = "OpTypeAvcImeResultINTEL",
1046911570 .opcode = 5706,
10470 .operands = &[_]Operand{
10471 .{ .kind = .IdResult, .quantifier = .required },
11571 .operands = &.{
11572 .{ .kind = .id_result, .quantifier = .required },
1047211573 },
1047311574 },
1047411575 .{
1047511576 .name = "OpTypeAvcImeResultSingleReferenceStreamoutINTEL",
1047611577 .opcode = 5707,
10477 .operands = &[_]Operand{
10478 .{ .kind = .IdResult, .quantifier = .required },
11578 .operands = &.{
11579 .{ .kind = .id_result, .quantifier = .required },
1047911580 },
1048011581 },
1048111582 .{
1048211583 .name = "OpTypeAvcImeResultDualReferenceStreamoutINTEL",
1048311584 .opcode = 5708,
10484 .operands = &[_]Operand{
10485 .{ .kind = .IdResult, .quantifier = .required },
11585 .operands = &.{
11586 .{ .kind = .id_result, .quantifier = .required },
1048611587 },
1048711588 },
1048811589 .{
1048911590 .name = "OpTypeAvcImeSingleReferenceStreaminINTEL",
1049011591 .opcode = 5709,
10491 .operands = &[_]Operand{
10492 .{ .kind = .IdResult, .quantifier = .required },
11592 .operands = &.{
11593 .{ .kind = .id_result, .quantifier = .required },
1049311594 },
1049411595 },
1049511596 .{
1049611597 .name = "OpTypeAvcImeDualReferenceStreaminINTEL",
1049711598 .opcode = 5710,
10498 .operands = &[_]Operand{
10499 .{ .kind = .IdResult, .quantifier = .required },
11599 .operands = &.{
11600 .{ .kind = .id_result, .quantifier = .required },
1050011601 },
1050111602 },
1050211603 .{
1050311604 .name = "OpTypeAvcRefResultINTEL",
1050411605 .opcode = 5711,
10505 .operands = &[_]Operand{
10506 .{ .kind = .IdResult, .quantifier = .required },
11606 .operands = &.{
11607 .{ .kind = .id_result, .quantifier = .required },
1050711608 },
1050811609 },
1050911610 .{
1051011611 .name = "OpTypeAvcSicResultINTEL",
1051111612 .opcode = 5712,
10512 .operands = &[_]Operand{
10513 .{ .kind = .IdResult, .quantifier = .required },
11613 .operands = &.{
11614 .{ .kind = .id_result, .quantifier = .required },
1051411615 },
1051511616 },
1051611617 .{
1051711618 .name = "OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL",
1051811619 .opcode = 5713,
10519 .operands = &[_]Operand{
10520 .{ .kind = .IdResultType, .quantifier = .required },
10521 .{ .kind = .IdResult, .quantifier = .required },
10522 .{ .kind = .IdRef, .quantifier = .required },
10523 .{ .kind = .IdRef, .quantifier = .required },
11620 .operands = &.{
11621 .{ .kind = .id_result_type, .quantifier = .required },
11622 .{ .kind = .id_result, .quantifier = .required },
11623 .{ .kind = .id_ref, .quantifier = .required },
11624 .{ .kind = .id_ref, .quantifier = .required },
1052411625 },
1052511626 },
1052611627 .{
1052711628 .name = "OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL",
1052811629 .opcode = 5714,
10529 .operands = &[_]Operand{
10530 .{ .kind = .IdResultType, .quantifier = .required },
10531 .{ .kind = .IdResult, .quantifier = .required },
10532 .{ .kind = .IdRef, .quantifier = .required },
10533 .{ .kind = .IdRef, .quantifier = .required },
11630 .operands = &.{
11631 .{ .kind = .id_result_type, .quantifier = .required },
11632 .{ .kind = .id_result, .quantifier = .required },
11633 .{ .kind = .id_ref, .quantifier = .required },
11634 .{ .kind = .id_ref, .quantifier = .required },
1053411635 },
1053511636 },
1053611637 .{
1053711638 .name = "OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL",
1053811639 .opcode = 5715,
10539 .operands = &[_]Operand{
10540 .{ .kind = .IdResultType, .quantifier = .required },
10541 .{ .kind = .IdResult, .quantifier = .required },
10542 .{ .kind = .IdRef, .quantifier = .required },
10543 .{ .kind = .IdRef, .quantifier = .required },
11640 .operands = &.{
11641 .{ .kind = .id_result_type, .quantifier = .required },
11642 .{ .kind = .id_result, .quantifier = .required },
11643 .{ .kind = .id_ref, .quantifier = .required },
11644 .{ .kind = .id_ref, .quantifier = .required },
1054411645 },
1054511646 },
1054611647 .{
1054711648 .name = "OpSubgroupAvcMceSetInterShapePenaltyINTEL",
1054811649 .opcode = 5716,
10549 .operands = &[_]Operand{
10550 .{ .kind = .IdResultType, .quantifier = .required },
10551 .{ .kind = .IdResult, .quantifier = .required },
10552 .{ .kind = .IdRef, .quantifier = .required },
10553 .{ .kind = .IdRef, .quantifier = .required },
11650 .operands = &.{
11651 .{ .kind = .id_result_type, .quantifier = .required },
11652 .{ .kind = .id_result, .quantifier = .required },
11653 .{ .kind = .id_ref, .quantifier = .required },
11654 .{ .kind = .id_ref, .quantifier = .required },
1055411655 },
1055511656 },
1055611657 .{
1055711658 .name = "OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL",
1055811659 .opcode = 5717,
10559 .operands = &[_]Operand{
10560 .{ .kind = .IdResultType, .quantifier = .required },
10561 .{ .kind = .IdResult, .quantifier = .required },
10562 .{ .kind = .IdRef, .quantifier = .required },
10563 .{ .kind = .IdRef, .quantifier = .required },
11660 .operands = &.{
11661 .{ .kind = .id_result_type, .quantifier = .required },
11662 .{ .kind = .id_result, .quantifier = .required },
11663 .{ .kind = .id_ref, .quantifier = .required },
11664 .{ .kind = .id_ref, .quantifier = .required },
1056411665 },
1056511666 },
1056611667 .{
1056711668 .name = "OpSubgroupAvcMceSetInterDirectionPenaltyINTEL",
1056811669 .opcode = 5718,
10569 .operands = &[_]Operand{
10570 .{ .kind = .IdResultType, .quantifier = .required },
10571 .{ .kind = .IdResult, .quantifier = .required },
10572 .{ .kind = .IdRef, .quantifier = .required },
10573 .{ .kind = .IdRef, .quantifier = .required },
11670 .operands = &.{
11671 .{ .kind = .id_result_type, .quantifier = .required },
11672 .{ .kind = .id_result, .quantifier = .required },
11673 .{ .kind = .id_ref, .quantifier = .required },
11674 .{ .kind = .id_ref, .quantifier = .required },
1057411675 },
1057511676 },
1057611677 .{
1057711678 .name = "OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL",
1057811679 .opcode = 5719,
10579 .operands = &[_]Operand{
10580 .{ .kind = .IdResultType, .quantifier = .required },
10581 .{ .kind = .IdResult, .quantifier = .required },
10582 .{ .kind = .IdRef, .quantifier = .required },
10583 .{ .kind = .IdRef, .quantifier = .required },
11680 .operands = &.{
11681 .{ .kind = .id_result_type, .quantifier = .required },
11682 .{ .kind = .id_result, .quantifier = .required },
11683 .{ .kind = .id_ref, .quantifier = .required },
11684 .{ .kind = .id_ref, .quantifier = .required },
1058411685 },
1058511686 },
1058611687 .{
1058711688 .name = "OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL",
1058811689 .opcode = 5720,
10589 .operands = &[_]Operand{
10590 .{ .kind = .IdResultType, .quantifier = .required },
10591 .{ .kind = .IdResult, .quantifier = .required },
10592 .{ .kind = .IdRef, .quantifier = .required },
10593 .{ .kind = .IdRef, .quantifier = .required },
11690 .operands = &.{
11691 .{ .kind = .id_result_type, .quantifier = .required },
11692 .{ .kind = .id_result, .quantifier = .required },
11693 .{ .kind = .id_ref, .quantifier = .required },
11694 .{ .kind = .id_ref, .quantifier = .required },
1059411695 },
1059511696 },
1059611697 .{
1059711698 .name = "OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL",
1059811699 .opcode = 5721,
10599 .operands = &[_]Operand{
10600 .{ .kind = .IdResultType, .quantifier = .required },
10601 .{ .kind = .IdResult, .quantifier = .required },
11700 .operands = &.{
11701 .{ .kind = .id_result_type, .quantifier = .required },
11702 .{ .kind = .id_result, .quantifier = .required },
1060211703 },
1060311704 },
1060411705 .{
1060511706 .name = "OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL",
1060611707 .opcode = 5722,
10607 .operands = &[_]Operand{
10608 .{ .kind = .IdResultType, .quantifier = .required },
10609 .{ .kind = .IdResult, .quantifier = .required },
11708 .operands = &.{
11709 .{ .kind = .id_result_type, .quantifier = .required },
11710 .{ .kind = .id_result, .quantifier = .required },
1061011711 },
1061111712 },
1061211713 .{
1061311714 .name = "OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL",
1061411715 .opcode = 5723,
10615 .operands = &[_]Operand{
10616 .{ .kind = .IdResultType, .quantifier = .required },
10617 .{ .kind = .IdResult, .quantifier = .required },
11716 .operands = &.{
11717 .{ .kind = .id_result_type, .quantifier = .required },
11718 .{ .kind = .id_result, .quantifier = .required },
1061811719 },
1061911720 },
1062011721 .{
1062111722 .name = "OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL",
1062211723 .opcode = 5724,
10623 .operands = &[_]Operand{
10624 .{ .kind = .IdResultType, .quantifier = .required },
10625 .{ .kind = .IdResult, .quantifier = .required },
10626 .{ .kind = .IdRef, .quantifier = .required },
10627 .{ .kind = .IdRef, .quantifier = .required },
10628 .{ .kind = .IdRef, .quantifier = .required },
10629 .{ .kind = .IdRef, .quantifier = .required },
11724 .operands = &.{
11725 .{ .kind = .id_result_type, .quantifier = .required },
11726 .{ .kind = .id_result, .quantifier = .required },
11727 .{ .kind = .id_ref, .quantifier = .required },
11728 .{ .kind = .id_ref, .quantifier = .required },
11729 .{ .kind = .id_ref, .quantifier = .required },
11730 .{ .kind = .id_ref, .quantifier = .required },
1063011731 },
1063111732 },
1063211733 .{
1063311734 .name = "OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL",
1063411735 .opcode = 5725,
10635 .operands = &[_]Operand{
10636 .{ .kind = .IdResultType, .quantifier = .required },
10637 .{ .kind = .IdResult, .quantifier = .required },
10638 .{ .kind = .IdRef, .quantifier = .required },
10639 .{ .kind = .IdRef, .quantifier = .required },
11736 .operands = &.{
11737 .{ .kind = .id_result_type, .quantifier = .required },
11738 .{ .kind = .id_result, .quantifier = .required },
11739 .{ .kind = .id_ref, .quantifier = .required },
11740 .{ .kind = .id_ref, .quantifier = .required },
1064011741 },
1064111742 },
1064211743 .{
1064311744 .name = "OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL",
1064411745 .opcode = 5726,
10645 .operands = &[_]Operand{
10646 .{ .kind = .IdResultType, .quantifier = .required },
10647 .{ .kind = .IdResult, .quantifier = .required },
11746 .operands = &.{
11747 .{ .kind = .id_result_type, .quantifier = .required },
11748 .{ .kind = .id_result, .quantifier = .required },
1064811749 },
1064911750 },
1065011751 .{
1065111752 .name = "OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL",
1065211753 .opcode = 5727,
10653 .operands = &[_]Operand{
10654 .{ .kind = .IdResultType, .quantifier = .required },
10655 .{ .kind = .IdResult, .quantifier = .required },
11754 .operands = &.{
11755 .{ .kind = .id_result_type, .quantifier = .required },
11756 .{ .kind = .id_result, .quantifier = .required },
1065611757 },
1065711758 },
1065811759 .{
1065911760 .name = "OpSubgroupAvcMceSetAcOnlyHaarINTEL",
1066011761 .opcode = 5728,
10661 .operands = &[_]Operand{
10662 .{ .kind = .IdResultType, .quantifier = .required },
10663 .{ .kind = .IdResult, .quantifier = .required },
10664 .{ .kind = .IdRef, .quantifier = .required },
11762 .operands = &.{
11763 .{ .kind = .id_result_type, .quantifier = .required },
11764 .{ .kind = .id_result, .quantifier = .required },
11765 .{ .kind = .id_ref, .quantifier = .required },
1066511766 },
1066611767 },
1066711768 .{
1066811769 .name = "OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL",
1066911770 .opcode = 5729,
10670 .operands = &[_]Operand{
10671 .{ .kind = .IdResultType, .quantifier = .required },
10672 .{ .kind = .IdResult, .quantifier = .required },
10673 .{ .kind = .IdRef, .quantifier = .required },
10674 .{ .kind = .IdRef, .quantifier = .required },
11771 .operands = &.{
11772 .{ .kind = .id_result_type, .quantifier = .required },
11773 .{ .kind = .id_result, .quantifier = .required },
11774 .{ .kind = .id_ref, .quantifier = .required },
11775 .{ .kind = .id_ref, .quantifier = .required },
1067511776 },
1067611777 },
1067711778 .{
1067811779 .name = "OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL",
1067911780 .opcode = 5730,
10680 .operands = &[_]Operand{
10681 .{ .kind = .IdResultType, .quantifier = .required },
10682 .{ .kind = .IdResult, .quantifier = .required },
10683 .{ .kind = .IdRef, .quantifier = .required },
10684 .{ .kind = .IdRef, .quantifier = .required },
11781 .operands = &.{
11782 .{ .kind = .id_result_type, .quantifier = .required },
11783 .{ .kind = .id_result, .quantifier = .required },
11784 .{ .kind = .id_ref, .quantifier = .required },
11785 .{ .kind = .id_ref, .quantifier = .required },
1068511786 },
1068611787 },
1068711788 .{
1068811789 .name = "OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL",
1068911790 .opcode = 5731,
10690 .operands = &[_]Operand{
10691 .{ .kind = .IdResultType, .quantifier = .required },
10692 .{ .kind = .IdResult, .quantifier = .required },
10693 .{ .kind = .IdRef, .quantifier = .required },
10694 .{ .kind = .IdRef, .quantifier = .required },
10695 .{ .kind = .IdRef, .quantifier = .required },
11791 .operands = &.{
11792 .{ .kind = .id_result_type, .quantifier = .required },
11793 .{ .kind = .id_result, .quantifier = .required },
11794 .{ .kind = .id_ref, .quantifier = .required },
11795 .{ .kind = .id_ref, .quantifier = .required },
11796 .{ .kind = .id_ref, .quantifier = .required },
1069611797 },
1069711798 },
1069811799 .{
1069911800 .name = "OpSubgroupAvcMceConvertToImePayloadINTEL",
1070011801 .opcode = 5732,
10701 .operands = &[_]Operand{
10702 .{ .kind = .IdResultType, .quantifier = .required },
10703 .{ .kind = .IdResult, .quantifier = .required },
10704 .{ .kind = .IdRef, .quantifier = .required },
11802 .operands = &.{
11803 .{ .kind = .id_result_type, .quantifier = .required },
11804 .{ .kind = .id_result, .quantifier = .required },
11805 .{ .kind = .id_ref, .quantifier = .required },
1070511806 },
1070611807 },
1070711808 .{
1070811809 .name = "OpSubgroupAvcMceConvertToImeResultINTEL",
1070911810 .opcode = 5733,
10710 .operands = &[_]Operand{
10711 .{ .kind = .IdResultType, .quantifier = .required },
10712 .{ .kind = .IdResult, .quantifier = .required },
10713 .{ .kind = .IdRef, .quantifier = .required },
11811 .operands = &.{
11812 .{ .kind = .id_result_type, .quantifier = .required },
11813 .{ .kind = .id_result, .quantifier = .required },
11814 .{ .kind = .id_ref, .quantifier = .required },
1071411815 },
1071511816 },
1071611817 .{
1071711818 .name = "OpSubgroupAvcMceConvertToRefPayloadINTEL",
1071811819 .opcode = 5734,
10719 .operands = &[_]Operand{
10720 .{ .kind = .IdResultType, .quantifier = .required },
10721 .{ .kind = .IdResult, .quantifier = .required },
10722 .{ .kind = .IdRef, .quantifier = .required },
11820 .operands = &.{
11821 .{ .kind = .id_result_type, .quantifier = .required },
11822 .{ .kind = .id_result, .quantifier = .required },
11823 .{ .kind = .id_ref, .quantifier = .required },
1072311824 },
1072411825 },
1072511826 .{
1072611827 .name = "OpSubgroupAvcMceConvertToRefResultINTEL",
1072711828 .opcode = 5735,
10728 .operands = &[_]Operand{
10729 .{ .kind = .IdResultType, .quantifier = .required },
10730 .{ .kind = .IdResult, .quantifier = .required },
10731 .{ .kind = .IdRef, .quantifier = .required },
11829 .operands = &.{
11830 .{ .kind = .id_result_type, .quantifier = .required },
11831 .{ .kind = .id_result, .quantifier = .required },
11832 .{ .kind = .id_ref, .quantifier = .required },
1073211833 },
1073311834 },
1073411835 .{
1073511836 .name = "OpSubgroupAvcMceConvertToSicPayloadINTEL",
1073611837 .opcode = 5736,
10737 .operands = &[_]Operand{
10738 .{ .kind = .IdResultType, .quantifier = .required },
10739 .{ .kind = .IdResult, .quantifier = .required },
10740 .{ .kind = .IdRef, .quantifier = .required },
11838 .operands = &.{
11839 .{ .kind = .id_result_type, .quantifier = .required },
11840 .{ .kind = .id_result, .quantifier = .required },
11841 .{ .kind = .id_ref, .quantifier = .required },
1074111842 },
1074211843 },
1074311844 .{
1074411845 .name = "OpSubgroupAvcMceConvertToSicResultINTEL",
1074511846 .opcode = 5737,
10746 .operands = &[_]Operand{
10747 .{ .kind = .IdResultType, .quantifier = .required },
10748 .{ .kind = .IdResult, .quantifier = .required },
10749 .{ .kind = .IdRef, .quantifier = .required },
11847 .operands = &.{
11848 .{ .kind = .id_result_type, .quantifier = .required },
11849 .{ .kind = .id_result, .quantifier = .required },
11850 .{ .kind = .id_ref, .quantifier = .required },
1075011851 },
1075111852 },
1075211853 .{
1075311854 .name = "OpSubgroupAvcMceGetMotionVectorsINTEL",
1075411855 .opcode = 5738,
10755 .operands = &[_]Operand{
10756 .{ .kind = .IdResultType, .quantifier = .required },
10757 .{ .kind = .IdResult, .quantifier = .required },
10758 .{ .kind = .IdRef, .quantifier = .required },
11856 .operands = &.{
11857 .{ .kind = .id_result_type, .quantifier = .required },
11858 .{ .kind = .id_result, .quantifier = .required },
11859 .{ .kind = .id_ref, .quantifier = .required },
1075911860 },
1076011861 },
1076111862 .{
1076211863 .name = "OpSubgroupAvcMceGetInterDistortionsINTEL",
1076311864 .opcode = 5739,
10764 .operands = &[_]Operand{
10765 .{ .kind = .IdResultType, .quantifier = .required },
10766 .{ .kind = .IdResult, .quantifier = .required },
10767 .{ .kind = .IdRef, .quantifier = .required },
11865 .operands = &.{
11866 .{ .kind = .id_result_type, .quantifier = .required },
11867 .{ .kind = .id_result, .quantifier = .required },
11868 .{ .kind = .id_ref, .quantifier = .required },
1076811869 },
1076911870 },
1077011871 .{
1077111872 .name = "OpSubgroupAvcMceGetBestInterDistortionsINTEL",
1077211873 .opcode = 5740,
10773 .operands = &[_]Operand{
10774 .{ .kind = .IdResultType, .quantifier = .required },
10775 .{ .kind = .IdResult, .quantifier = .required },
10776 .{ .kind = .IdRef, .quantifier = .required },
11874 .operands = &.{
11875 .{ .kind = .id_result_type, .quantifier = .required },
11876 .{ .kind = .id_result, .quantifier = .required },
11877 .{ .kind = .id_ref, .quantifier = .required },
1077711878 },
1077811879 },
1077911880 .{
1078011881 .name = "OpSubgroupAvcMceGetInterMajorShapeINTEL",
1078111882 .opcode = 5741,
10782 .operands = &[_]Operand{
10783 .{ .kind = .IdResultType, .quantifier = .required },
10784 .{ .kind = .IdResult, .quantifier = .required },
10785 .{ .kind = .IdRef, .quantifier = .required },
11883 .operands = &.{
11884 .{ .kind = .id_result_type, .quantifier = .required },
11885 .{ .kind = .id_result, .quantifier = .required },
11886 .{ .kind = .id_ref, .quantifier = .required },
1078611887 },
1078711888 },
1078811889 .{
1078911890 .name = "OpSubgroupAvcMceGetInterMinorShapeINTEL",
1079011891 .opcode = 5742,
10791 .operands = &[_]Operand{
10792 .{ .kind = .IdResultType, .quantifier = .required },
10793 .{ .kind = .IdResult, .quantifier = .required },
10794 .{ .kind = .IdRef, .quantifier = .required },
11892 .operands = &.{
11893 .{ .kind = .id_result_type, .quantifier = .required },
11894 .{ .kind = .id_result, .quantifier = .required },
11895 .{ .kind = .id_ref, .quantifier = .required },
1079511896 },
1079611897 },
1079711898 .{
1079811899 .name = "OpSubgroupAvcMceGetInterDirectionsINTEL",
1079911900 .opcode = 5743,
10800 .operands = &[_]Operand{
10801 .{ .kind = .IdResultType, .quantifier = .required },
10802 .{ .kind = .IdResult, .quantifier = .required },
10803 .{ .kind = .IdRef, .quantifier = .required },
11901 .operands = &.{
11902 .{ .kind = .id_result_type, .quantifier = .required },
11903 .{ .kind = .id_result, .quantifier = .required },
11904 .{ .kind = .id_ref, .quantifier = .required },
1080411905 },
1080511906 },
1080611907 .{
1080711908 .name = "OpSubgroupAvcMceGetInterMotionVectorCountINTEL",
1080811909 .opcode = 5744,
10809 .operands = &[_]Operand{
10810 .{ .kind = .IdResultType, .quantifier = .required },
10811 .{ .kind = .IdResult, .quantifier = .required },
10812 .{ .kind = .IdRef, .quantifier = .required },
11910 .operands = &.{
11911 .{ .kind = .id_result_type, .quantifier = .required },
11912 .{ .kind = .id_result, .quantifier = .required },
11913 .{ .kind = .id_ref, .quantifier = .required },
1081311914 },
1081411915 },
1081511916 .{
1081611917 .name = "OpSubgroupAvcMceGetInterReferenceIdsINTEL",
1081711918 .opcode = 5745,
10818 .operands = &[_]Operand{
10819 .{ .kind = .IdResultType, .quantifier = .required },
10820 .{ .kind = .IdResult, .quantifier = .required },
10821 .{ .kind = .IdRef, .quantifier = .required },
11919 .operands = &.{
11920 .{ .kind = .id_result_type, .quantifier = .required },
11921 .{ .kind = .id_result, .quantifier = .required },
11922 .{ .kind = .id_ref, .quantifier = .required },
1082211923 },
1082311924 },
1082411925 .{
1082511926 .name = "OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL",
1082611927 .opcode = 5746,
10827 .operands = &[_]Operand{
10828 .{ .kind = .IdResultType, .quantifier = .required },
10829 .{ .kind = .IdResult, .quantifier = .required },
10830 .{ .kind = .IdRef, .quantifier = .required },
10831 .{ .kind = .IdRef, .quantifier = .required },
10832 .{ .kind = .IdRef, .quantifier = .required },
11928 .operands = &.{
11929 .{ .kind = .id_result_type, .quantifier = .required },
11930 .{ .kind = .id_result, .quantifier = .required },
11931 .{ .kind = .id_ref, .quantifier = .required },
11932 .{ .kind = .id_ref, .quantifier = .required },
11933 .{ .kind = .id_ref, .quantifier = .required },
1083311934 },
1083411935 },
1083511936 .{
1083611937 .name = "OpSubgroupAvcImeInitializeINTEL",
1083711938 .opcode = 5747,
10838 .operands = &[_]Operand{
10839 .{ .kind = .IdResultType, .quantifier = .required },
10840 .{ .kind = .IdResult, .quantifier = .required },
10841 .{ .kind = .IdRef, .quantifier = .required },
10842 .{ .kind = .IdRef, .quantifier = .required },
10843 .{ .kind = .IdRef, .quantifier = .required },
11939 .operands = &.{
11940 .{ .kind = .id_result_type, .quantifier = .required },
11941 .{ .kind = .id_result, .quantifier = .required },
11942 .{ .kind = .id_ref, .quantifier = .required },
11943 .{ .kind = .id_ref, .quantifier = .required },
11944 .{ .kind = .id_ref, .quantifier = .required },
1084411945 },
1084511946 },
1084611947 .{
1084711948 .name = "OpSubgroupAvcImeSetSingleReferenceINTEL",
1084811949 .opcode = 5748,
10849 .operands = &[_]Operand{
10850 .{ .kind = .IdResultType, .quantifier = .required },
10851 .{ .kind = .IdResult, .quantifier = .required },
10852 .{ .kind = .IdRef, .quantifier = .required },
10853 .{ .kind = .IdRef, .quantifier = .required },
10854 .{ .kind = .IdRef, .quantifier = .required },
11950 .operands = &.{
11951 .{ .kind = .id_result_type, .quantifier = .required },
11952 .{ .kind = .id_result, .quantifier = .required },
11953 .{ .kind = .id_ref, .quantifier = .required },
11954 .{ .kind = .id_ref, .quantifier = .required },
11955 .{ .kind = .id_ref, .quantifier = .required },
1085511956 },
1085611957 },
1085711958 .{
1085811959 .name = "OpSubgroupAvcImeSetDualReferenceINTEL",
1085911960 .opcode = 5749,
10860 .operands = &[_]Operand{
10861 .{ .kind = .IdResultType, .quantifier = .required },
10862 .{ .kind = .IdResult, .quantifier = .required },
10863 .{ .kind = .IdRef, .quantifier = .required },
10864 .{ .kind = .IdRef, .quantifier = .required },
10865 .{ .kind = .IdRef, .quantifier = .required },
10866 .{ .kind = .IdRef, .quantifier = .required },
11961 .operands = &.{
11962 .{ .kind = .id_result_type, .quantifier = .required },
11963 .{ .kind = .id_result, .quantifier = .required },
11964 .{ .kind = .id_ref, .quantifier = .required },
11965 .{ .kind = .id_ref, .quantifier = .required },
11966 .{ .kind = .id_ref, .quantifier = .required },
11967 .{ .kind = .id_ref, .quantifier = .required },
1086711968 },
1086811969 },
1086911970 .{
1087011971 .name = "OpSubgroupAvcImeRefWindowSizeINTEL",
1087111972 .opcode = 5750,
10872 .operands = &[_]Operand{
10873 .{ .kind = .IdResultType, .quantifier = .required },
10874 .{ .kind = .IdResult, .quantifier = .required },
10875 .{ .kind = .IdRef, .quantifier = .required },
10876 .{ .kind = .IdRef, .quantifier = .required },
11973 .operands = &.{
11974 .{ .kind = .id_result_type, .quantifier = .required },
11975 .{ .kind = .id_result, .quantifier = .required },
11976 .{ .kind = .id_ref, .quantifier = .required },
11977 .{ .kind = .id_ref, .quantifier = .required },
1087711978 },
1087811979 },
1087911980 .{
1088011981 .name = "OpSubgroupAvcImeAdjustRefOffsetINTEL",
1088111982 .opcode = 5751,
10882 .operands = &[_]Operand{
10883 .{ .kind = .IdResultType, .quantifier = .required },
10884 .{ .kind = .IdResult, .quantifier = .required },
10885 .{ .kind = .IdRef, .quantifier = .required },
10886 .{ .kind = .IdRef, .quantifier = .required },
10887 .{ .kind = .IdRef, .quantifier = .required },
10888 .{ .kind = .IdRef, .quantifier = .required },
11983 .operands = &.{
11984 .{ .kind = .id_result_type, .quantifier = .required },
11985 .{ .kind = .id_result, .quantifier = .required },
11986 .{ .kind = .id_ref, .quantifier = .required },
11987 .{ .kind = .id_ref, .quantifier = .required },
11988 .{ .kind = .id_ref, .quantifier = .required },
11989 .{ .kind = .id_ref, .quantifier = .required },
1088911990 },
1089011991 },
1089111992 .{
1089211993 .name = "OpSubgroupAvcImeConvertToMcePayloadINTEL",
1089311994 .opcode = 5752,
10894 .operands = &[_]Operand{
10895 .{ .kind = .IdResultType, .quantifier = .required },
10896 .{ .kind = .IdResult, .quantifier = .required },
10897 .{ .kind = .IdRef, .quantifier = .required },
11995 .operands = &.{
11996 .{ .kind = .id_result_type, .quantifier = .required },
11997 .{ .kind = .id_result, .quantifier = .required },
11998 .{ .kind = .id_ref, .quantifier = .required },
1089811999 },
1089912000 },
1090012001 .{
1090112002 .name = "OpSubgroupAvcImeSetMaxMotionVectorCountINTEL",
1090212003 .opcode = 5753,
10903 .operands = &[_]Operand{
10904 .{ .kind = .IdResultType, .quantifier = .required },
10905 .{ .kind = .IdResult, .quantifier = .required },
10906 .{ .kind = .IdRef, .quantifier = .required },
10907 .{ .kind = .IdRef, .quantifier = .required },
12004 .operands = &.{
12005 .{ .kind = .id_result_type, .quantifier = .required },
12006 .{ .kind = .id_result, .quantifier = .required },
12007 .{ .kind = .id_ref, .quantifier = .required },
12008 .{ .kind = .id_ref, .quantifier = .required },
1090812009 },
1090912010 },
1091012011 .{
1091112012 .name = "OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL",
1091212013 .opcode = 5754,
10913 .operands = &[_]Operand{
10914 .{ .kind = .IdResultType, .quantifier = .required },
10915 .{ .kind = .IdResult, .quantifier = .required },
10916 .{ .kind = .IdRef, .quantifier = .required },
12014 .operands = &.{
12015 .{ .kind = .id_result_type, .quantifier = .required },
12016 .{ .kind = .id_result, .quantifier = .required },
12017 .{ .kind = .id_ref, .quantifier = .required },
1091712018 },
1091812019 },
1091912020 .{
1092012021 .name = "OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL",
1092112022 .opcode = 5755,
10922 .operands = &[_]Operand{
10923 .{ .kind = .IdResultType, .quantifier = .required },
10924 .{ .kind = .IdResult, .quantifier = .required },
10925 .{ .kind = .IdRef, .quantifier = .required },
10926 .{ .kind = .IdRef, .quantifier = .required },
12023 .operands = &.{
12024 .{ .kind = .id_result_type, .quantifier = .required },
12025 .{ .kind = .id_result, .quantifier = .required },
12026 .{ .kind = .id_ref, .quantifier = .required },
12027 .{ .kind = .id_ref, .quantifier = .required },
1092712028 },
1092812029 },
1092912030 .{
1093012031 .name = "OpSubgroupAvcImeSetWeightedSadINTEL",
1093112032 .opcode = 5756,
10932 .operands = &[_]Operand{
10933 .{ .kind = .IdResultType, .quantifier = .required },
10934 .{ .kind = .IdResult, .quantifier = .required },
10935 .{ .kind = .IdRef, .quantifier = .required },
10936 .{ .kind = .IdRef, .quantifier = .required },
12033 .operands = &.{
12034 .{ .kind = .id_result_type, .quantifier = .required },
12035 .{ .kind = .id_result, .quantifier = .required },
12036 .{ .kind = .id_ref, .quantifier = .required },
12037 .{ .kind = .id_ref, .quantifier = .required },
1093712038 },
1093812039 },
1093912040 .{
1094012041 .name = "OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL",
1094112042 .opcode = 5757,
10942 .operands = &[_]Operand{
10943 .{ .kind = .IdResultType, .quantifier = .required },
10944 .{ .kind = .IdResult, .quantifier = .required },
10945 .{ .kind = .IdRef, .quantifier = .required },
10946 .{ .kind = .IdRef, .quantifier = .required },
10947 .{ .kind = .IdRef, .quantifier = .required },
12043 .operands = &.{
12044 .{ .kind = .id_result_type, .quantifier = .required },
12045 .{ .kind = .id_result, .quantifier = .required },
12046 .{ .kind = .id_ref, .quantifier = .required },
12047 .{ .kind = .id_ref, .quantifier = .required },
12048 .{ .kind = .id_ref, .quantifier = .required },
1094812049 },
1094912050 },
1095012051 .{
1095112052 .name = "OpSubgroupAvcImeEvaluateWithDualReferenceINTEL",
1095212053 .opcode = 5758,
10953 .operands = &[_]Operand{
10954 .{ .kind = .IdResultType, .quantifier = .required },
10955 .{ .kind = .IdResult, .quantifier = .required },
10956 .{ .kind = .IdRef, .quantifier = .required },
10957 .{ .kind = .IdRef, .quantifier = .required },
10958 .{ .kind = .IdRef, .quantifier = .required },
10959 .{ .kind = .IdRef, .quantifier = .required },
12054 .operands = &.{
12055 .{ .kind = .id_result_type, .quantifier = .required },
12056 .{ .kind = .id_result, .quantifier = .required },
12057 .{ .kind = .id_ref, .quantifier = .required },
12058 .{ .kind = .id_ref, .quantifier = .required },
12059 .{ .kind = .id_ref, .quantifier = .required },
12060 .{ .kind = .id_ref, .quantifier = .required },
1096012061 },
1096112062 },
1096212063 .{
1096312064 .name = "OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL",
1096412065 .opcode = 5759,
10965 .operands = &[_]Operand{
10966 .{ .kind = .IdResultType, .quantifier = .required },
10967 .{ .kind = .IdResult, .quantifier = .required },
10968 .{ .kind = .IdRef, .quantifier = .required },
10969 .{ .kind = .IdRef, .quantifier = .required },
10970 .{ .kind = .IdRef, .quantifier = .required },
10971 .{ .kind = .IdRef, .quantifier = .required },
12066 .operands = &.{
12067 .{ .kind = .id_result_type, .quantifier = .required },
12068 .{ .kind = .id_result, .quantifier = .required },
12069 .{ .kind = .id_ref, .quantifier = .required },
12070 .{ .kind = .id_ref, .quantifier = .required },
12071 .{ .kind = .id_ref, .quantifier = .required },
12072 .{ .kind = .id_ref, .quantifier = .required },
1097212073 },
1097312074 },
1097412075 .{
1097512076 .name = "OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL",
1097612077 .opcode = 5760,
10977 .operands = &[_]Operand{
10978 .{ .kind = .IdResultType, .quantifier = .required },
10979 .{ .kind = .IdResult, .quantifier = .required },
10980 .{ .kind = .IdRef, .quantifier = .required },
10981 .{ .kind = .IdRef, .quantifier = .required },
10982 .{ .kind = .IdRef, .quantifier = .required },
10983 .{ .kind = .IdRef, .quantifier = .required },
10984 .{ .kind = .IdRef, .quantifier = .required },
12078 .operands = &.{
12079 .{ .kind = .id_result_type, .quantifier = .required },
12080 .{ .kind = .id_result, .quantifier = .required },
12081 .{ .kind = .id_ref, .quantifier = .required },
12082 .{ .kind = .id_ref, .quantifier = .required },
12083 .{ .kind = .id_ref, .quantifier = .required },
12084 .{ .kind = .id_ref, .quantifier = .required },
12085 .{ .kind = .id_ref, .quantifier = .required },
1098512086 },
1098612087 },
1098712088 .{
1098812089 .name = "OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL",
1098912090 .opcode = 5761,
10990 .operands = &[_]Operand{
10991 .{ .kind = .IdResultType, .quantifier = .required },
10992 .{ .kind = .IdResult, .quantifier = .required },
10993 .{ .kind = .IdRef, .quantifier = .required },
10994 .{ .kind = .IdRef, .quantifier = .required },
10995 .{ .kind = .IdRef, .quantifier = .required },
12091 .operands = &.{
12092 .{ .kind = .id_result_type, .quantifier = .required },
12093 .{ .kind = .id_result, .quantifier = .required },
12094 .{ .kind = .id_ref, .quantifier = .required },
12095 .{ .kind = .id_ref, .quantifier = .required },
12096 .{ .kind = .id_ref, .quantifier = .required },
1099612097 },
1099712098 },
1099812099 .{
1099912100 .name = "OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL",
1100012101 .opcode = 5762,
11001 .operands = &[_]Operand{
11002 .{ .kind = .IdResultType, .quantifier = .required },
11003 .{ .kind = .IdResult, .quantifier = .required },
11004 .{ .kind = .IdRef, .quantifier = .required },
11005 .{ .kind = .IdRef, .quantifier = .required },
11006 .{ .kind = .IdRef, .quantifier = .required },
11007 .{ .kind = .IdRef, .quantifier = .required },
12102 .operands = &.{
12103 .{ .kind = .id_result_type, .quantifier = .required },
12104 .{ .kind = .id_result, .quantifier = .required },
12105 .{ .kind = .id_ref, .quantifier = .required },
12106 .{ .kind = .id_ref, .quantifier = .required },
12107 .{ .kind = .id_ref, .quantifier = .required },
12108 .{ .kind = .id_ref, .quantifier = .required },
1100812109 },
1100912110 },
1101012111 .{
1101112112 .name = "OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL",
1101212113 .opcode = 5763,
11013 .operands = &[_]Operand{
11014 .{ .kind = .IdResultType, .quantifier = .required },
11015 .{ .kind = .IdResult, .quantifier = .required },
11016 .{ .kind = .IdRef, .quantifier = .required },
11017 .{ .kind = .IdRef, .quantifier = .required },
11018 .{ .kind = .IdRef, .quantifier = .required },
11019 .{ .kind = .IdRef, .quantifier = .required },
12114 .operands = &.{
12115 .{ .kind = .id_result_type, .quantifier = .required },
12116 .{ .kind = .id_result, .quantifier = .required },
12117 .{ .kind = .id_ref, .quantifier = .required },
12118 .{ .kind = .id_ref, .quantifier = .required },
12119 .{ .kind = .id_ref, .quantifier = .required },
12120 .{ .kind = .id_ref, .quantifier = .required },
1102012121 },
1102112122 },
1102212123 .{
1102312124 .name = "OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL",
1102412125 .opcode = 5764,
11025 .operands = &[_]Operand{
11026 .{ .kind = .IdResultType, .quantifier = .required },
11027 .{ .kind = .IdResult, .quantifier = .required },
11028 .{ .kind = .IdRef, .quantifier = .required },
11029 .{ .kind = .IdRef, .quantifier = .required },
11030 .{ .kind = .IdRef, .quantifier = .required },
11031 .{ .kind = .IdRef, .quantifier = .required },
11032 .{ .kind = .IdRef, .quantifier = .required },
12126 .operands = &.{
12127 .{ .kind = .id_result_type, .quantifier = .required },
12128 .{ .kind = .id_result, .quantifier = .required },
12129 .{ .kind = .id_ref, .quantifier = .required },
12130 .{ .kind = .id_ref, .quantifier = .required },
12131 .{ .kind = .id_ref, .quantifier = .required },
12132 .{ .kind = .id_ref, .quantifier = .required },
12133 .{ .kind = .id_ref, .quantifier = .required },
1103312134 },
1103412135 },
1103512136 .{
1103612137 .name = "OpSubgroupAvcImeConvertToMceResultINTEL",
1103712138 .opcode = 5765,
11038 .operands = &[_]Operand{
11039 .{ .kind = .IdResultType, .quantifier = .required },
11040 .{ .kind = .IdResult, .quantifier = .required },
11041 .{ .kind = .IdRef, .quantifier = .required },
12139 .operands = &.{
12140 .{ .kind = .id_result_type, .quantifier = .required },
12141 .{ .kind = .id_result, .quantifier = .required },
12142 .{ .kind = .id_ref, .quantifier = .required },
1104212143 },
1104312144 },
1104412145 .{
1104512146 .name = "OpSubgroupAvcImeGetSingleReferenceStreaminINTEL",
1104612147 .opcode = 5766,
11047 .operands = &[_]Operand{
11048 .{ .kind = .IdResultType, .quantifier = .required },
11049 .{ .kind = .IdResult, .quantifier = .required },
11050 .{ .kind = .IdRef, .quantifier = .required },
12148 .operands = &.{
12149 .{ .kind = .id_result_type, .quantifier = .required },
12150 .{ .kind = .id_result, .quantifier = .required },
12151 .{ .kind = .id_ref, .quantifier = .required },
1105112152 },
1105212153 },
1105312154 .{
1105412155 .name = "OpSubgroupAvcImeGetDualReferenceStreaminINTEL",
1105512156 .opcode = 5767,
11056 .operands = &[_]Operand{
11057 .{ .kind = .IdResultType, .quantifier = .required },
11058 .{ .kind = .IdResult, .quantifier = .required },
11059 .{ .kind = .IdRef, .quantifier = .required },
12157 .operands = &.{
12158 .{ .kind = .id_result_type, .quantifier = .required },
12159 .{ .kind = .id_result, .quantifier = .required },
12160 .{ .kind = .id_ref, .quantifier = .required },
1106012161 },
1106112162 },
1106212163 .{
1106312164 .name = "OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL",
1106412165 .opcode = 5768,
11065 .operands = &[_]Operand{
11066 .{ .kind = .IdResultType, .quantifier = .required },
11067 .{ .kind = .IdResult, .quantifier = .required },
11068 .{ .kind = .IdRef, .quantifier = .required },
12166 .operands = &.{
12167 .{ .kind = .id_result_type, .quantifier = .required },
12168 .{ .kind = .id_result, .quantifier = .required },
12169 .{ .kind = .id_ref, .quantifier = .required },
1106912170 },
1107012171 },
1107112172 .{
1107212173 .name = "OpSubgroupAvcImeStripDualReferenceStreamoutINTEL",
1107312174 .opcode = 5769,
11074 .operands = &[_]Operand{
11075 .{ .kind = .IdResultType, .quantifier = .required },
11076 .{ .kind = .IdResult, .quantifier = .required },
11077 .{ .kind = .IdRef, .quantifier = .required },
12175 .operands = &.{
12176 .{ .kind = .id_result_type, .quantifier = .required },
12177 .{ .kind = .id_result, .quantifier = .required },
12178 .{ .kind = .id_ref, .quantifier = .required },
1107812179 },
1107912180 },
1108012181 .{
1108112182 .name = "OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL",
1108212183 .opcode = 5770,
11083 .operands = &[_]Operand{
11084 .{ .kind = .IdResultType, .quantifier = .required },
11085 .{ .kind = .IdResult, .quantifier = .required },
11086 .{ .kind = .IdRef, .quantifier = .required },
11087 .{ .kind = .IdRef, .quantifier = .required },
12184 .operands = &.{
12185 .{ .kind = .id_result_type, .quantifier = .required },
12186 .{ .kind = .id_result, .quantifier = .required },
12187 .{ .kind = .id_ref, .quantifier = .required },
12188 .{ .kind = .id_ref, .quantifier = .required },
1108812189 },
1108912190 },
1109012191 .{
1109112192 .name = "OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL",
1109212193 .opcode = 5771,
11093 .operands = &[_]Operand{
11094 .{ .kind = .IdResultType, .quantifier = .required },
11095 .{ .kind = .IdResult, .quantifier = .required },
11096 .{ .kind = .IdRef, .quantifier = .required },
11097 .{ .kind = .IdRef, .quantifier = .required },
12194 .operands = &.{
12195 .{ .kind = .id_result_type, .quantifier = .required },
12196 .{ .kind = .id_result, .quantifier = .required },
12197 .{ .kind = .id_ref, .quantifier = .required },
12198 .{ .kind = .id_ref, .quantifier = .required },
1109812199 },
1109912200 },
1110012201 .{
1110112202 .name = "OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL",
1110212203 .opcode = 5772,
11103 .operands = &[_]Operand{
11104 .{ .kind = .IdResultType, .quantifier = .required },
11105 .{ .kind = .IdResult, .quantifier = .required },
11106 .{ .kind = .IdRef, .quantifier = .required },
11107 .{ .kind = .IdRef, .quantifier = .required },
12204 .operands = &.{
12205 .{ .kind = .id_result_type, .quantifier = .required },
12206 .{ .kind = .id_result, .quantifier = .required },
12207 .{ .kind = .id_ref, .quantifier = .required },
12208 .{ .kind = .id_ref, .quantifier = .required },
1110812209 },
1110912210 },
1111012211 .{
1111112212 .name = "OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL",
1111212213 .opcode = 5773,
11113 .operands = &[_]Operand{
11114 .{ .kind = .IdResultType, .quantifier = .required },
11115 .{ .kind = .IdResult, .quantifier = .required },
11116 .{ .kind = .IdRef, .quantifier = .required },
11117 .{ .kind = .IdRef, .quantifier = .required },
11118 .{ .kind = .IdRef, .quantifier = .required },
12214 .operands = &.{
12215 .{ .kind = .id_result_type, .quantifier = .required },
12216 .{ .kind = .id_result, .quantifier = .required },
12217 .{ .kind = .id_ref, .quantifier = .required },
12218 .{ .kind = .id_ref, .quantifier = .required },
12219 .{ .kind = .id_ref, .quantifier = .required },
1111912220 },
1112012221 },
1112112222 .{
1112212223 .name = "OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL",
1112312224 .opcode = 5774,
11124 .operands = &[_]Operand{
11125 .{ .kind = .IdResultType, .quantifier = .required },
11126 .{ .kind = .IdResult, .quantifier = .required },
11127 .{ .kind = .IdRef, .quantifier = .required },
11128 .{ .kind = .IdRef, .quantifier = .required },
11129 .{ .kind = .IdRef, .quantifier = .required },
12225 .operands = &.{
12226 .{ .kind = .id_result_type, .quantifier = .required },
12227 .{ .kind = .id_result, .quantifier = .required },
12228 .{ .kind = .id_ref, .quantifier = .required },
12229 .{ .kind = .id_ref, .quantifier = .required },
12230 .{ .kind = .id_ref, .quantifier = .required },
1113012231 },
1113112232 },
1113212233 .{
1113312234 .name = "OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL",
1113412235 .opcode = 5775,
11135 .operands = &[_]Operand{
11136 .{ .kind = .IdResultType, .quantifier = .required },
11137 .{ .kind = .IdResult, .quantifier = .required },
11138 .{ .kind = .IdRef, .quantifier = .required },
11139 .{ .kind = .IdRef, .quantifier = .required },
11140 .{ .kind = .IdRef, .quantifier = .required },
12236 .operands = &.{
12237 .{ .kind = .id_result_type, .quantifier = .required },
12238 .{ .kind = .id_result, .quantifier = .required },
12239 .{ .kind = .id_ref, .quantifier = .required },
12240 .{ .kind = .id_ref, .quantifier = .required },
12241 .{ .kind = .id_ref, .quantifier = .required },
1114112242 },
1114212243 },
1114312244 .{
1114412245 .name = "OpSubgroupAvcImeGetBorderReachedINTEL",
1114512246 .opcode = 5776,
11146 .operands = &[_]Operand{
11147 .{ .kind = .IdResultType, .quantifier = .required },
11148 .{ .kind = .IdResult, .quantifier = .required },
11149 .{ .kind = .IdRef, .quantifier = .required },
11150 .{ .kind = .IdRef, .quantifier = .required },
12247 .operands = &.{
12248 .{ .kind = .id_result_type, .quantifier = .required },
12249 .{ .kind = .id_result, .quantifier = .required },
12250 .{ .kind = .id_ref, .quantifier = .required },
12251 .{ .kind = .id_ref, .quantifier = .required },
1115112252 },
1115212253 },
1115312254 .{
1115412255 .name = "OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL",
1115512256 .opcode = 5777,
11156 .operands = &[_]Operand{
11157 .{ .kind = .IdResultType, .quantifier = .required },
11158 .{ .kind = .IdResult, .quantifier = .required },
11159 .{ .kind = .IdRef, .quantifier = .required },
12257 .operands = &.{
12258 .{ .kind = .id_result_type, .quantifier = .required },
12259 .{ .kind = .id_result, .quantifier = .required },
12260 .{ .kind = .id_ref, .quantifier = .required },
1116012261 },
1116112262 },
1116212263 .{
1116312264 .name = "OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL",
1116412265 .opcode = 5778,
11165 .operands = &[_]Operand{
11166 .{ .kind = .IdResultType, .quantifier = .required },
11167 .{ .kind = .IdResult, .quantifier = .required },
11168 .{ .kind = .IdRef, .quantifier = .required },
12266 .operands = &.{
12267 .{ .kind = .id_result_type, .quantifier = .required },
12268 .{ .kind = .id_result, .quantifier = .required },
12269 .{ .kind = .id_ref, .quantifier = .required },
1116912270 },
1117012271 },
1117112272 .{
1117212273 .name = "OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL",
1117312274 .opcode = 5779,
11174 .operands = &[_]Operand{
11175 .{ .kind = .IdResultType, .quantifier = .required },
11176 .{ .kind = .IdResult, .quantifier = .required },
11177 .{ .kind = .IdRef, .quantifier = .required },
12275 .operands = &.{
12276 .{ .kind = .id_result_type, .quantifier = .required },
12277 .{ .kind = .id_result, .quantifier = .required },
12278 .{ .kind = .id_ref, .quantifier = .required },
1117812279 },
1117912280 },
1118012281 .{
1118112282 .name = "OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL",
1118212283 .opcode = 5780,
11183 .operands = &[_]Operand{
11184 .{ .kind = .IdResultType, .quantifier = .required },
11185 .{ .kind = .IdResult, .quantifier = .required },
11186 .{ .kind = .IdRef, .quantifier = .required },
12284 .operands = &.{
12285 .{ .kind = .id_result_type, .quantifier = .required },
12286 .{ .kind = .id_result, .quantifier = .required },
12287 .{ .kind = .id_ref, .quantifier = .required },
1118712288 },
1118812289 },
1118912290 .{
1119012291 .name = "OpSubgroupAvcFmeInitializeINTEL",
1119112292 .opcode = 5781,
11192 .operands = &[_]Operand{
11193 .{ .kind = .IdResultType, .quantifier = .required },
11194 .{ .kind = .IdResult, .quantifier = .required },
11195 .{ .kind = .IdRef, .quantifier = .required },
11196 .{ .kind = .IdRef, .quantifier = .required },
11197 .{ .kind = .IdRef, .quantifier = .required },
11198 .{ .kind = .IdRef, .quantifier = .required },
11199 .{ .kind = .IdRef, .quantifier = .required },
11200 .{ .kind = .IdRef, .quantifier = .required },
11201 .{ .kind = .IdRef, .quantifier = .required },
12293 .operands = &.{
12294 .{ .kind = .id_result_type, .quantifier = .required },
12295 .{ .kind = .id_result, .quantifier = .required },
12296 .{ .kind = .id_ref, .quantifier = .required },
12297 .{ .kind = .id_ref, .quantifier = .required },
12298 .{ .kind = .id_ref, .quantifier = .required },
12299 .{ .kind = .id_ref, .quantifier = .required },
12300 .{ .kind = .id_ref, .quantifier = .required },
12301 .{ .kind = .id_ref, .quantifier = .required },
12302 .{ .kind = .id_ref, .quantifier = .required },
1120212303 },
1120312304 },
1120412305 .{
1120512306 .name = "OpSubgroupAvcBmeInitializeINTEL",
1120612307 .opcode = 5782,
11207 .operands = &[_]Operand{
11208 .{ .kind = .IdResultType, .quantifier = .required },
11209 .{ .kind = .IdResult, .quantifier = .required },
11210 .{ .kind = .IdRef, .quantifier = .required },
11211 .{ .kind = .IdRef, .quantifier = .required },
11212 .{ .kind = .IdRef, .quantifier = .required },
11213 .{ .kind = .IdRef, .quantifier = .required },
11214 .{ .kind = .IdRef, .quantifier = .required },
11215 .{ .kind = .IdRef, .quantifier = .required },
11216 .{ .kind = .IdRef, .quantifier = .required },
11217 .{ .kind = .IdRef, .quantifier = .required },
12308 .operands = &.{
12309 .{ .kind = .id_result_type, .quantifier = .required },
12310 .{ .kind = .id_result, .quantifier = .required },
12311 .{ .kind = .id_ref, .quantifier = .required },
12312 .{ .kind = .id_ref, .quantifier = .required },
12313 .{ .kind = .id_ref, .quantifier = .required },
12314 .{ .kind = .id_ref, .quantifier = .required },
12315 .{ .kind = .id_ref, .quantifier = .required },
12316 .{ .kind = .id_ref, .quantifier = .required },
12317 .{ .kind = .id_ref, .quantifier = .required },
12318 .{ .kind = .id_ref, .quantifier = .required },
1121812319 },
1121912320 },
1122012321 .{
1122112322 .name = "OpSubgroupAvcRefConvertToMcePayloadINTEL",
1122212323 .opcode = 5783,
11223 .operands = &[_]Operand{
11224 .{ .kind = .IdResultType, .quantifier = .required },
11225 .{ .kind = .IdResult, .quantifier = .required },
11226 .{ .kind = .IdRef, .quantifier = .required },
12324 .operands = &.{
12325 .{ .kind = .id_result_type, .quantifier = .required },
12326 .{ .kind = .id_result, .quantifier = .required },
12327 .{ .kind = .id_ref, .quantifier = .required },
1122712328 },
1122812329 },
1122912330 .{
1123012331 .name = "OpSubgroupAvcRefSetBidirectionalMixDisableINTEL",
1123112332 .opcode = 5784,
11232 .operands = &[_]Operand{
11233 .{ .kind = .IdResultType, .quantifier = .required },
11234 .{ .kind = .IdResult, .quantifier = .required },
11235 .{ .kind = .IdRef, .quantifier = .required },
12333 .operands = &.{
12334 .{ .kind = .id_result_type, .quantifier = .required },
12335 .{ .kind = .id_result, .quantifier = .required },
12336 .{ .kind = .id_ref, .quantifier = .required },
1123612337 },
1123712338 },
1123812339 .{
1123912340 .name = "OpSubgroupAvcRefSetBilinearFilterEnableINTEL",
1124012341 .opcode = 5785,
11241 .operands = &[_]Operand{
11242 .{ .kind = .IdResultType, .quantifier = .required },
11243 .{ .kind = .IdResult, .quantifier = .required },
11244 .{ .kind = .IdRef, .quantifier = .required },
12342 .operands = &.{
12343 .{ .kind = .id_result_type, .quantifier = .required },
12344 .{ .kind = .id_result, .quantifier = .required },
12345 .{ .kind = .id_ref, .quantifier = .required },
1124512346 },
1124612347 },
1124712348 .{
1124812349 .name = "OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL",
1124912350 .opcode = 5786,
11250 .operands = &[_]Operand{
11251 .{ .kind = .IdResultType, .quantifier = .required },
11252 .{ .kind = .IdResult, .quantifier = .required },
11253 .{ .kind = .IdRef, .quantifier = .required },
11254 .{ .kind = .IdRef, .quantifier = .required },
11255 .{ .kind = .IdRef, .quantifier = .required },
12351 .operands = &.{
12352 .{ .kind = .id_result_type, .quantifier = .required },
12353 .{ .kind = .id_result, .quantifier = .required },
12354 .{ .kind = .id_ref, .quantifier = .required },
12355 .{ .kind = .id_ref, .quantifier = .required },
12356 .{ .kind = .id_ref, .quantifier = .required },
1125612357 },
1125712358 },
1125812359 .{
1125912360 .name = "OpSubgroupAvcRefEvaluateWithDualReferenceINTEL",
1126012361 .opcode = 5787,
11261 .operands = &[_]Operand{
11262 .{ .kind = .IdResultType, .quantifier = .required },
11263 .{ .kind = .IdResult, .quantifier = .required },
11264 .{ .kind = .IdRef, .quantifier = .required },
11265 .{ .kind = .IdRef, .quantifier = .required },
11266 .{ .kind = .IdRef, .quantifier = .required },
11267 .{ .kind = .IdRef, .quantifier = .required },
12362 .operands = &.{
12363 .{ .kind = .id_result_type, .quantifier = .required },
12364 .{ .kind = .id_result, .quantifier = .required },
12365 .{ .kind = .id_ref, .quantifier = .required },
12366 .{ .kind = .id_ref, .quantifier = .required },
12367 .{ .kind = .id_ref, .quantifier = .required },
12368 .{ .kind = .id_ref, .quantifier = .required },
1126812369 },
1126912370 },
1127012371 .{
1127112372 .name = "OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL",
1127212373 .opcode = 5788,
11273 .operands = &[_]Operand{
11274 .{ .kind = .IdResultType, .quantifier = .required },
11275 .{ .kind = .IdResult, .quantifier = .required },
11276 .{ .kind = .IdRef, .quantifier = .required },
11277 .{ .kind = .IdRef, .quantifier = .required },
11278 .{ .kind = .IdRef, .quantifier = .required },
12374 .operands = &.{
12375 .{ .kind = .id_result_type, .quantifier = .required },
12376 .{ .kind = .id_result, .quantifier = .required },
12377 .{ .kind = .id_ref, .quantifier = .required },
12378 .{ .kind = .id_ref, .quantifier = .required },
12379 .{ .kind = .id_ref, .quantifier = .required },
1127912380 },
1128012381 },
1128112382 .{
1128212383 .name = "OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL",
1128312384 .opcode = 5789,
11284 .operands = &[_]Operand{
11285 .{ .kind = .IdResultType, .quantifier = .required },
11286 .{ .kind = .IdResult, .quantifier = .required },
11287 .{ .kind = .IdRef, .quantifier = .required },
11288 .{ .kind = .IdRef, .quantifier = .required },
11289 .{ .kind = .IdRef, .quantifier = .required },
11290 .{ .kind = .IdRef, .quantifier = .required },
12385 .operands = &.{
12386 .{ .kind = .id_result_type, .quantifier = .required },
12387 .{ .kind = .id_result, .quantifier = .required },
12388 .{ .kind = .id_ref, .quantifier = .required },
12389 .{ .kind = .id_ref, .quantifier = .required },
12390 .{ .kind = .id_ref, .quantifier = .required },
12391 .{ .kind = .id_ref, .quantifier = .required },
1129112392 },
1129212393 },
1129312394 .{
1129412395 .name = "OpSubgroupAvcRefConvertToMceResultINTEL",
1129512396 .opcode = 5790,
11296 .operands = &[_]Operand{
11297 .{ .kind = .IdResultType, .quantifier = .required },
11298 .{ .kind = .IdResult, .quantifier = .required },
11299 .{ .kind = .IdRef, .quantifier = .required },
12397 .operands = &.{
12398 .{ .kind = .id_result_type, .quantifier = .required },
12399 .{ .kind = .id_result, .quantifier = .required },
12400 .{ .kind = .id_ref, .quantifier = .required },
1130012401 },
1130112402 },
1130212403 .{
1130312404 .name = "OpSubgroupAvcSicInitializeINTEL",
1130412405 .opcode = 5791,
11305 .operands = &[_]Operand{
11306 .{ .kind = .IdResultType, .quantifier = .required },
11307 .{ .kind = .IdResult, .quantifier = .required },
11308 .{ .kind = .IdRef, .quantifier = .required },
12406 .operands = &.{
12407 .{ .kind = .id_result_type, .quantifier = .required },
12408 .{ .kind = .id_result, .quantifier = .required },
12409 .{ .kind = .id_ref, .quantifier = .required },
1130912410 },
1131012411 },
1131112412 .{
1131212413 .name = "OpSubgroupAvcSicConfigureSkcINTEL",
1131312414 .opcode = 5792,
11314 .operands = &[_]Operand{
11315 .{ .kind = .IdResultType, .quantifier = .required },
11316 .{ .kind = .IdResult, .quantifier = .required },
11317 .{ .kind = .IdRef, .quantifier = .required },
11318 .{ .kind = .IdRef, .quantifier = .required },
11319 .{ .kind = .IdRef, .quantifier = .required },
11320 .{ .kind = .IdRef, .quantifier = .required },
11321 .{ .kind = .IdRef, .quantifier = .required },
11322 .{ .kind = .IdRef, .quantifier = .required },
12415 .operands = &.{
12416 .{ .kind = .id_result_type, .quantifier = .required },
12417 .{ .kind = .id_result, .quantifier = .required },
12418 .{ .kind = .id_ref, .quantifier = .required },
12419 .{ .kind = .id_ref, .quantifier = .required },
12420 .{ .kind = .id_ref, .quantifier = .required },
12421 .{ .kind = .id_ref, .quantifier = .required },
12422 .{ .kind = .id_ref, .quantifier = .required },
12423 .{ .kind = .id_ref, .quantifier = .required },
1132312424 },
1132412425 },
1132512426 .{
1132612427 .name = "OpSubgroupAvcSicConfigureIpeLumaINTEL",
1132712428 .opcode = 5793,
11328 .operands = &[_]Operand{
11329 .{ .kind = .IdResultType, .quantifier = .required },
11330 .{ .kind = .IdResult, .quantifier = .required },
11331 .{ .kind = .IdRef, .quantifier = .required },
11332 .{ .kind = .IdRef, .quantifier = .required },
11333 .{ .kind = .IdRef, .quantifier = .required },
11334 .{ .kind = .IdRef, .quantifier = .required },
11335 .{ .kind = .IdRef, .quantifier = .required },
11336 .{ .kind = .IdRef, .quantifier = .required },
11337 .{ .kind = .IdRef, .quantifier = .required },
11338 .{ .kind = .IdRef, .quantifier = .required },
12429 .operands = &.{
12430 .{ .kind = .id_result_type, .quantifier = .required },
12431 .{ .kind = .id_result, .quantifier = .required },
12432 .{ .kind = .id_ref, .quantifier = .required },
12433 .{ .kind = .id_ref, .quantifier = .required },
12434 .{ .kind = .id_ref, .quantifier = .required },
12435 .{ .kind = .id_ref, .quantifier = .required },
12436 .{ .kind = .id_ref, .quantifier = .required },
12437 .{ .kind = .id_ref, .quantifier = .required },
12438 .{ .kind = .id_ref, .quantifier = .required },
12439 .{ .kind = .id_ref, .quantifier = .required },
1133912440 },
1134012441 },
1134112442 .{
1134212443 .name = "OpSubgroupAvcSicConfigureIpeLumaChromaINTEL",
1134312444 .opcode = 5794,
11344 .operands = &[_]Operand{
11345 .{ .kind = .IdResultType, .quantifier = .required },
11346 .{ .kind = .IdResult, .quantifier = .required },
11347 .{ .kind = .IdRef, .quantifier = .required },
11348 .{ .kind = .IdRef, .quantifier = .required },
11349 .{ .kind = .IdRef, .quantifier = .required },
11350 .{ .kind = .IdRef, .quantifier = .required },
11351 .{ .kind = .IdRef, .quantifier = .required },
11352 .{ .kind = .IdRef, .quantifier = .required },
11353 .{ .kind = .IdRef, .quantifier = .required },
11354 .{ .kind = .IdRef, .quantifier = .required },
11355 .{ .kind = .IdRef, .quantifier = .required },
11356 .{ .kind = .IdRef, .quantifier = .required },
11357 .{ .kind = .IdRef, .quantifier = .required },
12445 .operands = &.{
12446 .{ .kind = .id_result_type, .quantifier = .required },
12447 .{ .kind = .id_result, .quantifier = .required },
12448 .{ .kind = .id_ref, .quantifier = .required },
12449 .{ .kind = .id_ref, .quantifier = .required },
12450 .{ .kind = .id_ref, .quantifier = .required },
12451 .{ .kind = .id_ref, .quantifier = .required },
12452 .{ .kind = .id_ref, .quantifier = .required },
12453 .{ .kind = .id_ref, .quantifier = .required },
12454 .{ .kind = .id_ref, .quantifier = .required },
12455 .{ .kind = .id_ref, .quantifier = .required },
12456 .{ .kind = .id_ref, .quantifier = .required },
12457 .{ .kind = .id_ref, .quantifier = .required },
12458 .{ .kind = .id_ref, .quantifier = .required },
1135812459 },
1135912460 },
1136012461 .{
1136112462 .name = "OpSubgroupAvcSicGetMotionVectorMaskINTEL",
1136212463 .opcode = 5795,
11363 .operands = &[_]Operand{
11364 .{ .kind = .IdResultType, .quantifier = .required },
11365 .{ .kind = .IdResult, .quantifier = .required },
11366 .{ .kind = .IdRef, .quantifier = .required },
11367 .{ .kind = .IdRef, .quantifier = .required },
12464 .operands = &.{
12465 .{ .kind = .id_result_type, .quantifier = .required },
12466 .{ .kind = .id_result, .quantifier = .required },
12467 .{ .kind = .id_ref, .quantifier = .required },
12468 .{ .kind = .id_ref, .quantifier = .required },
1136812469 },
1136912470 },
1137012471 .{
1137112472 .name = "OpSubgroupAvcSicConvertToMcePayloadINTEL",
1137212473 .opcode = 5796,
11373 .operands = &[_]Operand{
11374 .{ .kind = .IdResultType, .quantifier = .required },
11375 .{ .kind = .IdResult, .quantifier = .required },
11376 .{ .kind = .IdRef, .quantifier = .required },
12474 .operands = &.{
12475 .{ .kind = .id_result_type, .quantifier = .required },
12476 .{ .kind = .id_result, .quantifier = .required },
12477 .{ .kind = .id_ref, .quantifier = .required },
1137712478 },
1137812479 },
1137912480 .{
1138012481 .name = "OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL",
1138112482 .opcode = 5797,
11382 .operands = &[_]Operand{
11383 .{ .kind = .IdResultType, .quantifier = .required },
11384 .{ .kind = .IdResult, .quantifier = .required },
11385 .{ .kind = .IdRef, .quantifier = .required },
11386 .{ .kind = .IdRef, .quantifier = .required },
12483 .operands = &.{
12484 .{ .kind = .id_result_type, .quantifier = .required },
12485 .{ .kind = .id_result, .quantifier = .required },
12486 .{ .kind = .id_ref, .quantifier = .required },
12487 .{ .kind = .id_ref, .quantifier = .required },
1138712488 },
1138812489 },
1138912490 .{
1139012491 .name = "OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL",
1139112492 .opcode = 5798,
11392 .operands = &[_]Operand{
11393 .{ .kind = .IdResultType, .quantifier = .required },
11394 .{ .kind = .IdResult, .quantifier = .required },
11395 .{ .kind = .IdRef, .quantifier = .required },
11396 .{ .kind = .IdRef, .quantifier = .required },
11397 .{ .kind = .IdRef, .quantifier = .required },
11398 .{ .kind = .IdRef, .quantifier = .required },
12493 .operands = &.{
12494 .{ .kind = .id_result_type, .quantifier = .required },
12495 .{ .kind = .id_result, .quantifier = .required },
12496 .{ .kind = .id_ref, .quantifier = .required },
12497 .{ .kind = .id_ref, .quantifier = .required },
12498 .{ .kind = .id_ref, .quantifier = .required },
12499 .{ .kind = .id_ref, .quantifier = .required },
1139912500 },
1140012501 },
1140112502 .{
1140212503 .name = "OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL",
1140312504 .opcode = 5799,
11404 .operands = &[_]Operand{
11405 .{ .kind = .IdResultType, .quantifier = .required },
11406 .{ .kind = .IdResult, .quantifier = .required },
11407 .{ .kind = .IdRef, .quantifier = .required },
11408 .{ .kind = .IdRef, .quantifier = .required },
12505 .operands = &.{
12506 .{ .kind = .id_result_type, .quantifier = .required },
12507 .{ .kind = .id_result, .quantifier = .required },
12508 .{ .kind = .id_ref, .quantifier = .required },
12509 .{ .kind = .id_ref, .quantifier = .required },
1140912510 },
1141012511 },
1141112512 .{
1141212513 .name = "OpSubgroupAvcSicSetBilinearFilterEnableINTEL",
1141312514 .opcode = 5800,
11414 .operands = &[_]Operand{
11415 .{ .kind = .IdResultType, .quantifier = .required },
11416 .{ .kind = .IdResult, .quantifier = .required },
11417 .{ .kind = .IdRef, .quantifier = .required },
12515 .operands = &.{
12516 .{ .kind = .id_result_type, .quantifier = .required },
12517 .{ .kind = .id_result, .quantifier = .required },
12518 .{ .kind = .id_ref, .quantifier = .required },
1141812519 },
1141912520 },
1142012521 .{
1142112522 .name = "OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL",
1142212523 .opcode = 5801,
11423 .operands = &[_]Operand{
11424 .{ .kind = .IdResultType, .quantifier = .required },
11425 .{ .kind = .IdResult, .quantifier = .required },
11426 .{ .kind = .IdRef, .quantifier = .required },
11427 .{ .kind = .IdRef, .quantifier = .required },
12524 .operands = &.{
12525 .{ .kind = .id_result_type, .quantifier = .required },
12526 .{ .kind = .id_result, .quantifier = .required },
12527 .{ .kind = .id_ref, .quantifier = .required },
12528 .{ .kind = .id_ref, .quantifier = .required },
1142812529 },
1142912530 },
1143012531 .{
1143112532 .name = "OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL",
1143212533 .opcode = 5802,
11433 .operands = &[_]Operand{
11434 .{ .kind = .IdResultType, .quantifier = .required },
11435 .{ .kind = .IdResult, .quantifier = .required },
11436 .{ .kind = .IdRef, .quantifier = .required },
11437 .{ .kind = .IdRef, .quantifier = .required },
12534 .operands = &.{
12535 .{ .kind = .id_result_type, .quantifier = .required },
12536 .{ .kind = .id_result, .quantifier = .required },
12537 .{ .kind = .id_ref, .quantifier = .required },
12538 .{ .kind = .id_ref, .quantifier = .required },
1143812539 },
1143912540 },
1144012541 .{
1144112542 .name = "OpSubgroupAvcSicEvaluateIpeINTEL",
1144212543 .opcode = 5803,
11443 .operands = &[_]Operand{
11444 .{ .kind = .IdResultType, .quantifier = .required },
11445 .{ .kind = .IdResult, .quantifier = .required },
11446 .{ .kind = .IdRef, .quantifier = .required },
11447 .{ .kind = .IdRef, .quantifier = .required },
12544 .operands = &.{
12545 .{ .kind = .id_result_type, .quantifier = .required },
12546 .{ .kind = .id_result, .quantifier = .required },
12547 .{ .kind = .id_ref, .quantifier = .required },
12548 .{ .kind = .id_ref, .quantifier = .required },
1144812549 },
1144912550 },
1145012551 .{
1145112552 .name = "OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL",
1145212553 .opcode = 5804,
11453 .operands = &[_]Operand{
11454 .{ .kind = .IdResultType, .quantifier = .required },
11455 .{ .kind = .IdResult, .quantifier = .required },
11456 .{ .kind = .IdRef, .quantifier = .required },
11457 .{ .kind = .IdRef, .quantifier = .required },
11458 .{ .kind = .IdRef, .quantifier = .required },
12554 .operands = &.{
12555 .{ .kind = .id_result_type, .quantifier = .required },
12556 .{ .kind = .id_result, .quantifier = .required },
12557 .{ .kind = .id_ref, .quantifier = .required },
12558 .{ .kind = .id_ref, .quantifier = .required },
12559 .{ .kind = .id_ref, .quantifier = .required },
1145912560 },
1146012561 },
1146112562 .{
1146212563 .name = "OpSubgroupAvcSicEvaluateWithDualReferenceINTEL",
1146312564 .opcode = 5805,
11464 .operands = &[_]Operand{
11465 .{ .kind = .IdResultType, .quantifier = .required },
11466 .{ .kind = .IdResult, .quantifier = .required },
11467 .{ .kind = .IdRef, .quantifier = .required },
11468 .{ .kind = .IdRef, .quantifier = .required },
11469 .{ .kind = .IdRef, .quantifier = .required },
11470 .{ .kind = .IdRef, .quantifier = .required },
12565 .operands = &.{
12566 .{ .kind = .id_result_type, .quantifier = .required },
12567 .{ .kind = .id_result, .quantifier = .required },
12568 .{ .kind = .id_ref, .quantifier = .required },
12569 .{ .kind = .id_ref, .quantifier = .required },
12570 .{ .kind = .id_ref, .quantifier = .required },
12571 .{ .kind = .id_ref, .quantifier = .required },
1147112572 },
1147212573 },
1147312574 .{
1147412575 .name = "OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL",
1147512576 .opcode = 5806,
11476 .operands = &[_]Operand{
11477 .{ .kind = .IdResultType, .quantifier = .required },
11478 .{ .kind = .IdResult, .quantifier = .required },
11479 .{ .kind = .IdRef, .quantifier = .required },
11480 .{ .kind = .IdRef, .quantifier = .required },
11481 .{ .kind = .IdRef, .quantifier = .required },
12577 .operands = &.{
12578 .{ .kind = .id_result_type, .quantifier = .required },
12579 .{ .kind = .id_result, .quantifier = .required },
12580 .{ .kind = .id_ref, .quantifier = .required },
12581 .{ .kind = .id_ref, .quantifier = .required },
12582 .{ .kind = .id_ref, .quantifier = .required },
1148212583 },
1148312584 },
1148412585 .{
1148512586 .name = "OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL",
1148612587 .opcode = 5807,
11487 .operands = &[_]Operand{
11488 .{ .kind = .IdResultType, .quantifier = .required },
11489 .{ .kind = .IdResult, .quantifier = .required },
11490 .{ .kind = .IdRef, .quantifier = .required },
11491 .{ .kind = .IdRef, .quantifier = .required },
11492 .{ .kind = .IdRef, .quantifier = .required },
11493 .{ .kind = .IdRef, .quantifier = .required },
12588 .operands = &.{
12589 .{ .kind = .id_result_type, .quantifier = .required },
12590 .{ .kind = .id_result, .quantifier = .required },
12591 .{ .kind = .id_ref, .quantifier = .required },
12592 .{ .kind = .id_ref, .quantifier = .required },
12593 .{ .kind = .id_ref, .quantifier = .required },
12594 .{ .kind = .id_ref, .quantifier = .required },
1149412595 },
1149512596 },
1149612597 .{
1149712598 .name = "OpSubgroupAvcSicConvertToMceResultINTEL",
1149812599 .opcode = 5808,
11499 .operands = &[_]Operand{
11500 .{ .kind = .IdResultType, .quantifier = .required },
11501 .{ .kind = .IdResult, .quantifier = .required },
11502 .{ .kind = .IdRef, .quantifier = .required },
12600 .operands = &.{
12601 .{ .kind = .id_result_type, .quantifier = .required },
12602 .{ .kind = .id_result, .quantifier = .required },
12603 .{ .kind = .id_ref, .quantifier = .required },
1150312604 },
1150412605 },
1150512606 .{
1150612607 .name = "OpSubgroupAvcSicGetIpeLumaShapeINTEL",
1150712608 .opcode = 5809,
11508 .operands = &[_]Operand{
11509 .{ .kind = .IdResultType, .quantifier = .required },
11510 .{ .kind = .IdResult, .quantifier = .required },
11511 .{ .kind = .IdRef, .quantifier = .required },
12609 .operands = &.{
12610 .{ .kind = .id_result_type, .quantifier = .required },
12611 .{ .kind = .id_result, .quantifier = .required },
12612 .{ .kind = .id_ref, .quantifier = .required },
1151212613 },
1151312614 },
1151412615 .{
1151512616 .name = "OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL",
1151612617 .opcode = 5810,
11517 .operands = &[_]Operand{
11518 .{ .kind = .IdResultType, .quantifier = .required },
11519 .{ .kind = .IdResult, .quantifier = .required },
11520 .{ .kind = .IdRef, .quantifier = .required },
12618 .operands = &.{
12619 .{ .kind = .id_result_type, .quantifier = .required },
12620 .{ .kind = .id_result, .quantifier = .required },
12621 .{ .kind = .id_ref, .quantifier = .required },
1152112622 },
1152212623 },
1152312624 .{
1152412625 .name = "OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL",
1152512626 .opcode = 5811,
11526 .operands = &[_]Operand{
11527 .{ .kind = .IdResultType, .quantifier = .required },
11528 .{ .kind = .IdResult, .quantifier = .required },
11529 .{ .kind = .IdRef, .quantifier = .required },
12627 .operands = &.{
12628 .{ .kind = .id_result_type, .quantifier = .required },
12629 .{ .kind = .id_result, .quantifier = .required },
12630 .{ .kind = .id_ref, .quantifier = .required },
1153012631 },
1153112632 },
1153212633 .{
1153312634 .name = "OpSubgroupAvcSicGetPackedIpeLumaModesINTEL",
1153412635 .opcode = 5812,
11535 .operands = &[_]Operand{
11536 .{ .kind = .IdResultType, .quantifier = .required },
11537 .{ .kind = .IdResult, .quantifier = .required },
11538 .{ .kind = .IdRef, .quantifier = .required },
12636 .operands = &.{
12637 .{ .kind = .id_result_type, .quantifier = .required },
12638 .{ .kind = .id_result, .quantifier = .required },
12639 .{ .kind = .id_ref, .quantifier = .required },
1153912640 },
1154012641 },
1154112642 .{
1154212643 .name = "OpSubgroupAvcSicGetIpeChromaModeINTEL",
1154312644 .opcode = 5813,
11544 .operands = &[_]Operand{
11545 .{ .kind = .IdResultType, .quantifier = .required },
11546 .{ .kind = .IdResult, .quantifier = .required },
11547 .{ .kind = .IdRef, .quantifier = .required },
12645 .operands = &.{
12646 .{ .kind = .id_result_type, .quantifier = .required },
12647 .{ .kind = .id_result, .quantifier = .required },
12648 .{ .kind = .id_ref, .quantifier = .required },
1154812649 },
1154912650 },
1155012651 .{
1155112652 .name = "OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL",
1155212653 .opcode = 5814,
11553 .operands = &[_]Operand{
11554 .{ .kind = .IdResultType, .quantifier = .required },
11555 .{ .kind = .IdResult, .quantifier = .required },
11556 .{ .kind = .IdRef, .quantifier = .required },
12654 .operands = &.{
12655 .{ .kind = .id_result_type, .quantifier = .required },
12656 .{ .kind = .id_result, .quantifier = .required },
12657 .{ .kind = .id_ref, .quantifier = .required },
1155712658 },
1155812659 },
1155912660 .{
1156012661 .name = "OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL",
1156112662 .opcode = 5815,
11562 .operands = &[_]Operand{
11563 .{ .kind = .IdResultType, .quantifier = .required },
11564 .{ .kind = .IdResult, .quantifier = .required },
11565 .{ .kind = .IdRef, .quantifier = .required },
12663 .operands = &.{
12664 .{ .kind = .id_result_type, .quantifier = .required },
12665 .{ .kind = .id_result, .quantifier = .required },
12666 .{ .kind = .id_ref, .quantifier = .required },
1156612667 },
1156712668 },
1156812669 .{
1156912670 .name = "OpSubgroupAvcSicGetInterRawSadsINTEL",
1157012671 .opcode = 5816,
11571 .operands = &[_]Operand{
11572 .{ .kind = .IdResultType, .quantifier = .required },
11573 .{ .kind = .IdResult, .quantifier = .required },
11574 .{ .kind = .IdRef, .quantifier = .required },
12672 .operands = &.{
12673 .{ .kind = .id_result_type, .quantifier = .required },
12674 .{ .kind = .id_result, .quantifier = .required },
12675 .{ .kind = .id_ref, .quantifier = .required },
1157512676 },
1157612677 },
1157712678 .{
1157812679 .name = "OpVariableLengthArrayINTEL",
1157912680 .opcode = 5818,
11580 .operands = &[_]Operand{
11581 .{ .kind = .IdResultType, .quantifier = .required },
11582 .{ .kind = .IdResult, .quantifier = .required },
11583 .{ .kind = .IdRef, .quantifier = .required },
12681 .operands = &.{
12682 .{ .kind = .id_result_type, .quantifier = .required },
12683 .{ .kind = .id_result, .quantifier = .required },
12684 .{ .kind = .id_ref, .quantifier = .required },
1158412685 },
1158512686 },
1158612687 .{
1158712688 .name = "OpSaveMemoryINTEL",
1158812689 .opcode = 5819,
11589 .operands = &[_]Operand{
11590 .{ .kind = .IdResultType, .quantifier = .required },
11591 .{ .kind = .IdResult, .quantifier = .required },
12690 .operands = &.{
12691 .{ .kind = .id_result_type, .quantifier = .required },
12692 .{ .kind = .id_result, .quantifier = .required },
1159212693 },
1159312694 },
1159412695 .{
1159512696 .name = "OpRestoreMemoryINTEL",
1159612697 .opcode = 5820,
11597 .operands = &[_]Operand{
11598 .{ .kind = .IdRef, .quantifier = .required },
12698 .operands = &.{
12699 .{ .kind = .id_ref, .quantifier = .required },
1159912700 },
1160012701 },
1160112702 .{
1160212703 .name = "OpArbitraryFloatSinCosPiINTEL",
1160312704 .opcode = 5840,
11604 .operands = &[_]Operand{
11605 .{ .kind = .IdResultType, .quantifier = .required },
11606 .{ .kind = .IdResult, .quantifier = .required },
11607 .{ .kind = .IdRef, .quantifier = .required },
11608 .{ .kind = .LiteralInteger, .quantifier = .required },
11609 .{ .kind = .LiteralInteger, .quantifier = .required },
11610 .{ .kind = .LiteralInteger, .quantifier = .required },
11611 .{ .kind = .LiteralInteger, .quantifier = .required },
11612 .{ .kind = .LiteralInteger, .quantifier = .required },
11613 .{ .kind = .LiteralInteger, .quantifier = .required },
12705 .operands = &.{
12706 .{ .kind = .id_result_type, .quantifier = .required },
12707 .{ .kind = .id_result, .quantifier = .required },
12708 .{ .kind = .id_ref, .quantifier = .required },
12709 .{ .kind = .literal_integer, .quantifier = .required },
12710 .{ .kind = .literal_integer, .quantifier = .required },
12711 .{ .kind = .literal_integer, .quantifier = .required },
12712 .{ .kind = .literal_integer, .quantifier = .required },
12713 .{ .kind = .literal_integer, .quantifier = .required },
1161412714 },
1161512715 },
1161612716 .{
1161712717 .name = "OpArbitraryFloatCastINTEL",
1161812718 .opcode = 5841,
11619 .operands = &[_]Operand{
11620 .{ .kind = .IdResultType, .quantifier = .required },
11621 .{ .kind = .IdResult, .quantifier = .required },
11622 .{ .kind = .IdRef, .quantifier = .required },
11623 .{ .kind = .LiteralInteger, .quantifier = .required },
11624 .{ .kind = .LiteralInteger, .quantifier = .required },
11625 .{ .kind = .LiteralInteger, .quantifier = .required },
11626 .{ .kind = .LiteralInteger, .quantifier = .required },
11627 .{ .kind = .LiteralInteger, .quantifier = .required },
12719 .operands = &.{
12720 .{ .kind = .id_result_type, .quantifier = .required },
12721 .{ .kind = .id_result, .quantifier = .required },
12722 .{ .kind = .id_ref, .quantifier = .required },
12723 .{ .kind = .literal_integer, .quantifier = .required },
12724 .{ .kind = .literal_integer, .quantifier = .required },
12725 .{ .kind = .literal_integer, .quantifier = .required },
12726 .{ .kind = .literal_integer, .quantifier = .required },
12727 .{ .kind = .literal_integer, .quantifier = .required },
1162812728 },
1162912729 },
1163012730 .{
1163112731 .name = "OpArbitraryFloatCastFromIntINTEL",
1163212732 .opcode = 5842,
11633 .operands = &[_]Operand{
11634 .{ .kind = .IdResultType, .quantifier = .required },
11635 .{ .kind = .IdResult, .quantifier = .required },
11636 .{ .kind = .IdRef, .quantifier = .required },
11637 .{ .kind = .LiteralInteger, .quantifier = .required },
11638 .{ .kind = .LiteralInteger, .quantifier = .required },
11639 .{ .kind = .LiteralInteger, .quantifier = .required },
11640 .{ .kind = .LiteralInteger, .quantifier = .required },
11641 .{ .kind = .LiteralInteger, .quantifier = .required },
12733 .operands = &.{
12734 .{ .kind = .id_result_type, .quantifier = .required },
12735 .{ .kind = .id_result, .quantifier = .required },
12736 .{ .kind = .id_ref, .quantifier = .required },
12737 .{ .kind = .literal_integer, .quantifier = .required },
12738 .{ .kind = .literal_integer, .quantifier = .required },
12739 .{ .kind = .literal_integer, .quantifier = .required },
12740 .{ .kind = .literal_integer, .quantifier = .required },
12741 .{ .kind = .literal_integer, .quantifier = .required },
1164212742 },
1164312743 },
1164412744 .{
1164512745 .name = "OpArbitraryFloatCastToIntINTEL",
1164612746 .opcode = 5843,
11647 .operands = &[_]Operand{
11648 .{ .kind = .IdResultType, .quantifier = .required },
11649 .{ .kind = .IdResult, .quantifier = .required },
11650 .{ .kind = .IdRef, .quantifier = .required },
11651 .{ .kind = .LiteralInteger, .quantifier = .required },
11652 .{ .kind = .LiteralInteger, .quantifier = .required },
11653 .{ .kind = .LiteralInteger, .quantifier = .required },
11654 .{ .kind = .LiteralInteger, .quantifier = .required },
12747 .operands = &.{
12748 .{ .kind = .id_result_type, .quantifier = .required },
12749 .{ .kind = .id_result, .quantifier = .required },
12750 .{ .kind = .id_ref, .quantifier = .required },
12751 .{ .kind = .literal_integer, .quantifier = .required },
12752 .{ .kind = .literal_integer, .quantifier = .required },
12753 .{ .kind = .literal_integer, .quantifier = .required },
12754 .{ .kind = .literal_integer, .quantifier = .required },
12755 .{ .kind = .literal_integer, .quantifier = .required },
1165512756 },
1165612757 },
1165712758 .{
1165812759 .name = "OpArbitraryFloatAddINTEL",
1165912760 .opcode = 5846,
11660 .operands = &[_]Operand{
11661 .{ .kind = .IdResultType, .quantifier = .required },
11662 .{ .kind = .IdResult, .quantifier = .required },
11663 .{ .kind = .IdRef, .quantifier = .required },
11664 .{ .kind = .LiteralInteger, .quantifier = .required },
11665 .{ .kind = .IdRef, .quantifier = .required },
11666 .{ .kind = .LiteralInteger, .quantifier = .required },
11667 .{ .kind = .LiteralInteger, .quantifier = .required },
11668 .{ .kind = .LiteralInteger, .quantifier = .required },
11669 .{ .kind = .LiteralInteger, .quantifier = .required },
11670 .{ .kind = .LiteralInteger, .quantifier = .required },
12761 .operands = &.{
12762 .{ .kind = .id_result_type, .quantifier = .required },
12763 .{ .kind = .id_result, .quantifier = .required },
12764 .{ .kind = .id_ref, .quantifier = .required },
12765 .{ .kind = .literal_integer, .quantifier = .required },
12766 .{ .kind = .id_ref, .quantifier = .required },
12767 .{ .kind = .literal_integer, .quantifier = .required },
12768 .{ .kind = .literal_integer, .quantifier = .required },
12769 .{ .kind = .literal_integer, .quantifier = .required },
12770 .{ .kind = .literal_integer, .quantifier = .required },
12771 .{ .kind = .literal_integer, .quantifier = .required },
1167112772 },
1167212773 },
1167312774 .{
1167412775 .name = "OpArbitraryFloatSubINTEL",
1167512776 .opcode = 5847,
11676 .operands = &[_]Operand{
11677 .{ .kind = .IdResultType, .quantifier = .required },
11678 .{ .kind = .IdResult, .quantifier = .required },
11679 .{ .kind = .IdRef, .quantifier = .required },
11680 .{ .kind = .LiteralInteger, .quantifier = .required },
11681 .{ .kind = .IdRef, .quantifier = .required },
11682 .{ .kind = .LiteralInteger, .quantifier = .required },
11683 .{ .kind = .LiteralInteger, .quantifier = .required },
11684 .{ .kind = .LiteralInteger, .quantifier = .required },
11685 .{ .kind = .LiteralInteger, .quantifier = .required },
11686 .{ .kind = .LiteralInteger, .quantifier = .required },
12777 .operands = &.{
12778 .{ .kind = .id_result_type, .quantifier = .required },
12779 .{ .kind = .id_result, .quantifier = .required },
12780 .{ .kind = .id_ref, .quantifier = .required },
12781 .{ .kind = .literal_integer, .quantifier = .required },
12782 .{ .kind = .id_ref, .quantifier = .required },
12783 .{ .kind = .literal_integer, .quantifier = .required },
12784 .{ .kind = .literal_integer, .quantifier = .required },
12785 .{ .kind = .literal_integer, .quantifier = .required },
12786 .{ .kind = .literal_integer, .quantifier = .required },
12787 .{ .kind = .literal_integer, .quantifier = .required },
1168712788 },
1168812789 },
1168912790 .{
1169012791 .name = "OpArbitraryFloatMulINTEL",
1169112792 .opcode = 5848,
11692 .operands = &[_]Operand{
11693 .{ .kind = .IdResultType, .quantifier = .required },
11694 .{ .kind = .IdResult, .quantifier = .required },
11695 .{ .kind = .IdRef, .quantifier = .required },
11696 .{ .kind = .LiteralInteger, .quantifier = .required },
11697 .{ .kind = .IdRef, .quantifier = .required },
11698 .{ .kind = .LiteralInteger, .quantifier = .required },
11699 .{ .kind = .LiteralInteger, .quantifier = .required },
11700 .{ .kind = .LiteralInteger, .quantifier = .required },
11701 .{ .kind = .LiteralInteger, .quantifier = .required },
11702 .{ .kind = .LiteralInteger, .quantifier = .required },
12793 .operands = &.{
12794 .{ .kind = .id_result_type, .quantifier = .required },
12795 .{ .kind = .id_result, .quantifier = .required },
12796 .{ .kind = .id_ref, .quantifier = .required },
12797 .{ .kind = .literal_integer, .quantifier = .required },
12798 .{ .kind = .id_ref, .quantifier = .required },
12799 .{ .kind = .literal_integer, .quantifier = .required },
12800 .{ .kind = .literal_integer, .quantifier = .required },
12801 .{ .kind = .literal_integer, .quantifier = .required },
12802 .{ .kind = .literal_integer, .quantifier = .required },
12803 .{ .kind = .literal_integer, .quantifier = .required },
1170312804 },
1170412805 },
1170512806 .{
1170612807 .name = "OpArbitraryFloatDivINTEL",
1170712808 .opcode = 5849,
11708 .operands = &[_]Operand{
11709 .{ .kind = .IdResultType, .quantifier = .required },
11710 .{ .kind = .IdResult, .quantifier = .required },
11711 .{ .kind = .IdRef, .quantifier = .required },
11712 .{ .kind = .LiteralInteger, .quantifier = .required },
11713 .{ .kind = .IdRef, .quantifier = .required },
11714 .{ .kind = .LiteralInteger, .quantifier = .required },
11715 .{ .kind = .LiteralInteger, .quantifier = .required },
11716 .{ .kind = .LiteralInteger, .quantifier = .required },
11717 .{ .kind = .LiteralInteger, .quantifier = .required },
11718 .{ .kind = .LiteralInteger, .quantifier = .required },
12809 .operands = &.{
12810 .{ .kind = .id_result_type, .quantifier = .required },
12811 .{ .kind = .id_result, .quantifier = .required },
12812 .{ .kind = .id_ref, .quantifier = .required },
12813 .{ .kind = .literal_integer, .quantifier = .required },
12814 .{ .kind = .id_ref, .quantifier = .required },
12815 .{ .kind = .literal_integer, .quantifier = .required },
12816 .{ .kind = .literal_integer, .quantifier = .required },
12817 .{ .kind = .literal_integer, .quantifier = .required },
12818 .{ .kind = .literal_integer, .quantifier = .required },
12819 .{ .kind = .literal_integer, .quantifier = .required },
1171912820 },
1172012821 },
1172112822 .{
1172212823 .name = "OpArbitraryFloatGTINTEL",
1172312824 .opcode = 5850,
11724 .operands = &[_]Operand{
11725 .{ .kind = .IdResultType, .quantifier = .required },
11726 .{ .kind = .IdResult, .quantifier = .required },
11727 .{ .kind = .IdRef, .quantifier = .required },
11728 .{ .kind = .LiteralInteger, .quantifier = .required },
11729 .{ .kind = .IdRef, .quantifier = .required },
11730 .{ .kind = .LiteralInteger, .quantifier = .required },
12825 .operands = &.{
12826 .{ .kind = .id_result_type, .quantifier = .required },
12827 .{ .kind = .id_result, .quantifier = .required },
12828 .{ .kind = .id_ref, .quantifier = .required },
12829 .{ .kind = .literal_integer, .quantifier = .required },
12830 .{ .kind = .id_ref, .quantifier = .required },
12831 .{ .kind = .literal_integer, .quantifier = .required },
1173112832 },
1173212833 },
1173312834 .{
1173412835 .name = "OpArbitraryFloatGEINTEL",
1173512836 .opcode = 5851,
11736 .operands = &[_]Operand{
11737 .{ .kind = .IdResultType, .quantifier = .required },
11738 .{ .kind = .IdResult, .quantifier = .required },
11739 .{ .kind = .IdRef, .quantifier = .required },
11740 .{ .kind = .LiteralInteger, .quantifier = .required },
11741 .{ .kind = .IdRef, .quantifier = .required },
11742 .{ .kind = .LiteralInteger, .quantifier = .required },
12837 .operands = &.{
12838 .{ .kind = .id_result_type, .quantifier = .required },
12839 .{ .kind = .id_result, .quantifier = .required },
12840 .{ .kind = .id_ref, .quantifier = .required },
12841 .{ .kind = .literal_integer, .quantifier = .required },
12842 .{ .kind = .id_ref, .quantifier = .required },
12843 .{ .kind = .literal_integer, .quantifier = .required },
1174312844 },
1174412845 },
1174512846 .{
1174612847 .name = "OpArbitraryFloatLTINTEL",
1174712848 .opcode = 5852,
11748 .operands = &[_]Operand{
11749 .{ .kind = .IdResultType, .quantifier = .required },
11750 .{ .kind = .IdResult, .quantifier = .required },
11751 .{ .kind = .IdRef, .quantifier = .required },
11752 .{ .kind = .LiteralInteger, .quantifier = .required },
11753 .{ .kind = .IdRef, .quantifier = .required },
11754 .{ .kind = .LiteralInteger, .quantifier = .required },
12849 .operands = &.{
12850 .{ .kind = .id_result_type, .quantifier = .required },
12851 .{ .kind = .id_result, .quantifier = .required },
12852 .{ .kind = .id_ref, .quantifier = .required },
12853 .{ .kind = .literal_integer, .quantifier = .required },
12854 .{ .kind = .id_ref, .quantifier = .required },
12855 .{ .kind = .literal_integer, .quantifier = .required },
1175512856 },
1175612857 },
1175712858 .{
1175812859 .name = "OpArbitraryFloatLEINTEL",
1175912860 .opcode = 5853,
11760 .operands = &[_]Operand{
11761 .{ .kind = .IdResultType, .quantifier = .required },
11762 .{ .kind = .IdResult, .quantifier = .required },
11763 .{ .kind = .IdRef, .quantifier = .required },
11764 .{ .kind = .LiteralInteger, .quantifier = .required },
11765 .{ .kind = .IdRef, .quantifier = .required },
11766 .{ .kind = .LiteralInteger, .quantifier = .required },
12861 .operands = &.{
12862 .{ .kind = .id_result_type, .quantifier = .required },
12863 .{ .kind = .id_result, .quantifier = .required },
12864 .{ .kind = .id_ref, .quantifier = .required },
12865 .{ .kind = .literal_integer, .quantifier = .required },
12866 .{ .kind = .id_ref, .quantifier = .required },
12867 .{ .kind = .literal_integer, .quantifier = .required },
1176712868 },
1176812869 },
1176912870 .{
1177012871 .name = "OpArbitraryFloatEQINTEL",
1177112872 .opcode = 5854,
11772 .operands = &[_]Operand{
11773 .{ .kind = .IdResultType, .quantifier = .required },
11774 .{ .kind = .IdResult, .quantifier = .required },
11775 .{ .kind = .IdRef, .quantifier = .required },
11776 .{ .kind = .LiteralInteger, .quantifier = .required },
11777 .{ .kind = .IdRef, .quantifier = .required },
11778 .{ .kind = .LiteralInteger, .quantifier = .required },
12873 .operands = &.{
12874 .{ .kind = .id_result_type, .quantifier = .required },
12875 .{ .kind = .id_result, .quantifier = .required },
12876 .{ .kind = .id_ref, .quantifier = .required },
12877 .{ .kind = .literal_integer, .quantifier = .required },
12878 .{ .kind = .id_ref, .quantifier = .required },
12879 .{ .kind = .literal_integer, .quantifier = .required },
1177912880 },
1178012881 },
1178112882 .{
1178212883 .name = "OpArbitraryFloatRecipINTEL",
1178312884 .opcode = 5855,
11784 .operands = &[_]Operand{
11785 .{ .kind = .IdResultType, .quantifier = .required },
11786 .{ .kind = .IdResult, .quantifier = .required },
11787 .{ .kind = .IdRef, .quantifier = .required },
11788 .{ .kind = .LiteralInteger, .quantifier = .required },
11789 .{ .kind = .LiteralInteger, .quantifier = .required },
11790 .{ .kind = .LiteralInteger, .quantifier = .required },
11791 .{ .kind = .LiteralInteger, .quantifier = .required },
11792 .{ .kind = .LiteralInteger, .quantifier = .required },
12885 .operands = &.{
12886 .{ .kind = .id_result_type, .quantifier = .required },
12887 .{ .kind = .id_result, .quantifier = .required },
12888 .{ .kind = .id_ref, .quantifier = .required },
12889 .{ .kind = .literal_integer, .quantifier = .required },
12890 .{ .kind = .literal_integer, .quantifier = .required },
12891 .{ .kind = .literal_integer, .quantifier = .required },
12892 .{ .kind = .literal_integer, .quantifier = .required },
12893 .{ .kind = .literal_integer, .quantifier = .required },
1179312894 },
1179412895 },
1179512896 .{
1179612897 .name = "OpArbitraryFloatRSqrtINTEL",
1179712898 .opcode = 5856,
11798 .operands = &[_]Operand{
11799 .{ .kind = .IdResultType, .quantifier = .required },
11800 .{ .kind = .IdResult, .quantifier = .required },
11801 .{ .kind = .IdRef, .quantifier = .required },
11802 .{ .kind = .LiteralInteger, .quantifier = .required },
11803 .{ .kind = .LiteralInteger, .quantifier = .required },
11804 .{ .kind = .LiteralInteger, .quantifier = .required },
11805 .{ .kind = .LiteralInteger, .quantifier = .required },
11806 .{ .kind = .LiteralInteger, .quantifier = .required },
12899 .operands = &.{
12900 .{ .kind = .id_result_type, .quantifier = .required },
12901 .{ .kind = .id_result, .quantifier = .required },
12902 .{ .kind = .id_ref, .quantifier = .required },
12903 .{ .kind = .literal_integer, .quantifier = .required },
12904 .{ .kind = .literal_integer, .quantifier = .required },
12905 .{ .kind = .literal_integer, .quantifier = .required },
12906 .{ .kind = .literal_integer, .quantifier = .required },
12907 .{ .kind = .literal_integer, .quantifier = .required },
1180712908 },
1180812909 },
1180912910 .{
1181012911 .name = "OpArbitraryFloatCbrtINTEL",
1181112912 .opcode = 5857,
11812 .operands = &[_]Operand{
11813 .{ .kind = .IdResultType, .quantifier = .required },
11814 .{ .kind = .IdResult, .quantifier = .required },
11815 .{ .kind = .IdRef, .quantifier = .required },
11816 .{ .kind = .LiteralInteger, .quantifier = .required },
11817 .{ .kind = .LiteralInteger, .quantifier = .required },
11818 .{ .kind = .LiteralInteger, .quantifier = .required },
11819 .{ .kind = .LiteralInteger, .quantifier = .required },
11820 .{ .kind = .LiteralInteger, .quantifier = .required },
12913 .operands = &.{
12914 .{ .kind = .id_result_type, .quantifier = .required },
12915 .{ .kind = .id_result, .quantifier = .required },
12916 .{ .kind = .id_ref, .quantifier = .required },
12917 .{ .kind = .literal_integer, .quantifier = .required },
12918 .{ .kind = .literal_integer, .quantifier = .required },
12919 .{ .kind = .literal_integer, .quantifier = .required },
12920 .{ .kind = .literal_integer, .quantifier = .required },
12921 .{ .kind = .literal_integer, .quantifier = .required },
1182112922 },
1182212923 },
1182312924 .{
1182412925 .name = "OpArbitraryFloatHypotINTEL",
1182512926 .opcode = 5858,
11826 .operands = &[_]Operand{
11827 .{ .kind = .IdResultType, .quantifier = .required },
11828 .{ .kind = .IdResult, .quantifier = .required },
11829 .{ .kind = .IdRef, .quantifier = .required },
11830 .{ .kind = .LiteralInteger, .quantifier = .required },
11831 .{ .kind = .IdRef, .quantifier = .required },
11832 .{ .kind = .LiteralInteger, .quantifier = .required },
11833 .{ .kind = .LiteralInteger, .quantifier = .required },
11834 .{ .kind = .LiteralInteger, .quantifier = .required },
11835 .{ .kind = .LiteralInteger, .quantifier = .required },
11836 .{ .kind = .LiteralInteger, .quantifier = .required },
12927 .operands = &.{
12928 .{ .kind = .id_result_type, .quantifier = .required },
12929 .{ .kind = .id_result, .quantifier = .required },
12930 .{ .kind = .id_ref, .quantifier = .required },
12931 .{ .kind = .literal_integer, .quantifier = .required },
12932 .{ .kind = .id_ref, .quantifier = .required },
12933 .{ .kind = .literal_integer, .quantifier = .required },
12934 .{ .kind = .literal_integer, .quantifier = .required },
12935 .{ .kind = .literal_integer, .quantifier = .required },
12936 .{ .kind = .literal_integer, .quantifier = .required },
12937 .{ .kind = .literal_integer, .quantifier = .required },
1183712938 },
1183812939 },
1183912940 .{
1184012941 .name = "OpArbitraryFloatSqrtINTEL",
1184112942 .opcode = 5859,
11842 .operands = &[_]Operand{
11843 .{ .kind = .IdResultType, .quantifier = .required },
11844 .{ .kind = .IdResult, .quantifier = .required },
11845 .{ .kind = .IdRef, .quantifier = .required },
11846 .{ .kind = .LiteralInteger, .quantifier = .required },
11847 .{ .kind = .LiteralInteger, .quantifier = .required },
11848 .{ .kind = .LiteralInteger, .quantifier = .required },
11849 .{ .kind = .LiteralInteger, .quantifier = .required },
11850 .{ .kind = .LiteralInteger, .quantifier = .required },
12943 .operands = &.{
12944 .{ .kind = .id_result_type, .quantifier = .required },
12945 .{ .kind = .id_result, .quantifier = .required },
12946 .{ .kind = .id_ref, .quantifier = .required },
12947 .{ .kind = .literal_integer, .quantifier = .required },
12948 .{ .kind = .literal_integer, .quantifier = .required },
12949 .{ .kind = .literal_integer, .quantifier = .required },
12950 .{ .kind = .literal_integer, .quantifier = .required },
12951 .{ .kind = .literal_integer, .quantifier = .required },
1185112952 },
1185212953 },
1185312954 .{
1185412955 .name = "OpArbitraryFloatLogINTEL",
1185512956 .opcode = 5860,
11856 .operands = &[_]Operand{
11857 .{ .kind = .IdResultType, .quantifier = .required },
11858 .{ .kind = .IdResult, .quantifier = .required },
11859 .{ .kind = .IdRef, .quantifier = .required },
11860 .{ .kind = .LiteralInteger, .quantifier = .required },
11861 .{ .kind = .LiteralInteger, .quantifier = .required },
11862 .{ .kind = .LiteralInteger, .quantifier = .required },
11863 .{ .kind = .LiteralInteger, .quantifier = .required },
11864 .{ .kind = .LiteralInteger, .quantifier = .required },
12957 .operands = &.{
12958 .{ .kind = .id_result_type, .quantifier = .required },
12959 .{ .kind = .id_result, .quantifier = .required },
12960 .{ .kind = .id_ref, .quantifier = .required },
12961 .{ .kind = .literal_integer, .quantifier = .required },
12962 .{ .kind = .literal_integer, .quantifier = .required },
12963 .{ .kind = .literal_integer, .quantifier = .required },
12964 .{ .kind = .literal_integer, .quantifier = .required },
12965 .{ .kind = .literal_integer, .quantifier = .required },
1186512966 },
1186612967 },
1186712968 .{
1186812969 .name = "OpArbitraryFloatLog2INTEL",
1186912970 .opcode = 5861,
11870 .operands = &[_]Operand{
11871 .{ .kind = .IdResultType, .quantifier = .required },
11872 .{ .kind = .IdResult, .quantifier = .required },
11873 .{ .kind = .IdRef, .quantifier = .required },
11874 .{ .kind = .LiteralInteger, .quantifier = .required },
11875 .{ .kind = .LiteralInteger, .quantifier = .required },
11876 .{ .kind = .LiteralInteger, .quantifier = .required },
11877 .{ .kind = .LiteralInteger, .quantifier = .required },
11878 .{ .kind = .LiteralInteger, .quantifier = .required },
12971 .operands = &.{
12972 .{ .kind = .id_result_type, .quantifier = .required },
12973 .{ .kind = .id_result, .quantifier = .required },
12974 .{ .kind = .id_ref, .quantifier = .required },
12975 .{ .kind = .literal_integer, .quantifier = .required },
12976 .{ .kind = .literal_integer, .quantifier = .required },
12977 .{ .kind = .literal_integer, .quantifier = .required },
12978 .{ .kind = .literal_integer, .quantifier = .required },
12979 .{ .kind = .literal_integer, .quantifier = .required },
1187912980 },
1188012981 },
1188112982 .{
1188212983 .name = "OpArbitraryFloatLog10INTEL",
1188312984 .opcode = 5862,
11884 .operands = &[_]Operand{
11885 .{ .kind = .IdResultType, .quantifier = .required },
11886 .{ .kind = .IdResult, .quantifier = .required },
11887 .{ .kind = .IdRef, .quantifier = .required },
11888 .{ .kind = .LiteralInteger, .quantifier = .required },
11889 .{ .kind = .LiteralInteger, .quantifier = .required },
11890 .{ .kind = .LiteralInteger, .quantifier = .required },
11891 .{ .kind = .LiteralInteger, .quantifier = .required },
11892 .{ .kind = .LiteralInteger, .quantifier = .required },
12985 .operands = &.{
12986 .{ .kind = .id_result_type, .quantifier = .required },
12987 .{ .kind = .id_result, .quantifier = .required },
12988 .{ .kind = .id_ref, .quantifier = .required },
12989 .{ .kind = .literal_integer, .quantifier = .required },
12990 .{ .kind = .literal_integer, .quantifier = .required },
12991 .{ .kind = .literal_integer, .quantifier = .required },
12992 .{ .kind = .literal_integer, .quantifier = .required },
12993 .{ .kind = .literal_integer, .quantifier = .required },
1189312994 },
1189412995 },
1189512996 .{
1189612997 .name = "OpArbitraryFloatLog1pINTEL",
1189712998 .opcode = 5863,
11898 .operands = &[_]Operand{
11899 .{ .kind = .IdResultType, .quantifier = .required },
11900 .{ .kind = .IdResult, .quantifier = .required },
11901 .{ .kind = .IdRef, .quantifier = .required },
11902 .{ .kind = .LiteralInteger, .quantifier = .required },
11903 .{ .kind = .LiteralInteger, .quantifier = .required },
11904 .{ .kind = .LiteralInteger, .quantifier = .required },
11905 .{ .kind = .LiteralInteger, .quantifier = .required },
11906 .{ .kind = .LiteralInteger, .quantifier = .required },
12999 .operands = &.{
13000 .{ .kind = .id_result_type, .quantifier = .required },
13001 .{ .kind = .id_result, .quantifier = .required },
13002 .{ .kind = .id_ref, .quantifier = .required },
13003 .{ .kind = .literal_integer, .quantifier = .required },
13004 .{ .kind = .literal_integer, .quantifier = .required },
13005 .{ .kind = .literal_integer, .quantifier = .required },
13006 .{ .kind = .literal_integer, .quantifier = .required },
13007 .{ .kind = .literal_integer, .quantifier = .required },
1190713008 },
1190813009 },
1190913010 .{
1191013011 .name = "OpArbitraryFloatExpINTEL",
1191113012 .opcode = 5864,
11912 .operands = &[_]Operand{
11913 .{ .kind = .IdResultType, .quantifier = .required },
11914 .{ .kind = .IdResult, .quantifier = .required },
11915 .{ .kind = .IdRef, .quantifier = .required },
11916 .{ .kind = .LiteralInteger, .quantifier = .required },
11917 .{ .kind = .LiteralInteger, .quantifier = .required },
11918 .{ .kind = .LiteralInteger, .quantifier = .required },
11919 .{ .kind = .LiteralInteger, .quantifier = .required },
11920 .{ .kind = .LiteralInteger, .quantifier = .required },
13013 .operands = &.{
13014 .{ .kind = .id_result_type, .quantifier = .required },
13015 .{ .kind = .id_result, .quantifier = .required },
13016 .{ .kind = .id_ref, .quantifier = .required },
13017 .{ .kind = .literal_integer, .quantifier = .required },
13018 .{ .kind = .literal_integer, .quantifier = .required },
13019 .{ .kind = .literal_integer, .quantifier = .required },
13020 .{ .kind = .literal_integer, .quantifier = .required },
13021 .{ .kind = .literal_integer, .quantifier = .required },
1192113022 },
1192213023 },
1192313024 .{
1192413025 .name = "OpArbitraryFloatExp2INTEL",
1192513026 .opcode = 5865,
11926 .operands = &[_]Operand{
11927 .{ .kind = .IdResultType, .quantifier = .required },
11928 .{ .kind = .IdResult, .quantifier = .required },
11929 .{ .kind = .IdRef, .quantifier = .required },
11930 .{ .kind = .LiteralInteger, .quantifier = .required },
11931 .{ .kind = .LiteralInteger, .quantifier = .required },
11932 .{ .kind = .LiteralInteger, .quantifier = .required },
11933 .{ .kind = .LiteralInteger, .quantifier = .required },
11934 .{ .kind = .LiteralInteger, .quantifier = .required },
13027 .operands = &.{
13028 .{ .kind = .id_result_type, .quantifier = .required },
13029 .{ .kind = .id_result, .quantifier = .required },
13030 .{ .kind = .id_ref, .quantifier = .required },
13031 .{ .kind = .literal_integer, .quantifier = .required },
13032 .{ .kind = .literal_integer, .quantifier = .required },
13033 .{ .kind = .literal_integer, .quantifier = .required },
13034 .{ .kind = .literal_integer, .quantifier = .required },
13035 .{ .kind = .literal_integer, .quantifier = .required },
1193513036 },
1193613037 },
1193713038 .{
1193813039 .name = "OpArbitraryFloatExp10INTEL",
1193913040 .opcode = 5866,
11940 .operands = &[_]Operand{
11941 .{ .kind = .IdResultType, .quantifier = .required },
11942 .{ .kind = .IdResult, .quantifier = .required },
11943 .{ .kind = .IdRef, .quantifier = .required },
11944 .{ .kind = .LiteralInteger, .quantifier = .required },
11945 .{ .kind = .LiteralInteger, .quantifier = .required },
11946 .{ .kind = .LiteralInteger, .quantifier = .required },
11947 .{ .kind = .LiteralInteger, .quantifier = .required },
11948 .{ .kind = .LiteralInteger, .quantifier = .required },
13041 .operands = &.{
13042 .{ .kind = .id_result_type, .quantifier = .required },
13043 .{ .kind = .id_result, .quantifier = .required },
13044 .{ .kind = .id_ref, .quantifier = .required },
13045 .{ .kind = .literal_integer, .quantifier = .required },
13046 .{ .kind = .literal_integer, .quantifier = .required },
13047 .{ .kind = .literal_integer, .quantifier = .required },
13048 .{ .kind = .literal_integer, .quantifier = .required },
13049 .{ .kind = .literal_integer, .quantifier = .required },
1194913050 },
1195013051 },
1195113052 .{
1195213053 .name = "OpArbitraryFloatExpm1INTEL",
1195313054 .opcode = 5867,
11954 .operands = &[_]Operand{
11955 .{ .kind = .IdResultType, .quantifier = .required },
11956 .{ .kind = .IdResult, .quantifier = .required },
11957 .{ .kind = .IdRef, .quantifier = .required },
11958 .{ .kind = .LiteralInteger, .quantifier = .required },
11959 .{ .kind = .LiteralInteger, .quantifier = .required },
11960 .{ .kind = .LiteralInteger, .quantifier = .required },
11961 .{ .kind = .LiteralInteger, .quantifier = .required },
11962 .{ .kind = .LiteralInteger, .quantifier = .required },
13055 .operands = &.{
13056 .{ .kind = .id_result_type, .quantifier = .required },
13057 .{ .kind = .id_result, .quantifier = .required },
13058 .{ .kind = .id_ref, .quantifier = .required },
13059 .{ .kind = .literal_integer, .quantifier = .required },
13060 .{ .kind = .literal_integer, .quantifier = .required },
13061 .{ .kind = .literal_integer, .quantifier = .required },
13062 .{ .kind = .literal_integer, .quantifier = .required },
13063 .{ .kind = .literal_integer, .quantifier = .required },
1196313064 },
1196413065 },
1196513066 .{
1196613067 .name = "OpArbitraryFloatSinINTEL",
1196713068 .opcode = 5868,
11968 .operands = &[_]Operand{
11969 .{ .kind = .IdResultType, .quantifier = .required },
11970 .{ .kind = .IdResult, .quantifier = .required },
11971 .{ .kind = .IdRef, .quantifier = .required },
11972 .{ .kind = .LiteralInteger, .quantifier = .required },
11973 .{ .kind = .LiteralInteger, .quantifier = .required },
11974 .{ .kind = .LiteralInteger, .quantifier = .required },
11975 .{ .kind = .LiteralInteger, .quantifier = .required },
11976 .{ .kind = .LiteralInteger, .quantifier = .required },
13069 .operands = &.{
13070 .{ .kind = .id_result_type, .quantifier = .required },
13071 .{ .kind = .id_result, .quantifier = .required },
13072 .{ .kind = .id_ref, .quantifier = .required },
13073 .{ .kind = .literal_integer, .quantifier = .required },
13074 .{ .kind = .literal_integer, .quantifier = .required },
13075 .{ .kind = .literal_integer, .quantifier = .required },
13076 .{ .kind = .literal_integer, .quantifier = .required },
13077 .{ .kind = .literal_integer, .quantifier = .required },
1197713078 },
1197813079 },
1197913080 .{
1198013081 .name = "OpArbitraryFloatCosINTEL",
1198113082 .opcode = 5869,
11982 .operands = &[_]Operand{
11983 .{ .kind = .IdResultType, .quantifier = .required },
11984 .{ .kind = .IdResult, .quantifier = .required },
11985 .{ .kind = .IdRef, .quantifier = .required },
11986 .{ .kind = .LiteralInteger, .quantifier = .required },
11987 .{ .kind = .LiteralInteger, .quantifier = .required },
11988 .{ .kind = .LiteralInteger, .quantifier = .required },
11989 .{ .kind = .LiteralInteger, .quantifier = .required },
11990 .{ .kind = .LiteralInteger, .quantifier = .required },
13083 .operands = &.{
13084 .{ .kind = .id_result_type, .quantifier = .required },
13085 .{ .kind = .id_result, .quantifier = .required },
13086 .{ .kind = .id_ref, .quantifier = .required },
13087 .{ .kind = .literal_integer, .quantifier = .required },
13088 .{ .kind = .literal_integer, .quantifier = .required },
13089 .{ .kind = .literal_integer, .quantifier = .required },
13090 .{ .kind = .literal_integer, .quantifier = .required },
13091 .{ .kind = .literal_integer, .quantifier = .required },
1199113092 },
1199213093 },
1199313094 .{
1199413095 .name = "OpArbitraryFloatSinCosINTEL",
1199513096 .opcode = 5870,
11996 .operands = &[_]Operand{
11997 .{ .kind = .IdResultType, .quantifier = .required },
11998 .{ .kind = .IdResult, .quantifier = .required },
11999 .{ .kind = .IdRef, .quantifier = .required },
12000 .{ .kind = .LiteralInteger, .quantifier = .required },
12001 .{ .kind = .LiteralInteger, .quantifier = .required },
12002 .{ .kind = .LiteralInteger, .quantifier = .required },
12003 .{ .kind = .LiteralInteger, .quantifier = .required },
12004 .{ .kind = .LiteralInteger, .quantifier = .required },
13097 .operands = &.{
13098 .{ .kind = .id_result_type, .quantifier = .required },
13099 .{ .kind = .id_result, .quantifier = .required },
13100 .{ .kind = .id_ref, .quantifier = .required },
13101 .{ .kind = .literal_integer, .quantifier = .required },
13102 .{ .kind = .literal_integer, .quantifier = .required },
13103 .{ .kind = .literal_integer, .quantifier = .required },
13104 .{ .kind = .literal_integer, .quantifier = .required },
13105 .{ .kind = .literal_integer, .quantifier = .required },
1200513106 },
1200613107 },
1200713108 .{
1200813109 .name = "OpArbitraryFloatSinPiINTEL",
1200913110 .opcode = 5871,
12010 .operands = &[_]Operand{
12011 .{ .kind = .IdResultType, .quantifier = .required },
12012 .{ .kind = .IdResult, .quantifier = .required },
12013 .{ .kind = .IdRef, .quantifier = .required },
12014 .{ .kind = .LiteralInteger, .quantifier = .required },
12015 .{ .kind = .LiteralInteger, .quantifier = .required },
12016 .{ .kind = .LiteralInteger, .quantifier = .required },
12017 .{ .kind = .LiteralInteger, .quantifier = .required },
12018 .{ .kind = .LiteralInteger, .quantifier = .required },
13111 .operands = &.{
13112 .{ .kind = .id_result_type, .quantifier = .required },
13113 .{ .kind = .id_result, .quantifier = .required },
13114 .{ .kind = .id_ref, .quantifier = .required },
13115 .{ .kind = .literal_integer, .quantifier = .required },
13116 .{ .kind = .literal_integer, .quantifier = .required },
13117 .{ .kind = .literal_integer, .quantifier = .required },
13118 .{ .kind = .literal_integer, .quantifier = .required },
13119 .{ .kind = .literal_integer, .quantifier = .required },
1201913120 },
1202013121 },
1202113122 .{
1202213123 .name = "OpArbitraryFloatCosPiINTEL",
1202313124 .opcode = 5872,
12024 .operands = &[_]Operand{
12025 .{ .kind = .IdResultType, .quantifier = .required },
12026 .{ .kind = .IdResult, .quantifier = .required },
12027 .{ .kind = .IdRef, .quantifier = .required },
12028 .{ .kind = .LiteralInteger, .quantifier = .required },
12029 .{ .kind = .LiteralInteger, .quantifier = .required },
12030 .{ .kind = .LiteralInteger, .quantifier = .required },
12031 .{ .kind = .LiteralInteger, .quantifier = .required },
12032 .{ .kind = .LiteralInteger, .quantifier = .required },
13125 .operands = &.{
13126 .{ .kind = .id_result_type, .quantifier = .required },
13127 .{ .kind = .id_result, .quantifier = .required },
13128 .{ .kind = .id_ref, .quantifier = .required },
13129 .{ .kind = .literal_integer, .quantifier = .required },
13130 .{ .kind = .literal_integer, .quantifier = .required },
13131 .{ .kind = .literal_integer, .quantifier = .required },
13132 .{ .kind = .literal_integer, .quantifier = .required },
13133 .{ .kind = .literal_integer, .quantifier = .required },
1203313134 },
1203413135 },
1203513136 .{
1203613137 .name = "OpArbitraryFloatASinINTEL",
1203713138 .opcode = 5873,
12038 .operands = &[_]Operand{
12039 .{ .kind = .IdResultType, .quantifier = .required },
12040 .{ .kind = .IdResult, .quantifier = .required },
12041 .{ .kind = .IdRef, .quantifier = .required },
12042 .{ .kind = .LiteralInteger, .quantifier = .required },
12043 .{ .kind = .LiteralInteger, .quantifier = .required },
12044 .{ .kind = .LiteralInteger, .quantifier = .required },
12045 .{ .kind = .LiteralInteger, .quantifier = .required },
12046 .{ .kind = .LiteralInteger, .quantifier = .required },
13139 .operands = &.{
13140 .{ .kind = .id_result_type, .quantifier = .required },
13141 .{ .kind = .id_result, .quantifier = .required },
13142 .{ .kind = .id_ref, .quantifier = .required },
13143 .{ .kind = .literal_integer, .quantifier = .required },
13144 .{ .kind = .literal_integer, .quantifier = .required },
13145 .{ .kind = .literal_integer, .quantifier = .required },
13146 .{ .kind = .literal_integer, .quantifier = .required },
13147 .{ .kind = .literal_integer, .quantifier = .required },
1204713148 },
1204813149 },
1204913150 .{
1205013151 .name = "OpArbitraryFloatASinPiINTEL",
1205113152 .opcode = 5874,
12052 .operands = &[_]Operand{
12053 .{ .kind = .IdResultType, .quantifier = .required },
12054 .{ .kind = .IdResult, .quantifier = .required },
12055 .{ .kind = .IdRef, .quantifier = .required },
12056 .{ .kind = .LiteralInteger, .quantifier = .required },
12057 .{ .kind = .LiteralInteger, .quantifier = .required },
12058 .{ .kind = .LiteralInteger, .quantifier = .required },
12059 .{ .kind = .LiteralInteger, .quantifier = .required },
12060 .{ .kind = .LiteralInteger, .quantifier = .required },
13153 .operands = &.{
13154 .{ .kind = .id_result_type, .quantifier = .required },
13155 .{ .kind = .id_result, .quantifier = .required },
13156 .{ .kind = .id_ref, .quantifier = .required },
13157 .{ .kind = .literal_integer, .quantifier = .required },
13158 .{ .kind = .literal_integer, .quantifier = .required },
13159 .{ .kind = .literal_integer, .quantifier = .required },
13160 .{ .kind = .literal_integer, .quantifier = .required },
13161 .{ .kind = .literal_integer, .quantifier = .required },
1206113162 },
1206213163 },
1206313164 .{
1206413165 .name = "OpArbitraryFloatACosINTEL",
1206513166 .opcode = 5875,
12066 .operands = &[_]Operand{
12067 .{ .kind = .IdResultType, .quantifier = .required },
12068 .{ .kind = .IdResult, .quantifier = .required },
12069 .{ .kind = .IdRef, .quantifier = .required },
12070 .{ .kind = .LiteralInteger, .quantifier = .required },
12071 .{ .kind = .LiteralInteger, .quantifier = .required },
12072 .{ .kind = .LiteralInteger, .quantifier = .required },
12073 .{ .kind = .LiteralInteger, .quantifier = .required },
12074 .{ .kind = .LiteralInteger, .quantifier = .required },
13167 .operands = &.{
13168 .{ .kind = .id_result_type, .quantifier = .required },
13169 .{ .kind = .id_result, .quantifier = .required },
13170 .{ .kind = .id_ref, .quantifier = .required },
13171 .{ .kind = .literal_integer, .quantifier = .required },
13172 .{ .kind = .literal_integer, .quantifier = .required },
13173 .{ .kind = .literal_integer, .quantifier = .required },
13174 .{ .kind = .literal_integer, .quantifier = .required },
13175 .{ .kind = .literal_integer, .quantifier = .required },
1207513176 },
1207613177 },
1207713178 .{
1207813179 .name = "OpArbitraryFloatACosPiINTEL",
1207913180 .opcode = 5876,
12080 .operands = &[_]Operand{
12081 .{ .kind = .IdResultType, .quantifier = .required },
12082 .{ .kind = .IdResult, .quantifier = .required },
12083 .{ .kind = .IdRef, .quantifier = .required },
12084 .{ .kind = .LiteralInteger, .quantifier = .required },
12085 .{ .kind = .LiteralInteger, .quantifier = .required },
12086 .{ .kind = .LiteralInteger, .quantifier = .required },
12087 .{ .kind = .LiteralInteger, .quantifier = .required },
12088 .{ .kind = .LiteralInteger, .quantifier = .required },
13181 .operands = &.{
13182 .{ .kind = .id_result_type, .quantifier = .required },
13183 .{ .kind = .id_result, .quantifier = .required },
13184 .{ .kind = .id_ref, .quantifier = .required },
13185 .{ .kind = .literal_integer, .quantifier = .required },
13186 .{ .kind = .literal_integer, .quantifier = .required },
13187 .{ .kind = .literal_integer, .quantifier = .required },
13188 .{ .kind = .literal_integer, .quantifier = .required },
13189 .{ .kind = .literal_integer, .quantifier = .required },
1208913190 },
1209013191 },
1209113192 .{
1209213193 .name = "OpArbitraryFloatATanINTEL",
1209313194 .opcode = 5877,
12094 .operands = &[_]Operand{
12095 .{ .kind = .IdResultType, .quantifier = .required },
12096 .{ .kind = .IdResult, .quantifier = .required },
12097 .{ .kind = .IdRef, .quantifier = .required },
12098 .{ .kind = .LiteralInteger, .quantifier = .required },
12099 .{ .kind = .LiteralInteger, .quantifier = .required },
12100 .{ .kind = .LiteralInteger, .quantifier = .required },
12101 .{ .kind = .LiteralInteger, .quantifier = .required },
12102 .{ .kind = .LiteralInteger, .quantifier = .required },
13195 .operands = &.{
13196 .{ .kind = .id_result_type, .quantifier = .required },
13197 .{ .kind = .id_result, .quantifier = .required },
13198 .{ .kind = .id_ref, .quantifier = .required },
13199 .{ .kind = .literal_integer, .quantifier = .required },
13200 .{ .kind = .literal_integer, .quantifier = .required },
13201 .{ .kind = .literal_integer, .quantifier = .required },
13202 .{ .kind = .literal_integer, .quantifier = .required },
13203 .{ .kind = .literal_integer, .quantifier = .required },
1210313204 },
1210413205 },
1210513206 .{
1210613207 .name = "OpArbitraryFloatATanPiINTEL",
1210713208 .opcode = 5878,
12108 .operands = &[_]Operand{
12109 .{ .kind = .IdResultType, .quantifier = .required },
12110 .{ .kind = .IdResult, .quantifier = .required },
12111 .{ .kind = .IdRef, .quantifier = .required },
12112 .{ .kind = .LiteralInteger, .quantifier = .required },
12113 .{ .kind = .LiteralInteger, .quantifier = .required },
12114 .{ .kind = .LiteralInteger, .quantifier = .required },
12115 .{ .kind = .LiteralInteger, .quantifier = .required },
12116 .{ .kind = .LiteralInteger, .quantifier = .required },
13209 .operands = &.{
13210 .{ .kind = .id_result_type, .quantifier = .required },
13211 .{ .kind = .id_result, .quantifier = .required },
13212 .{ .kind = .id_ref, .quantifier = .required },
13213 .{ .kind = .literal_integer, .quantifier = .required },
13214 .{ .kind = .literal_integer, .quantifier = .required },
13215 .{ .kind = .literal_integer, .quantifier = .required },
13216 .{ .kind = .literal_integer, .quantifier = .required },
13217 .{ .kind = .literal_integer, .quantifier = .required },
1211713218 },
1211813219 },
1211913220 .{
1212013221 .name = "OpArbitraryFloatATan2INTEL",
1212113222 .opcode = 5879,
12122 .operands = &[_]Operand{
12123 .{ .kind = .IdResultType, .quantifier = .required },
12124 .{ .kind = .IdResult, .quantifier = .required },
12125 .{ .kind = .IdRef, .quantifier = .required },
12126 .{ .kind = .LiteralInteger, .quantifier = .required },
12127 .{ .kind = .IdRef, .quantifier = .required },
12128 .{ .kind = .LiteralInteger, .quantifier = .required },
12129 .{ .kind = .LiteralInteger, .quantifier = .required },
12130 .{ .kind = .LiteralInteger, .quantifier = .required },
12131 .{ .kind = .LiteralInteger, .quantifier = .required },
12132 .{ .kind = .LiteralInteger, .quantifier = .required },
13223 .operands = &.{
13224 .{ .kind = .id_result_type, .quantifier = .required },
13225 .{ .kind = .id_result, .quantifier = .required },
13226 .{ .kind = .id_ref, .quantifier = .required },
13227 .{ .kind = .literal_integer, .quantifier = .required },
13228 .{ .kind = .id_ref, .quantifier = .required },
13229 .{ .kind = .literal_integer, .quantifier = .required },
13230 .{ .kind = .literal_integer, .quantifier = .required },
13231 .{ .kind = .literal_integer, .quantifier = .required },
13232 .{ .kind = .literal_integer, .quantifier = .required },
13233 .{ .kind = .literal_integer, .quantifier = .required },
1213313234 },
1213413235 },
1213513236 .{
1213613237 .name = "OpArbitraryFloatPowINTEL",
1213713238 .opcode = 5880,
12138 .operands = &[_]Operand{
12139 .{ .kind = .IdResultType, .quantifier = .required },
12140 .{ .kind = .IdResult, .quantifier = .required },
12141 .{ .kind = .IdRef, .quantifier = .required },
12142 .{ .kind = .LiteralInteger, .quantifier = .required },
12143 .{ .kind = .IdRef, .quantifier = .required },
12144 .{ .kind = .LiteralInteger, .quantifier = .required },
12145 .{ .kind = .LiteralInteger, .quantifier = .required },
12146 .{ .kind = .LiteralInteger, .quantifier = .required },
12147 .{ .kind = .LiteralInteger, .quantifier = .required },
12148 .{ .kind = .LiteralInteger, .quantifier = .required },
13239 .operands = &.{
13240 .{ .kind = .id_result_type, .quantifier = .required },
13241 .{ .kind = .id_result, .quantifier = .required },
13242 .{ .kind = .id_ref, .quantifier = .required },
13243 .{ .kind = .literal_integer, .quantifier = .required },
13244 .{ .kind = .id_ref, .quantifier = .required },
13245 .{ .kind = .literal_integer, .quantifier = .required },
13246 .{ .kind = .literal_integer, .quantifier = .required },
13247 .{ .kind = .literal_integer, .quantifier = .required },
13248 .{ .kind = .literal_integer, .quantifier = .required },
13249 .{ .kind = .literal_integer, .quantifier = .required },
1214913250 },
1215013251 },
1215113252 .{
1215213253 .name = "OpArbitraryFloatPowRINTEL",
1215313254 .opcode = 5881,
12154 .operands = &[_]Operand{
12155 .{ .kind = .IdResultType, .quantifier = .required },
12156 .{ .kind = .IdResult, .quantifier = .required },
12157 .{ .kind = .IdRef, .quantifier = .required },
12158 .{ .kind = .LiteralInteger, .quantifier = .required },
12159 .{ .kind = .IdRef, .quantifier = .required },
12160 .{ .kind = .LiteralInteger, .quantifier = .required },
12161 .{ .kind = .LiteralInteger, .quantifier = .required },
12162 .{ .kind = .LiteralInteger, .quantifier = .required },
12163 .{ .kind = .LiteralInteger, .quantifier = .required },
12164 .{ .kind = .LiteralInteger, .quantifier = .required },
13255 .operands = &.{
13256 .{ .kind = .id_result_type, .quantifier = .required },
13257 .{ .kind = .id_result, .quantifier = .required },
13258 .{ .kind = .id_ref, .quantifier = .required },
13259 .{ .kind = .literal_integer, .quantifier = .required },
13260 .{ .kind = .id_ref, .quantifier = .required },
13261 .{ .kind = .literal_integer, .quantifier = .required },
13262 .{ .kind = .literal_integer, .quantifier = .required },
13263 .{ .kind = .literal_integer, .quantifier = .required },
13264 .{ .kind = .literal_integer, .quantifier = .required },
13265 .{ .kind = .literal_integer, .quantifier = .required },
1216513266 },
1216613267 },
1216713268 .{
1216813269 .name = "OpArbitraryFloatPowNINTEL",
1216913270 .opcode = 5882,
12170 .operands = &[_]Operand{
12171 .{ .kind = .IdResultType, .quantifier = .required },
12172 .{ .kind = .IdResult, .quantifier = .required },
12173 .{ .kind = .IdRef, .quantifier = .required },
12174 .{ .kind = .LiteralInteger, .quantifier = .required },
12175 .{ .kind = .IdRef, .quantifier = .required },
12176 .{ .kind = .LiteralInteger, .quantifier = .required },
12177 .{ .kind = .LiteralInteger, .quantifier = .required },
12178 .{ .kind = .LiteralInteger, .quantifier = .required },
12179 .{ .kind = .LiteralInteger, .quantifier = .required },
13271 .operands = &.{
13272 .{ .kind = .id_result_type, .quantifier = .required },
13273 .{ .kind = .id_result, .quantifier = .required },
13274 .{ .kind = .id_ref, .quantifier = .required },
13275 .{ .kind = .literal_integer, .quantifier = .required },
13276 .{ .kind = .id_ref, .quantifier = .required },
13277 .{ .kind = .literal_integer, .quantifier = .required },
13278 .{ .kind = .literal_integer, .quantifier = .required },
13279 .{ .kind = .literal_integer, .quantifier = .required },
13280 .{ .kind = .literal_integer, .quantifier = .required },
13281 .{ .kind = .literal_integer, .quantifier = .required },
1218013282 },
1218113283 },
1218213284 .{
1218313285 .name = "OpLoopControlINTEL",
1218413286 .opcode = 5887,
12185 .operands = &[_]Operand{
12186 .{ .kind = .LiteralInteger, .quantifier = .variadic },
13287 .operands = &.{
13288 .{ .kind = .literal_integer, .quantifier = .variadic },
1218713289 },
1218813290 },
1218913291 .{
1219013292 .name = "OpAliasDomainDeclINTEL",
1219113293 .opcode = 5911,
12192 .operands = &[_]Operand{
12193 .{ .kind = .IdResult, .quantifier = .required },
12194 .{ .kind = .IdRef, .quantifier = .optional },
13294 .operands = &.{
13295 .{ .kind = .id_result, .quantifier = .required },
13296 .{ .kind = .id_ref, .quantifier = .optional },
1219513297 },
1219613298 },
1219713299 .{
1219813300 .name = "OpAliasScopeDeclINTEL",
1219913301 .opcode = 5912,
12200 .operands = &[_]Operand{
12201 .{ .kind = .IdResult, .quantifier = .required },
12202 .{ .kind = .IdRef, .quantifier = .required },
12203 .{ .kind = .IdRef, .quantifier = .optional },
13302 .operands = &.{
13303 .{ .kind = .id_result, .quantifier = .required },
13304 .{ .kind = .id_ref, .quantifier = .required },
13305 .{ .kind = .id_ref, .quantifier = .optional },
1220413306 },
1220513307 },
1220613308 .{
1220713309 .name = "OpAliasScopeListDeclINTEL",
1220813310 .opcode = 5913,
12209 .operands = &[_]Operand{
12210 .{ .kind = .IdResult, .quantifier = .required },
12211 .{ .kind = .IdRef, .quantifier = .variadic },
13311 .operands = &.{
13312 .{ .kind = .id_result, .quantifier = .required },
13313 .{ .kind = .id_ref, .quantifier = .variadic },
1221213314 },
1221313315 },
1221413316 .{
1221513317 .name = "OpFixedSqrtINTEL",
1221613318 .opcode = 5923,
12217 .operands = &[_]Operand{
12218 .{ .kind = .IdResultType, .quantifier = .required },
12219 .{ .kind = .IdResult, .quantifier = .required },
12220 .{ .kind = .IdRef, .quantifier = .required },
12221 .{ .kind = .IdRef, .quantifier = .required },
12222 .{ .kind = .LiteralInteger, .quantifier = .required },
12223 .{ .kind = .LiteralInteger, .quantifier = .required },
12224 .{ .kind = .LiteralInteger, .quantifier = .required },
12225 .{ .kind = .LiteralInteger, .quantifier = .required },
12226 .{ .kind = .LiteralInteger, .quantifier = .required },
13319 .operands = &.{
13320 .{ .kind = .id_result_type, .quantifier = .required },
13321 .{ .kind = .id_result, .quantifier = .required },
13322 .{ .kind = .id_ref, .quantifier = .required },
13323 .{ .kind = .literal_integer, .quantifier = .required },
13324 .{ .kind = .literal_integer, .quantifier = .required },
13325 .{ .kind = .literal_integer, .quantifier = .required },
13326 .{ .kind = .literal_integer, .quantifier = .required },
13327 .{ .kind = .literal_integer, .quantifier = .required },
1222713328 },
1222813329 },
1222913330 .{
1223013331 .name = "OpFixedRecipINTEL",
1223113332 .opcode = 5924,
12232 .operands = &[_]Operand{
12233 .{ .kind = .IdResultType, .quantifier = .required },
12234 .{ .kind = .IdResult, .quantifier = .required },
12235 .{ .kind = .IdRef, .quantifier = .required },
12236 .{ .kind = .IdRef, .quantifier = .required },
12237 .{ .kind = .LiteralInteger, .quantifier = .required },
12238 .{ .kind = .LiteralInteger, .quantifier = .required },
12239 .{ .kind = .LiteralInteger, .quantifier = .required },
12240 .{ .kind = .LiteralInteger, .quantifier = .required },
12241 .{ .kind = .LiteralInteger, .quantifier = .required },
13333 .operands = &.{
13334 .{ .kind = .id_result_type, .quantifier = .required },
13335 .{ .kind = .id_result, .quantifier = .required },
13336 .{ .kind = .id_ref, .quantifier = .required },
13337 .{ .kind = .literal_integer, .quantifier = .required },
13338 .{ .kind = .literal_integer, .quantifier = .required },
13339 .{ .kind = .literal_integer, .quantifier = .required },
13340 .{ .kind = .literal_integer, .quantifier = .required },
13341 .{ .kind = .literal_integer, .quantifier = .required },
1224213342 },
1224313343 },
1224413344 .{
1224513345 .name = "OpFixedRsqrtINTEL",
1224613346 .opcode = 5925,
12247 .operands = &[_]Operand{
12248 .{ .kind = .IdResultType, .quantifier = .required },
12249 .{ .kind = .IdResult, .quantifier = .required },
12250 .{ .kind = .IdRef, .quantifier = .required },
12251 .{ .kind = .IdRef, .quantifier = .required },
12252 .{ .kind = .LiteralInteger, .quantifier = .required },
12253 .{ .kind = .LiteralInteger, .quantifier = .required },
12254 .{ .kind = .LiteralInteger, .quantifier = .required },
12255 .{ .kind = .LiteralInteger, .quantifier = .required },
12256 .{ .kind = .LiteralInteger, .quantifier = .required },
13347 .operands = &.{
13348 .{ .kind = .id_result_type, .quantifier = .required },
13349 .{ .kind = .id_result, .quantifier = .required },
13350 .{ .kind = .id_ref, .quantifier = .required },
13351 .{ .kind = .literal_integer, .quantifier = .required },
13352 .{ .kind = .literal_integer, .quantifier = .required },
13353 .{ .kind = .literal_integer, .quantifier = .required },
13354 .{ .kind = .literal_integer, .quantifier = .required },
13355 .{ .kind = .literal_integer, .quantifier = .required },
1225713356 },
1225813357 },
1225913358 .{
1226013359 .name = "OpFixedSinINTEL",
1226113360 .opcode = 5926,
12262 .operands = &[_]Operand{
12263 .{ .kind = .IdResultType, .quantifier = .required },
12264 .{ .kind = .IdResult, .quantifier = .required },
12265 .{ .kind = .IdRef, .quantifier = .required },
12266 .{ .kind = .IdRef, .quantifier = .required },
12267 .{ .kind = .LiteralInteger, .quantifier = .required },
12268 .{ .kind = .LiteralInteger, .quantifier = .required },
12269 .{ .kind = .LiteralInteger, .quantifier = .required },
12270 .{ .kind = .LiteralInteger, .quantifier = .required },
12271 .{ .kind = .LiteralInteger, .quantifier = .required },
13361 .operands = &.{
13362 .{ .kind = .id_result_type, .quantifier = .required },
13363 .{ .kind = .id_result, .quantifier = .required },
13364 .{ .kind = .id_ref, .quantifier = .required },
13365 .{ .kind = .literal_integer, .quantifier = .required },
13366 .{ .kind = .literal_integer, .quantifier = .required },
13367 .{ .kind = .literal_integer, .quantifier = .required },
13368 .{ .kind = .literal_integer, .quantifier = .required },
13369 .{ .kind = .literal_integer, .quantifier = .required },
1227213370 },
1227313371 },
1227413372 .{
1227513373 .name = "OpFixedCosINTEL",
1227613374 .opcode = 5927,
12277 .operands = &[_]Operand{
12278 .{ .kind = .IdResultType, .quantifier = .required },
12279 .{ .kind = .IdResult, .quantifier = .required },
12280 .{ .kind = .IdRef, .quantifier = .required },
12281 .{ .kind = .IdRef, .quantifier = .required },
12282 .{ .kind = .LiteralInteger, .quantifier = .required },
12283 .{ .kind = .LiteralInteger, .quantifier = .required },
12284 .{ .kind = .LiteralInteger, .quantifier = .required },
12285 .{ .kind = .LiteralInteger, .quantifier = .required },
12286 .{ .kind = .LiteralInteger, .quantifier = .required },
13375 .operands = &.{
13376 .{ .kind = .id_result_type, .quantifier = .required },
13377 .{ .kind = .id_result, .quantifier = .required },
13378 .{ .kind = .id_ref, .quantifier = .required },
13379 .{ .kind = .literal_integer, .quantifier = .required },
13380 .{ .kind = .literal_integer, .quantifier = .required },
13381 .{ .kind = .literal_integer, .quantifier = .required },
13382 .{ .kind = .literal_integer, .quantifier = .required },
13383 .{ .kind = .literal_integer, .quantifier = .required },
1228713384 },
1228813385 },
1228913386 .{
1229013387 .name = "OpFixedSinCosINTEL",
1229113388 .opcode = 5928,
12292 .operands = &[_]Operand{
12293 .{ .kind = .IdResultType, .quantifier = .required },
12294 .{ .kind = .IdResult, .quantifier = .required },
12295 .{ .kind = .IdRef, .quantifier = .required },
12296 .{ .kind = .IdRef, .quantifier = .required },
12297 .{ .kind = .LiteralInteger, .quantifier = .required },
12298 .{ .kind = .LiteralInteger, .quantifier = .required },
12299 .{ .kind = .LiteralInteger, .quantifier = .required },
12300 .{ .kind = .LiteralInteger, .quantifier = .required },
12301 .{ .kind = .LiteralInteger, .quantifier = .required },
13389 .operands = &.{
13390 .{ .kind = .id_result_type, .quantifier = .required },
13391 .{ .kind = .id_result, .quantifier = .required },
13392 .{ .kind = .id_ref, .quantifier = .required },
13393 .{ .kind = .literal_integer, .quantifier = .required },
13394 .{ .kind = .literal_integer, .quantifier = .required },
13395 .{ .kind = .literal_integer, .quantifier = .required },
13396 .{ .kind = .literal_integer, .quantifier = .required },
13397 .{ .kind = .literal_integer, .quantifier = .required },
1230213398 },
1230313399 },
1230413400 .{
1230513401 .name = "OpFixedSinPiINTEL",
1230613402 .opcode = 5929,
12307 .operands = &[_]Operand{
12308 .{ .kind = .IdResultType, .quantifier = .required },
12309 .{ .kind = .IdResult, .quantifier = .required },
12310 .{ .kind = .IdRef, .quantifier = .required },
12311 .{ .kind = .IdRef, .quantifier = .required },
12312 .{ .kind = .LiteralInteger, .quantifier = .required },
12313 .{ .kind = .LiteralInteger, .quantifier = .required },
12314 .{ .kind = .LiteralInteger, .quantifier = .required },
12315 .{ .kind = .LiteralInteger, .quantifier = .required },
12316 .{ .kind = .LiteralInteger, .quantifier = .required },
13403 .operands = &.{
13404 .{ .kind = .id_result_type, .quantifier = .required },
13405 .{ .kind = .id_result, .quantifier = .required },
13406 .{ .kind = .id_ref, .quantifier = .required },
13407 .{ .kind = .literal_integer, .quantifier = .required },
13408 .{ .kind = .literal_integer, .quantifier = .required },
13409 .{ .kind = .literal_integer, .quantifier = .required },
13410 .{ .kind = .literal_integer, .quantifier = .required },
13411 .{ .kind = .literal_integer, .quantifier = .required },
1231713412 },
1231813413 },
1231913414 .{
1232013415 .name = "OpFixedCosPiINTEL",
1232113416 .opcode = 5930,
12322 .operands = &[_]Operand{
12323 .{ .kind = .IdResultType, .quantifier = .required },
12324 .{ .kind = .IdResult, .quantifier = .required },
12325 .{ .kind = .IdRef, .quantifier = .required },
12326 .{ .kind = .IdRef, .quantifier = .required },
12327 .{ .kind = .LiteralInteger, .quantifier = .required },
12328 .{ .kind = .LiteralInteger, .quantifier = .required },
12329 .{ .kind = .LiteralInteger, .quantifier = .required },
12330 .{ .kind = .LiteralInteger, .quantifier = .required },
12331 .{ .kind = .LiteralInteger, .quantifier = .required },
13417 .operands = &.{
13418 .{ .kind = .id_result_type, .quantifier = .required },
13419 .{ .kind = .id_result, .quantifier = .required },
13420 .{ .kind = .id_ref, .quantifier = .required },
13421 .{ .kind = .literal_integer, .quantifier = .required },
13422 .{ .kind = .literal_integer, .quantifier = .required },
13423 .{ .kind = .literal_integer, .quantifier = .required },
13424 .{ .kind = .literal_integer, .quantifier = .required },
13425 .{ .kind = .literal_integer, .quantifier = .required },
1233213426 },
1233313427 },
1233413428 .{
1233513429 .name = "OpFixedSinCosPiINTEL",
1233613430 .opcode = 5931,
12337 .operands = &[_]Operand{
12338 .{ .kind = .IdResultType, .quantifier = .required },
12339 .{ .kind = .IdResult, .quantifier = .required },
12340 .{ .kind = .IdRef, .quantifier = .required },
12341 .{ .kind = .IdRef, .quantifier = .required },
12342 .{ .kind = .LiteralInteger, .quantifier = .required },
12343 .{ .kind = .LiteralInteger, .quantifier = .required },
12344 .{ .kind = .LiteralInteger, .quantifier = .required },
12345 .{ .kind = .LiteralInteger, .quantifier = .required },
12346 .{ .kind = .LiteralInteger, .quantifier = .required },
13431 .operands = &.{
13432 .{ .kind = .id_result_type, .quantifier = .required },
13433 .{ .kind = .id_result, .quantifier = .required },
13434 .{ .kind = .id_ref, .quantifier = .required },
13435 .{ .kind = .literal_integer, .quantifier = .required },
13436 .{ .kind = .literal_integer, .quantifier = .required },
13437 .{ .kind = .literal_integer, .quantifier = .required },
13438 .{ .kind = .literal_integer, .quantifier = .required },
13439 .{ .kind = .literal_integer, .quantifier = .required },
1234713440 },
1234813441 },
1234913442 .{
1235013443 .name = "OpFixedLogINTEL",
1235113444 .opcode = 5932,
12352 .operands = &[_]Operand{
12353 .{ .kind = .IdResultType, .quantifier = .required },
12354 .{ .kind = .IdResult, .quantifier = .required },
12355 .{ .kind = .IdRef, .quantifier = .required },
12356 .{ .kind = .IdRef, .quantifier = .required },
12357 .{ .kind = .LiteralInteger, .quantifier = .required },
12358 .{ .kind = .LiteralInteger, .quantifier = .required },
12359 .{ .kind = .LiteralInteger, .quantifier = .required },
12360 .{ .kind = .LiteralInteger, .quantifier = .required },
12361 .{ .kind = .LiteralInteger, .quantifier = .required },
13445 .operands = &.{
13446 .{ .kind = .id_result_type, .quantifier = .required },
13447 .{ .kind = .id_result, .quantifier = .required },
13448 .{ .kind = .id_ref, .quantifier = .required },
13449 .{ .kind = .literal_integer, .quantifier = .required },
13450 .{ .kind = .literal_integer, .quantifier = .required },
13451 .{ .kind = .literal_integer, .quantifier = .required },
13452 .{ .kind = .literal_integer, .quantifier = .required },
13453 .{ .kind = .literal_integer, .quantifier = .required },
1236213454 },
1236313455 },
1236413456 .{
1236513457 .name = "OpFixedExpINTEL",
1236613458 .opcode = 5933,
12367 .operands = &[_]Operand{
12368 .{ .kind = .IdResultType, .quantifier = .required },
12369 .{ .kind = .IdResult, .quantifier = .required },
12370 .{ .kind = .IdRef, .quantifier = .required },
12371 .{ .kind = .IdRef, .quantifier = .required },
12372 .{ .kind = .LiteralInteger, .quantifier = .required },
12373 .{ .kind = .LiteralInteger, .quantifier = .required },
12374 .{ .kind = .LiteralInteger, .quantifier = .required },
12375 .{ .kind = .LiteralInteger, .quantifier = .required },
12376 .{ .kind = .LiteralInteger, .quantifier = .required },
13459 .operands = &.{
13460 .{ .kind = .id_result_type, .quantifier = .required },
13461 .{ .kind = .id_result, .quantifier = .required },
13462 .{ .kind = .id_ref, .quantifier = .required },
13463 .{ .kind = .literal_integer, .quantifier = .required },
13464 .{ .kind = .literal_integer, .quantifier = .required },
13465 .{ .kind = .literal_integer, .quantifier = .required },
13466 .{ .kind = .literal_integer, .quantifier = .required },
13467 .{ .kind = .literal_integer, .quantifier = .required },
1237713468 },
1237813469 },
1237913470 .{
1238013471 .name = "OpPtrCastToCrossWorkgroupINTEL",
1238113472 .opcode = 5934,
12382 .operands = &[_]Operand{
12383 .{ .kind = .IdResultType, .quantifier = .required },
12384 .{ .kind = .IdResult, .quantifier = .required },
12385 .{ .kind = .IdRef, .quantifier = .required },
13473 .operands = &.{
13474 .{ .kind = .id_result_type, .quantifier = .required },
13475 .{ .kind = .id_result, .quantifier = .required },
13476 .{ .kind = .id_ref, .quantifier = .required },
1238613477 },
1238713478 },
1238813479 .{
1238913480 .name = "OpCrossWorkgroupCastToPtrINTEL",
1239013481 .opcode = 5938,
12391 .operands = &[_]Operand{
12392 .{ .kind = .IdResultType, .quantifier = .required },
12393 .{ .kind = .IdResult, .quantifier = .required },
12394 .{ .kind = .IdRef, .quantifier = .required },
13482 .operands = &.{
13483 .{ .kind = .id_result_type, .quantifier = .required },
13484 .{ .kind = .id_result, .quantifier = .required },
13485 .{ .kind = .id_ref, .quantifier = .required },
1239513486 },
1239613487 },
1239713488 .{
1239813489 .name = "OpReadPipeBlockingINTEL",
1239913490 .opcode = 5946,
12400 .operands = &[_]Operand{
12401 .{ .kind = .IdResultType, .quantifier = .required },
12402 .{ .kind = .IdResult, .quantifier = .required },
12403 .{ .kind = .IdRef, .quantifier = .required },
12404 .{ .kind = .IdRef, .quantifier = .required },
13491 .operands = &.{
13492 .{ .kind = .id_result_type, .quantifier = .required },
13493 .{ .kind = .id_result, .quantifier = .required },
13494 .{ .kind = .id_ref, .quantifier = .required },
13495 .{ .kind = .id_ref, .quantifier = .required },
1240513496 },
1240613497 },
1240713498 .{
1240813499 .name = "OpWritePipeBlockingINTEL",
1240913500 .opcode = 5947,
12410 .operands = &[_]Operand{
12411 .{ .kind = .IdResultType, .quantifier = .required },
12412 .{ .kind = .IdResult, .quantifier = .required },
12413 .{ .kind = .IdRef, .quantifier = .required },
12414 .{ .kind = .IdRef, .quantifier = .required },
13501 .operands = &.{
13502 .{ .kind = .id_result_type, .quantifier = .required },
13503 .{ .kind = .id_result, .quantifier = .required },
13504 .{ .kind = .id_ref, .quantifier = .required },
13505 .{ .kind = .id_ref, .quantifier = .required },
1241513506 },
1241613507 },
1241713508 .{
1241813509 .name = "OpFPGARegINTEL",
1241913510 .opcode = 5949,
12420 .operands = &[_]Operand{
12421 .{ .kind = .IdResultType, .quantifier = .required },
12422 .{ .kind = .IdResult, .quantifier = .required },
12423 .{ .kind = .IdRef, .quantifier = .required },
12424 .{ .kind = .IdRef, .quantifier = .required },
13511 .operands = &.{
13512 .{ .kind = .id_result_type, .quantifier = .required },
13513 .{ .kind = .id_result, .quantifier = .required },
13514 .{ .kind = .id_ref, .quantifier = .required },
1242513515 },
1242613516 },
1242713517 .{
1242813518 .name = "OpRayQueryGetRayTMinKHR",
1242913519 .opcode = 6016,
12430 .operands = &[_]Operand{
12431 .{ .kind = .IdResultType, .quantifier = .required },
12432 .{ .kind = .IdResult, .quantifier = .required },
12433 .{ .kind = .IdRef, .quantifier = .required },
13520 .operands = &.{
13521 .{ .kind = .id_result_type, .quantifier = .required },
13522 .{ .kind = .id_result, .quantifier = .required },
13523 .{ .kind = .id_ref, .quantifier = .required },
1243413524 },
1243513525 },
1243613526 .{
1243713527 .name = "OpRayQueryGetRayFlagsKHR",
1243813528 .opcode = 6017,
12439 .operands = &[_]Operand{
12440 .{ .kind = .IdResultType, .quantifier = .required },
12441 .{ .kind = .IdResult, .quantifier = .required },
12442 .{ .kind = .IdRef, .quantifier = .required },
13529 .operands = &.{
13530 .{ .kind = .id_result_type, .quantifier = .required },
13531 .{ .kind = .id_result, .quantifier = .required },
13532 .{ .kind = .id_ref, .quantifier = .required },
1244313533 },
1244413534 },
1244513535 .{
1244613536 .name = "OpRayQueryGetIntersectionTKHR",
1244713537 .opcode = 6018,
12448 .operands = &[_]Operand{
12449 .{ .kind = .IdResultType, .quantifier = .required },
12450 .{ .kind = .IdResult, .quantifier = .required },
12451 .{ .kind = .IdRef, .quantifier = .required },
12452 .{ .kind = .IdRef, .quantifier = .required },
13538 .operands = &.{
13539 .{ .kind = .id_result_type, .quantifier = .required },
13540 .{ .kind = .id_result, .quantifier = .required },
13541 .{ .kind = .id_ref, .quantifier = .required },
13542 .{ .kind = .id_ref, .quantifier = .required },
1245313543 },
1245413544 },
1245513545 .{
1245613546 .name = "OpRayQueryGetIntersectionInstanceCustomIndexKHR",
1245713547 .opcode = 6019,
12458 .operands = &[_]Operand{
12459 .{ .kind = .IdResultType, .quantifier = .required },
12460 .{ .kind = .IdResult, .quantifier = .required },
12461 .{ .kind = .IdRef, .quantifier = .required },
12462 .{ .kind = .IdRef, .quantifier = .required },
13548 .operands = &.{
13549 .{ .kind = .id_result_type, .quantifier = .required },
13550 .{ .kind = .id_result, .quantifier = .required },
13551 .{ .kind = .id_ref, .quantifier = .required },
13552 .{ .kind = .id_ref, .quantifier = .required },
1246313553 },
1246413554 },
1246513555 .{
1246613556 .name = "OpRayQueryGetIntersectionInstanceIdKHR",
1246713557 .opcode = 6020,
12468 .operands = &[_]Operand{
12469 .{ .kind = .IdResultType, .quantifier = .required },
12470 .{ .kind = .IdResult, .quantifier = .required },
12471 .{ .kind = .IdRef, .quantifier = .required },
12472 .{ .kind = .IdRef, .quantifier = .required },
13558 .operands = &.{
13559 .{ .kind = .id_result_type, .quantifier = .required },
13560 .{ .kind = .id_result, .quantifier = .required },
13561 .{ .kind = .id_ref, .quantifier = .required },
13562 .{ .kind = .id_ref, .quantifier = .required },
1247313563 },
1247413564 },
1247513565 .{
1247613566 .name = "OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR",
1247713567 .opcode = 6021,
12478 .operands = &[_]Operand{
12479 .{ .kind = .IdResultType, .quantifier = .required },
12480 .{ .kind = .IdResult, .quantifier = .required },
12481 .{ .kind = .IdRef, .quantifier = .required },
12482 .{ .kind = .IdRef, .quantifier = .required },
13568 .operands = &.{
13569 .{ .kind = .id_result_type, .quantifier = .required },
13570 .{ .kind = .id_result, .quantifier = .required },
13571 .{ .kind = .id_ref, .quantifier = .required },
13572 .{ .kind = .id_ref, .quantifier = .required },
1248313573 },
1248413574 },
1248513575 .{
1248613576 .name = "OpRayQueryGetIntersectionGeometryIndexKHR",
1248713577 .opcode = 6022,
12488 .operands = &[_]Operand{
12489 .{ .kind = .IdResultType, .quantifier = .required },
12490 .{ .kind = .IdResult, .quantifier = .required },
12491 .{ .kind = .IdRef, .quantifier = .required },
12492 .{ .kind = .IdRef, .quantifier = .required },
13578 .operands = &.{
13579 .{ .kind = .id_result_type, .quantifier = .required },
13580 .{ .kind = .id_result, .quantifier = .required },
13581 .{ .kind = .id_ref, .quantifier = .required },
13582 .{ .kind = .id_ref, .quantifier = .required },
1249313583 },
1249413584 },
1249513585 .{
1249613586 .name = "OpRayQueryGetIntersectionPrimitiveIndexKHR",
1249713587 .opcode = 6023,
12498 .operands = &[_]Operand{
12499 .{ .kind = .IdResultType, .quantifier = .required },
12500 .{ .kind = .IdResult, .quantifier = .required },
12501 .{ .kind = .IdRef, .quantifier = .required },
12502 .{ .kind = .IdRef, .quantifier = .required },
13588 .operands = &.{
13589 .{ .kind = .id_result_type, .quantifier = .required },
13590 .{ .kind = .id_result, .quantifier = .required },
13591 .{ .kind = .id_ref, .quantifier = .required },
13592 .{ .kind = .id_ref, .quantifier = .required },
1250313593 },
1250413594 },
1250513595 .{
1250613596 .name = "OpRayQueryGetIntersectionBarycentricsKHR",
1250713597 .opcode = 6024,
12508 .operands = &[_]Operand{
12509 .{ .kind = .IdResultType, .quantifier = .required },
12510 .{ .kind = .IdResult, .quantifier = .required },
12511 .{ .kind = .IdRef, .quantifier = .required },
12512 .{ .kind = .IdRef, .quantifier = .required },
13598 .operands = &.{
13599 .{ .kind = .id_result_type, .quantifier = .required },
13600 .{ .kind = .id_result, .quantifier = .required },
13601 .{ .kind = .id_ref, .quantifier = .required },
13602 .{ .kind = .id_ref, .quantifier = .required },
1251313603 },
1251413604 },
1251513605 .{
1251613606 .name = "OpRayQueryGetIntersectionFrontFaceKHR",
1251713607 .opcode = 6025,
12518 .operands = &[_]Operand{
12519 .{ .kind = .IdResultType, .quantifier = .required },
12520 .{ .kind = .IdResult, .quantifier = .required },
12521 .{ .kind = .IdRef, .quantifier = .required },
12522 .{ .kind = .IdRef, .quantifier = .required },
13608 .operands = &.{
13609 .{ .kind = .id_result_type, .quantifier = .required },
13610 .{ .kind = .id_result, .quantifier = .required },
13611 .{ .kind = .id_ref, .quantifier = .required },
13612 .{ .kind = .id_ref, .quantifier = .required },
1252313613 },
1252413614 },
1252513615 .{
1252613616 .name = "OpRayQueryGetIntersectionCandidateAABBOpaqueKHR",
1252713617 .opcode = 6026,
12528 .operands = &[_]Operand{
12529 .{ .kind = .IdResultType, .quantifier = .required },
12530 .{ .kind = .IdResult, .quantifier = .required },
12531 .{ .kind = .IdRef, .quantifier = .required },
13618 .operands = &.{
13619 .{ .kind = .id_result_type, .quantifier = .required },
13620 .{ .kind = .id_result, .quantifier = .required },
13621 .{ .kind = .id_ref, .quantifier = .required },
1253213622 },
1253313623 },
1253413624 .{
1253513625 .name = "OpRayQueryGetIntersectionObjectRayDirectionKHR",
1253613626 .opcode = 6027,
12537 .operands = &[_]Operand{
12538 .{ .kind = .IdResultType, .quantifier = .required },
12539 .{ .kind = .IdResult, .quantifier = .required },
12540 .{ .kind = .IdRef, .quantifier = .required },
12541 .{ .kind = .IdRef, .quantifier = .required },
13627 .operands = &.{
13628 .{ .kind = .id_result_type, .quantifier = .required },
13629 .{ .kind = .id_result, .quantifier = .required },
13630 .{ .kind = .id_ref, .quantifier = .required },
13631 .{ .kind = .id_ref, .quantifier = .required },
1254213632 },
1254313633 },
1254413634 .{
1254513635 .name = "OpRayQueryGetIntersectionObjectRayOriginKHR",
1254613636 .opcode = 6028,
12547 .operands = &[_]Operand{
12548 .{ .kind = .IdResultType, .quantifier = .required },
12549 .{ .kind = .IdResult, .quantifier = .required },
12550 .{ .kind = .IdRef, .quantifier = .required },
12551 .{ .kind = .IdRef, .quantifier = .required },
13637 .operands = &.{
13638 .{ .kind = .id_result_type, .quantifier = .required },
13639 .{ .kind = .id_result, .quantifier = .required },
13640 .{ .kind = .id_ref, .quantifier = .required },
13641 .{ .kind = .id_ref, .quantifier = .required },
1255213642 },
1255313643 },
1255413644 .{
1255513645 .name = "OpRayQueryGetWorldRayDirectionKHR",
1255613646 .opcode = 6029,
12557 .operands = &[_]Operand{
12558 .{ .kind = .IdResultType, .quantifier = .required },
12559 .{ .kind = .IdResult, .quantifier = .required },
12560 .{ .kind = .IdRef, .quantifier = .required },
13647 .operands = &.{
13648 .{ .kind = .id_result_type, .quantifier = .required },
13649 .{ .kind = .id_result, .quantifier = .required },
13650 .{ .kind = .id_ref, .quantifier = .required },
1256113651 },
1256213652 },
1256313653 .{
1256413654 .name = "OpRayQueryGetWorldRayOriginKHR",
1256513655 .opcode = 6030,
12566 .operands = &[_]Operand{
12567 .{ .kind = .IdResultType, .quantifier = .required },
12568 .{ .kind = .IdResult, .quantifier = .required },
12569 .{ .kind = .IdRef, .quantifier = .required },
13656 .operands = &.{
13657 .{ .kind = .id_result_type, .quantifier = .required },
13658 .{ .kind = .id_result, .quantifier = .required },
13659 .{ .kind = .id_ref, .quantifier = .required },
1257013660 },
1257113661 },
1257213662 .{
1257313663 .name = "OpRayQueryGetIntersectionObjectToWorldKHR",
1257413664 .opcode = 6031,
12575 .operands = &[_]Operand{
12576 .{ .kind = .IdResultType, .quantifier = .required },
12577 .{ .kind = .IdResult, .quantifier = .required },
12578 .{ .kind = .IdRef, .quantifier = .required },
12579 .{ .kind = .IdRef, .quantifier = .required },
13665 .operands = &.{
13666 .{ .kind = .id_result_type, .quantifier = .required },
13667 .{ .kind = .id_result, .quantifier = .required },
13668 .{ .kind = .id_ref, .quantifier = .required },
13669 .{ .kind = .id_ref, .quantifier = .required },
1258013670 },
1258113671 },
1258213672 .{
1258313673 .name = "OpRayQueryGetIntersectionWorldToObjectKHR",
1258413674 .opcode = 6032,
12585 .operands = &[_]Operand{
12586 .{ .kind = .IdResultType, .quantifier = .required },
12587 .{ .kind = .IdResult, .quantifier = .required },
12588 .{ .kind = .IdRef, .quantifier = .required },
12589 .{ .kind = .IdRef, .quantifier = .required },
13675 .operands = &.{
13676 .{ .kind = .id_result_type, .quantifier = .required },
13677 .{ .kind = .id_result, .quantifier = .required },
13678 .{ .kind = .id_ref, .quantifier = .required },
13679 .{ .kind = .id_ref, .quantifier = .required },
1259013680 },
1259113681 },
1259213682 .{
1259313683 .name = "OpAtomicFAddEXT",
1259413684 .opcode = 6035,
12595 .operands = &[_]Operand{
12596 .{ .kind = .IdResultType, .quantifier = .required },
12597 .{ .kind = .IdResult, .quantifier = .required },
12598 .{ .kind = .IdRef, .quantifier = .required },
12599 .{ .kind = .IdScope, .quantifier = .required },
12600 .{ .kind = .IdMemorySemantics, .quantifier = .required },
12601 .{ .kind = .IdRef, .quantifier = .required },
13685 .operands = &.{
13686 .{ .kind = .id_result_type, .quantifier = .required },
13687 .{ .kind = .id_result, .quantifier = .required },
13688 .{ .kind = .id_ref, .quantifier = .required },
13689 .{ .kind = .id_scope, .quantifier = .required },
13690 .{ .kind = .id_memory_semantics, .quantifier = .required },
13691 .{ .kind = .id_ref, .quantifier = .required },
1260213692 },
1260313693 },
1260413694 .{
1260513695 .name = "OpTypeBufferSurfaceINTEL",
1260613696 .opcode = 6086,
12607 .operands = &[_]Operand{
12608 .{ .kind = .IdResult, .quantifier = .required },
12609 .{ .kind = .AccessQualifier, .quantifier = .required },
13697 .operands = &.{
13698 .{ .kind = .id_result, .quantifier = .required },
13699 .{ .kind = .access_qualifier, .quantifier = .required },
1261013700 },
1261113701 },
1261213702 .{
1261313703 .name = "OpTypeStructContinuedINTEL",
1261413704 .opcode = 6090,
12615 .operands = &[_]Operand{
12616 .{ .kind = .IdRef, .quantifier = .variadic },
13705 .operands = &.{
13706 .{ .kind = .id_ref, .quantifier = .variadic },
1261713707 },
1261813708 },
1261913709 .{
1262013710 .name = "OpConstantCompositeContinuedINTEL",
1262113711 .opcode = 6091,
12622 .operands = &[_]Operand{
12623 .{ .kind = .IdRef, .quantifier = .variadic },
13712 .operands = &.{
13713 .{ .kind = .id_ref, .quantifier = .variadic },
1262413714 },
1262513715 },
1262613716 .{
1262713717 .name = "OpSpecConstantCompositeContinuedINTEL",
1262813718 .opcode = 6092,
12629 .operands = &[_]Operand{
12630 .{ .kind = .IdRef, .quantifier = .variadic },
13719 .operands = &.{
13720 .{ .kind = .id_ref, .quantifier = .variadic },
1263113721 },
1263213722 },
1263313723 .{
1263413724 .name = "OpCompositeConstructContinuedINTEL",
1263513725 .opcode = 6096,
12636 .operands = &[_]Operand{
12637 .{ .kind = .IdResultType, .quantifier = .required },
12638 .{ .kind = .IdResult, .quantifier = .required },
12639 .{ .kind = .IdRef, .quantifier = .variadic },
13726 .operands = &.{
13727 .{ .kind = .id_result_type, .quantifier = .required },
13728 .{ .kind = .id_result, .quantifier = .required },
13729 .{ .kind = .id_ref, .quantifier = .variadic },
1264013730 },
1264113731 },
1264213732 .{
1264313733 .name = "OpConvertFToBF16INTEL",
1264413734 .opcode = 6116,
12645 .operands = &[_]Operand{
12646 .{ .kind = .IdResultType, .quantifier = .required },
12647 .{ .kind = .IdResult, .quantifier = .required },
12648 .{ .kind = .IdRef, .quantifier = .required },
13735 .operands = &.{
13736 .{ .kind = .id_result_type, .quantifier = .required },
13737 .{ .kind = .id_result, .quantifier = .required },
13738 .{ .kind = .id_ref, .quantifier = .required },
1264913739 },
1265013740 },
1265113741 .{
1265213742 .name = "OpConvertBF16ToFINTEL",
1265313743 .opcode = 6117,
12654 .operands = &[_]Operand{
12655 .{ .kind = .IdResultType, .quantifier = .required },
12656 .{ .kind = .IdResult, .quantifier = .required },
12657 .{ .kind = .IdRef, .quantifier = .required },
13744 .operands = &.{
13745 .{ .kind = .id_result_type, .quantifier = .required },
13746 .{ .kind = .id_result, .quantifier = .required },
13747 .{ .kind = .id_ref, .quantifier = .required },
1265813748 },
1265913749 },
1266013750 .{
1266113751 .name = "OpControlBarrierArriveINTEL",
1266213752 .opcode = 6142,
12663 .operands = &[_]Operand{
12664 .{ .kind = .IdScope, .quantifier = .required },
12665 .{ .kind = .IdScope, .quantifier = .required },
12666 .{ .kind = .IdMemorySemantics, .quantifier = .required },
13753 .operands = &.{
13754 .{ .kind = .id_scope, .quantifier = .required },
13755 .{ .kind = .id_scope, .quantifier = .required },
13756 .{ .kind = .id_memory_semantics, .quantifier = .required },
1266713757 },
1266813758 },
1266913759 .{
1267013760 .name = "OpControlBarrierWaitINTEL",
1267113761 .opcode = 6143,
12672 .operands = &[_]Operand{
12673 .{ .kind = .IdScope, .quantifier = .required },
12674 .{ .kind = .IdScope, .quantifier = .required },
12675 .{ .kind = .IdMemorySemantics, .quantifier = .required },
13762 .operands = &.{
13763 .{ .kind = .id_scope, .quantifier = .required },
13764 .{ .kind = .id_scope, .quantifier = .required },
13765 .{ .kind = .id_memory_semantics, .quantifier = .required },
1267613766 },
1267713767 },
1267813768 .{
12679 .name = "OpGroupIMulKHR",
12680 .opcode = 6401,
12681 .operands = &[_]Operand{
12682 .{ .kind = .IdResultType, .quantifier = .required },
12683 .{ .kind = .IdResult, .quantifier = .required },
12684 .{ .kind = .IdScope, .quantifier = .required },
12685 .{ .kind = .GroupOperation, .quantifier = .required },
12686 .{ .kind = .IdRef, .quantifier = .required },
13769 .name = "OpArithmeticFenceEXT",
13770 .opcode = 6145,
13771 .operands = &.{
13772 .{ .kind = .id_result_type, .quantifier = .required },
13773 .{ .kind = .id_result, .quantifier = .required },
13774 .{ .kind = .id_ref, .quantifier = .required },
1268713775 },
1268813776 },
1268913777 .{
12690 .name = "OpGroupFMulKHR",
12691 .opcode = 6402,
12692 .operands = &[_]Operand{
12693 .{ .kind = .IdResultType, .quantifier = .required },
12694 .{ .kind = .IdResult, .quantifier = .required },
12695 .{ .kind = .IdScope, .quantifier = .required },
12696 .{ .kind = .GroupOperation, .quantifier = .required },
12697 .{ .kind = .IdRef, .quantifier = .required },
13778 .name = "OpTaskSequenceCreateINTEL",
13779 .opcode = 6163,
13780 .operands = &.{
13781 .{ .kind = .id_result_type, .quantifier = .required },
13782 .{ .kind = .id_result, .quantifier = .required },
13783 .{ .kind = .id_ref, .quantifier = .required },
13784 .{ .kind = .literal_integer, .quantifier = .required },
13785 .{ .kind = .literal_integer, .quantifier = .required },
13786 .{ .kind = .literal_integer, .quantifier = .required },
13787 .{ .kind = .literal_integer, .quantifier = .required },
1269813788 },
1269913789 },
1270013790 .{
12701 .name = "OpGroupBitwiseAndKHR",
12702 .opcode = 6403,
12703 .operands = &[_]Operand{
12704 .{ .kind = .IdResultType, .quantifier = .required },
12705 .{ .kind = .IdResult, .quantifier = .required },
12706 .{ .kind = .IdScope, .quantifier = .required },
12707 .{ .kind = .GroupOperation, .quantifier = .required },
12708 .{ .kind = .IdRef, .quantifier = .required },
13791 .name = "OpTaskSequenceAsyncINTEL",
13792 .opcode = 6164,
13793 .operands = &.{
13794 .{ .kind = .id_ref, .quantifier = .required },
13795 .{ .kind = .id_ref, .quantifier = .variadic },
1270913796 },
1271013797 },
1271113798 .{
12712 .name = "OpGroupBitwiseOrKHR",
12713 .opcode = 6404,
12714 .operands = &[_]Operand{
12715 .{ .kind = .IdResultType, .quantifier = .required },
12716 .{ .kind = .IdResult, .quantifier = .required },
12717 .{ .kind = .IdScope, .quantifier = .required },
12718 .{ .kind = .GroupOperation, .quantifier = .required },
12719 .{ .kind = .IdRef, .quantifier = .required },
13799 .name = "OpTaskSequenceGetINTEL",
13800 .opcode = 6165,
13801 .operands = &.{
13802 .{ .kind = .id_result_type, .quantifier = .required },
13803 .{ .kind = .id_result, .quantifier = .required },
13804 .{ .kind = .id_ref, .quantifier = .required },
1272013805 },
1272113806 },
1272213807 .{
12723 .name = "OpGroupBitwiseXorKHR",
12724 .opcode = 6405,
12725 .operands = &[_]Operand{
12726 .{ .kind = .IdResultType, .quantifier = .required },
12727 .{ .kind = .IdResult, .quantifier = .required },
12728 .{ .kind = .IdScope, .quantifier = .required },
12729 .{ .kind = .GroupOperation, .quantifier = .required },
12730 .{ .kind = .IdRef, .quantifier = .required },
13808 .name = "OpTaskSequenceReleaseINTEL",
13809 .opcode = 6166,
13810 .operands = &.{
13811 .{ .kind = .id_ref, .quantifier = .required },
1273113812 },
1273213813 },
1273313814 .{
12734 .name = "OpGroupLogicalAndKHR",
12735 .opcode = 6406,
12736 .operands = &[_]Operand{
12737 .{ .kind = .IdResultType, .quantifier = .required },
12738 .{ .kind = .IdResult, .quantifier = .required },
12739 .{ .kind = .IdScope, .quantifier = .required },
12740 .{ .kind = .GroupOperation, .quantifier = .required },
12741 .{ .kind = .IdRef, .quantifier = .required },
13815 .name = "OpTypeTaskSequenceINTEL",
13816 .opcode = 6199,
13817 .operands = &.{
13818 .{ .kind = .id_result, .quantifier = .required },
1274213819 },
1274313820 },
1274413821 .{
12745 .name = "OpGroupLogicalOrKHR",
12746 .opcode = 6407,
12747 .operands = &[_]Operand{
12748 .{ .kind = .IdResultType, .quantifier = .required },
12749 .{ .kind = .IdResult, .quantifier = .required },
12750 .{ .kind = .IdScope, .quantifier = .required },
12751 .{ .kind = .GroupOperation, .quantifier = .required },
12752 .{ .kind = .IdRef, .quantifier = .required },
13822 .name = "OpSubgroupBlockPrefetchINTEL",
13823 .opcode = 6221,
13824 .operands = &.{
13825 .{ .kind = .id_ref, .quantifier = .required },
13826 .{ .kind = .id_ref, .quantifier = .required },
13827 .{ .kind = .memory_access, .quantifier = .optional },
1275313828 },
1275413829 },
1275513830 .{
12756 .name = "OpGroupLogicalXorKHR",
12757 .opcode = 6408,
12758 .operands = &[_]Operand{
12759 .{ .kind = .IdResultType, .quantifier = .required },
12760 .{ .kind = .IdResult, .quantifier = .required },
12761 .{ .kind = .IdScope, .quantifier = .required },
12762 .{ .kind = .GroupOperation, .quantifier = .required },
12763 .{ .kind = .IdRef, .quantifier = .required },
13831 .name = "OpSubgroup2DBlockLoadINTEL",
13832 .opcode = 6231,
13833 .operands = &.{
13834 .{ .kind = .id_ref, .quantifier = .required },
13835 .{ .kind = .id_ref, .quantifier = .required },
13836 .{ .kind = .id_ref, .quantifier = .required },
13837 .{ .kind = .id_ref, .quantifier = .required },
13838 .{ .kind = .id_ref, .quantifier = .required },
13839 .{ .kind = .id_ref, .quantifier = .required },
13840 .{ .kind = .id_ref, .quantifier = .required },
13841 .{ .kind = .id_ref, .quantifier = .required },
13842 .{ .kind = .id_ref, .quantifier = .required },
13843 .{ .kind = .id_ref, .quantifier = .required },
1276413844 },
1276513845 },
1276613846 .{
12767 .name = "OpMaskedGatherINTEL",
12768 .opcode = 6428,
12769 .operands = &[_]Operand{
12770 .{ .kind = .IdResultType, .quantifier = .required },
12771 .{ .kind = .IdResult, .quantifier = .required },
12772 .{ .kind = .IdRef, .quantifier = .required },
12773 .{ .kind = .LiteralInteger, .quantifier = .required },
12774 .{ .kind = .IdRef, .quantifier = .required },
12775 .{ .kind = .IdRef, .quantifier = .required },
13847 .name = "OpSubgroup2DBlockLoadTransformINTEL",
13848 .opcode = 6232,
13849 .operands = &.{
13850 .{ .kind = .id_ref, .quantifier = .required },
13851 .{ .kind = .id_ref, .quantifier = .required },
13852 .{ .kind = .id_ref, .quantifier = .required },
13853 .{ .kind = .id_ref, .quantifier = .required },
13854 .{ .kind = .id_ref, .quantifier = .required },
13855 .{ .kind = .id_ref, .quantifier = .required },
13856 .{ .kind = .id_ref, .quantifier = .required },
13857 .{ .kind = .id_ref, .quantifier = .required },
13858 .{ .kind = .id_ref, .quantifier = .required },
13859 .{ .kind = .id_ref, .quantifier = .required },
1277613860 },
1277713861 },
1277813862 .{
12779 .name = "OpMaskedScatterINTEL",
12780 .opcode = 6429,
12781 .operands = &[_]Operand{
12782 .{ .kind = .IdRef, .quantifier = .required },
12783 .{ .kind = .IdRef, .quantifier = .required },
12784 .{ .kind = .LiteralInteger, .quantifier = .required },
12785 .{ .kind = .IdRef, .quantifier = .required },
13863 .name = "OpSubgroup2DBlockLoadTransposeINTEL",
13864 .opcode = 6233,
13865 .operands = &.{
13866 .{ .kind = .id_ref, .quantifier = .required },
13867 .{ .kind = .id_ref, .quantifier = .required },
13868 .{ .kind = .id_ref, .quantifier = .required },
13869 .{ .kind = .id_ref, .quantifier = .required },
13870 .{ .kind = .id_ref, .quantifier = .required },
13871 .{ .kind = .id_ref, .quantifier = .required },
13872 .{ .kind = .id_ref, .quantifier = .required },
13873 .{ .kind = .id_ref, .quantifier = .required },
13874 .{ .kind = .id_ref, .quantifier = .required },
13875 .{ .kind = .id_ref, .quantifier = .required },
1278613876 },
1278713877 },
12788 },
12789 .@"OpenCL.std" => &[_]Instruction{
1279013878 .{
12791 .name = "acos",
12792 .opcode = 0,
12793 .operands = &[_]Operand{
12794 .{ .kind = .IdRef, .quantifier = .required },
13879 .name = "OpSubgroup2DBlockPrefetchINTEL",
13880 .opcode = 6234,
13881 .operands = &.{
13882 .{ .kind = .id_ref, .quantifier = .required },
13883 .{ .kind = .id_ref, .quantifier = .required },
13884 .{ .kind = .id_ref, .quantifier = .required },
13885 .{ .kind = .id_ref, .quantifier = .required },
13886 .{ .kind = .id_ref, .quantifier = .required },
13887 .{ .kind = .id_ref, .quantifier = .required },
13888 .{ .kind = .id_ref, .quantifier = .required },
13889 .{ .kind = .id_ref, .quantifier = .required },
13890 .{ .kind = .id_ref, .quantifier = .required },
1279513891 },
1279613892 },
1279713893 .{
12798 .name = "acosh",
12799 .opcode = 1,
12800 .operands = &[_]Operand{
12801 .{ .kind = .IdRef, .quantifier = .required },
13894 .name = "OpSubgroup2DBlockStoreINTEL",
13895 .opcode = 6235,
13896 .operands = &.{
13897 .{ .kind = .id_ref, .quantifier = .required },
13898 .{ .kind = .id_ref, .quantifier = .required },
13899 .{ .kind = .id_ref, .quantifier = .required },
13900 .{ .kind = .id_ref, .quantifier = .required },
13901 .{ .kind = .id_ref, .quantifier = .required },
13902 .{ .kind = .id_ref, .quantifier = .required },
13903 .{ .kind = .id_ref, .quantifier = .required },
13904 .{ .kind = .id_ref, .quantifier = .required },
13905 .{ .kind = .id_ref, .quantifier = .required },
13906 .{ .kind = .id_ref, .quantifier = .required },
13907 },
13908 },
13909 .{
13910 .name = "OpSubgroupMatrixMultiplyAccumulateINTEL",
13911 .opcode = 6237,
13912 .operands = &.{
13913 .{ .kind = .id_result_type, .quantifier = .required },
13914 .{ .kind = .id_result, .quantifier = .required },
13915 .{ .kind = .id_ref, .quantifier = .required },
13916 .{ .kind = .id_ref, .quantifier = .required },
13917 .{ .kind = .id_ref, .quantifier = .required },
13918 .{ .kind = .id_ref, .quantifier = .required },
13919 .{ .kind = .matrix_multiply_accumulate_operands, .quantifier = .optional },
13920 },
13921 },
13922 .{
13923 .name = "OpBitwiseFunctionINTEL",
13924 .opcode = 6242,
13925 .operands = &.{
13926 .{ .kind = .id_result_type, .quantifier = .required },
13927 .{ .kind = .id_result, .quantifier = .required },
13928 .{ .kind = .id_ref, .quantifier = .required },
13929 .{ .kind = .id_ref, .quantifier = .required },
13930 .{ .kind = .id_ref, .quantifier = .required },
13931 .{ .kind = .id_ref, .quantifier = .required },
1280213932 },
1280313933 },
1280413934 .{
12805 .name = "acospi",
12806 .opcode = 2,
12807 .operands = &[_]Operand{
12808 .{ .kind = .IdRef, .quantifier = .required },
13935 .name = "OpGroupIMulKHR",
13936 .opcode = 6401,
13937 .operands = &.{
13938 .{ .kind = .id_result_type, .quantifier = .required },
13939 .{ .kind = .id_result, .quantifier = .required },
13940 .{ .kind = .id_scope, .quantifier = .required },
13941 .{ .kind = .group_operation, .quantifier = .required },
13942 .{ .kind = .id_ref, .quantifier = .required },
1280913943 },
1281013944 },
1281113945 .{
12812 .name = "asin",
12813 .opcode = 3,
12814 .operands = &[_]Operand{
12815 .{ .kind = .IdRef, .quantifier = .required },
12816 },
13946 .name = "OpGroupFMulKHR",
13947 .opcode = 6402,
13948 .operands = &.{
13949 .{ .kind = .id_result_type, .quantifier = .required },
13950 .{ .kind = .id_result, .quantifier = .required },
13951 .{ .kind = .id_scope, .quantifier = .required },
13952 .{ .kind = .group_operation, .quantifier = .required },
13953 .{ .kind = .id_ref, .quantifier = .required },
13954 },
1281713955 },
1281813956 .{
12819 .name = "asinh",
13957 .name = "OpGroupBitwiseAndKHR",
13958 .opcode = 6403,
13959 .operands = &.{
13960 .{ .kind = .id_result_type, .quantifier = .required },
13961 .{ .kind = .id_result, .quantifier = .required },
13962 .{ .kind = .id_scope, .quantifier = .required },
13963 .{ .kind = .group_operation, .quantifier = .required },
13964 .{ .kind = .id_ref, .quantifier = .required },
13965 },
13966 },
13967 .{
13968 .name = "OpGroupBitwiseOrKHR",
13969 .opcode = 6404,
13970 .operands = &.{
13971 .{ .kind = .id_result_type, .quantifier = .required },
13972 .{ .kind = .id_result, .quantifier = .required },
13973 .{ .kind = .id_scope, .quantifier = .required },
13974 .{ .kind = .group_operation, .quantifier = .required },
13975 .{ .kind = .id_ref, .quantifier = .required },
13976 },
13977 },
13978 .{
13979 .name = "OpGroupBitwiseXorKHR",
13980 .opcode = 6405,
13981 .operands = &.{
13982 .{ .kind = .id_result_type, .quantifier = .required },
13983 .{ .kind = .id_result, .quantifier = .required },
13984 .{ .kind = .id_scope, .quantifier = .required },
13985 .{ .kind = .group_operation, .quantifier = .required },
13986 .{ .kind = .id_ref, .quantifier = .required },
13987 },
13988 },
13989 .{
13990 .name = "OpGroupLogicalAndKHR",
13991 .opcode = 6406,
13992 .operands = &.{
13993 .{ .kind = .id_result_type, .quantifier = .required },
13994 .{ .kind = .id_result, .quantifier = .required },
13995 .{ .kind = .id_scope, .quantifier = .required },
13996 .{ .kind = .group_operation, .quantifier = .required },
13997 .{ .kind = .id_ref, .quantifier = .required },
13998 },
13999 },
14000 .{
14001 .name = "OpGroupLogicalOrKHR",
14002 .opcode = 6407,
14003 .operands = &.{
14004 .{ .kind = .id_result_type, .quantifier = .required },
14005 .{ .kind = .id_result, .quantifier = .required },
14006 .{ .kind = .id_scope, .quantifier = .required },
14007 .{ .kind = .group_operation, .quantifier = .required },
14008 .{ .kind = .id_ref, .quantifier = .required },
14009 },
14010 },
14011 .{
14012 .name = "OpGroupLogicalXorKHR",
14013 .opcode = 6408,
14014 .operands = &.{
14015 .{ .kind = .id_result_type, .quantifier = .required },
14016 .{ .kind = .id_result, .quantifier = .required },
14017 .{ .kind = .id_scope, .quantifier = .required },
14018 .{ .kind = .group_operation, .quantifier = .required },
14019 .{ .kind = .id_ref, .quantifier = .required },
14020 },
14021 },
14022 .{
14023 .name = "OpRoundFToTF32INTEL",
14024 .opcode = 6426,
14025 .operands = &.{
14026 .{ .kind = .id_result_type, .quantifier = .required },
14027 .{ .kind = .id_result, .quantifier = .required },
14028 .{ .kind = .id_ref, .quantifier = .required },
14029 },
14030 },
14031 .{
14032 .name = "OpMaskedGatherINTEL",
14033 .opcode = 6428,
14034 .operands = &.{
14035 .{ .kind = .id_result_type, .quantifier = .required },
14036 .{ .kind = .id_result, .quantifier = .required },
14037 .{ .kind = .id_ref, .quantifier = .required },
14038 .{ .kind = .literal_integer, .quantifier = .required },
14039 .{ .kind = .id_ref, .quantifier = .required },
14040 .{ .kind = .id_ref, .quantifier = .required },
14041 },
14042 },
14043 .{
14044 .name = "OpMaskedScatterINTEL",
14045 .opcode = 6429,
14046 .operands = &.{
14047 .{ .kind = .id_ref, .quantifier = .required },
14048 .{ .kind = .id_ref, .quantifier = .required },
14049 .{ .kind = .literal_integer, .quantifier = .required },
14050 .{ .kind = .id_ref, .quantifier = .required },
14051 },
14052 },
14053 .{
14054 .name = "OpConvertHandleToImageINTEL",
14055 .opcode = 6529,
14056 .operands = &.{
14057 .{ .kind = .id_result_type, .quantifier = .required },
14058 .{ .kind = .id_result, .quantifier = .required },
14059 .{ .kind = .id_ref, .quantifier = .required },
14060 },
14061 },
14062 .{
14063 .name = "OpConvertHandleToSamplerINTEL",
14064 .opcode = 6530,
14065 .operands = &.{
14066 .{ .kind = .id_result_type, .quantifier = .required },
14067 .{ .kind = .id_result, .quantifier = .required },
14068 .{ .kind = .id_ref, .quantifier = .required },
14069 },
14070 },
14071 .{
14072 .name = "OpConvertHandleToSampledImageINTEL",
14073 .opcode = 6531,
14074 .operands = &.{
14075 .{ .kind = .id_result_type, .quantifier = .required },
14076 .{ .kind = .id_result, .quantifier = .required },
14077 .{ .kind = .id_ref, .quantifier = .required },
14078 },
14079 },
14080 },
14081 .spv_amd_shader_trinary_minmax => &.{
14082 .{
14083 .name = "FMin3AMD",
14084 .opcode = 1,
14085 .operands = &.{
14086 .{ .kind = .id_ref, .quantifier = .required },
14087 .{ .kind = .id_ref, .quantifier = .required },
14088 .{ .kind = .id_ref, .quantifier = .required },
14089 },
14090 },
14091 .{
14092 .name = "UMin3AMD",
14093 .opcode = 2,
14094 .operands = &.{
14095 .{ .kind = .id_ref, .quantifier = .required },
14096 .{ .kind = .id_ref, .quantifier = .required },
14097 .{ .kind = .id_ref, .quantifier = .required },
14098 },
14099 },
14100 .{
14101 .name = "SMin3AMD",
14102 .opcode = 3,
14103 .operands = &.{
14104 .{ .kind = .id_ref, .quantifier = .required },
14105 .{ .kind = .id_ref, .quantifier = .required },
14106 .{ .kind = .id_ref, .quantifier = .required },
14107 },
14108 },
14109 .{
14110 .name = "FMax3AMD",
1282014111 .opcode = 4,
12821 .operands = &[_]Operand{
12822 .{ .kind = .IdRef, .quantifier = .required },
14112 .operands = &.{
14113 .{ .kind = .id_ref, .quantifier = .required },
14114 .{ .kind = .id_ref, .quantifier = .required },
14115 .{ .kind = .id_ref, .quantifier = .required },
1282314116 },
1282414117 },
1282514118 .{
12826 .name = "asinpi",
14119 .name = "UMax3AMD",
1282714120 .opcode = 5,
12828 .operands = &[_]Operand{
12829 .{ .kind = .IdRef, .quantifier = .required },
14121 .operands = &.{
14122 .{ .kind = .id_ref, .quantifier = .required },
14123 .{ .kind = .id_ref, .quantifier = .required },
14124 .{ .kind = .id_ref, .quantifier = .required },
1283014125 },
1283114126 },
1283214127 .{
12833 .name = "atan",
14128 .name = "SMax3AMD",
1283414129 .opcode = 6,
12835 .operands = &[_]Operand{
12836 .{ .kind = .IdRef, .quantifier = .required },
14130 .operands = &.{
14131 .{ .kind = .id_ref, .quantifier = .required },
14132 .{ .kind = .id_ref, .quantifier = .required },
14133 .{ .kind = .id_ref, .quantifier = .required },
1283714134 },
1283814135 },
1283914136 .{
12840 .name = "atan2",
14137 .name = "FMid3AMD",
1284114138 .opcode = 7,
12842 .operands = &[_]Operand{
12843 .{ .kind = .IdRef, .quantifier = .required },
12844 .{ .kind = .IdRef, .quantifier = .required },
14139 .operands = &.{
14140 .{ .kind = .id_ref, .quantifier = .required },
14141 .{ .kind = .id_ref, .quantifier = .required },
14142 .{ .kind = .id_ref, .quantifier = .required },
1284514143 },
1284614144 },
1284714145 .{
12848 .name = "atanh",
14146 .name = "UMid3AMD",
1284914147 .opcode = 8,
12850 .operands = &[_]Operand{
12851 .{ .kind = .IdRef, .quantifier = .required },
14148 .operands = &.{
14149 .{ .kind = .id_ref, .quantifier = .required },
14150 .{ .kind = .id_ref, .quantifier = .required },
14151 .{ .kind = .id_ref, .quantifier = .required },
1285214152 },
1285314153 },
1285414154 .{
12855 .name = "atanpi",
14155 .name = "SMid3AMD",
1285614156 .opcode = 9,
12857 .operands = &[_]Operand{
12858 .{ .kind = .IdRef, .quantifier = .required },
14157 .operands = &.{
14158 .{ .kind = .id_ref, .quantifier = .required },
14159 .{ .kind = .id_ref, .quantifier = .required },
14160 .{ .kind = .id_ref, .quantifier = .required },
1285914161 },
1286014162 },
14163 },
14164 .spv_ext_inst_type_tosa_001000_1 => &.{
1286114165 .{
12862 .name = "atan2pi",
14166 .name = "ARGMAX",
14167 .opcode = 0,
14168 .operands = &.{
14169 .{ .kind = .id_ref, .quantifier = .required },
14170 .{ .kind = .id_ref, .quantifier = .required },
14171 .{ .kind = .id_ref, .quantifier = .required },
14172 },
14173 },
14174 .{
14175 .name = "AVG_POOL2D",
14176 .opcode = 1,
14177 .operands = &.{
14178 .{ .kind = .id_ref, .quantifier = .required },
14179 .{ .kind = .id_ref, .quantifier = .required },
14180 .{ .kind = .id_ref, .quantifier = .required },
14181 .{ .kind = .id_ref, .quantifier = .required },
14182 .{ .kind = .id_ref, .quantifier = .required },
14183 .{ .kind = .id_ref, .quantifier = .required },
14184 .{ .kind = .id_ref, .quantifier = .required },
14185 },
14186 },
14187 .{
14188 .name = "CONV2D",
14189 .opcode = 2,
14190 .operands = &.{
14191 .{ .kind = .id_ref, .quantifier = .required },
14192 .{ .kind = .id_ref, .quantifier = .required },
14193 .{ .kind = .id_ref, .quantifier = .required },
14194 .{ .kind = .id_ref, .quantifier = .required },
14195 .{ .kind = .id_ref, .quantifier = .required },
14196 .{ .kind = .id_ref, .quantifier = .required },
14197 .{ .kind = .id_ref, .quantifier = .required },
14198 .{ .kind = .id_ref, .quantifier = .required },
14199 .{ .kind = .id_ref, .quantifier = .required },
14200 .{ .kind = .id_ref, .quantifier = .required },
14201 },
14202 },
14203 .{
14204 .name = "CONV3D",
14205 .opcode = 3,
14206 .operands = &.{
14207 .{ .kind = .id_ref, .quantifier = .required },
14208 .{ .kind = .id_ref, .quantifier = .required },
14209 .{ .kind = .id_ref, .quantifier = .required },
14210 .{ .kind = .id_ref, .quantifier = .required },
14211 .{ .kind = .id_ref, .quantifier = .required },
14212 .{ .kind = .id_ref, .quantifier = .required },
14213 .{ .kind = .id_ref, .quantifier = .required },
14214 .{ .kind = .id_ref, .quantifier = .required },
14215 .{ .kind = .id_ref, .quantifier = .required },
14216 .{ .kind = .id_ref, .quantifier = .required },
14217 },
14218 },
14219 .{
14220 .name = "DEPTHWISE_CONV2D",
14221 .opcode = 4,
14222 .operands = &.{
14223 .{ .kind = .id_ref, .quantifier = .required },
14224 .{ .kind = .id_ref, .quantifier = .required },
14225 .{ .kind = .id_ref, .quantifier = .required },
14226 .{ .kind = .id_ref, .quantifier = .required },
14227 .{ .kind = .id_ref, .quantifier = .required },
14228 .{ .kind = .id_ref, .quantifier = .required },
14229 .{ .kind = .id_ref, .quantifier = .required },
14230 .{ .kind = .id_ref, .quantifier = .required },
14231 .{ .kind = .id_ref, .quantifier = .required },
14232 .{ .kind = .id_ref, .quantifier = .required },
14233 },
14234 },
14235 .{
14236 .name = "FFT2D",
14237 .opcode = 5,
14238 .operands = &.{
14239 .{ .kind = .id_ref, .quantifier = .required },
14240 .{ .kind = .id_ref, .quantifier = .required },
14241 .{ .kind = .id_ref, .quantifier = .required },
14242 .{ .kind = .id_ref, .quantifier = .required },
14243 },
14244 },
14245 .{
14246 .name = "MATMUL",
14247 .opcode = 6,
14248 .operands = &.{
14249 .{ .kind = .id_ref, .quantifier = .required },
14250 .{ .kind = .id_ref, .quantifier = .required },
14251 .{ .kind = .id_ref, .quantifier = .required },
14252 .{ .kind = .id_ref, .quantifier = .required },
14253 },
14254 },
14255 .{
14256 .name = "MAX_POOL2D",
14257 .opcode = 7,
14258 .operands = &.{
14259 .{ .kind = .id_ref, .quantifier = .required },
14260 .{ .kind = .id_ref, .quantifier = .required },
14261 .{ .kind = .id_ref, .quantifier = .required },
14262 .{ .kind = .id_ref, .quantifier = .required },
14263 .{ .kind = .id_ref, .quantifier = .required },
14264 },
14265 },
14266 .{
14267 .name = "RFFT2D",
14268 .opcode = 8,
14269 .operands = &.{
14270 .{ .kind = .id_ref, .quantifier = .required },
14271 .{ .kind = .id_ref, .quantifier = .required },
14272 },
14273 },
14274 .{
14275 .name = "TRANSPOSE_CONV2D",
14276 .opcode = 9,
14277 .operands = &.{
14278 .{ .kind = .id_ref, .quantifier = .required },
14279 .{ .kind = .id_ref, .quantifier = .required },
14280 .{ .kind = .id_ref, .quantifier = .required },
14281 .{ .kind = .id_ref, .quantifier = .required },
14282 .{ .kind = .id_ref, .quantifier = .required },
14283 .{ .kind = .id_ref, .quantifier = .required },
14284 .{ .kind = .id_ref, .quantifier = .required },
14285 .{ .kind = .id_ref, .quantifier = .required },
14286 .{ .kind = .id_ref, .quantifier = .required },
14287 },
14288 },
14289 .{
14290 .name = "CLAMP",
1286314291 .opcode = 10,
12864 .operands = &[_]Operand{
12865 .{ .kind = .IdRef, .quantifier = .required },
12866 .{ .kind = .IdRef, .quantifier = .required },
14292 .operands = &.{
14293 .{ .kind = .id_ref, .quantifier = .required },
14294 .{ .kind = .id_ref, .quantifier = .required },
14295 .{ .kind = .id_ref, .quantifier = .required },
14296 .{ .kind = .id_ref, .quantifier = .required },
1286714297 },
1286814298 },
1286914299 .{
12870 .name = "cbrt",
14300 .name = "ERF",
1287114301 .opcode = 11,
12872 .operands = &[_]Operand{
12873 .{ .kind = .IdRef, .quantifier = .required },
14302 .operands = &.{
14303 .{ .kind = .id_ref, .quantifier = .required },
1287414304 },
1287514305 },
1287614306 .{
12877 .name = "ceil",
14307 .name = "SIGMOID",
1287814308 .opcode = 12,
12879 .operands = &[_]Operand{
12880 .{ .kind = .IdRef, .quantifier = .required },
14309 .operands = &.{
14310 .{ .kind = .id_ref, .quantifier = .required },
1288114311 },
1288214312 },
1288314313 .{
12884 .name = "copysign",
14314 .name = "TANH",
1288514315 .opcode = 13,
12886 .operands = &[_]Operand{
12887 .{ .kind = .IdRef, .quantifier = .required },
12888 .{ .kind = .IdRef, .quantifier = .required },
14316 .operands = &.{
14317 .{ .kind = .id_ref, .quantifier = .required },
1288914318 },
1289014319 },
1289114320 .{
12892 .name = "cos",
14321 .name = "ADD",
1289314322 .opcode = 14,
12894 .operands = &[_]Operand{
12895 .{ .kind = .IdRef, .quantifier = .required },
14323 .operands = &.{
14324 .{ .kind = .id_ref, .quantifier = .required },
14325 .{ .kind = .id_ref, .quantifier = .required },
1289614326 },
1289714327 },
1289814328 .{
12899 .name = "cosh",
14329 .name = "ARITHMETIC_RIGHT_SHIFT",
1290014330 .opcode = 15,
12901 .operands = &[_]Operand{
12902 .{ .kind = .IdRef, .quantifier = .required },
14331 .operands = &.{
14332 .{ .kind = .id_ref, .quantifier = .required },
14333 .{ .kind = .id_ref, .quantifier = .required },
14334 .{ .kind = .id_ref, .quantifier = .required },
1290314335 },
1290414336 },
1290514337 .{
12906 .name = "cospi",
14338 .name = "BITWISE_AND",
1290714339 .opcode = 16,
12908 .operands = &[_]Operand{
12909 .{ .kind = .IdRef, .quantifier = .required },
14340 .operands = &.{
14341 .{ .kind = .id_ref, .quantifier = .required },
14342 .{ .kind = .id_ref, .quantifier = .required },
1291014343 },
1291114344 },
1291214345 .{
12913 .name = "erfc",
14346 .name = "BITWISE_OR",
1291414347 .opcode = 17,
12915 .operands = &[_]Operand{
12916 .{ .kind = .IdRef, .quantifier = .required },
14348 .operands = &.{
14349 .{ .kind = .id_ref, .quantifier = .required },
14350 .{ .kind = .id_ref, .quantifier = .required },
1291714351 },
1291814352 },
1291914353 .{
12920 .name = "erf",
14354 .name = "BITWISE_XOR",
1292114355 .opcode = 18,
12922 .operands = &[_]Operand{
12923 .{ .kind = .IdRef, .quantifier = .required },
14356 .operands = &.{
14357 .{ .kind = .id_ref, .quantifier = .required },
14358 .{ .kind = .id_ref, .quantifier = .required },
1292414359 },
1292514360 },
1292614361 .{
12927 .name = "exp",
14362 .name = "INTDIV",
1292814363 .opcode = 19,
12929 .operands = &[_]Operand{
12930 .{ .kind = .IdRef, .quantifier = .required },
14364 .operands = &.{
14365 .{ .kind = .id_ref, .quantifier = .required },
14366 .{ .kind = .id_ref, .quantifier = .required },
1293114367 },
1293214368 },
1293314369 .{
12934 .name = "exp2",
14370 .name = "LOGICAL_AND",
1293514371 .opcode = 20,
12936 .operands = &[_]Operand{
12937 .{ .kind = .IdRef, .quantifier = .required },
14372 .operands = &.{
14373 .{ .kind = .id_ref, .quantifier = .required },
14374 .{ .kind = .id_ref, .quantifier = .required },
1293814375 },
1293914376 },
1294014377 .{
12941 .name = "exp10",
14378 .name = "LOGICAL_LEFT_SHIFT",
1294214379 .opcode = 21,
12943 .operands = &[_]Operand{
12944 .{ .kind = .IdRef, .quantifier = .required },
14380 .operands = &.{
14381 .{ .kind = .id_ref, .quantifier = .required },
14382 .{ .kind = .id_ref, .quantifier = .required },
1294514383 },
1294614384 },
1294714385 .{
12948 .name = "expm1",
14386 .name = "LOGICAL_RIGHT_SHIFT",
1294914387 .opcode = 22,
12950 .operands = &[_]Operand{
12951 .{ .kind = .IdRef, .quantifier = .required },
14388 .operands = &.{
14389 .{ .kind = .id_ref, .quantifier = .required },
14390 .{ .kind = .id_ref, .quantifier = .required },
1295214391 },
1295314392 },
1295414393 .{
12955 .name = "fabs",
14394 .name = "LOGICAL_OR",
1295614395 .opcode = 23,
12957 .operands = &[_]Operand{
12958 .{ .kind = .IdRef, .quantifier = .required },
14396 .operands = &.{
14397 .{ .kind = .id_ref, .quantifier = .required },
14398 .{ .kind = .id_ref, .quantifier = .required },
1295914399 },
1296014400 },
1296114401 .{
12962 .name = "fdim",
14402 .name = "LOGICAL_XOR",
1296314403 .opcode = 24,
12964 .operands = &[_]Operand{
12965 .{ .kind = .IdRef, .quantifier = .required },
12966 .{ .kind = .IdRef, .quantifier = .required },
14404 .operands = &.{
14405 .{ .kind = .id_ref, .quantifier = .required },
14406 .{ .kind = .id_ref, .quantifier = .required },
1296714407 },
1296814408 },
1296914409 .{
12970 .name = "floor",
14410 .name = "MAXIMUM",
1297114411 .opcode = 25,
12972 .operands = &[_]Operand{
12973 .{ .kind = .IdRef, .quantifier = .required },
14412 .operands = &.{
14413 .{ .kind = .id_ref, .quantifier = .required },
14414 .{ .kind = .id_ref, .quantifier = .required },
14415 .{ .kind = .id_ref, .quantifier = .required },
1297414416 },
1297514417 },
1297614418 .{
12977 .name = "fma",
14419 .name = "MINIMUM",
1297814420 .opcode = 26,
12979 .operands = &[_]Operand{
12980 .{ .kind = .IdRef, .quantifier = .required },
12981 .{ .kind = .IdRef, .quantifier = .required },
12982 .{ .kind = .IdRef, .quantifier = .required },
14421 .operands = &.{
14422 .{ .kind = .id_ref, .quantifier = .required },
14423 .{ .kind = .id_ref, .quantifier = .required },
14424 .{ .kind = .id_ref, .quantifier = .required },
1298314425 },
1298414426 },
1298514427 .{
12986 .name = "fmax",
14428 .name = "MUL",
1298714429 .opcode = 27,
12988 .operands = &[_]Operand{
12989 .{ .kind = .IdRef, .quantifier = .required },
12990 .{ .kind = .IdRef, .quantifier = .required },
14430 .operands = &.{
14431 .{ .kind = .id_ref, .quantifier = .required },
14432 .{ .kind = .id_ref, .quantifier = .required },
14433 .{ .kind = .id_ref, .quantifier = .required },
1299114434 },
1299214435 },
1299314436 .{
12994 .name = "fmin",
14437 .name = "POW",
1299514438 .opcode = 28,
12996 .operands = &[_]Operand{
12997 .{ .kind = .IdRef, .quantifier = .required },
12998 .{ .kind = .IdRef, .quantifier = .required },
14439 .operands = &.{
14440 .{ .kind = .id_ref, .quantifier = .required },
14441 .{ .kind = .id_ref, .quantifier = .required },
1299914442 },
1300014443 },
1300114444 .{
13002 .name = "fmod",
14445 .name = "SUB",
1300314446 .opcode = 29,
13004 .operands = &[_]Operand{
13005 .{ .kind = .IdRef, .quantifier = .required },
13006 .{ .kind = .IdRef, .quantifier = .required },
14447 .operands = &.{
14448 .{ .kind = .id_ref, .quantifier = .required },
14449 .{ .kind = .id_ref, .quantifier = .required },
1300714450 },
1300814451 },
1300914452 .{
13010 .name = "fract",
14453 .name = "TABLE",
1301114454 .opcode = 30,
13012 .operands = &[_]Operand{
13013 .{ .kind = .IdRef, .quantifier = .required },
13014 .{ .kind = .IdRef, .quantifier = .required },
14455 .operands = &.{
14456 .{ .kind = .id_ref, .quantifier = .required },
14457 .{ .kind = .id_ref, .quantifier = .required },
1301514458 },
1301614459 },
1301714460 .{
13018 .name = "frexp",
14461 .name = "ABS",
1301914462 .opcode = 31,
13020 .operands = &[_]Operand{
13021 .{ .kind = .IdRef, .quantifier = .required },
13022 .{ .kind = .IdRef, .quantifier = .required },
14463 .operands = &.{
14464 .{ .kind = .id_ref, .quantifier = .required },
1302314465 },
1302414466 },
1302514467 .{
13026 .name = "hypot",
14468 .name = "BITWISE_NOT",
1302714469 .opcode = 32,
13028 .operands = &[_]Operand{
13029 .{ .kind = .IdRef, .quantifier = .required },
13030 .{ .kind = .IdRef, .quantifier = .required },
14470 .operands = &.{
14471 .{ .kind = .id_ref, .quantifier = .required },
1303114472 },
1303214473 },
1303314474 .{
13034 .name = "ilogb",
14475 .name = "CEIL",
1303514476 .opcode = 33,
13036 .operands = &[_]Operand{
13037 .{ .kind = .IdRef, .quantifier = .required },
14477 .operands = &.{
14478 .{ .kind = .id_ref, .quantifier = .required },
1303814479 },
1303914480 },
1304014481 .{
13041 .name = "ldexp",
14482 .name = "CLZ",
1304214483 .opcode = 34,
13043 .operands = &[_]Operand{
13044 .{ .kind = .IdRef, .quantifier = .required },
13045 .{ .kind = .IdRef, .quantifier = .required },
14484 .operands = &.{
14485 .{ .kind = .id_ref, .quantifier = .required },
1304614486 },
1304714487 },
1304814488 .{
13049 .name = "lgamma",
14489 .name = "COS",
1305014490 .opcode = 35,
13051 .operands = &[_]Operand{
13052 .{ .kind = .IdRef, .quantifier = .required },
14491 .operands = &.{
14492 .{ .kind = .id_ref, .quantifier = .required },
1305314493 },
1305414494 },
1305514495 .{
13056 .name = "lgamma_r",
14496 .name = "EXP",
1305714497 .opcode = 36,
13058 .operands = &[_]Operand{
13059 .{ .kind = .IdRef, .quantifier = .required },
13060 .{ .kind = .IdRef, .quantifier = .required },
14498 .operands = &.{
14499 .{ .kind = .id_ref, .quantifier = .required },
1306114500 },
1306214501 },
1306314502 .{
13064 .name = "log",
14503 .name = "FLOOR",
1306514504 .opcode = 37,
13066 .operands = &[_]Operand{
13067 .{ .kind = .IdRef, .quantifier = .required },
14505 .operands = &.{
14506 .{ .kind = .id_ref, .quantifier = .required },
1306814507 },
1306914508 },
1307014509 .{
13071 .name = "log2",
14510 .name = "LOG",
1307214511 .opcode = 38,
13073 .operands = &[_]Operand{
13074 .{ .kind = .IdRef, .quantifier = .required },
14512 .operands = &.{
14513 .{ .kind = .id_ref, .quantifier = .required },
1307514514 },
1307614515 },
1307714516 .{
13078 .name = "log10",
14517 .name = "LOGICAL_NOT",
1307914518 .opcode = 39,
13080 .operands = &[_]Operand{
13081 .{ .kind = .IdRef, .quantifier = .required },
14519 .operands = &.{
14520 .{ .kind = .id_ref, .quantifier = .required },
1308214521 },
1308314522 },
1308414523 .{
13085 .name = "log1p",
14524 .name = "NEGATE",
1308614525 .opcode = 40,
13087 .operands = &[_]Operand{
13088 .{ .kind = .IdRef, .quantifier = .required },
14526 .operands = &.{
14527 .{ .kind = .id_ref, .quantifier = .required },
14528 .{ .kind = .id_ref, .quantifier = .required },
14529 .{ .kind = .id_ref, .quantifier = .required },
1308914530 },
1309014531 },
1309114532 .{
13092 .name = "logb",
14533 .name = "RECIPROCAL",
1309314534 .opcode = 41,
13094 .operands = &[_]Operand{
13095 .{ .kind = .IdRef, .quantifier = .required },
14535 .operands = &.{
14536 .{ .kind = .id_ref, .quantifier = .required },
1309614537 },
1309714538 },
1309814539 .{
13099 .name = "mad",
14540 .name = "RSQRT",
1310014541 .opcode = 42,
13101 .operands = &[_]Operand{
13102 .{ .kind = .IdRef, .quantifier = .required },
13103 .{ .kind = .IdRef, .quantifier = .required },
13104 .{ .kind = .IdRef, .quantifier = .required },
14542 .operands = &.{
14543 .{ .kind = .id_ref, .quantifier = .required },
1310514544 },
1310614545 },
1310714546 .{
13108 .name = "maxmag",
14547 .name = "SIN",
1310914548 .opcode = 43,
13110 .operands = &[_]Operand{
13111 .{ .kind = .IdRef, .quantifier = .required },
13112 .{ .kind = .IdRef, .quantifier = .required },
14549 .operands = &.{
14550 .{ .kind = .id_ref, .quantifier = .required },
1311314551 },
1311414552 },
1311514553 .{
13116 .name = "minmag",
14554 .name = "SELECT",
1311714555 .opcode = 44,
13118 .operands = &[_]Operand{
13119 .{ .kind = .IdRef, .quantifier = .required },
13120 .{ .kind = .IdRef, .quantifier = .required },
14556 .operands = &.{
14557 .{ .kind = .id_ref, .quantifier = .required },
14558 .{ .kind = .id_ref, .quantifier = .required },
14559 .{ .kind = .id_ref, .quantifier = .required },
1312114560 },
1312214561 },
1312314562 .{
13124 .name = "modf",
14563 .name = "EQUAL",
1312514564 .opcode = 45,
13126 .operands = &[_]Operand{
13127 .{ .kind = .IdRef, .quantifier = .required },
13128 .{ .kind = .IdRef, .quantifier = .required },
14565 .operands = &.{
14566 .{ .kind = .id_ref, .quantifier = .required },
14567 .{ .kind = .id_ref, .quantifier = .required },
1312914568 },
1313014569 },
1313114570 .{
13132 .name = "nan",
14571 .name = "GREATER",
1313314572 .opcode = 46,
13134 .operands = &[_]Operand{
13135 .{ .kind = .IdRef, .quantifier = .required },
14573 .operands = &.{
14574 .{ .kind = .id_ref, .quantifier = .required },
14575 .{ .kind = .id_ref, .quantifier = .required },
1313614576 },
1313714577 },
1313814578 .{
13139 .name = "nextafter",
14579 .name = "GREATER_EQUAL",
1314014580 .opcode = 47,
13141 .operands = &[_]Operand{
13142 .{ .kind = .IdRef, .quantifier = .required },
13143 .{ .kind = .IdRef, .quantifier = .required },
14581 .operands = &.{
14582 .{ .kind = .id_ref, .quantifier = .required },
14583 .{ .kind = .id_ref, .quantifier = .required },
1314414584 },
1314514585 },
1314614586 .{
13147 .name = "pow",
14587 .name = "REDUCE_ALL",
1314814588 .opcode = 48,
13149 .operands = &[_]Operand{
13150 .{ .kind = .IdRef, .quantifier = .required },
13151 .{ .kind = .IdRef, .quantifier = .required },
14589 .operands = &.{
14590 .{ .kind = .id_ref, .quantifier = .required },
14591 .{ .kind = .id_ref, .quantifier = .required },
1315214592 },
1315314593 },
1315414594 .{
13155 .name = "pown",
14595 .name = "REDUCE_ANY",
1315614596 .opcode = 49,
13157 .operands = &[_]Operand{
13158 .{ .kind = .IdRef, .quantifier = .required },
13159 .{ .kind = .IdRef, .quantifier = .required },
14597 .operands = &.{
14598 .{ .kind = .id_ref, .quantifier = .required },
14599 .{ .kind = .id_ref, .quantifier = .required },
1316014600 },
1316114601 },
1316214602 .{
13163 .name = "powr",
14603 .name = "REDUCE_MAX",
1316414604 .opcode = 50,
13165 .operands = &[_]Operand{
13166 .{ .kind = .IdRef, .quantifier = .required },
13167 .{ .kind = .IdRef, .quantifier = .required },
14605 .operands = &.{
14606 .{ .kind = .id_ref, .quantifier = .required },
14607 .{ .kind = .id_ref, .quantifier = .required },
14608 .{ .kind = .id_ref, .quantifier = .required },
1316814609 },
1316914610 },
1317014611 .{
13171 .name = "remainder",
14612 .name = "REDUCE_MIN",
1317214613 .opcode = 51,
13173 .operands = &[_]Operand{
13174 .{ .kind = .IdRef, .quantifier = .required },
13175 .{ .kind = .IdRef, .quantifier = .required },
14614 .operands = &.{
14615 .{ .kind = .id_ref, .quantifier = .required },
14616 .{ .kind = .id_ref, .quantifier = .required },
14617 .{ .kind = .id_ref, .quantifier = .required },
1317614618 },
1317714619 },
1317814620 .{
13179 .name = "remquo",
14621 .name = "REDUCE_PRODUCT",
1318014622 .opcode = 52,
13181 .operands = &[_]Operand{
13182 .{ .kind = .IdRef, .quantifier = .required },
13183 .{ .kind = .IdRef, .quantifier = .required },
13184 .{ .kind = .IdRef, .quantifier = .required },
14623 .operands = &.{
14624 .{ .kind = .id_ref, .quantifier = .required },
14625 .{ .kind = .id_ref, .quantifier = .required },
1318514626 },
1318614627 },
1318714628 .{
13188 .name = "rint",
14629 .name = "REDUCE_SUM",
1318914630 .opcode = 53,
13190 .operands = &[_]Operand{
13191 .{ .kind = .IdRef, .quantifier = .required },
14631 .operands = &.{
14632 .{ .kind = .id_ref, .quantifier = .required },
14633 .{ .kind = .id_ref, .quantifier = .required },
1319214634 },
1319314635 },
1319414636 .{
13195 .name = "rootn",
14637 .name = "CONCAT",
1319614638 .opcode = 54,
13197 .operands = &[_]Operand{
13198 .{ .kind = .IdRef, .quantifier = .required },
13199 .{ .kind = .IdRef, .quantifier = .required },
14639 .operands = &.{
14640 .{ .kind = .id_ref, .quantifier = .required },
14641 .{ .kind = .id_ref, .quantifier = .variadic },
1320014642 },
1320114643 },
1320214644 .{
13203 .name = "round",
14645 .name = "PAD",
1320414646 .opcode = 55,
13205 .operands = &[_]Operand{
13206 .{ .kind = .IdRef, .quantifier = .required },
14647 .operands = &.{
14648 .{ .kind = .id_ref, .quantifier = .required },
14649 .{ .kind = .id_ref, .quantifier = .required },
14650 .{ .kind = .id_ref, .quantifier = .required },
1320714651 },
1320814652 },
1320914653 .{
13210 .name = "rsqrt",
14654 .name = "RESHAPE",
1321114655 .opcode = 56,
13212 .operands = &[_]Operand{
13213 .{ .kind = .IdRef, .quantifier = .required },
14656 .operands = &.{
14657 .{ .kind = .id_ref, .quantifier = .required },
14658 .{ .kind = .id_ref, .quantifier = .required },
1321414659 },
1321514660 },
1321614661 .{
13217 .name = "sin",
14662 .name = "REVERSE",
1321814663 .opcode = 57,
13219 .operands = &[_]Operand{
13220 .{ .kind = .IdRef, .quantifier = .required },
14664 .operands = &.{
14665 .{ .kind = .id_ref, .quantifier = .required },
14666 .{ .kind = .id_ref, .quantifier = .required },
1322114667 },
1322214668 },
1322314669 .{
13224 .name = "sincos",
14670 .name = "SLICE",
1322514671 .opcode = 58,
13226 .operands = &[_]Operand{
13227 .{ .kind = .IdRef, .quantifier = .required },
13228 .{ .kind = .IdRef, .quantifier = .required },
14672 .operands = &.{
14673 .{ .kind = .id_ref, .quantifier = .required },
14674 .{ .kind = .id_ref, .quantifier = .required },
14675 .{ .kind = .id_ref, .quantifier = .required },
1322914676 },
1323014677 },
1323114678 .{
13232 .name = "sinh",
14679 .name = "TILE",
1323314680 .opcode = 59,
13234 .operands = &[_]Operand{
13235 .{ .kind = .IdRef, .quantifier = .required },
14681 .operands = &.{
14682 .{ .kind = .id_ref, .quantifier = .required },
14683 .{ .kind = .id_ref, .quantifier = .required },
1323614684 },
1323714685 },
1323814686 .{
13239 .name = "sinpi",
14687 .name = "TRANSPOSE",
1324014688 .opcode = 60,
13241 .operands = &[_]Operand{
13242 .{ .kind = .IdRef, .quantifier = .required },
14689 .operands = &.{
14690 .{ .kind = .id_ref, .quantifier = .required },
14691 .{ .kind = .id_ref, .quantifier = .required },
1324314692 },
1324414693 },
1324514694 .{
13246 .name = "sqrt",
14695 .name = "GATHER",
1324714696 .opcode = 61,
13248 .operands = &[_]Operand{
13249 .{ .kind = .IdRef, .quantifier = .required },
14697 .operands = &.{
14698 .{ .kind = .id_ref, .quantifier = .required },
14699 .{ .kind = .id_ref, .quantifier = .required },
1325014700 },
1325114701 },
1325214702 .{
13253 .name = "tan",
14703 .name = "SCATTER",
1325414704 .opcode = 62,
13255 .operands = &[_]Operand{
13256 .{ .kind = .IdRef, .quantifier = .required },
14705 .operands = &.{
14706 .{ .kind = .id_ref, .quantifier = .required },
14707 .{ .kind = .id_ref, .quantifier = .required },
14708 .{ .kind = .id_ref, .quantifier = .required },
1325714709 },
1325814710 },
1325914711 .{
13260 .name = "tanh",
14712 .name = "RESIZE",
1326114713 .opcode = 63,
13262 .operands = &[_]Operand{
13263 .{ .kind = .IdRef, .quantifier = .required },
14714 .operands = &.{
14715 .{ .kind = .id_ref, .quantifier = .required },
14716 .{ .kind = .id_ref, .quantifier = .required },
14717 .{ .kind = .id_ref, .quantifier = .required },
14718 .{ .kind = .id_ref, .quantifier = .required },
14719 .{ .kind = .id_ref, .quantifier = .required },
1326414720 },
1326514721 },
1326614722 .{
13267 .name = "tanpi",
14723 .name = "CAST",
1326814724 .opcode = 64,
13269 .operands = &[_]Operand{
13270 .{ .kind = .IdRef, .quantifier = .required },
14725 .operands = &.{
14726 .{ .kind = .id_ref, .quantifier = .required },
1327114727 },
1327214728 },
1327314729 .{
13274 .name = "tgamma",
14730 .name = "RESCALE",
1327514731 .opcode = 65,
13276 .operands = &[_]Operand{
13277 .{ .kind = .IdRef, .quantifier = .required },
14732 .operands = &.{
14733 .{ .kind = .id_ref, .quantifier = .required },
14734 .{ .kind = .id_ref, .quantifier = .required },
14735 .{ .kind = .id_ref, .quantifier = .required },
14736 .{ .kind = .id_ref, .quantifier = .required },
14737 .{ .kind = .id_ref, .quantifier = .required },
14738 .{ .kind = .id_ref, .quantifier = .required },
14739 .{ .kind = .id_ref, .quantifier = .required },
14740 .{ .kind = .id_ref, .quantifier = .required },
14741 .{ .kind = .id_ref, .quantifier = .required },
14742 .{ .kind = .id_ref, .quantifier = .required },
1327814743 },
1327914744 },
14745 },
14746 .non_semantic_vksp_reflection => &.{
1328014747 .{
13281 .name = "trunc",
13282 .opcode = 66,
13283 .operands = &[_]Operand{
13284 .{ .kind = .IdRef, .quantifier = .required },
14748 .name = "Configuration",
14749 .opcode = 1,
14750 .operands = &.{
14751 .{ .kind = .id_ref, .quantifier = .required },
14752 .{ .kind = .id_ref, .quantifier = .required },
14753 .{ .kind = .id_ref, .quantifier = .required },
14754 .{ .kind = .id_ref, .quantifier = .required },
14755 .{ .kind = .id_ref, .quantifier = .required },
14756 .{ .kind = .id_ref, .quantifier = .required },
14757 .{ .kind = .id_ref, .quantifier = .required },
14758 .{ .kind = .id_ref, .quantifier = .required },
14759 .{ .kind = .id_ref, .quantifier = .required },
1328514760 },
1328614761 },
1328714762 .{
13288 .name = "half_cos",
13289 .opcode = 67,
13290 .operands = &[_]Operand{
13291 .{ .kind = .IdRef, .quantifier = .required },
14763 .name = "StartCounter",
14764 .opcode = 2,
14765 .operands = &.{
14766 .{ .kind = .id_ref, .quantifier = .required },
1329214767 },
1329314768 },
1329414769 .{
13295 .name = "half_divide",
13296 .opcode = 68,
13297 .operands = &[_]Operand{
13298 .{ .kind = .IdRef, .quantifier = .required },
13299 .{ .kind = .IdRef, .quantifier = .required },
14770 .name = "StopCounter",
14771 .opcode = 3,
14772 .operands = &.{
14773 .{ .kind = .id_ref, .quantifier = .required },
1330014774 },
1330114775 },
1330214776 .{
13303 .name = "half_exp",
13304 .opcode = 69,
13305 .operands = &[_]Operand{
13306 .{ .kind = .IdRef, .quantifier = .required },
14777 .name = "PushConstants",
14778 .opcode = 4,
14779 .operands = &.{
14780 .{ .kind = .id_ref, .quantifier = .required },
14781 .{ .kind = .id_ref, .quantifier = .required },
14782 .{ .kind = .id_ref, .quantifier = .required },
14783 .{ .kind = .id_ref, .quantifier = .required },
1330714784 },
1330814785 },
1330914786 .{
13310 .name = "half_exp2",
13311 .opcode = 70,
13312 .operands = &[_]Operand{
13313 .{ .kind = .IdRef, .quantifier = .required },
14787 .name = "SpecializationMapEntry",
14788 .opcode = 5,
14789 .operands = &.{
14790 .{ .kind = .id_ref, .quantifier = .required },
14791 .{ .kind = .id_ref, .quantifier = .required },
14792 .{ .kind = .id_ref, .quantifier = .required },
1331414793 },
1331514794 },
1331614795 .{
13317 .name = "half_exp10",
13318 .opcode = 71,
13319 .operands = &[_]Operand{
13320 .{ .kind = .IdRef, .quantifier = .required },
14796 .name = "DescriptorSetBuffer",
14797 .opcode = 6,
14798 .operands = &.{
14799 .{ .kind = .id_ref, .quantifier = .required },
14800 .{ .kind = .id_ref, .quantifier = .required },
14801 .{ .kind = .id_ref, .quantifier = .required },
14802 .{ .kind = .id_ref, .quantifier = .required },
14803 .{ .kind = .id_ref, .quantifier = .required },
14804 .{ .kind = .id_ref, .quantifier = .required },
14805 .{ .kind = .id_ref, .quantifier = .required },
14806 .{ .kind = .id_ref, .quantifier = .required },
14807 .{ .kind = .id_ref, .quantifier = .required },
14808 .{ .kind = .id_ref, .quantifier = .required },
14809 .{ .kind = .id_ref, .quantifier = .required },
14810 .{ .kind = .id_ref, .quantifier = .required },
14811 .{ .kind = .id_ref, .quantifier = .required },
14812 .{ .kind = .id_ref, .quantifier = .required },
14813 .{ .kind = .id_ref, .quantifier = .required },
1332114814 },
1332214815 },
1332314816 .{
13324 .name = "half_log",
13325 .opcode = 72,
13326 .operands = &[_]Operand{
13327 .{ .kind = .IdRef, .quantifier = .required },
14817 .name = "DescriptorSetImage",
14818 .opcode = 7,
14819 .operands = &.{
14820 .{ .kind = .id_ref, .quantifier = .required },
14821 .{ .kind = .id_ref, .quantifier = .required },
14822 .{ .kind = .id_ref, .quantifier = .required },
14823 .{ .kind = .id_ref, .quantifier = .required },
14824 .{ .kind = .id_ref, .quantifier = .required },
14825 .{ .kind = .id_ref, .quantifier = .required },
14826 .{ .kind = .id_ref, .quantifier = .required },
14827 .{ .kind = .id_ref, .quantifier = .required },
14828 .{ .kind = .id_ref, .quantifier = .required },
14829 .{ .kind = .id_ref, .quantifier = .required },
14830 .{ .kind = .id_ref, .quantifier = .required },
14831 .{ .kind = .id_ref, .quantifier = .required },
14832 .{ .kind = .id_ref, .quantifier = .required },
14833 .{ .kind = .id_ref, .quantifier = .required },
14834 .{ .kind = .id_ref, .quantifier = .required },
14835 .{ .kind = .id_ref, .quantifier = .required },
14836 .{ .kind = .id_ref, .quantifier = .required },
14837 .{ .kind = .id_ref, .quantifier = .required },
14838 .{ .kind = .id_ref, .quantifier = .required },
14839 .{ .kind = .id_ref, .quantifier = .required },
14840 .{ .kind = .id_ref, .quantifier = .required },
14841 .{ .kind = .id_ref, .quantifier = .required },
14842 .{ .kind = .id_ref, .quantifier = .required },
14843 .{ .kind = .id_ref, .quantifier = .required },
14844 .{ .kind = .id_ref, .quantifier = .required },
14845 .{ .kind = .id_ref, .quantifier = .required },
14846 .{ .kind = .id_ref, .quantifier = .required },
14847 .{ .kind = .id_ref, .quantifier = .required },
14848 .{ .kind = .id_ref, .quantifier = .required },
14849 .{ .kind = .id_ref, .quantifier = .required },
14850 .{ .kind = .id_ref, .quantifier = .required },
14851 .{ .kind = .id_ref, .quantifier = .required },
14852 .{ .kind = .id_ref, .quantifier = .required },
1332814853 },
1332914854 },
1333014855 .{
13331 .name = "half_log2",
13332 .opcode = 73,
13333 .operands = &[_]Operand{
13334 .{ .kind = .IdRef, .quantifier = .required },
14856 .name = "DescriptorSetSampler",
14857 .opcode = 8,
14858 .operands = &.{
14859 .{ .kind = .id_ref, .quantifier = .required },
14860 .{ .kind = .id_ref, .quantifier = .required },
14861 .{ .kind = .id_ref, .quantifier = .required },
14862 .{ .kind = .id_ref, .quantifier = .required },
14863 .{ .kind = .id_ref, .quantifier = .required },
14864 .{ .kind = .id_ref, .quantifier = .required },
14865 .{ .kind = .id_ref, .quantifier = .required },
14866 .{ .kind = .id_ref, .quantifier = .required },
14867 .{ .kind = .id_ref, .quantifier = .required },
14868 .{ .kind = .id_ref, .quantifier = .required },
14869 .{ .kind = .id_ref, .quantifier = .required },
14870 .{ .kind = .id_ref, .quantifier = .required },
14871 .{ .kind = .id_ref, .quantifier = .required },
14872 .{ .kind = .id_ref, .quantifier = .required },
14873 .{ .kind = .id_ref, .quantifier = .required },
14874 .{ .kind = .id_ref, .quantifier = .required },
14875 .{ .kind = .id_ref, .quantifier = .required },
14876 .{ .kind = .id_ref, .quantifier = .required },
14877 .{ .kind = .id_ref, .quantifier = .required },
1333514878 },
1333614879 },
14880 },
14881 .spv_amd_shader_explicit_vertex_parameter => &.{
1333714882 .{
13338 .name = "half_log10",
13339 .opcode = 74,
13340 .operands = &[_]Operand{
13341 .{ .kind = .IdRef, .quantifier = .required },
14883 .name = "InterpolateAtVertexAMD",
14884 .opcode = 1,
14885 .operands = &.{
14886 .{ .kind = .id_ref, .quantifier = .required },
14887 .{ .kind = .id_ref, .quantifier = .required },
1334214888 },
1334314889 },
14890 },
14891 .debug_info => &.{
1334414892 .{
13345 .name = "half_powr",
13346 .opcode = 75,
13347 .operands = &[_]Operand{
13348 .{ .kind = .IdRef, .quantifier = .required },
13349 .{ .kind = .IdRef, .quantifier = .required },
13350 },
14893 .name = "DebugInfoNone",
14894 .opcode = 0,
14895 .operands = &.{},
1335114896 },
1335214897 .{
13353 .name = "half_recip",
13354 .opcode = 76,
13355 .operands = &[_]Operand{
13356 .{ .kind = .IdRef, .quantifier = .required },
14898 .name = "DebugCompilationUnit",
14899 .opcode = 1,
14900 .operands = &.{
14901 .{ .kind = .id_ref, .quantifier = .required },
14902 .{ .kind = .literal_integer, .quantifier = .required },
14903 .{ .kind = .literal_integer, .quantifier = .required },
1335714904 },
1335814905 },
1335914906 .{
13360 .name = "half_rsqrt",
13361 .opcode = 77,
13362 .operands = &[_]Operand{
13363 .{ .kind = .IdRef, .quantifier = .required },
14907 .name = "DebugTypeBasic",
14908 .opcode = 2,
14909 .operands = &.{
14910 .{ .kind = .id_ref, .quantifier = .required },
14911 .{ .kind = .id_ref, .quantifier = .required },
14912 .{ .kind = .debug_info_debug_base_type_attribute_encoding, .quantifier = .required },
1336414913 },
1336514914 },
1336614915 .{
13367 .name = "half_sin",
13368 .opcode = 78,
13369 .operands = &[_]Operand{
13370 .{ .kind = .IdRef, .quantifier = .required },
14916 .name = "DebugTypePointer",
14917 .opcode = 3,
14918 .operands = &.{
14919 .{ .kind = .id_ref, .quantifier = .required },
14920 .{ .kind = .storage_class, .quantifier = .required },
14921 .{ .kind = .debug_info_debug_info_flags, .quantifier = .required },
1337114922 },
1337214923 },
1337314924 .{
13374 .name = "half_sqrt",
13375 .opcode = 79,
13376 .operands = &[_]Operand{
13377 .{ .kind = .IdRef, .quantifier = .required },
14925 .name = "DebugTypeQualifier",
14926 .opcode = 4,
14927 .operands = &.{
14928 .{ .kind = .id_ref, .quantifier = .required },
14929 .{ .kind = .debug_info_debug_type_qualifier, .quantifier = .required },
1337814930 },
1337914931 },
1338014932 .{
13381 .name = "half_tan",
13382 .opcode = 80,
13383 .operands = &[_]Operand{
13384 .{ .kind = .IdRef, .quantifier = .required },
14933 .name = "DebugTypeArray",
14934 .opcode = 5,
14935 .operands = &.{
14936 .{ .kind = .id_ref, .quantifier = .required },
14937 .{ .kind = .id_ref, .quantifier = .variadic },
1338514938 },
1338614939 },
1338714940 .{
13388 .name = "native_cos",
13389 .opcode = 81,
13390 .operands = &[_]Operand{
13391 .{ .kind = .IdRef, .quantifier = .required },
14941 .name = "DebugTypeVector",
14942 .opcode = 6,
14943 .operands = &.{
14944 .{ .kind = .id_ref, .quantifier = .required },
14945 .{ .kind = .literal_integer, .quantifier = .required },
1339214946 },
1339314947 },
1339414948 .{
13395 .name = "native_divide",
13396 .opcode = 82,
13397 .operands = &[_]Operand{
13398 .{ .kind = .IdRef, .quantifier = .required },
13399 .{ .kind = .IdRef, .quantifier = .required },
14949 .name = "DebugTypedef",
14950 .opcode = 7,
14951 .operands = &.{
14952 .{ .kind = .id_ref, .quantifier = .required },
14953 .{ .kind = .id_ref, .quantifier = .required },
14954 .{ .kind = .id_ref, .quantifier = .required },
14955 .{ .kind = .literal_integer, .quantifier = .required },
14956 .{ .kind = .literal_integer, .quantifier = .required },
14957 .{ .kind = .id_ref, .quantifier = .required },
1340014958 },
1340114959 },
1340214960 .{
13403 .name = "native_exp",
13404 .opcode = 83,
13405 .operands = &[_]Operand{
13406 .{ .kind = .IdRef, .quantifier = .required },
14961 .name = "DebugTypeFunction",
14962 .opcode = 8,
14963 .operands = &.{
14964 .{ .kind = .id_ref, .quantifier = .required },
14965 .{ .kind = .id_ref, .quantifier = .variadic },
1340714966 },
1340814967 },
1340914968 .{
13410 .name = "native_exp2",
13411 .opcode = 84,
13412 .operands = &[_]Operand{
13413 .{ .kind = .IdRef, .quantifier = .required },
14969 .name = "DebugTypeEnum",
14970 .opcode = 9,
14971 .operands = &.{
14972 .{ .kind = .id_ref, .quantifier = .required },
14973 .{ .kind = .id_ref, .quantifier = .required },
14974 .{ .kind = .id_ref, .quantifier = .required },
14975 .{ .kind = .literal_integer, .quantifier = .required },
14976 .{ .kind = .literal_integer, .quantifier = .required },
14977 .{ .kind = .id_ref, .quantifier = .required },
14978 .{ .kind = .id_ref, .quantifier = .required },
14979 .{ .kind = .debug_info_debug_info_flags, .quantifier = .required },
14980 .{ .kind = .pair_id_ref_id_ref, .quantifier = .variadic },
1341414981 },
1341514982 },
1341614983 .{
13417 .name = "native_exp10",
13418 .opcode = 85,
13419 .operands = &[_]Operand{
13420 .{ .kind = .IdRef, .quantifier = .required },
14984 .name = "DebugTypeComposite",
14985 .opcode = 10,
14986 .operands = &.{
14987 .{ .kind = .id_ref, .quantifier = .required },
14988 .{ .kind = .debug_info_debug_composite_type, .quantifier = .required },
14989 .{ .kind = .id_ref, .quantifier = .required },
14990 .{ .kind = .literal_integer, .quantifier = .required },
14991 .{ .kind = .literal_integer, .quantifier = .required },
14992 .{ .kind = .id_ref, .quantifier = .required },
14993 .{ .kind = .id_ref, .quantifier = .required },
14994 .{ .kind = .debug_info_debug_info_flags, .quantifier = .required },
14995 .{ .kind = .id_ref, .quantifier = .variadic },
1342114996 },
1342214997 },
1342314998 .{
13424 .name = "native_log",
13425 .opcode = 86,
13426 .operands = &[_]Operand{
13427 .{ .kind = .IdRef, .quantifier = .required },
14999 .name = "DebugTypeMember",
15000 .opcode = 11,
15001 .operands = &.{
15002 .{ .kind = .id_ref, .quantifier = .required },
15003 .{ .kind = .id_ref, .quantifier = .required },
15004 .{ .kind = .id_ref, .quantifier = .required },
15005 .{ .kind = .literal_integer, .quantifier = .required },
15006 .{ .kind = .literal_integer, .quantifier = .required },
15007 .{ .kind = .id_ref, .quantifier = .required },
15008 .{ .kind = .id_ref, .quantifier = .required },
15009 .{ .kind = .id_ref, .quantifier = .required },
15010 .{ .kind = .debug_info_debug_info_flags, .quantifier = .required },
15011 .{ .kind = .id_ref, .quantifier = .optional },
1342815012 },
1342915013 },
1343015014 .{
13431 .name = "native_log2",
13432 .opcode = 87,
13433 .operands = &[_]Operand{
13434 .{ .kind = .IdRef, .quantifier = .required },
15015 .name = "DebugTypeInheritance",
15016 .opcode = 12,
15017 .operands = &.{
15018 .{ .kind = .id_ref, .quantifier = .required },
15019 .{ .kind = .id_ref, .quantifier = .required },
15020 .{ .kind = .id_ref, .quantifier = .required },
15021 .{ .kind = .id_ref, .quantifier = .required },
15022 .{ .kind = .debug_info_debug_info_flags, .quantifier = .required },
1343515023 },
1343615024 },
1343715025 .{
13438 .name = "native_log10",
13439 .opcode = 88,
13440 .operands = &[_]Operand{
13441 .{ .kind = .IdRef, .quantifier = .required },
15026 .name = "DebugTypePtrToMember",
15027 .opcode = 13,
15028 .operands = &.{
15029 .{ .kind = .id_ref, .quantifier = .required },
15030 .{ .kind = .id_ref, .quantifier = .required },
1344215031 },
1344315032 },
1344415033 .{
13445 .name = "native_powr",
13446 .opcode = 89,
13447 .operands = &[_]Operand{
13448 .{ .kind = .IdRef, .quantifier = .required },
13449 .{ .kind = .IdRef, .quantifier = .required },
15034 .name = "DebugTypeTemplate",
15035 .opcode = 14,
15036 .operands = &.{
15037 .{ .kind = .id_ref, .quantifier = .required },
15038 .{ .kind = .id_ref, .quantifier = .variadic },
1345015039 },
1345115040 },
1345215041 .{
13453 .name = "native_recip",
13454 .opcode = 90,
13455 .operands = &[_]Operand{
13456 .{ .kind = .IdRef, .quantifier = .required },
15042 .name = "DebugTypeTemplateParameter",
15043 .opcode = 15,
15044 .operands = &.{
15045 .{ .kind = .id_ref, .quantifier = .required },
15046 .{ .kind = .id_ref, .quantifier = .required },
15047 .{ .kind = .id_ref, .quantifier = .required },
15048 .{ .kind = .id_ref, .quantifier = .required },
15049 .{ .kind = .literal_integer, .quantifier = .required },
15050 .{ .kind = .literal_integer, .quantifier = .required },
1345715051 },
1345815052 },
1345915053 .{
13460 .name = "native_rsqrt",
13461 .opcode = 91,
13462 .operands = &[_]Operand{
13463 .{ .kind = .IdRef, .quantifier = .required },
15054 .name = "DebugTypeTemplateTemplateParameter",
15055 .opcode = 16,
15056 .operands = &.{
15057 .{ .kind = .id_ref, .quantifier = .required },
15058 .{ .kind = .id_ref, .quantifier = .required },
15059 .{ .kind = .id_ref, .quantifier = .required },
15060 .{ .kind = .literal_integer, .quantifier = .required },
15061 .{ .kind = .literal_integer, .quantifier = .required },
1346415062 },
1346515063 },
1346615064 .{
13467 .name = "native_sin",
13468 .opcode = 92,
13469 .operands = &[_]Operand{
13470 .{ .kind = .IdRef, .quantifier = .required },
15065 .name = "DebugTypeTemplateParameterPack",
15066 .opcode = 17,
15067 .operands = &.{
15068 .{ .kind = .id_ref, .quantifier = .required },
15069 .{ .kind = .id_ref, .quantifier = .required },
15070 .{ .kind = .literal_integer, .quantifier = .required },
15071 .{ .kind = .literal_integer, .quantifier = .required },
15072 .{ .kind = .id_ref, .quantifier = .variadic },
1347115073 },
1347215074 },
1347315075 .{
13474 .name = "native_sqrt",
13475 .opcode = 93,
13476 .operands = &[_]Operand{
13477 .{ .kind = .IdRef, .quantifier = .required },
15076 .name = "DebugGlobalVariable",
15077 .opcode = 18,
15078 .operands = &.{
15079 .{ .kind = .id_ref, .quantifier = .required },
15080 .{ .kind = .id_ref, .quantifier = .required },
15081 .{ .kind = .id_ref, .quantifier = .required },
15082 .{ .kind = .literal_integer, .quantifier = .required },
15083 .{ .kind = .literal_integer, .quantifier = .required },
15084 .{ .kind = .id_ref, .quantifier = .required },
15085 .{ .kind = .id_ref, .quantifier = .required },
15086 .{ .kind = .id_ref, .quantifier = .required },
15087 .{ .kind = .debug_info_debug_info_flags, .quantifier = .required },
15088 .{ .kind = .id_ref, .quantifier = .optional },
1347815089 },
1347915090 },
1348015091 .{
13481 .name = "native_tan",
13482 .opcode = 94,
13483 .operands = &[_]Operand{
13484 .{ .kind = .IdRef, .quantifier = .required },
15092 .name = "DebugFunctionDeclaration",
15093 .opcode = 19,
15094 .operands = &.{
15095 .{ .kind = .id_ref, .quantifier = .required },
15096 .{ .kind = .id_ref, .quantifier = .required },
15097 .{ .kind = .id_ref, .quantifier = .required },
15098 .{ .kind = .literal_integer, .quantifier = .required },
15099 .{ .kind = .literal_integer, .quantifier = .required },
15100 .{ .kind = .id_ref, .quantifier = .required },
15101 .{ .kind = .id_ref, .quantifier = .required },
15102 .{ .kind = .debug_info_debug_info_flags, .quantifier = .required },
1348515103 },
1348615104 },
1348715105 .{
13488 .name = "fclamp",
13489 .opcode = 95,
13490 .operands = &[_]Operand{
13491 .{ .kind = .IdRef, .quantifier = .required },
13492 .{ .kind = .IdRef, .quantifier = .required },
13493 .{ .kind = .IdRef, .quantifier = .required },
15106 .name = "DebugFunction",
15107 .opcode = 20,
15108 .operands = &.{
15109 .{ .kind = .id_ref, .quantifier = .required },
15110 .{ .kind = .id_ref, .quantifier = .required },
15111 .{ .kind = .id_ref, .quantifier = .required },
15112 .{ .kind = .literal_integer, .quantifier = .required },
15113 .{ .kind = .literal_integer, .quantifier = .required },
15114 .{ .kind = .id_ref, .quantifier = .required },
15115 .{ .kind = .id_ref, .quantifier = .required },
15116 .{ .kind = .debug_info_debug_info_flags, .quantifier = .required },
15117 .{ .kind = .literal_integer, .quantifier = .required },
15118 .{ .kind = .id_ref, .quantifier = .required },
15119 .{ .kind = .id_ref, .quantifier = .optional },
1349415120 },
1349515121 },
1349615122 .{
13497 .name = "degrees",
13498 .opcode = 96,
13499 .operands = &[_]Operand{
13500 .{ .kind = .IdRef, .quantifier = .required },
15123 .name = "DebugLexicalBlock",
15124 .opcode = 21,
15125 .operands = &.{
15126 .{ .kind = .id_ref, .quantifier = .required },
15127 .{ .kind = .literal_integer, .quantifier = .required },
15128 .{ .kind = .literal_integer, .quantifier = .required },
15129 .{ .kind = .id_ref, .quantifier = .required },
15130 .{ .kind = .id_ref, .quantifier = .optional },
1350115131 },
1350215132 },
1350315133 .{
13504 .name = "fmax_common",
13505 .opcode = 97,
13506 .operands = &[_]Operand{
13507 .{ .kind = .IdRef, .quantifier = .required },
13508 .{ .kind = .IdRef, .quantifier = .required },
15134 .name = "DebugLexicalBlockDiscriminator",
15135 .opcode = 22,
15136 .operands = &.{
15137 .{ .kind = .id_ref, .quantifier = .required },
15138 .{ .kind = .literal_integer, .quantifier = .required },
15139 .{ .kind = .id_ref, .quantifier = .required },
1350915140 },
1351015141 },
1351115142 .{
13512 .name = "fmin_common",
13513 .opcode = 98,
13514 .operands = &[_]Operand{
13515 .{ .kind = .IdRef, .quantifier = .required },
13516 .{ .kind = .IdRef, .quantifier = .required },
15143 .name = "DebugScope",
15144 .opcode = 23,
15145 .operands = &.{
15146 .{ .kind = .id_ref, .quantifier = .required },
15147 .{ .kind = .id_ref, .quantifier = .optional },
1351715148 },
1351815149 },
1351915150 .{
13520 .name = "mix",
13521 .opcode = 99,
13522 .operands = &[_]Operand{
13523 .{ .kind = .IdRef, .quantifier = .required },
13524 .{ .kind = .IdRef, .quantifier = .required },
13525 .{ .kind = .IdRef, .quantifier = .required },
15151 .name = "DebugNoScope",
15152 .opcode = 24,
15153 .operands = &.{},
15154 },
15155 .{
15156 .name = "DebugInlinedAt",
15157 .opcode = 25,
15158 .operands = &.{
15159 .{ .kind = .literal_integer, .quantifier = .required },
15160 .{ .kind = .id_ref, .quantifier = .required },
15161 .{ .kind = .id_ref, .quantifier = .optional },
1352615162 },
1352715163 },
1352815164 .{
13529 .name = "radians",
13530 .opcode = 100,
13531 .operands = &[_]Operand{
13532 .{ .kind = .IdRef, .quantifier = .required },
15165 .name = "DebugLocalVariable",
15166 .opcode = 26,
15167 .operands = &.{
15168 .{ .kind = .id_ref, .quantifier = .required },
15169 .{ .kind = .id_ref, .quantifier = .required },
15170 .{ .kind = .id_ref, .quantifier = .required },
15171 .{ .kind = .literal_integer, .quantifier = .required },
15172 .{ .kind = .literal_integer, .quantifier = .required },
15173 .{ .kind = .id_ref, .quantifier = .required },
15174 .{ .kind = .literal_integer, .quantifier = .optional },
1353315175 },
1353415176 },
1353515177 .{
13536 .name = "step",
13537 .opcode = 101,
13538 .operands = &[_]Operand{
13539 .{ .kind = .IdRef, .quantifier = .required },
13540 .{ .kind = .IdRef, .quantifier = .required },
15178 .name = "DebugInlinedVariable",
15179 .opcode = 27,
15180 .operands = &.{
15181 .{ .kind = .id_ref, .quantifier = .required },
15182 .{ .kind = .id_ref, .quantifier = .required },
1354115183 },
1354215184 },
1354315185 .{
13544 .name = "smoothstep",
13545 .opcode = 102,
13546 .operands = &[_]Operand{
13547 .{ .kind = .IdRef, .quantifier = .required },
13548 .{ .kind = .IdRef, .quantifier = .required },
13549 .{ .kind = .IdRef, .quantifier = .required },
15186 .name = "DebugDeclare",
15187 .opcode = 28,
15188 .operands = &.{
15189 .{ .kind = .id_ref, .quantifier = .required },
15190 .{ .kind = .id_ref, .quantifier = .required },
15191 .{ .kind = .id_ref, .quantifier = .required },
1355015192 },
1355115193 },
1355215194 .{
13553 .name = "sign",
13554 .opcode = 103,
13555 .operands = &[_]Operand{
13556 .{ .kind = .IdRef, .quantifier = .required },
15195 .name = "DebugValue",
15196 .opcode = 29,
15197 .operands = &.{
15198 .{ .kind = .id_ref, .quantifier = .required },
15199 .{ .kind = .id_ref, .quantifier = .required },
15200 .{ .kind = .id_ref, .quantifier = .variadic },
1355715201 },
1355815202 },
1355915203 .{
13560 .name = "cross",
13561 .opcode = 104,
13562 .operands = &[_]Operand{
13563 .{ .kind = .IdRef, .quantifier = .required },
13564 .{ .kind = .IdRef, .quantifier = .required },
15204 .name = "DebugOperation",
15205 .opcode = 30,
15206 .operands = &.{
15207 .{ .kind = .debug_info_debug_operation, .quantifier = .required },
15208 .{ .kind = .literal_integer, .quantifier = .variadic },
1356515209 },
1356615210 },
1356715211 .{
13568 .name = "distance",
13569 .opcode = 105,
13570 .operands = &[_]Operand{
13571 .{ .kind = .IdRef, .quantifier = .required },
13572 .{ .kind = .IdRef, .quantifier = .required },
15212 .name = "DebugExpression",
15213 .opcode = 31,
15214 .operands = &.{
15215 .{ .kind = .id_ref, .quantifier = .variadic },
1357315216 },
1357415217 },
1357515218 .{
13576 .name = "length",
13577 .opcode = 106,
13578 .operands = &[_]Operand{
13579 .{ .kind = .IdRef, .quantifier = .required },
15219 .name = "DebugMacroDef",
15220 .opcode = 32,
15221 .operands = &.{
15222 .{ .kind = .id_ref, .quantifier = .required },
15223 .{ .kind = .literal_integer, .quantifier = .required },
15224 .{ .kind = .id_ref, .quantifier = .required },
15225 .{ .kind = .id_ref, .quantifier = .optional },
1358015226 },
1358115227 },
1358215228 .{
13583 .name = "normalize",
13584 .opcode = 107,
13585 .operands = &[_]Operand{
13586 .{ .kind = .IdRef, .quantifier = .required },
15229 .name = "DebugMacroUndef",
15230 .opcode = 33,
15231 .operands = &.{
15232 .{ .kind = .id_ref, .quantifier = .required },
15233 .{ .kind = .literal_integer, .quantifier = .required },
15234 .{ .kind = .id_ref, .quantifier = .required },
1358715235 },
1358815236 },
15237 },
15238 .non_semantic_debug_break => &.{
1358915239 .{
13590 .name = "fast_distance",
13591 .opcode = 108,
13592 .operands = &[_]Operand{
13593 .{ .kind = .IdRef, .quantifier = .required },
13594 .{ .kind = .IdRef, .quantifier = .required },
15240 .name = "DebugBreak",
15241 .opcode = 1,
15242 .operands = &.{},
15243 },
15244 },
15245 .open_cl_debug_info_100 => &.{
15246 .{
15247 .name = "DebugInfoNone",
15248 .opcode = 0,
15249 .operands = &.{},
15250 },
15251 .{
15252 .name = "DebugCompilationUnit",
15253 .opcode = 1,
15254 .operands = &.{
15255 .{ .kind = .literal_integer, .quantifier = .required },
15256 .{ .kind = .literal_integer, .quantifier = .required },
15257 .{ .kind = .id_ref, .quantifier = .required },
15258 .{ .kind = .source_language, .quantifier = .required },
1359515259 },
1359615260 },
1359715261 .{
13598 .name = "fast_length",
13599 .opcode = 109,
13600 .operands = &[_]Operand{
13601 .{ .kind = .IdRef, .quantifier = .required },
15262 .name = "DebugTypeBasic",
15263 .opcode = 2,
15264 .operands = &.{
15265 .{ .kind = .id_ref, .quantifier = .required },
15266 .{ .kind = .id_ref, .quantifier = .required },
15267 .{ .kind = .open_cl_debug_info_100_debug_base_type_attribute_encoding, .quantifier = .required },
1360215268 },
1360315269 },
1360415270 .{
13605 .name = "fast_normalize",
13606 .opcode = 110,
13607 .operands = &[_]Operand{
13608 .{ .kind = .IdRef, .quantifier = .required },
15271 .name = "DebugTypePointer",
15272 .opcode = 3,
15273 .operands = &.{
15274 .{ .kind = .id_ref, .quantifier = .required },
15275 .{ .kind = .storage_class, .quantifier = .required },
15276 .{ .kind = .open_cl_debug_info_100_debug_info_flags, .quantifier = .required },
1360915277 },
1361015278 },
1361115279 .{
13612 .name = "s_abs",
13613 .opcode = 141,
13614 .operands = &[_]Operand{
13615 .{ .kind = .IdRef, .quantifier = .required },
15280 .name = "DebugTypeQualifier",
15281 .opcode = 4,
15282 .operands = &.{
15283 .{ .kind = .id_ref, .quantifier = .required },
15284 .{ .kind = .open_cl_debug_info_100_debug_type_qualifier, .quantifier = .required },
1361615285 },
1361715286 },
1361815287 .{
13619 .name = "s_abs_diff",
13620 .opcode = 142,
13621 .operands = &[_]Operand{
13622 .{ .kind = .IdRef, .quantifier = .required },
13623 .{ .kind = .IdRef, .quantifier = .required },
15288 .name = "DebugTypeArray",
15289 .opcode = 5,
15290 .operands = &.{
15291 .{ .kind = .id_ref, .quantifier = .required },
15292 .{ .kind = .id_ref, .quantifier = .variadic },
1362415293 },
1362515294 },
1362615295 .{
13627 .name = "s_add_sat",
13628 .opcode = 143,
13629 .operands = &[_]Operand{
13630 .{ .kind = .IdRef, .quantifier = .required },
13631 .{ .kind = .IdRef, .quantifier = .required },
15296 .name = "DebugTypeVector",
15297 .opcode = 6,
15298 .operands = &.{
15299 .{ .kind = .id_ref, .quantifier = .required },
15300 .{ .kind = .literal_integer, .quantifier = .required },
1363215301 },
1363315302 },
1363415303 .{
13635 .name = "u_add_sat",
13636 .opcode = 144,
13637 .operands = &[_]Operand{
13638 .{ .kind = .IdRef, .quantifier = .required },
13639 .{ .kind = .IdRef, .quantifier = .required },
15304 .name = "DebugTypedef",
15305 .opcode = 7,
15306 .operands = &.{
15307 .{ .kind = .id_ref, .quantifier = .required },
15308 .{ .kind = .id_ref, .quantifier = .required },
15309 .{ .kind = .id_ref, .quantifier = .required },
15310 .{ .kind = .literal_integer, .quantifier = .required },
15311 .{ .kind = .literal_integer, .quantifier = .required },
15312 .{ .kind = .id_ref, .quantifier = .required },
1364015313 },
1364115314 },
1364215315 .{
13643 .name = "s_hadd",
13644 .opcode = 145,
13645 .operands = &[_]Operand{
13646 .{ .kind = .IdRef, .quantifier = .required },
13647 .{ .kind = .IdRef, .quantifier = .required },
15316 .name = "DebugTypeFunction",
15317 .opcode = 8,
15318 .operands = &.{
15319 .{ .kind = .open_cl_debug_info_100_debug_info_flags, .quantifier = .required },
15320 .{ .kind = .id_ref, .quantifier = .required },
15321 .{ .kind = .id_ref, .quantifier = .variadic },
1364815322 },
1364915323 },
1365015324 .{
13651 .name = "u_hadd",
13652 .opcode = 146,
13653 .operands = &[_]Operand{
13654 .{ .kind = .IdRef, .quantifier = .required },
13655 .{ .kind = .IdRef, .quantifier = .required },
15325 .name = "DebugTypeEnum",
15326 .opcode = 9,
15327 .operands = &.{
15328 .{ .kind = .id_ref, .quantifier = .required },
15329 .{ .kind = .id_ref, .quantifier = .required },
15330 .{ .kind = .id_ref, .quantifier = .required },
15331 .{ .kind = .literal_integer, .quantifier = .required },
15332 .{ .kind = .literal_integer, .quantifier = .required },
15333 .{ .kind = .id_ref, .quantifier = .required },
15334 .{ .kind = .id_ref, .quantifier = .required },
15335 .{ .kind = .open_cl_debug_info_100_debug_info_flags, .quantifier = .required },
15336 .{ .kind = .pair_id_ref_id_ref, .quantifier = .variadic },
1365615337 },
1365715338 },
1365815339 .{
13659 .name = "s_rhadd",
13660 .opcode = 147,
13661 .operands = &[_]Operand{
13662 .{ .kind = .IdRef, .quantifier = .required },
13663 .{ .kind = .IdRef, .quantifier = .required },
15340 .name = "DebugTypeComposite",
15341 .opcode = 10,
15342 .operands = &.{
15343 .{ .kind = .id_ref, .quantifier = .required },
15344 .{ .kind = .open_cl_debug_info_100_debug_composite_type, .quantifier = .required },
15345 .{ .kind = .id_ref, .quantifier = .required },
15346 .{ .kind = .literal_integer, .quantifier = .required },
15347 .{ .kind = .literal_integer, .quantifier = .required },
15348 .{ .kind = .id_ref, .quantifier = .required },
15349 .{ .kind = .id_ref, .quantifier = .required },
15350 .{ .kind = .id_ref, .quantifier = .required },
15351 .{ .kind = .open_cl_debug_info_100_debug_info_flags, .quantifier = .required },
15352 .{ .kind = .id_ref, .quantifier = .variadic },
1366415353 },
1366515354 },
1366615355 .{
13667 .name = "u_rhadd",
13668 .opcode = 148,
13669 .operands = &[_]Operand{
13670 .{ .kind = .IdRef, .quantifier = .required },
13671 .{ .kind = .IdRef, .quantifier = .required },
15356 .name = "DebugTypeMember",
15357 .opcode = 11,
15358 .operands = &.{
15359 .{ .kind = .id_ref, .quantifier = .required },
15360 .{ .kind = .id_ref, .quantifier = .required },
15361 .{ .kind = .id_ref, .quantifier = .required },
15362 .{ .kind = .literal_integer, .quantifier = .required },
15363 .{ .kind = .literal_integer, .quantifier = .required },
15364 .{ .kind = .id_ref, .quantifier = .required },
15365 .{ .kind = .id_ref, .quantifier = .required },
15366 .{ .kind = .id_ref, .quantifier = .required },
15367 .{ .kind = .open_cl_debug_info_100_debug_info_flags, .quantifier = .required },
15368 .{ .kind = .id_ref, .quantifier = .optional },
1367215369 },
1367315370 },
1367415371 .{
13675 .name = "s_clamp",
13676 .opcode = 149,
13677 .operands = &[_]Operand{
13678 .{ .kind = .IdRef, .quantifier = .required },
13679 .{ .kind = .IdRef, .quantifier = .required },
13680 .{ .kind = .IdRef, .quantifier = .required },
15372 .name = "DebugTypeInheritance",
15373 .opcode = 12,
15374 .operands = &.{
15375 .{ .kind = .id_ref, .quantifier = .required },
15376 .{ .kind = .id_ref, .quantifier = .required },
15377 .{ .kind = .id_ref, .quantifier = .required },
15378 .{ .kind = .id_ref, .quantifier = .required },
15379 .{ .kind = .open_cl_debug_info_100_debug_info_flags, .quantifier = .required },
1368115380 },
1368215381 },
1368315382 .{
13684 .name = "u_clamp",
13685 .opcode = 150,
13686 .operands = &[_]Operand{
13687 .{ .kind = .IdRef, .quantifier = .required },
13688 .{ .kind = .IdRef, .quantifier = .required },
13689 .{ .kind = .IdRef, .quantifier = .required },
15383 .name = "DebugTypePtrToMember",
15384 .opcode = 13,
15385 .operands = &.{
15386 .{ .kind = .id_ref, .quantifier = .required },
15387 .{ .kind = .id_ref, .quantifier = .required },
1369015388 },
1369115389 },
1369215390 .{
13693 .name = "clz",
13694 .opcode = 151,
13695 .operands = &[_]Operand{
13696 .{ .kind = .IdRef, .quantifier = .required },
15391 .name = "DebugTypeTemplate",
15392 .opcode = 14,
15393 .operands = &.{
15394 .{ .kind = .id_ref, .quantifier = .required },
15395 .{ .kind = .id_ref, .quantifier = .variadic },
1369715396 },
1369815397 },
1369915398 .{
13700 .name = "ctz",
13701 .opcode = 152,
13702 .operands = &[_]Operand{
13703 .{ .kind = .IdRef, .quantifier = .required },
15399 .name = "DebugTypeTemplateParameter",
15400 .opcode = 15,
15401 .operands = &.{
15402 .{ .kind = .id_ref, .quantifier = .required },
15403 .{ .kind = .id_ref, .quantifier = .required },
15404 .{ .kind = .id_ref, .quantifier = .required },
15405 .{ .kind = .id_ref, .quantifier = .required },
15406 .{ .kind = .literal_integer, .quantifier = .required },
15407 .{ .kind = .literal_integer, .quantifier = .required },
1370415408 },
1370515409 },
1370615410 .{
13707 .name = "s_mad_hi",
13708 .opcode = 153,
13709 .operands = &[_]Operand{
13710 .{ .kind = .IdRef, .quantifier = .required },
13711 .{ .kind = .IdRef, .quantifier = .required },
13712 .{ .kind = .IdRef, .quantifier = .required },
15411 .name = "DebugTypeTemplateTemplateParameter",
15412 .opcode = 16,
15413 .operands = &.{
15414 .{ .kind = .id_ref, .quantifier = .required },
15415 .{ .kind = .id_ref, .quantifier = .required },
15416 .{ .kind = .id_ref, .quantifier = .required },
15417 .{ .kind = .literal_integer, .quantifier = .required },
15418 .{ .kind = .literal_integer, .quantifier = .required },
1371315419 },
1371415420 },
1371515421 .{
13716 .name = "u_mad_sat",
13717 .opcode = 154,
13718 .operands = &[_]Operand{
13719 .{ .kind = .IdRef, .quantifier = .required },
13720 .{ .kind = .IdRef, .quantifier = .required },
13721 .{ .kind = .IdRef, .quantifier = .required },
15422 .name = "DebugTypeTemplateParameterPack",
15423 .opcode = 17,
15424 .operands = &.{
15425 .{ .kind = .id_ref, .quantifier = .required },
15426 .{ .kind = .id_ref, .quantifier = .required },
15427 .{ .kind = .literal_integer, .quantifier = .required },
15428 .{ .kind = .literal_integer, .quantifier = .required },
15429 .{ .kind = .id_ref, .quantifier = .variadic },
1372215430 },
1372315431 },
1372415432 .{
13725 .name = "s_mad_sat",
13726 .opcode = 155,
13727 .operands = &[_]Operand{
13728 .{ .kind = .IdRef, .quantifier = .required },
13729 .{ .kind = .IdRef, .quantifier = .required },
13730 .{ .kind = .IdRef, .quantifier = .required },
15433 .name = "DebugGlobalVariable",
15434 .opcode = 18,
15435 .operands = &.{
15436 .{ .kind = .id_ref, .quantifier = .required },
15437 .{ .kind = .id_ref, .quantifier = .required },
15438 .{ .kind = .id_ref, .quantifier = .required },
15439 .{ .kind = .literal_integer, .quantifier = .required },
15440 .{ .kind = .literal_integer, .quantifier = .required },
15441 .{ .kind = .id_ref, .quantifier = .required },
15442 .{ .kind = .id_ref, .quantifier = .required },
15443 .{ .kind = .id_ref, .quantifier = .required },
15444 .{ .kind = .open_cl_debug_info_100_debug_info_flags, .quantifier = .required },
15445 .{ .kind = .id_ref, .quantifier = .optional },
1373115446 },
1373215447 },
1373315448 .{
13734 .name = "s_max",
13735 .opcode = 156,
13736 .operands = &[_]Operand{
13737 .{ .kind = .IdRef, .quantifier = .required },
13738 .{ .kind = .IdRef, .quantifier = .required },
15449 .name = "DebugFunctionDeclaration",
15450 .opcode = 19,
15451 .operands = &.{
15452 .{ .kind = .id_ref, .quantifier = .required },
15453 .{ .kind = .id_ref, .quantifier = .required },
15454 .{ .kind = .id_ref, .quantifier = .required },
15455 .{ .kind = .literal_integer, .quantifier = .required },
15456 .{ .kind = .literal_integer, .quantifier = .required },
15457 .{ .kind = .id_ref, .quantifier = .required },
15458 .{ .kind = .id_ref, .quantifier = .required },
15459 .{ .kind = .open_cl_debug_info_100_debug_info_flags, .quantifier = .required },
1373915460 },
1374015461 },
1374115462 .{
13742 .name = "u_max",
13743 .opcode = 157,
13744 .operands = &[_]Operand{
13745 .{ .kind = .IdRef, .quantifier = .required },
13746 .{ .kind = .IdRef, .quantifier = .required },
15463 .name = "DebugFunction",
15464 .opcode = 20,
15465 .operands = &.{
15466 .{ .kind = .id_ref, .quantifier = .required },
15467 .{ .kind = .id_ref, .quantifier = .required },
15468 .{ .kind = .id_ref, .quantifier = .required },
15469 .{ .kind = .literal_integer, .quantifier = .required },
15470 .{ .kind = .literal_integer, .quantifier = .required },
15471 .{ .kind = .id_ref, .quantifier = .required },
15472 .{ .kind = .id_ref, .quantifier = .required },
15473 .{ .kind = .open_cl_debug_info_100_debug_info_flags, .quantifier = .required },
15474 .{ .kind = .literal_integer, .quantifier = .required },
15475 .{ .kind = .id_ref, .quantifier = .required },
15476 .{ .kind = .id_ref, .quantifier = .optional },
1374715477 },
1374815478 },
1374915479 .{
13750 .name = "s_min",
13751 .opcode = 158,
13752 .operands = &[_]Operand{
13753 .{ .kind = .IdRef, .quantifier = .required },
13754 .{ .kind = .IdRef, .quantifier = .required },
15480 .name = "DebugLexicalBlock",
15481 .opcode = 21,
15482 .operands = &.{
15483 .{ .kind = .id_ref, .quantifier = .required },
15484 .{ .kind = .literal_integer, .quantifier = .required },
15485 .{ .kind = .literal_integer, .quantifier = .required },
15486 .{ .kind = .id_ref, .quantifier = .required },
15487 .{ .kind = .id_ref, .quantifier = .optional },
1375515488 },
1375615489 },
1375715490 .{
13758 .name = "u_min",
13759 .opcode = 159,
13760 .operands = &[_]Operand{
13761 .{ .kind = .IdRef, .quantifier = .required },
13762 .{ .kind = .IdRef, .quantifier = .required },
15491 .name = "DebugLexicalBlockDiscriminator",
15492 .opcode = 22,
15493 .operands = &.{
15494 .{ .kind = .id_ref, .quantifier = .required },
15495 .{ .kind = .literal_integer, .quantifier = .required },
15496 .{ .kind = .id_ref, .quantifier = .required },
1376315497 },
1376415498 },
1376515499 .{
13766 .name = "s_mul_hi",
13767 .opcode = 160,
13768 .operands = &[_]Operand{
13769 .{ .kind = .IdRef, .quantifier = .required },
13770 .{ .kind = .IdRef, .quantifier = .required },
15500 .name = "DebugScope",
15501 .opcode = 23,
15502 .operands = &.{
15503 .{ .kind = .id_ref, .quantifier = .required },
15504 .{ .kind = .id_ref, .quantifier = .optional },
1377115505 },
1377215506 },
1377315507 .{
13774 .name = "rotate",
13775 .opcode = 161,
13776 .operands = &[_]Operand{
13777 .{ .kind = .IdRef, .quantifier = .required },
13778 .{ .kind = .IdRef, .quantifier = .required },
15508 .name = "DebugNoScope",
15509 .opcode = 24,
15510 .operands = &.{},
15511 },
15512 .{
15513 .name = "DebugInlinedAt",
15514 .opcode = 25,
15515 .operands = &.{
15516 .{ .kind = .literal_integer, .quantifier = .required },
15517 .{ .kind = .id_ref, .quantifier = .required },
15518 .{ .kind = .id_ref, .quantifier = .optional },
1377915519 },
1378015520 },
1378115521 .{
13782 .name = "s_sub_sat",
13783 .opcode = 162,
13784 .operands = &[_]Operand{
13785 .{ .kind = .IdRef, .quantifier = .required },
13786 .{ .kind = .IdRef, .quantifier = .required },
15522 .name = "DebugLocalVariable",
15523 .opcode = 26,
15524 .operands = &.{
15525 .{ .kind = .id_ref, .quantifier = .required },
15526 .{ .kind = .id_ref, .quantifier = .required },
15527 .{ .kind = .id_ref, .quantifier = .required },
15528 .{ .kind = .literal_integer, .quantifier = .required },
15529 .{ .kind = .literal_integer, .quantifier = .required },
15530 .{ .kind = .id_ref, .quantifier = .required },
15531 .{ .kind = .open_cl_debug_info_100_debug_info_flags, .quantifier = .required },
15532 .{ .kind = .literal_integer, .quantifier = .optional },
1378715533 },
1378815534 },
1378915535 .{
13790 .name = "u_sub_sat",
13791 .opcode = 163,
13792 .operands = &[_]Operand{
13793 .{ .kind = .IdRef, .quantifier = .required },
13794 .{ .kind = .IdRef, .quantifier = .required },
15536 .name = "DebugInlinedVariable",
15537 .opcode = 27,
15538 .operands = &.{
15539 .{ .kind = .id_ref, .quantifier = .required },
15540 .{ .kind = .id_ref, .quantifier = .required },
1379515541 },
1379615542 },
1379715543 .{
13798 .name = "u_upsample",
13799 .opcode = 164,
13800 .operands = &[_]Operand{
13801 .{ .kind = .IdRef, .quantifier = .required },
13802 .{ .kind = .IdRef, .quantifier = .required },
15544 .name = "DebugDeclare",
15545 .opcode = 28,
15546 .operands = &.{
15547 .{ .kind = .id_ref, .quantifier = .required },
15548 .{ .kind = .id_ref, .quantifier = .required },
15549 .{ .kind = .id_ref, .quantifier = .required },
1380315550 },
1380415551 },
1380515552 .{
13806 .name = "s_upsample",
13807 .opcode = 165,
13808 .operands = &[_]Operand{
13809 .{ .kind = .IdRef, .quantifier = .required },
13810 .{ .kind = .IdRef, .quantifier = .required },
15553 .name = "DebugValue",
15554 .opcode = 29,
15555 .operands = &.{
15556 .{ .kind = .id_ref, .quantifier = .required },
15557 .{ .kind = .id_ref, .quantifier = .required },
15558 .{ .kind = .id_ref, .quantifier = .required },
15559 .{ .kind = .id_ref, .quantifier = .variadic },
1381115560 },
1381215561 },
1381315562 .{
13814 .name = "popcount",
13815 .opcode = 166,
13816 .operands = &[_]Operand{
13817 .{ .kind = .IdRef, .quantifier = .required },
15563 .name = "DebugOperation",
15564 .opcode = 30,
15565 .operands = &.{
15566 .{ .kind = .open_cl_debug_info_100_debug_operation, .quantifier = .required },
15567 .{ .kind = .literal_integer, .quantifier = .variadic },
1381815568 },
1381915569 },
1382015570 .{
13821 .name = "s_mad24",
13822 .opcode = 167,
13823 .operands = &[_]Operand{
13824 .{ .kind = .IdRef, .quantifier = .required },
13825 .{ .kind = .IdRef, .quantifier = .required },
13826 .{ .kind = .IdRef, .quantifier = .required },
15571 .name = "DebugExpression",
15572 .opcode = 31,
15573 .operands = &.{
15574 .{ .kind = .id_ref, .quantifier = .variadic },
1382715575 },
1382815576 },
1382915577 .{
13830 .name = "u_mad24",
13831 .opcode = 168,
13832 .operands = &[_]Operand{
13833 .{ .kind = .IdRef, .quantifier = .required },
13834 .{ .kind = .IdRef, .quantifier = .required },
13835 .{ .kind = .IdRef, .quantifier = .required },
15578 .name = "DebugMacroDef",
15579 .opcode = 32,
15580 .operands = &.{
15581 .{ .kind = .id_ref, .quantifier = .required },
15582 .{ .kind = .literal_integer, .quantifier = .required },
15583 .{ .kind = .id_ref, .quantifier = .required },
15584 .{ .kind = .id_ref, .quantifier = .optional },
1383615585 },
1383715586 },
1383815587 .{
13839 .name = "s_mul24",
13840 .opcode = 169,
13841 .operands = &[_]Operand{
13842 .{ .kind = .IdRef, .quantifier = .required },
13843 .{ .kind = .IdRef, .quantifier = .required },
15588 .name = "DebugMacroUndef",
15589 .opcode = 33,
15590 .operands = &.{
15591 .{ .kind = .id_ref, .quantifier = .required },
15592 .{ .kind = .literal_integer, .quantifier = .required },
15593 .{ .kind = .id_ref, .quantifier = .required },
1384415594 },
1384515595 },
1384615596 .{
13847 .name = "u_mul24",
13848 .opcode = 170,
13849 .operands = &[_]Operand{
13850 .{ .kind = .IdRef, .quantifier = .required },
13851 .{ .kind = .IdRef, .quantifier = .required },
15597 .name = "DebugImportedEntity",
15598 .opcode = 34,
15599 .operands = &.{
15600 .{ .kind = .id_ref, .quantifier = .required },
15601 .{ .kind = .open_cl_debug_info_100_debug_imported_entity, .quantifier = .required },
15602 .{ .kind = .id_ref, .quantifier = .required },
15603 .{ .kind = .id_ref, .quantifier = .required },
15604 .{ .kind = .literal_integer, .quantifier = .required },
15605 .{ .kind = .literal_integer, .quantifier = .required },
15606 .{ .kind = .id_ref, .quantifier = .required },
1385215607 },
1385315608 },
1385415609 .{
13855 .name = "vloadn",
13856 .opcode = 171,
13857 .operands = &[_]Operand{
13858 .{ .kind = .IdRef, .quantifier = .required },
13859 .{ .kind = .IdRef, .quantifier = .required },
13860 .{ .kind = .LiteralInteger, .quantifier = .required },
15610 .name = "DebugSource",
15611 .opcode = 35,
15612 .operands = &.{
15613 .{ .kind = .id_ref, .quantifier = .required },
15614 .{ .kind = .id_ref, .quantifier = .optional },
1386115615 },
1386215616 },
1386315617 .{
13864 .name = "vstoren",
13865 .opcode = 172,
13866 .operands = &[_]Operand{
13867 .{ .kind = .IdRef, .quantifier = .required },
13868 .{ .kind = .IdRef, .quantifier = .required },
13869 .{ .kind = .IdRef, .quantifier = .required },
15618 .name = "DebugModuleINTEL",
15619 .opcode = 36,
15620 .operands = &.{
15621 .{ .kind = .id_ref, .quantifier = .required },
15622 .{ .kind = .id_ref, .quantifier = .required },
15623 .{ .kind = .id_ref, .quantifier = .required },
15624 .{ .kind = .literal_integer, .quantifier = .required },
15625 .{ .kind = .id_ref, .quantifier = .required },
15626 .{ .kind = .id_ref, .quantifier = .required },
15627 .{ .kind = .id_ref, .quantifier = .required },
15628 .{ .kind = .literal_integer, .quantifier = .required },
1387015629 },
1387115630 },
15631 },
15632 .non_semantic_clspv_reflection_6 => &.{
1387215633 .{
13873 .name = "vload_half",
13874 .opcode = 173,
13875 .operands = &[_]Operand{
13876 .{ .kind = .IdRef, .quantifier = .required },
13877 .{ .kind = .IdRef, .quantifier = .required },
15634 .name = "Kernel",
15635 .opcode = 1,
15636 .operands = &.{
15637 .{ .kind = .id_ref, .quantifier = .required },
15638 .{ .kind = .id_ref, .quantifier = .required },
15639 .{ .kind = .id_ref, .quantifier = .optional },
15640 .{ .kind = .id_ref, .quantifier = .optional },
15641 .{ .kind = .id_ref, .quantifier = .optional },
1387815642 },
1387915643 },
1388015644 .{
13881 .name = "vload_halfn",
13882 .opcode = 174,
13883 .operands = &[_]Operand{
13884 .{ .kind = .IdRef, .quantifier = .required },
13885 .{ .kind = .IdRef, .quantifier = .required },
13886 .{ .kind = .LiteralInteger, .quantifier = .required },
15645 .name = "ArgumentInfo",
15646 .opcode = 2,
15647 .operands = &.{
15648 .{ .kind = .id_ref, .quantifier = .required },
15649 .{ .kind = .id_ref, .quantifier = .optional },
15650 .{ .kind = .id_ref, .quantifier = .optional },
15651 .{ .kind = .id_ref, .quantifier = .optional },
15652 .{ .kind = .id_ref, .quantifier = .optional },
1388715653 },
1388815654 },
1388915655 .{
13890 .name = "vstore_half",
13891 .opcode = 175,
13892 .operands = &[_]Operand{
13893 .{ .kind = .IdRef, .quantifier = .required },
13894 .{ .kind = .IdRef, .quantifier = .required },
13895 .{ .kind = .IdRef, .quantifier = .required },
15656 .name = "ArgumentStorageBuffer",
15657 .opcode = 3,
15658 .operands = &.{
15659 .{ .kind = .id_ref, .quantifier = .required },
15660 .{ .kind = .id_ref, .quantifier = .required },
15661 .{ .kind = .id_ref, .quantifier = .required },
15662 .{ .kind = .id_ref, .quantifier = .required },
15663 .{ .kind = .id_ref, .quantifier = .optional },
1389615664 },
1389715665 },
1389815666 .{
13899 .name = "vstore_half_r",
13900 .opcode = 176,
13901 .operands = &[_]Operand{
13902 .{ .kind = .IdRef, .quantifier = .required },
13903 .{ .kind = .IdRef, .quantifier = .required },
13904 .{ .kind = .IdRef, .quantifier = .required },
13905 .{ .kind = .FPRoundingMode, .quantifier = .required },
15667 .name = "ArgumentUniform",
15668 .opcode = 4,
15669 .operands = &.{
15670 .{ .kind = .id_ref, .quantifier = .required },
15671 .{ .kind = .id_ref, .quantifier = .required },
15672 .{ .kind = .id_ref, .quantifier = .required },
15673 .{ .kind = .id_ref, .quantifier = .required },
15674 .{ .kind = .id_ref, .quantifier = .optional },
15675 },
15676 },
15677 .{
15678 .name = "ArgumentPodStorageBuffer",
15679 .opcode = 5,
15680 .operands = &.{
15681 .{ .kind = .id_ref, .quantifier = .required },
15682 .{ .kind = .id_ref, .quantifier = .required },
15683 .{ .kind = .id_ref, .quantifier = .required },
15684 .{ .kind = .id_ref, .quantifier = .required },
15685 .{ .kind = .id_ref, .quantifier = .required },
15686 .{ .kind = .id_ref, .quantifier = .required },
15687 .{ .kind = .id_ref, .quantifier = .optional },
15688 },
15689 },
15690 .{
15691 .name = "ArgumentPodUniform",
15692 .opcode = 6,
15693 .operands = &.{
15694 .{ .kind = .id_ref, .quantifier = .required },
15695 .{ .kind = .id_ref, .quantifier = .required },
15696 .{ .kind = .id_ref, .quantifier = .required },
15697 .{ .kind = .id_ref, .quantifier = .required },
15698 .{ .kind = .id_ref, .quantifier = .required },
15699 .{ .kind = .id_ref, .quantifier = .required },
15700 .{ .kind = .id_ref, .quantifier = .optional },
15701 },
15702 },
15703 .{
15704 .name = "ArgumentPodPushConstant",
15705 .opcode = 7,
15706 .operands = &.{
15707 .{ .kind = .id_ref, .quantifier = .required },
15708 .{ .kind = .id_ref, .quantifier = .required },
15709 .{ .kind = .id_ref, .quantifier = .required },
15710 .{ .kind = .id_ref, .quantifier = .required },
15711 .{ .kind = .id_ref, .quantifier = .optional },
15712 },
15713 },
15714 .{
15715 .name = "ArgumentSampledImage",
15716 .opcode = 8,
15717 .operands = &.{
15718 .{ .kind = .id_ref, .quantifier = .required },
15719 .{ .kind = .id_ref, .quantifier = .required },
15720 .{ .kind = .id_ref, .quantifier = .required },
15721 .{ .kind = .id_ref, .quantifier = .required },
15722 .{ .kind = .id_ref, .quantifier = .optional },
15723 },
15724 },
15725 .{
15726 .name = "ArgumentStorageImage",
15727 .opcode = 9,
15728 .operands = &.{
15729 .{ .kind = .id_ref, .quantifier = .required },
15730 .{ .kind = .id_ref, .quantifier = .required },
15731 .{ .kind = .id_ref, .quantifier = .required },
15732 .{ .kind = .id_ref, .quantifier = .required },
15733 .{ .kind = .id_ref, .quantifier = .optional },
15734 },
15735 },
15736 .{
15737 .name = "ArgumentSampler",
15738 .opcode = 10,
15739 .operands = &.{
15740 .{ .kind = .id_ref, .quantifier = .required },
15741 .{ .kind = .id_ref, .quantifier = .required },
15742 .{ .kind = .id_ref, .quantifier = .required },
15743 .{ .kind = .id_ref, .quantifier = .required },
15744 .{ .kind = .id_ref, .quantifier = .optional },
15745 },
15746 },
15747 .{
15748 .name = "ArgumentWorkgroup",
15749 .opcode = 11,
15750 .operands = &.{
15751 .{ .kind = .id_ref, .quantifier = .required },
15752 .{ .kind = .id_ref, .quantifier = .required },
15753 .{ .kind = .id_ref, .quantifier = .required },
15754 .{ .kind = .id_ref, .quantifier = .required },
15755 .{ .kind = .id_ref, .quantifier = .optional },
15756 },
15757 },
15758 .{
15759 .name = "SpecConstantWorkgroupSize",
15760 .opcode = 12,
15761 .operands = &.{
15762 .{ .kind = .id_ref, .quantifier = .required },
15763 .{ .kind = .id_ref, .quantifier = .required },
15764 .{ .kind = .id_ref, .quantifier = .required },
15765 },
15766 },
15767 .{
15768 .name = "SpecConstantGlobalOffset",
15769 .opcode = 13,
15770 .operands = &.{
15771 .{ .kind = .id_ref, .quantifier = .required },
15772 .{ .kind = .id_ref, .quantifier = .required },
15773 .{ .kind = .id_ref, .quantifier = .required },
15774 },
15775 },
15776 .{
15777 .name = "SpecConstantWorkDim",
15778 .opcode = 14,
15779 .operands = &.{
15780 .{ .kind = .id_ref, .quantifier = .required },
15781 },
15782 },
15783 .{
15784 .name = "PushConstantGlobalOffset",
15785 .opcode = 15,
15786 .operands = &.{
15787 .{ .kind = .id_ref, .quantifier = .required },
15788 .{ .kind = .id_ref, .quantifier = .required },
15789 },
15790 },
15791 .{
15792 .name = "PushConstantEnqueuedLocalSize",
15793 .opcode = 16,
15794 .operands = &.{
15795 .{ .kind = .id_ref, .quantifier = .required },
15796 .{ .kind = .id_ref, .quantifier = .required },
15797 },
15798 },
15799 .{
15800 .name = "PushConstantGlobalSize",
15801 .opcode = 17,
15802 .operands = &.{
15803 .{ .kind = .id_ref, .quantifier = .required },
15804 .{ .kind = .id_ref, .quantifier = .required },
15805 },
15806 },
15807 .{
15808 .name = "PushConstantRegionOffset",
15809 .opcode = 18,
15810 .operands = &.{
15811 .{ .kind = .id_ref, .quantifier = .required },
15812 .{ .kind = .id_ref, .quantifier = .required },
15813 },
15814 },
15815 .{
15816 .name = "PushConstantNumWorkgroups",
15817 .opcode = 19,
15818 .operands = &.{
15819 .{ .kind = .id_ref, .quantifier = .required },
15820 .{ .kind = .id_ref, .quantifier = .required },
15821 },
15822 },
15823 .{
15824 .name = "PushConstantRegionGroupOffset",
15825 .opcode = 20,
15826 .operands = &.{
15827 .{ .kind = .id_ref, .quantifier = .required },
15828 .{ .kind = .id_ref, .quantifier = .required },
15829 },
15830 },
15831 .{
15832 .name = "ConstantDataStorageBuffer",
15833 .opcode = 21,
15834 .operands = &.{
15835 .{ .kind = .id_ref, .quantifier = .required },
15836 .{ .kind = .id_ref, .quantifier = .required },
15837 .{ .kind = .id_ref, .quantifier = .required },
15838 },
15839 },
15840 .{
15841 .name = "ConstantDataUniform",
15842 .opcode = 22,
15843 .operands = &.{
15844 .{ .kind = .id_ref, .quantifier = .required },
15845 .{ .kind = .id_ref, .quantifier = .required },
15846 .{ .kind = .id_ref, .quantifier = .required },
15847 },
15848 },
15849 .{
15850 .name = "LiteralSampler",
15851 .opcode = 23,
15852 .operands = &.{
15853 .{ .kind = .id_ref, .quantifier = .required },
15854 .{ .kind = .id_ref, .quantifier = .required },
15855 .{ .kind = .id_ref, .quantifier = .required },
15856 },
15857 },
15858 .{
15859 .name = "PropertyRequiredWorkgroupSize",
15860 .opcode = 24,
15861 .operands = &.{
15862 .{ .kind = .id_ref, .quantifier = .required },
15863 .{ .kind = .id_ref, .quantifier = .required },
15864 .{ .kind = .id_ref, .quantifier = .required },
15865 .{ .kind = .id_ref, .quantifier = .required },
15866 },
15867 },
15868 .{
15869 .name = "SpecConstantSubgroupMaxSize",
15870 .opcode = 25,
15871 .operands = &.{
15872 .{ .kind = .id_ref, .quantifier = .required },
15873 },
15874 },
15875 .{
15876 .name = "ArgumentPointerPushConstant",
15877 .opcode = 26,
15878 .operands = &.{
15879 .{ .kind = .id_ref, .quantifier = .required },
15880 .{ .kind = .id_ref, .quantifier = .required },
15881 .{ .kind = .id_ref, .quantifier = .required },
15882 .{ .kind = .id_ref, .quantifier = .required },
15883 .{ .kind = .id_ref, .quantifier = .optional },
15884 },
15885 },
15886 .{
15887 .name = "ArgumentPointerUniform",
15888 .opcode = 27,
15889 .operands = &.{
15890 .{ .kind = .id_ref, .quantifier = .required },
15891 .{ .kind = .id_ref, .quantifier = .required },
15892 .{ .kind = .id_ref, .quantifier = .required },
15893 .{ .kind = .id_ref, .quantifier = .required },
15894 .{ .kind = .id_ref, .quantifier = .required },
15895 .{ .kind = .id_ref, .quantifier = .required },
15896 .{ .kind = .id_ref, .quantifier = .optional },
1390615897 },
1390715898 },
1390815899 .{
13909 .name = "vstore_halfn",
13910 .opcode = 177,
13911 .operands = &[_]Operand{
13912 .{ .kind = .IdRef, .quantifier = .required },
13913 .{ .kind = .IdRef, .quantifier = .required },
13914 .{ .kind = .IdRef, .quantifier = .required },
15900 .name = "ProgramScopeVariablesStorageBuffer",
15901 .opcode = 28,
15902 .operands = &.{
15903 .{ .kind = .id_ref, .quantifier = .required },
15904 .{ .kind = .id_ref, .quantifier = .required },
15905 .{ .kind = .id_ref, .quantifier = .required },
1391515906 },
1391615907 },
1391715908 .{
13918 .name = "vstore_halfn_r",
13919 .opcode = 178,
13920 .operands = &[_]Operand{
13921 .{ .kind = .IdRef, .quantifier = .required },
13922 .{ .kind = .IdRef, .quantifier = .required },
13923 .{ .kind = .IdRef, .quantifier = .required },
13924 .{ .kind = .FPRoundingMode, .quantifier = .required },
15909 .name = "ProgramScopeVariablePointerRelocation",
15910 .opcode = 29,
15911 .operands = &.{
15912 .{ .kind = .id_ref, .quantifier = .required },
15913 .{ .kind = .id_ref, .quantifier = .required },
15914 .{ .kind = .id_ref, .quantifier = .required },
1392515915 },
1392615916 },
1392715917 .{
13928 .name = "vloada_halfn",
13929 .opcode = 179,
13930 .operands = &[_]Operand{
13931 .{ .kind = .IdRef, .quantifier = .required },
13932 .{ .kind = .IdRef, .quantifier = .required },
13933 .{ .kind = .LiteralInteger, .quantifier = .required },
15918 .name = "ImageArgumentInfoChannelOrderPushConstant",
15919 .opcode = 30,
15920 .operands = &.{
15921 .{ .kind = .id_ref, .quantifier = .required },
15922 .{ .kind = .id_ref, .quantifier = .required },
15923 .{ .kind = .id_ref, .quantifier = .required },
15924 .{ .kind = .id_ref, .quantifier = .required },
1393415925 },
1393515926 },
1393615927 .{
13937 .name = "vstorea_halfn",
13938 .opcode = 180,
13939 .operands = &[_]Operand{
13940 .{ .kind = .IdRef, .quantifier = .required },
13941 .{ .kind = .IdRef, .quantifier = .required },
13942 .{ .kind = .IdRef, .quantifier = .required },
15928 .name = "ImageArgumentInfoChannelDataTypePushConstant",
15929 .opcode = 31,
15930 .operands = &.{
15931 .{ .kind = .id_ref, .quantifier = .required },
15932 .{ .kind = .id_ref, .quantifier = .required },
15933 .{ .kind = .id_ref, .quantifier = .required },
15934 .{ .kind = .id_ref, .quantifier = .required },
1394315935 },
1394415936 },
1394515937 .{
13946 .name = "vstorea_halfn_r",
13947 .opcode = 181,
13948 .operands = &[_]Operand{
13949 .{ .kind = .IdRef, .quantifier = .required },
13950 .{ .kind = .IdRef, .quantifier = .required },
13951 .{ .kind = .IdRef, .quantifier = .required },
13952 .{ .kind = .FPRoundingMode, .quantifier = .required },
15938 .name = "ImageArgumentInfoChannelOrderUniform",
15939 .opcode = 32,
15940 .operands = &.{
15941 .{ .kind = .id_ref, .quantifier = .required },
15942 .{ .kind = .id_ref, .quantifier = .required },
15943 .{ .kind = .id_ref, .quantifier = .required },
15944 .{ .kind = .id_ref, .quantifier = .required },
15945 .{ .kind = .id_ref, .quantifier = .required },
15946 .{ .kind = .id_ref, .quantifier = .required },
1395315947 },
1395415948 },
1395515949 .{
13956 .name = "shuffle",
13957 .opcode = 182,
13958 .operands = &[_]Operand{
13959 .{ .kind = .IdRef, .quantifier = .required },
13960 .{ .kind = .IdRef, .quantifier = .required },
15950 .name = "ImageArgumentInfoChannelDataTypeUniform",
15951 .opcode = 33,
15952 .operands = &.{
15953 .{ .kind = .id_ref, .quantifier = .required },
15954 .{ .kind = .id_ref, .quantifier = .required },
15955 .{ .kind = .id_ref, .quantifier = .required },
15956 .{ .kind = .id_ref, .quantifier = .required },
15957 .{ .kind = .id_ref, .quantifier = .required },
15958 .{ .kind = .id_ref, .quantifier = .required },
1396115959 },
1396215960 },
1396315961 .{
13964 .name = "shuffle2",
13965 .opcode = 183,
13966 .operands = &[_]Operand{
13967 .{ .kind = .IdRef, .quantifier = .required },
13968 .{ .kind = .IdRef, .quantifier = .required },
13969 .{ .kind = .IdRef, .quantifier = .required },
15962 .name = "ArgumentStorageTexelBuffer",
15963 .opcode = 34,
15964 .operands = &.{
15965 .{ .kind = .id_ref, .quantifier = .required },
15966 .{ .kind = .id_ref, .quantifier = .required },
15967 .{ .kind = .id_ref, .quantifier = .required },
15968 .{ .kind = .id_ref, .quantifier = .required },
15969 .{ .kind = .id_ref, .quantifier = .optional },
1397015970 },
1397115971 },
1397215972 .{
13973 .name = "printf",
13974 .opcode = 184,
13975 .operands = &[_]Operand{
13976 .{ .kind = .IdRef, .quantifier = .required },
13977 .{ .kind = .IdRef, .quantifier = .variadic },
15973 .name = "ArgumentUniformTexelBuffer",
15974 .opcode = 35,
15975 .operands = &.{
15976 .{ .kind = .id_ref, .quantifier = .required },
15977 .{ .kind = .id_ref, .quantifier = .required },
15978 .{ .kind = .id_ref, .quantifier = .required },
15979 .{ .kind = .id_ref, .quantifier = .required },
15980 .{ .kind = .id_ref, .quantifier = .optional },
1397815981 },
1397915982 },
1398015983 .{
13981 .name = "prefetch",
13982 .opcode = 185,
13983 .operands = &[_]Operand{
13984 .{ .kind = .IdRef, .quantifier = .required },
13985 .{ .kind = .IdRef, .quantifier = .required },
15984 .name = "ConstantDataPointerPushConstant",
15985 .opcode = 36,
15986 .operands = &.{
15987 .{ .kind = .id_ref, .quantifier = .required },
15988 .{ .kind = .id_ref, .quantifier = .required },
15989 .{ .kind = .id_ref, .quantifier = .required },
1398615990 },
1398715991 },
1398815992 .{
13989 .name = "bitselect",
13990 .opcode = 186,
13991 .operands = &[_]Operand{
13992 .{ .kind = .IdRef, .quantifier = .required },
13993 .{ .kind = .IdRef, .quantifier = .required },
13994 .{ .kind = .IdRef, .quantifier = .required },
15993 .name = "ProgramScopeVariablePointerPushConstant",
15994 .opcode = 37,
15995 .operands = &.{
15996 .{ .kind = .id_ref, .quantifier = .required },
15997 .{ .kind = .id_ref, .quantifier = .required },
15998 .{ .kind = .id_ref, .quantifier = .required },
1399515999 },
1399616000 },
1399716001 .{
13998 .name = "select",
13999 .opcode = 187,
14000 .operands = &[_]Operand{
14001 .{ .kind = .IdRef, .quantifier = .required },
14002 .{ .kind = .IdRef, .quantifier = .required },
14003 .{ .kind = .IdRef, .quantifier = .required },
16002 .name = "PrintfInfo",
16003 .opcode = 38,
16004 .operands = &.{
16005 .{ .kind = .id_ref, .quantifier = .required },
16006 .{ .kind = .id_ref, .quantifier = .required },
16007 .{ .kind = .id_ref, .quantifier = .variadic },
1400416008 },
1400516009 },
1400616010 .{
14007 .name = "u_abs",
14008 .opcode = 201,
14009 .operands = &[_]Operand{
14010 .{ .kind = .IdRef, .quantifier = .required },
16011 .name = "PrintfBufferStorageBuffer",
16012 .opcode = 39,
16013 .operands = &.{
16014 .{ .kind = .id_ref, .quantifier = .required },
16015 .{ .kind = .id_ref, .quantifier = .required },
16016 .{ .kind = .id_ref, .quantifier = .required },
1401116017 },
1401216018 },
1401316019 .{
14014 .name = "u_abs_diff",
14015 .opcode = 202,
14016 .operands = &[_]Operand{
14017 .{ .kind = .IdRef, .quantifier = .required },
14018 .{ .kind = .IdRef, .quantifier = .required },
16020 .name = "PrintfBufferPointerPushConstant",
16021 .opcode = 40,
16022 .operands = &.{
16023 .{ .kind = .id_ref, .quantifier = .required },
16024 .{ .kind = .id_ref, .quantifier = .required },
16025 .{ .kind = .id_ref, .quantifier = .required },
1401916026 },
1402016027 },
1402116028 .{
14022 .name = "u_mul_hi",
14023 .opcode = 203,
14024 .operands = &[_]Operand{
14025 .{ .kind = .IdRef, .quantifier = .required },
14026 .{ .kind = .IdRef, .quantifier = .required },
16029 .name = "NormalizedSamplerMaskPushConstant",
16030 .opcode = 41,
16031 .operands = &.{
16032 .{ .kind = .id_ref, .quantifier = .required },
16033 .{ .kind = .id_ref, .quantifier = .required },
16034 .{ .kind = .id_ref, .quantifier = .required },
16035 .{ .kind = .id_ref, .quantifier = .required },
1402716036 },
1402816037 },
1402916038 .{
14030 .name = "u_mad_hi",
14031 .opcode = 204,
14032 .operands = &[_]Operand{
14033 .{ .kind = .IdRef, .quantifier = .required },
14034 .{ .kind = .IdRef, .quantifier = .required },
14035 .{ .kind = .IdRef, .quantifier = .required },
16039 .name = "WorkgroupVariableSize",
16040 .opcode = 42,
16041 .operands = &.{
16042 .{ .kind = .id_ref, .quantifier = .required },
16043 .{ .kind = .id_ref, .quantifier = .required },
1403616044 },
1403716045 },
1403816046 },
14039 .@"GLSL.std.450" => &[_]Instruction{
16047 .glsl_std_450 => &.{
1404016048 .{
1404116049 .name = "Round",
1404216050 .opcode = 1,
14043 .operands = &[_]Operand{
14044 .{ .kind = .IdRef, .quantifier = .required },
16051 .operands = &.{
16052 .{ .kind = .id_ref, .quantifier = .required },
1404516053 },
1404616054 },
1404716055 .{
1404816056 .name = "RoundEven",
1404916057 .opcode = 2,
14050 .operands = &[_]Operand{
14051 .{ .kind = .IdRef, .quantifier = .required },
16058 .operands = &.{
16059 .{ .kind = .id_ref, .quantifier = .required },
1405216060 },
1405316061 },
1405416062 .{
1405516063 .name = "Trunc",
1405616064 .opcode = 3,
14057 .operands = &[_]Operand{
14058 .{ .kind = .IdRef, .quantifier = .required },
16065 .operands = &.{
16066 .{ .kind = .id_ref, .quantifier = .required },
1405916067 },
1406016068 },
1406116069 .{
1406216070 .name = "FAbs",
1406316071 .opcode = 4,
14064 .operands = &[_]Operand{
14065 .{ .kind = .IdRef, .quantifier = .required },
16072 .operands = &.{
16073 .{ .kind = .id_ref, .quantifier = .required },
1406616074 },
1406716075 },
1406816076 .{
1406916077 .name = "SAbs",
1407016078 .opcode = 5,
14071 .operands = &[_]Operand{
14072 .{ .kind = .IdRef, .quantifier = .required },
16079 .operands = &.{
16080 .{ .kind = .id_ref, .quantifier = .required },
1407316081 },
1407416082 },
1407516083 .{
1407616084 .name = "FSign",
1407716085 .opcode = 6,
14078 .operands = &[_]Operand{
14079 .{ .kind = .IdRef, .quantifier = .required },
16086 .operands = &.{
16087 .{ .kind = .id_ref, .quantifier = .required },
1408016088 },
1408116089 },
1408216090 .{
1408316091 .name = "SSign",
1408416092 .opcode = 7,
14085 .operands = &[_]Operand{
14086 .{ .kind = .IdRef, .quantifier = .required },
16093 .operands = &.{
16094 .{ .kind = .id_ref, .quantifier = .required },
1408716095 },
1408816096 },
1408916097 .{
1409016098 .name = "Floor",
1409116099 .opcode = 8,
14092 .operands = &[_]Operand{
14093 .{ .kind = .IdRef, .quantifier = .required },
16100 .operands = &.{
16101 .{ .kind = .id_ref, .quantifier = .required },
1409416102 },
1409516103 },
1409616104 .{
1409716105 .name = "Ceil",
1409816106 .opcode = 9,
14099 .operands = &[_]Operand{
14100 .{ .kind = .IdRef, .quantifier = .required },
16107 .operands = &.{
16108 .{ .kind = .id_ref, .quantifier = .required },
1410116109 },
1410216110 },
1410316111 .{
1410416112 .name = "Fract",
1410516113 .opcode = 10,
14106 .operands = &[_]Operand{
14107 .{ .kind = .IdRef, .quantifier = .required },
16114 .operands = &.{
16115 .{ .kind = .id_ref, .quantifier = .required },
1410816116 },
1410916117 },
1411016118 .{
1411116119 .name = "Radians",
1411216120 .opcode = 11,
14113 .operands = &[_]Operand{
14114 .{ .kind = .IdRef, .quantifier = .required },
16121 .operands = &.{
16122 .{ .kind = .id_ref, .quantifier = .required },
1411516123 },
1411616124 },
1411716125 .{
1411816126 .name = "Degrees",
1411916127 .opcode = 12,
14120 .operands = &[_]Operand{
14121 .{ .kind = .IdRef, .quantifier = .required },
16128 .operands = &.{
16129 .{ .kind = .id_ref, .quantifier = .required },
1412216130 },
1412316131 },
1412416132 .{
1412516133 .name = "Sin",
1412616134 .opcode = 13,
14127 .operands = &[_]Operand{
14128 .{ .kind = .IdRef, .quantifier = .required },
16135 .operands = &.{
16136 .{ .kind = .id_ref, .quantifier = .required },
1412916137 },
1413016138 },
1413116139 .{
1413216140 .name = "Cos",
1413316141 .opcode = 14,
14134 .operands = &[_]Operand{
14135 .{ .kind = .IdRef, .quantifier = .required },
16142 .operands = &.{
16143 .{ .kind = .id_ref, .quantifier = .required },
1413616144 },
1413716145 },
1413816146 .{
1413916147 .name = "Tan",
1414016148 .opcode = 15,
14141 .operands = &[_]Operand{
14142 .{ .kind = .IdRef, .quantifier = .required },
16149 .operands = &.{
16150 .{ .kind = .id_ref, .quantifier = .required },
1414316151 },
1414416152 },
1414516153 .{
1414616154 .name = "Asin",
1414716155 .opcode = 16,
14148 .operands = &[_]Operand{
14149 .{ .kind = .IdRef, .quantifier = .required },
16156 .operands = &.{
16157 .{ .kind = .id_ref, .quantifier = .required },
1415016158 },
1415116159 },
1415216160 .{
1415316161 .name = "Acos",
1415416162 .opcode = 17,
14155 .operands = &[_]Operand{
14156 .{ .kind = .IdRef, .quantifier = .required },
16163 .operands = &.{
16164 .{ .kind = .id_ref, .quantifier = .required },
1415716165 },
1415816166 },
1415916167 .{
1416016168 .name = "Atan",
1416116169 .opcode = 18,
14162 .operands = &[_]Operand{
14163 .{ .kind = .IdRef, .quantifier = .required },
16170 .operands = &.{
16171 .{ .kind = .id_ref, .quantifier = .required },
1416416172 },
1416516173 },
1416616174 .{
1416716175 .name = "Sinh",
1416816176 .opcode = 19,
14169 .operands = &[_]Operand{
14170 .{ .kind = .IdRef, .quantifier = .required },
16177 .operands = &.{
16178 .{ .kind = .id_ref, .quantifier = .required },
1417116179 },
1417216180 },
1417316181 .{
1417416182 .name = "Cosh",
1417516183 .opcode = 20,
14176 .operands = &[_]Operand{
14177 .{ .kind = .IdRef, .quantifier = .required },
16184 .operands = &.{
16185 .{ .kind = .id_ref, .quantifier = .required },
1417816186 },
1417916187 },
1418016188 .{
1418116189 .name = "Tanh",
1418216190 .opcode = 21,
14183 .operands = &[_]Operand{
14184 .{ .kind = .IdRef, .quantifier = .required },
16191 .operands = &.{
16192 .{ .kind = .id_ref, .quantifier = .required },
1418516193 },
1418616194 },
1418716195 .{
1418816196 .name = "Asinh",
1418916197 .opcode = 22,
14190 .operands = &[_]Operand{
14191 .{ .kind = .IdRef, .quantifier = .required },
16198 .operands = &.{
16199 .{ .kind = .id_ref, .quantifier = .required },
1419216200 },
1419316201 },
1419416202 .{
1419516203 .name = "Acosh",
1419616204 .opcode = 23,
14197 .operands = &[_]Operand{
14198 .{ .kind = .IdRef, .quantifier = .required },
16205 .operands = &.{
16206 .{ .kind = .id_ref, .quantifier = .required },
1419916207 },
1420016208 },
1420116209 .{
1420216210 .name = "Atanh",
1420316211 .opcode = 24,
14204 .operands = &[_]Operand{
14205 .{ .kind = .IdRef, .quantifier = .required },
16212 .operands = &.{
16213 .{ .kind = .id_ref, .quantifier = .required },
1420616214 },
1420716215 },
1420816216 .{
1420916217 .name = "Atan2",
1421016218 .opcode = 25,
14211 .operands = &[_]Operand{
14212 .{ .kind = .IdRef, .quantifier = .required },
14213 .{ .kind = .IdRef, .quantifier = .required },
16219 .operands = &.{
16220 .{ .kind = .id_ref, .quantifier = .required },
16221 .{ .kind = .id_ref, .quantifier = .required },
1421416222 },
1421516223 },
1421616224 .{
1421716225 .name = "Pow",
1421816226 .opcode = 26,
14219 .operands = &[_]Operand{
14220 .{ .kind = .IdRef, .quantifier = .required },
14221 .{ .kind = .IdRef, .quantifier = .required },
16227 .operands = &.{
16228 .{ .kind = .id_ref, .quantifier = .required },
16229 .{ .kind = .id_ref, .quantifier = .required },
1422216230 },
1422316231 },
1422416232 .{
1422516233 .name = "Exp",
1422616234 .opcode = 27,
14227 .operands = &[_]Operand{
14228 .{ .kind = .IdRef, .quantifier = .required },
16235 .operands = &.{
16236 .{ .kind = .id_ref, .quantifier = .required },
1422916237 },
1423016238 },
1423116239 .{
1423216240 .name = "Log",
1423316241 .opcode = 28,
14234 .operands = &[_]Operand{
14235 .{ .kind = .IdRef, .quantifier = .required },
16242 .operands = &.{
16243 .{ .kind = .id_ref, .quantifier = .required },
1423616244 },
1423716245 },
1423816246 .{
1423916247 .name = "Exp2",
1424016248 .opcode = 29,
14241 .operands = &[_]Operand{
14242 .{ .kind = .IdRef, .quantifier = .required },
16249 .operands = &.{
16250 .{ .kind = .id_ref, .quantifier = .required },
1424316251 },
1424416252 },
1424516253 .{
1424616254 .name = "Log2",
1424716255 .opcode = 30,
14248 .operands = &[_]Operand{
14249 .{ .kind = .IdRef, .quantifier = .required },
16256 .operands = &.{
16257 .{ .kind = .id_ref, .quantifier = .required },
1425016258 },
1425116259 },
1425216260 .{
1425316261 .name = "Sqrt",
1425416262 .opcode = 31,
14255 .operands = &[_]Operand{
14256 .{ .kind = .IdRef, .quantifier = .required },
16263 .operands = &.{
16264 .{ .kind = .id_ref, .quantifier = .required },
1425716265 },
1425816266 },
1425916267 .{
1426016268 .name = "InverseSqrt",
1426116269 .opcode = 32,
14262 .operands = &[_]Operand{
14263 .{ .kind = .IdRef, .quantifier = .required },
16270 .operands = &.{
16271 .{ .kind = .id_ref, .quantifier = .required },
1426416272 },
1426516273 },
1426616274 .{
1426716275 .name = "Determinant",
1426816276 .opcode = 33,
14269 .operands = &[_]Operand{
14270 .{ .kind = .IdRef, .quantifier = .required },
16277 .operands = &.{
16278 .{ .kind = .id_ref, .quantifier = .required },
1427116279 },
1427216280 },
1427316281 .{
1427416282 .name = "MatrixInverse",
1427516283 .opcode = 34,
14276 .operands = &[_]Operand{
14277 .{ .kind = .IdRef, .quantifier = .required },
16284 .operands = &.{
16285 .{ .kind = .id_ref, .quantifier = .required },
1427816286 },
1427916287 },
1428016288 .{
1428116289 .name = "Modf",
1428216290 .opcode = 35,
14283 .operands = &[_]Operand{
14284 .{ .kind = .IdRef, .quantifier = .required },
14285 .{ .kind = .IdRef, .quantifier = .required },
16291 .operands = &.{
16292 .{ .kind = .id_ref, .quantifier = .required },
16293 .{ .kind = .id_ref, .quantifier = .required },
1428616294 },
1428716295 },
1428816296 .{
1428916297 .name = "ModfStruct",
1429016298 .opcode = 36,
14291 .operands = &[_]Operand{
14292 .{ .kind = .IdRef, .quantifier = .required },
16299 .operands = &.{
16300 .{ .kind = .id_ref, .quantifier = .required },
1429316301 },
1429416302 },
1429516303 .{
1429616304 .name = "FMin",
1429716305 .opcode = 37,
14298 .operands = &[_]Operand{
14299 .{ .kind = .IdRef, .quantifier = .required },
14300 .{ .kind = .IdRef, .quantifier = .required },
16306 .operands = &.{
16307 .{ .kind = .id_ref, .quantifier = .required },
16308 .{ .kind = .id_ref, .quantifier = .required },
1430116309 },
1430216310 },
1430316311 .{
1430416312 .name = "UMin",
1430516313 .opcode = 38,
14306 .operands = &[_]Operand{
14307 .{ .kind = .IdRef, .quantifier = .required },
14308 .{ .kind = .IdRef, .quantifier = .required },
16314 .operands = &.{
16315 .{ .kind = .id_ref, .quantifier = .required },
16316 .{ .kind = .id_ref, .quantifier = .required },
1430916317 },
1431016318 },
1431116319 .{
1431216320 .name = "SMin",
1431316321 .opcode = 39,
14314 .operands = &[_]Operand{
14315 .{ .kind = .IdRef, .quantifier = .required },
14316 .{ .kind = .IdRef, .quantifier = .required },
16322 .operands = &.{
16323 .{ .kind = .id_ref, .quantifier = .required },
16324 .{ .kind = .id_ref, .quantifier = .required },
1431716325 },
1431816326 },
1431916327 .{
1432016328 .name = "FMax",
1432116329 .opcode = 40,
14322 .operands = &[_]Operand{
14323 .{ .kind = .IdRef, .quantifier = .required },
14324 .{ .kind = .IdRef, .quantifier = .required },
16330 .operands = &.{
16331 .{ .kind = .id_ref, .quantifier = .required },
16332 .{ .kind = .id_ref, .quantifier = .required },
1432516333 },
1432616334 },
1432716335 .{
1432816336 .name = "UMax",
1432916337 .opcode = 41,
14330 .operands = &[_]Operand{
14331 .{ .kind = .IdRef, .quantifier = .required },
14332 .{ .kind = .IdRef, .quantifier = .required },
16338 .operands = &.{
16339 .{ .kind = .id_ref, .quantifier = .required },
16340 .{ .kind = .id_ref, .quantifier = .required },
1433316341 },
1433416342 },
1433516343 .{
1433616344 .name = "SMax",
1433716345 .opcode = 42,
14338 .operands = &[_]Operand{
14339 .{ .kind = .IdRef, .quantifier = .required },
14340 .{ .kind = .IdRef, .quantifier = .required },
16346 .operands = &.{
16347 .{ .kind = .id_ref, .quantifier = .required },
16348 .{ .kind = .id_ref, .quantifier = .required },
1434116349 },
1434216350 },
1434316351 .{
1434416352 .name = "FClamp",
1434516353 .opcode = 43,
14346 .operands = &[_]Operand{
14347 .{ .kind = .IdRef, .quantifier = .required },
14348 .{ .kind = .IdRef, .quantifier = .required },
14349 .{ .kind = .IdRef, .quantifier = .required },
16354 .operands = &.{
16355 .{ .kind = .id_ref, .quantifier = .required },
16356 .{ .kind = .id_ref, .quantifier = .required },
16357 .{ .kind = .id_ref, .quantifier = .required },
1435016358 },
1435116359 },
1435216360 .{
1435316361 .name = "UClamp",
1435416362 .opcode = 44,
14355 .operands = &[_]Operand{
14356 .{ .kind = .IdRef, .quantifier = .required },
14357 .{ .kind = .IdRef, .quantifier = .required },
14358 .{ .kind = .IdRef, .quantifier = .required },
16363 .operands = &.{
16364 .{ .kind = .id_ref, .quantifier = .required },
16365 .{ .kind = .id_ref, .quantifier = .required },
16366 .{ .kind = .id_ref, .quantifier = .required },
1435916367 },
1436016368 },
1436116369 .{
1436216370 .name = "SClamp",
1436316371 .opcode = 45,
14364 .operands = &[_]Operand{
14365 .{ .kind = .IdRef, .quantifier = .required },
14366 .{ .kind = .IdRef, .quantifier = .required },
14367 .{ .kind = .IdRef, .quantifier = .required },
16372 .operands = &.{
16373 .{ .kind = .id_ref, .quantifier = .required },
16374 .{ .kind = .id_ref, .quantifier = .required },
16375 .{ .kind = .id_ref, .quantifier = .required },
1436816376 },
1436916377 },
1437016378 .{
1437116379 .name = "FMix",
1437216380 .opcode = 46,
14373 .operands = &[_]Operand{
14374 .{ .kind = .IdRef, .quantifier = .required },
14375 .{ .kind = .IdRef, .quantifier = .required },
14376 .{ .kind = .IdRef, .quantifier = .required },
16381 .operands = &.{
16382 .{ .kind = .id_ref, .quantifier = .required },
16383 .{ .kind = .id_ref, .quantifier = .required },
16384 .{ .kind = .id_ref, .quantifier = .required },
1437716385 },
1437816386 },
1437916387 .{
1438016388 .name = "IMix",
1438116389 .opcode = 47,
14382 .operands = &[_]Operand{
14383 .{ .kind = .IdRef, .quantifier = .required },
14384 .{ .kind = .IdRef, .quantifier = .required },
14385 .{ .kind = .IdRef, .quantifier = .required },
16390 .operands = &.{
16391 .{ .kind = .id_ref, .quantifier = .required },
16392 .{ .kind = .id_ref, .quantifier = .required },
16393 .{ .kind = .id_ref, .quantifier = .required },
1438616394 },
1438716395 },
1438816396 .{
1438916397 .name = "Step",
1439016398 .opcode = 48,
14391 .operands = &[_]Operand{
14392 .{ .kind = .IdRef, .quantifier = .required },
14393 .{ .kind = .IdRef, .quantifier = .required },
16399 .operands = &.{
16400 .{ .kind = .id_ref, .quantifier = .required },
16401 .{ .kind = .id_ref, .quantifier = .required },
1439416402 },
1439516403 },
1439616404 .{
1439716405 .name = "SmoothStep",
1439816406 .opcode = 49,
14399 .operands = &[_]Operand{
14400 .{ .kind = .IdRef, .quantifier = .required },
14401 .{ .kind = .IdRef, .quantifier = .required },
14402 .{ .kind = .IdRef, .quantifier = .required },
16407 .operands = &.{
16408 .{ .kind = .id_ref, .quantifier = .required },
16409 .{ .kind = .id_ref, .quantifier = .required },
16410 .{ .kind = .id_ref, .quantifier = .required },
1440316411 },
1440416412 },
1440516413 .{
1440616414 .name = "Fma",
1440716415 .opcode = 50,
14408 .operands = &[_]Operand{
14409 .{ .kind = .IdRef, .quantifier = .required },
14410 .{ .kind = .IdRef, .quantifier = .required },
14411 .{ .kind = .IdRef, .quantifier = .required },
16416 .operands = &.{
16417 .{ .kind = .id_ref, .quantifier = .required },
16418 .{ .kind = .id_ref, .quantifier = .required },
16419 .{ .kind = .id_ref, .quantifier = .required },
1441216420 },
1441316421 },
1441416422 .{
1441516423 .name = "Frexp",
1441616424 .opcode = 51,
14417 .operands = &[_]Operand{
14418 .{ .kind = .IdRef, .quantifier = .required },
14419 .{ .kind = .IdRef, .quantifier = .required },
16425 .operands = &.{
16426 .{ .kind = .id_ref, .quantifier = .required },
16427 .{ .kind = .id_ref, .quantifier = .required },
1442016428 },
1442116429 },
1442216430 .{
1442316431 .name = "FrexpStruct",
1442416432 .opcode = 52,
14425 .operands = &[_]Operand{
14426 .{ .kind = .IdRef, .quantifier = .required },
16433 .operands = &.{
16434 .{ .kind = .id_ref, .quantifier = .required },
1442716435 },
1442816436 },
1442916437 .{
1443016438 .name = "Ldexp",
1443116439 .opcode = 53,
14432 .operands = &[_]Operand{
14433 .{ .kind = .IdRef, .quantifier = .required },
14434 .{ .kind = .IdRef, .quantifier = .required },
16440 .operands = &.{
16441 .{ .kind = .id_ref, .quantifier = .required },
16442 .{ .kind = .id_ref, .quantifier = .required },
1443516443 },
1443616444 },
1443716445 .{
1443816446 .name = "PackSnorm4x8",
1443916447 .opcode = 54,
14440 .operands = &[_]Operand{
14441 .{ .kind = .IdRef, .quantifier = .required },
16448 .operands = &.{
16449 .{ .kind = .id_ref, .quantifier = .required },
1444216450 },
1444316451 },
1444416452 .{
1444516453 .name = "PackUnorm4x8",
1444616454 .opcode = 55,
14447 .operands = &[_]Operand{
14448 .{ .kind = .IdRef, .quantifier = .required },
16455 .operands = &.{
16456 .{ .kind = .id_ref, .quantifier = .required },
1444916457 },
1445016458 },
1445116459 .{
1445216460 .name = "PackSnorm2x16",
1445316461 .opcode = 56,
14454 .operands = &[_]Operand{
14455 .{ .kind = .IdRef, .quantifier = .required },
16462 .operands = &.{
16463 .{ .kind = .id_ref, .quantifier = .required },
1445616464 },
1445716465 },
1445816466 .{
1445916467 .name = "PackUnorm2x16",
1446016468 .opcode = 57,
14461 .operands = &[_]Operand{
14462 .{ .kind = .IdRef, .quantifier = .required },
16469 .operands = &.{
16470 .{ .kind = .id_ref, .quantifier = .required },
1446316471 },
1446416472 },
1446516473 .{
1446616474 .name = "PackHalf2x16",
1446716475 .opcode = 58,
14468 .operands = &[_]Operand{
14469 .{ .kind = .IdRef, .quantifier = .required },
16476 .operands = &.{
16477 .{ .kind = .id_ref, .quantifier = .required },
1447016478 },
1447116479 },
1447216480 .{
1447316481 .name = "PackDouble2x32",
1447416482 .opcode = 59,
14475 .operands = &[_]Operand{
14476 .{ .kind = .IdRef, .quantifier = .required },
16483 .operands = &.{
16484 .{ .kind = .id_ref, .quantifier = .required },
1447716485 },
1447816486 },
1447916487 .{
1448016488 .name = "UnpackSnorm2x16",
1448116489 .opcode = 60,
14482 .operands = &[_]Operand{
14483 .{ .kind = .IdRef, .quantifier = .required },
16490 .operands = &.{
16491 .{ .kind = .id_ref, .quantifier = .required },
1448416492 },
1448516493 },
1448616494 .{
1448716495 .name = "UnpackUnorm2x16",
1448816496 .opcode = 61,
14489 .operands = &[_]Operand{
14490 .{ .kind = .IdRef, .quantifier = .required },
16497 .operands = &.{
16498 .{ .kind = .id_ref, .quantifier = .required },
1449116499 },
1449216500 },
1449316501 .{
1449416502 .name = "UnpackHalf2x16",
1449516503 .opcode = 62,
14496 .operands = &[_]Operand{
14497 .{ .kind = .IdRef, .quantifier = .required },
16504 .operands = &.{
16505 .{ .kind = .id_ref, .quantifier = .required },
1449816506 },
1449916507 },
1450016508 .{
1450116509 .name = "UnpackSnorm4x8",
1450216510 .opcode = 63,
14503 .operands = &[_]Operand{
14504 .{ .kind = .IdRef, .quantifier = .required },
16511 .operands = &.{
16512 .{ .kind = .id_ref, .quantifier = .required },
1450516513 },
1450616514 },
1450716515 .{
1450816516 .name = "UnpackUnorm4x8",
1450916517 .opcode = 64,
14510 .operands = &[_]Operand{
14511 .{ .kind = .IdRef, .quantifier = .required },
16518 .operands = &.{
16519 .{ .kind = .id_ref, .quantifier = .required },
1451216520 },
1451316521 },
1451416522 .{
1451516523 .name = "UnpackDouble2x32",
1451616524 .opcode = 65,
14517 .operands = &[_]Operand{
14518 .{ .kind = .IdRef, .quantifier = .required },
16525 .operands = &.{
16526 .{ .kind = .id_ref, .quantifier = .required },
1451916527 },
1452016528 },
1452116529 .{
1452216530 .name = "Length",
1452316531 .opcode = 66,
14524 .operands = &[_]Operand{
14525 .{ .kind = .IdRef, .quantifier = .required },
16532 .operands = &.{
16533 .{ .kind = .id_ref, .quantifier = .required },
1452616534 },
1452716535 },
1452816536 .{
1452916537 .name = "Distance",
1453016538 .opcode = 67,
14531 .operands = &[_]Operand{
14532 .{ .kind = .IdRef, .quantifier = .required },
14533 .{ .kind = .IdRef, .quantifier = .required },
16539 .operands = &.{
16540 .{ .kind = .id_ref, .quantifier = .required },
16541 .{ .kind = .id_ref, .quantifier = .required },
1453416542 },
1453516543 },
1453616544 .{
1453716545 .name = "Cross",
1453816546 .opcode = 68,
14539 .operands = &[_]Operand{
14540 .{ .kind = .IdRef, .quantifier = .required },
14541 .{ .kind = .IdRef, .quantifier = .required },
16547 .operands = &.{
16548 .{ .kind = .id_ref, .quantifier = .required },
16549 .{ .kind = .id_ref, .quantifier = .required },
1454216550 },
1454316551 },
1454416552 .{
1454516553 .name = "Normalize",
1454616554 .opcode = 69,
14547 .operands = &[_]Operand{
14548 .{ .kind = .IdRef, .quantifier = .required },
16555 .operands = &.{
16556 .{ .kind = .id_ref, .quantifier = .required },
1454916557 },
1455016558 },
1455116559 .{
1455216560 .name = "FaceForward",
1455316561 .opcode = 70,
14554 .operands = &[_]Operand{
14555 .{ .kind = .IdRef, .quantifier = .required },
14556 .{ .kind = .IdRef, .quantifier = .required },
14557 .{ .kind = .IdRef, .quantifier = .required },
16562 .operands = &.{
16563 .{ .kind = .id_ref, .quantifier = .required },
16564 .{ .kind = .id_ref, .quantifier = .required },
16565 .{ .kind = .id_ref, .quantifier = .required },
1455816566 },
1455916567 },
1456016568 .{
1456116569 .name = "Reflect",
1456216570 .opcode = 71,
14563 .operands = &[_]Operand{
14564 .{ .kind = .IdRef, .quantifier = .required },
14565 .{ .kind = .IdRef, .quantifier = .required },
16571 .operands = &.{
16572 .{ .kind = .id_ref, .quantifier = .required },
16573 .{ .kind = .id_ref, .quantifier = .required },
1456616574 },
1456716575 },
1456816576 .{
1456916577 .name = "Refract",
1457016578 .opcode = 72,
14571 .operands = &[_]Operand{
14572 .{ .kind = .IdRef, .quantifier = .required },
14573 .{ .kind = .IdRef, .quantifier = .required },
14574 .{ .kind = .IdRef, .quantifier = .required },
16579 .operands = &.{
16580 .{ .kind = .id_ref, .quantifier = .required },
16581 .{ .kind = .id_ref, .quantifier = .required },
16582 .{ .kind = .id_ref, .quantifier = .required },
1457516583 },
1457616584 },
1457716585 .{
1457816586 .name = "FindILsb",
1457916587 .opcode = 73,
14580 .operands = &[_]Operand{
14581 .{ .kind = .IdRef, .quantifier = .required },
16588 .operands = &.{
16589 .{ .kind = .id_ref, .quantifier = .required },
1458216590 },
1458316591 },
1458416592 .{
1458516593 .name = "FindSMsb",
1458616594 .opcode = 74,
14587 .operands = &[_]Operand{
14588 .{ .kind = .IdRef, .quantifier = .required },
16595 .operands = &.{
16596 .{ .kind = .id_ref, .quantifier = .required },
1458916597 },
1459016598 },
1459116599 .{
1459216600 .name = "FindUMsb",
1459316601 .opcode = 75,
14594 .operands = &[_]Operand{
14595 .{ .kind = .IdRef, .quantifier = .required },
16602 .operands = &.{
16603 .{ .kind = .id_ref, .quantifier = .required },
1459616604 },
1459716605 },
1459816606 .{
1459916607 .name = "InterpolateAtCentroid",
1460016608 .opcode = 76,
14601 .operands = &[_]Operand{
14602 .{ .kind = .IdRef, .quantifier = .required },
16609 .operands = &.{
16610 .{ .kind = .id_ref, .quantifier = .required },
1460316611 },
1460416612 },
1460516613 .{
1460616614 .name = "InterpolateAtSample",
1460716615 .opcode = 77,
14608 .operands = &[_]Operand{
14609 .{ .kind = .IdRef, .quantifier = .required },
14610 .{ .kind = .IdRef, .quantifier = .required },
16616 .operands = &.{
16617 .{ .kind = .id_ref, .quantifier = .required },
16618 .{ .kind = .id_ref, .quantifier = .required },
1461116619 },
1461216620 },
1461316621 .{
1461416622 .name = "InterpolateAtOffset",
1461516623 .opcode = 78,
14616 .operands = &[_]Operand{
14617 .{ .kind = .IdRef, .quantifier = .required },
14618 .{ .kind = .IdRef, .quantifier = .required },
16624 .operands = &.{
16625 .{ .kind = .id_ref, .quantifier = .required },
16626 .{ .kind = .id_ref, .quantifier = .required },
1461916627 },
1462016628 },
1462116629 .{
1462216630 .name = "NMin",
1462316631 .opcode = 79,
14624 .operands = &[_]Operand{
14625 .{ .kind = .IdRef, .quantifier = .required },
14626 .{ .kind = .IdRef, .quantifier = .required },
16632 .operands = &.{
16633 .{ .kind = .id_ref, .quantifier = .required },
16634 .{ .kind = .id_ref, .quantifier = .required },
1462716635 },
1462816636 },
1462916637 .{
1463016638 .name = "NMax",
1463116639 .opcode = 80,
14632 .operands = &[_]Operand{
14633 .{ .kind = .IdRef, .quantifier = .required },
14634 .{ .kind = .IdRef, .quantifier = .required },
16640 .operands = &.{
16641 .{ .kind = .id_ref, .quantifier = .required },
16642 .{ .kind = .id_ref, .quantifier = .required },
1463516643 },
1463616644 },
1463716645 .{
1463816646 .name = "NClamp",
1463916647 .opcode = 81,
14640 .operands = &[_]Operand{
14641 .{ .kind = .IdRef, .quantifier = .required },
14642 .{ .kind = .IdRef, .quantifier = .required },
14643 .{ .kind = .IdRef, .quantifier = .required },
16648 .operands = &.{
16649 .{ .kind = .id_ref, .quantifier = .required },
16650 .{ .kind = .id_ref, .quantifier = .required },
16651 .{ .kind = .id_ref, .quantifier = .required },
1464416652 },
1464516653 },
1464616654 },
14647 .@"OpenCL.DebugInfo.100" => &[_]Instruction{
16655 .spv_amd_shader_ballot => &.{
1464816656 .{
14649 .name = "DebugInfoNone",
16657 .name = "SwizzleInvocationsAMD",
16658 .opcode = 1,
16659 .operands = &.{
16660 .{ .kind = .id_ref, .quantifier = .required },
16661 .{ .kind = .id_ref, .quantifier = .required },
16662 },
16663 },
16664 .{
16665 .name = "SwizzleInvocationsMaskedAMD",
16666 .opcode = 2,
16667 .operands = &.{
16668 .{ .kind = .id_ref, .quantifier = .required },
16669 .{ .kind = .id_ref, .quantifier = .required },
16670 },
16671 },
16672 .{
16673 .name = "WriteInvocationAMD",
16674 .opcode = 3,
16675 .operands = &.{
16676 .{ .kind = .id_ref, .quantifier = .required },
16677 .{ .kind = .id_ref, .quantifier = .required },
16678 .{ .kind = .id_ref, .quantifier = .required },
16679 },
16680 },
16681 .{
16682 .name = "MbcntAMD",
16683 .opcode = 4,
16684 .operands = &.{
16685 .{ .kind = .id_ref, .quantifier = .required },
16686 },
16687 },
16688 },
16689 .non_semantic_debug_printf => &.{
16690 .{
16691 .name = "DebugPrintf",
16692 .opcode = 1,
16693 .operands = &.{
16694 .{ .kind = .id_ref, .quantifier = .required },
16695 .{ .kind = .id_ref, .quantifier = .variadic },
16696 },
16697 },
16698 },
16699 .spv_amd_gcn_shader => &.{
16700 .{
16701 .name = "CubeFaceIndexAMD",
16702 .opcode = 1,
16703 .operands = &.{
16704 .{ .kind = .id_ref, .quantifier = .required },
16705 },
16706 },
16707 .{
16708 .name = "CubeFaceCoordAMD",
16709 .opcode = 2,
16710 .operands = &.{
16711 .{ .kind = .id_ref, .quantifier = .required },
16712 },
16713 },
16714 .{
16715 .name = "TimeAMD",
16716 .opcode = 3,
16717 .operands = &.{},
16718 },
16719 },
16720 .open_cl_std => &.{
16721 .{
16722 .name = "acos",
1465016723 .opcode = 0,
14651 .operands = &[_]Operand{},
16724 .operands = &.{
16725 .{ .kind = .id_ref, .quantifier = .required },
16726 },
1465216727 },
1465316728 .{
14654 .name = "DebugCompilationUnit",
16729 .name = "acosh",
1465516730 .opcode = 1,
14656 .operands = &[_]Operand{
14657 .{ .kind = .LiteralInteger, .quantifier = .required },
14658 .{ .kind = .LiteralInteger, .quantifier = .required },
14659 .{ .kind = .IdRef, .quantifier = .required },
14660 .{ .kind = .SourceLanguage, .quantifier = .required },
16731 .operands = &.{
16732 .{ .kind = .id_ref, .quantifier = .required },
1466116733 },
1466216734 },
1466316735 .{
14664 .name = "DebugTypeBasic",
16736 .name = "acospi",
1466516737 .opcode = 2,
14666 .operands = &[_]Operand{
14667 .{ .kind = .IdRef, .quantifier = .required },
14668 .{ .kind = .IdRef, .quantifier = .required },
14669 .{ .kind = .@"OpenCL.DebugInfo.100.DebugBaseTypeAttributeEncoding", .quantifier = .required },
16738 .operands = &.{
16739 .{ .kind = .id_ref, .quantifier = .required },
1467016740 },
1467116741 },
1467216742 .{
14673 .name = "DebugTypePointer",
16743 .name = "asin",
1467416744 .opcode = 3,
14675 .operands = &[_]Operand{
14676 .{ .kind = .IdRef, .quantifier = .required },
14677 .{ .kind = .StorageClass, .quantifier = .required },
14678 .{ .kind = .@"OpenCL.DebugInfo.100.DebugInfoFlags", .quantifier = .required },
16745 .operands = &.{
16746 .{ .kind = .id_ref, .quantifier = .required },
1467916747 },
1468016748 },
1468116749 .{
14682 .name = "DebugTypeQualifier",
16750 .name = "asinh",
1468316751 .opcode = 4,
14684 .operands = &[_]Operand{
14685 .{ .kind = .IdRef, .quantifier = .required },
14686 .{ .kind = .@"OpenCL.DebugInfo.100.DebugTypeQualifier", .quantifier = .required },
16752 .operands = &.{
16753 .{ .kind = .id_ref, .quantifier = .required },
1468716754 },
1468816755 },
1468916756 .{
14690 .name = "DebugTypeArray",
16757 .name = "asinpi",
1469116758 .opcode = 5,
14692 .operands = &[_]Operand{
14693 .{ .kind = .IdRef, .quantifier = .required },
14694 .{ .kind = .IdRef, .quantifier = .variadic },
16759 .operands = &.{
16760 .{ .kind = .id_ref, .quantifier = .required },
1469516761 },
1469616762 },
1469716763 .{
14698 .name = "DebugTypeVector",
16764 .name = "atan",
1469916765 .opcode = 6,
14700 .operands = &[_]Operand{
14701 .{ .kind = .IdRef, .quantifier = .required },
14702 .{ .kind = .LiteralInteger, .quantifier = .required },
16766 .operands = &.{
16767 .{ .kind = .id_ref, .quantifier = .required },
1470316768 },
1470416769 },
1470516770 .{
14706 .name = "DebugTypedef",
16771 .name = "atan2",
1470716772 .opcode = 7,
14708 .operands = &[_]Operand{
14709 .{ .kind = .IdRef, .quantifier = .required },
14710 .{ .kind = .IdRef, .quantifier = .required },
14711 .{ .kind = .IdRef, .quantifier = .required },
14712 .{ .kind = .LiteralInteger, .quantifier = .required },
14713 .{ .kind = .LiteralInteger, .quantifier = .required },
14714 .{ .kind = .IdRef, .quantifier = .required },
16773 .operands = &.{
16774 .{ .kind = .id_ref, .quantifier = .required },
16775 .{ .kind = .id_ref, .quantifier = .required },
1471516776 },
1471616777 },
1471716778 .{
14718 .name = "DebugTypeFunction",
16779 .name = "atanh",
1471916780 .opcode = 8,
14720 .operands = &[_]Operand{
14721 .{ .kind = .@"OpenCL.DebugInfo.100.DebugInfoFlags", .quantifier = .required },
14722 .{ .kind = .IdRef, .quantifier = .required },
14723 .{ .kind = .IdRef, .quantifier = .variadic },
16781 .operands = &.{
16782 .{ .kind = .id_ref, .quantifier = .required },
1472416783 },
1472516784 },
1472616785 .{
14727 .name = "DebugTypeEnum",
16786 .name = "atanpi",
1472816787 .opcode = 9,
14729 .operands = &[_]Operand{
14730 .{ .kind = .IdRef, .quantifier = .required },
14731 .{ .kind = .IdRef, .quantifier = .required },
14732 .{ .kind = .IdRef, .quantifier = .required },
14733 .{ .kind = .LiteralInteger, .quantifier = .required },
14734 .{ .kind = .LiteralInteger, .quantifier = .required },
14735 .{ .kind = .IdRef, .quantifier = .required },
14736 .{ .kind = .IdRef, .quantifier = .required },
14737 .{ .kind = .@"OpenCL.DebugInfo.100.DebugInfoFlags", .quantifier = .required },
14738 .{ .kind = .PairIdRefIdRef, .quantifier = .variadic },
16788 .operands = &.{
16789 .{ .kind = .id_ref, .quantifier = .required },
1473916790 },
1474016791 },
1474116792 .{
14742 .name = "DebugTypeComposite",
16793 .name = "atan2pi",
1474316794 .opcode = 10,
14744 .operands = &[_]Operand{
14745 .{ .kind = .IdRef, .quantifier = .required },
14746 .{ .kind = .@"OpenCL.DebugInfo.100.DebugCompositeType", .quantifier = .required },
14747 .{ .kind = .IdRef, .quantifier = .required },
14748 .{ .kind = .LiteralInteger, .quantifier = .required },
14749 .{ .kind = .LiteralInteger, .quantifier = .required },
14750 .{ .kind = .IdRef, .quantifier = .required },
14751 .{ .kind = .IdRef, .quantifier = .required },
14752 .{ .kind = .IdRef, .quantifier = .required },
14753 .{ .kind = .@"OpenCL.DebugInfo.100.DebugInfoFlags", .quantifier = .required },
14754 .{ .kind = .IdRef, .quantifier = .variadic },
16795 .operands = &.{
16796 .{ .kind = .id_ref, .quantifier = .required },
16797 .{ .kind = .id_ref, .quantifier = .required },
1475516798 },
1475616799 },
1475716800 .{
14758 .name = "DebugTypeMember",
16801 .name = "cbrt",
1475916802 .opcode = 11,
14760 .operands = &[_]Operand{
14761 .{ .kind = .IdRef, .quantifier = .required },
14762 .{ .kind = .IdRef, .quantifier = .required },
14763 .{ .kind = .IdRef, .quantifier = .required },
14764 .{ .kind = .LiteralInteger, .quantifier = .required },
14765 .{ .kind = .LiteralInteger, .quantifier = .required },
14766 .{ .kind = .IdRef, .quantifier = .required },
14767 .{ .kind = .IdRef, .quantifier = .required },
14768 .{ .kind = .IdRef, .quantifier = .required },
14769 .{ .kind = .@"OpenCL.DebugInfo.100.DebugInfoFlags", .quantifier = .required },
14770 .{ .kind = .IdRef, .quantifier = .optional },
16803 .operands = &.{
16804 .{ .kind = .id_ref, .quantifier = .required },
1477116805 },
1477216806 },
1477316807 .{
14774 .name = "DebugTypeInheritance",
16808 .name = "ceil",
1477516809 .opcode = 12,
14776 .operands = &[_]Operand{
14777 .{ .kind = .IdRef, .quantifier = .required },
14778 .{ .kind = .IdRef, .quantifier = .required },
14779 .{ .kind = .IdRef, .quantifier = .required },
14780 .{ .kind = .IdRef, .quantifier = .required },
14781 .{ .kind = .@"OpenCL.DebugInfo.100.DebugInfoFlags", .quantifier = .required },
16810 .operands = &.{
16811 .{ .kind = .id_ref, .quantifier = .required },
1478216812 },
1478316813 },
1478416814 .{
14785 .name = "DebugTypePtrToMember",
16815 .name = "copysign",
1478616816 .opcode = 13,
14787 .operands = &[_]Operand{
14788 .{ .kind = .IdRef, .quantifier = .required },
14789 .{ .kind = .IdRef, .quantifier = .required },
16817 .operands = &.{
16818 .{ .kind = .id_ref, .quantifier = .required },
16819 .{ .kind = .id_ref, .quantifier = .required },
1479016820 },
1479116821 },
1479216822 .{
14793 .name = "DebugTypeTemplate",
16823 .name = "cos",
1479416824 .opcode = 14,
14795 .operands = &[_]Operand{
14796 .{ .kind = .IdRef, .quantifier = .required },
14797 .{ .kind = .IdRef, .quantifier = .variadic },
16825 .operands = &.{
16826 .{ .kind = .id_ref, .quantifier = .required },
1479816827 },
1479916828 },
1480016829 .{
14801 .name = "DebugTypeTemplateParameter",
16830 .name = "cosh",
1480216831 .opcode = 15,
14803 .operands = &[_]Operand{
14804 .{ .kind = .IdRef, .quantifier = .required },
14805 .{ .kind = .IdRef, .quantifier = .required },
14806 .{ .kind = .IdRef, .quantifier = .required },
14807 .{ .kind = .IdRef, .quantifier = .required },
14808 .{ .kind = .LiteralInteger, .quantifier = .required },
14809 .{ .kind = .LiteralInteger, .quantifier = .required },
16832 .operands = &.{
16833 .{ .kind = .id_ref, .quantifier = .required },
1481016834 },
1481116835 },
1481216836 .{
14813 .name = "DebugTypeTemplateTemplateParameter",
16837 .name = "cospi",
1481416838 .opcode = 16,
14815 .operands = &[_]Operand{
14816 .{ .kind = .IdRef, .quantifier = .required },
14817 .{ .kind = .IdRef, .quantifier = .required },
14818 .{ .kind = .IdRef, .quantifier = .required },
14819 .{ .kind = .LiteralInteger, .quantifier = .required },
14820 .{ .kind = .LiteralInteger, .quantifier = .required },
16839 .operands = &.{
16840 .{ .kind = .id_ref, .quantifier = .required },
1482116841 },
1482216842 },
1482316843 .{
14824 .name = "DebugTypeTemplateParameterPack",
16844 .name = "erfc",
1482516845 .opcode = 17,
14826 .operands = &[_]Operand{
14827 .{ .kind = .IdRef, .quantifier = .required },
14828 .{ .kind = .IdRef, .quantifier = .required },
14829 .{ .kind = .LiteralInteger, .quantifier = .required },
14830 .{ .kind = .LiteralInteger, .quantifier = .required },
14831 .{ .kind = .IdRef, .quantifier = .variadic },
16846 .operands = &.{
16847 .{ .kind = .id_ref, .quantifier = .required },
1483216848 },
1483316849 },
1483416850 .{
14835 .name = "DebugGlobalVariable",
16851 .name = "erf",
1483616852 .opcode = 18,
14837 .operands = &[_]Operand{
14838 .{ .kind = .IdRef, .quantifier = .required },
14839 .{ .kind = .IdRef, .quantifier = .required },
14840 .{ .kind = .IdRef, .quantifier = .required },
14841 .{ .kind = .LiteralInteger, .quantifier = .required },
14842 .{ .kind = .LiteralInteger, .quantifier = .required },
14843 .{ .kind = .IdRef, .quantifier = .required },
14844 .{ .kind = .IdRef, .quantifier = .required },
14845 .{ .kind = .IdRef, .quantifier = .required },
14846 .{ .kind = .@"OpenCL.DebugInfo.100.DebugInfoFlags", .quantifier = .required },
14847 .{ .kind = .IdRef, .quantifier = .optional },
16853 .operands = &.{
16854 .{ .kind = .id_ref, .quantifier = .required },
1484816855 },
1484916856 },
1485016857 .{
14851 .name = "DebugFunctionDeclaration",
16858 .name = "exp",
1485216859 .opcode = 19,
14853 .operands = &[_]Operand{
14854 .{ .kind = .IdRef, .quantifier = .required },
14855 .{ .kind = .IdRef, .quantifier = .required },
14856 .{ .kind = .IdRef, .quantifier = .required },
14857 .{ .kind = .LiteralInteger, .quantifier = .required },
14858 .{ .kind = .LiteralInteger, .quantifier = .required },
14859 .{ .kind = .IdRef, .quantifier = .required },
14860 .{ .kind = .IdRef, .quantifier = .required },
14861 .{ .kind = .@"OpenCL.DebugInfo.100.DebugInfoFlags", .quantifier = .required },
16860 .operands = &.{
16861 .{ .kind = .id_ref, .quantifier = .required },
1486216862 },
1486316863 },
1486416864 .{
14865 .name = "DebugFunction",
16865 .name = "exp2",
1486616866 .opcode = 20,
14867 .operands = &[_]Operand{
14868 .{ .kind = .IdRef, .quantifier = .required },
14869 .{ .kind = .IdRef, .quantifier = .required },
14870 .{ .kind = .IdRef, .quantifier = .required },
14871 .{ .kind = .LiteralInteger, .quantifier = .required },
14872 .{ .kind = .LiteralInteger, .quantifier = .required },
14873 .{ .kind = .IdRef, .quantifier = .required },
14874 .{ .kind = .IdRef, .quantifier = .required },
14875 .{ .kind = .@"OpenCL.DebugInfo.100.DebugInfoFlags", .quantifier = .required },
14876 .{ .kind = .LiteralInteger, .quantifier = .required },
14877 .{ .kind = .IdRef, .quantifier = .required },
14878 .{ .kind = .IdRef, .quantifier = .optional },
16867 .operands = &.{
16868 .{ .kind = .id_ref, .quantifier = .required },
1487916869 },
1488016870 },
1488116871 .{
14882 .name = "DebugLexicalBlock",
16872 .name = "exp10",
1488316873 .opcode = 21,
14884 .operands = &[_]Operand{
14885 .{ .kind = .IdRef, .quantifier = .required },
14886 .{ .kind = .LiteralInteger, .quantifier = .required },
14887 .{ .kind = .LiteralInteger, .quantifier = .required },
14888 .{ .kind = .IdRef, .quantifier = .required },
14889 .{ .kind = .IdRef, .quantifier = .optional },
16874 .operands = &.{
16875 .{ .kind = .id_ref, .quantifier = .required },
1489016876 },
1489116877 },
1489216878 .{
14893 .name = "DebugLexicalBlockDiscriminator",
16879 .name = "expm1",
1489416880 .opcode = 22,
14895 .operands = &[_]Operand{
14896 .{ .kind = .IdRef, .quantifier = .required },
14897 .{ .kind = .LiteralInteger, .quantifier = .required },
14898 .{ .kind = .IdRef, .quantifier = .required },
16881 .operands = &.{
16882 .{ .kind = .id_ref, .quantifier = .required },
1489916883 },
1490016884 },
1490116885 .{
14902 .name = "DebugScope",
16886 .name = "fabs",
1490316887 .opcode = 23,
14904 .operands = &[_]Operand{
14905 .{ .kind = .IdRef, .quantifier = .required },
14906 .{ .kind = .IdRef, .quantifier = .optional },
16888 .operands = &.{
16889 .{ .kind = .id_ref, .quantifier = .required },
1490716890 },
1490816891 },
1490916892 .{
14910 .name = "DebugNoScope",
16893 .name = "fdim",
1491116894 .opcode = 24,
14912 .operands = &[_]Operand{},
16895 .operands = &.{
16896 .{ .kind = .id_ref, .quantifier = .required },
16897 .{ .kind = .id_ref, .quantifier = .required },
16898 },
1491316899 },
1491416900 .{
14915 .name = "DebugInlinedAt",
16901 .name = "floor",
1491616902 .opcode = 25,
14917 .operands = &[_]Operand{
14918 .{ .kind = .LiteralInteger, .quantifier = .required },
14919 .{ .kind = .IdRef, .quantifier = .required },
14920 .{ .kind = .IdRef, .quantifier = .optional },
16903 .operands = &.{
16904 .{ .kind = .id_ref, .quantifier = .required },
1492116905 },
1492216906 },
1492316907 .{
14924 .name = "DebugLocalVariable",
16908 .name = "fma",
1492516909 .opcode = 26,
14926 .operands = &[_]Operand{
14927 .{ .kind = .IdRef, .quantifier = .required },
14928 .{ .kind = .IdRef, .quantifier = .required },
14929 .{ .kind = .IdRef, .quantifier = .required },
14930 .{ .kind = .LiteralInteger, .quantifier = .required },
14931 .{ .kind = .LiteralInteger, .quantifier = .required },
14932 .{ .kind = .IdRef, .quantifier = .required },
14933 .{ .kind = .@"OpenCL.DebugInfo.100.DebugInfoFlags", .quantifier = .required },
14934 .{ .kind = .LiteralInteger, .quantifier = .optional },
16910 .operands = &.{
16911 .{ .kind = .id_ref, .quantifier = .required },
16912 .{ .kind = .id_ref, .quantifier = .required },
16913 .{ .kind = .id_ref, .quantifier = .required },
1493516914 },
1493616915 },
1493716916 .{
14938 .name = "DebugInlinedVariable",
16917 .name = "fmax",
1493916918 .opcode = 27,
14940 .operands = &[_]Operand{
14941 .{ .kind = .IdRef, .quantifier = .required },
14942 .{ .kind = .IdRef, .quantifier = .required },
16919 .operands = &.{
16920 .{ .kind = .id_ref, .quantifier = .required },
16921 .{ .kind = .id_ref, .quantifier = .required },
1494316922 },
1494416923 },
1494516924 .{
14946 .name = "DebugDeclare",
16925 .name = "fmin",
1494716926 .opcode = 28,
14948 .operands = &[_]Operand{
14949 .{ .kind = .IdRef, .quantifier = .required },
14950 .{ .kind = .IdRef, .quantifier = .required },
14951 .{ .kind = .IdRef, .quantifier = .required },
16927 .operands = &.{
16928 .{ .kind = .id_ref, .quantifier = .required },
16929 .{ .kind = .id_ref, .quantifier = .required },
1495216930 },
1495316931 },
1495416932 .{
14955 .name = "DebugValue",
16933 .name = "fmod",
1495616934 .opcode = 29,
14957 .operands = &[_]Operand{
14958 .{ .kind = .IdRef, .quantifier = .required },
14959 .{ .kind = .IdRef, .quantifier = .required },
14960 .{ .kind = .IdRef, .quantifier = .required },
14961 .{ .kind = .IdRef, .quantifier = .variadic },
16935 .operands = &.{
16936 .{ .kind = .id_ref, .quantifier = .required },
16937 .{ .kind = .id_ref, .quantifier = .required },
1496216938 },
1496316939 },
1496416940 .{
14965 .name = "DebugOperation",
16941 .name = "fract",
1496616942 .opcode = 30,
14967 .operands = &[_]Operand{
14968 .{ .kind = .@"OpenCL.DebugInfo.100.DebugOperation", .quantifier = .required },
14969 .{ .kind = .LiteralInteger, .quantifier = .variadic },
16943 .operands = &.{
16944 .{ .kind = .id_ref, .quantifier = .required },
16945 .{ .kind = .id_ref, .quantifier = .required },
1497016946 },
1497116947 },
1497216948 .{
14973 .name = "DebugExpression",
16949 .name = "frexp",
1497416950 .opcode = 31,
14975 .operands = &[_]Operand{
14976 .{ .kind = .IdRef, .quantifier = .variadic },
16951 .operands = &.{
16952 .{ .kind = .id_ref, .quantifier = .required },
16953 .{ .kind = .id_ref, .quantifier = .required },
1497716954 },
1497816955 },
1497916956 .{
14980 .name = "DebugMacroDef",
16957 .name = "hypot",
1498116958 .opcode = 32,
14982 .operands = &[_]Operand{
14983 .{ .kind = .IdRef, .quantifier = .required },
14984 .{ .kind = .LiteralInteger, .quantifier = .required },
14985 .{ .kind = .IdRef, .quantifier = .required },
14986 .{ .kind = .IdRef, .quantifier = .optional },
16959 .operands = &.{
16960 .{ .kind = .id_ref, .quantifier = .required },
16961 .{ .kind = .id_ref, .quantifier = .required },
16962 },
16963 },
16964 .{
16965 .name = "ilogb",
16966 .opcode = 33,
16967 .operands = &.{
16968 .{ .kind = .id_ref, .quantifier = .required },
16969 },
16970 },
16971 .{
16972 .name = "ldexp",
16973 .opcode = 34,
16974 .operands = &.{
16975 .{ .kind = .id_ref, .quantifier = .required },
16976 .{ .kind = .id_ref, .quantifier = .required },
16977 },
16978 },
16979 .{
16980 .name = "lgamma",
16981 .opcode = 35,
16982 .operands = &.{
16983 .{ .kind = .id_ref, .quantifier = .required },
16984 },
16985 },
16986 .{
16987 .name = "lgamma_r",
16988 .opcode = 36,
16989 .operands = &.{
16990 .{ .kind = .id_ref, .quantifier = .required },
16991 .{ .kind = .id_ref, .quantifier = .required },
16992 },
16993 },
16994 .{
16995 .name = "log",
16996 .opcode = 37,
16997 .operands = &.{
16998 .{ .kind = .id_ref, .quantifier = .required },
16999 },
17000 },
17001 .{
17002 .name = "log2",
17003 .opcode = 38,
17004 .operands = &.{
17005 .{ .kind = .id_ref, .quantifier = .required },
17006 },
17007 },
17008 .{
17009 .name = "log10",
17010 .opcode = 39,
17011 .operands = &.{
17012 .{ .kind = .id_ref, .quantifier = .required },
17013 },
17014 },
17015 .{
17016 .name = "log1p",
17017 .opcode = 40,
17018 .operands = &.{
17019 .{ .kind = .id_ref, .quantifier = .required },
17020 },
17021 },
17022 .{
17023 .name = "logb",
17024 .opcode = 41,
17025 .operands = &.{
17026 .{ .kind = .id_ref, .quantifier = .required },
17027 },
17028 },
17029 .{
17030 .name = "mad",
17031 .opcode = 42,
17032 .operands = &.{
17033 .{ .kind = .id_ref, .quantifier = .required },
17034 .{ .kind = .id_ref, .quantifier = .required },
17035 .{ .kind = .id_ref, .quantifier = .required },
17036 },
17037 },
17038 .{
17039 .name = "maxmag",
17040 .opcode = 43,
17041 .operands = &.{
17042 .{ .kind = .id_ref, .quantifier = .required },
17043 .{ .kind = .id_ref, .quantifier = .required },
17044 },
17045 },
17046 .{
17047 .name = "minmag",
17048 .opcode = 44,
17049 .operands = &.{
17050 .{ .kind = .id_ref, .quantifier = .required },
17051 .{ .kind = .id_ref, .quantifier = .required },
17052 },
17053 },
17054 .{
17055 .name = "modf",
17056 .opcode = 45,
17057 .operands = &.{
17058 .{ .kind = .id_ref, .quantifier = .required },
17059 .{ .kind = .id_ref, .quantifier = .required },
17060 },
17061 },
17062 .{
17063 .name = "nan",
17064 .opcode = 46,
17065 .operands = &.{
17066 .{ .kind = .id_ref, .quantifier = .required },
17067 },
17068 },
17069 .{
17070 .name = "nextafter",
17071 .opcode = 47,
17072 .operands = &.{
17073 .{ .kind = .id_ref, .quantifier = .required },
17074 .{ .kind = .id_ref, .quantifier = .required },
17075 },
17076 },
17077 .{
17078 .name = "pow",
17079 .opcode = 48,
17080 .operands = &.{
17081 .{ .kind = .id_ref, .quantifier = .required },
17082 .{ .kind = .id_ref, .quantifier = .required },
17083 },
17084 },
17085 .{
17086 .name = "pown",
17087 .opcode = 49,
17088 .operands = &.{
17089 .{ .kind = .id_ref, .quantifier = .required },
17090 .{ .kind = .id_ref, .quantifier = .required },
1498717091 },
1498817092 },
1498917093 .{
14990 .name = "DebugMacroUndef",
14991 .opcode = 33,
14992 .operands = &[_]Operand{
14993 .{ .kind = .IdRef, .quantifier = .required },
14994 .{ .kind = .LiteralInteger, .quantifier = .required },
14995 .{ .kind = .IdRef, .quantifier = .required },
17094 .name = "powr",
17095 .opcode = 50,
17096 .operands = &.{
17097 .{ .kind = .id_ref, .quantifier = .required },
17098 .{ .kind = .id_ref, .quantifier = .required },
1499617099 },
1499717100 },
1499817101 .{
14999 .name = "DebugImportedEntity",
15000 .opcode = 34,
15001 .operands = &[_]Operand{
15002 .{ .kind = .IdRef, .quantifier = .required },
15003 .{ .kind = .@"OpenCL.DebugInfo.100.DebugImportedEntity", .quantifier = .required },
15004 .{ .kind = .IdRef, .quantifier = .required },
15005 .{ .kind = .IdRef, .quantifier = .required },
15006 .{ .kind = .LiteralInteger, .quantifier = .required },
15007 .{ .kind = .LiteralInteger, .quantifier = .required },
15008 .{ .kind = .IdRef, .quantifier = .required },
17102 .name = "remainder",
17103 .opcode = 51,
17104 .operands = &.{
17105 .{ .kind = .id_ref, .quantifier = .required },
17106 .{ .kind = .id_ref, .quantifier = .required },
1500917107 },
1501017108 },
1501117109 .{
15012 .name = "DebugSource",
15013 .opcode = 35,
15014 .operands = &[_]Operand{
15015 .{ .kind = .IdRef, .quantifier = .required },
15016 .{ .kind = .IdRef, .quantifier = .optional },
17110 .name = "remquo",
17111 .opcode = 52,
17112 .operands = &.{
17113 .{ .kind = .id_ref, .quantifier = .required },
17114 .{ .kind = .id_ref, .quantifier = .required },
17115 .{ .kind = .id_ref, .quantifier = .required },
1501717116 },
1501817117 },
1501917118 .{
15020 .name = "DebugModuleINTEL",
15021 .opcode = 36,
15022 .operands = &[_]Operand{
15023 .{ .kind = .IdRef, .quantifier = .required },
15024 .{ .kind = .IdRef, .quantifier = .required },
15025 .{ .kind = .IdRef, .quantifier = .required },
15026 .{ .kind = .LiteralInteger, .quantifier = .required },
15027 .{ .kind = .IdRef, .quantifier = .required },
15028 .{ .kind = .IdRef, .quantifier = .required },
15029 .{ .kind = .IdRef, .quantifier = .required },
15030 .{ .kind = .LiteralInteger, .quantifier = .required },
17119 .name = "rint",
17120 .opcode = 53,
17121 .operands = &.{
17122 .{ .kind = .id_ref, .quantifier = .required },
1503117123 },
1503217124 },
15033 },
15034 .SPV_AMD_shader_ballot => &[_]Instruction{
1503517125 .{
15036 .name = "SwizzleInvocationsAMD",
15037 .opcode = 1,
15038 .operands = &[_]Operand{
15039 .{ .kind = .IdRef, .quantifier = .required },
15040 .{ .kind = .IdRef, .quantifier = .required },
17126 .name = "rootn",
17127 .opcode = 54,
17128 .operands = &.{
17129 .{ .kind = .id_ref, .quantifier = .required },
17130 .{ .kind = .id_ref, .quantifier = .required },
1504117131 },
1504217132 },
1504317133 .{
15044 .name = "SwizzleInvocationsMaskedAMD",
15045 .opcode = 2,
15046 .operands = &[_]Operand{
15047 .{ .kind = .IdRef, .quantifier = .required },
15048 .{ .kind = .IdRef, .quantifier = .required },
17134 .name = "round",
17135 .opcode = 55,
17136 .operands = &.{
17137 .{ .kind = .id_ref, .quantifier = .required },
1504917138 },
1505017139 },
1505117140 .{
15052 .name = "WriteInvocationAMD",
15053 .opcode = 3,
15054 .operands = &[_]Operand{
15055 .{ .kind = .IdRef, .quantifier = .required },
15056 .{ .kind = .IdRef, .quantifier = .required },
15057 .{ .kind = .IdRef, .quantifier = .required },
17141 .name = "rsqrt",
17142 .opcode = 56,
17143 .operands = &.{
17144 .{ .kind = .id_ref, .quantifier = .required },
1505817145 },
1505917146 },
1506017147 .{
15061 .name = "MbcntAMD",
15062 .opcode = 4,
15063 .operands = &[_]Operand{
15064 .{ .kind = .IdRef, .quantifier = .required },
17148 .name = "sin",
17149 .opcode = 57,
17150 .operands = &.{
17151 .{ .kind = .id_ref, .quantifier = .required },
1506517152 },
1506617153 },
15067 },
15068 .@"NonSemantic.Shader.DebugInfo.100" => &[_]Instruction{
1506917154 .{
15070 .name = "DebugInfoNone",
15071 .opcode = 0,
15072 .operands = &[_]Operand{},
17155 .name = "sincos",
17156 .opcode = 58,
17157 .operands = &.{
17158 .{ .kind = .id_ref, .quantifier = .required },
17159 .{ .kind = .id_ref, .quantifier = .required },
17160 },
1507317161 },
1507417162 .{
15075 .name = "DebugCompilationUnit",
15076 .opcode = 1,
15077 .operands = &[_]Operand{
15078 .{ .kind = .IdRef, .quantifier = .required },
15079 .{ .kind = .IdRef, .quantifier = .required },
15080 .{ .kind = .IdRef, .quantifier = .required },
15081 .{ .kind = .IdRef, .quantifier = .required },
17163 .name = "sinh",
17164 .opcode = 59,
17165 .operands = &.{
17166 .{ .kind = .id_ref, .quantifier = .required },
1508217167 },
1508317168 },
1508417169 .{
15085 .name = "DebugTypeBasic",
15086 .opcode = 2,
15087 .operands = &[_]Operand{
15088 .{ .kind = .IdRef, .quantifier = .required },
15089 .{ .kind = .IdRef, .quantifier = .required },
15090 .{ .kind = .IdRef, .quantifier = .required },
15091 .{ .kind = .IdRef, .quantifier = .required },
17170 .name = "sinpi",
17171 .opcode = 60,
17172 .operands = &.{
17173 .{ .kind = .id_ref, .quantifier = .required },
1509217174 },
1509317175 },
1509417176 .{
15095 .name = "DebugTypePointer",
15096 .opcode = 3,
15097 .operands = &[_]Operand{
15098 .{ .kind = .IdRef, .quantifier = .required },
15099 .{ .kind = .IdRef, .quantifier = .required },
15100 .{ .kind = .IdRef, .quantifier = .required },
17177 .name = "sqrt",
17178 .opcode = 61,
17179 .operands = &.{
17180 .{ .kind = .id_ref, .quantifier = .required },
1510117181 },
1510217182 },
1510317183 .{
15104 .name = "DebugTypeQualifier",
15105 .opcode = 4,
15106 .operands = &[_]Operand{
15107 .{ .kind = .IdRef, .quantifier = .required },
15108 .{ .kind = .IdRef, .quantifier = .required },
17184 .name = "tan",
17185 .opcode = 62,
17186 .operands = &.{
17187 .{ .kind = .id_ref, .quantifier = .required },
1510917188 },
1511017189 },
1511117190 .{
15112 .name = "DebugTypeArray",
15113 .opcode = 5,
15114 .operands = &[_]Operand{
15115 .{ .kind = .IdRef, .quantifier = .required },
15116 .{ .kind = .IdRef, .quantifier = .variadic },
17191 .name = "tanh",
17192 .opcode = 63,
17193 .operands = &.{
17194 .{ .kind = .id_ref, .quantifier = .required },
1511717195 },
1511817196 },
1511917197 .{
15120 .name = "DebugTypeVector",
15121 .opcode = 6,
15122 .operands = &[_]Operand{
15123 .{ .kind = .IdRef, .quantifier = .required },
15124 .{ .kind = .IdRef, .quantifier = .required },
17198 .name = "tanpi",
17199 .opcode = 64,
17200 .operands = &.{
17201 .{ .kind = .id_ref, .quantifier = .required },
1512517202 },
1512617203 },
1512717204 .{
15128 .name = "DebugTypedef",
15129 .opcode = 7,
15130 .operands = &[_]Operand{
15131 .{ .kind = .IdRef, .quantifier = .required },
15132 .{ .kind = .IdRef, .quantifier = .required },
15133 .{ .kind = .IdRef, .quantifier = .required },
15134 .{ .kind = .IdRef, .quantifier = .required },
15135 .{ .kind = .IdRef, .quantifier = .required },
15136 .{ .kind = .IdRef, .quantifier = .required },
17205 .name = "tgamma",
17206 .opcode = 65,
17207 .operands = &.{
17208 .{ .kind = .id_ref, .quantifier = .required },
1513717209 },
1513817210 },
1513917211 .{
15140 .name = "DebugTypeFunction",
15141 .opcode = 8,
15142 .operands = &[_]Operand{
15143 .{ .kind = .IdRef, .quantifier = .required },
15144 .{ .kind = .IdRef, .quantifier = .required },
15145 .{ .kind = .IdRef, .quantifier = .variadic },
17212 .name = "trunc",
17213 .opcode = 66,
17214 .operands = &.{
17215 .{ .kind = .id_ref, .quantifier = .required },
1514617216 },
1514717217 },
1514817218 .{
15149 .name = "DebugTypeEnum",
15150 .opcode = 9,
15151 .operands = &[_]Operand{
15152 .{ .kind = .IdRef, .quantifier = .required },
15153 .{ .kind = .IdRef, .quantifier = .required },
15154 .{ .kind = .IdRef, .quantifier = .required },
15155 .{ .kind = .IdRef, .quantifier = .required },
15156 .{ .kind = .IdRef, .quantifier = .required },
15157 .{ .kind = .IdRef, .quantifier = .required },
15158 .{ .kind = .IdRef, .quantifier = .required },
15159 .{ .kind = .IdRef, .quantifier = .required },
15160 .{ .kind = .PairIdRefIdRef, .quantifier = .variadic },
17219 .name = "half_cos",
17220 .opcode = 67,
17221 .operands = &.{
17222 .{ .kind = .id_ref, .quantifier = .required },
1516117223 },
1516217224 },
1516317225 .{
15164 .name = "DebugTypeComposite",
15165 .opcode = 10,
15166 .operands = &[_]Operand{
15167 .{ .kind = .IdRef, .quantifier = .required },
15168 .{ .kind = .IdRef, .quantifier = .required },
15169 .{ .kind = .IdRef, .quantifier = .required },
15170 .{ .kind = .IdRef, .quantifier = .required },
15171 .{ .kind = .IdRef, .quantifier = .required },
15172 .{ .kind = .IdRef, .quantifier = .required },
15173 .{ .kind = .IdRef, .quantifier = .required },
15174 .{ .kind = .IdRef, .quantifier = .required },
15175 .{ .kind = .IdRef, .quantifier = .required },
15176 .{ .kind = .IdRef, .quantifier = .variadic },
17226 .name = "half_divide",
17227 .opcode = 68,
17228 .operands = &.{
17229 .{ .kind = .id_ref, .quantifier = .required },
17230 .{ .kind = .id_ref, .quantifier = .required },
1517717231 },
1517817232 },
1517917233 .{
15180 .name = "DebugTypeMember",
15181 .opcode = 11,
15182 .operands = &[_]Operand{
15183 .{ .kind = .IdRef, .quantifier = .required },
15184 .{ .kind = .IdRef, .quantifier = .required },
15185 .{ .kind = .IdRef, .quantifier = .required },
15186 .{ .kind = .IdRef, .quantifier = .required },
15187 .{ .kind = .IdRef, .quantifier = .required },
15188 .{ .kind = .IdRef, .quantifier = .required },
15189 .{ .kind = .IdRef, .quantifier = .required },
15190 .{ .kind = .IdRef, .quantifier = .required },
15191 .{ .kind = .IdRef, .quantifier = .optional },
17234 .name = "half_exp",
17235 .opcode = 69,
17236 .operands = &.{
17237 .{ .kind = .id_ref, .quantifier = .required },
1519217238 },
1519317239 },
1519417240 .{
15195 .name = "DebugTypeInheritance",
15196 .opcode = 12,
15197 .operands = &[_]Operand{
15198 .{ .kind = .IdRef, .quantifier = .required },
15199 .{ .kind = .IdRef, .quantifier = .required },
15200 .{ .kind = .IdRef, .quantifier = .required },
15201 .{ .kind = .IdRef, .quantifier = .required },
17241 .name = "half_exp2",
17242 .opcode = 70,
17243 .operands = &.{
17244 .{ .kind = .id_ref, .quantifier = .required },
1520217245 },
1520317246 },
1520417247 .{
15205 .name = "DebugTypePtrToMember",
15206 .opcode = 13,
15207 .operands = &[_]Operand{
15208 .{ .kind = .IdRef, .quantifier = .required },
15209 .{ .kind = .IdRef, .quantifier = .required },
17248 .name = "half_exp10",
17249 .opcode = 71,
17250 .operands = &.{
17251 .{ .kind = .id_ref, .quantifier = .required },
1521017252 },
1521117253 },
1521217254 .{
15213 .name = "DebugTypeTemplate",
15214 .opcode = 14,
15215 .operands = &[_]Operand{
15216 .{ .kind = .IdRef, .quantifier = .required },
15217 .{ .kind = .IdRef, .quantifier = .variadic },
17255 .name = "half_log",
17256 .opcode = 72,
17257 .operands = &.{
17258 .{ .kind = .id_ref, .quantifier = .required },
1521817259 },
1521917260 },
1522017261 .{
15221 .name = "DebugTypeTemplateParameter",
15222 .opcode = 15,
15223 .operands = &[_]Operand{
15224 .{ .kind = .IdRef, .quantifier = .required },
15225 .{ .kind = .IdRef, .quantifier = .required },
15226 .{ .kind = .IdRef, .quantifier = .required },
15227 .{ .kind = .IdRef, .quantifier = .required },
15228 .{ .kind = .IdRef, .quantifier = .required },
15229 .{ .kind = .IdRef, .quantifier = .required },
17262 .name = "half_log2",
17263 .opcode = 73,
17264 .operands = &.{
17265 .{ .kind = .id_ref, .quantifier = .required },
1523017266 },
1523117267 },
1523217268 .{
15233 .name = "DebugTypeTemplateTemplateParameter",
15234 .opcode = 16,
15235 .operands = &[_]Operand{
15236 .{ .kind = .IdRef, .quantifier = .required },
15237 .{ .kind = .IdRef, .quantifier = .required },
15238 .{ .kind = .IdRef, .quantifier = .required },
15239 .{ .kind = .IdRef, .quantifier = .required },
15240 .{ .kind = .IdRef, .quantifier = .required },
17269 .name = "half_log10",
17270 .opcode = 74,
17271 .operands = &.{
17272 .{ .kind = .id_ref, .quantifier = .required },
1524117273 },
1524217274 },
1524317275 .{
15244 .name = "DebugTypeTemplateParameterPack",
15245 .opcode = 17,
15246 .operands = &[_]Operand{
15247 .{ .kind = .IdRef, .quantifier = .required },
15248 .{ .kind = .IdRef, .quantifier = .required },
15249 .{ .kind = .IdRef, .quantifier = .required },
15250 .{ .kind = .IdRef, .quantifier = .required },
15251 .{ .kind = .IdRef, .quantifier = .variadic },
17276 .name = "half_powr",
17277 .opcode = 75,
17278 .operands = &.{
17279 .{ .kind = .id_ref, .quantifier = .required },
17280 .{ .kind = .id_ref, .quantifier = .required },
1525217281 },
1525317282 },
1525417283 .{
15255 .name = "DebugGlobalVariable",
15256 .opcode = 18,
15257 .operands = &[_]Operand{
15258 .{ .kind = .IdRef, .quantifier = .required },
15259 .{ .kind = .IdRef, .quantifier = .required },
15260 .{ .kind = .IdRef, .quantifier = .required },
15261 .{ .kind = .IdRef, .quantifier = .required },
15262 .{ .kind = .IdRef, .quantifier = .required },
15263 .{ .kind = .IdRef, .quantifier = .required },
15264 .{ .kind = .IdRef, .quantifier = .required },
15265 .{ .kind = .IdRef, .quantifier = .required },
15266 .{ .kind = .IdRef, .quantifier = .required },
15267 .{ .kind = .IdRef, .quantifier = .optional },
17284 .name = "half_recip",
17285 .opcode = 76,
17286 .operands = &.{
17287 .{ .kind = .id_ref, .quantifier = .required },
1526817288 },
1526917289 },
1527017290 .{
15271 .name = "DebugFunctionDeclaration",
15272 .opcode = 19,
15273 .operands = &[_]Operand{
15274 .{ .kind = .IdRef, .quantifier = .required },
15275 .{ .kind = .IdRef, .quantifier = .required },
15276 .{ .kind = .IdRef, .quantifier = .required },
15277 .{ .kind = .IdRef, .quantifier = .required },
15278 .{ .kind = .IdRef, .quantifier = .required },
15279 .{ .kind = .IdRef, .quantifier = .required },
15280 .{ .kind = .IdRef, .quantifier = .required },
15281 .{ .kind = .IdRef, .quantifier = .required },
17291 .name = "half_rsqrt",
17292 .opcode = 77,
17293 .operands = &.{
17294 .{ .kind = .id_ref, .quantifier = .required },
1528217295 },
1528317296 },
1528417297 .{
15285 .name = "DebugFunction",
15286 .opcode = 20,
15287 .operands = &[_]Operand{
15288 .{ .kind = .IdRef, .quantifier = .required },
15289 .{ .kind = .IdRef, .quantifier = .required },
15290 .{ .kind = .IdRef, .quantifier = .required },
15291 .{ .kind = .IdRef, .quantifier = .required },
15292 .{ .kind = .IdRef, .quantifier = .required },
15293 .{ .kind = .IdRef, .quantifier = .required },
15294 .{ .kind = .IdRef, .quantifier = .required },
15295 .{ .kind = .IdRef, .quantifier = .required },
15296 .{ .kind = .IdRef, .quantifier = .required },
15297 .{ .kind = .IdRef, .quantifier = .optional },
17298 .name = "half_sin",
17299 .opcode = 78,
17300 .operands = &.{
17301 .{ .kind = .id_ref, .quantifier = .required },
1529817302 },
1529917303 },
1530017304 .{
15301 .name = "DebugLexicalBlock",
15302 .opcode = 21,
15303 .operands = &[_]Operand{
15304 .{ .kind = .IdRef, .quantifier = .required },
15305 .{ .kind = .IdRef, .quantifier = .required },
15306 .{ .kind = .IdRef, .quantifier = .required },
15307 .{ .kind = .IdRef, .quantifier = .required },
15308 .{ .kind = .IdRef, .quantifier = .optional },
17305 .name = "half_sqrt",
17306 .opcode = 79,
17307 .operands = &.{
17308 .{ .kind = .id_ref, .quantifier = .required },
1530917309 },
1531017310 },
1531117311 .{
15312 .name = "DebugLexicalBlockDiscriminator",
15313 .opcode = 22,
15314 .operands = &[_]Operand{
15315 .{ .kind = .IdRef, .quantifier = .required },
15316 .{ .kind = .IdRef, .quantifier = .required },
15317 .{ .kind = .IdRef, .quantifier = .required },
17312 .name = "half_tan",
17313 .opcode = 80,
17314 .operands = &.{
17315 .{ .kind = .id_ref, .quantifier = .required },
1531817316 },
1531917317 },
1532017318 .{
15321 .name = "DebugScope",
15322 .opcode = 23,
15323 .operands = &[_]Operand{
15324 .{ .kind = .IdRef, .quantifier = .required },
15325 .{ .kind = .IdRef, .quantifier = .optional },
17319 .name = "native_cos",
17320 .opcode = 81,
17321 .operands = &.{
17322 .{ .kind = .id_ref, .quantifier = .required },
1532617323 },
1532717324 },
1532817325 .{
15329 .name = "DebugNoScope",
15330 .opcode = 24,
15331 .operands = &[_]Operand{},
17326 .name = "native_divide",
17327 .opcode = 82,
17328 .operands = &.{
17329 .{ .kind = .id_ref, .quantifier = .required },
17330 .{ .kind = .id_ref, .quantifier = .required },
17331 },
1533217332 },
1533317333 .{
15334 .name = "DebugInlinedAt",
15335 .opcode = 25,
15336 .operands = &[_]Operand{
15337 .{ .kind = .IdRef, .quantifier = .required },
15338 .{ .kind = .IdRef, .quantifier = .required },
15339 .{ .kind = .IdRef, .quantifier = .optional },
17334 .name = "native_exp",
17335 .opcode = 83,
17336 .operands = &.{
17337 .{ .kind = .id_ref, .quantifier = .required },
1534017338 },
1534117339 },
1534217340 .{
15343 .name = "DebugLocalVariable",
15344 .opcode = 26,
15345 .operands = &[_]Operand{
15346 .{ .kind = .IdRef, .quantifier = .required },
15347 .{ .kind = .IdRef, .quantifier = .required },
15348 .{ .kind = .IdRef, .quantifier = .required },
15349 .{ .kind = .IdRef, .quantifier = .required },
15350 .{ .kind = .IdRef, .quantifier = .required },
15351 .{ .kind = .IdRef, .quantifier = .required },
15352 .{ .kind = .IdRef, .quantifier = .required },
15353 .{ .kind = .IdRef, .quantifier = .optional },
17341 .name = "native_exp2",
17342 .opcode = 84,
17343 .operands = &.{
17344 .{ .kind = .id_ref, .quantifier = .required },
1535417345 },
1535517346 },
1535617347 .{
15357 .name = "DebugInlinedVariable",
15358 .opcode = 27,
15359 .operands = &[_]Operand{
15360 .{ .kind = .IdRef, .quantifier = .required },
15361 .{ .kind = .IdRef, .quantifier = .required },
17348 .name = "native_exp10",
17349 .opcode = 85,
17350 .operands = &.{
17351 .{ .kind = .id_ref, .quantifier = .required },
1536217352 },
1536317353 },
1536417354 .{
15365 .name = "DebugDeclare",
15366 .opcode = 28,
15367 .operands = &[_]Operand{
15368 .{ .kind = .IdRef, .quantifier = .required },
15369 .{ .kind = .IdRef, .quantifier = .required },
15370 .{ .kind = .IdRef, .quantifier = .required },
15371 .{ .kind = .IdRef, .quantifier = .variadic },
17355 .name = "native_log",
17356 .opcode = 86,
17357 .operands = &.{
17358 .{ .kind = .id_ref, .quantifier = .required },
1537217359 },
1537317360 },
1537417361 .{
15375 .name = "DebugValue",
15376 .opcode = 29,
15377 .operands = &[_]Operand{
15378 .{ .kind = .IdRef, .quantifier = .required },
15379 .{ .kind = .IdRef, .quantifier = .required },
15380 .{ .kind = .IdRef, .quantifier = .required },
15381 .{ .kind = .IdRef, .quantifier = .variadic },
17362 .name = "native_log2",
17363 .opcode = 87,
17364 .operands = &.{
17365 .{ .kind = .id_ref, .quantifier = .required },
1538217366 },
1538317367 },
1538417368 .{
15385 .name = "DebugOperation",
15386 .opcode = 30,
15387 .operands = &[_]Operand{
15388 .{ .kind = .IdRef, .quantifier = .required },
15389 .{ .kind = .IdRef, .quantifier = .variadic },
17369 .name = "native_log10",
17370 .opcode = 88,
17371 .operands = &.{
17372 .{ .kind = .id_ref, .quantifier = .required },
1539017373 },
1539117374 },
1539217375 .{
15393 .name = "DebugExpression",
15394 .opcode = 31,
15395 .operands = &[_]Operand{
15396 .{ .kind = .IdRef, .quantifier = .variadic },
17376 .name = "native_powr",
17377 .opcode = 89,
17378 .operands = &.{
17379 .{ .kind = .id_ref, .quantifier = .required },
17380 .{ .kind = .id_ref, .quantifier = .required },
1539717381 },
1539817382 },
1539917383 .{
15400 .name = "DebugMacroDef",
15401 .opcode = 32,
15402 .operands = &[_]Operand{
15403 .{ .kind = .IdRef, .quantifier = .required },
15404 .{ .kind = .IdRef, .quantifier = .required },
15405 .{ .kind = .IdRef, .quantifier = .required },
15406 .{ .kind = .IdRef, .quantifier = .optional },
17384 .name = "native_recip",
17385 .opcode = 90,
17386 .operands = &.{
17387 .{ .kind = .id_ref, .quantifier = .required },
1540717388 },
1540817389 },
1540917390 .{
15410 .name = "DebugMacroUndef",
15411 .opcode = 33,
15412 .operands = &[_]Operand{
15413 .{ .kind = .IdRef, .quantifier = .required },
15414 .{ .kind = .IdRef, .quantifier = .required },
15415 .{ .kind = .IdRef, .quantifier = .required },
17391 .name = "native_rsqrt",
17392 .opcode = 91,
17393 .operands = &.{
17394 .{ .kind = .id_ref, .quantifier = .required },
1541617395 },
1541717396 },
1541817397 .{
15419 .name = "DebugImportedEntity",
15420 .opcode = 34,
15421 .operands = &[_]Operand{
15422 .{ .kind = .IdRef, .quantifier = .required },
15423 .{ .kind = .IdRef, .quantifier = .required },
15424 .{ .kind = .IdRef, .quantifier = .required },
15425 .{ .kind = .IdRef, .quantifier = .required },
15426 .{ .kind = .IdRef, .quantifier = .required },
15427 .{ .kind = .IdRef, .quantifier = .required },
15428 .{ .kind = .IdRef, .quantifier = .required },
17398 .name = "native_sin",
17399 .opcode = 92,
17400 .operands = &.{
17401 .{ .kind = .id_ref, .quantifier = .required },
1542917402 },
1543017403 },
1543117404 .{
15432 .name = "DebugSource",
15433 .opcode = 35,
15434 .operands = &[_]Operand{
15435 .{ .kind = .IdRef, .quantifier = .required },
15436 .{ .kind = .IdRef, .quantifier = .optional },
17405 .name = "native_sqrt",
17406 .opcode = 93,
17407 .operands = &.{
17408 .{ .kind = .id_ref, .quantifier = .required },
1543717409 },
1543817410 },
1543917411 .{
15440 .name = "DebugFunctionDefinition",
15441 .opcode = 101,
15442 .operands = &[_]Operand{
15443 .{ .kind = .IdRef, .quantifier = .required },
15444 .{ .kind = .IdRef, .quantifier = .required },
17412 .name = "native_tan",
17413 .opcode = 94,
17414 .operands = &.{
17415 .{ .kind = .id_ref, .quantifier = .required },
1544517416 },
1544617417 },
1544717418 .{
15448 .name = "DebugSourceContinued",
15449 .opcode = 102,
15450 .operands = &[_]Operand{
15451 .{ .kind = .IdRef, .quantifier = .required },
17419 .name = "fclamp",
17420 .opcode = 95,
17421 .operands = &.{
17422 .{ .kind = .id_ref, .quantifier = .required },
17423 .{ .kind = .id_ref, .quantifier = .required },
17424 .{ .kind = .id_ref, .quantifier = .required },
1545217425 },
1545317426 },
1545417427 .{
15455 .name = "DebugLine",
15456 .opcode = 103,
15457 .operands = &[_]Operand{
15458 .{ .kind = .IdRef, .quantifier = .required },
15459 .{ .kind = .IdRef, .quantifier = .required },
15460 .{ .kind = .IdRef, .quantifier = .required },
15461 .{ .kind = .IdRef, .quantifier = .required },
15462 .{ .kind = .IdRef, .quantifier = .required },
17428 .name = "degrees",
17429 .opcode = 96,
17430 .operands = &.{
17431 .{ .kind = .id_ref, .quantifier = .required },
1546317432 },
1546417433 },
1546517434 .{
15466 .name = "DebugNoLine",
15467 .opcode = 104,
15468 .operands = &[_]Operand{},
17435 .name = "fmax_common",
17436 .opcode = 97,
17437 .operands = &.{
17438 .{ .kind = .id_ref, .quantifier = .required },
17439 .{ .kind = .id_ref, .quantifier = .required },
17440 },
1546917441 },
1547017442 .{
15471 .name = "DebugBuildIdentifier",
15472 .opcode = 105,
15473 .operands = &[_]Operand{
15474 .{ .kind = .IdRef, .quantifier = .required },
15475 .{ .kind = .IdRef, .quantifier = .required },
17443 .name = "fmin_common",
17444 .opcode = 98,
17445 .operands = &.{
17446 .{ .kind = .id_ref, .quantifier = .required },
17447 .{ .kind = .id_ref, .quantifier = .required },
1547617448 },
1547717449 },
1547817450 .{
15479 .name = "DebugStoragePath",
15480 .opcode = 106,
15481 .operands = &[_]Operand{
15482 .{ .kind = .IdRef, .quantifier = .required },
17451 .name = "mix",
17452 .opcode = 99,
17453 .operands = &.{
17454 .{ .kind = .id_ref, .quantifier = .required },
17455 .{ .kind = .id_ref, .quantifier = .required },
17456 .{ .kind = .id_ref, .quantifier = .required },
1548317457 },
1548417458 },
1548517459 .{
15486 .name = "DebugEntryPoint",
15487 .opcode = 107,
15488 .operands = &[_]Operand{
15489 .{ .kind = .IdRef, .quantifier = .required },
15490 .{ .kind = .IdRef, .quantifier = .required },
15491 .{ .kind = .IdRef, .quantifier = .required },
15492 .{ .kind = .IdRef, .quantifier = .required },
17460 .name = "radians",
17461 .opcode = 100,
17462 .operands = &.{
17463 .{ .kind = .id_ref, .quantifier = .required },
1549317464 },
1549417465 },
1549517466 .{
15496 .name = "DebugTypeMatrix",
15497 .opcode = 108,
15498 .operands = &[_]Operand{
15499 .{ .kind = .IdRef, .quantifier = .required },
15500 .{ .kind = .IdRef, .quantifier = .required },
15501 .{ .kind = .IdRef, .quantifier = .required },
17467 .name = "step",
17468 .opcode = 101,
17469 .operands = &.{
17470 .{ .kind = .id_ref, .quantifier = .required },
17471 .{ .kind = .id_ref, .quantifier = .required },
1550217472 },
1550317473 },
15504 },
15505 .@"NonSemantic.VkspReflection" => &[_]Instruction{
1550617474 .{
15507 .name = "Configuration",
15508 .opcode = 1,
15509 .operands = &[_]Operand{
15510 .{ .kind = .LiteralString, .quantifier = .required },
15511 .{ .kind = .LiteralInteger, .quantifier = .required },
15512 .{ .kind = .LiteralString, .quantifier = .required },
15513 .{ .kind = .LiteralString, .quantifier = .required },
15514 .{ .kind = .LiteralString, .quantifier = .required },
15515 .{ .kind = .LiteralInteger, .quantifier = .required },
15516 .{ .kind = .LiteralInteger, .quantifier = .required },
15517 .{ .kind = .LiteralInteger, .quantifier = .required },
17475 .name = "smoothstep",
17476 .opcode = 102,
17477 .operands = &.{
17478 .{ .kind = .id_ref, .quantifier = .required },
17479 .{ .kind = .id_ref, .quantifier = .required },
17480 .{ .kind = .id_ref, .quantifier = .required },
1551817481 },
1551917482 },
1552017483 .{
15521 .name = "StartCounter",
15522 .opcode = 2,
15523 .operands = &[_]Operand{
15524 .{ .kind = .LiteralString, .quantifier = .required },
17484 .name = "sign",
17485 .opcode = 103,
17486 .operands = &.{
17487 .{ .kind = .id_ref, .quantifier = .required },
1552517488 },
1552617489 },
1552717490 .{
15528 .name = "StopCounter",
15529 .opcode = 3,
15530 .operands = &[_]Operand{
15531 .{ .kind = .IdRef, .quantifier = .required },
17491 .name = "cross",
17492 .opcode = 104,
17493 .operands = &.{
17494 .{ .kind = .id_ref, .quantifier = .required },
17495 .{ .kind = .id_ref, .quantifier = .required },
1553217496 },
1553317497 },
1553417498 .{
15535 .name = "PushConstants",
15536 .opcode = 4,
15537 .operands = &[_]Operand{
15538 .{ .kind = .LiteralInteger, .quantifier = .required },
15539 .{ .kind = .LiteralInteger, .quantifier = .required },
15540 .{ .kind = .LiteralString, .quantifier = .required },
15541 .{ .kind = .LiteralInteger, .quantifier = .required },
17499 .name = "distance",
17500 .opcode = 105,
17501 .operands = &.{
17502 .{ .kind = .id_ref, .quantifier = .required },
17503 .{ .kind = .id_ref, .quantifier = .required },
1554217504 },
1554317505 },
1554417506 .{
15545 .name = "SpecializationMapEntry",
15546 .opcode = 5,
15547 .operands = &[_]Operand{
15548 .{ .kind = .LiteralInteger, .quantifier = .required },
15549 .{ .kind = .LiteralInteger, .quantifier = .required },
15550 .{ .kind = .LiteralInteger, .quantifier = .required },
17507 .name = "length",
17508 .opcode = 106,
17509 .operands = &.{
17510 .{ .kind = .id_ref, .quantifier = .required },
1555117511 },
1555217512 },
1555317513 .{
15554 .name = "DescriptorSetBuffer",
15555 .opcode = 6,
15556 .operands = &[_]Operand{
15557 .{ .kind = .LiteralInteger, .quantifier = .required },
15558 .{ .kind = .LiteralInteger, .quantifier = .required },
15559 .{ .kind = .LiteralInteger, .quantifier = .required },
15560 .{ .kind = .LiteralInteger, .quantifier = .required },
15561 .{ .kind = .LiteralInteger, .quantifier = .required },
15562 .{ .kind = .LiteralInteger, .quantifier = .required },
15563 .{ .kind = .LiteralInteger, .quantifier = .required },
15564 .{ .kind = .LiteralInteger, .quantifier = .required },
15565 .{ .kind = .LiteralInteger, .quantifier = .required },
15566 .{ .kind = .LiteralInteger, .quantifier = .required },
15567 .{ .kind = .LiteralInteger, .quantifier = .required },
15568 .{ .kind = .LiteralInteger, .quantifier = .required },
15569 .{ .kind = .LiteralInteger, .quantifier = .required },
17514 .name = "normalize",
17515 .opcode = 107,
17516 .operands = &.{
17517 .{ .kind = .id_ref, .quantifier = .required },
1557017518 },
1557117519 },
1557217520 .{
15573 .name = "DescriptorSetImage",
15574 .opcode = 7,
15575 .operands = &[_]Operand{
15576 .{ .kind = .LiteralInteger, .quantifier = .required },
15577 .{ .kind = .LiteralInteger, .quantifier = .required },
15578 .{ .kind = .LiteralInteger, .quantifier = .required },
15579 .{ .kind = .LiteralInteger, .quantifier = .required },
15580 .{ .kind = .LiteralInteger, .quantifier = .required },
15581 .{ .kind = .LiteralInteger, .quantifier = .required },
15582 .{ .kind = .LiteralInteger, .quantifier = .required },
15583 .{ .kind = .LiteralInteger, .quantifier = .required },
15584 .{ .kind = .LiteralInteger, .quantifier = .required },
15585 .{ .kind = .LiteralInteger, .quantifier = .required },
15586 .{ .kind = .LiteralInteger, .quantifier = .required },
15587 .{ .kind = .LiteralInteger, .quantifier = .required },
15588 .{ .kind = .LiteralInteger, .quantifier = .required },
15589 .{ .kind = .LiteralInteger, .quantifier = .required },
15590 .{ .kind = .LiteralInteger, .quantifier = .required },
15591 .{ .kind = .LiteralInteger, .quantifier = .required },
15592 .{ .kind = .LiteralInteger, .quantifier = .required },
15593 .{ .kind = .LiteralInteger, .quantifier = .required },
15594 .{ .kind = .LiteralInteger, .quantifier = .required },
15595 .{ .kind = .LiteralInteger, .quantifier = .required },
15596 .{ .kind = .LiteralInteger, .quantifier = .required },
15597 .{ .kind = .LiteralInteger, .quantifier = .required },
15598 .{ .kind = .LiteralInteger, .quantifier = .required },
15599 .{ .kind = .LiteralInteger, .quantifier = .required },
15600 .{ .kind = .LiteralInteger, .quantifier = .required },
15601 .{ .kind = .LiteralInteger, .quantifier = .required },
15602 .{ .kind = .LiteralInteger, .quantifier = .required },
15603 .{ .kind = .LiteralInteger, .quantifier = .required },
15604 .{ .kind = .LiteralInteger, .quantifier = .required },
15605 .{ .kind = .LiteralInteger, .quantifier = .required },
15606 .{ .kind = .LiteralInteger, .quantifier = .required },
15607 .{ .kind = .LiteralInteger, .quantifier = .required },
15608 .{ .kind = .LiteralInteger, .quantifier = .required },
17521 .name = "fast_distance",
17522 .opcode = 108,
17523 .operands = &.{
17524 .{ .kind = .id_ref, .quantifier = .required },
17525 .{ .kind = .id_ref, .quantifier = .required },
1560917526 },
1561017527 },
1561117528 .{
15612 .name = "DescriptorSetSampler",
15613 .opcode = 8,
15614 .operands = &[_]Operand{
15615 .{ .kind = .LiteralInteger, .quantifier = .required },
15616 .{ .kind = .LiteralInteger, .quantifier = .required },
15617 .{ .kind = .LiteralInteger, .quantifier = .required },
15618 .{ .kind = .LiteralInteger, .quantifier = .required },
15619 .{ .kind = .LiteralInteger, .quantifier = .required },
15620 .{ .kind = .LiteralInteger, .quantifier = .required },
15621 .{ .kind = .LiteralInteger, .quantifier = .required },
15622 .{ .kind = .LiteralInteger, .quantifier = .required },
15623 .{ .kind = .LiteralInteger, .quantifier = .required },
15624 .{ .kind = .LiteralInteger, .quantifier = .required },
15625 .{ .kind = .LiteralFloat, .quantifier = .required },
15626 .{ .kind = .LiteralInteger, .quantifier = .required },
15627 .{ .kind = .LiteralFloat, .quantifier = .required },
15628 .{ .kind = .LiteralInteger, .quantifier = .required },
15629 .{ .kind = .LiteralInteger, .quantifier = .required },
15630 .{ .kind = .LiteralFloat, .quantifier = .required },
15631 .{ .kind = .LiteralFloat, .quantifier = .required },
15632 .{ .kind = .LiteralInteger, .quantifier = .required },
15633 .{ .kind = .LiteralInteger, .quantifier = .required },
17529 .name = "fast_length",
17530 .opcode = 109,
17531 .operands = &.{
17532 .{ .kind = .id_ref, .quantifier = .required },
1563417533 },
1563517534 },
15636 },
15637 .@"NonSemantic.ClspvReflection.6" => &[_]Instruction{
1563817535 .{
15639 .name = "Kernel",
15640 .opcode = 1,
15641 .operands = &[_]Operand{
15642 .{ .kind = .IdRef, .quantifier = .required },
15643 .{ .kind = .IdRef, .quantifier = .required },
15644 .{ .kind = .IdRef, .quantifier = .optional },
15645 .{ .kind = .IdRef, .quantifier = .optional },
15646 .{ .kind = .IdRef, .quantifier = .optional },
17536 .name = "fast_normalize",
17537 .opcode = 110,
17538 .operands = &.{
17539 .{ .kind = .id_ref, .quantifier = .required },
1564717540 },
1564817541 },
1564917542 .{
15650 .name = "ArgumentInfo",
15651 .opcode = 2,
15652 .operands = &[_]Operand{
15653 .{ .kind = .IdRef, .quantifier = .required },
15654 .{ .kind = .IdRef, .quantifier = .optional },
15655 .{ .kind = .IdRef, .quantifier = .optional },
15656 .{ .kind = .IdRef, .quantifier = .optional },
15657 .{ .kind = .IdRef, .quantifier = .optional },
17543 .name = "s_abs",
17544 .opcode = 141,
17545 .operands = &.{
17546 .{ .kind = .id_ref, .quantifier = .required },
1565817547 },
1565917548 },
1566017549 .{
15661 .name = "ArgumentStorageBuffer",
15662 .opcode = 3,
15663 .operands = &[_]Operand{
15664 .{ .kind = .IdRef, .quantifier = .required },
15665 .{ .kind = .IdRef, .quantifier = .required },
15666 .{ .kind = .IdRef, .quantifier = .required },
15667 .{ .kind = .IdRef, .quantifier = .required },
15668 .{ .kind = .IdRef, .quantifier = .optional },
17550 .name = "s_abs_diff",
17551 .opcode = 142,
17552 .operands = &.{
17553 .{ .kind = .id_ref, .quantifier = .required },
17554 .{ .kind = .id_ref, .quantifier = .required },
1566917555 },
1567017556 },
1567117557 .{
15672 .name = "ArgumentUniform",
15673 .opcode = 4,
15674 .operands = &[_]Operand{
15675 .{ .kind = .IdRef, .quantifier = .required },
15676 .{ .kind = .IdRef, .quantifier = .required },
15677 .{ .kind = .IdRef, .quantifier = .required },
15678 .{ .kind = .IdRef, .quantifier = .required },
15679 .{ .kind = .IdRef, .quantifier = .optional },
17558 .name = "s_add_sat",
17559 .opcode = 143,
17560 .operands = &.{
17561 .{ .kind = .id_ref, .quantifier = .required },
17562 .{ .kind = .id_ref, .quantifier = .required },
1568017563 },
1568117564 },
1568217565 .{
15683 .name = "ArgumentPodStorageBuffer",
15684 .opcode = 5,
15685 .operands = &[_]Operand{
15686 .{ .kind = .IdRef, .quantifier = .required },
15687 .{ .kind = .IdRef, .quantifier = .required },
15688 .{ .kind = .IdRef, .quantifier = .required },
15689 .{ .kind = .IdRef, .quantifier = .required },
15690 .{ .kind = .IdRef, .quantifier = .required },
15691 .{ .kind = .IdRef, .quantifier = .required },
15692 .{ .kind = .IdRef, .quantifier = .optional },
17566 .name = "u_add_sat",
17567 .opcode = 144,
17568 .operands = &.{
17569 .{ .kind = .id_ref, .quantifier = .required },
17570 .{ .kind = .id_ref, .quantifier = .required },
1569317571 },
1569417572 },
1569517573 .{
15696 .name = "ArgumentPodUniform",
15697 .opcode = 6,
15698 .operands = &[_]Operand{
15699 .{ .kind = .IdRef, .quantifier = .required },
15700 .{ .kind = .IdRef, .quantifier = .required },
15701 .{ .kind = .IdRef, .quantifier = .required },
15702 .{ .kind = .IdRef, .quantifier = .required },
15703 .{ .kind = .IdRef, .quantifier = .required },
15704 .{ .kind = .IdRef, .quantifier = .required },
15705 .{ .kind = .IdRef, .quantifier = .optional },
17574 .name = "s_hadd",
17575 .opcode = 145,
17576 .operands = &.{
17577 .{ .kind = .id_ref, .quantifier = .required },
17578 .{ .kind = .id_ref, .quantifier = .required },
1570617579 },
1570717580 },
1570817581 .{
15709 .name = "ArgumentPodPushConstant",
15710 .opcode = 7,
15711 .operands = &[_]Operand{
15712 .{ .kind = .IdRef, .quantifier = .required },
15713 .{ .kind = .IdRef, .quantifier = .required },
15714 .{ .kind = .IdRef, .quantifier = .required },
15715 .{ .kind = .IdRef, .quantifier = .required },
15716 .{ .kind = .IdRef, .quantifier = .optional },
17582 .name = "u_hadd",
17583 .opcode = 146,
17584 .operands = &.{
17585 .{ .kind = .id_ref, .quantifier = .required },
17586 .{ .kind = .id_ref, .quantifier = .required },
1571717587 },
1571817588 },
1571917589 .{
15720 .name = "ArgumentSampledImage",
15721 .opcode = 8,
15722 .operands = &[_]Operand{
15723 .{ .kind = .IdRef, .quantifier = .required },
15724 .{ .kind = .IdRef, .quantifier = .required },
15725 .{ .kind = .IdRef, .quantifier = .required },
15726 .{ .kind = .IdRef, .quantifier = .required },
15727 .{ .kind = .IdRef, .quantifier = .optional },
17590 .name = "s_rhadd",
17591 .opcode = 147,
17592 .operands = &.{
17593 .{ .kind = .id_ref, .quantifier = .required },
17594 .{ .kind = .id_ref, .quantifier = .required },
1572817595 },
1572917596 },
1573017597 .{
15731 .name = "ArgumentStorageImage",
15732 .opcode = 9,
15733 .operands = &[_]Operand{
15734 .{ .kind = .IdRef, .quantifier = .required },
15735 .{ .kind = .IdRef, .quantifier = .required },
15736 .{ .kind = .IdRef, .quantifier = .required },
15737 .{ .kind = .IdRef, .quantifier = .required },
15738 .{ .kind = .IdRef, .quantifier = .optional },
17598 .name = "u_rhadd",
17599 .opcode = 148,
17600 .operands = &.{
17601 .{ .kind = .id_ref, .quantifier = .required },
17602 .{ .kind = .id_ref, .quantifier = .required },
1573917603 },
1574017604 },
1574117605 .{
15742 .name = "ArgumentSampler",
15743 .opcode = 10,
15744 .operands = &[_]Operand{
15745 .{ .kind = .IdRef, .quantifier = .required },
15746 .{ .kind = .IdRef, .quantifier = .required },
15747 .{ .kind = .IdRef, .quantifier = .required },
15748 .{ .kind = .IdRef, .quantifier = .required },
15749 .{ .kind = .IdRef, .quantifier = .optional },
17606 .name = "s_clamp",
17607 .opcode = 149,
17608 .operands = &.{
17609 .{ .kind = .id_ref, .quantifier = .required },
17610 .{ .kind = .id_ref, .quantifier = .required },
17611 .{ .kind = .id_ref, .quantifier = .required },
1575017612 },
1575117613 },
1575217614 .{
15753 .name = "ArgumentWorkgroup",
15754 .opcode = 11,
15755 .operands = &[_]Operand{
15756 .{ .kind = .IdRef, .quantifier = .required },
15757 .{ .kind = .IdRef, .quantifier = .required },
15758 .{ .kind = .IdRef, .quantifier = .required },
15759 .{ .kind = .IdRef, .quantifier = .required },
15760 .{ .kind = .IdRef, .quantifier = .optional },
17615 .name = "u_clamp",
17616 .opcode = 150,
17617 .operands = &.{
17618 .{ .kind = .id_ref, .quantifier = .required },
17619 .{ .kind = .id_ref, .quantifier = .required },
17620 .{ .kind = .id_ref, .quantifier = .required },
1576117621 },
1576217622 },
1576317623 .{
15764 .name = "SpecConstantWorkgroupSize",
15765 .opcode = 12,
15766 .operands = &[_]Operand{
15767 .{ .kind = .IdRef, .quantifier = .required },
15768 .{ .kind = .IdRef, .quantifier = .required },
15769 .{ .kind = .IdRef, .quantifier = .required },
17624 .name = "clz",
17625 .opcode = 151,
17626 .operands = &.{
17627 .{ .kind = .id_ref, .quantifier = .required },
1577017628 },
1577117629 },
1577217630 .{
15773 .name = "SpecConstantGlobalOffset",
15774 .opcode = 13,
15775 .operands = &[_]Operand{
15776 .{ .kind = .IdRef, .quantifier = .required },
15777 .{ .kind = .IdRef, .quantifier = .required },
15778 .{ .kind = .IdRef, .quantifier = .required },
17631 .name = "ctz",
17632 .opcode = 152,
17633 .operands = &.{
17634 .{ .kind = .id_ref, .quantifier = .required },
1577917635 },
1578017636 },
1578117637 .{
15782 .name = "SpecConstantWorkDim",
15783 .opcode = 14,
15784 .operands = &[_]Operand{
15785 .{ .kind = .IdRef, .quantifier = .required },
17638 .name = "s_mad_hi",
17639 .opcode = 153,
17640 .operands = &.{
17641 .{ .kind = .id_ref, .quantifier = .required },
17642 .{ .kind = .id_ref, .quantifier = .required },
17643 .{ .kind = .id_ref, .quantifier = .required },
1578617644 },
1578717645 },
1578817646 .{
15789 .name = "PushConstantGlobalOffset",
15790 .opcode = 15,
15791 .operands = &[_]Operand{
15792 .{ .kind = .IdRef, .quantifier = .required },
15793 .{ .kind = .IdRef, .quantifier = .required },
17647 .name = "u_mad_sat",
17648 .opcode = 154,
17649 .operands = &.{
17650 .{ .kind = .id_ref, .quantifier = .required },
17651 .{ .kind = .id_ref, .quantifier = .required },
17652 .{ .kind = .id_ref, .quantifier = .required },
1579417653 },
1579517654 },
1579617655 .{
15797 .name = "PushConstantEnqueuedLocalSize",
15798 .opcode = 16,
15799 .operands = &[_]Operand{
15800 .{ .kind = .IdRef, .quantifier = .required },
15801 .{ .kind = .IdRef, .quantifier = .required },
17656 .name = "s_mad_sat",
17657 .opcode = 155,
17658 .operands = &.{
17659 .{ .kind = .id_ref, .quantifier = .required },
17660 .{ .kind = .id_ref, .quantifier = .required },
17661 .{ .kind = .id_ref, .quantifier = .required },
1580217662 },
1580317663 },
1580417664 .{
15805 .name = "PushConstantGlobalSize",
15806 .opcode = 17,
15807 .operands = &[_]Operand{
15808 .{ .kind = .IdRef, .quantifier = .required },
15809 .{ .kind = .IdRef, .quantifier = .required },
17665 .name = "s_max",
17666 .opcode = 156,
17667 .operands = &.{
17668 .{ .kind = .id_ref, .quantifier = .required },
17669 .{ .kind = .id_ref, .quantifier = .required },
1581017670 },
1581117671 },
1581217672 .{
15813 .name = "PushConstantRegionOffset",
15814 .opcode = 18,
15815 .operands = &[_]Operand{
15816 .{ .kind = .IdRef, .quantifier = .required },
15817 .{ .kind = .IdRef, .quantifier = .required },
17673 .name = "u_max",
17674 .opcode = 157,
17675 .operands = &.{
17676 .{ .kind = .id_ref, .quantifier = .required },
17677 .{ .kind = .id_ref, .quantifier = .required },
1581817678 },
1581917679 },
1582017680 .{
15821 .name = "PushConstantNumWorkgroups",
15822 .opcode = 19,
15823 .operands = &[_]Operand{
15824 .{ .kind = .IdRef, .quantifier = .required },
15825 .{ .kind = .IdRef, .quantifier = .required },
17681 .name = "s_min",
17682 .opcode = 158,
17683 .operands = &.{
17684 .{ .kind = .id_ref, .quantifier = .required },
17685 .{ .kind = .id_ref, .quantifier = .required },
1582617686 },
1582717687 },
1582817688 .{
15829 .name = "PushConstantRegionGroupOffset",
15830 .opcode = 20,
15831 .operands = &[_]Operand{
15832 .{ .kind = .IdRef, .quantifier = .required },
15833 .{ .kind = .IdRef, .quantifier = .required },
17689 .name = "u_min",
17690 .opcode = 159,
17691 .operands = &.{
17692 .{ .kind = .id_ref, .quantifier = .required },
17693 .{ .kind = .id_ref, .quantifier = .required },
1583417694 },
1583517695 },
1583617696 .{
15837 .name = "ConstantDataStorageBuffer",
15838 .opcode = 21,
15839 .operands = &[_]Operand{
15840 .{ .kind = .IdRef, .quantifier = .required },
15841 .{ .kind = .IdRef, .quantifier = .required },
15842 .{ .kind = .IdRef, .quantifier = .required },
17697 .name = "s_mul_hi",
17698 .opcode = 160,
17699 .operands = &.{
17700 .{ .kind = .id_ref, .quantifier = .required },
17701 .{ .kind = .id_ref, .quantifier = .required },
1584317702 },
1584417703 },
1584517704 .{
15846 .name = "ConstantDataUniform",
15847 .opcode = 22,
15848 .operands = &[_]Operand{
15849 .{ .kind = .IdRef, .quantifier = .required },
15850 .{ .kind = .IdRef, .quantifier = .required },
15851 .{ .kind = .IdRef, .quantifier = .required },
17705 .name = "rotate",
17706 .opcode = 161,
17707 .operands = &.{
17708 .{ .kind = .id_ref, .quantifier = .required },
17709 .{ .kind = .id_ref, .quantifier = .required },
1585217710 },
1585317711 },
1585417712 .{
15855 .name = "LiteralSampler",
15856 .opcode = 23,
15857 .operands = &[_]Operand{
15858 .{ .kind = .IdRef, .quantifier = .required },
15859 .{ .kind = .IdRef, .quantifier = .required },
15860 .{ .kind = .IdRef, .quantifier = .required },
17713 .name = "s_sub_sat",
17714 .opcode = 162,
17715 .operands = &.{
17716 .{ .kind = .id_ref, .quantifier = .required },
17717 .{ .kind = .id_ref, .quantifier = .required },
1586117718 },
1586217719 },
1586317720 .{
15864 .name = "PropertyRequiredWorkgroupSize",
15865 .opcode = 24,
15866 .operands = &[_]Operand{
15867 .{ .kind = .IdRef, .quantifier = .required },
15868 .{ .kind = .IdRef, .quantifier = .required },
15869 .{ .kind = .IdRef, .quantifier = .required },
15870 .{ .kind = .IdRef, .quantifier = .required },
17721 .name = "u_sub_sat",
17722 .opcode = 163,
17723 .operands = &.{
17724 .{ .kind = .id_ref, .quantifier = .required },
17725 .{ .kind = .id_ref, .quantifier = .required },
1587117726 },
1587217727 },
1587317728 .{
15874 .name = "SpecConstantSubgroupMaxSize",
15875 .opcode = 25,
15876 .operands = &[_]Operand{
15877 .{ .kind = .IdRef, .quantifier = .required },
17729 .name = "u_upsample",
17730 .opcode = 164,
17731 .operands = &.{
17732 .{ .kind = .id_ref, .quantifier = .required },
17733 .{ .kind = .id_ref, .quantifier = .required },
1587817734 },
1587917735 },
1588017736 .{
15881 .name = "ArgumentPointerPushConstant",
15882 .opcode = 26,
15883 .operands = &[_]Operand{
15884 .{ .kind = .IdRef, .quantifier = .required },
15885 .{ .kind = .IdRef, .quantifier = .required },
15886 .{ .kind = .IdRef, .quantifier = .required },
15887 .{ .kind = .IdRef, .quantifier = .required },
15888 .{ .kind = .IdRef, .quantifier = .optional },
17737 .name = "s_upsample",
17738 .opcode = 165,
17739 .operands = &.{
17740 .{ .kind = .id_ref, .quantifier = .required },
17741 .{ .kind = .id_ref, .quantifier = .required },
1588917742 },
1589017743 },
1589117744 .{
15892 .name = "ArgumentPointerUniform",
15893 .opcode = 27,
15894 .operands = &[_]Operand{
15895 .{ .kind = .IdRef, .quantifier = .required },
15896 .{ .kind = .IdRef, .quantifier = .required },
15897 .{ .kind = .IdRef, .quantifier = .required },
15898 .{ .kind = .IdRef, .quantifier = .required },
15899 .{ .kind = .IdRef, .quantifier = .required },
15900 .{ .kind = .IdRef, .quantifier = .required },
15901 .{ .kind = .IdRef, .quantifier = .optional },
17745 .name = "popcount",
17746 .opcode = 166,
17747 .operands = &.{
17748 .{ .kind = .id_ref, .quantifier = .required },
1590217749 },
1590317750 },
1590417751 .{
15905 .name = "ProgramScopeVariablesStorageBuffer",
15906 .opcode = 28,
15907 .operands = &[_]Operand{
15908 .{ .kind = .IdRef, .quantifier = .required },
15909 .{ .kind = .IdRef, .quantifier = .required },
15910 .{ .kind = .IdRef, .quantifier = .required },
17752 .name = "s_mad24",
17753 .opcode = 167,
17754 .operands = &.{
17755 .{ .kind = .id_ref, .quantifier = .required },
17756 .{ .kind = .id_ref, .quantifier = .required },
17757 .{ .kind = .id_ref, .quantifier = .required },
1591117758 },
1591217759 },
1591317760 .{
15914 .name = "ProgramScopeVariablePointerRelocation",
15915 .opcode = 29,
15916 .operands = &[_]Operand{
15917 .{ .kind = .IdRef, .quantifier = .required },
15918 .{ .kind = .IdRef, .quantifier = .required },
15919 .{ .kind = .IdRef, .quantifier = .required },
17761 .name = "u_mad24",
17762 .opcode = 168,
17763 .operands = &.{
17764 .{ .kind = .id_ref, .quantifier = .required },
17765 .{ .kind = .id_ref, .quantifier = .required },
17766 .{ .kind = .id_ref, .quantifier = .required },
1592017767 },
1592117768 },
1592217769 .{
15923 .name = "ImageArgumentInfoChannelOrderPushConstant",
15924 .opcode = 30,
15925 .operands = &[_]Operand{
15926 .{ .kind = .IdRef, .quantifier = .required },
15927 .{ .kind = .IdRef, .quantifier = .required },
15928 .{ .kind = .IdRef, .quantifier = .required },
15929 .{ .kind = .IdRef, .quantifier = .required },
17770 .name = "s_mul24",
17771 .opcode = 169,
17772 .operands = &.{
17773 .{ .kind = .id_ref, .quantifier = .required },
17774 .{ .kind = .id_ref, .quantifier = .required },
1593017775 },
1593117776 },
1593217777 .{
15933 .name = "ImageArgumentInfoChannelDataTypePushConstant",
15934 .opcode = 31,
15935 .operands = &[_]Operand{
15936 .{ .kind = .IdRef, .quantifier = .required },
15937 .{ .kind = .IdRef, .quantifier = .required },
15938 .{ .kind = .IdRef, .quantifier = .required },
15939 .{ .kind = .IdRef, .quantifier = .required },
17778 .name = "u_mul24",
17779 .opcode = 170,
17780 .operands = &.{
17781 .{ .kind = .id_ref, .quantifier = .required },
17782 .{ .kind = .id_ref, .quantifier = .required },
1594017783 },
1594117784 },
1594217785 .{
15943 .name = "ImageArgumentInfoChannelOrderUniform",
15944 .opcode = 32,
15945 .operands = &[_]Operand{
15946 .{ .kind = .IdRef, .quantifier = .required },
15947 .{ .kind = .IdRef, .quantifier = .required },
15948 .{ .kind = .IdRef, .quantifier = .required },
15949 .{ .kind = .IdRef, .quantifier = .required },
15950 .{ .kind = .IdRef, .quantifier = .required },
15951 .{ .kind = .IdRef, .quantifier = .required },
17786 .name = "vloadn",
17787 .opcode = 171,
17788 .operands = &.{
17789 .{ .kind = .id_ref, .quantifier = .required },
17790 .{ .kind = .id_ref, .quantifier = .required },
17791 .{ .kind = .literal_integer, .quantifier = .required },
1595217792 },
1595317793 },
1595417794 .{
15955 .name = "ImageArgumentInfoChannelDataTypeUniform",
15956 .opcode = 33,
15957 .operands = &[_]Operand{
15958 .{ .kind = .IdRef, .quantifier = .required },
15959 .{ .kind = .IdRef, .quantifier = .required },
15960 .{ .kind = .IdRef, .quantifier = .required },
15961 .{ .kind = .IdRef, .quantifier = .required },
15962 .{ .kind = .IdRef, .quantifier = .required },
15963 .{ .kind = .IdRef, .quantifier = .required },
17795 .name = "vstoren",
17796 .opcode = 172,
17797 .operands = &.{
17798 .{ .kind = .id_ref, .quantifier = .required },
17799 .{ .kind = .id_ref, .quantifier = .required },
17800 .{ .kind = .id_ref, .quantifier = .required },
1596417801 },
1596517802 },
1596617803 .{
15967 .name = "ArgumentStorageTexelBuffer",
15968 .opcode = 34,
15969 .operands = &[_]Operand{
15970 .{ .kind = .IdRef, .quantifier = .required },
15971 .{ .kind = .IdRef, .quantifier = .required },
15972 .{ .kind = .IdRef, .quantifier = .required },
15973 .{ .kind = .IdRef, .quantifier = .required },
15974 .{ .kind = .IdRef, .quantifier = .optional },
17804 .name = "vload_half",
17805 .opcode = 173,
17806 .operands = &.{
17807 .{ .kind = .id_ref, .quantifier = .required },
17808 .{ .kind = .id_ref, .quantifier = .required },
1597517809 },
1597617810 },
1597717811 .{
15978 .name = "ArgumentUniformTexelBuffer",
15979 .opcode = 35,
15980 .operands = &[_]Operand{
15981 .{ .kind = .IdRef, .quantifier = .required },
15982 .{ .kind = .IdRef, .quantifier = .required },
15983 .{ .kind = .IdRef, .quantifier = .required },
15984 .{ .kind = .IdRef, .quantifier = .required },
15985 .{ .kind = .IdRef, .quantifier = .optional },
17812 .name = "vload_halfn",
17813 .opcode = 174,
17814 .operands = &.{
17815 .{ .kind = .id_ref, .quantifier = .required },
17816 .{ .kind = .id_ref, .quantifier = .required },
17817 .{ .kind = .literal_integer, .quantifier = .required },
1598617818 },
1598717819 },
1598817820 .{
15989 .name = "ConstantDataPointerPushConstant",
15990 .opcode = 36,
15991 .operands = &[_]Operand{
15992 .{ .kind = .IdRef, .quantifier = .required },
15993 .{ .kind = .IdRef, .quantifier = .required },
15994 .{ .kind = .IdRef, .quantifier = .required },
17821 .name = "vstore_half",
17822 .opcode = 175,
17823 .operands = &.{
17824 .{ .kind = .id_ref, .quantifier = .required },
17825 .{ .kind = .id_ref, .quantifier = .required },
17826 .{ .kind = .id_ref, .quantifier = .required },
1599517827 },
1599617828 },
1599717829 .{
15998 .name = "ProgramScopeVariablePointerPushConstant",
15999 .opcode = 37,
16000 .operands = &[_]Operand{
16001 .{ .kind = .IdRef, .quantifier = .required },
16002 .{ .kind = .IdRef, .quantifier = .required },
16003 .{ .kind = .IdRef, .quantifier = .required },
17830 .name = "vstore_half_r",
17831 .opcode = 176,
17832 .operands = &.{
17833 .{ .kind = .id_ref, .quantifier = .required },
17834 .{ .kind = .id_ref, .quantifier = .required },
17835 .{ .kind = .id_ref, .quantifier = .required },
17836 .{ .kind = .fp_rounding_mode, .quantifier = .required },
1600417837 },
1600517838 },
1600617839 .{
16007 .name = "PrintfInfo",
16008 .opcode = 38,
16009 .operands = &[_]Operand{
16010 .{ .kind = .IdRef, .quantifier = .required },
16011 .{ .kind = .IdRef, .quantifier = .required },
16012 .{ .kind = .IdRef, .quantifier = .variadic },
17840 .name = "vstore_halfn",
17841 .opcode = 177,
17842 .operands = &.{
17843 .{ .kind = .id_ref, .quantifier = .required },
17844 .{ .kind = .id_ref, .quantifier = .required },
17845 .{ .kind = .id_ref, .quantifier = .required },
1601317846 },
1601417847 },
1601517848 .{
16016 .name = "PrintfBufferStorageBuffer",
16017 .opcode = 39,
16018 .operands = &[_]Operand{
16019 .{ .kind = .IdRef, .quantifier = .required },
16020 .{ .kind = .IdRef, .quantifier = .required },
16021 .{ .kind = .IdRef, .quantifier = .required },
17849 .name = "vstore_halfn_r",
17850 .opcode = 178,
17851 .operands = &.{
17852 .{ .kind = .id_ref, .quantifier = .required },
17853 .{ .kind = .id_ref, .quantifier = .required },
17854 .{ .kind = .id_ref, .quantifier = .required },
17855 .{ .kind = .fp_rounding_mode, .quantifier = .required },
1602217856 },
1602317857 },
1602417858 .{
16025 .name = "PrintfBufferPointerPushConstant",
16026 .opcode = 40,
16027 .operands = &[_]Operand{
16028 .{ .kind = .IdRef, .quantifier = .required },
16029 .{ .kind = .IdRef, .quantifier = .required },
16030 .{ .kind = .IdRef, .quantifier = .required },
17859 .name = "vloada_halfn",
17860 .opcode = 179,
17861 .operands = &.{
17862 .{ .kind = .id_ref, .quantifier = .required },
17863 .{ .kind = .id_ref, .quantifier = .required },
17864 .{ .kind = .literal_integer, .quantifier = .required },
1603117865 },
1603217866 },
1603317867 .{
16034 .name = "NormalizedSamplerMaskPushConstant",
16035 .opcode = 41,
16036 .operands = &[_]Operand{
16037 .{ .kind = .IdRef, .quantifier = .required },
16038 .{ .kind = .IdRef, .quantifier = .required },
16039 .{ .kind = .IdRef, .quantifier = .required },
16040 .{ .kind = .IdRef, .quantifier = .required },
17868 .name = "vstorea_halfn",
17869 .opcode = 180,
17870 .operands = &.{
17871 .{ .kind = .id_ref, .quantifier = .required },
17872 .{ .kind = .id_ref, .quantifier = .required },
17873 .{ .kind = .id_ref, .quantifier = .required },
1604117874 },
1604217875 },
16043 },
16044 .SPV_AMD_gcn_shader => &[_]Instruction{
1604517876 .{
16046 .name = "CubeFaceIndexAMD",
16047 .opcode = 1,
16048 .operands = &[_]Operand{
16049 .{ .kind = .IdRef, .quantifier = .required },
17877 .name = "vstorea_halfn_r",
17878 .opcode = 181,
17879 .operands = &.{
17880 .{ .kind = .id_ref, .quantifier = .required },
17881 .{ .kind = .id_ref, .quantifier = .required },
17882 .{ .kind = .id_ref, .quantifier = .required },
17883 .{ .kind = .fp_rounding_mode, .quantifier = .required },
1605017884 },
1605117885 },
1605217886 .{
16053 .name = "CubeFaceCoordAMD",
16054 .opcode = 2,
16055 .operands = &[_]Operand{
16056 .{ .kind = .IdRef, .quantifier = .required },
17887 .name = "shuffle",
17888 .opcode = 182,
17889 .operands = &.{
17890 .{ .kind = .id_ref, .quantifier = .required },
17891 .{ .kind = .id_ref, .quantifier = .required },
1605717892 },
1605817893 },
1605917894 .{
16060 .name = "TimeAMD",
16061 .opcode = 3,
16062 .operands = &[_]Operand{},
16063 },
16064 },
16065 .SPV_AMD_shader_trinary_minmax => &[_]Instruction{
16066 .{
16067 .name = "FMin3AMD",
16068 .opcode = 1,
16069 .operands = &[_]Operand{
16070 .{ .kind = .IdRef, .quantifier = .required },
16071 .{ .kind = .IdRef, .quantifier = .required },
16072 .{ .kind = .IdRef, .quantifier = .required },
17895 .name = "shuffle2",
17896 .opcode = 183,
17897 .operands = &.{
17898 .{ .kind = .id_ref, .quantifier = .required },
17899 .{ .kind = .id_ref, .quantifier = .required },
17900 .{ .kind = .id_ref, .quantifier = .required },
1607317901 },
1607417902 },
1607517903 .{
16076 .name = "UMin3AMD",
16077 .opcode = 2,
16078 .operands = &[_]Operand{
16079 .{ .kind = .IdRef, .quantifier = .required },
16080 .{ .kind = .IdRef, .quantifier = .required },
16081 .{ .kind = .IdRef, .quantifier = .required },
17904 .name = "printf",
17905 .opcode = 184,
17906 .operands = &.{
17907 .{ .kind = .id_ref, .quantifier = .required },
17908 .{ .kind = .id_ref, .quantifier = .variadic },
1608217909 },
1608317910 },
1608417911 .{
16085 .name = "SMin3AMD",
16086 .opcode = 3,
16087 .operands = &[_]Operand{
16088 .{ .kind = .IdRef, .quantifier = .required },
16089 .{ .kind = .IdRef, .quantifier = .required },
16090 .{ .kind = .IdRef, .quantifier = .required },
17912 .name = "prefetch",
17913 .opcode = 185,
17914 .operands = &.{
17915 .{ .kind = .id_ref, .quantifier = .required },
17916 .{ .kind = .id_ref, .quantifier = .required },
1609117917 },
1609217918 },
1609317919 .{
16094 .name = "FMax3AMD",
16095 .opcode = 4,
16096 .operands = &[_]Operand{
16097 .{ .kind = .IdRef, .quantifier = .required },
16098 .{ .kind = .IdRef, .quantifier = .required },
16099 .{ .kind = .IdRef, .quantifier = .required },
17920 .name = "bitselect",
17921 .opcode = 186,
17922 .operands = &.{
17923 .{ .kind = .id_ref, .quantifier = .required },
17924 .{ .kind = .id_ref, .quantifier = .required },
17925 .{ .kind = .id_ref, .quantifier = .required },
1610017926 },
1610117927 },
1610217928 .{
16103 .name = "UMax3AMD",
16104 .opcode = 5,
16105 .operands = &[_]Operand{
16106 .{ .kind = .IdRef, .quantifier = .required },
16107 .{ .kind = .IdRef, .quantifier = .required },
16108 .{ .kind = .IdRef, .quantifier = .required },
17929 .name = "select",
17930 .opcode = 187,
17931 .operands = &.{
17932 .{ .kind = .id_ref, .quantifier = .required },
17933 .{ .kind = .id_ref, .quantifier = .required },
17934 .{ .kind = .id_ref, .quantifier = .required },
1610917935 },
1611017936 },
1611117937 .{
16112 .name = "SMax3AMD",
16113 .opcode = 6,
16114 .operands = &[_]Operand{
16115 .{ .kind = .IdRef, .quantifier = .required },
16116 .{ .kind = .IdRef, .quantifier = .required },
16117 .{ .kind = .IdRef, .quantifier = .required },
17938 .name = "u_abs",
17939 .opcode = 201,
17940 .operands = &.{
17941 .{ .kind = .id_ref, .quantifier = .required },
1611817942 },
1611917943 },
1612017944 .{
16121 .name = "FMid3AMD",
16122 .opcode = 7,
16123 .operands = &[_]Operand{
16124 .{ .kind = .IdRef, .quantifier = .required },
16125 .{ .kind = .IdRef, .quantifier = .required },
16126 .{ .kind = .IdRef, .quantifier = .required },
17945 .name = "u_abs_diff",
17946 .opcode = 202,
17947 .operands = &.{
17948 .{ .kind = .id_ref, .quantifier = .required },
17949 .{ .kind = .id_ref, .quantifier = .required },
1612717950 },
1612817951 },
1612917952 .{
16130 .name = "UMid3AMD",
16131 .opcode = 8,
16132 .operands = &[_]Operand{
16133 .{ .kind = .IdRef, .quantifier = .required },
16134 .{ .kind = .IdRef, .quantifier = .required },
16135 .{ .kind = .IdRef, .quantifier = .required },
17953 .name = "u_mul_hi",
17954 .opcode = 203,
17955 .operands = &.{
17956 .{ .kind = .id_ref, .quantifier = .required },
17957 .{ .kind = .id_ref, .quantifier = .required },
1613617958 },
1613717959 },
1613817960 .{
16139 .name = "SMid3AMD",
16140 .opcode = 9,
16141 .operands = &[_]Operand{
16142 .{ .kind = .IdRef, .quantifier = .required },
16143 .{ .kind = .IdRef, .quantifier = .required },
16144 .{ .kind = .IdRef, .quantifier = .required },
17961 .name = "u_mad_hi",
17962 .opcode = 204,
17963 .operands = &.{
17964 .{ .kind = .id_ref, .quantifier = .required },
17965 .{ .kind = .id_ref, .quantifier = .required },
17966 .{ .kind = .id_ref, .quantifier = .required },
1614517967 },
1614617968 },
1614717969 },
16148 .DebugInfo => &[_]Instruction{
17970 .non_semantic_shader_debug_info_100 => &.{
1614917971 .{
1615017972 .name = "DebugInfoNone",
1615117973 .opcode = 0,
16152 .operands = &[_]Operand{},
17974 .operands = &.{},
1615317975 },
1615417976 .{
1615517977 .name = "DebugCompilationUnit",
1615617978 .opcode = 1,
16157 .operands = &[_]Operand{
16158 .{ .kind = .IdRef, .quantifier = .required },
16159 .{ .kind = .LiteralInteger, .quantifier = .required },
16160 .{ .kind = .LiteralInteger, .quantifier = .required },
17979 .operands = &.{
17980 .{ .kind = .id_ref, .quantifier = .required },
17981 .{ .kind = .id_ref, .quantifier = .required },
17982 .{ .kind = .id_ref, .quantifier = .required },
17983 .{ .kind = .id_ref, .quantifier = .required },
1616117984 },
1616217985 },
1616317986 .{
1616417987 .name = "DebugTypeBasic",
1616517988 .opcode = 2,
16166 .operands = &[_]Operand{
16167 .{ .kind = .IdRef, .quantifier = .required },
16168 .{ .kind = .IdRef, .quantifier = .required },
16169 .{ .kind = .@"DebugInfo.DebugBaseTypeAttributeEncoding", .quantifier = .required },
17989 .operands = &.{
17990 .{ .kind = .id_ref, .quantifier = .required },
17991 .{ .kind = .id_ref, .quantifier = .required },
17992 .{ .kind = .id_ref, .quantifier = .required },
17993 .{ .kind = .id_ref, .quantifier = .required },
1617017994 },
1617117995 },
1617217996 .{
1617317997 .name = "DebugTypePointer",
1617417998 .opcode = 3,
16175 .operands = &[_]Operand{
16176 .{ .kind = .IdRef, .quantifier = .required },
16177 .{ .kind = .StorageClass, .quantifier = .required },
16178 .{ .kind = .@"DebugInfo.DebugInfoFlags", .quantifier = .required },
17999 .operands = &.{
18000 .{ .kind = .id_ref, .quantifier = .required },
18001 .{ .kind = .id_ref, .quantifier = .required },
18002 .{ .kind = .id_ref, .quantifier = .required },
1617918003 },
1618018004 },
1618118005 .{
1618218006 .name = "DebugTypeQualifier",
1618318007 .opcode = 4,
16184 .operands = &[_]Operand{
16185 .{ .kind = .IdRef, .quantifier = .required },
16186 .{ .kind = .@"DebugInfo.DebugTypeQualifier", .quantifier = .required },
18008 .operands = &.{
18009 .{ .kind = .id_ref, .quantifier = .required },
18010 .{ .kind = .id_ref, .quantifier = .required },
1618718011 },
1618818012 },
1618918013 .{
1619018014 .name = "DebugTypeArray",
1619118015 .opcode = 5,
16192 .operands = &[_]Operand{
16193 .{ .kind = .IdRef, .quantifier = .required },
16194 .{ .kind = .IdRef, .quantifier = .variadic },
18016 .operands = &.{
18017 .{ .kind = .id_ref, .quantifier = .required },
18018 .{ .kind = .id_ref, .quantifier = .variadic },
1619518019 },
1619618020 },
1619718021 .{
1619818022 .name = "DebugTypeVector",
1619918023 .opcode = 6,
16200 .operands = &[_]Operand{
16201 .{ .kind = .IdRef, .quantifier = .required },
16202 .{ .kind = .LiteralInteger, .quantifier = .required },
18024 .operands = &.{
18025 .{ .kind = .id_ref, .quantifier = .required },
18026 .{ .kind = .id_ref, .quantifier = .required },
1620318027 },
1620418028 },
1620518029 .{
1620618030 .name = "DebugTypedef",
1620718031 .opcode = 7,
16208 .operands = &[_]Operand{
16209 .{ .kind = .IdRef, .quantifier = .required },
16210 .{ .kind = .IdRef, .quantifier = .required },
16211 .{ .kind = .IdRef, .quantifier = .required },
16212 .{ .kind = .LiteralInteger, .quantifier = .required },
16213 .{ .kind = .LiteralInteger, .quantifier = .required },
16214 .{ .kind = .IdRef, .quantifier = .required },
18032 .operands = &.{
18033 .{ .kind = .id_ref, .quantifier = .required },
18034 .{ .kind = .id_ref, .quantifier = .required },
18035 .{ .kind = .id_ref, .quantifier = .required },
18036 .{ .kind = .id_ref, .quantifier = .required },
18037 .{ .kind = .id_ref, .quantifier = .required },
18038 .{ .kind = .id_ref, .quantifier = .required },
1621518039 },
1621618040 },
1621718041 .{
1621818042 .name = "DebugTypeFunction",
1621918043 .opcode = 8,
16220 .operands = &[_]Operand{
16221 .{ .kind = .IdRef, .quantifier = .required },
16222 .{ .kind = .IdRef, .quantifier = .variadic },
18044 .operands = &.{
18045 .{ .kind = .id_ref, .quantifier = .required },
18046 .{ .kind = .id_ref, .quantifier = .required },
18047 .{ .kind = .id_ref, .quantifier = .variadic },
1622318048 },
1622418049 },
1622518050 .{
1622618051 .name = "DebugTypeEnum",
1622718052 .opcode = 9,
16228 .operands = &[_]Operand{
16229 .{ .kind = .IdRef, .quantifier = .required },
16230 .{ .kind = .IdRef, .quantifier = .required },
16231 .{ .kind = .IdRef, .quantifier = .required },
16232 .{ .kind = .LiteralInteger, .quantifier = .required },
16233 .{ .kind = .LiteralInteger, .quantifier = .required },
16234 .{ .kind = .IdRef, .quantifier = .required },
16235 .{ .kind = .IdRef, .quantifier = .required },
16236 .{ .kind = .@"DebugInfo.DebugInfoFlags", .quantifier = .required },
16237 .{ .kind = .PairIdRefIdRef, .quantifier = .variadic },
18053 .operands = &.{
18054 .{ .kind = .id_ref, .quantifier = .required },
18055 .{ .kind = .id_ref, .quantifier = .required },
18056 .{ .kind = .id_ref, .quantifier = .required },
18057 .{ .kind = .id_ref, .quantifier = .required },
18058 .{ .kind = .id_ref, .quantifier = .required },
18059 .{ .kind = .id_ref, .quantifier = .required },
18060 .{ .kind = .id_ref, .quantifier = .required },
18061 .{ .kind = .id_ref, .quantifier = .required },
18062 .{ .kind = .pair_id_ref_id_ref, .quantifier = .variadic },
1623818063 },
1623918064 },
1624018065 .{
1624118066 .name = "DebugTypeComposite",
1624218067 .opcode = 10,
16243 .operands = &[_]Operand{
16244 .{ .kind = .IdRef, .quantifier = .required },
16245 .{ .kind = .@"DebugInfo.DebugCompositeType", .quantifier = .required },
16246 .{ .kind = .IdRef, .quantifier = .required },
16247 .{ .kind = .LiteralInteger, .quantifier = .required },
16248 .{ .kind = .LiteralInteger, .quantifier = .required },
16249 .{ .kind = .IdRef, .quantifier = .required },
16250 .{ .kind = .IdRef, .quantifier = .required },
16251 .{ .kind = .@"DebugInfo.DebugInfoFlags", .quantifier = .required },
16252 .{ .kind = .IdRef, .quantifier = .variadic },
18068 .operands = &.{
18069 .{ .kind = .id_ref, .quantifier = .required },
18070 .{ .kind = .id_ref, .quantifier = .required },
18071 .{ .kind = .id_ref, .quantifier = .required },
18072 .{ .kind = .id_ref, .quantifier = .required },
18073 .{ .kind = .id_ref, .quantifier = .required },
18074 .{ .kind = .id_ref, .quantifier = .required },
18075 .{ .kind = .id_ref, .quantifier = .required },
18076 .{ .kind = .id_ref, .quantifier = .required },
18077 .{ .kind = .id_ref, .quantifier = .required },
18078 .{ .kind = .id_ref, .quantifier = .variadic },
1625318079 },
1625418080 },
1625518081 .{
1625618082 .name = "DebugTypeMember",
1625718083 .opcode = 11,
16258 .operands = &[_]Operand{
16259 .{ .kind = .IdRef, .quantifier = .required },
16260 .{ .kind = .IdRef, .quantifier = .required },
16261 .{ .kind = .IdRef, .quantifier = .required },
16262 .{ .kind = .LiteralInteger, .quantifier = .required },
16263 .{ .kind = .LiteralInteger, .quantifier = .required },
16264 .{ .kind = .IdRef, .quantifier = .required },
16265 .{ .kind = .IdRef, .quantifier = .required },
16266 .{ .kind = .IdRef, .quantifier = .required },
16267 .{ .kind = .@"DebugInfo.DebugInfoFlags", .quantifier = .required },
16268 .{ .kind = .IdRef, .quantifier = .optional },
18084 .operands = &.{
18085 .{ .kind = .id_ref, .quantifier = .required },
18086 .{ .kind = .id_ref, .quantifier = .required },
18087 .{ .kind = .id_ref, .quantifier = .required },
18088 .{ .kind = .id_ref, .quantifier = .required },
18089 .{ .kind = .id_ref, .quantifier = .required },
18090 .{ .kind = .id_ref, .quantifier = .required },
18091 .{ .kind = .id_ref, .quantifier = .required },
18092 .{ .kind = .id_ref, .quantifier = .required },
18093 .{ .kind = .id_ref, .quantifier = .optional },
1626918094 },
1627018095 },
1627118096 .{
1627218097 .name = "DebugTypeInheritance",
1627318098 .opcode = 12,
16274 .operands = &[_]Operand{
16275 .{ .kind = .IdRef, .quantifier = .required },
16276 .{ .kind = .IdRef, .quantifier = .required },
16277 .{ .kind = .IdRef, .quantifier = .required },
16278 .{ .kind = .IdRef, .quantifier = .required },
16279 .{ .kind = .@"DebugInfo.DebugInfoFlags", .quantifier = .required },
18099 .operands = &.{
18100 .{ .kind = .id_ref, .quantifier = .required },
18101 .{ .kind = .id_ref, .quantifier = .required },
18102 .{ .kind = .id_ref, .quantifier = .required },
18103 .{ .kind = .id_ref, .quantifier = .required },
1628018104 },
1628118105 },
1628218106 .{
1628318107 .name = "DebugTypePtrToMember",
1628418108 .opcode = 13,
16285 .operands = &[_]Operand{
16286 .{ .kind = .IdRef, .quantifier = .required },
16287 .{ .kind = .IdRef, .quantifier = .required },
18109 .operands = &.{
18110 .{ .kind = .id_ref, .quantifier = .required },
18111 .{ .kind = .id_ref, .quantifier = .required },
1628818112 },
1628918113 },
1629018114 .{
1629118115 .name = "DebugTypeTemplate",
1629218116 .opcode = 14,
16293 .operands = &[_]Operand{
16294 .{ .kind = .IdRef, .quantifier = .required },
16295 .{ .kind = .IdRef, .quantifier = .variadic },
18117 .operands = &.{
18118 .{ .kind = .id_ref, .quantifier = .required },
18119 .{ .kind = .id_ref, .quantifier = .variadic },
1629618120 },
1629718121 },
1629818122 .{
1629918123 .name = "DebugTypeTemplateParameter",
1630018124 .opcode = 15,
16301 .operands = &[_]Operand{
16302 .{ .kind = .IdRef, .quantifier = .required },
16303 .{ .kind = .IdRef, .quantifier = .required },
16304 .{ .kind = .IdRef, .quantifier = .required },
16305 .{ .kind = .IdRef, .quantifier = .required },
16306 .{ .kind = .LiteralInteger, .quantifier = .required },
16307 .{ .kind = .LiteralInteger, .quantifier = .required },
18125 .operands = &.{
18126 .{ .kind = .id_ref, .quantifier = .required },
18127 .{ .kind = .id_ref, .quantifier = .required },
18128 .{ .kind = .id_ref, .quantifier = .required },
18129 .{ .kind = .id_ref, .quantifier = .required },
18130 .{ .kind = .id_ref, .quantifier = .required },
18131 .{ .kind = .id_ref, .quantifier = .required },
1630818132 },
1630918133 },
1631018134 .{
1631118135 .name = "DebugTypeTemplateTemplateParameter",
1631218136 .opcode = 16,
16313 .operands = &[_]Operand{
16314 .{ .kind = .IdRef, .quantifier = .required },
16315 .{ .kind = .IdRef, .quantifier = .required },
16316 .{ .kind = .IdRef, .quantifier = .required },
16317 .{ .kind = .LiteralInteger, .quantifier = .required },
16318 .{ .kind = .LiteralInteger, .quantifier = .required },
18137 .operands = &.{
18138 .{ .kind = .id_ref, .quantifier = .required },
18139 .{ .kind = .id_ref, .quantifier = .required },
18140 .{ .kind = .id_ref, .quantifier = .required },
18141 .{ .kind = .id_ref, .quantifier = .required },
18142 .{ .kind = .id_ref, .quantifier = .required },
1631918143 },
1632018144 },
1632118145 .{
1632218146 .name = "DebugTypeTemplateParameterPack",
1632318147 .opcode = 17,
16324 .operands = &[_]Operand{
16325 .{ .kind = .IdRef, .quantifier = .required },
16326 .{ .kind = .IdRef, .quantifier = .required },
16327 .{ .kind = .LiteralInteger, .quantifier = .required },
16328 .{ .kind = .LiteralInteger, .quantifier = .required },
16329 .{ .kind = .IdRef, .quantifier = .variadic },
18148 .operands = &.{
18149 .{ .kind = .id_ref, .quantifier = .required },
18150 .{ .kind = .id_ref, .quantifier = .required },
18151 .{ .kind = .id_ref, .quantifier = .required },
18152 .{ .kind = .id_ref, .quantifier = .required },
18153 .{ .kind = .id_ref, .quantifier = .variadic },
1633018154 },
1633118155 },
1633218156 .{
1633318157 .name = "DebugGlobalVariable",
1633418158 .opcode = 18,
16335 .operands = &[_]Operand{
16336 .{ .kind = .IdRef, .quantifier = .required },
16337 .{ .kind = .IdRef, .quantifier = .required },
16338 .{ .kind = .IdRef, .quantifier = .required },
16339 .{ .kind = .LiteralInteger, .quantifier = .required },
16340 .{ .kind = .LiteralInteger, .quantifier = .required },
16341 .{ .kind = .IdRef, .quantifier = .required },
16342 .{ .kind = .IdRef, .quantifier = .required },
16343 .{ .kind = .IdRef, .quantifier = .required },
16344 .{ .kind = .@"DebugInfo.DebugInfoFlags", .quantifier = .required },
16345 .{ .kind = .IdRef, .quantifier = .optional },
18159 .operands = &.{
18160 .{ .kind = .id_ref, .quantifier = .required },
18161 .{ .kind = .id_ref, .quantifier = .required },
18162 .{ .kind = .id_ref, .quantifier = .required },
18163 .{ .kind = .id_ref, .quantifier = .required },
18164 .{ .kind = .id_ref, .quantifier = .required },
18165 .{ .kind = .id_ref, .quantifier = .required },
18166 .{ .kind = .id_ref, .quantifier = .required },
18167 .{ .kind = .id_ref, .quantifier = .required },
18168 .{ .kind = .id_ref, .quantifier = .required },
18169 .{ .kind = .id_ref, .quantifier = .optional },
1634618170 },
1634718171 },
1634818172 .{
1634918173 .name = "DebugFunctionDeclaration",
1635018174 .opcode = 19,
16351 .operands = &[_]Operand{
16352 .{ .kind = .IdRef, .quantifier = .required },
16353 .{ .kind = .IdRef, .quantifier = .required },
16354 .{ .kind = .IdRef, .quantifier = .required },
16355 .{ .kind = .LiteralInteger, .quantifier = .required },
16356 .{ .kind = .LiteralInteger, .quantifier = .required },
16357 .{ .kind = .IdRef, .quantifier = .required },
16358 .{ .kind = .IdRef, .quantifier = .required },
16359 .{ .kind = .@"DebugInfo.DebugInfoFlags", .quantifier = .required },
18175 .operands = &.{
18176 .{ .kind = .id_ref, .quantifier = .required },
18177 .{ .kind = .id_ref, .quantifier = .required },
18178 .{ .kind = .id_ref, .quantifier = .required },
18179 .{ .kind = .id_ref, .quantifier = .required },
18180 .{ .kind = .id_ref, .quantifier = .required },
18181 .{ .kind = .id_ref, .quantifier = .required },
18182 .{ .kind = .id_ref, .quantifier = .required },
18183 .{ .kind = .id_ref, .quantifier = .required },
1636018184 },
1636118185 },
1636218186 .{
1636318187 .name = "DebugFunction",
1636418188 .opcode = 20,
16365 .operands = &[_]Operand{
16366 .{ .kind = .IdRef, .quantifier = .required },
16367 .{ .kind = .IdRef, .quantifier = .required },
16368 .{ .kind = .IdRef, .quantifier = .required },
16369 .{ .kind = .LiteralInteger, .quantifier = .required },
16370 .{ .kind = .LiteralInteger, .quantifier = .required },
16371 .{ .kind = .IdRef, .quantifier = .required },
16372 .{ .kind = .IdRef, .quantifier = .required },
16373 .{ .kind = .@"DebugInfo.DebugInfoFlags", .quantifier = .required },
16374 .{ .kind = .LiteralInteger, .quantifier = .required },
16375 .{ .kind = .IdRef, .quantifier = .required },
16376 .{ .kind = .IdRef, .quantifier = .optional },
18189 .operands = &.{
18190 .{ .kind = .id_ref, .quantifier = .required },
18191 .{ .kind = .id_ref, .quantifier = .required },
18192 .{ .kind = .id_ref, .quantifier = .required },
18193 .{ .kind = .id_ref, .quantifier = .required },
18194 .{ .kind = .id_ref, .quantifier = .required },
18195 .{ .kind = .id_ref, .quantifier = .required },
18196 .{ .kind = .id_ref, .quantifier = .required },
18197 .{ .kind = .id_ref, .quantifier = .required },
18198 .{ .kind = .id_ref, .quantifier = .required },
18199 .{ .kind = .id_ref, .quantifier = .optional },
1637718200 },
1637818201 },
1637918202 .{
1638018203 .name = "DebugLexicalBlock",
1638118204 .opcode = 21,
16382 .operands = &[_]Operand{
16383 .{ .kind = .IdRef, .quantifier = .required },
16384 .{ .kind = .LiteralInteger, .quantifier = .required },
16385 .{ .kind = .LiteralInteger, .quantifier = .required },
16386 .{ .kind = .IdRef, .quantifier = .required },
16387 .{ .kind = .IdRef, .quantifier = .optional },
18205 .operands = &.{
18206 .{ .kind = .id_ref, .quantifier = .required },
18207 .{ .kind = .id_ref, .quantifier = .required },
18208 .{ .kind = .id_ref, .quantifier = .required },
18209 .{ .kind = .id_ref, .quantifier = .required },
18210 .{ .kind = .id_ref, .quantifier = .optional },
1638818211 },
1638918212 },
1639018213 .{
1639118214 .name = "DebugLexicalBlockDiscriminator",
1639218215 .opcode = 22,
16393 .operands = &[_]Operand{
16394 .{ .kind = .IdRef, .quantifier = .required },
16395 .{ .kind = .LiteralInteger, .quantifier = .required },
16396 .{ .kind = .IdRef, .quantifier = .required },
18216 .operands = &.{
18217 .{ .kind = .id_ref, .quantifier = .required },
18218 .{ .kind = .id_ref, .quantifier = .required },
18219 .{ .kind = .id_ref, .quantifier = .required },
1639718220 },
1639818221 },
1639918222 .{
1640018223 .name = "DebugScope",
1640118224 .opcode = 23,
16402 .operands = &[_]Operand{
16403 .{ .kind = .IdRef, .quantifier = .required },
16404 .{ .kind = .IdRef, .quantifier = .optional },
18225 .operands = &.{
18226 .{ .kind = .id_ref, .quantifier = .required },
18227 .{ .kind = .id_ref, .quantifier = .optional },
1640518228 },
1640618229 },
1640718230 .{
1640818231 .name = "DebugNoScope",
1640918232 .opcode = 24,
16410 .operands = &[_]Operand{},
18233 .operands = &.{},
1641118234 },
1641218235 .{
1641318236 .name = "DebugInlinedAt",
1641418237 .opcode = 25,
16415 .operands = &[_]Operand{
16416 .{ .kind = .LiteralInteger, .quantifier = .required },
16417 .{ .kind = .IdRef, .quantifier = .required },
16418 .{ .kind = .IdRef, .quantifier = .optional },
18238 .operands = &.{
18239 .{ .kind = .id_ref, .quantifier = .required },
18240 .{ .kind = .id_ref, .quantifier = .required },
18241 .{ .kind = .id_ref, .quantifier = .optional },
1641918242 },
1642018243 },
1642118244 .{
1642218245 .name = "DebugLocalVariable",
1642318246 .opcode = 26,
16424 .operands = &[_]Operand{
16425 .{ .kind = .IdRef, .quantifier = .required },
16426 .{ .kind = .IdRef, .quantifier = .required },
16427 .{ .kind = .IdRef, .quantifier = .required },
16428 .{ .kind = .LiteralInteger, .quantifier = .required },
16429 .{ .kind = .LiteralInteger, .quantifier = .required },
16430 .{ .kind = .IdRef, .quantifier = .required },
16431 .{ .kind = .LiteralInteger, .quantifier = .optional },
18247 .operands = &.{
18248 .{ .kind = .id_ref, .quantifier = .required },
18249 .{ .kind = .id_ref, .quantifier = .required },
18250 .{ .kind = .id_ref, .quantifier = .required },
18251 .{ .kind = .id_ref, .quantifier = .required },
18252 .{ .kind = .id_ref, .quantifier = .required },
18253 .{ .kind = .id_ref, .quantifier = .required },
18254 .{ .kind = .id_ref, .quantifier = .required },
18255 .{ .kind = .id_ref, .quantifier = .optional },
1643218256 },
1643318257 },
1643418258 .{
1643518259 .name = "DebugInlinedVariable",
1643618260 .opcode = 27,
16437 .operands = &[_]Operand{
16438 .{ .kind = .IdRef, .quantifier = .required },
16439 .{ .kind = .IdRef, .quantifier = .required },
18261 .operands = &.{
18262 .{ .kind = .id_ref, .quantifier = .required },
18263 .{ .kind = .id_ref, .quantifier = .required },
1644018264 },
1644118265 },
1644218266 .{
1644318267 .name = "DebugDeclare",
1644418268 .opcode = 28,
16445 .operands = &[_]Operand{
16446 .{ .kind = .IdRef, .quantifier = .required },
16447 .{ .kind = .IdRef, .quantifier = .required },
16448 .{ .kind = .IdRef, .quantifier = .required },
18269 .operands = &.{
18270 .{ .kind = .id_ref, .quantifier = .required },
18271 .{ .kind = .id_ref, .quantifier = .required },
18272 .{ .kind = .id_ref, .quantifier = .required },
18273 .{ .kind = .id_ref, .quantifier = .variadic },
1644918274 },
1645018275 },
1645118276 .{
1645218277 .name = "DebugValue",
1645318278 .opcode = 29,
16454 .operands = &[_]Operand{
16455 .{ .kind = .IdRef, .quantifier = .required },
16456 .{ .kind = .IdRef, .quantifier = .required },
16457 .{ .kind = .IdRef, .quantifier = .variadic },
18279 .operands = &.{
18280 .{ .kind = .id_ref, .quantifier = .required },
18281 .{ .kind = .id_ref, .quantifier = .required },
18282 .{ .kind = .id_ref, .quantifier = .required },
18283 .{ .kind = .id_ref, .quantifier = .variadic },
1645818284 },
1645918285 },
1646018286 .{
1646118287 .name = "DebugOperation",
1646218288 .opcode = 30,
16463 .operands = &[_]Operand{
16464 .{ .kind = .@"DebugInfo.DebugOperation", .quantifier = .required },
16465 .{ .kind = .LiteralInteger, .quantifier = .variadic },
18289 .operands = &.{
18290 .{ .kind = .id_ref, .quantifier = .required },
18291 .{ .kind = .id_ref, .quantifier = .variadic },
1646618292 },
1646718293 },
1646818294 .{
1646918295 .name = "DebugExpression",
1647018296 .opcode = 31,
16471 .operands = &[_]Operand{
16472 .{ .kind = .IdRef, .quantifier = .variadic },
18297 .operands = &.{
18298 .{ .kind = .id_ref, .quantifier = .variadic },
1647318299 },
1647418300 },
1647518301 .{
1647618302 .name = "DebugMacroDef",
1647718303 .opcode = 32,
16478 .operands = &[_]Operand{
16479 .{ .kind = .IdRef, .quantifier = .required },
16480 .{ .kind = .LiteralInteger, .quantifier = .required },
16481 .{ .kind = .IdRef, .quantifier = .required },
16482 .{ .kind = .IdRef, .quantifier = .optional },
18304 .operands = &.{
18305 .{ .kind = .id_ref, .quantifier = .required },
18306 .{ .kind = .id_ref, .quantifier = .required },
18307 .{ .kind = .id_ref, .quantifier = .required },
18308 .{ .kind = .id_ref, .quantifier = .optional },
1648318309 },
1648418310 },
1648518311 .{
1648618312 .name = "DebugMacroUndef",
1648718313 .opcode = 33,
16488 .operands = &[_]Operand{
16489 .{ .kind = .IdRef, .quantifier = .required },
16490 .{ .kind = .LiteralInteger, .quantifier = .required },
16491 .{ .kind = .IdRef, .quantifier = .required },
18314 .operands = &.{
18315 .{ .kind = .id_ref, .quantifier = .required },
18316 .{ .kind = .id_ref, .quantifier = .required },
18317 .{ .kind = .id_ref, .quantifier = .required },
1649218318 },
1649318319 },
16494 },
16495 .@"NonSemantic.DebugPrintf" => &[_]Instruction{
1649618320 .{
16497 .name = "DebugPrintf",
16498 .opcode = 1,
16499 .operands = &[_]Operand{
16500 .{ .kind = .IdRef, .quantifier = .required },
16501 .{ .kind = .IdRef, .quantifier = .variadic },
18321 .name = "DebugImportedEntity",
18322 .opcode = 34,
18323 .operands = &.{
18324 .{ .kind = .id_ref, .quantifier = .required },
18325 .{ .kind = .id_ref, .quantifier = .required },
18326 .{ .kind = .id_ref, .quantifier = .required },
18327 .{ .kind = .id_ref, .quantifier = .required },
18328 .{ .kind = .id_ref, .quantifier = .required },
18329 .{ .kind = .id_ref, .quantifier = .required },
18330 .{ .kind = .id_ref, .quantifier = .required },
1650218331 },
1650318332 },
16504 },
16505 .SPV_AMD_shader_explicit_vertex_parameter => &[_]Instruction{
1650618333 .{
16507 .name = "InterpolateAtVertexAMD",
16508 .opcode = 1,
16509 .operands = &[_]Operand{
16510 .{ .kind = .IdRef, .quantifier = .required },
16511 .{ .kind = .IdRef, .quantifier = .required },
18334 .name = "DebugSource",
18335 .opcode = 35,
18336 .operands = &.{
18337 .{ .kind = .id_ref, .quantifier = .required },
18338 .{ .kind = .id_ref, .quantifier = .optional },
1651218339 },
1651318340 },
16514 },
16515 .@"NonSemantic.DebugBreak" => &[_]Instruction{
1651618341 .{
16517 .name = "DebugBreak",
16518 .opcode = 1,
16519 .operands = &[_]Operand{},
18342 .name = "DebugFunctionDefinition",
18343 .opcode = 101,
18344 .operands = &.{
18345 .{ .kind = .id_ref, .quantifier = .required },
18346 .{ .kind = .id_ref, .quantifier = .required },
18347 },
18348 },
18349 .{
18350 .name = "DebugSourceContinued",
18351 .opcode = 102,
18352 .operands = &.{
18353 .{ .kind = .id_ref, .quantifier = .required },
18354 },
18355 },
18356 .{
18357 .name = "DebugLine",
18358 .opcode = 103,
18359 .operands = &.{
18360 .{ .kind = .id_ref, .quantifier = .required },
18361 .{ .kind = .id_ref, .quantifier = .required },
18362 .{ .kind = .id_ref, .quantifier = .required },
18363 .{ .kind = .id_ref, .quantifier = .required },
18364 .{ .kind = .id_ref, .quantifier = .required },
18365 },
18366 },
18367 .{
18368 .name = "DebugNoLine",
18369 .opcode = 104,
18370 .operands = &.{},
18371 },
18372 .{
18373 .name = "DebugBuildIdentifier",
18374 .opcode = 105,
18375 .operands = &.{
18376 .{ .kind = .id_ref, .quantifier = .required },
18377 .{ .kind = .id_ref, .quantifier = .required },
18378 },
18379 },
18380 .{
18381 .name = "DebugStoragePath",
18382 .opcode = 106,
18383 .operands = &.{
18384 .{ .kind = .id_ref, .quantifier = .required },
18385 },
18386 },
18387 .{
18388 .name = "DebugEntryPoint",
18389 .opcode = 107,
18390 .operands = &.{
18391 .{ .kind = .id_ref, .quantifier = .required },
18392 .{ .kind = .id_ref, .quantifier = .required },
18393 .{ .kind = .id_ref, .quantifier = .required },
18394 .{ .kind = .id_ref, .quantifier = .required },
18395 },
18396 },
18397 .{
18398 .name = "DebugTypeMatrix",
18399 .opcode = 108,
18400 .operands = &.{
18401 .{ .kind = .id_ref, .quantifier = .required },
18402 .{ .kind = .id_ref, .quantifier = .required },
18403 .{ .kind = .id_ref, .quantifier = .required },
18404 },
1652018405 },
1652118406 },
16522 .zig => &[_]Instruction{
18407 .zig => &.{
1652318408 .{
1652418409 .name = "InvocationGlobal",
1652518410 .opcode = 0,
16526 .operands = &[_]Operand{
16527 .{ .kind = .IdRef, .quantifier = .required },
18411 .operands = &.{
18412 .{ .kind = .id_ref, .quantifier = .required },
1652818413 },
1652918414 },
1653018415 },
src/libs/libcxx.zig+11
......@@ -211,6 +211,10 @@ pub fn buildLibCxx(comp: *Compilation, prog_node: std.Progress.Node) BuildError!
211211 try cflags.append("-DLIBCXX_BUILDING_LIBCXXABI");
212212 try cflags.append("-D_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER");
213213
214 if (target.os.tag == .wasi) {
215 try cflags.append("-fno-exceptions");
216 }
217
214218 try cflags.append("-fvisibility=hidden");
215219 try cflags.append("-fvisibility-inlines-hidden");
216220
......@@ -388,6 +392,9 @@ pub fn buildLibCxxAbi(comp: *Compilation, prog_node: std.Progress.Node) BuildErr
388392 for (libcxxabi_files) |cxxabi_src| {
389393 if (!comp.config.any_non_single_threaded and std.mem.startsWith(u8, cxxabi_src, "src/cxa_thread_atexit.cpp"))
390394 continue;
395 if (target.os.tag == .wasi and
396 (std.mem.eql(u8, cxxabi_src, "src/cxa_exception.cpp") or std.mem.eql(u8, cxxabi_src, "src/cxa_personality.cpp")))
397 continue;
391398
392399 var cflags = std.ArrayList([]const u8).init(arena);
393400
......@@ -403,6 +410,10 @@ pub fn buildLibCxxAbi(comp: *Compilation, prog_node: std.Progress.Node) BuildErr
403410 try cflags.append("-DHAVE___CXA_THREAD_ATEXIT_IMPL");
404411 }
405412
413 if (target.os.tag == .wasi) {
414 try cflags.append("-fno-exceptions");
415 }
416
406417 try cflags.append("-fvisibility=hidden");
407418 try cflags.append("-fvisibility-inlines-hidden");
408419
src/link/Elf/Object.zig+3
......@@ -106,6 +106,9 @@ pub fn parseCommon(
106106 const header_buffer = try Elf.preadAllAlloc(gpa, handle, offset, @sizeOf(elf.Elf64_Ehdr));
107107 defer gpa.free(header_buffer);
108108 self.header = @as(*align(1) const elf.Elf64_Ehdr, @ptrCast(header_buffer)).*;
109 if (!mem.eql(u8, self.header.?.e_ident[0..4], elf.MAGIC)) {
110 return diags.failParse(path, "not an ELF file", .{});
111 }
109112
110113 const em = target.toElfMachine();
111114 if (em != self.header.?.e_machine) {
src/link/SpirV.zig+5-5
......@@ -42,7 +42,7 @@ const Value = @import("../Value.zig");
4242const SpvModule = @import("../codegen/spirv/Module.zig");
4343const Section = @import("../codegen/spirv/Section.zig");
4444const spec = @import("../codegen/spirv/spec.zig");
45const IdResult = spec.IdResult;
45const Id = spec.Id;
4646const Word = spec.Word;
4747
4848const BinaryModule = @import("SpirV/BinaryModule.zig");
......@@ -144,15 +144,15 @@ pub fn updateExports(
144144 const cc = Type.fromInterned(nav_ty).fnCallingConvention(zcu);
145145 const exec_model: spec.ExecutionModel = switch (target.os.tag) {
146146 .vulkan, .opengl => switch (cc) {
147 .spirv_vertex => .Vertex,
148 .spirv_fragment => .Fragment,
149 .spirv_kernel => .GLCompute,
147 .spirv_vertex => .vertex,
148 .spirv_fragment => .fragment,
149 .spirv_kernel => .gl_compute,
150150 // TODO: We should integrate with the Linkage capability and export this function
151151 .spirv_device => return,
152152 else => unreachable,
153153 },
154154 .opencl => switch (cc) {
155 .spirv_kernel => .Kernel,
155 .spirv_kernel => .kernel,
156156 // TODO: We should integrate with the Linkage capability and export this function
157157 .spirv_device => return,
158158 else => unreachable,
src/link/SpirV/BinaryModule.zig+17-17
......@@ -7,7 +7,7 @@ const spec = @import("../../codegen/spirv/spec.zig");
77const Opcode = spec.Opcode;
88const Word = spec.Word;
99const InstructionSet = spec.InstructionSet;
10const ResultId = spec.IdResult;
10const ResultId = spec.Id;
1111
1212const BinaryModule = @This();
1313
......@@ -254,8 +254,8 @@ pub const Parser = struct {
254254 // with ALL operations that return an int or float.
255255 const spec_operands = inst_spec.operands;
256256 if (spec_operands.len >= 2 and
257 spec_operands[0].kind == .IdResultType and
258 spec_operands[1].kind == .IdResult)
257 spec_operands[0].kind == .id_result_type and
258 spec_operands[1].kind == .id_result)
259259 {
260260 if (operands.len < 2) return error.InvalidOperands;
261261 if (binary.arith_type_width.get(@enumFromInt(operands[0]))) |width| {
......@@ -288,8 +288,8 @@ pub const Parser = struct {
288288 var offset: usize = 0;
289289 switch (inst.opcode) {
290290 .OpSpecConstantOp => {
291 assert(operands[0].kind == .IdResultType);
292 assert(operands[1].kind == .IdResult);
291 assert(operands[0].kind == .id_result_type);
292 assert(operands[1].kind == .id_result);
293293 offset = try self.parseOperandsResultIds(binary, inst, operands[0..2], offset, offsets);
294294
295295 if (offset >= inst.operands.len) return error.InvalidPhysicalFormat;
......@@ -297,13 +297,13 @@ pub const Parser = struct {
297297 const spec_index = self.opcode_table.get(mapSetAndOpcode(.core, spec_opcode)) orelse
298298 return error.InvalidPhysicalFormat;
299299 const spec_operands = InstructionSet.core.instructions()[spec_index].operands;
300 assert(spec_operands[0].kind == .IdResultType);
301 assert(spec_operands[1].kind == .IdResult);
300 assert(spec_operands[0].kind == .id_result_type);
301 assert(spec_operands[1].kind == .id_result);
302302 offset = try self.parseOperandsResultIds(binary, inst, spec_operands[2..], offset + 1, offsets);
303303 },
304304 .OpExtInst => {
305 assert(operands[0].kind == .IdResultType);
306 assert(operands[1].kind == .IdResult);
305 assert(operands[0].kind == .id_result_type);
306 assert(operands[1].kind == .id_result);
307307 offset = try self.parseOperandsResultIds(binary, inst, operands[0..2], offset, offsets);
308308
309309 if (offset + 1 >= inst.operands.len) return error.InvalidPhysicalFormat;
......@@ -405,8 +405,8 @@ pub const Parser = struct {
405405 offset += 1;
406406 },
407407 else => switch (kind) {
408 .LiteralInteger, .LiteralFloat => offset += 1,
409 .LiteralString => while (true) {
408 .literal_integer, .literal_float => offset += 1,
409 .literal_string => while (true) {
410410 if (offset >= inst.operands.len) return error.InvalidPhysicalFormat;
411411 const word = inst.operands[offset];
412412 offset += 1;
......@@ -419,7 +419,7 @@ pub const Parser = struct {
419419 break;
420420 }
421421 },
422 .LiteralContextDependentNumber => {
422 .literal_context_dependent_number => {
423423 assert(inst.opcode == .OpConstant or inst.opcode == .OpSpecConstantOp);
424424 const bit_width = binary.arith_type_width.get(@enumFromInt(inst.operands[0])) orelse {
425425 log.err("invalid LiteralContextDependentNumber type {}", .{inst.operands[0]});
......@@ -431,9 +431,9 @@ pub const Parser = struct {
431431 else => unreachable,
432432 };
433433 },
434 .LiteralExtInstInteger => unreachable,
435 .LiteralSpecConstantOpInteger => unreachable,
436 .PairLiteralIntegerIdRef => { // Switch case
434 .literal_ext_inst_integer => unreachable,
435 .literal_spec_constant_op_integer => unreachable,
436 .pair_literal_integer_id_ref => { // Switch case
437437 assert(inst.opcode == .OpSwitch);
438438 const bit_width = binary.arith_type_width.get(@enumFromInt(inst.operands[0])) orelse {
439439 log.err("invalid OpSwitch type {}", .{inst.operands[0]});
......@@ -447,11 +447,11 @@ pub const Parser = struct {
447447 try offsets.append(@intCast(offset));
448448 offset += 1;
449449 },
450 .PairIdRefLiteralInteger => {
450 .pair_id_ref_literal_integer => {
451451 try offsets.append(@intCast(offset));
452452 offset += 2;
453453 },
454 .PairIdRefIdRef => {
454 .pair_id_ref_id_ref => {
455455 try offsets.append(@intCast(offset));
456456 try offsets.append(@intCast(offset + 1));
457457 offset += 2;
src/link/SpirV/deduplicate.zig+11-11
......@@ -7,7 +7,7 @@ const BinaryModule = @import("BinaryModule.zig");
77const Section = @import("../../codegen/spirv/Section.zig");
88const spec = @import("../../codegen/spirv/spec.zig");
99const Opcode = spec.Opcode;
10const ResultId = spec.IdResult;
10const ResultId = spec.Id;
1111const Word = spec.Word;
1212
1313fn canDeduplicate(opcode: Opcode) bool {
......@@ -20,9 +20,9 @@ fn canDeduplicate(opcode: Opcode) bool {
2020 // Debug decoration-style instructions
2121 .OpName, .OpMemberName => true,
2222 else => switch (opcode.class()) {
23 .TypeDeclaration,
24 .ConstantCreation,
25 .Annotation,
23 .type_declaration,
24 .constant_creation,
25 .annotation,
2626 => true,
2727 else => false,
2828 },
......@@ -86,8 +86,8 @@ const ModuleInfo = struct {
8686 if (!canDeduplicate(inst.opcode)) continue;
8787
8888 const result_id_index: u16 = switch (inst.opcode.class()) {
89 .TypeDeclaration, .Annotation, .Debug => 0,
90 .ConstantCreation => 1,
89 .type_declaration, .annotation, .debug => 0,
90 .constant_creation => 1,
9191 else => unreachable,
9292 };
9393
......@@ -101,13 +101,13 @@ const ModuleInfo = struct {
101101 };
102102
103103 switch (inst.opcode.class()) {
104 .Annotation, .Debug => {
104 .annotation, .debug => {
105105 try decorations.append(arena, .{
106106 .target_id = result_id,
107107 .entity = entity,
108108 });
109109 },
110 .TypeDeclaration, .ConstantCreation => {
110 .type_declaration, .constant_creation => {
111111 const entry = try entities.getOrPut(result_id);
112112 if (entry.found_existing) {
113113 log.err("type or constant {f} has duplicate definition", .{result_id});
......@@ -469,7 +469,7 @@ pub fn run(parser: *BinaryModule.Parser, binary: *BinaryModule, progress: std.Pr
469469 const inst_spec = parser.getInstSpec(inst.opcode).?;
470470
471471 const maybe_result_id_offset: ?u16 = for (0..2) |i| {
472 if (inst_spec.operands.len > i and inst_spec.operands[i].kind == .IdResult) {
472 if (inst_spec.operands.len > i and inst_spec.operands[i].kind == .id_result) {
473473 break @intCast(i);
474474 }
475475 } else null;
......@@ -488,7 +488,7 @@ pub fn run(parser: *BinaryModule.Parser, binary: *BinaryModule, progress: std.Pr
488488 }
489489
490490 switch (inst.opcode.class()) {
491 .Annotation, .Debug => {
491 .annotation, .debug => {
492492 // For decoration-style instructions, only emit them
493493 // if the target is not removed.
494494 const target: ResultId = @enumFromInt(inst.operands[0]);
......@@ -515,7 +515,7 @@ pub fn run(parser: *BinaryModule.Parser, binary: *BinaryModule, progress: std.Pr
515515 // Debug and Annotation instructions don't need the forward pointer, and it
516516 // messes up the logical layout of the module.
517517 switch (inst.opcode.class()) {
518 .TypeDeclaration, .ConstantCreation, .Memory => {},
518 .type_declaration, .constant_creation, .memory => {},
519519 else => continue,
520520 }
521521
src/link/SpirV/lower_invocation_globals.zig+2-2
......@@ -6,7 +6,7 @@ const log = std.log.scoped(.spirv_link);
66const BinaryModule = @import("BinaryModule.zig");
77const Section = @import("../../codegen/spirv/Section.zig");
88const spec = @import("../../codegen/spirv/spec.zig");
9const ResultId = spec.IdResult;
9const ResultId = spec.Id;
1010const Word = spec.Word;
1111
1212/// This structure contains all the stuff that we need to parse from the module in
......@@ -626,7 +626,7 @@ const ModuleBuilder = struct {
626626 try self.section.emit(self.arena, .OpVariable, .{
627627 .id_result_type = global_info.ty,
628628 .id_result = id,
629 .storage_class = .Function,
629 .storage_class = .function,
630630 .initializer = null,
631631 });
632632 }
src/link/SpirV/prune_unused.zig+10-10
......@@ -15,14 +15,14 @@ const BinaryModule = @import("BinaryModule.zig");
1515const Section = @import("../../codegen/spirv/Section.zig");
1616const spec = @import("../../codegen/spirv/spec.zig");
1717const Opcode = spec.Opcode;
18const ResultId = spec.IdResult;
18const ResultId = spec.Id;
1919const Word = spec.Word;
2020
2121/// Return whether a particular opcode's instruction can be pruned.
2222/// These are idempotent instructions at globals scope and instructions
2323/// within functions that do not have any side effects.
2424/// The opcodes that return true here do not necessarily need to
25/// have an .IdResult. If they don't, then they are regarded
25/// have an .Id. If they don't, then they are regarded
2626/// as 'decoration'-style instructions that don't keep their
2727/// operands alive, but will be emitted if they are.
2828fn canPrune(op: Opcode) bool {
......@@ -34,12 +34,12 @@ fn canPrune(op: Opcode) bool {
3434 // instruction has any non-trivial side effects (like OpLoad
3535 // with the Volatile memory semantics).
3636 return switch (op.class()) {
37 .TypeDeclaration,
38 .Conversion,
39 .Arithmetic,
40 .RelationalAndLogical,
41 .Bit,
42 .Annotation,
37 .type_declaration,
38 .conversion,
39 .arithmetic,
40 .relational_and_logical,
41 .bit,
42 .annotation,
4343 => true,
4444 else => switch (op) {
4545 .OpFunction,
......@@ -111,7 +111,7 @@ const ModuleInfo = struct {
111111
112112 // Result-id can only be the first or second operand
113113 const maybe_result_id: ?ResultId = for (0..2) |i| {
114 if (inst_spec.operands.len > i and inst_spec.operands[i].kind == .IdResult) {
114 if (inst_spec.operands.len > i and inst_spec.operands[i].kind == .id_result) {
115115 break @enumFromInt(inst.operands[i]);
116116 }
117117 } else null;
......@@ -305,7 +305,7 @@ pub fn run(parser: *BinaryModule.Parser, binary: *BinaryModule, progress: std.Pr
305305
306306 // Result-id can only be the first or second operand
307307 const result_id: ResultId = for (0..2) |i| {
308 if (inst_spec.operands.len > i and inst_spec.operands[i].kind == .IdResult) {
308 if (inst_spec.operands.len > i and inst_spec.operands[i].kind == .id_result) {
309309 break @enumFromInt(inst.operands[i]);
310310 }
311311 } else {
src/link/Wasm/Flush.zig+1-1
......@@ -146,7 +146,7 @@ pub fn finish(f: *Flush, wasm: *Wasm) !void {
146146 const int_tag_ty = Zcu.Type.fromInterned(data.ip_index).intTagType(zcu);
147147 gop.value_ptr.* = .{ .tag_name = .{
148148 .symbol_name = try wasm.internStringFmt("__zig_tag_name_{d}", .{@intFromEnum(data.ip_index)}),
149 .type_index = try wasm.internFunctionType(.Unspecified, &.{int_tag_ty.ip_index}, .slice_const_u8_sentinel_0, target),
149 .type_index = try wasm.internFunctionType(.auto, &.{int_tag_ty.ip_index}, .slice_const_u8_sentinel_0, target),
150150 .table_index = @intCast(wasm.tag_name_offs.items.len),
151151 } };
152152 try wasm.functions.put(gpa, .fromZcuFunc(wasm, @enumFromInt(gop.index)), {});
src/target.zig+9-3
......@@ -868,10 +868,16 @@ pub inline fn backendSupportsFeature(backend: std.builtin.CompilerBackend, compt
868868 else => false,
869869 },
870870 .separate_thread => switch (backend) {
871 // Supports a separate thread but does not support N separate
872 // threads because they would all just be locking the same mutex to
873 // protect Builder.
871874 .stage2_llvm => false,
872 .stage2_c, .stage2_wasm, .stage2_x86_64 => true,
873 // TODO: most self-hosted backends should be able to support this without too much work.
874 else => false,
875 // Same problem. Frontend needs to allow this backend to run in the
876 // linker thread.
877 .stage2_spirv => false,
878 // Please do not make any more exceptions. Backends must support
879 // being run in a separate thread from now on.
880 else => true,
875881 },
876882 };
877883}
test/behavior/fn.zig+4-4
......@@ -153,9 +153,9 @@ test "extern struct with stdcallcc fn pointer" {
153153 if (builtin.zig_backend == .stage2_spirv) return error.SkipZigTest;
154154
155155 const S = extern struct {
156 ptr: *const fn () callconv(if (builtin.target.cpu.arch == .x86) .Stdcall else .c) i32,
156 ptr: *const fn () callconv(if (builtin.target.cpu.arch == .x86) .{ .x86_stdcall = .{} } else .c) i32,
157157
158 fn foo() callconv(if (builtin.target.cpu.arch == .x86) .Stdcall else .c) i32 {
158 fn foo() callconv(if (builtin.target.cpu.arch == .x86) .{ .x86_stdcall = .{} } else .c) i32 {
159159 return 1234;
160160 }
161161 };
......@@ -170,8 +170,8 @@ fn fComplexCallconvRet(x: u32) callconv(blk: {
170170 const s: struct { n: u32 } = .{ .n = nComplexCallconv };
171171 break :blk switch (s.n) {
172172 0 => .c,
173 1 => .Inline,
174 else => .Unspecified,
173 1 => .@"inline",
174 else => .auto,
175175 };
176176}) struct { x: u32 } {
177177 return .{ .x = x * x };
test/behavior/switch_loop.zig+10
......@@ -216,3 +216,13 @@ test "switch loop with pointer capture" {
216216 try S.doTheTest();
217217 try comptime S.doTheTest();
218218}
219
220test "unanalyzed continue with operand" {
221 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
222
223 @setRuntimeSafety(false);
224 label: switch (false) {
225 false => if (false) continue :label true,
226 true => {},
227 }
228}
test/behavior/type.zig+1-1
......@@ -670,7 +670,7 @@ test "reified function type params initialized with field pointer" {
670670 };
671671 const Bar = @Type(.{
672672 .@"fn" = .{
673 .calling_convention = .Unspecified,
673 .calling_convention = .auto,
674674 .is_generic = false,
675675 .is_var_args = false,
676676 .return_type = void,
test/c_abi/main.zig+1-1
......@@ -5763,7 +5763,7 @@ test "f128 f128 struct" {
57635763}
57645764
57655765// The stdcall attribute on C functions is ignored when compiled on non-x86
5766const stdcall_callconv: std.builtin.CallingConvention = if (builtin.cpu.arch == .x86) .Stdcall else .C;
5766const stdcall_callconv: std.builtin.CallingConvention = if (builtin.cpu.arch == .x86) .{ .x86_stdcall = .{} } else .c;
57675767
57685768extern fn stdcall_scalars(i8, i16, i32, f32, f64) callconv(stdcall_callconv) void;
57695769test "Stdcall ABI scalars" {
test/cases/compile_errors/callconv_from_global_variable.zig+1-1
......@@ -1,4 +1,4 @@
1var cc: @import("std").builtin.CallingConvention = .C;
1var cc: @import("std").builtin.CallingConvention = .c;
22export fn foo() callconv(cc) void {}
33
44// error
test/cases/compile_errors/implicit_cast_of_error_set_not_a_subset.zig+1-1
......@@ -12,5 +12,5 @@ fn foo(set1: Set1) void {
1212// backend=stage2
1313// target=native
1414//
15// :7:21: error: expected type 'error{C,A}', found 'error{A,B}'
15// :7:21: error: expected type 'error{A,C}', found 'error{A,B}'
1616// :7:21: note: 'error.B' not a member of destination error set
test/cases/compile_errors/reify_type.Fn_with_is_generic_true.zig+1-1
......@@ -1,6 +1,6 @@
11const Foo = @Type(.{
22 .@"fn" = .{
3 .calling_convention = .Unspecified,
3 .calling_convention = .auto,
44 .is_generic = true,
55 .is_var_args = false,
66 .return_type = u0,
test/cases/compile_errors/reify_type.Fn_with_is_var_args_true_and_non-C_callconv.zig+1-1
......@@ -1,6 +1,6 @@
11const Foo = @Type(.{
22 .@"fn" = .{
3 .calling_convention = .Unspecified,
3 .calling_convention = .auto,
44 .is_generic = false,
55 .is_var_args = true,
66 .return_type = u0,
test/cases/compile_errors/reify_type.Fn_with_return_type_null.zig+1-1
......@@ -1,6 +1,6 @@
11const Foo = @Type(.{
22 .@"fn" = .{
3 .calling_convention = .Unspecified,
3 .calling_convention = .auto,
44 .is_generic = false,
55 .is_var_args = false,
66 .return_type = null,
test/src/LlvmIr.zig+14-12
......@@ -90,19 +90,21 @@ pub fn addCase(self: *LlvmIr, case: TestCase) void {
9090
9191 const obj = self.b.addObject(.{
9292 .name = "test",
93 .root_source_file = self.b.addWriteFiles().add("test.zig", case.source),
94 .use_llvm = true,
93 .root_module = self.b.createModule(.{
94 .root_source_file = self.b.addWriteFiles().add("test.zig", case.source),
9595
96 .code_model = case.params.code_model,
97 .error_tracing = case.params.error_tracing,
98 .omit_frame_pointer = case.params.omit_frame_pointer,
99 .optimize = case.params.optimize,
100 .pic = case.params.pic,
101 .sanitize_thread = case.params.sanitize_thread,
102 .single_threaded = case.params.single_threaded,
103 .strip = case.params.strip,
104 .target = target,
105 .unwind_tables = case.params.unwind_tables,
96 .code_model = case.params.code_model,
97 .error_tracing = case.params.error_tracing,
98 .omit_frame_pointer = case.params.omit_frame_pointer,
99 .optimize = case.params.optimize,
100 .pic = case.params.pic,
101 .sanitize_thread = case.params.sanitize_thread,
102 .single_threaded = case.params.single_threaded,
103 .strip = case.params.strip,
104 .target = target,
105 .unwind_tables = case.params.unwind_tables,
106 }),
107 .use_llvm = true,
106108 });
107109
108110 obj.dll_export_fns = case.params.dll_export_fns;
test/standalone/c_embed_path/build.zig+4-2
......@@ -8,8 +8,10 @@ pub fn build(b: *std.Build) void {
88
99 const exe = b.addExecutable(.{
1010 .name = "test",
11 .target = b.graph.host,
12 .optimize = optimize,
11 .root_module = b.createModule(.{
12 .target = b.graph.host,
13 .optimize = optimize,
14 }),
1315 });
1416 exe.addCSourceFile(.{
1517 .file = b.path("test.c"),
test/standalone/config_header/build.zig+1-1
......@@ -2,7 +2,7 @@ const std = @import("std");
22
33pub fn build(b: *std.Build) void {
44 const config_header = b.addConfigHeader(
5 .{ .style = .{ .autoconf = b.path("config.h.in") } },
5 .{ .style = .{ .autoconf_undef = b.path("config.h.in") } },
66 .{
77 .SOME_NO = null,
88 .SOME_TRUE = true,
test/tests.zig+9-4
......@@ -438,7 +438,7 @@ const test_targets = blk: {
438438 .os_tag = .linux,
439439 .abi = .none,
440440 },
441 // https://github.com/ziglang/zig/issues/23696
441 // https://github.com/ziglang/zig/issues/21646
442442 .skip_modules = &.{"std"},
443443 },
444444 .{
......@@ -448,7 +448,7 @@ const test_targets = blk: {
448448 .abi = .musl,
449449 },
450450 .link_libc = true,
451 // https://github.com/ziglang/zig/issues/23696
451 // https://github.com/ziglang/zig/issues/21646
452452 .skip_modules = &.{"std"},
453453 },
454454 .{
......@@ -459,7 +459,7 @@ const test_targets = blk: {
459459 },
460460 .linkage = .dynamic,
461461 .link_libc = true,
462 // https://github.com/ziglang/zig/issues/23696
462 // https://github.com/ziglang/zig/issues/21646
463463 .skip_modules = &.{"std"},
464464 .extra_target = true,
465465 },
......@@ -470,7 +470,7 @@ const test_targets = blk: {
470470 .abi = .gnu,
471471 },
472472 .link_libc = true,
473 // https://github.com/ziglang/zig/issues/23696
473 // https://github.com/ziglang/zig/issues/21646
474474 .skip_modules = &.{"std"},
475475 },
476476
......@@ -2369,6 +2369,11 @@ pub fn addModuleTests(b: *std.Build, options: ModuleTestOptions) *Step {
23692369 if (options.skip_single_threaded and test_target.single_threaded == true)
23702370 continue;
23712371
2372 // https://github.com/ziglang/zig/issues/24405
2373 if (!builtin.cpu.arch.isLoongArch() and target.cpu.arch.isLoongArch() and
2374 (mem.eql(u8, options.name, "behavior") or mem.eql(u8, options.name, "std")))
2375 continue;
2376
23722377 // TODO get compiler-rt tests passing for self-hosted backends.
23732378 if ((target.cpu.arch != .x86_64 or target.ofmt != .elf) and
23742379 test_target.use_llvm == false and mem.eql(u8, options.name, "compiler-rt"))
tools/docgen.zig+1-1
......@@ -10,7 +10,7 @@ const mem = std.mem;
1010const testing = std.testing;
1111const Allocator = std.mem.Allocator;
1212const getExternalExecutor = std.zig.system.getExternalExecutor;
13const fatal = std.zig.fatal;
13const fatal = std.process.fatal;
1414
1515const max_doc_file_size = 10 * 1024 * 1024;
1616
tools/doctest.zig+1-1
......@@ -1,6 +1,6 @@
11const builtin = @import("builtin");
22const std = @import("std");
3const fatal = std.zig.fatal;
3const fatal = std.process.fatal;
44const mem = std.mem;
55const fs = std.fs;
66const process = std.process;
tools/gen_spirv_spec.zig+155-145
......@@ -59,26 +59,28 @@ const set_names = std.StaticStringMap([]const u8).initComptime(.{
5959 .{ "nonsemantic.debugprintf", "NonSemantic.DebugPrintf" },
6060 .{ "spv-amd-shader-explicit-vertex-parameter", "SPV_AMD_shader_explicit_vertex_parameter" },
6161 .{ "nonsemantic.debugbreak", "NonSemantic.DebugBreak" },
62 .{ "tosa.001000.1", "SPV_EXT_INST_TYPE_TOSA_001000_1" },
6263 .{ "zig", "zig" },
6364});
6465
66var arena = std.heap.ArenaAllocator.init(std.heap.smp_allocator);
67const allocator = arena.allocator();
68
6569pub fn main() !void {
66 var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator);
6770 defer arena.deinit();
68 const a = arena.allocator();
6971
70 const args = try std.process.argsAlloc(a);
72 const args = try std.process.argsAlloc(allocator);
7173 if (args.len != 3) {
7274 usageAndExit(args[0], 1);
7375 }
7476
75 const json_path = try std.fs.path.join(a, &.{ args[1], "include/spirv/unified1/" });
77 const json_path = try std.fs.path.join(allocator, &.{ args[1], "include/spirv/unified1/" });
7678 const dir = try std.fs.cwd().openDir(json_path, .{ .iterate = true });
7779
78 const core_spec = try readRegistry(CoreRegistry, a, dir, "spirv.core.grammar.json");
80 const core_spec = try readRegistry(CoreRegistry, dir, "spirv.core.grammar.json");
7981 std.sort.block(Instruction, core_spec.instructions, CmpInst{}, CmpInst.lt);
8082
81 var exts = std.ArrayList(Extension).init(a);
83 var exts = std.ArrayList(Extension).init(allocator);
8284
8385 var it = dir.iterate();
8486 while (try it.next()) |entry| {
......@@ -86,18 +88,43 @@ pub fn main() !void {
8688 continue;
8789 }
8890
89 try readExtRegistry(&exts, a, dir, entry.name);
91 try readExtRegistry(&exts, dir, entry.name);
9092 }
9193
92 try readExtRegistry(&exts, a, std.fs.cwd(), args[2]);
94 try readExtRegistry(&exts, std.fs.cwd(), args[2]);
95
96 const output_buf = try allocator.alloc(u8, 1024 * 1024);
97 var fbs = std.io.fixedBufferStream(output_buf);
98 var adapter = fbs.writer().adaptToNewApi();
99 const w = &adapter.new_interface;
100 try render(w, core_spec, exts.items);
101 var output: [:0]u8 = @ptrCast(fbs.getWritten());
102 output[output.len] = 0;
103
104 var tree = try std.zig.Ast.parse(allocator, output, .zig);
105 var color: std.zig.Color = .on;
93106
94 var buffer: [4000]u8 = undefined;
95 var w = std.fs.File.stdout().writerStreaming(&buffer);
96 try render(&w, a, core_spec, exts.items);
97 try w.flush();
107 if (tree.errors.len != 0) {
108 try std.zig.printAstErrorsToStderr(allocator, tree, "", color);
109 return;
110 }
111
112 var zir = try std.zig.AstGen.generate(allocator, tree);
113 if (zir.hasCompileErrors()) {
114 var wip_errors: std.zig.ErrorBundle.Wip = undefined;
115 try wip_errors.init(allocator);
116 defer wip_errors.deinit();
117 try wip_errors.addZirErrorMessages(zir, tree, output, "");
118 var error_bundle = try wip_errors.toOwnedBundle("");
119 defer error_bundle.deinit(allocator);
120 error_bundle.renderToStdErr(color.renderOptions());
121 }
122
123 const formatted_output = try tree.render(allocator);
124 _ = try std.fs.File.stdout().write(formatted_output);
98125}
99126
100fn readExtRegistry(exts: *std.ArrayList(Extension), a: Allocator, dir: std.fs.Dir, sub_path: []const u8) !void {
127fn readExtRegistry(exts: *std.ArrayList(Extension), dir: std.fs.Dir, sub_path: []const u8) !void {
101128 const filename = std.fs.path.basename(sub_path);
102129 if (!std.mem.startsWith(u8, filename, "extinst.")) {
103130 return;
......@@ -105,22 +132,22 @@ fn readExtRegistry(exts: *std.ArrayList(Extension), a: Allocator, dir: std.fs.Di
105132
106133 std.debug.assert(std.mem.endsWith(u8, filename, ".grammar.json"));
107134 const name = filename["extinst.".len .. filename.len - ".grammar.json".len];
108 const spec = try readRegistry(ExtensionRegistry, a, dir, sub_path);
135 const spec = try readRegistry(ExtensionRegistry, dir, sub_path);
109136
110137 std.sort.block(Instruction, spec.instructions, CmpInst{}, CmpInst.lt);
111138
112139 try exts.append(.{ .name = set_names.get(name).?, .spec = spec });
113140}
114141
115fn readRegistry(comptime RegistryType: type, a: Allocator, dir: std.fs.Dir, path: []const u8) !RegistryType {
116 const spec = try dir.readFileAlloc(a, path, std.math.maxInt(usize));
142fn readRegistry(comptime RegistryType: type, dir: std.fs.Dir, path: []const u8) !RegistryType {
143 const spec = try dir.readFileAlloc(allocator, path, std.math.maxInt(usize));
117144 // Required for json parsing.
118145 @setEvalBranchQuota(10000);
119146
120 var scanner = std.json.Scanner.initCompleteInput(a, spec);
147 var scanner = std.json.Scanner.initCompleteInput(allocator, spec);
121148 var diagnostics = std.json.Diagnostics{};
122149 scanner.enableDiagnostics(&diagnostics);
123 const parsed = std.json.parseFromTokenSource(RegistryType, a, &scanner, .{}) catch |err| {
150 const parsed = std.json.parseFromTokenSource(RegistryType, allocator, &scanner, .{}) catch |err| {
124151 std.debug.print("{s}:{}:{}:\n", .{ path, diagnostics.getLine(), diagnostics.getColumn() });
125152 return err;
126153 };
......@@ -129,11 +156,8 @@ fn readRegistry(comptime RegistryType: type, a: Allocator, dir: std.fs.Dir, path
129156
130157/// Returns a set with types that require an extra struct for the `Instruction` interface
131158/// to the spir-v spec, or whether the original type can be used.
132fn extendedStructs(
133 a: Allocator,
134 kinds: []const OperandKind,
135) !ExtendedStructSet {
136 var map = ExtendedStructSet.init(a);
159fn extendedStructs(kinds: []const OperandKind) !ExtendedStructSet {
160 var map = ExtendedStructSet.init(allocator);
137161 try map.ensureTotalCapacity(@as(u32, @intCast(kinds.len)));
138162
139163 for (kinds) |kind| {
......@@ -167,7 +191,7 @@ fn tagPriorityScore(tag: []const u8) usize {
167191 }
168192}
169193
170fn render(writer: *std.io.Writer, a: Allocator, registry: CoreRegistry, extensions: []const Extension) !void {
194fn render(writer: *std.io.Writer, registry: CoreRegistry, extensions: []const Extension) !void {
171195 try writer.writeAll(
172196 \\//! This file is auto-generated by tools/gen_spirv_spec.zig.
173197 \\
......@@ -185,22 +209,17 @@ fn render(writer: *std.io.Writer, a: Allocator, registry: CoreRegistry, extensio
185209 \\};
186210 \\
187211 \\pub const Word = u32;
188 \\pub const IdResult = enum(Word) {
212 \\pub const Id = enum(Word) {
189213 \\ none,
190214 \\ _,
191215 \\
192 \\ pub fn format(self: IdResult, writer: *std.io.Writer) std.io.Writer.Error!void {
216 \\ pub fn format(self: Id, writer: *std.io.Writer) std.io.Writer.Error!void {
193217 \\ switch (self) {
194218 \\ .none => try writer.writeAll("(none)"),
195219 \\ else => try writer.print("%{d}", .{@intFromEnum(self)}),
196220 \\ }
197221 \\ }
198222 \\};
199 \\pub const IdResultType = IdResult;
200 \\pub const IdRef = IdResult;
201 \\
202 \\pub const IdMemorySemantics = IdRef;
203 \\pub const IdScope = IdRef;
204223 \\
205224 \\pub const LiteralInteger = Word;
206225 \\pub const LiteralFloat = Word;
......@@ -215,9 +234,9 @@ fn render(writer: *std.io.Writer, a: Allocator, registry: CoreRegistry, extensio
215234 \\};
216235 \\pub const LiteralExtInstInteger = struct{ inst: Word };
217236 \\pub const LiteralSpecConstantOpInteger = struct { opcode: Opcode };
218 \\pub const PairLiteralIntegerIdRef = struct { value: LiteralInteger, label: IdRef };
219 \\pub const PairIdRefLiteralInteger = struct { target: IdRef, member: LiteralInteger };
220 \\pub const PairIdRefIdRef = [2]IdRef;
237 \\pub const PairLiteralIntegerIdRef = struct { value: LiteralInteger, label: Id };
238 \\pub const PairIdRefLiteralInteger = struct { target: Id, member: LiteralInteger };
239 \\pub const PairIdRefIdRef = [2]Id;
221240 \\
222241 \\pub const Quantifier = enum {
223242 \\ required,
......@@ -255,7 +274,7 @@ fn render(writer: *std.io.Writer, a: Allocator, registry: CoreRegistry, extensio
255274 );
256275
257276 try writer.print(
258 \\pub const version = Version{{ .major = {}, .minor = {}, .patch = {} }};
277 \\pub const version: Version = .{{ .major = {}, .minor = {}, .patch = {} }};
259278 \\pub const magic_number: Word = {s};
260279 \\
261280 \\
......@@ -266,7 +285,7 @@ fn render(writer: *std.io.Writer, a: Allocator, registry: CoreRegistry, extensio
266285 // Merge the operand kinds from all extensions together.
267286 // var all_operand_kinds = std.ArrayList(OperandKind).init(a);
268287 // try all_operand_kinds.appendSlice(registry.operand_kinds);
269 var all_operand_kinds = OperandKindMap.init(a);
288 var all_operand_kinds = OperandKindMap.init(allocator);
270289 for (registry.operand_kinds) |kind| {
271290 try all_operand_kinds.putNoClobber(.{ "core", kind.kind }, kind);
272291 }
......@@ -279,35 +298,33 @@ fn render(writer: *std.io.Writer, a: Allocator, registry: CoreRegistry, extensio
279298 try all_operand_kinds.ensureUnusedCapacity(ext.spec.operand_kinds.len);
280299 for (ext.spec.operand_kinds) |kind| {
281300 var new_kind = kind;
282 new_kind.kind = try std.mem.join(a, ".", &.{ ext.name, kind.kind });
301 new_kind.kind = try std.mem.join(allocator, ".", &.{ ext.name, kind.kind });
283302 try all_operand_kinds.putNoClobber(.{ ext.name, kind.kind }, new_kind);
284303 }
285304 }
286305
287 const extended_structs = try extendedStructs(a, all_operand_kinds.values());
306 const extended_structs = try extendedStructs(all_operand_kinds.values());
288307 // Note: extensions don't seem to have class.
289 try renderClass(writer, a, registry.instructions);
308 try renderClass(writer, registry.instructions);
290309 try renderOperandKind(writer, all_operand_kinds.values());
291 try renderOpcodes(writer, a, registry.instructions, extended_structs);
292 try renderOperandKinds(writer, a, all_operand_kinds.values(), extended_structs);
293 try renderInstructionSet(writer, a, registry, extensions, all_operand_kinds);
310 try renderOpcodes(writer, registry.instructions, extended_structs);
311 try renderOperandKinds(writer, all_operand_kinds.values(), extended_structs);
312 try renderInstructionSet(writer, registry, extensions, all_operand_kinds);
294313}
295314
296315fn renderInstructionSet(
297316 writer: anytype,
298 a: Allocator,
299317 core: CoreRegistry,
300318 extensions: []const Extension,
301319 all_operand_kinds: OperandKindMap,
302320) !void {
303 _ = a;
304321 try writer.writeAll(
305322 \\pub const InstructionSet = enum {
306323 \\ core,
307324 );
308325
309326 for (extensions) |ext| {
310 try writer.print("{p},\n", .{std.zig.fmtId(ext.name)});
327 try writer.print("{f},\n", .{formatId(ext.name)});
311328 }
312329
313330 try writer.writeAll(
......@@ -340,14 +357,14 @@ fn renderInstructionsCase(
340357 // but there aren't so many total aliases and that would add more overhead in total. We will
341358 // just filter those out when needed.
342359
343 try writer.print(".{p_} => &[_]Instruction{{\n", .{std.zig.fmtId(set_name)});
360 try writer.print(".{f} => &.{{\n", .{formatId(set_name)});
344361
345362 for (instructions) |inst| {
346363 try writer.print(
347364 \\.{{
348365 \\ .name = "{s}",
349366 \\ .opcode = {},
350 \\ .operands = &[_]Operand{{
367 \\ .operands = &.{{
351368 \\
352369 , .{ inst.opname, inst.opcode });
353370
......@@ -362,7 +379,7 @@ fn renderInstructionsCase(
362379
363380 const kind = all_operand_kinds.get(.{ set_name, operand.kind }) orelse
364381 all_operand_kinds.get(.{ "core", operand.kind }).?;
365 try writer.print(".{{.kind = .{p_}, .quantifier = .{s}}},\n", .{ std.zig.fmtId(kind.kind), quantifier });
382 try writer.print(".{{.kind = .{f}, .quantifier = .{s}}},\n", .{ formatId(kind.kind), quantifier });
366383 }
367384
368385 try writer.writeAll(
......@@ -378,54 +395,69 @@ fn renderInstructionsCase(
378395 );
379396}
380397
381fn renderClass(writer: anytype, a: Allocator, instructions: []const Instruction) !void {
382 var class_map = std.StringArrayHashMap(void).init(a);
398fn renderClass(writer: anytype, instructions: []const Instruction) !void {
399 var class_map = std.StringArrayHashMap(void).init(allocator);
383400
384401 for (instructions) |inst| {
385 if (std.mem.eql(u8, inst.class.?, "@exclude")) {
386 continue;
387 }
402 if (std.mem.eql(u8, inst.class.?, "@exclude")) continue;
388403 try class_map.put(inst.class.?, {});
389404 }
390405
391406 try writer.writeAll("pub const Class = enum {\n");
392407 for (class_map.keys()) |class| {
393 try renderInstructionClass(writer, class);
394 try writer.writeAll(",\n");
408 try writer.print("{f},\n", .{formatId(class)});
395409 }
396410 try writer.writeAll("};\n\n");
397411}
398412
399fn renderInstructionClass(writer: anytype, class: []const u8) !void {
400 // Just assume that these wont clobber zig builtin types.
401 var prev_was_sep = true;
402 for (class) |c| {
403 switch (c) {
404 '-', '_' => prev_was_sep = true,
405 else => if (prev_was_sep) {
406 try writer.writeByte(std.ascii.toUpper(c));
407 prev_was_sep = false;
408 } else {
409 try writer.writeByte(std.ascii.toLower(c));
410 },
413const Formatter = struct {
414 data: []const u8,
415
416 fn format(f: Formatter, writer: *std.io.Writer) std.io.Writer.Error!void {
417 var id_buf: [128]u8 = undefined;
418 var fbs = std.io.fixedBufferStream(&id_buf);
419 const fw = fbs.writer();
420 for (f.data, 0..) |c, i| {
421 switch (c) {
422 '-', '_', '.', '~', ' ' => fw.writeByte('_') catch return error.WriteFailed,
423 'a'...'z', '0'...'9' => fw.writeByte(c) catch return error.WriteFailed,
424 'A'...'Z' => {
425 if ((i > 0 and std.ascii.isLower(f.data[i - 1])) or
426 (i > 0 and std.ascii.isUpper(f.data[i - 1]) and
427 i + 1 < f.data.len and std.ascii.isLower(f.data[i + 1])))
428 {
429 _ = fw.write(&.{ '_', std.ascii.toLower(c) }) catch return error.WriteFailed;
430 } else {
431 fw.writeByte(std.ascii.toLower(c)) catch return error.WriteFailed;
432 }
433 },
434 else => unreachable,
435 }
411436 }
437
438 // make sure that this won't clobber with zig keywords
439 try writer.print("{f}", .{std.zig.fmtId(fbs.getWritten())});
412440 }
441};
442
443fn formatId(identifier: []const u8) std.fmt.Alt(Formatter, Formatter.format) {
444 return .{ .data = .{ .data = identifier } };
413445}
414446
415447fn renderOperandKind(writer: anytype, operands: []const OperandKind) !void {
416448 try writer.writeAll(
417449 \\pub const OperandKind = enum {
418 \\ Opcode,
450 \\ opcode,
419451 \\
420452 );
421453 for (operands) |operand| {
422 try writer.print("{p},\n", .{std.zig.fmtId(operand.kind)});
454 try writer.print("{f},\n", .{formatId(operand.kind)});
423455 }
424456 try writer.writeAll(
425457 \\
426458 \\pub fn category(self: OperandKind) OperandCategory {
427459 \\ return switch (self) {
428 \\ .Opcode => .literal,
460 \\ .opcode => .literal,
429461 \\
430462 );
431463 for (operands) |operand| {
......@@ -436,26 +468,26 @@ fn renderOperandKind(writer: anytype, operands: []const OperandKind) !void {
436468 .Literal => "literal",
437469 .Composite => "composite",
438470 };
439 try writer.print(".{p_} => .{s},\n", .{ std.zig.fmtId(operand.kind), cat });
471 try writer.print(".{f} => .{s},\n", .{ formatId(operand.kind), cat });
440472 }
441473 try writer.writeAll(
442474 \\ };
443475 \\}
444476 \\pub fn enumerants(self: OperandKind) []const Enumerant {
445477 \\ return switch (self) {
446 \\ .Opcode => unreachable,
478 \\ .opcode => unreachable,
447479 \\
448480 );
449481 for (operands) |operand| {
450482 switch (operand.category) {
451483 .BitEnum, .ValueEnum => {},
452484 else => {
453 try writer.print(".{p_} => unreachable,\n", .{std.zig.fmtId(operand.kind)});
485 try writer.print(".{f} => unreachable,\n", .{formatId(operand.kind)});
454486 continue;
455487 },
456488 }
457489
458 try writer.print(".{p_} => &[_]Enumerant{{", .{std.zig.fmtId(operand.kind)});
490 try writer.print(".{f} => &.{{", .{formatId(operand.kind)});
459491 for (operand.enumerants.?) |enumerant| {
460492 if (enumerant.value == .bitflag and std.mem.eql(u8, enumerant.enumerant, "None")) {
461493 continue;
......@@ -474,32 +506,30 @@ fn renderEnumerant(writer: anytype, enumerant: Enumerant) !void {
474506 .bitflag => |flag| try writer.writeAll(flag),
475507 .int => |int| try writer.print("{}", .{int}),
476508 }
477 try writer.writeAll(", .parameters = &[_]OperandKind{");
509 try writer.writeAll(", .parameters = &.{");
478510 for (enumerant.parameters, 0..) |param, i| {
479511 if (i != 0)
480512 try writer.writeAll(", ");
481513 // Note, param.quantifier will always be one.
482 try writer.print(".{p_}", .{std.zig.fmtId(param.kind)});
514 try writer.print(".{f}", .{formatId(param.kind)});
483515 }
484516 try writer.writeAll("}}");
485517}
486518
487519fn renderOpcodes(
488520 writer: anytype,
489 a: Allocator,
490521 instructions: []const Instruction,
491522 extended_structs: ExtendedStructSet,
492523) !void {
493 var inst_map = std.AutoArrayHashMap(u32, usize).init(a);
524 var inst_map = std.AutoArrayHashMap(u32, usize).init(allocator);
494525 try inst_map.ensureTotalCapacity(instructions.len);
495526
496 var aliases = std.ArrayList(struct { inst: usize, alias: usize }).init(a);
527 var aliases = std.ArrayList(struct { inst: usize, alias: usize }).init(allocator);
497528 try aliases.ensureTotalCapacity(instructions.len);
498529
499530 for (instructions, 0..) |inst, i| {
500 if (std.mem.eql(u8, inst.class.?, "@exclude")) {
501 continue;
502 }
531 if (std.mem.eql(u8, inst.class.?, "@exclude")) continue;
532
503533 const result = inst_map.getOrPutAssumeCapacity(inst.opcode);
504534 if (!result.found_existing) {
505535 result.value_ptr.* = i;
......@@ -525,7 +555,7 @@ fn renderOpcodes(
525555 try writer.writeAll("pub const Opcode = enum(u16) {\n");
526556 for (instructions_indices) |i| {
527557 const inst = instructions[i];
528 try writer.print("{p} = {},\n", .{ std.zig.fmtId(inst.opname), inst.opcode });
558 try writer.print("{f} = {},\n", .{ std.zig.fmtId(inst.opname), inst.opcode });
529559 }
530560
531561 try writer.writeAll(
......@@ -533,9 +563,9 @@ fn renderOpcodes(
533563 );
534564
535565 for (aliases.items) |alias| {
536 try writer.print("pub const {} = Opcode.{p_};\n", .{
537 std.zig.fmtId(instructions[alias.inst].opname),
538 std.zig.fmtId(instructions[alias.alias].opname),
566 try writer.print("pub const {f} = Opcode.{f};\n", .{
567 formatId(instructions[alias.inst].opname),
568 formatId(instructions[alias.alias].opname),
539569 });
540570 }
541571
......@@ -548,7 +578,7 @@ fn renderOpcodes(
548578
549579 for (instructions_indices) |i| {
550580 const inst = instructions[i];
551 try renderOperand(writer, .instruction, inst.opname, inst.operands, extended_structs);
581 try renderOperand(writer, .instruction, inst.opname, inst.operands, extended_structs, false);
552582 }
553583
554584 try writer.writeAll(
......@@ -561,9 +591,7 @@ fn renderOpcodes(
561591
562592 for (instructions_indices) |i| {
563593 const inst = instructions[i];
564 try writer.print(".{p_} => .", .{std.zig.fmtId(inst.opname)});
565 try renderInstructionClass(writer, inst.class.?);
566 try writer.writeAll(",\n");
594 try writer.print(".{f} => .{f},\n", .{ std.zig.fmtId(inst.opname), formatId(inst.class.?) });
567595 }
568596
569597 try writer.writeAll(
......@@ -576,14 +604,13 @@ fn renderOpcodes(
576604
577605fn renderOperandKinds(
578606 writer: anytype,
579 a: Allocator,
580607 kinds: []const OperandKind,
581608 extended_structs: ExtendedStructSet,
582609) !void {
583610 for (kinds) |kind| {
584611 switch (kind.category) {
585 .ValueEnum => try renderValueEnum(writer, a, kind, extended_structs),
586 .BitEnum => try renderBitEnum(writer, a, kind, extended_structs),
612 .ValueEnum => try renderValueEnum(writer, kind, extended_structs),
613 .BitEnum => try renderBitEnum(writer, kind, extended_structs),
587614 else => {},
588615 }
589616 }
......@@ -591,20 +618,18 @@ fn renderOperandKinds(
591618
592619fn renderValueEnum(
593620 writer: anytype,
594 a: Allocator,
595621 enumeration: OperandKind,
596622 extended_structs: ExtendedStructSet,
597623) !void {
598624 const enumerants = enumeration.enumerants orelse return error.InvalidRegistry;
599625
600 var enum_map = std.AutoArrayHashMap(u32, usize).init(a);
626 var enum_map = std.AutoArrayHashMap(u32, usize).init(allocator);
601627 try enum_map.ensureTotalCapacity(enumerants.len);
602628
603 var aliases = std.ArrayList(struct { enumerant: usize, alias: usize }).init(a);
629 var aliases = std.ArrayList(struct { enumerant: usize, alias: usize }).init(allocator);
604630 try aliases.ensureTotalCapacity(enumerants.len);
605631
606632 for (enumerants, 0..) |enumerant, i| {
607 try writer.context.flush();
608633 const value: u31 = switch (enumerant.value) {
609634 .int => |value| value,
610635 // Some extensions declare ints as string
......@@ -632,25 +657,25 @@ fn renderValueEnum(
632657
633658 const enum_indices = enum_map.values();
634659
635 try writer.print("pub const {} = enum(u32) {{\n", .{std.zig.fmtId(enumeration.kind)});
660 try writer.print("pub const {f} = enum(u32) {{\n", .{std.zig.fmtId(enumeration.kind)});
636661
637662 for (enum_indices) |i| {
638663 const enumerant = enumerants[i];
639664 // if (enumerant.value != .int) return error.InvalidRegistry;
640665
641666 switch (enumerant.value) {
642 .int => |value| try writer.print("{p} = {},\n", .{ std.zig.fmtId(enumerant.enumerant), value }),
643 .bitflag => |value| try writer.print("{p} = {s},\n", .{ std.zig.fmtId(enumerant.enumerant), value }),
667 .int => |value| try writer.print("{f} = {},\n", .{ formatId(enumerant.enumerant), value }),
668 .bitflag => |value| try writer.print("{f} = {s},\n", .{ formatId(enumerant.enumerant), value }),
644669 }
645670 }
646671
647672 try writer.writeByte('\n');
648673
649674 for (aliases.items) |alias| {
650 try writer.print("pub const {} = {}.{p_};\n", .{
651 std.zig.fmtId(enumerants[alias.enumerant].enumerant),
675 try writer.print("pub const {f} = {f}.{f};\n", .{
676 formatId(enumerants[alias.enumerant].enumerant),
652677 std.zig.fmtId(enumeration.kind),
653 std.zig.fmtId(enumerants[alias.alias].enumerant),
678 formatId(enumerants[alias.alias].enumerant),
654679 });
655680 }
656681
......@@ -659,11 +684,11 @@ fn renderValueEnum(
659684 return;
660685 }
661686
662 try writer.print("\npub const Extended = union({}) {{\n", .{std.zig.fmtId(enumeration.kind)});
687 try writer.print("\npub const Extended = union({f}) {{\n", .{std.zig.fmtId(enumeration.kind)});
663688
664689 for (enum_indices) |i| {
665690 const enumerant = enumerants[i];
666 try renderOperand(writer, .@"union", enumerant.enumerant, enumerant.parameters, extended_structs);
691 try renderOperand(writer, .@"union", enumerant.enumerant, enumerant.parameters, extended_structs, true);
667692 }
668693
669694 try writer.writeAll("};\n};\n");
......@@ -671,16 +696,15 @@ fn renderValueEnum(
671696
672697fn renderBitEnum(
673698 writer: anytype,
674 a: Allocator,
675699 enumeration: OperandKind,
676700 extended_structs: ExtendedStructSet,
677701) !void {
678 try writer.print("pub const {} = packed struct {{\n", .{std.zig.fmtId(enumeration.kind)});
702 try writer.print("pub const {f} = packed struct {{\n", .{std.zig.fmtId(enumeration.kind)});
679703
680704 var flags_by_bitpos = [_]?usize{null} ** 32;
681705 const enumerants = enumeration.enumerants orelse return error.InvalidRegistry;
682706
683 var aliases = std.ArrayList(struct { flag: usize, alias: u5 }).init(a);
707 var aliases = std.ArrayList(struct { flag: usize, alias: u5 }).init(allocator);
684708 try aliases.ensureTotalCapacity(enumerants.len);
685709
686710 for (enumerants, 0..) |enumerant, i| {
......@@ -715,7 +739,7 @@ fn renderBitEnum(
715739
716740 for (flags_by_bitpos, 0..) |maybe_flag_index, bitpos| {
717741 if (maybe_flag_index) |flag_index| {
718 try writer.print("{p_}", .{std.zig.fmtId(enumerants[flag_index].enumerant)});
742 try writer.print("{f}", .{formatId(enumerants[flag_index].enumerant)});
719743 } else {
720744 try writer.print("_reserved_bit_{}", .{bitpos});
721745 }
......@@ -726,10 +750,10 @@ fn renderBitEnum(
726750 try writer.writeByte('\n');
727751
728752 for (aliases.items) |alias| {
729 try writer.print("pub const {}: {} = .{{.{p_} = true}};\n", .{
730 std.zig.fmtId(enumerants[alias.flag].enumerant),
753 try writer.print("pub const {f}: {f} = .{{.{f} = true}};\n", .{
754 formatId(enumerants[alias.flag].enumerant),
731755 std.zig.fmtId(enumeration.kind),
732 std.zig.fmtId(enumerants[flags_by_bitpos[alias.alias].?].enumerant),
756 formatId(enumerants[flags_by_bitpos[alias.alias].?].enumerant),
733757 });
734758 }
735759
......@@ -747,7 +771,7 @@ fn renderBitEnum(
747771 };
748772 const enumerant = enumerants[flag_index];
749773
750 try renderOperand(writer, .mask, enumerant.enumerant, enumerant.parameters, extended_structs);
774 try renderOperand(writer, .mask, enumerant.enumerant, enumerant.parameters, extended_structs, true);
751775 }
752776
753777 try writer.writeAll("};\n};\n");
......@@ -763,11 +787,18 @@ fn renderOperand(
763787 field_name: []const u8,
764788 parameters: []const Operand,
765789 extended_structs: ExtendedStructSet,
790 snake_case: bool,
766791) !void {
767792 if (kind == .instruction) {
768793 try writer.writeByte('.');
769794 }
770 try writer.print("{}", .{std.zig.fmtId(field_name)});
795
796 if (snake_case) {
797 try writer.print("{f}", .{formatId(field_name)});
798 } else {
799 try writer.print("{f}", .{std.zig.fmtId(field_name)});
800 }
801
771802 if (parameters.len == 0) {
772803 switch (kind) {
773804 .@"union" => try writer.writeAll(",\n"),
......@@ -787,7 +818,7 @@ fn renderOperand(
787818 try writer.writeByte('?');
788819 }
789820
790 try writer.writeAll("struct{");
821 try writer.writeAll("struct {");
791822
792823 for (parameters, 0..) |param, j| {
793824 if (j != 0) {
......@@ -804,7 +835,11 @@ fn renderOperand(
804835 }
805836 }
806837
807 try writer.print("{}", .{std.zig.fmtId(param.kind)});
838 if (std.mem.startsWith(u8, param.kind, "Id")) {
839 _ = try writer.write("Id");
840 } else {
841 try writer.print("{f}", .{std.zig.fmtId(param.kind)});
842 }
808843
809844 if (extended_structs.contains(param.kind)) {
810845 try writer.writeAll(".Extended");
......@@ -830,49 +865,24 @@ fn renderOperand(
830865fn renderFieldName(writer: anytype, operands: []const Operand, field_index: usize) !void {
831866 const operand = operands[field_index];
832867
833 // Should be enough for all names - adjust as needed.
834 var name_backing_buffer: [64]u8 = undefined;
835 var name_buffer = std.ArrayListUnmanaged(u8).initBuffer(&name_backing_buffer);
836
837868 derive_from_kind: {
838869 // Operand names are often in the json encoded as "'Name'" (with two sets of quotes).
839870 // Additionally, some operands have ~ in them at the end (D~ref~).
840871 const name = std.mem.trim(u8, operand.name, "'~");
841 if (name.len == 0) {
842 break :derive_from_kind;
843 }
872 if (name.len == 0) break :derive_from_kind;
844873
845 // Some names have weird characters in them (like newlines) - skip any such ones.
846 // Use the same loop to transform to snake-case.
847874 for (name) |c| {
848875 switch (c) {
849 'a'...'z', '0'...'9' => name_buffer.appendAssumeCapacity(c),
850 'A'...'Z' => name_buffer.appendAssumeCapacity(std.ascii.toLower(c)),
851 ' ', '~' => name_buffer.appendAssumeCapacity('_'),
876 'a'...'z', '0'...'9', 'A'...'Z', ' ', '~' => continue,
852877 else => break :derive_from_kind,
853878 }
854879 }
855880
856 // Assume there are no duplicate 'name' fields.
857 try writer.print("{p_}", .{std.zig.fmtId(name_buffer.items)});
881 try writer.print("{f}", .{formatId(name)});
858882 return;
859883 }
860884
861 // Translate to snake case.
862 name_buffer.items.len = 0;
863 for (operand.kind, 0..) |c, i| {
864 switch (c) {
865 'a'...'z', '0'...'9' => name_buffer.appendAssumeCapacity(c),
866 'A'...'Z' => if (i > 0 and std.ascii.isLower(operand.kind[i - 1])) {
867 name_buffer.appendSliceAssumeCapacity(&[_]u8{ '_', std.ascii.toLower(c) });
868 } else {
869 name_buffer.appendAssumeCapacity(std.ascii.toLower(c));
870 },
871 else => unreachable, // Assume that the name is valid C-syntax (and contains no underscores).
872 }
873 }
874
875 try writer.print("{p_}", .{std.zig.fmtId(name_buffer.items)});
885 try writer.print("{f}", .{formatId(operand.kind)});
876886
877887 // For fields derived from type name, there could be any amount.
878888 // Simply check against all other fields, and if another similar one exists, add a number.
tools/migrate_langref.zig+1-1
......@@ -7,7 +7,7 @@ const mem = std.mem;
77const testing = std.testing;
88const Allocator = std.mem.Allocator;
99const max_doc_file_size = 10 * 1024 * 1024;
10const fatal = std.zig.fatal;
10const fatal = std.process.fatal;
1111
1212pub fn main() !void {
1313 var arena_instance = std.heap.ArenaAllocator.init(std.heap.page_allocator);
tools/spirv/grammar.zig+4
......@@ -37,9 +37,11 @@ pub const InstructionPrintingClass = struct {
3737pub const Instruction = struct {
3838 opname: []const u8,
3939 class: ?[]const u8 = null, // Note: Only available in the core registry.
40 aliases: [][]const u8 = &[_][]const u8{},
4041 opcode: u32,
4142 operands: []Operand = &[_]Operand{},
4243 capabilities: [][]const u8 = &[_][]const u8{},
44 provisional: bool = false,
4345 // DebugModuleINTEL has this...
4446 capability: ?[]const u8 = null,
4547 extensions: [][]const u8 = &[_][]const u8{},
......@@ -81,6 +83,7 @@ pub const OperandKind = struct {
8183
8284pub const Enumerant = struct {
8385 enumerant: []const u8,
86 aliases: [][]const u8 = &[_][]const u8{},
8487 value: union(enum) {
8588 bitflag: []const u8, // Hexadecimal representation of the value
8689 int: u31,
......@@ -100,6 +103,7 @@ pub const Enumerant = struct {
100103 pub const jsonStringify = @compileError("not supported");
101104 },
102105 capabilities: [][]const u8 = &[_][]const u8{},
106 provisional: bool = false,
103107 /// Valid for .ValueEnum and .BitEnum
104108 extensions: [][]const u8 = &[_][]const u8{},
105109 /// `quantifier` will always be `null`.