Safe Haskell | None |
---|
Compiler stages.
A compiler stage is a sequence of standard transformations. Each of the individual transformations are expressed as a pipeline from DDC.Build.Pipeline. The stages here run several pipelines each, and contain the code that can dump the intermediate program after each transformation.
- data Config = Config {
- configDump :: Bool
- configInferTypes :: Bool
- configSimplLite :: Simplifier Int () Name
- configSimplSalt :: Simplifier Int () Name
- configViaBackend :: ViaBackend
- configRuntime :: Config
- configBuilder :: Builder
- configPretty :: ConfigPretty
- configSuppressHashImports :: Bool
- configOutputFile :: Maybe FilePath
- configOutputDir :: Maybe FilePath
- configKeepLlvmFiles :: Bool
- configKeepSeaFiles :: Bool
- configKeepAsmFiles :: Bool
- configTaintAvoidTypeChecks :: Bool
- data ViaBackend
- stageSourceTetraLoad :: Config -> Source -> [PipeCore (AnTEC SourcePos Name) Name] -> PipeText Name Error
- stageTetraLoad :: Config -> Source -> [PipeCore () Name] -> PipeText Name Error
- stageTetraToSalt :: Config -> Source -> [PipeCore () Name] -> PipeCore () Name
- stageFlowLoad :: Config -> Source -> [PipeCore () Name] -> PipeText Name Error
- stageFlowPrep :: Config -> Source -> [PipeCore () Name] -> PipeCore () Name
- stageFlowRate :: Config -> Source -> [PipeCore () Name] -> PipeCore () Name
- stageFlowLower :: Config -> Config -> Source -> [PipeCore () Name] -> PipeCore (AnTEC () Name) Name
- stageFlowWind :: Config -> Source -> [PipeCore () Name] -> PipeCore (AnTEC () Name) Name
- stageLiteLoad :: Config -> Source -> [PipeCore () Name] -> PipeText Name Error
- stageLiteOpt :: Config -> Source -> [PipeCore () Name] -> PipeCore () Name
- stageLiteToSalt :: Config -> Source -> [PipeCore () Name] -> PipeCore () Name
- stageSaltLoad :: Config -> Source -> [PipeCore () Name] -> PipeText Name Error
- stageSaltOpt :: Config -> Source -> [PipeCore () Name] -> PipeCore () Name
- stageSaltToC :: Config -> Source -> Sink -> PipeCore () Name
- stageSaltToLLVM :: Config -> Source -> [PipeLlvm] -> PipeCore () Name
- stageCompileSalt :: Config -> Source -> FilePath -> Bool -> PipeCore () Name
- stageCompileLLVM :: Config -> Source -> FilePath -> Bool -> PipeLlvm
Documentation
Configuration for main compiler stages.
Config | |
|
data ViaBackend Source
Show ViaBackend |
Tetra stages
stageSourceTetraLoad :: Config -> Source -> [PipeCore (AnTEC SourcePos Name) Name] -> PipeText Name ErrorSource
Load and type check a Source Tetra module.
stageTetraLoad :: Config -> Source -> [PipeCore () Name] -> PipeText Name ErrorSource
Load and type check a Core Tetra module.
stageTetraToSalt :: Config -> Source -> [PipeCore () Name] -> PipeCore () NameSource
Convert a Core Tetra module to Core Salt.
This includes performing the Boxing transform.
Flow stages
stageFlowLoad :: Config -> Source -> [PipeCore () Name] -> PipeText Name ErrorSource
Type check Core Flow.
stageFlowPrep :: Config -> Source -> [PipeCore () Name] -> PipeCore () NameSource
Prepare a Core Flow module for lowering.
stageFlowRate :: Config -> Source -> [PipeCore () Name] -> PipeCore () NameSource
Perform rate inference to transform vector operations to series
stageFlowLower :: Config -> Config -> Source -> [PipeCore () Name] -> PipeCore (AnTEC () Name) NameSource
Lower a Core Flow module. Is needs to already be prepped, and have full type annotations.
stageFlowWind :: Config -> Source -> [PipeCore () Name] -> PipeCore (AnTEC () Name) NameSource
Wind loop primops into tail recursive loops in a Core Flow module.
Lite stages
stageLiteLoad :: Config -> Source -> [PipeCore () Name] -> PipeText Name ErrorSource
Load and type check Core Lite.
stageLiteToSalt :: Config -> Source -> [PipeCore () Name] -> PipeCore () NameSource
Convert Core Lite to Core Salt.
Salt stages
stageSaltLoad :: Config -> Source -> [PipeCore () Name] -> PipeText Name ErrorSource
Load and type check a Core Salt module.
stageSaltToLLVM :: Config -> Source -> [PipeLlvm] -> PipeCore () NameSource
Convert Core Salt to LLVM.
:: Config | |
-> Source | |
-> FilePath | Path of original source file. Build products are placed into the same dir. |
-> Bool | Should we link this into an executable |
-> PipeCore () Name |
Compile Core Salt via C code.