[project @ 1996-01-11 14:06:51 by partain]
[ghc-hetmet.git] / ghc / compiler / prelude / PrimOps.hi
1 {-# GHC_PRAGMA INTERFACE VERSION 5 #-}
2 interface PrimOps where
3 import Class(Class)
4 import HeapOffs(HeapOffset)
5 import Id(Id)
6 import Name(Name)
7 import NameTypes(FullName, ShortName)
8 import Outputable(Outputable)
9 import PreludePS(_PackedString)
10 import Pretty(PprStyle, PrettyRep)
11 import PrimKind(PrimKind)
12 import TyCon(TyCon)
13 import TyVar(TyVar, TyVarTemplate)
14 import UniType(UniType)
15 import Unique(Unique)
16 data HeapOffset 
17 data HeapRequirement   = NoHeapRequired | FixedHeapRequired HeapOffset | VariableHeapRequired
18 data Id 
19 data Name 
20 data PrimKind 
21 data PrimOp
22   = 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
23 data PrimOpInfo   = Dyadic _PackedString UniType | Monadic _PackedString UniType | Compare _PackedString UniType | Coerce _PackedString UniType UniType | PrimResult _PackedString [TyVarTemplate] [UniType] TyCon PrimKind [UniType] | AlgResult _PackedString [TyVarTemplate] [UniType] TyCon [UniType]
24 data PrimOpResultInfo   = ReturnsPrim PrimKind | ReturnsAlg TyCon
25 data TyCon 
26 data TyVarTemplate 
27 data UniType 
28 fragilePrimOp :: PrimOp -> Bool
29 getPrimOpResultInfo :: PrimOp -> PrimOpResultInfo
30 isCompareOp :: PrimOp -> Bool
31 pprPrimOp :: PprStyle -> PrimOp -> Int -> Bool -> PrettyRep
32 primOpCanTriggerGC :: PrimOp -> Bool
33 primOpHeapReq :: PrimOp -> HeapRequirement
34 primOpId :: PrimOp -> Id
35 primOpIsCheap :: PrimOp -> Bool
36 primOpNameInfo :: PrimOp -> (_PackedString, Name)
37 primOpNeedsWrapper :: PrimOp -> Bool
38 primOpOkForSpeculation :: PrimOp -> Bool
39 showPrimOp :: PprStyle -> PrimOp -> [Char]
40 tagOf_PrimOp :: PrimOp -> Int#
41 typeOfPrimOp :: PrimOp -> UniType
42 instance Eq PrimOp
43 instance Outputable PrimOp
44