module SpirV.Instructions (Instruction(..)) where
data Instruction
  = OpNop 
  | OpUndef 
  | OpSource 
  | OpSourceExtension 
  | OpName 
  | OpMemberName 
  | OpString 
  | OpLine 
  | OpDecorationGroup 
  | OpDecorate 
  | OpMemberDecorate 
  | OpGroupDecorate 
  | OpGroupMemberDecorate 
  | OpExtension 
  | OpExtInstImport 
  | OpExtInst 
  | OpMemoryModel 
  | OpEntryPoint 
  | OpExecutionMode 
  | OpCompileFlag 
  | OpTypeVoid 
  | OpTypeBool 
  | OpTypeInt 
  | OpTypeFloat 
  | OpTypeVector 
  | OpTypeMatrix 
  | OpTypeSampler 
  | OpTypeFilter 
  | OpTypeArray 
  | OpTypeRuntimeArray 
  | OpTypeStruct 
  | OpTypeOpaque 
  | OpTypePointer 
  | OpTypeFunction 
  | OpTypeEvent 
  | OpTypeDeviceEvent 
  | OpTypeReserveId 
  | OpTypeQueue 
  | OpTypePipe 
  | OpConstantTrue 
  | OpConstantFalse 
  | OpConstant 
  | OpConstantComposite 
  | OpConstantSampler 
  | OpConstantNullPointer 
  | OpConstantNullObject 
  | OpSpecConstantTrue 
  | OpSpecConstantFalse 
  | OpSpecConstant 
  | OpSpecConstantComposite 
  | OpVariable 
  | OpVariableArray 
  | OpLoad 
  | OpStore 
  | OpCopyMemory 
  | OpCopyMemorySized 
  | OpAccessChain 
  | OpInBoundsAccessChain 
  | OpArrayLength 
  | OpImagePointer 
  | OpGenericPtrMemSemantics 
  | OpFunction 
  | OpFunctionParameter 
  | OpFunctionEnd 
  | OpFunctionCall 
  | OpSampler 
  | OpTextureSample 
  | OpTextureSampleDref 
  | OpTextureSampleLod 
  | OpTextureSampleProj 
  | OpTextureSampleGrad 
  | OpTextureSampleOffset 
  | OpTextureSampleProjLod 
  | OpTextureSampleProjGrad 
  | OpTextureSampleLodOffset 
  | OpTextureSampleProjOffset 
  | OpTextureSampleGradOffset 
  | OpTextureSampleProjLodOffset 
  | OpTextureSampleProjGradOffset 
  | OpTextureFetchTexel 
  | OpTextureFetchTexelOffset 
  | OpTextureFetchSample 
  | OpTextureFetchBuffer 
  | OpTextureGather 
  | OpTextureGatherOffset 
  | OpTextureGatherOffsets 
  | OpTextureQuerySizeLod 
  | OpTextureQuerySize 
  | OpTextureQueryLod 
  | OpTextureQueryLevels 
  | OpTextureQuerySamples 
  | OpConvertFToU 
  | OpConvertFToS 
  | OpConvertSToF 
  | OpConvertUToF 
  | OpUConvert 
  | OpSConvert 
  | OpFConvert 
  | OpConvertPtrToU 
  | OpConvertUToPtr 
  | OpPtrCastToGeneric 
  | OpGenericCastToPtr 
  | OpBitcast 
  | OpGenericCastToPtrExplicit 
  | OpVectorExtractDynamic 
  | OpVectorInsertDynamic 
  | OpVectorShuffle 
  | OpCompositeConstruct 
  | OpCompositeExtract 
  | OpCompositeInsert 
  | OpCopyObject 
  | OpTranspose 
  | OpSNegate 
  | OpFNegate 
  | OpNot 
  | OpIAdd 
  | OpFAdd 
  | OpISub 
  | OpFSub 
  | OpIMul 
  | OpFMul 
  | OpUDiv 
  | OpSDiv 
  | OpFDiv 
  | OpUMod 
  | OpSRem 
  | OpSMod 
  | OpFRem 
  | OpFMod 
  | OpVectorTimesScalar 
  | OpMatrixTimesScalar 
  | OpVectorTimesMatrix 
  | OpMatrixTimesVector 
  | OpMatrixTimesMatrix 
  | OpOuterProduct 
  | OpDot 
  | OpShiftRightLogical 
  | OpShiftRightArithmetic 
  | OpShiftLeftLogical 
  | OpBitwiseOr 
  | OpBitwiseXor 
  | OpBitwiseAnd 
  | OpAny 
  | OpAll 
  | OpIsNan 
  | OpIsInf 
  | OpIsFinite 
  | OpIsNormal 
  | OpSignBitSet 
  | OpLessOrGreater 
  | OpOrdered 
  | OpUnordered 
  | OpLogicalOr 
  | OpLogicalXor 
  | OpLogicalAnd 
  | OpSelect 
  | OpIEqual 
  | OpFOrdEqual 
  | OpFUnordEqual 
  | OpINotEqual 
  | OpFOrdNotEqual 
  | OpFUnordNotEqual 
  | OpULessThan 
  | OpSLessThan 
  | OpFOrdLessThan 
  | OpFUnordLessThan 
  | OpUGreaterThan 
  | OpSGreaterThan 
  | OpFOrdGreaterThan 
  | OpFUnordGreaterThan 
  | OpULessThanEqual 
  | OpSLessThanEqual 
  | OpFOrdLessThanEqual 
  | OpFUnordLessThanEqual 
  | OpUGreaterThanEqual 
  | OpSGreaterThanEqual 
  | OpFOrdGreaterThanEqual 
  | OpFUnordGreaterThanEqual 
  | OpDPdx 
  | OpDPdy 
  | OpFwidth 
  | OpDPdxFine 
  | OpDPdyFine 
  | OpFwidthFine 
  | OpDPdxCoarse 
  | OpDPdyCoarse 
  | OpFwidthCoarse 
  | OpPhi 
  | OpLoopMerge 
  | OpSelectionMerge 
  | OpLabel 
  | OpBranch 
  | OpBranchConditional 
  | OpSwitch 
  | OpKill 
  | OpReturn 
  | OpReturnValue 
  | OpUnreachable 
  | OpLifetimeStart 
  | OpLifetimeStop 
  | OpAtomicInit 
  | OpAtomicLoad 
  | OpAtomicStore 
  | OpAtomicExchange 
  | OpAtomicCompareExchange 
  | OpAtomicCompareExchangeWeak 
  | OpAtomicIIncrement 
  | OpAtomicIDecrement 
  | OpAtomicIAdd 
  | OpAtomicISub 
  | OpAtomicUMin 
  | OpAtomicUMax 
  | OpAtomicAnd 
  | OpAtomicOr 
  | OpAtomicXor 
  | OpEmitVertex 
  | OpEndPrimitive 
  | OpEmitStreamVertex 
  | OpEndStreamPrimitive 
  | OpControlBarrier 
  | OpMemoryBarrier 
  | OpAsyncGroupCopy 
  | OpWaitGroupEvents 
  | OpGroupAll 
  | OpGroupAny 
  | OpGroupBroadcast 
  | OpGroupIAdd 
  | OpGroupFAdd 
  | OpGroupFMin 
  | OpGroupUMin 
  | OpGroupSMin 
  | OpGroupFMax 
  | OpGroupUMax 
  | OpGroupSMax 
  | OpEnqueueMarker 
  | OpEnqueueKernel 
  | OpGetKernelNDrangeSubGroupCount 
  | OpGetKernelNDrangeMaxSubGroupSize 
  | OpGetKernelWorkGroupSize 
  | OpGetKernelPreferredWorkGroupSizeMultiple 
  | OpRetainEvent 
  | OpReleaseEvent 
  | OpCreateUserEvent 
  | OpIsValidEvent 
  | OpSetUserEventStatus 
  | OpCaptureEventProfilingInfo 
  | OpGetDefaultQueue 
  | OpBuildNDRange 
  | OpReadPipe 
  | OpWritePipe 
  | OpReservedReadPipe 
  | OpReservedWritePipe 
  | OpReserveReadPipePackets 
  | OpReserveWritePipePackets 
  | OpCommitReadPipe 
  | OpCommitWritePipe 
  | OpIsValidReserveId 
  | OpGetNumPipePackets 
  | OpGetMaxPipePackets 
  | OpGroupReserveReadPipePackets 
  | OpGroupReserveWritePipePackets 
  | OpGroupCommitReadPipe 
  | OpGroupCommitWritePipe