content: -- | This module benchmarks all block function and shows the
  
  import Control.Monad
  
  import Prelude
  import System.IO
  import Text.PrettyPrint
  
  import           Benchmark.Types
  import qualified Benchmark.Blake2b.CPortable     as Blake2bCP
  import qualified Benchmark.Blake2b.CHandWritten  as Blake2bCHW
  
  import qualified Benchmark.Blake2s.CHandWritten  as Blake2sCHW
  
  import qualified Benchmark.ChaCha20.CPortable    as ChaCha20CP
  import qualified Benchmark.ChaCha20.CHandWritten as ChaCha20CHW
  
  import qualified Benchmark.Poly1305.CPortable    as Poly1305CP
  
  import qualified Benchmark.Sha256.CPortable      as Sha256CP
  import qualified Benchmark.Sha256.CHandWritten   as Sha256CHW
  
  import qualified Benchmark.Sha512.CPortable      as Sha512CP
  import qualified Benchmark.Sha512.CHandWritten   as Sha512CHW
  
  import qualified Benchmark.CSPRG.CPortable       as CSPRGCP
  
  
  main :: IO ()
  main = do
    hSetEncoding stdout utf8
    putStrLn $ render header
    mapM_ printBench [ Blake2bCP.bench
                     , Blake2bCHW.bench
  
                     , Blake2sCHW.bench
  
                     , Poly1305CP.bench
  
                     , CSPRGCP.bench
  
                     , ChaCha20CP.bench
                     , ChaCha20CHW.bench
  
                     , Sha256CP.bench
                     , Sha256CHW.bench
  
                     , Sha512CP.bench
                     , Sha512CHW.bench
                     ]
  
    where printBench = runRaazBench >=> pure . render >=> putStrLn
  