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, appendId, augmentId, buildId, eRROR_ID, foldlId, foldrId, integerMinusOneId, integerPlusOneId, integerPlusTwoId, integerZeroId, mkBuild, mkFoldl, mkFoldr, pAT_ERROR_ID, packStringForCId, realWorldPrimId, unpackCString2Id, unpackCStringAppendId, unpackCStringFoldrId, 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
60 integerMinusOneId :: Id
61 integerPlusOneId :: Id
62 integerPlusTwoId :: Id
64 mkBuild :: UniType -> TyVar -> Id -> Id -> Id -> CoreExpr Id Id -> CoreExpr Id Id
65 mkFoldl :: UniType -> UniType -> Id -> Id -> Id -> CoreExpr a Id
66 mkFoldr :: UniType -> UniType -> Id -> Id -> Id -> CoreExpr a Id
67 fragilePrimOp :: PrimOp -> Bool
68 getPrimOpResultInfo :: PrimOp -> PrimOpResultInfo
69 isCompareOp :: PrimOp -> Bool
71 addrPrimTyCon :: TyCon
73 charPrimTyCon :: TyCon
74 doublePrimTy :: UniType
75 doublePrimTyCon :: TyCon
76 floatPrimTy :: UniType
77 floatPrimTyCon :: TyCon
85 builtinNameInfo :: (GlobalSwitch -> Bool) -> (_PackedString -> Labda Name, _PackedString -> Labda Name)
99 getStatePairingConInfo :: UniType -> (Id, UniType)
106 integerTyCon :: TyCon
111 mkFunTy :: UniType -> UniType -> UniType
113 packStringForCId :: Id
114 realWorldPrimId :: Id
115 unpackCString2Id :: Id
116 unpackCStringAppendId :: Id
117 unpackCStringFoldrId :: Id
118 unpackCStringId :: Id
120 pprPrimOp :: PprStyle -> PrimOp -> Int -> Bool -> PrettyRep
121 primOpCanTriggerGC :: PrimOp -> Bool
122 primOpHeapReq :: PrimOp -> HeapRequirement
123 primOpIsCheap :: PrimOp -> Bool
124 primOpNameInfo :: PrimOp -> (_PackedString, Name)
125 primOpNeedsWrapper :: PrimOp -> Bool
126 primOpOkForSpeculation :: PrimOp -> Bool
127 showPrimOp :: PprStyle -> PrimOp -> [Char]
128 typeOfPrimOp :: PrimOp -> UniType
129 realWorldStatePrimTy :: UniType
130 realWorldTy :: UniType
131 realWorldTyCon :: TyCon
132 voidPrimTy :: UniType
133 wordPrimTy :: UniType
134 wordPrimTyCon :: TyCon
135 mkLiftTy :: UniType -> UniType
136 mkListTy :: UniType -> UniType
137 mkPrimIoTy :: UniType -> UniType
138 mkTupleTy :: Int -> [UniType] -> UniType
141 rationalTy :: UniType
142 rationalTyCon :: TyCon
143 readUnfoldingPrimOp :: _PackedString -> PrimOp
144 realWorldStateTy :: UniType
152 instance Eq GlobalSwitch
158 instance Ord GlobalSwitch
160 instance Ord PrimKind
163 instance NamedThing Id
164 instance NamedThing TyCon
165 instance Outputable Id
166 instance Outputable PrimKind
167 instance Outputable PrimOp
168 instance Outputable TyCon