-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Platform information used by GHC and friends
--   
--   Platform information used by GHC and friends
@package ghc-platform
@version 0.1.0.0


-- | Platform architecture and OS
module GHC.Platform.ArchOS

-- | Platform architecture and OS.
data ArchOS
ArchOS :: Arch -> OS -> ArchOS
[archOS_arch] :: ArchOS -> Arch
[archOS_OS] :: ArchOS -> OS

-- | Architectures
data Arch
ArchUnknown :: Arch
ArchX86 :: Arch
ArchX86_64 :: Arch
ArchPPC :: Arch
ArchPPC_64 :: PPC_64ABI -> Arch
ArchS390X :: Arch
ArchARM :: ArmISA -> [ArmISAExt] -> ArmABI -> Arch
ArchAArch64 :: Arch
ArchAlpha :: Arch
ArchMipseb :: Arch
ArchMipsel :: Arch
ArchRISCV64 :: Arch
ArchLoongArch64 :: Arch
ArchJavaScript :: Arch
ArchWasm32 :: Arch

-- | ARM Instruction Set Architecture
data ArmISA
ARMv5 :: ArmISA
ARMv6 :: ArmISA
ARMv7 :: ArmISA

-- | ARM extensions
data ArmISAExt
VFPv2 :: ArmISAExt
VFPv3 :: ArmISAExt
VFPv3D16 :: ArmISAExt
NEON :: ArmISAExt
IWMMX2 :: ArmISAExt

-- | ARM ABI
data ArmABI
SOFT :: ArmABI
SOFTFP :: ArmABI
HARD :: ArmABI

-- | PowerPC 64-bit ABI
data PPC_64ABI

-- | PowerPC64
ELF_V1 :: PPC_64ABI

-- | PowerPC64 LE
ELF_V2 :: PPC_64ABI
isARM :: Arch -> Bool

-- | See Note [Platform Syntax].
stringEncodeArch :: Arch -> String

-- | Operating systems.
--   
--   Using OSUnknown to generate code should produce a sensible default,
--   but no promises.
data OS
OSUnknown :: OS
OSLinux :: OS
OSDarwin :: OS
OSSolaris2 :: OS
OSMinGW32 :: OS
OSFreeBSD :: OS
OSDragonFly :: OS
OSOpenBSD :: OS
OSNetBSD :: OS
OSKFreeBSD :: OS
OSHaiku :: OS
OSQNXNTO :: OS
OSAIX :: OS
OSHurd :: OS
OSWasi :: OS
OSGhcjs :: OS

-- | This predicate tells us whether the OS uses the ELF as its primary
--   object format.
osElfTarget :: OS -> Bool

-- | This predicate tells us whether the OS support Mach-O shared
--   libraries.
osMachOTarget :: OS -> Bool

-- | See Note [Platform Syntax].
stringEncodeOS :: OS -> String
instance GHC.Classes.Eq GHC.Platform.ArchOS.Arch
instance GHC.Classes.Eq GHC.Platform.ArchOS.ArchOS
instance GHC.Classes.Eq GHC.Platform.ArchOS.ArmABI
instance GHC.Classes.Eq GHC.Platform.ArchOS.ArmISA
instance GHC.Classes.Eq GHC.Platform.ArchOS.ArmISAExt
instance GHC.Classes.Eq GHC.Platform.ArchOS.OS
instance GHC.Classes.Eq GHC.Platform.ArchOS.PPC_64ABI
instance GHC.Classes.Ord GHC.Platform.ArchOS.Arch
instance GHC.Classes.Ord GHC.Platform.ArchOS.ArchOS
instance GHC.Classes.Ord GHC.Platform.ArchOS.ArmABI
instance GHC.Classes.Ord GHC.Platform.ArchOS.ArmISA
instance GHC.Classes.Ord GHC.Platform.ArchOS.ArmISAExt
instance GHC.Classes.Ord GHC.Platform.ArchOS.OS
instance GHC.Classes.Ord GHC.Platform.ArchOS.PPC_64ABI
instance GHC.Internal.Read.Read GHC.Platform.ArchOS.Arch
instance GHC.Internal.Read.Read GHC.Platform.ArchOS.ArchOS
instance GHC.Internal.Read.Read GHC.Platform.ArchOS.ArmABI
instance GHC.Internal.Read.Read GHC.Platform.ArchOS.ArmISA
instance GHC.Internal.Read.Read GHC.Platform.ArchOS.ArmISAExt
instance GHC.Internal.Read.Read GHC.Platform.ArchOS.OS
instance GHC.Internal.Read.Read GHC.Platform.ArchOS.PPC_64ABI
instance GHC.Internal.Show.Show GHC.Platform.ArchOS.Arch
instance GHC.Internal.Show.Show GHC.Platform.ArchOS.ArchOS
instance GHC.Internal.Show.Show GHC.Platform.ArchOS.ArmABI
instance GHC.Internal.Show.Show GHC.Platform.ArchOS.ArmISA
instance GHC.Internal.Show.Show GHC.Platform.ArchOS.ArmISAExt
instance GHC.Internal.Show.Show GHC.Platform.ArchOS.OS
instance GHC.Internal.Show.Show GHC.Platform.ArchOS.PPC_64ABI
