Skip to content

Commit 8040afa

Browse files
authored
Merge pull request #315 from marshmellow42/master
fix compile issues on OS X 10.11
2 parents 3e7df26 + 087c8bf commit 8040afa

File tree

4 files changed

+195
-92
lines changed

4 files changed

+195
-92
lines changed

client/cmdhfmfhard.c

+7-4
Original file line numberDiff line numberDiff line change
@@ -70,16 +70,19 @@ static float brute_force_per_second;
7070

7171

7272
static void get_SIMD_instruction_set(char* instruction_set) {
73-
#if (__GNUC__ >= 5) && (__GNUC__ > 5 || __GNUC_MINOR__ > 2)
73+
#if !defined(__APPLE__) || (defined(__APPLE__) && (__clang_major__ > 8))
74+
#if (__GNUC__ >= 5) && (__GNUC__ > 5 || __GNUC_MINOR__ > 2)
7475
if (__builtin_cpu_supports("avx512f")) strcpy(instruction_set, "AVX512F");
7576
else if (__builtin_cpu_supports("avx2")) strcpy(instruction_set, "AVX2");
76-
#else
77+
#else
7778
if (__builtin_cpu_supports("avx2")) strcpy(instruction_set, "AVX2");
78-
#endif
79+
#endif
7980
else if (__builtin_cpu_supports("avx")) strcpy(instruction_set, "AVX");
8081
else if (__builtin_cpu_supports("sse2")) strcpy(instruction_set, "SSE2");
8182
else if (__builtin_cpu_supports("mmx")) strcpy(instruction_set, "MMX");
82-
else strcpy(instruction_set, "unsupported");
83+
else
84+
#endif
85+
strcpy(instruction_set, "unsupported");
8386
}
8487

8588

client/hardnested/hardnested_bf_core.c

+23-19
Original file line numberDiff line numberDiff line change
@@ -550,17 +550,19 @@ bitslice_test_nonces_t *bitslice_test_nonces_function_p = &bitslice_test_nonces_
550550

