// File: /workspace/github_c_makefile_star2_O0/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
movq %rsp, %rbp
subq $0xd0, %rsp
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
jmp 0x214b
movb $0x0, %al
callq 0x2510
movl %eax, -0x14(%rbp)
movb $0x0, %al
callq 0x24f0
movl %eax, -0x18(%rbp)
movb $0x0, %al
callq 0x24d0
movl %eax, -0x1c(%rbp)
movb $0x0, %al
callq 0x24b0
movl %eax, -0x20(%rbp)
movb $0x0, %al
callq 0x2490
movl %eax, -0x24(%rbp)
movb $0x0, %al
callq 0x2470
movl %eax, -0x28(%rbp)
movb $0x0, %al
callq 0x2530
movl %eax, -0x2c(%rbp)
movb $0x0, %al
callq 0x2540
movl %eax, -0x30(%rbp)
movl $0x1, -0x34(%rbp)
movl $0x1, -0x38(%rbp)
movl $0x1, -0x3c(%rbp)
movl $0x0, -0x40(%rbp)
movl $0x0, -0x44(%rbp)
movl $0x0, -0x48(%rbp)
movl $0x0, -0x4c(%rbp)
movl $0x0, -0x50(%rbp)
callq 0x1070
leaq 0xe25(%rip), %rdi       # 0x3004
movb $0x0, %al
callq 0x1030
leaq 0xe4e(%rip), %rdi       # 0x303b
movb $0x0, %al
callq 0x1030
movl -0x34(%rbp), %edi
callq 0x2440
movq %rax, -0xd0(%rbp)
movl -0x14(%rbp), %edi
callq 0x2440
movq %rax, -0xc8(%rbp)
movl 0x2e64(%rip), %eax      # 0x507c
andl $0x10, %eax
cmpl $0x10, %eax
sete %al
andb $0x1, %al
andb $0x1, %al
movzbl %al, %edi
callq 0x2440
movq -0xd0(%rbp), %rsi
movq -0xc8(%rbp), %rdx
movq %rax, %rcx
leaq 0xe2e(%rip), %rdi       # 0x3073
movb $0x0, %al
callq 0x1030
movl -0x38(%rbp), %edi
callq 0x2440
movq %rax, -0xc0(%rbp)
movl -0x18(%rbp), %edi
callq 0x2440
movq %rax, -0xb8(%rbp)
movl 0x2e0c(%rip), %eax      # 0x507c
andl $0x80, %eax
cmpl $0x80, %eax
sete %al
andb $0x1, %al
andb $0x1, %al
movzbl %al, %edi
callq 0x2440
movq -0xc0(%rbp), %rsi
movq -0xb8(%rbp), %rdx
movq %rax, %rcx
leaq 0xdf3(%rip), %rdi       # 0x3094
movb $0x0, %al
callq 0x1030
movl -0x3c(%rbp), %edi
callq 0x2440
movq %rax, -0xb0(%rbp)
movl -0x1c(%rbp), %edi
callq 0x2440
movq %rax, -0xa8(%rbp)
movl 0x2db0(%rip), %eax      # 0x507c
andl $0x400, %eax            # imm = 0x400
cmpl $0x400, %eax            # imm = 0x400
sete %al
andb $0x1, %al
andb $0x1, %al
movzbl %al, %edi
callq 0x2440
movq -0xb0(%rbp), %rsi
movq -0xa8(%rbp), %rdx
movq %rax, %rcx
leaq 0xdb8(%rip), %rdi       # 0x30b5
movb $0x0, %al
callq 0x1030
movl -0x40(%rbp), %edi
callq 0x2440
movq %rax, -0xa0(%rbp)
movl -0x20(%rbp), %edi
callq 0x2440
movq %rax, -0x98(%rbp)
xorl %edi, %edi
callq 0x2440
movq -0xa0(%rbp), %rsi
movq -0x98(%rbp), %rdx
movq %rax, %rcx
leaq 0xd95(%rip), %rdi       # 0x30d6
movb $0x0, %al
callq 0x1030
movl -0x44(%rbp), %edi
callq 0x2440
movq %rax, -0x90(%rbp)
movl -0x24(%rbp), %edi
callq 0x2440
movq %rax, -0x88(%rbp)
xorl %edi, %edi
callq 0x2440
movq -0x90(%rbp), %rsi
movq -0x88(%rbp), %rdx
movq %rax, %rcx
leaq 0xd72(%rip), %rdi       # 0x30f7
movb $0x0, %al
callq 0x1030
movl -0x48(%rbp), %edi
callq 0x2440
movq %rax, -0x80(%rbp)
movl -0x28(%rbp), %edi
callq 0x2440
movq %rax, -0x78(%rbp)
xorl %edi, %edi
callq 0x2440
movq -0x80(%rbp), %rsi
movq -0x78(%rbp), %rdx
movq %rax, %rcx
leaq 0xd5b(%rip), %rdi       # 0x3118
movb $0x0, %al
callq 0x1030
movl -0x4c(%rbp), %edi
callq 0x2440
movq %rax, -0x70(%rbp)
movl -0x2c(%rbp), %edi
callq 0x2440
movq %rax, -0x68(%rbp)
xorl %edi, %edi
callq 0x2440
movq -0x70(%rbp), %rsi
movq -0x68(%rbp), %rdx
movq %rax, %rcx
leaq 0xd44(%rip), %rdi       # 0x3139
movb $0x0, %al
callq 0x1030
movl -0x50(%rbp), %edi
callq 0x2440
movq %rax, -0x60(%rbp)
movl -0x30(%rbp), %edi
callq 0x2440
movq %rax, -0x58(%rbp)
xorl %edi, %edi
callq 0x2440
movq -0x60(%rbp), %rsi
movq -0x58(%rbp), %rdx
movq %rax, %rcx
leaq 0xd2d(%rip), %rdi       # 0x315a
movb $0x0, %al
callq 0x1030
xorl %eax, %eax
addq $0xd0, %rsp
popq %rbp
retq
nop