{-# LANGUAGE CPP #-} module X86.RegInfo ( mkVirtualReg, regDotColor ) where #include "nativeGen/NCG.h" #include "GhclibHsVersions.h" import GhcPrelude import Format import Reg import Outputable import Platform import Unique import UniqFM import X86.Regs mkVirtualReg :: Unique -> Format -> VirtualReg mkVirtualReg :: Unique -> Format -> VirtualReg mkVirtualReg Unique u Format format = case Format format of Format FF32 -> Unique -> VirtualReg VirtualRegSSE Unique u Format FF64 -> Unique -> VirtualReg VirtualRegSSE Unique u Format FF80 -> Unique -> VirtualReg VirtualRegD Unique u Format _other -> Unique -> VirtualReg VirtualRegI Unique u regDotColor :: Platform -> RealReg -> SDoc regDotColor :: Platform -> RealReg -> SDoc regDotColor Platform platform RealReg reg = let Just [Char] str = UniqFM [Char] -> RealReg -> Maybe [Char] forall key elt. Uniquable key => UniqFM elt -> key -> Maybe elt lookupUFM (Platform -> UniqFM [Char] regColors Platform platform) RealReg reg in [Char] -> SDoc text [Char] str regColors :: Platform -> UniqFM [Char] regColors :: Platform -> UniqFM [Char] regColors Platform platform = [(Reg, [Char])] -> UniqFM [Char] forall key elt. Uniquable key => [(key, elt)] -> UniqFM elt listToUFM (Platform -> [(Reg, [Char])] normalRegColors Platform platform [(Reg, [Char])] -> [(Reg, [Char])] -> [(Reg, [Char])] forall a. [a] -> [a] -> [a] ++ [(Reg, [Char])] fpRegColors) normalRegColors :: Platform -> [(Reg,String)] normalRegColors :: Platform -> [(Reg, [Char])] normalRegColors Platform platform | Platform -> Bool target32Bit Platform platform = [ (Reg eax, [Char] "#00ff00") , (Reg ebx, [Char] "#0000ff") , (Reg ecx, [Char] "#00ffff") , (Reg edx, [Char] "#0080ff") ] | Bool otherwise = [ (Reg rax, [Char] "#00ff00"), (Reg eax, [Char] "#00ff00") , (Reg rbx, [Char] "#0000ff"), (Reg ebx, [Char] "#0000ff") , (Reg rcx, [Char] "#00ffff"), (Reg ecx, [Char] "#00ffff") , (Reg rdx, [Char] "#0080ff"), (Reg edx, [Char] "#00ffff") , (Reg r8, [Char] "#00ff80") , (Reg r9, [Char] "#008080") , (Reg r10, [Char] "#0040ff") , (Reg r11, [Char] "#00ff40") , (Reg r12, [Char] "#008040") , (Reg r13, [Char] "#004080") , (Reg r14, [Char] "#004040") , (Reg r15, [Char] "#002080") ] fpRegColors :: [(Reg,String)] fpRegColors :: [(Reg, [Char])] fpRegColors = [ (Reg fake0, [Char] "#ff00ff") , (Reg fake1, [Char] "#ff00aa") , (Reg fake2, [Char] "#aa00ff") , (Reg fake3, [Char] "#aa00aa") , (Reg fake4, [Char] "#ff0055") , (Reg fake5, [Char] "#5500ff") ] [(Reg, [Char])] -> [(Reg, [Char])] -> [(Reg, [Char])] forall a. [a] -> [a] -> [a] ++ [Reg] -> [[Char]] -> [(Reg, [Char])] forall a b. [a] -> [b] -> [(a, b)] zip ((RegNo -> Reg) -> [RegNo] -> [Reg] forall a b. (a -> b) -> [a] -> [b] map RegNo -> Reg regSingle [RegNo 24..RegNo 39]) ([Char] -> [[Char]] forall a. a -> [a] repeat [Char] "red")