Skip to content

Instantly share code, notes, and snippets.

@mratsim
Created August 29, 2019 18:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mratsim/564254157f565bbf8925dd32e001019c to your computer and use it in GitHub Desktop.
Save mratsim/564254157f565bbf8925dd32e001019c to your computer and use it in GitHub Desktop.
CPU info test
import std/cpuinfo
import macros
echo "CPU name: ", cpuName()
echo "CPUs: ", countProcessors()
macro checkFeatures(body: untyped) =
result = newStmtList()
for call in body:
let fn = $call[0]
result.add quote do:
echo `fn`, ": ", `call`
checkFeatures:
isHypervisorPresent()
hasSimultaneousMultithreading()
hasIntelVtx()
hasAmdv()
hasX87fpu()
hasMmx()
hasMmxExt()
has3DNow()
has3DNowEnhanced()
hasPrefetch()
hasSse()
hasSse2()
hasSse3()
hasSsse3()
hasSse4a()
hasSse41()
hasSse42()
hasAvx()
hasAvx2()
hasAvx512f()
hasAvx512dq()
hasAvx512ifma()
hasAvx512pf()
hasAvx512er()
hasAvx512cd()
hasAvx512bw()
hasAvx512vl()
hasAvx512vbmi()
hasAvx512vbmi2()
hasAvx512vpopcntdq()
hasAvx512vnni()
hasAvx512vnniw4()
hasAvx512fmaps4()
hasAvx512bitalg()
hasAvx512bfloat16()
hasAvx512vp2intersect()
hasRdrand()
hasRdseed()
hasMovBigEndian()
hasPopcnt()
hasFma3()
hasFma4()
hasXop()
hasCas8B()
hasCas16B()
hasAbm()
hasBmi1()
hasBmi2()
hasTsxHle()
hasTsxRtm()
hasAdx()
hasSgx()
hasGfni()
hasAes()
hasVaes()
hasVpclmulqdq()
hasPclmulqdq()
hasNxBit()
hasFloat16c()
hasSha()
hasClflush()
hasClflushOpt()
hasClwb()
hasPrefetchWT1()
hasMpx()
CPU name: Intel(R) Core(TM) i9-9980XE CPU @ 3.00GHz
CPUs: 36
isHypervisorPresent: false
hasSimultaneousMultithreading: true
hasIntelVtx: true
hasAmdv: false
hasX87fpu: true
hasMmx: true
hasMmxExt: false
has3DNow: false
has3DNowEnhanced: false
hasPrefetch: true
hasSse: true
hasSse2: true
hasSse3: true
hasSsse3: true
hasSse4a: false
hasSse41: true
hasSse42: true
hasAvx: true
hasAvx2: true
hasAvx512f: true
hasAvx512dq: true
hasAvx512ifma: false
hasAvx512pf: false
hasAvx512er: false
hasAvx512cd: true
hasAvx512bw: true
hasAvx512vl: true
hasAvx512vbmi: false
hasAvx512vbmi2: false
hasAvx512vpopcntdq: false
hasAvx512vnni: false
hasAvx512vnniw4: false
hasAvx512fmaps4: false
hasAvx512bitalg: false
hasAvx512bfloat16: false
hasAvx512vp2intersect: false
hasRdrand: true
hasRdseed: true
hasMovBigEndian: true
hasPopcnt: true
hasFma3: true
hasFma4: false
hasXop: false
hasCas8B: false
hasCas16B: true
hasAbm: true
hasBmi1: true
hasBmi2: true
hasTsxHle: true
hasTsxRtm: true
hasAdx: true
hasSgx: false
hasGfni: false
hasAes: true
hasVaes: false
hasVpclmulqdq: false
hasPclmulqdq: true
hasNxBit: true
hasFloat16c: true
hasSha: false
hasClflush: true
hasClflushOpt: true
hasClwb: true
hasPrefetchWT1: false
hasMpx: true
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment