diff options
author | Sebastian Graf <sebastian.graf@kit.edu> | 2019-03-15 17:06:21 +0100 |
---|---|---|
committer | Sebastian Graf <sebastian.graf@kit.edu> | 2019-03-15 17:06:21 +0100 |
commit | 0ac7b9fa230cfc919dde0adb6b9ffe1631331219 (patch) | |
tree | 1a14d26d852125acc4c1389e536de5adc4017d9a | |
parent | 5be7ad7861c8d39f60b7101fd8d8e816ff50353a (diff) | |
download | haskell-wip/hadrian-bench.tar.gz |
Add a bench flavour to Hadrianwip/hadrian-bench
-rw-r--r-- | hadrian/hadrian.cabal | 1 | ||||
-rwxr-xr-x | hadrian/src/Settings.hs | 7 | ||||
-rw-r--r-- | hadrian/src/Settings/Flavours/Benchmark.hs | 23 | ||||
-rw-r--r-- | hadrian/src/Settings/Flavours/Llvm.hs | 5 |
4 files changed, 32 insertions, 4 deletions
diff --git a/hadrian/hadrian.cabal b/hadrian/hadrian.cabal index a5a1ead0e7..2c54382dbc 100644 --- a/hadrian/hadrian.cabal +++ b/hadrian/hadrian.cabal @@ -89,6 +89,7 @@ executable hadrian , Settings.Builders.RunTest , Settings.Builders.Xelatex , Settings.Default + , Settings.Flavours.Benchmark , Settings.Flavours.Common , Settings.Flavours.Development , Settings.Flavours.Llvm diff --git a/hadrian/src/Settings.hs b/hadrian/src/Settings.hs index bc0f8cecaa..ef88ef46d9 100755 --- a/hadrian/src/Settings.hs +++ b/hadrian/src/Settings.hs @@ -11,6 +11,7 @@ import Packages import UserSettings (userFlavours, userPackages, userDefaultFlavour) import {-# SOURCE #-} Settings.Default +import Settings.Flavours.Benchmark import Settings.Flavours.Development import Settings.Flavours.Llvm import Settings.Flavours.Performance @@ -35,9 +36,9 @@ stagePackages stage = do hadrianFlavours :: [Flavour] hadrianFlavours = - [ defaultFlavour, developmentFlavour Stage1, developmentFlavour Stage2 - , performanceFlavour, profiledFlavour, quickFlavour, quickestFlavour - , quickCrossFlavour + [ benchmarkFlavour, defaultFlavour, developmentFlavour Stage1 + , developmentFlavour Stage2, performanceFlavour, profiledFlavour + , quickFlavour, quickestFlavour, quickCrossFlavour, benchmarkLlvmFlavour , performanceLlvmFlavour, profiledLlvmFlavour, quickLlvmFlavour ] flavour :: Action Flavour diff --git a/hadrian/src/Settings/Flavours/Benchmark.hs b/hadrian/src/Settings/Flavours/Benchmark.hs new file mode 100644 index 0000000000..46a4a18892 --- /dev/null +++ b/hadrian/src/Settings/Flavours/Benchmark.hs @@ -0,0 +1,23 @@ +module Settings.Flavours.Benchmark (benchmarkFlavour) where + +import Expression +import Flavour +import {-# SOURCE #-} Settings.Default + +-- Please update doc/flavours.md when changing this file. +benchmarkFlavour :: Flavour +benchmarkFlavour = defaultFlavour + { name = "bench" + , args = defaultBuilderArgs <> benchmarkArgs <> defaultPackageArgs + , libraryWays = pure [vanilla] + , rtsWays = pure [vanilla, threaded] } + +benchmarkArgs :: Args +benchmarkArgs = sourceArgs SourceArgs + { hsDefault = pure ["-O", "-H64m"] + , hsLibrary = pure ["-O2"] + -- TODO: We should really pass -O2 when notStage0. Otherwise, we aren't + -- really measuring the overhead of a potential new optimisation we want + -- to benchmark. This has to happen in sync with the Makefile build, though. + , hsCompiler = mconcat [stage0 ? arg "-O2", notStage0 ? arg "-O0"] + , hsGhc = pure ["-O2"] }
\ No newline at end of file diff --git a/hadrian/src/Settings/Flavours/Llvm.hs b/hadrian/src/Settings/Flavours/Llvm.hs index 2752c9e7c6..ddf07a248d 100644 --- a/hadrian/src/Settings/Flavours/Llvm.hs +++ b/hadrian/src/Settings/Flavours/Llvm.hs @@ -1,4 +1,5 @@ module Settings.Flavours.Llvm ( + benchmarkLlvmFlavour, performanceLlvmFlavour, profiledLlvmFlavour, quickLlvmFlavour, @@ -7,12 +8,14 @@ module Settings.Flavours.Llvm ( import Expression import Flavour +import Settings.Flavours.Benchmark import Settings.Flavours.Performance import Settings.Flavours.Profiled import Settings.Flavours.Quick -- Please update doc/flavours.md when changing this file. -performanceLlvmFlavour, profiledLlvmFlavour, quickLlvmFlavour :: Flavour +benchmarkLlvmFlavour, performanceLlvmFlavour, profiledLlvmFlavour, quickLlvmFlavour :: Flavour +benchmarkLlvmFlavour = mkLlvmFlavour benchmarkFlavour performanceLlvmFlavour = mkLlvmFlavour performanceFlavour profiledLlvmFlavour = mkLlvmFlavour profiledFlavour quickLlvmFlavour = mkLlvmFlavour quickFlavour |