/compiler/nativeGen/X86/RegInfo.hs
https://github.com/nominolo/ghc · Haskell · 88 lines · 71 code · 15 blank · 2 comment · 3 complexity · 3f18e300e812b1ff6ca752ea3587c863 MD5 · raw file
- module X86.RegInfo (
- mkVirtualReg,
- regDotColor
- )
- where
- #include "nativeGen/NCG.h"
- #include "HsVersions.h"
- import Size
- import Reg
- import Outputable
- import Unique
- #if i386_TARGET_ARCH || x86_64_TARGET_ARCH
- import UniqFM
- import X86.Regs
- #endif
- mkVirtualReg :: Unique -> Size -> VirtualReg
- mkVirtualReg u size
- = case size of
- FF32 -> VirtualRegSSE u
- FF64 -> VirtualRegSSE u
- FF80 -> VirtualRegD u
- _other -> VirtualRegI u
- -- reg colors for x86
- #if i386_TARGET_ARCH
- regDotColor :: RealReg -> SDoc
- regDotColor reg
- = let Just str = lookupUFM regColors reg
- in text str
- regColors :: UniqFM [Char]
- regColors
- = listToUFM
- $ [ (eax, "#00ff00")
- , (ebx, "#0000ff")
- , (ecx, "#00ffff")
- , (edx, "#0080ff") ]
- ++ fpRegColors
- -- reg colors for x86_64
- #elif x86_64_TARGET_ARCH
- regDotColor :: RealReg -> SDoc
- regDotColor reg
- = let Just str = lookupUFM regColors reg
- in text str
- regColors :: UniqFM [Char]
- regColors
- = listToUFM
- $ [ (rax, "#00ff00"), (eax, "#00ff00")
- , (rbx, "#0000ff"), (ebx, "#0000ff")
- , (rcx, "#00ffff"), (ecx, "#00ffff")
- , (rdx, "#0080ff"), (edx, "#00ffff")
- , (r8, "#00ff80")
- , (r9, "#008080")
- , (r10, "#0040ff")
- , (r11, "#00ff40")
- , (r12, "#008040")
- , (r13, "#004080")
- , (r14, "#004040")
- , (r15, "#002080") ]
- ++ fpRegColors
- #else
- regDotColor :: Reg -> SDoc
- regDotColor = panic "not defined"
- #endif
- #if i386_TARGET_ARCH || x86_64_TARGET_ARCH
- fpRegColors :: [(Reg,String)]
- fpRegColors =
- [ (fake0, "#ff00ff")
- , (fake1, "#ff00aa")
- , (fake2, "#aa00ff")
- , (fake3, "#aa00aa")
- , (fake4, "#ff0055")
- , (fake5, "#5500ff") ]
- ++ zip (map regSingle [24..39]) (repeat "red")
- #endif