mirror of
https://github.com/Inori/GPCS4.git
synced 2024-05-20 13:07:58 -04:00
Add spirv parsing script
This commit is contained in:
parent
c6b8949704
commit
5ffe3b4d86
600
Tools/SpirvErrorCheck.py
Normal file
600
Tools/SpirvErrorCheck.py
Normal file
|
@ -0,0 +1,600 @@
|
|||
import sys
|
||||
import struct
|
||||
|
||||
OPCODE_TABLE = \
|
||||
{
|
||||
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',
|
||||
332: 'OpDecorateId',
|
||||
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',
|
||||
4421: 'OpSubgroupBallotKHR',
|
||||
4422: 'OpSubgroupFirstInvocationKHR',
|
||||
4428: 'OpSubgroupAllKHR',
|
||||
4429: 'OpSubgroupAnyKHR',
|
||||
4430: 'OpSubgroupAllEqualKHR',
|
||||
4432: 'OpSubgroupReadInvocationKHR',
|
||||
5000: 'OpGroupIAddNonUniformAMD',
|
||||
5001: 'OpGroupFAddNonUniformAMD',
|
||||
5002: 'OpGroupFMinNonUniformAMD',
|
||||
5003: 'OpGroupUMinNonUniformAMD',
|
||||
5004: 'OpGroupSMinNonUniformAMD',
|
||||
5005: 'OpGroupFMaxNonUniformAMD',
|
||||
5006: 'OpGroupUMaxNonUniformAMD',
|
||||
5007: 'OpGroupSMaxNonUniformAMD',
|
||||
5011: 'OpFragmentMaskFetchAMD',
|
||||
5012: 'OpFragmentFetchAMD',
|
||||
5283: 'OpImageSampleFootprintNV',
|
||||
5296: 'OpGroupNonUniformPartitionNV',
|
||||
5299: 'OpWritePackedPrimitiveIndices4x8NV',
|
||||
5334: 'OpReportIntersectionNV',
|
||||
5335: 'OpIgnoreIntersectionNV',
|
||||
5336: 'OpTerminateRayNV',
|
||||
5337: 'OpTraceNV',
|
||||
5341: 'OpTypeAccelerationStructureNV',
|
||||
5344: 'OpExecuteCallableNV',
|
||||
5358: 'OpTypeCooperativeMatrixNV',
|
||||
5359: 'OpCooperativeMatrixLoadNV',
|
||||
5360: 'OpCooperativeMatrixStoreNV',
|
||||
5361: 'OpCooperativeMatrixMulAddNV',
|
||||
5362: 'OpCooperativeMatrixLengthNV',
|
||||
5364: 'OpBeginInvocationInterlockEXT',
|
||||
5365: 'OpEndInvocationInterlockEXT',
|
||||
5380: 'OpDemoteToHelperInvocationEXT',
|
||||
5381: 'OpIsHelperInvocationEXT',
|
||||
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',
|
||||
5632: 'OpDecorateString',
|
||||
5632: 'OpDecorateStringGOOGLE',
|
||||
5633: 'OpMemberDecorateString',
|
||||
5633: 'OpMemberDecorateStringGOOGLE',
|
||||
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'
|
||||
}
|
||||
|
||||
def byte2int(byte):
|
||||
long_tuple=struct.unpack('L',byte)
|
||||
long = long_tuple[0]
|
||||
return long
|
||||
|
||||
def ProcessHeader(src):
|
||||
word = byte2int(src.read(4))
|
||||
print('Magic: 0x{:08X}'.format(word))
|
||||
word = byte2int(src.read(4))
|
||||
print('Version: 0x{:08X}'.format(word))
|
||||
word = byte2int(src.read(4))
|
||||
print('Generator: 0x{:08X}'.format(word))
|
||||
word = byte2int(src.read(4))
|
||||
print('Bound: 0x{:08X}'.format(word))
|
||||
word = byte2int(src.read(4))
|
||||
print('Schema: 0x{:08X}'.format(word))
|
||||
|
||||
def ProcessInstructions(src):
|
||||
|
||||
inst_count = 0
|
||||
while True:
|
||||
offset = src.tell()
|
||||
|
||||
word = src.read(4)
|
||||
if not word:
|
||||
break
|
||||
word = byte2int(word)
|
||||
|
||||
word_count = (word & 0xFFFF0000) >> 16
|
||||
opcode = word & 0x0000FFFF
|
||||
|
||||
|
||||
print('offset: 0x{:08X}'.format(offset))
|
||||
print('opname: {}'.format(OPCODE_TABLE[opcode]))
|
||||
print('opcode: 0x{:08X}'.format(opcode))
|
||||
print('length: 0x{:08X}'.format(word_count))
|
||||
|
||||
inst_count += 1
|
||||
skip_offset = 0
|
||||
if word_count >= 4:
|
||||
src.seek(4, 1)
|
||||
word = src.read(4)
|
||||
if not word:
|
||||
break
|
||||
|
||||
result_id = byte2int(word) # this may not be true for some opcodes, just for reference
|
||||
print('result id: {}'.format(result_id))
|
||||
|
||||
skip_offset = (word_count - 3) * 4
|
||||
else:
|
||||
skip_offset = (word_count - 1) * 4
|
||||
|
||||
src.seek(skip_offset, 1) # skip operands
|
||||
|
||||
print('\n====\n')
|
||||
|
||||
print('Instruction count: {}'.format(inst_count))
|
||||
|
||||
|
||||
|
||||
|
||||
def Main():
|
||||
spv_file = open(sys.argv[1], 'rb')
|
||||
ProcessHeader(spv_file)
|
||||
print('===================================')
|
||||
ProcessInstructions(spv_file)
|
||||
|
||||
if __name__ == '__main__':
|
||||
Main()
|
Loading…
Reference in a new issue