551551
// determine the available instruction set at runtime and call the correct function
552552
const uint64_t crack_states_bitsliced_dispatch(uint32_t cuid, uint8_t *best_first_bytes, statelist_t *p, uint32_t *keys_found, uint64_t *num_keys_tested, uint32_t nonces_to_bruteforce, uint8_t *bf_test_nonce_2nd_byte, noncelist_t *nonces) {
553-
#if defined (__i386__) || defined (__x86_64__)
554-
#if (__GNUC__ >= 5) && (__GNUC__ > 5 || __GNUC_MINOR__ > 2)
555-
if (__builtin_cpu_supports("avx512f")) crack_states_bitsliced_function_p = &crack_states_bitsliced_AVX512;
556-
else if (__builtin_cpu_supports("avx2")) crack_states_bitsliced_function_p = &crack_states_bitsliced_AVX2;
557-
#else
558-
if (__builtin_cpu_supports("avx2")) crack_states_bitsliced_function_p = &crack_states_bitsliced_AVX2;
553+
#if defined (__i386__) || defined (__x86_64__)
554+
#if !defined(__APPLE__) || (defined(__APPLE__) && (__clang_major__ > 8))
555+
#if (__GNUC__ >= 5) && (__GNUC__ > 5 || __GNUC_MINOR__ > 2)
556+
if (__builtin_cpu_supports("avx512f")) crack_states_bitsliced_function_p = &crack_states_bitsliced_AVX512;
557+
else if (__builtin_cpu_supports("avx2")) crack_states_bitsliced_function_p = &crack_states_bitsliced_AVX2;
558+
#else
559+
if (__builtin_cpu_supports("avx2")) crack_states_bitsliced_function_p = &crack_states_bitsliced_AVX2;
560+
#endif
561+
else if (__builtin_cpu_supports("avx")) crack_states_bitsliced_function_p = &crack_states_bitsliced_AVX;
562+
else if (__builtin_cpu_supports("sse2")) crack_states_bitsliced_function_p = &crack_states_bitsliced_SSE2;
563+
else if (__builtin_cpu_supports("mmx")) crack_states_bitsliced_function_p = &crack_states_bitsliced_MMX;
564+
else
559565
#endif
560-
else if (__builtin_cpu_supports("avx")) crack_states_bitsliced_function_p = &crack_states_bitsliced_AVX;
561-
else if (__builtin_cpu_supports("sse2")) crack_states_bitsliced_function_p = &crack_states_bitsliced_SSE2;
562-
else if (__builtin_cpu_supports("mmx")) crack_states_bitsliced_function_p = &crack_states_bitsliced_MMX;
563-
else
564566
#endif
565567
crack_states_bitsliced_function_p = &crack_states_bitsliced_NOSIMD;
566568

@@ -570,16 +572,18 @@ const uint64_t crack_states_bitsliced_dispatch(uint32_t cuid, uint8_t *best_firs
570572

571573
void bitslice_test_nonces_dispatch(uint32_t nonces_to_bruteforce, uint32_t *bf_test_nonce, uint8_t *bf_test_nonce_par) {
572574
#if defined (__i386__) || defined (__x86_64__)
573-
#if (__GNUC__ >= 5) && (__GNUC__ > 5 || __GNUC_MINOR__ > 2)
574-
if (__builtin_cpu_supports("avx512f")) bitslice_test_nonces_function_p = &bitslice_test_nonces_AVX512;
575-
else if (__builtin_cpu_supports("avx2")) bitslice_test_nonces_function_p = &bitslice_test_nonces_AVX2;
576-
#else
577-
if (__builtin_cpu_supports("avx2")) bitslice_test_nonces_function_p = &bitslice_test_nonces_AVX2;
575+
#if !defined(__APPLE__) || (defined(__APPLE__) && (__clang_major__ > 8))
576+
#if (__GNUC__ >= 5) && (__GNUC__ > 5 || __GNUC_MINOR__ > 2)
577+
if (__builtin_cpu_supports("avx512f")) bitslice_test_nonces_function_p = &bitslice_test_nonces_AVX512;
578+
else if (__builtin_cpu_supports("avx2")) bitslice_test_nonces_function_p = &bitslice_test_nonces_AVX2;
579+
#else
580+
if (__builtin_cpu_supports("avx2")) bitslice_test_nonces_function_p = &bitslice_test_nonces_AVX2;
581+
#endif
582+
else if (__builtin_cpu_supports("avx")) bitslice_test_nonces_function_p = &bitslice_test_nonces_AVX;
583+
else if (__builtin_cpu_supports("sse2")) bitslice_test_nonces_function_p = &bitslice_test_nonces_SSE2;
584+
else if (__builtin_cpu_supports("mmx")) bitslice_test_nonces_function_p = &bitslice_test_nonces_MMX;
585+
else
578586
#endif
579-
else if (__builtin_cpu_supports("avx")) bitslice_test_nonces_function_p = &bitslice_test_nonces_AVX;
580-
else if (__builtin_cpu_supports("sse2")) bitslice_test_nonces_function_p = &bitslice_test_nonces_SSE2;
581-
else if (__builtin_cpu_supports("mmx")) bitslice_test_nonces_function_p = &bitslice_test_nonces_MMX;
582-
else
583587
#endif
584588
bitslice_test_nonces_function_p = &bitslice_test_nonces_NOSIMD;
585589

client/hardnested/hardnested_bitarray_core.c

+80-54
Original file line numberDiff line numberDiff line change
@@ -319,16 +319,18 @@ count_bitarray_AND4_t *count_bitarray_AND4_function_p = &count_bitarray_AND4_dis
319319
// determine the available instruction set at runtime and call the correct function
320320
uint32_t *malloc_bitarray_dispatch(uint32_t x) {
321321
#if defined (__i386__) || defined (__x86_64__)
322-
#if (__GNUC__ >= 5) && (__GNUC__ > 5 || __GNUC_MINOR__ > 2)
322+
#if !defined(__APPLE__) || (defined(__APPLE__) && (__clang_major__ > 8))
323+
#if (__GNUC__ >= 5) && (__GNUC__ > 5 || __GNUC_MINOR__ > 2)
323324
if (__builtin_cpu_supports("avx512f")) malloc_bitarray_function_p = &malloc_bitarray_AVX512;
324325
else if (__builtin_cpu_supports("avx2")) malloc_bitarray_function_p = &malloc_bitarray_AVX2;
325-
#else
326+
#else
326327
if (__builtin_cpu_supports("avx2")) malloc_bitarray_function_p = &malloc_bitarray_AVX2;
327-
#endif
328+
#endif
328329
else if (__builtin_cpu_supports("avx")) malloc_bitarray_function_p = &malloc_bitarray_AVX;
329330
else if (__builtin_cpu_supports("sse2")) malloc_bitarray_function_p = &malloc_bitarray_SSE2;
330331
else if (__builtin_cpu_supports("mmx")) malloc_bitarray_function_p = &malloc_bitarray_MMX;
331-
else
332+
else
333+
#endif
332334
#endif
333335
malloc_bitarray_function_p = &malloc_bitarray_NOSIMD;
334336

@@ -337,17 +339,19 @@ uint32_t *malloc_bitarray_dispatch(uint32_t x) {
337339
}
338340

339341
void free_bitarray_dispatch(uint32_t *x) {
340-
#if defined (__i386__) || defined (__x86_64__)
341-
#if (__GNUC__ >= 5) && (__GNUC__ > 5 || __GNUC_MINOR__ > 2)
342+
#if defined (__i386__) || defined (__x86_64__)
343+
#if !defined(__APPLE__) || (defined(__APPLE__) && (__clang_major__ > 8))
344+
#if (__GNUC__ >= 5) && (__GNUC__ > 5 || __GNUC_MINOR__ > 2)
342345
if (__builtin_cpu_supports("avx512f")) free_bitarray_function_p = &free_bitarray_AVX512;
343346
else if (__builtin_cpu_supports("avx2")) free_bitarray_function_p = &free_bitarray_AVX2;
344-
#else
347+
#else
345348
if (__builtin_cpu_supports("avx2")) free_bitarray_function_p = &free_bitarray_AVX2;
346-
#endif
349+
#endif
347350
else if (__builtin_cpu_supports("avx")) free_bitarray_function_p = &free_bitarray_AVX;
348351
else if (__builtin_cpu_supports("sse2")) free_bitarray_function_p = &free_bitarray_SSE2;
349352
else if (__builtin_cpu_supports("mmx")) free_bitarray_function_p = &free_bitarray_MMX;
350-
else
353+
else
354+
#endif
351355
#endif
352356
free_bitarray_function_p = &free_bitarray_NOSIMD;
353357

@@ -357,16 +361,18 @@ void free_bitarray_dispatch(uint32_t *x) {
357361

358362
uint32_t bitcount_dispatch(uint32_t a) {
359363
#if defined (__i386__) || defined (__x86_64__)
360-
#if (__GNUC__ >= 5) && (__GNUC__ > 5 || __GNUC_MINOR__ > 2)
364+
#if !defined(__APPLE__) || (defined(__APPLE__) && (__clang_major__ > 8))
365+
#if (__GNUC__ >= 5) && (__GNUC__ > 5 || __GNUC_MINOR__ > 2)
361366
if (__builtin_cpu_supports("avx512f")) bitcount_function_p = &bitcount_AVX512;
362367
else if (__builtin_cpu_supports("avx2")) bitcount_function_p = &bitcount_AVX2;
363-
#else
368+
#else
364369
if (__builtin_cpu_supports("avx2")) bitcount_function_p = &bitcount_AVX2;
365-
#endif
370+
#endif
366371
else if (__builtin_cpu_supports("avx")) bitcount_function_p = &bitcount_AVX;
367372
else if (__builtin_cpu_supports("sse2")) bitcount_function_p = &bitcount_SSE2;
368373
else if (__builtin_cpu_supports("mmx")) bitcount_function_p = &bitcount_MMX;
369-
else
374+
else
375+
#endif
370376
#endif
371377
bitcount_function_p = &bitcount_NOSIMD;
372378

@@ -376,16 +382,18 @@ uint32_t bitcount_dispatch(uint32_t a) {
376382

377383
uint32_t count_states_dispatch(uint32_t *bitarray) {
378384
#if defined (__i386__) || defined (__x86_64__)
379-
#if (__GNUC__ >= 5) && (__GNUC__ > 5 || __GNUC_MINOR__ > 2)
385+
#if !defined(__APPLE__) || (defined(__APPLE__) && (__clang_major__ > 8))
386+
#if (__GNUC__ >= 5) && (__GNUC__ > 5 || __GNUC_MINOR__ > 2)
380387
if (__builtin_cpu_supports("avx512f")) count_states_function_p = &count_states_AVX512;
381388
else if (__builtin_cpu_supports("avx2")) count_states_function_p = &count_states_AVX2;
382-
#else
389+
#else
383390
if (__builtin_cpu_supports("avx2")) count_states_function_p = &count_states_AVX2;
384-
#endif
391+
#endif
385392
else if (__builtin_cpu_supports("avx")) count_states_function_p = &count_states_AVX;
386393
else if (__builtin_cpu_supports("sse2")) count_states_function_p = &count_states_SSE2;
387394
else if (__builtin_cpu_supports("mmx")) count_states_function_p = &count_states_MMX;
388-
else
395+
else
396+
#endif
389397
#endif
390398
count_states_function_p = &count_states_NOSIMD;
391399

@@ -395,16 +403,18 @@ uint32_t count_states_dispatch(uint32_t *bitarray) {
395403

396404
void bitarray_AND_dispatch(uint32_t *A, uint32_t *B) {
397405
#if defined (__i386__) || defined (__x86_64__)
398-
#if (__GNUC__ >= 5) && (__GNUC__ > 5 || __GNUC_MINOR__ > 2)
406+
#if !defined(__APPLE__) || (defined(__APPLE__) && (__clang_major__ > 8))
407+
#if (__GNUC__ >= 5) && (__GNUC__ > 5 || __GNUC_MINOR__ > 2)
399408
if (__builtin_cpu_supports("avx512f")) bitarray_AND_function_p = &bitarray_AND_AVX512;
400409
else if (__builtin_cpu_supports("avx2")) bitarray_AND_function_p = &bitarray_AND_AVX2;
401-
#else
410+
#else
402411
if (__builtin_cpu_supports("avx2")) bitarray_AND_function_p = &bitarray_AND_AVX2;
403-
#endif
412+
#endif
404413
else if (__builtin_cpu_supports("avx")) bitarray_AND_function_p = &bitarray_AND_AVX;
405414
else if (__builtin_cpu_supports("sse2")) bitarray_AND_function_p = &bitarray_AND_SSE2;
406415
else if (__builtin_cpu_supports("mmx")) bitarray_AND_function_p = &bitarray_AND_MMX;
407-
else
416+
else
417+
#endif
408418
#endif
409419
bitarray_AND_function_p = &bitarray_AND_NOSIMD;
410420

@@ -413,17 +423,19 @@ void bitarray_AND_dispatch(uint32_t *A, uint32_t *B) {
413423
}
414424

415425
void bitarray_low20_AND_dispatch(uint32_t *A, uint32_t *B) {
416-
#if defined (__i386__) || defined (__x86_64__)
417-
#if (__GNUC__ >= 5) && (__GNUC__ > 5 || __GNUC_MINOR__ > 2)
426+
#if defined (__i386__) || defined (__x86_64__)
427+
#if !defined(__APPLE__) || (defined(__APPLE__) && (__clang_major__ > 8))
428+
#if (__GNUC__ >= 5) && (__GNUC__ > 5 || __GNUC_MINOR__ > 2)
418429
if (__builtin_cpu_supports("avx512f")) bitarray_low20_AND_function_p = &bitarray_low20_AND_AVX512;
419430
else if (__builtin_cpu_supports("avx2")) bitarray_low20_AND_function_p = &bitarray_low20_AND_AVX2;
420-
#else
431+
#else
421432
if (__builtin_cpu_supports("avx2")) bitarray_low20_AND_function_p = &bitarray_low20_AND_AVX2;
422-
#endif
433+
#endif
423434
else if (__builtin_cpu_supports("avx")) bitarray_low20_AND_function_p = &bitarray_low20_AND_AVX;
424435
else if (__builtin_cpu_supports("sse2")) bitarray_low20_AND_function_p = &bitarray_low20_AND_SSE2;
425436
else if (__builtin_cpu_supports("mmx")) bitarray_low20_AND_function_p = &bitarray_low20_AND_MMX;
426-
else
437+
else
438+
#endif
427439
#endif
428440
bitarray_low20_AND_function_p = &bitarray_low20_AND_NOSIMD;
429441

@@ -433,16 +445,18 @@ void bitarray_low20_AND_dispatch(uint32_t *A, uint32_t *B) {
433445

434446
uint32_t count_bitarray_AND_dispatch(uint32_t *A, uint32_t *B) {
435447
#if defined (__i386__) || defined (__x86_64__)
436-
#if (__GNUC__ >= 5) && (__GNUC__ > 5 || __GNUC_MINOR__ > 2)
448+
#if !defined(__APPLE__) || (defined(__APPLE__) && (__clang_major__ > 8))
449+
#if (__GNUC__ >= 5) && (__GNUC__ > 5 || __GNUC_MINOR__ > 2)
437450
if (__builtin_cpu_supports("avx512f")) count_bitarray_AND_function_p = &count_bitarray_AND_AVX512;
438451
else if (__builtin_cpu_supports("avx2")) count_bitarray_AND_function_p = &count_bitarray_AND_AVX2;
439-
#else
452+
#else
440453
if (__builtin_cpu_supports("avx2")) count_bitarray_AND_function_p = &count_bitarray_AND_AVX2;
441-
#endif
454+
#endif
442455
else if (__builtin_cpu_supports("avx")) count_bitarray_AND_function_p = &count_bitarray_AND_AVX;
443456
else if (__builtin_cpu_supports("sse2")) count_bitarray_AND_function_p = &count_bitarray_AND_SSE2;
444457
else if (__builtin_cpu_supports("mmx")) count_bitarray_AND_function_p = &count_bitarray_AND_MMX;
445-
else
458+
else
459+
#endif
446460
#endif
447461
count_bitarray_AND_function_p = &count_bitarray_AND_NOSIMD;
448462

@@ -452,16 +466,18 @@ uint32_t count_bitarray_AND_dispatch(uint32_t *A, uint32_t *B) {
452466

453467
uint32_t count_bitarray_low20_AND_dispatch(uint32_t *A, uint32_t *B) {
454468
#if defined (__i386__) || defined (__x86_64__)
455-
#if (__GNUC__ >= 5) && (__GNUC__ > 5 || __GNUC_MINOR__ > 2)
469+
#if !defined(__APPLE__) || (defined(__APPLE__) && (__clang_major__ > 8))
470+
#if (__GNUC__ >= 5) && (__GNUC__ > 5 || __GNUC_MINOR__ > 2)
456471
if (__builtin_cpu_supports("avx512f")) count_bitarray_low20_AND_function_p = &count_bitarray_low20_AND_AVX512;
457472
else if (__builtin_cpu_supports("avx2")) count_bitarray_low20_AND_function_p = &count_bitarray_low20_AND_AVX2;
458-
#else
473+
#else
459474
if (__builtin_cpu_supports("avx2")) count_bitarray_low20_AND_function_p = &count_bitarray_low20_AND_AVX2;
460-
#endif
475+
#endif
461476
else if (__builtin_cpu_supports("avx")) count_bitarray_low20_AND_function_p = &count_bitarray_low20_AND_AVX;
462477
else if (__builtin_cpu_supports("sse2")) count_bitarray_low20_AND_function_p = &count_bitarray_low20_AND_SSE2;
463478
else if (__builtin_cpu_supports("mmx")) count_bitarray_low20_AND_function_p = &count_bitarray_low20_AND_MMX;
464-
else
479+
else
480+
#endif
465481
#endif
466482
count_bitarray_low20_AND_function_p = &count_bitarray_low20_AND_NOSIMD;
467483

@@ -471,16 +487,18 @@ uint32_t count_bitarray_low20_AND_dispatch(uint32_t *A, uint32_t *B) {
471487

472488
void bitarray_AND4_dispatch(uint32_t *A, uint32_t *B, uint32_t *C, uint32_t *D) {
473489
#if defined (__i386__) || defined (__x86_64__)
474-
#if (__GNUC__ >= 5) && (__GNUC__ > 5 || __GNUC_MINOR__ > 2)
490+
#if !defined(__APPLE__) || (defined(__APPLE__) && (__clang_major__ > 8))
491+
#if (__GNUC__ >= 5) && (__GNUC__ > 5 || __GNUC_MINOR__ > 2)
475492
if (__builtin_cpu_supports("avx512f")) bitarray_AND4_function_p = &bitarray_AND4_AVX512;
476493
else if (__builtin_cpu_supports("avx2")) bitarray_AND4_function_p = &bitarray_AND4_AVX2;
477-
#else
494+
#else
478495
if (__builtin_cpu_supports("avx2")) bitarray_AND4_function_p = &bitarray_AND4_AVX2;
479-
#endif
496+
#endif
480497
else if (__builtin_cpu_supports("avx")) bitarray_AND4_function_p = &bitarray_AND4_AVX;
481498
else if (__builtin_cpu_supports("sse2")) bitarray_AND4_function_p = &bitarray_AND4_SSE2;
482499
else if (__builtin_cpu_supports("mmx")) bitarray_AND4_function_p = &bitarray_AND4_MMX;
483-
else
500+
else
501+
#endif
484502
#endif
485503
bitarray_AND4_function_p = &bitarray_AND4_NOSIMD;
486504

@@ -490,16 +508,18 @@ void bitarray_AND4_dispatch(uint32_t *A, uint32_t *B, uint32_t *C, uint32_t *D)
490508

491509
void bitarray_OR_dispatch(uint32_t *A, uint32_t *B) {
492510
#if defined (__i386__) || defined (__x86_64__)
493-
#if (__GNUC__ >= 5) && (__GNUC__ > 5 || __GNUC_MINOR__ > 2)
511+
#if !defined(__APPLE__) || (defined(__APPLE__) && (__clang_major__ > 8))
512+
#if (__GNUC__ >= 5) && (__GNUC__ > 5 || __GNUC_MINOR__ > 2)
494513
if (__builtin_cpu_supports("avx512f")) bitarray_OR_function_p = &bitarray_OR_AVX512;
495514
else if (__builtin_cpu_supports("avx2")) bitarray_OR_function_p = &bitarray_OR_AVX2;
496-
#else
515+
#else
497516
if (__builtin_cpu_supports("avx2")) bitarray_OR_function_p = &bitarray_OR_AVX2;
498-
#endif
517+
#endif
499518
else if (__builtin_cpu_supports("avx")) bitarray_OR_function_p = &bitarray_OR_AVX;
500519
else if (__builtin_cpu_supports("sse2")) bitarray_OR_function_p = &bitarray_OR_SSE2;
501520
else if (__builtin_cpu_supports("mmx")) bitarray_OR_function_p = &bitarray_OR_MMX;
502-
else
521+
else
522+
#endif
503523
#endif
504524
bitarray_OR_function_p = &bitarray_OR_NOSIMD;
505525

@@ -509,16 +529,18 @@ void bitarray_OR_dispatch(uint32_t *A, uint32_t *B) {
509529

510530
uint32_t count_bitarray_AND2_dispatch(uint32_t *A, uint32_t *B) {
511531
#if defined (__i386__) || defined (__x86_64__)
512-
#if (__GNUC__ >= 5) && (__GNUC__ > 5 || __GNUC_MINOR__ > 2)
532+
#if !defined(__APPLE__) || (defined(__APPLE__) && (__clang_major__ > 8))
533+
#if (__GNUC__ >= 5) && (__GNUC__ > 5 || __GNUC_MINOR__ > 2)
513534
if (__builtin_cpu_supports("avx512f")) count_bitarray_AND2_function_p = &count_bitarray_AND2_AVX512;
514535
else if (__builtin_cpu_supports("avx2")) count_bitarray_AND2_function_p = &count_bitarray_AND2_AVX2;
515-
#else
536+
#else
516537
if (__builtin_cpu_supports("avx2")) count_bitarray_AND2_function_p = &count_bitarray_AND2_AVX2;
517-
#endif
538+
#endif
518539
else if (__builtin_cpu_supports("avx")) count_bitarray_AND2_function_p = &count_bitarray_AND2_AVX;
519540
else if (__builtin_cpu_supports("sse2")) count_bitarray_AND2_function_p = &count_bitarray_AND2_SSE2;
520541
else if (__builtin_cpu_supports("mmx")) count_bitarray_AND2_function_p = &count_bitarray_AND2_MMX;
521-
else
542+
else
543+
#endif
522544
#endif
523545
count_bitarray_AND2_function_p = &count_bitarray_AND2_NOSIMD;
524546

@@ -528,16 +550,18 @@ uint32_t count_bitarray_AND2_dispatch(uint32_t *A, uint32_t *B) {
528550

529551
uint32_t count_bitarray_AND3_dispatch(uint32_t *A, uint32_t *B, uint32_t *C) {
530552
#if defined (__i386__) || defined (__x86_64__)
531-
#if (__GNUC__ >= 5) && (__GNUC__ > 5 || __GNUC_MINOR__ > 2)
553+
#if !defined(__APPLE__) || (defined(__APPLE__) && (__clang_major__ > 8))
554+
#if (__GNUC__ >= 5) && (__GNUC__ > 5 || __GNUC_MINOR__ > 2)
532555
if (__builtin_cpu_supports("avx512f")) count_bitarray_AND3_function_p = &count_bitarray_AND3_AVX512;
533556
else if (__builtin_cpu_supports("avx2")) count_bitarray_AND3_function_p = &count_bitarray_AND3_AVX2;
534-
#else
557+
#else
535558
if (__builtin_cpu_supports("avx2")) count_bitarray_AND3_function_p = &count_bitarray_AND3_AVX2;
536-
#endif
559+
#endif
537560
else if (__builtin_cpu_supports("avx")) count_bitarray_AND3_function_p = &count_bitarray_AND3_AVX;
538561
else if (__builtin_cpu_supports("sse2")) count_bitarray_AND3_function_p = &count_bitarray_AND3_SSE2;
539562
else if (__builtin_cpu_supports("mmx")) count_bitarray_AND3_function_p = &count_bitarray_AND3_MMX;
540-
else
563+
else
564+
#endif
541565
#endif
542566
count_bitarray_AND3_function_p = &count_bitarray_AND3_NOSIMD;
543567

@@ -547,16 +571,18 @@ uint32_t count_bitarray_AND3_dispatch(uint32_t *A, uint32_t *B, uint32_t *C) {
547571

548572
uint32_t count_bitarray_AND4_dispatch(uint32_t *A, uint32_t *B, uint32_t *C, uint32_t *D) {
549573
#if defined (__i386__) || defined (__x86_64__)
550-
#if (__GNUC__ >= 5) && (__GNUC__ > 5 || __GNUC_MINOR__ > 2)
574+
#if !defined(__APPLE__) || (defined(__APPLE__) && (__clang_major__ > 8))
575+
#if (__GNUC__ >= 5) && (__GNUC__ > 5 || __GNUC_MINOR__ > 2)
551576
if (__builtin_cpu_supports("avx512f")) count_bitarray_AND4_function_p = &count_bitarray_AND4_AVX512;
552577
else if (__builtin_cpu_supports("avx2")) count_bitarray_AND4_function_p = &count_bitarray_AND4_AVX2;
553-
#else
578+
#else
554579
if (__builtin_cpu_supports("avx2")) count_bitarray_AND4_function_p = &count_bitarray_AND4_AVX2;
555-
#endif
580+
#endif
556581
else if (__builtin_cpu_supports("avx")) count_bitarray_AND4_function_p = &count_bitarray_AND4_AVX;
557582
else if (__builtin_cpu_supports("sse2")) count_bitarray_AND4_function_p = &count_bitarray_AND4_SSE2;
558583
else if (__builtin_cpu_supports("mmx")) count_bitarray_AND4_function_p = &count_bitarray_AND4_MMX;
559-
else
584+
else
585+
#endif
560586
#endif
561587
count_bitarray_AND4_function_p = &count_bitarray_AND4_NOSIMD;
562588

0 commit comments

Comments
 (0)