// File: /workspace/github_c_makefile_star2_O0/mbitsnbites[P]SoftFP/./softfptest_template.h
// Function: test_op32
void test_op(FloatOpEnum op, F_UINT a, F_UINT b, RoundingModeEnum rm,
             int it)
{
    F_UINT ref, r;
    uint32_t fflags, ref_fflags;

    ref = exec_ref_op(&ref_fflags, op, a, b, rm);
    fflags = 0;
    switch(op) {
    case OP_FADD:
        r = glue(add_sf, F_SIZE)(a, b, rm, &fflags);
        break;
    case OP_FMUL:
        r = glue(mul_sf, F_SIZE)(a, b, rm, &fflags);
        break;
    case OP_FDIV:
        r = glue(div_sf, F_SIZE)(a, b, rm, &fflags);
        break;
    case OP_FSQRT:
        r = glue(sqrt_sf, F_SIZE)(a, rm, &fflags);
        break;
    case OP_FMIN:
        r = glue(min_sf, F_SIZE)(a, b, &fflags);
        break;
    case OP_FMAX:
        r = glue(max_sf, F_SIZE)(a, b, &fflags);
        break;
    default:
        abort();
    }
    if (r != ref || ref_fflags != fflags) {
        printf("ERROR op=%s size=%d rm=%s it=%d:\n", 
               op_to_str[op], F_SIZE, rm_to_str[rm], it);
        printf("a  = "); print_sf(a); printf("\n");
        if (op != OP_FSQRT) {
            printf("b  = "); print_sf(b); printf("\n");
        }
        printf("ref= "); print_sf(ref);
        printf(" fflags=0x%02x\n", ref_fflags);
        printf("r  = "); print_sf(r);
        printf(" fflags=0x%02x\n", fflags);
        exit(1);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movl %edi, -0x4(%rbp)
movl %esi, -0x8(%rbp)
movl %edx, -0xc(%rbp)
movl %ecx, -0x10(%rbp)
movl %r8d, -0x14(%rbp)
movl -0x4(%rbp), %esi
movl -0x8(%rbp), %edx
movl -0xc(%rbp), %ecx
movl -0x10(%rbp), %r8d
leaq -0x24(%rbp), %rdi
callq 0x1410
movl %eax, -0x18(%rbp)
movl $0x0, -0x20(%rbp)
movl -0x4(%rbp), %eax
movq %rax, -0x30(%rbp)
subq $0x5, %rax
ja 0x16fe
movq -0x30(%rbp), %rax
leaq 0x239e4(%rip), %rcx     # 0x25058
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl -0x8(%rbp), %edi
movl -0xc(%rbp), %esi
movl -0x10(%rbp), %edx
leaq -0x20(%rbp), %rcx
callq 0x6ca0
movl %eax, -0x1c(%rbp)
jmp 0x1703
movl -0x8(%rbp), %edi
movl -0xc(%rbp), %esi
movl -0x10(%rbp), %edx
leaq -0x20(%rbp), %rcx
callq 0x6f70
movl %eax, -0x1c(%rbp)
jmp 0x1703
movl -0x8(%rbp), %edi
movl -0xc(%rbp), %esi
movl -0x10(%rbp), %edx
leaq -0x20(%rbp), %rcx
callq 0x77f0
movl %eax, -0x1c(%rbp)
jmp 0x1703
movl -0x8(%rbp), %edi
movl -0x10(%rbp), %esi
leaq -0x20(%rbp), %rdx
callq 0x7a80
movl %eax, -0x1c(%rbp)
jmp 0x1703
movl -0x8(%rbp), %edi
movl -0xc(%rbp), %esi
leaq -0x20(%rbp), %rdx
callq 0x7cf0
movl %eax, -0x1c(%rbp)
jmp 0x1703
movl -0x8(%rbp), %edi
movl -0xc(%rbp), %esi
leaq -0x20(%rbp), %rdx
callq 0x7de0
movl %eax, -0x1c(%rbp)
jmp 0x1703
callq 0x1030
movl -0x1c(%rbp), %eax
cmpl -0x18(%rbp), %eax
jne 0x1717
movl -0x24(%rbp), %eax
cmpl -0x20(%rbp), %eax
je 0x17f4
movl -0x4(%rbp), %eax
movl %eax, %ecx
leaq 0x2a94d(%rip), %rax     # 0x2c070
movq (%rax,%rcx,8), %rsi
movl -0x10(%rbp), %eax
movl %eax, %ecx
leaq 0x2a96d(%rip), %rax     # 0x2c0a0
movq (%rax,%rcx,8), %rcx
movl -0x14(%rbp), %r8d
leaq 0x23a02(%rip), %rdi     # 0x25144
movl $0x20, %edx
movb $0x0, %al
callq 0x1050
leaq 0x23a11(%rip), %rdi     # 0x25166
movb $0x0, %al
callq 0x1050
movl -0x8(%rbp), %edi
callq 0x1800
leaq 0x23d06(%rip), %rdi     # 0x25471
movb $0x0, %al
callq 0x1050
cmpl $0x3, -0x4(%rbp)
je 0x179c
leaq 0x239ed(%rip), %rdi     # 0x2516c
movb $0x0, %al
callq 0x1050
movl -0xc(%rbp), %edi
callq 0x1800
leaq 0x23cdc(%rip), %rdi     # 0x25471
movb $0x0, %al
callq 0x1050
leaq 0x239cf(%rip), %rdi     # 0x25172
movb $0x0, %al
callq 0x1050
movl -0x18(%rbp), %edi
callq 0x1800
movl -0x24(%rbp), %esi
leaq 0x239bc(%rip), %rdi     # 0x25178
movb $0x0, %al
callq 0x1050
leaq 0x239be(%rip), %rdi     # 0x25188
movb $0x0, %al
callq 0x1050
movl -0x1c(%rbp), %edi
callq 0x1800
movl -0x20(%rbp), %esi
leaq 0x23995(%rip), %rdi     # 0x25178
movb $0x0, %al
callq 0x1050
movl $0x1, %edi
callq 0x10a0
addq $0x30, %rsp
popq %rbp
retq
nopw (%rax,%rax)