Safe Haskell | None |
---|---|
Language | Haskell2010 |
Synopsis
- data FCode a
- initC :: IO CgState
- initFCodeState :: Platform -> FCodeState
- runC :: StgToCmmConfig -> FCodeState -> CgState -> FCode a -> (a, CgState)
- fixC :: (a -> FCode a) -> FCode a
- newUnique :: FCode Unique
- emitLabel :: BlockId -> FCode ()
- emit :: CmmAGraph -> FCode ()
- emitDecl :: CmmDecl -> FCode ()
- emitProcWithConvention :: Convention -> Maybe CmmInfoTable -> CLabel -> [CmmFormal] -> CmmAGraphScoped -> FCode ()
- emitProcWithStackFrame :: Convention -> Maybe CmmInfoTable -> CLabel -> [CmmFormal] -> [CmmFormal] -> CmmAGraphScoped -> Bool -> FCode ()
- emitOutOfLine :: BlockId -> CmmAGraphScoped -> FCode ()
- emitAssign :: CmmReg -> CmmExpr -> FCode ()
- emitStore :: CmmExpr -> CmmExpr -> FCode ()
- emitStore' :: AlignmentSpec -> CmmExpr -> CmmExpr -> FCode ()
- emitComment :: FastString -> FCode ()
- emitTick :: CmmTickish -> FCode ()
- emitUnwind :: [(GlobalReg, Maybe CmmExpr)] -> FCode ()
- newTemp :: MonadUnique m => CmmType -> m LocalReg
- getCmm :: FCode a -> FCode (a, CmmGroup)
- aGraphToGraph :: CmmAGraphScoped -> FCode CmmGraph
- getPlatform :: FCode Platform
- getProfile :: FCode Profile
- getCodeR :: FCode a -> FCode (a, CmmAGraph)
- getCode :: FCode a -> FCode CmmAGraph
- getCodeScoped :: FCode a -> FCode (a, CmmAGraphScoped)
- getHeapUsage :: (VirtualHpOffset -> FCode a) -> FCode a
- getContext :: FCode SDocContext
- mkCmmIfThenElse :: CmmExpr -> CmmAGraph -> CmmAGraph -> FCode CmmAGraph
- mkCmmIfThen :: CmmExpr -> CmmAGraph -> FCode CmmAGraph
- mkCmmIfGoto :: CmmExpr -> BlockId -> FCode CmmAGraph
- mkCmmIfThenElse' :: CmmExpr -> CmmAGraph -> CmmAGraph -> Maybe Bool -> FCode CmmAGraph
- mkCmmIfThen' :: CmmExpr -> CmmAGraph -> Maybe Bool -> FCode CmmAGraph
- mkCmmIfGoto' :: CmmExpr -> BlockId -> Maybe Bool -> FCode CmmAGraph
- mkCall :: CmmExpr -> (Convention, Convention) -> [CmmFormal] -> [CmmExpr] -> UpdFrameOffset -> [CmmExpr] -> FCode CmmAGraph
- mkCmmCall :: CmmExpr -> [CmmFormal] -> [CmmExpr] -> UpdFrameOffset -> FCode CmmAGraph
- forkClosureBody :: FCode () -> FCode ()
- forkLneBody :: FCode a -> FCode a
- forkAlts :: [FCode a] -> FCode [a]
- forkAltPair :: FCode a -> FCode a -> FCode (a, a)
- codeOnly :: FCode () -> FCode ()
- type ConTagZ = Int
- data Sequel
- data ReturnKind
- withSequel :: Sequel -> FCode a -> FCode a
- getSequel :: FCode Sequel
- data SelfLoopInfo = MkSelfLoopInfo {
- sli_id :: !Id
- sli_arity :: !RepArity
- sli_registers :: ![LocalReg]
- sli_header_block :: !BlockId
- setTickyCtrLabel :: CLabel -> FCode a -> FCode a
- getTickyCtrLabel :: FCode CLabel
- tickScope :: FCode a -> FCode a
- getTickScope :: FCode CmmTickScope
- withUpdFrameOff :: UpdFrameOffset -> FCode a -> FCode a
- getUpdFrameOff :: FCode UpdFrameOffset
- data HeapUsage = HeapUsage {}
- type VirtualHpOffset = WordOff
- initHpUsage :: HeapUsage
- getHpUsage :: FCode HeapUsage
- setHpUsage :: HeapUsage -> FCode ()
- heapHWM :: HeapUsage -> VirtualHpOffset
- setVirtHp :: VirtualHpOffset -> FCode ()
- getVirtHp :: FCode VirtualHpOffset
- setRealHp :: VirtualHpOffset -> FCode ()
- getModuleName :: FCode Module
- getState :: FCode CgState
- setState :: CgState -> FCode ()
- getSelfLoop :: FCode (Maybe SelfLoopInfo)
- withSelfLoop :: SelfLoopInfo -> FCode a -> FCode a
- getStgToCmmConfig :: FCode StgToCmmConfig
- data CgIdInfo = CgIdInfo {}
- getBinds :: FCode CgBindings
- setBinds :: CgBindings -> FCode ()
- data StgToCmmConfig = StgToCmmConfig {
- stgToCmmProfile :: !Profile
- stgToCmmThisModule :: Module
- stgToCmmTmpDir :: !TempDir
- stgToCmmContext :: !SDocContext
- stgToCmmEmitDebugInfo :: !Bool
- stgToCmmBinBlobThresh :: !(Maybe Word)
- stgToCmmMaxInlAllocSize :: !Int
- stgToCmmDoTicky :: !Bool
- stgToCmmTickyAllocd :: !Bool
- stgToCmmTickyLNE :: !Bool
- stgToCmmTickyDynThunk :: !Bool
- stgToCmmTickyTag :: !Bool
- stgToCmmLoopification :: !Bool
- stgToCmmAlignCheck :: !Bool
- stgToCmmOptHpc :: !Bool
- stgToCmmFastPAPCalls :: !Bool
- stgToCmmSCCProfiling :: !Bool
- stgToCmmEagerBlackHole :: !Bool
- stgToCmmInfoTableMap :: !Bool
- stgToCmmInfoTableMapWithFallback :: !Bool
- stgToCmmInfoTableMapWithStack :: !Bool
- stgToCmmOmitYields :: !Bool
- stgToCmmOmitIfPragmas :: !Bool
- stgToCmmPIC :: !Bool
- stgToCmmPIE :: !Bool
- stgToCmmExtDynRefs :: !Bool
- stgToCmmDoBoundsCheck :: !Bool
- stgToCmmDoTagCheck :: !Bool
- stgToCmmAllowBigArith :: !Bool
- stgToCmmAllowQuotRemInstr :: !Bool
- stgToCmmAllowQuotRem2 :: !Bool
- stgToCmmAllowExtendedAddSubInstrs :: !Bool
- stgToCmmAllowIntMul2Instr :: !Bool
- stgToCmmAllowFMAInstr :: FMASign -> Bool
- stgToCmmTickyAP :: !Bool
- stgToCmmVecInstrsErr :: Maybe String
- stgToCmmAvx :: !Bool
- stgToCmmAvx2 :: !Bool
- stgToCmmAvx512f :: !Bool
- data CgState = MkCgState {
- cgs_stmts :: CmmAGraph
- cgs_tops :: OrdList CmmDecl
- cgs_binds :: CgBindings
- cgs_hp_usg :: HeapUsage
- cgs_uniqs :: UniqSupply
Documentation
initFCodeState :: Platform -> FCodeState Source #
emitProcWithConvention :: Convention -> Maybe CmmInfoTable -> CLabel -> [CmmFormal] -> CmmAGraphScoped -> FCode () Source #
emitProcWithStackFrame :: Convention -> Maybe CmmInfoTable -> CLabel -> [CmmFormal] -> [CmmFormal] -> CmmAGraphScoped -> Bool -> FCode () Source #
emitOutOfLine :: BlockId -> CmmAGraphScoped -> FCode () Source #
emitStore' :: AlignmentSpec -> CmmExpr -> CmmExpr -> FCode () Source #
emitComment :: FastString -> FCode () Source #
emitTick :: CmmTickish -> FCode () Source #
getCodeScoped :: FCode a -> FCode (a, CmmAGraphScoped) Source #
Generate code into a fresh tick (sub-)scope and gather generated code
getHeapUsage :: (VirtualHpOffset -> FCode a) -> FCode a Source #
mkCall :: CmmExpr -> (Convention, Convention) -> [CmmFormal] -> [CmmExpr] -> UpdFrameOffset -> [CmmExpr] -> FCode CmmAGraph Source #
forkClosureBody :: FCode () -> FCode () Source #
forkLneBody :: FCode a -> FCode a Source #
A Sequel tells what to do with the result of this expression
Instances
data SelfLoopInfo Source #
MkSelfLoopInfo | |
|
tickScope :: FCode a -> FCode a Source #
Places blocks generated by the given code into a fresh (sub-)scope. This will make sure that Cmm annotations in our scope will apply to the Cmm blocks generated therein - but not the other way around.
getTickScope :: FCode CmmTickScope Source #
The current tick scope. We will assign this to generated blocks.
withUpdFrameOff :: UpdFrameOffset -> FCode a -> FCode a Source #
type VirtualHpOffset = WordOff Source #
setHpUsage :: HeapUsage -> FCode () Source #
heapHWM :: HeapUsage -> VirtualHpOffset Source #
setVirtHp :: VirtualHpOffset -> FCode () Source #
setRealHp :: VirtualHpOffset -> FCode () Source #
getSelfLoop :: FCode (Maybe SelfLoopInfo) Source #
withSelfLoop :: SelfLoopInfo -> FCode a -> FCode a Source #
data StgToCmmConfig Source #
StgToCmmConfig | |
|