1 {-# GHC_PRAGMA INTERFACE VERSION 5 #-}
2 interface AbsPrel where
4 import CmdLineOpts(GlobalSwitch)
5 import CoreSyn(CoreExpr)
6 import HeapOffs(HeapOffset)
10 import NameTypes(FullName, ShortName)
11 import Outputable(NamedThing, Outputable)
12 import PlainCore(PlainCoreExpr(..))
13 import PrelFuns(gLASGOW_MISC, gLASGOW_ST, pRELUDE, pRELUDE_BUILTIN, pRELUDE_CORE, pRELUDE_IO, pRELUDE_LIST, pRELUDE_PRIMIO, pRELUDE_PS, pRELUDE_RATIO, pRELUDE_TEXT)
14 import PrelVals(aBSENT_ERROR_ID, buildId, eRROR_ID, foldlId, foldrId, integerMinusOneId, integerPlusOneId, integerPlusTwoId, integerZeroId, mkBuild, mkFoldl, mkFoldr, pAT_ERROR_ID, packStringForCId, realWorldPrimId, unpackCString2Id, unpackCStringAppendId, unpackCStringId, voidPrimId)
15 import PreludePS(_PackedString)
16 import Pretty(PprStyle, PrettyRep)
17 import PrimKind(PrimKind)
18 import PrimOps(HeapRequirement(..), PrimOp(..), PrimOpResultInfo(..), fragilePrimOp, getPrimOpResultInfo, isCompareOp, pprPrimOp, primOpCanTriggerGC, primOpHeapReq, primOpIsCheap, primOpNameInfo, primOpNeedsWrapper, primOpOkForSpeculation, showPrimOp, typeOfPrimOp)
20 import TyVar(TyVar, TyVarTemplate)
21 import TysPrim(addrPrimTy, addrPrimTyCon, charPrimTy, charPrimTyCon, doublePrimTy, doublePrimTyCon, floatPrimTy, floatPrimTyCon, intPrimTy, intPrimTyCon, realWorldStatePrimTy, realWorldTy, realWorldTyCon, voidPrimTy, wordPrimTy, wordPrimTyCon)
22 import TysWiredIn(addrDataCon, addrTy, addrTyCon, boolTy, boolTyCon, charDataCon, charTy, charTyCon, cmpTagTy, consDataCon, doubleDataCon, doubleTy, doubleTyCon, eqPrimDataCon, falseDataCon, floatDataCon, floatTy, floatTyCon, getStatePairingConInfo, gtPrimDataCon, intDataCon, intTy, intTyCon, integerDataCon, integerTy, integerTyCon, liftDataCon, liftTyCon, listTyCon, ltPrimDataCon, mkLiftTy, mkListTy, mkPrimIoTy, mkTupleTy, nilDataCon, ratioDataCon, rationalTy, rationalTyCon, realWorldStateTy, stateDataCon, stringTy, trueDataCon, unitTy, wordDataCon, wordTy, wordTyCon)
23 import UniType(TauType(..), UniType)
31 type PlainCoreExpr = CoreExpr Id Id
34 data HeapRequirement = NoHeapRequired | FixedHeapRequired HeapOffset | VariableHeapRequired
36 = CharGtOp | CharGeOp | CharEqOp | CharNeOp | CharLtOp | CharLeOp | IntGtOp | IntGeOp | IntEqOp | IntNeOp | IntLtOp | IntLeOp | WordGtOp | WordGeOp | WordEqOp | WordNeOp | WordLtOp | WordLeOp | AddrGtOp | AddrGeOp | AddrEqOp | AddrNeOp | AddrLtOp | AddrLeOp | FloatGtOp | FloatGeOp | FloatEqOp | FloatNeOp | FloatLtOp | FloatLeOp | DoubleGtOp | DoubleGeOp | DoubleEqOp | DoubleNeOp | DoubleLtOp | DoubleLeOp | OrdOp | ChrOp | IntAddOp | IntSubOp | IntMulOp | IntQuotOp | IntDivOp | IntRemOp | IntNegOp | IntAbsOp | AndOp | OrOp | NotOp | SllOp | SraOp | SrlOp | ISllOp | ISraOp | ISrlOp | Int2WordOp | Word2IntOp | Int2AddrOp | Addr2IntOp | FloatAddOp | FloatSubOp | FloatMulOp | FloatDivOp | FloatNegOp | Float2IntOp | Int2FloatOp | FloatExpOp | FloatLogOp | FloatSqrtOp | FloatSinOp | FloatCosOp | FloatTanOp | FloatAsinOp | FloatAcosOp | FloatAtanOp | FloatSinhOp | FloatCoshOp | FloatTanhOp | FloatPowerOp | DoubleAddOp | DoubleSubOp | DoubleMulOp | DoubleDivOp | DoubleNegOp | Double2IntOp | Int2DoubleOp | Double2FloatOp | Float2DoubleOp | DoubleExpOp | DoubleLogOp | DoubleSqrtOp | DoubleSinOp | DoubleCosOp | DoubleTanOp | DoubleAsinOp | DoubleAcosOp | DoubleAtanOp | DoubleSinhOp | DoubleCoshOp | DoubleTanhOp | DoublePowerOp | IntegerAddOp | IntegerSubOp | IntegerMulOp | IntegerQuotRemOp | IntegerDivModOp | IntegerNegOp | IntegerCmpOp | Integer2IntOp | Int2IntegerOp | Word2IntegerOp | Addr2IntegerOp | FloatEncodeOp | FloatDecodeOp | DoubleEncodeOp | DoubleDecodeOp | NewArrayOp | NewByteArrayOp PrimKind | SameMutableArrayOp | SameMutableByteArrayOp | ReadArrayOp | WriteArrayOp | IndexArrayOp | ReadByteArrayOp PrimKind | WriteByteArrayOp PrimKind | IndexByteArrayOp PrimKind | IndexOffAddrOp PrimKind | UnsafeFreezeArrayOp | UnsafeFreezeByteArrayOp | NewSynchVarOp | TakeMVarOp | PutMVarOp | ReadIVarOp | WriteIVarOp | MakeStablePtrOp | DeRefStablePtrOp | CCallOp _PackedString Bool Bool [UniType] UniType | ErrorIOPrimOp | ReallyUnsafePtrEqualityOp | SeqOp | ParOp | ForkOp | DelayOp | WaitOp
37 data PrimOpResultInfo = ReturnsPrim PrimKind | ReturnsAlg TyCon
39 type TauType = UniType
42 gLASGOW_MISC :: _PackedString
43 gLASGOW_ST :: _PackedString
44 pRELUDE :: _PackedString
45 pRELUDE_BUILTIN :: _PackedString
46 pRELUDE_CORE :: _PackedString
47 pRELUDE_IO :: _PackedString
48 pRELUDE_LIST :: _PackedString
49 pRELUDE_PRIMIO :: _PackedString
50 pRELUDE_PS :: _PackedString
51 pRELUDE_RATIO :: _PackedString
52 pRELUDE_TEXT :: _PackedString
58 integerMinusOneId :: Id
59 integerPlusOneId :: Id
60 integerPlusTwoId :: Id
62 mkBuild :: UniType -> TyVar -> Id -> Id -> Id -> CoreExpr Id Id -> CoreExpr Id Id
63 mkFoldl :: UniType -> UniType -> Id -> Id -> Id -> CoreExpr a Id
64 mkFoldr :: UniType -> UniType -> Id -> Id -> Id -> CoreExpr a Id
65 fragilePrimOp :: PrimOp -> Bool
66 getPrimOpResultInfo :: PrimOp -> PrimOpResultInfo
67 isCompareOp :: PrimOp -> Bool
69 addrPrimTyCon :: TyCon
71 charPrimTyCon :: TyCon
72 doublePrimTy :: UniType
73 doublePrimTyCon :: TyCon
74 floatPrimTy :: UniType
75 floatPrimTyCon :: TyCon
83 builtinNameInfo :: (GlobalSwitch -> Bool) -> (_PackedString -> Labda Name, _PackedString -> Labda Name)
97 getStatePairingConInfo :: UniType -> (Id, UniType)
104 integerTyCon :: TyCon
109 mkFunTy :: UniType -> UniType -> UniType
111 packStringForCId :: Id
112 realWorldPrimId :: Id
113 unpackCString2Id :: Id
114 unpackCStringAppendId :: Id
115 unpackCStringId :: Id
117 pprPrimOp :: PprStyle -> PrimOp -> Int -> Bool -> PrettyRep
118 primOpCanTriggerGC :: PrimOp -> Bool
119 primOpHeapReq :: PrimOp -> HeapRequirement
120 primOpIsCheap :: PrimOp -> Bool
121 primOpNameInfo :: PrimOp -> (_PackedString, Name)
122 primOpNeedsWrapper :: PrimOp -> Bool
123 primOpOkForSpeculation :: PrimOp -> Bool
124 showPrimOp :: PprStyle -> PrimOp -> [Char]
125 typeOfPrimOp :: PrimOp -> UniType
126 realWorldStatePrimTy :: UniType
127 realWorldTy :: UniType
128 realWorldTyCon :: TyCon
129 voidPrimTy :: UniType
130 wordPrimTy :: UniType
131 wordPrimTyCon :: TyCon
132 mkLiftTy :: UniType -> UniType
133 mkListTy :: UniType -> UniType
134 mkPrimIoTy :: UniType -> UniType
135 mkTupleTy :: Int -> [UniType] -> UniType
138 rationalTy :: UniType
139 rationalTyCon :: TyCon
140 readUnfoldingPrimOp :: _PackedString -> PrimOp
141 realWorldStateTy :: UniType
149 instance Eq GlobalSwitch
155 instance Ord GlobalSwitch
157 instance Ord PrimKind
160 instance NamedThing Id
161 instance NamedThing TyCon
162 instance Outputable Id
163 instance Outputable PrimKind
164 instance Outputable PrimOp
165 instance Outputable TyCon