# The variables HAVE_* determine if compiler has support for the flag to use the corresponding instruction set.
# The options ENABLE_* determine if we will tell compiler to actually use the corresponding instruction set if compiler can do it.
# All of them are unrelated to the instruction set at the host machine
# (you can compile for newer instruction set on old machines and vice versa).
option(ENABLE_SSSE3"Use SSSE3 instructions on x86_64"1)
option(ENABLE_SSE41"Use SSE4.1 instructions on x86_64"1)
option(ENABLE_SSE42"Use SSE4.2 instructions on x86_64"1)
option(ENABLE_PCLMULQDQ"Use pclmulqdq instructions on x86_64"1)
option(ENABLE_POPCNT"Use popcnt instructions on x86_64"1)
option(ENABLE_AVX"Use AVX instructions on x86_64"0)
option(ENABLE_AVX2"Use AVX2 instructions on x86_64"0)
option(ARCH_NATIVE"Add -march=native compiler flag. This makes your binaries non-portable but more performant code may be generated. This option overrides ENABLE_* options for specific instruction set. Highly not recommended to use."0)