// File: /workspace/github_c_makefile_star2_O2/nh13[P]ksw/src/parasail/tests/test_isa.c
// Function: main
int main(int argc, char **argv)
{
    int cpu_sse2;
    int cpu_sse41;
    int cpu_avx2;
    int cpu_avx512f;
    int cpu_avx512bw;
    int cpu_avx512vbmi;
    int cpu_altivec;
    int cpu_neon;
    int cc_sse2;
    int cc_sse41;
    int cc_avx2;
    int cc_avx512f;
    int cc_avx512bw;
    int cc_avx512vbmi;
    int cc_altivec;
    int cc_neon;

    UNUSED(argc);
    UNUSED(argv);

    cpu_sse2 = parasail_can_use_sse2();
    cpu_sse41 = parasail_can_use_sse41();
    cpu_avx2 = parasail_can_use_avx2();
    cpu_avx512f = parasail_can_use_avx512f();
    cpu_avx512bw = parasail_can_use_avx512bw();
    cpu_avx512vbmi = parasail_can_use_avx512vbmi();
    cpu_altivec = parasail_can_use_altivec();
    cpu_neon = parasail_can_use_neon();

#if HAVE_SSE2
    cc_sse2 = 1;
#else
    cc_sse2 = 0;
#endif

#if HAVE_SSE41
    cc_sse41 = 1;
#else
    cc_sse41 = 0;
#endif

#if HAVE_AVX2
    cc_avx2 = 1;
#else
    cc_avx2 = 0;
#endif

#if HAVE_AVX512F
    cc_avx512f = 1;
#else
    cc_avx512f = 0;
#endif

#if HAVE_AVX512BW
    cc_avx512bw = 1;
#else
    cc_avx512bw = 0;
#endif

#if HAVE_AVX512VBMI
    cc_avx512vbmi = 1;
#else
    cc_avx512vbmi = 0;
#endif

#if HAVE_ALTIVEC
    cc_altivec = 1;
#else
    cc_altivec = 0;
#endif

#if HAVE_NEON
    cc_neon = 1;
#else
    cc_neon = 0;
#endif

#ifdef HAVE___BUILTIN_CPU_SUPPORTS
#ifdef HAVE___BUILTIN_CPU_INIT
    __builtin_cpu_init();
#endif
    printf(" ISA        | Compiler | CPU | __builtin_cpu_supports\n");
    printf("------------------------------------------------------\n");
    printf(" SSE2       |  %s     | %s | %s\n", yesno(cc_sse2), yesno(cpu_sse2), yesno(__builtin_cpu_supports("sse2")));
    printf(" SSE41      |  %s     | %s | %s\n", yesno(cc_sse41), yesno(cpu_sse41), yesno(__builtin_cpu_supports("sse4.1")));
    printf(" AVX2       |  %s     | %s | %s\n", yesno(cc_avx2), yesno(cpu_avx2), yesno(__builtin_cpu_supports("avx2")));
    printf(" AVX512F    |  %s     | %s | %s\n", yesno(cc_avx512f), yesno(cpu_avx512f), yesno(0));
    printf(" AVX512BW   |  %s     | %s | %s\n", yesno(cc_avx512bw), yesno(cpu_avx512bw), yesno(0));
    printf(" AVX512VBMI |  %s     | %s | %s\n", yesno(cc_avx512vbmi), yesno(cpu_avx512vbmi), yesno(0));
    printf(" ALTIVEC    |  %s     | %s | %s\n", yesno(cc_altivec), yesno(cpu_altivec), yesno(0));
    printf(" NEON       |  %s     | %s | %s\n", yesno(cc_neon), yesno(cpu_neon), yesno(0));
#else
    printf(" ISA        | Compiler | CPU  \n");
    printf("------------------------------\n");
    printf(" SSE2       |  %s     | %s\n", yesno(cc_sse2), yesno(cpu_sse2));
    printf(" SSE41      |  %s     | %s\n", yesno(cc_sse41), yesno(cpu_sse41));
    printf(" AVX2       |  %s     | %s\n", yesno(cc_avx2), yesno(cpu_avx2));
    printf(" AVX512F    |  %s     | %s\n", yesno(cc_avx512f), yesno(cpu_avx512f));
    printf(" AVX512BW   |  %s     | %s\n", yesno(cc_avx512bw), yesno(cpu_avx512bw));
    printf(" AVX512VBMI |  %s     | %s\n", yesno(cc_avx512vbmi), yesno(cpu_avx512vbmi));
    printf(" ALTIVEC    |  %s     | %s\n", yesno(cc_altivec), yesno(cpu_altivec));
    printf(" NEON       |  %s     | %s\n", yesno(cc_neon), yesno(cpu_neon));
#endif

    return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
xorl %eax, %eax
callq 0x2430
movl %eax, %r14d
xorl %eax, %eax
callq 0x23fa
movl %eax, %r12d
xorl %eax, %eax
callq 0x23d3
movl %eax, %ebp
xorl %eax, %eax
callq 0x2385
movl %eax, %ebx
xorl %eax, %eax
callq 0x2337
movl %eax, %r13d
xorl %eax, %eax
callq 0x22f0
movl %eax, 0xc(%rsp)
xorl %eax, %eax
callq 0x2466
movl %eax, 0x10(%rsp)
xorl %eax, %eax
callq 0x2469
movl %eax, 0x14(%rsp)
callq 0x1080
leaq 0xf6d(%rip), %rdi       # 0x3114
callq 0x1030
leaq 0xf97(%rip), %rdi       # 0x314a
callq 0x1030
testl %r14d, %r14d
leaq 0xf4e(%rip), %r14       # 0x3110
leaq 0xf43(%rip), %r15       # 0x310c
movq %r15, %rdx
cmoveq %r14, %rdx
testb $0x10, 0x2ea5(%rip)     # 0x507c
movq %r15, %rcx
cmoveq %r14, %rcx
leaq 0xe1f(%rip), %rdi       # 0x3004
movq %r15, %rsi
xorl %eax, %eax
callq 0x1040
testl %r12d, %r12d
movq %r15, %rdx
cmoveq %r14, %rdx
cmpb $0x0, 0x2e7c(%rip)      # 0x507c
movq %r15, %rcx
cmovnsq %r14, %rcx
leaq 0xe17(%rip), %rdi       # 0x3025
movq %r15, %rsi
xorl %eax, %eax
callq 0x1040
testl %ebp, %ebp
movq %r15, %rdx
cmoveq %r14, %rdx
btl $0xa, 0x2e53(%rip)      # 0x507c
movq %r15, %rcx
cmovaeq %r14, %rcx
leaq 0xe0f(%rip), %rdi       # 0x3046
movq %r15, %rsi
xorl %eax, %eax
callq 0x1040
testl %ebx, %ebx
movq %r15, %rdx
cmoveq %r14, %rdx
leaq 0xe16(%rip), %rdi       # 0x3067
movq %r14, %rsi
movq %r14, %rcx
xorl %eax, %eax
callq 0x1040
testl %r13d, %r13d
movq %r15, %rdx
cmoveq %r14, %rdx
leaq 0xe19(%rip), %rdi       # 0x3088
movq %r14, %rsi
movq %r14, %rcx
xorl %eax, %eax
callq 0x1040
cmpl $0x0, 0xc(%rsp)
movq %r15, %rdx
cmoveq %r14, %rdx
leaq 0xe1a(%rip), %rdi       # 0x30a9
movq %r14, %rsi
movq %r14, %rcx
xorl %eax, %eax
callq 0x1040
cmpl $0x0, 0x10(%rsp)
movq %r15, %rdx
cmoveq %r14, %rdx
leaq 0xe1b(%rip), %rdi       # 0x30ca
movq %r14, %rsi
movq %r14, %rcx
xorl %eax, %eax
callq 0x1040
cmpl $0x0, 0x14(%rsp)
cmoveq %r14, %r15
leaq 0xe1f(%rip), %rdi       # 0x30eb
movq %r14, %rsi
movq %r15, %rdx
movq %r14, %rcx
xorl %eax, %eax
callq 0x1040
xorl %eax, %eax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nopl (%rax)