Use n-ary sums and products for NDP's generic representation
[ghc-hetmet.git] / compiler / prelude / PrelNames.lhs
index 09f6328..9839290 100644 (file)
@@ -61,7 +61,7 @@ import Unique   ( Unique, Uniquable(..), hasKey,
                  ) 
 import BasicTypes ( Boxity(..), Arity )
 import Name      ( Name, mkInternalName, mkExternalName )
-import SrcLoc     ( noSrcLoc )
+import SrcLoc
 import FastString
 \end{code}
 
@@ -75,14 +75,14 @@ import FastString
 This *local* name is used by the interactive stuff
 
 \begin{code}
-itName uniq = mkInternalName uniq (mkOccNameFS varName FSLIT("it")) noSrcLoc
+itName uniq = mkInternalName uniq (mkOccNameFS varName FSLIT("it")) noSrcSpan
 \end{code}
 
 \begin{code}
 -- mkUnboundName makes a place-holder Name; it shouldn't be looked at except possibly
 -- during compiler debugging.
 mkUnboundName :: RdrName -> Name
-mkUnboundName rdr_name = mkInternalName unboundKey (rdrNameOcc rdr_name) noSrcLoc
+mkUnboundName rdr_name = mkInternalName unboundKey (rdrNameOcc rdr_name) noSrcSpan
 
 isUnboundName :: Name -> Bool
 isUnboundName name = name `hasKey` unboundKey
@@ -104,6 +104,7 @@ basicKnownKeyNames :: [Name]
 basicKnownKeyNames
  = genericTyConNames
  ++ typeableClassNames
