Don't fail validation in unimplemented cases.
authorDejan Mircevski <deki@google.com>
Thu, 21 Jan 2016 14:03:58 +0000 (09:03 -0500)
committerDavid Neto <dneto@google.com>
Thu, 21 Jan 2016 19:13:09 +0000 (14:13 -0500)
source/validate_id.cpp

index 1110fba..e209b32 100644 (file)
@@ -2126,18 +2126,17 @@ bool idUsage::isValid(const spv_instruction_t* inst) {
 #define CASE(OpCode) \
   case Spv##OpCode:  \
     return isValid<Spv##OpCode>(inst, opcodeEntry);
-#define FAIL(OpCode)                                     \
+#define TODO(OpCode)                                     \
   case Spv##OpCode:                                      \
-    std::cerr << "Not implemented: " << #OpCode << "\n"; \
-    return false;
+    return true;
   switch (inst->opcode) {
-    FAIL(OpUndef)
+    TODO(OpUndef)
     CASE(OpMemberName)
     CASE(OpLine)
     CASE(OpMemberDecorate)
     CASE(OpGroupDecorate)
-    FAIL(OpGroupMemberDecorate)
-    FAIL(OpExtInst)
+    TODO(OpGroupMemberDecorate)
+    TODO(OpExtInst)
     CASE(OpEntryPoint)
     CASE(OpExecutionMode)
     CASE(OpTypeVector)
@@ -2158,188 +2157,188 @@ bool idUsage::isValid(const spv_instruction_t* inst) {
     CASE(OpSpecConstantTrue)
     CASE(OpSpecConstantFalse)
     CASE(OpSpecConstant)
-    FAIL(OpSpecConstantComposite)
-    FAIL(OpSpecConstantOp)
+    TODO(OpSpecConstantComposite)
+    TODO(OpSpecConstantOp)
     CASE(OpVariable)
     CASE(OpLoad)
     CASE(OpStore)
     CASE(OpCopyMemory)
     CASE(OpCopyMemorySized)
-    FAIL(OpAccessChain)
-    FAIL(OpInBoundsAccessChain)
-    FAIL(OpArrayLength)
-    FAIL(OpGenericPtrMemSemantics)
+    TODO(OpAccessChain)
+    TODO(OpInBoundsAccessChain)
+    TODO(OpArrayLength)
+    TODO(OpGenericPtrMemSemantics)
     CASE(OpFunction)
     CASE(OpFunctionParameter)
     CASE(OpFunctionCall)
-    FAIL(OpConvertUToF)
-    FAIL(OpConvertFToS)
-    FAIL(OpConvertSToF)
-    FAIL(OpUConvert)
-    FAIL(OpSConvert)
-    FAIL(OpFConvert)
-    FAIL(OpConvertPtrToU)
-    FAIL(OpConvertUToPtr)
-    FAIL(OpPtrCastToGeneric)
-    FAIL(OpGenericCastToPtr)
-    FAIL(OpBitcast)
-    FAIL(OpGenericCastToPtrExplicit)
-    FAIL(OpSatConvertSToU)
-    FAIL(OpSatConvertUToS)
-    FAIL(OpVectorExtractDynamic)
-    FAIL(OpVectorInsertDynamic)
-    FAIL(OpVectorShuffle)
-    FAIL(OpCompositeConstruct)
-    FAIL(OpCompositeExtract)
-    FAIL(OpCompositeInsert)
-    FAIL(OpCopyObject)
-    FAIL(OpTranspose)
-    FAIL(OpSNegate)
-    FAIL(OpFNegate)
-    FAIL(OpNot)
-    FAIL(OpIAdd)
-    FAIL(OpFAdd)
-    FAIL(OpISub)
-    FAIL(OpFSub)
-    FAIL(OpIMul)
-    FAIL(OpFMul)
-    FAIL(OpUDiv)
-    FAIL(OpSDiv)
-    FAIL(OpFDiv)
-    FAIL(OpUMod)
-    FAIL(OpSRem)
-    FAIL(OpSMod)
-    FAIL(OpFRem)
-    FAIL(OpFMod)
-    FAIL(OpVectorTimesScalar)
-    FAIL(OpMatrixTimesScalar)
-    FAIL(OpVectorTimesMatrix)
-    FAIL(OpMatrixTimesVector)
-    FAIL(OpMatrixTimesMatrix)
-    FAIL(OpOuterProduct)
-    FAIL(OpDot)
-    FAIL(OpShiftRightLogical)
-    FAIL(OpShiftRightArithmetic)
-    FAIL(OpShiftLeftLogical)
-    FAIL(OpBitwiseOr)
-    FAIL(OpBitwiseXor)
-    FAIL(OpBitwiseAnd)
-    FAIL(OpAny)
-    FAIL(OpAll)
-    FAIL(OpIsNan)
-    FAIL(OpIsInf)
-    FAIL(OpIsFinite)
-    FAIL(OpIsNormal)
-    FAIL(OpSignBitSet)
-    FAIL(OpLessOrGreater)
-    FAIL(OpOrdered)
-    FAIL(OpUnordered)
-    FAIL(OpLogicalOr)
-    FAIL(OpLogicalAnd)
-    FAIL(OpSelect)
-    FAIL(OpIEqual)
-    FAIL(OpFOrdEqual)
-    FAIL(OpFUnordEqual)
-    FAIL(OpINotEqual)
-    FAIL(OpFOrdNotEqual)
-    FAIL(OpFUnordNotEqual)
-    FAIL(OpULessThan)
-    FAIL(OpSLessThan)
-    FAIL(OpFOrdLessThan)
-    FAIL(OpFUnordLessThan)
-    FAIL(OpUGreaterThan)
-    FAIL(OpSGreaterThan)
-    FAIL(OpFOrdGreaterThan)
-    FAIL(OpFUnordGreaterThan)
-    FAIL(OpULessThanEqual)
-    FAIL(OpSLessThanEqual)
-    FAIL(OpFOrdLessThanEqual)
-    FAIL(OpFUnordLessThanEqual)
-    FAIL(OpUGreaterThanEqual)
-    FAIL(OpSGreaterThanEqual)
-    FAIL(OpFOrdGreaterThanEqual)
-    FAIL(OpFUnordGreaterThanEqual)
-    FAIL(OpDPdx)
-    FAIL(OpDPdy)
-    FAIL(OpFwidth)
-    FAIL(OpDPdxFine)
-    FAIL(OpDPdyFine)
-    FAIL(OpFwidthFine)
-    FAIL(OpDPdxCoarse)
-    FAIL(OpDPdyCoarse)
-    FAIL(OpFwidthCoarse)
-    FAIL(OpPhi)
-    FAIL(OpLoopMerge)
-    FAIL(OpSelectionMerge)
-    FAIL(OpBranch)
-    FAIL(OpBranchConditional)
-    FAIL(OpSwitch)
+    TODO(OpConvertUToF)
+    TODO(OpConvertFToS)
+    TODO(OpConvertSToF)
+    TODO(OpUConvert)
+    TODO(OpSConvert)
+    TODO(OpFConvert)
+    TODO(OpConvertPtrToU)
+    TODO(OpConvertUToPtr)
+    TODO(OpPtrCastToGeneric)
+    TODO(OpGenericCastToPtr)
+    TODO(OpBitcast)
+    TODO(OpGenericCastToPtrExplicit)
+    TODO(OpSatConvertSToU)
+    TODO(OpSatConvertUToS)
+    TODO(OpVectorExtractDynamic)
+    TODO(OpVectorInsertDynamic)
+    TODO(OpVectorShuffle)
+    TODO(OpCompositeConstruct)
+    TODO(OpCompositeExtract)
+    TODO(OpCompositeInsert)
+    TODO(OpCopyObject)
+    TODO(OpTranspose)
+    TODO(OpSNegate)
+    TODO(OpFNegate)
+    TODO(OpNot)
+    TODO(OpIAdd)
+    TODO(OpFAdd)
+    TODO(OpISub)
+    TODO(OpFSub)
+    TODO(OpIMul)
+    TODO(OpFMul)
+    TODO(OpUDiv)
+    TODO(OpSDiv)
+    TODO(OpFDiv)
+    TODO(OpUMod)
+    TODO(OpSRem)
+    TODO(OpSMod)
+    TODO(OpFRem)
+    TODO(OpFMod)
+    TODO(OpVectorTimesScalar)
+    TODO(OpMatrixTimesScalar)
+    TODO(OpVectorTimesMatrix)
+    TODO(OpMatrixTimesVector)
+    TODO(OpMatrixTimesMatrix)
+    TODO(OpOuterProduct)
+    TODO(OpDot)
+    TODO(OpShiftRightLogical)
+    TODO(OpShiftRightArithmetic)
+    TODO(OpShiftLeftLogical)
+    TODO(OpBitwiseOr)
+    TODO(OpBitwiseXor)
+    TODO(OpBitwiseAnd)
+    TODO(OpAny)
+    TODO(OpAll)
+    TODO(OpIsNan)
+    TODO(OpIsInf)
+    TODO(OpIsFinite)
+    TODO(OpIsNormal)
+    TODO(OpSignBitSet)
+    TODO(OpLessOrGreater)
+    TODO(OpOrdered)
+    TODO(OpUnordered)
+    TODO(OpLogicalOr)
+    TODO(OpLogicalAnd)
+    TODO(OpSelect)
+    TODO(OpIEqual)
+    TODO(OpFOrdEqual)
+    TODO(OpFUnordEqual)
+    TODO(OpINotEqual)
+    TODO(OpFOrdNotEqual)
+    TODO(OpFUnordNotEqual)
+    TODO(OpULessThan)
+    TODO(OpSLessThan)
+    TODO(OpFOrdLessThan)
+    TODO(OpFUnordLessThan)
+    TODO(OpUGreaterThan)
+    TODO(OpSGreaterThan)
+    TODO(OpFOrdGreaterThan)
+    TODO(OpFUnordGreaterThan)
+    TODO(OpULessThanEqual)
+    TODO(OpSLessThanEqual)
+    TODO(OpFOrdLessThanEqual)
+    TODO(OpFUnordLessThanEqual)
+    TODO(OpUGreaterThanEqual)
+    TODO(OpSGreaterThanEqual)
+    TODO(OpFOrdGreaterThanEqual)
+    TODO(OpFUnordGreaterThanEqual)
+    TODO(OpDPdx)
+    TODO(OpDPdy)
+    TODO(OpFwidth)
+    TODO(OpDPdxFine)
+    TODO(OpDPdyFine)
+    TODO(OpFwidthFine)
+    TODO(OpDPdxCoarse)
+    TODO(OpDPdyCoarse)
+    TODO(OpFwidthCoarse)
+    TODO(OpPhi)
+    TODO(OpLoopMerge)
+    TODO(OpSelectionMerge)
+    TODO(OpBranch)
+    TODO(OpBranchConditional)
+    TODO(OpSwitch)
     CASE(OpReturnValue)
-    FAIL(OpLifetimeStart)
-    FAIL(OpLifetimeStop)
-    FAIL(OpAtomicLoad)
-    FAIL(OpAtomicStore)
-    FAIL(OpAtomicExchange)
-    FAIL(OpAtomicCompareExchange)
-    FAIL(OpAtomicCompareExchangeWeak)
-    FAIL(OpAtomicIIncrement)
-    FAIL(OpAtomicIDecrement)
-    FAIL(OpAtomicIAdd)
-    FAIL(OpAtomicISub)
-    FAIL(OpAtomicUMin)
-    FAIL(OpAtomicUMax)
-    FAIL(OpAtomicAnd)
-    FAIL(OpAtomicOr)
-    FAIL(OpAtomicSMin)
-    FAIL(OpAtomicSMax)
-    FAIL(OpEmitStreamVertex)
-    FAIL(OpEndStreamPrimitive)
-    FAIL(OpGroupAsyncCopy)
-    FAIL(OpGroupWaitEvents)
-    FAIL(OpGroupAll)
-    FAIL(OpGroupAny)
-    FAIL(OpGroupBroadcast)
-    FAIL(OpGroupIAdd)
-    FAIL(OpGroupFAdd)
-    FAIL(OpGroupFMin)
-    FAIL(OpGroupUMin)
-    FAIL(OpGroupSMin)
-    FAIL(OpGroupFMax)
-    FAIL(OpGroupUMax)
-    FAIL(OpGroupSMax)
-    FAIL(OpEnqueueMarker)
-    FAIL(OpEnqueueKernel)
-    FAIL(OpGetKernelNDrangeSubGroupCount)
-    FAIL(OpGetKernelNDrangeMaxSubGroupSize)
-    FAIL(OpGetKernelWorkGroupSize)
-    FAIL(OpGetKernelPreferredWorkGroupSizeMultiple)
-    FAIL(OpRetainEvent)
-    FAIL(OpReleaseEvent)
-    FAIL(OpCreateUserEvent)
-    FAIL(OpIsValidEvent)
-    FAIL(OpSetUserEventStatus)
-    FAIL(OpCaptureEventProfilingInfo)
-    FAIL(OpGetDefaultQueue)
-    FAIL(OpBuildNDRange)
-    FAIL(OpReadPipe)
-    FAIL(OpWritePipe)
-    FAIL(OpReservedReadPipe)
-    FAIL(OpReservedWritePipe)
-    FAIL(OpReserveReadPipePackets)
-    FAIL(OpReserveWritePipePackets)
-    FAIL(OpCommitReadPipe)
-    FAIL(OpCommitWritePipe)
-    FAIL(OpIsValidReserveId)
-    FAIL(OpGetNumPipePackets)
-    FAIL(OpGetMaxPipePackets)
-    FAIL(OpGroupReserveReadPipePackets)
-    FAIL(OpGroupReserveWritePipePackets)
-    FAIL(OpGroupCommitReadPipe)
-    FAIL(OpGroupCommitWritePipe)
+    TODO(OpLifetimeStart)
+    TODO(OpLifetimeStop)
+    TODO(OpAtomicLoad)
+    TODO(OpAtomicStore)
+    TODO(OpAtomicExchange)
+    TODO(OpAtomicCompareExchange)
+    TODO(OpAtomicCompareExchangeWeak)
+    TODO(OpAtomicIIncrement)
+    TODO(OpAtomicIDecrement)
+    TODO(OpAtomicIAdd)
+    TODO(OpAtomicISub)
+    TODO(OpAtomicUMin)
+    TODO(OpAtomicUMax)
+    TODO(OpAtomicAnd)
+    TODO(OpAtomicOr)
+    TODO(OpAtomicSMin)
+    TODO(OpAtomicSMax)
+    TODO(OpEmitStreamVertex)
+    TODO(OpEndStreamPrimitive)
+    TODO(OpGroupAsyncCopy)
+    TODO(OpGroupWaitEvents)
+    TODO(OpGroupAll)
+    TODO(OpGroupAny)
+    TODO(OpGroupBroadcast)
+    TODO(OpGroupIAdd)
+    TODO(OpGroupFAdd)
+    TODO(OpGroupFMin)
+    TODO(OpGroupUMin)
+    TODO(OpGroupSMin)
+    TODO(OpGroupFMax)
+    TODO(OpGroupUMax)
+    TODO(OpGroupSMax)
+    TODO(OpEnqueueMarker)
+    TODO(OpEnqueueKernel)
+    TODO(OpGetKernelNDrangeSubGroupCount)
+    TODO(OpGetKernelNDrangeMaxSubGroupSize)
+    TODO(OpGetKernelWorkGroupSize)
+    TODO(OpGetKernelPreferredWorkGroupSizeMultiple)
+    TODO(OpRetainEvent)
+    TODO(OpReleaseEvent)
+    TODO(OpCreateUserEvent)
+    TODO(OpIsValidEvent)
+    TODO(OpSetUserEventStatus)
+    TODO(OpCaptureEventProfilingInfo)
+    TODO(OpGetDefaultQueue)
+    TODO(OpBuildNDRange)
+    TODO(OpReadPipe)
+    TODO(OpWritePipe)
+    TODO(OpReservedReadPipe)
+    TODO(OpReservedWritePipe)
+    TODO(OpReserveReadPipePackets)
+    TODO(OpReserveWritePipePackets)
+    TODO(OpCommitReadPipe)
+    TODO(OpCommitWritePipe)
+    TODO(OpIsValidReserveId)
+    TODO(OpGetNumPipePackets)
+    TODO(OpGetMaxPipePackets)
+    TODO(OpGroupReserveReadPipePackets)
+    TODO(OpGroupReserveWritePipePackets)
+    TODO(OpGroupCommitReadPipe)
+    TODO(OpGroupCommitWritePipe)
     default:
       return true;
   }
-#undef FAIL
+#undef TODO
 #undef CASE
 }
 }  // anonymous namespace