diff options
author | Ben.Lippmeier@anu.edu.au <unknown> | 2009-05-18 01:44:44 +0000 |
---|---|---|
committer | Ben.Lippmeier@anu.edu.au <unknown> | 2009-05-18 01:44:44 +0000 |
commit | f9288086f935c97812b2d80defcff38baf7b6a6c (patch) | |
tree | f5363edcc32f9414c6763c060f6be330d46f0cc6 /compiler/nativeGen/SPARC/CodeGen/Base.hs | |
parent | de29a9f02449359b70402f763ac7590673774124 (diff) | |
download | haskell-f9288086f935c97812b2d80defcff38baf7b6a6c.tar.gz |
Split Reg into vreg/hreg and add register pairs
* The old Reg type is now split into VirtualReg and RealReg.
* For the graph coloring allocator, the type of the register graph
is now (Graph VirtualReg RegClass RealReg), which shows that it colors
in nodes representing virtual regs with colors representing real regs.
(as was intended)
* RealReg contains two contructors, RealRegSingle and RealRegPair,
where RealRegPair is used to represent a SPARC double reg
constructed from two single precision FP regs.
* On SPARC we can now allocate double regs into an arbitrary register
pair, instead of reserving some reg ranges to only hold float/double values.
Diffstat (limited to 'compiler/nativeGen/SPARC/CodeGen/Base.hs')
-rw-r--r-- | compiler/nativeGen/SPARC/CodeGen/Base.hs | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/compiler/nativeGen/SPARC/CodeGen/Base.hs b/compiler/nativeGen/SPARC/CodeGen/Base.hs index 6e325cb7a1..54bbf9b51a 100644 --- a/compiler/nativeGen/SPARC/CodeGen/Base.hs +++ b/compiler/nativeGen/SPARC/CodeGen/Base.hs @@ -92,12 +92,14 @@ setSizeOfRegister reg size getRegisterReg :: CmmReg -> Reg getRegisterReg (CmmLocal (LocalReg u pk)) - = mkVReg u (cmmTypeSize pk) + = RegVirtual $ mkVirtualReg u (cmmTypeSize pk) getRegisterReg (CmmGlobal mid) = case get_GlobalReg_reg_or_addr mid of - Left (RealReg rrno) -> RealReg rrno - _ -> pprPanic "getRegisterReg-memory" (ppr $ CmmGlobal mid) + Left rr -> RegReal rr + + _ -> pprPanic "SPARC.CodeGen.Base.getRegisterReg: global is in memory" + (ppr $ CmmGlobal mid) -- Expand CmmRegOff. ToDo: should we do it this way around, or convert |