+ ++ ndpNames
  ++ [  -- Type constructors (synonyms especially)
        ioTyConName, ioDataConName,
        runMainIOName,
@@ -179,7 +180,7 @@ basicKnownKeyNames
 
         -- Parallel array operations
        nullPName, lengthPName, replicatePName, mapPName,
-       filterPName, zipPName, crossPName, indexPName,
+       filterPName, zipPName, crossMapPName, indexPName,
        toPName, bpermutePName, bpermuteDftPName, indexOfPName,
 
        -- FFI primitive types that are not wired-in.
@@ -188,11 +189,10 @@ basicKnownKeyNames
        wordTyConName, word8TyConName, word16TyConName, word32TyConName, word64TyConName,
 
        -- Others
-       otherwiseIdName, 
+       otherwiseIdName, inlineIdName,
        plusIntegerName, timesIntegerName,
        eqStringName, assertName, breakpointName, breakpointCondName,
-        breakpointAutoName,  opaqueTyConName, unknownTyConName, 
-        unknown1TyConName, unknown2TyConName, unknown3TyConName,
+        breakpointAutoName,  opaqueTyConName,
         assertErrorName, runSTRepName,
        printName, fstName, sndName,
 
@@ -215,6 +215,15 @@ basicKnownKeyNames
 
 genericTyConNames :: [Name]
 genericTyConNames = [crossTyConName, plusTyConName, genUnitTyConName]
+
+ndpNames :: [Name]
+ndpNames = [ parrayTyConName, paTyConName, preprTyConName, prTyConName
+           , embedTyConName
+           , closureTyConName
+           , mkClosureName, applyClosureName
+           , mkClosurePName, applyClosurePName
+           , lengthPAName, replicatePAName, emptyPAName, packPAName,
+             combinePAName, intEqPAName ]
 \end{code}
 
 
@@ -266,6 +275,12 @@ aRROW              = mkBaseModule FSLIT("Control.Arrow")
 rANDOM         = mkBaseModule FSLIT("System.Random")
 gLA_EXTS       = mkBaseModule FSLIT("GHC.Exts")
 
+nDP_PARRAY      = mkNDPModule FSLIT("Data.Array.Parallel.Lifted.PArray")
+nDP_REPR        = mkNDPModule FSLIT("Data.Array.Parallel.Lifted.Repr")
+nDP_UTILS       = mkNDPModule FSLIT("Data.Array.Parallel.Lifted.Utils")
+nDP_CLOSURE     = mkNDPModule FSLIT("Data.Array.Parallel.Lifted.Closure")
+nDP_INSTANCES   = mkNDPModule FSLIT("Data.Array.Parallel.Lifted.Instances")
+
 mAIN           = mkMainModule_ mAIN_NAME
 rOOT_MAIN      = mkMainModule FSLIT(":Main") -- Root module for initialisation 
 
@@ -285,6 +300,12 @@ mkBaseModule m = mkModule basePackageId (mkModuleNameFS m)
 mkBaseModule_ :: ModuleName -> Module
 mkBaseModule_ m = mkModule basePackageId m
 
+mkNDPModule :: FastString -> Module
+mkNDPModule m = mkModule ndpPackageId (mkModuleNameFS m)
+
+mkNDPModule_ :: ModuleName -> Module
+mkNDPModule_ m = mkModule ndpPackageId m
+
 mkMainModule :: FastString -> Module
 mkMainModule m = mkModule mainPackageId (mkModuleNameFS m)
 
@@ -503,27 +524,23 @@ assertName        = varQual gHC_BASE FSLIT("assert")     assertIdKey
 breakpointName    = varQual gHC_BASE FSLIT("breakpoint") breakpointIdKey
 breakpointCondName= varQual gHC_BASE FSLIT("breakpointCond") breakpointCondIdKey
 breakpointAutoName= varQual gHC_BASE FSLIT("breakpointAuto") breakpointAutoIdKey
-unknownTyConName  = tcQual  gHC_BASE FSLIT("Unknown") unknownTyConKey
-unknown1TyConName = tcQual  gHC_BASE FSLIT("Unknown1") unknown1TyConKey
-unknown2TyConName = tcQual  gHC_BASE FSLIT("Unknown2") unknown2TyConKey
-unknown3TyConName = tcQual  gHC_BASE FSLIT("Unknown3") unknown3TyConKey
 opaqueTyConName   = tcQual  gHC_BASE FSLIT("Opaque")   opaqueTyConKey
 
 breakpointJumpName
     = mkInternalName
         breakpointJumpIdKey
         (mkOccNameFS varName FSLIT("breakpointJump"))
-        noSrcLoc
+        noSrcSpan
 breakpointCondJumpName
     = mkInternalName
         breakpointCondJumpIdKey
         (mkOccNameFS varName FSLIT("breakpointCondJump"))
-        noSrcLoc
+        noSrcSpan
 breakpointAutoJumpName
     = mkInternalName
         breakpointAutoJumpIdKey
         (mkOccNameFS varName FSLIT("breakpointAutoJump"))
-        noSrcLoc
+        noSrcSpan
 
 -- PrelTup
 fstName                  = varQual dATA_TUP FSLIT("fst") fstIdKey
@@ -605,7 +622,7 @@ replicatePName        = varQual gHC_PARR FSLIT("replicateP")         replicatePIdKey
 mapPName         = varQual gHC_PARR FSLIT("mapP")               mapPIdKey
 filterPName      = varQual gHC_PARR FSLIT("filterP")            filterPIdKey
 zipPName         = varQual gHC_PARR FSLIT("zipP")               zipPIdKey
-crossPName       = varQual gHC_PARR FSLIT("crossP")             crossPIdKey
+crossMapPName    = varQual gHC_PARR FSLIT("crossMapP")          crossMapPIdKey
 indexPName       = varQual gHC_PARR FSLIT("!:")                 indexPIdKey
 toPName                  = varQual gHC_PARR FSLIT("toP")                toPIdKey
 bpermutePName     = varQual gHC_PARR FSLIT("bpermuteP")    bpermutePIdKey
@@ -664,7 +681,7 @@ loopAName      = varQual aRROW FSLIT("loop")  loopAIdKey
 monadPlusClassName  = clsQual mONAD FSLIT("MonadPlus")  monadPlusClassKey
 randomClassName     = clsQual rANDOM FSLIT("Random")    randomClassKey
 randomGenClassName  = clsQual rANDOM FSLIT("RandomGen") randomGenClassKey
-isStringClassName   = clsQual gHC_BASE FSLIT("IsString") isStringClassKey
+isStringClassName   = clsQual dATA_STRING FSLIT("IsString") isStringClassKey
 
 -- dotnet interop
 objectTyConName            = tcQual   dOTNET FSLIT("Object") objectTyConKey
@@ -675,6 +692,24 @@ marshalObjectName   = varQual  dOTNET FSLIT("marshalObject") marshalObjectIdKey
 marshalStringName   = varQual  dOTNET FSLIT("marshalString") marshalStringIdKey
 unmarshalStringName = varQual  dOTNET FSLIT("unmarshalString") unmarshalStringIdKey
 checkDotnetResName  = varQual  dOTNET FSLIT("checkResult")     checkDotnetResNameIdKey
+
+-- NDP stuff
+parrayTyConName     = tcQual   nDP_PARRAY FSLIT("PArray") parrayTyConKey
+paTyConName         = tcQual   nDP_PARRAY FSLIT("PA")     paTyConKey
+preprTyConName      = tcQual   nDP_PARRAY FSLIT("PRepr")  preprTyConKey
+prTyConName         = clsQual  nDP_PARRAY FSLIT("PR")     prTyConKey
+embedTyConName      = tcQual   nDP_REPR   FSLIT("Embed")  embedTyConKey
+lengthPAName        = varQual  nDP_PARRAY FSLIT("lengthPA")    lengthPAIdKey
+replicatePAName     = varQual  nDP_PARRAY FSLIT("replicatePA") replicatePAIdKey
+emptyPAName         = varQual  nDP_PARRAY FSLIT("emptyPA") emptyPAIdKey
+packPAName          = varQual  nDP_PARRAY FSLIT("packPA")  packPAIdKey
+combinePAName       = varQual  nDP_PARRAY FSLIT("combinePA") combinePAIdKey
+intEqPAName         = varQual  nDP_UTILS  FSLIT("intEqPA") intEqPAIdKey
+closureTyConName    = tcQual   nDP_CLOSURE FSLIT(":->")    closureTyConKey
+mkClosureName       = varQual  nDP_CLOSURE FSLIT("mkClosure")  mkClosureIdKey
+applyClosureName    = varQual  nDP_CLOSURE FSLIT("$:")         applyClosureIdKey
+mkClosurePName      = varQual  nDP_CLOSURE FSLIT("mkClosureP") mkClosurePIdKey
+applyClosurePName   = varQual  nDP_CLOSURE FSLIT("$:^")        applyClosurePIdKey
 \end{code}
 
 %************************************************************************
@@ -691,15 +726,15 @@ tcQual   = mk_known_key_name tcName
 clsQual  = mk_known_key_name clsName
 
 mk_known_key_name space mod str uniq 
-  = mkExternalName uniq mod (mkOccNameFS space str) noSrcLoc
+  = mkExternalName uniq mod (mkOccNameFS space str) noSrcSpan
 
 conName :: Module -> FastString -> Unique -> Name
 conName mod occ uniq
-  = mkExternalName uniq mod (mkOccNameFS dataName occ) noSrcLoc
+  = mkExternalName uniq mod (mkOccNameFS dataName occ) noSrcSpan
 
 methName :: Module -> FastString -> Unique -> Name
 methName mod occ uniq
-  = mkExternalName uniq mod (mkVarOccFS occ) noSrcLoc
+  = mkExternalName uniq mod (mkVarOccFS occ) noSrcSpan
 \end{code}
 
 %************************************************************************
@@ -854,6 +889,13 @@ opaqueTyConKey                          = mkPreludeTyConUnique 133
 
 stringTyConKey                         = mkPreludeTyConUnique 134
 
+parrayTyConKey                          = mkPreludeTyConUnique 135
+closureTyConKey                         = mkPreludeTyConUnique 136
+paTyConKey                              = mkPreludeTyConUnique 137
+preprTyConKey                           = mkPreludeTyConUnique 138
+embedTyConKey                           = mkPreludeTyConUnique 139
+prTyConKey                              = mkPreludeTyConUnique 140
+
 
 ---------------- Template Haskell -------------------
 --     USES TyConUniques 100-129
@@ -980,7 +1022,7 @@ replicatePIdKey                  = mkPreludeMiscIdUnique 82
 mapPIdKey                    = mkPreludeMiscIdUnique 83
 filterPIdKey                 = mkPreludeMiscIdUnique 84
 zipPIdKey                    = mkPreludeMiscIdUnique 85
-crossPIdKey                  = mkPreludeMiscIdUnique 86
+crossMapPIdKey               = mkPreludeMiscIdUnique 86
 indexPIdKey                  = mkPreludeMiscIdUnique 87
 toPIdKey                     = mkPreludeMiscIdUnique 88
 enumFromToPIdKey              = mkPreludeMiscIdUnique 89
@@ -1034,6 +1076,19 @@ loopAIdKey       = mkPreludeMiscIdUnique 124
 
 fromStringClassOpKey         = mkPreludeMiscIdUnique 125
 
+-- Flattened parallel array functions
+mkClosureIdKey                = mkPreludeMiscIdUnique 126
+applyClosureIdKey             = mkPreludeMiscIdUnique 127
+mkClosurePIdKey               = mkPreludeMiscIdUnique 128
+applyClosurePIdKey            = mkPreludeMiscIdUnique 129
+closurePAIdKey                = mkPreludeMiscIdUnique 130
+lengthPAIdKey                 = mkPreludeMiscIdUnique 131
+replicatePAIdKey              = mkPreludeMiscIdUnique 132
+emptyPAIdKey                  = mkPreludeMiscIdUnique 133
+packPAIdKey                   = mkPreludeMiscIdUnique 134
+combinePAIdKey                = mkPreludeMiscIdUnique 135
+intEqPAIdKey                  = mkPreludeMiscIdUnique 136
+
 ---------------- Template Haskell -------------------
 --     USES IdUniques 200-399
 -----------------------------------------------------