Safe Haskell | None |
---|---|
Language | Haskell2010 |
Facilities for using a custom GHC.Prim interface.
The simplest(?) way to use this is to generate primop info
using the genprimopcode
program from GHC, making any desired changes
to those files, and passing the primOpInfo
and primOpStrictness
functions defined therein as the cfgCustomPrimIface
member of
your config.
Your strictness and info functions need to support all the
primops exported by the GHC version in use, making code written for this
interface rather less portable than code using the rest of ghc-simple
.
This functionality is probably what you want if you are making a cross compiler, to prevent the types of GHC primops from changing depending on the compiler host platform.
If you are *not* making a cross compiler, chances are you will not want to touch this with a ten foot pole.
- module Demand
- module TysWiredIn
- module FastString
- module CmmType
- module BasicTypes
- data PrimOp :: *
- = CharGtOp
- | CharGeOp
- | CharEqOp
- | CharNeOp
- | CharLtOp
- | CharLeOp
- | OrdOp
- | IntAddOp
- | IntSubOp
- | IntMulOp
- | IntMulMayOfloOp
- | IntQuotOp
- | IntRemOp
- | IntQuotRemOp
- | AndIOp
- | OrIOp
- | XorIOp
- | NotIOp
- | IntNegOp
- | IntAddCOp
- | IntSubCOp
- | IntGtOp
- | IntGeOp
- | IntEqOp
- | IntNeOp
- | IntLtOp
- | IntLeOp
- | ChrOp
- | Int2WordOp
- | Int2FloatOp
- | Int2DoubleOp
- | Word2FloatOp
- | Word2DoubleOp
- | ISllOp
- | ISraOp
- | ISrlOp
- | WordAddOp
- | WordSubCOp
- | WordAdd2Op
- | WordSubOp
- | WordMulOp
- | WordMul2Op
- | WordQuotOp
- | WordRemOp
- | WordQuotRemOp
- | WordQuotRem2Op
- | AndOp
- | OrOp
- | XorOp
- | NotOp
- | SllOp
- | SrlOp
- | Word2IntOp
- | WordGtOp
- | WordGeOp
- | WordEqOp
- | WordNeOp
- | WordLtOp
- | WordLeOp
- | PopCnt8Op
- | PopCnt16Op
- | PopCnt32Op
- | PopCnt64Op
- | PopCntOp
- | Clz8Op
- | Clz16Op
- | Clz32Op
- | Clz64Op
- | ClzOp
- | Ctz8Op
- | Ctz16Op
- | Ctz32Op
- | Ctz64Op
- | CtzOp
- | BSwap16Op
- | BSwap32Op
- | BSwap64Op
- | BSwapOp
- | Narrow8IntOp
- | Narrow16IntOp
- | Narrow32IntOp
- | Narrow8WordOp
- | Narrow16WordOp
- | Narrow32WordOp
- | DoubleGtOp
- | DoubleGeOp
- | DoubleEqOp
- | DoubleNeOp
- | DoubleLtOp
- | DoubleLeOp
- | DoubleAddOp
- | DoubleSubOp
- | DoubleMulOp
- | DoubleDivOp
- | DoubleNegOp
- | Double2IntOp
- | Double2FloatOp
- | DoubleExpOp
- | DoubleLogOp
- | DoubleSqrtOp
- | DoubleSinOp
- | DoubleCosOp
- | DoubleTanOp
- | DoubleAsinOp
- | DoubleAcosOp
- | DoubleAtanOp
- | DoubleSinhOp
- | DoubleCoshOp
- | DoubleTanhOp
- | DoublePowerOp
- | DoubleDecode_2IntOp
- | DoubleDecode_Int64Op
- | FloatGtOp
- | FloatGeOp
- | FloatEqOp
- | FloatNeOp
- | FloatLtOp
- | FloatLeOp
- | FloatAddOp
- | FloatSubOp
- | FloatMulOp
- | FloatDivOp
- | FloatNegOp
- | Float2IntOp
- | FloatExpOp
- | FloatLogOp
- | FloatSqrtOp
- | FloatSinOp
- | FloatCosOp
- | FloatTanOp
- | FloatAsinOp
- | FloatAcosOp
- | FloatAtanOp
- | FloatSinhOp
- | FloatCoshOp
- | FloatTanhOp
- | FloatPowerOp
- | Float2DoubleOp
- | FloatDecode_IntOp
- | NewArrayOp
- | SameMutableArrayOp
- | ReadArrayOp
- | WriteArrayOp
- | SizeofArrayOp
- | SizeofMutableArrayOp
- | IndexArrayOp
- | UnsafeFreezeArrayOp
- | UnsafeThawArrayOp
- | CopyArrayOp
- | CopyMutableArrayOp
- | CloneArrayOp
- | CloneMutableArrayOp
- | FreezeArrayOp
- | ThawArrayOp
- | CasArrayOp
- | NewSmallArrayOp
- | SameSmallMutableArrayOp
- | ReadSmallArrayOp
- | WriteSmallArrayOp
- | SizeofSmallArrayOp
- | SizeofSmallMutableArrayOp
- | IndexSmallArrayOp
- | UnsafeFreezeSmallArrayOp
- | UnsafeThawSmallArrayOp
- | CopySmallArrayOp
- | CopySmallMutableArrayOp
- | CloneSmallArrayOp
- | CloneSmallMutableArrayOp
- | FreezeSmallArrayOp
- | ThawSmallArrayOp
- | CasSmallArrayOp
- | NewByteArrayOp_Char
- | NewPinnedByteArrayOp_Char
- | NewAlignedPinnedByteArrayOp_Char
- | ByteArrayContents_Char
- | SameMutableByteArrayOp
- | ShrinkMutableByteArrayOp_Char
- | ResizeMutableByteArrayOp_Char
- | UnsafeFreezeByteArrayOp
- | SizeofByteArrayOp
- | SizeofMutableByteArrayOp
- | GetSizeofMutableByteArrayOp
- | IndexByteArrayOp_Char
- | IndexByteArrayOp_WideChar
- | IndexByteArrayOp_Int
- | IndexByteArrayOp_Word
- | IndexByteArrayOp_Addr
- | IndexByteArrayOp_Float
- | IndexByteArrayOp_Double
- | IndexByteArrayOp_StablePtr
- | IndexByteArrayOp_Int8
- | IndexByteArrayOp_Int16
- | IndexByteArrayOp_Int32
- | IndexByteArrayOp_Int64
- | IndexByteArrayOp_Word8
- | IndexByteArrayOp_Word16
- | IndexByteArrayOp_Word32
- | IndexByteArrayOp_Word64
- | ReadByteArrayOp_Char
- | ReadByteArrayOp_WideChar
- | ReadByteArrayOp_Int
- | ReadByteArrayOp_Word
- | ReadByteArrayOp_Addr
- | ReadByteArrayOp_Float
- | ReadByteArrayOp_Double
- | ReadByteArrayOp_StablePtr
- | ReadByteArrayOp_Int8
- | ReadByteArrayOp_Int16
- | ReadByteArrayOp_Int32
- | ReadByteArrayOp_Int64
- | ReadByteArrayOp_Word8
- | ReadByteArrayOp_Word16
- | ReadByteArrayOp_Word32
- | ReadByteArrayOp_Word64
- | WriteByteArrayOp_Char
- | WriteByteArrayOp_WideChar
- | WriteByteArrayOp_Int
- | WriteByteArrayOp_Word
- | WriteByteArrayOp_Addr
- | WriteByteArrayOp_Float
- | WriteByteArrayOp_Double
- | WriteByteArrayOp_StablePtr
- | WriteByteArrayOp_Int8
- | WriteByteArrayOp_Int16
- | WriteByteArrayOp_Int32
- | WriteByteArrayOp_Int64
- | WriteByteArrayOp_Word8
- | WriteByteArrayOp_Word16
- | WriteByteArrayOp_Word32
- | WriteByteArrayOp_Word64
- | CopyByteArrayOp
- | CopyMutableByteArrayOp
- | CopyByteArrayToAddrOp
- | CopyMutableByteArrayToAddrOp
- | CopyAddrToByteArrayOp
- | SetByteArrayOp
- | AtomicReadByteArrayOp_Int
- | AtomicWriteByteArrayOp_Int
- | CasByteArrayOp_Int
- | FetchAddByteArrayOp_Int
- | FetchSubByteArrayOp_Int
- | FetchAndByteArrayOp_Int
- | FetchNandByteArrayOp_Int
- | FetchOrByteArrayOp_Int
- | FetchXorByteArrayOp_Int
- | NewArrayArrayOp
- | SameMutableArrayArrayOp
- | UnsafeFreezeArrayArrayOp
- | SizeofArrayArrayOp
- | SizeofMutableArrayArrayOp
- | IndexArrayArrayOp_ByteArray
- | IndexArrayArrayOp_ArrayArray
- | ReadArrayArrayOp_ByteArray
- | ReadArrayArrayOp_MutableByteArray
- | ReadArrayArrayOp_ArrayArray
- | ReadArrayArrayOp_MutableArrayArray
- | WriteArrayArrayOp_ByteArray
- | WriteArrayArrayOp_MutableByteArray
- | WriteArrayArrayOp_ArrayArray
- | WriteArrayArrayOp_MutableArrayArray
- | CopyArrayArrayOp
- | CopyMutableArrayArrayOp
- | AddrAddOp
- | AddrSubOp
- | AddrRemOp
- | Addr2IntOp
- | Int2AddrOp
- | AddrGtOp
- | AddrGeOp
- | AddrEqOp
- | AddrNeOp
- | AddrLtOp
- | AddrLeOp
- | IndexOffAddrOp_Char
- | IndexOffAddrOp_WideChar
- | IndexOffAddrOp_Int
- | IndexOffAddrOp_Word
- | IndexOffAddrOp_Addr
- | IndexOffAddrOp_Float
- | IndexOffAddrOp_Double
- | IndexOffAddrOp_StablePtr
- | IndexOffAddrOp_Int8
- | IndexOffAddrOp_Int16
- | IndexOffAddrOp_Int32
- | IndexOffAddrOp_Int64
- | IndexOffAddrOp_Word8
- | IndexOffAddrOp_Word16
- | IndexOffAddrOp_Word32
- | IndexOffAddrOp_Word64
- | ReadOffAddrOp_Char
- | ReadOffAddrOp_WideChar
- | ReadOffAddrOp_Int
- | ReadOffAddrOp_Word
- | ReadOffAddrOp_Addr
- | ReadOffAddrOp_Float
- | ReadOffAddrOp_Double
- | ReadOffAddrOp_StablePtr
- | ReadOffAddrOp_Int8
- | ReadOffAddrOp_Int16
- | ReadOffAddrOp_Int32
- | ReadOffAddrOp_Int64
- | ReadOffAddrOp_Word8
- | ReadOffAddrOp_Word16
- | ReadOffAddrOp_Word32
- | ReadOffAddrOp_Word64
- | WriteOffAddrOp_Char
- | WriteOffAddrOp_WideChar
- | WriteOffAddrOp_Int
- | WriteOffAddrOp_Word
- | WriteOffAddrOp_Addr
- | WriteOffAddrOp_Float
- | WriteOffAddrOp_Double
- | WriteOffAddrOp_StablePtr
- | WriteOffAddrOp_Int8
- | WriteOffAddrOp_Int16
- | WriteOffAddrOp_Int32
- | WriteOffAddrOp_Int64
- | WriteOffAddrOp_Word8
- | WriteOffAddrOp_Word16
- | WriteOffAddrOp_Word32
- | WriteOffAddrOp_Word64
- | NewMutVarOp
- | ReadMutVarOp
- | WriteMutVarOp
- | SameMutVarOp
- | AtomicModifyMutVarOp
- | CasMutVarOp
- | CatchOp
- | RaiseOp
- | RaiseIOOp
- | MaskAsyncExceptionsOp
- | MaskUninterruptibleOp
- | UnmaskAsyncExceptionsOp
- | MaskStatus
- | AtomicallyOp
- | RetryOp
- | CatchRetryOp
- | CatchSTMOp
- | Check
- | NewTVarOp
- | ReadTVarOp
- | ReadTVarIOOp
- | WriteTVarOp
- | SameTVarOp
- | NewMVarOp
- | TakeMVarOp
- | TryTakeMVarOp
- | PutMVarOp
- | TryPutMVarOp
- | ReadMVarOp
- | TryReadMVarOp
- | SameMVarOp
- | IsEmptyMVarOp
- | DelayOp
- | WaitReadOp
- | WaitWriteOp
- | ForkOp
- | ForkOnOp
- | KillThreadOp
- | YieldOp
- | MyThreadIdOp
- | LabelThreadOp
- | IsCurrentThreadBoundOp
- | NoDuplicateOp
- | ThreadStatusOp
- | MkWeakOp
- | MkWeakNoFinalizerOp
- | AddCFinalizerToWeakOp
- | DeRefWeakOp
- | FinalizeWeakOp
- | TouchOp
- | MakeStablePtrOp
- | DeRefStablePtrOp
- | EqStablePtrOp
- | MakeStableNameOp
- | EqStableNameOp
- | StableNameToIntOp
- | ReallyUnsafePtrEqualityOp
- | ParOp
- | SparkOp
- | SeqOp
- | GetSparkOp
- | NumSparks
- | DataToTagOp
- | TagToEnumOp
- | AddrToAnyOp
- | MkApUpd0_Op
- | NewBCOOp
- | UnpackClosureOp
- | GetApStackValOp
- | GetCCSOfOp
- | GetCurrentCCSOp
- | ClearCCSOp
- | TraceEventOp
- | TraceMarkerOp
- | VecBroadcastOp PrimOpVecCat Length Width
- | VecPackOp PrimOpVecCat Length Width
- | VecUnpackOp PrimOpVecCat Length Width
- | VecInsertOp PrimOpVecCat Length Width
- | VecAddOp PrimOpVecCat Length Width
- | VecSubOp PrimOpVecCat Length Width
- | VecMulOp PrimOpVecCat Length Width
- | VecDivOp PrimOpVecCat Length Width
- | VecQuotOp PrimOpVecCat Length Width
- | VecRemOp PrimOpVecCat Length Width
- | VecNegOp PrimOpVecCat Length Width
- | VecIndexByteArrayOp PrimOpVecCat Length Width
- | VecReadByteArrayOp PrimOpVecCat Length Width
- | VecWriteByteArrayOp PrimOpVecCat Length Width
- | VecIndexOffAddrOp PrimOpVecCat Length Width
- | VecReadOffAddrOp PrimOpVecCat Length Width
- | VecWriteOffAddrOp PrimOpVecCat Length Width
- | VecIndexScalarByteArrayOp PrimOpVecCat Length Width
- | VecReadScalarByteArrayOp PrimOpVecCat Length Width
- | VecWriteScalarByteArrayOp PrimOpVecCat Length Width
- | VecIndexScalarOffAddrOp PrimOpVecCat Length Width
- | VecReadScalarOffAddrOp PrimOpVecCat Length Width
- | VecWriteScalarOffAddrOp PrimOpVecCat Length Width
- | PrefetchByteArrayOp3
- | PrefetchMutableByteArrayOp3
- | PrefetchAddrOp3
- | PrefetchValueOp3
- | PrefetchByteArrayOp2
- | PrefetchMutableByteArrayOp2
- | PrefetchAddrOp2
- | PrefetchValueOp2
- | PrefetchByteArrayOp1
- | PrefetchMutableByteArrayOp1
- | PrefetchAddrOp1
- | PrefetchValueOp1
- | PrefetchByteArrayOp0
- | PrefetchMutableByteArrayOp0
- | PrefetchAddrOp0
- | PrefetchValueOp0
- data PrimOpInfo
- mkGenPrimOp :: FastString -> [TyBinder] -> [Type] -> Type -> PrimOpInfo
- mkDyadic :: FastString -> Type -> PrimOpInfo
- mkMonadic :: FastString -> Type -> PrimOpInfo
- mkCompare :: FastString -> Type -> PrimOpInfo
- primIface :: (PrimOp -> PrimOpInfo) -> (PrimOp -> Arity -> StrictSig) -> ModIface
- fixPrimopTypes :: (PrimOp -> PrimOpInfo) -> (PrimOp -> Arity -> StrictSig) -> HscEnv -> IO ()
Documentation
module Demand
module TysWiredIn
module FastString
module CmmType
module BasicTypes
data PrimOpInfo Source #
mkGenPrimOp :: FastString -> [TyBinder] -> [Type] -> Type -> PrimOpInfo Source #
Create a general PrimOpInfo
. Needed by GHC-generated primop info
includes.
mkDyadic :: FastString -> Type -> PrimOpInfo Source #
Create a PrimOpInfo
for dyadic, monadic and compare primops.
Needed by GHC-generated primop info includes.
mkMonadic :: FastString -> Type -> PrimOpInfo Source #
Create a PrimOpInfo
for dyadic, monadic and compare primops.
Needed by GHC-generated primop info includes.
mkCompare :: FastString -> Type -> PrimOpInfo Source #
Create a PrimOpInfo
for dyadic, monadic and compare primops.
Needed by GHC-generated primop info includes.
primIface :: (PrimOp -> PrimOpInfo) -> (PrimOp -> Arity -> StrictSig) -> ModIface Source #
Module interface for GHC.Prim
, with the given function applied to each
primop.
fixPrimopTypes :: (PrimOp -> PrimOpInfo) -> (PrimOp -> Arity -> StrictSig) -> HscEnv -> IO () Source #
Fix primop types in the name cache.