X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=compiler%2Fvectorise%2FVectBuiltIn.hs;h=36159cfcbf4ad377ecc7239e3cdad265d6f3491d;hp=3eb39030c6a370b166fb8bcfd8fac14ea5de0dd8;hb=9f695847ad2ace19c5fd0b937c34015af9735863;hpb=8e3058a518acedf74306f95f06a7e78cc1145ca6 diff --git a/compiler/vectorise/VectBuiltIn.hs b/compiler/vectorise/VectBuiltIn.hs index 3eb3903..36159cf 100644 --- a/compiler/vectorise/VectBuiltIn.hs +++ b/compiler/vectorise/VectBuiltIn.hs @@ -1,6 +1,8 @@ module VectBuiltIn ( Builtins(..), sumTyCon, prodTyCon, - initBuiltins, initBuiltinTyCons, initBuiltinPAs, initBuiltinPRs + initBuiltins, initBuiltinTyCons, initBuiltinPAs, initBuiltinPRs, + + primMethod ) where #include "HsVersions.h" @@ -13,11 +15,12 @@ import DataCon ( DataCon ) import TyCon ( TyCon, tyConName, tyConDataCons ) import Var ( Var ) import Id ( mkSysLocal ) -import Name ( Name ) -import OccName ( mkVarOccFS, mkOccNameFS, tcName ) +import Name ( Name, getOccString ) +import NameEnv +import OccName import TypeRep ( funTyCon ) -import TysPrim ( intPrimTy ) +import TysPrim import TysWiredIn ( unitTyCon, tupleTyCon, intTyConName ) import PrelNames import BasicTypes ( Boxity(..) ) @@ -191,3 +194,15 @@ lookupExternalTyCon mod fs unitTyConName = tyConName unitTyCon + +primMethod :: TyCon -> String -> DsM (Maybe Var) +primMethod tycon method + | Just suffix <- lookupNameEnv prim_ty_cons (tyConName tycon) + = liftM Just + $ dsLookupGlobalId =<< lookupOrig nDP_PRIM (mkVarOcc $ method ++ suffix) + + | otherwise = return Nothing + +prim_ty_cons = mkNameEnv [mk_prim intPrimTyCon] + where + mk_prim tycon = (tyConName tycon, '_' : getOccString tycon)