ghc-9.14.1: GHC/CmmToAsm/LA64.hs
{-# OPTIONS_GHC -fno-warn-orphans #-}
-- | Native code generator for LoongArch64 architectures
module GHC.CmmToAsm.LA64 ( ncgLA64 ) where
import GHC.Prelude
import GHC.CmmToAsm.Config
import GHC.CmmToAsm.Instr
import GHC.CmmToAsm.Monad
import GHC.CmmToAsm.Types
import GHC.Utils.Outputable (ftext)
import qualified GHC.CmmToAsm.LA64.CodeGen as LA64
import qualified GHC.CmmToAsm.LA64.Instr as LA64
import qualified GHC.CmmToAsm.LA64.Ppr as LA64
import qualified GHC.CmmToAsm.LA64.RegInfo as LA64
import qualified GHC.CmmToAsm.LA64.Regs as LA64
ncgLA64 :: NCGConfig -> NcgImpl RawCmmStatics LA64.Instr LA64.JumpDest
ncgLA64 config =
NcgImpl
{ ncgConfig = config,
cmmTopCodeGen = LA64.cmmTopCodeGen,
generateJumpTableForInstr = LA64.generateJumpTableForInstr config,
getJumpDestBlockId = LA64.getJumpDestBlockId,
canShortcut = LA64.canShortcut,
shortcutStatics = LA64.shortcutStatics,
shortcutJump = LA64.shortcutJump,
pprNatCmmDeclS = LA64.pprNatCmmDecl config,
pprNatCmmDeclH = LA64.pprNatCmmDecl config,
maxSpillSlots = LA64.maxSpillSlots config,
allocatableRegs = LA64.allocatableRegs platform,
ncgAllocMoreStack = LA64.allocMoreStack platform,
ncgMakeFarBranches = LA64.makeFarBranches,
extractUnwindPoints = const [],
invertCondBranches = \_ _ -> id
}
where
platform = ncgPlatform config
-- | `Instruction` instance for LA64
instance Instruction LA64.Instr where
regUsageOfInstr = LA64.regUsageOfInstr
patchRegsOfInstr _ = LA64.patchRegsOfInstr
isJumpishInstr = LA64.isJumpishInstr
canFallthroughTo = LA64.canFallthroughTo
jumpDestsOfInstr = LA64.jumpDestsOfInstr
patchJumpInstr = LA64.patchJumpInstr
mkSpillInstr = LA64.mkSpillInstr
mkLoadInstr = LA64.mkLoadInstr
takeDeltaInstr = LA64.takeDeltaInstr
isMetaInstr = LA64.isMetaInstr
mkRegRegMoveInstr _ _ = LA64.mkRegRegMoveInstr
takeRegRegMoveInstr _ = LA64.takeRegRegMoveInstr
mkJumpInstr = LA64.mkJumpInstr
mkStackAllocInstr = LA64.mkStackAllocInstr
mkStackDeallocInstr = LA64.mkStackDeallocInstr
mkComment = pure . LA64.COMMENT . ftext
pprInstr = LA64.pprInstr