X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2FllvmGen%2FLlvmCodeGen%2FRegs.hs;h=b0c63a4c344b92b3743153fe33f8e9be64b422fd;hb=c9d713bca9ce31fed25d7201464bad48f0dbc647;hp=b731a863e21a3abb444d7918843c6c1beebb2102;hpb=49a8e5c021009430d373d6224b29004c7d18c408;p=ghc-hetmet.git diff --git a/compiler/llvmGen/LlvmCodeGen/Regs.hs b/compiler/llvmGen/LlvmCodeGen/Regs.hs index b731a86..b0c63a4 100644 --- a/compiler/llvmGen/LlvmCodeGen/Regs.hs +++ b/compiler/llvmGen/LlvmCodeGen/Regs.hs @@ -1,4 +1,4 @@ --- ---------------------------------------------------------------------------- +-------------------------------------------------------------------------------- -- | Deal with Cmm registers -- @@ -16,11 +16,11 @@ import FastString -- | Get the LlvmVar function variable storing the real register lmGlobalRegVar :: GlobalReg -> LlvmVar -lmGlobalRegVar = lmGlobalReg "_Var" +lmGlobalRegVar = (pVarLift . lmGlobalReg "_Var") -- | Get the LlvmVar function argument storing the real register lmGlobalRegArg :: GlobalReg -> LlvmVar -lmGlobalRegArg = (pVarLower . lmGlobalReg "_Arg") +lmGlobalRegArg = lmGlobalReg "_Arg" {- Need to make sure the names here can't conflict with the unique generated names. Uniques generated names containing only base62 chars. So using say @@ -29,15 +29,17 @@ lmGlobalRegArg = (pVarLower . lmGlobalReg "_Arg") lmGlobalReg :: String -> GlobalReg -> LlvmVar lmGlobalReg suf reg = case reg of - BaseReg -> wordGlobal $ "Base" ++ suf - Sp -> wordGlobal $ "Sp" ++ suf - Hp -> wordGlobal $ "Hp" ++ suf + BaseReg -> ptrGlobal $ "Base" ++ suf + Sp -> ptrGlobal $ "Sp" ++ suf + Hp -> ptrGlobal $ "Hp" ++ suf VanillaReg 1 _ -> wordGlobal $ "R1" ++ suf VanillaReg 2 _ -> wordGlobal $ "R2" ++ suf VanillaReg 3 _ -> wordGlobal $ "R3" ++ suf VanillaReg 4 _ -> wordGlobal $ "R4" ++ suf VanillaReg 5 _ -> wordGlobal $ "R5" ++ suf VanillaReg 6 _ -> wordGlobal $ "R6" ++ suf + VanillaReg 7 _ -> wordGlobal $ "R7" ++ suf + VanillaReg 8 _ -> wordGlobal $ "R8" ++ suf SpLim -> wordGlobal $ "SpLim" ++ suf FloatReg 1 -> floatGlobal $"F1" ++ suf FloatReg 2 -> floatGlobal $"F2" ++ suf @@ -48,7 +50,8 @@ lmGlobalReg suf reg _other -> panic $ "LlvmCodeGen.Reg: GlobalReg (" ++ (show reg) ++ ") not supported!" where - wordGlobal name = LMNLocalVar (fsLit name) llvmWordPtr - floatGlobal name = LMNLocalVar (fsLit name) $ pLift LMFloat - doubleGlobal name = LMNLocalVar (fsLit name) $ pLift LMDouble + wordGlobal name = LMNLocalVar (fsLit name) llvmWord + ptrGlobal name = LMNLocalVar (fsLit name) llvmWordPtr + floatGlobal name = LMNLocalVar (fsLit name) LMFloat + doubleGlobal name = LMNLocalVar (fsLit name) LMDouble