summaryrefslogtreecommitdiff
path: root/compiler/codeGen/CgParallel.hs
diff options
context:
space:
mode:
authorSimon Marlow <marlowsd@gmail.com>2012-10-14 13:03:32 +0100
committerSimon Marlow <marlowsd@gmail.com>2012-10-19 12:03:16 +0100
commit6fbd46b0bb3ee56160b8216cb2a3bb718ccb41c2 (patch)
tree8e8c569d0989f89c66a6ccd0d59a466266130649 /compiler/codeGen/CgParallel.hs
parent53810006bbcd3fc9b58893858f95c3432cb33f0e (diff)
downloadhaskell-6fbd46b0bb3ee56160b8216cb2a3bb718ccb41c2.tar.gz
Remove the old codegen
Except for CgUtils.fixStgRegisters that is used in the NCG and LLVM backends, and should probably be moved somewhere else.
Diffstat (limited to 'compiler/codeGen/CgParallel.hs')
-rw-r--r--compiler/codeGen/CgParallel.hs100
1 files changed, 0 insertions, 100 deletions
diff --git a/compiler/codeGen/CgParallel.hs b/compiler/codeGen/CgParallel.hs
deleted file mode 100644
index 0e642cba59..0000000000
--- a/compiler/codeGen/CgParallel.hs
+++ /dev/null
@@ -1,100 +0,0 @@
------------------------------------------------------------------------------
---
--- (c) The University of Glasgow -2006
---
--- Code generation relaed to GpH
--- (a) parallel
--- (b) GranSim
---
------------------------------------------------------------------------------
-
-module CgParallel(
- staticGranHdr,staticParHdr,
- granFetchAndReschedule, granYield,
- doGranAllocate
- ) where
-
-import CgMonad
-import CgCallConv
-import DynFlags
-import Id
-import OldCmm
-import Outputable
-import SMRep
-
-import Control.Monad
-
-staticParHdr :: [CmmLit]
--- Parallel header words in a static closure
-staticParHdr = []
-
---------------------------------------------------------
--- GranSim stuff
---------------------------------------------------------
-
-staticGranHdr :: [CmmLit]
--- Gransim header words in a static closure
-staticGranHdr = []
-
-doGranAllocate :: CmmExpr -> Code
--- macro DO_GRAN_ALLOCATE
-doGranAllocate _hp
- = do dflags <- getDynFlags
- when (gopt Opt_GranMacros dflags) $ panic "doGranAllocate"
-
-
-
--------------------------
-granFetchAndReschedule :: [(Id,GlobalReg)] -- Live registers
- -> Bool -- Node reqd?
- -> Code
--- Emit code for simulating a fetch and then reschedule.
-granFetchAndReschedule regs node_reqd
- = do dflags <- getDynFlags
- let liveness = mkRegLiveness dflags regs 0 0
- when (gopt Opt_GranMacros dflags &&
- (node `elem` map snd regs || node_reqd)) $
- do fetch
- reschedule liveness node_reqd
-
-fetch :: FCode ()
-fetch = panic "granFetch"
- -- Was: absC (CMacroStmt GRAN_FETCH [])
- --HWL: generate GRAN_FETCH macro for GrAnSim
- -- currently GRAN_FETCH and GRAN_FETCH_AND_RESCHEDULE are miai
-
-reschedule :: StgWord -> Bool -> Code
-reschedule _liveness _node_reqd = panic "granReschedule"
- -- Was: absC (CMacroStmt GRAN_RESCHEDULE [
- -- mkIntCLit (I# (word2Int# liveness_mask)),
- -- mkIntCLit (if node_reqd then 1 else 0)])
-
-
--------------------------
--- The @GRAN_YIELD@ macro is taken from JSM's code for Concurrent Haskell. It
--- allows to context-switch at places where @node@ is not alive (it uses the
--- @Continue@ rather than the @EnterNodeCode@ function in the RTS). We emit
--- this kind of macro at the beginning of the following kinds of basic bocks:
--- \begin{itemize}
--- \item Slow entry code where node is not alive (see @CgClosure.lhs@). Normally
--- we use @fetchAndReschedule@ at a slow entry code.
--- \item Fast entry code (see @CgClosure.lhs@).
--- \item Alternatives in case expressions (@CLabelledCode@ structures), provided
--- that they are not inlined (see @CgCases.lhs@). These alternatives will
--- be turned into separate functions.
-
-granYield :: [(Id,GlobalReg)] -- Live registers
- -> Bool -- Node reqd?
- -> Code
-
-granYield regs node_reqd
- = do dflags <- getDynFlags
- let liveness = mkRegLiveness dflags regs 0 0
- when (gopt Opt_GranMacros dflags && node_reqd) $ yield liveness
-
-yield :: StgWord -> Code
-yield _liveness = panic "granYield"
- -- Was : absC (CMacroStmt GRAN_YIELD
- -- [mkIntCLit (I# (word2Int# liveness_mask))])
-
-