never executed always true always false
1 {-# OPTIONS_GHC -fno-warn-orphans #-}
2
3 -- | Native code generator for x86 and x86-64 architectures
4 module GHC.CmmToAsm.AArch64
5 ( ncgAArch64 )
6 where
7
8 import GHC.Prelude
9
10 import GHC.CmmToAsm.Instr
11 import GHC.CmmToAsm.Monad
12 import GHC.CmmToAsm.Config
13 import GHC.CmmToAsm.Types
14
15 import qualified GHC.CmmToAsm.AArch64.Instr as AArch64
16 import qualified GHC.CmmToAsm.AArch64.Ppr as AArch64
17 import qualified GHC.CmmToAsm.AArch64.CodeGen as AArch64
18 import qualified GHC.CmmToAsm.AArch64.Regs as AArch64
19 import qualified GHC.CmmToAsm.AArch64.RegInfo as AArch64
20
21 ncgAArch64 :: NCGConfig -> NcgImpl RawCmmStatics AArch64.Instr AArch64.JumpDest
22 ncgAArch64 config
23 = NcgImpl {
24 ncgConfig = config
25 ,cmmTopCodeGen = AArch64.cmmTopCodeGen
26 ,generateJumpTableForInstr = AArch64.generateJumpTableForInstr config
27 ,getJumpDestBlockId = AArch64.getJumpDestBlockId
28 ,canShortcut = AArch64.canShortcut
29 ,shortcutStatics = AArch64.shortcutStatics
30 ,shortcutJump = AArch64.shortcutJump
31 ,pprNatCmmDecl = AArch64.pprNatCmmDecl config
32 ,maxSpillSlots = AArch64.maxSpillSlots config
33 ,allocatableRegs = AArch64.allocatableRegs platform
34 ,ncgAllocMoreStack = AArch64.allocMoreStack platform
35 ,ncgExpandTop = id
36 ,ncgMakeFarBranches = const id
37 ,extractUnwindPoints = const []
38 ,invertCondBranches = \_ _ -> id
39 }
40 where
41 platform = ncgPlatform config
42
43 -- | Instruction instance for aarch64
44 instance Instruction AArch64.Instr where
45 regUsageOfInstr = AArch64.regUsageOfInstr
46 patchRegsOfInstr = AArch64.patchRegsOfInstr
47 isJumpishInstr = AArch64.isJumpishInstr
48 jumpDestsOfInstr = AArch64.jumpDestsOfInstr
49 patchJumpInstr = AArch64.patchJumpInstr
50 mkSpillInstr = AArch64.mkSpillInstr
51 mkLoadInstr = AArch64.mkLoadInstr
52 takeDeltaInstr = AArch64.takeDeltaInstr
53 isMetaInstr = AArch64.isMetaInstr
54 mkRegRegMoveInstr _ = AArch64.mkRegRegMoveInstr
55 takeRegRegMoveInstr = AArch64.takeRegRegMoveInstr
56 mkJumpInstr = AArch64.mkJumpInstr
57 mkStackAllocInstr = AArch64.mkStackAllocInstr
58 mkStackDeallocInstr = AArch64.mkStackDeallocInstr
59 mkComment = pure . AArch64.COMMENT
60 pprInstr = AArch64.pprInstr