diff options
author | Stefan Schulze Frielinghaus <stefansf@linux.ibm.com> | 2019-10-08 12:32:15 +0200 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2019-10-22 02:39:03 -0400 |
commit | fd8b666acfee5524a2d7c8b845a3782f6a89bec7 (patch) | |
tree | 4ce0d732ef341bcffa721f6d25f2cf4dcd476fd8 /compiler/GHC/Platform | |
parent | aa31ceaf7568802590f73a740ffbc8b800096342 (diff) | |
download | haskell-fd8b666acfee5524a2d7c8b845a3782f6a89bec7.tar.gz |
Implement s390x LLVM backend.
This patch adds support for the s390x architecture for the LLVM code
generator. The patch includes a register mapping of STG registers onto
s390x machine registers which enables a registerised build.
Diffstat (limited to 'compiler/GHC/Platform')
-rw-r--r-- | compiler/GHC/Platform/Regs.hs | 6 | ||||
-rw-r--r-- | compiler/GHC/Platform/S390X.hs | 10 |
2 files changed, 16 insertions, 0 deletions
diff --git a/compiler/GHC/Platform/Regs.hs b/compiler/GHC/Platform/Regs.hs index e7887fbe72..fe6588d067 100644 --- a/compiler/GHC/Platform/Regs.hs +++ b/compiler/GHC/Platform/Regs.hs @@ -12,6 +12,7 @@ import Reg import qualified GHC.Platform.ARM as ARM import qualified GHC.Platform.ARM64 as ARM64 import qualified GHC.Platform.PPC as PPC +import qualified GHC.Platform.S390X as S390X import qualified GHC.Platform.SPARC as SPARC import qualified GHC.Platform.X86 as X86 import qualified GHC.Platform.X86_64 as X86_64 @@ -27,6 +28,7 @@ callerSaves platform = case platformArch platform of ArchX86 -> X86.callerSaves ArchX86_64 -> X86_64.callerSaves + ArchS390X -> S390X.callerSaves ArchSPARC -> SPARC.callerSaves ArchARM {} -> ARM.callerSaves ArchARM64 -> ARM64.callerSaves @@ -48,6 +50,7 @@ activeStgRegs platform = case platformArch platform of ArchX86 -> X86.activeStgRegs ArchX86_64 -> X86_64.activeStgRegs + ArchS390X -> S390X.activeStgRegs ArchSPARC -> SPARC.activeStgRegs ArchARM {} -> ARM.activeStgRegs ArchARM64 -> ARM64.activeStgRegs @@ -64,6 +67,7 @@ haveRegBase platform = case platformArch platform of ArchX86 -> X86.haveRegBase ArchX86_64 -> X86_64.haveRegBase + ArchS390X -> S390X.haveRegBase ArchSPARC -> SPARC.haveRegBase ArchARM {} -> ARM.haveRegBase ArchARM64 -> ARM64.haveRegBase @@ -80,6 +84,7 @@ globalRegMaybe platform = case platformArch platform of ArchX86 -> X86.globalRegMaybe ArchX86_64 -> X86_64.globalRegMaybe + ArchS390X -> S390X.globalRegMaybe ArchSPARC -> SPARC.globalRegMaybe ArchARM {} -> ARM.globalRegMaybe ArchARM64 -> ARM64.globalRegMaybe @@ -96,6 +101,7 @@ freeReg platform = case platformArch platform of ArchX86 -> X86.freeReg ArchX86_64 -> X86_64.freeReg + ArchS390X -> S390X.freeReg ArchSPARC -> SPARC.freeReg ArchARM {} -> ARM.freeReg ArchARM64 -> ARM64.freeReg diff --git a/compiler/GHC/Platform/S390X.hs b/compiler/GHC/Platform/S390X.hs new file mode 100644 index 0000000000..8599bb67c0 --- /dev/null +++ b/compiler/GHC/Platform/S390X.hs @@ -0,0 +1,10 @@ +{-# LANGUAGE CPP #-} + +module GHC.Platform.S390X where + +import GhcPrelude + +#define MACHREGS_NO_REGS 0 +#define MACHREGS_s390x 1 +#include "../../../includes/CodeGen.Platform.hs" + |