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, 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
61 mkBuild :: UniType -> TyVar -> Id -> Id -> Id -> CoreExpr Id Id -> CoreExpr Id Id
62 mkFoldl :: UniType -> UniType -> Id -> Id -> Id -> CoreExpr a Id
63 mkFoldr :: UniType -> UniType -> Id -> Id -> Id -> CoreExpr a Id
64 fragilePrimOp :: PrimOp -> Bool
65 getPrimOpResultInfo :: PrimOp -> PrimOpResultInfo
66 isCompareOp :: PrimOp -> Bool
68 addrPrimTyCon :: TyCon
70 charPrimTyCon :: TyCon
71 doublePrimTy :: UniType
72 doublePrimTyCon :: TyCon
73 floatPrimTy :: UniType
74 floatPrimTyCon :: TyCon
82 builtinNameInfo :: (GlobalSwitch -> Bool) -> (_PackedString -> Labda Name, _PackedString -> Labda Name)
96 getStatePairingConInfo :: UniType -> (Id, UniType)
103 integerTyCon :: TyCon
108 mkFunTy :: UniType -> UniType -> UniType
110 packStringForCId :: Id
111 realWorldPrimId :: Id
112 unpackCString2Id :: Id
113 unpackCStringAppendId :: Id
114 unpackCStringId :: Id
116 pprPrimOp :: PprStyle -> PrimOp -> Int -> Bool -> PrettyRep
117 primOpCanTriggerGC :: PrimOp -> Bool
118 primOpHeapReq :: PrimOp -> HeapRequirement
119 primOpIsCheap :: PrimOp -> Bool
120 primOpNameInfo :: PrimOp -> (_PackedString, Name)
121 primOpNeedsWrapper :: PrimOp -> Bool
122 primOpOkForSpeculation :: PrimOp -> Bool
123 showPrimOp :: PprStyle -> PrimOp -> [Char]
124 typeOfPrimOp :: PrimOp -> UniType
125 realWorldStatePrimTy :: UniType
126 realWorldTy :: UniType
127 realWorldTyCon :: TyCon
128 voidPrimTy :: UniType
129 wordPrimTy :: UniType
130 wordPrimTyCon :: TyCon
131 mkLiftTy :: UniType -> UniType
132 mkListTy :: UniType -> UniType
133 mkPrimIoTy :: UniType -> UniType
134 mkTupleTy :: Int -> [UniType] -> UniType
137 rationalTy :: UniType
138 rationalTyCon :: TyCon
139 readUnfoldingPrimOp :: _PackedString -> PrimOp
140 realWorldStateTy :: UniType
148 instance Eq GlobalSwitch
154 instance Ord GlobalSwitch
156 instance Ord PrimKind
159 instance NamedThing Id
160 instance NamedThing TyCon
161 instance Outputable Id
162 instance Outputable PrimKind
163 instance Outputable PrimOp
164 instance Outputable TyCon