uhc-light-1.1.7.0: src/UHC/Light/Compiler/CodeGen/BuiltinPrims.hs
module UHC.Light.Compiler.CodeGen.BuiltinPrims
( PrimitiveNeedsEval (..), lookupPrimNeedsEval )
where
import UHC.Light.Compiler.Base.HsName
import UHC.Light.Compiler.Base.Common
import UHC.Light.Compiler.Opts
import UHC.Light.Compiler.CodeGen.BasicAnnot
import UHC.Light.Compiler.Base.HsName.Builtin
import qualified Data.Map as Map
import qualified UHC.Util.FastSeq as Seq
import UHC.Util.Pretty
import UHC.Util.Utils
{-# LINE 28 "src/ehc/CodeGen/BuiltinPrims.chs" #-}
data PrimitiveNeedsEval
= Prim
{ primArgNeedEval :: ![Bool] -- default: True
, primResNeedEval :: ! Bool -- default: False
}
lookupPrimNeedsEval :: {- Backend -> -} String -> Maybe PrimitiveNeedsEval
lookupPrimNeedsEval {- backend -} name = Map.lookup name primsNeedsEval {- >>= Map.lookup backend -}
{-# LINE 43 "src/ehc/CodeGen/BuiltinPrims.chs" #-}
primsNeedsEval :: Map.Map String ({- Map.Map Backend -} PrimitiveNeedsEval)
primsNeedsEval
= Map.fromList
[
( "primCatchException" , Prim [False,False] False )
, ( "primThrowException" , Prim [False] False )
, ( "primNewArray" , Prim [True,False] False )
, ( "primIndexArray" , Prim [True,True] True )
, ( "primWriteArray" , Prim [True,True,False] False )
-- , ( "primReadMutVar" , Prim [True,True] True )
, ( "primNewMutVar" , Prim [False,True] False )
, ( "primWriteMutVar" , Prim [True,False,True] False )
]