|
|
@@ -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)); }
|