data PrimOp
   = CharGtOp
   | CharGeOp
   | CharEqOp
   | CharNeOp
   | CharLtOp
   | CharLeOp
   | OrdOp
   | IntAddOp
   | IntSubOp
   | IntMulOp
   | IntMulMayOfloOp
   | IntQuotOp
   | IntRemOp
   | IntQuotRemOp
   | AndIOp
   | OrIOp
   | XorIOp
   | NotIOp
   | IntNegOp
   | IntAddCOp
   | IntSubCOp
   | IntGtOp
   | IntGeOp
   | IntEqOp
   | IntNeOp
   | IntLtOp
   | IntLeOp
   | ChrOp
   | Int2WordOp
   | Int2FloatOp
   | Int2DoubleOp
   | Word2FloatOp
   | Word2DoubleOp
   | ISllOp
   | ISraOp
   | ISrlOp
   | WordAddOp
   | WordSubCOp
   | WordAdd2Op
   | WordSubOp
   | WordMulOp
   | WordMul2Op
   | WordQuotOp
   | WordRemOp
   | WordQuotRemOp
   | WordQuotRem2Op
   | AndOp
   | OrOp
   | XorOp
   | NotOp
   | SllOp
   | SrlOp
   | Word2IntOp
   | WordGtOp
   | WordGeOp
   | WordEqOp
   | WordNeOp
   | WordLtOp
   | WordLeOp
   | PopCnt8Op
   | PopCnt16Op
   | PopCnt32Op
   | PopCnt64Op
   | PopCntOp
   | Pdep8Op
   | Pdep16Op
   | Pdep32Op
   | Pdep64Op
   | PdepOp
   | Pext8Op
   | Pext16Op
   | Pext32Op
   | Pext64Op
   | PextOp
   | Clz8Op
   | Clz16Op
   | Clz32Op
   | Clz64Op
   | ClzOp
   | Ctz8Op
   | Ctz16Op
   | Ctz32Op
   | Ctz64Op
   | CtzOp
   | BSwap16Op
   | BSwap32Op
   | BSwap64Op
   | BSwapOp
   | Narrow8IntOp
   | Narrow16IntOp
   | Narrow32IntOp
   | Narrow8WordOp
   | Narrow16WordOp
   | Narrow32WordOp
   | DoubleGtOp
   | DoubleGeOp
   | DoubleEqOp
   | DoubleNeOp
   | DoubleLtOp
   | DoubleLeOp
   | DoubleAddOp
   | DoubleSubOp
   | DoubleMulOp
   | DoubleDivOp
   | DoubleNegOp
   | DoubleFabsOp
   | Double2IntOp
   | Double2FloatOp
   | DoubleExpOp
   | DoubleLogOp
   | DoubleSqrtOp
   | DoubleSinOp
   | DoubleCosOp
   | DoubleTanOp
   | DoubleAsinOp
   | DoubleAcosOp
   | DoubleAtanOp
   | DoubleSinhOp
   | DoubleCoshOp
   | DoubleTanhOp
   | DoublePowerOp
   | DoubleDecode_2IntOp
   | DoubleDecode_Int64Op
   | FloatGtOp
   | FloatGeOp
   | FloatEqOp
   | FloatNeOp
   | FloatLtOp
   | FloatLeOp
   | FloatAddOp
   | FloatSubOp
   | FloatMulOp
   | FloatDivOp
   | FloatNegOp
   | FloatFabsOp
   | Float2IntOp
   | FloatExpOp
   | FloatLogOp
   | FloatSqrtOp
   | FloatSinOp
   | FloatCosOp
   | FloatTanOp
   | FloatAsinOp
   | FloatAcosOp
   | FloatAtanOp
   | FloatSinhOp
   | FloatCoshOp
   | FloatTanhOp
   | FloatPowerOp
   | Float2DoubleOp
   | FloatDecode_IntOp
   | NewArrayOp
   | SameMutableArrayOp
   | ReadArrayOp
   | WriteArrayOp
   | SizeofArrayOp
   | SizeofMutableArrayOp
   | IndexArrayOp
   | UnsafeFreezeArrayOp
   | UnsafeThawArrayOp
   | CopyArrayOp
   | CopyMutableArrayOp
   | CloneArrayOp
   | CloneMutableArrayOp
   | FreezeArrayOp
   | ThawArrayOp
   | CasArrayOp
   | NewSmallArrayOp
   | SameSmallMutableArrayOp
   | ReadSmallArrayOp
   | WriteSmallArrayOp
   | SizeofSmallArrayOp
   | SizeofSmallMutableArrayOp
   | IndexSmallArrayOp
   | UnsafeFreezeSmallArrayOp
   | UnsafeThawSmallArrayOp
   | CopySmallArrayOp
   | CopySmallMutableArrayOp
   | CloneSmallArrayOp
   | CloneSmallMutableArrayOp
   | FreezeSmallArrayOp
   | ThawSmallArrayOp
   | CasSmallArrayOp
   | NewByteArrayOp_Char
   | NewPinnedByteArrayOp_Char
   | NewAlignedPinnedByteArrayOp_Char
   | MutableByteArrayIsPinnedOp
   | ByteArrayIsPinnedOp
   | ByteArrayContents_Char
   | SameMutableByteArrayOp
   | ShrinkMutableByteArrayOp_Char
   | ResizeMutableByteArrayOp_Char
   | UnsafeFreezeByteArrayOp
   | SizeofByteArrayOp
   | SizeofMutableByteArrayOp
   | GetSizeofMutableByteArrayOp
   | IndexByteArrayOp_Char
   | IndexByteArrayOp_WideChar
   | IndexByteArrayOp_Int
   | IndexByteArrayOp_Word
   | IndexByteArrayOp_Addr
   | IndexByteArrayOp_Float
   | IndexByteArrayOp_Double
   | IndexByteArrayOp_StablePtr
   | IndexByteArrayOp_Int8
   | IndexByteArrayOp_Int16
   | IndexByteArrayOp_Int32
   | IndexByteArrayOp_Int64
   | IndexByteArrayOp_Word8
   | IndexByteArrayOp_Word16
   | IndexByteArrayOp_Word32
   | IndexByteArrayOp_Word64
   | ReadByteArrayOp_Char
   | ReadByteArrayOp_WideChar
   | ReadByteArrayOp_Int
   | ReadByteArrayOp_Word
   | ReadByteArrayOp_Addr
   | ReadByteArrayOp_Float
   | ReadByteArrayOp_Double
   | ReadByteArrayOp_StablePtr
   | ReadByteArrayOp_Int8
   | ReadByteArrayOp_Int16
   | ReadByteArrayOp_Int32
   | ReadByteArrayOp_Int64
   | ReadByteArrayOp_Word8
   | ReadByteArrayOp_Word16
   | ReadByteArrayOp_Word32
   | ReadByteArrayOp_Word64
   | WriteByteArrayOp_Char
   | WriteByteArrayOp_WideChar
   | WriteByteArrayOp_Int
   | WriteByteArrayOp_Word
   | WriteByteArrayOp_Addr
   | WriteByteArrayOp_Float
   | WriteByteArrayOp_Double
   | WriteByteArrayOp_StablePtr
   | WriteByteArrayOp_Int8
   | WriteByteArrayOp_Int16
   | WriteByteArrayOp_Int32
   | WriteByteArrayOp_Int64
   | WriteByteArrayOp_Word8
   | WriteByteArrayOp_Word16
   | WriteByteArrayOp_Word32
   | WriteByteArrayOp_Word64
   | CompareByteArraysOp
   | CopyByteArrayOp
   | CopyMutableByteArrayOp
   | CopyByteArrayToAddrOp
   | CopyMutableByteArrayToAddrOp
   | CopyAddrToByteArrayOp
   | SetByteArrayOp
   | AtomicReadByteArrayOp_Int
   | AtomicWriteByteArrayOp_Int
   | CasByteArrayOp_Int
   | FetchAddByteArrayOp_Int
   | FetchSubByteArrayOp_Int
   | FetchAndByteArrayOp_Int
   | FetchNandByteArrayOp_Int
   | FetchOrByteArrayOp_Int
   | FetchXorByteArrayOp_Int
   | NewArrayArrayOp
   | SameMutableArrayArrayOp
   | UnsafeFreezeArrayArrayOp
   | SizeofArrayArrayOp
   | SizeofMutableArrayArrayOp
   | IndexArrayArrayOp_ByteArray
   | IndexArrayArrayOp_ArrayArray
   | ReadArrayArrayOp_ByteArray
   | ReadArrayArrayOp_MutableByteArray
   | ReadArrayArrayOp_ArrayArray
   | ReadArrayArrayOp_MutableArrayArray
   | WriteArrayArrayOp_ByteArray
   | WriteArrayArrayOp_MutableByteArray
   | WriteArrayArrayOp_ArrayArray
   | WriteArrayArrayOp_MutableArrayArray
   | CopyArrayArrayOp
   | CopyMutableArrayArrayOp
   | AddrAddOp
   | AddrSubOp
   | AddrRemOp
   | Addr2IntOp
   | Int2AddrOp
   | AddrGtOp
   | AddrGeOp
   | AddrEqOp
   | AddrNeOp
   | AddrLtOp
   | AddrLeOp
   | IndexOffAddrOp_Char
   | IndexOffAddrOp_WideChar
   | IndexOffAddrOp_Int
   | IndexOffAddrOp_Word
   | IndexOffAddrOp_Addr
   | IndexOffAddrOp_Float
   | IndexOffAddrOp_Double
   | IndexOffAddrOp_StablePtr
   | IndexOffAddrOp_Int8
   | IndexOffAddrOp_Int16
   | IndexOffAddrOp_Int32
   | IndexOffAddrOp_Int64
   | IndexOffAddrOp_Word8
   | IndexOffAddrOp_Word16
   | IndexOffAddrOp_Word32
   | IndexOffAddrOp_Word64
   | ReadOffAddrOp_Char
   | ReadOffAddrOp_WideChar
   | ReadOffAddrOp_Int
   | ReadOffAddrOp_Word
   | ReadOffAddrOp_Addr
   | ReadOffAddrOp_Float
   | ReadOffAddrOp_Double
   | ReadOffAddrOp_StablePtr
   | ReadOffAddrOp_Int8
   | ReadOffAddrOp_Int16
   | ReadOffAddrOp_Int32
   | ReadOffAddrOp_Int64
   | ReadOffAddrOp_Word8
   | ReadOffAddrOp_Word16
   | ReadOffAddrOp_Word32
   | ReadOffAddrOp_Word64
   | WriteOffAddrOp_Char
   | WriteOffAddrOp_WideChar
   | WriteOffAddrOp_Int
   | WriteOffAddrOp_Word
   | WriteOffAddrOp_Addr
   | WriteOffAddrOp_Float
   | WriteOffAddrOp_Double
   | WriteOffAddrOp_StablePtr
   | WriteOffAddrOp_Int8
   | WriteOffAddrOp_Int16
   | WriteOffAddrOp_Int32
   | WriteOffAddrOp_Int64
   | WriteOffAddrOp_Word8
   | WriteOffAddrOp_Word16
   | WriteOffAddrOp_Word32
   | WriteOffAddrOp_Word64
   | NewMutVarOp
   | ReadMutVarOp
   | WriteMutVarOp
   | SameMutVarOp
   | AtomicModifyMutVarOp
   | CasMutVarOp
   | CatchOp
   | RaiseOp
   | RaiseIOOp
   | MaskAsyncExceptionsOp
   | MaskUninterruptibleOp
   | UnmaskAsyncExceptionsOp
   | MaskStatus
   | AtomicallyOp
   | RetryOp
   | CatchRetryOp
   | CatchSTMOp
   | Check
   | NewTVarOp
   | ReadTVarOp
   | ReadTVarIOOp
   | WriteTVarOp
   | SameTVarOp
   | NewMVarOp
   | TakeMVarOp
   | TryTakeMVarOp
   | PutMVarOp
   | TryPutMVarOp
   | ReadMVarOp
   | TryReadMVarOp
   | SameMVarOp
   | IsEmptyMVarOp
   | DelayOp
   | WaitReadOp
   | WaitWriteOp
   | ForkOp
   | ForkOnOp
   | KillThreadOp
   | YieldOp
   | MyThreadIdOp
   | LabelThreadOp
   | IsCurrentThreadBoundOp
   | NoDuplicateOp
   | ThreadStatusOp
   | MkWeakOp
   | MkWeakNoFinalizerOp
   | AddCFinalizerToWeakOp
   | DeRefWeakOp
   | FinalizeWeakOp
   | TouchOp
   | MakeStablePtrOp
   | DeRefStablePtrOp
   | EqStablePtrOp
   | MakeStableNameOp
   | EqStableNameOp
   | StableNameToIntOp
   | CompactNewOp
   | CompactResizeOp
   | CompactContainsOp
   | CompactContainsAnyOp
   | CompactGetFirstBlockOp
   | CompactGetNextBlockOp
   | CompactAllocateBlockOp
   | CompactFixupPointersOp
   | CompactAdd
   | CompactAddWithSharing
   | CompactSize
   | ReallyUnsafePtrEqualityOp
   | ParOp
   | SparkOp
   | SeqOp
   | GetSparkOp
   | NumSparks
   | DataToTagOp
   | TagToEnumOp
   | AddrToAnyOp
   | AnyToAddrOp
   | MkApUpd0_Op
   | NewBCOOp
   | UnpackClosureOp
   | GetApStackValOp
   | GetCCSOfOp
   | GetCurrentCCSOp
   | ClearCCSOp
   | TraceEventOp
   | TraceMarkerOp
   | VecBroadcastOp PrimOpVecCat Length Width
   | VecPackOp PrimOpVecCat Length Width
   | VecUnpackOp PrimOpVecCat Length Width
   | VecInsertOp PrimOpVecCat Length Width
   | VecAddOp PrimOpVecCat Length Width
   | VecSubOp PrimOpVecCat Length Width
   | VecMulOp PrimOpVecCat Length Width
   | VecDivOp PrimOpVecCat Length Width
   | VecQuotOp PrimOpVecCat Length Width
   | VecRemOp PrimOpVecCat Length Width
   | VecNegOp PrimOpVecCat Length Width
   | VecIndexByteArrayOp PrimOpVecCat Length Width
   | VecReadByteArrayOp PrimOpVecCat Length Width
   | VecWriteByteArrayOp PrimOpVecCat Length Width
   | VecIndexOffAddrOp PrimOpVecCat Length Width
   | VecReadOffAddrOp PrimOpVecCat Length Width
   | VecWriteOffAddrOp PrimOpVecCat Length Width
   | VecIndexScalarByteArrayOp PrimOpVecCat Length Width
   | VecReadScalarByteArrayOp PrimOpVecCat Length Width
   | VecWriteScalarByteArrayOp PrimOpVecCat Length Width
   | VecIndexScalarOffAddrOp PrimOpVecCat Length Width
   | VecReadScalarOffAddrOp PrimOpVecCat Length Width
   | VecWriteScalarOffAddrOp PrimOpVecCat Length Width
   | PrefetchByteArrayOp3
   | PrefetchMutableByteArrayOp3
   | PrefetchAddrOp3
   | PrefetchValueOp3
   | PrefetchByteArrayOp2
   | PrefetchMutableByteArrayOp2
   | PrefetchAddrOp2
   | PrefetchValueOp2
   | PrefetchByteArrayOp1
   | PrefetchMutableByteArrayOp1
   | PrefetchAddrOp1
   | PrefetchValueOp1
   | PrefetchByteArrayOp0
   | PrefetchMutableByteArrayOp0
   | PrefetchAddrOp0
   | PrefetchValueOp0