#include "../includes/MachRegs.h"
+import BlockId
import Cmm
import CgUtils ( get_GlobalReg_addr )
import CLabel ( CLabel, mkMainCapabilityLabel )
strImmLit s = ImmLit (text s)
litToImm :: CmmLit -> Imm
-litToImm (CmmInt i _) = ImmInteger i
+litToImm (CmmInt i w) = ImmInteger (narrowS w i)
+ -- narrow to the width: a CmmInt might be out of
+ -- range, but we assume that ImmInteger only contains
+ -- in-range values. A signed value should be fine here.
litToImm (CmmFloat f W32) = ImmFloat f
litToImm (CmmFloat f W64) = ImmDouble f
litToImm (CmmLabel l) = ImmCLbl l
= ImmConstantSum
(ImmConstantDiff (ImmCLbl l1) (ImmCLbl l2))
(ImmInt off)
+litToImm (CmmBlock id) = ImmCLbl (infoTblLbl id)
-- -----------------------------------------------------------------------------
-- Addressing modes
trivColorable classN conflicts exclusions
= {-# SCC "trivColorable" #-}
let
- {-# INLINE isSqueesed #-}
isSqueesed cI cF ufm
= case ufm of
NodeUFM _ _ left right