module GHC.CmmToLlvm.Config
  ( LlvmCgConfig(..)
  , LlvmVersion(..)
  )
where
import GHC.Prelude
import GHC.Platform
import GHC.Utils.Outputable
import GHC.Driver.Session
import qualified Data.List.NonEmpty as NE
newtype LlvmVersion = LlvmVersion { LlvmVersion -> NonEmpty Int
llvmVersionNE :: NE.NonEmpty Int }
  deriving (LlvmVersion -> LlvmVersion -> Bool
(LlvmVersion -> LlvmVersion -> Bool)
-> (LlvmVersion -> LlvmVersion -> Bool) -> Eq LlvmVersion
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: LlvmVersion -> LlvmVersion -> Bool
== :: LlvmVersion -> LlvmVersion -> Bool
$c/= :: LlvmVersion -> LlvmVersion -> Bool
/= :: LlvmVersion -> LlvmVersion -> Bool
Eq, Eq LlvmVersion
Eq LlvmVersion
-> (LlvmVersion -> LlvmVersion -> Ordering)
-> (LlvmVersion -> LlvmVersion -> Bool)
-> (LlvmVersion -> LlvmVersion -> Bool)
-> (LlvmVersion -> LlvmVersion -> Bool)
-> (LlvmVersion -> LlvmVersion -> Bool)
-> (LlvmVersion -> LlvmVersion -> LlvmVersion)
-> (LlvmVersion -> LlvmVersion -> LlvmVersion)
-> Ord LlvmVersion
LlvmVersion -> LlvmVersion -> Bool
LlvmVersion -> LlvmVersion -> Ordering
LlvmVersion -> LlvmVersion -> LlvmVersion
forall a.
Eq a
-> (a -> a -> Ordering)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> Bool)
-> (a -> a -> a)
-> (a -> a -> a)
-> Ord a
$ccompare :: LlvmVersion -> LlvmVersion -> Ordering
compare :: LlvmVersion -> LlvmVersion -> Ordering
$c< :: LlvmVersion -> LlvmVersion -> Bool
< :: LlvmVersion -> LlvmVersion -> Bool
$c<= :: LlvmVersion -> LlvmVersion -> Bool
<= :: LlvmVersion -> LlvmVersion -> Bool
$c> :: LlvmVersion -> LlvmVersion -> Bool
> :: LlvmVersion -> LlvmVersion -> Bool
$c>= :: LlvmVersion -> LlvmVersion -> Bool
>= :: LlvmVersion -> LlvmVersion -> Bool
$cmax :: LlvmVersion -> LlvmVersion -> LlvmVersion
max :: LlvmVersion -> LlvmVersion -> LlvmVersion
$cmin :: LlvmVersion -> LlvmVersion -> LlvmVersion
min :: LlvmVersion -> LlvmVersion -> LlvmVersion
Ord)
data LlvmCgConfig = LlvmCgConfig
  { LlvmCgConfig -> Platform
llvmCgPlatform          :: !Platform     
  , LlvmCgConfig -> SDocContext
llvmCgContext           :: !SDocContext  
  , LlvmCgConfig -> Bool
llvmCgFillUndefWithGarbage :: !Bool      
  , LlvmCgConfig -> Bool
llvmCgSplitSection      :: !Bool         
  , LlvmCgConfig -> Maybe BmiVersion
llvmCgBmiVersion        :: Maybe BmiVersion  
  , LlvmCgConfig -> Maybe LlvmVersion
llvmCgLlvmVersion       :: Maybe LlvmVersion 
  , LlvmCgConfig -> Bool
llvmCgDoWarn            :: !Bool         
  , LlvmCgConfig -> String
llvmCgLlvmTarget        :: !String       
  , LlvmCgConfig -> LlvmConfig
llvmCgLlvmConfig        :: !LlvmConfig   
    
    
  }