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