spirq-spvasm 0.1.1

Tools for SPIR-V Assembly interaction.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
#![allow(unreachable_patterns)]
use anyhow::{bail, Result};

pub fn op_to_str(opcode: u32) -> Result<&'static str> {
    let out: &'static str = match opcode {
        0 => "OpNop",
        1 => "OpUndef",
        2 => "OpSourceContinued",
        3 => "OpSource",
        4 => "OpSourceExtension",
        5 => "OpName",
        6 => "OpMemberName",
        7 => "OpString",
        8 => "OpLine",
        10 => "OpExtension",
        11 => "OpExtInstImport",
        12 => "OpExtInst",
        14 => "OpMemoryModel",
        15 => "OpEntryPoint",
        16 => "OpExecutionMode",
        17 => "OpCapability",
        19 => "OpTypeVoid",
        20 => "OpTypeBool",
        21 => "OpTypeInt",
        22 => "OpTypeFloat",
        23 => "OpTypeVector",
        24 => "OpTypeMatrix",
        25 => "OpTypeImage",
        26 => "OpTypeSampler",
        27 => "OpTypeSampledImage",
        28 => "OpTypeArray",
        29 => "OpTypeRuntimeArray",
        30 => "OpTypeStruct",
        31 => "OpTypeOpaque",
        32 => "OpTypePointer",
        33 => "OpTypeFunction",
        34 => "OpTypeEvent",
        35 => "OpTypeDeviceEvent",
        36 => "OpTypeReserveId",
        37 => "OpTypeQueue",
        38 => "OpTypePipe",
        39 => "OpTypeForwardPointer",
        41 => "OpConstantTrue",
        42 => "OpConstantFalse",
        43 => "OpConstant",
        44 => "OpConstantComposite",
        45 => "OpConstantSampler",
        46 => "OpConstantNull",
        48 => "OpSpecConstantTrue",
        49 => "OpSpecConstantFalse",
        50 => "OpSpecConstant",
        51 => "OpSpecConstantComposite",
        52 => "OpSpecConstantOp",
        54 => "OpFunction",
        55 => "OpFunctionParameter",
        56 => "OpFunctionEnd",
        57 => "OpFunctionCall",
        59 => "OpVariable",
        60 => "OpImageTexelPointer",
        61 => "OpLoad",
        62 => "OpStore",
        63 => "OpCopyMemory",
        64 => "OpCopyMemorySized",
        65 => "OpAccessChain",
        66 => "OpInBoundsAccessChain",
        67 => "OpPtrAccessChain",
        68 => "OpArrayLength",
        69 => "OpGenericPtrMemSemantics",
        70 => "OpInBoundsPtrAccessChain",
        71 => "OpDecorate",
        72 => "OpMemberDecorate",
        73 => "OpDecorationGroup",
        74 => "OpGroupDecorate",
        75 => "OpGroupMemberDecorate",
        77 => "OpVectorExtractDynamic",
        78 => "OpVectorInsertDynamic",
        79 => "OpVectorShuffle",
        80 => "OpCompositeConstruct",
        81 => "OpCompositeExtract",
        82 => "OpCompositeInsert",
        83 => "OpCopyObject",
        84 => "OpTranspose",
        86 => "OpSampledImage",
        87 => "OpImageSampleImplicitLod",
        88 => "OpImageSampleExplicitLod",
        89 => "OpImageSampleDrefImplicitLod",
        90 => "OpImageSampleDrefExplicitLod",
        91 => "OpImageSampleProjImplicitLod",
        92 => "OpImageSampleProjExplicitLod",
        93 => "OpImageSampleProjDrefImplicitLod",
        94 => "OpImageSampleProjDrefExplicitLod",
        95 => "OpImageFetch",
        96 => "OpImageGather",
        97 => "OpImageDrefGather",
        98 => "OpImageRead",
        99 => "OpImageWrite",
        100 => "OpImage",
        101 => "OpImageQueryFormat",
        102 => "OpImageQueryOrder",
        103 => "OpImageQuerySizeLod",
        104 => "OpImageQuerySize",
        105 => "OpImageQueryLod",
        106 => "OpImageQueryLevels",
        107 => "OpImageQuerySamples",
        109 => "OpConvertFToU",
        110 => "OpConvertFToS",
        111 => "OpConvertSToF",
        112 => "OpConvertUToF",
        113 => "OpUConvert",
        114 => "OpSConvert",
        115 => "OpFConvert",
        116 => "OpQuantizeToF16",
        117 => "OpConvertPtrToU",
        118 => "OpSatConvertSToU",
        119 => "OpSatConvertUToS",
        120 => "OpConvertUToPtr",
        121 => "OpPtrCastToGeneric",
        122 => "OpGenericCastToPtr",
        123 => "OpGenericCastToPtrExplicit",
        124 => "OpBitcast",
        126 => "OpSNegate",
        127 => "OpFNegate",
        128 => "OpIAdd",
        129 => "OpFAdd",
        130 => "OpISub",
        131 => "OpFSub",
        132 => "OpIMul",
        133 => "OpFMul",
        134 => "OpUDiv",
        135 => "OpSDiv",
        136 => "OpFDiv",
        137 => "OpUMod",
        138 => "OpSRem",
        139 => "OpSMod",
        140 => "OpFRem",
        141 => "OpFMod",
        142 => "OpVectorTimesScalar",
        143 => "OpMatrixTimesScalar",
        144 => "OpVectorTimesMatrix",
        145 => "OpMatrixTimesVector",
        146 => "OpMatrixTimesMatrix",
        147 => "OpOuterProduct",
        148 => "OpDot",
        149 => "OpIAddCarry",
        150 => "OpISubBorrow",
        151 => "OpUMulExtended",
        152 => "OpSMulExtended",
        154 => "OpAny",
        155 => "OpAll",
        156 => "OpIsNan",
        157 => "OpIsInf",
        158 => "OpIsFinite",
        159 => "OpIsNormal",
        160 => "OpSignBitSet",
        161 => "OpLessOrGreater",
        162 => "OpOrdered",
        163 => "OpUnordered",
        164 => "OpLogicalEqual",
        165 => "OpLogicalNotEqual",
        166 => "OpLogicalOr",
        167 => "OpLogicalAnd",
        168 => "OpLogicalNot",
        169 => "OpSelect",
        170 => "OpIEqual",
        171 => "OpINotEqual",
        172 => "OpUGreaterThan",
        173 => "OpSGreaterThan",
        174 => "OpUGreaterThanEqual",
        175 => "OpSGreaterThanEqual",
        176 => "OpULessThan",
        177 => "OpSLessThan",
        178 => "OpULessThanEqual",
        179 => "OpSLessThanEqual",
        180 => "OpFOrdEqual",
        181 => "OpFUnordEqual",
        182 => "OpFOrdNotEqual",
        183 => "OpFUnordNotEqual",
        184 => "OpFOrdLessThan",
        185 => "OpFUnordLessThan",
        186 => "OpFOrdGreaterThan",
        187 => "OpFUnordGreaterThan",
        188 => "OpFOrdLessThanEqual",
        189 => "OpFUnordLessThanEqual",
        190 => "OpFOrdGreaterThanEqual",
        191 => "OpFUnordGreaterThanEqual",
        194 => "OpShiftRightLogical",
        195 => "OpShiftRightArithmetic",
        196 => "OpShiftLeftLogical",
        197 => "OpBitwiseOr",
        198 => "OpBitwiseXor",
        199 => "OpBitwiseAnd",
        200 => "OpNot",
        201 => "OpBitFieldInsert",
        202 => "OpBitFieldSExtract",
        203 => "OpBitFieldUExtract",
        204 => "OpBitReverse",
        205 => "OpBitCount",
        207 => "OpDPdx",
        208 => "OpDPdy",
        209 => "OpFwidth",
        210 => "OpDPdxFine",
        211 => "OpDPdyFine",
        212 => "OpFwidthFine",
        213 => "OpDPdxCoarse",
        214 => "OpDPdyCoarse",
        215 => "OpFwidthCoarse",
        218 => "OpEmitVertex",
        219 => "OpEndPrimitive",
        220 => "OpEmitStreamVertex",
        221 => "OpEndStreamPrimitive",
        224 => "OpControlBarrier",
        225 => "OpMemoryBarrier",
        227 => "OpAtomicLoad",
        228 => "OpAtomicStore",
        229 => "OpAtomicExchange",
        230 => "OpAtomicCompareExchange",
        231 => "OpAtomicCompareExchangeWeak",
        232 => "OpAtomicIIncrement",
        233 => "OpAtomicIDecrement",
        234 => "OpAtomicIAdd",
        235 => "OpAtomicISub",
        236 => "OpAtomicSMin",
        237 => "OpAtomicUMin",
        238 => "OpAtomicSMax",
        239 => "OpAtomicUMax",
        240 => "OpAtomicAnd",
        241 => "OpAtomicOr",
        242 => "OpAtomicXor",
        245 => "OpPhi",
        246 => "OpLoopMerge",
        247 => "OpSelectionMerge",
        248 => "OpLabel",
        249 => "OpBranch",
        250 => "OpBranchConditional",
        251 => "OpSwitch",
        252 => "OpKill",
        253 => "OpReturn",
        254 => "OpReturnValue",
        255 => "OpUnreachable",
        256 => "OpLifetimeStart",
        257 => "OpLifetimeStop",
        259 => "OpGroupAsyncCopy",
        260 => "OpGroupWaitEvents",
        261 => "OpGroupAll",
        262 => "OpGroupAny",
        263 => "OpGroupBroadcast",
        264 => "OpGroupIAdd",
        265 => "OpGroupFAdd",
        266 => "OpGroupFMin",
        267 => "OpGroupUMin",
        268 => "OpGroupSMin",
        269 => "OpGroupFMax",
        270 => "OpGroupUMax",
        271 => "OpGroupSMax",
        274 => "OpReadPipe",
        275 => "OpWritePipe",
        276 => "OpReservedReadPipe",
        277 => "OpReservedWritePipe",
        278 => "OpReserveReadPipePackets",
        279 => "OpReserveWritePipePackets",
        280 => "OpCommitReadPipe",
        281 => "OpCommitWritePipe",
        282 => "OpIsValidReserveId",
        283 => "OpGetNumPipePackets",
        284 => "OpGetMaxPipePackets",
        285 => "OpGroupReserveReadPipePackets",
        286 => "OpGroupReserveWritePipePackets",
        287 => "OpGroupCommitReadPipe",
        288 => "OpGroupCommitWritePipe",
        291 => "OpEnqueueMarker",
        292 => "OpEnqueueKernel",
        293 => "OpGetKernelNDrangeSubGroupCount",
        294 => "OpGetKernelNDrangeMaxSubGroupSize",
        295 => "OpGetKernelWorkGroupSize",
        296 => "OpGetKernelPreferredWorkGroupSizeMultiple",
        297 => "OpRetainEvent",
        298 => "OpReleaseEvent",
        299 => "OpCreateUserEvent",
        300 => "OpIsValidEvent",
        301 => "OpSetUserEventStatus",
        302 => "OpCaptureEventProfilingInfo",
        303 => "OpGetDefaultQueue",
        304 => "OpBuildNDRange",
        305 => "OpImageSparseSampleImplicitLod",
        306 => "OpImageSparseSampleExplicitLod",
        307 => "OpImageSparseSampleDrefImplicitLod",
        308 => "OpImageSparseSampleDrefExplicitLod",
        309 => "OpImageSparseSampleProjImplicitLod",
        310 => "OpImageSparseSampleProjExplicitLod",
        311 => "OpImageSparseSampleProjDrefImplicitLod",
        312 => "OpImageSparseSampleProjDrefExplicitLod",
        313 => "OpImageSparseFetch",
        314 => "OpImageSparseGather",
        315 => "OpImageSparseDrefGather",
        316 => "OpImageSparseTexelsResident",
        317 => "OpNoLine",
        318 => "OpAtomicFlagTestAndSet",
        319 => "OpAtomicFlagClear",
        320 => "OpImageSparseRead",
        321 => "OpSizeOf",
        322 => "OpTypePipeStorage",
        323 => "OpConstantPipeStorage",
        324 => "OpCreatePipeFromPipeStorage",
        325 => "OpGetKernelLocalSizeForSubgroupCount",
        326 => "OpGetKernelMaxNumSubgroups",
        327 => "OpTypeNamedBarrier",
        328 => "OpNamedBarrierInitialize",
        329 => "OpMemoryNamedBarrier",
        330 => "OpModuleProcessed",
        331 => "OpExecutionModeId",
        333 => "OpGroupNonUniformElect",
        334 => "OpGroupNonUniformAll",
        335 => "OpGroupNonUniformAny",
        336 => "OpGroupNonUniformAllEqual",
        337 => "OpGroupNonUniformBroadcast",
        338 => "OpGroupNonUniformBroadcastFirst",
        339 => "OpGroupNonUniformBallot",
        340 => "OpGroupNonUniformInverseBallot",
        341 => "OpGroupNonUniformBallotBitExtract",
        342 => "OpGroupNonUniformBallotBitCount",
        343 => "OpGroupNonUniformBallotFindLSB",
        344 => "OpGroupNonUniformBallotFindMSB",
        345 => "OpGroupNonUniformShuffle",
        346 => "OpGroupNonUniformShuffleXor",
        347 => "OpGroupNonUniformShuffleUp",
        348 => "OpGroupNonUniformShuffleDown",
        349 => "OpGroupNonUniformIAdd",
        350 => "OpGroupNonUniformFAdd",
        351 => "OpGroupNonUniformIMul",
        352 => "OpGroupNonUniformFMul",
        353 => "OpGroupNonUniformSMin",
        354 => "OpGroupNonUniformUMin",
        355 => "OpGroupNonUniformFMin",
        356 => "OpGroupNonUniformSMax",
        357 => "OpGroupNonUniformUMax",
        358 => "OpGroupNonUniformFMax",
        359 => "OpGroupNonUniformBitwiseAnd",
        360 => "OpGroupNonUniformBitwiseOr",
        361 => "OpGroupNonUniformBitwiseXor",
        362 => "OpGroupNonUniformLogicalAnd",
        363 => "OpGroupNonUniformLogicalOr",
        364 => "OpGroupNonUniformLogicalXor",
        365 => "OpGroupNonUniformQuadBroadcast",
        366 => "OpGroupNonUniformQuadSwap",
        400 => "OpCopyLogical",
        401 => "OpPtrEqual",
        402 => "OpPtrNotEqual",
        403 => "OpPtrDiff",
        4160 => "OpColorAttachmentReadEXT",
        4161 => "OpDepthAttachmentReadEXT",
        4162 => "OpStencilAttachmentReadEXT",
        4421 => "OpSubgroupBallotKHR",
        4422 => "OpSubgroupFirstInvocationKHR",
        4428 => "OpSubgroupAllKHR",
        4429 => "OpSubgroupAnyKHR",
        4430 => "OpSubgroupAllEqualKHR",
        4431 => "OpGroupNonUniformRotateKHR",
        4432 => "OpSubgroupReadInvocationKHR",
        4445 => "OpTraceRayKHR",
        4446 => "OpExecuteCallableKHR",
        4447 => "OpConvertUToAccelerationStructureKHR",
        4448 => "OpIgnoreIntersectionKHR",
        4449 => "OpTerminateRayKHR",
        4450 => "OpSDot",
        4450 => "OpSDotKHR",
        4451 => "OpUDot",
        4451 => "OpUDotKHR",
        4452 => "OpSUDot",
        4452 => "OpSUDotKHR",
        4453 => "OpSDotAccSat",
        4453 => "OpSDotAccSatKHR",
        4454 => "OpUDotAccSat",
        4454 => "OpUDotAccSatKHR",
        4455 => "OpSUDotAccSat",
        4455 => "OpSUDotAccSatKHR",
        4456 => "OpTypeCooperativeMatrixKHR",
        4457 => "OpCooperativeMatrixLoadKHR",
        4458 => "OpCooperativeMatrixStoreKHR",
        4459 => "OpCooperativeMatrixMulAddKHR",
        4460 => "OpCooperativeMatrixLengthKHR",
        4472 => "OpTypeRayQueryKHR",
        4473 => "OpRayQueryInitializeKHR",
        4474 => "OpRayQueryTerminateKHR",
        4475 => "OpRayQueryGenerateIntersectionKHR",
        4476 => "OpRayQueryConfirmIntersectionKHR",
        4477 => "OpRayQueryProceedKHR",
        4479 => "OpRayQueryGetIntersectionTypeKHR",
        4480 => "OpImageSampleWeightedQCOM",
        4481 => "OpImageBoxFilterQCOM",
        4482 => "OpImageBlockMatchSSDQCOM",
        4483 => "OpImageBlockMatchSADQCOM",
        5056 => "OpReadClockKHR",
        5075 => "OpFinalizeNodePayloadsAMDX",
        5078 => "OpFinishWritingNodePayloadAMDX",
        5090 => "OpInitializeNodePayloadsAMDX",
        5249 => "OpHitObjectRecordHitMotionNV",
        5250 => "OpHitObjectRecordHitWithIndexMotionNV",
        5251 => "OpHitObjectRecordMissMotionNV",
        5252 => "OpHitObjectGetWorldToObjectNV",
        5253 => "OpHitObjectGetObjectToWorldNV",
        5254 => "OpHitObjectGetObjectRayDirectionNV",
        5255 => "OpHitObjectGetObjectRayOriginNV",
        5256 => "OpHitObjectTraceRayMotionNV",
        5257 => "OpHitObjectGetShaderRecordBufferHandleNV",
        5258 => "OpHitObjectGetShaderBindingTableRecordIndexNV",
        5259 => "OpHitObjectRecordEmptyNV",
        5260 => "OpHitObjectTraceRayNV",
        5261 => "OpHitObjectRecordHitNV",
        5262 => "OpHitObjectRecordHitWithIndexNV",
        5263 => "OpHitObjectRecordMissNV",
        5264 => "OpHitObjectExecuteShaderNV",
        5265 => "OpHitObjectGetCurrentTimeNV",
        5266 => "OpHitObjectGetAttributesNV",
        5267 => "OpHitObjectGetHitKindNV",
        5268 => "OpHitObjectGetPrimitiveIndexNV",
        5269 => "OpHitObjectGetGeometryIndexNV",
        5270 => "OpHitObjectGetInstanceIdNV",
        5271 => "OpHitObjectGetInstanceCustomIndexNV",
        5272 => "OpHitObjectGetWorldRayDirectionNV",
        5273 => "OpHitObjectGetWorldRayOriginNV",
        5274 => "OpHitObjectGetRayTMaxNV",
        5275 => "OpHitObjectGetRayTMinNV",
        5276 => "OpHitObjectIsEmptyNV",
        5277 => "OpHitObjectIsHitNV",
        5278 => "OpHitObjectIsMissNV",
        5279 => "OpReorderThreadWithHitObjectNV",
        5280 => "OpReorderThreadWithHintNV",
        5281 => "OpTypeHitObjectNV",
        5294 => "OpEmitMeshTasksEXT",
        5295 => "OpSetMeshOutputsEXT",
        5300 => "OpFetchMicroTriangleVertexPositionNV",
        5301 => "OpFetchMicroTriangleVertexBarycentricNV",
        5334 => "OpReportIntersectionKHR",
        5340 => "OpRayQueryGetIntersectionTriangleVertexPositionsKHR",
        5341 => "OpTypeAccelerationStructureKHR",
        5364 => "OpBeginInvocationInterlockEXT",
        5365 => "OpEndInvocationInterlockEXT",
        5380 => "OpDemoteToHelperInvocation",
        5380 => "OpDemoteToHelperInvocationEXT",
        5381 => "OpIsHelperInvocationEXT",
        5391 => "OpConvertUToImageNV",
        5392 => "OpConvertUToSamplerNV",
        5393 => "OpConvertImageToUNV",
        5394 => "OpConvertSamplerToUNV",
        5395 => "OpConvertUToSampledImageNV",
        5396 => "OpConvertSampledImageToUNV",
        5397 => "OpSamplerImageAddressingModeNV",
        5571 => "OpSubgroupShuffleINTEL",
        5572 => "OpSubgroupShuffleDownINTEL",
        5573 => "OpSubgroupShuffleUpINTEL",
        5574 => "OpSubgroupShuffleXorINTEL",
        5575 => "OpSubgroupBlockReadINTEL",
        5576 => "OpSubgroupBlockWriteINTEL",
        5577 => "OpSubgroupImageBlockReadINTEL",
        5578 => "OpSubgroupImageBlockWriteINTEL",
        5580 => "OpSubgroupImageMediaBlockReadINTEL",
        5581 => "OpSubgroupImageMediaBlockWriteINTEL",
        5585 => "OpUCountLeadingZerosINTEL",
        5586 => "OpUCountTrailingZerosINTEL",
        5587 => "OpAbsISubINTEL",
        5588 => "OpAbsUSubINTEL",
        5589 => "OpIAddSatINTEL",
        5590 => "OpUAddSatINTEL",
        5591 => "OpIAverageINTEL",
        5592 => "OpUAverageINTEL",
        5593 => "OpIAverageRoundedINTEL",
        5594 => "OpUAverageRoundedINTEL",
        5595 => "OpISubSatINTEL",
        5596 => "OpUSubSatINTEL",
        5597 => "OpIMul32x16INTEL",
        5598 => "OpUMul32x16INTEL",
        5609 => "OpAsmTargetINTEL",
        5610 => "OpAsmINTEL",
        5611 => "OpAsmCallINTEL",
        5614 => "OpAtomicFMinEXT",
        5615 => "OpAtomicFMaxEXT",
        5630 => "OpAssumeTrueKHR",
        5631 => "OpExpectKHR",
        5699 => "OpVmeImageINTEL",
        5700 => "OpTypeVmeImageINTEL",
        5701 => "OpTypeAvcImePayloadINTEL",
        5702 => "OpTypeAvcRefPayloadINTEL",
        5703 => "OpTypeAvcSicPayloadINTEL",
        5704 => "OpTypeAvcMcePayloadINTEL",
        5705 => "OpTypeAvcMceResultINTEL",
        5706 => "OpTypeAvcImeResultINTEL",
        5707 => "OpTypeAvcImeResultSingleReferenceStreamoutINTEL",
        5708 => "OpTypeAvcImeResultDualReferenceStreamoutINTEL",
        5709 => "OpTypeAvcImeSingleReferenceStreaminINTEL",
        5710 => "OpTypeAvcImeDualReferenceStreaminINTEL",
        5711 => "OpTypeAvcRefResultINTEL",
        5712 => "OpTypeAvcSicResultINTEL",
        5713 => "OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL",
        5714 => "OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL",
        5715 => "OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL",
        5716 => "OpSubgroupAvcMceSetInterShapePenaltyINTEL",
        5717 => "OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL",
        5718 => "OpSubgroupAvcMceSetInterDirectionPenaltyINTEL",
        5719 => "OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL",
        5720 => "OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL",
        5721 => "OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL",
        5722 => "OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL",
        5723 => "OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL",
        5724 => "OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL",
        5725 => "OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL",
        5726 => "OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL",
        5727 => "OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL",
        5728 => "OpSubgroupAvcMceSetAcOnlyHaarINTEL",
        5729 => "OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL",
        5730 => "OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL",
        5731 => "OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL",
        5732 => "OpSubgroupAvcMceConvertToImePayloadINTEL",
        5733 => "OpSubgroupAvcMceConvertToImeResultINTEL",
        5734 => "OpSubgroupAvcMceConvertToRefPayloadINTEL",
        5735 => "OpSubgroupAvcMceConvertToRefResultINTEL",
        5736 => "OpSubgroupAvcMceConvertToSicPayloadINTEL",
        5737 => "OpSubgroupAvcMceConvertToSicResultINTEL",
        5738 => "OpSubgroupAvcMceGetMotionVectorsINTEL",
        5739 => "OpSubgroupAvcMceGetInterDistortionsINTEL",
        5740 => "OpSubgroupAvcMceGetBestInterDistortionsINTEL",
        5741 => "OpSubgroupAvcMceGetInterMajorShapeINTEL",
        5742 => "OpSubgroupAvcMceGetInterMinorShapeINTEL",
        5743 => "OpSubgroupAvcMceGetInterDirectionsINTEL",
        5744 => "OpSubgroupAvcMceGetInterMotionVectorCountINTEL",
        5745 => "OpSubgroupAvcMceGetInterReferenceIdsINTEL",
        5746 => "OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL",
        5747 => "OpSubgroupAvcImeInitializeINTEL",
        5748 => "OpSubgroupAvcImeSetSingleReferenceINTEL",
        5749 => "OpSubgroupAvcImeSetDualReferenceINTEL",
        5750 => "OpSubgroupAvcImeRefWindowSizeINTEL",
        5751 => "OpSubgroupAvcImeAdjustRefOffsetINTEL",
        5752 => "OpSubgroupAvcImeConvertToMcePayloadINTEL",
        5753 => "OpSubgroupAvcImeSetMaxMotionVectorCountINTEL",
        5754 => "OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL",
        5755 => "OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL",
        5756 => "OpSubgroupAvcImeSetWeightedSadINTEL",
        5757 => "OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL",
        5758 => "OpSubgroupAvcImeEvaluateWithDualReferenceINTEL",
        5759 => "OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL",
        5760 => "OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL",
        5761 => "OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL",
        5762 => "OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL",
        5763 => "OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL",
        5764 => "OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL",
        5765 => "OpSubgroupAvcImeConvertToMceResultINTEL",
        5766 => "OpSubgroupAvcImeGetSingleReferenceStreaminINTEL",
        5767 => "OpSubgroupAvcImeGetDualReferenceStreaminINTEL",
        5768 => "OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL",
        5769 => "OpSubgroupAvcImeStripDualReferenceStreamoutINTEL",
        5770 => "OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL",
        5771 => "OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL",
        5772 => "OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL",
        5773 => "OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL",
        5774 => "OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL",
        5775 => "OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL",
        5776 => "OpSubgroupAvcImeGetBorderReachedINTEL",
        5777 => "OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL",
        5778 => "OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL",
        5779 => "OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL",
        5780 => "OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL",
        5781 => "OpSubgroupAvcFmeInitializeINTEL",
        5782 => "OpSubgroupAvcBmeInitializeINTEL",
        5783 => "OpSubgroupAvcRefConvertToMcePayloadINTEL",
        5784 => "OpSubgroupAvcRefSetBidirectionalMixDisableINTEL",
        5785 => "OpSubgroupAvcRefSetBilinearFilterEnableINTEL",
        5786 => "OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL",
        5787 => "OpSubgroupAvcRefEvaluateWithDualReferenceINTEL",
        5788 => "OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL",
        5789 => "OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL",
        5790 => "OpSubgroupAvcRefConvertToMceResultINTEL",
        5791 => "OpSubgroupAvcSicInitializeINTEL",
        5792 => "OpSubgroupAvcSicConfigureSkcINTEL",
        5793 => "OpSubgroupAvcSicConfigureIpeLumaINTEL",
        5794 => "OpSubgroupAvcSicConfigureIpeLumaChromaINTEL",
        5795 => "OpSubgroupAvcSicGetMotionVectorMaskINTEL",
        5796 => "OpSubgroupAvcSicConvertToMcePayloadINTEL",
        5797 => "OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL",
        5798 => "OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL",
        5799 => "OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL",
        5800 => "OpSubgroupAvcSicSetBilinearFilterEnableINTEL",
        5801 => "OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL",
        5802 => "OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL",
        5803 => "OpSubgroupAvcSicEvaluateIpeINTEL",
        5804 => "OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL",
        5805 => "OpSubgroupAvcSicEvaluateWithDualReferenceINTEL",
        5806 => "OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL",
        5807 => "OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL",
        5808 => "OpSubgroupAvcSicConvertToMceResultINTEL",
        5809 => "OpSubgroupAvcSicGetIpeLumaShapeINTEL",
        5810 => "OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL",
        5811 => "OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL",
        5812 => "OpSubgroupAvcSicGetPackedIpeLumaModesINTEL",
        5813 => "OpSubgroupAvcSicGetIpeChromaModeINTEL",
        5814 => "OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL",
        5815 => "OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL",
        5816 => "OpSubgroupAvcSicGetInterRawSadsINTEL",
        5818 => "OpVariableLengthArrayINTEL",
        5819 => "OpSaveMemoryINTEL",
        5820 => "OpRestoreMemoryINTEL",
        5840 => "OpArbitraryFloatSinCosPiINTEL",
        5841 => "OpArbitraryFloatCastINTEL",
        5842 => "OpArbitraryFloatCastFromIntINTEL",
        5843 => "OpArbitraryFloatCastToIntINTEL",
        5846 => "OpArbitraryFloatAddINTEL",
        5847 => "OpArbitraryFloatSubINTEL",
        5848 => "OpArbitraryFloatMulINTEL",
        5849 => "OpArbitraryFloatDivINTEL",
        5850 => "OpArbitraryFloatGTINTEL",
        5851 => "OpArbitraryFloatGEINTEL",
        5852 => "OpArbitraryFloatLTINTEL",
        5853 => "OpArbitraryFloatLEINTEL",
        5854 => "OpArbitraryFloatEQINTEL",
        5855 => "OpArbitraryFloatRecipINTEL",
        5856 => "OpArbitraryFloatRSqrtINTEL",
        5857 => "OpArbitraryFloatCbrtINTEL",
        5858 => "OpArbitraryFloatHypotINTEL",
        5859 => "OpArbitraryFloatSqrtINTEL",
        5860 => "OpArbitraryFloatLogINTEL",
        5861 => "OpArbitraryFloatLog2INTEL",
        5862 => "OpArbitraryFloatLog10INTEL",
        5863 => "OpArbitraryFloatLog1pINTEL",
        5864 => "OpArbitraryFloatExpINTEL",
        5865 => "OpArbitraryFloatExp2INTEL",
        5866 => "OpArbitraryFloatExp10INTEL",
        5867 => "OpArbitraryFloatExpm1INTEL",
        5868 => "OpArbitraryFloatSinINTEL",
        5869 => "OpArbitraryFloatCosINTEL",
        5870 => "OpArbitraryFloatSinCosINTEL",
        5871 => "OpArbitraryFloatSinPiINTEL",
        5872 => "OpArbitraryFloatCosPiINTEL",
        5873 => "OpArbitraryFloatASinINTEL",
        5874 => "OpArbitraryFloatASinPiINTEL",
        5875 => "OpArbitraryFloatACosINTEL",
        5876 => "OpArbitraryFloatACosPiINTEL",
        5877 => "OpArbitraryFloatATanINTEL",
        5878 => "OpArbitraryFloatATanPiINTEL",
        5879 => "OpArbitraryFloatATan2INTEL",
        5880 => "OpArbitraryFloatPowINTEL",
        5881 => "OpArbitraryFloatPowRINTEL",
        5882 => "OpArbitraryFloatPowNINTEL",
        5923 => "OpFixedSqrtINTEL",
        5924 => "OpFixedRecipINTEL",
        5925 => "OpFixedRsqrtINTEL",
        5926 => "OpFixedSinINTEL",
        5927 => "OpFixedCosINTEL",
        5928 => "OpFixedSinCosINTEL",
        5929 => "OpFixedSinPiINTEL",
        5930 => "OpFixedCosPiINTEL",
        5931 => "OpFixedSinCosPiINTEL",
        5932 => "OpFixedLogINTEL",
        5933 => "OpFixedExpINTEL",
        5934 => "OpPtrCastToCrossWorkgroupINTEL",
        5938 => "OpCrossWorkgroupCastToPtrINTEL",
        6016 => "OpRayQueryGetRayTMinKHR",
        6017 => "OpRayQueryGetRayFlagsKHR",
        6018 => "OpRayQueryGetIntersectionTKHR",
        6019 => "OpRayQueryGetIntersectionInstanceCustomIndexKHR",
        6020 => "OpRayQueryGetIntersectionInstanceIdKHR",
        6021 => "OpRayQueryGetIntersectionInstanceShaderBindingTableRecordOffsetKHR",
        6022 => "OpRayQueryGetIntersectionGeometryIndexKHR",
        6023 => "OpRayQueryGetIntersectionPrimitiveIndexKHR",
        6024 => "OpRayQueryGetIntersectionBarycentricsKHR",
        6025 => "OpRayQueryGetIntersectionFrontFaceKHR",
        6026 => "OpRayQueryGetIntersectionCandidateAABBOpaqueKHR",
        6027 => "OpRayQueryGetIntersectionObjectRayDirectionKHR",
        6028 => "OpRayQueryGetIntersectionObjectRayOriginKHR",
        6029 => "OpRayQueryGetWorldRayDirectionKHR",
        6030 => "OpRayQueryGetWorldRayOriginKHR",
        6031 => "OpRayQueryGetIntersectionObjectToWorldKHR",
        6032 => "OpRayQueryGetIntersectionWorldToObjectKHR",
        6035 => "OpAtomicFAddEXT",
        6086 => "OpTypeBufferSurfaceINTEL",
        6090 => "OpTypeStructContinuedINTEL",
        6091 => "OpConstantCompositeContinuedINTEL",
        6092 => "OpSpecConstantCompositeContinuedINTEL",
        6096 => "OpCompositeConstructContinuedINTEL",
        6116 => "OpConvertFToBF16INTEL",
        6117 => "OpConvertBF16ToFINTEL",
        6142 => "OpControlBarrierArriveINTEL",
        6143 => "OpControlBarrierWaitINTEL",
        6401 => "OpGroupIMulKHR",
        6402 => "OpGroupFMulKHR",
        6403 => "OpGroupBitwiseAndKHR",
        6404 => "OpGroupBitwiseOrKHR",
        6405 => "OpGroupBitwiseXorKHR",
        6406 => "OpGroupLogicalAndKHR",
        6407 => "OpGroupLogicalOrKHR",
        6408 => "OpGroupLogicalXorKHR",
        _ => bail!("Unknown opcode: {}", opcode),
    };
    Ok(out)
}