packages feed

cpu-features-0.1.0.0: demo/Main.hs

{-# LANGUAGE GADTs #-}
module Main where

import System.CPUFeatures.X86 as X86
import System.CPUFeatures.X86.Cpuid as X86
import System.CPUFeatures.Arm as Arm
import System.CPUFeatures.RISCV as RISCV

main :: IO ()
main = do
  case X86.queryCpuid of
    Just Dict -> putStrLn $ "X86 Manufacturer: " ++ getManufacturerString
    Nothing -> putStrLn "Not X86"
  putStrLn $ "X86.AESNI = " ++ show X86.bAESNI
  putStrLn $ "X86.AMX_BF16 = " ++ show X86.bAMX_BF16
  putStrLn $ "X86.AMX_FP16 = " ++ show X86.bAMX_FP16
  putStrLn $ "X86.AMX_INT8 = " ++ show X86.bAMX_INT8
  putStrLn $ "X86.AMX_TILE = " ++ show X86.bAMX_TILE
  putStrLn $ "X86.AVX = " ++ show X86.bAVX
  putStrLn $ "X86.AVX_VNNI = " ++ show X86.bAVX_VNNI
  putStrLn $ "X86.AVX10_1 = " ++ show X86.bAVX10_1
  putStrLn $ "X86.AVX10_2 = " ++ show X86.bAVX10_2
  putStrLn $ "X86.AVX2 = " ++ show X86.bAVX2
  putStrLn $ "X86.AVX512_BF16 = " ++ show X86.bAVX512_BF16
  putStrLn $ "X86.AVX512_BITALG = " ++ show X86.bAVX512_BITALG
  putStrLn $ "X86.AVX512_FP16 = " ++ show X86.bAVX512_FP16
  putStrLn $ "X86.AVX512_IFMA = " ++ show X86.bAVX512_IFMA
  putStrLn $ "X86.AVX512_VBMI = " ++ show X86.bAVX512_VBMI
  putStrLn $ "X86.AVX512_VBMI2 = " ++ show X86.bAVX512_VBMI2
  putStrLn $ "X86.AVX512_VNNI = " ++ show X86.bAVX512_VNNI
  putStrLn $ "X86.AVX512_VPOPCNTDQ = " ++ show X86.bAVX512_VPOPCNTDQ
  putStrLn $ "X86.AVX512BW = " ++ show X86.bAVX512BW
  putStrLn $ "X86.AVX512CD = " ++ show X86.bAVX512CD
  putStrLn $ "X86.AVX512DQ = " ++ show X86.bAVX512DQ
  putStrLn $ "X86.AVX512F = " ++ show X86.bAVX512F
  putStrLn $ "X86.AVX512VL = " ++ show X86.bAVX512VL
  putStrLn $ "X86.BMI1 = " ++ show X86.bBMI1
  putStrLn $ "X86.BMI2 = " ++ show X86.bBMI2
  putStrLn $ "X86.F16C = " ++ show X86.bF16C
  putStrLn $ "X86.FMA = " ++ show X86.bFMA
  putStrLn $ "X86.GFNI = " ++ show X86.bGFNI
  putStrLn $ "X86.PCLMULQDQ = " ++ show X86.bPCLMULQDQ
  putStrLn $ "X86.POPCNT = " ++ show X86.bPOPCNT
  putStrLn $ "X86.RDRAND = " ++ show X86.bRDRAND
  putStrLn $ "X86.SHA = " ++ show X86.bSHA
  putStrLn $ "X86.SSE3 = " ++ show X86.bSSE3
  putStrLn $ "X86.SSE4_1 = " ++ show X86.bSSE4_1
  putStrLn $ "X86.SSE4_2 = " ++ show X86.bSSE4_2
  putStrLn $ "X86.SSSE3 = " ++ show X86.bSSSE3
  putStrLn $ "X86.VAES = " ++ show X86.bVAES
  putStrLn $ "X86.VPCLMULQDQ = " ++ show X86.bVPCLMULQDQ
  putStrLn $ "Arm.FEAT_AES = " ++ show Arm.bFEAT_AES
  putStrLn $ "Arm.FEAT_AFP = " ++ show Arm.bFEAT_AFP
  putStrLn $ "Arm.FEAT_BF16 = " ++ show Arm.bFEAT_BF16
  putStrLn $ "Arm.FEAT_BTI = " ++ show Arm.bFEAT_BTI
  putStrLn $ "Arm.FEAT_CSV2 = " ++ show Arm.bFEAT_CSV2
  putStrLn $ "Arm.FEAT_CSV3 = " ++ show Arm.bFEAT_CSV3
  putStrLn $ "Arm.FEAT_DIT = " ++ show Arm.bFEAT_DIT
  putStrLn $ "Arm.FEAT_DotProd = " ++ show Arm.bFEAT_DotProd
  putStrLn $ "Arm.FEAT_DPB = " ++ show Arm.bFEAT_DPB
  putStrLn $ "Arm.FEAT_DPB2 = " ++ show Arm.bFEAT_DPB2
  putStrLn $ "Arm.FEAT_ECV = " ++ show Arm.bFEAT_ECV
  putStrLn $ "Arm.FEAT_FCMA = " ++ show Arm.bFEAT_FCMA
  putStrLn $ "Arm.FEAT_FHM = " ++ show Arm.bFEAT_FHM
  putStrLn $ "Arm.FEAT_FlagM = " ++ show Arm.bFEAT_FlagM
  putStrLn $ "Arm.FEAT_FlagM2 = " ++ show Arm.bFEAT_FlagM2
  putStrLn $ "Arm.FEAT_FP16 = " ++ show Arm.bFEAT_FP16
  putStrLn $ "Arm.FEAT_FPAC = " ++ show Arm.bFEAT_FPAC
  putStrLn $ "Arm.FEAT_FRINTTS = " ++ show Arm.bFEAT_FRINTTS
  putStrLn $ "Arm.FEAT_I8MM = " ++ show Arm.bFEAT_I8MM
  putStrLn $ "Arm.FEAT_JSCVT = " ++ show Arm.bFEAT_JSCVT
  putStrLn $ "Arm.FEAT_LRCPC = " ++ show Arm.bFEAT_LRCPC
  putStrLn $ "Arm.FEAT_LRCPC2 = " ++ show Arm.bFEAT_LRCPC2
  putStrLn $ "Arm.FEAT_LSE = " ++ show Arm.bFEAT_LSE
  putStrLn $ "Arm.FEAT_LSE2 = " ++ show Arm.bFEAT_LSE2
  putStrLn $ "Arm.FEAT_PAuth = " ++ show Arm.bFEAT_PAuth
  putStrLn $ "Arm.FEAT_PAuth2 = " ++ show Arm.bFEAT_PAuth2
  putStrLn $ "Arm.FEAT_PMULL = " ++ show Arm.bFEAT_PMULL
  putStrLn $ "Arm.FEAT_RDM = " ++ show Arm.bFEAT_RDM
  putStrLn $ "Arm.FEAT_RPRES = " ++ show Arm.bFEAT_RPRES
  putStrLn $ "Arm.FEAT_SB = " ++ show Arm.bFEAT_SB
  putStrLn $ "Arm.FEAT_SHA1 = " ++ show Arm.bFEAT_SHA1
  putStrLn $ "Arm.FEAT_SHA256 = " ++ show Arm.bFEAT_SHA256
  putStrLn $ "Arm.FEAT_SHA3 = " ++ show Arm.bFEAT_SHA3
  putStrLn $ "Arm.FEAT_SHA512 = " ++ show Arm.bFEAT_SHA512
  putStrLn $ "Arm.FEAT_SME = " ++ show Arm.bFEAT_SME
  putStrLn $ "Arm.FEAT_SME_F64F64 = " ++ show Arm.bFEAT_SME_F64F64
  putStrLn $ "Arm.FEAT_SME_I16I64 = " ++ show Arm.bFEAT_SME_I16I64
  putStrLn $ "Arm.FEAT_SME2 = " ++ show Arm.bFEAT_SME2
  putStrLn $ "Arm.FEAT_SPECRES = " ++ show Arm.bFEAT_SPECRES
  putStrLn $ "Arm.FEAT_SSBS = " ++ show Arm.bFEAT_SSBS
  putStrLn $ "Arm.FEAT_SVE = " ++ show Arm.bFEAT_SVE
  putStrLn $ "Arm.FEAT_SVE2 = " ++ show Arm.bFEAT_SVE2
  putStrLn $ "Arm.FEAT_WFxT = " ++ show Arm.bFEAT_WFxT
  putStrLn $ "RISCV.C = " ++ show RISCV.bC
  putStrLn $ "RISCV.V = " ++ show RISCV.bV
  putStrLn $ "RISCV.Zba = " ++ show RISCV.bZba
  putStrLn $ "RISCV.Zbb = " ++ show RISCV.bZbb
  putStrLn $ "RISCV.Zbs = " ++ show RISCV.bZbs
  putStrLn $ "RISCV.Zicboz = " ++ show RISCV.bZicboz
  putStrLn $ "RISCV.Zbc = " ++ show RISCV.bZbc
  putStrLn $ "RISCV.Zbkb = " ++ show RISCV.bZbkb
  putStrLn $ "RISCV.Zbkc = " ++ show RISCV.bZbkc
  putStrLn $ "RISCV.Zbkx = " ++ show RISCV.bZbkx
  putStrLn $ "RISCV.Zknd = " ++ show RISCV.bZknd
  putStrLn $ "RISCV.Zkne = " ++ show RISCV.bZkne
  putStrLn $ "RISCV.Zknh = " ++ show RISCV.bZknh
  putStrLn $ "RISCV.Zksed = " ++ show RISCV.bZksed
  putStrLn $ "RISCV.Zksh = " ++ show RISCV.bZksh
  putStrLn $ "RISCV.Zkt = " ++ show RISCV.bZkt
  putStrLn $ "RISCV.Zvbb = " ++ show RISCV.bZvbb
  putStrLn $ "RISCV.Zvbc = " ++ show RISCV.bZvbc
  putStrLn $ "RISCV.Zvkb = " ++ show RISCV.bZvkb
  putStrLn $ "RISCV.Zvkg = " ++ show RISCV.bZvkg
  putStrLn $ "RISCV.Zvkned = " ++ show RISCV.bZvkned
  putStrLn $ "RISCV.Zvknha = " ++ show RISCV.bZvknha
  putStrLn $ "RISCV.Zvknhb = " ++ show RISCV.bZvknhb
  putStrLn $ "RISCV.Zvksed = " ++ show RISCV.bZvksed
  putStrLn $ "RISCV.Zvksh = " ++ show RISCV.bZvksh
  putStrLn $ "RISCV.Zvkt = " ++ show RISCV.bZvkt
  putStrLn $ "RISCV.Zfh = " ++ show RISCV.bZfh
  putStrLn $ "RISCV.Zfhmin = " ++ show RISCV.bZfhmin
  putStrLn $ "RISCV.Zihintntl = " ++ show RISCV.bZihintntl
  putStrLn $ "RISCV.Zvfh = " ++ show RISCV.bZvfh
  putStrLn $ "RISCV.Zvfhmin = " ++ show RISCV.bZvfhmin
  putStrLn $ "RISCV.Zfa = " ++ show RISCV.bZfa
  putStrLn $ "RISCV.Ztso = " ++ show RISCV.bZtso
  putStrLn $ "RISCV.Zacas = " ++ show RISCV.bZacas
  putStrLn $ "RISCV.Zicntr = " ++ show RISCV.bZicntr
  putStrLn $ "RISCV.Zicond = " ++ show RISCV.bZicond
  putStrLn $ "RISCV.Zihintpause = " ++ show RISCV.bZihintpause
  putStrLn $ "RISCV.Zihpm = " ++ show RISCV.bZihpm
  putStrLn $ "RISCV.Zve32x = " ++ show RISCV.bZve32x
  putStrLn $ "RISCV.Zve32f = " ++ show RISCV.bZve32f
  putStrLn $ "RISCV.Zve64x = " ++ show RISCV.bZve64x
  putStrLn $ "RISCV.Zve64f = " ++ show RISCV.bZve64f
  putStrLn $ "RISCV.Zve64d = " ++ show RISCV.bZve64d
  putStrLn $ "RISCV.Zimop = " ++ show RISCV.bZimop
  putStrLn $ "RISCV.Zca = " ++ show RISCV.bZca
  putStrLn $ "RISCV.Zcb = " ++ show RISCV.bZcb
  putStrLn $ "RISCV.Zcd = " ++ show RISCV.bZcd
  putStrLn $ "RISCV.Zcf = " ++ show RISCV.bZcf
  putStrLn $ "RISCV.Zcmop = " ++ show RISCV.bZcmop
  putStrLn $ "RISCV.Zawrs = " ++ show RISCV.bZawrs
  putStrLn $ "RISCV.Zaamo = " ++ show RISCV.bZaamo
  putStrLn $ "RISCV.Zalrsc = " ++ show RISCV.bZalrsc
  putStrLn $ "RISCV.Supm = " ++ show RISCV.bSupm
  putStrLn $ "RISCV.Zfbfmin = " ++ show RISCV.bZfbfmin
  putStrLn $ "RISCV.Zvfbfmin = " ++ show RISCV.bZvfbfmin
  putStrLn $ "RISCV.Zvfbfwma = " ++ show RISCV.bZvfbfwma
  putStrLn $ "RISCV.Zicbom = " ++ show RISCV.bZicbom