ghc-lib-0.20201101: The GHC API, decoupled from GHC versions
Safe HaskellNone
LanguageHaskell2010

GHC.StgToCmm.Utils

Synopsis

Documentation

cgLit :: Literal -> FCode CmmLit Source #

mkSimpleLit :: Platform -> Literal -> CmmLit Source #

emitDataLits :: CLabel -> [CmmLit] -> FCode () Source #

Emit a data-segment data block

emitRODataLits :: CLabel -> [CmmLit] -> FCode () Source #

Emit a read-only data block

emitDataCon :: CLabel -> CmmInfoTable -> CostCentreStack -> [CmmLit] -> FCode () Source #

emitRtsCall :: UnitId -> FastString -> [(CmmExpr, ForeignHint)] -> Bool -> FCode () Source #

emitRtsCallWithResult :: LocalReg -> ForeignHint -> UnitId -> FastString -> [(CmmExpr, ForeignHint)] -> Bool -> FCode () Source #

emitRtsCallGen :: [(LocalReg, ForeignHint)] -> CLabel -> [(CmmExpr, ForeignHint)] -> Bool -> FCode () Source #

assignTemp :: CmmExpr -> FCode LocalReg Source #

newTemp :: MonadUnique m => CmmType -> m LocalReg Source #

newUnboxedTupleRegs :: Type -> FCode ([LocalReg], [ForeignHint]) Source #

emitMultiAssign :: [LocalReg] -> [CmmExpr] -> FCode () Source #

emitCmmLitSwitch :: CmmExpr -> [(Literal, CmmAGraphScoped)] -> CmmAGraphScoped -> FCode () Source #

tagToClosure :: Platform -> TyCon -> CmmExpr -> CmmExpr Source #

mkTaggedObjectLoad :: Platform -> LocalReg -> LocalReg -> ByteOff -> DynTag -> CmmAGraph Source #

callerSaves :: Platform -> GlobalReg -> Bool #

get_GlobalReg_addr :: Platform -> GlobalReg -> CmmExpr Source #

We map STG registers onto appropriate CmmExprs. Either they map to real machine registers or stored as offsets from BaseReg. Given a GlobalReg, get_GlobalReg_addr always produces the register table address for it.

callerSaveGlobalReg :: Platform -> GlobalReg -> CmmAGraph Source #

callerRestoreGlobalReg :: Platform -> GlobalReg -> CmmAGraph Source #

cmmAndWord :: Platform -> CmmExpr -> CmmExpr -> CmmExpr Source #

cmmOrWord :: Platform -> CmmExpr -> CmmExpr -> CmmExpr Source #

cmmNegate :: Platform -> CmmExpr -> CmmExpr Source #

cmmEqWord :: Platform -> CmmExpr -> CmmExpr -> CmmExpr Source #

cmmNeWord :: Platform -> CmmExpr -> CmmExpr -> CmmExpr Source #

cmmUGtWord :: Platform -> CmmExpr -> CmmExpr -> CmmExpr Source #

cmmSubWord :: Platform -> CmmExpr -> CmmExpr -> CmmExpr Source #

cmmMulWord :: Platform -> CmmExpr -> CmmExpr -> CmmExpr Source #

cmmAddWord :: Platform -> CmmExpr -> CmmExpr -> CmmExpr Source #

cmmUShrWord :: Platform -> CmmExpr -> CmmExpr -> CmmExpr Source #

cmmOffsetExprW :: Platform -> CmmExpr -> CmmExpr -> CmmExpr Source #

cmmOffsetExprB :: Platform -> CmmExpr -> CmmExpr -> CmmExpr Source #

cmmRegOffW :: Platform -> CmmReg -> WordOff -> CmmExpr Source #

cmmRegOffB :: CmmReg -> ByteOff -> CmmExpr Source #

cmmLabelOffW :: Platform -> CLabel -> WordOff -> CmmLit Source #

cmmLabelOffB :: CLabel -> ByteOff -> CmmLit Source #

cmmOffsetW :: Platform -> CmmExpr -> WordOff -> CmmExpr Source #

cmmOffsetB :: Platform -> CmmExpr -> ByteOff -> CmmExpr Source #

cmmOffsetLitW :: Platform -> CmmLit -> WordOff -> CmmLit Source #

cmmOffsetLitB :: CmmLit -> ByteOff -> CmmLit Source #

cmmLoadIndexW :: Platform -> CmmExpr -> Int -> CmmType -> CmmExpr Source #

cmmConstrTag1 :: Platform -> CmmExpr -> CmmExpr Source #

cmmUntag :: Platform -> CmmExpr -> CmmExpr Source #

cmmIsTagged :: Platform -> CmmExpr -> CmmExpr Source #

addToMem :: CmmType -> CmmExpr -> Int -> CmmAGraph Source #

addToMemE :: CmmType -> CmmExpr -> CmmExpr -> CmmAGraph Source #

addToMemLblE :: CmmType -> CLabel -> CmmExpr -> CmmAGraph Source #

addToMemLbl :: CmmType -> CLabel -> Int -> CmmAGraph Source #

Update remembered set operations

emitUpdRemSetPush Source #

Arguments

:: CmmExpr

value of pointer which was overwritten

-> FCode () 

Emit code to add an entry to a now-overwritten pointer to the update remembered set.

emitUpdRemSetPushThunk Source #

Arguments

:: CmmExpr

the thunk

-> FCode ()