--- /dev/null
+
+module RegAlloc.Linear.FreeRegs (
+ FreeRegs(),
+ noFreeRegs,
+ releaseReg,
+ initFreeRegs,
+ getFreeRegs,
+ allocateReg
+)
+
+#include "HsVersions.h"
+
+where
+
+-- -----------------------------------------------------------------------------
+-- The free register set
+-- This needs to be *efficient*
+-- Here's an inefficient 'executable specification' of the FreeRegs data type:
+--
+-- type FreeRegs = [RegNo]
+-- noFreeRegs = 0
+-- releaseReg n f = if n `elem` f then f else (n : f)
+-- initFreeRegs = allocatableRegs
+-- getFreeRegs cls f = filter ( (==cls) . regClass . RealReg ) f
+-- allocateReg f r = filter (/= r) f
+
+
+#if defined(powerpc_TARGET_ARCH)
+import RegAlloc.Linear.PPC.FreeRegs
+
+#elif defined(sparc_TARGET_ARCH)
+import RegAlloc.Linear.SPARC.FreeRegs
+
+#elif defined(i386_TARGET_ARCH) || defined(x86_64_TARGET_ARCH)
+import RegAlloc.Linear.X86.FreeRegs
+
+#else
+#error "RegAlloc.Linear.FreeRegs not defined for this architecture."
+
+#endif
+