check_amd64.sh 602 B

12345678910111213141516171819202122232425262728
  1. #!/bin/sh
  2. flags=$(grep '^flags\b' </proc/cpuinfo | head -n 1)
  3. flags=" ${flags#*:} "
  4. has_flags () {
  5. for flag; do
  6. case "$flags" in
  7. *" $flag "*) :;;
  8. *) return 1;;
  9. esac
  10. done
  11. }
  12. determine_level () {
  13. level=0
  14. has_flags lm cmov cx8 fpu fxsr mmx syscall sse2 || return 0
  15. level=1
  16. has_flags cx16 lahf_lm popcnt sse4_1 sse4_2 ssse3 || return 0
  17. level=2
  18. has_flags avx avx2 bmi1 bmi2 f16c fma abm movbe xsave || return 0
  19. level=3
  20. has_flags avx512f avx512bw avx512cd avx512dq avx512vl || return 0
  21. level=4
  22. }
  23. determine_level
  24. echo "Your CPU supports amd64-v$level"
  25. return $level