Skip to content

Latest commit

 

History

History
23 lines (22 loc) · 888 Bytes

Cpu_dispatching_multiple_version.md

File metadata and controls

23 lines (22 loc) · 888 Bytes

Ref: agner.org

  • Ref find function multiversioning in gcc

Using GCC builtin functions

  • MSVC or windows/intel may use different ways
  • Sample g++ code:
#include <iostream>
void myf() {
  if (__builtin_cpu_supports("avx512f")) std::cout <<" I support avx512f\n";
  if (__builtin_cpu_supports("avx2")) std::cout <<" I support avx2\n";
  if (__builtin_cpu_supports("avx")) std::cout <<" I support avx\n";
  if (__builtin_cpu_supports("sse4.1")) std::cout <<" I support sse4.1\n";
  if (__builtin_cpu_supports("fma")) std::cout <<" I support fma\n";
}
int main() {
  myf();
  return 0;
}