static void get_SIMD_instruction_set(char* instruction_set) {
-       #if (__GNUC__ >= 5) && (__GNUC__ > 5 || __GNUC_MINOR__ > 2) 
+       #if !defined(__APPLE__) || (defined(__APPLE__) && (__clang_major__ > 8))
+               #if (__GNUC__ >= 5) && (__GNUC__ > 5 || __GNUC_MINOR__ > 2)
        if (__builtin_cpu_supports("avx512f")) strcpy(instruction_set, "AVX512F");
        else if (__builtin_cpu_supports("avx2")) strcpy(instruction_set, "AVX2");
-       #else 
+               #else 
        if (__builtin_cpu_supports("avx2")) strcpy(instruction_set, "AVX2");
-       #endif
+               #endif
        else if (__builtin_cpu_supports("avx")) strcpy(instruction_set, "AVX");
        else if (__builtin_cpu_supports("sse2")) strcpy(instruction_set, "SSE2");
        else if (__builtin_cpu_supports("mmx")) strcpy(instruction_set, "MMX");
-       else strcpy(instruction_set, "unsupported");
+       else 
+       #endif
+               strcpy(instruction_set, "unsupported");
 }