raaz-0.2.0: bin/Command/CpuInfo.hs
{-# LANGUAGE CPP #-}
module Command.CpuInfo where
import Data.Monoid
import Options.Applicative
import Raaz.Core.CpuSupports as CpuSupports
display :: (Bool, String) -> String
display (True, cap) = unwords ["+", cap]
display (_,cap) = unwords ["-", cap]
cpuInfo :: Parser (IO ())
#if MIN_VERSION_optparse_applicative(0,13,0)
cpuInfo = subparser $ commandGroup "CPU capabilities" <> cpuInfoCmd <> metavar "cpuinfo"
#else
cpuInfo = subparser $ cpuInfoCmd <> metavar "cpuinfo"
#endif
where cpuInfoCmd = command "cpuinfo" $ info (helper <*> opts) $ fullDesc
<> header "raaz cpuinfo - CPU capabilities detected at runtime."
<> progDesc "Shows the capabilities understood/detected by raaz at runtime. Recommended implementations depend on this."
opts = pure $ mapM_ (putStrLn . display) [ (CpuSupports.sse, "sse")
, (CpuSupports.sse2, "sse2")
, (CpuSupports.sse3, "sse3")
, (CpuSupports.sse4_1, "sse4.1")
, (CpuSupports.sse4_2, "sse4.2")
, (CpuSupports.avx, "avx")
, (CpuSupports.avx2, "avx2")
]