{- This is a generated file (generated by genprimopcode). It is not code to actually be used. Its only purpose is to be consumed by haddock. -} ----------------------------------------------------------------------------- -- | -- Module : GHC.Prim -- -- Maintainer : ghc-devs@haskell.org -- Stability : internal -- Portability : non-portable (GHC extensions) -- -- GHC's primitive types and operations. -- Use GHC.Exts from the base package instead of importing this -- module directly. -- ----------------------------------------------------------------------------- {-# LANGUAGE Unsafe #-} {-# LANGUAGE MagicHash #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE UnboxedTuples #-} module GHC.Prim ( -- * The word size story. -- |Haskell98 specifies that signed integers (type @Int@) -- must contain at least 30 bits. GHC always implements @Int@ using the primitive type @Int\#@, whose size equals -- the @MachDeps.h@ constant @WORD\_SIZE\_IN\_BITS@. -- This is normally set based on the @config.h@ parameter -- @SIZEOF\_HSWORD@, i.e., 32 bits on 32-bit machines, 64 -- bits on 64-bit machines. However, it can also be explicitly -- set to a smaller number, e.g., 31 bits, to allow the -- possibility of using tag bits. Currently GHC itself has only -- 32-bit and 64-bit variants, but 30 or 31-bit code can be -- exported as an external core file for use in other back ends. -- -- GHC also implements a primitive unsigned integer type @Word\#@ which always has the same number of bits as @Int\#@. -- -- In addition, GHC supports families of explicit-sized integers -- and words at 8, 16, 32, and 64 bits, with the usual -- arithmetic operations, comparisons, and a range of -- conversions. The 8-bit and 16-bit sizes are always -- represented as @Int\#@ and @Word\#@, and the -- operations implemented in terms of the the primops on these -- types, with suitable range restrictions on the results (using -- the @narrow$n$Int\#@ and @narrow$n$Word\#@ families -- of primops. The 32-bit sizes are represented using @Int\#@ and @Word\#@ when @WORD\_SIZE\_IN\_BITS@ -- $\geq$ 32; otherwise, these are represented using distinct -- primitive types @Int32\#@ and @Word32\#@. These (when -- needed) have a complete set of corresponding operations; -- however, nearly all of these are implemented as external C -- functions rather than as primops. Exactly the same story -- applies to the 64-bit sizes. All of these details are hidden -- under the @PrelInt@ and @PrelWord@ modules, which use -- @\#if@-defs to invoke the appropriate types and -- operators. -- -- Word size also matters for the families of primops for -- indexing\/reading\/writing fixed-size quantities at offsets -- from an array base, address, or foreign pointer. Here, a -- slightly different approach is taken. The names of these -- primops are fixed, but their /types/ vary according to -- the value of @WORD\_SIZE\_IN\_BITS@. For example, if word -- size is at least 32 bits then an operator like -- @indexInt32Array\#@ has type @ByteArray\# -> Int\# -> Int\#@; otherwise it has type @ByteArray\# -> Int\# -> Int32\#@. This approach confines the necessary @\#if@-defs to this file; no conditional compilation is needed -- in the files that expose these primops. -- -- Finally, there are strongly deprecated primops for coercing -- between @Addr\#@, the primitive type of machine -- addresses, and @Int\#@. These are pretty bogus anyway, -- but will work on existing 32-bit and 64-bit GHC targets; they -- are completely bogus when tag bits are used in @Int\#@, -- so are not available in this case. -- * Char# -- |Operations on 31-bit characters. Char#, gtChar#, geChar#, eqChar#, neChar#, ltChar#, leChar#, ord#, -- * Int# -- |Operations on native-size integers (30+ bits). Int#, (+#), (-#), (*#), mulIntMayOflo#, quotInt#, remInt#, quotRemInt#, andI#, orI#, xorI#, notI#, negateInt#, addIntC#, subIntC#, (>#), (>=#), (==#), (/=#), (<#), (<=#), chr#, int2Word#, int2Float#, int2Double#, word2Float#, word2Double#, uncheckedIShiftL#, uncheckedIShiftRA#, uncheckedIShiftRL#, -- * Word# -- |Operations on native-sized unsigned words (30+ bits). Word#, plusWord#, plusWord2#, minusWord#, timesWord#, timesWord2#, quotWord#, remWord#, quotRemWord#, quotRemWord2#, and#, or#, xor#, not#, uncheckedShiftL#, uncheckedShiftRL#, word2Int#, gtWord#, geWord#, eqWord#, neWord#, ltWord#, leWord#, popCnt8#, popCnt16#, popCnt32#, popCnt64#, popCnt#, clz8#, clz16#, clz32#, clz64#, clz#, ctz8#, ctz16#, ctz32#, ctz64#, ctz#, byteSwap16#, byteSwap32#, byteSwap64#, byteSwap#, -- * Narrowings -- |Explicit narrowing of native-sized ints or words. narrow8Int#, narrow16Int#, narrow32Int#, narrow8Word#, narrow16Word#, narrow32Word#, -- * Double# -- |Operations on double-precision (64 bit) floating-point numbers. Double#, (>##), (>=##), (==##), (/=##), (<##), (<=##), (+##), (-##), (*##), (/##), negateDouble#, double2Int#, double2Float#, expDouble#, logDouble#, sqrtDouble#, sinDouble#, cosDouble#, tanDouble#, asinDouble#, acosDouble#, atanDouble#, sinhDouble#, coshDouble#, tanhDouble#, (**##), decodeDouble_2Int#, decodeDouble_Int64#, -- * Float# -- |Operations on single-precision (32-bit) floating-point numbers. Float#, gtFloat#, geFloat#, eqFloat#, neFloat#, ltFloat#, leFloat#, plusFloat#, minusFloat#, timesFloat#, divideFloat#, negateFloat#, float2Int#, expFloat#, logFloat#, sqrtFloat#, sinFloat#, cosFloat#, tanFloat#, asinFloat#, acosFloat#, atanFloat#, sinhFloat#, coshFloat#, tanhFloat#, powerFloat#, float2Double#, decodeFloat_Int#, -- * Arrays -- |Operations on @Array\#@. Array#, MutableArray#, newArray#, sameMutableArray#, readArray#, writeArray#, sizeofArray#, sizeofMutableArray#, indexArray#, unsafeFreezeArray#, unsafeThawArray#, copyArray#, copyMutableArray#, cloneArray#, cloneMutableArray#, freezeArray#, thawArray#, casArray#, -- * Small Arrays -- |Operations on @SmallArray\#@. A @SmallArray\#@ works -- just like an @Array\#@, but with different space use and -- performance characteristics (that are often useful with small -- arrays). The @SmallArray\#@ and @SmallMutableArray#@ -- lack a \`card table\'. The purpose of a card table is to avoid -- having to scan every element of the array on each GC by -- keeping track of which elements have changed since the last GC -- and only scanning those that have changed. So the consequence -- of there being no card table is that the representation is -- somewhat smaller and the writes are somewhat faster (because -- the card table does not need to be updated). The disadvantage -- of course is that for a @SmallMutableArray#@ the whole -- array has to be scanned on each GC. Thus it is best suited for -- use cases where the mutable array is not long lived, e.g. -- where a mutable array is initialised quickly and then frozen -- to become an immutable @SmallArray\#@. -- SmallArray#, SmallMutableArray#, newSmallArray#, sameSmallMutableArray#, readSmallArray#, writeSmallArray#, sizeofSmallArray#, sizeofSmallMutableArray#, indexSmallArray#, unsafeFreezeSmallArray#, unsafeThawSmallArray#, copySmallArray#, copySmallMutableArray#, cloneSmallArray#, cloneSmallMutableArray#, freezeSmallArray#, thawSmallArray#, casSmallArray#, -- * Byte Arrays -- |Operations on @ByteArray\#@. A @ByteArray\#@ is a just a region of -- raw memory in the garbage-collected heap, which is not -- scanned for pointers. It carries its own size (in bytes). -- There are -- three sets of operations for accessing byte array contents: -- index for reading from immutable byte arrays, and read\/write -- for mutable byte arrays. Each set contains operations for a -- range of useful primitive data types. Each operation takes -- an offset measured in terms of the size of the primitive type -- being read or written. ByteArray#, MutableByteArray#, newByteArray#, newPinnedByteArray#, newAlignedPinnedByteArray#, byteArrayContents#, sameMutableByteArray#, shrinkMutableByteArray#, resizeMutableByteArray#, unsafeFreezeByteArray#, sizeofByteArray#, sizeofMutableByteArray#, indexCharArray#, indexWideCharArray#, indexIntArray#, indexWordArray#, indexAddrArray#, indexFloatArray#, indexDoubleArray#, indexStablePtrArray#, indexInt8Array#, indexInt16Array#, indexInt32Array#, indexInt64Array#, indexWord8Array#, indexWord16Array#, indexWord32Array#, indexWord64Array#, readCharArray#, readWideCharArray#, readIntArray#, readWordArray#, readAddrArray#, readFloatArray#, readDoubleArray#, readStablePtrArray#, readInt8Array#, readInt16Array#, readInt32Array#, readInt64Array#, readWord8Array#, readWord16Array#, readWord32Array#, readWord64Array#, writeCharArray#, writeWideCharArray#, writeIntArray#, writeWordArray#, writeAddrArray#, writeFloatArray#, writeDoubleArray#, writeStablePtrArray#, writeInt8Array#, writeInt16Array#, writeInt32Array#, writeInt64Array#, writeWord8Array#, writeWord16Array#, writeWord32Array#, writeWord64Array#, copyByteArray#, copyMutableByteArray#, copyByteArrayToAddr#, copyMutableByteArrayToAddr#, copyAddrToByteArray#, setByteArray#, atomicReadIntArray#, atomicWriteIntArray#, casIntArray#, fetchAddIntArray#, fetchSubIntArray#, fetchAndIntArray#, fetchNandIntArray#, fetchOrIntArray#, fetchXorIntArray#, -- * Arrays of arrays -- |Operations on @ArrayArray\#@. An @ArrayArray\#@ contains references to {\em unpointed} -- arrays, such as @ByteArray\#s@. Hence, it is not parameterised by the element types, -- just like a @ByteArray\#@, but it needs to be scanned during GC, just like an @Array#@. -- We represent an @ArrayArray\#@ exactly as a @Array\#@, but provide element-type-specific -- indexing, reading, and writing. ArrayArray#, MutableArrayArray#, newArrayArray#, sameMutableArrayArray#, unsafeFreezeArrayArray#, sizeofArrayArray#, sizeofMutableArrayArray#, indexByteArrayArray#, indexArrayArrayArray#, readByteArrayArray#, readMutableByteArrayArray#, readArrayArrayArray#, readMutableArrayArrayArray#, writeByteArrayArray#, writeMutableByteArrayArray#, writeArrayArrayArray#, writeMutableArrayArrayArray#, copyArrayArray#, copyMutableArrayArray#, -- * Addr# -- | Addr#, nullAddr#, plusAddr#, minusAddr#, remAddr#, addr2Int#, int2Addr#, gtAddr#, geAddr#, eqAddr#, neAddr#, ltAddr#, leAddr#, indexCharOffAddr#, indexWideCharOffAddr#, indexIntOffAddr#, indexWordOffAddr#, indexAddrOffAddr#, indexFloatOffAddr#, indexDoubleOffAddr#, indexStablePtrOffAddr#, indexInt8OffAddr#, indexInt16OffAddr#, indexInt32OffAddr#, indexInt64OffAddr#, indexWord8OffAddr#, indexWord16OffAddr#, indexWord32OffAddr#, indexWord64OffAddr#, readCharOffAddr#, readWideCharOffAddr#, readIntOffAddr#, readWordOffAddr#, readAddrOffAddr#, readFloatOffAddr#, readDoubleOffAddr#, readStablePtrOffAddr#, readInt8OffAddr#, readInt16OffAddr#, readInt32OffAddr#, readInt64OffAddr#, readWord8OffAddr#, readWord16OffAddr#, readWord32OffAddr#, readWord64OffAddr#, writeCharOffAddr#, writeWideCharOffAddr#, writeIntOffAddr#, writeWordOffAddr#, writeAddrOffAddr#, writeFloatOffAddr#, writeDoubleOffAddr#, writeStablePtrOffAddr#, writeInt8OffAddr#, writeInt16OffAddr#, writeInt32OffAddr#, writeInt64OffAddr#, writeWord8OffAddr#, writeWord16OffAddr#, writeWord32OffAddr#, writeWord64OffAddr#, -- * Mutable variables -- |Operations on MutVar\#s. MutVar#, newMutVar#, readMutVar#, writeMutVar#, sameMutVar#, atomicModifyMutVar#, casMutVar#, -- * Exceptions -- | catch#, raise#, raiseIO#, maskAsyncExceptions#, maskUninterruptible#, unmaskAsyncExceptions#, getMaskingState#, -- * STM-accessible Mutable Variables -- | TVar#, atomically#, retry#, catchRetry#, catchSTM#, check#, newTVar#, readTVar#, readTVarIO#, writeTVar#, sameTVar#, -- * Synchronized Mutable Variables -- |Operations on @MVar\#@s. MVar#, newMVar#, takeMVar#, tryTakeMVar#, putMVar#, tryPutMVar#, readMVar#, tryReadMVar#, sameMVar#, isEmptyMVar#, -- * Delay\/wait operations -- | delay#, waitRead#, waitWrite#, -- * Concurrency primitives -- | State#, RealWorld, ThreadId#, fork#, forkOn#, killThread#, yield#, myThreadId#, labelThread#, isCurrentThreadBound#, noDuplicate#, threadStatus#, -- * Weak pointers -- | Weak#, mkWeak#, mkWeakNoFinalizer#, addCFinalizerToWeak#, deRefWeak#, finalizeWeak#, touch#, -- * Stable pointers and names -- | StablePtr#, StableName#, makeStablePtr#, deRefStablePtr#, eqStablePtr#, makeStableName#, eqStableName#, stableNameToInt#, -- * Unsafe pointer equality -- | reallyUnsafePtrEquality#, -- * Parallelism -- | par#, spark#, seq#, getSpark#, numSparks#, parGlobal#, parLocal#, parAt#, parAtAbs#, parAtRel#, parAtForNow#, -- * Tag to enum stuff -- |Convert back and forth between values of enumerated types -- and small integers. dataToTag#, tagToEnum#, -- * Bytecode operations -- |Support for the bytecode interpreter and linker. BCO#, addrToAny#, mkApUpd0#, newBCO#, unpackClosure#, getApStackVal#, -- * Misc -- |These aren\'t nearly as wired in as Etc... getCCSOf#, getCurrentCCS#, -- * Etc -- |Miscellaneous built-ins Proxy#, proxy#, seq, Any, AnyK, unsafeCoerce#, traceEvent#, traceMarker#, -- * Safe coercions -- | coerce, -- * SIMD Vectors -- |Operations on SIMD vectors. Int8X16#, Int16X8#, Int32X4#, Int64X2#, Int8X32#, Int16X16#, Int32X8#, Int64X4#, Int8X64#, Int16X32#, Int32X16#, Int64X8#, Word8X16#, Word16X8#, Word32X4#, Word64X2#, Word8X32#, Word16X16#, Word32X8#, Word64X4#, Word8X64#, Word16X32#, Word32X16#, Word64X8#, FloatX4#, DoubleX2#, FloatX8#, DoubleX4#, FloatX16#, DoubleX8#, broadcastInt8X16#, broadcastInt16X8#, broadcastInt32X4#, broadcastInt64X2#, broadcastInt8X32#, broadcastInt16X16#, broadcastInt32X8#, broadcastInt64X4#, broadcastInt8X64#, broadcastInt16X32#, broadcastInt32X16#, broadcastInt64X8#, broadcastWord8X16#, broadcastWord16X8#, broadcastWord32X4#, broadcastWord64X2#, broadcastWord8X32#, broadcastWord16X16#, broadcastWord32X8#, broadcastWord64X4#, broadcastWord8X64#, broadcastWord16X32#, broadcastWord32X16#, broadcastWord64X8#, broadcastFloatX4#, broadcastDoubleX2#, broadcastFloatX8#, broadcastDoubleX4#, broadcastFloatX16#, broadcastDoubleX8#, packInt8X16#, packInt16X8#, packInt32X4#, packInt64X2#, packInt8X32#, packInt16X16#, packInt32X8#, packInt64X4#, packInt8X64#, packInt16X32#, packInt32X16#, packInt64X8#, packWord8X16#, packWord16X8#, packWord32X4#, packWord64X2#, packWord8X32#, packWord16X16#, packWord32X8#, packWord64X4#, packWord8X64#, packWord16X32#, packWord32X16#, packWord64X8#, packFloatX4#, packDoubleX2#, packFloatX8#, packDoubleX4#, packFloatX16#, packDoubleX8#, unpackInt8X16#, unpackInt16X8#, unpackInt32X4#, unpackInt64X2#, unpackInt8X32#, unpackInt16X16#, unpackInt32X8#, unpackInt64X4#, unpackInt8X64#, unpackInt16X32#, unpackInt32X16#, unpackInt64X8#, unpackWord8X16#, unpackWord16X8#, unpackWord32X4#, unpackWord64X2#, unpackWord8X32#, unpackWord16X16#, unpackWord32X8#, unpackWord64X4#, unpackWord8X64#, unpackWord16X32#, unpackWord32X16#, unpackWord64X8#, unpackFloatX4#, unpackDoubleX2#, unpackFloatX8#, unpackDoubleX4#, unpackFloatX16#, unpackDoubleX8#, insertInt8X16#, insertInt16X8#, insertInt32X4#, insertInt64X2#, insertInt8X32#, insertInt16X16#, insertInt32X8#, insertInt64X4#, insertInt8X64#, insertInt16X32#, insertInt32X16#, insertInt64X8#, insertWord8X16#, insertWord16X8#, insertWord32X4#, insertWord64X2#, insertWord8X32#, insertWord16X16#, insertWord32X8#, insertWord64X4#, insertWord8X64#, insertWord16X32#, insertWord32X16#, insertWord64X8#, insertFloatX4#, insertDoubleX2#, insertFloatX8#, insertDoubleX4#, insertFloatX16#, insertDoubleX8#, plusInt8X16#, plusInt16X8#, plusInt32X4#, plusInt64X2#, plusInt8X32#, plusInt16X16#, plusInt32X8#, plusInt64X4#, plusInt8X64#, plusInt16X32#, plusInt32X16#, plusInt64X8#, plusWord8X16#, plusWord16X8#, plusWord32X4#, plusWord64X2#, plusWord8X32#, plusWord16X16#, plusWord32X8#, plusWord64X4#, plusWord8X64#, plusWord16X32#, plusWord32X16#, plusWord64X8#, plusFloatX4#, plusDoubleX2#, plusFloatX8#, plusDoubleX4#, plusFloatX16#, plusDoubleX8#, minusInt8X16#, minusInt16X8#, minusInt32X4#, minusInt64X2#, minusInt8X32#, minusInt16X16#, minusInt32X8#, minusInt64X4#, minusInt8X64#, minusInt16X32#, minusInt32X16#, minusInt64X8#, minusWord8X16#, minusWord16X8#, minusWord32X4#, minusWord64X2#, minusWord8X32#, minusWord16X16#, minusWord32X8#, minusWord64X4#, minusWord8X64#, minusWord16X32#, minusWord32X16#, minusWord64X8#, minusFloatX4#, minusDoubleX2#, minusFloatX8#, minusDoubleX4#, minusFloatX16#, minusDoubleX8#, timesInt8X16#, timesInt16X8#, timesInt32X4#, timesInt64X2#, timesInt8X32#, timesInt16X16#, timesInt32X8#, timesInt64X4#, timesInt8X64#, timesInt16X32#, timesInt32X16#, timesInt64X8#, timesWord8X16#, timesWord16X8#, timesWord32X4#, timesWord64X2#, timesWord8X32#, timesWord16X16#, timesWord32X8#, timesWord64X4#, timesWord8X64#, timesWord16X32#, timesWord32X16#, timesWord64X8#, timesFloatX4#, timesDoubleX2#, timesFloatX8#, timesDoubleX4#, timesFloatX16#, timesDoubleX8#, divideFloatX4#, divideDoubleX2#, divideFloatX8#, divideDoubleX4#, divideFloatX16#, divideDoubleX8#, quotInt8X16#, quotInt16X8#, quotInt32X4#, quotInt64X2#, quotInt8X32#, quotInt16X16#, quotInt32X8#, quotInt64X4#, quotInt8X64#, quotInt16X32#, quotInt32X16#, quotInt64X8#, quotWord8X16#, quotWord16X8#, quotWord32X4#, quotWord64X2#, quotWord8X32#, quotWord16X16#, quotWord32X8#, quotWord64X4#, quotWord8X64#, quotWord16X32#, quotWord32X16#, quotWord64X8#, remInt8X16#, remInt16X8#, remInt32X4#, remInt64X2#, remInt8X32#, remInt16X16#, remInt32X8#, remInt64X4#, remInt8X64#, remInt16X32#, remInt32X16#, remInt64X8#, remWord8X16#, remWord16X8#, remWord32X4#, remWord64X2#, remWord8X32#, remWord16X16#, remWord32X8#, remWord64X4#, remWord8X64#, remWord16X32#, remWord32X16#, remWord64X8#, negateInt8X16#, negateInt16X8#, negateInt32X4#, negateInt64X2#, negateInt8X32#, negateInt16X16#, negateInt32X8#, negateInt64X4#, negateInt8X64#, negateInt16X32#, negateInt32X16#, negateInt64X8#, negateFloatX4#, negateDoubleX2#, negateFloatX8#, negateDoubleX4#, negateFloatX16#, negateDoubleX8#, indexInt8X16Array#, indexInt16X8Array#, indexInt32X4Array#, indexInt64X2Array#, indexInt8X32Array#, indexInt16X16Array#, indexInt32X8Array#, indexInt64X4Array#, indexInt8X64Array#, indexInt16X32Array#, indexInt32X16Array#, indexInt64X8Array#, indexWord8X16Array#, indexWord16X8Array#, indexWord32X4Array#, indexWord64X2Array#, indexWord8X32Array#, indexWord16X16Array#, indexWord32X8Array#, indexWord64X4Array#, indexWord8X64Array#, indexWord16X32Array#, indexWord32X16Array#, indexWord64X8Array#, indexFloatX4Array#, indexDoubleX2Array#, indexFloatX8Array#, indexDoubleX4Array#, indexFloatX16Array#, indexDoubleX8Array#, readInt8X16Array#, readInt16X8Array#, readInt32X4Array#, readInt64X2Array#, readInt8X32Array#, readInt16X16Array#, readInt32X8Array#, readInt64X4Array#, readInt8X64Array#, readInt16X32Array#, readInt32X16Array#, readInt64X8Array#, readWord8X16Array#, readWord16X8Array#, readWord32X4Array#, readWord64X2Array#, readWord8X32Array#, readWord16X16Array#, readWord32X8Array#, readWord64X4Array#, readWord8X64Array#, readWord16X32Array#, readWord32X16Array#, readWord64X8Array#, readFloatX4Array#, readDoubleX2Array#, readFloatX8Array#, readDoubleX4Array#, readFloatX16Array#, readDoubleX8Array#, writeInt8X16Array#, writeInt16X8Array#, writeInt32X4Array#, writeInt64X2Array#, writeInt8X32Array#, writeInt16X16Array#, writeInt32X8Array#, writeInt64X4Array#, writeInt8X64Array#, writeInt16X32Array#, writeInt32X16Array#, writeInt64X8Array#, writeWord8X16Array#, writeWord16X8Array#, writeWord32X4Array#, writeWord64X2Array#, writeWord8X32Array#, writeWord16X16Array#, writeWord32X8Array#, writeWord64X4Array#, writeWord8X64Array#, writeWord16X32Array#, writeWord32X16Array#, writeWord64X8Array#, writeFloatX4Array#, writeDoubleX2Array#, writeFloatX8Array#, writeDoubleX4Array#, writeFloatX16Array#, writeDoubleX8Array#, indexInt8X16OffAddr#, indexInt16X8OffAddr#, indexInt32X4OffAddr#, indexInt64X2OffAddr#, indexInt8X32OffAddr#, indexInt16X16OffAddr#, indexInt32X8OffAddr#, indexInt64X4OffAddr#, indexInt8X64OffAddr#, indexInt16X32OffAddr#, indexInt32X16OffAddr#, indexInt64X8OffAddr#, indexWord8X16OffAddr#, indexWord16X8OffAddr#, indexWord32X4OffAddr#, indexWord64X2OffAddr#, indexWord8X32OffAddr#, indexWord16X16OffAddr#, indexWord32X8OffAddr#, indexWord64X4OffAddr#, indexWord8X64OffAddr#, indexWord16X32OffAddr#, indexWord32X16OffAddr#, indexWord64X8OffAddr#, indexFloatX4OffAddr#, indexDoubleX2OffAddr#, indexFloatX8OffAddr#, indexDoubleX4OffAddr#, indexFloatX16OffAddr#, indexDoubleX8OffAddr#, readInt8X16OffAddr#, readInt16X8OffAddr#, readInt32X4OffAddr#, readInt64X2OffAddr#, readInt8X32OffAddr#, readInt16X16OffAddr#, readInt32X8OffAddr#, readInt64X4OffAddr#, readInt8X64OffAddr#, readInt16X32OffAddr#, readInt32X16OffAddr#, readInt64X8OffAddr#, readWord8X16OffAddr#, readWord16X8OffAddr#, readWord32X4OffAddr#, readWord64X2OffAddr#, readWord8X32OffAddr#, readWord16X16OffAddr#, readWord32X8OffAddr#, readWord64X4OffAddr#, readWord8X64OffAddr#, readWord16X32OffAddr#, readWord32X16OffAddr#, readWord64X8OffAddr#, readFloatX4OffAddr#, readDoubleX2OffAddr#, readFloatX8OffAddr#, readDoubleX4OffAddr#, readFloatX16OffAddr#, readDoubleX8OffAddr#, writeInt8X16OffAddr#, writeInt16X8OffAddr#, writeInt32X4OffAddr#, writeInt64X2OffAddr#, writeInt8X32OffAddr#, writeInt16X16OffAddr#, writeInt32X8OffAddr#, writeInt64X4OffAddr#, writeInt8X64OffAddr#, writeInt16X32OffAddr#, writeInt32X16OffAddr#, writeInt64X8OffAddr#, writeWord8X16OffAddr#, writeWord16X8OffAddr#, writeWord32X4OffAddr#, writeWord64X2OffAddr#, writeWord8X32OffAddr#, writeWord16X16OffAddr#, writeWord32X8OffAddr#, writeWord64X4OffAddr#, writeWord8X64OffAddr#, writeWord16X32OffAddr#, writeWord32X16OffAddr#, writeWord64X8OffAddr#, writeFloatX4OffAddr#, writeDoubleX2OffAddr#, writeFloatX8OffAddr#, writeDoubleX4OffAddr#, writeFloatX16OffAddr#, writeDoubleX8OffAddr#, indexInt8ArrayAsInt8X16#, indexInt16ArrayAsInt16X8#, indexInt32ArrayAsInt32X4#, indexInt64ArrayAsInt64X2#, indexInt8ArrayAsInt8X32#, indexInt16ArrayAsInt16X16#, indexInt32ArrayAsInt32X8#, indexInt64ArrayAsInt64X4#, indexInt8ArrayAsInt8X64#, indexInt16ArrayAsInt16X32#, indexInt32ArrayAsInt32X16#, indexInt64ArrayAsInt64X8#, indexWord8ArrayAsWord8X16#, indexWord16ArrayAsWord16X8#, indexWord32ArrayAsWord32X4#, indexWord64ArrayAsWord64X2#, indexWord8ArrayAsWord8X32#, indexWord16ArrayAsWord16X16#, indexWord32ArrayAsWord32X8#, indexWord64ArrayAsWord64X4#, indexWord8ArrayAsWord8X64#, indexWord16ArrayAsWord16X32#, indexWord32ArrayAsWord32X16#, indexWord64ArrayAsWord64X8#, indexFloatArrayAsFloatX4#, indexDoubleArrayAsDoubleX2#, indexFloatArrayAsFloatX8#, indexDoubleArrayAsDoubleX4#, indexFloatArrayAsFloatX16#, indexDoubleArrayAsDoubleX8#, readInt8ArrayAsInt8X16#, readInt16ArrayAsInt16X8#, readInt32ArrayAsInt32X4#, readInt64ArrayAsInt64X2#, readInt8ArrayAsInt8X32#, readInt16ArrayAsInt16X16#, readInt32ArrayAsInt32X8#, readInt64ArrayAsInt64X4#, readInt8ArrayAsInt8X64#, readInt16ArrayAsInt16X32#, readInt32ArrayAsInt32X16#, readInt64ArrayAsInt64X8#, readWord8ArrayAsWord8X16#, readWord16ArrayAsWord16X8#, readWord32ArrayAsWord32X4#, readWord64ArrayAsWord64X2#, readWord8ArrayAsWord8X32#, readWord16ArrayAsWord16X16#, readWord32ArrayAsWord32X8#, readWord64ArrayAsWord64X4#, readWord8ArrayAsWord8X64#, readWord16ArrayAsWord16X32#, readWord32ArrayAsWord32X16#, readWord64ArrayAsWord64X8#, readFloatArrayAsFloatX4#, readDoubleArrayAsDoubleX2#, readFloatArrayAsFloatX8#, readDoubleArrayAsDoubleX4#, readFloatArrayAsFloatX16#, readDoubleArrayAsDoubleX8#, writeInt8ArrayAsInt8X16#, writeInt16ArrayAsInt16X8#, writeInt32ArrayAsInt32X4#, writeInt64ArrayAsInt64X2#, writeInt8ArrayAsInt8X32#, writeInt16ArrayAsInt16X16#, writeInt32ArrayAsInt32X8#, writeInt64ArrayAsInt64X4#, writeInt8ArrayAsInt8X64#, writeInt16ArrayAsInt16X32#, writeInt32ArrayAsInt32X16#, writeInt64ArrayAsInt64X8#, writeWord8ArrayAsWord8X16#, writeWord16ArrayAsWord16X8#, writeWord32ArrayAsWord32X4#, writeWord64ArrayAsWord64X2#, writeWord8ArrayAsWord8X32#, writeWord16ArrayAsWord16X16#, writeWord32ArrayAsWord32X8#, writeWord64ArrayAsWord64X4#, writeWord8ArrayAsWord8X64#, writeWord16ArrayAsWord16X32#, writeWord32ArrayAsWord32X16#, writeWord64ArrayAsWord64X8#, writeFloatArrayAsFloatX4#, writeDoubleArrayAsDoubleX2#, writeFloatArrayAsFloatX8#, writeDoubleArrayAsDoubleX4#, writeFloatArrayAsFloatX16#, writeDoubleArrayAsDoubleX8#, indexInt8OffAddrAsInt8X16#, indexInt16OffAddrAsInt16X8#, indexInt32OffAddrAsInt32X4#, indexInt64OffAddrAsInt64X2#, indexInt8OffAddrAsInt8X32#, indexInt16OffAddrAsInt16X16#, indexInt32OffAddrAsInt32X8#, indexInt64OffAddrAsInt64X4#, indexInt8OffAddrAsInt8X64#, indexInt16OffAddrAsInt16X32#, indexInt32OffAddrAsInt32X16#, indexInt64OffAddrAsInt64X8#, indexWord8OffAddrAsWord8X16#, indexWord16OffAddrAsWord16X8#, indexWord32OffAddrAsWord32X4#, indexWord64OffAddrAsWord64X2#, indexWord8OffAddrAsWord8X32#, indexWord16OffAddrAsWord16X16#, indexWord32OffAddrAsWord32X8#, indexWord64OffAddrAsWord64X4#, indexWord8OffAddrAsWord8X64#, indexWord16OffAddrAsWord16X32#, indexWord32OffAddrAsWord32X16#, indexWord64OffAddrAsWord64X8#, indexFloatOffAddrAsFloatX4#, indexDoubleOffAddrAsDoubleX2#, indexFloatOffAddrAsFloatX8#, indexDoubleOffAddrAsDoubleX4#, indexFloatOffAddrAsFloatX16#, indexDoubleOffAddrAsDoubleX8#, readInt8OffAddrAsInt8X16#, readInt16OffAddrAsInt16X8#, readInt32OffAddrAsInt32X4#, readInt64OffAddrAsInt64X2#, readInt8OffAddrAsInt8X32#, readInt16OffAddrAsInt16X16#, readInt32OffAddrAsInt32X8#, readInt64OffAddrAsInt64X4#, readInt8OffAddrAsInt8X64#, readInt16OffAddrAsInt16X32#, readInt32OffAddrAsInt32X16#, readInt64OffAddrAsInt64X8#, readWord8OffAddrAsWord8X16#, readWord16OffAddrAsWord16X8#, readWord32OffAddrAsWord32X4#, readWord64OffAddrAsWord64X2#, readWord8OffAddrAsWord8X32#, readWord16OffAddrAsWord16X16#, readWord32OffAddrAsWord32X8#, readWord64OffAddrAsWord64X4#, readWord8OffAddrAsWord8X64#, readWord16OffAddrAsWord16X32#, readWord32OffAddrAsWord32X16#, readWord64OffAddrAsWord64X8#, readFloatOffAddrAsFloatX4#, readDoubleOffAddrAsDoubleX2#, readFloatOffAddrAsFloatX8#, readDoubleOffAddrAsDoubleX4#, readFloatOffAddrAsFloatX16#, readDoubleOffAddrAsDoubleX8#, writeInt8OffAddrAsInt8X16#, writeInt16OffAddrAsInt16X8#, writeInt32OffAddrAsInt32X4#, writeInt64OffAddrAsInt64X2#, writeInt8OffAddrAsInt8X32#, writeInt16OffAddrAsInt16X16#, writeInt32OffAddrAsInt32X8#, writeInt64OffAddrAsInt64X4#, writeInt8OffAddrAsInt8X64#, writeInt16OffAddrAsInt16X32#, writeInt32OffAddrAsInt32X16#, writeInt64OffAddrAsInt64X8#, writeWord8OffAddrAsWord8X16#, writeWord16OffAddrAsWord16X8#, writeWord32OffAddrAsWord32X4#, writeWord64OffAddrAsWord64X2#, writeWord8OffAddrAsWord8X32#, writeWord16OffAddrAsWord16X16#, writeWord32OffAddrAsWord32X8#, writeWord64OffAddrAsWord64X4#, writeWord8OffAddrAsWord8X64#, writeWord16OffAddrAsWord16X32#, writeWord32OffAddrAsWord32X16#, writeWord64OffAddrAsWord64X8#, writeFloatOffAddrAsFloatX4#, writeDoubleOffAddrAsDoubleX2#, writeFloatOffAddrAsFloatX8#, writeDoubleOffAddrAsDoubleX4#, writeFloatOffAddrAsFloatX16#, writeDoubleOffAddrAsDoubleX8#, -- * Prefetch -- |Prefetch operations: Note how every prefetch operation has a name -- with the pattern prefetch*N#, where N is either 0,1,2, or 3. -- -- This suffix number, N, is the \"locality level\" of the prefetch, following the -- convention in GCC and other compilers. -- Higher locality numbers correspond to the memory being loaded in more -- levels of the cpu cache, and being retained after initial use. The naming -- convention follows the naming convention of the prefetch intrinsic found -- in the GCC and Clang C compilers. -- -- On the LLVM backend, prefetch*N# uses the LLVM prefetch intrinsic -- with locality level N. The code generated by LLVM is target architecture -- dependent, but should agree with the GHC NCG on x86 systems. -- -- On the Sparc and PPC native backends, prefetch*N is a No-Op. -- -- On the x86 NCG, N=0 will generate prefetchNTA, -- N=1 generates prefetcht2, N=2 generates prefetcht1, and -- N=3 generates prefetcht0. -- -- For streaming workloads, the prefetch*0 operations are recommended. -- For workloads which do many reads or writes to a memory location in a short period of time, -- prefetch*3 operations are recommended. -- -- For further reading about prefetch and associated systems performance optimization, -- the instruction set and optimization manuals by Intel and other CPU vendors are -- excellent starting place. -- -- -- The \"Intel 64 and IA-32 Architectures Optimization Reference Manual\" is -- especially a helpful read, even if your software is meant for other CPU -- architectures or vendor hardware. The manual can be found at -- http:\/\/www.intel.com\/content\/www\/us\/en\/architecture-and-technology\/64-ia-32-architectures-optimization-manual.html . -- -- The @prefetch*@ family of operations has the order of operations -- determined by passing around the @State#@ token. -- -- To get a \"pure\" version of these operations, use @inlinePerformIO@ which is quite safe in this context. -- -- It is important to note that while the prefetch operations will never change the -- answer to a pure computation, They CAN change the memory locations resident -- in a CPU cache and that may change the performance and timing characteristics -- of an application. The prefetch operations are marked has_side_effects=True -- to reflect that these operations have side effects with respect to the runtime -- performance characteristics of the resulting code. Additionally, if the prefetchValue -- operations did not have this attribute, GHC does a float out transformation that -- results in a let\/app violation, at least with the current design. -- prefetchByteArray3#, prefetchMutableByteArray3#, prefetchAddr3#, prefetchValue3#, prefetchByteArray2#, prefetchMutableByteArray2#, prefetchAddr2#, prefetchValue2#, prefetchByteArray1#, prefetchMutableByteArray1#, prefetchAddr1#, prefetchValue1#, prefetchByteArray0#, prefetchMutableByteArray0#, prefetchAddr0#, prefetchValue0#, ) where {- has_side_effects = False out_of_line = False can_fail = False commutable = False code_size = { primOpCodeSizeDefault } strictness = { \ arity -> mkClosedStrictSig (replicate arity topDmd) topRes } fixity = Nothing llvm_only = False -} import GHC.Types (Coercible) data Char# gtChar# :: Char# -> Char# -> Int# gtChar# = let x = x in x geChar# :: Char# -> Char# -> Int# geChar# = let x = x in x eqChar# :: Char# -> Char# -> Int# eqChar# = let x = x in x neChar# :: Char# -> Char# -> Int# neChar# = let x = x in x ltChar# :: Char# -> Char# -> Int# ltChar# = let x = x in x leChar# :: Char# -> Char# -> Int# leChar# = let x = x in x ord# :: Char# -> Int# ord# = let x = x in x data Int# infixl 6 +# (+#) :: Int# -> Int# -> Int# (+#) = let x = x in x infixl 6 -# (-#) :: Int# -> Int# -> Int# (-#) = let x = x in x -- |Low word of signed integer multiply. infixl 7 *# (*#) :: Int# -> Int# -> Int# (*#) = let x = x in x -- |Return non-zero if there is any possibility that the upper word of a -- signed integer multiply might contain useful information. Return -- zero only if you are completely sure that no overflow can occur. -- On a 32-bit platform, the recommmended implementation is to do a -- 32 x 32 -> 64 signed multiply, and subtract result[63:32] from -- (result[31] >>signed 31). If this is zero, meaning that the -- upper word is merely a sign extension of the lower one, no -- overflow can occur. -- -- On a 64-bit platform it is not always possible to -- acquire the top 64 bits of the result. Therefore, a recommended -- implementation is to take the absolute value of both operands, and -- return 0 iff bits[63:31] of them are zero, since that means that their -- magnitudes fit within 31 bits, so the magnitude of the product must fit -- into 62 bits. -- -- If in doubt, return non-zero, but do make an effort to create the -- correct answer for small args, since otherwise the performance of -- @(*) :: Integer -> Integer -> Integer@ will be poor. -- mulIntMayOflo# :: Int# -> Int# -> Int# mulIntMayOflo# = let x = x in x -- |Rounds towards zero. quotInt# :: Int# -> Int# -> Int# quotInt# = let x = x in x -- |Satisfies @(quotInt\# x y) *\# y +\# (remInt\# x y) == x@. remInt# :: Int# -> Int# -> Int# remInt# = let x = x in x -- |Rounds towards zero. quotRemInt# :: Int# -> Int# -> (# Int#,Int# #) quotRemInt# = let x = x in x andI# :: Int# -> Int# -> Int# andI# = let x = x in x orI# :: Int# -> Int# -> Int# orI# = let x = x in x xorI# :: Int# -> Int# -> Int# xorI# = let x = x in x notI# :: Int# -> Int# notI# = let x = x in x negateInt# :: Int# -> Int# negateInt# = let x = x in x -- |Add signed integers reporting overflow. -- First member of result is the sum truncated to an @Int#@; -- second member is zero if the true sum fits in an @Int#@, -- nonzero if overflow occurred (the sum is either too large -- or too small to fit in an @Int#@). addIntC# :: Int# -> Int# -> (# Int#,Int# #) addIntC# = let x = x in x -- |Subtract signed integers reporting overflow. -- First member of result is the difference truncated to an @Int#@; -- second member is zero if the true difference fits in an @Int#@, -- nonzero if overflow occurred (the difference is either too large -- or too small to fit in an @Int#@). subIntC# :: Int# -> Int# -> (# Int#,Int# #) subIntC# = let x = x in x infix 4 ># (>#) :: Int# -> Int# -> Int# (>#) = let x = x in x infix 4 >=# (>=#) :: Int# -> Int# -> Int# (>=#) = let x = x in x infix 4 ==# (==#) :: Int# -> Int# -> Int# (==#) = let x = x in x infix 4 /=# (/=#) :: Int# -> Int# -> Int# (/=#) = let x = x in x infix 4 <# (<#) :: Int# -> Int# -> Int# (<#) = let x = x in x infix 4 <=# (<=#) :: Int# -> Int# -> Int# (<=#) = let x = x in x chr# :: Int# -> Char# chr# = let x = x in x int2Word# :: Int# -> Word# int2Word# = let x = x in x int2Float# :: Int# -> Float# int2Float# = let x = x in x int2Double# :: Int# -> Double# int2Double# = let x = x in x word2Float# :: Word# -> Float# word2Float# = let x = x in x word2Double# :: Word# -> Double# word2Double# = let x = x in x -- |Shift left. Result undefined if shift amount is not -- in the range 0 to word size - 1 inclusive. uncheckedIShiftL# :: Int# -> Int# -> Int# uncheckedIShiftL# = let x = x in x -- |Shift right arithmetic. Result undefined if shift amount is not -- in the range 0 to word size - 1 inclusive. uncheckedIShiftRA# :: Int# -> Int# -> Int# uncheckedIShiftRA# = let x = x in x -- |Shift right logical. Result undefined if shift amount is not -- in the range 0 to word size - 1 inclusive. uncheckedIShiftRL# :: Int# -> Int# -> Int# uncheckedIShiftRL# = let x = x in x data Word# plusWord# :: Word# -> Word# -> Word# plusWord# = let x = x in x plusWord2# :: Word# -> Word# -> (# Word#,Word# #) plusWord2# = let x = x in x minusWord# :: Word# -> Word# -> Word# minusWord# = let x = x in x timesWord# :: Word# -> Word# -> Word# timesWord# = let x = x in x timesWord2# :: Word# -> Word# -> (# Word#,Word# #) timesWord2# = let x = x in x quotWord# :: Word# -> Word# -> Word# quotWord# = let x = x in x remWord# :: Word# -> Word# -> Word# remWord# = let x = x in x quotRemWord# :: Word# -> Word# -> (# Word#,Word# #) quotRemWord# = let x = x in x quotRemWord2# :: Word# -> Word# -> Word# -> (# Word#,Word# #) quotRemWord2# = let x = x in x and# :: Word# -> Word# -> Word# and# = let x = x in x or# :: Word# -> Word# -> Word# or# = let x = x in x xor# :: Word# -> Word# -> Word# xor# = let x = x in x not# :: Word# -> Word# not# = let x = x in x -- |Shift left logical. Result undefined if shift amount is not -- in the range 0 to word size - 1 inclusive. uncheckedShiftL# :: Word# -> Int# -> Word# uncheckedShiftL# = let x = x in x -- |Shift right logical. Result undefined if shift amount is not -- in the range 0 to word size - 1 inclusive. uncheckedShiftRL# :: Word# -> Int# -> Word# uncheckedShiftRL# = let x = x in x word2Int# :: Word# -> Int# word2Int# = let x = x in x gtWord# :: Word# -> Word# -> Int# gtWord# = let x = x in x geWord# :: Word# -> Word# -> Int# geWord# = let x = x in x eqWord# :: Word# -> Word# -> Int# eqWord# = let x = x in x neWord# :: Word# -> Word# -> Int# neWord# = let x = x in x ltWord# :: Word# -> Word# -> Int# ltWord# = let x = x in x leWord# :: Word# -> Word# -> Int# leWord# = let x = x in x -- |Count the number of set bits in the lower 8 bits of a word. popCnt8# :: Word# -> Word# popCnt8# = let x = x in x -- |Count the number of set bits in the lower 16 bits of a word. popCnt16# :: Word# -> Word# popCnt16# = let x = x in x -- |Count the number of set bits in the lower 32 bits of a word. popCnt32# :: Word# -> Word# popCnt32# = let x = x in x -- |Count the number of set bits in a 64-bit word. popCnt64# :: Word# -> Word# popCnt64# = let x = x in x -- |Count the number of set bits in a word. popCnt# :: Word# -> Word# popCnt# = let x = x in x -- |Count leading zeros in the lower 8 bits of a word. clz8# :: Word# -> Word# clz8# = let x = x in x -- |Count leading zeros in the lower 16 bits of a word. clz16# :: Word# -> Word# clz16# = let x = x in x -- |Count leading zeros in the lower 32 bits of a word. clz32# :: Word# -> Word# clz32# = let x = x in x -- |Count leading zeros in a 64-bit word. clz64# :: Word# -> Word# clz64# = let x = x in x -- |Count leading zeros in a word. clz# :: Word# -> Word# clz# = let x = x in x -- |Count trailing zeros in the lower 8 bits of a word. ctz8# :: Word# -> Word# ctz8# = let x = x in x -- |Count trailing zeros in the lower 16 bits of a word. ctz16# :: Word# -> Word# ctz16# = let x = x in x -- |Count trailing zeros in the lower 32 bits of a word. ctz32# :: Word# -> Word# ctz32# = let x = x in x -- |Count trailing zeros in a 64-bit word. ctz64# :: Word# -> Word# ctz64# = let x = x in x -- |Count trailing zeros in a word. ctz# :: Word# -> Word# ctz# = let x = x in x -- |Swap bytes in the lower 16 bits of a word. The higher bytes are undefined. byteSwap16# :: Word# -> Word# byteSwap16# = let x = x in x -- |Swap bytes in the lower 32 bits of a word. The higher bytes are undefined. byteSwap32# :: Word# -> Word# byteSwap32# = let x = x in x -- |Swap bytes in a 64 bits of a word. byteSwap64# :: Word# -> Word# byteSwap64# = let x = x in x -- |Swap bytes in a word. byteSwap# :: Word# -> Word# byteSwap# = let x = x in x narrow8Int# :: Int# -> Int# narrow8Int# = let x = x in x narrow16Int# :: Int# -> Int# narrow16Int# = let x = x in x narrow32Int# :: Int# -> Int# narrow32Int# = let x = x in x narrow8Word# :: Word# -> Word# narrow8Word# = let x = x in x narrow16Word# :: Word# -> Word# narrow16Word# = let x = x in x narrow32Word# :: Word# -> Word# narrow32Word# = let x = x in x data Double# infix 4 >## (>##) :: Double# -> Double# -> Int# (>##) = let x = x in x infix 4 >=## (>=##) :: Double# -> Double# -> Int# (>=##) = let x = x in x infix 4 ==## (==##) :: Double# -> Double# -> Int# (==##) = let x = x in x infix 4 /=## (/=##) :: Double# -> Double# -> Int# (/=##) = let x = x in x infix 4 <## (<##) :: Double# -> Double# -> Int# (<##) = let x = x in x infix 4 <=## (<=##) :: Double# -> Double# -> Int# (<=##) = let x = x in x infixl 6 +## (+##) :: Double# -> Double# -> Double# (+##) = let x = x in x infixl 6 -## (-##) :: Double# -> Double# -> Double# (-##) = let x = x in x infixl 7 *## (*##) :: Double# -> Double# -> Double# (*##) = let x = x in x infixl 7 /## (/##) :: Double# -> Double# -> Double# (/##) = let x = x in x negateDouble# :: Double# -> Double# negateDouble# = let x = x in x -- |Truncates a @Double#@ value to the nearest @Int#@. -- Results are undefined if the truncation if truncation yields -- a value outside the range of @Int#@. double2Int# :: Double# -> Int# double2Int# = let x = x in x double2Float# :: Double# -> Float# double2Float# = let x = x in x expDouble# :: Double# -> Double# expDouble# = let x = x in x logDouble# :: Double# -> Double# logDouble# = let x = x in x sqrtDouble# :: Double# -> Double# sqrtDouble# = let x = x in x sinDouble# :: Double# -> Double# sinDouble# = let x = x in x cosDouble# :: Double# -> Double# cosDouble# = let x = x in x tanDouble# :: Double# -> Double# tanDouble# = let x = x in x asinDouble# :: Double# -> Double# asinDouble# = let x = x in x acosDouble# :: Double# -> Double# acosDouble# = let x = x in x atanDouble# :: Double# -> Double# atanDouble# = let x = x in x sinhDouble# :: Double# -> Double# sinhDouble# = let x = x in x coshDouble# :: Double# -> Double# coshDouble# = let x = x in x tanhDouble# :: Double# -> Double# tanhDouble# = let x = x in x -- |Exponentiation. (**##) :: Double# -> Double# -> Double# (**##) = let x = x in x -- |Convert to integer. -- First component of the result is -1 or 1, indicating the sign of the -- mantissa. The next two are the high and low 32 bits of the mantissa -- respectively, and the last is the exponent. decodeDouble_2Int# :: Double# -> (# Int#,Word#,Word#,Int# #) decodeDouble_2Int# = let x = x in x -- |Decode @Double\#@ into mantissa and base-2 exponent. decodeDouble_Int64# :: Double# -> (# Int#,Int# #) decodeDouble_Int64# = let x = x in x data Float# gtFloat# :: Float# -> Float# -> Int# gtFloat# = let x = x in x geFloat# :: Float# -> Float# -> Int# geFloat# = let x = x in x eqFloat# :: Float# -> Float# -> Int# eqFloat# = let x = x in x neFloat# :: Float# -> Float# -> Int# neFloat# = let x = x in x ltFloat# :: Float# -> Float# -> Int# ltFloat# = let x = x in x leFloat# :: Float# -> Float# -> Int# leFloat# = let x = x in x plusFloat# :: Float# -> Float# -> Float# plusFloat# = let x = x in x minusFloat# :: Float# -> Float# -> Float# minusFloat# = let x = x in x timesFloat# :: Float# -> Float# -> Float# timesFloat# = let x = x in x divideFloat# :: Float# -> Float# -> Float# divideFloat# = let x = x in x negateFloat# :: Float# -> Float# negateFloat# = let x = x in x -- |Truncates a @Float#@ value to the nearest @Int#@. -- Results are undefined if the truncation if truncation yields -- a value outside the range of @Int#@. float2Int# :: Float# -> Int# float2Int# = let x = x in x expFloat# :: Float# -> Float# expFloat# = let x = x in x logFloat# :: Float# -> Float# logFloat# = let x = x in x sqrtFloat# :: Float# -> Float# sqrtFloat# = let x = x in x sinFloat# :: Float# -> Float# sinFloat# = let x = x in x cosFloat# :: Float# -> Float# cosFloat# = let x = x in x tanFloat# :: Float# -> Float# tanFloat# = let x = x in x asinFloat# :: Float# -> Float# asinFloat# = let x = x in x acosFloat# :: Float# -> Float# acosFloat# = let x = x in x atanFloat# :: Float# -> Float# atanFloat# = let x = x in x sinhFloat# :: Float# -> Float# sinhFloat# = let x = x in x coshFloat# :: Float# -> Float# coshFloat# = let x = x in x tanhFloat# :: Float# -> Float# tanhFloat# = let x = x in x powerFloat# :: Float# -> Float# -> Float# powerFloat# = let x = x in x float2Double# :: Float# -> Double# float2Double# = let x = x in x -- |Convert to integers. -- First @Int\#@ in result is the mantissa; second is the exponent. decodeFloat_Int# :: Float# -> (# Int#,Int# #) decodeFloat_Int# = let x = x in x data Array# a data MutableArray# s a -- |Create a new mutable array with the specified number of elements, -- in the specified state thread, -- with each element containing the specified initial value. newArray# :: Int# -> a -> State# s -> (# State# s,MutableArray# s a #) newArray# = let x = x in x sameMutableArray# :: MutableArray# s a -> MutableArray# s a -> Int# sameMutableArray# = let x = x in x -- |Read from specified index of mutable array. Result is not yet evaluated. readArray# :: MutableArray# s a -> Int# -> State# s -> (# State# s,a #) readArray# = let x = x in x -- |Write to specified index of mutable array. writeArray# :: MutableArray# s a -> Int# -> a -> State# s -> State# s writeArray# = let x = x in x -- |Return the number of elements in the array. sizeofArray# :: Array# a -> Int# sizeofArray# = let x = x in x -- |Return the number of elements in the array. sizeofMutableArray# :: MutableArray# s a -> Int# sizeofMutableArray# = let x = x in x -- |Read from specified index of immutable array. Result is packaged into -- an unboxed singleton; the result itself is not yet evaluated. indexArray# :: Array# a -> Int# -> (# a #) indexArray# = let x = x in x -- |Make a mutable array immutable, without copying. unsafeFreezeArray# :: MutableArray# s a -> State# s -> (# State# s,Array# a #) unsafeFreezeArray# = let x = x in x -- |Make an immutable array mutable, without copying. unsafeThawArray# :: Array# a -> State# s -> (# State# s,MutableArray# s a #) unsafeThawArray# = let x = x in x -- |Given a source array, an offset into the source array, a -- destination array, an offset into the destination array, and a -- number of elements to copy, copy the elements from the source array -- to the destination array. Both arrays must fully contain the -- specified ranges, but this is not checked. The two arrays must not -- be the same array in different states, but this is not checked -- either. copyArray# :: Array# a -> Int# -> MutableArray# s a -> Int# -> Int# -> State# s -> State# s copyArray# = let x = x in x -- |Given a source array, an offset into the source array, a -- destination array, an offset into the destination array, and a -- number of elements to copy, copy the elements from the source array -- to the destination array. The source and destination arrays can -- refer to the same array. Both arrays must fully contain the -- specified ranges, but this is not checked. copyMutableArray# :: MutableArray# s a -> Int# -> MutableArray# s a -> Int# -> Int# -> State# s -> State# s copyMutableArray# = let x = x in x -- |Given a source array, an offset into the source array, and a number -- of elements to copy, create a new array with the elements from the -- source array. The provided array must fully contain the specified -- range, but this is not checked. cloneArray# :: Array# a -> Int# -> Int# -> Array# a cloneArray# = let x = x in x -- |Given a source array, an offset into the source array, and a number -- of elements to copy, create a new array with the elements from the -- source array. The provided array must fully contain the specified -- range, but this is not checked. cloneMutableArray# :: MutableArray# s a -> Int# -> Int# -> State# s -> (# State# s,MutableArray# s a #) cloneMutableArray# = let x = x in x -- |Given a source array, an offset into the source array, and a number -- of elements to copy, create a new array with the elements from the -- source array. The provided array must fully contain the specified -- range, but this is not checked. freezeArray# :: MutableArray# s a -> Int# -> Int# -> State# s -> (# State# s,Array# a #) freezeArray# = let x = x in x -- |Given a source array, an offset into the source array, and a number -- of elements to copy, create a new array with the elements from the -- source array. The provided array must fully contain the specified -- range, but this is not checked. thawArray# :: Array# a -> Int# -> Int# -> State# s -> (# State# s,MutableArray# s a #) thawArray# = let x = x in x -- |Unsafe, machine-level atomic compare and swap on an element within an Array. casArray# :: MutableArray# s a -> Int# -> a -> a -> State# s -> (# State# s,Int#,a #) casArray# = let x = x in x data SmallArray# a data SmallMutableArray# s a -- |Create a new mutable array with the specified number of elements, -- in the specified state thread, -- with each element containing the specified initial value. newSmallArray# :: Int# -> a -> State# s -> (# State# s,SmallMutableArray# s a #) newSmallArray# = let x = x in x sameSmallMutableArray# :: SmallMutableArray# s a -> SmallMutableArray# s a -> Int# sameSmallMutableArray# = let x = x in x -- |Read from specified index of mutable array. Result is not yet evaluated. readSmallArray# :: SmallMutableArray# s a -> Int# -> State# s -> (# State# s,a #) readSmallArray# = let x = x in x -- |Write to specified index of mutable array. writeSmallArray# :: SmallMutableArray# s a -> Int# -> a -> State# s -> State# s writeSmallArray# = let x = x in x -- |Return the number of elements in the array. sizeofSmallArray# :: SmallArray# a -> Int# sizeofSmallArray# = let x = x in x -- |Return the number of elements in the array. sizeofSmallMutableArray# :: SmallMutableArray# s a -> Int# sizeofSmallMutableArray# = let x = x in x -- |Read from specified index of immutable array. Result is packaged into -- an unboxed singleton; the result itself is not yet evaluated. indexSmallArray# :: SmallArray# a -> Int# -> (# a #) indexSmallArray# = let x = x in x -- |Make a mutable array immutable, without copying. unsafeFreezeSmallArray# :: SmallMutableArray# s a -> State# s -> (# State# s,SmallArray# a #) unsafeFreezeSmallArray# = let x = x in x -- |Make an immutable array mutable, without copying. unsafeThawSmallArray# :: SmallArray# a -> State# s -> (# State# s,SmallMutableArray# s a #) unsafeThawSmallArray# = let x = x in x -- |Given a source array, an offset into the source array, a -- destination array, an offset into the destination array, and a -- number of elements to copy, copy the elements from the source array -- to the destination array. Both arrays must fully contain the -- specified ranges, but this is not checked. The two arrays must not -- be the same array in different states, but this is not checked -- either. copySmallArray# :: SmallArray# a -> Int# -> SmallMutableArray# s a -> Int# -> Int# -> State# s -> State# s copySmallArray# = let x = x in x -- |Given a source array, an offset into the source array, a -- destination array, an offset into the destination array, and a -- number of elements to copy, copy the elements from the source array -- to the destination array. The source and destination arrays can -- refer to the same array. Both arrays must fully contain the -- specified ranges, but this is not checked. copySmallMutableArray# :: SmallMutableArray# s a -> Int# -> SmallMutableArray# s a -> Int# -> Int# -> State# s -> State# s copySmallMutableArray# = let x = x in x -- |Given a source array, an offset into the source array, and a number -- of elements to copy, create a new array with the elements from the -- source array. The provided array must fully contain the specified -- range, but this is not checked. cloneSmallArray# :: SmallArray# a -> Int# -> Int# -> SmallArray# a cloneSmallArray# = let x = x in x -- |Given a source array, an offset into the source array, and a number -- of elements to copy, create a new array with the elements from the -- source array. The provided array must fully contain the specified -- range, but this is not checked. cloneSmallMutableArray# :: SmallMutableArray# s a -> Int# -> Int# -> State# s -> (# State# s,SmallMutableArray# s a #) cloneSmallMutableArray# = let x = x in x -- |Given a source array, an offset into the source array, and a number -- of elements to copy, create a new array with the elements from the -- source array. The provided array must fully contain the specified -- range, but this is not checked. freezeSmallArray# :: SmallMutableArray# s a -> Int# -> Int# -> State# s -> (# State# s,SmallArray# a #) freezeSmallArray# = let x = x in x -- |Given a source array, an offset into the source array, and a number -- of elements to copy, create a new array with the elements from the -- source array. The provided array must fully contain the specified -- range, but this is not checked. thawSmallArray# :: SmallArray# a -> Int# -> Int# -> State# s -> (# State# s,SmallMutableArray# s a #) thawSmallArray# = let x = x in x -- |Unsafe, machine-level atomic compare and swap on an element within an array. casSmallArray# :: SmallMutableArray# s a -> Int# -> a -> a -> State# s -> (# State# s,Int#,a #) casSmallArray# = let x = x in x data ByteArray# data MutableByteArray# s -- |Create a new mutable byte array of specified size (in bytes), in -- the specified state thread. newByteArray# :: Int# -> State# s -> (# State# s,MutableByteArray# s #) newByteArray# = let x = x in x -- |Create a mutable byte array that the GC guarantees not to move. newPinnedByteArray# :: Int# -> State# s -> (# State# s,MutableByteArray# s #) newPinnedByteArray# = let x = x in x -- |Create a mutable byte array, aligned by the specified amount, that the GC guarantees not to move. newAlignedPinnedByteArray# :: Int# -> Int# -> State# s -> (# State# s,MutableByteArray# s #) newAlignedPinnedByteArray# = let x = x in x -- |Intended for use with pinned arrays; otherwise very unsafe! byteArrayContents# :: ByteArray# -> Addr# byteArrayContents# = let x = x in x sameMutableByteArray# :: MutableByteArray# s -> MutableByteArray# s -> Int# sameMutableByteArray# = let x = x in x -- |Shrink mutable byte array to new specified size (in bytes), in -- the specified state thread. The new size argument must be less than or -- equal to the current size as reported by @sizeofMutableArray\#@. shrinkMutableByteArray# :: MutableByteArray# s -> Int# -> State# s -> State# s shrinkMutableByteArray# = let x = x in x -- |Resize (unpinned) mutable byte array to new specified size (in bytes). -- The returned @MutableByteArray\#@ is either the original -- @MutableByteArray\#@ resized in-place or, if not possible, a newly -- allocated (unpinned) @MutableByteArray\#@ (with the original content -- copied over). -- -- To avoid undefined behaviour, the original @MutableByteArray\#@ shall -- not be accessed anymore after a @resizeMutableByteArray\#@ has been -- performed. Moreover, no reference to the old one should be kept in order -- to allow garbage collection of the original @MutableByteArray\#@ in -- case a new @MutableByteArray\#@ had to be allocated. resizeMutableByteArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,MutableByteArray# s #) resizeMutableByteArray# = let x = x in x -- |Make a mutable byte array immutable, without copying. unsafeFreezeByteArray# :: MutableByteArray# s -> State# s -> (# State# s,ByteArray# #) unsafeFreezeByteArray# = let x = x in x -- |Return the size of the array in bytes. sizeofByteArray# :: ByteArray# -> Int# sizeofByteArray# = let x = x in x -- |Return the size of the array in bytes. sizeofMutableByteArray# :: MutableByteArray# s -> Int# sizeofMutableByteArray# = let x = x in x -- |Read 8-bit character; offset in bytes. indexCharArray# :: ByteArray# -> Int# -> Char# indexCharArray# = let x = x in x -- |Read 31-bit character; offset in 4-byte words. indexWideCharArray# :: ByteArray# -> Int# -> Char# indexWideCharArray# = let x = x in x indexIntArray# :: ByteArray# -> Int# -> Int# indexIntArray# = let x = x in x indexWordArray# :: ByteArray# -> Int# -> Word# indexWordArray# = let x = x in x indexAddrArray# :: ByteArray# -> Int# -> Addr# indexAddrArray# = let x = x in x indexFloatArray# :: ByteArray# -> Int# -> Float# indexFloatArray# = let x = x in x indexDoubleArray# :: ByteArray# -> Int# -> Double# indexDoubleArray# = let x = x in x indexStablePtrArray# :: ByteArray# -> Int# -> StablePtr# a indexStablePtrArray# = let x = x in x -- |Read 8-bit integer; offset in bytes. indexInt8Array# :: ByteArray# -> Int# -> Int# indexInt8Array# = let x = x in x -- |Read 16-bit integer; offset in 16-bit words. indexInt16Array# :: ByteArray# -> Int# -> Int# indexInt16Array# = let x = x in x -- |Read 32-bit integer; offset in 32-bit words. indexInt32Array# :: ByteArray# -> Int# -> Int# indexInt32Array# = let x = x in x -- |Read 64-bit integer; offset in 64-bit words. indexInt64Array# :: ByteArray# -> Int# -> Int# indexInt64Array# = let x = x in x -- |Read 8-bit word; offset in bytes. indexWord8Array# :: ByteArray# -> Int# -> Word# indexWord8Array# = let x = x in x -- |Read 16-bit word; offset in 16-bit words. indexWord16Array# :: ByteArray# -> Int# -> Word# indexWord16Array# = let x = x in x -- |Read 32-bit word; offset in 32-bit words. indexWord32Array# :: ByteArray# -> Int# -> Word# indexWord32Array# = let x = x in x -- |Read 64-bit word; offset in 64-bit words. indexWord64Array# :: ByteArray# -> Int# -> Word# indexWord64Array# = let x = x in x -- |Read 8-bit character; offset in bytes. readCharArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Char# #) readCharArray# = let x = x in x -- |Read 31-bit character; offset in 4-byte words. readWideCharArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Char# #) readWideCharArray# = let x = x in x -- |Read intger; offset in words. readIntArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int# #) readIntArray# = let x = x in x -- |Read word; offset in words. readWordArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word# #) readWordArray# = let x = x in x readAddrArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Addr# #) readAddrArray# = let x = x in x readFloatArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Float# #) readFloatArray# = let x = x in x readDoubleArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Double# #) readDoubleArray# = let x = x in x readStablePtrArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,StablePtr# a #) readStablePtrArray# = let x = x in x readInt8Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int# #) readInt8Array# = let x = x in x readInt16Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int# #) readInt16Array# = let x = x in x readInt32Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int# #) readInt32Array# = let x = x in x readInt64Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int# #) readInt64Array# = let x = x in x readWord8Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word# #) readWord8Array# = let x = x in x readWord16Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word# #) readWord16Array# = let x = x in x readWord32Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word# #) readWord32Array# = let x = x in x readWord64Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word# #) readWord64Array# = let x = x in x -- |Write 8-bit character; offset in bytes. writeCharArray# :: MutableByteArray# s -> Int# -> Char# -> State# s -> State# s writeCharArray# = let x = x in x -- |Write 31-bit character; offset in 4-byte words. writeWideCharArray# :: MutableByteArray# s -> Int# -> Char# -> State# s -> State# s writeWideCharArray# = let x = x in x writeIntArray# :: MutableByteArray# s -> Int# -> Int# -> State# s -> State# s writeIntArray# = let x = x in x writeWordArray# :: MutableByteArray# s -> Int# -> Word# -> State# s -> State# s writeWordArray# = let x = x in x writeAddrArray# :: MutableByteArray# s -> Int# -> Addr# -> State# s -> State# s writeAddrArray# = let x = x in x writeFloatArray# :: MutableByteArray# s -> Int# -> Float# -> State# s -> State# s writeFloatArray# = let x = x in x writeDoubleArray# :: MutableByteArray# s -> Int# -> Double# -> State# s -> State# s writeDoubleArray# = let x = x in x writeStablePtrArray# :: MutableByteArray# s -> Int# -> StablePtr# a -> State# s -> State# s writeStablePtrArray# = let x = x in x writeInt8Array# :: MutableByteArray# s -> Int# -> Int# -> State# s -> State# s writeInt8Array# = let x = x in x writeInt16Array# :: MutableByteArray# s -> Int# -> Int# -> State# s -> State# s writeInt16Array# = let x = x in x writeInt32Array# :: MutableByteArray# s -> Int# -> Int# -> State# s -> State# s writeInt32Array# = let x = x in x writeInt64Array# :: MutableByteArray# s -> Int# -> Int# -> State# s -> State# s writeInt64Array# = let x = x in x writeWord8Array# :: MutableByteArray# s -> Int# -> Word# -> State# s -> State# s writeWord8Array# = let x = x in x writeWord16Array# :: MutableByteArray# s -> Int# -> Word# -> State# s -> State# s writeWord16Array# = let x = x in x writeWord32Array# :: MutableByteArray# s -> Int# -> Word# -> State# s -> State# s writeWord32Array# = let x = x in x writeWord64Array# :: MutableByteArray# s -> Int# -> Word# -> State# s -> State# s writeWord64Array# = let x = x in x -- |Copy a range of the ByteArray# to the specified region in the MutableByteArray#. -- Both arrays must fully contain the specified ranges, but this is not checked. -- The two arrays must not be the same array in different states, but this is not checked either. copyByteArray# :: ByteArray# -> Int# -> MutableByteArray# s -> Int# -> Int# -> State# s -> State# s copyByteArray# = let x = x in x -- |Copy a range of the first MutableByteArray# to the specified region in the second MutableByteArray#. -- Both arrays must fully contain the specified ranges, but this is not checked. copyMutableByteArray# :: MutableByteArray# s -> Int# -> MutableByteArray# s -> Int# -> Int# -> State# s -> State# s copyMutableByteArray# = let x = x in x -- |Copy a range of the ByteArray# to the memory range starting at the Addr#. -- The ByteArray# and the memory region at Addr# must fully contain the -- specified ranges, but this is not checked. The Addr# must not point into the -- ByteArray# (e.g. if the ByteArray# were pinned), but this is not checked -- either. copyByteArrayToAddr# :: ByteArray# -> Int# -> Addr# -> Int# -> State# s -> State# s copyByteArrayToAddr# = let x = x in x -- |Copy a range of the MutableByteArray# to the memory range starting at the -- Addr#. The MutableByteArray# and the memory region at Addr# must fully -- contain the specified ranges, but this is not checked. The Addr# must not -- point into the MutableByteArray# (e.g. if the MutableByteArray# were -- pinned), but this is not checked either. copyMutableByteArrayToAddr# :: MutableByteArray# s -> Int# -> Addr# -> Int# -> State# s -> State# s copyMutableByteArrayToAddr# = let x = x in x -- |Copy a memory range starting at the Addr# to the specified range in the -- MutableByteArray#. The memory region at Addr# and the ByteArray# must fully -- contain the specified ranges, but this is not checked. The Addr# must not -- point into the MutableByteArray# (e.g. if the MutableByteArray# were pinned), -- but this is not checked either. copyAddrToByteArray# :: Addr# -> MutableByteArray# s -> Int# -> Int# -> State# s -> State# s copyAddrToByteArray# = let x = x in x -- |Set the range of the MutableByteArray# to the specified character. setByteArray# :: MutableByteArray# s -> Int# -> Int# -> Int# -> State# s -> State# s setByteArray# = let x = x in x -- |Given an array and an offset in Int units, read an element. The -- index is assumed to be in bounds. Implies a full memory barrier. atomicReadIntArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int# #) atomicReadIntArray# = let x = x in x -- |Given an array and an offset in Int units, write an element. The -- index is assumed to be in bounds. Implies a full memory barrier. atomicWriteIntArray# :: MutableByteArray# s -> Int# -> Int# -> State# s -> State# s atomicWriteIntArray# = let x = x in x -- |Given an array, an offset in Int units, the expected old value, and -- the new value, perform an atomic compare and swap i.e. write the new -- value if the current value matches the provided old value. Returns -- the value of the element before the operation. Implies a full memory -- barrier. casIntArray# :: MutableByteArray# s -> Int# -> Int# -> Int# -> State# s -> (# State# s,Int# #) casIntArray# = let x = x in x -- |Given an array, and offset in Int units, and a value to add, -- atomically add the value to the element. Returns the value of the -- element before the operation. Implies a full memory barrier. fetchAddIntArray# :: MutableByteArray# s -> Int# -> Int# -> State# s -> (# State# s,Int# #) fetchAddIntArray# = let x = x in x -- |Given an array, and offset in Int units, and a value to subtract, -- atomically substract the value to the element. Returns the value of -- the element before the operation. Implies a full memory barrier. fetchSubIntArray# :: MutableByteArray# s -> Int# -> Int# -> State# s -> (# State# s,Int# #) fetchSubIntArray# = let x = x in x -- |Given an array, and offset in Int units, and a value to AND, -- atomically AND the value to the element. Returns the value of the -- element before the operation. Implies a full memory barrier. fetchAndIntArray# :: MutableByteArray# s -> Int# -> Int# -> State# s -> (# State# s,Int# #) fetchAndIntArray# = let x = x in x -- |Given an array, and offset in Int units, and a value to NAND, -- atomically NAND the value to the element. Returns the value of the -- element before the operation. Implies a full memory barrier. fetchNandIntArray# :: MutableByteArray# s -> Int# -> Int# -> State# s -> (# State# s,Int# #) fetchNandIntArray# = let x = x in x -- |Given an array, and offset in Int units, and a value to OR, -- atomically OR the value to the element. Returns the value of the -- element before the operation. Implies a full memory barrier. fetchOrIntArray# :: MutableByteArray# s -> Int# -> Int# -> State# s -> (# State# s,Int# #) fetchOrIntArray# = let x = x in x -- |Given an array, and offset in Int units, and a value to XOR, -- atomically XOR the value to the element. Returns the value of the -- element before the operation. Implies a full memory barrier. fetchXorIntArray# :: MutableByteArray# s -> Int# -> Int# -> State# s -> (# State# s,Int# #) fetchXorIntArray# = let x = x in x data ArrayArray# data MutableArrayArray# s -- |Create a new mutable array of arrays with the specified number of elements, -- in the specified state thread, with each element recursively referring to the -- newly created array. newArrayArray# :: Int# -> State# s -> (# State# s,MutableArrayArray# s #) newArrayArray# = let x = x in x sameMutableArrayArray# :: MutableArrayArray# s -> MutableArrayArray# s -> Int# sameMutableArrayArray# = let x = x in x -- |Make a mutable array of arrays immutable, without copying. unsafeFreezeArrayArray# :: MutableArrayArray# s -> State# s -> (# State# s,ArrayArray# #) unsafeFreezeArrayArray# = let x = x in x -- |Return the number of elements in the array. sizeofArrayArray# :: ArrayArray# -> Int# sizeofArrayArray# = let x = x in x -- |Return the number of elements in the array. sizeofMutableArrayArray# :: MutableArrayArray# s -> Int# sizeofMutableArrayArray# = let x = x in x indexByteArrayArray# :: ArrayArray# -> Int# -> ByteArray# indexByteArrayArray# = let x = x in x indexArrayArrayArray# :: ArrayArray# -> Int# -> ArrayArray# indexArrayArrayArray# = let x = x in x readByteArrayArray# :: MutableArrayArray# s -> Int# -> State# s -> (# State# s,ByteArray# #) readByteArrayArray# = let x = x in x readMutableByteArrayArray# :: MutableArrayArray# s -> Int# -> State# s -> (# State# s,MutableByteArray# s #) readMutableByteArrayArray# = let x = x in x readArrayArrayArray# :: MutableArrayArray# s -> Int# -> State# s -> (# State# s,ArrayArray# #) readArrayArrayArray# = let x = x in x readMutableArrayArrayArray# :: MutableArrayArray# s -> Int# -> State# s -> (# State# s,MutableArrayArray# s #) readMutableArrayArrayArray# = let x = x in x writeByteArrayArray# :: MutableArrayArray# s -> Int# -> ByteArray# -> State# s -> State# s writeByteArrayArray# = let x = x in x writeMutableByteArrayArray# :: MutableArrayArray# s -> Int# -> MutableByteArray# s -> State# s -> State# s writeMutableByteArrayArray# = let x = x in x writeArrayArrayArray# :: MutableArrayArray# s -> Int# -> ArrayArray# -> State# s -> State# s writeArrayArrayArray# = let x = x in x writeMutableArrayArrayArray# :: MutableArrayArray# s -> Int# -> MutableArrayArray# s -> State# s -> State# s writeMutableArrayArrayArray# = let x = x in x -- |Copy a range of the ArrayArray# to the specified region in the MutableArrayArray#. -- Both arrays must fully contain the specified ranges, but this is not checked. -- The two arrays must not be the same array in different states, but this is not checked either. copyArrayArray# :: ArrayArray# -> Int# -> MutableArrayArray# s -> Int# -> Int# -> State# s -> State# s copyArrayArray# = let x = x in x -- |Copy a range of the first MutableArrayArray# to the specified region in the second -- MutableArrayArray#. -- Both arrays must fully contain the specified ranges, but this is not checked. copyMutableArrayArray# :: MutableArrayArray# s -> Int# -> MutableArrayArray# s -> Int# -> Int# -> State# s -> State# s copyMutableArrayArray# = let x = x in x -- | An arbitrary machine address assumed to point outside -- the garbage-collected heap. data Addr# -- | The null address. nullAddr# :: Addr# nullAddr# = let x = x in x plusAddr# :: Addr# -> Int# -> Addr# plusAddr# = let x = x in x -- |Result is meaningless if two @Addr\#@s are so far apart that their -- difference doesn\'t fit in an @Int\#@. minusAddr# :: Addr# -> Addr# -> Int# minusAddr# = let x = x in x -- |Return the remainder when the @Addr\#@ arg, treated like an @Int\#@, -- is divided by the @Int\#@ arg. remAddr# :: Addr# -> Int# -> Int# remAddr# = let x = x in x -- |Coerce directly from address to int. Strongly deprecated. addr2Int# :: Addr# -> Int# addr2Int# = let x = x in x -- |Coerce directly from int to address. Strongly deprecated. int2Addr# :: Int# -> Addr# int2Addr# = let x = x in x gtAddr# :: Addr# -> Addr# -> Int# gtAddr# = let x = x in x geAddr# :: Addr# -> Addr# -> Int# geAddr# = let x = x in x eqAddr# :: Addr# -> Addr# -> Int# eqAddr# = let x = x in x neAddr# :: Addr# -> Addr# -> Int# neAddr# = let x = x in x ltAddr# :: Addr# -> Addr# -> Int# ltAddr# = let x = x in x leAddr# :: Addr# -> Addr# -> Int# leAddr# = let x = x in x -- |Reads 8-bit character; offset in bytes. indexCharOffAddr# :: Addr# -> Int# -> Char# indexCharOffAddr# = let x = x in x -- |Reads 31-bit character; offset in 4-byte words. indexWideCharOffAddr# :: Addr# -> Int# -> Char# indexWideCharOffAddr# = let x = x in x indexIntOffAddr# :: Addr# -> Int# -> Int# indexIntOffAddr# = let x = x in x indexWordOffAddr# :: Addr# -> Int# -> Word# indexWordOffAddr# = let x = x in x indexAddrOffAddr# :: Addr# -> Int# -> Addr# indexAddrOffAddr# = let x = x in x indexFloatOffAddr# :: Addr# -> Int# -> Float# indexFloatOffAddr# = let x = x in x indexDoubleOffAddr# :: Addr# -> Int# -> Double# indexDoubleOffAddr# = let x = x in x indexStablePtrOffAddr# :: Addr# -> Int# -> StablePtr# a indexStablePtrOffAddr# = let x = x in x indexInt8OffAddr# :: Addr# -> Int# -> Int# indexInt8OffAddr# = let x = x in x indexInt16OffAddr# :: Addr# -> Int# -> Int# indexInt16OffAddr# = let x = x in x indexInt32OffAddr# :: Addr# -> Int# -> Int# indexInt32OffAddr# = let x = x in x indexInt64OffAddr# :: Addr# -> Int# -> Int# indexInt64OffAddr# = let x = x in x indexWord8OffAddr# :: Addr# -> Int# -> Word# indexWord8OffAddr# = let x = x in x indexWord16OffAddr# :: Addr# -> Int# -> Word# indexWord16OffAddr# = let x = x in x indexWord32OffAddr# :: Addr# -> Int# -> Word# indexWord32OffAddr# = let x = x in x indexWord64OffAddr# :: Addr# -> Int# -> Word# indexWord64OffAddr# = let x = x in x -- |Reads 8-bit character; offset in bytes. readCharOffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Char# #) readCharOffAddr# = let x = x in x -- |Reads 31-bit character; offset in 4-byte words. readWideCharOffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Char# #) readWideCharOffAddr# = let x = x in x readIntOffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Int# #) readIntOffAddr# = let x = x in x readWordOffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Word# #) readWordOffAddr# = let x = x in x readAddrOffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Addr# #) readAddrOffAddr# = let x = x in x readFloatOffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Float# #) readFloatOffAddr# = let x = x in x readDoubleOffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Double# #) readDoubleOffAddr# = let x = x in x readStablePtrOffAddr# :: Addr# -> Int# -> State# s -> (# State# s,StablePtr# a #) readStablePtrOffAddr# = let x = x in x readInt8OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Int# #) readInt8OffAddr# = let x = x in x readInt16OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Int# #) readInt16OffAddr# = let x = x in x readInt32OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Int# #) readInt32OffAddr# = let x = x in x readInt64OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Int# #) readInt64OffAddr# = let x = x in x readWord8OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Word# #) readWord8OffAddr# = let x = x in x readWord16OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Word# #) readWord16OffAddr# = let x = x in x readWord32OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Word# #) readWord32OffAddr# = let x = x in x readWord64OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Word# #) readWord64OffAddr# = let x = x in x writeCharOffAddr# :: Addr# -> Int# -> Char# -> State# s -> State# s writeCharOffAddr# = let x = x in x writeWideCharOffAddr# :: Addr# -> Int# -> Char# -> State# s -> State# s writeWideCharOffAddr# = let x = x in x writeIntOffAddr# :: Addr# -> Int# -> Int# -> State# s -> State# s writeIntOffAddr# = let x = x in x writeWordOffAddr# :: Addr# -> Int# -> Word# -> State# s -> State# s writeWordOffAddr# = let x = x in x writeAddrOffAddr# :: Addr# -> Int# -> Addr# -> State# s -> State# s writeAddrOffAddr# = let x = x in x writeFloatOffAddr# :: Addr# -> Int# -> Float# -> State# s -> State# s writeFloatOffAddr# = let x = x in x writeDoubleOffAddr# :: Addr# -> Int# -> Double# -> State# s -> State# s writeDoubleOffAddr# = let x = x in x writeStablePtrOffAddr# :: Addr# -> Int# -> StablePtr# a -> State# s -> State# s writeStablePtrOffAddr# = let x = x in x writeInt8OffAddr# :: Addr# -> Int# -> Int# -> State# s -> State# s writeInt8OffAddr# = let x = x in x writeInt16OffAddr# :: Addr# -> Int# -> Int# -> State# s -> State# s writeInt16OffAddr# = let x = x in x writeInt32OffAddr# :: Addr# -> Int# -> Int# -> State# s -> State# s writeInt32OffAddr# = let x = x in x writeInt64OffAddr# :: Addr# -> Int# -> Int# -> State# s -> State# s writeInt64OffAddr# = let x = x in x writeWord8OffAddr# :: Addr# -> Int# -> Word# -> State# s -> State# s writeWord8OffAddr# = let x = x in x writeWord16OffAddr# :: Addr# -> Int# -> Word# -> State# s -> State# s writeWord16OffAddr# = let x = x in x writeWord32OffAddr# :: Addr# -> Int# -> Word# -> State# s -> State# s writeWord32OffAddr# = let x = x in x writeWord64OffAddr# :: Addr# -> Int# -> Word# -> State# s -> State# s writeWord64OffAddr# = let x = x in x -- |A @MutVar\#@ behaves like a single-element mutable array. data MutVar# s a -- |Create @MutVar\#@ with specified initial value in specified state thread. newMutVar# :: a -> State# s -> (# State# s,MutVar# s a #) newMutVar# = let x = x in x -- |Read contents of @MutVar\#@. Result is not yet evaluated. readMutVar# :: MutVar# s a -> State# s -> (# State# s,a #) readMutVar# = let x = x in x -- |Write contents of @MutVar\#@. writeMutVar# :: MutVar# s a -> a -> State# s -> State# s writeMutVar# = let x = x in x sameMutVar# :: MutVar# s a -> MutVar# s a -> Int# sameMutVar# = let x = x in x atomicModifyMutVar# :: MutVar# s a -> (a -> b) -> State# s -> (# State# s,c #) atomicModifyMutVar# = let x = x in x casMutVar# :: MutVar# s a -> a -> a -> State# s -> (# State# s,Int#,a #) casMutVar# = let x = x in x catch# :: (State# (RealWorld) -> (# State# (RealWorld),a #)) -> (b -> State# (RealWorld) -> (# State# (RealWorld),a #)) -> State# (RealWorld) -> (# State# (RealWorld),a #) catch# = let x = x in x raise# :: a -> b raise# = let x = x in x raiseIO# :: a -> State# (RealWorld) -> (# State# (RealWorld),b #) raiseIO# = let x = x in x maskAsyncExceptions# :: (State# (RealWorld) -> (# State# (RealWorld),a #)) -> State# (RealWorld) -> (# State# (RealWorld),a #) maskAsyncExceptions# = let x = x in x maskUninterruptible# :: (State# (RealWorld) -> (# State# (RealWorld),a #)) -> State# (RealWorld) -> (# State# (RealWorld),a #) maskUninterruptible# = let x = x in x unmaskAsyncExceptions# :: (State# (RealWorld) -> (# State# (RealWorld),a #)) -> State# (RealWorld) -> (# State# (RealWorld),a #) unmaskAsyncExceptions# = let x = x in x getMaskingState# :: State# (RealWorld) -> (# State# (RealWorld),Int# #) getMaskingState# = let x = x in x data TVar# s a atomically# :: (State# (RealWorld) -> (# State# (RealWorld),a #)) -> State# (RealWorld) -> (# State# (RealWorld),a #) atomically# = let x = x in x retry# :: State# (RealWorld) -> (# State# (RealWorld),a #) retry# = let x = x in x catchRetry# :: (State# (RealWorld) -> (# State# (RealWorld),a #)) -> (State# (RealWorld) -> (# State# (RealWorld),a #)) -> State# (RealWorld) -> (# State# (RealWorld),a #) catchRetry# = let x = x in x catchSTM# :: (State# (RealWorld) -> (# State# (RealWorld),a #)) -> (b -> State# (RealWorld) -> (# State# (RealWorld),a #)) -> State# (RealWorld) -> (# State# (RealWorld),a #) catchSTM# = let x = x in x check# :: (State# (RealWorld) -> (# State# (RealWorld),a #)) -> State# (RealWorld) -> (# State# (RealWorld),() #) check# = let x = x in x -- |Create a new @TVar\#@ holding a specified initial value. newTVar# :: a -> State# s -> (# State# s,TVar# s a #) newTVar# = let x = x in x -- |Read contents of @TVar\#@. Result is not yet evaluated. readTVar# :: TVar# s a -> State# s -> (# State# s,a #) readTVar# = let x = x in x -- |Read contents of @TVar\#@ outside an STM transaction readTVarIO# :: TVar# s a -> State# s -> (# State# s,a #) readTVarIO# = let x = x in x -- |Write contents of @TVar\#@. writeTVar# :: TVar# s a -> a -> State# s -> State# s writeTVar# = let x = x in x sameTVar# :: TVar# s a -> TVar# s a -> Int# sameTVar# = let x = x in x -- | A shared mutable variable (/not/ the same as a @MutVar\#@!). -- (Note: in a non-concurrent implementation, @(MVar\# a)@ can be -- represented by @(MutVar\# (Maybe a))@.) data MVar# s a -- |Create new @MVar\#@; initially empty. newMVar# :: State# s -> (# State# s,MVar# s a #) newMVar# = let x = x in x -- |If @MVar\#@ is empty, block until it becomes full. -- Then remove and return its contents, and set it empty. takeMVar# :: MVar# s a -> State# s -> (# State# s,a #) takeMVar# = let x = x in x -- |If @MVar\#@ is empty, immediately return with integer 0 and value undefined. -- Otherwise, return with integer 1 and contents of @MVar\#@, and set @MVar\#@ empty. tryTakeMVar# :: MVar# s a -> State# s -> (# State# s,Int#,a #) tryTakeMVar# = let x = x in x -- |If @MVar\#@ is full, block until it becomes empty. -- Then store value arg as its new contents. putMVar# :: MVar# s a -> a -> State# s -> State# s putMVar# = let x = x in x -- |If @MVar\#@ is full, immediately return with integer 0. -- Otherwise, store value arg as @MVar\#@\'s new contents, and return with integer 1. tryPutMVar# :: MVar# s a -> a -> State# s -> (# State# s,Int# #) tryPutMVar# = let x = x in x -- |If @MVar\#@ is empty, block until it becomes full. -- Then read its contents without modifying the MVar, without possibility -- of intervention from other threads. readMVar# :: MVar# s a -> State# s -> (# State# s,a #) readMVar# = let x = x in x -- |If @MVar\#@ is empty, immediately return with integer 0 and value undefined. -- Otherwise, return with integer 1 and contents of @MVar\#@. tryReadMVar# :: MVar# s a -> State# s -> (# State# s,Int#,a #) tryReadMVar# = let x = x in x sameMVar# :: MVar# s a -> MVar# s a -> Int# sameMVar# = let x = x in x -- |Return 1 if @MVar\#@ is empty; 0 otherwise. isEmptyMVar# :: MVar# s a -> State# s -> (# State# s,Int# #) isEmptyMVar# = let x = x in x -- |Sleep specified number of microseconds. delay# :: Int# -> State# s -> State# s delay# = let x = x in x -- |Block until input is available on specified file descriptor. waitRead# :: Int# -> State# s -> State# s waitRead# = let x = x in x -- |Block until output is possible on specified file descriptor. waitWrite# :: Int# -> State# s -> State# s waitWrite# = let x = x in x -- | @State\#@ is the primitive, unlifted type of states. It has -- one type parameter, thus @State\# RealWorld@, or @State\# s@, -- where s is a type variable. The only purpose of the type parameter -- is to keep different state threads separate. It is represented by -- nothing at all. data State# s -- | @RealWorld@ is deeply magical. It is /primitive/, but it is not -- /unlifted/ (hence @ptrArg@). We never manipulate values of type -- @RealWorld@; it\'s only used in the type system, to parameterise @State\#@. data RealWorld -- |(In a non-concurrent implementation, this can be a singleton -- type, whose (unique) value is returned by @myThreadId\#@. The -- other operations can be omitted.) data ThreadId# fork# :: a -> State# (RealWorld) -> (# State# (RealWorld),ThreadId# #) fork# = let x = x in x forkOn# :: Int# -> a -> State# (RealWorld) -> (# State# (RealWorld),ThreadId# #) forkOn# = let x = x in x killThread# :: ThreadId# -> a -> State# (RealWorld) -> State# (RealWorld) killThread# = let x = x in x yield# :: State# (RealWorld) -> State# (RealWorld) yield# = let x = x in x myThreadId# :: State# (RealWorld) -> (# State# (RealWorld),ThreadId# #) myThreadId# = let x = x in x labelThread# :: ThreadId# -> Addr# -> State# (RealWorld) -> State# (RealWorld) labelThread# = let x = x in x isCurrentThreadBound# :: State# (RealWorld) -> (# State# (RealWorld),Int# #) isCurrentThreadBound# = let x = x in x noDuplicate# :: State# (RealWorld) -> State# (RealWorld) noDuplicate# = let x = x in x threadStatus# :: ThreadId# -> State# (RealWorld) -> (# State# (RealWorld),Int#,Int#,Int# #) threadStatus# = let x = x in x data Weak# b mkWeak# :: o -> b -> c -> State# (RealWorld) -> (# State# (RealWorld),Weak# b #) mkWeak# = let x = x in x mkWeakNoFinalizer# :: o -> b -> State# (RealWorld) -> (# State# (RealWorld),Weak# b #) mkWeakNoFinalizer# = let x = x in x -- | @addCFinalizerToWeak# fptr ptr flag eptr w@ attaches a C -- function pointer @fptr@ to a weak pointer @w@ as a finalizer. If -- @flag@ is zero, @fptr@ will be called with one argument, -- @ptr@. Otherwise, it will be called with two arguments, -- @eptr@ and @ptr@. @addCFinalizerToWeak#@ returns -- 1 on success, or 0 if @w@ is already dead. addCFinalizerToWeak# :: Addr# -> Addr# -> Int# -> Addr# -> Weak# b -> State# (RealWorld) -> (# State# (RealWorld),Int# #) addCFinalizerToWeak# = let x = x in x deRefWeak# :: Weak# a -> State# (RealWorld) -> (# State# (RealWorld),Int#,a #) deRefWeak# = let x = x in x finalizeWeak# :: Weak# a -> State# (RealWorld) -> (# State# (RealWorld),Int#,State# (RealWorld) -> (# State# (RealWorld),() #) #) finalizeWeak# = let x = x in x touch# :: o -> State# (RealWorld) -> State# (RealWorld) touch# = let x = x in x data StablePtr# a data StableName# a makeStablePtr# :: a -> State# (RealWorld) -> (# State# (RealWorld),StablePtr# a #) makeStablePtr# = let x = x in x deRefStablePtr# :: StablePtr# a -> State# (RealWorld) -> (# State# (RealWorld),a #) deRefStablePtr# = let x = x in x eqStablePtr# :: StablePtr# a -> StablePtr# a -> Int# eqStablePtr# = let x = x in x makeStableName# :: a -> State# (RealWorld) -> (# State# (RealWorld),StableName# a #) makeStableName# = let x = x in x eqStableName# :: StableName# a -> StableName# b -> Int# eqStableName# = let x = x in x stableNameToInt# :: StableName# a -> Int# stableNameToInt# = let x = x in x reallyUnsafePtrEquality# :: a -> a -> Int# reallyUnsafePtrEquality# = let x = x in x par# :: a -> Int# par# = let x = x in x spark# :: a -> State# s -> (# State# s,a #) spark# = let x = x in x seq# :: a -> State# s -> (# State# s,a #) seq# = let x = x in x getSpark# :: State# s -> (# State# s,Int#,a #) getSpark# = let x = x in x -- | Returns the number of sparks in the local spark pool. numSparks# :: State# s -> (# State# s,Int# #) numSparks# = let x = x in x parGlobal# :: a -> Int# -> Int# -> Int# -> Int# -> b -> Int# parGlobal# = let x = x in x parLocal# :: a -> Int# -> Int# -> Int# -> Int# -> b -> Int# parLocal# = let x = x in x parAt# :: b -> a -> Int# -> Int# -> Int# -> Int# -> c -> Int# parAt# = let x = x in x parAtAbs# :: a -> Int# -> Int# -> Int# -> Int# -> Int# -> b -> Int# parAtAbs# = let x = x in x parAtRel# :: a -> Int# -> Int# -> Int# -> Int# -> Int# -> b -> Int# parAtRel# = let x = x in x parAtForNow# :: b -> a -> Int# -> Int# -> Int# -> Int# -> c -> Int# parAtForNow# = let x = x in x dataToTag# :: a -> Int# dataToTag# = let x = x in x tagToEnum# :: Int# -> a tagToEnum# = let x = x in x -- |Primitive bytecode type. data BCO# -- |Convert an @Addr\#@ to a followable Any type. addrToAny# :: Addr# -> (# a #) addrToAny# = let x = x in x mkApUpd0# :: BCO# -> (# a #) mkApUpd0# = let x = x in x newBCO# :: ByteArray# -> ByteArray# -> Array# a -> Int# -> ByteArray# -> State# s -> (# State# s,BCO# #) newBCO# = let x = x in x unpackClosure# :: a -> (# Addr#,Array# b,ByteArray# #) unpackClosure# = let x = x in x getApStackVal# :: a -> Int# -> (# Int#,b #) getApStackVal# = let x = x in x getCCSOf# :: a -> State# s -> (# State# s,Addr# #) getCCSOf# = let x = x in x -- | Returns the current @CostCentreStack@ (value is @NULL@ if -- not profiling). Takes a dummy argument which can be used to -- avoid the call to @getCCCS\#@ being floated out by the -- simplifier, which would result in an uninformative stack -- (\"CAF\"). getCurrentCCS# :: a -> State# s -> (# State# s,Addr# #) getCurrentCCS# = let x = x in x -- | The type constructor @Proxy#@ is used to bear witness to some -- type variable. It\'s used when you want to pass around proxy values -- for doing things like modelling type applications. A @Proxy#@ -- is not only unboxed, it also has a polymorphic kind, and has no -- runtime representation, being totally free. data Proxy# a -- | Witness for an unboxed @Proxy#@ value, which has no runtime -- representation. proxy# :: Proxy# a proxy# = let x = x in x -- | The value of @seq a b@ is bottom if @a@ is bottom, and -- otherwise equal to @b@. @seq@ is usually introduced to -- improve performance by avoiding unneeded laziness. -- -- A note on evaluation order: the expression @seq a b@ does -- /not/ guarantee that @a@ will be evaluated before @b@. -- The only guarantee given by @seq@ is that the both @a@ -- and @b@ will be evaluated before @seq@ returns a value. -- In particular, this means that @b@ may be evaluated before -- @a@. If you need to guarantee a specific order of evaluation, -- you must use the function @pseq@ from the \"parallel\" package. seq :: a -> b -> b seq = let x = x in x -- | The type constructor @Any@ is type to which you can unsafely coerce any -- lifted type, and back. -- -- * It is lifted, and hence represented by a pointer -- -- * It does not claim to be a /data/ type, and that\'s important for -- the code generator, because the code gen may /enter/ a data value -- but never enters a function value. -- -- It\'s also used to instantiate un-constrained type variables after type -- checking. For example, @length@ has type -- -- @length :: forall a. [a] -> Int@ -- -- and the list datacon for the empty list has type -- -- @[] :: forall a. [a]@ -- -- In order to compose these two terms as @length []@ a type -- application is required, but there is no constraint on the -- choice. In this situation GHC uses @Any@: -- -- @length (Any *) ([] (Any *))@ -- -- Above, we print kinds explicitly, as if with -- @-fprint-explicit-kinds@. -- -- Note that @Any@ is kind polymorphic; its kind is thus -- @forall k. k@. data Any -- | The kind @AnyK@ is the kind level counterpart to @Any@. In a -- kind polymorphic setting, a similar example to the length of the empty -- list can be given at the type level: -- -- @type family Length (l :: [k]) :: Nat@ -- @type instance Length [] = Zero@ -- -- When @Length@ is applied to the empty (promoted) list it will have -- the kind @Length AnyK []@. -- -- @AnyK@ is currently not exported and cannot be used directly, but -- you might see it in debug output from the compiler. -- data AnyK -- | The function @unsafeCoerce\#@ allows you to side-step the typechecker entirely. That -- is, it allows you to coerce any type into any other type. If you use this function, -- you had better get it right, otherwise segmentation faults await. It is generally -- used when you want to write a program that you know is well-typed, but where Haskell\'s -- type system is not expressive enough to prove that it is well typed. -- -- The following uses of @unsafeCoerce\#@ are supposed to work (i.e. not lead to -- spurious compile-time or run-time crashes): -- -- * Casting any lifted type to @Any@ -- -- * Casting @Any@ back to the real type -- -- * Casting an unboxed type to another unboxed type of the same size -- (but not coercions between floating-point and integral types) -- -- * Casting between two types that have the same runtime representation. One case is when -- the two types differ only in \"phantom\" type parameters, for example -- @Ptr Int@ to @Ptr Float@, or @[Int]@ to @[Float]@ when the list is -- known to be empty. Also, a @newtype@ of a type @T@ has the same representation -- at runtime as @T@. -- -- Other uses of @unsafeCoerce\#@ are undefined. In particular, you should not use -- @unsafeCoerce\#@ to cast a T to an algebraic data type D, unless T is also -- an algebraic data type. For example, do not cast @Int->Int@ to @Bool@, even if -- you later cast that @Bool@ back to @Int->Int@ before applying it. The reasons -- have to do with GHC\'s internal representation details (for the congnoscenti, data values -- can be entered but function closures cannot). If you want a safe type to cast things -- to, use @Any@, which is not an algebraic data type. -- -- unsafeCoerce# :: a -> b unsafeCoerce# = let x = x in x -- | Emits an event via the RTS tracing framework. The contents -- of the event is the zero-terminated byte string passed as the first -- argument. The event will be emitted either to the .eventlog file, -- or to stderr, depending on the runtime RTS flags. traceEvent# :: Addr# -> State# s -> State# s traceEvent# = let x = x in x -- | Emits a marker event via the RTS tracing framework. The contents -- of the event is the zero-terminated byte string passed as the first -- argument. The event will be emitted either to the .eventlog file, -- or to stderr, depending on the runtime RTS flags. traceMarker# :: Addr# -> State# s -> State# s traceMarker# = let x = x in x -- | The function @coerce@ allows you to safely convert between values of -- types that have the same representation with no run-time overhead. In the -- simplest case you can use it instead of a newtype constructor, to go from -- the newtype\'s concrete type to the abstract type. But it also works in -- more complicated settings, e.g. converting a list of newtypes to a list of -- concrete types. -- coerce :: Coercible a b => a -> b coerce = let x = x in x data Int8X16# data Int16X8# data Int32X4# data Int64X2# data Int8X32# data Int16X16# data Int32X8# data Int64X4# data Int8X64# data Int16X32# data Int32X16# data Int64X8# data Word8X16# data Word16X8# data Word32X4# data Word64X2# data Word8X32# data Word16X16# data Word32X8# data Word64X4# data Word8X64# data Word16X32# data Word32X16# data Word64X8# data FloatX4# data DoubleX2# data FloatX8# data DoubleX4# data FloatX16# data DoubleX8# -- | Broadcast a scalar to all elements of a vector. broadcastInt8X16# :: Int# -> Int8X16# broadcastInt8X16# = let x = x in x -- | Broadcast a scalar to all elements of a vector. broadcastInt16X8# :: Int# -> Int16X8# broadcastInt16X8# = let x = x in x -- | Broadcast a scalar to all elements of a vector. broadcastInt32X4# :: Int# -> Int32X4# broadcastInt32X4# = let x = x in x -- | Broadcast a scalar to all elements of a vector. broadcastInt64X2# :: Int# -> Int64X2# broadcastInt64X2# = let x = x in x -- | Broadcast a scalar to all elements of a vector. broadcastInt8X32# :: Int# -> Int8X32# broadcastInt8X32# = let x = x in x -- | Broadcast a scalar to all elements of a vector. broadcastInt16X16# :: Int# -> Int16X16# broadcastInt16X16# = let x = x in x -- | Broadcast a scalar to all elements of a vector. broadcastInt32X8# :: Int# -> Int32X8# broadcastInt32X8# = let x = x in x -- | Broadcast a scalar to all elements of a vector. broadcastInt64X4# :: Int# -> Int64X4# broadcastInt64X4# = let x = x in x -- | Broadcast a scalar to all elements of a vector. broadcastInt8X64# :: Int# -> Int8X64# broadcastInt8X64# = let x = x in x -- | Broadcast a scalar to all elements of a vector. broadcastInt16X32# :: Int# -> Int16X32# broadcastInt16X32# = let x = x in x -- | Broadcast a scalar to all elements of a vector. broadcastInt32X16# :: Int# -> Int32X16# broadcastInt32X16# = let x = x in x -- | Broadcast a scalar to all elements of a vector. broadcastInt64X8# :: Int# -> Int64X8# broadcastInt64X8# = let x = x in x -- | Broadcast a scalar to all elements of a vector. broadcastWord8X16# :: Word# -> Word8X16# broadcastWord8X16# = let x = x in x -- | Broadcast a scalar to all elements of a vector. broadcastWord16X8# :: Word# -> Word16X8# broadcastWord16X8# = let x = x in x -- | Broadcast a scalar to all elements of a vector. broadcastWord32X4# :: Word# -> Word32X4# broadcastWord32X4# = let x = x in x -- | Broadcast a scalar to all elements of a vector. broadcastWord64X2# :: Word# -> Word64X2# broadcastWord64X2# = let x = x in x -- | Broadcast a scalar to all elements of a vector. broadcastWord8X32# :: Word# -> Word8X32# broadcastWord8X32# = let x = x in x -- | Broadcast a scalar to all elements of a vector. broadcastWord16X16# :: Word# -> Word16X16# broadcastWord16X16# = let x = x in x -- | Broadcast a scalar to all elements of a vector. broadcastWord32X8# :: Word# -> Word32X8# broadcastWord32X8# = let x = x in x -- | Broadcast a scalar to all elements of a vector. broadcastWord64X4# :: Word# -> Word64X4# broadcastWord64X4# = let x = x in x -- | Broadcast a scalar to all elements of a vector. broadcastWord8X64# :: Word# -> Word8X64# broadcastWord8X64# = let x = x in x -- | Broadcast a scalar to all elements of a vector. broadcastWord16X32# :: Word# -> Word16X32# broadcastWord16X32# = let x = x in x -- | Broadcast a scalar to all elements of a vector. broadcastWord32X16# :: Word# -> Word32X16# broadcastWord32X16# = let x = x in x -- | Broadcast a scalar to all elements of a vector. broadcastWord64X8# :: Word# -> Word64X8# broadcastWord64X8# = let x = x in x -- | Broadcast a scalar to all elements of a vector. broadcastFloatX4# :: Float# -> FloatX4# broadcastFloatX4# = let x = x in x -- | Broadcast a scalar to all elements of a vector. broadcastDoubleX2# :: Double# -> DoubleX2# broadcastDoubleX2# = let x = x in x -- | Broadcast a scalar to all elements of a vector. broadcastFloatX8# :: Float# -> FloatX8# broadcastFloatX8# = let x = x in x -- | Broadcast a scalar to all elements of a vector. broadcastDoubleX4# :: Double# -> DoubleX4# broadcastDoubleX4# = let x = x in x -- | Broadcast a scalar to all elements of a vector. broadcastFloatX16# :: Float# -> FloatX16# broadcastFloatX16# = let x = x in x -- | Broadcast a scalar to all elements of a vector. broadcastDoubleX8# :: Double# -> DoubleX8# broadcastDoubleX8# = let x = x in x -- | Pack the elements of an unboxed tuple into a vector. packInt8X16# :: (# Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int# #) -> Int8X16# packInt8X16# = let x = x in x -- | Pack the elements of an unboxed tuple into a vector. packInt16X8# :: (# Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int# #) -> Int16X8# packInt16X8# = let x = x in x -- | Pack the elements of an unboxed tuple into a vector. packInt32X4# :: (# Int#,Int#,Int#,Int# #) -> Int32X4# packInt32X4# = let x = x in x -- | Pack the elements of an unboxed tuple into a vector. packInt64X2# :: (# Int#,Int# #) -> Int64X2# packInt64X2# = let x = x in x -- | Pack the elements of an unboxed tuple into a vector. packInt8X32# :: (# Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int# #) -> Int8X32# packInt8X32# = let x = x in x -- | Pack the elements of an unboxed tuple into a vector. packInt16X16# :: (# Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int# #) -> Int16X16# packInt16X16# = let x = x in x -- | Pack the elements of an unboxed tuple into a vector. packInt32X8# :: (# Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int# #) -> Int32X8# packInt32X8# = let x = x in x -- | Pack the elements of an unboxed tuple into a vector. packInt64X4# :: (# Int#,Int#,Int#,Int# #) -> Int64X4# packInt64X4# = let x = x in x -- | Pack the elements of an unboxed tuple into a vector. packInt8X64# :: (# Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int# #) -> Int8X64# packInt8X64# = let x = x in x -- | Pack the elements of an unboxed tuple into a vector. packInt16X32# :: (# Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int# #) -> Int16X32# packInt16X32# = let x = x in x -- | Pack the elements of an unboxed tuple into a vector. packInt32X16# :: (# Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int# #) -> Int32X16# packInt32X16# = let x = x in x -- | Pack the elements of an unboxed tuple into a vector. packInt64X8# :: (# Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int# #) -> Int64X8# packInt64X8# = let x = x in x -- | Pack the elements of an unboxed tuple into a vector. packWord8X16# :: (# Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word# #) -> Word8X16# packWord8X16# = let x = x in x -- | Pack the elements of an unboxed tuple into a vector. packWord16X8# :: (# Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word# #) -> Word16X8# packWord16X8# = let x = x in x -- | Pack the elements of an unboxed tuple into a vector. packWord32X4# :: (# Word#,Word#,Word#,Word# #) -> Word32X4# packWord32X4# = let x = x in x -- | Pack the elements of an unboxed tuple into a vector. packWord64X2# :: (# Word#,Word# #) -> Word64X2# packWord64X2# = let x = x in x -- | Pack the elements of an unboxed tuple into a vector. packWord8X32# :: (# Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word# #) -> Word8X32# packWord8X32# = let x = x in x -- | Pack the elements of an unboxed tuple into a vector. packWord16X16# :: (# Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word# #) -> Word16X16# packWord16X16# = let x = x in x -- | Pack the elements of an unboxed tuple into a vector. packWord32X8# :: (# Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word# #) -> Word32X8# packWord32X8# = let x = x in x -- | Pack the elements of an unboxed tuple into a vector. packWord64X4# :: (# Word#,Word#,Word#,Word# #) -> Word64X4# packWord64X4# = let x = x in x -- | Pack the elements of an unboxed tuple into a vector. packWord8X64# :: (# Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word# #) -> Word8X64# packWord8X64# = let x = x in x -- | Pack the elements of an unboxed tuple into a vector. packWord16X32# :: (# Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word# #) -> Word16X32# packWord16X32# = let x = x in x -- | Pack the elements of an unboxed tuple into a vector. packWord32X16# :: (# Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word# #) -> Word32X16# packWord32X16# = let x = x in x -- | Pack the elements of an unboxed tuple into a vector. packWord64X8# :: (# Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word# #) -> Word64X8# packWord64X8# = let x = x in x -- | Pack the elements of an unboxed tuple into a vector. packFloatX4# :: (# Float#,Float#,Float#,Float# #) -> FloatX4# packFloatX4# = let x = x in x -- | Pack the elements of an unboxed tuple into a vector. packDoubleX2# :: (# Double#,Double# #) -> DoubleX2# packDoubleX2# = let x = x in x -- | Pack the elements of an unboxed tuple into a vector. packFloatX8# :: (# Float#,Float#,Float#,Float#,Float#,Float#,Float#,Float# #) -> FloatX8# packFloatX8# = let x = x in x -- | Pack the elements of an unboxed tuple into a vector. packDoubleX4# :: (# Double#,Double#,Double#,Double# #) -> DoubleX4# packDoubleX4# = let x = x in x -- | Pack the elements of an unboxed tuple into a vector. packFloatX16# :: (# Float#,Float#,Float#,Float#,Float#,Float#,Float#,Float#,Float#,Float#,Float#,Float#,Float#,Float#,Float#,Float# #) -> FloatX16# packFloatX16# = let x = x in x -- | Pack the elements of an unboxed tuple into a vector. packDoubleX8# :: (# Double#,Double#,Double#,Double#,Double#,Double#,Double#,Double# #) -> DoubleX8# packDoubleX8# = let x = x in x -- | Unpack the elements of a vector into an unboxed tuple. # unpackInt8X16# :: Int8X16# -> (# Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int# #) unpackInt8X16# = let x = x in x -- | Unpack the elements of a vector into an unboxed tuple. # unpackInt16X8# :: Int16X8# -> (# Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int# #) unpackInt16X8# = let x = x in x -- | Unpack the elements of a vector into an unboxed tuple. # unpackInt32X4# :: Int32X4# -> (# Int#,Int#,Int#,Int# #) unpackInt32X4# = let x = x in x -- | Unpack the elements of a vector into an unboxed tuple. # unpackInt64X2# :: Int64X2# -> (# Int#,Int# #) unpackInt64X2# = let x = x in x -- | Unpack the elements of a vector into an unboxed tuple. # unpackInt8X32# :: Int8X32# -> (# Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int# #) unpackInt8X32# = let x = x in x -- | Unpack the elements of a vector into an unboxed tuple. # unpackInt16X16# :: Int16X16# -> (# Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int# #) unpackInt16X16# = let x = x in x -- | Unpack the elements of a vector into an unboxed tuple. # unpackInt32X8# :: Int32X8# -> (# Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int# #) unpackInt32X8# = let x = x in x -- | Unpack the elements of a vector into an unboxed tuple. # unpackInt64X4# :: Int64X4# -> (# Int#,Int#,Int#,Int# #) unpackInt64X4# = let x = x in x -- | Unpack the elements of a vector into an unboxed tuple. # unpackInt8X64# :: Int8X64# -> (# Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int# #) unpackInt8X64# = let x = x in x -- | Unpack the elements of a vector into an unboxed tuple. # unpackInt16X32# :: Int16X32# -> (# Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int# #) unpackInt16X32# = let x = x in x -- | Unpack the elements of a vector into an unboxed tuple. # unpackInt32X16# :: Int32X16# -> (# Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int# #) unpackInt32X16# = let x = x in x -- | Unpack the elements of a vector into an unboxed tuple. # unpackInt64X8# :: Int64X8# -> (# Int#,Int#,Int#,Int#,Int#,Int#,Int#,Int# #) unpackInt64X8# = let x = x in x -- | Unpack the elements of a vector into an unboxed tuple. # unpackWord8X16# :: Word8X16# -> (# Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word# #) unpackWord8X16# = let x = x in x -- | Unpack the elements of a vector into an unboxed tuple. # unpackWord16X8# :: Word16X8# -> (# Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word# #) unpackWord16X8# = let x = x in x -- | Unpack the elements of a vector into an unboxed tuple. # unpackWord32X4# :: Word32X4# -> (# Word#,Word#,Word#,Word# #) unpackWord32X4# = let x = x in x -- | Unpack the elements of a vector into an unboxed tuple. # unpackWord64X2# :: Word64X2# -> (# Word#,Word# #) unpackWord64X2# = let x = x in x -- | Unpack the elements of a vector into an unboxed tuple. # unpackWord8X32# :: Word8X32# -> (# Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word# #) unpackWord8X32# = let x = x in x -- | Unpack the elements of a vector into an unboxed tuple. # unpackWord16X16# :: Word16X16# -> (# Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word# #) unpackWord16X16# = let x = x in x -- | Unpack the elements of a vector into an unboxed tuple. # unpackWord32X8# :: Word32X8# -> (# Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word# #) unpackWord32X8# = let x = x in x -- | Unpack the elements of a vector into an unboxed tuple. # unpackWord64X4# :: Word64X4# -> (# Word#,Word#,Word#,Word# #) unpackWord64X4# = let x = x in x -- | Unpack the elements of a vector into an unboxed tuple. # unpackWord8X64# :: Word8X64# -> (# Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word# #) unpackWord8X64# = let x = x in x -- | Unpack the elements of a vector into an unboxed tuple. # unpackWord16X32# :: Word16X32# -> (# Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word# #) unpackWord16X32# = let x = x in x -- | Unpack the elements of a vector into an unboxed tuple. # unpackWord32X16# :: Word32X16# -> (# Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word# #) unpackWord32X16# = let x = x in x -- | Unpack the elements of a vector into an unboxed tuple. # unpackWord64X8# :: Word64X8# -> (# Word#,Word#,Word#,Word#,Word#,Word#,Word#,Word# #) unpackWord64X8# = let x = x in x -- | Unpack the elements of a vector into an unboxed tuple. # unpackFloatX4# :: FloatX4# -> (# Float#,Float#,Float#,Float# #) unpackFloatX4# = let x = x in x -- | Unpack the elements of a vector into an unboxed tuple. # unpackDoubleX2# :: DoubleX2# -> (# Double#,Double# #) unpackDoubleX2# = let x = x in x -- | Unpack the elements of a vector into an unboxed tuple. # unpackFloatX8# :: FloatX8# -> (# Float#,Float#,Float#,Float#,Float#,Float#,Float#,Float# #) unpackFloatX8# = let x = x in x -- | Unpack the elements of a vector into an unboxed tuple. # unpackDoubleX4# :: DoubleX4# -> (# Double#,Double#,Double#,Double# #) unpackDoubleX4# = let x = x in x -- | Unpack the elements of a vector into an unboxed tuple. # unpackFloatX16# :: FloatX16# -> (# Float#,Float#,Float#,Float#,Float#,Float#,Float#,Float#,Float#,Float#,Float#,Float#,Float#,Float#,Float#,Float# #) unpackFloatX16# = let x = x in x -- | Unpack the elements of a vector into an unboxed tuple. # unpackDoubleX8# :: DoubleX8# -> (# Double#,Double#,Double#,Double#,Double#,Double#,Double#,Double# #) unpackDoubleX8# = let x = x in x -- | Insert a scalar at the given position in a vector. insertInt8X16# :: Int8X16# -> Int# -> Int# -> Int8X16# insertInt8X16# = let x = x in x -- | Insert a scalar at the given position in a vector. insertInt16X8# :: Int16X8# -> Int# -> Int# -> Int16X8# insertInt16X8# = let x = x in x -- | Insert a scalar at the given position in a vector. insertInt32X4# :: Int32X4# -> Int# -> Int# -> Int32X4# insertInt32X4# = let x = x in x -- | Insert a scalar at the given position in a vector. insertInt64X2# :: Int64X2# -> Int# -> Int# -> Int64X2# insertInt64X2# = let x = x in x -- | Insert a scalar at the given position in a vector. insertInt8X32# :: Int8X32# -> Int# -> Int# -> Int8X32# insertInt8X32# = let x = x in x -- | Insert a scalar at the given position in a vector. insertInt16X16# :: Int16X16# -> Int# -> Int# -> Int16X16# insertInt16X16# = let x = x in x -- | Insert a scalar at the given position in a vector. insertInt32X8# :: Int32X8# -> Int# -> Int# -> Int32X8# insertInt32X8# = let x = x in x -- | Insert a scalar at the given position in a vector. insertInt64X4# :: Int64X4# -> Int# -> Int# -> Int64X4# insertInt64X4# = let x = x in x -- | Insert a scalar at the given position in a vector. insertInt8X64# :: Int8X64# -> Int# -> Int# -> Int8X64# insertInt8X64# = let x = x in x -- | Insert a scalar at the given position in a vector. insertInt16X32# :: Int16X32# -> Int# -> Int# -> Int16X32# insertInt16X32# = let x = x in x -- | Insert a scalar at the given position in a vector. insertInt32X16# :: Int32X16# -> Int# -> Int# -> Int32X16# insertInt32X16# = let x = x in x -- | Insert a scalar at the given position in a vector. insertInt64X8# :: Int64X8# -> Int# -> Int# -> Int64X8# insertInt64X8# = let x = x in x -- | Insert a scalar at the given position in a vector. insertWord8X16# :: Word8X16# -> Word# -> Int# -> Word8X16# insertWord8X16# = let x = x in x -- | Insert a scalar at the given position in a vector. insertWord16X8# :: Word16X8# -> Word# -> Int# -> Word16X8# insertWord16X8# = let x = x in x -- | Insert a scalar at the given position in a vector. insertWord32X4# :: Word32X4# -> Word# -> Int# -> Word32X4# insertWord32X4# = let x = x in x -- | Insert a scalar at the given position in a vector. insertWord64X2# :: Word64X2# -> Word# -> Int# -> Word64X2# insertWord64X2# = let x = x in x -- | Insert a scalar at the given position in a vector. insertWord8X32# :: Word8X32# -> Word# -> Int# -> Word8X32# insertWord8X32# = let x = x in x -- | Insert a scalar at the given position in a vector. insertWord16X16# :: Word16X16# -> Word# -> Int# -> Word16X16# insertWord16X16# = let x = x in x -- | Insert a scalar at the given position in a vector. insertWord32X8# :: Word32X8# -> Word# -> Int# -> Word32X8# insertWord32X8# = let x = x in x -- | Insert a scalar at the given position in a vector. insertWord64X4# :: Word64X4# -> Word# -> Int# -> Word64X4# insertWord64X4# = let x = x in x -- | Insert a scalar at the given position in a vector. insertWord8X64# :: Word8X64# -> Word# -> Int# -> Word8X64# insertWord8X64# = let x = x in x -- | Insert a scalar at the given position in a vector. insertWord16X32# :: Word16X32# -> Word# -> Int# -> Word16X32# insertWord16X32# = let x = x in x -- | Insert a scalar at the given position in a vector. insertWord32X16# :: Word32X16# -> Word# -> Int# -> Word32X16# insertWord32X16# = let x = x in x -- | Insert a scalar at the given position in a vector. insertWord64X8# :: Word64X8# -> Word# -> Int# -> Word64X8# insertWord64X8# = let x = x in x -- | Insert a scalar at the given position in a vector. insertFloatX4# :: FloatX4# -> Float# -> Int# -> FloatX4# insertFloatX4# = let x = x in x -- | Insert a scalar at the given position in a vector. insertDoubleX2# :: DoubleX2# -> Double# -> Int# -> DoubleX2# insertDoubleX2# = let x = x in x -- | Insert a scalar at the given position in a vector. insertFloatX8# :: FloatX8# -> Float# -> Int# -> FloatX8# insertFloatX8# = let x = x in x -- | Insert a scalar at the given position in a vector. insertDoubleX4# :: DoubleX4# -> Double# -> Int# -> DoubleX4# insertDoubleX4# = let x = x in x -- | Insert a scalar at the given position in a vector. insertFloatX16# :: FloatX16# -> Float# -> Int# -> FloatX16# insertFloatX16# = let x = x in x -- | Insert a scalar at the given position in a vector. insertDoubleX8# :: DoubleX8# -> Double# -> Int# -> DoubleX8# insertDoubleX8# = let x = x in x -- | Add two vectors element-wise. plusInt8X16# :: Int8X16# -> Int8X16# -> Int8X16# plusInt8X16# = let x = x in x -- | Add two vectors element-wise. plusInt16X8# :: Int16X8# -> Int16X8# -> Int16X8# plusInt16X8# = let x = x in x -- | Add two vectors element-wise. plusInt32X4# :: Int32X4# -> Int32X4# -> Int32X4# plusInt32X4# = let x = x in x -- | Add two vectors element-wise. plusInt64X2# :: Int64X2# -> Int64X2# -> Int64X2# plusInt64X2# = let x = x in x -- | Add two vectors element-wise. plusInt8X32# :: Int8X32# -> Int8X32# -> Int8X32# plusInt8X32# = let x = x in x -- | Add two vectors element-wise. plusInt16X16# :: Int16X16# -> Int16X16# -> Int16X16# plusInt16X16# = let x = x in x -- | Add two vectors element-wise. plusInt32X8# :: Int32X8# -> Int32X8# -> Int32X8# plusInt32X8# = let x = x in x -- | Add two vectors element-wise. plusInt64X4# :: Int64X4# -> Int64X4# -> Int64X4# plusInt64X4# = let x = x in x -- | Add two vectors element-wise. plusInt8X64# :: Int8X64# -> Int8X64# -> Int8X64# plusInt8X64# = let x = x in x -- | Add two vectors element-wise. plusInt16X32# :: Int16X32# -> Int16X32# -> Int16X32# plusInt16X32# = let x = x in x -- | Add two vectors element-wise. plusInt32X16# :: Int32X16# -> Int32X16# -> Int32X16# plusInt32X16# = let x = x in x -- | Add two vectors element-wise. plusInt64X8# :: Int64X8# -> Int64X8# -> Int64X8# plusInt64X8# = let x = x in x -- | Add two vectors element-wise. plusWord8X16# :: Word8X16# -> Word8X16# -> Word8X16# plusWord8X16# = let x = x in x -- | Add two vectors element-wise. plusWord16X8# :: Word16X8# -> Word16X8# -> Word16X8# plusWord16X8# = let x = x in x -- | Add two vectors element-wise. plusWord32X4# :: Word32X4# -> Word32X4# -> Word32X4# plusWord32X4# = let x = x in x -- | Add two vectors element-wise. plusWord64X2# :: Word64X2# -> Word64X2# -> Word64X2# plusWord64X2# = let x = x in x -- | Add two vectors element-wise. plusWord8X32# :: Word8X32# -> Word8X32# -> Word8X32# plusWord8X32# = let x = x in x -- | Add two vectors element-wise. plusWord16X16# :: Word16X16# -> Word16X16# -> Word16X16# plusWord16X16# = let x = x in x -- | Add two vectors element-wise. plusWord32X8# :: Word32X8# -> Word32X8# -> Word32X8# plusWord32X8# = let x = x in x -- | Add two vectors element-wise. plusWord64X4# :: Word64X4# -> Word64X4# -> Word64X4# plusWord64X4# = let x = x in x -- | Add two vectors element-wise. plusWord8X64# :: Word8X64# -> Word8X64# -> Word8X64# plusWord8X64# = let x = x in x -- | Add two vectors element-wise. plusWord16X32# :: Word16X32# -> Word16X32# -> Word16X32# plusWord16X32# = let x = x in x -- | Add two vectors element-wise. plusWord32X16# :: Word32X16# -> Word32X16# -> Word32X16# plusWord32X16# = let x = x in x -- | Add two vectors element-wise. plusWord64X8# :: Word64X8# -> Word64X8# -> Word64X8# plusWord64X8# = let x = x in x -- | Add two vectors element-wise. plusFloatX4# :: FloatX4# -> FloatX4# -> FloatX4# plusFloatX4# = let x = x in x -- | Add two vectors element-wise. plusDoubleX2# :: DoubleX2# -> DoubleX2# -> DoubleX2# plusDoubleX2# = let x = x in x -- | Add two vectors element-wise. plusFloatX8# :: FloatX8# -> FloatX8# -> FloatX8# plusFloatX8# = let x = x in x -- | Add two vectors element-wise. plusDoubleX4# :: DoubleX4# -> DoubleX4# -> DoubleX4# plusDoubleX4# = let x = x in x -- | Add two vectors element-wise. plusFloatX16# :: FloatX16# -> FloatX16# -> FloatX16# plusFloatX16# = let x = x in x -- | Add two vectors element-wise. plusDoubleX8# :: DoubleX8# -> DoubleX8# -> DoubleX8# plusDoubleX8# = let x = x in x -- | Subtract two vectors element-wise. minusInt8X16# :: Int8X16# -> Int8X16# -> Int8X16# minusInt8X16# = let x = x in x -- | Subtract two vectors element-wise. minusInt16X8# :: Int16X8# -> Int16X8# -> Int16X8# minusInt16X8# = let x = x in x -- | Subtract two vectors element-wise. minusInt32X4# :: Int32X4# -> Int32X4# -> Int32X4# minusInt32X4# = let x = x in x -- | Subtract two vectors element-wise. minusInt64X2# :: Int64X2# -> Int64X2# -> Int64X2# minusInt64X2# = let x = x in x -- | Subtract two vectors element-wise. minusInt8X32# :: Int8X32# -> Int8X32# -> Int8X32# minusInt8X32# = let x = x in x -- | Subtract two vectors element-wise. minusInt16X16# :: Int16X16# -> Int16X16# -> Int16X16# minusInt16X16# = let x = x in x -- | Subtract two vectors element-wise. minusInt32X8# :: Int32X8# -> Int32X8# -> Int32X8# minusInt32X8# = let x = x in x -- | Subtract two vectors element-wise. minusInt64X4# :: Int64X4# -> Int64X4# -> Int64X4# minusInt64X4# = let x = x in x -- | Subtract two vectors element-wise. minusInt8X64# :: Int8X64# -> Int8X64# -> Int8X64# minusInt8X64# = let x = x in x -- | Subtract two vectors element-wise. minusInt16X32# :: Int16X32# -> Int16X32# -> Int16X32# minusInt16X32# = let x = x in x -- | Subtract two vectors element-wise. minusInt32X16# :: Int32X16# -> Int32X16# -> Int32X16# minusInt32X16# = let x = x in x -- | Subtract two vectors element-wise. minusInt64X8# :: Int64X8# -> Int64X8# -> Int64X8# minusInt64X8# = let x = x in x -- | Subtract two vectors element-wise. minusWord8X16# :: Word8X16# -> Word8X16# -> Word8X16# minusWord8X16# = let x = x in x -- | Subtract two vectors element-wise. minusWord16X8# :: Word16X8# -> Word16X8# -> Word16X8# minusWord16X8# = let x = x in x -- | Subtract two vectors element-wise. minusWord32X4# :: Word32X4# -> Word32X4# -> Word32X4# minusWord32X4# = let x = x in x -- | Subtract two vectors element-wise. minusWord64X2# :: Word64X2# -> Word64X2# -> Word64X2# minusWord64X2# = let x = x in x -- | Subtract two vectors element-wise. minusWord8X32# :: Word8X32# -> Word8X32# -> Word8X32# minusWord8X32# = let x = x in x -- | Subtract two vectors element-wise. minusWord16X16# :: Word16X16# -> Word16X16# -> Word16X16# minusWord16X16# = let x = x in x -- | Subtract two vectors element-wise. minusWord32X8# :: Word32X8# -> Word32X8# -> Word32X8# minusWord32X8# = let x = x in x -- | Subtract two vectors element-wise. minusWord64X4# :: Word64X4# -> Word64X4# -> Word64X4# minusWord64X4# = let x = x in x -- | Subtract two vectors element-wise. minusWord8X64# :: Word8X64# -> Word8X64# -> Word8X64# minusWord8X64# = let x = x in x -- | Subtract two vectors element-wise. minusWord16X32# :: Word16X32# -> Word16X32# -> Word16X32# minusWord16X32# = let x = x in x -- | Subtract two vectors element-wise. minusWord32X16# :: Word32X16# -> Word32X16# -> Word32X16# minusWord32X16# = let x = x in x -- | Subtract two vectors element-wise. minusWord64X8# :: Word64X8# -> Word64X8# -> Word64X8# minusWord64X8# = let x = x in x -- | Subtract two vectors element-wise. minusFloatX4# :: FloatX4# -> FloatX4# -> FloatX4# minusFloatX4# = let x = x in x -- | Subtract two vectors element-wise. minusDoubleX2# :: DoubleX2# -> DoubleX2# -> DoubleX2# minusDoubleX2# = let x = x in x -- | Subtract two vectors element-wise. minusFloatX8# :: FloatX8# -> FloatX8# -> FloatX8# minusFloatX8# = let x = x in x -- | Subtract two vectors element-wise. minusDoubleX4# :: DoubleX4# -> DoubleX4# -> DoubleX4# minusDoubleX4# = let x = x in x -- | Subtract two vectors element-wise. minusFloatX16# :: FloatX16# -> FloatX16# -> FloatX16# minusFloatX16# = let x = x in x -- | Subtract two vectors element-wise. minusDoubleX8# :: DoubleX8# -> DoubleX8# -> DoubleX8# minusDoubleX8# = let x = x in x -- | Multiply two vectors element-wise. timesInt8X16# :: Int8X16# -> Int8X16# -> Int8X16# timesInt8X16# = let x = x in x -- | Multiply two vectors element-wise. timesInt16X8# :: Int16X8# -> Int16X8# -> Int16X8# timesInt16X8# = let x = x in x -- | Multiply two vectors element-wise. timesInt32X4# :: Int32X4# -> Int32X4# -> Int32X4# timesInt32X4# = let x = x in x -- | Multiply two vectors element-wise. timesInt64X2# :: Int64X2# -> Int64X2# -> Int64X2# timesInt64X2# = let x = x in x -- | Multiply two vectors element-wise. timesInt8X32# :: Int8X32# -> Int8X32# -> Int8X32# timesInt8X32# = let x = x in x -- | Multiply two vectors element-wise. timesInt16X16# :: Int16X16# -> Int16X16# -> Int16X16# timesInt16X16# = let x = x in x -- | Multiply two vectors element-wise. timesInt32X8# :: Int32X8# -> Int32X8# -> Int32X8# timesInt32X8# = let x = x in x -- | Multiply two vectors element-wise. timesInt64X4# :: Int64X4# -> Int64X4# -> Int64X4# timesInt64X4# = let x = x in x -- | Multiply two vectors element-wise. timesInt8X64# :: Int8X64# -> Int8X64# -> Int8X64# timesInt8X64# = let x = x in x -- | Multiply two vectors element-wise. timesInt16X32# :: Int16X32# -> Int16X32# -> Int16X32# timesInt16X32# = let x = x in x -- | Multiply two vectors element-wise. timesInt32X16# :: Int32X16# -> Int32X16# -> Int32X16# timesInt32X16# = let x = x in x -- | Multiply two vectors element-wise. timesInt64X8# :: Int64X8# -> Int64X8# -> Int64X8# timesInt64X8# = let x = x in x -- | Multiply two vectors element-wise. timesWord8X16# :: Word8X16# -> Word8X16# -> Word8X16# timesWord8X16# = let x = x in x -- | Multiply two vectors element-wise. timesWord16X8# :: Word16X8# -> Word16X8# -> Word16X8# timesWord16X8# = let x = x in x -- | Multiply two vectors element-wise. timesWord32X4# :: Word32X4# -> Word32X4# -> Word32X4# timesWord32X4# = let x = x in x -- | Multiply two vectors element-wise. timesWord64X2# :: Word64X2# -> Word64X2# -> Word64X2# timesWord64X2# = let x = x in x -- | Multiply two vectors element-wise. timesWord8X32# :: Word8X32# -> Word8X32# -> Word8X32# timesWord8X32# = let x = x in x -- | Multiply two vectors element-wise. timesWord16X16# :: Word16X16# -> Word16X16# -> Word16X16# timesWord16X16# = let x = x in x -- | Multiply two vectors element-wise. timesWord32X8# :: Word32X8# -> Word32X8# -> Word32X8# timesWord32X8# = let x = x in x -- | Multiply two vectors element-wise. timesWord64X4# :: Word64X4# -> Word64X4# -> Word64X4# timesWord64X4# = let x = x in x -- | Multiply two vectors element-wise. timesWord8X64# :: Word8X64# -> Word8X64# -> Word8X64# timesWord8X64# = let x = x in x -- | Multiply two vectors element-wise. timesWord16X32# :: Word16X32# -> Word16X32# -> Word16X32# timesWord16X32# = let x = x in x -- | Multiply two vectors element-wise. timesWord32X16# :: Word32X16# -> Word32X16# -> Word32X16# timesWord32X16# = let x = x in x -- | Multiply two vectors element-wise. timesWord64X8# :: Word64X8# -> Word64X8# -> Word64X8# timesWord64X8# = let x = x in x -- | Multiply two vectors element-wise. timesFloatX4# :: FloatX4# -> FloatX4# -> FloatX4# timesFloatX4# = let x = x in x -- | Multiply two vectors element-wise. timesDoubleX2# :: DoubleX2# -> DoubleX2# -> DoubleX2# timesDoubleX2# = let x = x in x -- | Multiply two vectors element-wise. timesFloatX8# :: FloatX8# -> FloatX8# -> FloatX8# timesFloatX8# = let x = x in x -- | Multiply two vectors element-wise. timesDoubleX4# :: DoubleX4# -> DoubleX4# -> DoubleX4# timesDoubleX4# = let x = x in x -- | Multiply two vectors element-wise. timesFloatX16# :: FloatX16# -> FloatX16# -> FloatX16# timesFloatX16# = let x = x in x -- | Multiply two vectors element-wise. timesDoubleX8# :: DoubleX8# -> DoubleX8# -> DoubleX8# timesDoubleX8# = let x = x in x -- | Divide two vectors element-wise. divideFloatX4# :: FloatX4# -> FloatX4# -> FloatX4# divideFloatX4# = let x = x in x -- | Divide two vectors element-wise. divideDoubleX2# :: DoubleX2# -> DoubleX2# -> DoubleX2# divideDoubleX2# = let x = x in x -- | Divide two vectors element-wise. divideFloatX8# :: FloatX8# -> FloatX8# -> FloatX8# divideFloatX8# = let x = x in x -- | Divide two vectors element-wise. divideDoubleX4# :: DoubleX4# -> DoubleX4# -> DoubleX4# divideDoubleX4# = let x = x in x -- | Divide two vectors element-wise. divideFloatX16# :: FloatX16# -> FloatX16# -> FloatX16# divideFloatX16# = let x = x in x -- | Divide two vectors element-wise. divideDoubleX8# :: DoubleX8# -> DoubleX8# -> DoubleX8# divideDoubleX8# = let x = x in x -- | Rounds towards zero element-wise. quotInt8X16# :: Int8X16# -> Int8X16# -> Int8X16# quotInt8X16# = let x = x in x -- | Rounds towards zero element-wise. quotInt16X8# :: Int16X8# -> Int16X8# -> Int16X8# quotInt16X8# = let x = x in x -- | Rounds towards zero element-wise. quotInt32X4# :: Int32X4# -> Int32X4# -> Int32X4# quotInt32X4# = let x = x in x -- | Rounds towards zero element-wise. quotInt64X2# :: Int64X2# -> Int64X2# -> Int64X2# quotInt64X2# = let x = x in x -- | Rounds towards zero element-wise. quotInt8X32# :: Int8X32# -> Int8X32# -> Int8X32# quotInt8X32# = let x = x in x -- | Rounds towards zero element-wise. quotInt16X16# :: Int16X16# -> Int16X16# -> Int16X16# quotInt16X16# = let x = x in x -- | Rounds towards zero element-wise. quotInt32X8# :: Int32X8# -> Int32X8# -> Int32X8# quotInt32X8# = let x = x in x -- | Rounds towards zero element-wise. quotInt64X4# :: Int64X4# -> Int64X4# -> Int64X4# quotInt64X4# = let x = x in x -- | Rounds towards zero element-wise. quotInt8X64# :: Int8X64# -> Int8X64# -> Int8X64# quotInt8X64# = let x = x in x -- | Rounds towards zero element-wise. quotInt16X32# :: Int16X32# -> Int16X32# -> Int16X32# quotInt16X32# = let x = x in x -- | Rounds towards zero element-wise. quotInt32X16# :: Int32X16# -> Int32X16# -> Int32X16# quotInt32X16# = let x = x in x -- | Rounds towards zero element-wise. quotInt64X8# :: Int64X8# -> Int64X8# -> Int64X8# quotInt64X8# = let x = x in x -- | Rounds towards zero element-wise. quotWord8X16# :: Word8X16# -> Word8X16# -> Word8X16# quotWord8X16# = let x = x in x -- | Rounds towards zero element-wise. quotWord16X8# :: Word16X8# -> Word16X8# -> Word16X8# quotWord16X8# = let x = x in x -- | Rounds towards zero element-wise. quotWord32X4# :: Word32X4# -> Word32X4# -> Word32X4# quotWord32X4# = let x = x in x -- | Rounds towards zero element-wise. quotWord64X2# :: Word64X2# -> Word64X2# -> Word64X2# quotWord64X2# = let x = x in x -- | Rounds towards zero element-wise. quotWord8X32# :: Word8X32# -> Word8X32# -> Word8X32# quotWord8X32# = let x = x in x -- | Rounds towards zero element-wise. quotWord16X16# :: Word16X16# -> Word16X16# -> Word16X16# quotWord16X16# = let x = x in x -- | Rounds towards zero element-wise. quotWord32X8# :: Word32X8# -> Word32X8# -> Word32X8# quotWord32X8# = let x = x in x -- | Rounds towards zero element-wise. quotWord64X4# :: Word64X4# -> Word64X4# -> Word64X4# quotWord64X4# = let x = x in x -- | Rounds towards zero element-wise. quotWord8X64# :: Word8X64# -> Word8X64# -> Word8X64# quotWord8X64# = let x = x in x -- | Rounds towards zero element-wise. quotWord16X32# :: Word16X32# -> Word16X32# -> Word16X32# quotWord16X32# = let x = x in x -- | Rounds towards zero element-wise. quotWord32X16# :: Word32X16# -> Word32X16# -> Word32X16# quotWord32X16# = let x = x in x -- | Rounds towards zero element-wise. quotWord64X8# :: Word64X8# -> Word64X8# -> Word64X8# quotWord64X8# = let x = x in x -- | Satisfies @(quot\# x y) times\# y plus\# (rem\# x y) == x@. remInt8X16# :: Int8X16# -> Int8X16# -> Int8X16# remInt8X16# = let x = x in x -- | Satisfies @(quot\# x y) times\# y plus\# (rem\# x y) == x@. remInt16X8# :: Int16X8# -> Int16X8# -> Int16X8# remInt16X8# = let x = x in x -- | Satisfies @(quot\# x y) times\# y plus\# (rem\# x y) == x@. remInt32X4# :: Int32X4# -> Int32X4# -> Int32X4# remInt32X4# = let x = x in x -- | Satisfies @(quot\# x y) times\# y plus\# (rem\# x y) == x@. remInt64X2# :: Int64X2# -> Int64X2# -> Int64X2# remInt64X2# = let x = x in x -- | Satisfies @(quot\# x y) times\# y plus\# (rem\# x y) == x@. remInt8X32# :: Int8X32# -> Int8X32# -> Int8X32# remInt8X32# = let x = x in x -- | Satisfies @(quot\# x y) times\# y plus\# (rem\# x y) == x@. remInt16X16# :: Int16X16# -> Int16X16# -> Int16X16# remInt16X16# = let x = x in x -- | Satisfies @(quot\# x y) times\# y plus\# (rem\# x y) == x@. remInt32X8# :: Int32X8# -> Int32X8# -> Int32X8# remInt32X8# = let x = x in x -- | Satisfies @(quot\# x y) times\# y plus\# (rem\# x y) == x@. remInt64X4# :: Int64X4# -> Int64X4# -> Int64X4# remInt64X4# = let x = x in x -- | Satisfies @(quot\# x y) times\# y plus\# (rem\# x y) == x@. remInt8X64# :: Int8X64# -> Int8X64# -> Int8X64# remInt8X64# = let x = x in x -- | Satisfies @(quot\# x y) times\# y plus\# (rem\# x y) == x@. remInt16X32# :: Int16X32# -> Int16X32# -> Int16X32# remInt16X32# = let x = x in x -- | Satisfies @(quot\# x y) times\# y plus\# (rem\# x y) == x@. remInt32X16# :: Int32X16# -> Int32X16# -> Int32X16# remInt32X16# = let x = x in x -- | Satisfies @(quot\# x y) times\# y plus\# (rem\# x y) == x@. remInt64X8# :: Int64X8# -> Int64X8# -> Int64X8# remInt64X8# = let x = x in x -- | Satisfies @(quot\# x y) times\# y plus\# (rem\# x y) == x@. remWord8X16# :: Word8X16# -> Word8X16# -> Word8X16# remWord8X16# = let x = x in x -- | Satisfies @(quot\# x y) times\# y plus\# (rem\# x y) == x@. remWord16X8# :: Word16X8# -> Word16X8# -> Word16X8# remWord16X8# = let x = x in x -- | Satisfies @(quot\# x y) times\# y plus\# (rem\# x y) == x@. remWord32X4# :: Word32X4# -> Word32X4# -> Word32X4# remWord32X4# = let x = x in x -- | Satisfies @(quot\# x y) times\# y plus\# (rem\# x y) == x@. remWord64X2# :: Word64X2# -> Word64X2# -> Word64X2# remWord64X2# = let x = x in x -- | Satisfies @(quot\# x y) times\# y plus\# (rem\# x y) == x@. remWord8X32# :: Word8X32# -> Word8X32# -> Word8X32# remWord8X32# = let x = x in x -- | Satisfies @(quot\# x y) times\# y plus\# (rem\# x y) == x@. remWord16X16# :: Word16X16# -> Word16X16# -> Word16X16# remWord16X16# = let x = x in x -- | Satisfies @(quot\# x y) times\# y plus\# (rem\# x y) == x@. remWord32X8# :: Word32X8# -> Word32X8# -> Word32X8# remWord32X8# = let x = x in x -- | Satisfies @(quot\# x y) times\# y plus\# (rem\# x y) == x@. remWord64X4# :: Word64X4# -> Word64X4# -> Word64X4# remWord64X4# = let x = x in x -- | Satisfies @(quot\# x y) times\# y plus\# (rem\# x y) == x@. remWord8X64# :: Word8X64# -> Word8X64# -> Word8X64# remWord8X64# = let x = x in x -- | Satisfies @(quot\# x y) times\# y plus\# (rem\# x y) == x@. remWord16X32# :: Word16X32# -> Word16X32# -> Word16X32# remWord16X32# = let x = x in x -- | Satisfies @(quot\# x y) times\# y plus\# (rem\# x y) == x@. remWord32X16# :: Word32X16# -> Word32X16# -> Word32X16# remWord32X16# = let x = x in x -- | Satisfies @(quot\# x y) times\# y plus\# (rem\# x y) == x@. remWord64X8# :: Word64X8# -> Word64X8# -> Word64X8# remWord64X8# = let x = x in x -- | Negate element-wise. negateInt8X16# :: Int8X16# -> Int8X16# negateInt8X16# = let x = x in x -- | Negate element-wise. negateInt16X8# :: Int16X8# -> Int16X8# negateInt16X8# = let x = x in x -- | Negate element-wise. negateInt32X4# :: Int32X4# -> Int32X4# negateInt32X4# = let x = x in x -- | Negate element-wise. negateInt64X2# :: Int64X2# -> Int64X2# negateInt64X2# = let x = x in x -- | Negate element-wise. negateInt8X32# :: Int8X32# -> Int8X32# negateInt8X32# = let x = x in x -- | Negate element-wise. negateInt16X16# :: Int16X16# -> Int16X16# negateInt16X16# = let x = x in x -- | Negate element-wise. negateInt32X8# :: Int32X8# -> Int32X8# negateInt32X8# = let x = x in x -- | Negate element-wise. negateInt64X4# :: Int64X4# -> Int64X4# negateInt64X4# = let x = x in x -- | Negate element-wise. negateInt8X64# :: Int8X64# -> Int8X64# negateInt8X64# = let x = x in x -- | Negate element-wise. negateInt16X32# :: Int16X32# -> Int16X32# negateInt16X32# = let x = x in x -- | Negate element-wise. negateInt32X16# :: Int32X16# -> Int32X16# negateInt32X16# = let x = x in x -- | Negate element-wise. negateInt64X8# :: Int64X8# -> Int64X8# negateInt64X8# = let x = x in x -- | Negate element-wise. negateFloatX4# :: FloatX4# -> FloatX4# negateFloatX4# = let x = x in x -- | Negate element-wise. negateDoubleX2# :: DoubleX2# -> DoubleX2# negateDoubleX2# = let x = x in x -- | Negate element-wise. negateFloatX8# :: FloatX8# -> FloatX8# negateFloatX8# = let x = x in x -- | Negate element-wise. negateDoubleX4# :: DoubleX4# -> DoubleX4# negateDoubleX4# = let x = x in x -- | Negate element-wise. negateFloatX16# :: FloatX16# -> FloatX16# negateFloatX16# = let x = x in x -- | Negate element-wise. negateDoubleX8# :: DoubleX8# -> DoubleX8# negateDoubleX8# = let x = x in x -- | Read a vector from specified index of immutable array. indexInt8X16Array# :: ByteArray# -> Int# -> Int8X16# indexInt8X16Array# = let x = x in x -- | Read a vector from specified index of immutable array. indexInt16X8Array# :: ByteArray# -> Int# -> Int16X8# indexInt16X8Array# = let x = x in x -- | Read a vector from specified index of immutable array. indexInt32X4Array# :: ByteArray# -> Int# -> Int32X4# indexInt32X4Array# = let x = x in x -- | Read a vector from specified index of immutable array. indexInt64X2Array# :: ByteArray# -> Int# -> Int64X2# indexInt64X2Array# = let x = x in x -- | Read a vector from specified index of immutable array. indexInt8X32Array# :: ByteArray# -> Int# -> Int8X32# indexInt8X32Array# = let x = x in x -- | Read a vector from specified index of immutable array. indexInt16X16Array# :: ByteArray# -> Int# -> Int16X16# indexInt16X16Array# = let x = x in x -- | Read a vector from specified index of immutable array. indexInt32X8Array# :: ByteArray# -> Int# -> Int32X8# indexInt32X8Array# = let x = x in x -- | Read a vector from specified index of immutable array. indexInt64X4Array# :: ByteArray# -> Int# -> Int64X4# indexInt64X4Array# = let x = x in x -- | Read a vector from specified index of immutable array. indexInt8X64Array# :: ByteArray# -> Int# -> Int8X64# indexInt8X64Array# = let x = x in x -- | Read a vector from specified index of immutable array. indexInt16X32Array# :: ByteArray# -> Int# -> Int16X32# indexInt16X32Array# = let x = x in x -- | Read a vector from specified index of immutable array. indexInt32X16Array# :: ByteArray# -> Int# -> Int32X16# indexInt32X16Array# = let x = x in x -- | Read a vector from specified index of immutable array. indexInt64X8Array# :: ByteArray# -> Int# -> Int64X8# indexInt64X8Array# = let x = x in x -- | Read a vector from specified index of immutable array. indexWord8X16Array# :: ByteArray# -> Int# -> Word8X16# indexWord8X16Array# = let x = x in x -- | Read a vector from specified index of immutable array. indexWord16X8Array# :: ByteArray# -> Int# -> Word16X8# indexWord16X8Array# = let x = x in x -- | Read a vector from specified index of immutable array. indexWord32X4Array# :: ByteArray# -> Int# -> Word32X4# indexWord32X4Array# = let x = x in x -- | Read a vector from specified index of immutable array. indexWord64X2Array# :: ByteArray# -> Int# -> Word64X2# indexWord64X2Array# = let x = x in x -- | Read a vector from specified index of immutable array. indexWord8X32Array# :: ByteArray# -> Int# -> Word8X32# indexWord8X32Array# = let x = x in x -- | Read a vector from specified index of immutable array. indexWord16X16Array# :: ByteArray# -> Int# -> Word16X16# indexWord16X16Array# = let x = x in x -- | Read a vector from specified index of immutable array. indexWord32X8Array# :: ByteArray# -> Int# -> Word32X8# indexWord32X8Array# = let x = x in x -- | Read a vector from specified index of immutable array. indexWord64X4Array# :: ByteArray# -> Int# -> Word64X4# indexWord64X4Array# = let x = x in x -- | Read a vector from specified index of immutable array. indexWord8X64Array# :: ByteArray# -> Int# -> Word8X64# indexWord8X64Array# = let x = x in x -- | Read a vector from specified index of immutable array. indexWord16X32Array# :: ByteArray# -> Int# -> Word16X32# indexWord16X32Array# = let x = x in x -- | Read a vector from specified index of immutable array. indexWord32X16Array# :: ByteArray# -> Int# -> Word32X16# indexWord32X16Array# = let x = x in x -- | Read a vector from specified index of immutable array. indexWord64X8Array# :: ByteArray# -> Int# -> Word64X8# indexWord64X8Array# = let x = x in x -- | Read a vector from specified index of immutable array. indexFloatX4Array# :: ByteArray# -> Int# -> FloatX4# indexFloatX4Array# = let x = x in x -- | Read a vector from specified index of immutable array. indexDoubleX2Array# :: ByteArray# -> Int# -> DoubleX2# indexDoubleX2Array# = let x = x in x -- | Read a vector from specified index of immutable array. indexFloatX8Array# :: ByteArray# -> Int# -> FloatX8# indexFloatX8Array# = let x = x in x -- | Read a vector from specified index of immutable array. indexDoubleX4Array# :: ByteArray# -> Int# -> DoubleX4# indexDoubleX4Array# = let x = x in x -- | Read a vector from specified index of immutable array. indexFloatX16Array# :: ByteArray# -> Int# -> FloatX16# indexFloatX16Array# = let x = x in x -- | Read a vector from specified index of immutable array. indexDoubleX8Array# :: ByteArray# -> Int# -> DoubleX8# indexDoubleX8Array# = let x = x in x -- | Read a vector from specified index of mutable array. readInt8X16Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int8X16# #) readInt8X16Array# = let x = x in x -- | Read a vector from specified index of mutable array. readInt16X8Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int16X8# #) readInt16X8Array# = let x = x in x -- | Read a vector from specified index of mutable array. readInt32X4Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int32X4# #) readInt32X4Array# = let x = x in x -- | Read a vector from specified index of mutable array. readInt64X2Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int64X2# #) readInt64X2Array# = let x = x in x -- | Read a vector from specified index of mutable array. readInt8X32Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int8X32# #) readInt8X32Array# = let x = x in x -- | Read a vector from specified index of mutable array. readInt16X16Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int16X16# #) readInt16X16Array# = let x = x in x -- | Read a vector from specified index of mutable array. readInt32X8Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int32X8# #) readInt32X8Array# = let x = x in x -- | Read a vector from specified index of mutable array. readInt64X4Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int64X4# #) readInt64X4Array# = let x = x in x -- | Read a vector from specified index of mutable array. readInt8X64Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int8X64# #) readInt8X64Array# = let x = x in x -- | Read a vector from specified index of mutable array. readInt16X32Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int16X32# #) readInt16X32Array# = let x = x in x -- | Read a vector from specified index of mutable array. readInt32X16Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int32X16# #) readInt32X16Array# = let x = x in x -- | Read a vector from specified index of mutable array. readInt64X8Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int64X8# #) readInt64X8Array# = let x = x in x -- | Read a vector from specified index of mutable array. readWord8X16Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word8X16# #) readWord8X16Array# = let x = x in x -- | Read a vector from specified index of mutable array. readWord16X8Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word16X8# #) readWord16X8Array# = let x = x in x -- | Read a vector from specified index of mutable array. readWord32X4Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word32X4# #) readWord32X4Array# = let x = x in x -- | Read a vector from specified index of mutable array. readWord64X2Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word64X2# #) readWord64X2Array# = let x = x in x -- | Read a vector from specified index of mutable array. readWord8X32Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word8X32# #) readWord8X32Array# = let x = x in x -- | Read a vector from specified index of mutable array. readWord16X16Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word16X16# #) readWord16X16Array# = let x = x in x -- | Read a vector from specified index of mutable array. readWord32X8Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word32X8# #) readWord32X8Array# = let x = x in x -- | Read a vector from specified index of mutable array. readWord64X4Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word64X4# #) readWord64X4Array# = let x = x in x -- | Read a vector from specified index of mutable array. readWord8X64Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word8X64# #) readWord8X64Array# = let x = x in x -- | Read a vector from specified index of mutable array. readWord16X32Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word16X32# #) readWord16X32Array# = let x = x in x -- | Read a vector from specified index of mutable array. readWord32X16Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word32X16# #) readWord32X16Array# = let x = x in x -- | Read a vector from specified index of mutable array. readWord64X8Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word64X8# #) readWord64X8Array# = let x = x in x -- | Read a vector from specified index of mutable array. readFloatX4Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,FloatX4# #) readFloatX4Array# = let x = x in x -- | Read a vector from specified index of mutable array. readDoubleX2Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,DoubleX2# #) readDoubleX2Array# = let x = x in x -- | Read a vector from specified index of mutable array. readFloatX8Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,FloatX8# #) readFloatX8Array# = let x = x in x -- | Read a vector from specified index of mutable array. readDoubleX4Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,DoubleX4# #) readDoubleX4Array# = let x = x in x -- | Read a vector from specified index of mutable array. readFloatX16Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,FloatX16# #) readFloatX16Array# = let x = x in x -- | Read a vector from specified index of mutable array. readDoubleX8Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,DoubleX8# #) readDoubleX8Array# = let x = x in x -- | Write a vector to specified index of mutable array. writeInt8X16Array# :: MutableByteArray# s -> Int# -> Int8X16# -> State# s -> State# s writeInt8X16Array# = let x = x in x -- | Write a vector to specified index of mutable array. writeInt16X8Array# :: MutableByteArray# s -> Int# -> Int16X8# -> State# s -> State# s writeInt16X8Array# = let x = x in x -- | Write a vector to specified index of mutable array. writeInt32X4Array# :: MutableByteArray# s -> Int# -> Int32X4# -> State# s -> State# s writeInt32X4Array# = let x = x in x -- | Write a vector to specified index of mutable array. writeInt64X2Array# :: MutableByteArray# s -> Int# -> Int64X2# -> State# s -> State# s writeInt64X2Array# = let x = x in x -- | Write a vector to specified index of mutable array. writeInt8X32Array# :: MutableByteArray# s -> Int# -> Int8X32# -> State# s -> State# s writeInt8X32Array# = let x = x in x -- | Write a vector to specified index of mutable array. writeInt16X16Array# :: MutableByteArray# s -> Int# -> Int16X16# -> State# s -> State# s writeInt16X16Array# = let x = x in x -- | Write a vector to specified index of mutable array. writeInt32X8Array# :: MutableByteArray# s -> Int# -> Int32X8# -> State# s -> State# s writeInt32X8Array# = let x = x in x -- | Write a vector to specified index of mutable array. writeInt64X4Array# :: MutableByteArray# s -> Int# -> Int64X4# -> State# s -> State# s writeInt64X4Array# = let x = x in x -- | Write a vector to specified index of mutable array. writeInt8X64Array# :: MutableByteArray# s -> Int# -> Int8X64# -> State# s -> State# s writeInt8X64Array# = let x = x in x -- | Write a vector to specified index of mutable array. writeInt16X32Array# :: MutableByteArray# s -> Int# -> Int16X32# -> State# s -> State# s writeInt16X32Array# = let x = x in x -- | Write a vector to specified index of mutable array. writeInt32X16Array# :: MutableByteArray# s -> Int# -> Int32X16# -> State# s -> State# s writeInt32X16Array# = let x = x in x -- | Write a vector to specified index of mutable array. writeInt64X8Array# :: MutableByteArray# s -> Int# -> Int64X8# -> State# s -> State# s writeInt64X8Array# = let x = x in x -- | Write a vector to specified index of mutable array. writeWord8X16Array# :: MutableByteArray# s -> Int# -> Word8X16# -> State# s -> State# s writeWord8X16Array# = let x = x in x -- | Write a vector to specified index of mutable array. writeWord16X8Array# :: MutableByteArray# s -> Int# -> Word16X8# -> State# s -> State# s writeWord16X8Array# = let x = x in x -- | Write a vector to specified index of mutable array. writeWord32X4Array# :: MutableByteArray# s -> Int# -> Word32X4# -> State# s -> State# s writeWord32X4Array# = let x = x in x -- | Write a vector to specified index of mutable array. writeWord64X2Array# :: MutableByteArray# s -> Int# -> Word64X2# -> State# s -> State# s writeWord64X2Array# = let x = x in x -- | Write a vector to specified index of mutable array. writeWord8X32Array# :: MutableByteArray# s -> Int# -> Word8X32# -> State# s -> State# s writeWord8X32Array# = let x = x in x -- | Write a vector to specified index of mutable array. writeWord16X16Array# :: MutableByteArray# s -> Int# -> Word16X16# -> State# s -> State# s writeWord16X16Array# = let x = x in x -- | Write a vector to specified index of mutable array. writeWord32X8Array# :: MutableByteArray# s -> Int# -> Word32X8# -> State# s -> State# s writeWord32X8Array# = let x = x in x -- | Write a vector to specified index of mutable array. writeWord64X4Array# :: MutableByteArray# s -> Int# -> Word64X4# -> State# s -> State# s writeWord64X4Array# = let x = x in x -- | Write a vector to specified index of mutable array. writeWord8X64Array# :: MutableByteArray# s -> Int# -> Word8X64# -> State# s -> State# s writeWord8X64Array# = let x = x in x -- | Write a vector to specified index of mutable array. writeWord16X32Array# :: MutableByteArray# s -> Int# -> Word16X32# -> State# s -> State# s writeWord16X32Array# = let x = x in x -- | Write a vector to specified index of mutable array. writeWord32X16Array# :: MutableByteArray# s -> Int# -> Word32X16# -> State# s -> State# s writeWord32X16Array# = let x = x in x -- | Write a vector to specified index of mutable array. writeWord64X8Array# :: MutableByteArray# s -> Int# -> Word64X8# -> State# s -> State# s writeWord64X8Array# = let x = x in x -- | Write a vector to specified index of mutable array. writeFloatX4Array# :: MutableByteArray# s -> Int# -> FloatX4# -> State# s -> State# s writeFloatX4Array# = let x = x in x -- | Write a vector to specified index of mutable array. writeDoubleX2Array# :: MutableByteArray# s -> Int# -> DoubleX2# -> State# s -> State# s writeDoubleX2Array# = let x = x in x -- | Write a vector to specified index of mutable array. writeFloatX8Array# :: MutableByteArray# s -> Int# -> FloatX8# -> State# s -> State# s writeFloatX8Array# = let x = x in x -- | Write a vector to specified index of mutable array. writeDoubleX4Array# :: MutableByteArray# s -> Int# -> DoubleX4# -> State# s -> State# s writeDoubleX4Array# = let x = x in x -- | Write a vector to specified index of mutable array. writeFloatX16Array# :: MutableByteArray# s -> Int# -> FloatX16# -> State# s -> State# s writeFloatX16Array# = let x = x in x -- | Write a vector to specified index of mutable array. writeDoubleX8Array# :: MutableByteArray# s -> Int# -> DoubleX8# -> State# s -> State# s writeDoubleX8Array# = let x = x in x -- | Reads vector; offset in bytes. indexInt8X16OffAddr# :: Addr# -> Int# -> Int8X16# indexInt8X16OffAddr# = let x = x in x -- | Reads vector; offset in bytes. indexInt16X8OffAddr# :: Addr# -> Int# -> Int16X8# indexInt16X8OffAddr# = let x = x in x -- | Reads vector; offset in bytes. indexInt32X4OffAddr# :: Addr# -> Int# -> Int32X4# indexInt32X4OffAddr# = let x = x in x -- | Reads vector; offset in bytes. indexInt64X2OffAddr# :: Addr# -> Int# -> Int64X2# indexInt64X2OffAddr# = let x = x in x -- | Reads vector; offset in bytes. indexInt8X32OffAddr# :: Addr# -> Int# -> Int8X32# indexInt8X32OffAddr# = let x = x in x -- | Reads vector; offset in bytes. indexInt16X16OffAddr# :: Addr# -> Int# -> Int16X16# indexInt16X16OffAddr# = let x = x in x -- | Reads vector; offset in bytes. indexInt32X8OffAddr# :: Addr# -> Int# -> Int32X8# indexInt32X8OffAddr# = let x = x in x -- | Reads vector; offset in bytes. indexInt64X4OffAddr# :: Addr# -> Int# -> Int64X4# indexInt64X4OffAddr# = let x = x in x -- | Reads vector; offset in bytes. indexInt8X64OffAddr# :: Addr# -> Int# -> Int8X64# indexInt8X64OffAddr# = let x = x in x -- | Reads vector; offset in bytes. indexInt16X32OffAddr# :: Addr# -> Int# -> Int16X32# indexInt16X32OffAddr# = let x = x in x -- | Reads vector; offset in bytes. indexInt32X16OffAddr# :: Addr# -> Int# -> Int32X16# indexInt32X16OffAddr# = let x = x in x -- | Reads vector; offset in bytes. indexInt64X8OffAddr# :: Addr# -> Int# -> Int64X8# indexInt64X8OffAddr# = let x = x in x -- | Reads vector; offset in bytes. indexWord8X16OffAddr# :: Addr# -> Int# -> Word8X16# indexWord8X16OffAddr# = let x = x in x -- | Reads vector; offset in bytes. indexWord16X8OffAddr# :: Addr# -> Int# -> Word16X8# indexWord16X8OffAddr# = let x = x in x -- | Reads vector; offset in bytes. indexWord32X4OffAddr# :: Addr# -> Int# -> Word32X4# indexWord32X4OffAddr# = let x = x in x -- | Reads vector; offset in bytes. indexWord64X2OffAddr# :: Addr# -> Int# -> Word64X2# indexWord64X2OffAddr# = let x = x in x -- | Reads vector; offset in bytes. indexWord8X32OffAddr# :: Addr# -> Int# -> Word8X32# indexWord8X32OffAddr# = let x = x in x -- | Reads vector; offset in bytes. indexWord16X16OffAddr# :: Addr# -> Int# -> Word16X16# indexWord16X16OffAddr# = let x = x in x -- | Reads vector; offset in bytes. indexWord32X8OffAddr# :: Addr# -> Int# -> Word32X8# indexWord32X8OffAddr# = let x = x in x -- | Reads vector; offset in bytes. indexWord64X4OffAddr# :: Addr# -> Int# -> Word64X4# indexWord64X4OffAddr# = let x = x in x -- | Reads vector; offset in bytes. indexWord8X64OffAddr# :: Addr# -> Int# -> Word8X64# indexWord8X64OffAddr# = let x = x in x -- | Reads vector; offset in bytes. indexWord16X32OffAddr# :: Addr# -> Int# -> Word16X32# indexWord16X32OffAddr# = let x = x in x -- | Reads vector; offset in bytes. indexWord32X16OffAddr# :: Addr# -> Int# -> Word32X16# indexWord32X16OffAddr# = let x = x in x -- | Reads vector; offset in bytes. indexWord64X8OffAddr# :: Addr# -> Int# -> Word64X8# indexWord64X8OffAddr# = let x = x in x -- | Reads vector; offset in bytes. indexFloatX4OffAddr# :: Addr# -> Int# -> FloatX4# indexFloatX4OffAddr# = let x = x in x -- | Reads vector; offset in bytes. indexDoubleX2OffAddr# :: Addr# -> Int# -> DoubleX2# indexDoubleX2OffAddr# = let x = x in x -- | Reads vector; offset in bytes. indexFloatX8OffAddr# :: Addr# -> Int# -> FloatX8# indexFloatX8OffAddr# = let x = x in x -- | Reads vector; offset in bytes. indexDoubleX4OffAddr# :: Addr# -> Int# -> DoubleX4# indexDoubleX4OffAddr# = let x = x in x -- | Reads vector; offset in bytes. indexFloatX16OffAddr# :: Addr# -> Int# -> FloatX16# indexFloatX16OffAddr# = let x = x in x -- | Reads vector; offset in bytes. indexDoubleX8OffAddr# :: Addr# -> Int# -> DoubleX8# indexDoubleX8OffAddr# = let x = x in x -- | Reads vector; offset in bytes. readInt8X16OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Int8X16# #) readInt8X16OffAddr# = let x = x in x -- | Reads vector; offset in bytes. readInt16X8OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Int16X8# #) readInt16X8OffAddr# = let x = x in x -- | Reads vector; offset in bytes. readInt32X4OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Int32X4# #) readInt32X4OffAddr# = let x = x in x -- | Reads vector; offset in bytes. readInt64X2OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Int64X2# #) readInt64X2OffAddr# = let x = x in x -- | Reads vector; offset in bytes. readInt8X32OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Int8X32# #) readInt8X32OffAddr# = let x = x in x -- | Reads vector; offset in bytes. readInt16X16OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Int16X16# #) readInt16X16OffAddr# = let x = x in x -- | Reads vector; offset in bytes. readInt32X8OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Int32X8# #) readInt32X8OffAddr# = let x = x in x -- | Reads vector; offset in bytes. readInt64X4OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Int64X4# #) readInt64X4OffAddr# = let x = x in x -- | Reads vector; offset in bytes. readInt8X64OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Int8X64# #) readInt8X64OffAddr# = let x = x in x -- | Reads vector; offset in bytes. readInt16X32OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Int16X32# #) readInt16X32OffAddr# = let x = x in x -- | Reads vector; offset in bytes. readInt32X16OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Int32X16# #) readInt32X16OffAddr# = let x = x in x -- | Reads vector; offset in bytes. readInt64X8OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Int64X8# #) readInt64X8OffAddr# = let x = x in x -- | Reads vector; offset in bytes. readWord8X16OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Word8X16# #) readWord8X16OffAddr# = let x = x in x -- | Reads vector; offset in bytes. readWord16X8OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Word16X8# #) readWord16X8OffAddr# = let x = x in x -- | Reads vector; offset in bytes. readWord32X4OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Word32X4# #) readWord32X4OffAddr# = let x = x in x -- | Reads vector; offset in bytes. readWord64X2OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Word64X2# #) readWord64X2OffAddr# = let x = x in x -- | Reads vector; offset in bytes. readWord8X32OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Word8X32# #) readWord8X32OffAddr# = let x = x in x -- | Reads vector; offset in bytes. readWord16X16OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Word16X16# #) readWord16X16OffAddr# = let x = x in x -- | Reads vector; offset in bytes. readWord32X8OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Word32X8# #) readWord32X8OffAddr# = let x = x in x -- | Reads vector; offset in bytes. readWord64X4OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Word64X4# #) readWord64X4OffAddr# = let x = x in x -- | Reads vector; offset in bytes. readWord8X64OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Word8X64# #) readWord8X64OffAddr# = let x = x in x -- | Reads vector; offset in bytes. readWord16X32OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Word16X32# #) readWord16X32OffAddr# = let x = x in x -- | Reads vector; offset in bytes. readWord32X16OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Word32X16# #) readWord32X16OffAddr# = let x = x in x -- | Reads vector; offset in bytes. readWord64X8OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Word64X8# #) readWord64X8OffAddr# = let x = x in x -- | Reads vector; offset in bytes. readFloatX4OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,FloatX4# #) readFloatX4OffAddr# = let x = x in x -- | Reads vector; offset in bytes. readDoubleX2OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,DoubleX2# #) readDoubleX2OffAddr# = let x = x in x -- | Reads vector; offset in bytes. readFloatX8OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,FloatX8# #) readFloatX8OffAddr# = let x = x in x -- | Reads vector; offset in bytes. readDoubleX4OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,DoubleX4# #) readDoubleX4OffAddr# = let x = x in x -- | Reads vector; offset in bytes. readFloatX16OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,FloatX16# #) readFloatX16OffAddr# = let x = x in x -- | Reads vector; offset in bytes. readDoubleX8OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,DoubleX8# #) readDoubleX8OffAddr# = let x = x in x -- | Write vector; offset in bytes. writeInt8X16OffAddr# :: Addr# -> Int# -> Int8X16# -> State# s -> State# s writeInt8X16OffAddr# = let x = x in x -- | Write vector; offset in bytes. writeInt16X8OffAddr# :: Addr# -> Int# -> Int16X8# -> State# s -> State# s writeInt16X8OffAddr# = let x = x in x -- | Write vector; offset in bytes. writeInt32X4OffAddr# :: Addr# -> Int# -> Int32X4# -> State# s -> State# s writeInt32X4OffAddr# = let x = x in x -- | Write vector; offset in bytes. writeInt64X2OffAddr# :: Addr# -> Int# -> Int64X2# -> State# s -> State# s writeInt64X2OffAddr# = let x = x in x -- | Write vector; offset in bytes. writeInt8X32OffAddr# :: Addr# -> Int# -> Int8X32# -> State# s -> State# s writeInt8X32OffAddr# = let x = x in x -- | Write vector; offset in bytes. writeInt16X16OffAddr# :: Addr# -> Int# -> Int16X16# -> State# s -> State# s writeInt16X16OffAddr# = let x = x in x -- | Write vector; offset in bytes. writeInt32X8OffAddr# :: Addr# -> Int# -> Int32X8# -> State# s -> State# s writeInt32X8OffAddr# = let x = x in x -- | Write vector; offset in bytes. writeInt64X4OffAddr# :: Addr# -> Int# -> Int64X4# -> State# s -> State# s writeInt64X4OffAddr# = let x = x in x -- | Write vector; offset in bytes. writeInt8X64OffAddr# :: Addr# -> Int# -> Int8X64# -> State# s -> State# s writeInt8X64OffAddr# = let x = x in x -- | Write vector; offset in bytes. writeInt16X32OffAddr# :: Addr# -> Int# -> Int16X32# -> State# s -> State# s writeInt16X32OffAddr# = let x = x in x -- | Write vector; offset in bytes. writeInt32X16OffAddr# :: Addr# -> Int# -> Int32X16# -> State# s -> State# s writeInt32X16OffAddr# = let x = x in x -- | Write vector; offset in bytes. writeInt64X8OffAddr# :: Addr# -> Int# -> Int64X8# -> State# s -> State# s writeInt64X8OffAddr# = let x = x in x -- | Write vector; offset in bytes. writeWord8X16OffAddr# :: Addr# -> Int# -> Word8X16# -> State# s -> State# s writeWord8X16OffAddr# = let x = x in x -- | Write vector; offset in bytes. writeWord16X8OffAddr# :: Addr# -> Int# -> Word16X8# -> State# s -> State# s writeWord16X8OffAddr# = let x = x in x -- | Write vector; offset in bytes. writeWord32X4OffAddr# :: Addr# -> Int# -> Word32X4# -> State# s -> State# s writeWord32X4OffAddr# = let x = x in x -- | Write vector; offset in bytes. writeWord64X2OffAddr# :: Addr# -> Int# -> Word64X2# -> State# s -> State# s writeWord64X2OffAddr# = let x = x in x -- | Write vector; offset in bytes. writeWord8X32OffAddr# :: Addr# -> Int# -> Word8X32# -> State# s -> State# s writeWord8X32OffAddr# = let x = x in x -- | Write vector; offset in bytes. writeWord16X16OffAddr# :: Addr# -> Int# -> Word16X16# -> State# s -> State# s writeWord16X16OffAddr# = let x = x in x -- | Write vector; offset in bytes. writeWord32X8OffAddr# :: Addr# -> Int# -> Word32X8# -> State# s -> State# s writeWord32X8OffAddr# = let x = x in x -- | Write vector; offset in bytes. writeWord64X4OffAddr# :: Addr# -> Int# -> Word64X4# -> State# s -> State# s writeWord64X4OffAddr# = let x = x in x -- | Write vector; offset in bytes. writeWord8X64OffAddr# :: Addr# -> Int# -> Word8X64# -> State# s -> State# s writeWord8X64OffAddr# = let x = x in x -- | Write vector; offset in bytes. writeWord16X32OffAddr# :: Addr# -> Int# -> Word16X32# -> State# s -> State# s writeWord16X32OffAddr# = let x = x in x -- | Write vector; offset in bytes. writeWord32X16OffAddr# :: Addr# -> Int# -> Word32X16# -> State# s -> State# s writeWord32X16OffAddr# = let x = x in x -- | Write vector; offset in bytes. writeWord64X8OffAddr# :: Addr# -> Int# -> Word64X8# -> State# s -> State# s writeWord64X8OffAddr# = let x = x in x -- | Write vector; offset in bytes. writeFloatX4OffAddr# :: Addr# -> Int# -> FloatX4# -> State# s -> State# s writeFloatX4OffAddr# = let x = x in x -- | Write vector; offset in bytes. writeDoubleX2OffAddr# :: Addr# -> Int# -> DoubleX2# -> State# s -> State# s writeDoubleX2OffAddr# = let x = x in x -- | Write vector; offset in bytes. writeFloatX8OffAddr# :: Addr# -> Int# -> FloatX8# -> State# s -> State# s writeFloatX8OffAddr# = let x = x in x -- | Write vector; offset in bytes. writeDoubleX4OffAddr# :: Addr# -> Int# -> DoubleX4# -> State# s -> State# s writeDoubleX4OffAddr# = let x = x in x -- | Write vector; offset in bytes. writeFloatX16OffAddr# :: Addr# -> Int# -> FloatX16# -> State# s -> State# s writeFloatX16OffAddr# = let x = x in x -- | Write vector; offset in bytes. writeDoubleX8OffAddr# :: Addr# -> Int# -> DoubleX8# -> State# s -> State# s writeDoubleX8OffAddr# = let x = x in x -- | Read a vector from specified index of immutable array of scalars; offset is in scalar elements. indexInt8ArrayAsInt8X16# :: ByteArray# -> Int# -> Int8X16# indexInt8ArrayAsInt8X16# = let x = x in x -- | Read a vector from specified index of immutable array of scalars; offset is in scalar elements. indexInt16ArrayAsInt16X8# :: ByteArray# -> Int# -> Int16X8# indexInt16ArrayAsInt16X8# = let x = x in x -- | Read a vector from specified index of immutable array of scalars; offset is in scalar elements. indexInt32ArrayAsInt32X4# :: ByteArray# -> Int# -> Int32X4# indexInt32ArrayAsInt32X4# = let x = x in x -- | Read a vector from specified index of immutable array of scalars; offset is in scalar elements. indexInt64ArrayAsInt64X2# :: ByteArray# -> Int# -> Int64X2# indexInt64ArrayAsInt64X2# = let x = x in x -- | Read a vector from specified index of immutable array of scalars; offset is in scalar elements. indexInt8ArrayAsInt8X32# :: ByteArray# -> Int# -> Int8X32# indexInt8ArrayAsInt8X32# = let x = x in x -- | Read a vector from specified index of immutable array of scalars; offset is in scalar elements. indexInt16ArrayAsInt16X16# :: ByteArray# -> Int# -> Int16X16# indexInt16ArrayAsInt16X16# = let x = x in x -- | Read a vector from specified index of immutable array of scalars; offset is in scalar elements. indexInt32ArrayAsInt32X8# :: ByteArray# -> Int# -> Int32X8# indexInt32ArrayAsInt32X8# = let x = x in x -- | Read a vector from specified index of immutable array of scalars; offset is in scalar elements. indexInt64ArrayAsInt64X4# :: ByteArray# -> Int# -> Int64X4# indexInt64ArrayAsInt64X4# = let x = x in x -- | Read a vector from specified index of immutable array of scalars; offset is in scalar elements. indexInt8ArrayAsInt8X64# :: ByteArray# -> Int# -> Int8X64# indexInt8ArrayAsInt8X64# = let x = x in x -- | Read a vector from specified index of immutable array of scalars; offset is in scalar elements. indexInt16ArrayAsInt16X32# :: ByteArray# -> Int# -> Int16X32# indexInt16ArrayAsInt16X32# = let x = x in x -- | Read a vector from specified index of immutable array of scalars; offset is in scalar elements. indexInt32ArrayAsInt32X16# :: ByteArray# -> Int# -> Int32X16# indexInt32ArrayAsInt32X16# = let x = x in x -- | Read a vector from specified index of immutable array of scalars; offset is in scalar elements. indexInt64ArrayAsInt64X8# :: ByteArray# -> Int# -> Int64X8# indexInt64ArrayAsInt64X8# = let x = x in x -- | Read a vector from specified index of immutable array of scalars; offset is in scalar elements. indexWord8ArrayAsWord8X16# :: ByteArray# -> Int# -> Word8X16# indexWord8ArrayAsWord8X16# = let x = x in x -- | Read a vector from specified index of immutable array of scalars; offset is in scalar elements. indexWord16ArrayAsWord16X8# :: ByteArray# -> Int# -> Word16X8# indexWord16ArrayAsWord16X8# = let x = x in x -- | Read a vector from specified index of immutable array of scalars; offset is in scalar elements. indexWord32ArrayAsWord32X4# :: ByteArray# -> Int# -> Word32X4# indexWord32ArrayAsWord32X4# = let x = x in x -- | Read a vector from specified index of immutable array of scalars; offset is in scalar elements. indexWord64ArrayAsWord64X2# :: ByteArray# -> Int# -> Word64X2# indexWord64ArrayAsWord64X2# = let x = x in x -- | Read a vector from specified index of immutable array of scalars; offset is in scalar elements. indexWord8ArrayAsWord8X32# :: ByteArray# -> Int# -> Word8X32# indexWord8ArrayAsWord8X32# = let x = x in x -- | Read a vector from specified index of immutable array of scalars; offset is in scalar elements. indexWord16ArrayAsWord16X16# :: ByteArray# -> Int# -> Word16X16# indexWord16ArrayAsWord16X16# = let x = x in x -- | Read a vector from specified index of immutable array of scalars; offset is in scalar elements. indexWord32ArrayAsWord32X8# :: ByteArray# -> Int# -> Word32X8# indexWord32ArrayAsWord32X8# = let x = x in x -- | Read a vector from specified index of immutable array of scalars; offset is in scalar elements. indexWord64ArrayAsWord64X4# :: ByteArray# -> Int# -> Word64X4# indexWord64ArrayAsWord64X4# = let x = x in x -- | Read a vector from specified index of immutable array of scalars; offset is in scalar elements. indexWord8ArrayAsWord8X64# :: ByteArray# -> Int# -> Word8X64# indexWord8ArrayAsWord8X64# = let x = x in x -- | Read a vector from specified index of immutable array of scalars; offset is in scalar elements. indexWord16ArrayAsWord16X32# :: ByteArray# -> Int# -> Word16X32# indexWord16ArrayAsWord16X32# = let x = x in x -- | Read a vector from specified index of immutable array of scalars; offset is in scalar elements. indexWord32ArrayAsWord32X16# :: ByteArray# -> Int# -> Word32X16# indexWord32ArrayAsWord32X16# = let x = x in x -- | Read a vector from specified index of immutable array of scalars; offset is in scalar elements. indexWord64ArrayAsWord64X8# :: ByteArray# -> Int# -> Word64X8# indexWord64ArrayAsWord64X8# = let x = x in x -- | Read a vector from specified index of immutable array of scalars; offset is in scalar elements. indexFloatArrayAsFloatX4# :: ByteArray# -> Int# -> FloatX4# indexFloatArrayAsFloatX4# = let x = x in x -- | Read a vector from specified index of immutable array of scalars; offset is in scalar elements. indexDoubleArrayAsDoubleX2# :: ByteArray# -> Int# -> DoubleX2# indexDoubleArrayAsDoubleX2# = let x = x in x -- | Read a vector from specified index of immutable array of scalars; offset is in scalar elements. indexFloatArrayAsFloatX8# :: ByteArray# -> Int# -> FloatX8# indexFloatArrayAsFloatX8# = let x = x in x -- | Read a vector from specified index of immutable array of scalars; offset is in scalar elements. indexDoubleArrayAsDoubleX4# :: ByteArray# -> Int# -> DoubleX4# indexDoubleArrayAsDoubleX4# = let x = x in x -- | Read a vector from specified index of immutable array of scalars; offset is in scalar elements. indexFloatArrayAsFloatX16# :: ByteArray# -> Int# -> FloatX16# indexFloatArrayAsFloatX16# = let x = x in x -- | Read a vector from specified index of immutable array of scalars; offset is in scalar elements. indexDoubleArrayAsDoubleX8# :: ByteArray# -> Int# -> DoubleX8# indexDoubleArrayAsDoubleX8# = let x = x in x -- | Read a vector from specified index of mutable array of scalars; offset is in scalar elements. readInt8ArrayAsInt8X16# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int8X16# #) readInt8ArrayAsInt8X16# = let x = x in x -- | Read a vector from specified index of mutable array of scalars; offset is in scalar elements. readInt16ArrayAsInt16X8# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int16X8# #) readInt16ArrayAsInt16X8# = let x = x in x -- | Read a vector from specified index of mutable array of scalars; offset is in scalar elements. readInt32ArrayAsInt32X4# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int32X4# #) readInt32ArrayAsInt32X4# = let x = x in x -- | Read a vector from specified index of mutable array of scalars; offset is in scalar elements. readInt64ArrayAsInt64X2# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int64X2# #) readInt64ArrayAsInt64X2# = let x = x in x -- | Read a vector from specified index of mutable array of scalars; offset is in scalar elements. readInt8ArrayAsInt8X32# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int8X32# #) readInt8ArrayAsInt8X32# = let x = x in x -- | Read a vector from specified index of mutable array of scalars; offset is in scalar elements. readInt16ArrayAsInt16X16# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int16X16# #) readInt16ArrayAsInt16X16# = let x = x in x -- | Read a vector from specified index of mutable array of scalars; offset is in scalar elements. readInt32ArrayAsInt32X8# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int32X8# #) readInt32ArrayAsInt32X8# = let x = x in x -- | Read a vector from specified index of mutable array of scalars; offset is in scalar elements. readInt64ArrayAsInt64X4# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int64X4# #) readInt64ArrayAsInt64X4# = let x = x in x -- | Read a vector from specified index of mutable array of scalars; offset is in scalar elements. readInt8ArrayAsInt8X64# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int8X64# #) readInt8ArrayAsInt8X64# = let x = x in x -- | Read a vector from specified index of mutable array of scalars; offset is in scalar elements. readInt16ArrayAsInt16X32# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int16X32# #) readInt16ArrayAsInt16X32# = let x = x in x -- | Read a vector from specified index of mutable array of scalars; offset is in scalar elements. readInt32ArrayAsInt32X16# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int32X16# #) readInt32ArrayAsInt32X16# = let x = x in x -- | Read a vector from specified index of mutable array of scalars; offset is in scalar elements. readInt64ArrayAsInt64X8# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int64X8# #) readInt64ArrayAsInt64X8# = let x = x in x -- | Read a vector from specified index of mutable array of scalars; offset is in scalar elements. readWord8ArrayAsWord8X16# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word8X16# #) readWord8ArrayAsWord8X16# = let x = x in x -- | Read a vector from specified index of mutable array of scalars; offset is in scalar elements. readWord16ArrayAsWord16X8# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word16X8# #) readWord16ArrayAsWord16X8# = let x = x in x -- | Read a vector from specified index of mutable array of scalars; offset is in scalar elements. readWord32ArrayAsWord32X4# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word32X4# #) readWord32ArrayAsWord32X4# = let x = x in x -- | Read a vector from specified index of mutable array of scalars; offset is in scalar elements. readWord64ArrayAsWord64X2# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word64X2# #) readWord64ArrayAsWord64X2# = let x = x in x -- | Read a vector from specified index of mutable array of scalars; offset is in scalar elements. readWord8ArrayAsWord8X32# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word8X32# #) readWord8ArrayAsWord8X32# = let x = x in x -- | Read a vector from specified index of mutable array of scalars; offset is in scalar elements. readWord16ArrayAsWord16X16# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word16X16# #) readWord16ArrayAsWord16X16# = let x = x in x -- | Read a vector from specified index of mutable array of scalars; offset is in scalar elements. readWord32ArrayAsWord32X8# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word32X8# #) readWord32ArrayAsWord32X8# = let x = x in x -- | Read a vector from specified index of mutable array of scalars; offset is in scalar elements. readWord64ArrayAsWord64X4# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word64X4# #) readWord64ArrayAsWord64X4# = let x = x in x -- | Read a vector from specified index of mutable array of scalars; offset is in scalar elements. readWord8ArrayAsWord8X64# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word8X64# #) readWord8ArrayAsWord8X64# = let x = x in x -- | Read a vector from specified index of mutable array of scalars; offset is in scalar elements. readWord16ArrayAsWord16X32# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word16X32# #) readWord16ArrayAsWord16X32# = let x = x in x -- | Read a vector from specified index of mutable array of scalars; offset is in scalar elements. readWord32ArrayAsWord32X16# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word32X16# #) readWord32ArrayAsWord32X16# = let x = x in x -- | Read a vector from specified index of mutable array of scalars; offset is in scalar elements. readWord64ArrayAsWord64X8# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word64X8# #) readWord64ArrayAsWord64X8# = let x = x in x -- | Read a vector from specified index of mutable array of scalars; offset is in scalar elements. readFloatArrayAsFloatX4# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,FloatX4# #) readFloatArrayAsFloatX4# = let x = x in x -- | Read a vector from specified index of mutable array of scalars; offset is in scalar elements. readDoubleArrayAsDoubleX2# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,DoubleX2# #) readDoubleArrayAsDoubleX2# = let x = x in x -- | Read a vector from specified index of mutable array of scalars; offset is in scalar elements. readFloatArrayAsFloatX8# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,FloatX8# #) readFloatArrayAsFloatX8# = let x = x in x -- | Read a vector from specified index of mutable array of scalars; offset is in scalar elements. readDoubleArrayAsDoubleX4# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,DoubleX4# #) readDoubleArrayAsDoubleX4# = let x = x in x -- | Read a vector from specified index of mutable array of scalars; offset is in scalar elements. readFloatArrayAsFloatX16# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,FloatX16# #) readFloatArrayAsFloatX16# = let x = x in x -- | Read a vector from specified index of mutable array of scalars; offset is in scalar elements. readDoubleArrayAsDoubleX8# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,DoubleX8# #) readDoubleArrayAsDoubleX8# = let x = x in x -- | Write a vector to specified index of mutable array of scalars; offset is in scalar elements. writeInt8ArrayAsInt8X16# :: MutableByteArray# s -> Int# -> Int8X16# -> State# s -> State# s writeInt8ArrayAsInt8X16# = let x = x in x -- | Write a vector to specified index of mutable array of scalars; offset is in scalar elements. writeInt16ArrayAsInt16X8# :: MutableByteArray# s -> Int# -> Int16X8# -> State# s -> State# s writeInt16ArrayAsInt16X8# = let x = x in x -- | Write a vector to specified index of mutable array of scalars; offset is in scalar elements. writeInt32ArrayAsInt32X4# :: MutableByteArray# s -> Int# -> Int32X4# -> State# s -> State# s writeInt32ArrayAsInt32X4# = let x = x in x -- | Write a vector to specified index of mutable array of scalars; offset is in scalar elements. writeInt64ArrayAsInt64X2# :: MutableByteArray# s -> Int# -> Int64X2# -> State# s -> State# s writeInt64ArrayAsInt64X2# = let x = x in x -- | Write a vector to specified index of mutable array of scalars; offset is in scalar elements. writeInt8ArrayAsInt8X32# :: MutableByteArray# s -> Int# -> Int8X32# -> State# s -> State# s writeInt8ArrayAsInt8X32# = let x = x in x -- | Write a vector to specified index of mutable array of scalars; offset is in scalar elements. writeInt16ArrayAsInt16X16# :: MutableByteArray# s -> Int# -> Int16X16# -> State# s -> State# s writeInt16ArrayAsInt16X16# = let x = x in x -- | Write a vector to specified index of mutable array of scalars; offset is in scalar elements. writeInt32ArrayAsInt32X8# :: MutableByteArray# s -> Int# -> Int32X8# -> State# s -> State# s writeInt32ArrayAsInt32X8# = let x = x in x -- | Write a vector to specified index of mutable array of scalars; offset is in scalar elements. writeInt64ArrayAsInt64X4# :: MutableByteArray# s -> Int# -> Int64X4# -> State# s -> State# s writeInt64ArrayAsInt64X4# = let x = x in x -- | Write a vector to specified index of mutable array of scalars; offset is in scalar elements. writeInt8ArrayAsInt8X64# :: MutableByteArray# s -> Int# -> Int8X64# -> State# s -> State# s writeInt8ArrayAsInt8X64# = let x = x in x -- | Write a vector to specified index of mutable array of scalars; offset is in scalar elements. writeInt16ArrayAsInt16X32# :: MutableByteArray# s -> Int# -> Int16X32# -> State# s -> State# s writeInt16ArrayAsInt16X32# = let x = x in x -- | Write a vector to specified index of mutable array of scalars; offset is in scalar elements. writeInt32ArrayAsInt32X16# :: MutableByteArray# s -> Int# -> Int32X16# -> State# s -> State# s writeInt32ArrayAsInt32X16# = let x = x in x -- | Write a vector to specified index of mutable array of scalars; offset is in scalar elements. writeInt64ArrayAsInt64X8# :: MutableByteArray# s -> Int# -> Int64X8# -> State# s -> State# s writeInt64ArrayAsInt64X8# = let x = x in x -- | Write a vector to specified index of mutable array of scalars; offset is in scalar elements. writeWord8ArrayAsWord8X16# :: MutableByteArray# s -> Int# -> Word8X16# -> State# s -> State# s writeWord8ArrayAsWord8X16# = let x = x in x -- | Write a vector to specified index of mutable array of scalars; offset is in scalar elements. writeWord16ArrayAsWord16X8# :: MutableByteArray# s -> Int# -> Word16X8# -> State# s -> State# s writeWord16ArrayAsWord16X8# = let x = x in x -- | Write a vector to specified index of mutable array of scalars; offset is in scalar elements. writeWord32ArrayAsWord32X4# :: MutableByteArray# s -> Int# -> Word32X4# -> State# s -> State# s writeWord32ArrayAsWord32X4# = let x = x in x -- | Write a vector to specified index of mutable array of scalars; offset is in scalar elements. writeWord64ArrayAsWord64X2# :: MutableByteArray# s -> Int# -> Word64X2# -> State# s -> State# s writeWord64ArrayAsWord64X2# = let x = x in x -- | Write a vector to specified index of mutable array of scalars; offset is in scalar elements. writeWord8ArrayAsWord8X32# :: MutableByteArray# s -> Int# -> Word8X32# -> State# s -> State# s writeWord8ArrayAsWord8X32# = let x = x in x -- | Write a vector to specified index of mutable array of scalars; offset is in scalar elements. writeWord16ArrayAsWord16X16# :: MutableByteArray# s -> Int# -> Word16X16# -> State# s -> State# s writeWord16ArrayAsWord16X16# = let x = x in x -- | Write a vector to specified index of mutable array of scalars; offset is in scalar elements. writeWord32ArrayAsWord32X8# :: MutableByteArray# s -> Int# -> Word32X8# -> State# s -> State# s writeWord32ArrayAsWord32X8# = let x = x in x -- | Write a vector to specified index of mutable array of scalars; offset is in scalar elements. writeWord64ArrayAsWord64X4# :: MutableByteArray# s -> Int# -> Word64X4# -> State# s -> State# s writeWord64ArrayAsWord64X4# = let x = x in x -- | Write a vector to specified index of mutable array of scalars; offset is in scalar elements. writeWord8ArrayAsWord8X64# :: MutableByteArray# s -> Int# -> Word8X64# -> State# s -> State# s writeWord8ArrayAsWord8X64# = let x = x in x -- | Write a vector to specified index of mutable array of scalars; offset is in scalar elements. writeWord16ArrayAsWord16X32# :: MutableByteArray# s -> Int# -> Word16X32# -> State# s -> State# s writeWord16ArrayAsWord16X32# = let x = x in x -- | Write a vector to specified index of mutable array of scalars; offset is in scalar elements. writeWord32ArrayAsWord32X16# :: MutableByteArray# s -> Int# -> Word32X16# -> State# s -> State# s writeWord32ArrayAsWord32X16# = let x = x in x -- | Write a vector to specified index of mutable array of scalars; offset is in scalar elements. writeWord64ArrayAsWord64X8# :: MutableByteArray# s -> Int# -> Word64X8# -> State# s -> State# s writeWord64ArrayAsWord64X8# = let x = x in x -- | Write a vector to specified index of mutable array of scalars; offset is in scalar elements. writeFloatArrayAsFloatX4# :: MutableByteArray# s -> Int# -> FloatX4# -> State# s -> State# s writeFloatArrayAsFloatX4# = let x = x in x -- | Write a vector to specified index of mutable array of scalars; offset is in scalar elements. writeDoubleArrayAsDoubleX2# :: MutableByteArray# s -> Int# -> DoubleX2# -> State# s -> State# s writeDoubleArrayAsDoubleX2# = let x = x in x -- | Write a vector to specified index of mutable array of scalars; offset is in scalar elements. writeFloatArrayAsFloatX8# :: MutableByteArray# s -> Int# -> FloatX8# -> State# s -> State# s writeFloatArrayAsFloatX8# = let x = x in x -- | Write a vector to specified index of mutable array of scalars; offset is in scalar elements. writeDoubleArrayAsDoubleX4# :: MutableByteArray# s -> Int# -> DoubleX4# -> State# s -> State# s writeDoubleArrayAsDoubleX4# = let x = x in x -- | Write a vector to specified index of mutable array of scalars; offset is in scalar elements. writeFloatArrayAsFloatX16# :: MutableByteArray# s -> Int# -> FloatX16# -> State# s -> State# s writeFloatArrayAsFloatX16# = let x = x in x -- | Write a vector to specified index of mutable array of scalars; offset is in scalar elements. writeDoubleArrayAsDoubleX8# :: MutableByteArray# s -> Int# -> DoubleX8# -> State# s -> State# s writeDoubleArrayAsDoubleX8# = let x = x in x -- | Reads vector; offset in scalar elements. indexInt8OffAddrAsInt8X16# :: Addr# -> Int# -> Int8X16# indexInt8OffAddrAsInt8X16# = let x = x in x -- | Reads vector; offset in scalar elements. indexInt16OffAddrAsInt16X8# :: Addr# -> Int# -> Int16X8# indexInt16OffAddrAsInt16X8# = let x = x in x -- | Reads vector; offset in scalar elements. indexInt32OffAddrAsInt32X4# :: Addr# -> Int# -> Int32X4# indexInt32OffAddrAsInt32X4# = let x = x in x -- | Reads vector; offset in scalar elements. indexInt64OffAddrAsInt64X2# :: Addr# -> Int# -> Int64X2# indexInt64OffAddrAsInt64X2# = let x = x in x -- | Reads vector; offset in scalar elements. indexInt8OffAddrAsInt8X32# :: Addr# -> Int# -> Int8X32# indexInt8OffAddrAsInt8X32# = let x = x in x -- | Reads vector; offset in scalar elements. indexInt16OffAddrAsInt16X16# :: Addr# -> Int# -> Int16X16# indexInt16OffAddrAsInt16X16# = let x = x in x -- | Reads vector; offset in scalar elements. indexInt32OffAddrAsInt32X8# :: Addr# -> Int# -> Int32X8# indexInt32OffAddrAsInt32X8# = let x = x in x -- | Reads vector; offset in scalar elements. indexInt64OffAddrAsInt64X4# :: Addr# -> Int# -> Int64X4# indexInt64OffAddrAsInt64X4# = let x = x in x -- | Reads vector; offset in scalar elements. indexInt8OffAddrAsInt8X64# :: Addr# -> Int# -> Int8X64# indexInt8OffAddrAsInt8X64# = let x = x in x -- | Reads vector; offset in scalar elements. indexInt16OffAddrAsInt16X32# :: Addr# -> Int# -> Int16X32# indexInt16OffAddrAsInt16X32# = let x = x in x -- | Reads vector; offset in scalar elements. indexInt32OffAddrAsInt32X16# :: Addr# -> Int# -> Int32X16# indexInt32OffAddrAsInt32X16# = let x = x in x -- | Reads vector; offset in scalar elements. indexInt64OffAddrAsInt64X8# :: Addr# -> Int# -> Int64X8# indexInt64OffAddrAsInt64X8# = let x = x in x -- | Reads vector; offset in scalar elements. indexWord8OffAddrAsWord8X16# :: Addr# -> Int# -> Word8X16# indexWord8OffAddrAsWord8X16# = let x = x in x -- | Reads vector; offset in scalar elements. indexWord16OffAddrAsWord16X8# :: Addr# -> Int# -> Word16X8# indexWord16OffAddrAsWord16X8# = let x = x in x -- | Reads vector; offset in scalar elements. indexWord32OffAddrAsWord32X4# :: Addr# -> Int# -> Word32X4# indexWord32OffAddrAsWord32X4# = let x = x in x -- | Reads vector; offset in scalar elements. indexWord64OffAddrAsWord64X2# :: Addr# -> Int# -> Word64X2# indexWord64OffAddrAsWord64X2# = let x = x in x -- | Reads vector; offset in scalar elements. indexWord8OffAddrAsWord8X32# :: Addr# -> Int# -> Word8X32# indexWord8OffAddrAsWord8X32# = let x = x in x -- | Reads vector; offset in scalar elements. indexWord16OffAddrAsWord16X16# :: Addr# -> Int# -> Word16X16# indexWord16OffAddrAsWord16X16# = let x = x in x -- | Reads vector; offset in scalar elements. indexWord32OffAddrAsWord32X8# :: Addr# -> Int# -> Word32X8# indexWord32OffAddrAsWord32X8# = let x = x in x -- | Reads vector; offset in scalar elements. indexWord64OffAddrAsWord64X4# :: Addr# -> Int# -> Word64X4# indexWord64OffAddrAsWord64X4# = let x = x in x -- | Reads vector; offset in scalar elements. indexWord8OffAddrAsWord8X64# :: Addr# -> Int# -> Word8X64# indexWord8OffAddrAsWord8X64# = let x = x in x -- | Reads vector; offset in scalar elements. indexWord16OffAddrAsWord16X32# :: Addr# -> Int# -> Word16X32# indexWord16OffAddrAsWord16X32# = let x = x in x -- | Reads vector; offset in scalar elements. indexWord32OffAddrAsWord32X16# :: Addr# -> Int# -> Word32X16# indexWord32OffAddrAsWord32X16# = let x = x in x -- | Reads vector; offset in scalar elements. indexWord64OffAddrAsWord64X8# :: Addr# -> Int# -> Word64X8# indexWord64OffAddrAsWord64X8# = let x = x in x -- | Reads vector; offset in scalar elements. indexFloatOffAddrAsFloatX4# :: Addr# -> Int# -> FloatX4# indexFloatOffAddrAsFloatX4# = let x = x in x -- | Reads vector; offset in scalar elements. indexDoubleOffAddrAsDoubleX2# :: Addr# -> Int# -> DoubleX2# indexDoubleOffAddrAsDoubleX2# = let x = x in x -- | Reads vector; offset in scalar elements. indexFloatOffAddrAsFloatX8# :: Addr# -> Int# -> FloatX8# indexFloatOffAddrAsFloatX8# = let x = x in x -- | Reads vector; offset in scalar elements. indexDoubleOffAddrAsDoubleX4# :: Addr# -> Int# -> DoubleX4# indexDoubleOffAddrAsDoubleX4# = let x = x in x -- | Reads vector; offset in scalar elements. indexFloatOffAddrAsFloatX16# :: Addr# -> Int# -> FloatX16# indexFloatOffAddrAsFloatX16# = let x = x in x -- | Reads vector; offset in scalar elements. indexDoubleOffAddrAsDoubleX8# :: Addr# -> Int# -> DoubleX8# indexDoubleOffAddrAsDoubleX8# = let x = x in x -- | Reads vector; offset in scalar elements. readInt8OffAddrAsInt8X16# :: Addr# -> Int# -> State# s -> (# State# s,Int8X16# #) readInt8OffAddrAsInt8X16# = let x = x in x -- | Reads vector; offset in scalar elements. readInt16OffAddrAsInt16X8# :: Addr# -> Int# -> State# s -> (# State# s,Int16X8# #) readInt16OffAddrAsInt16X8# = let x = x in x -- | Reads vector; offset in scalar elements. readInt32OffAddrAsInt32X4# :: Addr# -> Int# -> State# s -> (# State# s,Int32X4# #) readInt32OffAddrAsInt32X4# = let x = x in x -- | Reads vector; offset in scalar elements. readInt64OffAddrAsInt64X2# :: Addr# -> Int# -> State# s -> (# State# s,Int64X2# #) readInt64OffAddrAsInt64X2# = let x = x in x -- | Reads vector; offset in scalar elements. readInt8OffAddrAsInt8X32# :: Addr# -> Int# -> State# s -> (# State# s,Int8X32# #) readInt8OffAddrAsInt8X32# = let x = x in x -- | Reads vector; offset in scalar elements. readInt16OffAddrAsInt16X16# :: Addr# -> Int# -> State# s -> (# State# s,Int16X16# #) readInt16OffAddrAsInt16X16# = let x = x in x -- | Reads vector; offset in scalar elements. readInt32OffAddrAsInt32X8# :: Addr# -> Int# -> State# s -> (# State# s,Int32X8# #) readInt32OffAddrAsInt32X8# = let x = x in x -- | Reads vector; offset in scalar elements. readInt64OffAddrAsInt64X4# :: Addr# -> Int# -> State# s -> (# State# s,Int64X4# #) readInt64OffAddrAsInt64X4# = let x = x in x -- | Reads vector; offset in scalar elements. readInt8OffAddrAsInt8X64# :: Addr# -> Int# -> State# s -> (# State# s,Int8X64# #) readInt8OffAddrAsInt8X64# = let x = x in x -- | Reads vector; offset in scalar elements. readInt16OffAddrAsInt16X32# :: Addr# -> Int# -> State# s -> (# State# s,Int16X32# #) readInt16OffAddrAsInt16X32# = let x = x in x -- | Reads vector; offset in scalar elements. readInt32OffAddrAsInt32X16# :: Addr# -> Int# -> State# s -> (# State# s,Int32X16# #) readInt32OffAddrAsInt32X16# = let x = x in x -- | Reads vector; offset in scalar elements. readInt64OffAddrAsInt64X8# :: Addr# -> Int# -> State# s -> (# State# s,Int64X8# #) readInt64OffAddrAsInt64X8# = let x = x in x -- | Reads vector; offset in scalar elements. readWord8OffAddrAsWord8X16# :: Addr# -> Int# -> State# s -> (# State# s,Word8X16# #) readWord8OffAddrAsWord8X16# = let x = x in x -- | Reads vector; offset in scalar elements. readWord16OffAddrAsWord16X8# :: Addr# -> Int# -> State# s -> (# State# s,Word16X8# #) readWord16OffAddrAsWord16X8# = let x = x in x -- | Reads vector; offset in scalar elements. readWord32OffAddrAsWord32X4# :: Addr# -> Int# -> State# s -> (# State# s,Word32X4# #) readWord32OffAddrAsWord32X4# = let x = x in x -- | Reads vector; offset in scalar elements. readWord64OffAddrAsWord64X2# :: Addr# -> Int# -> State# s -> (# State# s,Word64X2# #) readWord64OffAddrAsWord64X2# = let x = x in x -- | Reads vector; offset in scalar elements. readWord8OffAddrAsWord8X32# :: Addr# -> Int# -> State# s -> (# State# s,Word8X32# #) readWord8OffAddrAsWord8X32# = let x = x in x -- | Reads vector; offset in scalar elements. readWord16OffAddrAsWord16X16# :: Addr# -> Int# -> State# s -> (# State# s,Word16X16# #) readWord16OffAddrAsWord16X16# = let x = x in x -- | Reads vector; offset in scalar elements. readWord32OffAddrAsWord32X8# :: Addr# -> Int# -> State# s -> (# State# s,Word32X8# #) readWord32OffAddrAsWord32X8# = let x = x in x -- | Reads vector; offset in scalar elements. readWord64OffAddrAsWord64X4# :: Addr# -> Int# -> State# s -> (# State# s,Word64X4# #) readWord64OffAddrAsWord64X4# = let x = x in x -- | Reads vector; offset in scalar elements. readWord8OffAddrAsWord8X64# :: Addr# -> Int# -> State# s -> (# State# s,Word8X64# #) readWord8OffAddrAsWord8X64# = let x = x in x -- | Reads vector; offset in scalar elements. readWord16OffAddrAsWord16X32# :: Addr# -> Int# -> State# s -> (# State# s,Word16X32# #) readWord16OffAddrAsWord16X32# = let x = x in x -- | Reads vector; offset in scalar elements. readWord32OffAddrAsWord32X16# :: Addr# -> Int# -> State# s -> (# State# s,Word32X16# #) readWord32OffAddrAsWord32X16# = let x = x in x -- | Reads vector; offset in scalar elements. readWord64OffAddrAsWord64X8# :: Addr# -> Int# -> State# s -> (# State# s,Word64X8# #) readWord64OffAddrAsWord64X8# = let x = x in x -- | Reads vector; offset in scalar elements. readFloatOffAddrAsFloatX4# :: Addr# -> Int# -> State# s -> (# State# s,FloatX4# #) readFloatOffAddrAsFloatX4# = let x = x in x -- | Reads vector; offset in scalar elements. readDoubleOffAddrAsDoubleX2# :: Addr# -> Int# -> State# s -> (# State# s,DoubleX2# #) readDoubleOffAddrAsDoubleX2# = let x = x in x -- | Reads vector; offset in scalar elements. readFloatOffAddrAsFloatX8# :: Addr# -> Int# -> State# s -> (# State# s,FloatX8# #) readFloatOffAddrAsFloatX8# = let x = x in x -- | Reads vector; offset in scalar elements. readDoubleOffAddrAsDoubleX4# :: Addr# -> Int# -> State# s -> (# State# s,DoubleX4# #) readDoubleOffAddrAsDoubleX4# = let x = x in x -- | Reads vector; offset in scalar elements. readFloatOffAddrAsFloatX16# :: Addr# -> Int# -> State# s -> (# State# s,FloatX16# #) readFloatOffAddrAsFloatX16# = let x = x in x -- | Reads vector; offset in scalar elements. readDoubleOffAddrAsDoubleX8# :: Addr# -> Int# -> State# s -> (# State# s,DoubleX8# #) readDoubleOffAddrAsDoubleX8# = let x = x in x -- | Write vector; offset in scalar elements. writeInt8OffAddrAsInt8X16# :: Addr# -> Int# -> Int8X16# -> State# s -> State# s writeInt8OffAddrAsInt8X16# = let x = x in x -- | Write vector; offset in scalar elements. writeInt16OffAddrAsInt16X8# :: Addr# -> Int# -> Int16X8# -> State# s -> State# s writeInt16OffAddrAsInt16X8# = let x = x in x -- | Write vector; offset in scalar elements. writeInt32OffAddrAsInt32X4# :: Addr# -> Int# -> Int32X4# -> State# s -> State# s writeInt32OffAddrAsInt32X4# = let x = x in x -- | Write vector; offset in scalar elements. writeInt64OffAddrAsInt64X2# :: Addr# -> Int# -> Int64X2# -> State# s -> State# s writeInt64OffAddrAsInt64X2# = let x = x in x -- | Write vector; offset in scalar elements. writeInt8OffAddrAsInt8X32# :: Addr# -> Int# -> Int8X32# -> State# s -> State# s writeInt8OffAddrAsInt8X32# = let x = x in x -- | Write vector; offset in scalar elements. writeInt16OffAddrAsInt16X16# :: Addr# -> Int# -> Int16X16# -> State# s -> State# s writeInt16OffAddrAsInt16X16# = let x = x in x -- | Write vector; offset in scalar elements. writeInt32OffAddrAsInt32X8# :: Addr# -> Int# -> Int32X8# -> State# s -> State# s writeInt32OffAddrAsInt32X8# = let x = x in x -- | Write vector; offset in scalar elements. writeInt64OffAddrAsInt64X4# :: Addr# -> Int# -> Int64X4# -> State# s -> State# s writeInt64OffAddrAsInt64X4# = let x = x in x -- | Write vector; offset in scalar elements. writeInt8OffAddrAsInt8X64# :: Addr# -> Int# -> Int8X64# -> State# s -> State# s writeInt8OffAddrAsInt8X64# = let x = x in x -- | Write vector; offset in scalar elements. writeInt16OffAddrAsInt16X32# :: Addr# -> Int# -> Int16X32# -> State# s -> State# s writeInt16OffAddrAsInt16X32# = let x = x in x -- | Write vector; offset in scalar elements. writeInt32OffAddrAsInt32X16# :: Addr# -> Int# -> Int32X16# -> State# s -> State# s writeInt32OffAddrAsInt32X16# = let x = x in x -- | Write vector; offset in scalar elements. writeInt64OffAddrAsInt64X8# :: Addr# -> Int# -> Int64X8# -> State# s -> State# s writeInt64OffAddrAsInt64X8# = let x = x in x -- | Write vector; offset in scalar elements. writeWord8OffAddrAsWord8X16# :: Addr# -> Int# -> Word8X16# -> State# s -> State# s writeWord8OffAddrAsWord8X16# = let x = x in x -- | Write vector; offset in scalar elements. writeWord16OffAddrAsWord16X8# :: Addr# -> Int# -> Word16X8# -> State# s -> State# s writeWord16OffAddrAsWord16X8# = let x = x in x -- | Write vector; offset in scalar elements. writeWord32OffAddrAsWord32X4# :: Addr# -> Int# -> Word32X4# -> State# s -> State# s writeWord32OffAddrAsWord32X4# = let x = x in x -- | Write vector; offset in scalar elements. writeWord64OffAddrAsWord64X2# :: Addr# -> Int# -> Word64X2# -> State# s -> State# s writeWord64OffAddrAsWord64X2# = let x = x in x -- | Write vector; offset in scalar elements. writeWord8OffAddrAsWord8X32# :: Addr# -> Int# -> Word8X32# -> State# s -> State# s writeWord8OffAddrAsWord8X32# = let x = x in x -- | Write vector; offset in scalar elements. writeWord16OffAddrAsWord16X16# :: Addr# -> Int# -> Word16X16# -> State# s -> State# s writeWord16OffAddrAsWord16X16# = let x = x in x -- | Write vector; offset in scalar elements. writeWord32OffAddrAsWord32X8# :: Addr# -> Int# -> Word32X8# -> State# s -> State# s writeWord32OffAddrAsWord32X8# = let x = x in x -- | Write vector; offset in scalar elements. writeWord64OffAddrAsWord64X4# :: Addr# -> Int# -> Word64X4# -> State# s -> State# s writeWord64OffAddrAsWord64X4# = let x = x in x -- | Write vector; offset in scalar elements. writeWord8OffAddrAsWord8X64# :: Addr# -> Int# -> Word8X64# -> State# s -> State# s writeWord8OffAddrAsWord8X64# = let x = x in x -- | Write vector; offset in scalar elements. writeWord16OffAddrAsWord16X32# :: Addr# -> Int# -> Word16X32# -> State# s -> State# s writeWord16OffAddrAsWord16X32# = let x = x in x -- | Write vector; offset in scalar elements. writeWord32OffAddrAsWord32X16# :: Addr# -> Int# -> Word32X16# -> State# s -> State# s writeWord32OffAddrAsWord32X16# = let x = x in x -- | Write vector; offset in scalar elements. writeWord64OffAddrAsWord64X8# :: Addr# -> Int# -> Word64X8# -> State# s -> State# s writeWord64OffAddrAsWord64X8# = let x = x in x -- | Write vector; offset in scalar elements. writeFloatOffAddrAsFloatX4# :: Addr# -> Int# -> FloatX4# -> State# s -> State# s writeFloatOffAddrAsFloatX4# = let x = x in x -- | Write vector; offset in scalar elements. writeDoubleOffAddrAsDoubleX2# :: Addr# -> Int# -> DoubleX2# -> State# s -> State# s writeDoubleOffAddrAsDoubleX2# = let x = x in x -- | Write vector; offset in scalar elements. writeFloatOffAddrAsFloatX8# :: Addr# -> Int# -> FloatX8# -> State# s -> State# s writeFloatOffAddrAsFloatX8# = let x = x in x -- | Write vector; offset in scalar elements. writeDoubleOffAddrAsDoubleX4# :: Addr# -> Int# -> DoubleX4# -> State# s -> State# s writeDoubleOffAddrAsDoubleX4# = let x = x in x -- | Write vector; offset in scalar elements. writeFloatOffAddrAsFloatX16# :: Addr# -> Int# -> FloatX16# -> State# s -> State# s writeFloatOffAddrAsFloatX16# = let x = x in x -- | Write vector; offset in scalar elements. writeDoubleOffAddrAsDoubleX8# :: Addr# -> Int# -> DoubleX8# -> State# s -> State# s writeDoubleOffAddrAsDoubleX8# = let x = x in x prefetchByteArray3# :: ByteArray# -> Int# -> State# s -> State# s prefetchByteArray3# = let x = x in x prefetchMutableByteArray3# :: MutableByteArray# s -> Int# -> State# s -> State# s prefetchMutableByteArray3# = let x = x in x prefetchAddr3# :: Addr# -> Int# -> State# s -> State# s prefetchAddr3# = let x = x in x prefetchValue3# :: a -> State# s -> State# s prefetchValue3# = let x = x in x prefetchByteArray2# :: ByteArray# -> Int# -> State# s -> State# s prefetchByteArray2# = let x = x in x prefetchMutableByteArray2# :: MutableByteArray# s -> Int# -> State# s -> State# s prefetchMutableByteArray2# = let x = x in x prefetchAddr2# :: Addr# -> Int# -> State# s -> State# s prefetchAddr2# = let x = x in x prefetchValue2# :: a -> State# s -> State# s prefetchValue2# = let x = x in x prefetchByteArray1# :: ByteArray# -> Int# -> State# s -> State# s prefetchByteArray1# = let x = x in x prefetchMutableByteArray1# :: MutableByteArray# s -> Int# -> State# s -> State# s prefetchMutableByteArray1# = let x = x in x prefetchAddr1# :: Addr# -> Int# -> State# s -> State# s prefetchAddr1# = let x = x in x prefetchValue1# :: a -> State# s -> State# s prefetchValue1# = let x = x in x prefetchByteArray0# :: ByteArray# -> Int# -> State# s -> State# s prefetchByteArray0# = let x = x in x prefetchMutableByteArray0# :: MutableByteArray# s -> Int# -> State# s -> State# s prefetchMutableByteArray0# = let x = x in x prefetchAddr0# :: Addr# -> Int# -> State# s -> State# s prefetchAddr0# = let x = x in x prefetchValue0# :: a -> State# s -> State# s prefetchValue0# = let x = x in x