data PrimOp = CharGtOp | CharGeOp | CharEqOp | CharNeOp | CharLtOp | CharLeOp | OrdOp | Int8ToIntOp | IntToInt8Op | Int8NegOp | Int8AddOp | Int8SubOp | Int8MulOp | Int8QuotOp | Int8RemOp | Int8QuotRemOp | Int8SllOp | Int8SraOp | Int8SrlOp | Int8ToWord8Op | Int8EqOp | Int8GeOp | Int8GtOp | Int8LeOp | Int8LtOp | Int8NeOp | Word8ToWordOp | WordToWord8Op | Word8AddOp | Word8SubOp | Word8MulOp | Word8QuotOp | Word8RemOp | Word8QuotRemOp | Word8AndOp | Word8OrOp | Word8XorOp | Word8NotOp | Word8SllOp | Word8SrlOp | Word8ToInt8Op | Word8EqOp | Word8GeOp | Word8GtOp | Word8LeOp | Word8LtOp | Word8NeOp | Int16ToIntOp | IntToInt16Op | Int16NegOp | Int16AddOp | Int16SubOp | Int16MulOp | Int16QuotOp | Int16RemOp | Int16QuotRemOp | Int16SllOp | Int16SraOp | Int16SrlOp | Int16ToWord16Op | Int16EqOp | Int16GeOp | Int16GtOp | Int16LeOp | Int16LtOp | Int16NeOp | Word16ToWordOp | WordToWord16Op | Word16AddOp | Word16SubOp | Word16MulOp | Word16QuotOp | Word16RemOp | Word16QuotRemOp | Word16AndOp | Word16OrOp | Word16XorOp | Word16NotOp | Word16SllOp | Word16SrlOp | Word16ToInt16Op | Word16EqOp | Word16GeOp | Word16GtOp | Word16LeOp | Word16LtOp | Word16NeOp | Int32ToIntOp | IntToInt32Op | Int32NegOp | Int32AddOp | Int32SubOp | Int32MulOp | Int32QuotOp | Int32RemOp | Int32QuotRemOp | Int32SllOp | Int32SraOp | Int32SrlOp | Int32ToWord32Op | Int32EqOp | Int32GeOp | Int32GtOp | Int32LeOp | Int32LtOp | Int32NeOp | Word32ToWordOp | WordToWord32Op | Word32AddOp | Word32SubOp | Word32MulOp | Word32QuotOp | Word32RemOp | Word32QuotRemOp | Word32AndOp | Word32OrOp | Word32XorOp | Word32NotOp | Word32SllOp | Word32SrlOp | Word32ToInt32Op | Word32EqOp | Word32GeOp | Word32GtOp | Word32LeOp | Word32LtOp | Word32NeOp | IntAddOp | IntSubOp | IntMulOp | IntMul2Op | IntMulMayOfloOp | IntQuotOp | IntRemOp | IntQuotRemOp | IntAndOp | IntOrOp | IntXorOp | IntNotOp | IntNegOp | IntAddCOp | IntSubCOp | IntGtOp | IntGeOp | IntEqOp | IntNeOp | IntLtOp | IntLeOp | ChrOp | IntToWordOp | IntToFloatOp | IntToDoubleOp | WordToFloatOp | WordToDoubleOp | IntSllOp | IntSraOp | IntSrlOp | WordAddOp | WordAddCOp | WordSubCOp | WordAdd2Op | WordSubOp | WordMulOp | WordMul2Op | WordQuotOp | WordRemOp | WordQuotRemOp | WordQuotRem2Op | WordAndOp | WordOrOp | WordXorOp | WordNotOp | WordSllOp | WordSrlOp | WordToIntOp | 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 | BRev8Op | BRev16Op | BRev32Op | BRev64Op | BRevOp | Narrow8IntOp | Narrow16IntOp | Narrow32IntOp | Narrow8WordOp | Narrow16WordOp | Narrow32WordOp | DoubleGtOp | DoubleGeOp | DoubleEqOp | DoubleNeOp | DoubleLtOp | DoubleLeOp | DoubleAddOp | DoubleSubOp | DoubleMulOp | DoubleDivOp | DoubleNegOp | DoubleFabsOp | DoubleToIntOp | DoubleToFloatOp | DoubleExpOp | DoubleExpM1Op | DoubleLogOp | DoubleLog1POp | DoubleSqrtOp | DoubleSinOp | DoubleCosOp | DoubleTanOp | DoubleAsinOp | DoubleAcosOp | DoubleAtanOp | DoubleSinhOp | DoubleCoshOp | DoubleTanhOp | DoubleAsinhOp | DoubleAcoshOp | DoubleAtanhOp | DoublePowerOp | DoubleDecode_2IntOp | DoubleDecode_Int64Op | FloatGtOp | FloatGeOp | FloatEqOp | FloatNeOp | FloatLtOp | FloatLeOp | FloatAddOp | FloatSubOp | FloatMulOp | FloatDivOp | FloatNegOp | FloatFabsOp | FloatToIntOp | FloatExpOp | FloatExpM1Op | FloatLogOp | FloatLog1POp | FloatSqrtOp | FloatSinOp | FloatCosOp | FloatTanOp | FloatAsinOp | FloatAcosOp | FloatAtanOp | FloatSinhOp | FloatCoshOp | FloatTanhOp | FloatAsinhOp | FloatAcoshOp | FloatAtanhOp | FloatPowerOp | FloatToDoubleOp | FloatDecode_IntOp | NewArrayOp | SameMutableArrayOp | ReadArrayOp | WriteArrayOp | SizeofArrayOp | SizeofMutableArrayOp | IndexArrayOp | UnsafeFreezeArrayOp | UnsafeThawArrayOp | CopyArrayOp | CopyMutableArrayOp | CloneArrayOp | CloneMutableArrayOp | FreezeArrayOp | ThawArrayOp | CasArrayOp | NewSmallArrayOp | SameSmallMutableArrayOp | ShrinkSmallMutableArrayOp_Char | ReadSmallArrayOp | WriteSmallArrayOp | SizeofSmallArrayOp | SizeofSmallMutableArrayOp | GetSizeofSmallMutableArrayOp | IndexSmallArrayOp | UnsafeFreezeSmallArrayOp | UnsafeThawSmallArrayOp | CopySmallArrayOp | CopySmallMutableArrayOp | CloneSmallArrayOp | CloneSmallMutableArrayOp | FreezeSmallArrayOp | ThawSmallArrayOp | CasSmallArrayOp | NewByteArrayOp_Char | NewPinnedByteArrayOp_Char | NewAlignedPinnedByteArrayOp_Char | MutableByteArrayIsPinnedOp | ByteArrayIsPinnedOp | ByteArrayContents_Char | MutableByteArrayContents_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 | IndexByteArrayOp_Word8AsChar | IndexByteArrayOp_Word8AsWideChar | IndexByteArrayOp_Word8AsInt | IndexByteArrayOp_Word8AsWord | IndexByteArrayOp_Word8AsAddr | IndexByteArrayOp_Word8AsFloat | IndexByteArrayOp_Word8AsDouble | IndexByteArrayOp_Word8AsStablePtr | IndexByteArrayOp_Word8AsInt16 | IndexByteArrayOp_Word8AsInt32 | IndexByteArrayOp_Word8AsInt64 | IndexByteArrayOp_Word8AsWord16 | IndexByteArrayOp_Word8AsWord32 | IndexByteArrayOp_Word8AsWord64 | 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 | ReadByteArrayOp_Word8AsChar | ReadByteArrayOp_Word8AsWideChar | ReadByteArrayOp_Word8AsInt | ReadByteArrayOp_Word8AsWord | ReadByteArrayOp_Word8AsAddr | ReadByteArrayOp_Word8AsFloat | ReadByteArrayOp_Word8AsDouble | ReadByteArrayOp_Word8AsStablePtr | ReadByteArrayOp_Word8AsInt16 | ReadByteArrayOp_Word8AsInt32 | ReadByteArrayOp_Word8AsInt64 | ReadByteArrayOp_Word8AsWord16 | ReadByteArrayOp_Word8AsWord32 | ReadByteArrayOp_Word8AsWord64 | 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 | WriteByteArrayOp_Word8AsChar | WriteByteArrayOp_Word8AsWideChar | WriteByteArrayOp_Word8AsInt | WriteByteArrayOp_Word8AsWord | WriteByteArrayOp_Word8AsAddr | WriteByteArrayOp_Word8AsFloat | WriteByteArrayOp_Word8AsDouble | WriteByteArrayOp_Word8AsStablePtr | WriteByteArrayOp_Word8AsInt16 | WriteByteArrayOp_Word8AsInt32 | WriteByteArrayOp_Word8AsInt64 | WriteByteArrayOp_Word8AsWord16 | WriteByteArrayOp_Word8AsWord32 | WriteByteArrayOp_Word8AsWord64 | 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 | AddrToIntOp | IntToAddrOp | 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 | InterlockedExchange_Addr | InterlockedExchange_Word | CasAddrOp_Addr | CasAddrOp_Word | FetchAddAddrOp_Word | FetchSubAddrOp_Word | FetchAndAddrOp_Word | FetchNandAddrOp_Word | FetchOrAddrOp_Word | FetchXorAddrOp_Word | AtomicReadAddrOp_Word | AtomicWriteAddrOp_Word | NewMutVarOp | ReadMutVarOp | WriteMutVarOp | SameMutVarOp | AtomicModifyMutVar2Op | AtomicModifyMutVar_Op | CasMutVarOp | CatchOp | RaiseOp | RaiseIOOp | MaskAsyncExceptionsOp | MaskUninterruptibleOp | UnmaskAsyncExceptionsOp | MaskStatus | AtomicallyOp | RetryOp | CatchRetryOp | CatchSTMOp | NewTVarOp | ReadTVarOp | ReadTVarIOOp | WriteTVarOp | SameTVarOp | NewMVarOp | TakeMVarOp | TryTakeMVarOp | PutMVarOp | TryPutMVarOp | ReadMVarOp | TryReadMVarOp | SameMVarOp | IsEmptyMVarOp | NewIOPortrOp | ReadIOPortOp | WriteIOPortOp | SameIOPortOp | 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 | KeepAliveOp | DataToTagOp | TagToEnumOp | AddrToAnyOp | AnyToAddrOp | MkApUpd0_Op | NewBCOOp | UnpackClosureOp | ClosureSizeOp | GetApStackValOp | GetCCSOfOp | GetCurrentCCSOp | ClearCCSOp | WhereFromOp | TraceEventOp | TraceEventBinaryOp | TraceMarkerOp | SetThreadAllocationCounter | 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