trivColorable
        :: Platform
        -> (RegClass -> VirtualReg -> Int)
        -> (RegClass -> RealReg    -> Int)
        -> Triv VirtualReg RegClass RealReg

trivColorable platform virtualRegSqueeze realRegSqueeze RcInteger conflicts exclusions
        | let cALLOCATABLE_REGS_INTEGER
                  =        (case platformArch platform of
                            ArchX86       -> 3
                            ArchX86_64    -> 5
                            ArchPPC       -> 16
                            ArchSPARC     -> 14
                            ArchSPARC64   -> panic "trivColorable ArchSPARC64"
                            ArchPPC_64 _  -> panic "trivColorable ArchPPC_64"
                            ArchARM _ _ _ -> panic "trivColorable ArchARM"
                            ArchARM64     -> panic "trivColorable ArchARM64"
                            ArchAlpha     -> panic "trivColorable ArchAlpha"
                            ArchMipseb    -> panic "trivColorable ArchMipseb"
                            ArchMipsel    -> panic "trivColorable ArchMipsel"
                            ArchJavaScript-> panic "trivColorable ArchJavaScript"
                            ArchUnknown   -> panic "trivColorable ArchUnknown")
        , count2        <- accSqueeze 0 cALLOCATABLE_REGS_INTEGER
                                (virtualRegSqueeze RcInteger)
                                conflicts

        , count3        <- accSqueeze  count2    cALLOCATABLE_REGS_INTEGER
                                (realRegSqueeze   RcInteger)
                                exclusions

        = count3 < cALLOCATABLE_REGS_INTEGER
trivColorable
        :: Platform
        -> (RegClass -> VirtualReg -> Int)
        -> (RegClass -> RealReg    -> Int)
        -> Triv VirtualReg RegClass RealReg
trivColorable platform virtualRegSqueeze realRegSqueeze RcInteger conflicts exclusions
        | let cALLOCATABLE_REGS_INTEGER
                  =        (case platformArch platform of
                            ArchX86       -> 3
                            ArchX86_64    -> 5
                            ArchPPC       -> 16
                            ArchSPARC     -> 14
                            ArchSPARC64   -> panic "trivColorable ArchSPARC64"
                            ArchPPC_64 _  -> panic "trivColorable ArchPPC_64"
                            ArchARM _ _ _ -> panic "trivColorable ArchARM"
                            ArchARM64     -> panic "trivColorable ArchARM64"
                            ArchAlpha     -> panic "trivColorable ArchAlpha"
                            ArchMipseb    -> panic "trivColorable ArchMipseb"
                            ArchMipsel    -> panic "trivColorable ArchMipsel"
                            ArchJavaScript-> panic "trivColorable ArchJavaScript"
                            ArchUnknown   -> panic "trivColorable ArchUnknown")
        , count2        <- accSqueeze 0 cALLOCATABLE_REGS_INTEGER
                                (virtualRegSqueeze RcInteger)
                                conflicts

        , count3        <- accSqueeze  count2    cALLOCATABLE_REGS_INTEGER
                                (realRegSqueeze   RcInteger)
                                exclusions

        = count3 < cALLOCATABLE_REGS_INTEGER
trivColorable platform virtualRegSqueeze realRegSqueeze RcInteger conflicts exclusions
        | let cALLOCATABLE_REGS_INTEGER
                  =        (case platformArch platform of
                            ArchX86       -> 3
                            ArchX86_64    -> 5
                            ArchPPC       -> 16
                            ArchSPARC     -> 14
                            ArchSPARC64   -> panic "trivColorable ArchSPARC64"
                            ArchPPC_64 _  -> panic "trivColorable ArchPPC_64"
                            ArchARM _ _ _ -> panic "trivColorable ArchARM"
                            ArchARM64     -> panic "trivColorable ArchARM64"
                            ArchAlpha     -> panic "trivColorable ArchAlpha"
                            ArchMipseb    -> panic "trivColorable ArchMipseb"
                            ArchMipsel    -> panic "trivColorable ArchMipsel"
                            ArchJavaScript-> panic "trivColorable ArchJavaScript"
                            ArchUnknown   -> panic "trivColorable ArchUnknown")
        , count2        <- accSqueeze 0 cALLOCATABLE_REGS_INTEGER
                                (virtualRegSqueeze RcInteger)
                                conflicts

        , count3        <- accSqueeze  count2    cALLOCATABLE_REGS_INTEGER
                                (realRegSqueeze   RcInteger)
                                exclusions

        = count3 < cALLOCATABLE_REGS_INTEGER