mirror of
https://github.com/openharmony/third_party_spirv-headers.git
synced 2026-07-19 14:53:32 -04:00
Merge pull request #100 from jeffbolznv/hasresult
Add a function that returns whether an opcode has a result and/or result type
This commit is contained in:
@@ -1330,5 +1330,514 @@ typedef enum SpvOp_ {
|
||||
SpvOpMax = 0x7fffffff,
|
||||
} SpvOp;
|
||||
|
||||
#ifdef SPV_ENABLE_UTILITY_CODE
|
||||
inline void SpvHasResultAndType(SpvOp opcode, bool *hasResult, bool *hasResultType) {
|
||||
*hasResult = *hasResultType = false;
|
||||
switch (opcode) {
|
||||
default: /* unknown opcode */ break;
|
||||
case SpvOpNop: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpUndef: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSourceContinued: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpSource: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpSourceExtension: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpName: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpMemberName: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpString: *hasResult = true; *hasResultType = false; break;
|
||||
case SpvOpLine: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpExtension: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpExtInstImport: *hasResult = true; *hasResultType = false; break;
|
||||
case SpvOpExtInst: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpMemoryModel: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpEntryPoint: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpExecutionMode: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpCapability: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpTypeVoid: *hasResult = true; *hasResultType = false; break;
|
||||
case SpvOpTypeBool: *hasResult = true; *hasResultType = false; break;
|
||||
case SpvOpTypeInt: *hasResult = true; *hasResultType = false; break;
|
||||
case SpvOpTypeFloat: *hasResult = true; *hasResultType = false; break;
|
||||
case SpvOpTypeVector: *hasResult = true; *hasResultType = false; break;
|
||||
case SpvOpTypeMatrix: *hasResult = true; *hasResultType = false; break;
|
||||
case SpvOpTypeImage: *hasResult = true; *hasResultType = false; break;
|
||||
case SpvOpTypeSampler: *hasResult = true; *hasResultType = false; break;
|
||||
case SpvOpTypeSampledImage: *hasResult = true; *hasResultType = false; break;
|
||||
case SpvOpTypeArray: *hasResult = true; *hasResultType = false; break;
|
||||
case SpvOpTypeRuntimeArray: *hasResult = true; *hasResultType = false; break;
|
||||
case SpvOpTypeStruct: *hasResult = true; *hasResultType = false; break;
|
||||
case SpvOpTypeOpaque: *hasResult = true; *hasResultType = false; break;
|
||||
case SpvOpTypePointer: *hasResult = true; *hasResultType = false; break;
|
||||
case SpvOpTypeFunction: *hasResult = true; *hasResultType = false; break;
|
||||
case SpvOpTypeEvent: *hasResult = true; *hasResultType = false; break;
|
||||
case SpvOpTypeDeviceEvent: *hasResult = true; *hasResultType = false; break;
|
||||
case SpvOpTypeReserveId: *hasResult = true; *hasResultType = false; break;
|
||||
case SpvOpTypeQueue: *hasResult = true; *hasResultType = false; break;
|
||||
case SpvOpTypePipe: *hasResult = true; *hasResultType = false; break;
|
||||
case SpvOpTypeForwardPointer: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpConstantTrue: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpConstantFalse: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpConstant: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpConstantComposite: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpConstantSampler: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpConstantNull: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSpecConstantTrue: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSpecConstantFalse: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSpecConstant: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSpecConstantComposite: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSpecConstantOp: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpFunction: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpFunctionParameter: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpFunctionEnd: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpFunctionCall: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpVariable: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpImageTexelPointer: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpLoad: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpStore: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpCopyMemory: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpCopyMemorySized: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpAccessChain: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpInBoundsAccessChain: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpPtrAccessChain: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpArrayLength: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGenericPtrMemSemantics: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpInBoundsPtrAccessChain: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpDecorate: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpMemberDecorate: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpDecorationGroup: *hasResult = true; *hasResultType = false; break;
|
||||
case SpvOpGroupDecorate: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpGroupMemberDecorate: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpVectorExtractDynamic: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpVectorInsertDynamic: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpVectorShuffle: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpCompositeConstruct: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpCompositeExtract: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpCompositeInsert: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpCopyObject: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpTranspose: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSampledImage: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpImageSampleImplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpImageSampleExplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpImageSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpImageSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpImageSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpImageSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpImageSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpImageSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpImageFetch: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpImageGather: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpImageDrefGather: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpImageRead: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpImageWrite: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpImage: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpImageQueryFormat: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpImageQueryOrder: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpImageQuerySizeLod: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpImageQuerySize: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpImageQueryLod: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpImageQueryLevels: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpImageQuerySamples: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpConvertFToU: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpConvertFToS: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpConvertSToF: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpConvertUToF: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpUConvert: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSConvert: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpFConvert: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpQuantizeToF16: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpConvertPtrToU: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSatConvertSToU: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSatConvertUToS: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpConvertUToPtr: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpPtrCastToGeneric: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGenericCastToPtr: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGenericCastToPtrExplicit: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpBitcast: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSNegate: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpFNegate: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpIAdd: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpFAdd: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpISub: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpFSub: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpIMul: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpFMul: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpUDiv: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSDiv: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpFDiv: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpUMod: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSRem: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSMod: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpFRem: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpFMod: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpVectorTimesScalar: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpMatrixTimesScalar: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpVectorTimesMatrix: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpMatrixTimesVector: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpMatrixTimesMatrix: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpOuterProduct: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpDot: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpIAddCarry: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpISubBorrow: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpUMulExtended: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSMulExtended: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpAny: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpAll: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpIsNan: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpIsInf: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpIsFinite: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpIsNormal: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSignBitSet: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpLessOrGreater: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpOrdered: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpUnordered: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpLogicalEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpLogicalNotEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpLogicalOr: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpLogicalAnd: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpLogicalNot: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSelect: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpIEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpINotEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpUGreaterThan: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSGreaterThan: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpUGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpULessThan: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSLessThan: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpULessThanEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSLessThanEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpFOrdEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpFUnordEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpFOrdNotEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpFUnordNotEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpFOrdLessThan: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpFUnordLessThan: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpFOrdGreaterThan: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpFUnordGreaterThan: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpFOrdLessThanEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpFUnordLessThanEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpFOrdGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpFUnordGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpShiftRightLogical: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpShiftRightArithmetic: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpShiftLeftLogical: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpBitwiseOr: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpBitwiseXor: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpBitwiseAnd: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpNot: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpBitFieldInsert: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpBitFieldSExtract: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpBitFieldUExtract: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpBitReverse: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpBitCount: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpDPdx: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpDPdy: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpFwidth: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpDPdxFine: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpDPdyFine: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpFwidthFine: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpDPdxCoarse: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpDPdyCoarse: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpFwidthCoarse: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpEmitVertex: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpEndPrimitive: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpEmitStreamVertex: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpEndStreamPrimitive: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpControlBarrier: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpMemoryBarrier: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpAtomicLoad: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpAtomicStore: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpAtomicExchange: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpAtomicCompareExchange: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpAtomicCompareExchangeWeak: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpAtomicIIncrement: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpAtomicIDecrement: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpAtomicIAdd: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpAtomicISub: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpAtomicSMin: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpAtomicUMin: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpAtomicSMax: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpAtomicUMax: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpAtomicAnd: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpAtomicOr: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpAtomicXor: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpPhi: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpLoopMerge: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpSelectionMerge: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpLabel: *hasResult = true; *hasResultType = false; break;
|
||||
case SpvOpBranch: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpBranchConditional: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpSwitch: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpKill: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpReturn: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpReturnValue: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpUnreachable: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpLifetimeStart: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpLifetimeStop: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpGroupAsyncCopy: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupWaitEvents: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpGroupAll: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupAny: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupBroadcast: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupIAdd: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupFAdd: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupFMin: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupUMin: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupSMin: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupFMax: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupUMax: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupSMax: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpReadPipe: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpWritePipe: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpReservedReadPipe: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpReservedWritePipe: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpReserveReadPipePackets: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpReserveWritePipePackets: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpCommitReadPipe: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpCommitWritePipe: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpIsValidReserveId: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGetNumPipePackets: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGetMaxPipePackets: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupReserveReadPipePackets: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupReserveWritePipePackets: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupCommitReadPipe: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpGroupCommitWritePipe: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpEnqueueMarker: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpEnqueueKernel: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGetKernelNDrangeSubGroupCount: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGetKernelNDrangeMaxSubGroupSize: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGetKernelWorkGroupSize: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGetKernelPreferredWorkGroupSizeMultiple: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpRetainEvent: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpReleaseEvent: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpCreateUserEvent: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpIsValidEvent: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSetUserEventStatus: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpCaptureEventProfilingInfo: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpGetDefaultQueue: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpBuildNDRange: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpImageSparseSampleImplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpImageSparseSampleExplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpImageSparseSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpImageSparseSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpImageSparseSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpImageSparseSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpImageSparseSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpImageSparseSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpImageSparseFetch: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpImageSparseGather: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpImageSparseDrefGather: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpImageSparseTexelsResident: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpNoLine: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpAtomicFlagTestAndSet: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpAtomicFlagClear: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpImageSparseRead: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSizeOf: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpTypePipeStorage: *hasResult = true; *hasResultType = false; break;
|
||||
case SpvOpConstantPipeStorage: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpCreatePipeFromPipeStorage: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGetKernelLocalSizeForSubgroupCount: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGetKernelMaxNumSubgroups: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpTypeNamedBarrier: *hasResult = true; *hasResultType = false; break;
|
||||
case SpvOpNamedBarrierInitialize: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpMemoryNamedBarrier: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpModuleProcessed: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpExecutionModeId: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpDecorateId: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpGroupNonUniformElect: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupNonUniformAll: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupNonUniformAny: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupNonUniformAllEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupNonUniformBroadcast: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupNonUniformBroadcastFirst: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupNonUniformBallot: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupNonUniformInverseBallot: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupNonUniformBallotBitExtract: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupNonUniformBallotBitCount: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupNonUniformBallotFindLSB: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupNonUniformBallotFindMSB: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupNonUniformShuffle: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupNonUniformShuffleXor: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupNonUniformShuffleUp: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupNonUniformShuffleDown: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupNonUniformIAdd: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupNonUniformFAdd: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupNonUniformIMul: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupNonUniformFMul: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupNonUniformSMin: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupNonUniformUMin: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupNonUniformFMin: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupNonUniformSMax: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupNonUniformUMax: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupNonUniformFMax: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupNonUniformBitwiseAnd: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupNonUniformBitwiseOr: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupNonUniformBitwiseXor: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupNonUniformLogicalAnd: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupNonUniformLogicalOr: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupNonUniformLogicalXor: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupNonUniformQuadBroadcast: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupNonUniformQuadSwap: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupBallotKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupFirstInvocationKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAllKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAnyKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAllEqualKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupReadInvocationKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupIAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupFAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupFMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupUMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupSMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupFMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupUMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpGroupSMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpFragmentMaskFetchAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpFragmentFetchAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpWritePackedPrimitiveIndices4x8NV: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpReportIntersectionNV: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpIgnoreIntersectionNV: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpTerminateRayNV: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpTraceNV: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpTypeAccelerationStructureNV: *hasResult = true; *hasResultType = false; break;
|
||||
case SpvOpExecuteCallableNV: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpSubgroupShuffleINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupShuffleDownINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupShuffleUpINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupShuffleXorINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpSubgroupImageBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupImageBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpSubgroupImageMediaBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupImageMediaBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpVmeImageINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpTypeVmeImageINTEL: *hasResult = true; *hasResultType = false; break;
|
||||
case SpvOpTypeAvcImePayloadINTEL: *hasResult = true; *hasResultType = false; break;
|
||||
case SpvOpTypeAvcRefPayloadINTEL: *hasResult = true; *hasResultType = false; break;
|
||||
case SpvOpTypeAvcSicPayloadINTEL: *hasResult = true; *hasResultType = false; break;
|
||||
case SpvOpTypeAvcMcePayloadINTEL: *hasResult = true; *hasResultType = false; break;
|
||||
case SpvOpTypeAvcMceResultINTEL: *hasResult = true; *hasResultType = false; break;
|
||||
case SpvOpTypeAvcImeResultINTEL: *hasResult = true; *hasResultType = false; break;
|
||||
case SpvOpTypeAvcImeResultSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break;
|
||||
case SpvOpTypeAvcImeResultDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break;
|
||||
case SpvOpTypeAvcImeSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break;
|
||||
case SpvOpTypeAvcImeDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break;
|
||||
case SpvOpTypeAvcRefResultINTEL: *hasResult = true; *hasResultType = false; break;
|
||||
case SpvOpTypeAvcSicResultINTEL: *hasResult = true; *hasResultType = false; break;
|
||||
case SpvOpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcMceSetInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcMceSetInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcMceSetMotionVectorCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcMceSetAcOnlyHaarINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcMceConvertToImePayloadINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcMceConvertToImeResultINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcMceConvertToRefPayloadINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcMceConvertToRefResultINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcMceConvertToSicPayloadINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcMceConvertToSicResultINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcMceGetMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcMceGetInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcMceGetBestInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcMceGetInterMajorShapeINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcMceGetInterMinorShapeINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcMceGetInterDirectionsINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcMceGetInterMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcMceGetInterReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcImeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcImeSetSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcImeSetDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcImeRefWindowSizeINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcImeAdjustRefOffsetINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcImeConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcImeSetMaxMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcImeSetUnidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcImeSetWeightedSadINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcImeEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcImeEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcImeConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcImeGetSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcImeGetDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcImeStripSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcImeStripDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcImeGetBorderReachedINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcImeGetTruncatedSearchIndicationINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcFmeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcBmeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcRefConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcRefSetBidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcRefSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcRefEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcRefEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcRefEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcRefConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcSicInitializeINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcSicConfigureSkcINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcSicConfigureIpeLumaINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcSicConfigureIpeLumaChromaINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcSicGetMotionVectorMaskINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcSicConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcSicSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcSicSetSkcForwardTransformEnableINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcSicEvaluateIpeINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcSicEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcSicEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcSicEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcSicConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcSicGetIpeLumaShapeINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcSicGetBestIpeLumaDistortionINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcSicGetBestIpeChromaDistortionINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcSicGetPackedIpeLumaModesINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcSicGetIpeChromaModeINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpSubgroupAvcSicGetInterRawSadsINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpDecorateStringGOOGLE: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpMemberDecorateStringGOOGLE: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpGroupNonUniformPartitionNV: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpImageSampleFootprintNV: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpTypeCooperativeMatrixNV: *hasResult = true; *hasResultType = false; break;
|
||||
case SpvOpCooperativeMatrixLoadNV: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpCooperativeMatrixStoreNV: *hasResult = false; *hasResultType = false; break;
|
||||
case SpvOpCooperativeMatrixMulAddNV: *hasResult = true; *hasResultType = true; break;
|
||||
case SpvOpCooperativeMatrixLengthNV: *hasResult = true; *hasResultType = true; break;
|
||||
}
|
||||
}
|
||||
#endif /* SPV_ENABLE_UTILITY_CODE */
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -1326,6 +1326,515 @@ enum Op {
|
||||
OpMax = 0x7fffffff,
|
||||
};
|
||||
|
||||
#ifdef SPV_ENABLE_UTILITY_CODE
|
||||
inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
|
||||
*hasResult = *hasResultType = false;
|
||||
switch (opcode) {
|
||||
default: /* unknown opcode */ break;
|
||||
case OpNop: *hasResult = false; *hasResultType = false; break;
|
||||
case OpUndef: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSourceContinued: *hasResult = false; *hasResultType = false; break;
|
||||
case OpSource: *hasResult = false; *hasResultType = false; break;
|
||||
case OpSourceExtension: *hasResult = false; *hasResultType = false; break;
|
||||
case OpName: *hasResult = false; *hasResultType = false; break;
|
||||
case OpMemberName: *hasResult = false; *hasResultType = false; break;
|
||||
case OpString: *hasResult = true; *hasResultType = false; break;
|
||||
case OpLine: *hasResult = false; *hasResultType = false; break;
|
||||
case OpExtension: *hasResult = false; *hasResultType = false; break;
|
||||
case OpExtInstImport: *hasResult = true; *hasResultType = false; break;
|
||||
case OpExtInst: *hasResult = true; *hasResultType = true; break;
|
||||
case OpMemoryModel: *hasResult = false; *hasResultType = false; break;
|
||||
case OpEntryPoint: *hasResult = false; *hasResultType = false; break;
|
||||
case OpExecutionMode: *hasResult = false; *hasResultType = false; break;
|
||||
case OpCapability: *hasResult = false; *hasResultType = false; break;
|
||||
case OpTypeVoid: *hasResult = true; *hasResultType = false; break;
|
||||
case OpTypeBool: *hasResult = true; *hasResultType = false; break;
|
||||
case OpTypeInt: *hasResult = true; *hasResultType = false; break;
|
||||
case OpTypeFloat: *hasResult = true; *hasResultType = false; break;
|
||||
case OpTypeVector: *hasResult = true; *hasResultType = false; break;
|
||||
case OpTypeMatrix: *hasResult = true; *hasResultType = false; break;
|
||||
case OpTypeImage: *hasResult = true; *hasResultType = false; break;
|
||||
case OpTypeSampler: *hasResult = true; *hasResultType = false; break;
|
||||
case OpTypeSampledImage: *hasResult = true; *hasResultType = false; break;
|
||||
case OpTypeArray: *hasResult = true; *hasResultType = false; break;
|
||||
case OpTypeRuntimeArray: *hasResult = true; *hasResultType = false; break;
|
||||
case OpTypeStruct: *hasResult = true; *hasResultType = false; break;
|
||||
case OpTypeOpaque: *hasResult = true; *hasResultType = false; break;
|
||||
case OpTypePointer: *hasResult = true; *hasResultType = false; break;
|
||||
case OpTypeFunction: *hasResult = true; *hasResultType = false; break;
|
||||
case OpTypeEvent: *hasResult = true; *hasResultType = false; break;
|
||||
case OpTypeDeviceEvent: *hasResult = true; *hasResultType = false; break;
|
||||
case OpTypeReserveId: *hasResult = true; *hasResultType = false; break;
|
||||
case OpTypeQueue: *hasResult = true; *hasResultType = false; break;
|
||||
case OpTypePipe: *hasResult = true; *hasResultType = false; break;
|
||||
case OpTypeForwardPointer: *hasResult = false; *hasResultType = false; break;
|
||||
case OpConstantTrue: *hasResult = true; *hasResultType = true; break;
|
||||
case OpConstantFalse: *hasResult = true; *hasResultType = true; break;
|
||||
case OpConstant: *hasResult = true; *hasResultType = true; break;
|
||||
case OpConstantComposite: *hasResult = true; *hasResultType = true; break;
|
||||
case OpConstantSampler: *hasResult = true; *hasResultType = true; break;
|
||||
case OpConstantNull: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSpecConstantTrue: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSpecConstantFalse: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSpecConstant: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSpecConstantComposite: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSpecConstantOp: *hasResult = true; *hasResultType = true; break;
|
||||
case OpFunction: *hasResult = true; *hasResultType = true; break;
|
||||
case OpFunctionParameter: *hasResult = true; *hasResultType = true; break;
|
||||
case OpFunctionEnd: *hasResult = false; *hasResultType = false; break;
|
||||
case OpFunctionCall: *hasResult = true; *hasResultType = true; break;
|
||||
case OpVariable: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageTexelPointer: *hasResult = true; *hasResultType = true; break;
|
||||
case OpLoad: *hasResult = true; *hasResultType = true; break;
|
||||
case OpStore: *hasResult = false; *hasResultType = false; break;
|
||||
case OpCopyMemory: *hasResult = false; *hasResultType = false; break;
|
||||
case OpCopyMemorySized: *hasResult = false; *hasResultType = false; break;
|
||||
case OpAccessChain: *hasResult = true; *hasResultType = true; break;
|
||||
case OpInBoundsAccessChain: *hasResult = true; *hasResultType = true; break;
|
||||
case OpPtrAccessChain: *hasResult = true; *hasResultType = true; break;
|
||||
case OpArrayLength: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGenericPtrMemSemantics: *hasResult = true; *hasResultType = true; break;
|
||||
case OpInBoundsPtrAccessChain: *hasResult = true; *hasResultType = true; break;
|
||||
case OpDecorate: *hasResult = false; *hasResultType = false; break;
|
||||
case OpMemberDecorate: *hasResult = false; *hasResultType = false; break;
|
||||
case OpDecorationGroup: *hasResult = true; *hasResultType = false; break;
|
||||
case OpGroupDecorate: *hasResult = false; *hasResultType = false; break;
|
||||
case OpGroupMemberDecorate: *hasResult = false; *hasResultType = false; break;
|
||||
case OpVectorExtractDynamic: *hasResult = true; *hasResultType = true; break;
|
||||
case OpVectorInsertDynamic: *hasResult = true; *hasResultType = true; break;
|
||||
case OpVectorShuffle: *hasResult = true; *hasResultType = true; break;
|
||||
case OpCompositeConstruct: *hasResult = true; *hasResultType = true; break;
|
||||
case OpCompositeExtract: *hasResult = true; *hasResultType = true; break;
|
||||
case OpCompositeInsert: *hasResult = true; *hasResultType = true; break;
|
||||
case OpCopyObject: *hasResult = true; *hasResultType = true; break;
|
||||
case OpTranspose: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSampledImage: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageSampleImplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageSampleExplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageFetch: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageGather: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageDrefGather: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageRead: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageWrite: *hasResult = false; *hasResultType = false; break;
|
||||
case OpImage: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageQueryFormat: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageQueryOrder: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageQuerySizeLod: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageQuerySize: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageQueryLod: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageQueryLevels: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageQuerySamples: *hasResult = true; *hasResultType = true; break;
|
||||
case OpConvertFToU: *hasResult = true; *hasResultType = true; break;
|
||||
case OpConvertFToS: *hasResult = true; *hasResultType = true; break;
|
||||
case OpConvertSToF: *hasResult = true; *hasResultType = true; break;
|
||||
case OpConvertUToF: *hasResult = true; *hasResultType = true; break;
|
||||
case OpUConvert: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSConvert: *hasResult = true; *hasResultType = true; break;
|
||||
case OpFConvert: *hasResult = true; *hasResultType = true; break;
|
||||
case OpQuantizeToF16: *hasResult = true; *hasResultType = true; break;
|
||||
case OpConvertPtrToU: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSatConvertSToU: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSatConvertUToS: *hasResult = true; *hasResultType = true; break;
|
||||
case OpConvertUToPtr: *hasResult = true; *hasResultType = true; break;
|
||||
case OpPtrCastToGeneric: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGenericCastToPtr: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGenericCastToPtrExplicit: *hasResult = true; *hasResultType = true; break;
|
||||
case OpBitcast: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSNegate: *hasResult = true; *hasResultType = true; break;
|
||||
case OpFNegate: *hasResult = true; *hasResultType = true; break;
|
||||
case OpIAdd: *hasResult = true; *hasResultType = true; break;
|
||||
case OpFAdd: *hasResult = true; *hasResultType = true; break;
|
||||
case OpISub: *hasResult = true; *hasResultType = true; break;
|
||||
case OpFSub: *hasResult = true; *hasResultType = true; break;
|
||||
case OpIMul: *hasResult = true; *hasResultType = true; break;
|
||||
case OpFMul: *hasResult = true; *hasResultType = true; break;
|
||||
case OpUDiv: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSDiv: *hasResult = true; *hasResultType = true; break;
|
||||
case OpFDiv: *hasResult = true; *hasResultType = true; break;
|
||||
case OpUMod: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSRem: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSMod: *hasResult = true; *hasResultType = true; break;
|
||||
case OpFRem: *hasResult = true; *hasResultType = true; break;
|
||||
case OpFMod: *hasResult = true; *hasResultType = true; break;
|
||||
case OpVectorTimesScalar: *hasResult = true; *hasResultType = true; break;
|
||||
case OpMatrixTimesScalar: *hasResult = true; *hasResultType = true; break;
|
||||
case OpVectorTimesMatrix: *hasResult = true; *hasResultType = true; break;
|
||||
case OpMatrixTimesVector: *hasResult = true; *hasResultType = true; break;
|
||||
case OpMatrixTimesMatrix: *hasResult = true; *hasResultType = true; break;
|
||||
case OpOuterProduct: *hasResult = true; *hasResultType = true; break;
|
||||
case OpDot: *hasResult = true; *hasResultType = true; break;
|
||||
case OpIAddCarry: *hasResult = true; *hasResultType = true; break;
|
||||
case OpISubBorrow: *hasResult = true; *hasResultType = true; break;
|
||||
case OpUMulExtended: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSMulExtended: *hasResult = true; *hasResultType = true; break;
|
||||
case OpAny: *hasResult = true; *hasResultType = true; break;
|
||||
case OpAll: *hasResult = true; *hasResultType = true; break;
|
||||
case OpIsNan: *hasResult = true; *hasResultType = true; break;
|
||||
case OpIsInf: *hasResult = true; *hasResultType = true; break;
|
||||
case OpIsFinite: *hasResult = true; *hasResultType = true; break;
|
||||
case OpIsNormal: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSignBitSet: *hasResult = true; *hasResultType = true; break;
|
||||
case OpLessOrGreater: *hasResult = true; *hasResultType = true; break;
|
||||
case OpOrdered: *hasResult = true; *hasResultType = true; break;
|
||||
case OpUnordered: *hasResult = true; *hasResultType = true; break;
|
||||
case OpLogicalEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case OpLogicalNotEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case OpLogicalOr: *hasResult = true; *hasResultType = true; break;
|
||||
case OpLogicalAnd: *hasResult = true; *hasResultType = true; break;
|
||||
case OpLogicalNot: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSelect: *hasResult = true; *hasResultType = true; break;
|
||||
case OpIEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case OpINotEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case OpUGreaterThan: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSGreaterThan: *hasResult = true; *hasResultType = true; break;
|
||||
case OpUGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case OpULessThan: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSLessThan: *hasResult = true; *hasResultType = true; break;
|
||||
case OpULessThanEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSLessThanEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case OpFOrdEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case OpFUnordEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case OpFOrdNotEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case OpFUnordNotEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case OpFOrdLessThan: *hasResult = true; *hasResultType = true; break;
|
||||
case OpFUnordLessThan: *hasResult = true; *hasResultType = true; break;
|
||||
case OpFOrdGreaterThan: *hasResult = true; *hasResultType = true; break;
|
||||
case OpFUnordGreaterThan: *hasResult = true; *hasResultType = true; break;
|
||||
case OpFOrdLessThanEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case OpFUnordLessThanEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case OpFOrdGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case OpFUnordGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case OpShiftRightLogical: *hasResult = true; *hasResultType = true; break;
|
||||
case OpShiftRightArithmetic: *hasResult = true; *hasResultType = true; break;
|
||||
case OpShiftLeftLogical: *hasResult = true; *hasResultType = true; break;
|
||||
case OpBitwiseOr: *hasResult = true; *hasResultType = true; break;
|
||||
case OpBitwiseXor: *hasResult = true; *hasResultType = true; break;
|
||||
case OpBitwiseAnd: *hasResult = true; *hasResultType = true; break;
|
||||
case OpNot: *hasResult = true; *hasResultType = true; break;
|
||||
case OpBitFieldInsert: *hasResult = true; *hasResultType = true; break;
|
||||
case OpBitFieldSExtract: *hasResult = true; *hasResultType = true; break;
|
||||
case OpBitFieldUExtract: *hasResult = true; *hasResultType = true; break;
|
||||
case OpBitReverse: *hasResult = true; *hasResultType = true; break;
|
||||
case OpBitCount: *hasResult = true; *hasResultType = true; break;
|
||||
case OpDPdx: *hasResult = true; *hasResultType = true; break;
|
||||
case OpDPdy: *hasResult = true; *hasResultType = true; break;
|
||||
case OpFwidth: *hasResult = true; *hasResultType = true; break;
|
||||
case OpDPdxFine: *hasResult = true; *hasResultType = true; break;
|
||||
case OpDPdyFine: *hasResult = true; *hasResultType = true; break;
|
||||
case OpFwidthFine: *hasResult = true; *hasResultType = true; break;
|
||||
case OpDPdxCoarse: *hasResult = true; *hasResultType = true; break;
|
||||
case OpDPdyCoarse: *hasResult = true; *hasResultType = true; break;
|
||||
case OpFwidthCoarse: *hasResult = true; *hasResultType = true; break;
|
||||
case OpEmitVertex: *hasResult = false; *hasResultType = false; break;
|
||||
case OpEndPrimitive: *hasResult = false; *hasResultType = false; break;
|
||||
case OpEmitStreamVertex: *hasResult = false; *hasResultType = false; break;
|
||||
case OpEndStreamPrimitive: *hasResult = false; *hasResultType = false; break;
|
||||
case OpControlBarrier: *hasResult = false; *hasResultType = false; break;
|
||||
case OpMemoryBarrier: *hasResult = false; *hasResultType = false; break;
|
||||
case OpAtomicLoad: *hasResult = true; *hasResultType = true; break;
|
||||
case OpAtomicStore: *hasResult = false; *hasResultType = false; break;
|
||||
case OpAtomicExchange: *hasResult = true; *hasResultType = true; break;
|
||||
case OpAtomicCompareExchange: *hasResult = true; *hasResultType = true; break;
|
||||
case OpAtomicCompareExchangeWeak: *hasResult = true; *hasResultType = true; break;
|
||||
case OpAtomicIIncrement: *hasResult = true; *hasResultType = true; break;
|
||||
case OpAtomicIDecrement: *hasResult = true; *hasResultType = true; break;
|
||||
case OpAtomicIAdd: *hasResult = true; *hasResultType = true; break;
|
||||
case OpAtomicISub: *hasResult = true; *hasResultType = true; break;
|
||||
case OpAtomicSMin: *hasResult = true; *hasResultType = true; break;
|
||||
case OpAtomicUMin: *hasResult = true; *hasResultType = true; break;
|
||||
case OpAtomicSMax: *hasResult = true; *hasResultType = true; break;
|
||||
case OpAtomicUMax: *hasResult = true; *hasResultType = true; break;
|
||||
case OpAtomicAnd: *hasResult = true; *hasResultType = true; break;
|
||||
case OpAtomicOr: *hasResult = true; *hasResultType = true; break;
|
||||
case OpAtomicXor: *hasResult = true; *hasResultType = true; break;
|
||||
case OpPhi: *hasResult = true; *hasResultType = true; break;
|
||||
case OpLoopMerge: *hasResult = false; *hasResultType = false; break;
|
||||
case OpSelectionMerge: *hasResult = false; *hasResultType = false; break;
|
||||
case OpLabel: *hasResult = true; *hasResultType = false; break;
|
||||
case OpBranch: *hasResult = false; *hasResultType = false; break;
|
||||
case OpBranchConditional: *hasResult = false; *hasResultType = false; break;
|
||||
case OpSwitch: *hasResult = false; *hasResultType = false; break;
|
||||
case OpKill: *hasResult = false; *hasResultType = false; break;
|
||||
case OpReturn: *hasResult = false; *hasResultType = false; break;
|
||||
case OpReturnValue: *hasResult = false; *hasResultType = false; break;
|
||||
case OpUnreachable: *hasResult = false; *hasResultType = false; break;
|
||||
case OpLifetimeStart: *hasResult = false; *hasResultType = false; break;
|
||||
case OpLifetimeStop: *hasResult = false; *hasResultType = false; break;
|
||||
case OpGroupAsyncCopy: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupWaitEvents: *hasResult = false; *hasResultType = false; break;
|
||||
case OpGroupAll: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupAny: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupBroadcast: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupIAdd: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupFAdd: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupFMin: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupUMin: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupSMin: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupFMax: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupUMax: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupSMax: *hasResult = true; *hasResultType = true; break;
|
||||
case OpReadPipe: *hasResult = true; *hasResultType = true; break;
|
||||
case OpWritePipe: *hasResult = true; *hasResultType = true; break;
|
||||
case OpReservedReadPipe: *hasResult = true; *hasResultType = true; break;
|
||||
case OpReservedWritePipe: *hasResult = true; *hasResultType = true; break;
|
||||
case OpReserveReadPipePackets: *hasResult = true; *hasResultType = true; break;
|
||||
case OpReserveWritePipePackets: *hasResult = true; *hasResultType = true; break;
|
||||
case OpCommitReadPipe: *hasResult = false; *hasResultType = false; break;
|
||||
case OpCommitWritePipe: *hasResult = false; *hasResultType = false; break;
|
||||
case OpIsValidReserveId: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGetNumPipePackets: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGetMaxPipePackets: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupReserveReadPipePackets: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupReserveWritePipePackets: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupCommitReadPipe: *hasResult = false; *hasResultType = false; break;
|
||||
case OpGroupCommitWritePipe: *hasResult = false; *hasResultType = false; break;
|
||||
case OpEnqueueMarker: *hasResult = true; *hasResultType = true; break;
|
||||
case OpEnqueueKernel: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGetKernelNDrangeSubGroupCount: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGetKernelNDrangeMaxSubGroupSize: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGetKernelWorkGroupSize: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGetKernelPreferredWorkGroupSizeMultiple: *hasResult = true; *hasResultType = true; break;
|
||||
case OpRetainEvent: *hasResult = false; *hasResultType = false; break;
|
||||
case OpReleaseEvent: *hasResult = false; *hasResultType = false; break;
|
||||
case OpCreateUserEvent: *hasResult = true; *hasResultType = true; break;
|
||||
case OpIsValidEvent: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSetUserEventStatus: *hasResult = false; *hasResultType = false; break;
|
||||
case OpCaptureEventProfilingInfo: *hasResult = false; *hasResultType = false; break;
|
||||
case OpGetDefaultQueue: *hasResult = true; *hasResultType = true; break;
|
||||
case OpBuildNDRange: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageSparseSampleImplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageSparseSampleExplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageSparseSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageSparseSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageSparseSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageSparseSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageSparseSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageSparseSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageSparseFetch: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageSparseGather: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageSparseDrefGather: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageSparseTexelsResident: *hasResult = true; *hasResultType = true; break;
|
||||
case OpNoLine: *hasResult = false; *hasResultType = false; break;
|
||||
case OpAtomicFlagTestAndSet: *hasResult = true; *hasResultType = true; break;
|
||||
case OpAtomicFlagClear: *hasResult = false; *hasResultType = false; break;
|
||||
case OpImageSparseRead: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSizeOf: *hasResult = true; *hasResultType = true; break;
|
||||
case OpTypePipeStorage: *hasResult = true; *hasResultType = false; break;
|
||||
case OpConstantPipeStorage: *hasResult = true; *hasResultType = true; break;
|
||||
case OpCreatePipeFromPipeStorage: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGetKernelLocalSizeForSubgroupCount: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGetKernelMaxNumSubgroups: *hasResult = true; *hasResultType = true; break;
|
||||
case OpTypeNamedBarrier: *hasResult = true; *hasResultType = false; break;
|
||||
case OpNamedBarrierInitialize: *hasResult = true; *hasResultType = true; break;
|
||||
case OpMemoryNamedBarrier: *hasResult = false; *hasResultType = false; break;
|
||||
case OpModuleProcessed: *hasResult = false; *hasResultType = false; break;
|
||||
case OpExecutionModeId: *hasResult = false; *hasResultType = false; break;
|
||||
case OpDecorateId: *hasResult = false; *hasResultType = false; break;
|
||||
case OpGroupNonUniformElect: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupNonUniformAll: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupNonUniformAny: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupNonUniformAllEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupNonUniformBroadcast: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupNonUniformBroadcastFirst: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupNonUniformBallot: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupNonUniformInverseBallot: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupNonUniformBallotBitExtract: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupNonUniformBallotBitCount: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupNonUniformBallotFindLSB: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupNonUniformBallotFindMSB: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupNonUniformShuffle: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupNonUniformShuffleXor: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupNonUniformShuffleUp: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupNonUniformShuffleDown: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupNonUniformIAdd: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupNonUniformFAdd: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupNonUniformIMul: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupNonUniformFMul: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupNonUniformSMin: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupNonUniformUMin: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupNonUniformFMin: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupNonUniformSMax: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupNonUniformUMax: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupNonUniformFMax: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupNonUniformBitwiseAnd: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupNonUniformBitwiseOr: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupNonUniformBitwiseXor: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupNonUniformLogicalAnd: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupNonUniformLogicalOr: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupNonUniformLogicalXor: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupNonUniformQuadBroadcast: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupNonUniformQuadSwap: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupBallotKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupFirstInvocationKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAllKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAnyKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAllEqualKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupReadInvocationKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupIAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupFAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupFMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupUMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupSMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupFMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupUMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case OpGroupSMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case OpFragmentMaskFetchAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case OpFragmentFetchAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case OpWritePackedPrimitiveIndices4x8NV: *hasResult = false; *hasResultType = false; break;
|
||||
case OpReportIntersectionNV: *hasResult = true; *hasResultType = true; break;
|
||||
case OpIgnoreIntersectionNV: *hasResult = false; *hasResultType = false; break;
|
||||
case OpTerminateRayNV: *hasResult = false; *hasResultType = false; break;
|
||||
case OpTraceNV: *hasResult = false; *hasResultType = false; break;
|
||||
case OpTypeAccelerationStructureNV: *hasResult = true; *hasResultType = false; break;
|
||||
case OpExecuteCallableNV: *hasResult = false; *hasResultType = false; break;
|
||||
case OpSubgroupShuffleINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupShuffleDownINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupShuffleUpINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupShuffleXorINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
|
||||
case OpSubgroupImageBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupImageBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
|
||||
case OpSubgroupImageMediaBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupImageMediaBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
|
||||
case OpVmeImageINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpTypeVmeImageINTEL: *hasResult = true; *hasResultType = false; break;
|
||||
case OpTypeAvcImePayloadINTEL: *hasResult = true; *hasResultType = false; break;
|
||||
case OpTypeAvcRefPayloadINTEL: *hasResult = true; *hasResultType = false; break;
|
||||
case OpTypeAvcSicPayloadINTEL: *hasResult = true; *hasResultType = false; break;
|
||||
case OpTypeAvcMcePayloadINTEL: *hasResult = true; *hasResultType = false; break;
|
||||
case OpTypeAvcMceResultINTEL: *hasResult = true; *hasResultType = false; break;
|
||||
case OpTypeAvcImeResultINTEL: *hasResult = true; *hasResultType = false; break;
|
||||
case OpTypeAvcImeResultSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break;
|
||||
case OpTypeAvcImeResultDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break;
|
||||
case OpTypeAvcImeSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break;
|
||||
case OpTypeAvcImeDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break;
|
||||
case OpTypeAvcRefResultINTEL: *hasResult = true; *hasResultType = false; break;
|
||||
case OpTypeAvcSicResultINTEL: *hasResult = true; *hasResultType = false; break;
|
||||
case OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcMceSetInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcMceSetInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcMceSetAcOnlyHaarINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcMceConvertToImePayloadINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcMceConvertToImeResultINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcMceConvertToRefPayloadINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcMceConvertToRefResultINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcMceConvertToSicPayloadINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcMceConvertToSicResultINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcMceGetMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcMceGetInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcMceGetBestInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcMceGetInterMajorShapeINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcMceGetInterMinorShapeINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcMceGetInterDirectionsINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcMceGetInterMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcMceGetInterReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcImeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcImeSetSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcImeSetDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcImeRefWindowSizeINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcImeAdjustRefOffsetINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcImeConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcImeSetMaxMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcImeSetWeightedSadINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcImeEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcImeConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcImeGetSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcImeGetDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcImeStripDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcImeGetBorderReachedINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcFmeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcBmeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcRefConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcRefSetBidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcRefSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcRefEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcRefConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcSicInitializeINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcSicConfigureSkcINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcSicConfigureIpeLumaINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcSicConfigureIpeLumaChromaINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcSicGetMotionVectorMaskINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcSicConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcSicSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcSicEvaluateIpeINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcSicEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcSicConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcSicGetIpeLumaShapeINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcSicGetPackedIpeLumaModesINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcSicGetIpeChromaModeINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpSubgroupAvcSicGetInterRawSadsINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case OpDecorateStringGOOGLE: *hasResult = false; *hasResultType = false; break;
|
||||
case OpMemberDecorateStringGOOGLE: *hasResult = false; *hasResultType = false; break;
|
||||
case OpGroupNonUniformPartitionNV: *hasResult = true; *hasResultType = true; break;
|
||||
case OpImageSampleFootprintNV: *hasResult = true; *hasResultType = true; break;
|
||||
case OpTypeCooperativeMatrixNV: *hasResult = true; *hasResultType = false; break;
|
||||
case OpCooperativeMatrixLoadNV: *hasResult = true; *hasResultType = true; break;
|
||||
case OpCooperativeMatrixStoreNV: *hasResult = false; *hasResultType = false; break;
|
||||
case OpCooperativeMatrixMulAddNV: *hasResult = true; *hasResultType = true; break;
|
||||
case OpCooperativeMatrixLengthNV: *hasResult = true; *hasResultType = true; break;
|
||||
}
|
||||
}
|
||||
#endif /* SPV_ENABLE_UTILITY_CODE */
|
||||
|
||||
// Overload operator| for mask bit combining
|
||||
|
||||
inline ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); }
|
||||
|
||||
@@ -1326,6 +1326,515 @@ enum class Op : unsigned {
|
||||
Max = 0x7fffffff,
|
||||
};
|
||||
|
||||
#ifdef SPV_ENABLE_UTILITY_CODE
|
||||
inline void HasResultAndType(Op opcode, bool *hasResult, bool *hasResultType) {
|
||||
*hasResult = *hasResultType = false;
|
||||
switch (opcode) {
|
||||
default: /* unknown opcode */ break;
|
||||
case Op::OpNop: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpUndef: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSourceContinued: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpSource: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpSourceExtension: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpName: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpMemberName: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpString: *hasResult = true; *hasResultType = false; break;
|
||||
case Op::OpLine: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpExtension: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpExtInstImport: *hasResult = true; *hasResultType = false; break;
|
||||
case Op::OpExtInst: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpMemoryModel: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpEntryPoint: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpExecutionMode: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpCapability: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpTypeVoid: *hasResult = true; *hasResultType = false; break;
|
||||
case Op::OpTypeBool: *hasResult = true; *hasResultType = false; break;
|
||||
case Op::OpTypeInt: *hasResult = true; *hasResultType = false; break;
|
||||
case Op::OpTypeFloat: *hasResult = true; *hasResultType = false; break;
|
||||
case Op::OpTypeVector: *hasResult = true; *hasResultType = false; break;
|
||||
case Op::OpTypeMatrix: *hasResult = true; *hasResultType = false; break;
|
||||
case Op::OpTypeImage: *hasResult = true; *hasResultType = false; break;
|
||||
case Op::OpTypeSampler: *hasResult = true; *hasResultType = false; break;
|
||||
case Op::OpTypeSampledImage: *hasResult = true; *hasResultType = false; break;
|
||||
case Op::OpTypeArray: *hasResult = true; *hasResultType = false; break;
|
||||
case Op::OpTypeRuntimeArray: *hasResult = true; *hasResultType = false; break;
|
||||
case Op::OpTypeStruct: *hasResult = true; *hasResultType = false; break;
|
||||
case Op::OpTypeOpaque: *hasResult = true; *hasResultType = false; break;
|
||||
case Op::OpTypePointer: *hasResult = true; *hasResultType = false; break;
|
||||
case Op::OpTypeFunction: *hasResult = true; *hasResultType = false; break;
|
||||
case Op::OpTypeEvent: *hasResult = true; *hasResultType = false; break;
|
||||
case Op::OpTypeDeviceEvent: *hasResult = true; *hasResultType = false; break;
|
||||
case Op::OpTypeReserveId: *hasResult = true; *hasResultType = false; break;
|
||||
case Op::OpTypeQueue: *hasResult = true; *hasResultType = false; break;
|
||||
case Op::OpTypePipe: *hasResult = true; *hasResultType = false; break;
|
||||
case Op::OpTypeForwardPointer: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpConstantTrue: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpConstantFalse: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpConstant: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpConstantComposite: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpConstantSampler: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpConstantNull: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSpecConstantTrue: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSpecConstantFalse: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSpecConstant: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSpecConstantComposite: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSpecConstantOp: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpFunction: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpFunctionParameter: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpFunctionEnd: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpFunctionCall: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpVariable: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpImageTexelPointer: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpLoad: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpStore: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpCopyMemory: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpCopyMemorySized: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpAccessChain: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpInBoundsAccessChain: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpPtrAccessChain: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpArrayLength: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGenericPtrMemSemantics: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpInBoundsPtrAccessChain: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpDecorate: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpMemberDecorate: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpDecorationGroup: *hasResult = true; *hasResultType = false; break;
|
||||
case Op::OpGroupDecorate: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpGroupMemberDecorate: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpVectorExtractDynamic: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpVectorInsertDynamic: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpVectorShuffle: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpCompositeConstruct: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpCompositeExtract: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpCompositeInsert: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpCopyObject: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpTranspose: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSampledImage: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpImageSampleImplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpImageSampleExplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpImageSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpImageSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpImageSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpImageSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpImageSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpImageSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpImageFetch: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpImageGather: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpImageDrefGather: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpImageRead: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpImageWrite: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpImage: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpImageQueryFormat: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpImageQueryOrder: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpImageQuerySizeLod: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpImageQuerySize: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpImageQueryLod: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpImageQueryLevels: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpImageQuerySamples: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpConvertFToU: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpConvertFToS: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpConvertSToF: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpConvertUToF: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpUConvert: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSConvert: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpFConvert: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpQuantizeToF16: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpConvertPtrToU: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSatConvertSToU: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSatConvertUToS: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpConvertUToPtr: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpPtrCastToGeneric: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGenericCastToPtr: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGenericCastToPtrExplicit: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpBitcast: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSNegate: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpFNegate: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpIAdd: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpFAdd: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpISub: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpFSub: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpIMul: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpFMul: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpUDiv: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSDiv: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpFDiv: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpUMod: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSRem: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSMod: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpFRem: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpFMod: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpVectorTimesScalar: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpMatrixTimesScalar: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpVectorTimesMatrix: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpMatrixTimesVector: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpMatrixTimesMatrix: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpOuterProduct: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpDot: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpIAddCarry: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpISubBorrow: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpUMulExtended: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSMulExtended: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpAny: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpAll: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpIsNan: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpIsInf: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpIsFinite: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpIsNormal: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSignBitSet: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpLessOrGreater: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpOrdered: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpUnordered: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpLogicalEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpLogicalNotEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpLogicalOr: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpLogicalAnd: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpLogicalNot: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSelect: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpIEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpINotEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpUGreaterThan: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSGreaterThan: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpUGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpULessThan: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSLessThan: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpULessThanEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSLessThanEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpFOrdEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpFUnordEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpFOrdNotEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpFUnordNotEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpFOrdLessThan: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpFUnordLessThan: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpFOrdGreaterThan: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpFUnordGreaterThan: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpFOrdLessThanEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpFUnordLessThanEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpFOrdGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpFUnordGreaterThanEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpShiftRightLogical: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpShiftRightArithmetic: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpShiftLeftLogical: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpBitwiseOr: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpBitwiseXor: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpBitwiseAnd: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpNot: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpBitFieldInsert: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpBitFieldSExtract: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpBitFieldUExtract: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpBitReverse: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpBitCount: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpDPdx: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpDPdy: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpFwidth: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpDPdxFine: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpDPdyFine: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpFwidthFine: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpDPdxCoarse: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpDPdyCoarse: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpFwidthCoarse: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpEmitVertex: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpEndPrimitive: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpEmitStreamVertex: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpEndStreamPrimitive: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpControlBarrier: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpMemoryBarrier: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpAtomicLoad: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpAtomicStore: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpAtomicExchange: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpAtomicCompareExchange: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpAtomicCompareExchangeWeak: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpAtomicIIncrement: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpAtomicIDecrement: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpAtomicIAdd: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpAtomicISub: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpAtomicSMin: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpAtomicUMin: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpAtomicSMax: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpAtomicUMax: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpAtomicAnd: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpAtomicOr: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpAtomicXor: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpPhi: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpLoopMerge: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpSelectionMerge: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpLabel: *hasResult = true; *hasResultType = false; break;
|
||||
case Op::OpBranch: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpBranchConditional: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpSwitch: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpKill: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpReturn: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpReturnValue: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpUnreachable: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpLifetimeStart: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpLifetimeStop: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpGroupAsyncCopy: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupWaitEvents: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpGroupAll: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupAny: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupBroadcast: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupIAdd: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupFAdd: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupFMin: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupUMin: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupSMin: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupFMax: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupUMax: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupSMax: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpReadPipe: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpWritePipe: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpReservedReadPipe: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpReservedWritePipe: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpReserveReadPipePackets: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpReserveWritePipePackets: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpCommitReadPipe: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpCommitWritePipe: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpIsValidReserveId: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGetNumPipePackets: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGetMaxPipePackets: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupReserveReadPipePackets: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupReserveWritePipePackets: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupCommitReadPipe: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpGroupCommitWritePipe: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpEnqueueMarker: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpEnqueueKernel: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGetKernelNDrangeSubGroupCount: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGetKernelNDrangeMaxSubGroupSize: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGetKernelWorkGroupSize: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGetKernelPreferredWorkGroupSizeMultiple: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpRetainEvent: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpReleaseEvent: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpCreateUserEvent: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpIsValidEvent: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSetUserEventStatus: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpCaptureEventProfilingInfo: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpGetDefaultQueue: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpBuildNDRange: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpImageSparseSampleImplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpImageSparseSampleExplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpImageSparseSampleDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpImageSparseSampleDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpImageSparseSampleProjImplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpImageSparseSampleProjExplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpImageSparseSampleProjDrefImplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpImageSparseSampleProjDrefExplicitLod: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpImageSparseFetch: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpImageSparseGather: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpImageSparseDrefGather: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpImageSparseTexelsResident: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpNoLine: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpAtomicFlagTestAndSet: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpAtomicFlagClear: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpImageSparseRead: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSizeOf: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpTypePipeStorage: *hasResult = true; *hasResultType = false; break;
|
||||
case Op::OpConstantPipeStorage: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpCreatePipeFromPipeStorage: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGetKernelLocalSizeForSubgroupCount: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGetKernelMaxNumSubgroups: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpTypeNamedBarrier: *hasResult = true; *hasResultType = false; break;
|
||||
case Op::OpNamedBarrierInitialize: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpMemoryNamedBarrier: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpModuleProcessed: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpExecutionModeId: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpDecorateId: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpGroupNonUniformElect: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupNonUniformAll: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupNonUniformAny: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupNonUniformAllEqual: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupNonUniformBroadcast: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupNonUniformBroadcastFirst: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupNonUniformBallot: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupNonUniformInverseBallot: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupNonUniformBallotBitExtract: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupNonUniformBallotBitCount: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupNonUniformBallotFindLSB: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupNonUniformBallotFindMSB: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupNonUniformShuffle: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupNonUniformShuffleXor: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupNonUniformShuffleUp: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupNonUniformShuffleDown: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupNonUniformIAdd: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupNonUniformFAdd: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupNonUniformIMul: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupNonUniformFMul: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupNonUniformSMin: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupNonUniformUMin: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupNonUniformFMin: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupNonUniformSMax: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupNonUniformUMax: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupNonUniformFMax: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupNonUniformBitwiseAnd: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupNonUniformBitwiseOr: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupNonUniformBitwiseXor: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupNonUniformLogicalAnd: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupNonUniformLogicalOr: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupNonUniformLogicalXor: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupNonUniformQuadBroadcast: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupNonUniformQuadSwap: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupBallotKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupFirstInvocationKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAllKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAnyKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAllEqualKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupReadInvocationKHR: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupIAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupFAddNonUniformAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupFMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupUMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupSMinNonUniformAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupFMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupUMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpGroupSMaxNonUniformAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpFragmentMaskFetchAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpFragmentFetchAMD: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpWritePackedPrimitiveIndices4x8NV: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpReportIntersectionNV: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpIgnoreIntersectionNV: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpTerminateRayNV: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpTraceNV: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpTypeAccelerationStructureNV: *hasResult = true; *hasResultType = false; break;
|
||||
case Op::OpExecuteCallableNV: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpSubgroupShuffleINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupShuffleDownINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupShuffleUpINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupShuffleXorINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpSubgroupImageBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupImageBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpSubgroupImageMediaBlockReadINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupImageMediaBlockWriteINTEL: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpVmeImageINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpTypeVmeImageINTEL: *hasResult = true; *hasResultType = false; break;
|
||||
case Op::OpTypeAvcImePayloadINTEL: *hasResult = true; *hasResultType = false; break;
|
||||
case Op::OpTypeAvcRefPayloadINTEL: *hasResult = true; *hasResultType = false; break;
|
||||
case Op::OpTypeAvcSicPayloadINTEL: *hasResult = true; *hasResultType = false; break;
|
||||
case Op::OpTypeAvcMcePayloadINTEL: *hasResult = true; *hasResultType = false; break;
|
||||
case Op::OpTypeAvcMceResultINTEL: *hasResult = true; *hasResultType = false; break;
|
||||
case Op::OpTypeAvcImeResultINTEL: *hasResult = true; *hasResultType = false; break;
|
||||
case Op::OpTypeAvcImeResultSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break;
|
||||
case Op::OpTypeAvcImeResultDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = false; break;
|
||||
case Op::OpTypeAvcImeSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break;
|
||||
case Op::OpTypeAvcImeDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = false; break;
|
||||
case Op::OpTypeAvcRefResultINTEL: *hasResult = true; *hasResultType = false; break;
|
||||
case Op::OpTypeAvcSicResultINTEL: *hasResult = true; *hasResultType = false; break;
|
||||
case Op::OpSubgroupAvcMceGetDefaultInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcMceSetInterBaseMultiReferencePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcMceGetDefaultInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcMceSetInterShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcMceGetDefaultInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcMceSetInterDirectionPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcMceGetDefaultIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcMceGetDefaultInterMotionVectorCostTableINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcMceGetDefaultHighPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcMceGetDefaultMediumPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcMceGetDefaultLowPenaltyCostTableINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcMceSetMotionVectorCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcMceGetDefaultIntraLumaModePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcMceGetDefaultNonDcLumaIntraPenaltyINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcMceGetDefaultIntraChromaModeBasePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcMceSetAcOnlyHaarINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcMceSetSourceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcMceSetSingleReferenceInterlacedFieldPolarityINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcMceSetDualReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcMceConvertToImePayloadINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcMceConvertToImeResultINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcMceConvertToRefPayloadINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcMceConvertToRefResultINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcMceConvertToSicPayloadINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcMceConvertToSicResultINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcMceGetMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcMceGetInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcMceGetBestInterDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcMceGetInterMajorShapeINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcMceGetInterMinorShapeINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcMceGetInterDirectionsINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcMceGetInterMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcMceGetInterReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcMceGetInterReferenceInterlacedFieldPolaritiesINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcImeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcImeSetSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcImeSetDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcImeRefWindowSizeINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcImeAdjustRefOffsetINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcImeConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcImeSetMaxMotionVectorCountINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcImeSetUnidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcImeSetEarlySearchTerminationThresholdINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcImeSetWeightedSadINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcImeEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcImeEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcImeEvaluateWithDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcImeEvaluateWithSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcImeEvaluateWithDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcImeEvaluateWithSingleReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcImeEvaluateWithDualReferenceStreaminoutINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcImeConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcImeGetSingleReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcImeGetDualReferenceStreaminINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcImeStripSingleReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcImeStripDualReferenceStreamoutINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcImeGetStreamoutSingleReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeMotionVectorsINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeDistortionsINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcImeGetStreamoutDualReferenceMajorShapeReferenceIdsINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcImeGetBorderReachedINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcImeGetTruncatedSearchIndicationINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcImeGetUnidirectionalEarlySearchTerminationINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcImeGetWeightingPatternMinimumMotionVectorINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcImeGetWeightingPatternMinimumDistortionINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcFmeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcBmeInitializeINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcRefConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcRefSetBidirectionalMixDisableINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcRefSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcRefEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcRefEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcRefEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcRefEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcRefConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcSicInitializeINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcSicConfigureSkcINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcSicConfigureIpeLumaINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcSicConfigureIpeLumaChromaINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcSicGetMotionVectorMaskINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcSicConvertToMcePayloadINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcSicSetIntraLumaShapePenaltyINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcSicSetIntraLumaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcSicSetIntraChromaModeCostFunctionINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcSicSetBilinearFilterEnableINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcSicSetSkcForwardTransformEnableINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcSicSetBlockBasedRawSkipSadINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcSicEvaluateIpeINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcSicEvaluateWithSingleReferenceINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcSicEvaluateWithDualReferenceINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcSicEvaluateWithMultiReferenceINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcSicEvaluateWithMultiReferenceInterlacedINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcSicConvertToMceResultINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcSicGetIpeLumaShapeINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcSicGetBestIpeLumaDistortionINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcSicGetBestIpeChromaDistortionINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcSicGetPackedIpeLumaModesINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcSicGetIpeChromaModeINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcSicGetPackedSkcLumaCountThresholdINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcSicGetPackedSkcLumaSumThresholdINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpSubgroupAvcSicGetInterRawSadsINTEL: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpDecorateStringGOOGLE: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpMemberDecorateStringGOOGLE: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpGroupNonUniformPartitionNV: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpImageSampleFootprintNV: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpTypeCooperativeMatrixNV: *hasResult = true; *hasResultType = false; break;
|
||||
case Op::OpCooperativeMatrixLoadNV: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpCooperativeMatrixStoreNV: *hasResult = false; *hasResultType = false; break;
|
||||
case Op::OpCooperativeMatrixMulAddNV: *hasResult = true; *hasResultType = true; break;
|
||||
case Op::OpCooperativeMatrixLengthNV: *hasResult = true; *hasResultType = true; break;
|
||||
}
|
||||
}
|
||||
#endif /* SPV_ENABLE_UTILITY_CODE */
|
||||
|
||||
// Overload operator| for mask bit combining
|
||||
|
||||
inline ImageOperandsMask operator|(ImageOperandsMask a, ImageOperandsMask b) { return ImageOperandsMask(unsigned(a) | unsigned(b)); }
|
||||
|
||||
Executable → Regular
+34
@@ -97,6 +97,7 @@ namespace {
|
||||
virtual void printEpilogue(std::ostream&) const { }
|
||||
virtual void printMeta(std::ostream&) const;
|
||||
virtual void printTypes(std::ostream&) const { }
|
||||
virtual void printHasResultType(std::ostream&) const { };
|
||||
|
||||
virtual std::string escapeComment(const std::string& s) const;
|
||||
|
||||
@@ -364,6 +365,7 @@ namespace {
|
||||
printTypes(out);
|
||||
printMeta(out);
|
||||
printDefs(out);
|
||||
printHasResultType(out);
|
||||
printEpilogue(out);
|
||||
}
|
||||
|
||||
@@ -494,6 +496,35 @@ namespace {
|
||||
|
||||
virtual std::string pre() const { return ""; } // C name prefix
|
||||
virtual std::string headerGuardSuffix() const = 0;
|
||||
|
||||
virtual std::string fmtEnumUse(const std::string& opPrefix, const std::string& name) const { return pre() + name; }
|
||||
|
||||
virtual void printHasResultType(std::ostream& out) const
|
||||
{
|
||||
const Json::Value& enums = spvRoot["spv"]["enum"];
|
||||
|
||||
for (auto opClass = enums.begin(); opClass != enums.end(); ++opClass) {
|
||||
const auto opName = (*opClass)["Name"].asString();
|
||||
if (opName != "Op") {
|
||||
continue;
|
||||
}
|
||||
|
||||
out << "#ifdef SPV_ENABLE_UTILITY_CODE" << std::endl;
|
||||
out << "inline void " << pre() << "HasResultAndType(" << pre() << opName << " opcode, bool *hasResult, bool *hasResultType) {" << std::endl;
|
||||
out << " *hasResult = *hasResultType = false;" << std::endl;
|
||||
out << " switch (opcode) {" << std::endl;
|
||||
out << " default: /* unknown opcode */ break;" << std::endl;
|
||||
|
||||
for (auto& inst : spv::InstructionDesc) {
|
||||
std::string name = inst.name;
|
||||
out << " case " << fmtEnumUse("Op", name) << ": *hasResult = " << (inst.hasResult() ? "true" : "false") << "; *hasResultType = " << (inst.hasType() ? "true" : "false") << "; break;" << std::endl;
|
||||
}
|
||||
|
||||
out << " }" << std::endl;
|
||||
out << "}" << std::endl;
|
||||
out << "#endif /* SPV_ENABLE_UTILITY_CODE */" << std::endl << std::endl;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// C printer
|
||||
@@ -600,6 +631,9 @@ namespace {
|
||||
return enumFmt(s, v, style, true);
|
||||
}
|
||||
|
||||
// Add type prefix for scoped enum
|
||||
virtual std::string fmtEnumUse(const std::string& opPrefix, const std::string& name) const { return opPrefix + "::" + name; }
|
||||
|
||||
std::string headerGuardSuffix() const override { return "HPP"; }
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user