1 // This file is auto-generated by vulkano autogen from SPIR-V grammar version 1.6.1.
2 // It should not be edited manually. Changes should be made by editing autogen.
3 
4 #[derive(Clone, Debug, PartialEq, Eq)]
5 #[doc = "A parsed SPIR-V instruction."]
6 pub enum Instruction {
7     Nop,
8     Undef {
9         result_type_id: Id,
10         result_id: Id,
11     },
12     SourceContinued {
13         continued_source: String,
14     },
15     Source {
16         source_language: SourceLanguage,
17         version: u32,
18         file: Option<Id>,
19         source: Option<String>,
20     },
21     SourceExtension {
22         extension: String,
23     },
24     Name {
25         target: Id,
26         name: String,
27     },
28     MemberName {
29         ty: Id,
30         member: u32,
31         name: String,
32     },
33     String {
34         result_id: Id,
35         string: String,
36     },
37     Line {
38         file: Id,
39         line: u32,
40         column: u32,
41     },
42     Extension {
43         name: String,
44     },
45     ExtInstImport {
46         result_id: Id,
47         name: String,
48     },
49     ExtInst {
50         result_type_id: Id,
51         result_id: Id,
52         set: Id,
53         instruction: u32,
54         operands: Vec<Id>,
55     },
56     MemoryModel {
57         addressing_model: AddressingModel,
58         memory_model: MemoryModel,
59     },
60     EntryPoint {
61         execution_model: ExecutionModel,
62         entry_point: Id,
63         name: String,
64         interface: Vec<Id>,
65     },
66     ExecutionMode {
67         entry_point: Id,
68         mode: ExecutionMode,
69     },
70     Capability {
71         capability: Capability,
72     },
73     TypeVoid {
74         result_id: Id,
75     },
76     TypeBool {
77         result_id: Id,
78     },
79     TypeInt {
80         result_id: Id,
81         width: u32,
82         signedness: u32,
83     },
84     TypeFloat {
85         result_id: Id,
86         width: u32,
87     },
88     TypeVector {
89         result_id: Id,
90         component_type: Id,
91         component_count: u32,
92     },
93     TypeMatrix {
94         result_id: Id,
95         column_type: Id,
96         column_count: u32,
97     },
98     TypeImage {
99         result_id: Id,
100         sampled_type: Id,
101         dim: Dim,
102         depth: u32,
103         arrayed: u32,
104         ms: u32,
105         sampled: u32,
106         image_format: ImageFormat,
107         access_qualifier: Option<AccessQualifier>,
108     },
109     TypeSampler {
110         result_id: Id,
111     },
112     TypeSampledImage {
113         result_id: Id,
114         image_type: Id,
115     },
116     TypeArray {
117         result_id: Id,
118         element_type: Id,
119         length: Id,
120     },
121     TypeRuntimeArray {
122         result_id: Id,
123         element_type: Id,
124     },
125     TypeStruct {
126         result_id: Id,
127         member_types: Vec<Id>,
128     },
129     TypeOpaque {
130         result_id: Id,
131         name: String,
132     },
133     TypePointer {
134         result_id: Id,
135         storage_class: StorageClass,
136         ty: Id,
137     },
138     TypeFunction {
139         result_id: Id,
140         return_type: Id,
141         parameter_types: Vec<Id>,
142     },
143     TypeEvent {
144         result_id: Id,
145     },
146     TypeDeviceEvent {
147         result_id: Id,
148     },
149     TypeReserveId {
150         result_id: Id,
151     },
152     TypeQueue {
153         result_id: Id,
154     },
155     TypePipe {
156         result_id: Id,
157         qualifier: AccessQualifier,
158     },
159     TypeForwardPointer {
160         pointer_type: Id,
161         storage_class: StorageClass,
162     },
163     ConstantTrue {
164         result_type_id: Id,
165         result_id: Id,
166     },
167     ConstantFalse {
168         result_type_id: Id,
169         result_id: Id,
170     },
171     Constant {
172         result_type_id: Id,
173         result_id: Id,
174         value: Vec<u32>,
175     },
176     ConstantComposite {
177         result_type_id: Id,
178         result_id: Id,
179         constituents: Vec<Id>,
180     },
181     ConstantSampler {
182         result_type_id: Id,
183         result_id: Id,
184         sampler_addressing_mode: SamplerAddressingMode,
185         param: u32,
186         sampler_filter_mode: SamplerFilterMode,
187     },
188     ConstantNull {
189         result_type_id: Id,
190         result_id: Id,
191     },
192     SpecConstantTrue {
193         result_type_id: Id,
194         result_id: Id,
195     },
196     SpecConstantFalse {
197         result_type_id: Id,
198         result_id: Id,
199     },
200     SpecConstant {
201         result_type_id: Id,
202         result_id: Id,
203         value: Vec<u32>,
204     },
205     SpecConstantComposite {
206         result_type_id: Id,
207         result_id: Id,
208         constituents: Vec<Id>,
209     },
210     SpecConstantOp {
211         result_type_id: Id,
212         result_id: Id,
213         opcode: SpecConstantInstruction,
214     },
215     Function {
216         result_type_id: Id,
217         result_id: Id,
218         function_control: FunctionControl,
219         function_type: Id,
220     },
221     FunctionParameter {
222         result_type_id: Id,
223         result_id: Id,
224     },
225     FunctionEnd,
226     FunctionCall {
227         result_type_id: Id,
228         result_id: Id,
229         function: Id,
230         arguments: Vec<Id>,
231     },
232     Variable {
233         result_type_id: Id,
234         result_id: Id,
235         storage_class: StorageClass,
236         initializer: Option<Id>,
237     },
238     ImageTexelPointer {
239         result_type_id: Id,
240         result_id: Id,
241         image: Id,
242         coordinate: Id,
243         sample: Id,
244     },
245     Load {
246         result_type_id: Id,
247         result_id: Id,
248         pointer: Id,
249         memory_access: Option<MemoryAccess>,
250     },
251     Store {
252         pointer: Id,
253         object: Id,
254         memory_access: Option<MemoryAccess>,
255     },
256     CopyMemory {
257         target: Id,
258         source: Id,
259         memory_access1: Option<MemoryAccess>,
260         memory_access2: Option<MemoryAccess>,
261     },
262     CopyMemorySized {
263         target: Id,
264         source: Id,
265         size: Id,
266         memory_access1: Option<MemoryAccess>,
267         memory_access2: Option<MemoryAccess>,
268     },
269     AccessChain {
270         result_type_id: Id,
271         result_id: Id,
272         base: Id,
273         indexes: Vec<Id>,
274     },
275     InBoundsAccessChain {
276         result_type_id: Id,
277         result_id: Id,
278         base: Id,
279         indexes: Vec<Id>,
280     },
281     PtrAccessChain {
282         result_type_id: Id,
283         result_id: Id,
284         base: Id,
285         element: Id,
286         indexes: Vec<Id>,
287     },
288     ArrayLength {
289         result_type_id: Id,
290         result_id: Id,
291         structure: Id,
292         array_member: u32,
293     },
294     GenericPtrMemSemantics {
295         result_type_id: Id,
296         result_id: Id,
297         pointer: Id,
298     },
299     InBoundsPtrAccessChain {
300         result_type_id: Id,
301         result_id: Id,
302         base: Id,
303         element: Id,
304         indexes: Vec<Id>,
305     },
306     Decorate {
307         target: Id,
308         decoration: Decoration,
309     },
310     MemberDecorate {
311         structure_type: Id,
312         member: u32,
313         decoration: Decoration,
314     },
315     DecorationGroup {
316         result_id: Id,
317     },
318     GroupDecorate {
319         decoration_group: Id,
320         targets: Vec<Id>,
321     },
322     GroupMemberDecorate {
323         decoration_group: Id,
324         targets: Vec<(Id, u32)>,
325     },
326     VectorExtractDynamic {
327         result_type_id: Id,
328         result_id: Id,
329         vector: Id,
330         index: Id,
331     },
332     VectorInsertDynamic {
333         result_type_id: Id,
334         result_id: Id,
335         vector: Id,
336         component: Id,
337         index: Id,
338     },
339     VectorShuffle {
340         result_type_id: Id,
341         result_id: Id,
342         vector_1: Id,
343         vector_2: Id,
344         components: Vec<u32>,
345     },
346     CompositeConstruct {
347         result_type_id: Id,
348         result_id: Id,
349         constituents: Vec<Id>,
350     },
351     CompositeExtract {
352         result_type_id: Id,
353         result_id: Id,
354         composite: Id,
355         indexes: Vec<u32>,
356     },
357     CompositeInsert {
358         result_type_id: Id,
359         result_id: Id,
360         object: Id,
361         composite: Id,
362         indexes: Vec<u32>,
363     },
364     CopyObject {
365         result_type_id: Id,
366         result_id: Id,
367         operand: Id,
368     },
369     Transpose {
370         result_type_id: Id,
371         result_id: Id,
372         matrix: Id,
373     },
374     SampledImage {
375         result_type_id: Id,
376         result_id: Id,
377         image: Id,
378         sampler: Id,
379     },
380     ImageSampleImplicitLod {
381         result_type_id: Id,
382         result_id: Id,
383         sampled_image: Id,
384         coordinate: Id,
385         image_operands: Option<ImageOperands>,
386     },
387     ImageSampleExplicitLod {
388         result_type_id: Id,
389         result_id: Id,
390         sampled_image: Id,
391         coordinate: Id,
392         image_operands: ImageOperands,
393     },
394     ImageSampleDrefImplicitLod {
395         result_type_id: Id,
396         result_id: Id,
397         sampled_image: Id,
398         coordinate: Id,
399         dref: Id,
400         image_operands: Option<ImageOperands>,
401     },
402     ImageSampleDrefExplicitLod {
403         result_type_id: Id,
404         result_id: Id,
405         sampled_image: Id,
406         coordinate: Id,
407         dref: Id,
408         image_operands: ImageOperands,
409     },
410     ImageSampleProjImplicitLod {
411         result_type_id: Id,
412         result_id: Id,
413         sampled_image: Id,
414         coordinate: Id,
415         image_operands: Option<ImageOperands>,
416     },
417     ImageSampleProjExplicitLod {
418         result_type_id: Id,
419         result_id: Id,
420         sampled_image: Id,
421         coordinate: Id,
422         image_operands: ImageOperands,
423     },
424     ImageSampleProjDrefImplicitLod {
425         result_type_id: Id,
426         result_id: Id,
427         sampled_image: Id,
428         coordinate: Id,
429         dref: Id,
430         image_operands: Option<ImageOperands>,
431     },
432     ImageSampleProjDrefExplicitLod {
433         result_type_id: Id,
434         result_id: Id,
435         sampled_image: Id,
436         coordinate: Id,
437         dref: Id,
438         image_operands: ImageOperands,
439     },
440     ImageFetch {
441         result_type_id: Id,
442         result_id: Id,
443         image: Id,
444         coordinate: Id,
445         image_operands: Option<ImageOperands>,
446     },
447     ImageGather {
448         result_type_id: Id,
449         result_id: Id,
450         sampled_image: Id,
451         coordinate: Id,
452         component: Id,
453         image_operands: Option<ImageOperands>,
454     },
455     ImageDrefGather {
456         result_type_id: Id,
457         result_id: Id,
458         sampled_image: Id,
459         coordinate: Id,
460         dref: Id,
461         image_operands: Option<ImageOperands>,
462     },
463     ImageRead {
464         result_type_id: Id,
465         result_id: Id,
466         image: Id,
467         coordinate: Id,
468         image_operands: Option<ImageOperands>,
469     },
470     ImageWrite {
471         image: Id,
472         coordinate: Id,
473         texel: Id,
474         image_operands: Option<ImageOperands>,
475     },
476     Image {
477         result_type_id: Id,
478         result_id: Id,
479         sampled_image: Id,
480     },
481     ImageQueryFormat {
482         result_type_id: Id,
483         result_id: Id,
484         image: Id,
485     },
486     ImageQueryOrder {
487         result_type_id: Id,
488         result_id: Id,
489         image: Id,
490     },
491     ImageQuerySizeLod {
492         result_type_id: Id,
493         result_id: Id,
494         image: Id,
495         level_of_detail: Id,
496     },
497     ImageQuerySize {
498         result_type_id: Id,
499         result_id: Id,
500         image: Id,
501     },
502     ImageQueryLod {
503         result_type_id: Id,
504         result_id: Id,
505         sampled_image: Id,
506         coordinate: Id,
507     },
508     ImageQueryLevels {
509         result_type_id: Id,
510         result_id: Id,
511         image: Id,
512     },
513     ImageQuerySamples {
514         result_type_id: Id,
515         result_id: Id,
516         image: Id,
517     },
518     ConvertFToU {
519         result_type_id: Id,
520         result_id: Id,
521         float_value: Id,
522     },
523     ConvertFToS {
524         result_type_id: Id,
525         result_id: Id,
526         float_value: Id,
527     },
528     ConvertSToF {
529         result_type_id: Id,
530         result_id: Id,
531         signed_value: Id,
532     },
533     ConvertUToF {
534         result_type_id: Id,
535         result_id: Id,
536         unsigned_value: Id,
537     },
538     UConvert {
539         result_type_id: Id,
540         result_id: Id,
541         unsigned_value: Id,
542     },
543     SConvert {
544         result_type_id: Id,
545         result_id: Id,
546         signed_value: Id,
547     },
548     FConvert {
549         result_type_id: Id,
550         result_id: Id,
551         float_value: Id,
552     },
553     QuantizeToF16 {
554         result_type_id: Id,
555         result_id: Id,
556         value: Id,
557     },
558     ConvertPtrToU {
559         result_type_id: Id,
560         result_id: Id,
561         pointer: Id,
562     },
563     SatConvertSToU {
564         result_type_id: Id,
565         result_id: Id,
566         signed_value: Id,
567     },
568     SatConvertUToS {
569         result_type_id: Id,
570         result_id: Id,
571         unsigned_value: Id,
572     },
573     ConvertUToPtr {
574         result_type_id: Id,
575         result_id: Id,
576         integer_value: Id,
577     },
578     PtrCastToGeneric {
579         result_type_id: Id,
580         result_id: Id,
581         pointer: Id,
582     },
583     GenericCastToPtr {
584         result_type_id: Id,
585         result_id: Id,
586         pointer: Id,
587     },
588     GenericCastToPtrExplicit {
589         result_type_id: Id,
590         result_id: Id,
591         pointer: Id,
592         storage: StorageClass,
593     },
594     Bitcast {
595         result_type_id: Id,
596         result_id: Id,
597         operand: Id,
598     },
599     SNegate {
600         result_type_id: Id,
601         result_id: Id,
602         operand: Id,
603     },
604     FNegate {
605         result_type_id: Id,
606         result_id: Id,
607         operand: Id,
608     },
609     IAdd {
610         result_type_id: Id,
611         result_id: Id,
612         operand1: Id,
613         operand2: Id,
614     },
615     FAdd {
616         result_type_id: Id,
617         result_id: Id,
618         operand1: Id,
619         operand2: Id,
620     },
621     ISub {
622         result_type_id: Id,
623         result_id: Id,
624         operand1: Id,
625         operand2: Id,
626     },
627     FSub {
628         result_type_id: Id,
629         result_id: Id,
630         operand1: Id,
631         operand2: Id,
632     },
633     IMul {
634         result_type_id: Id,
635         result_id: Id,
636         operand1: Id,
637         operand2: Id,
638     },
639     FMul {
640         result_type_id: Id,
641         result_id: Id,
642         operand1: Id,
643         operand2: Id,
644     },
645     UDiv {
646         result_type_id: Id,
647         result_id: Id,
648         operand1: Id,
649         operand2: Id,
650     },
651     SDiv {
652         result_type_id: Id,
653         result_id: Id,
654         operand1: Id,
655         operand2: Id,
656     },
657     FDiv {
658         result_type_id: Id,
659         result_id: Id,
660         operand1: Id,
661         operand2: Id,
662     },
663     UMod {
664         result_type_id: Id,
665         result_id: Id,
666         operand1: Id,
667         operand2: Id,
668     },
669     SRem {
670         result_type_id: Id,
671         result_id: Id,
672         operand1: Id,
673         operand2: Id,
674     },
675     SMod {
676         result_type_id: Id,
677         result_id: Id,
678         operand1: Id,
679         operand2: Id,
680     },
681     FRem {
682         result_type_id: Id,
683         result_id: Id,
684         operand1: Id,
685         operand2: Id,
686     },
687     FMod {
688         result_type_id: Id,
689         result_id: Id,
690         operand1: Id,
691         operand2: Id,
692     },
693     VectorTimesScalar {
694         result_type_id: Id,
695         result_id: Id,
696         vector: Id,
697         scalar: Id,
698     },
699     MatrixTimesScalar {
700         result_type_id: Id,
701         result_id: Id,
702         matrix: Id,
703         scalar: Id,
704     },
705     VectorTimesMatrix {
706         result_type_id: Id,
707         result_id: Id,
708         vector: Id,
709         matrix: Id,
710     },
711     MatrixTimesVector {
712         result_type_id: Id,
713         result_id: Id,
714         matrix: Id,
715         vector: Id,
716     },
717     MatrixTimesMatrix {
718         result_type_id: Id,
719         result_id: Id,
720         left_matrix: Id,
721         right_matrix: Id,
722     },
723     OuterProduct {
724         result_type_id: Id,
725         result_id: Id,
726         vector_1: Id,
727         vector_2: Id,
728     },
729     Dot {
730         result_type_id: Id,
731         result_id: Id,
732         vector_1: Id,
733         vector_2: Id,
734     },
735     IAddCarry {
736         result_type_id: Id,
737         result_id: Id,
738         operand1: Id,
739         operand2: Id,
740     },
741     ISubBorrow {
742         result_type_id: Id,
743         result_id: Id,
744         operand1: Id,
745         operand2: Id,
746     },
747     UMulExtended {
748         result_type_id: Id,
749         result_id: Id,
750         operand1: Id,
751         operand2: Id,
752     },
753     SMulExtended {
754         result_type_id: Id,
755         result_id: Id,
756         operand1: Id,
757         operand2: Id,
758     },
759     Any {
760         result_type_id: Id,
761         result_id: Id,
762         vector: Id,
763     },
764     All {
765         result_type_id: Id,
766         result_id: Id,
767         vector: Id,
768     },
769     IsNan {
770         result_type_id: Id,
771         result_id: Id,
772         x: Id,
773     },
774     IsInf {
775         result_type_id: Id,
776         result_id: Id,
777         x: Id,
778     },
779     IsFinite {
780         result_type_id: Id,
781         result_id: Id,
782         x: Id,
783     },
784     IsNormal {
785         result_type_id: Id,
786         result_id: Id,
787         x: Id,
788     },
789     SignBitSet {
790         result_type_id: Id,
791         result_id: Id,
792         x: Id,
793     },
794     LessOrGreater {
795         result_type_id: Id,
796         result_id: Id,
797         x: Id,
798         y: Id,
799     },
800     Ordered {
801         result_type_id: Id,
802         result_id: Id,
803         x: Id,
804         y: Id,
805     },
806     Unordered {
807         result_type_id: Id,
808         result_id: Id,
809         x: Id,
810         y: Id,
811     },
812     LogicalEqual {
813         result_type_id: Id,
814         result_id: Id,
815         operand1: Id,
816         operand2: Id,
817     },
818     LogicalNotEqual {
819         result_type_id: Id,
820         result_id: Id,
821         operand1: Id,
822         operand2: Id,
823     },
824     LogicalOr {
825         result_type_id: Id,
826         result_id: Id,
827         operand1: Id,
828         operand2: Id,
829     },
830     LogicalAnd {
831         result_type_id: Id,
832         result_id: Id,
833         operand1: Id,
834         operand2: Id,
835     },
836     LogicalNot {
837         result_type_id: Id,
838         result_id: Id,
839         operand: Id,
840     },
841     Select {
842         result_type_id: Id,
843         result_id: Id,
844         condition: Id,
845         object_1: Id,
846         object_2: Id,
847     },
848     IEqual {
849         result_type_id: Id,
850         result_id: Id,
851         operand1: Id,
852         operand2: Id,
853     },
854     INotEqual {
855         result_type_id: Id,
856         result_id: Id,
857         operand1: Id,
858         operand2: Id,
859     },
860     UGreaterThan {
861         result_type_id: Id,
862         result_id: Id,
863         operand1: Id,
864         operand2: Id,
865     },
866     SGreaterThan {
867         result_type_id: Id,
868         result_id: Id,
869         operand1: Id,
870         operand2: Id,
871     },
872     UGreaterThanEqual {
873         result_type_id: Id,
874         result_id: Id,
875         operand1: Id,
876         operand2: Id,
877     },
878     SGreaterThanEqual {
879         result_type_id: Id,
880         result_id: Id,
881         operand1: Id,
882         operand2: Id,
883     },
884     ULessThan {
885         result_type_id: Id,
886         result_id: Id,
887         operand1: Id,
888         operand2: Id,
889     },
890     SLessThan {
891         result_type_id: Id,
892         result_id: Id,
893         operand1: Id,
894         operand2: Id,
895     },
896     ULessThanEqual {
897         result_type_id: Id,
898         result_id: Id,
899         operand1: Id,
900         operand2: Id,
901     },
902     SLessThanEqual {
903         result_type_id: Id,
904         result_id: Id,
905         operand1: Id,
906         operand2: Id,
907     },
908     FOrdEqual {
909         result_type_id: Id,
910         result_id: Id,
911         operand1: Id,
912         operand2: Id,
913     },
914     FUnordEqual {
915         result_type_id: Id,
916         result_id: Id,
917         operand1: Id,
918         operand2: Id,
919     },
920     FOrdNotEqual {
921         result_type_id: Id,
922         result_id: Id,
923         operand1: Id,
924         operand2: Id,
925     },
926     FUnordNotEqual {
927         result_type_id: Id,
928         result_id: Id,
929         operand1: Id,
930         operand2: Id,
931     },
932     FOrdLessThan {
933         result_type_id: Id,
934         result_id: Id,
935         operand1: Id,
936         operand2: Id,
937     },
938     FUnordLessThan {
939         result_type_id: Id,
940         result_id: Id,
941         operand1: Id,
942         operand2: Id,
943     },
944     FOrdGreaterThan {
945         result_type_id: Id,
946         result_id: Id,
947         operand1: Id,
948         operand2: Id,
949     },
950     FUnordGreaterThan {
951         result_type_id: Id,
952         result_id: Id,
953         operand1: Id,
954         operand2: Id,
955     },
956     FOrdLessThanEqual {
957         result_type_id: Id,
958         result_id: Id,
959         operand1: Id,
960         operand2: Id,
961     },
962     FUnordLessThanEqual {
963         result_type_id: Id,
964         result_id: Id,
965         operand1: Id,
966         operand2: Id,
967     },
968     FOrdGreaterThanEqual {
969         result_type_id: Id,
970         result_id: Id,
971         operand1: Id,
972         operand2: Id,
973     },
974     FUnordGreaterThanEqual {
975         result_type_id: Id,
976         result_id: Id,
977         operand1: Id,
978         operand2: Id,
979     },
980     ShiftRightLogical {
981         result_type_id: Id,
982         result_id: Id,
983         base: Id,
984         shift: Id,
985     },
986     ShiftRightArithmetic {
987         result_type_id: Id,
988         result_id: Id,
989         base: Id,
990         shift: Id,
991     },
992     ShiftLeftLogical {
993         result_type_id: Id,
994         result_id: Id,
995         base: Id,
996         shift: Id,
997     },
998     BitwiseOr {
999         result_type_id: Id,
1000         result_id: Id,
1001         operand1: Id,
1002         operand2: Id,
1003     },
1004     BitwiseXor {
1005         result_type_id: Id,
1006         result_id: Id,
1007         operand1: Id,
1008         operand2: Id,
1009     },
1010     BitwiseAnd {
1011         result_type_id: Id,
1012         result_id: Id,
1013         operand1: Id,
1014         operand2: Id,
1015     },
1016     Not {
1017         result_type_id: Id,
1018         result_id: Id,
1019         operand: Id,
1020     },
1021     BitFieldInsert {
1022         result_type_id: Id,
1023         result_id: Id,
1024         base: Id,
1025         insert: Id,
1026         offset: Id,
1027         count: Id,
1028     },
1029     BitFieldSExtract {
1030         result_type_id: Id,
1031         result_id: Id,
1032         base: Id,
1033         offset: Id,
1034         count: Id,
1035     },
1036     BitFieldUExtract {
1037         result_type_id: Id,
1038         result_id: Id,
1039         base: Id,
1040         offset: Id,
1041         count: Id,
1042     },
1043     BitReverse {
1044         result_type_id: Id,
1045         result_id: Id,
1046         base: Id,
1047     },
1048     BitCount {
1049         result_type_id: Id,
1050         result_id: Id,
1051         base: Id,
1052     },
1053     DPdx {
1054         result_type_id: Id,
1055         result_id: Id,
1056         p: Id,
1057     },
1058     DPdy {
1059         result_type_id: Id,
1060         result_id: Id,
1061         p: Id,
1062     },
1063     Fwidth {
1064         result_type_id: Id,
1065         result_id: Id,
1066         p: Id,
1067     },
1068     DPdxFine {
1069         result_type_id: Id,
1070         result_id: Id,
1071         p: Id,
1072     },
1073     DPdyFine {
1074         result_type_id: Id,
1075         result_id: Id,
1076         p: Id,
1077     },
1078     FwidthFine {
1079         result_type_id: Id,
1080         result_id: Id,
1081         p: Id,
1082     },
1083     DPdxCoarse {
1084         result_type_id: Id,
1085         result_id: Id,
1086         p: Id,
1087     },
1088     DPdyCoarse {
1089         result_type_id: Id,
1090         result_id: Id,
1091         p: Id,
1092     },
1093     FwidthCoarse {
1094         result_type_id: Id,
1095         result_id: Id,
1096         p: Id,
1097     },
1098     EmitVertex,
1099     EndPrimitive,
1100     EmitStreamVertex {
1101         stream: Id,
1102     },
1103     EndStreamPrimitive {
1104         stream: Id,
1105     },
1106     ControlBarrier {
1107         execution: Id,
1108         memory: Id,
1109         semantics: Id,
1110     },
1111     MemoryBarrier {
1112         memory: Id,
1113         semantics: Id,
1114     },
1115     AtomicLoad {
1116         result_type_id: Id,
1117         result_id: Id,
1118         pointer: Id,
1119         memory: Id,
1120         semantics: Id,
1121     },
1122     AtomicStore {
1123         pointer: Id,
1124         memory: Id,
1125         semantics: Id,
1126         value: Id,
1127     },
1128     AtomicExchange {
1129         result_type_id: Id,
1130         result_id: Id,
1131         pointer: Id,
1132         memory: Id,
1133         semantics: Id,
1134         value: Id,
1135     },
1136     AtomicCompareExchange {
1137         result_type_id: Id,
1138         result_id: Id,
1139         pointer: Id,
1140         memory: Id,
1141         equal: Id,
1142         unequal: Id,
1143         value: Id,
1144         comparator: Id,
1145     },
1146     AtomicCompareExchangeWeak {
1147         result_type_id: Id,
1148         result_id: Id,
1149         pointer: Id,
1150         memory: Id,
1151         equal: Id,
1152         unequal: Id,
1153         value: Id,
1154         comparator: Id,
1155     },
1156     AtomicIIncrement {
1157         result_type_id: Id,
1158         result_id: Id,
1159         pointer: Id,
1160         memory: Id,
1161         semantics: Id,
1162     },
1163     AtomicIDecrement {
1164         result_type_id: Id,
1165         result_id: Id,
1166         pointer: Id,
1167         memory: Id,
1168         semantics: Id,
1169     },
1170     AtomicIAdd {
1171         result_type_id: Id,
1172         result_id: Id,
1173         pointer: Id,
1174         memory: Id,
1175         semantics: Id,
1176         value: Id,
1177     },
1178     AtomicISub {
1179         result_type_id: Id,
1180         result_id: Id,
1181         pointer: Id,
1182         memory: Id,
1183         semantics: Id,
1184         value: Id,
1185     },
1186     AtomicSMin {
1187         result_type_id: Id,
1188         result_id: Id,
1189         pointer: Id,
1190         memory: Id,
1191         semantics: Id,
1192         value: Id,
1193     },
1194     AtomicUMin {
1195         result_type_id: Id,
1196         result_id: Id,
1197         pointer: Id,
1198         memory: Id,
1199         semantics: Id,
1200         value: Id,
1201     },
1202     AtomicSMax {
1203         result_type_id: Id,
1204         result_id: Id,
1205         pointer: Id,
1206         memory: Id,
1207         semantics: Id,
1208         value: Id,
1209     },
1210     AtomicUMax {
1211         result_type_id: Id,
1212         result_id: Id,
1213         pointer: Id,
1214         memory: Id,
1215         semantics: Id,
1216         value: Id,
1217     },
1218     AtomicAnd {
1219         result_type_id: Id,
1220         result_id: Id,
1221         pointer: Id,
1222         memory: Id,
1223         semantics: Id,
1224         value: Id,
1225     },
1226     AtomicOr {
1227         result_type_id: Id,
1228         result_id: Id,
1229         pointer: Id,
1230         memory: Id,
1231         semantics: Id,
1232         value: Id,
1233     },
1234     AtomicXor {
1235         result_type_id: Id,
1236         result_id: Id,
1237         pointer: Id,
1238         memory: Id,
1239         semantics: Id,
1240         value: Id,
1241     },
1242     Phi {
1243         result_type_id: Id,
1244         result_id: Id,
1245         variable_parent: Vec<(Id, Id)>,
1246     },
1247     LoopMerge {
1248         merge_block: Id,
1249         continue_target: Id,
1250         loop_control: LoopControl,
1251     },
1252     SelectionMerge {
1253         merge_block: Id,
1254         selection_control: SelectionControl,
1255     },
1256     Label {
1257         result_id: Id,
1258     },
1259     Branch {
1260         target_label: Id,
1261     },
1262     BranchConditional {
1263         condition: Id,
1264         true_label: Id,
1265         false_label: Id,
1266         branch_weights: Vec<u32>,
1267     },
1268     Switch {
1269         selector: Id,
1270         default: Id,
1271         target: Vec<(u32, Id)>,
1272     },
1273     Kill,
1274     Return,
1275     ReturnValue {
1276         value: Id,
1277     },
1278     Unreachable,
1279     LifetimeStart {
1280         pointer: Id,
1281         size: u32,
1282     },
1283     LifetimeStop {
1284         pointer: Id,
1285         size: u32,
1286     },
1287     GroupAsyncCopy {
1288         result_type_id: Id,
1289         result_id: Id,
1290         execution: Id,
1291         destination: Id,
1292         source: Id,
1293         num_elements: Id,
1294         stride: Id,
1295         event: Id,
1296     },
1297     GroupWaitEvents {
1298         execution: Id,
1299         num_events: Id,
1300         events_list: Id,
1301     },
1302     GroupAll {
1303         result_type_id: Id,
1304         result_id: Id,
1305         execution: Id,
1306         predicate: Id,
1307     },
1308     GroupAny {
1309         result_type_id: Id,
1310         result_id: Id,
1311         execution: Id,
1312         predicate: Id,
1313     },
1314     GroupBroadcast {
1315         result_type_id: Id,
1316         result_id: Id,
1317         execution: Id,
1318         value: Id,
1319         local_id: Id,
1320     },
1321     GroupIAdd {
1322         result_type_id: Id,
1323         result_id: Id,
1324         execution: Id,
1325         operation: GroupOperation,
1326         x: Id,
1327     },
1328     GroupFAdd {
1329         result_type_id: Id,
1330         result_id: Id,
1331         execution: Id,
1332         operation: GroupOperation,
1333         x: Id,
1334     },
1335     GroupFMin {
1336         result_type_id: Id,
1337         result_id: Id,
1338         execution: Id,
1339         operation: GroupOperation,
1340         x: Id,
1341     },
1342     GroupUMin {
1343         result_type_id: Id,
1344         result_id: Id,
1345         execution: Id,
1346         operation: GroupOperation,
1347         x: Id,
1348     },
1349     GroupSMin {
1350         result_type_id: Id,
1351         result_id: Id,
1352         execution: Id,
1353         operation: GroupOperation,
1354         x: Id,
1355     },
1356     GroupFMax {
1357         result_type_id: Id,
1358         result_id: Id,
1359         execution: Id,
1360         operation: GroupOperation,
1361         x: Id,
1362     },
1363     GroupUMax {
1364         result_type_id: Id,
1365         result_id: Id,
1366         execution: Id,
1367         operation: GroupOperation,
1368         x: Id,
1369     },
1370     GroupSMax {
1371         result_type_id: Id,
1372         result_id: Id,
1373         execution: Id,
1374         operation: GroupOperation,
1375         x: Id,
1376     },
1377     ReadPipe {
1378         result_type_id: Id,
1379         result_id: Id,
1380         pipe: Id,
1381         pointer: Id,
1382         packet_size: Id,
1383         packet_alignment: Id,
1384     },
1385     WritePipe {
1386         result_type_id: Id,
1387         result_id: Id,
1388         pipe: Id,
1389         pointer: Id,
1390         packet_size: Id,
1391         packet_alignment: Id,
1392     },
1393     ReservedReadPipe {
1394         result_type_id: Id,
1395         result_id: Id,
1396         pipe: Id,
1397         reserve_id: Id,
1398         index: Id,
1399         pointer: Id,
1400         packet_size: Id,
1401         packet_alignment: Id,
1402     },
1403     ReservedWritePipe {
1404         result_type_id: Id,
1405         result_id: Id,
1406         pipe: Id,
1407         reserve_id: Id,
1408         index: Id,
1409         pointer: Id,
1410         packet_size: Id,
1411         packet_alignment: Id,
1412     },
1413     ReserveReadPipePackets {
1414         result_type_id: Id,
1415         result_id: Id,
1416         pipe: Id,
1417         num_packets: Id,
1418         packet_size: Id,
1419         packet_alignment: Id,
1420     },
1421     ReserveWritePipePackets {
1422         result_type_id: Id,
1423         result_id: Id,
1424         pipe: Id,
1425         num_packets: Id,
1426         packet_size: Id,
1427         packet_alignment: Id,
1428     },
1429     CommitReadPipe {
1430         pipe: Id,
1431         reserve_id: Id,
1432         packet_size: Id,
1433         packet_alignment: Id,
1434     },
1435     CommitWritePipe {
1436         pipe: Id,
1437         reserve_id: Id,
1438         packet_size: Id,
1439         packet_alignment: Id,
1440     },
1441     IsValidReserveId {
1442         result_type_id: Id,
1443         result_id: Id,
1444         reserve_id: Id,
1445     },
1446     GetNumPipePackets {
1447         result_type_id: Id,
1448         result_id: Id,
1449         pipe: Id,
1450         packet_size: Id,
1451         packet_alignment: Id,
1452     },
1453     GetMaxPipePackets {
1454         result_type_id: Id,
1455         result_id: Id,
1456         pipe: Id,
1457         packet_size: Id,
1458         packet_alignment: Id,
1459     },
1460     GroupReserveReadPipePackets {
1461         result_type_id: Id,
1462         result_id: Id,
1463         execution: Id,
1464         pipe: Id,
1465         num_packets: Id,
1466         packet_size: Id,
1467         packet_alignment: Id,
1468     },
1469     GroupReserveWritePipePackets {
1470         result_type_id: Id,
1471         result_id: Id,
1472         execution: Id,
1473         pipe: Id,
1474         num_packets: Id,
1475         packet_size: Id,
1476         packet_alignment: Id,
1477     },
1478     GroupCommitReadPipe {
1479         execution: Id,
1480         pipe: Id,
1481         reserve_id: Id,
1482         packet_size: Id,
1483         packet_alignment: Id,
1484     },
1485     GroupCommitWritePipe {
1486         execution: Id,
1487         pipe: Id,
1488         reserve_id: Id,
1489         packet_size: Id,
1490         packet_alignment: Id,
1491     },
1492     EnqueueMarker {
1493         result_type_id: Id,
1494         result_id: Id,
1495         queue: Id,
1496         num_events: Id,
1497         wait_events: Id,
1498         ret_event: Id,
1499     },
1500     EnqueueKernel {
1501         result_type_id: Id,
1502         result_id: Id,
1503         queue: Id,
1504         flags: Id,
1505         nd_range: Id,
1506         num_events: Id,
1507         wait_events: Id,
1508         ret_event: Id,
1509         invoke: Id,
1510         param: Id,
1511         param_size: Id,
1512         param_align: Id,
1513         local_size: Vec<Id>,
1514     },
1515     GetKernelNDrangeSubGroupCount {
1516         result_type_id: Id,
1517         result_id: Id,
1518         nd_range: Id,
1519         invoke: Id,
1520         param: Id,
1521         param_size: Id,
1522         param_align: Id,
1523     },
1524     GetKernelNDrangeMaxSubGroupSize {
1525         result_type_id: Id,
1526         result_id: Id,
1527         nd_range: Id,
1528         invoke: Id,
1529         param: Id,
1530         param_size: Id,
1531         param_align: Id,
1532     },
1533     GetKernelWorkGroupSize {
1534         result_type_id: Id,
1535         result_id: Id,
1536         invoke: Id,
1537         param: Id,
1538         param_size: Id,
1539         param_align: Id,
1540     },
1541     GetKernelPreferredWorkGroupSizeMultiple {
1542         result_type_id: Id,
1543         result_id: Id,
1544         invoke: Id,
1545         param: Id,
1546         param_size: Id,
1547         param_align: Id,
1548     },
1549     RetainEvent {
1550         event: Id,
1551     },
1552     ReleaseEvent {
1553         event: Id,
1554     },
1555     CreateUserEvent {
1556         result_type_id: Id,
1557         result_id: Id,
1558     },
1559     IsValidEvent {
1560         result_type_id: Id,
1561         result_id: Id,
1562         event: Id,
1563     },
1564     SetUserEventStatus {
1565         event: Id,
1566         status: Id,
1567     },
1568     CaptureEventProfilingInfo {
1569         event: Id,
1570         profiling_info: Id,
1571         value: Id,
1572     },
1573     GetDefaultQueue {
1574         result_type_id: Id,
1575         result_id: Id,
1576     },
1577     BuildNDRange {
1578         result_type_id: Id,
1579         result_id: Id,
1580         global_work_size: Id,
1581         local_work_size: Id,
1582         global_work_offset: Id,
1583     },
1584     ImageSparseSampleImplicitLod {
1585         result_type_id: Id,
1586         result_id: Id,
1587         sampled_image: Id,
1588         coordinate: Id,
1589         image_operands: Option<ImageOperands>,
1590     },
1591     ImageSparseSampleExplicitLod {
1592         result_type_id: Id,
1593         result_id: Id,
1594         sampled_image: Id,
1595         coordinate: Id,
1596         image_operands: ImageOperands,
1597     },
1598     ImageSparseSampleDrefImplicitLod {
1599         result_type_id: Id,
1600         result_id: Id,
1601         sampled_image: Id,
1602         coordinate: Id,
1603         dref: Id,
1604         image_operands: Option<ImageOperands>,
1605     },
1606     ImageSparseSampleDrefExplicitLod {
1607         result_type_id: Id,
1608         result_id: Id,
1609         sampled_image: Id,
1610         coordinate: Id,
1611         dref: Id,
1612         image_operands: ImageOperands,
1613     },
1614     ImageSparseSampleProjImplicitLod {
1615         result_type_id: Id,
1616         result_id: Id,
1617         sampled_image: Id,
1618         coordinate: Id,
1619         image_operands: Option<ImageOperands>,
1620     },
1621     ImageSparseSampleProjExplicitLod {
1622         result_type_id: Id,
1623         result_id: Id,
1624         sampled_image: Id,
1625         coordinate: Id,
1626         image_operands: ImageOperands,
1627     },
1628     ImageSparseSampleProjDrefImplicitLod {
1629         result_type_id: Id,
1630         result_id: Id,
1631         sampled_image: Id,
1632         coordinate: Id,
1633         dref: Id,
1634         image_operands: Option<ImageOperands>,
1635     },
1636     ImageSparseSampleProjDrefExplicitLod {
1637         result_type_id: Id,
1638         result_id: Id,
1639         sampled_image: Id,
1640         coordinate: Id,
1641         dref: Id,
1642         image_operands: ImageOperands,
1643     },
1644     ImageSparseFetch {
1645         result_type_id: Id,
1646         result_id: Id,
1647         image: Id,
1648         coordinate: Id,
1649         image_operands: Option<ImageOperands>,
1650     },
1651     ImageSparseGather {
1652         result_type_id: Id,
1653         result_id: Id,
1654         sampled_image: Id,
1655         coordinate: Id,
1656         component: Id,
1657         image_operands: Option<ImageOperands>,
1658     },
1659     ImageSparseDrefGather {
1660         result_type_id: Id,
1661         result_id: Id,
1662         sampled_image: Id,
1663         coordinate: Id,
1664         dref: Id,
1665         image_operands: Option<ImageOperands>,
1666     },
1667     ImageSparseTexelsResident {
1668         result_type_id: Id,
1669         result_id: Id,
1670         resident_code: Id,
1671     },
1672     NoLine,
1673     AtomicFlagTestAndSet {
1674         result_type_id: Id,
1675         result_id: Id,
1676         pointer: Id,
1677         memory: Id,
1678         semantics: Id,
1679     },
1680     AtomicFlagClear {
1681         pointer: Id,
1682         memory: Id,
1683         semantics: Id,
1684     },
1685     ImageSparseRead {
1686         result_type_id: Id,
1687         result_id: Id,
1688         image: Id,
1689         coordinate: Id,
1690         image_operands: Option<ImageOperands>,
1691     },
1692     SizeOf {
1693         result_type_id: Id,
1694         result_id: Id,
1695         pointer: Id,
1696     },
1697     TypePipeStorage {
1698         result_id: Id,
1699     },
1700     ConstantPipeStorage {
1701         result_type_id: Id,
1702         result_id: Id,
1703         packet_size: u32,
1704         packet_alignment: u32,
1705         capacity: u32,
1706     },
1707     CreatePipeFromPipeStorage {
1708         result_type_id: Id,
1709         result_id: Id,
1710         pipe_storage: Id,
1711     },
1712     GetKernelLocalSizeForSubgroupCount {
1713         result_type_id: Id,
1714         result_id: Id,
1715         subgroup_count: Id,
1716         invoke: Id,
1717         param: Id,
1718         param_size: Id,
1719         param_align: Id,
1720     },
1721     GetKernelMaxNumSubgroups {
1722         result_type_id: Id,
1723         result_id: Id,
1724         invoke: Id,
1725         param: Id,
1726         param_size: Id,
1727         param_align: Id,
1728     },
1729     TypeNamedBarrier {
1730         result_id: Id,
1731     },
1732     NamedBarrierInitialize {
1733         result_type_id: Id,
1734         result_id: Id,
1735         subgroup_count: Id,
1736     },
1737     MemoryNamedBarrier {
1738         named_barrier: Id,
1739         memory: Id,
1740         semantics: Id,
1741     },
1742     ModuleProcessed {
1743         process: String,
1744     },
1745     ExecutionModeId {
1746         entry_point: Id,
1747         mode: ExecutionMode,
1748     },
1749     DecorateId {
1750         target: Id,
1751         decoration: Decoration,
1752     },
1753     GroupNonUniformElect {
1754         result_type_id: Id,
1755         result_id: Id,
1756         execution: Id,
1757     },
1758     GroupNonUniformAll {
1759         result_type_id: Id,
1760         result_id: Id,
1761         execution: Id,
1762         predicate: Id,
1763     },
1764     GroupNonUniformAny {
1765         result_type_id: Id,
1766         result_id: Id,
1767         execution: Id,
1768         predicate: Id,
1769     },
1770     GroupNonUniformAllEqual {
1771         result_type_id: Id,
1772         result_id: Id,
1773         execution: Id,
1774         value: Id,
1775     },
1776     GroupNonUniformBroadcast {
1777         result_type_id: Id,
1778         result_id: Id,
1779         execution: Id,
1780         value: Id,
1781         id: Id,
1782     },
1783     GroupNonUniformBroadcastFirst {
1784         result_type_id: Id,
1785         result_id: Id,
1786         execution: Id,
1787         value: Id,
1788     },
1789     GroupNonUniformBallot {
1790         result_type_id: Id,
1791         result_id: Id,
1792         execution: Id,
1793         predicate: Id,
1794     },
1795     GroupNonUniformInverseBallot {
1796         result_type_id: Id,
1797         result_id: Id,
1798         execution: Id,
1799         value: Id,
1800     },
1801     GroupNonUniformBallotBitExtract {
1802         result_type_id: Id,
1803         result_id: Id,
1804         execution: Id,
1805         value: Id,
1806         index: Id,
1807     },
1808     GroupNonUniformBallotBitCount {
1809         result_type_id: Id,
1810         result_id: Id,
1811         execution: Id,
1812         operation: GroupOperation,
1813         value: Id,
1814     },
1815     GroupNonUniformBallotFindLSB {
1816         result_type_id: Id,
1817         result_id: Id,
1818         execution: Id,
1819         value: Id,
1820     },
1821     GroupNonUniformBallotFindMSB {
1822         result_type_id: Id,
1823         result_id: Id,
1824         execution: Id,
1825         value: Id,
1826     },
1827     GroupNonUniformShuffle {
1828         result_type_id: Id,
1829         result_id: Id,
1830         execution: Id,
1831         value: Id,
1832         id: Id,
1833     },
1834     GroupNonUniformShuffleXor {
1835         result_type_id: Id,
1836         result_id: Id,
1837         execution: Id,
1838         value: Id,
1839         mask: Id,
1840     },
1841     GroupNonUniformShuffleUp {
1842         result_type_id: Id,
1843         result_id: Id,
1844         execution: Id,
1845         value: Id,
1846         delta: Id,
1847     },
1848     GroupNonUniformShuffleDown {
1849         result_type_id: Id,
1850         result_id: Id,
1851         execution: Id,
1852         value: Id,
1853         delta: Id,
1854     },
1855     GroupNonUniformIAdd {
1856         result_type_id: Id,
1857         result_id: Id,
1858         execution: Id,
1859         operation: GroupOperation,
1860         value: Id,
1861         cluster_size: Option<Id>,
1862     },
1863     GroupNonUniformFAdd {
1864         result_type_id: Id,
1865         result_id: Id,
1866         execution: Id,
1867         operation: GroupOperation,
1868         value: Id,
1869         cluster_size: Option<Id>,
1870     },
1871     GroupNonUniformIMul {
1872         result_type_id: Id,
1873         result_id: Id,
1874         execution: Id,
1875         operation: GroupOperation,
1876         value: Id,
1877         cluster_size: Option<Id>,
1878     },
1879     GroupNonUniformFMul {
1880         result_type_id: Id,
1881         result_id: Id,
1882         execution: Id,
1883         operation: GroupOperation,
1884         value: Id,
1885         cluster_size: Option<Id>,
1886     },
1887     GroupNonUniformSMin {
1888         result_type_id: Id,
1889         result_id: Id,
1890         execution: Id,
1891         operation: GroupOperation,
1892         value: Id,
1893         cluster_size: Option<Id>,
1894     },
1895     GroupNonUniformUMin {
1896         result_type_id: Id,
1897         result_id: Id,
1898         execution: Id,
1899         operation: GroupOperation,
1900         value: Id,
1901         cluster_size: Option<Id>,
1902     },
1903     GroupNonUniformFMin {
1904         result_type_id: Id,
1905         result_id: Id,
1906         execution: Id,
1907         operation: GroupOperation,
1908         value: Id,
1909         cluster_size: Option<Id>,
1910     },
1911     GroupNonUniformSMax {
1912         result_type_id: Id,
1913         result_id: Id,
1914         execution: Id,
1915         operation: GroupOperation,
1916         value: Id,
1917         cluster_size: Option<Id>,
1918     },
1919     GroupNonUniformUMax {
1920         result_type_id: Id,
1921         result_id: Id,
1922         execution: Id,
1923         operation: GroupOperation,
1924         value: Id,
1925         cluster_size: Option<Id>,
1926     },
1927     GroupNonUniformFMax {
1928         result_type_id: Id,
1929         result_id: Id,
1930         execution: Id,
1931         operation: GroupOperation,
1932         value: Id,
1933         cluster_size: Option<Id>,
1934     },
1935     GroupNonUniformBitwiseAnd {
1936         result_type_id: Id,
1937         result_id: Id,
1938         execution: Id,
1939         operation: GroupOperation,
1940         value: Id,
1941         cluster_size: Option<Id>,
1942     },
1943     GroupNonUniformBitwiseOr {
1944         result_type_id: Id,
1945         result_id: Id,
1946         execution: Id,
1947         operation: GroupOperation,
1948         value: Id,
1949         cluster_size: Option<Id>,
1950     },
1951     GroupNonUniformBitwiseXor {
1952         result_type_id: Id,
1953         result_id: Id,
1954         execution: Id,
1955         operation: GroupOperation,
1956         value: Id,
1957         cluster_size: Option<Id>,
1958     },
1959     GroupNonUniformLogicalAnd {
1960         result_type_id: Id,
1961         result_id: Id,
1962         execution: Id,
1963         operation: GroupOperation,
1964         value: Id,
1965         cluster_size: Option<Id>,
1966     },
1967     GroupNonUniformLogicalOr {
1968         result_type_id: Id,
1969         result_id: Id,
1970         execution: Id,
1971         operation: GroupOperation,
1972         value: Id,
1973         cluster_size: Option<Id>,
1974     },
1975     GroupNonUniformLogicalXor {
1976         result_type_id: Id,
1977         result_id: Id,
1978         execution: Id,
1979         operation: GroupOperation,
1980         value: Id,
1981         cluster_size: Option<Id>,
1982     },
1983     GroupNonUniformQuadBroadcast {
1984         result_type_id: Id,
1985         result_id: Id,
1986         execution: Id,
1987         value: Id,
1988         index: Id,
1989     },
1990     GroupNonUniformQuadSwap {
1991         result_type_id: Id,
1992         result_id: Id,
1993         execution: Id,
1994         value: Id,
1995         direction: Id,
1996     },
1997     CopyLogical {
1998         result_type_id: Id,
1999         result_id: Id,
2000         operand: Id,
2001     },
2002     PtrEqual {
2003         result_type_id: Id,
2004         result_id: Id,
2005         operand1: Id,
2006         operand2: Id,
2007     },
2008     PtrNotEqual {
2009         result_type_id: Id,
2010         result_id: Id,
2011         operand1: Id,
2012         operand2: Id,
2013     },
2014     PtrDiff {
2015         result_type_id: Id,
2016         result_id: Id,
2017         operand1: Id,
2018         operand2: Id,
2019     },
2020     TerminateInvocation,
2021     SubgroupBallotKHR {
2022         result_type_id: Id,
2023         result_id: Id,
2024         predicate: Id,
2025     },
2026     SubgroupFirstInvocationKHR {
2027         result_type_id: Id,
2028         result_id: Id,
2029         value: Id,
2030     },
2031     SubgroupAllKHR {
2032         result_type_id: Id,
2033         result_id: Id,
2034         predicate: Id,
2035     },
2036     SubgroupAnyKHR {
2037         result_type_id: Id,
2038         result_id: Id,
2039         predicate: Id,
2040     },
2041     SubgroupAllEqualKHR {
2042         result_type_id: Id,
2043         result_id: Id,
2044         predicate: Id,
2045     },
2046     SubgroupReadInvocationKHR {
2047         result_type_id: Id,
2048         result_id: Id,
2049         value: Id,
2050         index: Id,
2051     },
2052     TraceRayKHR {
2053         accel: Id,
2054         ray_flags: Id,
2055         cull_mask: Id,
2056         sbt_offset: Id,
2057         sbt_stride: Id,
2058         miss_index: Id,
2059         ray_origin: Id,
2060         ray_tmin: Id,
2061         ray_direction: Id,
2062         ray_tmax: Id,
2063         payload: Id,
2064     },
2065     ExecuteCallableKHR {
2066         sbt_index: Id,
2067         callable_data: Id,
2068     },
2069     ConvertUToAccelerationStructureKHR {
2070         result_type_id: Id,
2071         result_id: Id,
2072         accel: Id,
2073     },
2074     IgnoreIntersectionKHR,
2075     TerminateRayKHR,
2076     SDot {
2077         result_type_id: Id,
2078         result_id: Id,
2079         vector_1: Id,
2080         vector_2: Id,
2081         packed_vector_format: Option<PackedVectorFormat>,
2082     },
2083     UDot {
2084         result_type_id: Id,
2085         result_id: Id,
2086         vector_1: Id,
2087         vector_2: Id,
2088         packed_vector_format: Option<PackedVectorFormat>,
2089     },
2090     SUDot {
2091         result_type_id: Id,
2092         result_id: Id,
2093         vector_1: Id,
2094         vector_2: Id,
2095         packed_vector_format: Option<PackedVectorFormat>,
2096     },
2097     SDotAccSat {
2098         result_type_id: Id,
2099         result_id: Id,
2100         vector_1: Id,
2101         vector_2: Id,
2102         accumulator: Id,
2103         packed_vector_format: Option<PackedVectorFormat>,
2104     },
2105     UDotAccSat {
2106         result_type_id: Id,
2107         result_id: Id,
2108         vector_1: Id,
2109         vector_2: Id,
2110         accumulator: Id,
2111         packed_vector_format: Option<PackedVectorFormat>,
2112     },
2113     SUDotAccSat {
2114         result_type_id: Id,
2115         result_id: Id,
2116         vector_1: Id,
2117         vector_2: Id,
2118         accumulator: Id,
2119         packed_vector_format: Option<PackedVectorFormat>,
2120     },
2121     TypeRayQueryKHR {
2122         result_id: Id,
2123     },
2124     RayQueryInitializeKHR {
2125         ray_query: Id,
2126         accel: Id,
2127         ray_flags: Id,
2128         cull_mask: Id,
2129         ray_origin: Id,
2130         ray_t_min: Id,
2131         ray_direction: Id,
2132         ray_t_max: Id,
2133     },
2134     RayQueryTerminateKHR {
2135         ray_query: Id,
2136     },
2137     RayQueryGenerateIntersectionKHR {
2138         ray_query: Id,
2139         hit_t: Id,
2140     },
2141     RayQueryConfirmIntersectionKHR {
2142         ray_query: Id,
2143     },
2144     RayQueryProceedKHR {
2145         result_type_id: Id,
2146         result_id: Id,
2147         ray_query: Id,
2148     },
2149     RayQueryGetIntersectionTypeKHR {
2150         result_type_id: Id,
2151         result_id: Id,
2152         ray_query: Id,
2153         intersection: Id,
2154     },
2155     GroupIAddNonUniformAMD {
2156         result_type_id: Id,
2157         result_id: Id,
2158         execution: Id,
2159         operation: GroupOperation,
2160         x: Id,
2161     },
2162     GroupFAddNonUniformAMD {
2163         result_type_id: Id,
2164         result_id: Id,
2165         execution: Id,
2166         operation: GroupOperation,
2167         x: Id,
2168     },
2169     GroupFMinNonUniformAMD {
2170         result_type_id: Id,
2171         result_id: Id,
2172         execution: Id,
2173         operation: GroupOperation,
2174         x: Id,
2175     },
2176     GroupUMinNonUniformAMD {
2177         result_type_id: Id,
2178         result_id: Id,
2179         execution: Id,
2180         operation: GroupOperation,
2181         x: Id,
2182     },
2183     GroupSMinNonUniformAMD {
2184         result_type_id: Id,
2185         result_id: Id,
2186         execution: Id,
2187         operation: GroupOperation,
2188         x: Id,
2189     },
2190     GroupFMaxNonUniformAMD {
2191         result_type_id: Id,
2192         result_id: Id,
2193         execution: Id,
2194         operation: GroupOperation,
2195         x: Id,
2196     },
2197     GroupUMaxNonUniformAMD {
2198         result_type_id: Id,
2199         result_id: Id,
2200         execution: Id,
2201         operation: GroupOperation,
2202         x: Id,
2203     },
2204     GroupSMaxNonUniformAMD {
2205         result_type_id: Id,
2206         result_id: Id,
2207         execution: Id,
2208         operation: GroupOperation,
2209         x: Id,
2210     },
2211     FragmentMaskFetchAMD {
2212         result_type_id: Id,
2213         result_id: Id,
2214         image: Id,
2215         coordinate: Id,
2216     },
2217     FragmentFetchAMD {
2218         result_type_id: Id,
2219         result_id: Id,
2220         image: Id,
2221         coordinate: Id,
2222         fragment_index: Id,
2223     },
2224     ReadClockKHR {
2225         result_type_id: Id,
2226         result_id: Id,
2227         scope: Id,
2228     },
2229     ImageSampleFootprintNV {
2230         result_type_id: Id,
2231         result_id: Id,
2232         sampled_image: Id,
2233         coordinate: Id,
2234         granularity: Id,
2235         coarse: Id,
2236         image_operands: Option<ImageOperands>,
2237     },
2238     GroupNonUniformPartitionNV {
2239         result_type_id: Id,
2240         result_id: Id,
2241         value: Id,
2242     },
2243     WritePackedPrimitiveIndices4x8NV {
2244         index_offset: Id,
2245         packed_indices: Id,
2246     },
2247     ReportIntersectionKHR {
2248         result_type_id: Id,
2249         result_id: Id,
2250         hit: Id,
2251         hit_kind: Id,
2252     },
2253     IgnoreIntersectionNV,
2254     TerminateRayNV,
2255     TraceNV {
2256         accel: Id,
2257         ray_flags: Id,
2258         cull_mask: Id,
2259         sbt_offset: Id,
2260         sbt_stride: Id,
2261         miss_index: Id,
2262         ray_origin: Id,
2263         ray_tmin: Id,
2264         ray_direction: Id,
2265         ray_tmax: Id,
2266         payload_id: Id,
2267     },
2268     TraceMotionNV {
2269         accel: Id,
2270         ray_flags: Id,
2271         cull_mask: Id,
2272         sbt_offset: Id,
2273         sbt_stride: Id,
2274         miss_index: Id,
2275         ray_origin: Id,
2276         ray_tmin: Id,
2277         ray_direction: Id,
2278         ray_tmax: Id,
2279         time: Id,
2280         payload_id: Id,
2281     },
2282     TraceRayMotionNV {
2283         accel: Id,
2284         ray_flags: Id,
2285         cull_mask: Id,
2286         sbt_offset: Id,
2287         sbt_stride: Id,
2288         miss_index: Id,
2289         ray_origin: Id,
2290         ray_tmin: Id,
2291         ray_direction: Id,
2292         ray_tmax: Id,
2293         time: Id,
2294         payload: Id,
2295     },
2296     TypeAccelerationStructureKHR {
2297         result_id: Id,
2298     },
2299     ExecuteCallableNV {
2300         sbt_index: Id,
2301         callable_data_id: Id,
2302     },
2303     TypeCooperativeMatrixNV {
2304         result_id: Id,
2305         component_type: Id,
2306         execution: Id,
2307         rows: Id,
2308         columns: Id,
2309     },
2310     CooperativeMatrixLoadNV {
2311         result_type_id: Id,
2312         result_id: Id,
2313         pointer: Id,
2314         stride: Id,
2315         column_major: Id,
2316         memory_access: Option<MemoryAccess>,
2317     },
2318     CooperativeMatrixStoreNV {
2319         pointer: Id,
2320         object: Id,
2321         stride: Id,
2322         column_major: Id,
2323         memory_access: Option<MemoryAccess>,
2324     },
2325     CooperativeMatrixMulAddNV {
2326         result_type_id: Id,
2327         result_id: Id,
2328         a: Id,
2329         b: Id,
2330         c: Id,
2331     },
2332     CooperativeMatrixLengthNV {
2333         result_type_id: Id,
2334         result_id: Id,
2335         ty: Id,
2336     },
2337     BeginInvocationInterlockEXT,
2338     EndInvocationInterlockEXT,
2339     DemoteToHelperInvocation,
2340     IsHelperInvocationEXT {
2341         result_type_id: Id,
2342         result_id: Id,
2343     },
2344     ConvertUToImageNV {
2345         result_type_id: Id,
2346         result_id: Id,
2347         operand: Id,
2348     },
2349     ConvertUToSamplerNV {
2350         result_type_id: Id,
2351         result_id: Id,
2352         operand: Id,
2353     },
2354     ConvertImageToUNV {
2355         result_type_id: Id,
2356         result_id: Id,
2357         operand: Id,
2358     },
2359     ConvertSamplerToUNV {
2360         result_type_id: Id,
2361         result_id: Id,
2362         operand: Id,
2363     },
2364     ConvertUToSampledImageNV {
2365         result_type_id: Id,
2366         result_id: Id,
2367         operand: Id,
2368     },
2369     ConvertSampledImageToUNV {
2370         result_type_id: Id,
2371         result_id: Id,
2372         operand: Id,
2373     },
2374     SamplerImageAddressingModeNV {
2375         bit_width: u32,
2376     },
2377     SubgroupShuffleINTEL {
2378         result_type_id: Id,
2379         result_id: Id,
2380         data: Id,
2381         invocation_id: Id,
2382     },
2383     SubgroupShuffleDownINTEL {
2384         result_type_id: Id,
2385         result_id: Id,
2386         current: Id,
2387         next: Id,
2388         delta: Id,
2389     },
2390     SubgroupShuffleUpINTEL {
2391         result_type_id: Id,
2392         result_id: Id,
2393         previous: Id,
2394         current: Id,
2395         delta: Id,
2396     },
2397     SubgroupShuffleXorINTEL {
2398         result_type_id: Id,
2399         result_id: Id,
2400         data: Id,
2401         value: Id,
2402     },
2403     SubgroupBlockReadINTEL {
2404         result_type_id: Id,
2405         result_id: Id,
2406         ptr: Id,
2407     },
2408     SubgroupBlockWriteINTEL {
2409         ptr: Id,
2410         data: Id,
2411     },
2412     SubgroupImageBlockReadINTEL {
2413         result_type_id: Id,
2414         result_id: Id,
2415         image: Id,
2416         coordinate: Id,
2417     },
2418     SubgroupImageBlockWriteINTEL {
2419         image: Id,
2420         coordinate: Id,
2421         data: Id,
2422     },
2423     SubgroupImageMediaBlockReadINTEL {
2424         result_type_id: Id,
2425         result_id: Id,
2426         image: Id,
2427         coordinate: Id,
2428         width: Id,
2429         height: Id,
2430     },
2431     SubgroupImageMediaBlockWriteINTEL {
2432         image: Id,
2433         coordinate: Id,
2434         width: Id,
2435         height: Id,
2436         data: Id,
2437     },
2438     UCountLeadingZerosINTEL {
2439         result_type_id: Id,
2440         result_id: Id,
2441         operand: Id,
2442     },
2443     UCountTrailingZerosINTEL {
2444         result_type_id: Id,
2445         result_id: Id,
2446         operand: Id,
2447     },
2448     AbsISubINTEL {
2449         result_type_id: Id,
2450         result_id: Id,
2451         operand1: Id,
2452         operand2: Id,
2453     },
2454     AbsUSubINTEL {
2455         result_type_id: Id,
2456         result_id: Id,
2457         operand1: Id,
2458         operand2: Id,
2459     },
2460     IAddSatINTEL {
2461         result_type_id: Id,
2462         result_id: Id,
2463         operand1: Id,
2464         operand2: Id,
2465     },
2466     UAddSatINTEL {
2467         result_type_id: Id,
2468         result_id: Id,
2469         operand1: Id,
2470         operand2: Id,
2471     },
2472     IAverageINTEL {
2473         result_type_id: Id,
2474         result_id: Id,
2475         operand1: Id,
2476         operand2: Id,
2477     },
2478     UAverageINTEL {
2479         result_type_id: Id,
2480         result_id: Id,
2481         operand1: Id,
2482         operand2: Id,
2483     },
2484     IAverageRoundedINTEL {
2485         result_type_id: Id,
2486         result_id: Id,
2487         operand1: Id,
2488         operand2: Id,
2489     },
2490     UAverageRoundedINTEL {
2491         result_type_id: Id,
2492         result_id: Id,
2493         operand1: Id,
2494         operand2: Id,
2495     },
2496     ISubSatINTEL {
2497         result_type_id: Id,
2498         result_id: Id,
2499         operand1: Id,
2500         operand2: Id,
2501     },
2502     USubSatINTEL {
2503         result_type_id: Id,
2504         result_id: Id,
2505         operand1: Id,
2506         operand2: Id,
2507     },
2508     IMul32x16INTEL {
2509         result_type_id: Id,
2510         result_id: Id,
2511         operand1: Id,
2512         operand2: Id,
2513     },
2514     UMul32x16INTEL {
2515         result_type_id: Id,
2516         result_id: Id,
2517         operand1: Id,
2518         operand2: Id,
2519     },
2520     ConstantFunctionPointerINTEL {
2521         result_type_id: Id,
2522         result_id: Id,
2523         function: Id,
2524     },
2525     FunctionPointerCallINTEL {
2526         result_type_id: Id,
2527         result_id: Id,
2528         operand1: Vec<Id>,
2529     },
2530     AsmTargetINTEL {
2531         result_type_id: Id,
2532         result_id: Id,
2533         asm_target: String,
2534     },
2535     AsmINTEL {
2536         result_type_id: Id,
2537         result_id: Id,
2538         asm_type: Id,
2539         target: Id,
2540         asm_instructions: String,
2541         constraints: String,
2542     },
2543     AsmCallINTEL {
2544         result_type_id: Id,
2545         result_id: Id,
2546         asm: Id,
2547         argument_0: Vec<Id>,
2548     },
2549     AtomicFMinEXT {
2550         result_type_id: Id,
2551         result_id: Id,
2552         pointer: Id,
2553         memory: Id,
2554         semantics: Id,
2555         value: Id,
2556     },
2557     AtomicFMaxEXT {
2558         result_type_id: Id,
2559         result_id: Id,
2560         pointer: Id,
2561         memory: Id,
2562         semantics: Id,
2563         value: Id,
2564     },
2565     AssumeTrueKHR {
2566         condition: Id,
2567     },
2568     ExpectKHR {
2569         result_type_id: Id,
2570         result_id: Id,
2571         value: Id,
2572         expected_value: Id,
2573     },
2574     DecorateString {
2575         target: Id,
2576         decoration: Decoration,
2577     },
2578     MemberDecorateString {
2579         struct_type: Id,
2580         member: u32,
2581         decoration: Decoration,
2582     },
2583     VmeImageINTEL {
2584         result_type_id: Id,
2585         result_id: Id,
2586         image_type: Id,
2587         sampler: Id,
2588     },
2589     TypeVmeImageINTEL {
2590         result_id: Id,
2591         image_type: Id,
2592     },
2593     TypeAvcImePayloadINTEL {
2594         result_id: Id,
2595     },
2596     TypeAvcRefPayloadINTEL {
2597         result_id: Id,
2598     },
2599     TypeAvcSicPayloadINTEL {
2600         result_id: Id,
2601     },
2602     TypeAvcMcePayloadINTEL {
2603         result_id: Id,
2604     },
2605     TypeAvcMceResultINTEL {
2606         result_id: Id,
2607     },
2608     TypeAvcImeResultINTEL {
2609         result_id: Id,
2610     },
2611     TypeAvcImeResultSingleReferenceStreamoutINTEL {
2612         result_id: Id,
2613     },
2614     TypeAvcImeResultDualReferenceStreamoutINTEL {
2615         result_id: Id,
2616     },
2617     TypeAvcImeSingleReferenceStreaminINTEL {
2618         result_id: Id,
2619     },
2620     TypeAvcImeDualReferenceStreaminINTEL {
2621         result_id: Id,
2622     },
2623     TypeAvcRefResultINTEL {
2624         result_id: Id,
2625     },
2626     TypeAvcSicResultINTEL {
2627         result_id: Id,
2628     },
2629     SubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL {
2630         result_type_id: Id,
2631         result_id: Id,
2632         slice_type: Id,
2633         qp: Id,
2634     },
2635     SubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL {
2636         result_type_id: Id,
2637         result_id: Id,
2638         reference_base_penalty: Id,
2639         payload: Id,
2640     },
2641     SubgroupAvcMceGetDefaultInterShapePenaltyINTEL {
2642         result_type_id: Id,
2643         result_id: Id,
2644         slice_type: Id,
2645         qp: Id,
2646     },
2647     SubgroupAvcMceSetInterShapePenaltyINTEL {
2648         result_type_id: Id,
2649         result_id: Id,
2650         packed_shape_penalty: Id,
2651         payload: Id,
2652     },
2653     SubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL {
2654         result_type_id: Id,
2655         result_id: Id,
2656         slice_type: Id,
2657         qp: Id,
2658     },
2659     SubgroupAvcMceSetInterDirectionPenaltyINTEL {
2660         result_type_id: Id,
2661         result_id: Id,
2662         direction_cost: Id,
2663         payload: Id,
2664     },
2665     SubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL {
2666         result_type_id: Id,
2667         result_id: Id,
2668         slice_type: Id,
2669         qp: Id,
2670     },
2671     SubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL {
2672         result_type_id: Id,
2673         result_id: Id,
2674         slice_type: Id,
2675         qp: Id,
2676     },
2677     SubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL {
2678         result_type_id: Id,
2679         result_id: Id,
2680     },
2681     SubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL {
2682         result_type_id: Id,
2683         result_id: Id,
2684     },
2685     SubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL {
2686         result_type_id: Id,
2687         result_id: Id,
2688     },
2689     SubgroupAvcMceSetMotionVectorCostFunctionINTEL {
2690         result_type_id: Id,
2691         result_id: Id,
2692         packed_cost_center_delta: Id,
2693         packed_cost_table: Id,
2694         cost_precision: Id,
2695         payload: Id,
2696     },
2697     SubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL {
2698         result_type_id: Id,
2699         result_id: Id,
2700         slice_type: Id,
2701         qp: Id,
2702     },
2703     SubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL {
2704         result_type_id: Id,
2705         result_id: Id,
2706     },
2707     SubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL {
2708         result_type_id: Id,
2709         result_id: Id,
2710     },
2711     SubgroupAvcMceSetAcOnlyHaarINTEL {
2712         result_type_id: Id,
2713         result_id: Id,
2714         payload: Id,
2715     },
2716     SubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL {
2717         result_type_id: Id,
2718         result_id: Id,
2719         source_field_polarity: Id,
2720         payload: Id,
2721     },
2722     SubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL {
2723         result_type_id: Id,
2724         result_id: Id,
2725         reference_field_polarity: Id,
2726         payload: Id,
2727     },
2728     SubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL {
2729         result_type_id: Id,
2730         result_id: Id,
2731         forward_reference_field_polarity: Id,
2732         backward_reference_field_polarity: Id,
2733         payload: Id,
2734     },
2735     SubgroupAvcMceConvertToImePayloadINTEL {
2736         result_type_id: Id,
2737         result_id: Id,
2738         payload: Id,
2739     },
2740     SubgroupAvcMceConvertToImeResultINTEL {
2741         result_type_id: Id,
2742         result_id: Id,
2743         payload: Id,
2744     },
2745     SubgroupAvcMceConvertToRefPayloadINTEL {
2746         result_type_id: Id,
2747         result_id: Id,
2748         payload: Id,
2749     },
2750     SubgroupAvcMceConvertToRefResultINTEL {
2751         result_type_id: Id,
2752         result_id: Id,
2753         payload: Id,
2754     },
2755     SubgroupAvcMceConvertToSicPayloadINTEL {
2756         result_type_id: Id,
2757         result_id: Id,
2758         payload: Id,
2759     },
2760     SubgroupAvcMceConvertToSicResultINTEL {
2761         result_type_id: Id,
2762         result_id: Id,
2763         payload: Id,
2764     },
2765     SubgroupAvcMceGetMotionVectorsINTEL {
2766         result_type_id: Id,
2767         result_id: Id,
2768         payload: Id,
2769     },
2770     SubgroupAvcMceGetInterDistortionsINTEL {
2771         result_type_id: Id,
2772         result_id: Id,
2773         payload: Id,
2774     },
2775     SubgroupAvcMceGetBestInterDistortionsINTEL {
2776         result_type_id: Id,
2777         result_id: Id,
2778         payload: Id,
2779     },
2780     SubgroupAvcMceGetInterMajorShapeINTEL {
2781         result_type_id: Id,
2782         result_id: Id,
2783         payload: Id,
2784     },
2785     SubgroupAvcMceGetInterMinorShapeINTEL {
2786         result_type_id: Id,
2787         result_id: Id,
2788         payload: Id,
2789     },
2790     SubgroupAvcMceGetInterDirectionsINTEL {
2791         result_type_id: Id,
2792         result_id: Id,
2793         payload: Id,
2794     },
2795     SubgroupAvcMceGetInterMotionVectorCountINTEL {
2796         result_type_id: Id,
2797         result_id: Id,
2798         payload: Id,
2799     },
2800     SubgroupAvcMceGetInterReferenceIdsINTEL {
2801         result_type_id: Id,
2802         result_id: Id,
2803         payload: Id,
2804     },
2805     SubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL {
2806         result_type_id: Id,
2807         result_id: Id,
2808         packed_reference_ids: Id,
2809         packed_reference_parameter_field_polarities: Id,
2810         payload: Id,
2811     },
2812     SubgroupAvcImeInitializeINTEL {
2813         result_type_id: Id,
2814         result_id: Id,
2815         src_coord: Id,
2816         partition_mask: Id,
2817         sad_adjustment: Id,
2818     },
2819     SubgroupAvcImeSetSingleReferenceINTEL {
2820         result_type_id: Id,
2821         result_id: Id,
2822         ref_offset: Id,
2823         search_window_config: Id,
2824         payload: Id,
2825     },
2826     SubgroupAvcImeSetDualReferenceINTEL {
2827         result_type_id: Id,
2828         result_id: Id,
2829         fwd_ref_offset: Id,
2830         bwd_ref_offset: Id,
2831         id_search_window_config: Id,
2832         payload: Id,
2833     },
2834     SubgroupAvcImeRefWindowSizeINTEL {
2835         result_type_id: Id,
2836         result_id: Id,
2837         search_window_config: Id,
2838         dual_ref: Id,
2839     },
2840     SubgroupAvcImeAdjustRefOffsetINTEL {
2841         result_type_id: Id,
2842         result_id: Id,
2843         ref_offset: Id,
2844         src_coord: Id,
2845         ref_window_size: Id,
2846         image_size: Id,
2847     },
2848     SubgroupAvcImeConvertToMcePayloadINTEL {
2849         result_type_id: Id,
2850         result_id: Id,
2851         payload: Id,
2852     },
2853     SubgroupAvcImeSetMaxMotionVectorCountINTEL {
2854         result_type_id: Id,
2855         result_id: Id,
2856         max_motion_vector_count: Id,
2857         payload: Id,
2858     },
2859     SubgroupAvcImeSetUnidirectionalMixDisableINTEL {
2860         result_type_id: Id,
2861         result_id: Id,
2862         payload: Id,
2863     },
2864     SubgroupAvcImeSetEarlySearchTerminationThresholdINTEL {
2865         result_type_id: Id,
2866         result_id: Id,
2867         threshold: Id,
2868         payload: Id,
2869     },
2870     SubgroupAvcImeSetWeightedSadINTEL {
2871         result_type_id: Id,
2872         result_id: Id,
2873         packed_sad_weights: Id,
2874         payload: Id,
2875     },
2876     SubgroupAvcImeEvaluateWithSingleReferenceINTEL {
2877         result_type_id: Id,
2878         result_id: Id,
2879         src_image: Id,
2880         ref_image: Id,
2881         payload: Id,
2882     },
2883     SubgroupAvcImeEvaluateWithDualReferenceINTEL {
2884         result_type_id: Id,
2885         result_id: Id,
2886         src_image: Id,
2887         fwd_ref_image: Id,
2888         bwd_ref_image: Id,
2889         payload: Id,
2890     },
2891     SubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL {
2892         result_type_id: Id,
2893         result_id: Id,
2894         src_image: Id,
2895         ref_image: Id,
2896         payload: Id,
2897         streamin_components: Id,
2898     },
2899     SubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL {
2900         result_type_id: Id,
2901         result_id: Id,
2902         src_image: Id,
2903         fwd_ref_image: Id,
2904         bwd_ref_image: Id,
2905         payload: Id,
2906         streamin_components: Id,
2907     },
2908     SubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL {
2909         result_type_id: Id,
2910         result_id: Id,
2911         src_image: Id,
2912         ref_image: Id,
2913         payload: Id,
2914     },
2915     SubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL {
2916         result_type_id: Id,
2917         result_id: Id,
2918         src_image: Id,
2919         fwd_ref_image: Id,
2920         bwd_ref_image: Id,
2921         payload: Id,
2922     },
2923     SubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL {
2924         result_type_id: Id,
2925         result_id: Id,
2926         src_image: Id,
2927         ref_image: Id,
2928         payload: Id,
2929         streamin_components: Id,
2930     },
2931     SubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL {
2932         result_type_id: Id,
2933         result_id: Id,
2934         src_image: Id,
2935         fwd_ref_image: Id,
2936         bwd_ref_image: Id,
2937         payload: Id,
2938         streamin_components: Id,
2939     },
2940     SubgroupAvcImeConvertToMceResultINTEL {
2941         result_type_id: Id,
2942         result_id: Id,
2943         payload: Id,
2944     },
2945     SubgroupAvcImeGetSingleReferenceStreaminINTEL {
2946         result_type_id: Id,
2947         result_id: Id,
2948         payload: Id,
2949     },
2950     SubgroupAvcImeGetDualReferenceStreaminINTEL {
2951         result_type_id: Id,
2952         result_id: Id,
2953         payload: Id,
2954     },
2955     SubgroupAvcImeStripSingleReferenceStreamoutINTEL {
2956         result_type_id: Id,
2957         result_id: Id,
2958         payload: Id,
2959     },
2960     SubgroupAvcImeStripDualReferenceStreamoutINTEL {
2961         result_type_id: Id,
2962         result_id: Id,
2963         payload: Id,
2964     },
2965     SubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL {
2966         result_type_id: Id,
2967         result_id: Id,
2968         payload: Id,
2969         major_shape: Id,
2970     },
2971     SubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL {
2972         result_type_id: Id,
2973         result_id: Id,
2974         payload: Id,
2975         major_shape: Id,
2976     },
2977     SubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL {
2978         result_type_id: Id,
2979         result_id: Id,
2980         payload: Id,
2981         major_shape: Id,
2982     },
2983     SubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL {
2984         result_type_id: Id,
2985         result_id: Id,
2986         payload: Id,
2987         major_shape: Id,
2988         direction: Id,
2989     },
2990     SubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL {
2991         result_type_id: Id,
2992         result_id: Id,
2993         payload: Id,
2994         major_shape: Id,
2995         direction: Id,
2996     },
2997     SubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL {
2998         result_type_id: Id,
2999         result_id: Id,
3000         payload: Id,
3001         major_shape: Id,
3002         direction: Id,
3003     },
3004     SubgroupAvcImeGetBorderReachedINTEL {
3005         result_type_id: Id,
3006         result_id: Id,
3007         image_select: Id,
3008         payload: Id,
3009     },
3010     SubgroupAvcImeGetTruncatedSearchIndicationINTEL {
3011         result_type_id: Id,
3012         result_id: Id,
3013         payload: Id,
3014     },
3015     SubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL {
3016         result_type_id: Id,
3017         result_id: Id,
3018         payload: Id,
3019     },
3020     SubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL {
3021         result_type_id: Id,
3022         result_id: Id,
3023         payload: Id,
3024     },
3025     SubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL {
3026         result_type_id: Id,
3027         result_id: Id,
3028         payload: Id,
3029     },
3030     SubgroupAvcFmeInitializeINTEL {
3031         result_type_id: Id,
3032         result_id: Id,
3033         src_coord: Id,
3034         motion_vectors: Id,
3035         major_shapes: Id,
3036         minor_shapes: Id,
3037         direction: Id,
3038         pixel_resolution: Id,
3039         sad_adjustment: Id,
3040     },
3041     SubgroupAvcBmeInitializeINTEL {
3042         result_type_id: Id,
3043         result_id: Id,
3044         src_coord: Id,
3045         motion_vectors: Id,
3046         major_shapes: Id,
3047         minor_shapes: Id,
3048         direction: Id,
3049         pixel_resolution: Id,
3050         bidirectional_weight: Id,
3051         sad_adjustment: Id,
3052     },
3053     SubgroupAvcRefConvertToMcePayloadINTEL {
3054         result_type_id: Id,
3055         result_id: Id,
3056         payload: Id,
3057     },
3058     SubgroupAvcRefSetBidirectionalMixDisableINTEL {
3059         result_type_id: Id,
3060         result_id: Id,
3061         payload: Id,
3062     },
3063     SubgroupAvcRefSetBilinearFilterEnableINTEL {
3064         result_type_id: Id,
3065         result_id: Id,
3066         payload: Id,
3067     },
3068     SubgroupAvcRefEvaluateWithSingleReferenceINTEL {
3069         result_type_id: Id,
3070         result_id: Id,
3071         src_image: Id,
3072         ref_image: Id,
3073         payload: Id,
3074     },
3075     SubgroupAvcRefEvaluateWithDualReferenceINTEL {
3076         result_type_id: Id,
3077         result_id: Id,
3078         src_image: Id,
3079         fwd_ref_image: Id,
3080         bwd_ref_image: Id,
3081         payload: Id,
3082     },
3083     SubgroupAvcRefEvaluateWithMultiReferenceINTEL {
3084         result_type_id: Id,
3085         result_id: Id,
3086         src_image: Id,
3087         packed_reference_ids: Id,
3088         payload: Id,
3089     },
3090     SubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL {
3091         result_type_id: Id,
3092         result_id: Id,
3093         src_image: Id,
3094         packed_reference_ids: Id,
3095         packed_reference_field_polarities: Id,
3096         payload: Id,
3097     },
3098     SubgroupAvcRefConvertToMceResultINTEL {
3099         result_type_id: Id,
3100         result_id: Id,
3101         payload: Id,
3102     },
3103     SubgroupAvcSicInitializeINTEL {
3104         result_type_id: Id,
3105         result_id: Id,
3106         src_coord: Id,
3107     },
3108     SubgroupAvcSicConfigureSkcINTEL {
3109         result_type_id: Id,
3110         result_id: Id,
3111         skip_block_partition_type: Id,
3112         skip_motion_vector_mask: Id,
3113         motion_vectors: Id,
3114         bidirectional_weight: Id,
3115         sad_adjustment: Id,
3116         payload: Id,
3117     },
3118     SubgroupAvcSicConfigureIpeLumaINTEL {
3119         result_type_id: Id,
3120         result_id: Id,
3121         luma_intra_partition_mask: Id,
3122         intra_neighbour_availabilty: Id,
3123         left_edge_luma_pixels: Id,
3124         upper_left_corner_luma_pixel: Id,
3125         upper_edge_luma_pixels: Id,
3126         upper_right_edge_luma_pixels: Id,
3127         sad_adjustment: Id,
3128         payload: Id,
3129     },
3130     SubgroupAvcSicConfigureIpeLumaChromaINTEL {
3131         result_type_id: Id,
3132         result_id: Id,
3133         luma_intra_partition_mask: Id,
3134         intra_neighbour_availabilty: Id,
3135         left_edge_luma_pixels: Id,
3136         upper_left_corner_luma_pixel: Id,
3137         upper_edge_luma_pixels: Id,
3138         upper_right_edge_luma_pixels: Id,
3139         left_edge_chroma_pixels: Id,
3140         upper_left_corner_chroma_pixel: Id,
3141         upper_edge_chroma_pixels: Id,
3142         sad_adjustment: Id,
3143         payload: Id,
3144     },
3145     SubgroupAvcSicGetMotionVectorMaskINTEL {
3146         result_type_id: Id,
3147         result_id: Id,
3148         skip_block_partition_type: Id,
3149         direction: Id,
3150     },
3151     SubgroupAvcSicConvertToMcePayloadINTEL {
3152         result_type_id: Id,
3153         result_id: Id,
3154         payload: Id,
3155     },
3156     SubgroupAvcSicSetIntraLumaShapePenaltyINTEL {
3157         result_type_id: Id,
3158         result_id: Id,
3159         packed_shape_penalty: Id,
3160         payload: Id,
3161     },
3162     SubgroupAvcSicSetIntraLumaModeCostFunctionINTEL {
3163         result_type_id: Id,
3164         result_id: Id,
3165         luma_mode_penalty: Id,
3166         luma_packed_neighbor_modes: Id,
3167         luma_packed_non_dc_penalty: Id,
3168         payload: Id,
3169     },
3170     SubgroupAvcSicSetIntraChromaModeCostFunctionINTEL {
3171         result_type_id: Id,
3172         result_id: Id,
3173         chroma_mode_base_penalty: Id,
3174         payload: Id,
3175     },
3176     SubgroupAvcSicSetBilinearFilterEnableINTEL {
3177         result_type_id: Id,
3178         result_id: Id,
3179         payload: Id,
3180     },
3181     SubgroupAvcSicSetSkcForwardTransformEnableINTEL {
3182         result_type_id: Id,
3183         result_id: Id,
3184         packed_sad_coefficients: Id,
3185         payload: Id,
3186     },
3187     SubgroupAvcSicSetBlockBasedRawSkipSadINTEL {
3188         result_type_id: Id,
3189         result_id: Id,
3190         block_based_skip_type: Id,
3191         payload: Id,
3192     },
3193     SubgroupAvcSicEvaluateIpeINTEL {
3194         result_type_id: Id,
3195         result_id: Id,
3196         src_image: Id,
3197         payload: Id,
3198     },
3199     SubgroupAvcSicEvaluateWithSingleReferenceINTEL {
3200         result_type_id: Id,
3201         result_id: Id,
3202         src_image: Id,
3203         ref_image: Id,
3204         payload: Id,
3205     },
3206     SubgroupAvcSicEvaluateWithDualReferenceINTEL {
3207         result_type_id: Id,
3208         result_id: Id,
3209         src_image: Id,
3210         fwd_ref_image: Id,
3211         bwd_ref_image: Id,
3212         payload: Id,
3213     },
3214     SubgroupAvcSicEvaluateWithMultiReferenceINTEL {
3215         result_type_id: Id,
3216         result_id: Id,
3217         src_image: Id,
3218         packed_reference_ids: Id,
3219         payload: Id,
3220     },
3221     SubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL {
3222         result_type_id: Id,
3223         result_id: Id,
3224         src_image: Id,
3225         packed_reference_ids: Id,
3226         packed_reference_field_polarities: Id,
3227         payload: Id,
3228     },
3229     SubgroupAvcSicConvertToMceResultINTEL {
3230         result_type_id: Id,
3231         result_id: Id,
3232         payload: Id,
3233     },
3234     SubgroupAvcSicGetIpeLumaShapeINTEL {
3235         result_type_id: Id,
3236         result_id: Id,
3237         payload: Id,
3238     },
3239     SubgroupAvcSicGetBestIpeLumaDistortionINTEL {
3240         result_type_id: Id,
3241         result_id: Id,
3242         payload: Id,
3243     },
3244     SubgroupAvcSicGetBestIpeChromaDistortionINTEL {
3245         result_type_id: Id,
3246         result_id: Id,
3247         payload: Id,
3248     },
3249     SubgroupAvcSicGetPackedIpeLumaModesINTEL {
3250         result_type_id: Id,
3251         result_id: Id,
3252         payload: Id,
3253     },
3254     SubgroupAvcSicGetIpeChromaModeINTEL {
3255         result_type_id: Id,
3256         result_id: Id,
3257         payload: Id,
3258     },
3259     SubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL {
3260         result_type_id: Id,
3261         result_id: Id,
3262         payload: Id,
3263     },
3264     SubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL {
3265         result_type_id: Id,
3266         result_id: Id,
3267         payload: Id,
3268     },
3269     SubgroupAvcSicGetInterRawSadsINTEL {
3270         result_type_id: Id,
3271         result_id: Id,
3272         payload: Id,
3273     },
3274     VariableLengthArrayINTEL {
3275         result_type_id: Id,
3276         result_id: Id,
3277         lenght: Id,
3278     },
3279     SaveMemoryINTEL {
3280         result_type_id: Id,
3281         result_id: Id,
3282     },
3283     RestoreMemoryINTEL {
3284         ptr: Id,
3285     },
3286     ArbitraryFloatSinCosPiINTEL {
3287         result_type_id: Id,
3288         result_id: Id,
3289         a: Id,
3290         m1: u32,
3291         mout: u32,
3292         from_sign: u32,
3293         enable_subnormals: u32,
3294         rounding_mode: u32,
3295         rounding_accuracy: u32,
3296     },
3297     ArbitraryFloatCastINTEL {
3298         result_type_id: Id,
3299         result_id: Id,
3300         a: Id,
3301         m1: u32,
3302         mout: u32,
3303         enable_subnormals: u32,
3304         rounding_mode: u32,
3305         rounding_accuracy: u32,
3306     },
3307     ArbitraryFloatCastFromIntINTEL {
3308         result_type_id: Id,
3309         result_id: Id,
3310         a: Id,
3311         mout: u32,
3312         from_sign: u32,
3313         enable_subnormals: u32,
3314         rounding_mode: u32,
3315         rounding_accuracy: u32,
3316     },
3317     ArbitraryFloatCastToIntINTEL {
3318         result_type_id: Id,
3319         result_id: Id,
3320         a: Id,
3321         m1: u32,
3322         enable_subnormals: u32,
3323         rounding_mode: u32,
3324         rounding_accuracy: u32,
3325     },
3326     ArbitraryFloatAddINTEL {
3327         result_type_id: Id,
3328         result_id: Id,
3329         a: Id,
3330         m1: u32,
3331         b: Id,
3332         m2: u32,
3333         mout: u32,
3334         enable_subnormals: u32,
3335         rounding_mode: u32,
3336         rounding_accuracy: u32,
3337     },
3338     ArbitraryFloatSubINTEL {
3339         result_type_id: Id,
3340         result_id: Id,
3341         a: Id,
3342         m1: u32,
3343         b: Id,
3344         m2: u32,
3345         mout: u32,
3346         enable_subnormals: u32,
3347         rounding_mode: u32,
3348         rounding_accuracy: u32,
3349     },
3350     ArbitraryFloatMulINTEL {
3351         result_type_id: Id,
3352         result_id: Id,
3353         a: Id,
3354         m1: u32,
3355         b: Id,
3356         m2: u32,
3357         mout: u32,
3358         enable_subnormals: u32,
3359         rounding_mode: u32,
3360         rounding_accuracy: u32,
3361     },
3362     ArbitraryFloatDivINTEL {
3363         result_type_id: Id,
3364         result_id: Id,
3365         a: Id,
3366         m1: u32,
3367         b: Id,
3368         m2: u32,
3369         mout: u32,
3370         enable_subnormals: u32,
3371         rounding_mode: u32,
3372         rounding_accuracy: u32,
3373     },
3374     ArbitraryFloatGTINTEL {
3375         result_type_id: Id,
3376         result_id: Id,
3377         a: Id,
3378         m1: u32,
3379         b: Id,
3380         m2: u32,
3381     },
3382     ArbitraryFloatGEINTEL {
3383         result_type_id: Id,
3384         result_id: Id,
3385         a: Id,
3386         m1: u32,
3387         b: Id,
3388         m2: u32,
3389     },
3390     ArbitraryFloatLTINTEL {
3391         result_type_id: Id,
3392         result_id: Id,
3393         a: Id,
3394         m1: u32,
3395         b: Id,
3396         m2: u32,
3397     },
3398     ArbitraryFloatLEINTEL {
3399         result_type_id: Id,
3400         result_id: Id,
3401         a: Id,
3402         m1: u32,
3403         b: Id,
3404         m2: u32,
3405     },
3406     ArbitraryFloatEQINTEL {
3407         result_type_id: Id,
3408         result_id: Id,
3409         a: Id,
3410         m1: u32,
3411         b: Id,
3412         m2: u32,
3413     },
3414     ArbitraryFloatRecipINTEL {
3415         result_type_id: Id,
3416         result_id: Id,
3417         a: Id,
3418         m1: u32,
3419         mout: u32,
3420         enable_subnormals: u32,
3421         rounding_mode: u32,
3422         rounding_accuracy: u32,
3423     },
3424     ArbitraryFloatRSqrtINTEL {
3425         result_type_id: Id,
3426         result_id: Id,
3427         a: Id,
3428         m1: u32,
3429         mout: u32,
3430         enable_subnormals: u32,
3431         rounding_mode: u32,
3432         rounding_accuracy: u32,
3433     },
3434     ArbitraryFloatCbrtINTEL {
3435         result_type_id: Id,
3436         result_id: Id,
3437         a: Id,
3438         m1: u32,
3439         mout: u32,
3440         enable_subnormals: u32,
3441         rounding_mode: u32,
3442         rounding_accuracy: u32,
3443     },
3444     ArbitraryFloatHypotINTEL {
3445         result_type_id: Id,
3446         result_id: Id,
3447         a: Id,
3448         m1: u32,
3449         b: Id,
3450         m2: u32,
3451         mout: u32,
3452         enable_subnormals: u32,
3453         rounding_mode: u32,
3454         rounding_accuracy: u32,
3455     },
3456     ArbitraryFloatSqrtINTEL {
3457         result_type_id: Id,
3458         result_id: Id,
3459         a: Id,
3460         m1: u32,
3461         mout: u32,
3462         enable_subnormals: u32,
3463         rounding_mode: u32,
3464         rounding_accuracy: u32,
3465     },
3466     ArbitraryFloatLogINTEL {
3467         result_type_id: Id,
3468         result_id: Id,
3469         a: Id,
3470         m1: u32,
3471         mout: u32,
3472         enable_subnormals: u32,
3473         rounding_mode: u32,
3474         rounding_accuracy: u32,
3475     },
3476     ArbitraryFloatLog2INTEL {
3477         result_type_id: Id,
3478         result_id: Id,
3479         a: Id,
3480         m1: u32,
3481         mout: u32,
3482         enable_subnormals: u32,
3483         rounding_mode: u32,
3484         rounding_accuracy: u32,
3485     },
3486     ArbitraryFloatLog10INTEL {
3487         result_type_id: Id,
3488         result_id: Id,
3489         a: Id,
3490         m1: u32,
3491         mout: u32,
3492         enable_subnormals: u32,
3493         rounding_mode: u32,
3494         rounding_accuracy: u32,
3495     },
3496     ArbitraryFloatLog1pINTEL {
3497         result_type_id: Id,
3498         result_id: Id,
3499         a: Id,
3500         m1: u32,
3501         mout: u32,
3502         enable_subnormals: u32,
3503         rounding_mode: u32,
3504         rounding_accuracy: u32,
3505     },
3506     ArbitraryFloatExpINTEL {
3507         result_type_id: Id,
3508         result_id: Id,
3509         a: Id,
3510         m1: u32,
3511         mout: u32,
3512         enable_subnormals: u32,
3513         rounding_mode: u32,
3514         rounding_accuracy: u32,
3515     },
3516     ArbitraryFloatExp2INTEL {
3517         result_type_id: Id,
3518         result_id: Id,
3519         a: Id,
3520         m1: u32,
3521         mout: u32,
3522         enable_subnormals: u32,
3523         rounding_mode: u32,
3524         rounding_accuracy: u32,
3525     },
3526     ArbitraryFloatExp10INTEL {
3527         result_type_id: Id,
3528         result_id: Id,
3529         a: Id,
3530         m1: u32,
3531         mout: u32,
3532         enable_subnormals: u32,
3533         rounding_mode: u32,
3534         rounding_accuracy: u32,
3535     },
3536     ArbitraryFloatExpm1INTEL {
3537         result_type_id: Id,
3538         result_id: Id,
3539         a: Id,
3540         m1: u32,
3541         mout: u32,
3542         enable_subnormals: u32,
3543         rounding_mode: u32,
3544         rounding_accuracy: u32,
3545     },
3546     ArbitraryFloatSinINTEL {
3547         result_type_id: Id,
3548         result_id: Id,
3549         a: Id,
3550         m1: u32,
3551         mout: u32,
3552         enable_subnormals: u32,
3553         rounding_mode: u32,
3554         rounding_accuracy: u32,
3555     },
3556     ArbitraryFloatCosINTEL {
3557         result_type_id: Id,
3558         result_id: Id,
3559         a: Id,
3560         m1: u32,
3561         mout: u32,
3562         enable_subnormals: u32,
3563         rounding_mode: u32,
3564         rounding_accuracy: u32,
3565     },
3566     ArbitraryFloatSinCosINTEL {
3567         result_type_id: Id,
3568         result_id: Id,
3569         a: Id,
3570         m1: u32,
3571         mout: u32,
3572         enable_subnormals: u32,
3573         rounding_mode: u32,
3574         rounding_accuracy: u32,
3575     },
3576     ArbitraryFloatSinPiINTEL {
3577         result_type_id: Id,
3578         result_id: Id,
3579         a: Id,
3580         m1: u32,
3581         mout: u32,
3582         enable_subnormals: u32,
3583         rounding_mode: u32,
3584         rounding_accuracy: u32,
3585     },
3586     ArbitraryFloatCosPiINTEL {
3587         result_type_id: Id,
3588         result_id: Id,
3589         a: Id,
3590         m1: u32,
3591         mout: u32,
3592         enable_subnormals: u32,
3593         rounding_mode: u32,
3594         rounding_accuracy: u32,
3595     },
3596     ArbitraryFloatASinINTEL {
3597         result_type_id: Id,
3598         result_id: Id,
3599         a: Id,
3600         m1: u32,
3601         mout: u32,
3602         enable_subnormals: u32,
3603         rounding_mode: u32,
3604         rounding_accuracy: u32,
3605     },
3606     ArbitraryFloatASinPiINTEL {
3607         result_type_id: Id,
3608         result_id: Id,
3609         a: Id,
3610         m1: u32,
3611         mout: u32,
3612         enable_subnormals: u32,
3613         rounding_mode: u32,
3614         rounding_accuracy: u32,
3615     },
3616     ArbitraryFloatACosINTEL {
3617         result_type_id: Id,
3618         result_id: Id,
3619         a: Id,
3620         m1: u32,
3621         mout: u32,
3622         enable_subnormals: u32,
3623         rounding_mode: u32,
3624         rounding_accuracy: u32,
3625     },
3626     ArbitraryFloatACosPiINTEL {
3627         result_type_id: Id,
3628         result_id: Id,
3629         a: Id,
3630         m1: u32,
3631         mout: u32,
3632         enable_subnormals: u32,
3633         rounding_mode: u32,
3634         rounding_accuracy: u32,
3635     },
3636     ArbitraryFloatATanINTEL {
3637         result_type_id: Id,
3638         result_id: Id,
3639         a: Id,
3640         m1: u32,
3641         mout: u32,
3642         enable_subnormals: u32,
3643         rounding_mode: u32,
3644         rounding_accuracy: u32,
3645     },
3646     ArbitraryFloatATanPiINTEL {
3647         result_type_id: Id,
3648         result_id: Id,
3649         a: Id,
3650         m1: u32,
3651         mout: u32,
3652         enable_subnormals: u32,
3653         rounding_mode: u32,
3654         rounding_accuracy: u32,
3655     },
3656     ArbitraryFloatATan2INTEL {
3657         result_type_id: Id,
3658         result_id: Id,
3659         a: Id,
3660         m1: u32,
3661         b: Id,
3662         m2: u32,
3663         mout: u32,
3664         enable_subnormals: u32,
3665         rounding_mode: u32,
3666         rounding_accuracy: u32,
3667     },
3668     ArbitraryFloatPowINTEL {
3669         result_type_id: Id,
3670         result_id: Id,
3671         a: Id,
3672         m1: u32,
3673         b: Id,
3674         m2: u32,
3675         mout: u32,
3676         enable_subnormals: u32,
3677         rounding_mode: u32,
3678         rounding_accuracy: u32,
3679     },
3680     ArbitraryFloatPowRINTEL {
3681         result_type_id: Id,
3682         result_id: Id,
3683         a: Id,
3684         m1: u32,
3685         b: Id,
3686         m2: u32,
3687         mout: u32,
3688         enable_subnormals: u32,
3689         rounding_mode: u32,
3690         rounding_accuracy: u32,
3691     },
3692     ArbitraryFloatPowNINTEL {
3693         result_type_id: Id,
3694         result_id: Id,
3695         a: Id,
3696         m1: u32,
3697         b: Id,
3698         mout: u32,
3699         enable_subnormals: u32,
3700         rounding_mode: u32,
3701         rounding_accuracy: u32,
3702     },
3703     LoopControlINTEL {
3704         loop_control_parameters: Vec<u32>,
3705     },
3706     FixedSqrtINTEL {
3707         result_type_id: Id,
3708         result_id: Id,
3709         input_type: Id,
3710         input: Id,
3711         s: u32,
3712         i: u32,
3713         r_i: u32,
3714         q: u32,
3715         o: u32,
3716     },
3717     FixedRecipINTEL {
3718         result_type_id: Id,
3719         result_id: Id,
3720         input_type: Id,
3721         input: Id,
3722         s: u32,
3723         i: u32,
3724         r_i: u32,
3725         q: u32,
3726         o: u32,
3727     },
3728     FixedRsqrtINTEL {
3729         result_type_id: Id,
3730         result_id: Id,
3731         input_type: Id,
3732         input: Id,
3733         s: u32,
3734         i: u32,
3735         r_i: u32,
3736         q: u32,
3737         o: u32,
3738     },
3739     FixedSinINTEL {
3740         result_type_id: Id,
3741         result_id: Id,
3742         input_type: Id,
3743         input: Id,
3744         s: u32,
3745         i: u32,
3746         r_i: u32,
3747         q: u32,
3748         o: u32,
3749     },
3750     FixedCosINTEL {
3751         result_type_id: Id,
3752         result_id: Id,
3753         input_type: Id,
3754         input: Id,
3755         s: u32,
3756         i: u32,
3757         r_i: u32,
3758         q: u32,
3759         o: u32,
3760     },
3761     FixedSinCosINTEL {
3762         result_type_id: Id,
3763         result_id: Id,
3764         input_type: Id,
3765         input: Id,
3766         s: u32,
3767         i: u32,
3768         r_i: u32,
3769         q: u32,
3770         o: u32,
3771     },
3772     FixedSinPiINTEL {
3773         result_type_id: Id,
3774         result_id: Id,
3775         input_type: Id,
3776         input: Id,
3777         s: u32,
3778         i: u32,
3779         r_i: u32,
3780         q: u32,
3781         o: u32,
3782     },
3783     FixedCosPiINTEL {
3784         result_type_id: Id,
3785         result_id: Id,
3786         input_type: Id,
3787         input: Id,
3788         s: u32,
3789         i: u32,
3790         r_i: u32,
3791         q: u32,
3792         o: u32,
3793     },
3794     FixedSinCosPiINTEL {
3795         result_type_id: Id,
3796         result_id: Id,
3797         input_type: Id,
3798         input: Id,
3799         s: u32,
3800         i: u32,
3801         r_i: u32,
3802         q: u32,
3803         o: u32,
3804     },
3805     FixedLogINTEL {
3806         result_type_id: Id,
3807         result_id: Id,
3808         input_type: Id,
3809         input: Id,
3810         s: u32,
3811         i: u32,
3812         r_i: u32,
3813         q: u32,
3814         o: u32,
3815     },
3816     FixedExpINTEL {
3817         result_type_id: Id,
3818         result_id: Id,
3819         input_type: Id,
3820         input: Id,
3821         s: u32,
3822         i: u32,
3823         r_i: u32,
3824         q: u32,
3825         o: u32,
3826     },
3827     PtrCastToCrossWorkgroupINTEL {
3828         result_type_id: Id,
3829         result_id: Id,
3830         pointer: Id,
3831     },
3832     CrossWorkgroupCastToPtrINTEL {
3833         result_type_id: Id,
3834         result_id: Id,
3835         pointer: Id,
3836     },
3837     ReadPipeBlockingINTEL {
3838         result_type_id: Id,
3839         result_id: Id,
3840         packet_size: Id,
3841         packet_alignment: Id,
3842     },
3843     WritePipeBlockingINTEL {
3844         result_type_id: Id,
3845         result_id: Id,
3846         packet_size: Id,
3847         packet_alignment: Id,
3848     },
3849     FPGARegINTEL {
3850         result_type_id: Id,
3851         result_id: Id,
3852         result: Id,
3853         input: Id,
3854     },
3855     RayQueryGetRayTMinKHR {
3856         result_type_id: Id,
3857         result_id: Id,
3858         ray_query: Id,
3859     },
3860     RayQueryGetRayFlagsKHR {
3861         result_type_id: Id,
3862         result_id: Id,
3863         ray_query: Id,
3864     },
3865     RayQueryGetIntersectionTKHR {
3866         result_type_id: Id,
3867         result_id: Id,
3868         ray_query: Id,
3869         intersection: Id,
3870     },
3871     RayQueryGetIntersectionInstanceCustomIndexKHR {
3872         result_type_id: Id,
3873         result_id: Id,
3874         ray_query: Id,
3875         intersection: Id,
3876     },
3877     RayQueryGetIntersectionInstanceIdKHR {
3878         result_type_id: Id,
3879         result_id: Id,
3880         ray_query: Id,
3881         intersection: Id,
3882     },
3883     RayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR {
3884         result_type_id: Id,
3885         result_id: Id,
3886         ray_query: Id,
3887         intersection: Id,
3888     },
3889     RayQueryGetIntersectionGeometryIndexKHR {
3890         result_type_id: Id,
3891         result_id: Id,
3892         ray_query: Id,
3893         intersection: Id,
3894     },
3895     RayQueryGetIntersectionPrimitiveIndexKHR {
3896         result_type_id: Id,
3897         result_id: Id,
3898         ray_query: Id,
3899         intersection: Id,
3900     },
3901     RayQueryGetIntersectionBarycentricsKHR {
3902         result_type_id: Id,
3903         result_id: Id,
3904         ray_query: Id,
3905         intersection: Id,
3906     },
3907     RayQueryGetIntersectionFrontFaceKHR {
3908         result_type_id: Id,
3909         result_id: Id,
3910         ray_query: Id,
3911         intersection: Id,
3912     },
3913     RayQueryGetIntersectionCandidateAABBOpaqueKHR {
3914         result_type_id: Id,
3915         result_id: Id,
3916         ray_query: Id,
3917     },
3918     RayQueryGetIntersectionObjectRayDirectionKHR {
3919         result_type_id: Id,
3920         result_id: Id,
3921         ray_query: Id,
3922         intersection: Id,
3923     },
3924     RayQueryGetIntersectionObjectRayOriginKHR {
3925         result_type_id: Id,
3926         result_id: Id,
3927         ray_query: Id,
3928         intersection: Id,
3929     },
3930     RayQueryGetWorldRayDirectionKHR {
3931         result_type_id: Id,
3932         result_id: Id,
3933         ray_query: Id,
3934     },
3935     RayQueryGetWorldRayOriginKHR {
3936         result_type_id: Id,
3937         result_id: Id,
3938         ray_query: Id,
3939     },
3940     RayQueryGetIntersectionObjectToWorldKHR {
3941         result_type_id: Id,
3942         result_id: Id,
3943         ray_query: Id,
3944         intersection: Id,
3945     },
3946     RayQueryGetIntersectionWorldToObjectKHR {
3947         result_type_id: Id,
3948         result_id: Id,
3949         ray_query: Id,
3950         intersection: Id,
3951     },
3952     AtomicFAddEXT {
3953         result_type_id: Id,
3954         result_id: Id,
3955         pointer: Id,
3956         memory: Id,
3957         semantics: Id,
3958         value: Id,
3959     },
3960     TypeBufferSurfaceINTEL {
3961         result_id: Id,
3962         access_qualifier: AccessQualifier,
3963     },
3964     TypeStructContinuedINTEL {
3965         member_types: Vec<Id>,
3966     },
3967     ConstantCompositeContinuedINTEL {
3968         constituents: Vec<Id>,
3969     },
3970     SpecConstantCompositeContinuedINTEL {
3971         constituents: Vec<Id>,
3972     },
3973 }
3974 impl Instruction {
3975     #[allow(dead_code)]
parse(reader: &mut InstructionReader<'_>) -> Result<Self, ParseError>3976     fn parse(reader: &mut InstructionReader<'_>) -> Result<Self, ParseError> {
3977         let opcode = (reader.next_u32()? & 0xffff) as u16;
3978         Ok(match opcode {
3979             0u16 => Self::Nop,
3980             1u16 => Self::Undef {
3981                 result_type_id: Id(reader.next_u32()?),
3982                 result_id: Id(reader.next_u32()?),
3983             },
3984             2u16 => Self::SourceContinued {
3985                 continued_source: reader.next_string()?,
3986             },
3987             3u16 => Self::Source {
3988                 source_language: SourceLanguage::parse(reader)?,
3989                 version: reader.next_u32()?,
3990                 file: if !reader.is_empty() {
3991                     Some(Id(reader.next_u32()?))
3992                 } else {
3993                     None
3994                 },
3995                 source: if !reader.is_empty() {
3996                     Some(reader.next_string()?)
3997                 } else {
3998                     None
3999                 },
4000             },
4001             4u16 => Self::SourceExtension {
4002                 extension: reader.next_string()?,
4003             },
4004             5u16 => Self::Name {
4005                 target: Id(reader.next_u32()?),
4006                 name: reader.next_string()?,
4007             },
4008             6u16 => Self::MemberName {
4009                 ty: Id(reader.next_u32()?),
4010                 member: reader.next_u32()?,
4011                 name: reader.next_string()?,
4012             },
4013             7u16 => Self::String {
4014                 result_id: Id(reader.next_u32()?),
4015                 string: reader.next_string()?,
4016             },
4017             8u16 => Self::Line {
4018                 file: Id(reader.next_u32()?),
4019                 line: reader.next_u32()?,
4020                 column: reader.next_u32()?,
4021             },
4022             10u16 => Self::Extension {
4023                 name: reader.next_string()?,
4024             },
4025             11u16 => Self::ExtInstImport {
4026                 result_id: Id(reader.next_u32()?),
4027                 name: reader.next_string()?,
4028             },
4029             12u16 => Self::ExtInst {
4030                 result_type_id: Id(reader.next_u32()?),
4031                 result_id: Id(reader.next_u32()?),
4032                 set: Id(reader.next_u32()?),
4033                 instruction: reader.next_u32()?,
4034                 operands: {
4035                     let mut vec = Vec::new();
4036                     while !reader.is_empty() {
4037                         vec.push(Id(reader.next_u32()?));
4038                     }
4039                     vec
4040                 },
4041             },
4042             14u16 => Self::MemoryModel {
4043                 addressing_model: AddressingModel::parse(reader)?,
4044                 memory_model: MemoryModel::parse(reader)?,
4045             },
4046             15u16 => Self::EntryPoint {
4047                 execution_model: ExecutionModel::parse(reader)?,
4048                 entry_point: Id(reader.next_u32()?),
4049                 name: reader.next_string()?,
4050                 interface: {
4051                     let mut vec = Vec::new();
4052                     while !reader.is_empty() {
4053                         vec.push(Id(reader.next_u32()?));
4054                     }
4055                     vec
4056                 },
4057             },
4058             16u16 => Self::ExecutionMode {
4059                 entry_point: Id(reader.next_u32()?),
4060                 mode: ExecutionMode::parse(reader)?,
4061             },
4062             17u16 => Self::Capability {
4063                 capability: Capability::parse(reader)?,
4064             },
4065             19u16 => Self::TypeVoid {
4066                 result_id: Id(reader.next_u32()?),
4067             },
4068             20u16 => Self::TypeBool {
4069                 result_id: Id(reader.next_u32()?),
4070             },
4071             21u16 => Self::TypeInt {
4072                 result_id: Id(reader.next_u32()?),
4073                 width: reader.next_u32()?,
4074                 signedness: reader.next_u32()?,
4075             },
4076             22u16 => Self::TypeFloat {
4077                 result_id: Id(reader.next_u32()?),
4078                 width: reader.next_u32()?,
4079             },
4080             23u16 => Self::TypeVector {
4081                 result_id: Id(reader.next_u32()?),
4082                 component_type: Id(reader.next_u32()?),
4083                 component_count: reader.next_u32()?,
4084             },
4085             24u16 => Self::TypeMatrix {
4086                 result_id: Id(reader.next_u32()?),
4087                 column_type: Id(reader.next_u32()?),
4088                 column_count: reader.next_u32()?,
4089             },
4090             25u16 => Self::TypeImage {
4091                 result_id: Id(reader.next_u32()?),
4092                 sampled_type: Id(reader.next_u32()?),
4093                 dim: Dim::parse(reader)?,
4094                 depth: reader.next_u32()?,
4095                 arrayed: reader.next_u32()?,
4096                 ms: reader.next_u32()?,
4097                 sampled: reader.next_u32()?,
4098                 image_format: ImageFormat::parse(reader)?,
4099                 access_qualifier: if !reader.is_empty() {
4100                     Some(AccessQualifier::parse(reader)?)
4101                 } else {
4102                     None
4103                 },
4104             },
4105             26u16 => Self::TypeSampler {
4106                 result_id: Id(reader.next_u32()?),
4107             },
4108             27u16 => Self::TypeSampledImage {
4109                 result_id: Id(reader.next_u32()?),
4110                 image_type: Id(reader.next_u32()?),
4111             },
4112             28u16 => Self::TypeArray {
4113                 result_id: Id(reader.next_u32()?),
4114                 element_type: Id(reader.next_u32()?),
4115                 length: Id(reader.next_u32()?),
4116             },
4117             29u16 => Self::TypeRuntimeArray {
4118                 result_id: Id(reader.next_u32()?),
4119                 element_type: Id(reader.next_u32()?),
4120             },
4121             30u16 => Self::TypeStruct {
4122                 result_id: Id(reader.next_u32()?),
4123                 member_types: {
4124                     let mut vec = Vec::new();
4125                     while !reader.is_empty() {
4126                         vec.push(Id(reader.next_u32()?));
4127                     }
4128                     vec
4129                 },
4130             },
4131             31u16 => Self::TypeOpaque {
4132                 result_id: Id(reader.next_u32()?),
4133                 name: reader.next_string()?,
4134             },
4135             32u16 => Self::TypePointer {
4136                 result_id: Id(reader.next_u32()?),
4137                 storage_class: StorageClass::parse(reader)?,
4138                 ty: Id(reader.next_u32()?),
4139             },
4140             33u16 => Self::TypeFunction {
4141                 result_id: Id(reader.next_u32()?),
4142                 return_type: Id(reader.next_u32()?),
4143                 parameter_types: {
4144                     let mut vec = Vec::new();
4145                     while !reader.is_empty() {
4146                         vec.push(Id(reader.next_u32()?));
4147                     }
4148                     vec
4149                 },
4150             },
4151             34u16 => Self::TypeEvent {
4152                 result_id: Id(reader.next_u32()?),
4153             },
4154             35u16 => Self::TypeDeviceEvent {
4155                 result_id: Id(reader.next_u32()?),
4156             },
4157             36u16 => Self::TypeReserveId {
4158                 result_id: Id(reader.next_u32()?),
4159             },
4160             37u16 => Self::TypeQueue {
4161                 result_id: Id(reader.next_u32()?),
4162             },
4163             38u16 => Self::TypePipe {
4164                 result_id: Id(reader.next_u32()?),
4165                 qualifier: AccessQualifier::parse(reader)?,
4166             },
4167             39u16 => Self::TypeForwardPointer {
4168                 pointer_type: Id(reader.next_u32()?),
4169                 storage_class: StorageClass::parse(reader)?,
4170             },
4171             41u16 => Self::ConstantTrue {
4172                 result_type_id: Id(reader.next_u32()?),
4173                 result_id: Id(reader.next_u32()?),
4174             },
4175             42u16 => Self::ConstantFalse {
4176                 result_type_id: Id(reader.next_u32()?),
4177                 result_id: Id(reader.next_u32()?),
4178             },
4179             43u16 => Self::Constant {
4180                 result_type_id: Id(reader.next_u32()?),
4181                 result_id: Id(reader.next_u32()?),
4182                 value: reader.remainder(),
4183             },
4184             44u16 => Self::ConstantComposite {
4185                 result_type_id: Id(reader.next_u32()?),
4186                 result_id: Id(reader.next_u32()?),
4187                 constituents: {
4188                     let mut vec = Vec::new();
4189                     while !reader.is_empty() {
4190                         vec.push(Id(reader.next_u32()?));
4191                     }
4192                     vec
4193                 },
4194             },
4195             45u16 => Self::ConstantSampler {
4196                 result_type_id: Id(reader.next_u32()?),
4197                 result_id: Id(reader.next_u32()?),
4198                 sampler_addressing_mode: SamplerAddressingMode::parse(reader)?,
4199                 param: reader.next_u32()?,
4200                 sampler_filter_mode: SamplerFilterMode::parse(reader)?,
4201             },
4202             46u16 => Self::ConstantNull {
4203                 result_type_id: Id(reader.next_u32()?),
4204                 result_id: Id(reader.next_u32()?),
4205             },
4206             48u16 => Self::SpecConstantTrue {
4207                 result_type_id: Id(reader.next_u32()?),
4208                 result_id: Id(reader.next_u32()?),
4209             },
4210             49u16 => Self::SpecConstantFalse {
4211                 result_type_id: Id(reader.next_u32()?),
4212                 result_id: Id(reader.next_u32()?),
4213             },
4214             50u16 => Self::SpecConstant {
4215                 result_type_id: Id(reader.next_u32()?),
4216                 result_id: Id(reader.next_u32()?),
4217                 value: reader.remainder(),
4218             },
4219             51u16 => Self::SpecConstantComposite {
4220                 result_type_id: Id(reader.next_u32()?),
4221                 result_id: Id(reader.next_u32()?),
4222                 constituents: {
4223                     let mut vec = Vec::new();
4224                     while !reader.is_empty() {
4225                         vec.push(Id(reader.next_u32()?));
4226                     }
4227                     vec
4228                 },
4229             },
4230             52u16 => Self::SpecConstantOp {
4231                 result_type_id: Id(reader.next_u32()?),
4232                 result_id: Id(reader.next_u32()?),
4233                 opcode: SpecConstantInstruction::parse(reader)?,
4234             },
4235             54u16 => Self::Function {
4236                 result_type_id: Id(reader.next_u32()?),
4237                 result_id: Id(reader.next_u32()?),
4238                 function_control: FunctionControl::parse(reader)?,
4239                 function_type: Id(reader.next_u32()?),
4240             },
4241             55u16 => Self::FunctionParameter {
4242                 result_type_id: Id(reader.next_u32()?),
4243                 result_id: Id(reader.next_u32()?),
4244             },
4245             56u16 => Self::FunctionEnd,
4246             57u16 => Self::FunctionCall {
4247                 result_type_id: Id(reader.next_u32()?),
4248                 result_id: Id(reader.next_u32()?),
4249                 function: Id(reader.next_u32()?),
4250                 arguments: {
4251                     let mut vec = Vec::new();
4252                     while !reader.is_empty() {
4253                         vec.push(Id(reader.next_u32()?));
4254                     }
4255                     vec
4256                 },
4257             },
4258             59u16 => Self::Variable {
4259                 result_type_id: Id(reader.next_u32()?),
4260                 result_id: Id(reader.next_u32()?),
4261                 storage_class: StorageClass::parse(reader)?,
4262                 initializer: if !reader.is_empty() {
4263                     Some(Id(reader.next_u32()?))
4264                 } else {
4265                     None
4266                 },
4267             },
4268             60u16 => Self::ImageTexelPointer {
4269                 result_type_id: Id(reader.next_u32()?),
4270                 result_id: Id(reader.next_u32()?),
4271                 image: Id(reader.next_u32()?),
4272                 coordinate: Id(reader.next_u32()?),
4273                 sample: Id(reader.next_u32()?),
4274             },
4275             61u16 => Self::Load {
4276                 result_type_id: Id(reader.next_u32()?),
4277                 result_id: Id(reader.next_u32()?),
4278                 pointer: Id(reader.next_u32()?),
4279                 memory_access: if !reader.is_empty() {
4280                     Some(MemoryAccess::parse(reader)?)
4281                 } else {
4282                     None
4283                 },
4284             },
4285             62u16 => Self::Store {
4286                 pointer: Id(reader.next_u32()?),
4287                 object: Id(reader.next_u32()?),
4288                 memory_access: if !reader.is_empty() {
4289                     Some(MemoryAccess::parse(reader)?)
4290                 } else {
4291                     None
4292                 },
4293             },
4294             63u16 => Self::CopyMemory {
4295                 target: Id(reader.next_u32()?),
4296                 source: Id(reader.next_u32()?),
4297                 memory_access1: if !reader.is_empty() {
4298                     Some(MemoryAccess::parse(reader)?)
4299                 } else {
4300                     None
4301                 },
4302                 memory_access2: if !reader.is_empty() {
4303                     Some(MemoryAccess::parse(reader)?)
4304                 } else {
4305                     None
4306                 },
4307             },
4308             64u16 => Self::CopyMemorySized {
4309                 target: Id(reader.next_u32()?),
4310                 source: Id(reader.next_u32()?),
4311                 size: Id(reader.next_u32()?),
4312                 memory_access1: if !reader.is_empty() {
4313                     Some(MemoryAccess::parse(reader)?)
4314                 } else {
4315                     None
4316                 },
4317                 memory_access2: if !reader.is_empty() {
4318                     Some(MemoryAccess::parse(reader)?)
4319                 } else {
4320                     None
4321                 },
4322             },
4323             65u16 => Self::AccessChain {
4324                 result_type_id: Id(reader.next_u32()?),
4325                 result_id: Id(reader.next_u32()?),
4326                 base: Id(reader.next_u32()?),
4327                 indexes: {
4328                     let mut vec = Vec::new();
4329                     while !reader.is_empty() {
4330                         vec.push(Id(reader.next_u32()?));
4331                     }
4332                     vec
4333                 },
4334             },
4335             66u16 => Self::InBoundsAccessChain {
4336                 result_type_id: Id(reader.next_u32()?),
4337                 result_id: Id(reader.next_u32()?),
4338                 base: Id(reader.next_u32()?),
4339                 indexes: {
4340                     let mut vec = Vec::new();
4341                     while !reader.is_empty() {
4342                         vec.push(Id(reader.next_u32()?));
4343                     }
4344                     vec
4345                 },
4346             },
4347             67u16 => Self::PtrAccessChain {
4348                 result_type_id: Id(reader.next_u32()?),
4349                 result_id: Id(reader.next_u32()?),
4350                 base: Id(reader.next_u32()?),
4351                 element: Id(reader.next_u32()?),
4352                 indexes: {
4353                     let mut vec = Vec::new();
4354                     while !reader.is_empty() {
4355                         vec.push(Id(reader.next_u32()?));
4356                     }
4357                     vec
4358                 },
4359             },
4360             68u16 => Self::ArrayLength {
4361                 result_type_id: Id(reader.next_u32()?),
4362                 result_id: Id(reader.next_u32()?),
4363                 structure: Id(reader.next_u32()?),
4364                 array_member: reader.next_u32()?,
4365             },
4366             69u16 => Self::GenericPtrMemSemantics {
4367                 result_type_id: Id(reader.next_u32()?),
4368                 result_id: Id(reader.next_u32()?),
4369                 pointer: Id(reader.next_u32()?),
4370             },
4371             70u16 => Self::InBoundsPtrAccessChain {
4372                 result_type_id: Id(reader.next_u32()?),
4373                 result_id: Id(reader.next_u32()?),
4374                 base: Id(reader.next_u32()?),
4375                 element: Id(reader.next_u32()?),
4376                 indexes: {
4377                     let mut vec = Vec::new();
4378                     while !reader.is_empty() {
4379                         vec.push(Id(reader.next_u32()?));
4380                     }
4381                     vec
4382                 },
4383             },
4384             71u16 => Self::Decorate {
4385                 target: Id(reader.next_u32()?),
4386                 decoration: Decoration::parse(reader)?,
4387             },
4388             72u16 => Self::MemberDecorate {
4389                 structure_type: Id(reader.next_u32()?),
4390                 member: reader.next_u32()?,
4391                 decoration: Decoration::parse(reader)?,
4392             },
4393             73u16 => Self::DecorationGroup {
4394                 result_id: Id(reader.next_u32()?),
4395             },
4396             74u16 => Self::GroupDecorate {
4397                 decoration_group: Id(reader.next_u32()?),
4398                 targets: {
4399                     let mut vec = Vec::new();
4400                     while !reader.is_empty() {
4401                         vec.push(Id(reader.next_u32()?));
4402                     }
4403                     vec
4404                 },
4405             },
4406             75u16 => Self::GroupMemberDecorate {
4407                 decoration_group: Id(reader.next_u32()?),
4408                 targets: {
4409                     let mut vec = Vec::new();
4410                     while !reader.is_empty() {
4411                         vec.push((Id(reader.next_u32()?), reader.next_u32()?));
4412                     }
4413                     vec
4414                 },
4415             },
4416             77u16 => Self::VectorExtractDynamic {
4417                 result_type_id: Id(reader.next_u32()?),
4418                 result_id: Id(reader.next_u32()?),
4419                 vector: Id(reader.next_u32()?),
4420                 index: Id(reader.next_u32()?),
4421             },
4422             78u16 => Self::VectorInsertDynamic {
4423                 result_type_id: Id(reader.next_u32()?),
4424                 result_id: Id(reader.next_u32()?),
4425                 vector: Id(reader.next_u32()?),
4426                 component: Id(reader.next_u32()?),
4427                 index: Id(reader.next_u32()?),
4428             },
4429             79u16 => Self::VectorShuffle {
4430                 result_type_id: Id(reader.next_u32()?),
4431                 result_id: Id(reader.next_u32()?),
4432                 vector_1: Id(reader.next_u32()?),
4433                 vector_2: Id(reader.next_u32()?),
4434                 components: {
4435                     let mut vec = Vec::new();
4436                     while !reader.is_empty() {
4437                         vec.push(reader.next_u32()?);
4438                     }
4439                     vec
4440                 },
4441             },
4442             80u16 => Self::CompositeConstruct {
4443                 result_type_id: Id(reader.next_u32()?),
4444                 result_id: Id(reader.next_u32()?),
4445                 constituents: {
4446                     let mut vec = Vec::new();
4447                     while !reader.is_empty() {
4448                         vec.push(Id(reader.next_u32()?));
4449                     }
4450                     vec
4451                 },
4452             },
4453             81u16 => Self::CompositeExtract {
4454                 result_type_id: Id(reader.next_u32()?),
4455                 result_id: Id(reader.next_u32()?),
4456                 composite: Id(reader.next_u32()?),
4457                 indexes: {
4458                     let mut vec = Vec::new();
4459                     while !reader.is_empty() {
4460                         vec.push(reader.next_u32()?);
4461                     }
4462                     vec
4463                 },
4464             },
4465             82u16 => Self::CompositeInsert {
4466                 result_type_id: Id(reader.next_u32()?),
4467                 result_id: Id(reader.next_u32()?),
4468                 object: Id(reader.next_u32()?),
4469                 composite: Id(reader.next_u32()?),
4470                 indexes: {
4471                     let mut vec = Vec::new();
4472                     while !reader.is_empty() {
4473                         vec.push(reader.next_u32()?);
4474                     }
4475                     vec
4476                 },
4477             },
4478             83u16 => Self::CopyObject {
4479                 result_type_id: Id(reader.next_u32()?),
4480                 result_id: Id(reader.next_u32()?),
4481                 operand: Id(reader.next_u32()?),
4482             },
4483             84u16 => Self::Transpose {
4484                 result_type_id: Id(reader.next_u32()?),
4485                 result_id: Id(reader.next_u32()?),
4486                 matrix: Id(reader.next_u32()?),
4487             },
4488             86u16 => Self::SampledImage {
4489                 result_type_id: Id(reader.next_u32()?),
4490                 result_id: Id(reader.next_u32()?),
4491                 image: Id(reader.next_u32()?),
4492                 sampler: Id(reader.next_u32()?),
4493             },
4494             87u16 => Self::ImageSampleImplicitLod {
4495                 result_type_id: Id(reader.next_u32()?),
4496                 result_id: Id(reader.next_u32()?),
4497                 sampled_image: Id(reader.next_u32()?),
4498                 coordinate: Id(reader.next_u32()?),
4499                 image_operands: if !reader.is_empty() {
4500                     Some(ImageOperands::parse(reader)?)
4501                 } else {
4502                     None
4503                 },
4504             },
4505             88u16 => Self::ImageSampleExplicitLod {
4506                 result_type_id: Id(reader.next_u32()?),
4507                 result_id: Id(reader.next_u32()?),
4508                 sampled_image: Id(reader.next_u32()?),
4509                 coordinate: Id(reader.next_u32()?),
4510                 image_operands: ImageOperands::parse(reader)?,
4511             },
4512             89u16 => Self::ImageSampleDrefImplicitLod {
4513                 result_type_id: Id(reader.next_u32()?),
4514                 result_id: Id(reader.next_u32()?),
4515                 sampled_image: Id(reader.next_u32()?),
4516                 coordinate: Id(reader.next_u32()?),
4517                 dref: Id(reader.next_u32()?),
4518                 image_operands: if !reader.is_empty() {
4519                     Some(ImageOperands::parse(reader)?)
4520                 } else {
4521                     None
4522                 },
4523             },
4524             90u16 => Self::ImageSampleDrefExplicitLod {
4525                 result_type_id: Id(reader.next_u32()?),
4526                 result_id: Id(reader.next_u32()?),
4527                 sampled_image: Id(reader.next_u32()?),
4528                 coordinate: Id(reader.next_u32()?),
4529                 dref: Id(reader.next_u32()?),
4530                 image_operands: ImageOperands::parse(reader)?,
4531             },
4532             91u16 => Self::ImageSampleProjImplicitLod {
4533                 result_type_id: Id(reader.next_u32()?),
4534                 result_id: Id(reader.next_u32()?),
4535                 sampled_image: Id(reader.next_u32()?),
4536                 coordinate: Id(reader.next_u32()?),
4537                 image_operands: if !reader.is_empty() {
4538                     Some(ImageOperands::parse(reader)?)
4539                 } else {
4540                     None
4541                 },
4542             },
4543             92u16 => Self::ImageSampleProjExplicitLod {
4544                 result_type_id: Id(reader.next_u32()?),
4545                 result_id: Id(reader.next_u32()?),
4546                 sampled_image: Id(reader.next_u32()?),
4547                 coordinate: Id(reader.next_u32()?),
4548                 image_operands: ImageOperands::parse(reader)?,
4549             },
4550             93u16 => Self::ImageSampleProjDrefImplicitLod {
4551                 result_type_id: Id(reader.next_u32()?),
4552                 result_id: Id(reader.next_u32()?),
4553                 sampled_image: Id(reader.next_u32()?),
4554                 coordinate: Id(reader.next_u32()?),
4555                 dref: Id(reader.next_u32()?),
4556                 image_operands: if !reader.is_empty() {
4557                     Some(ImageOperands::parse(reader)?)
4558                 } else {
4559                     None
4560                 },
4561             },
4562             94u16 => Self::ImageSampleProjDrefExplicitLod {
4563                 result_type_id: Id(reader.next_u32()?),
4564                 result_id: Id(reader.next_u32()?),
4565                 sampled_image: Id(reader.next_u32()?),
4566                 coordinate: Id(reader.next_u32()?),
4567                 dref: Id(reader.next_u32()?),
4568                 image_operands: ImageOperands::parse(reader)?,
4569             },
4570             95u16 => Self::ImageFetch {
4571                 result_type_id: Id(reader.next_u32()?),
4572                 result_id: Id(reader.next_u32()?),
4573                 image: Id(reader.next_u32()?),
4574                 coordinate: Id(reader.next_u32()?),
4575                 image_operands: if !reader.is_empty() {
4576                     Some(ImageOperands::parse(reader)?)
4577                 } else {
4578                     None
4579                 },
4580             },
4581             96u16 => Self::ImageGather {
4582                 result_type_id: Id(reader.next_u32()?),
4583                 result_id: Id(reader.next_u32()?),
4584                 sampled_image: Id(reader.next_u32()?),
4585                 coordinate: Id(reader.next_u32()?),
4586                 component: Id(reader.next_u32()?),
4587                 image_operands: if !reader.is_empty() {
4588                     Some(ImageOperands::parse(reader)?)
4589                 } else {
4590                     None
4591                 },
4592             },
4593             97u16 => Self::ImageDrefGather {
4594                 result_type_id: Id(reader.next_u32()?),
4595                 result_id: Id(reader.next_u32()?),
4596                 sampled_image: Id(reader.next_u32()?),
4597                 coordinate: Id(reader.next_u32()?),
4598                 dref: Id(reader.next_u32()?),
4599                 image_operands: if !reader.is_empty() {
4600                     Some(ImageOperands::parse(reader)?)
4601                 } else {
4602                     None
4603                 },
4604             },
4605             98u16 => Self::ImageRead {
4606                 result_type_id: Id(reader.next_u32()?),
4607                 result_id: Id(reader.next_u32()?),
4608                 image: Id(reader.next_u32()?),
4609                 coordinate: Id(reader.next_u32()?),
4610                 image_operands: if !reader.is_empty() {
4611                     Some(ImageOperands::parse(reader)?)
4612                 } else {
4613                     None
4614                 },
4615             },
4616             99u16 => Self::ImageWrite {
4617                 image: Id(reader.next_u32()?),
4618                 coordinate: Id(reader.next_u32()?),
4619                 texel: Id(reader.next_u32()?),
4620                 image_operands: if !reader.is_empty() {
4621                     Some(ImageOperands::parse(reader)?)
4622                 } else {
4623                     None
4624                 },
4625             },
4626             100u16 => Self::Image {
4627                 result_type_id: Id(reader.next_u32()?),
4628                 result_id: Id(reader.next_u32()?),
4629                 sampled_image: Id(reader.next_u32()?),
4630             },
4631             101u16 => Self::ImageQueryFormat {
4632                 result_type_id: Id(reader.next_u32()?),
4633                 result_id: Id(reader.next_u32()?),
4634                 image: Id(reader.next_u32()?),
4635             },
4636             102u16 => Self::ImageQueryOrder {
4637                 result_type_id: Id(reader.next_u32()?),
4638                 result_id: Id(reader.next_u32()?),
4639                 image: Id(reader.next_u32()?),
4640             },
4641             103u16 => Self::ImageQuerySizeLod {
4642                 result_type_id: Id(reader.next_u32()?),
4643                 result_id: Id(reader.next_u32()?),
4644                 image: Id(reader.next_u32()?),
4645                 level_of_detail: Id(reader.next_u32()?),
4646             },
4647             104u16 => Self::ImageQuerySize {
4648                 result_type_id: Id(reader.next_u32()?),
4649                 result_id: Id(reader.next_u32()?),
4650                 image: Id(reader.next_u32()?),
4651             },
4652             105u16 => Self::ImageQueryLod {
4653                 result_type_id: Id(reader.next_u32()?),
4654                 result_id: Id(reader.next_u32()?),
4655                 sampled_image: Id(reader.next_u32()?),
4656                 coordinate: Id(reader.next_u32()?),
4657             },
4658             106u16 => Self::ImageQueryLevels {
4659                 result_type_id: Id(reader.next_u32()?),
4660                 result_id: Id(reader.next_u32()?),
4661                 image: Id(reader.next_u32()?),
4662             },
4663             107u16 => Self::ImageQuerySamples {
4664                 result_type_id: Id(reader.next_u32()?),
4665                 result_id: Id(reader.next_u32()?),
4666                 image: Id(reader.next_u32()?),
4667             },
4668             109u16 => Self::ConvertFToU {
4669                 result_type_id: Id(reader.next_u32()?),
4670                 result_id: Id(reader.next_u32()?),
4671                 float_value: Id(reader.next_u32()?),
4672             },
4673             110u16 => Self::ConvertFToS {
4674                 result_type_id: Id(reader.next_u32()?),
4675                 result_id: Id(reader.next_u32()?),
4676                 float_value: Id(reader.next_u32()?),
4677             },
4678             111u16 => Self::ConvertSToF {
4679                 result_type_id: Id(reader.next_u32()?),
4680                 result_id: Id(reader.next_u32()?),
4681                 signed_value: Id(reader.next_u32()?),
4682             },
4683             112u16 => Self::ConvertUToF {
4684                 result_type_id: Id(reader.next_u32()?),
4685                 result_id: Id(reader.next_u32()?),
4686                 unsigned_value: Id(reader.next_u32()?),
4687             },
4688             113u16 => Self::UConvert {
4689                 result_type_id: Id(reader.next_u32()?),
4690                 result_id: Id(reader.next_u32()?),
4691                 unsigned_value: Id(reader.next_u32()?),
4692             },
4693             114u16 => Self::SConvert {
4694                 result_type_id: Id(reader.next_u32()?),
4695                 result_id: Id(reader.next_u32()?),
4696                 signed_value: Id(reader.next_u32()?),
4697             },
4698             115u16 => Self::FConvert {
4699                 result_type_id: Id(reader.next_u32()?),
4700                 result_id: Id(reader.next_u32()?),
4701                 float_value: Id(reader.next_u32()?),
4702             },
4703             116u16 => Self::QuantizeToF16 {
4704                 result_type_id: Id(reader.next_u32()?),
4705                 result_id: Id(reader.next_u32()?),
4706                 value: Id(reader.next_u32()?),
4707             },
4708             117u16 => Self::ConvertPtrToU {
4709                 result_type_id: Id(reader.next_u32()?),
4710                 result_id: Id(reader.next_u32()?),
4711                 pointer: Id(reader.next_u32()?),
4712             },
4713             118u16 => Self::SatConvertSToU {
4714                 result_type_id: Id(reader.next_u32()?),
4715                 result_id: Id(reader.next_u32()?),
4716                 signed_value: Id(reader.next_u32()?),
4717             },
4718             119u16 => Self::SatConvertUToS {
4719                 result_type_id: Id(reader.next_u32()?),
4720                 result_id: Id(reader.next_u32()?),
4721                 unsigned_value: Id(reader.next_u32()?),
4722             },
4723             120u16 => Self::ConvertUToPtr {
4724                 result_type_id: Id(reader.next_u32()?),
4725                 result_id: Id(reader.next_u32()?),
4726                 integer_value: Id(reader.next_u32()?),
4727             },
4728             121u16 => Self::PtrCastToGeneric {
4729                 result_type_id: Id(reader.next_u32()?),
4730                 result_id: Id(reader.next_u32()?),
4731                 pointer: Id(reader.next_u32()?),
4732             },
4733             122u16 => Self::GenericCastToPtr {
4734                 result_type_id: Id(reader.next_u32()?),
4735                 result_id: Id(reader.next_u32()?),
4736                 pointer: Id(reader.next_u32()?),
4737             },
4738             123u16 => Self::GenericCastToPtrExplicit {
4739                 result_type_id: Id(reader.next_u32()?),
4740                 result_id: Id(reader.next_u32()?),
4741                 pointer: Id(reader.next_u32()?),
4742                 storage: StorageClass::parse(reader)?,
4743             },
4744             124u16 => Self::Bitcast {
4745                 result_type_id: Id(reader.next_u32()?),
4746                 result_id: Id(reader.next_u32()?),
4747                 operand: Id(reader.next_u32()?),
4748             },
4749             126u16 => Self::SNegate {
4750                 result_type_id: Id(reader.next_u32()?),
4751                 result_id: Id(reader.next_u32()?),
4752                 operand: Id(reader.next_u32()?),
4753             },
4754             127u16 => Self::FNegate {
4755                 result_type_id: Id(reader.next_u32()?),
4756                 result_id: Id(reader.next_u32()?),
4757                 operand: Id(reader.next_u32()?),
4758             },
4759             128u16 => Self::IAdd {
4760                 result_type_id: Id(reader.next_u32()?),
4761                 result_id: Id(reader.next_u32()?),
4762                 operand1: Id(reader.next_u32()?),
4763                 operand2: Id(reader.next_u32()?),
4764             },
4765             129u16 => Self::FAdd {
4766                 result_type_id: Id(reader.next_u32()?),
4767                 result_id: Id(reader.next_u32()?),
4768                 operand1: Id(reader.next_u32()?),
4769                 operand2: Id(reader.next_u32()?),
4770             },
4771             130u16 => Self::ISub {
4772                 result_type_id: Id(reader.next_u32()?),
4773                 result_id: Id(reader.next_u32()?),
4774                 operand1: Id(reader.next_u32()?),
4775                 operand2: Id(reader.next_u32()?),
4776             },
4777             131u16 => Self::FSub {
4778                 result_type_id: Id(reader.next_u32()?),
4779                 result_id: Id(reader.next_u32()?),
4780                 operand1: Id(reader.next_u32()?),
4781                 operand2: Id(reader.next_u32()?),
4782             },
4783             132u16 => Self::IMul {
4784                 result_type_id: Id(reader.next_u32()?),
4785                 result_id: Id(reader.next_u32()?),
4786                 operand1: Id(reader.next_u32()?),
4787                 operand2: Id(reader.next_u32()?),
4788             },
4789             133u16 => Self::FMul {
4790                 result_type_id: Id(reader.next_u32()?),
4791                 result_id: Id(reader.next_u32()?),
4792                 operand1: Id(reader.next_u32()?),
4793                 operand2: Id(reader.next_u32()?),
4794             },
4795             134u16 => Self::UDiv {
4796                 result_type_id: Id(reader.next_u32()?),
4797                 result_id: Id(reader.next_u32()?),
4798                 operand1: Id(reader.next_u32()?),
4799                 operand2: Id(reader.next_u32()?),
4800             },
4801             135u16 => Self::SDiv {
4802                 result_type_id: Id(reader.next_u32()?),
4803                 result_id: Id(reader.next_u32()?),
4804                 operand1: Id(reader.next_u32()?),
4805                 operand2: Id(reader.next_u32()?),
4806             },
4807             136u16 => Self::FDiv {
4808                 result_type_id: Id(reader.next_u32()?),
4809                 result_id: Id(reader.next_u32()?),
4810                 operand1: Id(reader.next_u32()?),
4811                 operand2: Id(reader.next_u32()?),
4812             },
4813             137u16 => Self::UMod {
4814                 result_type_id: Id(reader.next_u32()?),
4815                 result_id: Id(reader.next_u32()?),
4816                 operand1: Id(reader.next_u32()?),
4817                 operand2: Id(reader.next_u32()?),
4818             },
4819             138u16 => Self::SRem {
4820                 result_type_id: Id(reader.next_u32()?),
4821                 result_id: Id(reader.next_u32()?),
4822                 operand1: Id(reader.next_u32()?),
4823                 operand2: Id(reader.next_u32()?),
4824             },
4825             139u16 => Self::SMod {
4826                 result_type_id: Id(reader.next_u32()?),
4827                 result_id: Id(reader.next_u32()?),
4828                 operand1: Id(reader.next_u32()?),
4829                 operand2: Id(reader.next_u32()?),
4830             },
4831             140u16 => Self::FRem {
4832                 result_type_id: Id(reader.next_u32()?),
4833                 result_id: Id(reader.next_u32()?),
4834                 operand1: Id(reader.next_u32()?),
4835                 operand2: Id(reader.next_u32()?),
4836             },
4837             141u16 => Self::FMod {
4838                 result_type_id: Id(reader.next_u32()?),
4839                 result_id: Id(reader.next_u32()?),
4840                 operand1: Id(reader.next_u32()?),
4841                 operand2: Id(reader.next_u32()?),
4842             },
4843             142u16 => Self::VectorTimesScalar {
4844                 result_type_id: Id(reader.next_u32()?),
4845                 result_id: Id(reader.next_u32()?),
4846                 vector: Id(reader.next_u32()?),
4847                 scalar: Id(reader.next_u32()?),
4848             },
4849             143u16 => Self::MatrixTimesScalar {
4850                 result_type_id: Id(reader.next_u32()?),
4851                 result_id: Id(reader.next_u32()?),
4852                 matrix: Id(reader.next_u32()?),
4853                 scalar: Id(reader.next_u32()?),
4854             },
4855             144u16 => Self::VectorTimesMatrix {
4856                 result_type_id: Id(reader.next_u32()?),
4857                 result_id: Id(reader.next_u32()?),
4858                 vector: Id(reader.next_u32()?),
4859                 matrix: Id(reader.next_u32()?),
4860             },
4861             145u16 => Self::MatrixTimesVector {
4862                 result_type_id: Id(reader.next_u32()?),
4863                 result_id: Id(reader.next_u32()?),
4864                 matrix: Id(reader.next_u32()?),
4865                 vector: Id(reader.next_u32()?),
4866             },
4867             146u16 => Self::MatrixTimesMatrix {
4868                 result_type_id: Id(reader.next_u32()?),
4869                 result_id: Id(reader.next_u32()?),
4870                 left_matrix: Id(reader.next_u32()?),
4871                 right_matrix: Id(reader.next_u32()?),
4872             },
4873             147u16 => Self::OuterProduct {
4874                 result_type_id: Id(reader.next_u32()?),
4875                 result_id: Id(reader.next_u32()?),
4876                 vector_1: Id(reader.next_u32()?),
4877                 vector_2: Id(reader.next_u32()?),
4878             },
4879             148u16 => Self::Dot {
4880                 result_type_id: Id(reader.next_u32()?),
4881                 result_id: Id(reader.next_u32()?),
4882                 vector_1: Id(reader.next_u32()?),
4883                 vector_2: Id(reader.next_u32()?),
4884             },
4885             149u16 => Self::IAddCarry {
4886                 result_type_id: Id(reader.next_u32()?),
4887                 result_id: Id(reader.next_u32()?),
4888                 operand1: Id(reader.next_u32()?),
4889                 operand2: Id(reader.next_u32()?),
4890             },
4891             150u16 => Self::ISubBorrow {
4892                 result_type_id: Id(reader.next_u32()?),
4893                 result_id: Id(reader.next_u32()?),
4894                 operand1: Id(reader.next_u32()?),
4895                 operand2: Id(reader.next_u32()?),
4896             },
4897             151u16 => Self::UMulExtended {
4898                 result_type_id: Id(reader.next_u32()?),
4899                 result_id: Id(reader.next_u32()?),
4900                 operand1: Id(reader.next_u32()?),
4901                 operand2: Id(reader.next_u32()?),
4902             },
4903             152u16 => Self::SMulExtended {
4904                 result_type_id: Id(reader.next_u32()?),
4905                 result_id: Id(reader.next_u32()?),
4906                 operand1: Id(reader.next_u32()?),
4907                 operand2: Id(reader.next_u32()?),
4908             },
4909             154u16 => Self::Any {
4910                 result_type_id: Id(reader.next_u32()?),
4911                 result_id: Id(reader.next_u32()?),
4912                 vector: Id(reader.next_u32()?),
4913             },
4914             155u16 => Self::All {
4915                 result_type_id: Id(reader.next_u32()?),
4916                 result_id: Id(reader.next_u32()?),
4917                 vector: Id(reader.next_u32()?),
4918             },
4919             156u16 => Self::IsNan {
4920                 result_type_id: Id(reader.next_u32()?),
4921                 result_id: Id(reader.next_u32()?),
4922                 x: Id(reader.next_u32()?),
4923             },
4924             157u16 => Self::IsInf {
4925                 result_type_id: Id(reader.next_u32()?),
4926                 result_id: Id(reader.next_u32()?),
4927                 x: Id(reader.next_u32()?),
4928             },
4929             158u16 => Self::IsFinite {
4930                 result_type_id: Id(reader.next_u32()?),
4931                 result_id: Id(reader.next_u32()?),
4932                 x: Id(reader.next_u32()?),
4933             },
4934             159u16 => Self::IsNormal {
4935                 result_type_id: Id(reader.next_u32()?),
4936                 result_id: Id(reader.next_u32()?),
4937                 x: Id(reader.next_u32()?),
4938             },
4939             160u16 => Self::SignBitSet {
4940                 result_type_id: Id(reader.next_u32()?),
4941                 result_id: Id(reader.next_u32()?),
4942                 x: Id(reader.next_u32()?),
4943             },
4944             161u16 => Self::LessOrGreater {
4945                 result_type_id: Id(reader.next_u32()?),
4946                 result_id: Id(reader.next_u32()?),
4947                 x: Id(reader.next_u32()?),
4948                 y: Id(reader.next_u32()?),
4949             },
4950             162u16 => Self::Ordered {
4951                 result_type_id: Id(reader.next_u32()?),
4952                 result_id: Id(reader.next_u32()?),
4953                 x: Id(reader.next_u32()?),
4954                 y: Id(reader.next_u32()?),
4955             },
4956             163u16 => Self::Unordered {
4957                 result_type_id: Id(reader.next_u32()?),
4958                 result_id: Id(reader.next_u32()?),
4959                 x: Id(reader.next_u32()?),
4960                 y: Id(reader.next_u32()?),
4961             },
4962             164u16 => Self::LogicalEqual {
4963                 result_type_id: Id(reader.next_u32()?),
4964                 result_id: Id(reader.next_u32()?),
4965                 operand1: Id(reader.next_u32()?),
4966                 operand2: Id(reader.next_u32()?),
4967             },
4968             165u16 => Self::LogicalNotEqual {
4969                 result_type_id: Id(reader.next_u32()?),
4970                 result_id: Id(reader.next_u32()?),
4971                 operand1: Id(reader.next_u32()?),
4972                 operand2: Id(reader.next_u32()?),
4973             },
4974             166u16 => Self::LogicalOr {
4975                 result_type_id: Id(reader.next_u32()?),
4976                 result_id: Id(reader.next_u32()?),
4977                 operand1: Id(reader.next_u32()?),
4978                 operand2: Id(reader.next_u32()?),
4979             },
4980             167u16 => Self::LogicalAnd {
4981                 result_type_id: Id(reader.next_u32()?),
4982                 result_id: Id(reader.next_u32()?),
4983                 operand1: Id(reader.next_u32()?),
4984                 operand2: Id(reader.next_u32()?),
4985             },
4986             168u16 => Self::LogicalNot {
4987                 result_type_id: Id(reader.next_u32()?),
4988                 result_id: Id(reader.next_u32()?),
4989                 operand: Id(reader.next_u32()?),
4990             },
4991             169u16 => Self::Select {
4992                 result_type_id: Id(reader.next_u32()?),
4993                 result_id: Id(reader.next_u32()?),
4994                 condition: Id(reader.next_u32()?),
4995                 object_1: Id(reader.next_u32()?),
4996                 object_2: Id(reader.next_u32()?),
4997             },
4998             170u16 => Self::IEqual {
4999                 result_type_id: Id(reader.next_u32()?),
5000                 result_id: Id(reader.next_u32()?),
5001                 operand1: Id(reader.next_u32()?),
5002                 operand2: Id(reader.next_u32()?),
5003             },
5004             171u16 => Self::INotEqual {
5005                 result_type_id: Id(reader.next_u32()?),
5006                 result_id: Id(reader.next_u32()?),
5007                 operand1: Id(reader.next_u32()?),
5008                 operand2: Id(reader.next_u32()?),
5009             },
5010             172u16 => Self::UGreaterThan {
5011                 result_type_id: Id(reader.next_u32()?),
5012                 result_id: Id(reader.next_u32()?),
5013                 operand1: Id(reader.next_u32()?),
5014                 operand2: Id(reader.next_u32()?),
5015             },
5016             173u16 => Self::SGreaterThan {
5017                 result_type_id: Id(reader.next_u32()?),
5018                 result_id: Id(reader.next_u32()?),
5019                 operand1: Id(reader.next_u32()?),
5020                 operand2: Id(reader.next_u32()?),
5021             },
5022             174u16 => Self::UGreaterThanEqual {
5023                 result_type_id: Id(reader.next_u32()?),
5024                 result_id: Id(reader.next_u32()?),
5025                 operand1: Id(reader.next_u32()?),
5026                 operand2: Id(reader.next_u32()?),
5027             },
5028             175u16 => Self::SGreaterThanEqual {
5029                 result_type_id: Id(reader.next_u32()?),
5030                 result_id: Id(reader.next_u32()?),
5031                 operand1: Id(reader.next_u32()?),
5032                 operand2: Id(reader.next_u32()?),
5033             },
5034             176u16 => Self::ULessThan {
5035                 result_type_id: Id(reader.next_u32()?),
5036                 result_id: Id(reader.next_u32()?),
5037                 operand1: Id(reader.next_u32()?),
5038                 operand2: Id(reader.next_u32()?),
5039             },
5040             177u16 => Self::SLessThan {
5041                 result_type_id: Id(reader.next_u32()?),
5042                 result_id: Id(reader.next_u32()?),
5043                 operand1: Id(reader.next_u32()?),
5044                 operand2: Id(reader.next_u32()?),
5045             },
5046             178u16 => Self::ULessThanEqual {
5047                 result_type_id: Id(reader.next_u32()?),
5048                 result_id: Id(reader.next_u32()?),
5049                 operand1: Id(reader.next_u32()?),
5050                 operand2: Id(reader.next_u32()?),
5051             },
5052             179u16 => Self::SLessThanEqual {
5053                 result_type_id: Id(reader.next_u32()?),
5054                 result_id: Id(reader.next_u32()?),
5055                 operand1: Id(reader.next_u32()?),
5056                 operand2: Id(reader.next_u32()?),
5057             },
5058             180u16 => Self::FOrdEqual {
5059                 result_type_id: Id(reader.next_u32()?),
5060                 result_id: Id(reader.next_u32()?),
5061                 operand1: Id(reader.next_u32()?),
5062                 operand2: Id(reader.next_u32()?),
5063             },
5064             181u16 => Self::FUnordEqual {
5065                 result_type_id: Id(reader.next_u32()?),
5066                 result_id: Id(reader.next_u32()?),
5067                 operand1: Id(reader.next_u32()?),
5068                 operand2: Id(reader.next_u32()?),
5069             },
5070             182u16 => Self::FOrdNotEqual {
5071                 result_type_id: Id(reader.next_u32()?),
5072                 result_id: Id(reader.next_u32()?),
5073                 operand1: Id(reader.next_u32()?),
5074                 operand2: Id(reader.next_u32()?),
5075             },
5076             183u16 => Self::FUnordNotEqual {
5077                 result_type_id: Id(reader.next_u32()?),
5078                 result_id: Id(reader.next_u32()?),
5079                 operand1: Id(reader.next_u32()?),
5080                 operand2: Id(reader.next_u32()?),
5081             },
5082             184u16 => Self::FOrdLessThan {
5083                 result_type_id: Id(reader.next_u32()?),
5084                 result_id: Id(reader.next_u32()?),
5085                 operand1: Id(reader.next_u32()?),
5086                 operand2: Id(reader.next_u32()?),
5087             },
5088             185u16 => Self::FUnordLessThan {
5089                 result_type_id: Id(reader.next_u32()?),
5090                 result_id: Id(reader.next_u32()?),
5091                 operand1: Id(reader.next_u32()?),
5092                 operand2: Id(reader.next_u32()?),
5093             },
5094             186u16 => Self::FOrdGreaterThan {
5095                 result_type_id: Id(reader.next_u32()?),
5096                 result_id: Id(reader.next_u32()?),
5097                 operand1: Id(reader.next_u32()?),
5098                 operand2: Id(reader.next_u32()?),
5099             },
5100             187u16 => Self::FUnordGreaterThan {
5101                 result_type_id: Id(reader.next_u32()?),
5102                 result_id: Id(reader.next_u32()?),
5103                 operand1: Id(reader.next_u32()?),
5104                 operand2: Id(reader.next_u32()?),
5105             },
5106             188u16 => Self::FOrdLessThanEqual {
5107                 result_type_id: Id(reader.next_u32()?),
5108                 result_id: Id(reader.next_u32()?),
5109                 operand1: Id(reader.next_u32()?),
5110                 operand2: Id(reader.next_u32()?),
5111             },
5112             189u16 => Self::FUnordLessThanEqual {
5113                 result_type_id: Id(reader.next_u32()?),
5114                 result_id: Id(reader.next_u32()?),
5115                 operand1: Id(reader.next_u32()?),
5116                 operand2: Id(reader.next_u32()?),
5117             },
5118             190u16 => Self::FOrdGreaterThanEqual {
5119                 result_type_id: Id(reader.next_u32()?),
5120                 result_id: Id(reader.next_u32()?),
5121                 operand1: Id(reader.next_u32()?),
5122                 operand2: Id(reader.next_u32()?),
5123             },
5124             191u16 => Self::FUnordGreaterThanEqual {
5125                 result_type_id: Id(reader.next_u32()?),
5126                 result_id: Id(reader.next_u32()?),
5127                 operand1: Id(reader.next_u32()?),
5128                 operand2: Id(reader.next_u32()?),
5129             },
5130             194u16 => Self::ShiftRightLogical {
5131                 result_type_id: Id(reader.next_u32()?),
5132                 result_id: Id(reader.next_u32()?),
5133                 base: Id(reader.next_u32()?),
5134                 shift: Id(reader.next_u32()?),
5135             },
5136             195u16 => Self::ShiftRightArithmetic {
5137                 result_type_id: Id(reader.next_u32()?),
5138                 result_id: Id(reader.next_u32()?),
5139                 base: Id(reader.next_u32()?),
5140                 shift: Id(reader.next_u32()?),
5141             },
5142             196u16 => Self::ShiftLeftLogical {
5143                 result_type_id: Id(reader.next_u32()?),
5144                 result_id: Id(reader.next_u32()?),
5145                 base: Id(reader.next_u32()?),
5146                 shift: Id(reader.next_u32()?),
5147             },
5148             197u16 => Self::BitwiseOr {
5149                 result_type_id: Id(reader.next_u32()?),
5150                 result_id: Id(reader.next_u32()?),
5151                 operand1: Id(reader.next_u32()?),
5152                 operand2: Id(reader.next_u32()?),
5153             },
5154             198u16 => Self::BitwiseXor {
5155                 result_type_id: Id(reader.next_u32()?),
5156                 result_id: Id(reader.next_u32()?),
5157                 operand1: Id(reader.next_u32()?),
5158                 operand2: Id(reader.next_u32()?),
5159             },
5160             199u16 => Self::BitwiseAnd {
5161                 result_type_id: Id(reader.next_u32()?),
5162                 result_id: Id(reader.next_u32()?),
5163                 operand1: Id(reader.next_u32()?),
5164                 operand2: Id(reader.next_u32()?),
5165             },
5166             200u16 => Self::Not {
5167                 result_type_id: Id(reader.next_u32()?),
5168                 result_id: Id(reader.next_u32()?),
5169                 operand: Id(reader.next_u32()?),
5170             },
5171             201u16 => Self::BitFieldInsert {
5172                 result_type_id: Id(reader.next_u32()?),
5173                 result_id: Id(reader.next_u32()?),
5174                 base: Id(reader.next_u32()?),
5175                 insert: Id(reader.next_u32()?),
5176                 offset: Id(reader.next_u32()?),
5177                 count: Id(reader.next_u32()?),
5178             },
5179             202u16 => Self::BitFieldSExtract {
5180                 result_type_id: Id(reader.next_u32()?),
5181                 result_id: Id(reader.next_u32()?),
5182                 base: Id(reader.next_u32()?),
5183                 offset: Id(reader.next_u32()?),
5184                 count: Id(reader.next_u32()?),
5185             },
5186             203u16 => Self::BitFieldUExtract {
5187                 result_type_id: Id(reader.next_u32()?),
5188                 result_id: Id(reader.next_u32()?),
5189                 base: Id(reader.next_u32()?),
5190                 offset: Id(reader.next_u32()?),
5191                 count: Id(reader.next_u32()?),
5192             },
5193             204u16 => Self::BitReverse {
5194                 result_type_id: Id(reader.next_u32()?),
5195                 result_id: Id(reader.next_u32()?),
5196                 base: Id(reader.next_u32()?),
5197             },
5198             205u16 => Self::BitCount {
5199                 result_type_id: Id(reader.next_u32()?),
5200                 result_id: Id(reader.next_u32()?),
5201                 base: Id(reader.next_u32()?),
5202             },
5203             207u16 => Self::DPdx {
5204                 result_type_id: Id(reader.next_u32()?),
5205                 result_id: Id(reader.next_u32()?),
5206                 p: Id(reader.next_u32()?),
5207             },
5208             208u16 => Self::DPdy {
5209                 result_type_id: Id(reader.next_u32()?),
5210                 result_id: Id(reader.next_u32()?),
5211                 p: Id(reader.next_u32()?),
5212             },
5213             209u16 => Self::Fwidth {
5214                 result_type_id: Id(reader.next_u32()?),
5215                 result_id: Id(reader.next_u32()?),
5216                 p: Id(reader.next_u32()?),
5217             },
5218             210u16 => Self::DPdxFine {
5219                 result_type_id: Id(reader.next_u32()?),
5220                 result_id: Id(reader.next_u32()?),
5221                 p: Id(reader.next_u32()?),
5222             },
5223             211u16 => Self::DPdyFine {
5224                 result_type_id: Id(reader.next_u32()?),
5225                 result_id: Id(reader.next_u32()?),
5226                 p: Id(reader.next_u32()?),
5227             },
5228             212u16 => Self::FwidthFine {
5229                 result_type_id: Id(reader.next_u32()?),
5230                 result_id: Id(reader.next_u32()?),
5231                 p: Id(reader.next_u32()?),
5232             },
5233             213u16 => Self::DPdxCoarse {
5234                 result_type_id: Id(reader.next_u32()?),
5235                 result_id: Id(reader.next_u32()?),
5236                 p: Id(reader.next_u32()?),
5237             },
5238             214u16 => Self::DPdyCoarse {
5239                 result_type_id: Id(reader.next_u32()?),
5240                 result_id: Id(reader.next_u32()?),
5241                 p: Id(reader.next_u32()?),
5242             },
5243             215u16 => Self::FwidthCoarse {
5244                 result_type_id: Id(reader.next_u32()?),
5245                 result_id: Id(reader.next_u32()?),
5246                 p: Id(reader.next_u32()?),
5247             },
5248             218u16 => Self::EmitVertex,
5249             219u16 => Self::EndPrimitive,
5250             220u16 => Self::EmitStreamVertex {
5251                 stream: Id(reader.next_u32()?),
5252             },
5253             221u16 => Self::EndStreamPrimitive {
5254                 stream: Id(reader.next_u32()?),
5255             },
5256             224u16 => Self::ControlBarrier {
5257                 execution: Id(reader.next_u32()?),
5258                 memory: Id(reader.next_u32()?),
5259                 semantics: Id(reader.next_u32()?),
5260             },
5261             225u16 => Self::MemoryBarrier {
5262                 memory: Id(reader.next_u32()?),
5263                 semantics: Id(reader.next_u32()?),
5264             },
5265             227u16 => Self::AtomicLoad {
5266                 result_type_id: Id(reader.next_u32()?),
5267                 result_id: Id(reader.next_u32()?),
5268                 pointer: Id(reader.next_u32()?),
5269                 memory: Id(reader.next_u32()?),
5270                 semantics: Id(reader.next_u32()?),
5271             },
5272             228u16 => Self::AtomicStore {
5273                 pointer: Id(reader.next_u32()?),
5274                 memory: Id(reader.next_u32()?),
5275                 semantics: Id(reader.next_u32()?),
5276                 value: Id(reader.next_u32()?),
5277             },
5278             229u16 => Self::AtomicExchange {
5279                 result_type_id: Id(reader.next_u32()?),
5280                 result_id: Id(reader.next_u32()?),
5281                 pointer: Id(reader.next_u32()?),
5282                 memory: Id(reader.next_u32()?),
5283                 semantics: Id(reader.next_u32()?),
5284                 value: Id(reader.next_u32()?),
5285             },
5286             230u16 => Self::AtomicCompareExchange {
5287                 result_type_id: Id(reader.next_u32()?),
5288                 result_id: Id(reader.next_u32()?),
5289                 pointer: Id(reader.next_u32()?),
5290                 memory: Id(reader.next_u32()?),
5291                 equal: Id(reader.next_u32()?),
5292                 unequal: Id(reader.next_u32()?),
5293                 value: Id(reader.next_u32()?),
5294                 comparator: Id(reader.next_u32()?),
5295             },
5296             231u16 => Self::AtomicCompareExchangeWeak {
5297                 result_type_id: Id(reader.next_u32()?),
5298                 result_id: Id(reader.next_u32()?),
5299                 pointer: Id(reader.next_u32()?),
5300                 memory: Id(reader.next_u32()?),
5301                 equal: Id(reader.next_u32()?),
5302                 unequal: Id(reader.next_u32()?),
5303                 value: Id(reader.next_u32()?),
5304                 comparator: Id(reader.next_u32()?),
5305             },
5306             232u16 => Self::AtomicIIncrement {
5307                 result_type_id: Id(reader.next_u32()?),
5308                 result_id: Id(reader.next_u32()?),
5309                 pointer: Id(reader.next_u32()?),
5310                 memory: Id(reader.next_u32()?),
5311                 semantics: Id(reader.next_u32()?),
5312             },
5313             233u16 => Self::AtomicIDecrement {
5314                 result_type_id: Id(reader.next_u32()?),
5315                 result_id: Id(reader.next_u32()?),
5316                 pointer: Id(reader.next_u32()?),
5317                 memory: Id(reader.next_u32()?),
5318                 semantics: Id(reader.next_u32()?),
5319             },
5320             234u16 => Self::AtomicIAdd {
5321                 result_type_id: Id(reader.next_u32()?),
5322                 result_id: Id(reader.next_u32()?),
5323                 pointer: Id(reader.next_u32()?),
5324                 memory: Id(reader.next_u32()?),
5325                 semantics: Id(reader.next_u32()?),
5326                 value: Id(reader.next_u32()?),
5327             },
5328             235u16 => Self::AtomicISub {
5329                 result_type_id: Id(reader.next_u32()?),
5330                 result_id: Id(reader.next_u32()?),
5331                 pointer: Id(reader.next_u32()?),
5332                 memory: Id(reader.next_u32()?),
5333                 semantics: Id(reader.next_u32()?),
5334                 value: Id(reader.next_u32()?),
5335             },
5336             236u16 => Self::AtomicSMin {
5337                 result_type_id: Id(reader.next_u32()?),
5338                 result_id: Id(reader.next_u32()?),
5339                 pointer: Id(reader.next_u32()?),
5340                 memory: Id(reader.next_u32()?),
5341                 semantics: Id(reader.next_u32()?),
5342                 value: Id(reader.next_u32()?),
5343             },
5344             237u16 => Self::AtomicUMin {
5345                 result_type_id: Id(reader.next_u32()?),
5346                 result_id: Id(reader.next_u32()?),
5347                 pointer: Id(reader.next_u32()?),
5348                 memory: Id(reader.next_u32()?),
5349                 semantics: Id(reader.next_u32()?),
5350                 value: Id(reader.next_u32()?),
5351             },
5352             238u16 => Self::AtomicSMax {
5353                 result_type_id: Id(reader.next_u32()?),
5354                 result_id: Id(reader.next_u32()?),
5355                 pointer: Id(reader.next_u32()?),
5356                 memory: Id(reader.next_u32()?),
5357                 semantics: Id(reader.next_u32()?),
5358                 value: Id(reader.next_u32()?),
5359             },
5360             239u16 => Self::AtomicUMax {
5361                 result_type_id: Id(reader.next_u32()?),
5362                 result_id: Id(reader.next_u32()?),
5363                 pointer: Id(reader.next_u32()?),
5364                 memory: Id(reader.next_u32()?),
5365                 semantics: Id(reader.next_u32()?),
5366                 value: Id(reader.next_u32()?),
5367             },
5368             240u16 => Self::AtomicAnd {
5369                 result_type_id: Id(reader.next_u32()?),
5370                 result_id: Id(reader.next_u32()?),
5371                 pointer: Id(reader.next_u32()?),
5372                 memory: Id(reader.next_u32()?),
5373                 semantics: Id(reader.next_u32()?),
5374                 value: Id(reader.next_u32()?),
5375             },
5376             241u16 => Self::AtomicOr {
5377                 result_type_id: Id(reader.next_u32()?),
5378                 result_id: Id(reader.next_u32()?),
5379                 pointer: Id(reader.next_u32()?),
5380                 memory: Id(reader.next_u32()?),
5381                 semantics: Id(reader.next_u32()?),
5382                 value: Id(reader.next_u32()?),
5383             },
5384             242u16 => Self::AtomicXor {
5385                 result_type_id: Id(reader.next_u32()?),
5386                 result_id: Id(reader.next_u32()?),
5387                 pointer: Id(reader.next_u32()?),
5388                 memory: Id(reader.next_u32()?),
5389                 semantics: Id(reader.next_u32()?),
5390                 value: Id(reader.next_u32()?),
5391             },
5392             245u16 => Self::Phi {
5393                 result_type_id: Id(reader.next_u32()?),
5394                 result_id: Id(reader.next_u32()?),
5395                 variable_parent: {
5396                     let mut vec = Vec::new();
5397                     while !reader.is_empty() {
5398                         vec.push((Id(reader.next_u32()?), Id(reader.next_u32()?)));
5399                     }
5400                     vec
5401                 },
5402             },
5403             246u16 => Self::LoopMerge {
5404                 merge_block: Id(reader.next_u32()?),
5405                 continue_target: Id(reader.next_u32()?),
5406                 loop_control: LoopControl::parse(reader)?,
5407             },
5408             247u16 => Self::SelectionMerge {
5409                 merge_block: Id(reader.next_u32()?),
5410                 selection_control: SelectionControl::parse(reader)?,
5411             },
5412             248u16 => Self::Label {
5413                 result_id: Id(reader.next_u32()?),
5414             },
5415             249u16 => Self::Branch {
5416                 target_label: Id(reader.next_u32()?),
5417             },
5418             250u16 => Self::BranchConditional {
5419                 condition: Id(reader.next_u32()?),
5420                 true_label: Id(reader.next_u32()?),
5421                 false_label: Id(reader.next_u32()?),
5422                 branch_weights: {
5423                     let mut vec = Vec::new();
5424                     while !reader.is_empty() {
5425                         vec.push(reader.next_u32()?);
5426                     }
5427                     vec
5428                 },
5429             },
5430             251u16 => Self::Switch {
5431                 selector: Id(reader.next_u32()?),
5432                 default: Id(reader.next_u32()?),
5433                 target: {
5434                     let mut vec = Vec::new();
5435                     while !reader.is_empty() {
5436                         vec.push((reader.next_u32()?, Id(reader.next_u32()?)));
5437                     }
5438                     vec
5439                 },
5440             },
5441             252u16 => Self::Kill,
5442             253u16 => Self::Return,
5443             254u16 => Self::ReturnValue {
5444                 value: Id(reader.next_u32()?),
5445             },
5446             255u16 => Self::Unreachable,
5447             256u16 => Self::LifetimeStart {
5448                 pointer: Id(reader.next_u32()?),
5449                 size: reader.next_u32()?,
5450             },
5451             257u16 => Self::LifetimeStop {
5452                 pointer: Id(reader.next_u32()?),
5453                 size: reader.next_u32()?,
5454             },
5455             259u16 => Self::GroupAsyncCopy {
5456                 result_type_id: Id(reader.next_u32()?),
5457                 result_id: Id(reader.next_u32()?),
5458                 execution: Id(reader.next_u32()?),
5459                 destination: Id(reader.next_u32()?),
5460                 source: Id(reader.next_u32()?),
5461                 num_elements: Id(reader.next_u32()?),
5462                 stride: Id(reader.next_u32()?),
5463                 event: Id(reader.next_u32()?),
5464             },
5465             260u16 => Self::GroupWaitEvents {
5466                 execution: Id(reader.next_u32()?),
5467                 num_events: Id(reader.next_u32()?),
5468                 events_list: Id(reader.next_u32()?),
5469             },
5470             261u16 => Self::GroupAll {
5471                 result_type_id: Id(reader.next_u32()?),
5472                 result_id: Id(reader.next_u32()?),
5473                 execution: Id(reader.next_u32()?),
5474                 predicate: Id(reader.next_u32()?),
5475             },
5476             262u16 => Self::GroupAny {
5477                 result_type_id: Id(reader.next_u32()?),
5478                 result_id: Id(reader.next_u32()?),
5479                 execution: Id(reader.next_u32()?),
5480                 predicate: Id(reader.next_u32()?),
5481             },
5482             263u16 => Self::GroupBroadcast {
5483                 result_type_id: Id(reader.next_u32()?),
5484                 result_id: Id(reader.next_u32()?),
5485                 execution: Id(reader.next_u32()?),
5486                 value: Id(reader.next_u32()?),
5487                 local_id: Id(reader.next_u32()?),
5488             },
5489             264u16 => Self::GroupIAdd {
5490                 result_type_id: Id(reader.next_u32()?),
5491                 result_id: Id(reader.next_u32()?),
5492                 execution: Id(reader.next_u32()?),
5493                 operation: GroupOperation::parse(reader)?,
5494                 x: Id(reader.next_u32()?),
5495             },
5496             265u16 => Self::GroupFAdd {
5497                 result_type_id: Id(reader.next_u32()?),
5498                 result_id: Id(reader.next_u32()?),
5499                 execution: Id(reader.next_u32()?),
5500                 operation: GroupOperation::parse(reader)?,
5501                 x: Id(reader.next_u32()?),
5502             },
5503             266u16 => Self::GroupFMin {
5504                 result_type_id: Id(reader.next_u32()?),
5505                 result_id: Id(reader.next_u32()?),
5506                 execution: Id(reader.next_u32()?),
5507                 operation: GroupOperation::parse(reader)?,
5508                 x: Id(reader.next_u32()?),
5509             },
5510             267u16 => Self::GroupUMin {
5511                 result_type_id: Id(reader.next_u32()?),
5512                 result_id: Id(reader.next_u32()?),
5513                 execution: Id(reader.next_u32()?),
5514                 operation: GroupOperation::parse(reader)?,
5515                 x: Id(reader.next_u32()?),
5516             },
5517             268u16 => Self::GroupSMin {
5518                 result_type_id: Id(reader.next_u32()?),
5519                 result_id: Id(reader.next_u32()?),
5520                 execution: Id(reader.next_u32()?),
5521                 operation: GroupOperation::parse(reader)?,
5522                 x: Id(reader.next_u32()?),
5523             },
5524             269u16 => Self::GroupFMax {
5525                 result_type_id: Id(reader.next_u32()?),
5526                 result_id: Id(reader.next_u32()?),
5527                 execution: Id(reader.next_u32()?),
5528                 operation: GroupOperation::parse(reader)?,
5529                 x: Id(reader.next_u32()?),
5530             },
5531             270u16 => Self::GroupUMax {
5532                 result_type_id: Id(reader.next_u32()?),
5533                 result_id: Id(reader.next_u32()?),
5534                 execution: Id(reader.next_u32()?),
5535                 operation: GroupOperation::parse(reader)?,
5536                 x: Id(reader.next_u32()?),
5537             },
5538             271u16 => Self::GroupSMax {
5539                 result_type_id: Id(reader.next_u32()?),
5540                 result_id: Id(reader.next_u32()?),
5541                 execution: Id(reader.next_u32()?),
5542                 operation: GroupOperation::parse(reader)?,
5543                 x: Id(reader.next_u32()?),
5544             },
5545             274u16 => Self::ReadPipe {
5546                 result_type_id: Id(reader.next_u32()?),
5547                 result_id: Id(reader.next_u32()?),
5548                 pipe: Id(reader.next_u32()?),
5549                 pointer: Id(reader.next_u32()?),
5550                 packet_size: Id(reader.next_u32()?),
5551                 packet_alignment: Id(reader.next_u32()?),
5552             },
5553             275u16 => Self::WritePipe {
5554                 result_type_id: Id(reader.next_u32()?),
5555                 result_id: Id(reader.next_u32()?),
5556                 pipe: Id(reader.next_u32()?),
5557                 pointer: Id(reader.next_u32()?),
5558                 packet_size: Id(reader.next_u32()?),
5559                 packet_alignment: Id(reader.next_u32()?),
5560             },
5561             276u16 => Self::ReservedReadPipe {
5562                 result_type_id: Id(reader.next_u32()?),
5563                 result_id: Id(reader.next_u32()?),
5564                 pipe: Id(reader.next_u32()?),
5565                 reserve_id: Id(reader.next_u32()?),
5566                 index: Id(reader.next_u32()?),
5567                 pointer: Id(reader.next_u32()?),
5568                 packet_size: Id(reader.next_u32()?),
5569                 packet_alignment: Id(reader.next_u32()?),
5570             },
5571             277u16 => Self::ReservedWritePipe {
5572                 result_type_id: Id(reader.next_u32()?),
5573                 result_id: Id(reader.next_u32()?),
5574                 pipe: Id(reader.next_u32()?),
5575                 reserve_id: Id(reader.next_u32()?),
5576                 index: Id(reader.next_u32()?),
5577                 pointer: Id(reader.next_u32()?),
5578                 packet_size: Id(reader.next_u32()?),
5579                 packet_alignment: Id(reader.next_u32()?),
5580             },
5581             278u16 => Self::ReserveReadPipePackets {
5582                 result_type_id: Id(reader.next_u32()?),
5583                 result_id: Id(reader.next_u32()?),
5584                 pipe: Id(reader.next_u32()?),
5585                 num_packets: Id(reader.next_u32()?),
5586                 packet_size: Id(reader.next_u32()?),
5587                 packet_alignment: Id(reader.next_u32()?),
5588             },
5589             279u16 => Self::ReserveWritePipePackets {
5590                 result_type_id: Id(reader.next_u32()?),
5591                 result_id: Id(reader.next_u32()?),
5592                 pipe: Id(reader.next_u32()?),
5593                 num_packets: Id(reader.next_u32()?),
5594                 packet_size: Id(reader.next_u32()?),
5595                 packet_alignment: Id(reader.next_u32()?),
5596             },
5597             280u16 => Self::CommitReadPipe {
5598                 pipe: Id(reader.next_u32()?),
5599                 reserve_id: Id(reader.next_u32()?),
5600                 packet_size: Id(reader.next_u32()?),
5601                 packet_alignment: Id(reader.next_u32()?),
5602             },
5603             281u16 => Self::CommitWritePipe {
5604                 pipe: Id(reader.next_u32()?),
5605                 reserve_id: Id(reader.next_u32()?),
5606                 packet_size: Id(reader.next_u32()?),
5607                 packet_alignment: Id(reader.next_u32()?),
5608             },
5609             282u16 => Self::IsValidReserveId {
5610                 result_type_id: Id(reader.next_u32()?),
5611                 result_id: Id(reader.next_u32()?),
5612                 reserve_id: Id(reader.next_u32()?),
5613             },
5614             283u16 => Self::GetNumPipePackets {
5615                 result_type_id: Id(reader.next_u32()?),
5616                 result_id: Id(reader.next_u32()?),
5617                 pipe: Id(reader.next_u32()?),
5618                 packet_size: Id(reader.next_u32()?),
5619                 packet_alignment: Id(reader.next_u32()?),
5620             },
5621             284u16 => Self::GetMaxPipePackets {
5622                 result_type_id: Id(reader.next_u32()?),
5623                 result_id: Id(reader.next_u32()?),
5624                 pipe: Id(reader.next_u32()?),
5625                 packet_size: Id(reader.next_u32()?),
5626                 packet_alignment: Id(reader.next_u32()?),
5627             },
5628             285u16 => Self::GroupReserveReadPipePackets {
5629                 result_type_id: Id(reader.next_u32()?),
5630                 result_id: Id(reader.next_u32()?),
5631                 execution: Id(reader.next_u32()?),
5632                 pipe: Id(reader.next_u32()?),
5633                 num_packets: Id(reader.next_u32()?),
5634                 packet_size: Id(reader.next_u32()?),
5635                 packet_alignment: Id(reader.next_u32()?),
5636             },
5637             286u16 => Self::GroupReserveWritePipePackets {
5638                 result_type_id: Id(reader.next_u32()?),
5639                 result_id: Id(reader.next_u32()?),
5640                 execution: Id(reader.next_u32()?),
5641                 pipe: Id(reader.next_u32()?),
5642                 num_packets: Id(reader.next_u32()?),
5643                 packet_size: Id(reader.next_u32()?),
5644                 packet_alignment: Id(reader.next_u32()?),
5645             },
5646             287u16 => Self::GroupCommitReadPipe {
5647                 execution: Id(reader.next_u32()?),
5648                 pipe: Id(reader.next_u32()?),
5649                 reserve_id: Id(reader.next_u32()?),
5650                 packet_size: Id(reader.next_u32()?),
5651                 packet_alignment: Id(reader.next_u32()?),
5652             },
5653             288u16 => Self::GroupCommitWritePipe {
5654                 execution: Id(reader.next_u32()?),
5655                 pipe: Id(reader.next_u32()?),
5656                 reserve_id: Id(reader.next_u32()?),
5657                 packet_size: Id(reader.next_u32()?),
5658                 packet_alignment: Id(reader.next_u32()?),
5659             },
5660             291u16 => Self::EnqueueMarker {
5661                 result_type_id: Id(reader.next_u32()?),
5662                 result_id: Id(reader.next_u32()?),
5663                 queue: Id(reader.next_u32()?),
5664                 num_events: Id(reader.next_u32()?),
5665                 wait_events: Id(reader.next_u32()?),
5666                 ret_event: Id(reader.next_u32()?),
5667             },
5668             292u16 => Self::EnqueueKernel {
5669                 result_type_id: Id(reader.next_u32()?),
5670                 result_id: Id(reader.next_u32()?),
5671                 queue: Id(reader.next_u32()?),
5672                 flags: Id(reader.next_u32()?),
5673                 nd_range: Id(reader.next_u32()?),
5674                 num_events: Id(reader.next_u32()?),
5675                 wait_events: Id(reader.next_u32()?),
5676                 ret_event: Id(reader.next_u32()?),
5677                 invoke: Id(reader.next_u32()?),
5678                 param: Id(reader.next_u32()?),
5679                 param_size: Id(reader.next_u32()?),
5680                 param_align: Id(reader.next_u32()?),
5681                 local_size: {
5682                     let mut vec = Vec::new();
5683                     while !reader.is_empty() {
5684                         vec.push(Id(reader.next_u32()?));
5685                     }
5686                     vec
5687                 },
5688             },
5689             293u16 => Self::GetKernelNDrangeSubGroupCount {
5690                 result_type_id: Id(reader.next_u32()?),
5691                 result_id: Id(reader.next_u32()?),
5692                 nd_range: Id(reader.next_u32()?),
5693                 invoke: Id(reader.next_u32()?),
5694                 param: Id(reader.next_u32()?),
5695                 param_size: Id(reader.next_u32()?),
5696                 param_align: Id(reader.next_u32()?),
5697             },
5698             294u16 => Self::GetKernelNDrangeMaxSubGroupSize {
5699                 result_type_id: Id(reader.next_u32()?),
5700                 result_id: Id(reader.next_u32()?),
5701                 nd_range: Id(reader.next_u32()?),
5702                 invoke: Id(reader.next_u32()?),
5703                 param: Id(reader.next_u32()?),
5704                 param_size: Id(reader.next_u32()?),
5705                 param_align: Id(reader.next_u32()?),
5706             },
5707             295u16 => Self::GetKernelWorkGroupSize {
5708                 result_type_id: Id(reader.next_u32()?),
5709                 result_id: Id(reader.next_u32()?),
5710                 invoke: Id(reader.next_u32()?),
5711                 param: Id(reader.next_u32()?),
5712                 param_size: Id(reader.next_u32()?),
5713                 param_align: Id(reader.next_u32()?),
5714             },
5715             296u16 => Self::GetKernelPreferredWorkGroupSizeMultiple {
5716                 result_type_id: Id(reader.next_u32()?),
5717                 result_id: Id(reader.next_u32()?),
5718                 invoke: Id(reader.next_u32()?),
5719                 param: Id(reader.next_u32()?),
5720                 param_size: Id(reader.next_u32()?),
5721                 param_align: Id(reader.next_u32()?),
5722             },
5723             297u16 => Self::RetainEvent {
5724                 event: Id(reader.next_u32()?),
5725             },
5726             298u16 => Self::ReleaseEvent {
5727                 event: Id(reader.next_u32()?),
5728             },
5729             299u16 => Self::CreateUserEvent {
5730                 result_type_id: Id(reader.next_u32()?),
5731                 result_id: Id(reader.next_u32()?),
5732             },
5733             300u16 => Self::IsValidEvent {
5734                 result_type_id: Id(reader.next_u32()?),
5735                 result_id: Id(reader.next_u32()?),
5736                 event: Id(reader.next_u32()?),
5737             },
5738             301u16 => Self::SetUserEventStatus {
5739                 event: Id(reader.next_u32()?),
5740                 status: Id(reader.next_u32()?),
5741             },
5742             302u16 => Self::CaptureEventProfilingInfo {
5743                 event: Id(reader.next_u32()?),
5744                 profiling_info: Id(reader.next_u32()?),
5745                 value: Id(reader.next_u32()?),
5746             },
5747             303u16 => Self::GetDefaultQueue {
5748                 result_type_id: Id(reader.next_u32()?),
5749                 result_id: Id(reader.next_u32()?),
5750             },
5751             304u16 => Self::BuildNDRange {
5752                 result_type_id: Id(reader.next_u32()?),
5753                 result_id: Id(reader.next_u32()?),
5754                 global_work_size: Id(reader.next_u32()?),
5755                 local_work_size: Id(reader.next_u32()?),
5756                 global_work_offset: Id(reader.next_u32()?),
5757             },
5758             305u16 => Self::ImageSparseSampleImplicitLod {
5759                 result_type_id: Id(reader.next_u32()?),
5760                 result_id: Id(reader.next_u32()?),
5761                 sampled_image: Id(reader.next_u32()?),
5762                 coordinate: Id(reader.next_u32()?),
5763                 image_operands: if !reader.is_empty() {
5764                     Some(ImageOperands::parse(reader)?)
5765                 } else {
5766                     None
5767                 },
5768             },
5769             306u16 => Self::ImageSparseSampleExplicitLod {
5770                 result_type_id: Id(reader.next_u32()?),
5771                 result_id: Id(reader.next_u32()?),
5772                 sampled_image: Id(reader.next_u32()?),
5773                 coordinate: Id(reader.next_u32()?),
5774                 image_operands: ImageOperands::parse(reader)?,
5775             },
5776             307u16 => Self::ImageSparseSampleDrefImplicitLod {
5777                 result_type_id: Id(reader.next_u32()?),
5778                 result_id: Id(reader.next_u32()?),
5779                 sampled_image: Id(reader.next_u32()?),
5780                 coordinate: Id(reader.next_u32()?),
5781                 dref: Id(reader.next_u32()?),
5782                 image_operands: if !reader.is_empty() {
5783                     Some(ImageOperands::parse(reader)?)
5784                 } else {
5785                     None
5786                 },
5787             },
5788             308u16 => Self::ImageSparseSampleDrefExplicitLod {
5789                 result_type_id: Id(reader.next_u32()?),
5790                 result_id: Id(reader.next_u32()?),
5791                 sampled_image: Id(reader.next_u32()?),
5792                 coordinate: Id(reader.next_u32()?),
5793                 dref: Id(reader.next_u32()?),
5794                 image_operands: ImageOperands::parse(reader)?,
5795             },
5796             309u16 => Self::ImageSparseSampleProjImplicitLod {
5797                 result_type_id: Id(reader.next_u32()?),
5798                 result_id: Id(reader.next_u32()?),
5799                 sampled_image: Id(reader.next_u32()?),
5800                 coordinate: Id(reader.next_u32()?),
5801                 image_operands: if !reader.is_empty() {
5802                     Some(ImageOperands::parse(reader)?)
5803                 } else {
5804                     None
5805                 },
5806             },
5807             310u16 => Self::ImageSparseSampleProjExplicitLod {
5808                 result_type_id: Id(reader.next_u32()?),
5809                 result_id: Id(reader.next_u32()?),
5810                 sampled_image: Id(reader.next_u32()?),
5811                 coordinate: Id(reader.next_u32()?),
5812                 image_operands: ImageOperands::parse(reader)?,
5813             },
5814             311u16 => Self::ImageSparseSampleProjDrefImplicitLod {
5815                 result_type_id: Id(reader.next_u32()?),
5816                 result_id: Id(reader.next_u32()?),
5817                 sampled_image: Id(reader.next_u32()?),
5818                 coordinate: Id(reader.next_u32()?),
5819                 dref: Id(reader.next_u32()?),
5820                 image_operands: if !reader.is_empty() {
5821                     Some(ImageOperands::parse(reader)?)
5822                 } else {
5823                     None
5824                 },
5825             },
5826             312u16 => Self::ImageSparseSampleProjDrefExplicitLod {
5827                 result_type_id: Id(reader.next_u32()?),
5828                 result_id: Id(reader.next_u32()?),
5829                 sampled_image: Id(reader.next_u32()?),
5830                 coordinate: Id(reader.next_u32()?),
5831                 dref: Id(reader.next_u32()?),
5832                 image_operands: ImageOperands::parse(reader)?,
5833             },
5834             313u16 => Self::ImageSparseFetch {
5835                 result_type_id: Id(reader.next_u32()?),
5836                 result_id: Id(reader.next_u32()?),
5837                 image: Id(reader.next_u32()?),
5838                 coordinate: Id(reader.next_u32()?),
5839                 image_operands: if !reader.is_empty() {
5840                     Some(ImageOperands::parse(reader)?)
5841                 } else {
5842                     None
5843                 },
5844             },
5845             314u16 => Self::ImageSparseGather {
5846                 result_type_id: Id(reader.next_u32()?),
5847                 result_id: Id(reader.next_u32()?),
5848                 sampled_image: Id(reader.next_u32()?),
5849                 coordinate: Id(reader.next_u32()?),
5850                 component: Id(reader.next_u32()?),
5851                 image_operands: if !reader.is_empty() {
5852                     Some(ImageOperands::parse(reader)?)
5853                 } else {
5854                     None
5855                 },
5856             },
5857             315u16 => Self::ImageSparseDrefGather {
5858                 result_type_id: Id(reader.next_u32()?),
5859                 result_id: Id(reader.next_u32()?),
5860                 sampled_image: Id(reader.next_u32()?),
5861                 coordinate: Id(reader.next_u32()?),
5862                 dref: Id(reader.next_u32()?),
5863                 image_operands: if !reader.is_empty() {
5864                     Some(ImageOperands::parse(reader)?)
5865                 } else {
5866                     None
5867                 },
5868             },
5869             316u16 => Self::ImageSparseTexelsResident {
5870                 result_type_id: Id(reader.next_u32()?),
5871                 result_id: Id(reader.next_u32()?),
5872                 resident_code: Id(reader.next_u32()?),
5873             },
5874             317u16 => Self::NoLine,
5875             318u16 => Self::AtomicFlagTestAndSet {
5876                 result_type_id: Id(reader.next_u32()?),
5877                 result_id: Id(reader.next_u32()?),
5878                 pointer: Id(reader.next_u32()?),
5879                 memory: Id(reader.next_u32()?),
5880                 semantics: Id(reader.next_u32()?),
5881             },
5882             319u16 => Self::AtomicFlagClear {
5883                 pointer: Id(reader.next_u32()?),
5884                 memory: Id(reader.next_u32()?),
5885                 semantics: Id(reader.next_u32()?),
5886             },
5887             320u16 => Self::ImageSparseRead {
5888                 result_type_id: Id(reader.next_u32()?),
5889                 result_id: Id(reader.next_u32()?),
5890                 image: Id(reader.next_u32()?),
5891                 coordinate: Id(reader.next_u32()?),
5892                 image_operands: if !reader.is_empty() {
5893                     Some(ImageOperands::parse(reader)?)
5894                 } else {
5895                     None
5896                 },
5897             },
5898             321u16 => Self::SizeOf {
5899                 result_type_id: Id(reader.next_u32()?),
5900                 result_id: Id(reader.next_u32()?),
5901                 pointer: Id(reader.next_u32()?),
5902             },
5903             322u16 => Self::TypePipeStorage {
5904                 result_id: Id(reader.next_u32()?),
5905             },
5906             323u16 => Self::ConstantPipeStorage {
5907                 result_type_id: Id(reader.next_u32()?),
5908                 result_id: Id(reader.next_u32()?),
5909                 packet_size: reader.next_u32()?,
5910                 packet_alignment: reader.next_u32()?,
5911                 capacity: reader.next_u32()?,
5912             },
5913             324u16 => Self::CreatePipeFromPipeStorage {
5914                 result_type_id: Id(reader.next_u32()?),
5915                 result_id: Id(reader.next_u32()?),
5916                 pipe_storage: Id(reader.next_u32()?),
5917             },
5918             325u16 => Self::GetKernelLocalSizeForSubgroupCount {
5919                 result_type_id: Id(reader.next_u32()?),
5920                 result_id: Id(reader.next_u32()?),
5921                 subgroup_count: Id(reader.next_u32()?),
5922                 invoke: Id(reader.next_u32()?),
5923                 param: Id(reader.next_u32()?),
5924                 param_size: Id(reader.next_u32()?),
5925                 param_align: Id(reader.next_u32()?),
5926             },
5927             326u16 => Self::GetKernelMaxNumSubgroups {
5928                 result_type_id: Id(reader.next_u32()?),
5929                 result_id: Id(reader.next_u32()?),
5930                 invoke: Id(reader.next_u32()?),
5931                 param: Id(reader.next_u32()?),
5932                 param_size: Id(reader.next_u32()?),
5933                 param_align: Id(reader.next_u32()?),
5934             },
5935             327u16 => Self::TypeNamedBarrier {
5936                 result_id: Id(reader.next_u32()?),
5937             },
5938             328u16 => Self::NamedBarrierInitialize {
5939                 result_type_id: Id(reader.next_u32()?),
5940                 result_id: Id(reader.next_u32()?),
5941                 subgroup_count: Id(reader.next_u32()?),
5942             },
5943             329u16 => Self::MemoryNamedBarrier {
5944                 named_barrier: Id(reader.next_u32()?),
5945                 memory: Id(reader.next_u32()?),
5946                 semantics: Id(reader.next_u32()?),
5947             },
5948             330u16 => Self::ModuleProcessed {
5949                 process: reader.next_string()?,
5950             },
5951             331u16 => Self::ExecutionModeId {
5952                 entry_point: Id(reader.next_u32()?),
5953                 mode: ExecutionMode::parse(reader)?,
5954             },
5955             332u16 => Self::DecorateId {
5956                 target: Id(reader.next_u32()?),
5957                 decoration: Decoration::parse(reader)?,
5958             },
5959             333u16 => Self::GroupNonUniformElect {
5960                 result_type_id: Id(reader.next_u32()?),
5961                 result_id: Id(reader.next_u32()?),
5962                 execution: Id(reader.next_u32()?),
5963             },
5964             334u16 => Self::GroupNonUniformAll {
5965                 result_type_id: Id(reader.next_u32()?),
5966                 result_id: Id(reader.next_u32()?),
5967                 execution: Id(reader.next_u32()?),
5968                 predicate: Id(reader.next_u32()?),
5969             },
5970             335u16 => Self::GroupNonUniformAny {
5971                 result_type_id: Id(reader.next_u32()?),
5972                 result_id: Id(reader.next_u32()?),
5973                 execution: Id(reader.next_u32()?),
5974                 predicate: Id(reader.next_u32()?),
5975             },
5976             336u16 => Self::GroupNonUniformAllEqual {
5977                 result_type_id: Id(reader.next_u32()?),
5978                 result_id: Id(reader.next_u32()?),
5979                 execution: Id(reader.next_u32()?),
5980                 value: Id(reader.next_u32()?),
5981             },
5982             337u16 => Self::GroupNonUniformBroadcast {
5983                 result_type_id: Id(reader.next_u32()?),
5984                 result_id: Id(reader.next_u32()?),
5985                 execution: Id(reader.next_u32()?),
5986                 value: Id(reader.next_u32()?),
5987                 id: Id(reader.next_u32()?),
5988             },
5989             338u16 => Self::GroupNonUniformBroadcastFirst {
5990                 result_type_id: Id(reader.next_u32()?),
5991                 result_id: Id(reader.next_u32()?),
5992                 execution: Id(reader.next_u32()?),
5993                 value: Id(reader.next_u32()?),
5994             },
5995             339u16 => Self::GroupNonUniformBallot {
5996                 result_type_id: Id(reader.next_u32()?),
5997                 result_id: Id(reader.next_u32()?),
5998                 execution: Id(reader.next_u32()?),
5999                 predicate: Id(reader.next_u32()?),
6000             },
6001             340u16 => Self::GroupNonUniformInverseBallot {
6002                 result_type_id: Id(reader.next_u32()?),
6003                 result_id: Id(reader.next_u32()?),
6004                 execution: Id(reader.next_u32()?),
6005                 value: Id(reader.next_u32()?),
6006             },
6007             341u16 => Self::GroupNonUniformBallotBitExtract {
6008                 result_type_id: Id(reader.next_u32()?),
6009                 result_id: Id(reader.next_u32()?),
6010                 execution: Id(reader.next_u32()?),
6011                 value: Id(reader.next_u32()?),
6012                 index: Id(reader.next_u32()?),
6013             },
6014             342u16 => Self::GroupNonUniformBallotBitCount {
6015                 result_type_id: Id(reader.next_u32()?),
6016                 result_id: Id(reader.next_u32()?),
6017                 execution: Id(reader.next_u32()?),
6018                 operation: GroupOperation::parse(reader)?,
6019                 value: Id(reader.next_u32()?),
6020             },
6021             343u16 => Self::GroupNonUniformBallotFindLSB {
6022                 result_type_id: Id(reader.next_u32()?),
6023                 result_id: Id(reader.next_u32()?),
6024                 execution: Id(reader.next_u32()?),
6025                 value: Id(reader.next_u32()?),
6026             },
6027             344u16 => Self::GroupNonUniformBallotFindMSB {
6028                 result_type_id: Id(reader.next_u32()?),
6029                 result_id: Id(reader.next_u32()?),
6030                 execution: Id(reader.next_u32()?),
6031                 value: Id(reader.next_u32()?),
6032             },
6033             345u16 => Self::GroupNonUniformShuffle {
6034                 result_type_id: Id(reader.next_u32()?),
6035                 result_id: Id(reader.next_u32()?),
6036                 execution: Id(reader.next_u32()?),
6037                 value: Id(reader.next_u32()?),
6038                 id: Id(reader.next_u32()?),
6039             },
6040             346u16 => Self::GroupNonUniformShuffleXor {
6041                 result_type_id: Id(reader.next_u32()?),
6042                 result_id: Id(reader.next_u32()?),
6043                 execution: Id(reader.next_u32()?),
6044                 value: Id(reader.next_u32()?),
6045                 mask: Id(reader.next_u32()?),
6046             },
6047             347u16 => Self::GroupNonUniformShuffleUp {
6048                 result_type_id: Id(reader.next_u32()?),
6049                 result_id: Id(reader.next_u32()?),
6050                 execution: Id(reader.next_u32()?),
6051                 value: Id(reader.next_u32()?),
6052                 delta: Id(reader.next_u32()?),
6053             },
6054             348u16 => Self::GroupNonUniformShuffleDown {
6055                 result_type_id: Id(reader.next_u32()?),
6056                 result_id: Id(reader.next_u32()?),
6057                 execution: Id(reader.next_u32()?),
6058                 value: Id(reader.next_u32()?),
6059                 delta: Id(reader.next_u32()?),
6060             },
6061             349u16 => Self::GroupNonUniformIAdd {
6062                 result_type_id: Id(reader.next_u32()?),
6063                 result_id: Id(reader.next_u32()?),
6064                 execution: Id(reader.next_u32()?),
6065                 operation: GroupOperation::parse(reader)?,
6066                 value: Id(reader.next_u32()?),
6067                 cluster_size: if !reader.is_empty() {
6068                     Some(Id(reader.next_u32()?))
6069                 } else {
6070                     None
6071                 },
6072             },
6073             350u16 => Self::GroupNonUniformFAdd {
6074                 result_type_id: Id(reader.next_u32()?),
6075                 result_id: Id(reader.next_u32()?),
6076                 execution: Id(reader.next_u32()?),
6077                 operation: GroupOperation::parse(reader)?,
6078                 value: Id(reader.next_u32()?),
6079                 cluster_size: if !reader.is_empty() {
6080                     Some(Id(reader.next_u32()?))
6081                 } else {
6082                     None
6083                 },
6084             },
6085             351u16 => Self::GroupNonUniformIMul {
6086                 result_type_id: Id(reader.next_u32()?),
6087                 result_id: Id(reader.next_u32()?),
6088                 execution: Id(reader.next_u32()?),
6089                 operation: GroupOperation::parse(reader)?,
6090                 value: Id(reader.next_u32()?),
6091                 cluster_size: if !reader.is_empty() {
6092                     Some(Id(reader.next_u32()?))
6093                 } else {
6094                     None
6095                 },
6096             },
6097             352u16 => Self::GroupNonUniformFMul {
6098                 result_type_id: Id(reader.next_u32()?),
6099                 result_id: Id(reader.next_u32()?),
6100                 execution: Id(reader.next_u32()?),
6101                 operation: GroupOperation::parse(reader)?,
6102                 value: Id(reader.next_u32()?),
6103                 cluster_size: if !reader.is_empty() {
6104                     Some(Id(reader.next_u32()?))
6105                 } else {
6106                     None
6107                 },
6108             },
6109             353u16 => Self::GroupNonUniformSMin {
6110                 result_type_id: Id(reader.next_u32()?),
6111                 result_id: Id(reader.next_u32()?),
6112                 execution: Id(reader.next_u32()?),
6113                 operation: GroupOperation::parse(reader)?,
6114                 value: Id(reader.next_u32()?),
6115                 cluster_size: if !reader.is_empty() {
6116                     Some(Id(reader.next_u32()?))
6117                 } else {
6118                     None
6119                 },
6120             },
6121             354u16 => Self::GroupNonUniformUMin {
6122                 result_type_id: Id(reader.next_u32()?),
6123                 result_id: Id(reader.next_u32()?),
6124                 execution: Id(reader.next_u32()?),
6125                 operation: GroupOperation::parse(reader)?,
6126                 value: Id(reader.next_u32()?),
6127                 cluster_size: if !reader.is_empty() {
6128                     Some(Id(reader.next_u32()?))
6129                 } else {
6130                     None
6131                 },
6132             },
6133             355u16 => Self::GroupNonUniformFMin {
6134                 result_type_id: Id(reader.next_u32()?),
6135                 result_id: Id(reader.next_u32()?),
6136                 execution: Id(reader.next_u32()?),
6137                 operation: GroupOperation::parse(reader)?,
6138                 value: Id(reader.next_u32()?),
6139                 cluster_size: if !reader.is_empty() {
6140                     Some(Id(reader.next_u32()?))
6141                 } else {
6142                     None
6143                 },
6144             },
6145             356u16 => Self::GroupNonUniformSMax {
6146                 result_type_id: Id(reader.next_u32()?),
6147                 result_id: Id(reader.next_u32()?),
6148                 execution: Id(reader.next_u32()?),
6149                 operation: GroupOperation::parse(reader)?,
6150                 value: Id(reader.next_u32()?),
6151                 cluster_size: if !reader.is_empty() {
6152                     Some(Id(reader.next_u32()?))
6153                 } else {
6154                     None
6155                 },
6156             },
6157             357u16 => Self::GroupNonUniformUMax {
6158                 result_type_id: Id(reader.next_u32()?),
6159                 result_id: Id(reader.next_u32()?),
6160                 execution: Id(reader.next_u32()?),
6161                 operation: GroupOperation::parse(reader)?,
6162                 value: Id(reader.next_u32()?),
6163                 cluster_size: if !reader.is_empty() {
6164                     Some(Id(reader.next_u32()?))
6165                 } else {
6166                     None
6167                 },
6168             },
6169             358u16 => Self::GroupNonUniformFMax {
6170                 result_type_id: Id(reader.next_u32()?),
6171                 result_id: Id(reader.next_u32()?),
6172                 execution: Id(reader.next_u32()?),
6173                 operation: GroupOperation::parse(reader)?,
6174                 value: Id(reader.next_u32()?),
6175                 cluster_size: if !reader.is_empty() {
6176                     Some(Id(reader.next_u32()?))
6177                 } else {
6178                     None
6179                 },
6180             },
6181             359u16 => Self::GroupNonUniformBitwiseAnd {
6182                 result_type_id: Id(reader.next_u32()?),
6183                 result_id: Id(reader.next_u32()?),
6184                 execution: Id(reader.next_u32()?),
6185                 operation: GroupOperation::parse(reader)?,
6186                 value: Id(reader.next_u32()?),
6187                 cluster_size: if !reader.is_empty() {
6188                     Some(Id(reader.next_u32()?))
6189                 } else {
6190                     None
6191                 },
6192             },
6193             360u16 => Self::GroupNonUniformBitwiseOr {
6194                 result_type_id: Id(reader.next_u32()?),
6195                 result_id: Id(reader.next_u32()?),
6196                 execution: Id(reader.next_u32()?),
6197                 operation: GroupOperation::parse(reader)?,
6198                 value: Id(reader.next_u32()?),
6199                 cluster_size: if !reader.is_empty() {
6200                     Some(Id(reader.next_u32()?))
6201                 } else {
6202                     None
6203                 },
6204             },
6205             361u16 => Self::GroupNonUniformBitwiseXor {
6206                 result_type_id: Id(reader.next_u32()?),
6207                 result_id: Id(reader.next_u32()?),
6208                 execution: Id(reader.next_u32()?),
6209                 operation: GroupOperation::parse(reader)?,
6210                 value: Id(reader.next_u32()?),
6211                 cluster_size: if !reader.is_empty() {
6212                     Some(Id(reader.next_u32()?))
6213                 } else {
6214                     None
6215                 },
6216             },
6217             362u16 => Self::GroupNonUniformLogicalAnd {
6218                 result_type_id: Id(reader.next_u32()?),
6219                 result_id: Id(reader.next_u32()?),
6220                 execution: Id(reader.next_u32()?),
6221                 operation: GroupOperation::parse(reader)?,
6222                 value: Id(reader.next_u32()?),
6223                 cluster_size: if !reader.is_empty() {
6224                     Some(Id(reader.next_u32()?))
6225                 } else {
6226                     None
6227                 },
6228             },
6229             363u16 => Self::GroupNonUniformLogicalOr {
6230                 result_type_id: Id(reader.next_u32()?),
6231                 result_id: Id(reader.next_u32()?),
6232                 execution: Id(reader.next_u32()?),
6233                 operation: GroupOperation::parse(reader)?,
6234                 value: Id(reader.next_u32()?),
6235                 cluster_size: if !reader.is_empty() {
6236                     Some(Id(reader.next_u32()?))
6237                 } else {
6238                     None
6239                 },
6240             },
6241             364u16 => Self::GroupNonUniformLogicalXor {
6242                 result_type_id: Id(reader.next_u32()?),
6243                 result_id: Id(reader.next_u32()?),
6244                 execution: Id(reader.next_u32()?),
6245                 operation: GroupOperation::parse(reader)?,
6246                 value: Id(reader.next_u32()?),
6247                 cluster_size: if !reader.is_empty() {
6248                     Some(Id(reader.next_u32()?))
6249                 } else {
6250                     None
6251                 },
6252             },
6253             365u16 => Self::GroupNonUniformQuadBroadcast {
6254                 result_type_id: Id(reader.next_u32()?),
6255                 result_id: Id(reader.next_u32()?),
6256                 execution: Id(reader.next_u32()?),
6257                 value: Id(reader.next_u32()?),
6258                 index: Id(reader.next_u32()?),
6259             },
6260             366u16 => Self::GroupNonUniformQuadSwap {
6261                 result_type_id: Id(reader.next_u32()?),
6262                 result_id: Id(reader.next_u32()?),
6263                 execution: Id(reader.next_u32()?),
6264                 value: Id(reader.next_u32()?),
6265                 direction: Id(reader.next_u32()?),
6266             },
6267             400u16 => Self::CopyLogical {
6268                 result_type_id: Id(reader.next_u32()?),
6269                 result_id: Id(reader.next_u32()?),
6270                 operand: Id(reader.next_u32()?),
6271             },
6272             401u16 => Self::PtrEqual {
6273                 result_type_id: Id(reader.next_u32()?),
6274                 result_id: Id(reader.next_u32()?),
6275                 operand1: Id(reader.next_u32()?),
6276                 operand2: Id(reader.next_u32()?),
6277             },
6278             402u16 => Self::PtrNotEqual {
6279                 result_type_id: Id(reader.next_u32()?),
6280                 result_id: Id(reader.next_u32()?),
6281                 operand1: Id(reader.next_u32()?),
6282                 operand2: Id(reader.next_u32()?),
6283             },
6284             403u16 => Self::PtrDiff {
6285                 result_type_id: Id(reader.next_u32()?),
6286                 result_id: Id(reader.next_u32()?),
6287                 operand1: Id(reader.next_u32()?),
6288                 operand2: Id(reader.next_u32()?),
6289             },
6290             4416u16 => Self::TerminateInvocation,
6291             4421u16 => Self::SubgroupBallotKHR {
6292                 result_type_id: Id(reader.next_u32()?),
6293                 result_id: Id(reader.next_u32()?),
6294                 predicate: Id(reader.next_u32()?),
6295             },
6296             4422u16 => Self::SubgroupFirstInvocationKHR {
6297                 result_type_id: Id(reader.next_u32()?),
6298                 result_id: Id(reader.next_u32()?),
6299                 value: Id(reader.next_u32()?),
6300             },
6301             4428u16 => Self::SubgroupAllKHR {
6302                 result_type_id: Id(reader.next_u32()?),
6303                 result_id: Id(reader.next_u32()?),
6304                 predicate: Id(reader.next_u32()?),
6305             },
6306             4429u16 => Self::SubgroupAnyKHR {
6307                 result_type_id: Id(reader.next_u32()?),
6308                 result_id: Id(reader.next_u32()?),
6309                 predicate: Id(reader.next_u32()?),
6310             },
6311             4430u16 => Self::SubgroupAllEqualKHR {
6312                 result_type_id: Id(reader.next_u32()?),
6313                 result_id: Id(reader.next_u32()?),
6314                 predicate: Id(reader.next_u32()?),
6315             },
6316             4432u16 => Self::SubgroupReadInvocationKHR {
6317                 result_type_id: Id(reader.next_u32()?),
6318                 result_id: Id(reader.next_u32()?),
6319                 value: Id(reader.next_u32()?),
6320                 index: Id(reader.next_u32()?),
6321             },
6322             4445u16 => Self::TraceRayKHR {
6323                 accel: Id(reader.next_u32()?),
6324                 ray_flags: Id(reader.next_u32()?),
6325                 cull_mask: Id(reader.next_u32()?),
6326                 sbt_offset: Id(reader.next_u32()?),
6327                 sbt_stride: Id(reader.next_u32()?),
6328                 miss_index: Id(reader.next_u32()?),
6329                 ray_origin: Id(reader.next_u32()?),
6330                 ray_tmin: Id(reader.next_u32()?),
6331                 ray_direction: Id(reader.next_u32()?),
6332                 ray_tmax: Id(reader.next_u32()?),
6333                 payload: Id(reader.next_u32()?),
6334             },
6335             4446u16 => Self::ExecuteCallableKHR {
6336                 sbt_index: Id(reader.next_u32()?),
6337                 callable_data: Id(reader.next_u32()?),
6338             },
6339             4447u16 => Self::ConvertUToAccelerationStructureKHR {
6340                 result_type_id: Id(reader.next_u32()?),
6341                 result_id: Id(reader.next_u32()?),
6342                 accel: Id(reader.next_u32()?),
6343             },
6344             4448u16 => Self::IgnoreIntersectionKHR,
6345             4449u16 => Self::TerminateRayKHR,
6346             4450u16 => Self::SDot {
6347                 result_type_id: Id(reader.next_u32()?),
6348                 result_id: Id(reader.next_u32()?),
6349                 vector_1: Id(reader.next_u32()?),
6350                 vector_2: Id(reader.next_u32()?),
6351                 packed_vector_format: if !reader.is_empty() {
6352                     Some(PackedVectorFormat::parse(reader)?)
6353                 } else {
6354                     None
6355                 },
6356             },
6357             4451u16 => Self::UDot {
6358                 result_type_id: Id(reader.next_u32()?),
6359                 result_id: Id(reader.next_u32()?),
6360                 vector_1: Id(reader.next_u32()?),
6361                 vector_2: Id(reader.next_u32()?),
6362                 packed_vector_format: if !reader.is_empty() {
6363                     Some(PackedVectorFormat::parse(reader)?)
6364                 } else {
6365                     None
6366                 },
6367             },
6368             4452u16 => Self::SUDot {
6369                 result_type_id: Id(reader.next_u32()?),
6370                 result_id: Id(reader.next_u32()?),
6371                 vector_1: Id(reader.next_u32()?),
6372                 vector_2: Id(reader.next_u32()?),
6373                 packed_vector_format: if !reader.is_empty() {
6374                     Some(PackedVectorFormat::parse(reader)?)
6375                 } else {
6376                     None
6377                 },
6378             },
6379             4453u16 => Self::SDotAccSat {
6380                 result_type_id: Id(reader.next_u32()?),
6381                 result_id: Id(reader.next_u32()?),
6382                 vector_1: Id(reader.next_u32()?),
6383                 vector_2: Id(reader.next_u32()?),
6384                 accumulator: Id(reader.next_u32()?),
6385                 packed_vector_format: if !reader.is_empty() {
6386                     Some(PackedVectorFormat::parse(reader)?)
6387                 } else {
6388                     None
6389                 },
6390             },
6391             4454u16 => Self::UDotAccSat {
6392                 result_type_id: Id(reader.next_u32()?),
6393                 result_id: Id(reader.next_u32()?),
6394                 vector_1: Id(reader.next_u32()?),
6395                 vector_2: Id(reader.next_u32()?),
6396                 accumulator: Id(reader.next_u32()?),
6397                 packed_vector_format: if !reader.is_empty() {
6398                     Some(PackedVectorFormat::parse(reader)?)
6399                 } else {
6400                     None
6401                 },
6402             },
6403             4455u16 => Self::SUDotAccSat {
6404                 result_type_id: Id(reader.next_u32()?),
6405                 result_id: Id(reader.next_u32()?),
6406                 vector_1: Id(reader.next_u32()?),
6407                 vector_2: Id(reader.next_u32()?),
6408                 accumulator: Id(reader.next_u32()?),
6409                 packed_vector_format: if !reader.is_empty() {
6410                     Some(PackedVectorFormat::parse(reader)?)
6411                 } else {
6412                     None
6413                 },
6414             },
6415             4472u16 => Self::TypeRayQueryKHR {
6416                 result_id: Id(reader.next_u32()?),
6417             },
6418             4473u16 => Self::RayQueryInitializeKHR {
6419                 ray_query: Id(reader.next_u32()?),
6420                 accel: Id(reader.next_u32()?),
6421                 ray_flags: Id(reader.next_u32()?),
6422                 cull_mask: Id(reader.next_u32()?),
6423                 ray_origin: Id(reader.next_u32()?),
6424                 ray_t_min: Id(reader.next_u32()?),
6425                 ray_direction: Id(reader.next_u32()?),
6426                 ray_t_max: Id(reader.next_u32()?),
6427             },
6428             4474u16 => Self::RayQueryTerminateKHR {
6429                 ray_query: Id(reader.next_u32()?),
6430             },
6431             4475u16 => Self::RayQueryGenerateIntersectionKHR {
6432                 ray_query: Id(reader.next_u32()?),
6433                 hit_t: Id(reader.next_u32()?),
6434             },
6435             4476u16 => Self::RayQueryConfirmIntersectionKHR {
6436                 ray_query: Id(reader.next_u32()?),
6437             },
6438             4477u16 => Self::RayQueryProceedKHR {
6439                 result_type_id: Id(reader.next_u32()?),
6440                 result_id: Id(reader.next_u32()?),
6441                 ray_query: Id(reader.next_u32()?),
6442             },
6443             4479u16 => Self::RayQueryGetIntersectionTypeKHR {
6444                 result_type_id: Id(reader.next_u32()?),
6445                 result_id: Id(reader.next_u32()?),
6446                 ray_query: Id(reader.next_u32()?),
6447                 intersection: Id(reader.next_u32()?),
6448             },
6449             5000u16 => Self::GroupIAddNonUniformAMD {
6450                 result_type_id: Id(reader.next_u32()?),
6451                 result_id: Id(reader.next_u32()?),
6452                 execution: Id(reader.next_u32()?),
6453                 operation: GroupOperation::parse(reader)?,
6454                 x: Id(reader.next_u32()?),
6455             },
6456             5001u16 => Self::GroupFAddNonUniformAMD {
6457                 result_type_id: Id(reader.next_u32()?),
6458                 result_id: Id(reader.next_u32()?),
6459                 execution: Id(reader.next_u32()?),
6460                 operation: GroupOperation::parse(reader)?,
6461                 x: Id(reader.next_u32()?),
6462             },
6463             5002u16 => Self::GroupFMinNonUniformAMD {
6464                 result_type_id: Id(reader.next_u32()?),
6465                 result_id: Id(reader.next_u32()?),
6466                 execution: Id(reader.next_u32()?),
6467                 operation: GroupOperation::parse(reader)?,
6468                 x: Id(reader.next_u32()?),
6469             },
6470             5003u16 => Self::GroupUMinNonUniformAMD {
6471                 result_type_id: Id(reader.next_u32()?),
6472                 result_id: Id(reader.next_u32()?),
6473                 execution: Id(reader.next_u32()?),
6474                 operation: GroupOperation::parse(reader)?,
6475                 x: Id(reader.next_u32()?),
6476             },
6477             5004u16 => Self::GroupSMinNonUniformAMD {
6478                 result_type_id: Id(reader.next_u32()?),
6479                 result_id: Id(reader.next_u32()?),
6480                 execution: Id(reader.next_u32()?),
6481                 operation: GroupOperation::parse(reader)?,
6482                 x: Id(reader.next_u32()?),
6483             },
6484             5005u16 => Self::GroupFMaxNonUniformAMD {
6485                 result_type_id: Id(reader.next_u32()?),
6486                 result_id: Id(reader.next_u32()?),
6487                 execution: Id(reader.next_u32()?),
6488                 operation: GroupOperation::parse(reader)?,
6489                 x: Id(reader.next_u32()?),
6490             },
6491             5006u16 => Self::GroupUMaxNonUniformAMD {
6492                 result_type_id: Id(reader.next_u32()?),
6493                 result_id: Id(reader.next_u32()?),
6494                 execution: Id(reader.next_u32()?),
6495                 operation: GroupOperation::parse(reader)?,
6496                 x: Id(reader.next_u32()?),
6497             },
6498             5007u16 => Self::GroupSMaxNonUniformAMD {
6499                 result_type_id: Id(reader.next_u32()?),
6500                 result_id: Id(reader.next_u32()?),
6501                 execution: Id(reader.next_u32()?),
6502                 operation: GroupOperation::parse(reader)?,
6503                 x: Id(reader.next_u32()?),
6504             },
6505             5011u16 => Self::FragmentMaskFetchAMD {
6506                 result_type_id: Id(reader.next_u32()?),
6507                 result_id: Id(reader.next_u32()?),
6508                 image: Id(reader.next_u32()?),
6509                 coordinate: Id(reader.next_u32()?),
6510             },
6511             5012u16 => Self::FragmentFetchAMD {
6512                 result_type_id: Id(reader.next_u32()?),
6513                 result_id: Id(reader.next_u32()?),
6514                 image: Id(reader.next_u32()?),
6515                 coordinate: Id(reader.next_u32()?),
6516                 fragment_index: Id(reader.next_u32()?),
6517             },
6518             5056u16 => Self::ReadClockKHR {
6519                 result_type_id: Id(reader.next_u32()?),
6520                 result_id: Id(reader.next_u32()?),
6521                 scope: Id(reader.next_u32()?),
6522             },
6523             5283u16 => Self::ImageSampleFootprintNV {
6524                 result_type_id: Id(reader.next_u32()?),
6525                 result_id: Id(reader.next_u32()?),
6526                 sampled_image: Id(reader.next_u32()?),
6527                 coordinate: Id(reader.next_u32()?),
6528                 granularity: Id(reader.next_u32()?),
6529                 coarse: Id(reader.next_u32()?),
6530                 image_operands: if !reader.is_empty() {
6531                     Some(ImageOperands::parse(reader)?)
6532                 } else {
6533                     None
6534                 },
6535             },
6536             5296u16 => Self::GroupNonUniformPartitionNV {
6537                 result_type_id: Id(reader.next_u32()?),
6538                 result_id: Id(reader.next_u32()?),
6539                 value: Id(reader.next_u32()?),
6540             },
6541             5299u16 => Self::WritePackedPrimitiveIndices4x8NV {
6542                 index_offset: Id(reader.next_u32()?),
6543                 packed_indices: Id(reader.next_u32()?),
6544             },
6545             5334u16 => Self::ReportIntersectionKHR {
6546                 result_type_id: Id(reader.next_u32()?),
6547                 result_id: Id(reader.next_u32()?),
6548                 hit: Id(reader.next_u32()?),
6549                 hit_kind: Id(reader.next_u32()?),
6550             },
6551             5335u16 => Self::IgnoreIntersectionNV,
6552             5336u16 => Self::TerminateRayNV,
6553             5337u16 => Self::TraceNV {
6554                 accel: Id(reader.next_u32()?),
6555                 ray_flags: Id(reader.next_u32()?),
6556                 cull_mask: Id(reader.next_u32()?),
6557                 sbt_offset: Id(reader.next_u32()?),
6558                 sbt_stride: Id(reader.next_u32()?),
6559                 miss_index: Id(reader.next_u32()?),
6560                 ray_origin: Id(reader.next_u32()?),
6561                 ray_tmin: Id(reader.next_u32()?),
6562                 ray_direction: Id(reader.next_u32()?),
6563                 ray_tmax: Id(reader.next_u32()?),
6564                 payload_id: Id(reader.next_u32()?),
6565             },
6566             5338u16 => Self::TraceMotionNV {
6567                 accel: Id(reader.next_u32()?),
6568                 ray_flags: Id(reader.next_u32()?),
6569                 cull_mask: Id(reader.next_u32()?),
6570                 sbt_offset: Id(reader.next_u32()?),
6571                 sbt_stride: Id(reader.next_u32()?),
6572                 miss_index: Id(reader.next_u32()?),
6573                 ray_origin: Id(reader.next_u32()?),
6574                 ray_tmin: Id(reader.next_u32()?),
6575                 ray_direction: Id(reader.next_u32()?),
6576                 ray_tmax: Id(reader.next_u32()?),
6577                 time: Id(reader.next_u32()?),
6578                 payload_id: Id(reader.next_u32()?),
6579             },
6580             5339u16 => Self::TraceRayMotionNV {
6581                 accel: Id(reader.next_u32()?),
6582                 ray_flags: Id(reader.next_u32()?),
6583                 cull_mask: Id(reader.next_u32()?),
6584                 sbt_offset: Id(reader.next_u32()?),
6585                 sbt_stride: Id(reader.next_u32()?),
6586                 miss_index: Id(reader.next_u32()?),
6587                 ray_origin: Id(reader.next_u32()?),
6588                 ray_tmin: Id(reader.next_u32()?),
6589                 ray_direction: Id(reader.next_u32()?),
6590                 ray_tmax: Id(reader.next_u32()?),
6591                 time: Id(reader.next_u32()?),
6592                 payload: Id(reader.next_u32()?),
6593             },
6594             5341u16 => Self::TypeAccelerationStructureKHR {
6595                 result_id: Id(reader.next_u32()?),
6596             },
6597             5344u16 => Self::ExecuteCallableNV {
6598                 sbt_index: Id(reader.next_u32()?),
6599                 callable_data_id: Id(reader.next_u32()?),
6600             },
6601             5358u16 => Self::TypeCooperativeMatrixNV {
6602                 result_id: Id(reader.next_u32()?),
6603                 component_type: Id(reader.next_u32()?),
6604                 execution: Id(reader.next_u32()?),
6605                 rows: Id(reader.next_u32()?),
6606                 columns: Id(reader.next_u32()?),
6607             },
6608             5359u16 => Self::CooperativeMatrixLoadNV {
6609                 result_type_id: Id(reader.next_u32()?),
6610                 result_id: Id(reader.next_u32()?),
6611                 pointer: Id(reader.next_u32()?),
6612                 stride: Id(reader.next_u32()?),
6613                 column_major: Id(reader.next_u32()?),
6614                 memory_access: if !reader.is_empty() {
6615                     Some(MemoryAccess::parse(reader)?)
6616                 } else {
6617                     None
6618                 },
6619             },
6620             5360u16 => Self::CooperativeMatrixStoreNV {
6621                 pointer: Id(reader.next_u32()?),
6622                 object: Id(reader.next_u32()?),
6623                 stride: Id(reader.next_u32()?),
6624                 column_major: Id(reader.next_u32()?),
6625                 memory_access: if !reader.is_empty() {
6626                     Some(MemoryAccess::parse(reader)?)
6627                 } else {
6628                     None
6629                 },
6630             },
6631             5361u16 => Self::CooperativeMatrixMulAddNV {
6632                 result_type_id: Id(reader.next_u32()?),
6633                 result_id: Id(reader.next_u32()?),
6634                 a: Id(reader.next_u32()?),
6635                 b: Id(reader.next_u32()?),
6636                 c: Id(reader.next_u32()?),
6637             },
6638             5362u16 => Self::CooperativeMatrixLengthNV {
6639                 result_type_id: Id(reader.next_u32()?),
6640                 result_id: Id(reader.next_u32()?),
6641                 ty: Id(reader.next_u32()?),
6642             },
6643             5364u16 => Self::BeginInvocationInterlockEXT,
6644             5365u16 => Self::EndInvocationInterlockEXT,
6645             5380u16 => Self::DemoteToHelperInvocation,
6646             5381u16 => Self::IsHelperInvocationEXT {
6647                 result_type_id: Id(reader.next_u32()?),
6648                 result_id: Id(reader.next_u32()?),
6649             },
6650             5391u16 => Self::ConvertUToImageNV {
6651                 result_type_id: Id(reader.next_u32()?),
6652                 result_id: Id(reader.next_u32()?),
6653                 operand: Id(reader.next_u32()?),
6654             },
6655             5392u16 => Self::ConvertUToSamplerNV {
6656                 result_type_id: Id(reader.next_u32()?),
6657                 result_id: Id(reader.next_u32()?),
6658                 operand: Id(reader.next_u32()?),
6659             },
6660             5393u16 => Self::ConvertImageToUNV {
6661                 result_type_id: Id(reader.next_u32()?),
6662                 result_id: Id(reader.next_u32()?),
6663                 operand: Id(reader.next_u32()?),
6664             },
6665             5394u16 => Self::ConvertSamplerToUNV {
6666                 result_type_id: Id(reader.next_u32()?),
6667                 result_id: Id(reader.next_u32()?),
6668                 operand: Id(reader.next_u32()?),
6669             },
6670             5395u16 => Self::ConvertUToSampledImageNV {
6671                 result_type_id: Id(reader.next_u32()?),
6672                 result_id: Id(reader.next_u32()?),
6673                 operand: Id(reader.next_u32()?),
6674             },
6675             5396u16 => Self::ConvertSampledImageToUNV {
6676                 result_type_id: Id(reader.next_u32()?),
6677                 result_id: Id(reader.next_u32()?),
6678                 operand: Id(reader.next_u32()?),
6679             },
6680             5397u16 => Self::SamplerImageAddressingModeNV {
6681                 bit_width: reader.next_u32()?,
6682             },
6683             5571u16 => Self::SubgroupShuffleINTEL {
6684                 result_type_id: Id(reader.next_u32()?),
6685                 result_id: Id(reader.next_u32()?),
6686                 data: Id(reader.next_u32()?),
6687                 invocation_id: Id(reader.next_u32()?),
6688             },
6689             5572u16 => Self::SubgroupShuffleDownINTEL {
6690                 result_type_id: Id(reader.next_u32()?),
6691                 result_id: Id(reader.next_u32()?),
6692                 current: Id(reader.next_u32()?),
6693                 next: Id(reader.next_u32()?),
6694                 delta: Id(reader.next_u32()?),
6695             },
6696             5573u16 => Self::SubgroupShuffleUpINTEL {
6697                 result_type_id: Id(reader.next_u32()?),
6698                 result_id: Id(reader.next_u32()?),
6699                 previous: Id(reader.next_u32()?),
6700                 current: Id(reader.next_u32()?),
6701                 delta: Id(reader.next_u32()?),
6702             },
6703             5574u16 => Self::SubgroupShuffleXorINTEL {
6704                 result_type_id: Id(reader.next_u32()?),
6705                 result_id: Id(reader.next_u32()?),
6706                 data: Id(reader.next_u32()?),
6707                 value: Id(reader.next_u32()?),
6708             },
6709             5575u16 => Self::SubgroupBlockReadINTEL {
6710                 result_type_id: Id(reader.next_u32()?),
6711                 result_id: Id(reader.next_u32()?),
6712                 ptr: Id(reader.next_u32()?),
6713             },
6714             5576u16 => Self::SubgroupBlockWriteINTEL {
6715                 ptr: Id(reader.next_u32()?),
6716                 data: Id(reader.next_u32()?),
6717             },
6718             5577u16 => Self::SubgroupImageBlockReadINTEL {
6719                 result_type_id: Id(reader.next_u32()?),
6720                 result_id: Id(reader.next_u32()?),
6721                 image: Id(reader.next_u32()?),
6722                 coordinate: Id(reader.next_u32()?),
6723             },
6724             5578u16 => Self::SubgroupImageBlockWriteINTEL {
6725                 image: Id(reader.next_u32()?),
6726                 coordinate: Id(reader.next_u32()?),
6727                 data: Id(reader.next_u32()?),
6728             },
6729             5580u16 => Self::SubgroupImageMediaBlockReadINTEL {
6730                 result_type_id: Id(reader.next_u32()?),
6731                 result_id: Id(reader.next_u32()?),
6732                 image: Id(reader.next_u32()?),
6733                 coordinate: Id(reader.next_u32()?),
6734                 width: Id(reader.next_u32()?),
6735                 height: Id(reader.next_u32()?),
6736             },
6737             5581u16 => Self::SubgroupImageMediaBlockWriteINTEL {
6738                 image: Id(reader.next_u32()?),
6739                 coordinate: Id(reader.next_u32()?),
6740                 width: Id(reader.next_u32()?),
6741                 height: Id(reader.next_u32()?),
6742                 data: Id(reader.next_u32()?),
6743             },
6744             5585u16 => Self::UCountLeadingZerosINTEL {
6745                 result_type_id: Id(reader.next_u32()?),
6746                 result_id: Id(reader.next_u32()?),
6747                 operand: Id(reader.next_u32()?),
6748             },
6749             5586u16 => Self::UCountTrailingZerosINTEL {
6750                 result_type_id: Id(reader.next_u32()?),
6751                 result_id: Id(reader.next_u32()?),
6752                 operand: Id(reader.next_u32()?),
6753             },
6754             5587u16 => Self::AbsISubINTEL {
6755                 result_type_id: Id(reader.next_u32()?),
6756                 result_id: Id(reader.next_u32()?),
6757                 operand1: Id(reader.next_u32()?),
6758                 operand2: Id(reader.next_u32()?),
6759             },
6760             5588u16 => Self::AbsUSubINTEL {
6761                 result_type_id: Id(reader.next_u32()?),
6762                 result_id: Id(reader.next_u32()?),
6763                 operand1: Id(reader.next_u32()?),
6764                 operand2: Id(reader.next_u32()?),
6765             },
6766             5589u16 => Self::IAddSatINTEL {
6767                 result_type_id: Id(reader.next_u32()?),
6768                 result_id: Id(reader.next_u32()?),
6769                 operand1: Id(reader.next_u32()?),
6770                 operand2: Id(reader.next_u32()?),
6771             },
6772             5590u16 => Self::UAddSatINTEL {
6773                 result_type_id: Id(reader.next_u32()?),
6774                 result_id: Id(reader.next_u32()?),
6775                 operand1: Id(reader.next_u32()?),
6776                 operand2: Id(reader.next_u32()?),
6777             },
6778             5591u16 => Self::IAverageINTEL {
6779                 result_type_id: Id(reader.next_u32()?),
6780                 result_id: Id(reader.next_u32()?),
6781                 operand1: Id(reader.next_u32()?),
6782                 operand2: Id(reader.next_u32()?),
6783             },
6784             5592u16 => Self::UAverageINTEL {
6785                 result_type_id: Id(reader.next_u32()?),
6786                 result_id: Id(reader.next_u32()?),
6787                 operand1: Id(reader.next_u32()?),
6788                 operand2: Id(reader.next_u32()?),
6789             },
6790             5593u16 => Self::IAverageRoundedINTEL {
6791                 result_type_id: Id(reader.next_u32()?),
6792                 result_id: Id(reader.next_u32()?),
6793                 operand1: Id(reader.next_u32()?),
6794                 operand2: Id(reader.next_u32()?),
6795             },
6796             5594u16 => Self::UAverageRoundedINTEL {
6797                 result_type_id: Id(reader.next_u32()?),
6798                 result_id: Id(reader.next_u32()?),
6799                 operand1: Id(reader.next_u32()?),
6800                 operand2: Id(reader.next_u32()?),
6801             },
6802             5595u16 => Self::ISubSatINTEL {
6803                 result_type_id: Id(reader.next_u32()?),
6804                 result_id: Id(reader.next_u32()?),
6805                 operand1: Id(reader.next_u32()?),
6806                 operand2: Id(reader.next_u32()?),
6807             },
6808             5596u16 => Self::USubSatINTEL {
6809                 result_type_id: Id(reader.next_u32()?),
6810                 result_id: Id(reader.next_u32()?),
6811                 operand1: Id(reader.next_u32()?),
6812                 operand2: Id(reader.next_u32()?),
6813             },
6814             5597u16 => Self::IMul32x16INTEL {
6815                 result_type_id: Id(reader.next_u32()?),
6816                 result_id: Id(reader.next_u32()?),
6817                 operand1: Id(reader.next_u32()?),
6818                 operand2: Id(reader.next_u32()?),
6819             },
6820             5598u16 => Self::UMul32x16INTEL {
6821                 result_type_id: Id(reader.next_u32()?),
6822                 result_id: Id(reader.next_u32()?),
6823                 operand1: Id(reader.next_u32()?),
6824                 operand2: Id(reader.next_u32()?),
6825             },
6826             5600u16 => Self::ConstantFunctionPointerINTEL {
6827                 result_type_id: Id(reader.next_u32()?),
6828                 result_id: Id(reader.next_u32()?),
6829                 function: Id(reader.next_u32()?),
6830             },
6831             5601u16 => Self::FunctionPointerCallINTEL {
6832                 result_type_id: Id(reader.next_u32()?),
6833                 result_id: Id(reader.next_u32()?),
6834                 operand1: {
6835                     let mut vec = Vec::new();
6836                     while !reader.is_empty() {
6837                         vec.push(Id(reader.next_u32()?));
6838                     }
6839                     vec
6840                 },
6841             },
6842             5609u16 => Self::AsmTargetINTEL {
6843                 result_type_id: Id(reader.next_u32()?),
6844                 result_id: Id(reader.next_u32()?),
6845                 asm_target: reader.next_string()?,
6846             },
6847             5610u16 => Self::AsmINTEL {
6848                 result_type_id: Id(reader.next_u32()?),
6849                 result_id: Id(reader.next_u32()?),
6850                 asm_type: Id(reader.next_u32()?),
6851                 target: Id(reader.next_u32()?),
6852                 asm_instructions: reader.next_string()?,
6853                 constraints: reader.next_string()?,
6854             },
6855             5611u16 => Self::AsmCallINTEL {
6856                 result_type_id: Id(reader.next_u32()?),
6857                 result_id: Id(reader.next_u32()?),
6858                 asm: Id(reader.next_u32()?),
6859                 argument_0: {
6860                     let mut vec = Vec::new();
6861                     while !reader.is_empty() {
6862                         vec.push(Id(reader.next_u32()?));
6863                     }
6864                     vec
6865                 },
6866             },
6867             5614u16 => Self::AtomicFMinEXT {
6868                 result_type_id: Id(reader.next_u32()?),
6869                 result_id: Id(reader.next_u32()?),
6870                 pointer: Id(reader.next_u32()?),
6871                 memory: Id(reader.next_u32()?),
6872                 semantics: Id(reader.next_u32()?),
6873                 value: Id(reader.next_u32()?),
6874             },
6875             5615u16 => Self::AtomicFMaxEXT {
6876                 result_type_id: Id(reader.next_u32()?),
6877                 result_id: Id(reader.next_u32()?),
6878                 pointer: Id(reader.next_u32()?),
6879                 memory: Id(reader.next_u32()?),
6880                 semantics: Id(reader.next_u32()?),
6881                 value: Id(reader.next_u32()?),
6882             },
6883             5630u16 => Self::AssumeTrueKHR {
6884                 condition: Id(reader.next_u32()?),
6885             },
6886             5631u16 => Self::ExpectKHR {
6887                 result_type_id: Id(reader.next_u32()?),
6888                 result_id: Id(reader.next_u32()?),
6889                 value: Id(reader.next_u32()?),
6890                 expected_value: Id(reader.next_u32()?),
6891             },
6892             5632u16 => Self::DecorateString {
6893                 target: Id(reader.next_u32()?),
6894                 decoration: Decoration::parse(reader)?,
6895             },
6896             5633u16 => Self::MemberDecorateString {
6897                 struct_type: Id(reader.next_u32()?),
6898                 member: reader.next_u32()?,
6899                 decoration: Decoration::parse(reader)?,
6900             },
6901             5699u16 => Self::VmeImageINTEL {
6902                 result_type_id: Id(reader.next_u32()?),
6903                 result_id: Id(reader.next_u32()?),
6904                 image_type: Id(reader.next_u32()?),
6905                 sampler: Id(reader.next_u32()?),
6906             },
6907             5700u16 => Self::TypeVmeImageINTEL {
6908                 result_id: Id(reader.next_u32()?),
6909                 image_type: Id(reader.next_u32()?),
6910             },
6911             5701u16 => Self::TypeAvcImePayloadINTEL {
6912                 result_id: Id(reader.next_u32()?),
6913             },
6914             5702u16 => Self::TypeAvcRefPayloadINTEL {
6915                 result_id: Id(reader.next_u32()?),
6916             },
6917             5703u16 => Self::TypeAvcSicPayloadINTEL {
6918                 result_id: Id(reader.next_u32()?),
6919             },
6920             5704u16 => Self::TypeAvcMcePayloadINTEL {
6921                 result_id: Id(reader.next_u32()?),
6922             },
6923             5705u16 => Self::TypeAvcMceResultINTEL {
6924                 result_id: Id(reader.next_u32()?),
6925             },
6926             5706u16 => Self::TypeAvcImeResultINTEL {
6927                 result_id: Id(reader.next_u32()?),
6928             },
6929             5707u16 => Self::TypeAvcImeResultSingleReferenceStreamoutINTEL {
6930                 result_id: Id(reader.next_u32()?),
6931             },
6932             5708u16 => Self::TypeAvcImeResultDualReferenceStreamoutINTEL {
6933                 result_id: Id(reader.next_u32()?),
6934             },
6935             5709u16 => Self::TypeAvcImeSingleReferenceStreaminINTEL {
6936                 result_id: Id(reader.next_u32()?),
6937             },
6938             5710u16 => Self::TypeAvcImeDualReferenceStreaminINTEL {
6939                 result_id: Id(reader.next_u32()?),
6940             },
6941             5711u16 => Self::TypeAvcRefResultINTEL {
6942                 result_id: Id(reader.next_u32()?),
6943             },
6944             5712u16 => Self::TypeAvcSicResultINTEL {
6945                 result_id: Id(reader.next_u32()?),
6946             },
6947             5713u16 => Self::SubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL {
6948                 result_type_id: Id(reader.next_u32()?),
6949                 result_id: Id(reader.next_u32()?),
6950                 slice_type: Id(reader.next_u32()?),
6951                 qp: Id(reader.next_u32()?),
6952             },
6953             5714u16 => Self::SubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL {
6954                 result_type_id: Id(reader.next_u32()?),
6955                 result_id: Id(reader.next_u32()?),
6956                 reference_base_penalty: Id(reader.next_u32()?),
6957                 payload: Id(reader.next_u32()?),
6958             },
6959             5715u16 => Self::SubgroupAvcMceGetDefaultInterShapePenaltyINTEL {
6960                 result_type_id: Id(reader.next_u32()?),
6961                 result_id: Id(reader.next_u32()?),
6962                 slice_type: Id(reader.next_u32()?),
6963                 qp: Id(reader.next_u32()?),
6964             },
6965             5716u16 => Self::SubgroupAvcMceSetInterShapePenaltyINTEL {
6966                 result_type_id: Id(reader.next_u32()?),
6967                 result_id: Id(reader.next_u32()?),
6968                 packed_shape_penalty: Id(reader.next_u32()?),
6969                 payload: Id(reader.next_u32()?),
6970             },
6971             5717u16 => Self::SubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL {
6972                 result_type_id: Id(reader.next_u32()?),
6973                 result_id: Id(reader.next_u32()?),
6974                 slice_type: Id(reader.next_u32()?),
6975                 qp: Id(reader.next_u32()?),
6976             },
6977             5718u16 => Self::SubgroupAvcMceSetInterDirectionPenaltyINTEL {
6978                 result_type_id: Id(reader.next_u32()?),
6979                 result_id: Id(reader.next_u32()?),
6980                 direction_cost: Id(reader.next_u32()?),
6981                 payload: Id(reader.next_u32()?),
6982             },
6983             5719u16 => Self::SubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL {
6984                 result_type_id: Id(reader.next_u32()?),
6985                 result_id: Id(reader.next_u32()?),
6986                 slice_type: Id(reader.next_u32()?),
6987                 qp: Id(reader.next_u32()?),
6988             },
6989             5720u16 => Self::SubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL {
6990                 result_type_id: Id(reader.next_u32()?),
6991                 result_id: Id(reader.next_u32()?),
6992                 slice_type: Id(reader.next_u32()?),
6993                 qp: Id(reader.next_u32()?),
6994             },
6995             5721u16 => Self::SubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL {
6996                 result_type_id: Id(reader.next_u32()?),
6997                 result_id: Id(reader.next_u32()?),
6998             },
6999             5722u16 => Self::SubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL {
7000                 result_type_id: Id(reader.next_u32()?),
7001                 result_id: Id(reader.next_u32()?),
7002             },
7003             5723u16 => Self::SubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL {
7004                 result_type_id: Id(reader.next_u32()?),
7005                 result_id: Id(reader.next_u32()?),
7006             },
7007             5724u16 => Self::SubgroupAvcMceSetMotionVectorCostFunctionINTEL {
7008                 result_type_id: Id(reader.next_u32()?),
7009                 result_id: Id(reader.next_u32()?),
7010                 packed_cost_center_delta: Id(reader.next_u32()?),
7011                 packed_cost_table: Id(reader.next_u32()?),
7012                 cost_precision: Id(reader.next_u32()?),
7013                 payload: Id(reader.next_u32()?),
7014             },
7015             5725u16 => Self::SubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL {
7016                 result_type_id: Id(reader.next_u32()?),
7017                 result_id: Id(reader.next_u32()?),
7018                 slice_type: Id(reader.next_u32()?),
7019                 qp: Id(reader.next_u32()?),
7020             },
7021             5726u16 => Self::SubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL {
7022                 result_type_id: Id(reader.next_u32()?),
7023                 result_id: Id(reader.next_u32()?),
7024             },
7025             5727u16 => Self::SubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL {
7026                 result_type_id: Id(reader.next_u32()?),
7027                 result_id: Id(reader.next_u32()?),
7028             },
7029             5728u16 => Self::SubgroupAvcMceSetAcOnlyHaarINTEL {
7030                 result_type_id: Id(reader.next_u32()?),
7031                 result_id: Id(reader.next_u32()?),
7032                 payload: Id(reader.next_u32()?),
7033             },
7034             5729u16 => Self::SubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL {
7035                 result_type_id: Id(reader.next_u32()?),
7036                 result_id: Id(reader.next_u32()?),
7037                 source_field_polarity: Id(reader.next_u32()?),
7038                 payload: Id(reader.next_u32()?),
7039             },
7040             5730u16 => Self::SubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL {
7041                 result_type_id: Id(reader.next_u32()?),
7042                 result_id: Id(reader.next_u32()?),
7043                 reference_field_polarity: Id(reader.next_u32()?),
7044                 payload: Id(reader.next_u32()?),
7045             },
7046             5731u16 => Self::SubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL {
7047                 result_type_id: Id(reader.next_u32()?),
7048                 result_id: Id(reader.next_u32()?),
7049                 forward_reference_field_polarity: Id(reader.next_u32()?),
7050                 backward_reference_field_polarity: Id(reader.next_u32()?),
7051                 payload: Id(reader.next_u32()?),
7052             },
7053             5732u16 => Self::SubgroupAvcMceConvertToImePayloadINTEL {
7054                 result_type_id: Id(reader.next_u32()?),
7055                 result_id: Id(reader.next_u32()?),
7056                 payload: Id(reader.next_u32()?),
7057             },
7058             5733u16 => Self::SubgroupAvcMceConvertToImeResultINTEL {
7059                 result_type_id: Id(reader.next_u32()?),
7060                 result_id: Id(reader.next_u32()?),
7061                 payload: Id(reader.next_u32()?),
7062             },
7063             5734u16 => Self::SubgroupAvcMceConvertToRefPayloadINTEL {
7064                 result_type_id: Id(reader.next_u32()?),
7065                 result_id: Id(reader.next_u32()?),
7066                 payload: Id(reader.next_u32()?),
7067             },
7068             5735u16 => Self::SubgroupAvcMceConvertToRefResultINTEL {
7069                 result_type_id: Id(reader.next_u32()?),
7070                 result_id: Id(reader.next_u32()?),
7071                 payload: Id(reader.next_u32()?),
7072             },
7073             5736u16 => Self::SubgroupAvcMceConvertToSicPayloadINTEL {
7074                 result_type_id: Id(reader.next_u32()?),
7075                 result_id: Id(reader.next_u32()?),
7076                 payload: Id(reader.next_u32()?),
7077             },
7078             5737u16 => Self::SubgroupAvcMceConvertToSicResultINTEL {
7079                 result_type_id: Id(reader.next_u32()?),
7080                 result_id: Id(reader.next_u32()?),
7081                 payload: Id(reader.next_u32()?),
7082             },
7083             5738u16 => Self::SubgroupAvcMceGetMotionVectorsINTEL {
7084                 result_type_id: Id(reader.next_u32()?),
7085                 result_id: Id(reader.next_u32()?),
7086                 payload: Id(reader.next_u32()?),
7087             },
7088             5739u16 => Self::SubgroupAvcMceGetInterDistortionsINTEL {
7089                 result_type_id: Id(reader.next_u32()?),
7090                 result_id: Id(reader.next_u32()?),
7091                 payload: Id(reader.next_u32()?),
7092             },
7093             5740u16 => Self::SubgroupAvcMceGetBestInterDistortionsINTEL {
7094                 result_type_id: Id(reader.next_u32()?),
7095                 result_id: Id(reader.next_u32()?),
7096                 payload: Id(reader.next_u32()?),
7097             },
7098             5741u16 => Self::SubgroupAvcMceGetInterMajorShapeINTEL {
7099                 result_type_id: Id(reader.next_u32()?),
7100                 result_id: Id(reader.next_u32()?),
7101                 payload: Id(reader.next_u32()?),
7102             },
7103             5742u16 => Self::SubgroupAvcMceGetInterMinorShapeINTEL {
7104                 result_type_id: Id(reader.next_u32()?),
7105                 result_id: Id(reader.next_u32()?),
7106                 payload: Id(reader.next_u32()?),
7107             },
7108             5743u16 => Self::SubgroupAvcMceGetInterDirectionsINTEL {
7109                 result_type_id: Id(reader.next_u32()?),
7110                 result_id: Id(reader.next_u32()?),
7111                 payload: Id(reader.next_u32()?),
7112             },
7113             5744u16 => Self::SubgroupAvcMceGetInterMotionVectorCountINTEL {
7114                 result_type_id: Id(reader.next_u32()?),
7115                 result_id: Id(reader.next_u32()?),
7116                 payload: Id(reader.next_u32()?),
7117             },
7118             5745u16 => Self::SubgroupAvcMceGetInterReferenceIdsINTEL {
7119                 result_type_id: Id(reader.next_u32()?),
7120                 result_id: Id(reader.next_u32()?),
7121                 payload: Id(reader.next_u32()?),
7122             },
7123             5746u16 => Self::SubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL {
7124                 result_type_id: Id(reader.next_u32()?),
7125                 result_id: Id(reader.next_u32()?),
7126                 packed_reference_ids: Id(reader.next_u32()?),
7127                 packed_reference_parameter_field_polarities: Id(reader.next_u32()?),
7128                 payload: Id(reader.next_u32()?),
7129             },
7130             5747u16 => Self::SubgroupAvcImeInitializeINTEL {
7131                 result_type_id: Id(reader.next_u32()?),
7132                 result_id: Id(reader.next_u32()?),
7133                 src_coord: Id(reader.next_u32()?),
7134                 partition_mask: Id(reader.next_u32()?),
7135                 sad_adjustment: Id(reader.next_u32()?),
7136             },
7137             5748u16 => Self::SubgroupAvcImeSetSingleReferenceINTEL {
7138                 result_type_id: Id(reader.next_u32()?),
7139                 result_id: Id(reader.next_u32()?),
7140                 ref_offset: Id(reader.next_u32()?),
7141                 search_window_config: Id(reader.next_u32()?),
7142                 payload: Id(reader.next_u32()?),
7143             },
7144             5749u16 => Self::SubgroupAvcImeSetDualReferenceINTEL {
7145                 result_type_id: Id(reader.next_u32()?),
7146                 result_id: Id(reader.next_u32()?),
7147                 fwd_ref_offset: Id(reader.next_u32()?),
7148                 bwd_ref_offset: Id(reader.next_u32()?),
7149                 id_search_window_config: Id(reader.next_u32()?),
7150                 payload: Id(reader.next_u32()?),
7151             },
7152             5750u16 => Self::SubgroupAvcImeRefWindowSizeINTEL {
7153                 result_type_id: Id(reader.next_u32()?),
7154                 result_id: Id(reader.next_u32()?),
7155                 search_window_config: Id(reader.next_u32()?),
7156                 dual_ref: Id(reader.next_u32()?),
7157             },
7158             5751u16 => Self::SubgroupAvcImeAdjustRefOffsetINTEL {
7159                 result_type_id: Id(reader.next_u32()?),
7160                 result_id: Id(reader.next_u32()?),
7161                 ref_offset: Id(reader.next_u32()?),
7162                 src_coord: Id(reader.next_u32()?),
7163                 ref_window_size: Id(reader.next_u32()?),
7164                 image_size: Id(reader.next_u32()?),
7165             },
7166             5752u16 => Self::SubgroupAvcImeConvertToMcePayloadINTEL {
7167                 result_type_id: Id(reader.next_u32()?),
7168                 result_id: Id(reader.next_u32()?),
7169                 payload: Id(reader.next_u32()?),
7170             },
7171             5753u16 => Self::SubgroupAvcImeSetMaxMotionVectorCountINTEL {
7172                 result_type_id: Id(reader.next_u32()?),
7173                 result_id: Id(reader.next_u32()?),
7174                 max_motion_vector_count: Id(reader.next_u32()?),
7175                 payload: Id(reader.next_u32()?),
7176             },
7177             5754u16 => Self::SubgroupAvcImeSetUnidirectionalMixDisableINTEL {
7178                 result_type_id: Id(reader.next_u32()?),
7179                 result_id: Id(reader.next_u32()?),
7180                 payload: Id(reader.next_u32()?),
7181             },
7182             5755u16 => Self::SubgroupAvcImeSetEarlySearchTerminationThresholdINTEL {
7183                 result_type_id: Id(reader.next_u32()?),
7184                 result_id: Id(reader.next_u32()?),
7185                 threshold: Id(reader.next_u32()?),
7186                 payload: Id(reader.next_u32()?),
7187             },
7188             5756u16 => Self::SubgroupAvcImeSetWeightedSadINTEL {
7189                 result_type_id: Id(reader.next_u32()?),
7190                 result_id: Id(reader.next_u32()?),
7191                 packed_sad_weights: Id(reader.next_u32()?),
7192                 payload: Id(reader.next_u32()?),
7193             },
7194             5757u16 => Self::SubgroupAvcImeEvaluateWithSingleReferenceINTEL {
7195                 result_type_id: Id(reader.next_u32()?),
7196                 result_id: Id(reader.next_u32()?),
7197                 src_image: Id(reader.next_u32()?),
7198                 ref_image: Id(reader.next_u32()?),
7199                 payload: Id(reader.next_u32()?),
7200             },
7201             5758u16 => Self::SubgroupAvcImeEvaluateWithDualReferenceINTEL {
7202                 result_type_id: Id(reader.next_u32()?),
7203                 result_id: Id(reader.next_u32()?),
7204                 src_image: Id(reader.next_u32()?),
7205                 fwd_ref_image: Id(reader.next_u32()?),
7206                 bwd_ref_image: Id(reader.next_u32()?),
7207                 payload: Id(reader.next_u32()?),
7208             },
7209             5759u16 => Self::SubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL {
7210                 result_type_id: Id(reader.next_u32()?),
7211                 result_id: Id(reader.next_u32()?),
7212                 src_image: Id(reader.next_u32()?),
7213                 ref_image: Id(reader.next_u32()?),
7214                 payload: Id(reader.next_u32()?),
7215                 streamin_components: Id(reader.next_u32()?),
7216             },
7217             5760u16 => Self::SubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL {
7218                 result_type_id: Id(reader.next_u32()?),
7219                 result_id: Id(reader.next_u32()?),
7220                 src_image: Id(reader.next_u32()?),
7221                 fwd_ref_image: Id(reader.next_u32()?),
7222                 bwd_ref_image: Id(reader.next_u32()?),
7223                 payload: Id(reader.next_u32()?),
7224                 streamin_components: Id(reader.next_u32()?),
7225             },
7226             5761u16 => Self::SubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL {
7227                 result_type_id: Id(reader.next_u32()?),
7228                 result_id: Id(reader.next_u32()?),
7229                 src_image: Id(reader.next_u32()?),
7230                 ref_image: Id(reader.next_u32()?),
7231                 payload: Id(reader.next_u32()?),
7232             },
7233             5762u16 => Self::SubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL {
7234                 result_type_id: Id(reader.next_u32()?),
7235                 result_id: Id(reader.next_u32()?),
7236                 src_image: Id(reader.next_u32()?),
7237                 fwd_ref_image: Id(reader.next_u32()?),
7238                 bwd_ref_image: Id(reader.next_u32()?),
7239                 payload: Id(reader.next_u32()?),
7240             },
7241             5763u16 => Self::SubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL {
7242                 result_type_id: Id(reader.next_u32()?),
7243                 result_id: Id(reader.next_u32()?),
7244                 src_image: Id(reader.next_u32()?),
7245                 ref_image: Id(reader.next_u32()?),
7246                 payload: Id(reader.next_u32()?),
7247                 streamin_components: Id(reader.next_u32()?),
7248             },
7249             5764u16 => Self::SubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL {
7250                 result_type_id: Id(reader.next_u32()?),
7251                 result_id: Id(reader.next_u32()?),
7252                 src_image: Id(reader.next_u32()?),
7253                 fwd_ref_image: Id(reader.next_u32()?),
7254                 bwd_ref_image: Id(reader.next_u32()?),
7255                 payload: Id(reader.next_u32()?),
7256                 streamin_components: Id(reader.next_u32()?),
7257             },
7258             5765u16 => Self::SubgroupAvcImeConvertToMceResultINTEL {
7259                 result_type_id: Id(reader.next_u32()?),
7260                 result_id: Id(reader.next_u32()?),
7261                 payload: Id(reader.next_u32()?),
7262             },
7263             5766u16 => Self::SubgroupAvcImeGetSingleReferenceStreaminINTEL {
7264                 result_type_id: Id(reader.next_u32()?),
7265                 result_id: Id(reader.next_u32()?),
7266                 payload: Id(reader.next_u32()?),
7267             },
7268             5767u16 => Self::SubgroupAvcImeGetDualReferenceStreaminINTEL {
7269                 result_type_id: Id(reader.next_u32()?),
7270                 result_id: Id(reader.next_u32()?),
7271                 payload: Id(reader.next_u32()?),
7272             },
7273             5768u16 => Self::SubgroupAvcImeStripSingleReferenceStreamoutINTEL {
7274                 result_type_id: Id(reader.next_u32()?),
7275                 result_id: Id(reader.next_u32()?),
7276                 payload: Id(reader.next_u32()?),
7277             },
7278             5769u16 => Self::SubgroupAvcImeStripDualReferenceStreamoutINTEL {
7279                 result_type_id: Id(reader.next_u32()?),
7280                 result_id: Id(reader.next_u32()?),
7281                 payload: Id(reader.next_u32()?),
7282             },
7283             5770u16 => {
7284                 Self::SubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL {
7285                     result_type_id: Id(reader.next_u32()?),
7286                     result_id: Id(reader.next_u32()?),
7287                     payload: Id(reader.next_u32()?),
7288                     major_shape: Id(reader.next_u32()?),
7289                 }
7290             }
7291             5771u16 => Self::SubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL {
7292                 result_type_id: Id(reader.next_u32()?),
7293                 result_id: Id(reader.next_u32()?),
7294                 payload: Id(reader.next_u32()?),
7295                 major_shape: Id(reader.next_u32()?),
7296             },
7297             5772u16 => Self::SubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL {
7298                 result_type_id: Id(reader.next_u32()?),
7299                 result_id: Id(reader.next_u32()?),
7300                 payload: Id(reader.next_u32()?),
7301                 major_shape: Id(reader.next_u32()?),
7302             },
7303             5773u16 => Self::SubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL {
7304                 result_type_id: Id(reader.next_u32()?),
7305                 result_id: Id(reader.next_u32()?),
7306                 payload: Id(reader.next_u32()?),
7307                 major_shape: Id(reader.next_u32()?),
7308                 direction: Id(reader.next_u32()?),
7309             },
7310             5774u16 => Self::SubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL {
7311                 result_type_id: Id(reader.next_u32()?),
7312                 result_id: Id(reader.next_u32()?),
7313                 payload: Id(reader.next_u32()?),
7314                 major_shape: Id(reader.next_u32()?),
7315                 direction: Id(reader.next_u32()?),
7316             },
7317             5775u16 => Self::SubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL {
7318                 result_type_id: Id(reader.next_u32()?),
7319                 result_id: Id(reader.next_u32()?),
7320                 payload: Id(reader.next_u32()?),
7321                 major_shape: Id(reader.next_u32()?),
7322                 direction: Id(reader.next_u32()?),
7323             },
7324             5776u16 => Self::SubgroupAvcImeGetBorderReachedINTEL {
7325                 result_type_id: Id(reader.next_u32()?),
7326                 result_id: Id(reader.next_u32()?),
7327                 image_select: Id(reader.next_u32()?),
7328                 payload: Id(reader.next_u32()?),
7329             },
7330             5777u16 => Self::SubgroupAvcImeGetTruncatedSearchIndicationINTEL {
7331                 result_type_id: Id(reader.next_u32()?),
7332                 result_id: Id(reader.next_u32()?),
7333                 payload: Id(reader.next_u32()?),
7334             },
7335             5778u16 => Self::SubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL {
7336                 result_type_id: Id(reader.next_u32()?),
7337                 result_id: Id(reader.next_u32()?),
7338                 payload: Id(reader.next_u32()?),
7339             },
7340             5779u16 => Self::SubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL {
7341                 result_type_id: Id(reader.next_u32()?),
7342                 result_id: Id(reader.next_u32()?),
7343                 payload: Id(reader.next_u32()?),
7344             },
7345             5780u16 => Self::SubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL {
7346                 result_type_id: Id(reader.next_u32()?),
7347                 result_id: Id(reader.next_u32()?),
7348                 payload: Id(reader.next_u32()?),
7349             },
7350             5781u16 => Self::SubgroupAvcFmeInitializeINTEL {
7351                 result_type_id: Id(reader.next_u32()?),
7352                 result_id: Id(reader.next_u32()?),
7353                 src_coord: Id(reader.next_u32()?),
7354                 motion_vectors: Id(reader.next_u32()?),
7355                 major_shapes: Id(reader.next_u32()?),
7356                 minor_shapes: Id(reader.next_u32()?),
7357                 direction: Id(reader.next_u32()?),
7358                 pixel_resolution: Id(reader.next_u32()?),
7359                 sad_adjustment: Id(reader.next_u32()?),
7360             },
7361             5782u16 => Self::SubgroupAvcBmeInitializeINTEL {
7362                 result_type_id: Id(reader.next_u32()?),
7363                 result_id: Id(reader.next_u32()?),
7364                 src_coord: Id(reader.next_u32()?),
7365                 motion_vectors: Id(reader.next_u32()?),
7366                 major_shapes: Id(reader.next_u32()?),
7367                 minor_shapes: Id(reader.next_u32()?),
7368                 direction: Id(reader.next_u32()?),
7369                 pixel_resolution: Id(reader.next_u32()?),
7370                 bidirectional_weight: Id(reader.next_u32()?),
7371                 sad_adjustment: Id(reader.next_u32()?),
7372             },
7373             5783u16 => Self::SubgroupAvcRefConvertToMcePayloadINTEL {
7374                 result_type_id: Id(reader.next_u32()?),
7375                 result_id: Id(reader.next_u32()?),
7376                 payload: Id(reader.next_u32()?),
7377             },
7378             5784u16 => Self::SubgroupAvcRefSetBidirectionalMixDisableINTEL {
7379                 result_type_id: Id(reader.next_u32()?),
7380                 result_id: Id(reader.next_u32()?),
7381                 payload: Id(reader.next_u32()?),
7382             },
7383             5785u16 => Self::SubgroupAvcRefSetBilinearFilterEnableINTEL {
7384                 result_type_id: Id(reader.next_u32()?),
7385                 result_id: Id(reader.next_u32()?),
7386                 payload: Id(reader.next_u32()?),
7387             },
7388             5786u16 => Self::SubgroupAvcRefEvaluateWithSingleReferenceINTEL {
7389                 result_type_id: Id(reader.next_u32()?),
7390                 result_id: Id(reader.next_u32()?),
7391                 src_image: Id(reader.next_u32()?),
7392                 ref_image: Id(reader.next_u32()?),
7393                 payload: Id(reader.next_u32()?),
7394             },
7395             5787u16 => Self::SubgroupAvcRefEvaluateWithDualReferenceINTEL {
7396                 result_type_id: Id(reader.next_u32()?),
7397                 result_id: Id(reader.next_u32()?),
7398                 src_image: Id(reader.next_u32()?),
7399                 fwd_ref_image: Id(reader.next_u32()?),
7400                 bwd_ref_image: Id(reader.next_u32()?),
7401                 payload: Id(reader.next_u32()?),
7402             },
7403             5788u16 => Self::SubgroupAvcRefEvaluateWithMultiReferenceINTEL {
7404                 result_type_id: Id(reader.next_u32()?),
7405                 result_id: Id(reader.next_u32()?),
7406                 src_image: Id(reader.next_u32()?),
7407                 packed_reference_ids: Id(reader.next_u32()?),
7408                 payload: Id(reader.next_u32()?),
7409             },
7410             5789u16 => Self::SubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL {
7411                 result_type_id: Id(reader.next_u32()?),
7412                 result_id: Id(reader.next_u32()?),
7413                 src_image: Id(reader.next_u32()?),
7414                 packed_reference_ids: Id(reader.next_u32()?),
7415                 packed_reference_field_polarities: Id(reader.next_u32()?),
7416                 payload: Id(reader.next_u32()?),
7417             },
7418             5790u16 => Self::SubgroupAvcRefConvertToMceResultINTEL {
7419                 result_type_id: Id(reader.next_u32()?),
7420                 result_id: Id(reader.next_u32()?),
7421                 payload: Id(reader.next_u32()?),
7422             },
7423             5791u16 => Self::SubgroupAvcSicInitializeINTEL {
7424                 result_type_id: Id(reader.next_u32()?),
7425                 result_id: Id(reader.next_u32()?),
7426                 src_coord: Id(reader.next_u32()?),
7427             },
7428             5792u16 => Self::SubgroupAvcSicConfigureSkcINTEL {
7429                 result_type_id: Id(reader.next_u32()?),
7430                 result_id: Id(reader.next_u32()?),
7431                 skip_block_partition_type: Id(reader.next_u32()?),
7432                 skip_motion_vector_mask: Id(reader.next_u32()?),
7433                 motion_vectors: Id(reader.next_u32()?),
7434                 bidirectional_weight: Id(reader.next_u32()?),
7435                 sad_adjustment: Id(reader.next_u32()?),
7436                 payload: Id(reader.next_u32()?),
7437             },
7438             5793u16 => Self::SubgroupAvcSicConfigureIpeLumaINTEL {
7439                 result_type_id: Id(reader.next_u32()?),
7440                 result_id: Id(reader.next_u32()?),
7441                 luma_intra_partition_mask: Id(reader.next_u32()?),
7442                 intra_neighbour_availabilty: Id(reader.next_u32()?),
7443                 left_edge_luma_pixels: Id(reader.next_u32()?),
7444                 upper_left_corner_luma_pixel: Id(reader.next_u32()?),
7445                 upper_edge_luma_pixels: Id(reader.next_u32()?),
7446                 upper_right_edge_luma_pixels: Id(reader.next_u32()?),
7447                 sad_adjustment: Id(reader.next_u32()?),
7448                 payload: Id(reader.next_u32()?),
7449             },
7450             5794u16 => Self::SubgroupAvcSicConfigureIpeLumaChromaINTEL {
7451                 result_type_id: Id(reader.next_u32()?),
7452                 result_id: Id(reader.next_u32()?),
7453                 luma_intra_partition_mask: Id(reader.next_u32()?),
7454                 intra_neighbour_availabilty: Id(reader.next_u32()?),
7455                 left_edge_luma_pixels: Id(reader.next_u32()?),
7456                 upper_left_corner_luma_pixel: Id(reader.next_u32()?),
7457                 upper_edge_luma_pixels: Id(reader.next_u32()?),
7458                 upper_right_edge_luma_pixels: Id(reader.next_u32()?),
7459                 left_edge_chroma_pixels: Id(reader.next_u32()?),
7460                 upper_left_corner_chroma_pixel: Id(reader.next_u32()?),
7461                 upper_edge_chroma_pixels: Id(reader.next_u32()?),
7462                 sad_adjustment: Id(reader.next_u32()?),
7463                 payload: Id(reader.next_u32()?),
7464             },
7465             5795u16 => Self::SubgroupAvcSicGetMotionVectorMaskINTEL {
7466                 result_type_id: Id(reader.next_u32()?),
7467                 result_id: Id(reader.next_u32()?),
7468                 skip_block_partition_type: Id(reader.next_u32()?),
7469                 direction: Id(reader.next_u32()?),
7470             },
7471             5796u16 => Self::SubgroupAvcSicConvertToMcePayloadINTEL {
7472                 result_type_id: Id(reader.next_u32()?),
7473                 result_id: Id(reader.next_u32()?),
7474                 payload: Id(reader.next_u32()?),
7475             },
7476             5797u16 => Self::SubgroupAvcSicSetIntraLumaShapePenaltyINTEL {
7477                 result_type_id: Id(reader.next_u32()?),
7478                 result_id: Id(reader.next_u32()?),
7479                 packed_shape_penalty: Id(reader.next_u32()?),
7480                 payload: Id(reader.next_u32()?),
7481             },
7482             5798u16 => Self::SubgroupAvcSicSetIntraLumaModeCostFunctionINTEL {
7483                 result_type_id: Id(reader.next_u32()?),
7484                 result_id: Id(reader.next_u32()?),
7485                 luma_mode_penalty: Id(reader.next_u32()?),
7486                 luma_packed_neighbor_modes: Id(reader.next_u32()?),
7487                 luma_packed_non_dc_penalty: Id(reader.next_u32()?),
7488                 payload: Id(reader.next_u32()?),
7489             },
7490             5799u16 => Self::SubgroupAvcSicSetIntraChromaModeCostFunctionINTEL {
7491                 result_type_id: Id(reader.next_u32()?),
7492                 result_id: Id(reader.next_u32()?),
7493                 chroma_mode_base_penalty: Id(reader.next_u32()?),
7494                 payload: Id(reader.next_u32()?),
7495             },
7496             5800u16 => Self::SubgroupAvcSicSetBilinearFilterEnableINTEL {
7497                 result_type_id: Id(reader.next_u32()?),
7498                 result_id: Id(reader.next_u32()?),
7499                 payload: Id(reader.next_u32()?),
7500             },
7501             5801u16 => Self::SubgroupAvcSicSetSkcForwardTransformEnableINTEL {
7502                 result_type_id: Id(reader.next_u32()?),
7503                 result_id: Id(reader.next_u32()?),
7504                 packed_sad_coefficients: Id(reader.next_u32()?),
7505                 payload: Id(reader.next_u32()?),
7506             },
7507             5802u16 => Self::SubgroupAvcSicSetBlockBasedRawSkipSadINTEL {
7508                 result_type_id: Id(reader.next_u32()?),
7509                 result_id: Id(reader.next_u32()?),
7510                 block_based_skip_type: Id(reader.next_u32()?),
7511                 payload: Id(reader.next_u32()?),
7512             },
7513             5803u16 => Self::SubgroupAvcSicEvaluateIpeINTEL {
7514                 result_type_id: Id(reader.next_u32()?),
7515                 result_id: Id(reader.next_u32()?),
7516                 src_image: Id(reader.next_u32()?),
7517                 payload: Id(reader.next_u32()?),
7518             },
7519             5804u16 => Self::SubgroupAvcSicEvaluateWithSingleReferenceINTEL {
7520                 result_type_id: Id(reader.next_u32()?),
7521                 result_id: Id(reader.next_u32()?),
7522                 src_image: Id(reader.next_u32()?),
7523                 ref_image: Id(reader.next_u32()?),
7524                 payload: Id(reader.next_u32()?),
7525             },
7526             5805u16 => Self::SubgroupAvcSicEvaluateWithDualReferenceINTEL {
7527                 result_type_id: Id(reader.next_u32()?),
7528                 result_id: Id(reader.next_u32()?),
7529                 src_image: Id(reader.next_u32()?),
7530                 fwd_ref_image: Id(reader.next_u32()?),
7531                 bwd_ref_image: Id(reader.next_u32()?),
7532                 payload: Id(reader.next_u32()?),
7533             },
7534             5806u16 => Self::SubgroupAvcSicEvaluateWithMultiReferenceINTEL {
7535                 result_type_id: Id(reader.next_u32()?),
7536                 result_id: Id(reader.next_u32()?),
7537                 src_image: Id(reader.next_u32()?),
7538                 packed_reference_ids: Id(reader.next_u32()?),
7539                 payload: Id(reader.next_u32()?),
7540             },
7541             5807u16 => Self::SubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL {
7542                 result_type_id: Id(reader.next_u32()?),
7543                 result_id: Id(reader.next_u32()?),
7544                 src_image: Id(reader.next_u32()?),
7545                 packed_reference_ids: Id(reader.next_u32()?),
7546                 packed_reference_field_polarities: Id(reader.next_u32()?),
7547                 payload: Id(reader.next_u32()?),
7548             },
7549             5808u16 => Self::SubgroupAvcSicConvertToMceResultINTEL {
7550                 result_type_id: Id(reader.next_u32()?),
7551                 result_id: Id(reader.next_u32()?),
7552                 payload: Id(reader.next_u32()?),
7553             },
7554             5809u16 => Self::SubgroupAvcSicGetIpeLumaShapeINTEL {
7555                 result_type_id: Id(reader.next_u32()?),
7556                 result_id: Id(reader.next_u32()?),
7557                 payload: Id(reader.next_u32()?),
7558             },
7559             5810u16 => Self::SubgroupAvcSicGetBestIpeLumaDistortionINTEL {
7560                 result_type_id: Id(reader.next_u32()?),
7561                 result_id: Id(reader.next_u32()?),
7562                 payload: Id(reader.next_u32()?),
7563             },
7564             5811u16 => Self::SubgroupAvcSicGetBestIpeChromaDistortionINTEL {
7565                 result_type_id: Id(reader.next_u32()?),
7566                 result_id: Id(reader.next_u32()?),
7567                 payload: Id(reader.next_u32()?),
7568             },
7569             5812u16 => Self::SubgroupAvcSicGetPackedIpeLumaModesINTEL {
7570                 result_type_id: Id(reader.next_u32()?),
7571                 result_id: Id(reader.next_u32()?),
7572                 payload: Id(reader.next_u32()?),
7573             },
7574             5813u16 => Self::SubgroupAvcSicGetIpeChromaModeINTEL {
7575                 result_type_id: Id(reader.next_u32()?),
7576                 result_id: Id(reader.next_u32()?),
7577                 payload: Id(reader.next_u32()?),
7578             },
7579             5814u16 => Self::SubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL {
7580                 result_type_id: Id(reader.next_u32()?),
7581                 result_id: Id(reader.next_u32()?),
7582                 payload: Id(reader.next_u32()?),
7583             },
7584             5815u16 => Self::SubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL {
7585                 result_type_id: Id(reader.next_u32()?),
7586                 result_id: Id(reader.next_u32()?),
7587                 payload: Id(reader.next_u32()?),
7588             },
7589             5816u16 => Self::SubgroupAvcSicGetInterRawSadsINTEL {
7590                 result_type_id: Id(reader.next_u32()?),
7591                 result_id: Id(reader.next_u32()?),
7592                 payload: Id(reader.next_u32()?),
7593             },
7594             5818u16 => Self::VariableLengthArrayINTEL {
7595                 result_type_id: Id(reader.next_u32()?),
7596                 result_id: Id(reader.next_u32()?),
7597                 lenght: Id(reader.next_u32()?),
7598             },
7599             5819u16 => Self::SaveMemoryINTEL {
7600                 result_type_id: Id(reader.next_u32()?),
7601                 result_id: Id(reader.next_u32()?),
7602             },
7603             5820u16 => Self::RestoreMemoryINTEL {
7604                 ptr: Id(reader.next_u32()?),
7605             },
7606             5840u16 => Self::ArbitraryFloatSinCosPiINTEL {
7607                 result_type_id: Id(reader.next_u32()?),
7608                 result_id: Id(reader.next_u32()?),
7609                 a: Id(reader.next_u32()?),
7610                 m1: reader.next_u32()?,
7611                 mout: reader.next_u32()?,
7612                 from_sign: reader.next_u32()?,
7613                 enable_subnormals: reader.next_u32()?,
7614                 rounding_mode: reader.next_u32()?,
7615                 rounding_accuracy: reader.next_u32()?,
7616             },
7617             5841u16 => Self::ArbitraryFloatCastINTEL {
7618                 result_type_id: Id(reader.next_u32()?),
7619                 result_id: Id(reader.next_u32()?),
7620                 a: Id(reader.next_u32()?),
7621                 m1: reader.next_u32()?,
7622                 mout: reader.next_u32()?,
7623                 enable_subnormals: reader.next_u32()?,
7624                 rounding_mode: reader.next_u32()?,
7625                 rounding_accuracy: reader.next_u32()?,
7626             },
7627             5842u16 => Self::ArbitraryFloatCastFromIntINTEL {
7628                 result_type_id: Id(reader.next_u32()?),
7629                 result_id: Id(reader.next_u32()?),
7630                 a: Id(reader.next_u32()?),
7631                 mout: reader.next_u32()?,
7632                 from_sign: reader.next_u32()?,
7633                 enable_subnormals: reader.next_u32()?,
7634                 rounding_mode: reader.next_u32()?,
7635                 rounding_accuracy: reader.next_u32()?,
7636             },
7637             5843u16 => Self::ArbitraryFloatCastToIntINTEL {
7638                 result_type_id: Id(reader.next_u32()?),
7639                 result_id: Id(reader.next_u32()?),
7640                 a: Id(reader.next_u32()?),
7641                 m1: reader.next_u32()?,
7642                 enable_subnormals: reader.next_u32()?,
7643                 rounding_mode: reader.next_u32()?,
7644                 rounding_accuracy: reader.next_u32()?,
7645             },
7646             5846u16 => Self::ArbitraryFloatAddINTEL {
7647                 result_type_id: Id(reader.next_u32()?),
7648                 result_id: Id(reader.next_u32()?),
7649                 a: Id(reader.next_u32()?),
7650                 m1: reader.next_u32()?,
7651                 b: Id(reader.next_u32()?),
7652                 m2: reader.next_u32()?,
7653                 mout: reader.next_u32()?,
7654                 enable_subnormals: reader.next_u32()?,
7655                 rounding_mode: reader.next_u32()?,
7656                 rounding_accuracy: reader.next_u32()?,
7657             },
7658             5847u16 => Self::ArbitraryFloatSubINTEL {
7659                 result_type_id: Id(reader.next_u32()?),
7660                 result_id: Id(reader.next_u32()?),
7661                 a: Id(reader.next_u32()?),
7662                 m1: reader.next_u32()?,
7663                 b: Id(reader.next_u32()?),
7664                 m2: reader.next_u32()?,
7665                 mout: reader.next_u32()?,
7666                 enable_subnormals: reader.next_u32()?,
7667                 rounding_mode: reader.next_u32()?,
7668                 rounding_accuracy: reader.next_u32()?,
7669             },
7670             5848u16 => Self::ArbitraryFloatMulINTEL {
7671                 result_type_id: Id(reader.next_u32()?),
7672                 result_id: Id(reader.next_u32()?),
7673                 a: Id(reader.next_u32()?),
7674                 m1: reader.next_u32()?,
7675                 b: Id(reader.next_u32()?),
7676                 m2: reader.next_u32()?,
7677                 mout: reader.next_u32()?,
7678                 enable_subnormals: reader.next_u32()?,
7679                 rounding_mode: reader.next_u32()?,
7680                 rounding_accuracy: reader.next_u32()?,
7681             },
7682             5849u16 => Self::ArbitraryFloatDivINTEL {
7683                 result_type_id: Id(reader.next_u32()?),
7684                 result_id: Id(reader.next_u32()?),
7685                 a: Id(reader.next_u32()?),
7686                 m1: reader.next_u32()?,
7687                 b: Id(reader.next_u32()?),
7688                 m2: reader.next_u32()?,
7689                 mout: reader.next_u32()?,
7690                 enable_subnormals: reader.next_u32()?,
7691                 rounding_mode: reader.next_u32()?,
7692                 rounding_accuracy: reader.next_u32()?,
7693             },
7694             5850u16 => Self::ArbitraryFloatGTINTEL {
7695                 result_type_id: Id(reader.next_u32()?),
7696                 result_id: Id(reader.next_u32()?),
7697                 a: Id(reader.next_u32()?),
7698                 m1: reader.next_u32()?,
7699                 b: Id(reader.next_u32()?),
7700                 m2: reader.next_u32()?,
7701             },
7702             5851u16 => Self::ArbitraryFloatGEINTEL {
7703                 result_type_id: Id(reader.next_u32()?),
7704                 result_id: Id(reader.next_u32()?),
7705                 a: Id(reader.next_u32()?),
7706                 m1: reader.next_u32()?,
7707                 b: Id(reader.next_u32()?),
7708                 m2: reader.next_u32()?,
7709             },
7710             5852u16 => Self::ArbitraryFloatLTINTEL {
7711                 result_type_id: Id(reader.next_u32()?),
7712                 result_id: Id(reader.next_u32()?),
7713                 a: Id(reader.next_u32()?),
7714                 m1: reader.next_u32()?,
7715                 b: Id(reader.next_u32()?),
7716                 m2: reader.next_u32()?,
7717             },
7718             5853u16 => Self::ArbitraryFloatLEINTEL {
7719                 result_type_id: Id(reader.next_u32()?),
7720                 result_id: Id(reader.next_u32()?),
7721                 a: Id(reader.next_u32()?),
7722                 m1: reader.next_u32()?,
7723                 b: Id(reader.next_u32()?),
7724                 m2: reader.next_u32()?,
7725             },
7726             5854u16 => Self::ArbitraryFloatEQINTEL {
7727                 result_type_id: Id(reader.next_u32()?),
7728                 result_id: Id(reader.next_u32()?),
7729                 a: Id(reader.next_u32()?),
7730                 m1: reader.next_u32()?,
7731                 b: Id(reader.next_u32()?),
7732                 m2: reader.next_u32()?,
7733             },
7734             5855u16 => Self::ArbitraryFloatRecipINTEL {
7735                 result_type_id: Id(reader.next_u32()?),
7736                 result_id: Id(reader.next_u32()?),
7737                 a: Id(reader.next_u32()?),
7738                 m1: reader.next_u32()?,
7739                 mout: reader.next_u32()?,
7740                 enable_subnormals: reader.next_u32()?,
7741                 rounding_mode: reader.next_u32()?,
7742                 rounding_accuracy: reader.next_u32()?,
7743             },
7744             5856u16 => Self::ArbitraryFloatRSqrtINTEL {
7745                 result_type_id: Id(reader.next_u32()?),
7746                 result_id: Id(reader.next_u32()?),
7747                 a: Id(reader.next_u32()?),
7748                 m1: reader.next_u32()?,
7749                 mout: reader.next_u32()?,
7750                 enable_subnormals: reader.next_u32()?,
7751                 rounding_mode: reader.next_u32()?,
7752                 rounding_accuracy: reader.next_u32()?,
7753             },
7754             5857u16 => Self::ArbitraryFloatCbrtINTEL {
7755                 result_type_id: Id(reader.next_u32()?),
7756                 result_id: Id(reader.next_u32()?),
7757                 a: Id(reader.next_u32()?),
7758                 m1: reader.next_u32()?,
7759                 mout: reader.next_u32()?,
7760                 enable_subnormals: reader.next_u32()?,
7761                 rounding_mode: reader.next_u32()?,
7762                 rounding_accuracy: reader.next_u32()?,
7763             },
7764             5858u16 => Self::ArbitraryFloatHypotINTEL {
7765                 result_type_id: Id(reader.next_u32()?),
7766                 result_id: Id(reader.next_u32()?),
7767                 a: Id(reader.next_u32()?),
7768                 m1: reader.next_u32()?,
7769                 b: Id(reader.next_u32()?),
7770                 m2: reader.next_u32()?,
7771                 mout: reader.next_u32()?,
7772                 enable_subnormals: reader.next_u32()?,
7773                 rounding_mode: reader.next_u32()?,
7774                 rounding_accuracy: reader.next_u32()?,
7775             },
7776             5859u16 => Self::ArbitraryFloatSqrtINTEL {
7777                 result_type_id: Id(reader.next_u32()?),
7778                 result_id: Id(reader.next_u32()?),
7779                 a: Id(reader.next_u32()?),
7780                 m1: reader.next_u32()?,
7781                 mout: reader.next_u32()?,
7782                 enable_subnormals: reader.next_u32()?,
7783                 rounding_mode: reader.next_u32()?,
7784                 rounding_accuracy: reader.next_u32()?,
7785             },
7786             5860u16 => Self::ArbitraryFloatLogINTEL {
7787                 result_type_id: Id(reader.next_u32()?),
7788                 result_id: Id(reader.next_u32()?),
7789                 a: Id(reader.next_u32()?),
7790                 m1: reader.next_u32()?,
7791                 mout: reader.next_u32()?,
7792                 enable_subnormals: reader.next_u32()?,
7793                 rounding_mode: reader.next_u32()?,
7794                 rounding_accuracy: reader.next_u32()?,
7795             },
7796             5861u16 => Self::ArbitraryFloatLog2INTEL {
7797                 result_type_id: Id(reader.next_u32()?),
7798                 result_id: Id(reader.next_u32()?),
7799                 a: Id(reader.next_u32()?),
7800                 m1: reader.next_u32()?,
7801                 mout: reader.next_u32()?,
7802                 enable_subnormals: reader.next_u32()?,
7803                 rounding_mode: reader.next_u32()?,
7804                 rounding_accuracy: reader.next_u32()?,
7805             },
7806             5862u16 => Self::ArbitraryFloatLog10INTEL {
7807                 result_type_id: Id(reader.next_u32()?),
7808                 result_id: Id(reader.next_u32()?),
7809                 a: Id(reader.next_u32()?),
7810                 m1: reader.next_u32()?,
7811                 mout: reader.next_u32()?,
7812                 enable_subnormals: reader.next_u32()?,
7813                 rounding_mode: reader.next_u32()?,
7814                 rounding_accuracy: reader.next_u32()?,
7815             },
7816             5863u16 => Self::ArbitraryFloatLog1pINTEL {
7817                 result_type_id: Id(reader.next_u32()?),
7818                 result_id: Id(reader.next_u32()?),
7819                 a: Id(reader.next_u32()?),
7820                 m1: reader.next_u32()?,
7821                 mout: reader.next_u32()?,
7822                 enable_subnormals: reader.next_u32()?,
7823                 rounding_mode: reader.next_u32()?,
7824                 rounding_accuracy: reader.next_u32()?,
7825             },
7826             5864u16 => Self::ArbitraryFloatExpINTEL {
7827                 result_type_id: Id(reader.next_u32()?),
7828                 result_id: Id(reader.next_u32()?),
7829                 a: Id(reader.next_u32()?),
7830                 m1: reader.next_u32()?,
7831                 mout: reader.next_u32()?,
7832                 enable_subnormals: reader.next_u32()?,
7833                 rounding_mode: reader.next_u32()?,
7834                 rounding_accuracy: reader.next_u32()?,
7835             },
7836             5865u16 => Self::ArbitraryFloatExp2INTEL {
7837                 result_type_id: Id(reader.next_u32()?),
7838                 result_id: Id(reader.next_u32()?),
7839                 a: Id(reader.next_u32()?),
7840                 m1: reader.next_u32()?,
7841                 mout: reader.next_u32()?,
7842                 enable_subnormals: reader.next_u32()?,
7843                 rounding_mode: reader.next_u32()?,
7844                 rounding_accuracy: reader.next_u32()?,
7845             },
7846             5866u16 => Self::ArbitraryFloatExp10INTEL {
7847                 result_type_id: Id(reader.next_u32()?),
7848                 result_id: Id(reader.next_u32()?),
7849                 a: Id(reader.next_u32()?),
7850                 m1: reader.next_u32()?,
7851                 mout: reader.next_u32()?,
7852                 enable_subnormals: reader.next_u32()?,
7853                 rounding_mode: reader.next_u32()?,
7854                 rounding_accuracy: reader.next_u32()?,
7855             },
7856             5867u16 => Self::ArbitraryFloatExpm1INTEL {
7857                 result_type_id: Id(reader.next_u32()?),
7858                 result_id: Id(reader.next_u32()?),
7859                 a: Id(reader.next_u32()?),
7860                 m1: reader.next_u32()?,
7861                 mout: reader.next_u32()?,
7862                 enable_subnormals: reader.next_u32()?,
7863                 rounding_mode: reader.next_u32()?,
7864                 rounding_accuracy: reader.next_u32()?,
7865             },
7866             5868u16 => Self::ArbitraryFloatSinINTEL {
7867                 result_type_id: Id(reader.next_u32()?),
7868                 result_id: Id(reader.next_u32()?),
7869                 a: Id(reader.next_u32()?),
7870                 m1: reader.next_u32()?,
7871                 mout: reader.next_u32()?,
7872                 enable_subnormals: reader.next_u32()?,
7873                 rounding_mode: reader.next_u32()?,
7874                 rounding_accuracy: reader.next_u32()?,
7875             },
7876             5869u16 => Self::ArbitraryFloatCosINTEL {
7877                 result_type_id: Id(reader.next_u32()?),
7878                 result_id: Id(reader.next_u32()?),
7879                 a: Id(reader.next_u32()?),
7880                 m1: reader.next_u32()?,
7881                 mout: reader.next_u32()?,
7882                 enable_subnormals: reader.next_u32()?,
7883                 rounding_mode: reader.next_u32()?,
7884                 rounding_accuracy: reader.next_u32()?,
7885             },
7886             5870u16 => Self::ArbitraryFloatSinCosINTEL {
7887                 result_type_id: Id(reader.next_u32()?),
7888                 result_id: Id(reader.next_u32()?),
7889                 a: Id(reader.next_u32()?),
7890                 m1: reader.next_u32()?,
7891                 mout: reader.next_u32()?,
7892                 enable_subnormals: reader.next_u32()?,
7893                 rounding_mode: reader.next_u32()?,
7894                 rounding_accuracy: reader.next_u32()?,
7895             },
7896             5871u16 => Self::ArbitraryFloatSinPiINTEL {
7897                 result_type_id: Id(reader.next_u32()?),
7898                 result_id: Id(reader.next_u32()?),
7899                 a: Id(reader.next_u32()?),
7900                 m1: reader.next_u32()?,
7901                 mout: reader.next_u32()?,
7902                 enable_subnormals: reader.next_u32()?,
7903                 rounding_mode: reader.next_u32()?,
7904                 rounding_accuracy: reader.next_u32()?,
7905             },
7906             5872u16 => Self::ArbitraryFloatCosPiINTEL {
7907                 result_type_id: Id(reader.next_u32()?),
7908                 result_id: Id(reader.next_u32()?),
7909                 a: Id(reader.next_u32()?),
7910                 m1: reader.next_u32()?,
7911                 mout: reader.next_u32()?,
7912                 enable_subnormals: reader.next_u32()?,
7913                 rounding_mode: reader.next_u32()?,
7914                 rounding_accuracy: reader.next_u32()?,
7915             },
7916             5873u16 => Self::ArbitraryFloatASinINTEL {
7917                 result_type_id: Id(reader.next_u32()?),
7918                 result_id: Id(reader.next_u32()?),
7919                 a: Id(reader.next_u32()?),
7920                 m1: reader.next_u32()?,
7921                 mout: reader.next_u32()?,
7922                 enable_subnormals: reader.next_u32()?,
7923                 rounding_mode: reader.next_u32()?,
7924                 rounding_accuracy: reader.next_u32()?,
7925             },
7926             5874u16 => Self::ArbitraryFloatASinPiINTEL {
7927                 result_type_id: Id(reader.next_u32()?),
7928                 result_id: Id(reader.next_u32()?),
7929                 a: Id(reader.next_u32()?),
7930                 m1: reader.next_u32()?,
7931                 mout: reader.next_u32()?,
7932                 enable_subnormals: reader.next_u32()?,
7933                 rounding_mode: reader.next_u32()?,
7934                 rounding_accuracy: reader.next_u32()?,
7935             },
7936             5875u16 => Self::ArbitraryFloatACosINTEL {
7937                 result_type_id: Id(reader.next_u32()?),
7938                 result_id: Id(reader.next_u32()?),
7939                 a: Id(reader.next_u32()?),
7940                 m1: reader.next_u32()?,
7941                 mout: reader.next_u32()?,
7942                 enable_subnormals: reader.next_u32()?,
7943                 rounding_mode: reader.next_u32()?,
7944                 rounding_accuracy: reader.next_u32()?,
7945             },
7946             5876u16 => Self::ArbitraryFloatACosPiINTEL {
7947                 result_type_id: Id(reader.next_u32()?),
7948                 result_id: Id(reader.next_u32()?),
7949                 a: Id(reader.next_u32()?),
7950                 m1: reader.next_u32()?,
7951                 mout: reader.next_u32()?,
7952                 enable_subnormals: reader.next_u32()?,
7953                 rounding_mode: reader.next_u32()?,
7954                 rounding_accuracy: reader.next_u32()?,
7955             },
7956             5877u16 => Self::ArbitraryFloatATanINTEL {
7957                 result_type_id: Id(reader.next_u32()?),
7958                 result_id: Id(reader.next_u32()?),
7959                 a: Id(reader.next_u32()?),
7960                 m1: reader.next_u32()?,
7961                 mout: reader.next_u32()?,
7962                 enable_subnormals: reader.next_u32()?,
7963                 rounding_mode: reader.next_u32()?,
7964                 rounding_accuracy: reader.next_u32()?,
7965             },
7966             5878u16 => Self::ArbitraryFloatATanPiINTEL {
7967                 result_type_id: Id(reader.next_u32()?),
7968                 result_id: Id(reader.next_u32()?),
7969                 a: Id(reader.next_u32()?),
7970                 m1: reader.next_u32()?,
7971                 mout: reader.next_u32()?,
7972                 enable_subnormals: reader.next_u32()?,
7973                 rounding_mode: reader.next_u32()?,
7974                 rounding_accuracy: reader.next_u32()?,
7975             },
7976             5879u16 => Self::ArbitraryFloatATan2INTEL {
7977                 result_type_id: Id(reader.next_u32()?),
7978                 result_id: Id(reader.next_u32()?),
7979                 a: Id(reader.next_u32()?),
7980                 m1: reader.next_u32()?,
7981                 b: Id(reader.next_u32()?),
7982                 m2: reader.next_u32()?,
7983                 mout: reader.next_u32()?,
7984                 enable_subnormals: reader.next_u32()?,
7985                 rounding_mode: reader.next_u32()?,
7986                 rounding_accuracy: reader.next_u32()?,
7987             },
7988             5880u16 => Self::ArbitraryFloatPowINTEL {
7989                 result_type_id: Id(reader.next_u32()?),
7990                 result_id: Id(reader.next_u32()?),
7991                 a: Id(reader.next_u32()?),
7992                 m1: reader.next_u32()?,
7993                 b: Id(reader.next_u32()?),
7994                 m2: reader.next_u32()?,
7995                 mout: reader.next_u32()?,
7996                 enable_subnormals: reader.next_u32()?,
7997                 rounding_mode: reader.next_u32()?,
7998                 rounding_accuracy: reader.next_u32()?,
7999             },
8000             5881u16 => Self::ArbitraryFloatPowRINTEL {
8001                 result_type_id: Id(reader.next_u32()?),
8002                 result_id: Id(reader.next_u32()?),
8003                 a: Id(reader.next_u32()?),
8004                 m1: reader.next_u32()?,
8005                 b: Id(reader.next_u32()?),
8006                 m2: reader.next_u32()?,
8007                 mout: reader.next_u32()?,
8008                 enable_subnormals: reader.next_u32()?,
8009                 rounding_mode: reader.next_u32()?,
8010                 rounding_accuracy: reader.next_u32()?,
8011             },
8012             5882u16 => Self::ArbitraryFloatPowNINTEL {
8013                 result_type_id: Id(reader.next_u32()?),
8014                 result_id: Id(reader.next_u32()?),
8015                 a: Id(reader.next_u32()?),
8016                 m1: reader.next_u32()?,
8017                 b: Id(reader.next_u32()?),
8018                 mout: reader.next_u32()?,
8019                 enable_subnormals: reader.next_u32()?,
8020                 rounding_mode: reader.next_u32()?,
8021                 rounding_accuracy: reader.next_u32()?,
8022             },
8023             5887u16 => Self::LoopControlINTEL {
8024                 loop_control_parameters: {
8025                     let mut vec = Vec::new();
8026                     while !reader.is_empty() {
8027                         vec.push(reader.next_u32()?);
8028                     }
8029                     vec
8030                 },
8031             },
8032             5923u16 => Self::FixedSqrtINTEL {
8033                 result_type_id: Id(reader.next_u32()?),
8034                 result_id: Id(reader.next_u32()?),
8035                 input_type: Id(reader.next_u32()?),
8036                 input: Id(reader.next_u32()?),
8037                 s: reader.next_u32()?,
8038                 i: reader.next_u32()?,
8039                 r_i: reader.next_u32()?,
8040                 q: reader.next_u32()?,
8041                 o: reader.next_u32()?,
8042             },
8043             5924u16 => Self::FixedRecipINTEL {
8044                 result_type_id: Id(reader.next_u32()?),
8045                 result_id: Id(reader.next_u32()?),
8046                 input_type: Id(reader.next_u32()?),
8047                 input: Id(reader.next_u32()?),
8048                 s: reader.next_u32()?,
8049                 i: reader.next_u32()?,
8050                 r_i: reader.next_u32()?,
8051                 q: reader.next_u32()?,
8052                 o: reader.next_u32()?,
8053             },
8054             5925u16 => Self::FixedRsqrtINTEL {
8055                 result_type_id: Id(reader.next_u32()?),
8056                 result_id: Id(reader.next_u32()?),
8057                 input_type: Id(reader.next_u32()?),
8058                 input: Id(reader.next_u32()?),
8059                 s: reader.next_u32()?,
8060                 i: reader.next_u32()?,
8061                 r_i: reader.next_u32()?,
8062                 q: reader.next_u32()?,
8063                 o: reader.next_u32()?,
8064             },
8065             5926u16 => Self::FixedSinINTEL {
8066                 result_type_id: Id(reader.next_u32()?),
8067                 result_id: Id(reader.next_u32()?),
8068                 input_type: Id(reader.next_u32()?),
8069                 input: Id(reader.next_u32()?),
8070                 s: reader.next_u32()?,
8071                 i: reader.next_u32()?,
8072                 r_i: reader.next_u32()?,
8073                 q: reader.next_u32()?,
8074                 o: reader.next_u32()?,
8075             },
8076             5927u16 => Self::FixedCosINTEL {
8077                 result_type_id: Id(reader.next_u32()?),
8078                 result_id: Id(reader.next_u32()?),
8079                 input_type: Id(reader.next_u32()?),
8080                 input: Id(reader.next_u32()?),
8081                 s: reader.next_u32()?,
8082                 i: reader.next_u32()?,
8083                 r_i: reader.next_u32()?,
8084                 q: reader.next_u32()?,
8085                 o: reader.next_u32()?,
8086             },
8087             5928u16 => Self::FixedSinCosINTEL {
8088                 result_type_id: Id(reader.next_u32()?),
8089                 result_id: Id(reader.next_u32()?),
8090                 input_type: Id(reader.next_u32()?),
8091                 input: Id(reader.next_u32()?),
8092                 s: reader.next_u32()?,
8093                 i: reader.next_u32()?,
8094                 r_i: reader.next_u32()?,
8095                 q: reader.next_u32()?,
8096                 o: reader.next_u32()?,
8097             },
8098             5929u16 => Self::FixedSinPiINTEL {
8099                 result_type_id: Id(reader.next_u32()?),
8100                 result_id: Id(reader.next_u32()?),
8101                 input_type: Id(reader.next_u32()?),
8102                 input: Id(reader.next_u32()?),
8103                 s: reader.next_u32()?,
8104                 i: reader.next_u32()?,
8105                 r_i: reader.next_u32()?,
8106                 q: reader.next_u32()?,
8107                 o: reader.next_u32()?,
8108             },
8109             5930u16 => Self::FixedCosPiINTEL {
8110                 result_type_id: Id(reader.next_u32()?),
8111                 result_id: Id(reader.next_u32()?),
8112                 input_type: Id(reader.next_u32()?),
8113                 input: Id(reader.next_u32()?),
8114                 s: reader.next_u32()?,
8115                 i: reader.next_u32()?,
8116                 r_i: reader.next_u32()?,
8117                 q: reader.next_u32()?,
8118                 o: reader.next_u32()?,
8119             },
8120             5931u16 => Self::FixedSinCosPiINTEL {
8121                 result_type_id: Id(reader.next_u32()?),
8122                 result_id: Id(reader.next_u32()?),
8123                 input_type: Id(reader.next_u32()?),
8124                 input: Id(reader.next_u32()?),
8125                 s: reader.next_u32()?,
8126                 i: reader.next_u32()?,
8127                 r_i: reader.next_u32()?,
8128                 q: reader.next_u32()?,
8129                 o: reader.next_u32()?,
8130             },
8131             5932u16 => Self::FixedLogINTEL {
8132                 result_type_id: Id(reader.next_u32()?),
8133                 result_id: Id(reader.next_u32()?),
8134                 input_type: Id(reader.next_u32()?),
8135                 input: Id(reader.next_u32()?),
8136                 s: reader.next_u32()?,
8137                 i: reader.next_u32()?,
8138                 r_i: reader.next_u32()?,
8139                 q: reader.next_u32()?,
8140                 o: reader.next_u32()?,
8141             },
8142             5933u16 => Self::FixedExpINTEL {
8143                 result_type_id: Id(reader.next_u32()?),
8144                 result_id: Id(reader.next_u32()?),
8145                 input_type: Id(reader.next_u32()?),
8146                 input: Id(reader.next_u32()?),
8147                 s: reader.next_u32()?,
8148                 i: reader.next_u32()?,
8149                 r_i: reader.next_u32()?,
8150                 q: reader.next_u32()?,
8151                 o: reader.next_u32()?,
8152             },
8153             5934u16 => Self::PtrCastToCrossWorkgroupINTEL {
8154                 result_type_id: Id(reader.next_u32()?),
8155                 result_id: Id(reader.next_u32()?),
8156                 pointer: Id(reader.next_u32()?),
8157             },
8158             5938u16 => Self::CrossWorkgroupCastToPtrINTEL {
8159                 result_type_id: Id(reader.next_u32()?),
8160                 result_id: Id(reader.next_u32()?),
8161                 pointer: Id(reader.next_u32()?),
8162             },
8163             5946u16 => Self::ReadPipeBlockingINTEL {
8164                 result_type_id: Id(reader.next_u32()?),
8165                 result_id: Id(reader.next_u32()?),
8166                 packet_size: Id(reader.next_u32()?),
8167                 packet_alignment: Id(reader.next_u32()?),
8168             },
8169             5947u16 => Self::WritePipeBlockingINTEL {
8170                 result_type_id: Id(reader.next_u32()?),
8171                 result_id: Id(reader.next_u32()?),
8172                 packet_size: Id(reader.next_u32()?),
8173                 packet_alignment: Id(reader.next_u32()?),
8174             },
8175             5949u16 => Self::FPGARegINTEL {
8176                 result_type_id: Id(reader.next_u32()?),
8177                 result_id: Id(reader.next_u32()?),
8178                 result: Id(reader.next_u32()?),
8179                 input: Id(reader.next_u32()?),
8180             },
8181             6016u16 => Self::RayQueryGetRayTMinKHR {
8182                 result_type_id: Id(reader.next_u32()?),
8183                 result_id: Id(reader.next_u32()?),
8184                 ray_query: Id(reader.next_u32()?),
8185             },
8186             6017u16 => Self::RayQueryGetRayFlagsKHR {
8187                 result_type_id: Id(reader.next_u32()?),
8188                 result_id: Id(reader.next_u32()?),
8189                 ray_query: Id(reader.next_u32()?),
8190             },
8191             6018u16 => Self::RayQueryGetIntersectionTKHR {
8192                 result_type_id: Id(reader.next_u32()?),
8193                 result_id: Id(reader.next_u32()?),
8194                 ray_query: Id(reader.next_u32()?),
8195                 intersection: Id(reader.next_u32()?),
8196             },
8197             6019u16 => Self::RayQueryGetIntersectionInstanceCustomIndexKHR {
8198                 result_type_id: Id(reader.next_u32()?),
8199                 result_id: Id(reader.next_u32()?),
8200                 ray_query: Id(reader.next_u32()?),
8201                 intersection: Id(reader.next_u32()?),
8202             },
8203             6020u16 => Self::RayQueryGetIntersectionInstanceIdKHR {
8204                 result_type_id: Id(reader.next_u32()?),
8205                 result_id: Id(reader.next_u32()?),
8206                 ray_query: Id(reader.next_u32()?),
8207                 intersection: Id(reader.next_u32()?),
8208             },
8209             6021u16 => Self::RayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR {
8210                 result_type_id: Id(reader.next_u32()?),
8211                 result_id: Id(reader.next_u32()?),
8212                 ray_query: Id(reader.next_u32()?),
8213                 intersection: Id(reader.next_u32()?),
8214             },
8215             6022u16 => Self::RayQueryGetIntersectionGeometryIndexKHR {
8216                 result_type_id: Id(reader.next_u32()?),
8217                 result_id: Id(reader.next_u32()?),
8218                 ray_query: Id(reader.next_u32()?),
8219                 intersection: Id(reader.next_u32()?),
8220             },
8221             6023u16 => Self::RayQueryGetIntersectionPrimitiveIndexKHR {
8222                 result_type_id: Id(reader.next_u32()?),
8223                 result_id: Id(reader.next_u32()?),
8224                 ray_query: Id(reader.next_u32()?),
8225                 intersection: Id(reader.next_u32()?),
8226             },
8227             6024u16 => Self::RayQueryGetIntersectionBarycentricsKHR {
8228                 result_type_id: Id(reader.next_u32()?),
8229                 result_id: Id(reader.next_u32()?),
8230                 ray_query: Id(reader.next_u32()?),
8231                 intersection: Id(reader.next_u32()?),
8232             },
8233             6025u16 => Self::RayQueryGetIntersectionFrontFaceKHR {
8234                 result_type_id: Id(reader.next_u32()?),
8235                 result_id: Id(reader.next_u32()?),
8236                 ray_query: Id(reader.next_u32()?),
8237                 intersection: Id(reader.next_u32()?),
8238             },
8239             6026u16 => Self::RayQueryGetIntersectionCandidateAABBOpaqueKHR {
8240                 result_type_id: Id(reader.next_u32()?),
8241                 result_id: Id(reader.next_u32()?),
8242                 ray_query: Id(reader.next_u32()?),
8243             },
8244             6027u16 => Self::RayQueryGetIntersectionObjectRayDirectionKHR {
8245                 result_type_id: Id(reader.next_u32()?),
8246                 result_id: Id(reader.next_u32()?),
8247                 ray_query: Id(reader.next_u32()?),
8248                 intersection: Id(reader.next_u32()?),
8249             },
8250             6028u16 => Self::RayQueryGetIntersectionObjectRayOriginKHR {
8251                 result_type_id: Id(reader.next_u32()?),
8252                 result_id: Id(reader.next_u32()?),
8253                 ray_query: Id(reader.next_u32()?),
8254                 intersection: Id(reader.next_u32()?),
8255             },
8256             6029u16 => Self::RayQueryGetWorldRayDirectionKHR {
8257                 result_type_id: Id(reader.next_u32()?),
8258                 result_id: Id(reader.next_u32()?),
8259                 ray_query: Id(reader.next_u32()?),
8260             },
8261             6030u16 => Self::RayQueryGetWorldRayOriginKHR {
8262                 result_type_id: Id(reader.next_u32()?),
8263                 result_id: Id(reader.next_u32()?),
8264                 ray_query: Id(reader.next_u32()?),
8265             },
8266             6031u16 => Self::RayQueryGetIntersectionObjectToWorldKHR {
8267                 result_type_id: Id(reader.next_u32()?),
8268                 result_id: Id(reader.next_u32()?),
8269                 ray_query: Id(reader.next_u32()?),
8270                 intersection: Id(reader.next_u32()?),
8271             },
8272             6032u16 => Self::RayQueryGetIntersectionWorldToObjectKHR {
8273                 result_type_id: Id(reader.next_u32()?),
8274                 result_id: Id(reader.next_u32()?),
8275                 ray_query: Id(reader.next_u32()?),
8276                 intersection: Id(reader.next_u32()?),
8277             },
8278             6035u16 => Self::AtomicFAddEXT {
8279                 result_type_id: Id(reader.next_u32()?),
8280                 result_id: Id(reader.next_u32()?),
8281                 pointer: Id(reader.next_u32()?),
8282                 memory: Id(reader.next_u32()?),
8283                 semantics: Id(reader.next_u32()?),
8284                 value: Id(reader.next_u32()?),
8285             },
8286             6086u16 => Self::TypeBufferSurfaceINTEL {
8287                 result_id: Id(reader.next_u32()?),
8288                 access_qualifier: AccessQualifier::parse(reader)?,
8289             },
8290             6090u16 => Self::TypeStructContinuedINTEL {
8291                 member_types: {
8292                     let mut vec = Vec::new();
8293                     while !reader.is_empty() {
8294                         vec.push(Id(reader.next_u32()?));
8295                     }
8296                     vec
8297                 },
8298             },
8299             6091u16 => Self::ConstantCompositeContinuedINTEL {
8300                 constituents: {
8301                     let mut vec = Vec::new();
8302                     while !reader.is_empty() {
8303                         vec.push(Id(reader.next_u32()?));
8304                     }
8305                     vec
8306                 },
8307             },
8308             6092u16 => Self::SpecConstantCompositeContinuedINTEL {
8309                 constituents: {
8310                     let mut vec = Vec::new();
8311                     while !reader.is_empty() {
8312                         vec.push(Id(reader.next_u32()?));
8313                     }
8314                     vec
8315                 },
8316             },
8317             opcode => return Err(reader.map_err(ParseErrors::UnknownOpcode(opcode))),
8318         })
8319     }
8320     #[doc = r" Returns the `Id` that is assigned by this instruction, if any."]
result_id(&self) -> Option<Id>8321     pub fn result_id(&self) -> Option<Id> {
8322         match self {
8323             Self::Undef { result_id, .. }
8324             | Self::String { result_id, .. }
8325             | Self::ExtInstImport { result_id, .. }
8326             | Self::ExtInst { result_id, .. }
8327             | Self::TypeVoid { result_id, .. }
8328             | Self::TypeBool { result_id, .. }
8329             | Self::TypeInt { result_id, .. }
8330             | Self::TypeFloat { result_id, .. }
8331             | Self::TypeVector { result_id, .. }
8332             | Self::TypeMatrix { result_id, .. }
8333             | Self::TypeImage { result_id, .. }
8334             | Self::TypeSampler { result_id, .. }
8335             | Self::TypeSampledImage { result_id, .. }
8336             | Self::TypeArray { result_id, .. }
8337             | Self::TypeRuntimeArray { result_id, .. }
8338             | Self::TypeStruct { result_id, .. }
8339             | Self::TypeOpaque { result_id, .. }
8340             | Self::TypePointer { result_id, .. }
8341             | Self::TypeFunction { result_id, .. }
8342             | Self::TypeEvent { result_id, .. }
8343             | Self::TypeDeviceEvent { result_id, .. }
8344             | Self::TypeReserveId { result_id, .. }
8345             | Self::TypeQueue { result_id, .. }
8346             | Self::TypePipe { result_id, .. }
8347             | Self::ConstantTrue { result_id, .. }
8348             | Self::ConstantFalse { result_id, .. }
8349             | Self::Constant { result_id, .. }
8350             | Self::ConstantComposite { result_id, .. }
8351             | Self::ConstantSampler { result_id, .. }
8352             | Self::ConstantNull { result_id, .. }
8353             | Self::SpecConstantTrue { result_id, .. }
8354             | Self::SpecConstantFalse { result_id, .. }
8355             | Self::SpecConstant { result_id, .. }
8356             | Self::SpecConstantComposite { result_id, .. }
8357             | Self::SpecConstantOp { result_id, .. }
8358             | Self::Function { result_id, .. }
8359             | Self::FunctionParameter { result_id, .. }
8360             | Self::FunctionCall { result_id, .. }
8361             | Self::Variable { result_id, .. }
8362             | Self::ImageTexelPointer { result_id, .. }
8363             | Self::Load { result_id, .. }
8364             | Self::AccessChain { result_id, .. }
8365             | Self::InBoundsAccessChain { result_id, .. }
8366             | Self::PtrAccessChain { result_id, .. }
8367             | Self::ArrayLength { result_id, .. }
8368             | Self::GenericPtrMemSemantics { result_id, .. }
8369             | Self::InBoundsPtrAccessChain { result_id, .. }
8370             | Self::DecorationGroup { result_id, .. }
8371             | Self::VectorExtractDynamic { result_id, .. }
8372             | Self::VectorInsertDynamic { result_id, .. }
8373             | Self::VectorShuffle { result_id, .. }
8374             | Self::CompositeConstruct { result_id, .. }
8375             | Self::CompositeExtract { result_id, .. }
8376             | Self::CompositeInsert { result_id, .. }
8377             | Self::CopyObject { result_id, .. }
8378             | Self::Transpose { result_id, .. }
8379             | Self::SampledImage { result_id, .. }
8380             | Self::ImageSampleImplicitLod { result_id, .. }
8381             | Self::ImageSampleExplicitLod { result_id, .. }
8382             | Self::ImageSampleDrefImplicitLod { result_id, .. }
8383             | Self::ImageSampleDrefExplicitLod { result_id, .. }
8384             | Self::ImageSampleProjImplicitLod { result_id, .. }
8385             | Self::ImageSampleProjExplicitLod { result_id, .. }
8386             | Self::ImageSampleProjDrefImplicitLod { result_id, .. }
8387             | Self::ImageSampleProjDrefExplicitLod { result_id, .. }
8388             | Self::ImageFetch { result_id, .. }
8389             | Self::ImageGather { result_id, .. }
8390             | Self::ImageDrefGather { result_id, .. }
8391             | Self::ImageRead { result_id, .. }
8392             | Self::Image { result_id, .. }
8393             | Self::ImageQueryFormat { result_id, .. }
8394             | Self::ImageQueryOrder { result_id, .. }
8395             | Self::ImageQuerySizeLod { result_id, .. }
8396             | Self::ImageQuerySize { result_id, .. }
8397             | Self::ImageQueryLod { result_id, .. }
8398             | Self::ImageQueryLevels { result_id, .. }
8399             | Self::ImageQuerySamples { result_id, .. }
8400             | Self::ConvertFToU { result_id, .. }
8401             | Self::ConvertFToS { result_id, .. }
8402             | Self::ConvertSToF { result_id, .. }
8403             | Self::ConvertUToF { result_id, .. }
8404             | Self::UConvert { result_id, .. }
8405             | Self::SConvert { result_id, .. }
8406             | Self::FConvert { result_id, .. }
8407             | Self::QuantizeToF16 { result_id, .. }
8408             | Self::ConvertPtrToU { result_id, .. }
8409             | Self::SatConvertSToU { result_id, .. }
8410             | Self::SatConvertUToS { result_id, .. }
8411             | Self::ConvertUToPtr { result_id, .. }
8412             | Self::PtrCastToGeneric { result_id, .. }
8413             | Self::GenericCastToPtr { result_id, .. }
8414             | Self::GenericCastToPtrExplicit { result_id, .. }
8415             | Self::Bitcast { result_id, .. }
8416             | Self::SNegate { result_id, .. }
8417             | Self::FNegate { result_id, .. }
8418             | Self::IAdd { result_id, .. }
8419             | Self::FAdd { result_id, .. }
8420             | Self::ISub { result_id, .. }
8421             | Self::FSub { result_id, .. }
8422             | Self::IMul { result_id, .. }
8423             | Self::FMul { result_id, .. }
8424             | Self::UDiv { result_id, .. }
8425             | Self::SDiv { result_id, .. }
8426             | Self::FDiv { result_id, .. }
8427             | Self::UMod { result_id, .. }
8428             | Self::SRem { result_id, .. }
8429             | Self::SMod { result_id, .. }
8430             | Self::FRem { result_id, .. }
8431             | Self::FMod { result_id, .. }
8432             | Self::VectorTimesScalar { result_id, .. }
8433             | Self::MatrixTimesScalar { result_id, .. }
8434             | Self::VectorTimesMatrix { result_id, .. }
8435             | Self::MatrixTimesVector { result_id, .. }
8436             | Self::MatrixTimesMatrix { result_id, .. }
8437             | Self::OuterProduct { result_id, .. }
8438             | Self::Dot { result_id, .. }
8439             | Self::IAddCarry { result_id, .. }
8440             | Self::ISubBorrow { result_id, .. }
8441             | Self::UMulExtended { result_id, .. }
8442             | Self::SMulExtended { result_id, .. }
8443             | Self::Any { result_id, .. }
8444             | Self::All { result_id, .. }
8445             | Self::IsNan { result_id, .. }
8446             | Self::IsInf { result_id, .. }
8447             | Self::IsFinite { result_id, .. }
8448             | Self::IsNormal { result_id, .. }
8449             | Self::SignBitSet { result_id, .. }
8450             | Self::LessOrGreater { result_id, .. }
8451             | Self::Ordered { result_id, .. }
8452             | Self::Unordered { result_id, .. }
8453             | Self::LogicalEqual { result_id, .. }
8454             | Self::LogicalNotEqual { result_id, .. }
8455             | Self::LogicalOr { result_id, .. }
8456             | Self::LogicalAnd { result_id, .. }
8457             | Self::LogicalNot { result_id, .. }
8458             | Self::Select { result_id, .. }
8459             | Self::IEqual { result_id, .. }
8460             | Self::INotEqual { result_id, .. }
8461             | Self::UGreaterThan { result_id, .. }
8462             | Self::SGreaterThan { result_id, .. }
8463             | Self::UGreaterThanEqual { result_id, .. }
8464             | Self::SGreaterThanEqual { result_id, .. }
8465             | Self::ULessThan { result_id, .. }
8466             | Self::SLessThan { result_id, .. }
8467             | Self::ULessThanEqual { result_id, .. }
8468             | Self::SLessThanEqual { result_id, .. }
8469             | Self::FOrdEqual { result_id, .. }
8470             | Self::FUnordEqual { result_id, .. }
8471             | Self::FOrdNotEqual { result_id, .. }
8472             | Self::FUnordNotEqual { result_id, .. }
8473             | Self::FOrdLessThan { result_id, .. }
8474             | Self::FUnordLessThan { result_id, .. }
8475             | Self::FOrdGreaterThan { result_id, .. }
8476             | Self::FUnordGreaterThan { result_id, .. }
8477             | Self::FOrdLessThanEqual { result_id, .. }
8478             | Self::FUnordLessThanEqual { result_id, .. }
8479             | Self::FOrdGreaterThanEqual { result_id, .. }
8480             | Self::FUnordGreaterThanEqual { result_id, .. }
8481             | Self::ShiftRightLogical { result_id, .. }
8482             | Self::ShiftRightArithmetic { result_id, .. }
8483             | Self::ShiftLeftLogical { result_id, .. }
8484             | Self::BitwiseOr { result_id, .. }
8485             | Self::BitwiseXor { result_id, .. }
8486             | Self::BitwiseAnd { result_id, .. }
8487             | Self::Not { result_id, .. }
8488             | Self::BitFieldInsert { result_id, .. }
8489             | Self::BitFieldSExtract { result_id, .. }
8490             | Self::BitFieldUExtract { result_id, .. }
8491             | Self::BitReverse { result_id, .. }
8492             | Self::BitCount { result_id, .. }
8493             | Self::DPdx { result_id, .. }
8494             | Self::DPdy { result_id, .. }
8495             | Self::Fwidth { result_id, .. }
8496             | Self::DPdxFine { result_id, .. }
8497             | Self::DPdyFine { result_id, .. }
8498             | Self::FwidthFine { result_id, .. }
8499             | Self::DPdxCoarse { result_id, .. }
8500             | Self::DPdyCoarse { result_id, .. }
8501             | Self::FwidthCoarse { result_id, .. }
8502             | Self::AtomicLoad { result_id, .. }
8503             | Self::AtomicExchange { result_id, .. }
8504             | Self::AtomicCompareExchange { result_id, .. }
8505             | Self::AtomicCompareExchangeWeak { result_id, .. }
8506             | Self::AtomicIIncrement { result_id, .. }
8507             | Self::AtomicIDecrement { result_id, .. }
8508             | Self::AtomicIAdd { result_id, .. }
8509             | Self::AtomicISub { result_id, .. }
8510             | Self::AtomicSMin { result_id, .. }
8511             | Self::AtomicUMin { result_id, .. }
8512             | Self::AtomicSMax { result_id, .. }
8513             | Self::AtomicUMax { result_id, .. }
8514             | Self::AtomicAnd { result_id, .. }
8515             | Self::AtomicOr { result_id, .. }
8516             | Self::AtomicXor { result_id, .. }
8517             | Self::Phi { result_id, .. }
8518             | Self::Label { result_id, .. }
8519             | Self::GroupAsyncCopy { result_id, .. }
8520             | Self::GroupAll { result_id, .. }
8521             | Self::GroupAny { result_id, .. }
8522             | Self::GroupBroadcast { result_id, .. }
8523             | Self::GroupIAdd { result_id, .. }
8524             | Self::GroupFAdd { result_id, .. }
8525             | Self::GroupFMin { result_id, .. }
8526             | Self::GroupUMin { result_id, .. }
8527             | Self::GroupSMin { result_id, .. }
8528             | Self::GroupFMax { result_id, .. }
8529             | Self::GroupUMax { result_id, .. }
8530             | Self::GroupSMax { result_id, .. }
8531             | Self::ReadPipe { result_id, .. }
8532             | Self::WritePipe { result_id, .. }
8533             | Self::ReservedReadPipe { result_id, .. }
8534             | Self::ReservedWritePipe { result_id, .. }
8535             | Self::ReserveReadPipePackets { result_id, .. }
8536             | Self::ReserveWritePipePackets { result_id, .. }
8537             | Self::IsValidReserveId { result_id, .. }
8538             | Self::GetNumPipePackets { result_id, .. }
8539             | Self::GetMaxPipePackets { result_id, .. }
8540             | Self::GroupReserveReadPipePackets { result_id, .. }
8541             | Self::GroupReserveWritePipePackets { result_id, .. }
8542             | Self::EnqueueMarker { result_id, .. }
8543             | Self::EnqueueKernel { result_id, .. }
8544             | Self::GetKernelNDrangeSubGroupCount { result_id, .. }
8545             | Self::GetKernelNDrangeMaxSubGroupSize { result_id, .. }
8546             | Self::GetKernelWorkGroupSize { result_id, .. }
8547             | Self::GetKernelPreferredWorkGroupSizeMultiple { result_id, .. }
8548             | Self::CreateUserEvent { result_id, .. }
8549             | Self::IsValidEvent { result_id, .. }
8550             | Self::GetDefaultQueue { result_id, .. }
8551             | Self::BuildNDRange { result_id, .. }
8552             | Self::ImageSparseSampleImplicitLod { result_id, .. }
8553             | Self::ImageSparseSampleExplicitLod { result_id, .. }
8554             | Self::ImageSparseSampleDrefImplicitLod { result_id, .. }
8555             | Self::ImageSparseSampleDrefExplicitLod { result_id, .. }
8556             | Self::ImageSparseSampleProjImplicitLod { result_id, .. }
8557             | Self::ImageSparseSampleProjExplicitLod { result_id, .. }
8558             | Self::ImageSparseSampleProjDrefImplicitLod { result_id, .. }
8559             | Self::ImageSparseSampleProjDrefExplicitLod { result_id, .. }
8560             | Self::ImageSparseFetch { result_id, .. }
8561             | Self::ImageSparseGather { result_id, .. }
8562             | Self::ImageSparseDrefGather { result_id, .. }
8563             | Self::ImageSparseTexelsResident { result_id, .. }
8564             | Self::AtomicFlagTestAndSet { result_id, .. }
8565             | Self::ImageSparseRead { result_id, .. }
8566             | Self::SizeOf { result_id, .. }
8567             | Self::TypePipeStorage { result_id, .. }
8568             | Self::ConstantPipeStorage { result_id, .. }
8569             | Self::CreatePipeFromPipeStorage { result_id, .. }
8570             | Self::GetKernelLocalSizeForSubgroupCount { result_id, .. }
8571             | Self::GetKernelMaxNumSubgroups { result_id, .. }
8572             | Self::TypeNamedBarrier { result_id, .. }
8573             | Self::NamedBarrierInitialize { result_id, .. }
8574             | Self::GroupNonUniformElect { result_id, .. }
8575             | Self::GroupNonUniformAll { result_id, .. }
8576             | Self::GroupNonUniformAny { result_id, .. }
8577             | Self::GroupNonUniformAllEqual { result_id, .. }
8578             | Self::GroupNonUniformBroadcast { result_id, .. }
8579             | Self::GroupNonUniformBroadcastFirst { result_id, .. }
8580             | Self::GroupNonUniformBallot { result_id, .. }
8581             | Self::GroupNonUniformInverseBallot { result_id, .. }
8582             | Self::GroupNonUniformBallotBitExtract { result_id, .. }
8583             | Self::GroupNonUniformBallotBitCount { result_id, .. }
8584             | Self::GroupNonUniformBallotFindLSB { result_id, .. }
8585             | Self::GroupNonUniformBallotFindMSB { result_id, .. }
8586             | Self::GroupNonUniformShuffle { result_id, .. }
8587             | Self::GroupNonUniformShuffleXor { result_id, .. }
8588             | Self::GroupNonUniformShuffleUp { result_id, .. }
8589             | Self::GroupNonUniformShuffleDown { result_id, .. }
8590             | Self::GroupNonUniformIAdd { result_id, .. }
8591             | Self::GroupNonUniformFAdd { result_id, .. }
8592             | Self::GroupNonUniformIMul { result_id, .. }
8593             | Self::GroupNonUniformFMul { result_id, .. }
8594             | Self::GroupNonUniformSMin { result_id, .. }
8595             | Self::GroupNonUniformUMin { result_id, .. }
8596             | Self::GroupNonUniformFMin { result_id, .. }
8597             | Self::GroupNonUniformSMax { result_id, .. }
8598             | Self::GroupNonUniformUMax { result_id, .. }
8599             | Self::GroupNonUniformFMax { result_id, .. }
8600             | Self::GroupNonUniformBitwiseAnd { result_id, .. }
8601             | Self::GroupNonUniformBitwiseOr { result_id, .. }
8602             | Self::GroupNonUniformBitwiseXor { result_id, .. }
8603             | Self::GroupNonUniformLogicalAnd { result_id, .. }
8604             | Self::GroupNonUniformLogicalOr { result_id, .. }
8605             | Self::GroupNonUniformLogicalXor { result_id, .. }
8606             | Self::GroupNonUniformQuadBroadcast { result_id, .. }
8607             | Self::GroupNonUniformQuadSwap { result_id, .. }
8608             | Self::CopyLogical { result_id, .. }
8609             | Self::PtrEqual { result_id, .. }
8610             | Self::PtrNotEqual { result_id, .. }
8611             | Self::PtrDiff { result_id, .. }
8612             | Self::SubgroupBallotKHR { result_id, .. }
8613             | Self::SubgroupFirstInvocationKHR { result_id, .. }
8614             | Self::SubgroupAllKHR { result_id, .. }
8615             | Self::SubgroupAnyKHR { result_id, .. }
8616             | Self::SubgroupAllEqualKHR { result_id, .. }
8617             | Self::SubgroupReadInvocationKHR { result_id, .. }
8618             | Self::ConvertUToAccelerationStructureKHR { result_id, .. }
8619             | Self::SDot { result_id, .. }
8620             | Self::UDot { result_id, .. }
8621             | Self::SUDot { result_id, .. }
8622             | Self::SDotAccSat { result_id, .. }
8623             | Self::UDotAccSat { result_id, .. }
8624             | Self::SUDotAccSat { result_id, .. }
8625             | Self::TypeRayQueryKHR { result_id, .. }
8626             | Self::RayQueryProceedKHR { result_id, .. }
8627             | Self::RayQueryGetIntersectionTypeKHR { result_id, .. }
8628             | Self::GroupIAddNonUniformAMD { result_id, .. }
8629             | Self::GroupFAddNonUniformAMD { result_id, .. }
8630             | Self::GroupFMinNonUniformAMD { result_id, .. }
8631             | Self::GroupUMinNonUniformAMD { result_id, .. }
8632             | Self::GroupSMinNonUniformAMD { result_id, .. }
8633             | Self::GroupFMaxNonUniformAMD { result_id, .. }
8634             | Self::GroupUMaxNonUniformAMD { result_id, .. }
8635             | Self::GroupSMaxNonUniformAMD { result_id, .. }
8636             | Self::FragmentMaskFetchAMD { result_id, .. }
8637             | Self::FragmentFetchAMD { result_id, .. }
8638             | Self::ReadClockKHR { result_id, .. }
8639             | Self::ImageSampleFootprintNV { result_id, .. }
8640             | Self::GroupNonUniformPartitionNV { result_id, .. }
8641             | Self::ReportIntersectionKHR { result_id, .. }
8642             | Self::TypeAccelerationStructureKHR { result_id, .. }
8643             | Self::TypeCooperativeMatrixNV { result_id, .. }
8644             | Self::CooperativeMatrixLoadNV { result_id, .. }
8645             | Self::CooperativeMatrixMulAddNV { result_id, .. }
8646             | Self::CooperativeMatrixLengthNV { result_id, .. }
8647             | Self::IsHelperInvocationEXT { result_id, .. }
8648             | Self::ConvertUToImageNV { result_id, .. }
8649             | Self::ConvertUToSamplerNV { result_id, .. }
8650             | Self::ConvertImageToUNV { result_id, .. }
8651             | Self::ConvertSamplerToUNV { result_id, .. }
8652             | Self::ConvertUToSampledImageNV { result_id, .. }
8653             | Self::ConvertSampledImageToUNV { result_id, .. }
8654             | Self::SubgroupShuffleINTEL { result_id, .. }
8655             | Self::SubgroupShuffleDownINTEL { result_id, .. }
8656             | Self::SubgroupShuffleUpINTEL { result_id, .. }
8657             | Self::SubgroupShuffleXorINTEL { result_id, .. }
8658             | Self::SubgroupBlockReadINTEL { result_id, .. }
8659             | Self::SubgroupImageBlockReadINTEL { result_id, .. }
8660             | Self::SubgroupImageMediaBlockReadINTEL { result_id, .. }
8661             | Self::UCountLeadingZerosINTEL { result_id, .. }
8662             | Self::UCountTrailingZerosINTEL { result_id, .. }
8663             | Self::AbsISubINTEL { result_id, .. }
8664             | Self::AbsUSubINTEL { result_id, .. }
8665             | Self::IAddSatINTEL { result_id, .. }
8666             | Self::UAddSatINTEL { result_id, .. }
8667             | Self::IAverageINTEL { result_id, .. }
8668             | Self::UAverageINTEL { result_id, .. }
8669             | Self::IAverageRoundedINTEL { result_id, .. }
8670             | Self::UAverageRoundedINTEL { result_id, .. }
8671             | Self::ISubSatINTEL { result_id, .. }
8672             | Self::USubSatINTEL { result_id, .. }
8673             | Self::IMul32x16INTEL { result_id, .. }
8674             | Self::UMul32x16INTEL { result_id, .. }
8675             | Self::ConstantFunctionPointerINTEL { result_id, .. }
8676             | Self::FunctionPointerCallINTEL { result_id, .. }
8677             | Self::AsmTargetINTEL { result_id, .. }
8678             | Self::AsmINTEL { result_id, .. }
8679             | Self::AsmCallINTEL { result_id, .. }
8680             | Self::AtomicFMinEXT { result_id, .. }
8681             | Self::AtomicFMaxEXT { result_id, .. }
8682             | Self::ExpectKHR { result_id, .. }
8683             | Self::VmeImageINTEL { result_id, .. }
8684             | Self::TypeVmeImageINTEL { result_id, .. }
8685             | Self::TypeAvcImePayloadINTEL { result_id, .. }
8686             | Self::TypeAvcRefPayloadINTEL { result_id, .. }
8687             | Self::TypeAvcSicPayloadINTEL { result_id, .. }
8688             | Self::TypeAvcMcePayloadINTEL { result_id, .. }
8689             | Self::TypeAvcMceResultINTEL { result_id, .. }
8690             | Self::TypeAvcImeResultINTEL { result_id, .. }
8691             | Self::TypeAvcImeResultSingleReferenceStreamoutINTEL { result_id, .. }
8692             | Self::TypeAvcImeResultDualReferenceStreamoutINTEL { result_id, .. }
8693             | Self::TypeAvcImeSingleReferenceStreaminINTEL { result_id, .. }
8694             | Self::TypeAvcImeDualReferenceStreaminINTEL { result_id, .. }
8695             | Self::TypeAvcRefResultINTEL { result_id, .. }
8696             | Self::TypeAvcSicResultINTEL { result_id, .. }
8697             | Self::SubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL {
8698                 result_id, ..
8699             }
8700             | Self::SubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL { result_id, .. }
8701             | Self::SubgroupAvcMceGetDefaultInterShapePenaltyINTEL { result_id, .. }
8702             | Self::SubgroupAvcMceSetInterShapePenaltyINTEL { result_id, .. }
8703             | Self::SubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL { result_id, .. }
8704             | Self::SubgroupAvcMceSetInterDirectionPenaltyINTEL { result_id, .. }
8705             | Self::SubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL { result_id, .. }
8706             | Self::SubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL { result_id, .. }
8707             | Self::SubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL { result_id, .. }
8708             | Self::SubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL { result_id, .. }
8709             | Self::SubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL { result_id, .. }
8710             | Self::SubgroupAvcMceSetMotionVectorCostFunctionINTEL { result_id, .. }
8711             | Self::SubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL { result_id, .. }
8712             | Self::SubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL { result_id, .. }
8713             | Self::SubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL { result_id, .. }
8714             | Self::SubgroupAvcMceSetAcOnlyHaarINTEL { result_id, .. }
8715             | Self::SubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL { result_id, .. }
8716             | Self::SubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL {
8717                 result_id,
8718                 ..
8719             }
8720             | Self::SubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL {
8721                 result_id,
8722                 ..
8723             }
8724             | Self::SubgroupAvcMceConvertToImePayloadINTEL { result_id, .. }
8725             | Self::SubgroupAvcMceConvertToImeResultINTEL { result_id, .. }
8726             | Self::SubgroupAvcMceConvertToRefPayloadINTEL { result_id, .. }
8727             | Self::SubgroupAvcMceConvertToRefResultINTEL { result_id, .. }
8728             | Self::SubgroupAvcMceConvertToSicPayloadINTEL { result_id, .. }
8729             | Self::SubgroupAvcMceConvertToSicResultINTEL { result_id, .. }
8730             | Self::SubgroupAvcMceGetMotionVectorsINTEL { result_id, .. }
8731             | Self::SubgroupAvcMceGetInterDistortionsINTEL { result_id, .. }
8732             | Self::SubgroupAvcMceGetBestInterDistortionsINTEL { result_id, .. }
8733             | Self::SubgroupAvcMceGetInterMajorShapeINTEL { result_id, .. }
8734             | Self::SubgroupAvcMceGetInterMinorShapeINTEL { result_id, .. }
8735             | Self::SubgroupAvcMceGetInterDirectionsINTEL { result_id, .. }
8736             | Self::SubgroupAvcMceGetInterMotionVectorCountINTEL { result_id, .. }
8737             | Self::SubgroupAvcMceGetInterReferenceIdsINTEL { result_id, .. }
8738             | Self::SubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL {
8739                 result_id,
8740                 ..
8741             }
8742             | Self::SubgroupAvcImeInitializeINTEL { result_id, .. }
8743             | Self::SubgroupAvcImeSetSingleReferenceINTEL { result_id, .. }
8744             | Self::SubgroupAvcImeSetDualReferenceINTEL { result_id, .. }
8745             | Self::SubgroupAvcImeRefWindowSizeINTEL { result_id, .. }
8746             | Self::SubgroupAvcImeAdjustRefOffsetINTEL { result_id, .. }
8747             | Self::SubgroupAvcImeConvertToMcePayloadINTEL { result_id, .. }
8748             | Self::SubgroupAvcImeSetMaxMotionVectorCountINTEL { result_id, .. }
8749             | Self::SubgroupAvcImeSetUnidirectionalMixDisableINTEL { result_id, .. }
8750             | Self::SubgroupAvcImeSetEarlySearchTerminationThresholdINTEL { result_id, .. }
8751             | Self::SubgroupAvcImeSetWeightedSadINTEL { result_id, .. }
8752             | Self::SubgroupAvcImeEvaluateWithSingleReferenceINTEL { result_id, .. }
8753             | Self::SubgroupAvcImeEvaluateWithDualReferenceINTEL { result_id, .. }
8754             | Self::SubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL { result_id, .. }
8755             | Self::SubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL { result_id, .. }
8756             | Self::SubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL { result_id, .. }
8757             | Self::SubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL { result_id, .. }
8758             | Self::SubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL {
8759                 result_id, ..
8760             }
8761             | Self::SubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL { result_id, .. }
8762             | Self::SubgroupAvcImeConvertToMceResultINTEL { result_id, .. }
8763             | Self::SubgroupAvcImeGetSingleReferenceStreaminINTEL { result_id, .. }
8764             | Self::SubgroupAvcImeGetDualReferenceStreaminINTEL { result_id, .. }
8765             | Self::SubgroupAvcImeStripSingleReferenceStreamoutINTEL { result_id, .. }
8766             | Self::SubgroupAvcImeStripDualReferenceStreamoutINTEL { result_id, .. }
8767             | Self::SubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL {
8768                 result_id,
8769                 ..
8770             }
8771             | Self::SubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL {
8772                 result_id,
8773                 ..
8774             }
8775             | Self::SubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL {
8776                 result_id,
8777                 ..
8778             }
8779             | Self::SubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL {
8780                 result_id,
8781                 ..
8782             }
8783             | Self::SubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL {
8784                 result_id,
8785                 ..
8786             }
8787             | Self::SubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL {
8788                 result_id,
8789                 ..
8790             }
8791             | Self::SubgroupAvcImeGetBorderReachedINTEL { result_id, .. }
8792             | Self::SubgroupAvcImeGetTruncatedSearchIndicationINTEL { result_id, .. }
8793             | Self::SubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL {
8794                 result_id, ..
8795             }
8796             | Self::SubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL {
8797                 result_id, ..
8798             }
8799             | Self::SubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL { result_id, .. }
8800             | Self::SubgroupAvcFmeInitializeINTEL { result_id, .. }
8801             | Self::SubgroupAvcBmeInitializeINTEL { result_id, .. }
8802             | Self::SubgroupAvcRefConvertToMcePayloadINTEL { result_id, .. }
8803             | Self::SubgroupAvcRefSetBidirectionalMixDisableINTEL { result_id, .. }
8804             | Self::SubgroupAvcRefSetBilinearFilterEnableINTEL { result_id, .. }
8805             | Self::SubgroupAvcRefEvaluateWithSingleReferenceINTEL { result_id, .. }
8806             | Self::SubgroupAvcRefEvaluateWithDualReferenceINTEL { result_id, .. }
8807             | Self::SubgroupAvcRefEvaluateWithMultiReferenceINTEL { result_id, .. }
8808             | Self::SubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL { result_id, .. }
8809             | Self::SubgroupAvcRefConvertToMceResultINTEL { result_id, .. }
8810             | Self::SubgroupAvcSicInitializeINTEL { result_id, .. }
8811             | Self::SubgroupAvcSicConfigureSkcINTEL { result_id, .. }
8812             | Self::SubgroupAvcSicConfigureIpeLumaINTEL { result_id, .. }
8813             | Self::SubgroupAvcSicConfigureIpeLumaChromaINTEL { result_id, .. }
8814             | Self::SubgroupAvcSicGetMotionVectorMaskINTEL { result_id, .. }
8815             | Self::SubgroupAvcSicConvertToMcePayloadINTEL { result_id, .. }
8816             | Self::SubgroupAvcSicSetIntraLumaShapePenaltyINTEL { result_id, .. }
8817             | Self::SubgroupAvcSicSetIntraLumaModeCostFunctionINTEL { result_id, .. }
8818             | Self::SubgroupAvcSicSetIntraChromaModeCostFunctionINTEL { result_id, .. }
8819             | Self::SubgroupAvcSicSetBilinearFilterEnableINTEL { result_id, .. }
8820             | Self::SubgroupAvcSicSetSkcForwardTransformEnableINTEL { result_id, .. }
8821             | Self::SubgroupAvcSicSetBlockBasedRawSkipSadINTEL { result_id, .. }
8822             | Self::SubgroupAvcSicEvaluateIpeINTEL { result_id, .. }
8823             | Self::SubgroupAvcSicEvaluateWithSingleReferenceINTEL { result_id, .. }
8824             | Self::SubgroupAvcSicEvaluateWithDualReferenceINTEL { result_id, .. }
8825             | Self::SubgroupAvcSicEvaluateWithMultiReferenceINTEL { result_id, .. }
8826             | Self::SubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL { result_id, .. }
8827             | Self::SubgroupAvcSicConvertToMceResultINTEL { result_id, .. }
8828             | Self::SubgroupAvcSicGetIpeLumaShapeINTEL { result_id, .. }
8829             | Self::SubgroupAvcSicGetBestIpeLumaDistortionINTEL { result_id, .. }
8830             | Self::SubgroupAvcSicGetBestIpeChromaDistortionINTEL { result_id, .. }
8831             | Self::SubgroupAvcSicGetPackedIpeLumaModesINTEL { result_id, .. }
8832             | Self::SubgroupAvcSicGetIpeChromaModeINTEL { result_id, .. }
8833             | Self::SubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL { result_id, .. }
8834             | Self::SubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL { result_id, .. }
8835             | Self::SubgroupAvcSicGetInterRawSadsINTEL { result_id, .. }
8836             | Self::VariableLengthArrayINTEL { result_id, .. }
8837             | Self::SaveMemoryINTEL { result_id, .. }
8838             | Self::ArbitraryFloatSinCosPiINTEL { result_id, .. }
8839             | Self::ArbitraryFloatCastINTEL { result_id, .. }
8840             | Self::ArbitraryFloatCastFromIntINTEL { result_id, .. }
8841             | Self::ArbitraryFloatCastToIntINTEL { result_id, .. }
8842             | Self::ArbitraryFloatAddINTEL { result_id, .. }
8843             | Self::ArbitraryFloatSubINTEL { result_id, .. }
8844             | Self::ArbitraryFloatMulINTEL { result_id, .. }
8845             | Self::ArbitraryFloatDivINTEL { result_id, .. }
8846             | Self::ArbitraryFloatGTINTEL { result_id, .. }
8847             | Self::ArbitraryFloatGEINTEL { result_id, .. }
8848             | Self::ArbitraryFloatLTINTEL { result_id, .. }
8849             | Self::ArbitraryFloatLEINTEL { result_id, .. }
8850             | Self::ArbitraryFloatEQINTEL { result_id, .. }
8851             | Self::ArbitraryFloatRecipINTEL { result_id, .. }
8852             | Self::ArbitraryFloatRSqrtINTEL { result_id, .. }
8853             | Self::ArbitraryFloatCbrtINTEL { result_id, .. }
8854             | Self::ArbitraryFloatHypotINTEL { result_id, .. }
8855             | Self::ArbitraryFloatSqrtINTEL { result_id, .. }
8856             | Self::ArbitraryFloatLogINTEL { result_id, .. }
8857             | Self::ArbitraryFloatLog2INTEL { result_id, .. }
8858             | Self::ArbitraryFloatLog10INTEL { result_id, .. }
8859             | Self::ArbitraryFloatLog1pINTEL { result_id, .. }
8860             | Self::ArbitraryFloatExpINTEL { result_id, .. }
8861             | Self::ArbitraryFloatExp2INTEL { result_id, .. }
8862             | Self::ArbitraryFloatExp10INTEL { result_id, .. }
8863             | Self::ArbitraryFloatExpm1INTEL { result_id, .. }
8864             | Self::ArbitraryFloatSinINTEL { result_id, .. }
8865             | Self::ArbitraryFloatCosINTEL { result_id, .. }
8866             | Self::ArbitraryFloatSinCosINTEL { result_id, .. }
8867             | Self::ArbitraryFloatSinPiINTEL { result_id, .. }
8868             | Self::ArbitraryFloatCosPiINTEL { result_id, .. }
8869             | Self::ArbitraryFloatASinINTEL { result_id, .. }
8870             | Self::ArbitraryFloatASinPiINTEL { result_id, .. }
8871             | Self::ArbitraryFloatACosINTEL { result_id, .. }
8872             | Self::ArbitraryFloatACosPiINTEL { result_id, .. }
8873             | Self::ArbitraryFloatATanINTEL { result_id, .. }
8874             | Self::ArbitraryFloatATanPiINTEL { result_id, .. }
8875             | Self::ArbitraryFloatATan2INTEL { result_id, .. }
8876             | Self::ArbitraryFloatPowINTEL { result_id, .. }
8877             | Self::ArbitraryFloatPowRINTEL { result_id, .. }
8878             | Self::ArbitraryFloatPowNINTEL { result_id, .. }
8879             | Self::FixedSqrtINTEL { result_id, .. }
8880             | Self::FixedRecipINTEL { result_id, .. }
8881             | Self::FixedRsqrtINTEL { result_id, .. }
8882             | Self::FixedSinINTEL { result_id, .. }
8883             | Self::FixedCosINTEL { result_id, .. }
8884             | Self::FixedSinCosINTEL { result_id, .. }
8885             | Self::FixedSinPiINTEL { result_id, .. }
8886             | Self::FixedCosPiINTEL { result_id, .. }
8887             | Self::FixedSinCosPiINTEL { result_id, .. }
8888             | Self::FixedLogINTEL { result_id, .. }
8889             | Self::FixedExpINTEL { result_id, .. }
8890             | Self::PtrCastToCrossWorkgroupINTEL { result_id, .. }
8891             | Self::CrossWorkgroupCastToPtrINTEL { result_id, .. }
8892             | Self::ReadPipeBlockingINTEL { result_id, .. }
8893             | Self::WritePipeBlockingINTEL { result_id, .. }
8894             | Self::FPGARegINTEL { result_id, .. }
8895             | Self::RayQueryGetRayTMinKHR { result_id, .. }
8896             | Self::RayQueryGetRayFlagsKHR { result_id, .. }
8897             | Self::RayQueryGetIntersectionTKHR { result_id, .. }
8898             | Self::RayQueryGetIntersectionInstanceCustomIndexKHR { result_id, .. }
8899             | Self::RayQueryGetIntersectionInstanceIdKHR { result_id, .. }
8900             | Self::RayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR {
8901                 result_id,
8902                 ..
8903             }
8904             | Self::RayQueryGetIntersectionGeometryIndexKHR { result_id, .. }
8905             | Self::RayQueryGetIntersectionPrimitiveIndexKHR { result_id, .. }
8906             | Self::RayQueryGetIntersectionBarycentricsKHR { result_id, .. }
8907             | Self::RayQueryGetIntersectionFrontFaceKHR { result_id, .. }
8908             | Self::RayQueryGetIntersectionCandidateAABBOpaqueKHR { result_id, .. }
8909             | Self::RayQueryGetIntersectionObjectRayDirectionKHR { result_id, .. }
8910             | Self::RayQueryGetIntersectionObjectRayOriginKHR { result_id, .. }
8911             | Self::RayQueryGetWorldRayDirectionKHR { result_id, .. }
8912             | Self::RayQueryGetWorldRayOriginKHR { result_id, .. }
8913             | Self::RayQueryGetIntersectionObjectToWorldKHR { result_id, .. }
8914             | Self::RayQueryGetIntersectionWorldToObjectKHR { result_id, .. }
8915             | Self::AtomicFAddEXT { result_id, .. }
8916             | Self::TypeBufferSurfaceINTEL { result_id, .. } => Some(*result_id),
8917             _ => None,
8918         }
8919     }
8920 }
8921 #[derive(Clone, Debug, PartialEq, Eq)]
8922 #[doc = "An instruction that is used as the operand of the `SpecConstantOp` instruction."]
8923 pub enum SpecConstantInstruction {
8924     AccessChain {
8925         base: Id,
8926         indexes: Vec<Id>,
8927     },
8928     InBoundsAccessChain {
8929         base: Id,
8930         indexes: Vec<Id>,
8931     },
8932     PtrAccessChain {
8933         base: Id,
8934         element: Id,
8935         indexes: Vec<Id>,
8936     },
8937     InBoundsPtrAccessChain {
8938         base: Id,
8939         element: Id,
8940         indexes: Vec<Id>,
8941     },
8942     VectorShuffle {
8943         vector_1: Id,
8944         vector_2: Id,
8945         components: Vec<u32>,
8946     },
8947     CompositeExtract {
8948         composite: Id,
8949         indexes: Vec<u32>,
8950     },
8951     CompositeInsert {
8952         object: Id,
8953         composite: Id,
8954         indexes: Vec<u32>,
8955     },
8956     ConvertFToU {
8957         float_value: Id,
8958     },
8959     ConvertFToS {
8960         float_value: Id,
8961     },
8962     ConvertSToF {
8963         signed_value: Id,
8964     },
8965     ConvertUToF {
8966         unsigned_value: Id,
8967     },
8968     UConvert {
8969         unsigned_value: Id,
8970     },
8971     SConvert {
8972         signed_value: Id,
8973     },
8974     FConvert {
8975         float_value: Id,
8976     },
8977     QuantizeToF16 {
8978         value: Id,
8979     },
8980     ConvertPtrToU {
8981         pointer: Id,
8982     },
8983     ConvertUToPtr {
8984         integer_value: Id,
8985     },
8986     PtrCastToGeneric {
8987         pointer: Id,
8988     },
8989     GenericCastToPtr {
8990         pointer: Id,
8991     },
8992     Bitcast {
8993         operand: Id,
8994     },
8995     SNegate {
8996         operand: Id,
8997     },
8998     FNegate {
8999         operand: Id,
9000     },
9001     IAdd {
9002         operand1: Id,
9003         operand2: Id,
9004     },
9005     FAdd {
9006         operand1: Id,
9007         operand2: Id,
9008     },
9009     ISub {
9010         operand1: Id,
9011         operand2: Id,
9012     },
9013     FSub {
9014         operand1: Id,
9015         operand2: Id,
9016     },
9017     IMul {
9018         operand1: Id,
9019         operand2: Id,
9020     },
9021     FMul {
9022         operand1: Id,
9023         operand2: Id,
9024     },
9025     UDiv {
9026         operand1: Id,
9027         operand2: Id,
9028     },
9029     SDiv {
9030         operand1: Id,
9031         operand2: Id,
9032     },
9033     FDiv {
9034         operand1: Id,
9035         operand2: Id,
9036     },
9037     UMod {
9038         operand1: Id,
9039         operand2: Id,
9040     },
9041     SRem {
9042         operand1: Id,
9043         operand2: Id,
9044     },
9045     SMod {
9046         operand1: Id,
9047         operand2: Id,
9048     },
9049     FRem {
9050         operand1: Id,
9051         operand2: Id,
9052     },
9053     FMod {
9054         operand1: Id,
9055         operand2: Id,
9056     },
9057     LogicalEqual {
9058         operand1: Id,
9059         operand2: Id,
9060     },
9061     LogicalNotEqual {
9062         operand1: Id,
9063         operand2: Id,
9064     },
9065     LogicalOr {
9066         operand1: Id,
9067         operand2: Id,
9068     },
9069     LogicalAnd {
9070         operand1: Id,
9071         operand2: Id,
9072     },
9073     LogicalNot {
9074         operand: Id,
9075     },
9076     Select {
9077         condition: Id,
9078         object_1: Id,
9079         object_2: Id,
9080     },
9081     IEqual {
9082         operand1: Id,
9083         operand2: Id,
9084     },
9085     INotEqual {
9086         operand1: Id,
9087         operand2: Id,
9088     },
9089     UGreaterThan {
9090         operand1: Id,
9091         operand2: Id,
9092     },
9093     SGreaterThan {
9094         operand1: Id,
9095         operand2: Id,
9096     },
9097     UGreaterThanEqual {
9098         operand1: Id,
9099         operand2: Id,
9100     },
9101     SGreaterThanEqual {
9102         operand1: Id,
9103         operand2: Id,
9104     },
9105     ULessThan {
9106         operand1: Id,
9107         operand2: Id,
9108     },
9109     SLessThan {
9110         operand1: Id,
9111         operand2: Id,
9112     },
9113     ULessThanEqual {
9114         operand1: Id,
9115         operand2: Id,
9116     },
9117     SLessThanEqual {
9118         operand1: Id,
9119         operand2: Id,
9120     },
9121     ShiftRightLogical {
9122         base: Id,
9123         shift: Id,
9124     },
9125     ShiftRightArithmetic {
9126         base: Id,
9127         shift: Id,
9128     },
9129     ShiftLeftLogical {
9130         base: Id,
9131         shift: Id,
9132     },
9133     BitwiseOr {
9134         operand1: Id,
9135         operand2: Id,
9136     },
9137     BitwiseXor {
9138         operand1: Id,
9139         operand2: Id,
9140     },
9141     BitwiseAnd {
9142         operand1: Id,
9143         operand2: Id,
9144     },
9145     Not {
9146         operand: Id,
9147     },
9148 }
9149 impl SpecConstantInstruction {
9150     #[allow(dead_code)]
parse(reader: &mut InstructionReader<'_>) -> Result<Self, ParseError>9151     fn parse(reader: &mut InstructionReader<'_>) -> Result<Self, ParseError> {
9152         let opcode = (reader.next_u32()? & 0xffff) as u16;
9153         Ok(match opcode {
9154             65u16 => Self::AccessChain {
9155                 base: Id(reader.next_u32()?),
9156                 indexes: {
9157                     let mut vec = Vec::new();
9158                     while !reader.is_empty() {
9159                         vec.push(Id(reader.next_u32()?));
9160                     }
9161                     vec
9162                 },
9163             },
9164             66u16 => Self::InBoundsAccessChain {
9165                 base: Id(reader.next_u32()?),
9166                 indexes: {
9167                     let mut vec = Vec::new();
9168                     while !reader.is_empty() {
9169                         vec.push(Id(reader.next_u32()?));
9170                     }
9171                     vec
9172                 },
9173             },
9174             67u16 => Self::PtrAccessChain {
9175                 base: Id(reader.next_u32()?),
9176                 element: Id(reader.next_u32()?),
9177                 indexes: {
9178                     let mut vec = Vec::new();
9179                     while !reader.is_empty() {
9180                         vec.push(Id(reader.next_u32()?));
9181                     }
9182                     vec
9183                 },
9184             },
9185             70u16 => Self::InBoundsPtrAccessChain {
9186                 base: Id(reader.next_u32()?),
9187                 element: Id(reader.next_u32()?),
9188                 indexes: {
9189                     let mut vec = Vec::new();
9190                     while !reader.is_empty() {
9191                         vec.push(Id(reader.next_u32()?));
9192                     }
9193                     vec
9194                 },
9195             },
9196             79u16 => Self::VectorShuffle {
9197                 vector_1: Id(reader.next_u32()?),
9198                 vector_2: Id(reader.next_u32()?),
9199                 components: {
9200                     let mut vec = Vec::new();
9201                     while !reader.is_empty() {
9202                         vec.push(reader.next_u32()?);
9203                     }
9204                     vec
9205                 },
9206             },
9207             81u16 => Self::CompositeExtract {
9208                 composite: Id(reader.next_u32()?),
9209                 indexes: {
9210                     let mut vec = Vec::new();
9211                     while !reader.is_empty() {
9212                         vec.push(reader.next_u32()?);
9213                     }
9214                     vec
9215                 },
9216             },
9217             82u16 => Self::CompositeInsert {
9218                 object: Id(reader.next_u32()?),
9219                 composite: Id(reader.next_u32()?),
9220                 indexes: {
9221                     let mut vec = Vec::new();
9222                     while !reader.is_empty() {
9223                         vec.push(reader.next_u32()?);
9224                     }
9225                     vec
9226                 },
9227             },
9228             109u16 => Self::ConvertFToU {
9229                 float_value: Id(reader.next_u32()?),
9230             },
9231             110u16 => Self::ConvertFToS {
9232                 float_value: Id(reader.next_u32()?),
9233             },
9234             111u16 => Self::ConvertSToF {
9235                 signed_value: Id(reader.next_u32()?),
9236             },
9237             112u16 => Self::ConvertUToF {
9238                 unsigned_value: Id(reader.next_u32()?),
9239             },
9240             113u16 => Self::UConvert {
9241                 unsigned_value: Id(reader.next_u32()?),
9242             },
9243             114u16 => Self::SConvert {
9244                 signed_value: Id(reader.next_u32()?),
9245             },
9246             115u16 => Self::FConvert {
9247                 float_value: Id(reader.next_u32()?),
9248             },
9249             116u16 => Self::QuantizeToF16 {
9250                 value: Id(reader.next_u32()?),
9251             },
9252             117u16 => Self::ConvertPtrToU {
9253                 pointer: Id(reader.next_u32()?),
9254             },
9255             120u16 => Self::ConvertUToPtr {
9256                 integer_value: Id(reader.next_u32()?),
9257             },
9258             121u16 => Self::PtrCastToGeneric {
9259                 pointer: Id(reader.next_u32()?),
9260             },
9261             122u16 => Self::GenericCastToPtr {
9262                 pointer: Id(reader.next_u32()?),
9263             },
9264             124u16 => Self::Bitcast {
9265                 operand: Id(reader.next_u32()?),
9266             },
9267             126u16 => Self::SNegate {
9268                 operand: Id(reader.next_u32()?),
9269             },
9270             127u16 => Self::FNegate {
9271                 operand: Id(reader.next_u32()?),
9272             },
9273             128u16 => Self::IAdd {
9274                 operand1: Id(reader.next_u32()?),
9275                 operand2: Id(reader.next_u32()?),
9276             },
9277             129u16 => Self::FAdd {
9278                 operand1: Id(reader.next_u32()?),
9279                 operand2: Id(reader.next_u32()?),
9280             },
9281             130u16 => Self::ISub {
9282                 operand1: Id(reader.next_u32()?),
9283                 operand2: Id(reader.next_u32()?),
9284             },
9285             131u16 => Self::FSub {
9286                 operand1: Id(reader.next_u32()?),
9287                 operand2: Id(reader.next_u32()?),
9288             },
9289             132u16 => Self::IMul {
9290                 operand1: Id(reader.next_u32()?),
9291                 operand2: Id(reader.next_u32()?),
9292             },
9293             133u16 => Self::FMul {
9294                 operand1: Id(reader.next_u32()?),
9295                 operand2: Id(reader.next_u32()?),
9296             },
9297             134u16 => Self::UDiv {
9298                 operand1: Id(reader.next_u32()?),
9299                 operand2: Id(reader.next_u32()?),
9300             },
9301             135u16 => Self::SDiv {
9302                 operand1: Id(reader.next_u32()?),
9303                 operand2: Id(reader.next_u32()?),
9304             },
9305             136u16 => Self::FDiv {
9306                 operand1: Id(reader.next_u32()?),
9307                 operand2: Id(reader.next_u32()?),
9308             },
9309             137u16 => Self::UMod {
9310                 operand1: Id(reader.next_u32()?),
9311                 operand2: Id(reader.next_u32()?),
9312             },
9313             138u16 => Self::SRem {
9314                 operand1: Id(reader.next_u32()?),
9315                 operand2: Id(reader.next_u32()?),
9316             },
9317             139u16 => Self::SMod {
9318                 operand1: Id(reader.next_u32()?),
9319                 operand2: Id(reader.next_u32()?),
9320             },
9321             140u16 => Self::FRem {
9322                 operand1: Id(reader.next_u32()?),
9323                 operand2: Id(reader.next_u32()?),
9324             },
9325             141u16 => Self::FMod {
9326                 operand1: Id(reader.next_u32()?),
9327                 operand2: Id(reader.next_u32()?),
9328             },
9329             164u16 => Self::LogicalEqual {
9330                 operand1: Id(reader.next_u32()?),
9331                 operand2: Id(reader.next_u32()?),
9332             },
9333             165u16 => Self::LogicalNotEqual {
9334                 operand1: Id(reader.next_u32()?),
9335                 operand2: Id(reader.next_u32()?),
9336             },
9337             166u16 => Self::LogicalOr {
9338                 operand1: Id(reader.next_u32()?),
9339                 operand2: Id(reader.next_u32()?),
9340             },
9341             167u16 => Self::LogicalAnd {
9342                 operand1: Id(reader.next_u32()?),
9343                 operand2: Id(reader.next_u32()?),
9344             },
9345             168u16 => Self::LogicalNot {
9346                 operand: Id(reader.next_u32()?),
9347             },
9348             169u16 => Self::Select {
9349                 condition: Id(reader.next_u32()?),
9350                 object_1: Id(reader.next_u32()?),
9351                 object_2: Id(reader.next_u32()?),
9352             },
9353             170u16 => Self::IEqual {
9354                 operand1: Id(reader.next_u32()?),
9355                 operand2: Id(reader.next_u32()?),
9356             },
9357             171u16 => Self::INotEqual {
9358                 operand1: Id(reader.next_u32()?),
9359                 operand2: Id(reader.next_u32()?),
9360             },
9361             172u16 => Self::UGreaterThan {
9362                 operand1: Id(reader.next_u32()?),
9363                 operand2: Id(reader.next_u32()?),
9364             },
9365             173u16 => Self::SGreaterThan {
9366                 operand1: Id(reader.next_u32()?),
9367                 operand2: Id(reader.next_u32()?),
9368             },
9369             174u16 => Self::UGreaterThanEqual {
9370                 operand1: Id(reader.next_u32()?),
9371                 operand2: Id(reader.next_u32()?),
9372             },
9373             175u16 => Self::SGreaterThanEqual {
9374                 operand1: Id(reader.next_u32()?),
9375                 operand2: Id(reader.next_u32()?),
9376             },
9377             176u16 => Self::ULessThan {
9378                 operand1: Id(reader.next_u32()?),
9379                 operand2: Id(reader.next_u32()?),
9380             },
9381             177u16 => Self::SLessThan {
9382                 operand1: Id(reader.next_u32()?),
9383                 operand2: Id(reader.next_u32()?),
9384             },
9385             178u16 => Self::ULessThanEqual {
9386                 operand1: Id(reader.next_u32()?),
9387                 operand2: Id(reader.next_u32()?),
9388             },
9389             179u16 => Self::SLessThanEqual {
9390                 operand1: Id(reader.next_u32()?),
9391                 operand2: Id(reader.next_u32()?),
9392             },
9393             194u16 => Self::ShiftRightLogical {
9394                 base: Id(reader.next_u32()?),
9395                 shift: Id(reader.next_u32()?),
9396             },
9397             195u16 => Self::ShiftRightArithmetic {
9398                 base: Id(reader.next_u32()?),
9399                 shift: Id(reader.next_u32()?),
9400             },
9401             196u16 => Self::ShiftLeftLogical {
9402                 base: Id(reader.next_u32()?),
9403                 shift: Id(reader.next_u32()?),
9404             },
9405             197u16 => Self::BitwiseOr {
9406                 operand1: Id(reader.next_u32()?),
9407                 operand2: Id(reader.next_u32()?),
9408             },
9409             198u16 => Self::BitwiseXor {
9410                 operand1: Id(reader.next_u32()?),
9411                 operand2: Id(reader.next_u32()?),
9412             },
9413             199u16 => Self::BitwiseAnd {
9414                 operand1: Id(reader.next_u32()?),
9415                 operand2: Id(reader.next_u32()?),
9416             },
9417             200u16 => Self::Not {
9418                 operand: Id(reader.next_u32()?),
9419             },
9420             opcode => return Err(reader.map_err(ParseErrors::UnknownSpecConstantOpcode(opcode))),
9421         })
9422     }
9423 }
9424 #[derive(Clone, Copy, Debug, PartialEq, Eq)]
9425 #[allow(non_camel_case_types)]
9426 pub struct ImageOperands {
9427     pub bias: Option<Id>,
9428     pub lod: Option<Id>,
9429     pub grad: Option<(Id, Id)>,
9430     pub const_offset: Option<Id>,
9431     pub offset: Option<Id>,
9432     pub const_offsets: Option<Id>,
9433     pub sample: Option<Id>,
9434     pub min_lod: Option<Id>,
9435     pub make_texel_available: Option<Id>,
9436     pub make_texel_visible: Option<Id>,
9437     pub non_private_texel: bool,
9438     pub volatile_texel: bool,
9439     pub sign_extend: bool,
9440     pub zero_extend: bool,
9441     pub nontemporal: bool,
9442     pub offsets: Option<Id>,
9443 }
9444 impl ImageOperands {
9445     #[allow(dead_code)]
parse(reader: &mut InstructionReader<'_>) -> Result<ImageOperands, ParseError>9446     fn parse(reader: &mut InstructionReader<'_>) -> Result<ImageOperands, ParseError> {
9447         let value = reader.next_u32()?;
9448         Ok(Self {
9449             bias: if value & 1u32 != 0 {
9450                 Some(Id(reader.next_u32()?))
9451             } else {
9452                 None
9453             },
9454             lod: if value & 2u32 != 0 {
9455                 Some(Id(reader.next_u32()?))
9456             } else {
9457                 None
9458             },
9459             grad: if value & 4u32 != 0 {
9460                 Some((Id(reader.next_u32()?), Id(reader.next_u32()?)))
9461             } else {
9462                 None
9463             },
9464             const_offset: if value & 8u32 != 0 {
9465                 Some(Id(reader.next_u32()?))
9466             } else {
9467                 None
9468             },
9469             offset: if value & 16u32 != 0 {
9470                 Some(Id(reader.next_u32()?))
9471             } else {
9472                 None
9473             },
9474             const_offsets: if value & 32u32 != 0 {
9475                 Some(Id(reader.next_u32()?))
9476             } else {
9477                 None
9478             },
9479             sample: if value & 64u32 != 0 {
9480                 Some(Id(reader.next_u32()?))
9481             } else {
9482                 None
9483             },
9484             min_lod: if value & 128u32 != 0 {
9485                 Some(Id(reader.next_u32()?))
9486             } else {
9487                 None
9488             },
9489             make_texel_available: if value & 256u32 != 0 {
9490                 Some(Id(reader.next_u32()?))
9491             } else {
9492                 None
9493             },
9494             make_texel_visible: if value & 512u32 != 0 {
9495                 Some(Id(reader.next_u32()?))
9496             } else {
9497                 None
9498             },
9499             non_private_texel: value & 1024u32 != 0,
9500             volatile_texel: value & 2048u32 != 0,
9501             sign_extend: value & 4096u32 != 0,
9502             zero_extend: value & 8192u32 != 0,
9503             nontemporal: value & 16384u32 != 0,
9504             offsets: if value & 65536u32 != 0 {
9505                 Some(Id(reader.next_u32()?))
9506             } else {
9507                 None
9508             },
9509         })
9510     }
9511 }
9512 #[derive(Clone, Copy, Debug, PartialEq, Eq)]
9513 #[allow(non_camel_case_types)]
9514 pub struct FPFastMathMode {
9515     pub not_nan: bool,
9516     pub not_inf: bool,
9517     pub nsz: bool,
9518     pub allow_recip: bool,
9519     pub fast: bool,
9520     pub allow_contract_fast_intel: bool,
9521     pub allow_reassoc_intel: bool,
9522 }
9523 impl FPFastMathMode {
9524     #[allow(dead_code)]
parse(reader: &mut InstructionReader<'_>) -> Result<FPFastMathMode, ParseError>9525     fn parse(reader: &mut InstructionReader<'_>) -> Result<FPFastMathMode, ParseError> {
9526         let value = reader.next_u32()?;
9527         Ok(Self {
9528             not_nan: value & 1u32 != 0,
9529             not_inf: value & 2u32 != 0,
9530             nsz: value & 4u32 != 0,
9531             allow_recip: value & 8u32 != 0,
9532             fast: value & 16u32 != 0,
9533             allow_contract_fast_intel: value & 65536u32 != 0,
9534             allow_reassoc_intel: value & 131072u32 != 0,
9535         })
9536     }
9537 }
9538 #[derive(Clone, Copy, Debug, PartialEq, Eq)]
9539 #[allow(non_camel_case_types)]
9540 pub struct SelectionControl {
9541     pub flatten: bool,
9542     pub dont_flatten: bool,
9543 }
9544 impl SelectionControl {
9545     #[allow(dead_code)]
parse(reader: &mut InstructionReader<'_>) -> Result<SelectionControl, ParseError>9546     fn parse(reader: &mut InstructionReader<'_>) -> Result<SelectionControl, ParseError> {
9547         let value = reader.next_u32()?;
9548         Ok(Self {
9549             flatten: value & 1u32 != 0,
9550             dont_flatten: value & 2u32 != 0,
9551         })
9552     }
9553 }
9554 #[derive(Clone, Copy, Debug, PartialEq, Eq)]
9555 #[allow(non_camel_case_types)]
9556 pub struct LoopControl {
9557     pub unroll: bool,
9558     pub dont_unroll: bool,
9559     pub dependency_infinite: bool,
9560     pub dependency_length: Option<u32>,
9561     pub min_iterations: Option<u32>,
9562     pub max_iterations: Option<u32>,
9563     pub iteration_multiple: Option<u32>,
9564     pub peel_count: Option<u32>,
9565     pub partial_count: Option<u32>,
9566     pub initiation_interval_intel: Option<u32>,
9567     pub max_concurrency_intel: Option<u32>,
9568     pub dependency_array_intel: Option<u32>,
9569     pub pipeline_enable_intel: Option<u32>,
9570     pub loop_coalesce_intel: Option<u32>,
9571     pub max_interleaving_intel: Option<u32>,
9572     pub speculated_iterations_intel: Option<u32>,
9573     pub no_fusion_intel: Option<u32>,
9574 }
9575 impl LoopControl {
9576     #[allow(dead_code)]
parse(reader: &mut InstructionReader<'_>) -> Result<LoopControl, ParseError>9577     fn parse(reader: &mut InstructionReader<'_>) -> Result<LoopControl, ParseError> {
9578         let value = reader.next_u32()?;
9579         Ok(Self {
9580             unroll: value & 1u32 != 0,
9581             dont_unroll: value & 2u32 != 0,
9582             dependency_infinite: value & 4u32 != 0,
9583             dependency_length: if value & 8u32 != 0 {
9584                 Some(reader.next_u32()?)
9585             } else {
9586                 None
9587             },
9588             min_iterations: if value & 16u32 != 0 {
9589                 Some(reader.next_u32()?)
9590             } else {
9591                 None
9592             },
9593             max_iterations: if value & 32u32 != 0 {
9594                 Some(reader.next_u32()?)
9595             } else {
9596                 None
9597             },
9598             iteration_multiple: if value & 64u32 != 0 {
9599                 Some(reader.next_u32()?)
9600             } else {
9601                 None
9602             },
9603             peel_count: if value & 128u32 != 0 {
9604                 Some(reader.next_u32()?)
9605             } else {
9606                 None
9607             },
9608             partial_count: if value & 256u32 != 0 {
9609                 Some(reader.next_u32()?)
9610             } else {
9611                 None
9612             },
9613             initiation_interval_intel: if value & 65536u32 != 0 {
9614                 Some(reader.next_u32()?)
9615             } else {
9616                 None
9617             },
9618             max_concurrency_intel: if value & 131072u32 != 0 {
9619                 Some(reader.next_u32()?)
9620             } else {
9621                 None
9622             },
9623             dependency_array_intel: if value & 262144u32 != 0 {
9624                 Some(reader.next_u32()?)
9625             } else {
9626                 None
9627             },
9628             pipeline_enable_intel: if value & 524288u32 != 0 {
9629                 Some(reader.next_u32()?)
9630             } else {
9631                 None
9632             },
9633             loop_coalesce_intel: if value & 1048576u32 != 0 {
9634                 Some(reader.next_u32()?)
9635             } else {
9636                 None
9637             },
9638             max_interleaving_intel: if value & 2097152u32 != 0 {
9639                 Some(reader.next_u32()?)
9640             } else {
9641                 None
9642             },
9643             speculated_iterations_intel: if value & 4194304u32 != 0 {
9644                 Some(reader.next_u32()?)
9645             } else {
9646                 None
9647             },
9648             no_fusion_intel: if value & 8388608u32 != 0 {
9649                 Some(reader.next_u32()?)
9650             } else {
9651                 None
9652             },
9653         })
9654     }
9655 }
9656 #[derive(Clone, Copy, Debug, PartialEq, Eq)]
9657 #[allow(non_camel_case_types)]
9658 pub struct FunctionControl {
9659     pub inline: bool,
9660     pub dont_inline: bool,
9661     pub pure: bool,
9662     pub constant: bool,
9663     pub opt_none_intel: bool,
9664 }
9665 impl FunctionControl {
9666     #[allow(dead_code)]
parse(reader: &mut InstructionReader<'_>) -> Result<FunctionControl, ParseError>9667     fn parse(reader: &mut InstructionReader<'_>) -> Result<FunctionControl, ParseError> {
9668         let value = reader.next_u32()?;
9669         Ok(Self {
9670             inline: value & 1u32 != 0,
9671             dont_inline: value & 2u32 != 0,
9672             pure: value & 4u32 != 0,
9673             constant: value & 8u32 != 0,
9674             opt_none_intel: value & 65536u32 != 0,
9675         })
9676     }
9677 }
9678 #[derive(Clone, Copy, Debug, PartialEq, Eq)]
9679 #[allow(non_camel_case_types)]
9680 pub struct MemorySemantics {
9681     pub acquire: bool,
9682     pub release: bool,
9683     pub acquire_release: bool,
9684     pub sequentially_consistent: bool,
9685     pub uniform_memory: bool,
9686     pub subgroup_memory: bool,
9687     pub workgroup_memory: bool,
9688     pub cross_workgroup_memory: bool,
9689     pub atomic_counter_memory: bool,
9690     pub image_memory: bool,
9691     pub output_memory: bool,
9692     pub make_available: bool,
9693     pub make_visible: bool,
9694     pub volatile: bool,
9695 }
9696 impl MemorySemantics {
9697     #[allow(dead_code)]
parse(reader: &mut InstructionReader<'_>) -> Result<MemorySemantics, ParseError>9698     fn parse(reader: &mut InstructionReader<'_>) -> Result<MemorySemantics, ParseError> {
9699         let value = reader.next_u32()?;
9700         Ok(Self {
9701             acquire: value & 2u32 != 0,
9702             release: value & 4u32 != 0,
9703             acquire_release: value & 8u32 != 0,
9704             sequentially_consistent: value & 16u32 != 0,
9705             uniform_memory: value & 64u32 != 0,
9706             subgroup_memory: value & 128u32 != 0,
9707             workgroup_memory: value & 256u32 != 0,
9708             cross_workgroup_memory: value & 512u32 != 0,
9709             atomic_counter_memory: value & 1024u32 != 0,
9710             image_memory: value & 2048u32 != 0,
9711             output_memory: value & 4096u32 != 0,
9712             make_available: value & 8192u32 != 0,
9713             make_visible: value & 16384u32 != 0,
9714             volatile: value & 32768u32 != 0,
9715         })
9716     }
9717 }
9718 #[derive(Clone, Copy, Debug, PartialEq, Eq)]
9719 #[allow(non_camel_case_types)]
9720 pub struct MemoryAccess {
9721     pub volatile: bool,
9722     pub aligned: Option<u32>,
9723     pub nontemporal: bool,
9724     pub make_pointer_available: Option<Id>,
9725     pub make_pointer_visible: Option<Id>,
9726     pub non_private_pointer: bool,
9727 }
9728 impl MemoryAccess {
9729     #[allow(dead_code)]
parse(reader: &mut InstructionReader<'_>) -> Result<MemoryAccess, ParseError>9730     fn parse(reader: &mut InstructionReader<'_>) -> Result<MemoryAccess, ParseError> {
9731         let value = reader.next_u32()?;
9732         Ok(Self {
9733             volatile: value & 1u32 != 0,
9734             aligned: if value & 2u32 != 0 {
9735                 Some(reader.next_u32()?)
9736             } else {
9737                 None
9738             },
9739             nontemporal: value & 4u32 != 0,
9740             make_pointer_available: if value & 8u32 != 0 {
9741                 Some(Id(reader.next_u32()?))
9742             } else {
9743                 None
9744             },
9745             make_pointer_visible: if value & 16u32 != 0 {
9746                 Some(Id(reader.next_u32()?))
9747             } else {
9748                 None
9749             },
9750             non_private_pointer: value & 32u32 != 0,
9751         })
9752     }
9753 }
9754 #[derive(Clone, Copy, Debug, PartialEq, Eq)]
9755 #[allow(non_camel_case_types)]
9756 pub struct KernelProfilingInfo {
9757     pub cmd_exec_time: bool,
9758 }
9759 impl KernelProfilingInfo {
9760     #[allow(dead_code)]
parse(reader: &mut InstructionReader<'_>) -> Result<KernelProfilingInfo, ParseError>9761     fn parse(reader: &mut InstructionReader<'_>) -> Result<KernelProfilingInfo, ParseError> {
9762         let value = reader.next_u32()?;
9763         Ok(Self {
9764             cmd_exec_time: value & 1u32 != 0,
9765         })
9766     }
9767 }
9768 #[derive(Clone, Copy, Debug, PartialEq, Eq)]
9769 #[allow(non_camel_case_types)]
9770 pub struct RayFlags {
9771     pub opaque_khr: bool,
9772     pub no_opaque_khr: bool,
9773     pub terminate_on_first_hit_khr: bool,
9774     pub skip_closest_hit_shader_khr: bool,
9775     pub cull_back_facing_triangles_khr: bool,
9776     pub cull_front_facing_triangles_khr: bool,
9777     pub cull_opaque_khr: bool,
9778     pub cull_no_opaque_khr: bool,
9779     pub skip_triangles_khr: bool,
9780     pub skip_aab_bs_khr: bool,
9781 }
9782 impl RayFlags {
9783     #[allow(dead_code)]
parse(reader: &mut InstructionReader<'_>) -> Result<RayFlags, ParseError>9784     fn parse(reader: &mut InstructionReader<'_>) -> Result<RayFlags, ParseError> {
9785         let value = reader.next_u32()?;
9786         Ok(Self {
9787             opaque_khr: value & 1u32 != 0,
9788             no_opaque_khr: value & 2u32 != 0,
9789             terminate_on_first_hit_khr: value & 4u32 != 0,
9790             skip_closest_hit_shader_khr: value & 8u32 != 0,
9791             cull_back_facing_triangles_khr: value & 16u32 != 0,
9792             cull_front_facing_triangles_khr: value & 32u32 != 0,
9793             cull_opaque_khr: value & 64u32 != 0,
9794             cull_no_opaque_khr: value & 128u32 != 0,
9795             skip_triangles_khr: value & 256u32 != 0,
9796             skip_aab_bs_khr: value & 512u32 != 0,
9797         })
9798     }
9799 }
9800 #[derive(Clone, Copy, Debug, PartialEq, Eq)]
9801 #[allow(non_camel_case_types)]
9802 pub struct FragmentShadingRate {
9803     pub vertical2_pixels: bool,
9804     pub vertical4_pixels: bool,
9805     pub horizontal2_pixels: bool,
9806     pub horizontal4_pixels: bool,
9807 }
9808 impl FragmentShadingRate {
9809     #[allow(dead_code)]
parse(reader: &mut InstructionReader<'_>) -> Result<FragmentShadingRate, ParseError>9810     fn parse(reader: &mut InstructionReader<'_>) -> Result<FragmentShadingRate, ParseError> {
9811         let value = reader.next_u32()?;
9812         Ok(Self {
9813             vertical2_pixels: value & 1u32 != 0,
9814             vertical4_pixels: value & 2u32 != 0,
9815             horizontal2_pixels: value & 4u32 != 0,
9816             horizontal4_pixels: value & 8u32 != 0,
9817         })
9818     }
9819 }
9820 #[derive(Clone, Copy, Debug, PartialEq, Eq)]
9821 #[allow(non_camel_case_types)]
9822 pub enum SourceLanguage {
9823     Unknown,
9824     ESSL,
9825     GLSL,
9826     OpenCL_C,
9827     OpenCL_CPP,
9828     HLSL,
9829     CPP_for_OpenCL,
9830 }
9831 impl SourceLanguage {
9832     #[allow(dead_code)]
parse(reader: &mut InstructionReader<'_>) -> Result<SourceLanguage, ParseError>9833     fn parse(reader: &mut InstructionReader<'_>) -> Result<SourceLanguage, ParseError> {
9834         Ok(match reader.next_u32()? {
9835             0u32 => Self::Unknown,
9836             1u32 => Self::ESSL,
9837             2u32 => Self::GLSL,
9838             3u32 => Self::OpenCL_C,
9839             4u32 => Self::OpenCL_CPP,
9840             5u32 => Self::HLSL,
9841             6u32 => Self::CPP_for_OpenCL,
9842             value => {
9843                 return Err(reader.map_err(ParseErrors::UnknownEnumerant("SourceLanguage", value)))
9844             }
9845         })
9846     }
9847 }
9848 #[derive(Clone, Copy, Debug, Hash, PartialEq, Eq)]
9849 #[allow(non_camel_case_types)]
9850 pub enum ExecutionModel {
9851     Vertex,
9852     TessellationControl,
9853     TessellationEvaluation,
9854     Geometry,
9855     Fragment,
9856     GLCompute,
9857     Kernel,
9858     TaskNV,
9859     MeshNV,
9860     RayGenerationKHR,
9861     IntersectionKHR,
9862     AnyHitKHR,
9863     ClosestHitKHR,
9864     MissKHR,
9865     CallableKHR,
9866 }
9867 impl ExecutionModel {
9868     #[allow(dead_code)]
parse(reader: &mut InstructionReader<'_>) -> Result<ExecutionModel, ParseError>9869     fn parse(reader: &mut InstructionReader<'_>) -> Result<ExecutionModel, ParseError> {
9870         Ok(match reader.next_u32()? {
9871             0u32 => Self::Vertex,
9872             1u32 => Self::TessellationControl,
9873             2u32 => Self::TessellationEvaluation,
9874             3u32 => Self::Geometry,
9875             4u32 => Self::Fragment,
9876             5u32 => Self::GLCompute,
9877             6u32 => Self::Kernel,
9878             5267u32 => Self::TaskNV,
9879             5268u32 => Self::MeshNV,
9880             5313u32 => Self::RayGenerationKHR,
9881             5314u32 => Self::IntersectionKHR,
9882             5315u32 => Self::AnyHitKHR,
9883             5316u32 => Self::ClosestHitKHR,
9884             5317u32 => Self::MissKHR,
9885             5318u32 => Self::CallableKHR,
9886             value => {
9887                 return Err(reader.map_err(ParseErrors::UnknownEnumerant("ExecutionModel", value)))
9888             }
9889         })
9890     }
9891 }
9892 #[derive(Clone, Copy, Debug, PartialEq, Eq)]
9893 #[allow(non_camel_case_types)]
9894 pub enum AddressingModel {
9895     Logical,
9896     Physical32,
9897     Physical64,
9898     PhysicalStorageBuffer64,
9899 }
9900 impl AddressingModel {
9901     #[allow(dead_code)]
parse(reader: &mut InstructionReader<'_>) -> Result<AddressingModel, ParseError>9902     fn parse(reader: &mut InstructionReader<'_>) -> Result<AddressingModel, ParseError> {
9903         Ok(match reader.next_u32()? {
9904             0u32 => Self::Logical,
9905             1u32 => Self::Physical32,
9906             2u32 => Self::Physical64,
9907             5348u32 => Self::PhysicalStorageBuffer64,
9908             value => {
9909                 return Err(reader.map_err(ParseErrors::UnknownEnumerant("AddressingModel", value)))
9910             }
9911         })
9912     }
9913 }
9914 #[derive(Clone, Copy, Debug, PartialEq, Eq)]
9915 #[allow(non_camel_case_types)]
9916 pub enum MemoryModel {
9917     Simple,
9918     GLSL450,
9919     OpenCL,
9920     Vulkan,
9921 }
9922 impl MemoryModel {
9923     #[allow(dead_code)]
parse(reader: &mut InstructionReader<'_>) -> Result<MemoryModel, ParseError>9924     fn parse(reader: &mut InstructionReader<'_>) -> Result<MemoryModel, ParseError> {
9925         Ok(match reader.next_u32()? {
9926             0u32 => Self::Simple,
9927             1u32 => Self::GLSL450,
9928             2u32 => Self::OpenCL,
9929             3u32 => Self::Vulkan,
9930             value => {
9931                 return Err(reader.map_err(ParseErrors::UnknownEnumerant("MemoryModel", value)))
9932             }
9933         })
9934     }
9935 }
9936 #[derive(Clone, Copy, Debug, PartialEq, Eq)]
9937 #[allow(non_camel_case_types)]
9938 pub enum ExecutionMode {
9939     Invocations {
9940         number_of_invocation_invocations: u32,
9941     },
9942     SpacingEqual,
9943     SpacingFractionalEven,
9944     SpacingFractionalOdd,
9945     VertexOrderCw,
9946     VertexOrderCcw,
9947     PixelCenterInteger,
9948     OriginUpperLeft,
9949     OriginLowerLeft,
9950     EarlyFragmentTests,
9951     PointMode,
9952     Xfb,
9953     DepthReplacing,
9954     DepthGreater,
9955     DepthLess,
9956     DepthUnchanged,
9957     LocalSize {
9958         x_size: u32,
9959         y_size: u32,
9960         z_size: u32,
9961     },
9962     LocalSizeHint {
9963         x_size: u32,
9964         y_size: u32,
9965         z_size: u32,
9966     },
9967     InputPoints,
9968     InputLines,
9969     InputLinesAdjacency,
9970     Triangles,
9971     InputTrianglesAdjacency,
9972     Quads,
9973     Isolines,
9974     OutputVertices {
9975         vertex_count: u32,
9976     },
9977     OutputPoints,
9978     OutputLineStrip,
9979     OutputTriangleStrip,
9980     VecTypeHint {
9981         vector_type: u32,
9982     },
9983     ContractionOff,
9984     Initializer,
9985     Finalizer,
9986     SubgroupSize {
9987         subgroup_size: u32,
9988     },
9989     SubgroupsPerWorkgroup {
9990         subgroups_per_workgroup: u32,
9991     },
9992     SubgroupsPerWorkgroupId {
9993         subgroups_per_workgroup: Id,
9994     },
9995     LocalSizeId {
9996         x_size: Id,
9997         y_size: Id,
9998         z_size: Id,
9999     },
10000     LocalSizeHintId {
10001         x_size_hint: Id,
10002         y_size_hint: Id,
10003         z_size_hint: Id,
10004     },
10005     SubgroupUniformControlFlowKHR,
10006     PostDepthCoverage,
10007     DenormPreserve {
10008         target_width: u32,
10009     },
10010     DenormFlushToZero {
10011         target_width: u32,
10012     },
10013     SignedZeroInfNanPreserve {
10014         target_width: u32,
10015     },
10016     RoundingModeRTE {
10017         target_width: u32,
10018     },
10019     RoundingModeRTZ {
10020         target_width: u32,
10021     },
10022     StencilRefReplacingEXT,
10023     OutputLinesNV,
10024     OutputPrimitivesNV {
10025         primitive_count: u32,
10026     },
10027     DerivativeGroupQuadsNV,
10028     DerivativeGroupLinearNV,
10029     OutputTrianglesNV,
10030     PixelInterlockOrderedEXT,
10031     PixelInterlockUnorderedEXT,
10032     SampleInterlockOrderedEXT,
10033     SampleInterlockUnorderedEXT,
10034     ShadingRateInterlockOrderedEXT,
10035     ShadingRateInterlockUnorderedEXT,
10036     SharedLocalMemorySizeINTEL {
10037         size: u32,
10038     },
10039     RoundingModeRTPINTEL {
10040         target_width: u32,
10041     },
10042     RoundingModeRTNINTEL {
10043         target_width: u32,
10044     },
10045     FloatingPointModeALTINTEL {
10046         target_width: u32,
10047     },
10048     FloatingPointModeIEEEINTEL {
10049         target_width: u32,
10050     },
10051     MaxWorkgroupSizeINTEL {
10052         max_x_size: u32,
10053         max_y_size: u32,
10054         max_z_size: u32,
10055     },
10056     MaxWorkDimINTEL {
10057         max_dimensions: u32,
10058     },
10059     NoGlobalOffsetINTEL,
10060     NumSIMDWorkitemsINTEL {
10061         vector_width: u32,
10062     },
10063     SchedulerTargetFmaxMhzINTEL {
10064         target_fmax: u32,
10065     },
10066 }
10067 impl ExecutionMode {
10068     #[allow(dead_code)]
parse(reader: &mut InstructionReader<'_>) -> Result<ExecutionMode, ParseError>10069     fn parse(reader: &mut InstructionReader<'_>) -> Result<ExecutionMode, ParseError> {
10070         Ok(match reader.next_u32()? {
10071             0u32 => Self::Invocations {
10072                 number_of_invocation_invocations: reader.next_u32()?,
10073             },
10074             1u32 => Self::SpacingEqual,
10075             2u32 => Self::SpacingFractionalEven,
10076             3u32 => Self::SpacingFractionalOdd,
10077             4u32 => Self::VertexOrderCw,
10078             5u32 => Self::VertexOrderCcw,
10079             6u32 => Self::PixelCenterInteger,
10080             7u32 => Self::OriginUpperLeft,
10081             8u32 => Self::OriginLowerLeft,
10082             9u32 => Self::EarlyFragmentTests,
10083             10u32 => Self::PointMode,
10084             11u32 => Self::Xfb,
10085             12u32 => Self::DepthReplacing,
10086             14u32 => Self::DepthGreater,
10087             15u32 => Self::DepthLess,
10088             16u32 => Self::DepthUnchanged,
10089             17u32 => Self::LocalSize {
10090                 x_size: reader.next_u32()?,
10091                 y_size: reader.next_u32()?,
10092                 z_size: reader.next_u32()?,
10093             },
10094             18u32 => Self::LocalSizeHint {
10095                 x_size: reader.next_u32()?,
10096                 y_size: reader.next_u32()?,
10097                 z_size: reader.next_u32()?,
10098             },
10099             19u32 => Self::InputPoints,
10100             20u32 => Self::InputLines,
10101             21u32 => Self::InputLinesAdjacency,
10102             22u32 => Self::Triangles,
10103             23u32 => Self::InputTrianglesAdjacency,
10104             24u32 => Self::Quads,
10105             25u32 => Self::Isolines,
10106             26u32 => Self::OutputVertices {
10107                 vertex_count: reader.next_u32()?,
10108             },
10109             27u32 => Self::OutputPoints,
10110             28u32 => Self::OutputLineStrip,
10111             29u32 => Self::OutputTriangleStrip,
10112             30u32 => Self::VecTypeHint {
10113                 vector_type: reader.next_u32()?,
10114             },
10115             31u32 => Self::ContractionOff,
10116             33u32 => Self::Initializer,
10117             34u32 => Self::Finalizer,
10118             35u32 => Self::SubgroupSize {
10119                 subgroup_size: reader.next_u32()?,
10120             },
10121             36u32 => Self::SubgroupsPerWorkgroup {
10122                 subgroups_per_workgroup: reader.next_u32()?,
10123             },
10124             37u32 => Self::SubgroupsPerWorkgroupId {
10125                 subgroups_per_workgroup: Id(reader.next_u32()?),
10126             },
10127             38u32 => Self::LocalSizeId {
10128                 x_size: Id(reader.next_u32()?),
10129                 y_size: Id(reader.next_u32()?),
10130                 z_size: Id(reader.next_u32()?),
10131             },
10132             39u32 => Self::LocalSizeHintId {
10133                 x_size_hint: Id(reader.next_u32()?),
10134                 y_size_hint: Id(reader.next_u32()?),
10135                 z_size_hint: Id(reader.next_u32()?),
10136             },
10137             4421u32 => Self::SubgroupUniformControlFlowKHR,
10138             4446u32 => Self::PostDepthCoverage,
10139             4459u32 => Self::DenormPreserve {
10140                 target_width: reader.next_u32()?,
10141             },
10142             4460u32 => Self::DenormFlushToZero {
10143                 target_width: reader.next_u32()?,
10144             },
10145             4461u32 => Self::SignedZeroInfNanPreserve {
10146                 target_width: reader.next_u32()?,
10147             },
10148             4462u32 => Self::RoundingModeRTE {
10149                 target_width: reader.next_u32()?,
10150             },
10151             4463u32 => Self::RoundingModeRTZ {
10152                 target_width: reader.next_u32()?,
10153             },
10154             5027u32 => Self::StencilRefReplacingEXT,
10155             5269u32 => Self::OutputLinesNV,
10156             5270u32 => Self::OutputPrimitivesNV {
10157                 primitive_count: reader.next_u32()?,
10158             },
10159             5289u32 => Self::DerivativeGroupQuadsNV,
10160             5290u32 => Self::DerivativeGroupLinearNV,
10161             5298u32 => Self::OutputTrianglesNV,
10162             5366u32 => Self::PixelInterlockOrderedEXT,
10163             5367u32 => Self::PixelInterlockUnorderedEXT,
10164             5368u32 => Self::SampleInterlockOrderedEXT,
10165             5369u32 => Self::SampleInterlockUnorderedEXT,
10166             5370u32 => Self::ShadingRateInterlockOrderedEXT,
10167             5371u32 => Self::ShadingRateInterlockUnorderedEXT,
10168             5618u32 => Self::SharedLocalMemorySizeINTEL {
10169                 size: reader.next_u32()?,
10170             },
10171             5620u32 => Self::RoundingModeRTPINTEL {
10172                 target_width: reader.next_u32()?,
10173             },
10174             5621u32 => Self::RoundingModeRTNINTEL {
10175                 target_width: reader.next_u32()?,
10176             },
10177             5622u32 => Self::FloatingPointModeALTINTEL {
10178                 target_width: reader.next_u32()?,
10179             },
10180             5623u32 => Self::FloatingPointModeIEEEINTEL {
10181                 target_width: reader.next_u32()?,
10182             },
10183             5893u32 => Self::MaxWorkgroupSizeINTEL {
10184                 max_x_size: reader.next_u32()?,
10185                 max_y_size: reader.next_u32()?,
10186                 max_z_size: reader.next_u32()?,
10187             },
10188             5894u32 => Self::MaxWorkDimINTEL {
10189                 max_dimensions: reader.next_u32()?,
10190             },
10191             5895u32 => Self::NoGlobalOffsetINTEL,
10192             5896u32 => Self::NumSIMDWorkitemsINTEL {
10193                 vector_width: reader.next_u32()?,
10194             },
10195             5903u32 => Self::SchedulerTargetFmaxMhzINTEL {
10196                 target_fmax: reader.next_u32()?,
10197             },
10198             value => {
10199                 return Err(reader.map_err(ParseErrors::UnknownEnumerant("ExecutionMode", value)))
10200             }
10201         })
10202     }
10203 }
10204 #[derive(Clone, Copy, Debug, PartialEq, Eq)]
10205 #[allow(non_camel_case_types)]
10206 pub enum StorageClass {
10207     UniformConstant,
10208     Input,
10209     Uniform,
10210     Output,
10211     Workgroup,
10212     CrossWorkgroup,
10213     Private,
10214     Function,
10215     Generic,
10216     PushConstant,
10217     AtomicCounter,
10218     Image,
10219     StorageBuffer,
10220     CallableDataKHR,
10221     IncomingCallableDataKHR,
10222     RayPayloadKHR,
10223     HitAttributeKHR,
10224     IncomingRayPayloadKHR,
10225     ShaderRecordBufferKHR,
10226     PhysicalStorageBuffer,
10227     CodeSectionINTEL,
10228     DeviceOnlyINTEL,
10229     HostOnlyINTEL,
10230 }
10231 impl StorageClass {
10232     #[allow(dead_code)]
parse(reader: &mut InstructionReader<'_>) -> Result<StorageClass, ParseError>10233     fn parse(reader: &mut InstructionReader<'_>) -> Result<StorageClass, ParseError> {
10234         Ok(match reader.next_u32()? {
10235             0u32 => Self::UniformConstant,
10236             1u32 => Self::Input,
10237             2u32 => Self::Uniform,
10238             3u32 => Self::Output,
10239             4u32 => Self::Workgroup,
10240             5u32 => Self::CrossWorkgroup,
10241             6u32 => Self::Private,
10242             7u32 => Self::Function,
10243             8u32 => Self::Generic,
10244             9u32 => Self::PushConstant,
10245             10u32 => Self::AtomicCounter,
10246             11u32 => Self::Image,
10247             12u32 => Self::StorageBuffer,
10248             5328u32 => Self::CallableDataKHR,
10249             5329u32 => Self::IncomingCallableDataKHR,
10250             5338u32 => Self::RayPayloadKHR,
10251             5339u32 => Self::HitAttributeKHR,
10252             5342u32 => Self::IncomingRayPayloadKHR,
10253             5343u32 => Self::ShaderRecordBufferKHR,
10254             5349u32 => Self::PhysicalStorageBuffer,
10255             5605u32 => Self::CodeSectionINTEL,
10256             5936u32 => Self::DeviceOnlyINTEL,
10257             5937u32 => Self::HostOnlyINTEL,
10258             value => {
10259                 return Err(reader.map_err(ParseErrors::UnknownEnumerant("StorageClass", value)))
10260             }
10261         })
10262     }
10263 }
10264 #[derive(Clone, Copy, Debug, PartialEq, Eq)]
10265 #[allow(non_camel_case_types)]
10266 pub enum Dim {
10267     Dim1D,
10268     Dim2D,
10269     Dim3D,
10270     Cube,
10271     Rect,
10272     Buffer,
10273     SubpassData,
10274 }
10275 impl Dim {
10276     #[allow(dead_code)]
parse(reader: &mut InstructionReader<'_>) -> Result<Dim, ParseError>10277     fn parse(reader: &mut InstructionReader<'_>) -> Result<Dim, ParseError> {
10278         Ok(match reader.next_u32()? {
10279             0u32 => Self::Dim1D,
10280             1u32 => Self::Dim2D,
10281             2u32 => Self::Dim3D,
10282             3u32 => Self::Cube,
10283             4u32 => Self::Rect,
10284             5u32 => Self::Buffer,
10285             6u32 => Self::SubpassData,
10286             value => return Err(reader.map_err(ParseErrors::UnknownEnumerant("Dim", value))),
10287         })
10288     }
10289 }
10290 #[derive(Clone, Copy, Debug, PartialEq, Eq)]
10291 #[allow(non_camel_case_types)]
10292 pub enum SamplerAddressingMode {
10293     None,
10294     ClampToEdge,
10295     Clamp,
10296     Repeat,
10297     RepeatMirrored,
10298 }
10299 impl SamplerAddressingMode {
10300     #[allow(dead_code)]
parse(reader: &mut InstructionReader<'_>) -> Result<SamplerAddressingMode, ParseError>10301     fn parse(reader: &mut InstructionReader<'_>) -> Result<SamplerAddressingMode, ParseError> {
10302         Ok(match reader.next_u32()? {
10303             0u32 => Self::None,
10304             1u32 => Self::ClampToEdge,
10305             2u32 => Self::Clamp,
10306             3u32 => Self::Repeat,
10307             4u32 => Self::RepeatMirrored,
10308             value => {
10309                 return Err(reader.map_err(ParseErrors::UnknownEnumerant(
10310                     "SamplerAddressingMode",
10311                     value,
10312                 )))
10313             }
10314         })
10315     }
10316 }
10317 #[derive(Clone, Copy, Debug, PartialEq, Eq)]
10318 #[allow(non_camel_case_types)]
10319 pub enum SamplerFilterMode {
10320     Nearest,
10321     Linear,
10322 }
10323 impl SamplerFilterMode {
10324     #[allow(dead_code)]
parse(reader: &mut InstructionReader<'_>) -> Result<SamplerFilterMode, ParseError>10325     fn parse(reader: &mut InstructionReader<'_>) -> Result<SamplerFilterMode, ParseError> {
10326         Ok(match reader.next_u32()? {
10327             0u32 => Self::Nearest,
10328             1u32 => Self::Linear,
10329             value => {
10330                 return Err(
10331                     reader.map_err(ParseErrors::UnknownEnumerant("SamplerFilterMode", value))
10332                 )
10333             }
10334         })
10335     }
10336 }
10337 #[derive(Clone, Copy, Debug, PartialEq, Eq)]
10338 #[allow(non_camel_case_types)]
10339 pub enum ImageFormat {
10340     Unknown,
10341     Rgba32f,
10342     Rgba16f,
10343     R32f,
10344     Rgba8,
10345     Rgba8Snorm,
10346     Rg32f,
10347     Rg16f,
10348     R11fG11fB10f,
10349     R16f,
10350     Rgba16,
10351     Rgb10A2,
10352     Rg16,
10353     Rg8,
10354     R16,
10355     R8,
10356     Rgba16Snorm,
10357     Rg16Snorm,
10358     Rg8Snorm,
10359     R16Snorm,
10360     R8Snorm,
10361     Rgba32i,
10362     Rgba16i,
10363     Rgba8i,
10364     R32i,
10365     Rg32i,
10366     Rg16i,
10367     Rg8i,
10368     R16i,
10369     R8i,
10370     Rgba32ui,
10371     Rgba16ui,
10372     Rgba8ui,
10373     R32ui,
10374     Rgb10a2ui,
10375     Rg32ui,
10376     Rg16ui,
10377     Rg8ui,
10378     R16ui,
10379     R8ui,
10380     R64ui,
10381     R64i,
10382 }
10383 impl ImageFormat {
10384     #[allow(dead_code)]
parse(reader: &mut InstructionReader<'_>) -> Result<ImageFormat, ParseError>10385     fn parse(reader: &mut InstructionReader<'_>) -> Result<ImageFormat, ParseError> {
10386         Ok(match reader.next_u32()? {
10387             0u32 => Self::Unknown,
10388             1u32 => Self::Rgba32f,
10389             2u32 => Self::Rgba16f,
10390             3u32 => Self::R32f,
10391             4u32 => Self::Rgba8,
10392             5u32 => Self::Rgba8Snorm,
10393             6u32 => Self::Rg32f,
10394             7u32 => Self::Rg16f,
10395             8u32 => Self::R11fG11fB10f,
10396             9u32 => Self::R16f,
10397             10u32 => Self::Rgba16,
10398             11u32 => Self::Rgb10A2,
10399             12u32 => Self::Rg16,
10400             13u32 => Self::Rg8,
10401             14u32 => Self::R16,
10402             15u32 => Self::R8,
10403             16u32 => Self::Rgba16Snorm,
10404             17u32 => Self::Rg16Snorm,
10405             18u32 => Self::Rg8Snorm,
10406             19u32 => Self::R16Snorm,
10407             20u32 => Self::R8Snorm,
10408             21u32 => Self::Rgba32i,
10409             22u32 => Self::Rgba16i,
10410             23u32 => Self::Rgba8i,
10411             24u32 => Self::R32i,
10412             25u32 => Self::Rg32i,
10413             26u32 => Self::Rg16i,
10414             27u32 => Self::Rg8i,
10415             28u32 => Self::R16i,
10416             29u32 => Self::R8i,
10417             30u32 => Self::Rgba32ui,
10418             31u32 => Self::Rgba16ui,
10419             32u32 => Self::Rgba8ui,
10420             33u32 => Self::R32ui,
10421             34u32 => Self::Rgb10a2ui,
10422             35u32 => Self::Rg32ui,
10423             36u32 => Self::Rg16ui,
10424             37u32 => Self::Rg8ui,
10425             38u32 => Self::R16ui,
10426             39u32 => Self::R8ui,
10427             40u32 => Self::R64ui,
10428             41u32 => Self::R64i,
10429             value => {
10430                 return Err(reader.map_err(ParseErrors::UnknownEnumerant("ImageFormat", value)))
10431             }
10432         })
10433     }
10434 }
10435 #[derive(Clone, Copy, Debug, PartialEq, Eq)]
10436 #[allow(non_camel_case_types)]
10437 pub enum ImageChannelOrder {
10438     R,
10439     A,
10440     RG,
10441     RA,
10442     RGB,
10443     RGBA,
10444     BGRA,
10445     ARGB,
10446     Intensity,
10447     Luminance,
10448     Rx,
10449     RGx,
10450     RGBx,
10451     Depth,
10452     DepthStencil,
10453     sRGB,
10454     sRGBx,
10455     sRGBA,
10456     sBGRA,
10457     ABGR,
10458 }
10459 impl ImageChannelOrder {
10460     #[allow(dead_code)]
parse(reader: &mut InstructionReader<'_>) -> Result<ImageChannelOrder, ParseError>10461     fn parse(reader: &mut InstructionReader<'_>) -> Result<ImageChannelOrder, ParseError> {
10462         Ok(match reader.next_u32()? {
10463             0u32 => Self::R,
10464             1u32 => Self::A,
10465             2u32 => Self::RG,
10466             3u32 => Self::RA,
10467             4u32 => Self::RGB,
10468             5u32 => Self::RGBA,
10469             6u32 => Self::BGRA,
10470             7u32 => Self::ARGB,
10471             8u32 => Self::Intensity,
10472             9u32 => Self::Luminance,
10473             10u32 => Self::Rx,
10474             11u32 => Self::RGx,
10475             12u32 => Self::RGBx,
10476             13u32 => Self::Depth,
10477             14u32 => Self::DepthStencil,
10478             15u32 => Self::sRGB,
10479             16u32 => Self::sRGBx,
10480             17u32 => Self::sRGBA,
10481             18u32 => Self::sBGRA,
10482             19u32 => Self::ABGR,
10483             value => {
10484                 return Err(
10485                     reader.map_err(ParseErrors::UnknownEnumerant("ImageChannelOrder", value))
10486                 )
10487             }
10488         })
10489     }
10490 }
10491 #[derive(Clone, Copy, Debug, PartialEq, Eq)]
10492 #[allow(non_camel_case_types)]
10493 pub enum ImageChannelDataType {
10494     SnormInt8,
10495     SnormInt16,
10496     UnormInt8,
10497     UnormInt16,
10498     UnormShort565,
10499     UnormShort555,
10500     UnormInt101010,
10501     SignedInt8,
10502     SignedInt16,
10503     SignedInt32,
10504     UnsignedInt8,
10505     UnsignedInt16,
10506     UnsignedInt32,
10507     HalfFloat,
10508     Float,
10509     UnormInt24,
10510     UnormInt101010_2,
10511 }
10512 impl ImageChannelDataType {
10513     #[allow(dead_code)]
parse(reader: &mut InstructionReader<'_>) -> Result<ImageChannelDataType, ParseError>10514     fn parse(reader: &mut InstructionReader<'_>) -> Result<ImageChannelDataType, ParseError> {
10515         Ok(match reader.next_u32()? {
10516             0u32 => Self::SnormInt8,
10517             1u32 => Self::SnormInt16,
10518             2u32 => Self::UnormInt8,
10519             3u32 => Self::UnormInt16,
10520             4u32 => Self::UnormShort565,
10521             5u32 => Self::UnormShort555,
10522             6u32 => Self::UnormInt101010,
10523             7u32 => Self::SignedInt8,
10524             8u32 => Self::SignedInt16,
10525             9u32 => Self::SignedInt32,
10526             10u32 => Self::UnsignedInt8,
10527             11u32 => Self::UnsignedInt16,
10528             12u32 => Self::UnsignedInt32,
10529             13u32 => Self::HalfFloat,
10530             14u32 => Self::Float,
10531             15u32 => Self::UnormInt24,
10532             16u32 => Self::UnormInt101010_2,
10533             value => {
10534                 return Err(
10535                     reader.map_err(ParseErrors::UnknownEnumerant("ImageChannelDataType", value))
10536                 )
10537             }
10538         })
10539     }
10540 }
10541 #[derive(Clone, Copy, Debug, PartialEq, Eq)]
10542 #[allow(non_camel_case_types)]
10543 pub enum FPRoundingMode {
10544     RTE,
10545     RTZ,
10546     RTP,
10547     RTN,
10548 }
10549 impl FPRoundingMode {
10550     #[allow(dead_code)]
parse(reader: &mut InstructionReader<'_>) -> Result<FPRoundingMode, ParseError>10551     fn parse(reader: &mut InstructionReader<'_>) -> Result<FPRoundingMode, ParseError> {
10552         Ok(match reader.next_u32()? {
10553             0u32 => Self::RTE,
10554             1u32 => Self::RTZ,
10555             2u32 => Self::RTP,
10556             3u32 => Self::RTN,
10557             value => {
10558                 return Err(reader.map_err(ParseErrors::UnknownEnumerant("FPRoundingMode", value)))
10559             }
10560         })
10561     }
10562 }
10563 #[derive(Clone, Copy, Debug, PartialEq, Eq)]
10564 #[allow(non_camel_case_types)]
10565 pub enum FPDenormMode {
10566     Preserve,
10567     FlushToZero,
10568 }
10569 impl FPDenormMode {
10570     #[allow(dead_code)]
parse(reader: &mut InstructionReader<'_>) -> Result<FPDenormMode, ParseError>10571     fn parse(reader: &mut InstructionReader<'_>) -> Result<FPDenormMode, ParseError> {
10572         Ok(match reader.next_u32()? {
10573             0u32 => Self::Preserve,
10574             1u32 => Self::FlushToZero,
10575             value => {
10576                 return Err(reader.map_err(ParseErrors::UnknownEnumerant("FPDenormMode", value)))
10577             }
10578         })
10579     }
10580 }
10581 #[derive(Clone, Copy, Debug, PartialEq, Eq)]
10582 #[allow(non_camel_case_types)]
10583 pub enum QuantizationModes {
10584     TRN,
10585     TRN_ZERO,
10586     RND,
10587     RND_ZERO,
10588     RND_INF,
10589     RND_MIN_INF,
10590     RND_CONV,
10591     RND_CONV_ODD,
10592 }
10593 impl QuantizationModes {
10594     #[allow(dead_code)]
parse(reader: &mut InstructionReader<'_>) -> Result<QuantizationModes, ParseError>10595     fn parse(reader: &mut InstructionReader<'_>) -> Result<QuantizationModes, ParseError> {
10596         Ok(match reader.next_u32()? {
10597             0u32 => Self::TRN,
10598             1u32 => Self::TRN_ZERO,
10599             2u32 => Self::RND,
10600             3u32 => Self::RND_ZERO,
10601             4u32 => Self::RND_INF,
10602             5u32 => Self::RND_MIN_INF,
10603             6u32 => Self::RND_CONV,
10604             7u32 => Self::RND_CONV_ODD,
10605             value => {
10606                 return Err(
10607                     reader.map_err(ParseErrors::UnknownEnumerant("QuantizationModes", value))
10608                 )
10609             }
10610         })
10611     }
10612 }
10613 #[derive(Clone, Copy, Debug, PartialEq, Eq)]
10614 #[allow(non_camel_case_types)]
10615 pub enum FPOperationMode {
10616     IEEE,
10617     ALT,
10618 }
10619 impl FPOperationMode {
10620     #[allow(dead_code)]
parse(reader: &mut InstructionReader<'_>) -> Result<FPOperationMode, ParseError>10621     fn parse(reader: &mut InstructionReader<'_>) -> Result<FPOperationMode, ParseError> {
10622         Ok(match reader.next_u32()? {
10623             0u32 => Self::IEEE,
10624             1u32 => Self::ALT,
10625             value => {
10626                 return Err(reader.map_err(ParseErrors::UnknownEnumerant("FPOperationMode", value)))
10627             }
10628         })
10629     }
10630 }
10631 #[derive(Clone, Copy, Debug, PartialEq, Eq)]
10632 #[allow(non_camel_case_types)]
10633 pub enum OverflowModes {
10634     WRAP,
10635     SAT,
10636     SAT_ZERO,
10637     SAT_SYM,
10638 }
10639 impl OverflowModes {
10640     #[allow(dead_code)]
parse(reader: &mut InstructionReader<'_>) -> Result<OverflowModes, ParseError>10641     fn parse(reader: &mut InstructionReader<'_>) -> Result<OverflowModes, ParseError> {
10642         Ok(match reader.next_u32()? {
10643             0u32 => Self::WRAP,
10644             1u32 => Self::SAT,
10645             2u32 => Self::SAT_ZERO,
10646             3u32 => Self::SAT_SYM,
10647             value => {
10648                 return Err(reader.map_err(ParseErrors::UnknownEnumerant("OverflowModes", value)))
10649             }
10650         })
10651     }
10652 }
10653 #[derive(Clone, Copy, Debug, PartialEq, Eq)]
10654 #[allow(non_camel_case_types)]
10655 pub enum LinkageType {
10656     Export,
10657     Import,
10658     LinkOnceODR,
10659 }
10660 impl LinkageType {
10661     #[allow(dead_code)]
parse(reader: &mut InstructionReader<'_>) -> Result<LinkageType, ParseError>10662     fn parse(reader: &mut InstructionReader<'_>) -> Result<LinkageType, ParseError> {
10663         Ok(match reader.next_u32()? {
10664             0u32 => Self::Export,
10665             1u32 => Self::Import,
10666             2u32 => Self::LinkOnceODR,
10667             value => {
10668                 return Err(reader.map_err(ParseErrors::UnknownEnumerant("LinkageType", value)))
10669             }
10670         })
10671     }
10672 }
10673 #[derive(Clone, Copy, Debug, PartialEq, Eq)]
10674 #[allow(non_camel_case_types)]
10675 pub enum AccessQualifier {
10676     ReadOnly,
10677     WriteOnly,
10678     ReadWrite,
10679 }
10680 impl AccessQualifier {
10681     #[allow(dead_code)]
parse(reader: &mut InstructionReader<'_>) -> Result<AccessQualifier, ParseError>10682     fn parse(reader: &mut InstructionReader<'_>) -> Result<AccessQualifier, ParseError> {
10683         Ok(match reader.next_u32()? {
10684             0u32 => Self::ReadOnly,
10685             1u32 => Self::WriteOnly,
10686             2u32 => Self::ReadWrite,
10687             value => {
10688                 return Err(reader.map_err(ParseErrors::UnknownEnumerant("AccessQualifier", value)))
10689             }
10690         })
10691     }
10692 }
10693 #[derive(Clone, Copy, Debug, PartialEq, Eq)]
10694 #[allow(non_camel_case_types)]
10695 pub enum FunctionParameterAttribute {
10696     Zext,
10697     Sext,
10698     ByVal,
10699     Sret,
10700     NoAlias,
10701     NoCapture,
10702     NoWrite,
10703     NoReadWrite,
10704 }
10705 impl FunctionParameterAttribute {
10706     #[allow(dead_code)]
parse(reader: &mut InstructionReader<'_>) -> Result<FunctionParameterAttribute, ParseError>10707     fn parse(reader: &mut InstructionReader<'_>) -> Result<FunctionParameterAttribute, ParseError> {
10708         Ok(match reader.next_u32()? {
10709             0u32 => Self::Zext,
10710             1u32 => Self::Sext,
10711             2u32 => Self::ByVal,
10712             3u32 => Self::Sret,
10713             4u32 => Self::NoAlias,
10714             5u32 => Self::NoCapture,
10715             6u32 => Self::NoWrite,
10716             7u32 => Self::NoReadWrite,
10717             value => {
10718                 return Err(reader.map_err(ParseErrors::UnknownEnumerant(
10719                     "FunctionParameterAttribute",
10720                     value,
10721                 )))
10722             }
10723         })
10724     }
10725 }
10726 #[derive(Clone, Debug, PartialEq, Eq)]
10727 #[allow(non_camel_case_types)]
10728 pub enum Decoration {
10729     RelaxedPrecision,
10730     SpecId {
10731         specialization_constant_id: u32,
10732     },
10733     Block,
10734     BufferBlock,
10735     RowMajor,
10736     ColMajor,
10737     ArrayStride {
10738         array_stride: u32,
10739     },
10740     MatrixStride {
10741         matrix_stride: u32,
10742     },
10743     GLSLShared,
10744     GLSLPacked,
10745     CPacked,
10746     BuiltIn {
10747         built_in: BuiltIn,
10748     },
10749     NoPerspective,
10750     Flat,
10751     Patch,
10752     Centroid,
10753     Sample,
10754     Invariant,
10755     Restrict,
10756     Aliased,
10757     Volatile,
10758     Constant,
10759     Coherent,
10760     NonWritable,
10761     NonReadable,
10762     Uniform,
10763     UniformId {
10764         execution: Id,
10765     },
10766     SaturatedConversion,
10767     Stream {
10768         stream_number: u32,
10769     },
10770     Location {
10771         location: u32,
10772     },
10773     Component {
10774         component: u32,
10775     },
10776     Index {
10777         index: u32,
10778     },
10779     Binding {
10780         binding_point: u32,
10781     },
10782     DescriptorSet {
10783         descriptor_set: u32,
10784     },
10785     Offset {
10786         byte_offset: u32,
10787     },
10788     XfbBuffer {
10789         xfb_buffer_number: u32,
10790     },
10791     XfbStride {
10792         xfb_stride: u32,
10793     },
10794     FuncParamAttr {
10795         function_parameter_attribute: FunctionParameterAttribute,
10796     },
10797     FPRoundingMode {
10798         floating_point_rounding_mode: FPRoundingMode,
10799     },
10800     FPFastMathMode {
10801         fast_math_mode: FPFastMathMode,
10802     },
10803     LinkageAttributes {
10804         name: String,
10805         linkage_type: LinkageType,
10806     },
10807     NoContraction,
10808     InputAttachmentIndex {
10809         attachment_index: u32,
10810     },
10811     Alignment {
10812         alignment: u32,
10813     },
10814     MaxByteOffset {
10815         max_byte_offset: u32,
10816     },
10817     AlignmentId {
10818         alignment: Id,
10819     },
10820     MaxByteOffsetId {
10821         max_byte_offset: Id,
10822     },
10823     NoSignedWrap,
10824     NoUnsignedWrap,
10825     ExplicitInterpAMD,
10826     OverrideCoverageNV,
10827     PassthroughNV,
10828     ViewportRelativeNV,
10829     SecondaryViewportRelativeNV {
10830         offset: u32,
10831     },
10832     PerPrimitiveNV,
10833     PerViewNV,
10834     PerTaskNV,
10835     PerVertexKHR,
10836     NonUniform,
10837     RestrictPointer,
10838     AliasedPointer,
10839     BindlessSamplerNV,
10840     BindlessImageNV,
10841     BoundSamplerNV,
10842     BoundImageNV,
10843     SIMTCallINTEL {
10844         n: u32,
10845     },
10846     ReferencedIndirectlyINTEL,
10847     ClobberINTEL {
10848         register: String,
10849     },
10850     SideEffectsINTEL,
10851     VectorComputeVariableINTEL,
10852     FuncParamIOKindINTEL {
10853         kind: u32,
10854     },
10855     VectorComputeFunctionINTEL,
10856     StackCallINTEL,
10857     GlobalVariableOffsetINTEL {
10858         offset: u32,
10859     },
10860     CounterBuffer {
10861         counter_buffer: Id,
10862     },
10863     UserSemantic {
10864         semantic: String,
10865     },
10866     UserTypeGOOGLE {
10867         user_type: String,
10868     },
10869     FunctionRoundingModeINTEL {
10870         target_width: u32,
10871         fp_rounding_mode: FPRoundingMode,
10872     },
10873     FunctionDenormModeINTEL {
10874         target_width: u32,
10875         fp_denorm_mode: FPDenormMode,
10876     },
10877     RegisterINTEL,
10878     MemoryINTEL {
10879         memory_type: String,
10880     },
10881     NumbanksINTEL {
10882         banks: u32,
10883     },
10884     BankwidthINTEL {
10885         bank_width: u32,
10886     },
10887     MaxPrivateCopiesINTEL {
10888         maximum_copies: u32,
10889     },
10890     SinglepumpINTEL,
10891     DoublepumpINTEL,
10892     MaxReplicatesINTEL {
10893         maximum_replicates: u32,
10894     },
10895     SimpleDualPortINTEL,
10896     MergeINTEL {
10897         merge_key: String,
10898         merge_type: String,
10899     },
10900     BankBitsINTEL {
10901         bank_bits: u32,
10902     },
10903     ForcePow2DepthINTEL {
10904         force_key: u32,
10905     },
10906     BurstCoalesceINTEL,
10907     CacheSizeINTEL {
10908         cache_size_in_bytes: u32,
10909     },
10910     DontStaticallyCoalesceINTEL,
10911     PrefetchINTEL {
10912         prefetcher_size_in_bytes: u32,
10913     },
10914     StallEnableINTEL,
10915     FuseLoopsInFunctionINTEL,
10916     BufferLocationINTEL {
10917         buffer_location_id: u32,
10918     },
10919     IOPipeStorageINTEL {
10920         io_pipe_id: u32,
10921     },
10922     FunctionFloatingPointModeINTEL {
10923         target_width: u32,
10924         fp_operation_mode: FPOperationMode,
10925     },
10926     SingleElementVectorINTEL,
10927     VectorComputeCallableFunctionINTEL,
10928     MediaBlockIOINTEL,
10929 }
10930 impl Decoration {
10931     #[allow(dead_code)]
parse(reader: &mut InstructionReader<'_>) -> Result<Decoration, ParseError>10932     fn parse(reader: &mut InstructionReader<'_>) -> Result<Decoration, ParseError> {
10933         Ok(match reader.next_u32()? {
10934             0u32 => Self::RelaxedPrecision,
10935             1u32 => Self::SpecId {
10936                 specialization_constant_id: reader.next_u32()?,
10937             },
10938             2u32 => Self::Block,
10939             3u32 => Self::BufferBlock,
10940             4u32 => Self::RowMajor,
10941             5u32 => Self::ColMajor,
10942             6u32 => Self::ArrayStride {
10943                 array_stride: reader.next_u32()?,
10944             },
10945             7u32 => Self::MatrixStride {
10946                 matrix_stride: reader.next_u32()?,
10947             },
10948             8u32 => Self::GLSLShared,
10949             9u32 => Self::GLSLPacked,
10950             10u32 => Self::CPacked,
10951             11u32 => Self::BuiltIn {
10952                 built_in: BuiltIn::parse(reader)?,
10953             },
10954             13u32 => Self::NoPerspective,
10955             14u32 => Self::Flat,
10956             15u32 => Self::Patch,
10957             16u32 => Self::Centroid,
10958             17u32 => Self::Sample,
10959             18u32 => Self::Invariant,
10960             19u32 => Self::Restrict,
10961             20u32 => Self::Aliased,
10962             21u32 => Self::Volatile,
10963             22u32 => Self::Constant,
10964             23u32 => Self::Coherent,
10965             24u32 => Self::NonWritable,
10966             25u32 => Self::NonReadable,
10967             26u32 => Self::Uniform,
10968             27u32 => Self::UniformId {
10969                 execution: Id(reader.next_u32()?),
10970             },
10971             28u32 => Self::SaturatedConversion,
10972             29u32 => Self::Stream {
10973                 stream_number: reader.next_u32()?,
10974             },
10975             30u32 => Self::Location {
10976                 location: reader.next_u32()?,
10977             },
10978             31u32 => Self::Component {
10979                 component: reader.next_u32()?,
10980             },
10981             32u32 => Self::Index {
10982                 index: reader.next_u32()?,
10983             },
10984             33u32 => Self::Binding {
10985                 binding_point: reader.next_u32()?,
10986             },
10987             34u32 => Self::DescriptorSet {
10988                 descriptor_set: reader.next_u32()?,
10989             },
10990             35u32 => Self::Offset {
10991                 byte_offset: reader.next_u32()?,
10992             },
10993             36u32 => Self::XfbBuffer {
10994                 xfb_buffer_number: reader.next_u32()?,
10995             },
10996             37u32 => Self::XfbStride {
10997                 xfb_stride: reader.next_u32()?,
10998             },
10999             38u32 => Self::FuncParamAttr {
11000                 function_parameter_attribute: FunctionParameterAttribute::parse(reader)?,
11001             },
11002             39u32 => Self::FPRoundingMode {
11003                 floating_point_rounding_mode: FPRoundingMode::parse(reader)?,
11004             },
11005             40u32 => Self::FPFastMathMode {
11006                 fast_math_mode: FPFastMathMode::parse(reader)?,
11007             },
11008             41u32 => Self::LinkageAttributes {
11009                 name: reader.next_string()?,
11010                 linkage_type: LinkageType::parse(reader)?,
11011             },
11012             42u32 => Self::NoContraction,
11013             43u32 => Self::InputAttachmentIndex {
11014                 attachment_index: reader.next_u32()?,
11015             },
11016             44u32 => Self::Alignment {
11017                 alignment: reader.next_u32()?,
11018             },
11019             45u32 => Self::MaxByteOffset {
11020                 max_byte_offset: reader.next_u32()?,
11021             },
11022             46u32 => Self::AlignmentId {
11023                 alignment: Id(reader.next_u32()?),
11024             },
11025             47u32 => Self::MaxByteOffsetId {
11026                 max_byte_offset: Id(reader.next_u32()?),
11027             },
11028             4469u32 => Self::NoSignedWrap,
11029             4470u32 => Self::NoUnsignedWrap,
11030             4999u32 => Self::ExplicitInterpAMD,
11031             5248u32 => Self::OverrideCoverageNV,
11032             5250u32 => Self::PassthroughNV,
11033             5252u32 => Self::ViewportRelativeNV,
11034             5256u32 => Self::SecondaryViewportRelativeNV {
11035                 offset: reader.next_u32()?,
11036             },
11037             5271u32 => Self::PerPrimitiveNV,
11038             5272u32 => Self::PerViewNV,
11039             5273u32 => Self::PerTaskNV,
11040             5285u32 => Self::PerVertexKHR,
11041             5300u32 => Self::NonUniform,
11042             5355u32 => Self::RestrictPointer,
11043             5356u32 => Self::AliasedPointer,
11044             5398u32 => Self::BindlessSamplerNV,
11045             5399u32 => Self::BindlessImageNV,
11046             5400u32 => Self::BoundSamplerNV,
11047             5401u32 => Self::BoundImageNV,
11048             5599u32 => Self::SIMTCallINTEL {
11049                 n: reader.next_u32()?,
11050             },
11051             5602u32 => Self::ReferencedIndirectlyINTEL,
11052             5607u32 => Self::ClobberINTEL {
11053                 register: reader.next_string()?,
11054             },
11055             5608u32 => Self::SideEffectsINTEL,
11056             5624u32 => Self::VectorComputeVariableINTEL,
11057             5625u32 => Self::FuncParamIOKindINTEL {
11058                 kind: reader.next_u32()?,
11059             },
11060             5626u32 => Self::VectorComputeFunctionINTEL,
11061             5627u32 => Self::StackCallINTEL,
11062             5628u32 => Self::GlobalVariableOffsetINTEL {
11063                 offset: reader.next_u32()?,
11064             },
11065             5634u32 => Self::CounterBuffer {
11066                 counter_buffer: Id(reader.next_u32()?),
11067             },
11068             5635u32 => Self::UserSemantic {
11069                 semantic: reader.next_string()?,
11070             },
11071             5636u32 => Self::UserTypeGOOGLE {
11072                 user_type: reader.next_string()?,
11073             },
11074             5822u32 => Self::FunctionRoundingModeINTEL {
11075                 target_width: reader.next_u32()?,
11076                 fp_rounding_mode: FPRoundingMode::parse(reader)?,
11077             },
11078             5823u32 => Self::FunctionDenormModeINTEL {
11079                 target_width: reader.next_u32()?,
11080                 fp_denorm_mode: FPDenormMode::parse(reader)?,
11081             },
11082             5825u32 => Self::RegisterINTEL,
11083             5826u32 => Self::MemoryINTEL {
11084                 memory_type: reader.next_string()?,
11085             },
11086             5827u32 => Self::NumbanksINTEL {
11087                 banks: reader.next_u32()?,
11088             },
11089             5828u32 => Self::BankwidthINTEL {
11090                 bank_width: reader.next_u32()?,
11091             },
11092             5829u32 => Self::MaxPrivateCopiesINTEL {
11093                 maximum_copies: reader.next_u32()?,
11094             },
11095             5830u32 => Self::SinglepumpINTEL,
11096             5831u32 => Self::DoublepumpINTEL,
11097             5832u32 => Self::MaxReplicatesINTEL {
11098                 maximum_replicates: reader.next_u32()?,
11099             },
11100             5833u32 => Self::SimpleDualPortINTEL,
11101             5834u32 => Self::MergeINTEL {
11102                 merge_key: reader.next_string()?,
11103                 merge_type: reader.next_string()?,
11104             },
11105             5835u32 => Self::BankBitsINTEL {
11106                 bank_bits: reader.next_u32()?,
11107             },
11108             5836u32 => Self::ForcePow2DepthINTEL {
11109                 force_key: reader.next_u32()?,
11110             },
11111             5899u32 => Self::BurstCoalesceINTEL,
11112             5900u32 => Self::CacheSizeINTEL {
11113                 cache_size_in_bytes: reader.next_u32()?,
11114             },
11115             5901u32 => Self::DontStaticallyCoalesceINTEL,
11116             5902u32 => Self::PrefetchINTEL {
11117                 prefetcher_size_in_bytes: reader.next_u32()?,
11118             },
11119             5905u32 => Self::StallEnableINTEL,
11120             5907u32 => Self::FuseLoopsInFunctionINTEL,
11121             5921u32 => Self::BufferLocationINTEL {
11122                 buffer_location_id: reader.next_u32()?,
11123             },
11124             5944u32 => Self::IOPipeStorageINTEL {
11125                 io_pipe_id: reader.next_u32()?,
11126             },
11127             6080u32 => Self::FunctionFloatingPointModeINTEL {
11128                 target_width: reader.next_u32()?,
11129                 fp_operation_mode: FPOperationMode::parse(reader)?,
11130             },
11131             6085u32 => Self::SingleElementVectorINTEL,
11132             6087u32 => Self::VectorComputeCallableFunctionINTEL,
11133             6140u32 => Self::MediaBlockIOINTEL,
11134             value => return Err(reader.map_err(ParseErrors::UnknownEnumerant("Decoration", value))),
11135         })
11136     }
11137 }
11138 #[derive(Clone, Copy, Debug, PartialEq, Eq)]
11139 #[allow(non_camel_case_types)]
11140 pub enum BuiltIn {
11141     Position,
11142     PointSize,
11143     ClipDistance,
11144     CullDistance,
11145     VertexId,
11146     InstanceId,
11147     PrimitiveId,
11148     InvocationId,
11149     Layer,
11150     ViewportIndex,
11151     TessLevelOuter,
11152     TessLevelInner,
11153     TessCoord,
11154     PatchVertices,
11155     FragCoord,
11156     PointCoord,
11157     FrontFacing,
11158     SampleId,
11159     SamplePosition,
11160     SampleMask,
11161     FragDepth,
11162     HelperInvocation,
11163     NumWorkgroups,
11164     WorkgroupSize,
11165     WorkgroupId,
11166     LocalInvocationId,
11167     GlobalInvocationId,
11168     LocalInvocationIndex,
11169     WorkDim,
11170     GlobalSize,
11171     EnqueuedWorkgroupSize,
11172     GlobalOffset,
11173     GlobalLinearId,
11174     SubgroupSize,
11175     SubgroupMaxSize,
11176     NumSubgroups,
11177     NumEnqueuedSubgroups,
11178     SubgroupId,
11179     SubgroupLocalInvocationId,
11180     VertexIndex,
11181     InstanceIndex,
11182     SubgroupEqMask,
11183     SubgroupGeMask,
11184     SubgroupGtMask,
11185     SubgroupLeMask,
11186     SubgroupLtMask,
11187     BaseVertex,
11188     BaseInstance,
11189     DrawIndex,
11190     PrimitiveShadingRateKHR,
11191     DeviceIndex,
11192     ViewIndex,
11193     ShadingRateKHR,
11194     BaryCoordNoPerspAMD,
11195     BaryCoordNoPerspCentroidAMD,
11196     BaryCoordNoPerspSampleAMD,
11197     BaryCoordSmoothAMD,
11198     BaryCoordSmoothCentroidAMD,
11199     BaryCoordSmoothSampleAMD,
11200     BaryCoordPullModelAMD,
11201     FragStencilRefEXT,
11202     ViewportMaskNV,
11203     SecondaryPositionNV,
11204     SecondaryViewportMaskNV,
11205     PositionPerViewNV,
11206     ViewportMaskPerViewNV,
11207     FullyCoveredEXT,
11208     TaskCountNV,
11209     PrimitiveCountNV,
11210     PrimitiveIndicesNV,
11211     ClipDistancePerViewNV,
11212     CullDistancePerViewNV,
11213     LayerPerViewNV,
11214     MeshViewCountNV,
11215     MeshViewIndicesNV,
11216     BaryCoordKHR,
11217     BaryCoordNoPerspKHR,
11218     FragSizeEXT,
11219     FragInvocationCountEXT,
11220     LaunchIdKHR,
11221     LaunchSizeKHR,
11222     WorldRayOriginKHR,
11223     WorldRayDirectionKHR,
11224     ObjectRayOriginKHR,
11225     ObjectRayDirectionKHR,
11226     RayTminKHR,
11227     RayTmaxKHR,
11228     InstanceCustomIndexKHR,
11229     ObjectToWorldKHR,
11230     WorldToObjectKHR,
11231     HitTNV,
11232     HitKindKHR,
11233     CurrentRayTimeNV,
11234     IncomingRayFlagsKHR,
11235     RayGeometryIndexKHR,
11236     WarpsPerSMNV,
11237     SMCountNV,
11238     WarpIDNV,
11239     SMIDNV,
11240 }
11241 impl BuiltIn {
11242     #[allow(dead_code)]
parse(reader: &mut InstructionReader<'_>) -> Result<BuiltIn, ParseError>11243     fn parse(reader: &mut InstructionReader<'_>) -> Result<BuiltIn, ParseError> {
11244         Ok(match reader.next_u32()? {
11245             0u32 => Self::Position,
11246             1u32 => Self::PointSize,
11247             3u32 => Self::ClipDistance,
11248             4u32 => Self::CullDistance,
11249             5u32 => Self::VertexId,
11250             6u32 => Self::InstanceId,
11251             7u32 => Self::PrimitiveId,
11252             8u32 => Self::InvocationId,
11253             9u32 => Self::Layer,
11254             10u32 => Self::ViewportIndex,
11255             11u32 => Self::TessLevelOuter,
11256             12u32 => Self::TessLevelInner,
11257             13u32 => Self::TessCoord,
11258             14u32 => Self::PatchVertices,
11259             15u32 => Self::FragCoord,
11260             16u32 => Self::PointCoord,
11261             17u32 => Self::FrontFacing,
11262             18u32 => Self::SampleId,
11263             19u32 => Self::SamplePosition,
11264             20u32 => Self::SampleMask,
11265             22u32 => Self::FragDepth,
11266             23u32 => Self::HelperInvocation,
11267             24u32 => Self::NumWorkgroups,
11268             25u32 => Self::WorkgroupSize,
11269             26u32 => Self::WorkgroupId,
11270             27u32 => Self::LocalInvocationId,
11271             28u32 => Self::GlobalInvocationId,
11272             29u32 => Self::LocalInvocationIndex,
11273             30u32 => Self::WorkDim,
11274             31u32 => Self::GlobalSize,
11275             32u32 => Self::EnqueuedWorkgroupSize,
11276             33u32 => Self::GlobalOffset,
11277             34u32 => Self::GlobalLinearId,
11278             36u32 => Self::SubgroupSize,
11279             37u32 => Self::SubgroupMaxSize,
11280             38u32 => Self::NumSubgroups,
11281             39u32 => Self::NumEnqueuedSubgroups,
11282             40u32 => Self::SubgroupId,
11283             41u32 => Self::SubgroupLocalInvocationId,
11284             42u32 => Self::VertexIndex,
11285             43u32 => Self::InstanceIndex,
11286             4416u32 => Self::SubgroupEqMask,
11287             4417u32 => Self::SubgroupGeMask,
11288             4418u32 => Self::SubgroupGtMask,
11289             4419u32 => Self::SubgroupLeMask,
11290             4420u32 => Self::SubgroupLtMask,
11291             4424u32 => Self::BaseVertex,
11292             4425u32 => Self::BaseInstance,
11293             4426u32 => Self::DrawIndex,
11294             4432u32 => Self::PrimitiveShadingRateKHR,
11295             4438u32 => Self::DeviceIndex,
11296             4440u32 => Self::ViewIndex,
11297             4444u32 => Self::ShadingRateKHR,
11298             4992u32 => Self::BaryCoordNoPerspAMD,
11299             4993u32 => Self::BaryCoordNoPerspCentroidAMD,
11300             4994u32 => Self::BaryCoordNoPerspSampleAMD,
11301             4995u32 => Self::BaryCoordSmoothAMD,
11302             4996u32 => Self::BaryCoordSmoothCentroidAMD,
11303             4997u32 => Self::BaryCoordSmoothSampleAMD,
11304             4998u32 => Self::BaryCoordPullModelAMD,
11305             5014u32 => Self::FragStencilRefEXT,
11306             5253u32 => Self::ViewportMaskNV,
11307             5257u32 => Self::SecondaryPositionNV,
11308             5258u32 => Self::SecondaryViewportMaskNV,
11309             5261u32 => Self::PositionPerViewNV,
11310             5262u32 => Self::ViewportMaskPerViewNV,
11311             5264u32 => Self::FullyCoveredEXT,
11312             5274u32 => Self::TaskCountNV,
11313             5275u32 => Self::PrimitiveCountNV,
11314             5276u32 => Self::PrimitiveIndicesNV,
11315             5277u32 => Self::ClipDistancePerViewNV,
11316             5278u32 => Self::CullDistancePerViewNV,
11317             5279u32 => Self::LayerPerViewNV,
11318             5280u32 => Self::MeshViewCountNV,
11319             5281u32 => Self::MeshViewIndicesNV,
11320             5286u32 => Self::BaryCoordKHR,
11321             5287u32 => Self::BaryCoordNoPerspKHR,
11322             5292u32 => Self::FragSizeEXT,
11323             5293u32 => Self::FragInvocationCountEXT,
11324             5319u32 => Self::LaunchIdKHR,
11325             5320u32 => Self::LaunchSizeKHR,
11326             5321u32 => Self::WorldRayOriginKHR,
11327             5322u32 => Self::WorldRayDirectionKHR,
11328             5323u32 => Self::ObjectRayOriginKHR,
11329             5324u32 => Self::ObjectRayDirectionKHR,
11330             5325u32 => Self::RayTminKHR,
11331             5326u32 => Self::RayTmaxKHR,
11332             5327u32 => Self::InstanceCustomIndexKHR,
11333             5330u32 => Self::ObjectToWorldKHR,
11334             5331u32 => Self::WorldToObjectKHR,
11335             5332u32 => Self::HitTNV,
11336             5333u32 => Self::HitKindKHR,
11337             5334u32 => Self::CurrentRayTimeNV,
11338             5351u32 => Self::IncomingRayFlagsKHR,
11339             5352u32 => Self::RayGeometryIndexKHR,
11340             5374u32 => Self::WarpsPerSMNV,
11341             5375u32 => Self::SMCountNV,
11342             5376u32 => Self::WarpIDNV,
11343             5377u32 => Self::SMIDNV,
11344             value => return Err(reader.map_err(ParseErrors::UnknownEnumerant("BuiltIn", value))),
11345         })
11346     }
11347 }
11348 #[derive(Clone, Copy, Debug, PartialEq, Eq)]
11349 #[allow(non_camel_case_types)]
11350 pub enum Scope {
11351     CrossDevice,
11352     Device,
11353     Workgroup,
11354     Subgroup,
11355     Invocation,
11356     QueueFamily,
11357     ShaderCallKHR,
11358 }
11359 impl Scope {
11360     #[allow(dead_code)]
parse(reader: &mut InstructionReader<'_>) -> Result<Scope, ParseError>11361     fn parse(reader: &mut InstructionReader<'_>) -> Result<Scope, ParseError> {
11362         Ok(match reader.next_u32()? {
11363             0u32 => Self::CrossDevice,
11364             1u32 => Self::Device,
11365             2u32 => Self::Workgroup,
11366             3u32 => Self::Subgroup,
11367             4u32 => Self::Invocation,
11368             5u32 => Self::QueueFamily,
11369             6u32 => Self::ShaderCallKHR,
11370             value => return Err(reader.map_err(ParseErrors::UnknownEnumerant("Scope", value))),
11371         })
11372     }
11373 }
11374 #[derive(Clone, Copy, Debug, PartialEq, Eq)]
11375 #[allow(non_camel_case_types)]
11376 pub enum GroupOperation {
11377     Reduce,
11378     InclusiveScan,
11379     ExclusiveScan,
11380     ClusteredReduce,
11381     PartitionedReduceNV,
11382     PartitionedInclusiveScanNV,
11383     PartitionedExclusiveScanNV,
11384 }
11385 impl GroupOperation {
11386     #[allow(dead_code)]
parse(reader: &mut InstructionReader<'_>) -> Result<GroupOperation, ParseError>11387     fn parse(reader: &mut InstructionReader<'_>) -> Result<GroupOperation, ParseError> {
11388         Ok(match reader.next_u32()? {
11389             0u32 => Self::Reduce,
11390             1u32 => Self::InclusiveScan,
11391             2u32 => Self::ExclusiveScan,
11392             3u32 => Self::ClusteredReduce,
11393             6u32 => Self::PartitionedReduceNV,
11394             7u32 => Self::PartitionedInclusiveScanNV,
11395             8u32 => Self::PartitionedExclusiveScanNV,
11396             value => {
11397                 return Err(reader.map_err(ParseErrors::UnknownEnumerant("GroupOperation", value)))
11398             }
11399         })
11400     }
11401 }
11402 #[derive(Clone, Copy, Debug, PartialEq, Eq)]
11403 #[allow(non_camel_case_types)]
11404 pub enum KernelEnqueueFlags {
11405     NoWait,
11406     WaitKernel,
11407     WaitWorkGroup,
11408 }
11409 impl KernelEnqueueFlags {
11410     #[allow(dead_code)]
parse(reader: &mut InstructionReader<'_>) -> Result<KernelEnqueueFlags, ParseError>11411     fn parse(reader: &mut InstructionReader<'_>) -> Result<KernelEnqueueFlags, ParseError> {
11412         Ok(match reader.next_u32()? {
11413             0u32 => Self::NoWait,
11414             1u32 => Self::WaitKernel,
11415             2u32 => Self::WaitWorkGroup,
11416             value => {
11417                 return Err(
11418                     reader.map_err(ParseErrors::UnknownEnumerant("KernelEnqueueFlags", value))
11419                 )
11420             }
11421         })
11422     }
11423 }
11424 #[derive(Clone, Copy, Debug, PartialEq, Eq)]
11425 #[allow(non_camel_case_types)]
11426 pub enum Capability {
11427     Matrix,
11428     Shader,
11429     Geometry,
11430     Tessellation,
11431     Addresses,
11432     Linkage,
11433     Kernel,
11434     Vector16,
11435     Float16Buffer,
11436     Float16,
11437     Float64,
11438     Int64,
11439     Int64Atomics,
11440     ImageBasic,
11441     ImageReadWrite,
11442     ImageMipmap,
11443     Pipes,
11444     Groups,
11445     DeviceEnqueue,
11446     LiteralSampler,
11447     AtomicStorage,
11448     Int16,
11449     TessellationPointSize,
11450     GeometryPointSize,
11451     ImageGatherExtended,
11452     StorageImageMultisample,
11453     UniformBufferArrayDynamicIndexing,
11454     SampledImageArrayDynamicIndexing,
11455     StorageBufferArrayDynamicIndexing,
11456     StorageImageArrayDynamicIndexing,
11457     ClipDistance,
11458     CullDistance,
11459     ImageCubeArray,
11460     SampleRateShading,
11461     ImageRect,
11462     SampledRect,
11463     GenericPointer,
11464     Int8,
11465     InputAttachment,
11466     SparseResidency,
11467     MinLod,
11468     Sampled1D,
11469     Image1D,
11470     SampledCubeArray,
11471     SampledBuffer,
11472     ImageBuffer,
11473     ImageMSArray,
11474     StorageImageExtendedFormats,
11475     ImageQuery,
11476     DerivativeControl,
11477     InterpolationFunction,
11478     TransformFeedback,
11479     GeometryStreams,
11480     StorageImageReadWithoutFormat,
11481     StorageImageWriteWithoutFormat,
11482     MultiViewport,
11483     SubgroupDispatch,
11484     NamedBarrier,
11485     PipeStorage,
11486     GroupNonUniform,
11487     GroupNonUniformVote,
11488     GroupNonUniformArithmetic,
11489     GroupNonUniformBallot,
11490     GroupNonUniformShuffle,
11491     GroupNonUniformShuffleRelative,
11492     GroupNonUniformClustered,
11493     GroupNonUniformQuad,
11494     ShaderLayer,
11495     ShaderViewportIndex,
11496     UniformDecoration,
11497     FragmentShadingRateKHR,
11498     SubgroupBallotKHR,
11499     DrawParameters,
11500     WorkgroupMemoryExplicitLayoutKHR,
11501     WorkgroupMemoryExplicitLayout8BitAccessKHR,
11502     WorkgroupMemoryExplicitLayout16BitAccessKHR,
11503     SubgroupVoteKHR,
11504     StorageBuffer16BitAccess,
11505     UniformAndStorageBuffer16BitAccess,
11506     StoragePushConstant16,
11507     StorageInputOutput16,
11508     DeviceGroup,
11509     MultiView,
11510     VariablePointersStorageBuffer,
11511     VariablePointers,
11512     AtomicStorageOps,
11513     SampleMaskPostDepthCoverage,
11514     StorageBuffer8BitAccess,
11515     UniformAndStorageBuffer8BitAccess,
11516     StoragePushConstant8,
11517     DenormPreserve,
11518     DenormFlushToZero,
11519     SignedZeroInfNanPreserve,
11520     RoundingModeRTE,
11521     RoundingModeRTZ,
11522     RayQueryProvisionalKHR,
11523     RayQueryKHR,
11524     RayTraversalPrimitiveCullingKHR,
11525     RayTracingKHR,
11526     Float16ImageAMD,
11527     ImageGatherBiasLodAMD,
11528     FragmentMaskAMD,
11529     StencilExportEXT,
11530     ImageReadWriteLodAMD,
11531     Int64ImageEXT,
11532     ShaderClockKHR,
11533     SampleMaskOverrideCoverageNV,
11534     GeometryShaderPassthroughNV,
11535     ShaderViewportIndexLayerEXT,
11536     ShaderViewportMaskNV,
11537     ShaderStereoViewNV,
11538     PerViewAttributesNV,
11539     FragmentFullyCoveredEXT,
11540     MeshShadingNV,
11541     ImageFootprintNV,
11542     FragmentBarycentricKHR,
11543     ComputeDerivativeGroupQuadsNV,
11544     FragmentDensityEXT,
11545     GroupNonUniformPartitionedNV,
11546     ShaderNonUniform,
11547     RuntimeDescriptorArray,
11548     InputAttachmentArrayDynamicIndexing,
11549     UniformTexelBufferArrayDynamicIndexing,
11550     StorageTexelBufferArrayDynamicIndexing,
11551     UniformBufferArrayNonUniformIndexing,
11552     SampledImageArrayNonUniformIndexing,
11553     StorageBufferArrayNonUniformIndexing,
11554     StorageImageArrayNonUniformIndexing,
11555     InputAttachmentArrayNonUniformIndexing,
11556     UniformTexelBufferArrayNonUniformIndexing,
11557     StorageTexelBufferArrayNonUniformIndexing,
11558     RayTracingNV,
11559     RayTracingMotionBlurNV,
11560     VulkanMemoryModel,
11561     VulkanMemoryModelDeviceScope,
11562     PhysicalStorageBufferAddresses,
11563     ComputeDerivativeGroupLinearNV,
11564     RayTracingProvisionalKHR,
11565     CooperativeMatrixNV,
11566     FragmentShaderSampleInterlockEXT,
11567     FragmentShaderShadingRateInterlockEXT,
11568     ShaderSMBuiltinsNV,
11569     FragmentShaderPixelInterlockEXT,
11570     DemoteToHelperInvocation,
11571     BindlessTextureNV,
11572     SubgroupShuffleINTEL,
11573     SubgroupBufferBlockIOINTEL,
11574     SubgroupImageBlockIOINTEL,
11575     SubgroupImageMediaBlockIOINTEL,
11576     RoundToInfinityINTEL,
11577     FloatingPointModeINTEL,
11578     IntegerFunctions2INTEL,
11579     FunctionPointersINTEL,
11580     IndirectReferencesINTEL,
11581     AsmINTEL,
11582     AtomicFloat32MinMaxEXT,
11583     AtomicFloat64MinMaxEXT,
11584     AtomicFloat16MinMaxEXT,
11585     VectorComputeINTEL,
11586     VectorAnyINTEL,
11587     ExpectAssumeKHR,
11588     SubgroupAvcMotionEstimationINTEL,
11589     SubgroupAvcMotionEstimationIntraINTEL,
11590     SubgroupAvcMotionEstimationChromaINTEL,
11591     VariableLengthArrayINTEL,
11592     FunctionFloatControlINTEL,
11593     FPGAMemoryAttributesINTEL,
11594     FPFastMathModeINTEL,
11595     ArbitraryPrecisionIntegersINTEL,
11596     ArbitraryPrecisionFloatingPointINTEL,
11597     UnstructuredLoopControlsINTEL,
11598     FPGALoopControlsINTEL,
11599     KernelAttributesINTEL,
11600     FPGAKernelAttributesINTEL,
11601     FPGAMemoryAccessesINTEL,
11602     FPGAClusterAttributesINTEL,
11603     LoopFuseINTEL,
11604     FPGABufferLocationINTEL,
11605     ArbitraryPrecisionFixedPointINTEL,
11606     USMStorageClassesINTEL,
11607     IOPipesINTEL,
11608     BlockingPipesINTEL,
11609     FPGARegINTEL,
11610     DotProductInputAll,
11611     DotProductInput4x8Bit,
11612     DotProductInput4x8BitPacked,
11613     DotProduct,
11614     BitInstructions,
11615     AtomicFloat32AddEXT,
11616     AtomicFloat64AddEXT,
11617     LongConstantCompositeINTEL,
11618     OptNoneINTEL,
11619     AtomicFloat16AddEXT,
11620     DebugInfoModuleINTEL,
11621 }
11622 impl Capability {
11623     #[allow(dead_code)]
parse(reader: &mut InstructionReader<'_>) -> Result<Capability, ParseError>11624     fn parse(reader: &mut InstructionReader<'_>) -> Result<Capability, ParseError> {
11625         Ok(match reader.next_u32()? {
11626             0u32 => Self::Matrix,
11627             1u32 => Self::Shader,
11628             2u32 => Self::Geometry,
11629             3u32 => Self::Tessellation,
11630             4u32 => Self::Addresses,
11631             5u32 => Self::Linkage,
11632             6u32 => Self::Kernel,
11633             7u32 => Self::Vector16,
11634             8u32 => Self::Float16Buffer,
11635             9u32 => Self::Float16,
11636             10u32 => Self::Float64,
11637             11u32 => Self::Int64,
11638             12u32 => Self::Int64Atomics,
11639             13u32 => Self::ImageBasic,
11640             14u32 => Self::ImageReadWrite,
11641             15u32 => Self::ImageMipmap,
11642             17u32 => Self::Pipes,
11643             18u32 => Self::Groups,
11644             19u32 => Self::DeviceEnqueue,
11645             20u32 => Self::LiteralSampler,
11646             21u32 => Self::AtomicStorage,
11647             22u32 => Self::Int16,
11648             23u32 => Self::TessellationPointSize,
11649             24u32 => Self::GeometryPointSize,
11650             25u32 => Self::ImageGatherExtended,
11651             27u32 => Self::StorageImageMultisample,
11652             28u32 => Self::UniformBufferArrayDynamicIndexing,
11653             29u32 => Self::SampledImageArrayDynamicIndexing,
11654             30u32 => Self::StorageBufferArrayDynamicIndexing,
11655             31u32 => Self::StorageImageArrayDynamicIndexing,
11656             32u32 => Self::ClipDistance,
11657             33u32 => Self::CullDistance,
11658             34u32 => Self::ImageCubeArray,
11659             35u32 => Self::SampleRateShading,
11660             36u32 => Self::ImageRect,
11661             37u32 => Self::SampledRect,
11662             38u32 => Self::GenericPointer,
11663             39u32 => Self::Int8,
11664             40u32 => Self::InputAttachment,
11665             41u32 => Self::SparseResidency,
11666             42u32 => Self::MinLod,
11667             43u32 => Self::Sampled1D,
11668             44u32 => Self::Image1D,
11669             45u32 => Self::SampledCubeArray,
11670             46u32 => Self::SampledBuffer,
11671             47u32 => Self::ImageBuffer,
11672             48u32 => Self::ImageMSArray,
11673             49u32 => Self::StorageImageExtendedFormats,
11674             50u32 => Self::ImageQuery,
11675             51u32 => Self::DerivativeControl,
11676             52u32 => Self::InterpolationFunction,
11677             53u32 => Self::TransformFeedback,
11678             54u32 => Self::GeometryStreams,
11679             55u32 => Self::StorageImageReadWithoutFormat,
11680             56u32 => Self::StorageImageWriteWithoutFormat,
11681             57u32 => Self::MultiViewport,
11682             58u32 => Self::SubgroupDispatch,
11683             59u32 => Self::NamedBarrier,
11684             60u32 => Self::PipeStorage,
11685             61u32 => Self::GroupNonUniform,
11686             62u32 => Self::GroupNonUniformVote,
11687             63u32 => Self::GroupNonUniformArithmetic,
11688             64u32 => Self::GroupNonUniformBallot,
11689             65u32 => Self::GroupNonUniformShuffle,
11690             66u32 => Self::GroupNonUniformShuffleRelative,
11691             67u32 => Self::GroupNonUniformClustered,
11692             68u32 => Self::GroupNonUniformQuad,
11693             69u32 => Self::ShaderLayer,
11694             70u32 => Self::ShaderViewportIndex,
11695             71u32 => Self::UniformDecoration,
11696             4422u32 => Self::FragmentShadingRateKHR,
11697             4423u32 => Self::SubgroupBallotKHR,
11698             4427u32 => Self::DrawParameters,
11699             4428u32 => Self::WorkgroupMemoryExplicitLayoutKHR,
11700             4429u32 => Self::WorkgroupMemoryExplicitLayout8BitAccessKHR,
11701             4430u32 => Self::WorkgroupMemoryExplicitLayout16BitAccessKHR,
11702             4431u32 => Self::SubgroupVoteKHR,
11703             4433u32 => Self::StorageBuffer16BitAccess,
11704             4434u32 => Self::UniformAndStorageBuffer16BitAccess,
11705             4435u32 => Self::StoragePushConstant16,
11706             4436u32 => Self::StorageInputOutput16,
11707             4437u32 => Self::DeviceGroup,
11708             4439u32 => Self::MultiView,
11709             4441u32 => Self::VariablePointersStorageBuffer,
11710             4442u32 => Self::VariablePointers,
11711             4445u32 => Self::AtomicStorageOps,
11712             4447u32 => Self::SampleMaskPostDepthCoverage,
11713             4448u32 => Self::StorageBuffer8BitAccess,
11714             4449u32 => Self::UniformAndStorageBuffer8BitAccess,
11715             4450u32 => Self::StoragePushConstant8,
11716             4464u32 => Self::DenormPreserve,
11717             4465u32 => Self::DenormFlushToZero,
11718             4466u32 => Self::SignedZeroInfNanPreserve,
11719             4467u32 => Self::RoundingModeRTE,
11720             4468u32 => Self::RoundingModeRTZ,
11721             4471u32 => Self::RayQueryProvisionalKHR,
11722             4472u32 => Self::RayQueryKHR,
11723             4478u32 => Self::RayTraversalPrimitiveCullingKHR,
11724             4479u32 => Self::RayTracingKHR,
11725             5008u32 => Self::Float16ImageAMD,
11726             5009u32 => Self::ImageGatherBiasLodAMD,
11727             5010u32 => Self::FragmentMaskAMD,
11728             5013u32 => Self::StencilExportEXT,
11729             5015u32 => Self::ImageReadWriteLodAMD,
11730             5016u32 => Self::Int64ImageEXT,
11731             5055u32 => Self::ShaderClockKHR,
11732             5249u32 => Self::SampleMaskOverrideCoverageNV,
11733             5251u32 => Self::GeometryShaderPassthroughNV,
11734             5254u32 => Self::ShaderViewportIndexLayerEXT,
11735             5255u32 => Self::ShaderViewportMaskNV,
11736             5259u32 => Self::ShaderStereoViewNV,
11737             5260u32 => Self::PerViewAttributesNV,
11738             5265u32 => Self::FragmentFullyCoveredEXT,
11739             5266u32 => Self::MeshShadingNV,
11740             5282u32 => Self::ImageFootprintNV,
11741             5284u32 => Self::FragmentBarycentricKHR,
11742             5288u32 => Self::ComputeDerivativeGroupQuadsNV,
11743             5291u32 => Self::FragmentDensityEXT,
11744             5297u32 => Self::GroupNonUniformPartitionedNV,
11745             5301u32 => Self::ShaderNonUniform,
11746             5302u32 => Self::RuntimeDescriptorArray,
11747             5303u32 => Self::InputAttachmentArrayDynamicIndexing,
11748             5304u32 => Self::UniformTexelBufferArrayDynamicIndexing,
11749             5305u32 => Self::StorageTexelBufferArrayDynamicIndexing,
11750             5306u32 => Self::UniformBufferArrayNonUniformIndexing,
11751             5307u32 => Self::SampledImageArrayNonUniformIndexing,
11752             5308u32 => Self::StorageBufferArrayNonUniformIndexing,
11753             5309u32 => Self::StorageImageArrayNonUniformIndexing,
11754             5310u32 => Self::InputAttachmentArrayNonUniformIndexing,
11755             5311u32 => Self::UniformTexelBufferArrayNonUniformIndexing,
11756             5312u32 => Self::StorageTexelBufferArrayNonUniformIndexing,
11757             5340u32 => Self::RayTracingNV,
11758             5341u32 => Self::RayTracingMotionBlurNV,
11759             5345u32 => Self::VulkanMemoryModel,
11760             5346u32 => Self::VulkanMemoryModelDeviceScope,
11761             5347u32 => Self::PhysicalStorageBufferAddresses,
11762             5350u32 => Self::ComputeDerivativeGroupLinearNV,
11763             5353u32 => Self::RayTracingProvisionalKHR,
11764             5357u32 => Self::CooperativeMatrixNV,
11765             5363u32 => Self::FragmentShaderSampleInterlockEXT,
11766             5372u32 => Self::FragmentShaderShadingRateInterlockEXT,
11767             5373u32 => Self::ShaderSMBuiltinsNV,
11768             5378u32 => Self::FragmentShaderPixelInterlockEXT,
11769             5379u32 => Self::DemoteToHelperInvocation,
11770             5390u32 => Self::BindlessTextureNV,
11771             5568u32 => Self::SubgroupShuffleINTEL,
11772             5569u32 => Self::SubgroupBufferBlockIOINTEL,
11773             5570u32 => Self::SubgroupImageBlockIOINTEL,
11774             5579u32 => Self::SubgroupImageMediaBlockIOINTEL,
11775             5582u32 => Self::RoundToInfinityINTEL,
11776             5583u32 => Self::FloatingPointModeINTEL,
11777             5584u32 => Self::IntegerFunctions2INTEL,
11778             5603u32 => Self::FunctionPointersINTEL,
11779             5604u32 => Self::IndirectReferencesINTEL,
11780             5606u32 => Self::AsmINTEL,
11781             5612u32 => Self::AtomicFloat32MinMaxEXT,
11782             5613u32 => Self::AtomicFloat64MinMaxEXT,
11783             5616u32 => Self::AtomicFloat16MinMaxEXT,
11784             5617u32 => Self::VectorComputeINTEL,
11785             5619u32 => Self::VectorAnyINTEL,
11786             5629u32 => Self::ExpectAssumeKHR,
11787             5696u32 => Self::SubgroupAvcMotionEstimationINTEL,
11788             5697u32 => Self::SubgroupAvcMotionEstimationIntraINTEL,
11789             5698u32 => Self::SubgroupAvcMotionEstimationChromaINTEL,
11790             5817u32 => Self::VariableLengthArrayINTEL,
11791             5821u32 => Self::FunctionFloatControlINTEL,
11792             5824u32 => Self::FPGAMemoryAttributesINTEL,
11793             5837u32 => Self::FPFastMathModeINTEL,
11794             5844u32 => Self::ArbitraryPrecisionIntegersINTEL,
11795             5845u32 => Self::ArbitraryPrecisionFloatingPointINTEL,
11796             5886u32 => Self::UnstructuredLoopControlsINTEL,
11797             5888u32 => Self::FPGALoopControlsINTEL,
11798             5892u32 => Self::KernelAttributesINTEL,
11799             5897u32 => Self::FPGAKernelAttributesINTEL,
11800             5898u32 => Self::FPGAMemoryAccessesINTEL,
11801             5904u32 => Self::FPGAClusterAttributesINTEL,
11802             5906u32 => Self::LoopFuseINTEL,
11803             5920u32 => Self::FPGABufferLocationINTEL,
11804             5922u32 => Self::ArbitraryPrecisionFixedPointINTEL,
11805             5935u32 => Self::USMStorageClassesINTEL,
11806             5943u32 => Self::IOPipesINTEL,
11807             5945u32 => Self::BlockingPipesINTEL,
11808             5948u32 => Self::FPGARegINTEL,
11809             6016u32 => Self::DotProductInputAll,
11810             6017u32 => Self::DotProductInput4x8Bit,
11811             6018u32 => Self::DotProductInput4x8BitPacked,
11812             6019u32 => Self::DotProduct,
11813             6025u32 => Self::BitInstructions,
11814             6033u32 => Self::AtomicFloat32AddEXT,
11815             6034u32 => Self::AtomicFloat64AddEXT,
11816             6089u32 => Self::LongConstantCompositeINTEL,
11817             6094u32 => Self::OptNoneINTEL,
11818             6095u32 => Self::AtomicFloat16AddEXT,
11819             6114u32 => Self::DebugInfoModuleINTEL,
11820             value => return Err(reader.map_err(ParseErrors::UnknownEnumerant("Capability", value))),
11821         })
11822     }
11823 }
11824 #[derive(Clone, Copy, Debug, PartialEq, Eq)]
11825 #[allow(non_camel_case_types)]
11826 pub enum RayQueryIntersection {
11827     RayQueryCandidateIntersectionKHR,
11828     RayQueryCommittedIntersectionKHR,
11829 }
11830 impl RayQueryIntersection {
11831     #[allow(dead_code)]
parse(reader: &mut InstructionReader<'_>) -> Result<RayQueryIntersection, ParseError>11832     fn parse(reader: &mut InstructionReader<'_>) -> Result<RayQueryIntersection, ParseError> {
11833         Ok(match reader.next_u32()? {
11834             0u32 => Self::RayQueryCandidateIntersectionKHR,
11835             1u32 => Self::RayQueryCommittedIntersectionKHR,
11836             value => {
11837                 return Err(
11838                     reader.map_err(ParseErrors::UnknownEnumerant("RayQueryIntersection", value))
11839                 )
11840             }
11841         })
11842     }
11843 }
11844 #[derive(Clone, Copy, Debug, PartialEq, Eq)]
11845 #[allow(non_camel_case_types)]
11846 pub enum RayQueryCommittedIntersectionType {
11847     RayQueryCommittedIntersectionNoneKHR,
11848     RayQueryCommittedIntersectionTriangleKHR,
11849     RayQueryCommittedIntersectionGeneratedKHR,
11850 }
11851 impl RayQueryCommittedIntersectionType {
11852     #[allow(dead_code)]
parse( reader: &mut InstructionReader<'_>, ) -> Result<RayQueryCommittedIntersectionType, ParseError>11853     fn parse(
11854         reader: &mut InstructionReader<'_>,
11855     ) -> Result<RayQueryCommittedIntersectionType, ParseError> {
11856         Ok(match reader.next_u32()? {
11857             0u32 => Self::RayQueryCommittedIntersectionNoneKHR,
11858             1u32 => Self::RayQueryCommittedIntersectionTriangleKHR,
11859             2u32 => Self::RayQueryCommittedIntersectionGeneratedKHR,
11860             value => {
11861                 return Err(reader.map_err(ParseErrors::UnknownEnumerant(
11862                     "RayQueryCommittedIntersectionType",
11863                     value,
11864                 )))
11865             }
11866         })
11867     }
11868 }
11869 #[derive(Clone, Copy, Debug, PartialEq, Eq)]
11870 #[allow(non_camel_case_types)]
11871 pub enum RayQueryCandidateIntersectionType {
11872     RayQueryCandidateIntersectionTriangleKHR,
11873     RayQueryCandidateIntersectionAABBKHR,
11874 }
11875 impl RayQueryCandidateIntersectionType {
11876     #[allow(dead_code)]
parse( reader: &mut InstructionReader<'_>, ) -> Result<RayQueryCandidateIntersectionType, ParseError>11877     fn parse(
11878         reader: &mut InstructionReader<'_>,
11879     ) -> Result<RayQueryCandidateIntersectionType, ParseError> {
11880         Ok(match reader.next_u32()? {
11881             0u32 => Self::RayQueryCandidateIntersectionTriangleKHR,
11882             1u32 => Self::RayQueryCandidateIntersectionAABBKHR,
11883             value => {
11884                 return Err(reader.map_err(ParseErrors::UnknownEnumerant(
11885                     "RayQueryCandidateIntersectionType",
11886                     value,
11887                 )))
11888             }
11889         })
11890     }
11891 }
11892 #[derive(Clone, Copy, Debug, PartialEq, Eq)]
11893 #[allow(non_camel_case_types)]
11894 pub enum PackedVectorFormat {
11895     PackedVectorFormat4x8Bit,
11896 }
11897 impl PackedVectorFormat {
11898     #[allow(dead_code)]
parse(reader: &mut InstructionReader<'_>) -> Result<PackedVectorFormat, ParseError>11899     fn parse(reader: &mut InstructionReader<'_>) -> Result<PackedVectorFormat, ParseError> {
11900         Ok(match reader.next_u32()? {
11901             0u32 => Self::PackedVectorFormat4x8Bit,
11902             value => {
11903                 return Err(
11904                     reader.map_err(ParseErrors::UnknownEnumerant("PackedVectorFormat", value))
11905                 )
11906             }
11907         })
11908     }
11909 }
11910