-
-
-#if i386_TARGET_ARCH || x86_64_TARGET_ARCH
-import qualified X86.Regs as X86
-import qualified X86.RegInfo as X86
-
-#elif powerpc_TARGET_ARCH
-import qualified PPC.Regs as PPC
-import qualified PPC.RegInfo as PPC
-
-#elif sparc_TARGET_ARCH
-import qualified SPARC.Regs as SPARC
-import qualified SPARC.RegInfo as SPARC
-
-
-#else
-#error "RegAlloc.Graph.TargetReg: not defined"
-#endif
-
--- x86 -------------------------------------------------------------------------
-#if i386_TARGET_ARCH || x86_64_TARGET_ARCH
-targetRegClass :: Reg -> RegClass
-targetRegClass = X86.regClass
-
+import FastTypes
+import Platform
+
+import qualified X86.Regs as X86
+import qualified X86.RegInfo as X86
+
+import qualified PPC.Regs as PPC
+
+import qualified SPARC.Regs as SPARC
+
+-- TODO: We shouldn't be using defaultTargetPlatform here.
+-- We should be passing DynFlags in instead, and looking at
+-- its targetPlatform.
+
+targetVirtualRegSqueeze :: RegClass -> VirtualReg -> FastInt
+targetVirtualRegSqueeze
+ = case platformArch defaultTargetPlatform of
+ ArchX86 -> X86.virtualRegSqueeze
+ ArchX86_64 -> X86.virtualRegSqueeze
+ ArchPPC -> PPC.virtualRegSqueeze
+ ArchSPARC -> SPARC.virtualRegSqueeze
+ ArchPPC_64 -> panic "targetVirtualRegSqueeze ArchPPC_64"
+ ArchUnknown -> panic "targetVirtualRegSqueeze ArchUnknown"
+
+targetRealRegSqueeze :: RegClass -> RealReg -> FastInt
+targetRealRegSqueeze
+ = case platformArch defaultTargetPlatform of
+ ArchX86 -> X86.realRegSqueeze
+ ArchX86_64 -> X86.realRegSqueeze
+ ArchPPC -> PPC.realRegSqueeze
+ ArchSPARC -> SPARC.realRegSqueeze
+ ArchPPC_64 -> panic "targetRealRegSqueeze ArchPPC_64"
+ ArchUnknown -> panic "targetRealRegSqueeze ArchUnknown"
+
+targetClassOfRealReg :: RealReg -> RegClass
+targetClassOfRealReg
+ = case platformArch defaultTargetPlatform of
+ ArchX86 -> X86.classOfRealReg
+ ArchX86_64 -> X86.classOfRealReg
+ ArchPPC -> PPC.classOfRealReg
+ ArchSPARC -> SPARC.classOfRealReg
+ ArchPPC_64 -> panic "targetClassOfRealReg ArchPPC_64"
+ ArchUnknown -> panic "targetClassOfRealReg ArchUnknown"
+
+-- TODO: This should look at targetPlatform too