void __attribute__((__no__)) test(int i1, int i2) {
  extern void link_failure_ceil(void);
  extern void link_failure_ceilf(void);
  extern void link_failure_ceill(void);
  ;
  if (ceil(i1) != i1)
    link_failure_ceil();
  if (ceilf(i1) != i1)
    link_failure_ceilf();
  if (ceill(i1) != i1)
    link_failure_ceill();
  ;
  extern void link_failure_floor(void);
  extern void link_failure_floorf(void);
  extern void link_failure_floorl(void);
  ;
  if (floor(i1) != i1)
    link_failure_floor();
  if (floorf(i1) != i1)
    link_failure_floorf();
  if (floorl(i1) != i1)
    link_failure_floorl();
  ;
  extern void link_failure_nearbyint(void);
  extern void link_failure_nearbyintf(void);
  extern void link_failure_nearbyintl(void);
  ;
  if (nearbyint(i1) != i1)
    link_failure_nearbyint();
  if (nearbyintf(i1) != i1)
    link_failure_nearbyintf();
  if (nearbyintl(i1) != i1)
    link_failure_nearbyintl();
  ;
  extern void link_failure_rint(void);
  extern void link_failure_rintf(void);
  extern void link_failure_rintl(void);
  ;
  if (rint(i1) != i1)
    link_failure_rint();
  if (rintf(i1) != i1)
    link_failure_rintf();
  if (rintl(i1) != i1)
    link_failure_rintl();
  ;
  extern void link_failure_round(void);
  extern void link_failure_roundf(void);
  extern void link_failure_roundl(void);
  ;
  if (round(i1) != i1)
    link_failure_round();
  if (roundf(i1) != i1)
    link_failure_roundf();
  if (roundl(i1) != i1)
    link_failure_roundl();
  ;
  extern void link_failure_trunc(void);
  extern void link_failure_truncf(void);
  extern void link_failure_truncl(void);
  ;
  if (trunc(i1) != i1)
    link_failure_trunc();
  if (truncf(i1) != i1)
    link_failure_truncf();
  if (truncl(i1) != i1)
    link_failure_truncl();
  ;
  extern void link_failure_lround(void);
  extern void link_failure_lroundf(void);
  extern void link_failure_lroundl(void);
  ;
  if (lround(i1) != (long)(double)i1)
    link_failure_lround();
  if (lroundf(i1) != (long)(float)i1)
    link_failure_lroundf();
  if (lroundl(i1) != (long)(long double)i1)
    link_failure_lroundl();
  ;
  extern void link_failure_llround(void);
  extern void link_failure_llroundf(void);
  extern void link_failure_llroundl(void);
  ;
  if (llround(i1) != (long long)(double)i1)
    link_failure_llround();
  if (llroundf(i1) != (long long)(float)i1)
    link_failure_llroundf();
  if (llroundl(i1) != (long long)(long double)i1)
    link_failure_llroundl();
  ;
  extern void link_failure_lrint(void);
  extern void link_failure_lrintf(void);
  extern void link_failure_lrintl(void);
  ;
  if (lrint(i1) != (long)(double)i1)
    link_failure_lrint();
  if (lrintf(i1) != (long)(float)i1)
    link_failure_lrintf();
  if (lrintl(i1) != (long)(long double)i1)
    link_failure_lrintl();
  ;
  extern void link_failure_llrint(void);
  extern void link_failure_llrintf(void);
  extern void link_failure_llrintl(void);
  ;
  if (llrint(i1) != (long long)(double)i1)
    link_failure_llrint();
  if (llrintf(i1) != (long long)(float)i1)
    link_failure_llrintf();
  if (llrintl(i1) != (long long)(long double)i1)
    link_failure_llrintl();
  ;
  extern void link_failure_FP_REAL_CST(void);
  extern void link_failure_fixed_REAL_CST(void);
  if (ceill(5.0) != (5.0))
    link_failure_FP_REAL_CST();
  if (lroundl(5.0) != (long)(long double)(5.0))
    link_failure_fixed_REAL_CST();
  ;
  extern void link_failure_FP_REAL_CSTf(void);
  extern void link_failure_fixed_REAL_CSTf(void);
  if (ceill(5.0F) != (5.0F))
    link_failure_FP_REAL_CSTf();
  if (lroundl(5.0F) != (long)(long double)(5.0F))
    link_failure_fixed_REAL_CSTf();
  ;
  extern void link_failure_FP_REAL_CSTl(void);
  extern void link_failure_fixed_REAL_CSTl(void);
  if (ceill(5.0L) != (5.0L))
    link_failure_FP_REAL_CSTl();
  if (lroundl(5.0L) != (long)(long double)(5.0L))
    link_failure_fixed_REAL_CSTl();
  ;
  extern void link_failure_FP_FLOAT_EXPR(void);
  extern void link_failure_fixed_FLOAT_EXPR(void);
  if (ceill((double)i1) != ((double)i1))
    link_failure_FP_FLOAT_EXPR();
  if (lroundl((double)i1) != (long)(long double)((double)i1))
    link_failure_fixed_FLOAT_EXPR();
  ;
  extern void link_failure_FP_FLOAT_EXPRf(void);
  extern void link_failure_fixed_FLOAT_EXPRf(void);
  if (ceill((float)i1) != ((float)i1))
    link_failure_FP_FLOAT_EXPRf();
  if (lroundl((float)i1) != (long)(long double)((float)i1))
    link_failure_fixed_FLOAT_EXPRf();
  ;
  extern void link_failure_FP_FLOAT_EXPRl(void);
  extern void link_failure_fixed_FLOAT_EXPRl(void);
  if (ceill((long double)i1) != ((long double)i1))
    link_failure_FP_FLOAT_EXPRl();
  if (lroundl((long double)i1) != (long)(long double)((long double)i1))
    link_failure_fixed_FLOAT_EXPRl();
  ;
  extern void link_failure_FP_ABS_EXPR(void);
  extern void link_failure_fixed_ABS_EXPR(void);
  if (ceill(fabs(i1)) != (fabs(i1)))
    link_failure_FP_ABS_EXPR();
  if (lroundl(fabs(i1)) != (long)(long double)(fabs(i1)))
    link_failure_fixed_ABS_EXPR();
  ;
  extern void link_failure_FP_ABS_EXPRf(void);
  extern void link_failure_fixed_ABS_EXPRf(void);
  if (ceill(fabsf(i1)) != (fabsf(i1)))
    link_failure_FP_ABS_EXPRf();
  if (lroundl(fabsf(i1)) != (long)(long double)(fabsf(i1)))
    link_failure_fixed_ABS_EXPRf();
  ;
  extern void link_failure_FP_ABS_EXPRl(void);
  extern void link_failure_fixed_ABS_EXPRl(void);
  if (ceill(fabsl(i1)) != (fabsl(i1)))
    link_failure_FP_ABS_EXPRl();
  if (lroundl(fabsl(i1)) != (long)(long double)(fabsl(i1)))
    link_failure_fixed_ABS_EXPRl();
  ;
  extern void link_failure_FP_COMPOUND_EXPR(void);
  extern void link_failure_fixed_COMPOUND_EXPR(void);
  if (ceill(((void)i1, (double)i2)) != (((void)i1, (double)i2)))
    link_failure_FP_COMPOUND_EXPR();
  if (lroundl(((void)i1, (double)i2)) !=
      (long)(long double)(((void)i1, (double)i2)))
    link_failure_fixed_COMPOUND_EXPR();
  ;
  extern void link_failure_FP_PLUS_EXPR(void);
  extern void link_failure_fixed_PLUS_EXPR(void);
  if (ceill((double)i1 + i2) != ((double)i1 + i2))
    link_failure_FP_PLUS_EXPR();
  if (lroundl((double)i1 + i2) != (long)(long double)((double)i1 + i2))
    link_failure_fixed_PLUS_EXPR();
  ;
  extern void link_failure_FP_MINUS_EXPR(void);
  extern void link_failure_fixed_MINUS_EXPR(void);
  if (ceill((double)i1 - i2) != ((double)i1 - i2))
    link_failure_FP_MINUS_EXPR();
  if (lroundl((double)i1 - i2) != (long)(long double)((double)i1 - i2))
    link_failure_fixed_MINUS_EXPR();
  ;
  extern void link_failure_FP_MULT_EXPR(void);
  extern void link_failure_fixed_MULT_EXPR(void);
  if (ceill((double)i1 * i2) != ((double)i1 * i2))
    link_failure_FP_MULT_EXPR();
  if (lroundl((double)i1 * i2) != (long)(long double)((double)i1 * i2))
    link_failure_fixed_MULT_EXPR();
  ;
}


x86 assembly (clang, -O0):
<test>:
push   %rbp
mov    %rsp,%rbp
sub    $0x280,%rsp
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
cvtsi2sdl -0x4(%rbp),%xmm0
call   2140 <ceil@plt>
cvtsi2sdl -0x4(%rbp),%xmm1
ucomisd %xmm1,%xmm0
jne    2695 <test+0x35>
jp     2695 <test+0x35>
jmp    269a <test+0x3a>
call   24b0 <link_failure_ceil@plt>
cvtsi2ssl -0x4(%rbp),%xmm0
call   23b0 <ceilf@plt>
cvtsi2ssl -0x4(%rbp),%xmm1
ucomiss %xmm1,%xmm0
jne    26bd <test+0x5d>
jp     26bd <test+0x5d>
jmp    26c2 <test+0x62>
call   2260 <link_failure_ceilf@plt>
mov    -0x4(%rbp),%eax
mov    %eax,-0xc(%rbp)
fildl  -0xc(%rbp)
fld    %st(0)
fstpt  -0x188(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
call   23a0 <ceill@plt>
fldt   -0x188(%rbp)
fld    %st(1)
fstp   %st(0)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    26fe <test+0x9e>
jp     26fe <test+0x9e>
jmp    2703 <test+0xa3>
call   2270 <link_failure_ceill@plt>
cvtsi2sdl -0x4(%rbp),%xmm0
call   2550 <floor@plt>
cvtsi2sdl -0x4(%rbp),%xmm1
ucomisd %xmm1,%xmm0
jne    2727 <test+0xc7>
jp     2727 <test+0xc7>
jmp    272c <test+0xcc>
call   2410 <link_failure_floor@plt>
cvtsi2ssl -0x4(%rbp),%xmm0
call   2230 <floorf@plt>
cvtsi2ssl -0x4(%rbp),%xmm1
ucomiss %xmm1,%xmm0
jne    274f <test+0xef>
jp     274f <test+0xef>
jmp    2754 <test+0xf4>
call   24a0 <link_failure_floorf@plt>
mov    -0x4(%rbp),%eax
mov    %eax,-0x10(%rbp)
fildl  -0x10(%rbp)
fld    %st(0)
fstpt  -0x194(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
call   2500 <floorl@plt>
fldt   -0x194(%rbp)
fld    %st(1)
fstp   %st(0)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    2790 <test+0x130>
jp     2790 <test+0x130>
jmp    2795 <test+0x135>
call   24d0 <link_failure_floorl@plt>
cvtsi2sdl -0x4(%rbp),%xmm0
call   2400 <nearbyint@plt>
cvtsi2sdl -0x4(%rbp),%xmm1
ucomisd %xmm1,%xmm0
jne    27b9 <test+0x159>
jp     27b9 <test+0x159>
jmp    27be <test+0x15e>
call   2330 <link_failure_nearbyint@plt>
cvtsi2ssl -0x4(%rbp),%xmm0
call   21c0 <nearbyintf@plt>
cvtsi2ssl -0x4(%rbp),%xmm1
ucomiss %xmm1,%xmm0
jne    27e1 <test+0x181>
jp     27e1 <test+0x181>
jmp    27e6 <test+0x186>
call   2120 <link_failure_nearbyintf@plt>
mov    -0x4(%rbp),%eax
mov    %eax,-0x14(%rbp)
fildl  -0x14(%rbp)
fld    %st(0)
fstpt  -0x1a0(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
call   22c0 <nearbyintl@plt>
fldt   -0x1a0(%rbp)
fld    %st(1)
fstp   %st(0)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    2822 <test+0x1c2>
jp     2822 <test+0x1c2>
jmp    2827 <test+0x1c7>
call   2100 <link_failure_nearbyintl@plt>
cvtsi2sdl -0x4(%rbp),%xmm0
call   22a0 <rint@plt>
cvtsi2sdl -0x4(%rbp),%xmm1
ucomisd %xmm1,%xmm0
jne    284b <test+0x1eb>
jp     284b <test+0x1eb>
jmp    2850 <test+0x1f0>
call   2210 <link_failure_rint@plt>
cvtsi2ssl -0x4(%rbp),%xmm0
call   2390 <rintf@plt>
cvtsi2ssl -0x4(%rbp),%xmm1
ucomiss %xmm1,%xmm0
jne    2873 <test+0x213>
jp     2873 <test+0x213>
jmp    2878 <test+0x218>
call   2250 <link_failure_rintf@plt>
mov    -0x4(%rbp),%eax
mov    %eax,-0x18(%rbp)
fildl  -0x18(%rbp)
fld    %st(0)
fstpt  -0x1ac(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
call   2370 <rintl@plt>
fldt   -0x1ac(%rbp)
fld    %st(1)
fstp   %st(0)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    28b4 <test+0x254>
jp     28b4 <test+0x254>
jmp    28b9 <test+0x259>
call   21b0 <link_failure_rintl@plt>
cvtsi2sdl -0x4(%rbp),%xmm0
call   2430 <round@plt>
cvtsi2sdl -0x4(%rbp),%xmm1
ucomisd %xmm1,%xmm0
jne    28dd <test+0x27d>
jp     28dd <test+0x27d>
jmp    28e2 <test+0x282>
call   24f0 <link_failure_round@plt>
cvtsi2ssl -0x4(%rbp),%xmm0
call   24e0 <roundf@plt>
cvtsi2ssl -0x4(%rbp),%xmm1
ucomiss %xmm1,%xmm0
jne    2905 <test+0x2a5>
jp     2905 <test+0x2a5>
jmp    290a <test+0x2aa>
call   23f0 <link_failure_roundf@plt>
mov    -0x4(%rbp),%eax
mov    %eax,-0x1c(%rbp)
fildl  -0x1c(%rbp)
fld    %st(0)
fstpt  -0x1b8(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
call   2460 <roundl@plt>
fldt   -0x1b8(%rbp)
fld    %st(1)
fstp   %st(0)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    2946 <test+0x2e6>
jp     2946 <test+0x2e6>
jmp    294b <test+0x2eb>
call   2360 <link_failure_roundl@plt>
cvtsi2sdl -0x4(%rbp),%xmm0
call   23e0 <trunc@plt>
cvtsi2sdl -0x4(%rbp),%xmm1
ucomisd %xmm1,%xmm0
jne    296f <test+0x30f>
jp     296f <test+0x30f>
jmp    2974 <test+0x314>
call   2350 <link_failure_trunc@plt>
cvtsi2ssl -0x4(%rbp),%xmm0
call   24c0 <truncf@plt>
cvtsi2ssl -0x4(%rbp),%xmm1
ucomiss %xmm1,%xmm0
jne    2997 <test+0x337>
jp     2997 <test+0x337>
jmp    299c <test+0x33c>
call   2310 <link_failure_truncf@plt>
mov    -0x4(%rbp),%eax
mov    %eax,-0x20(%rbp)
fildl  -0x20(%rbp)
fld    %st(0)
fstpt  -0x1c4(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
call   2480 <truncl@plt>
fldt   -0x1c4(%rbp)
fld    %st(1)
fstp   %st(0)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    29d8 <test+0x378>
jp     29d8 <test+0x378>
jmp    29dd <test+0x37d>
call   2340 <link_failure_truncl@plt>
cvtsi2sdl -0x4(%rbp),%xmm0
call   20c0 <lround@plt>
cvtsi2sdl -0x4(%rbp),%xmm0
cvttsd2si %xmm0,%rcx
cmp    %rcx,%rax
je     29ff <test+0x39f>
call   2560 <link_failure_lround@plt>
cvtsi2ssl -0x4(%rbp),%xmm0
call   2380 <lroundf@plt>
cvtsi2ssl -0x4(%rbp),%xmm0
cvttss2si %xmm0,%rcx
cmp    %rcx,%rax
je     2a21 <test+0x3c1>
call   2530 <link_failure_lroundf@plt>
mov    -0x4(%rbp),%eax
mov    %eax,-0x28(%rbp)
fildl  -0x28(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
call   2320 <lroundl@plt>
movslq -0x4(%rbp),%rcx
mov    %ecx,%edx
mov    %edx,-0x24(%rbp)
fildl  -0x24(%rbp)
fstp   %st(0)
cmp    %rcx,%rax
je     2a50 <test+0x3f0>
call   2570 <link_failure_lroundl@plt>
cvtsi2sdl -0x4(%rbp),%xmm0
call   2200 <llround@plt>
cvtsi2sdl -0x4(%rbp),%xmm0
cvttsd2si %xmm0,%rcx
cmp    %rcx,%rax
je     2a72 <test+0x412>
call   20b0 <link_failure_llround@plt>
cvtsi2ssl -0x4(%rbp),%xmm0
call   2300 <llroundf@plt>
cvtsi2ssl -0x4(%rbp),%xmm0
cvttss2si %xmm0,%rcx
cmp    %rcx,%rax
je     2a94 <test+0x434>
call   2510 <link_failure_llroundf@plt>
mov    -0x4(%rbp),%eax
mov    %eax,-0x30(%rbp)
fildl  -0x30(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
call   22f0 <llroundl@plt>
movslq -0x4(%rbp),%rcx
mov    %ecx,%edx
mov    %edx,-0x2c(%rbp)
fildl  -0x2c(%rbp)
fstp   %st(0)
cmp    %rcx,%rax
je     2ac3 <test+0x463>
call   2490 <link_failure_llroundl@plt>
cvtsi2sdl -0x4(%rbp),%xmm0
call   22b0 <lrint@plt>
cvtsi2sdl -0x4(%rbp),%xmm0
cvttsd2si %xmm0,%rcx
cmp    %rcx,%rax
je     2ae5 <test+0x485>
call   2470 <link_failure_lrint@plt>
cvtsi2ssl -0x4(%rbp),%xmm0
call   2090 <lrintf@plt>
cvtsi2ssl -0x4(%rbp),%xmm0
cvttss2si %xmm0,%rcx
cmp    %rcx,%rax
je     2b07 <test+0x4a7>
call   21d0 <link_failure_lrintf@plt>
mov    -0x4(%rbp),%eax
mov    %eax,-0x38(%rbp)
fildl  -0x38(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
call   2080 <lrintl@plt>
movslq -0x4(%rbp),%rcx
mov    %ecx,%edx
mov    %edx,-0x34(%rbp)
fildl  -0x34(%rbp)
fstp   %st(0)
cmp    %rcx,%rax
je     2b36 <test+0x4d6>
call   21f0 <link_failure_lrintl@plt>
cvtsi2sdl -0x4(%rbp),%xmm0
call   2070 <llrint@plt>
cvtsi2sdl -0x4(%rbp),%xmm0
cvttsd2si %xmm0,%rcx
cmp    %rcx,%rax
je     2b58 <test+0x4f8>
call   2110 <link_failure_llrint@plt>
cvtsi2ssl -0x4(%rbp),%xmm0
call   21e0 <llrintf@plt>
cvtsi2ssl -0x4(%rbp),%xmm0
cvttss2si %xmm0,%rcx
cmp    %rcx,%rax
je     2b7a <test+0x51a>
call   20a0 <link_failure_llrintf@plt>
mov    -0x4(%rbp),%eax
mov    %eax,-0x40(%rbp)
fildl  -0x40(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
call   23c0 <llrintl@plt>
movslq -0x4(%rbp),%rcx
mov    %ecx,%edx
mov    %edx,-0x3c(%rbp)
fildl  -0x3c(%rbp)
fstp   %st(0)
cmp    %rcx,%rax
je     2ba9 <test+0x549>
call   2060 <link_failure_llrintl@plt>
flds   0x1451(%rip)
fstp   %st(0)
mov    $0x1,%al
test   %al,%al
jne    2bc5 <test+0x565>
jmp    2bc0 <test+0x560>
call   20f0 <link_failure_FP_REAL_CST@plt>
mov    %rsp,%rax
flds   0x1432(%rip)
fstpt  (%rax)
call   2320 <lroundl@plt>
cmp    $0x5,%rax
je     2be4 <test+0x584>
call   2170 <link_failure_fixed_REAL_CST@plt>
flds   0x1416(%rip)
fstp   %st(0)
mov    $0x1,%al
test   %al,%al
jne    2c00 <test+0x5a0>
jmp    2bfb <test+0x59b>
call   2180 <link_failure_FP_REAL_CSTf@plt>
mov    %rsp,%rax
flds   0x13f7(%rip)
fstpt  (%rax)
call   2320 <lroundl@plt>
cmp    $0x5,%rax
je     2c1f <test+0x5bf>
call   2290 <link_failure_fixed_REAL_CSTf@plt>
flds   0x13db(%rip)
fstp   %st(0)
mov    $0x1,%al
test   %al,%al
jne    2c3b <test+0x5db>
jmp    2c36 <test+0x5d6>
call   21a0 <link_failure_FP_REAL_CSTl@plt>
mov    %rsp,%rax
flds   0x13bc(%rip)
fstpt  (%rax)
call   2320 <lroundl@plt>
cmp    $0x5,%rax
je     2c5a <test+0x5fa>
call   2150 <link_failure_fixed_REAL_CSTl@plt>
cvtsi2sdl -0x4(%rbp),%xmm0
movsd  %xmm0,-0x48(%rbp)
fldl   -0x48(%rbp)
fld    %st(0)
fstpt  -0x1d0(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
call   23a0 <ceill@plt>
fldt   -0x1d0(%rbp)
fld    %st(1)
fstp   %st(0)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    2c9a <test+0x63a>
jp     2c9a <test+0x63a>
jmp    2c9f <test+0x63f>
call   2440 <link_failure_FP_FLOAT_EXPR@plt>
cvtsi2sdl -0x4(%rbp),%xmm0
movsd  %xmm0,-0x58(%rbp)
fldl   -0x58(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
call   2320 <lroundl@plt>
cvtsi2sdl -0x4(%rbp),%xmm0
movsd  %xmm0,-0x60(%rbp)
fldl   -0x60(%rbp)
fnstcw -0x15a(%rbp)
movzwl -0x15a(%rbp),%ecx
or     $0xc00,%ecx
mov    %cx,-0x15c(%rbp)
fldcw  -0x15c(%rbp)
fistpll -0x50(%rbp)
fldcw  -0x15a(%rbp)
mov    -0x50(%rbp),%rcx
cmp    %rcx,%rax
je     2cfe <test+0x69e>
call   2050 <link_failure_fixed_FLOAT_EXPR@plt>
cvtsi2ssl -0x4(%rbp),%xmm0
movss  %xmm0,-0x64(%rbp)
flds   -0x64(%rbp)
fld    %st(0)
fstpt  -0x1dc(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
call   23a0 <ceill@plt>
fldt   -0x1dc(%rbp)
fld    %st(1)
fstp   %st(0)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    2d3e <test+0x6de>
jp     2d3e <test+0x6de>
jmp    2d43 <test+0x6e3>
call   2540 <link_failure_FP_FLOAT_EXPRf@plt>
cvtsi2ssl -0x4(%rbp),%xmm0
movss  %xmm0,-0x74(%rbp)
flds   -0x74(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
call   2320 <lroundl@plt>
cvtsi2ssl -0x4(%rbp),%xmm0
movss  %xmm0,-0x78(%rbp)
flds   -0x78(%rbp)
fnstcw -0x15e(%rbp)
movzwl -0x15e(%rbp),%ecx
or     $0xc00,%ecx
mov    %cx,-0x160(%rbp)
fldcw  -0x160(%rbp)
fistpll -0x70(%rbp)
fldcw  -0x15e(%rbp)
mov    -0x70(%rbp),%rcx
cmp    %rcx,%rax
je     2da2 <test+0x742>
call   2580 <link_failure_fixed_FLOAT_EXPRf@plt>
mov    -0x4(%rbp),%eax
mov    %eax,-0x7c(%rbp)
fildl  -0x7c(%rbp)
fld    %st(0)
fstpt  -0x1e8(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
call   23a0 <ceill@plt>
fldt   -0x1e8(%rbp)
fld    %st(1)
fstp   %st(0)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    2dde <test+0x77e>
jp     2dde <test+0x77e>
jmp    2de3 <test+0x783>
call   23d0 <link_failure_FP_FLOAT_EXPRl@plt>
mov    -0x4(%rbp),%eax
mov    %eax,-0x84(%rbp)
fildl  -0x84(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
call   2320 <lroundl@plt>
movslq -0x4(%rbp),%rcx
mov    %ecx,%edx
mov    %edx,-0x80(%rbp)
fildl  -0x80(%rbp)
fstp   %st(0)
cmp    %rcx,%rax
je     2e18 <test+0x7b8>
call   2030 <link_failure_fixed_FLOAT_EXPRl@plt>
cvtsi2sdl -0x4(%rbp),%xmm0
movaps 0x11ec(%rip),%xmm1
pand   %xmm1,%xmm0
movlpd %xmm0,-0x90(%rbp)
ff
fldl   -0x90(%rbp)
fld    %st(0)
fstpt  -0x1f4(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
call   23a0 <ceill@plt>
fldt   -0x1f4(%rbp)
fld    %st(1)
fstp   %st(0)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    2e69 <test+0x809>
jp     2e69 <test+0x809>
jmp    2e6e <test+0x80e>
call   2130 <link_failure_FP_ABS_EXPR@plt>
cvtsi2sdl -0x4(%rbp),%xmm0
movapd 0x1195(%rip),%xmm1
movaps %xmm1,-0x210(%rbp)
pand   %xmm1,%xmm0
movlpd %xmm0,-0xa0(%rbp)
ff
fldl   -0xa0(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
call   2320 <lroundl@plt>
movaps -0x210(%rbp),%xmm1
cvtsi2sdl -0x4(%rbp),%xmm0
pand   %xmm1,%xmm0
movlpd %xmm0,-0xa8(%rbp)
ff
fldl   -0xa8(%rbp)
fnstcw -0x162(%rbp)
movzwl -0x162(%rbp),%ecx
or     $0xc00,%ecx
mov    %cx,-0x164(%rbp)
fldcw  -0x164(%rbp)
fistpll -0x98(%rbp)
fldcw  -0x162(%rbp)
mov    -0x98(%rbp),%rcx
cmp    %rcx,%rax
je     2efd <test+0x89d>
call   2160 <link_failure_fixed_ABS_EXPR@plt>
cvtsi2ssl -0x4(%rbp),%xmm0
movaps 0x1117(%rip),%xmm1
pand   %xmm1,%xmm0
movss  %xmm0,-0xac(%rbp)
ff
flds   -0xac(%rbp)
fld    %st(0)
fstpt  -0x21c(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
call   23a0 <ceill@plt>
fldt   -0x21c(%rbp)
fld    %st(1)
fstp   %st(0)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    2f4e <test+0x8ee>
jp     2f4e <test+0x8ee>
jmp    2f53 <test+0x8f3>
call   2240 <link_failure_FP_ABS_EXPRf@plt>
cvtsi2ssl -0x4(%rbp),%xmm0
movaps 0x10c1(%rip),%xmm1
movaps %xmm1,-0x230(%rbp)
pand   %xmm1,%xmm0
movss  %xmm0,-0xbc(%rbp)
ff
flds   -0xbc(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
call   2320 <lroundl@plt>
movaps -0x230(%rbp),%xmm1
cvtsi2ssl -0x4(%rbp),%xmm0
pand   %xmm1,%xmm0
movss  %xmm0,-0xc0(%rbp)
ff
flds   -0xc0(%rbp)
fnstcw -0x166(%rbp)
movzwl -0x166(%rbp),%ecx
or     $0xc00,%ecx
mov    %cx,-0x168(%rbp)
fldcw  -0x168(%rbp)
fistpll -0xb8(%rbp)
fldcw  -0x166(%rbp)
mov    -0xb8(%rbp),%rcx
cmp    %rcx,%rax
je     2fe1 <test+0x981>
call   2280 <link_failure_fixed_ABS_EXPRf@plt>
mov    -0x4(%rbp),%eax
mov    %eax,-0xc4(%rbp)
fildl  -0xc4(%rbp)
fabs
fld    %st(0)
fstpt  -0x23c(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
call   23a0 <ceill@plt>
fldt   -0x23c(%rbp)
fld    %st(1)
fstp   %st(0)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    3025 <test+0x9c5>
jp     3025 <test+0x9c5>
jmp    302a <test+0x9ca>
call   20d0 <link_failure_FP_ABS_EXPRl@plt>
mov    -0x4(%rbp),%eax
mov    %eax,-0xd8(%rbp)
fildl  -0xd8(%rbp)
fabs
mov    %rsp,%rax
fstpt  (%rax)
call   2320 <lroundl@plt>
mov    -0x4(%rbp),%ecx
mov    %ecx,-0xd4(%rbp)
fildl  -0xd4(%rbp)
fabs
fnstcw -0x16a(%rbp)
movzwl -0x16a(%rbp),%ecx
or     $0xc00,%ecx
mov    %cx,-0x16c(%rbp)
fldcw  -0x16c(%rbp)
fistpll -0xd0(%rbp)
fldcw  -0x16a(%rbp)
mov    -0xd0(%rbp),%rcx
cmp    %rcx,%rax
je     3097 <test+0xa37>
call   22d0 <link_failure_fixed_ABS_EXPRl@plt>
cvtsi2sdl -0x8(%rbp),%xmm0
movsd  %xmm0,-0xe0(%rbp)
ff
fldl   -0xe0(%rbp)
fld    %st(0)
fstpt  -0x248(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
call   23a0 <ceill@plt>
fldt   -0x248(%rbp)
fld    %st(1)
fstp   %st(0)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    30dd <test+0xa7d>
jp     30dd <test+0xa7d>
jmp    30e2 <test+0xa82>
call   2220 <link_failure_FP_COMPOUND_EXPR@plt>
cvtsi2sdl -0x8(%rbp),%xmm0
movsd  %xmm0,-0xf0(%rbp)
ff
fldl   -0xf0(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
call   2320 <lroundl@plt>
cvtsi2sdl -0x8(%rbp),%xmm0
movsd  %xmm0,-0xf8(%rbp)
ff
fldl   -0xf8(%rbp)
fnstcw -0x16e(%rbp)
movzwl -0x16e(%rbp),%ecx
or     $0xc00,%ecx
mov    %cx,-0x170(%rbp)
fldcw  -0x170(%rbp)
fistpll -0xe8(%rbp)
fldcw  -0x16e(%rbp)
mov    -0xe8(%rbp),%rcx
cmp    %rcx,%rax
je     3153 <test+0xaf3>
call   2450 <link_failure_fixed_COMPOUND_EXPR@plt>
cvtsi2sdl -0x4(%rbp),%xmm0
cvtsi2sdl -0x8(%rbp),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x100(%rbp)
ff
fldl   -0x100(%rbp)
fld    %st(0)
fstpt  -0x254(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
call   23a0 <ceill@plt>
fldt   -0x254(%rbp)
fld    %st(1)
fstp   %st(0)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    31a2 <test+0xb42>
jp     31a2 <test+0xb42>
jmp    31a7 <test+0xb47>
call   22e0 <link_failure_FP_PLUS_EXPR@plt>
cvtsi2sdl -0x4(%rbp),%xmm0
cvtsi2sdl -0x8(%rbp),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x110(%rbp)
ff
fldl   -0x110(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
call   2320 <lroundl@plt>
cvtsi2sdl -0x4(%rbp),%xmm0
cvtsi2sdl -0x8(%rbp),%xmm1
addsd  %xmm1,%xmm0
movsd  %xmm0,-0x118(%rbp)
ff
fldl   -0x118(%rbp)
fnstcw -0x172(%rbp)
movzwl -0x172(%rbp),%ecx
or     $0xc00,%ecx
mov    %cx,-0x174(%rbp)
fldcw  -0x174(%rbp)
fistpll -0x108(%rbp)
fldcw  -0x172(%rbp)
mov    -0x108(%rbp),%rcx
cmp    %rcx,%rax
je     322a <test+0xbca>
call   20e0 <link_failure_fixed_PLUS_EXPR@plt>
cvtsi2sdl -0x4(%rbp),%xmm0
cvtsi2sdl -0x8(%rbp),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x120(%rbp)
ff
fldl   -0x120(%rbp)
fld    %st(0)
fstpt  -0x260(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
call   23a0 <ceill@plt>
fldt   -0x260(%rbp)
fld    %st(1)
fstp   %st(0)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    3279 <test+0xc19>
jp     3279 <test+0xc19>
jmp    327e <test+0xc1e>
call   2520 <link_failure_FP_MINUS_EXPR@plt>
cvtsi2sdl -0x4(%rbp),%xmm0
cvtsi2sdl -0x8(%rbp),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x130(%rbp)
ff
fldl   -0x130(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
call   2320 <lroundl@plt>
cvtsi2sdl -0x4(%rbp),%xmm0
cvtsi2sdl -0x8(%rbp),%xmm1
subsd  %xmm1,%xmm0
movsd  %xmm0,-0x138(%rbp)
ff
fldl   -0x138(%rbp)
fnstcw -0x176(%rbp)
movzwl -0x176(%rbp),%ecx
or     $0xc00,%ecx
mov    %cx,-0x178(%rbp)
fldcw  -0x178(%rbp)
fistpll -0x128(%rbp)
fldcw  -0x176(%rbp)
mov    -0x128(%rbp),%rcx
cmp    %rcx,%rax
je     3301 <test+0xca1>
call   2190 <link_failure_fixed_MINUS_EXPR@plt>
cvtsi2sdl -0x4(%rbp),%xmm0
cvtsi2sdl -0x8(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x140(%rbp)
ff
fldl   -0x140(%rbp)
fld    %st(0)
fstpt  -0x26c(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
call   23a0 <ceill@plt>
fldt   -0x26c(%rbp)
fld    %st(1)
fstp   %st(0)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    3350 <test+0xcf0>
jp     3350 <test+0xcf0>
jmp    3355 <test+0xcf5>
call   2420 <link_failure_FP_MULT_EXPR@plt>
cvtsi2sdl -0x4(%rbp),%xmm0
cvtsi2sdl -0x8(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x150(%rbp)
ff
fldl   -0x150(%rbp)
mov    %rsp,%rax
fstpt  (%rax)
call   2320 <lroundl@plt>
cvtsi2sdl -0x4(%rbp),%xmm0
cvtsi2sdl -0x8(%rbp),%xmm1
mulsd  %xmm1,%xmm0
movsd  %xmm0,-0x158(%rbp)
ff
fldl   -0x158(%rbp)
fnstcw -0x17a(%rbp)
movzwl -0x17a(%rbp),%ecx
or     $0xc00,%ecx
mov    %cx,-0x17c(%rbp)
fldcw  -0x17c(%rbp)
fistpll -0x148(%rbp)
fldcw  -0x17a(%rbp)
mov    -0x148(%rbp),%rcx
cmp    %rcx,%rax
je     33d8 <test+0xd78>
call   2040 <link_failure_fixed_MULT_EXPR@plt>
add    $0x280,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<test>:
push   %rbp
push   %r14
push   %rbx
sub    $0xb0,%rsp
mov    %esi,%r14d
mov    %edi,%ebp
cvtsi2ss %edi,%xmm0
movaps %xmm0,0x20(%rsp)
xorps  %xmm0,%xmm0
cvtsi2sd %edi,%xmm0
mov    %edi,0x74(%rsp)
fildl  0x74(%rsp)
fstpt  0x14(%rsp)
movapd %xmm0,0x50(%rsp)
call   20c0 <lround@plt>
movslq %ebp,%rbp
cmp    %rbp,%rax
je     2444 <test+0x44>
call   2300 <link_failure_lround@plt>
movaps 0x20(%rsp),%xmm0
call   2250 <lroundf@plt>
cvttss2si 0x20(%rsp),%rbx
cmp    %rbx,%rax
je     245f <test+0x5f>
call   22e0 <link_failure_lroundf@plt>
fldt   0x14(%rsp)
fstpt  (%rsp)
call   2240 <lroundl@plt>
cmp    %rbp,%rax
je     2475 <test+0x75>
call   2310 <link_failure_lroundl@plt>
movaps 0x50(%rsp),%xmm0
call   21b0 <llround@plt>
cmp    %rbp,%rax
je     2489 <test+0x89>
call   20b0 <link_failure_llround@plt>
movaps 0x20(%rsp),%xmm0
call   2230 <llroundf@plt>
cmp    %rbx,%rax
je     249d <test+0x9d>
call   22c0 <link_failure_llroundf@plt>
fldt   0x14(%rsp)
fstpt  (%rsp)
call   2220 <llroundl@plt>
cmp    %rbp,%rax
je     24b3 <test+0xb3>
call   22b0 <link_failure_llroundl@plt>
movaps 0x50(%rsp),%xmm0
call   21f0 <lrint@plt>
cmp    %rbp,%rax
je     24c7 <test+0xc7>
call   22a0 <link_failure_lrint@plt>
movaps 0x20(%rsp),%xmm0
call   2090 <lrintf@plt>
cmp    %rbx,%rax
je     24db <test+0xdb>
call   2180 <link_failure_lrintf@plt>
fldt   0x14(%rsp)
fstpt  (%rsp)
call   2080 <lrintl@plt>
cmp    %rbp,%rax
je     24f1 <test+0xf1>
call   21a0 <link_failure_lrintl@plt>
movaps 0x50(%rsp),%xmm0
call   2070 <llrint@plt>
cmp    %rbp,%rax
je     2505 <test+0x105>
call   2100 <link_failure_llrint@plt>
movaps 0x20(%rsp),%xmm0
call   2190 <llrintf@plt>
cmp    %rbx,%rax
je     2519 <test+0x119>
call   20a0 <link_failure_llrintf@plt>
fldt   0x14(%rsp)
fstpt  (%rsp)
call   2270 <llrintl@plt>
cmp    %rbp,%rax
je     252f <test+0x12f>
call   2060 <link_failure_llrintl@plt>
flds   0xacb(%rip)
fstpt  0x30(%rsp)
mov    $0x1,%al
test   %al,%al
jne    2544 <test+0x144>
call   20f0 <link_failure_FP_REAL_CST@plt>
flds   0xab6(%rip)
fstpt  (%rsp)
call   2240 <lroundl@plt>
cmp    $0x5,%rax
je     255d <test+0x15d>
call   2140 <link_failure_fixed_REAL_CST@plt>
flds   0xa9d(%rip)
fldt   0x30(%rsp)
fucomip %st(1),%st
fstp   %st(0)
jne    256f <test+0x16f>
jnp    2574 <test+0x174>
call   2150 <link_failure_FP_REAL_CSTf@plt>
flds   0xa86(%rip)
fstpt  (%rsp)
call   2240 <lroundl@plt>
cmp    $0x5,%rax
je     258d <test+0x18d>
call   21e0 <link_failure_fixed_REAL_CSTf@plt>
flds   0xa6d(%rip)
fldt   0x30(%rsp)
fucomip %st(1),%st
fstp   %st(0)
jne    259f <test+0x19f>
jnp    25a4 <test+0x1a4>
call   2170 <link_failure_FP_REAL_CSTl@plt>
flds   0xa56(%rip)
fstpt  (%rsp)
call   2240 <lroundl@plt>
cmp    $0x5,%rax
je     25bd <test+0x1bd>
call   2120 <link_failure_fixed_REAL_CSTl@plt>
fldt   0x14(%rsp)
fstpt  (%rsp)
call   2240 <lroundl@plt>
cmp    %rbp,%rax
je     25d3 <test+0x1d3>
call   2050 <link_failure_fixed_FLOAT_EXPR@plt>
movaps 0x20(%rsp),%xmm0
movss  %xmm0,0x70(%rsp)
flds   0x70(%rsp)
fld    %st(0)
fstpt  0x30(%rsp)
fstpt  (%rsp)
call   2260 <ceill@plt>
fldt   0x30(%rsp)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    25fe <test+0x1fe>
jnp    2603 <test+0x203>
call   22f0 <link_failure_FP_FLOAT_EXPRf@plt>
fldt   0x30(%rsp)
fstpt  (%rsp)
call   2240 <lroundl@plt>
cmp    %rbx,%rax
je     2619 <test+0x219>
call   2320 <link_failure_fixed_FLOAT_EXPRf@plt>
fldt   0x14(%rsp)
fstpt  (%rsp)
call   2240 <lroundl@plt>
cmp    %rbp,%rax
je     262f <test+0x22f>
call   2030 <link_failure_fixed_FLOAT_EXPRl@plt>
movaps 0x9da(%rip),%xmm0
andps  0x50(%rsp),%xmm0
movaps %xmm0,0xa0(%rsp)
movlps %xmm0,0x98(%rsp)
fldl   0x98(%rsp)
fld    %st(0)
fstpt  0x30(%rsp)
fstpt  (%rsp)
call   2260 <ceill@plt>
fldt   0x30(%rsp)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    266e <test+0x26e>
jnp    2673 <test+0x273>
call   2110 <link_failure_FP_ABS_EXPR@plt>
fldt   0x30(%rsp)
fstpt  (%rsp)
call   2240 <lroundl@plt>
cvttsd2si 0xa0(%rsp),%rcx
cmp    %rcx,%rax
je     2693 <test+0x293>
call   2130 <link_failure_fixed_ABS_EXPR@plt>
movaps 0x20(%rsp),%xmm0
andps  0x981(%rip),%xmm0
movaps %xmm0,0x20(%rsp)
movss  %xmm0,0x6c(%rsp)
flds   0x6c(%rsp)
fld    %st(0)
fstpt  0x30(%rsp)
fstpt  (%rsp)
call   2260 <ceill@plt>
fldt   0x30(%rsp)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    26ca <test+0x2ca>
jnp    26cf <test+0x2cf>
call   21c0 <link_failure_FP_ABS_EXPRf@plt>
fldt   0x30(%rsp)
fstpt  (%rsp)
call   2240 <lroundl@plt>
cvttss2si 0x20(%rsp),%rcx
cmp    %rcx,%rax
je     26ec <test+0x2ec>
call   21d0 <link_failure_fixed_ABS_EXPRf@plt>
fldt   0x14(%rsp)
fabs
fld    %st(0)
fstpt  0x20(%rsp)
fstpt  (%rsp)
call   2260 <ceill@plt>
fldt   0x20(%rsp)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    270e <test+0x30e>
jnp    2713 <test+0x313>
call   20d0 <link_failure_FP_ABS_EXPRl@plt>
fldt   0x20(%rsp)
fstpt  (%rsp)
call   2240 <lroundl@plt>
fnstcw 0x12(%rsp)
movzwl 0x12(%rsp),%ecx
or     $0xc00,%ecx
mov    %cx,0x4e(%rsp)
fldcw  0x4e(%rsp)
fldt   0x20(%rsp)
fistpll 0x90(%rsp)
fldcw  0x12(%rsp)
cmp    0x90(%rsp),%rax
je     2755 <test+0x355>
call   2200 <link_failure_fixed_ABS_EXPRl@plt>
xorps  %xmm0,%xmm0
cvtsi2sd %r14d,%xmm0
movsd  %xmm0,0x20(%rsp)
mov    %r14d,0x68(%rsp)
fildl  0x68(%rsp)
fstpt  (%rsp)
call   2240 <lroundl@plt>
movslq %r14d,%rcx
cmp    %rcx,%rax
je     2781 <test+0x381>
call   2290 <link_failure_fixed_COMPOUND_EXPR@plt>
movapd 0x50(%rsp),%xmm0
addsd  0x20(%rsp),%xmm0
movapd %xmm0,0x30(%rsp)
movsd  %xmm0,0x88(%rsp)
fldl   0x88(%rsp)
fld    %st(0)
fstpt  0x14(%rsp)
fstpt  (%rsp)
call   2260 <ceill@plt>
fldt   0x14(%rsp)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    27bf <test+0x3bf>
jnp    27c4 <test+0x3c4>
call   2210 <link_failure_FP_PLUS_EXPR@plt>
fldt   0x14(%rsp)
fstpt  (%rsp)
call   2240 <lroundl@plt>
cvttsd2si 0x30(%rsp),%rcx
cmp    %rcx,%rax
je     27e1 <test+0x3e1>
call   20e0 <link_failure_fixed_PLUS_EXPR@plt>
movapd 0x50(%rsp),%xmm0
subsd  0x20(%rsp),%xmm0
movapd %xmm0,0x30(%rsp)
movsd  %xmm0,0x80(%rsp)
fldl   0x80(%rsp)
fld    %st(0)
fstpt  0x14(%rsp)
fstpt  (%rsp)
call   2260 <ceill@plt>
fldt   0x14(%rsp)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    281f <test+0x41f>
jnp    2824 <test+0x424>
call   22d0 <link_failure_FP_MINUS_EXPR@plt>
fldt   0x14(%rsp)
fstpt  (%rsp)
call   2240 <lroundl@plt>
cvttsd2si 0x30(%rsp),%rcx
cmp    %rcx,%rax
je     2841 <test+0x441>
call   2160 <link_failure_fixed_MINUS_EXPR@plt>
movapd 0x50(%rsp),%xmm0
mulsd  0x20(%rsp),%xmm0
movapd %xmm0,0x50(%rsp)
movsd  %xmm0,0x78(%rsp)
fldl   0x78(%rsp)
fld    %st(0)
fstpt  0x20(%rsp)
fstpt  (%rsp)
call   2260 <ceill@plt>
fldt   0x20(%rsp)
fxch   %st(1)
fucomip %st(1),%st
fstp   %st(0)
jne    2879 <test+0x479>
jnp    287e <test+0x47e>
call   2280 <link_failure_FP_MULT_EXPR@plt>
fldt   0x20(%rsp)
fstpt  (%rsp)
call   2240 <lroundl@plt>
cvttsd2si 0x50(%rsp),%rcx
add    $0xb0,%rsp
cmp    %rcx,%rax
jne    28a2 <test+0x4a2>
pop    %rbx
pop    %r14
pop    %rbp
ret
pop    %rbx
pop    %r14
pop    %rbp
jmp    2040 <link_failure_fixed_MULT_EXPR@plt>

LLVM IR (-O0):
define void @test(i32 %0, i32 %1) {
%3 = alloca i32
%4 = alloca i32
store i32 %0, i32* %3
store i32 %1, i32* %4
%5 = load i32, i32* %3
%6 = sitofp i32 %5 to double
%7 = call double @llvm.ceil.f64(double %6)
%8 = load i32, i32* %3
%9 = sitofp i32 %8 to double
%10 = fcmp une double %7, %9
br i1 %10, label %11, label %12
11: ; preds = %2
br label %12
12: ; preds = %11, %2
%13 = load i32, i32* %3
%14 = sitofp i32 %13 to float
%15 = call float @llvm.ceil.f32(float %14)
%16 = load i32, i32* %3
%17 = sitofp i32 %16 to float
%18 = fcmp une float %15, %17
br i1 %18, label %19, label %20
19: ; preds = %12
br label %20
20: ; preds = %19, %12
%21 = load i32, i32* %3
%22 = sitofp i32 %21 to x86_fp80
%23 = call x86_fp80 @llvm.ceil.f80(x86_fp80 %22)
%24 = load i32, i32* %3
%25 = sitofp i32 %24 to x86_fp80
%26 = fcmp une x86_fp80 %23, %25
br i1 %26, label %27, label %28
27: ; preds = %20
br label %28
28: ; preds = %27, %20
%29 = load i32, i32* %3
%30 = sitofp i32 %29 to double
%31 = call double @llvm.floor.f64(double %30)
%32 = load i32, i32* %3
%33 = sitofp i32 %32 to double
%34 = fcmp une double %31, %33
br i1 %34, label %35, label %36
35: ; preds = %28
br label %36
36: ; preds = %35, %28
%37 = load i32, i32* %3
%38 = sitofp i32 %37 to float
%39 = call float @llvm.floor.f32(float %38)
%40 = load i32, i32* %3
%41 = sitofp i32 %40 to float
%42 = fcmp une float %39, %41
br i1 %42, label %43, label %44
43: ; preds = %36
br label %44
44: ; preds = %43, %36
%45 = load i32, i32* %3
%46 = sitofp i32 %45 to x86_fp80
%47 = call x86_fp80 @llvm.floor.f80(x86_fp80 %46)
%48 = load i32, i32* %3
%49 = sitofp i32 %48 to x86_fp80
%50 = fcmp une x86_fp80 %47, %49
br i1 %50, label %51, label %52
51: ; preds = %44
br label %52
52: ; preds = %51, %44
%53 = load i32, i32* %3
%54 = sitofp i32 %53 to double
%55 = call double @llvm.nearbyint.f64(double %54)
%56 = load i32, i32* %3
%57 = sitofp i32 %56 to double
%58 = fcmp une double %55, %57
br i1 %58, label %59, label %60
59: ; preds = %52
br label %60
60: ; preds = %59, %52
%61 = load i32, i32* %3
%62 = sitofp i32 %61 to float
%63 = call float @llvm.nearbyint.f32(float %62)
%64 = load i32, i32* %3
%65 = sitofp i32 %64 to float
%66 = fcmp une float %63, %65
br i1 %66, label %67, label %68
67: ; preds = %60
br label %68
68: ; preds = %67, %60
%69 = load i32, i32* %3
%70 = sitofp i32 %69 to x86_fp80
%71 = call x86_fp80 @llvm.nearbyint.f80(x86_fp80 %70)
%72 = load i32, i32* %3
%73 = sitofp i32 %72 to x86_fp80
%74 = fcmp une x86_fp80 %71, %73
br i1 %74, label %75, label %76
75: ; preds = %68
br label %76
76: ; preds = %75, %68
%77 = load i32, i32* %3
%78 = sitofp i32 %77 to double
%79 = call double @llvm.rint.f64(double %78)
%80 = load i32, i32* %3
%81 = sitofp i32 %80 to double
%82 = fcmp une double %79, %81
br i1 %82, label %83, label %84
83: ; preds = %76
br label %84
84: ; preds = %83, %76
%85 = load i32, i32* %3
%86 = sitofp i32 %85 to float
%87 = call float @llvm.rint.f32(float %86)
%88 = load i32, i32* %3
%89 = sitofp i32 %88 to float
%90 = fcmp une float %87, %89
br i1 %90, label %91, label %92
91: ; preds = %84
br label %92
92: ; preds = %91, %84
%93 = load i32, i32* %3
%94 = sitofp i32 %93 to x86_fp80
%95 = call x86_fp80 @llvm.rint.f80(x86_fp80 %94)
%96 = load i32, i32* %3
%97 = sitofp i32 %96 to x86_fp80
%98 = fcmp une x86_fp80 %95, %97
br i1 %98, label %99, label %100
99: ; preds = %92
br label %100
100: ; preds = %99, %92
%101 = load i32, i32* %3
%102 = sitofp i32 %101 to double
%103 = call double @llvm.round.f64(double %102)
%104 = load i32, i32* %3
%105 = sitofp i32 %104 to double
%106 = fcmp une double %103, %105
br i1 %106, label %107, label %108
107: ; preds = %100
br label %108
108: ; preds = %107, %100
%109 = load i32, i32* %3
%110 = sitofp i32 %109 to float
%111 = call float @llvm.round.f32(float %110)
%112 = load i32, i32* %3
%113 = sitofp i32 %112 to float
%114 = fcmp une float %111, %113
br i1 %114, label %115, label %116
115: ; preds = %108
br label %116
116: ; preds = %115, %108
%117 = load i32, i32* %3
%118 = sitofp i32 %117 to x86_fp80
%119 = call x86_fp80 @llvm.round.f80(x86_fp80 %118)
%120 = load i32, i32* %3
%121 = sitofp i32 %120 to x86_fp80
%122 = fcmp une x86_fp80 %119, %121
br i1 %122, label %123, label %124
123: ; preds = %116
br label %124
124: ; preds = %123, %116
%125 = load i32, i32* %3
%126 = sitofp i32 %125 to double
%127 = call double @llvm.trunc.f64(double %126)
%128 = load i32, i32* %3
%129 = sitofp i32 %128 to double
%130 = fcmp une double %127, %129
br i1 %130, label %131, label %132
131: ; preds = %124
br label %132
132: ; preds = %131, %124
%133 = load i32, i32* %3
%134 = sitofp i32 %133 to float
%135 = call float @llvm.trunc.f32(float %134)
%136 = load i32, i32* %3
%137 = sitofp i32 %136 to float
%138 = fcmp une float %135, %137
br i1 %138, label %139, label %140
139: ; preds = %132
br label %140
140: ; preds = %139, %132
%141 = load i32, i32* %3
%142 = sitofp i32 %141 to x86_fp80
%143 = call x86_fp80 @llvm.trunc.f80(x86_fp80 %142)
%144 = load i32, i32* %3
%145 = sitofp i32 %144 to x86_fp80
%146 = fcmp une x86_fp80 %143, %145
br i1 %146, label %147, label %148
147: ; preds = %140
br label %148
148: ; preds = %147, %140
%149 = load i32, i32* %3
%150 = sitofp i32 %149 to double
%151 = call i64 @lround(double %150)
%152 = load i32, i32* %3
%153 = sitofp i32 %152 to double
%154 = fptosi double %153 to i64
%155 = icmp ne i64 %151, %154
br i1 %155, label %156, label %157
156: ; preds = %148
br label %157
157: ; preds = %156, %148
%158 = load i32, i32* %3
%159 = sitofp i32 %158 to float
%160 = call i64 @lroundf(float %159)
%161 = load i32, i32* %3
%162 = sitofp i32 %161 to float
%163 = fptosi float %162 to i64
%164 = icmp ne i64 %160, %163
br i1 %164, label %165, label %166
165: ; preds = %157
br label %166
166: ; preds = %165, %157
%167 = load i32, i32* %3
%168 = sitofp i32 %167 to x86_fp80
%169 = call i64 @lroundl(x86_fp80 %168)
%170 = load i32, i32* %3
%171 = sitofp i32 %170 to x86_fp80
%172 = fptosi x86_fp80 %171 to i64
%173 = icmp ne i64 %169, %172
br i1 %173, label %174, label %175
174: ; preds = %166
br label %175
175: ; preds = %174, %166
%176 = load i32, i32* %3
%177 = sitofp i32 %176 to double
%178 = call i64 @llround(double %177)
%179 = load i32, i32* %3
%180 = sitofp i32 %179 to double
%181 = fptosi double %180 to i64
%182 = icmp ne i64 %178, %181
br i1 %182, label %183, label %184
183: ; preds = %175
br label %184
184: ; preds = %183, %175
%185 = load i32, i32* %3
%186 = sitofp i32 %185 to float
%187 = call i64 @llroundf(float %186)
%188 = load i32, i32* %3
%189 = sitofp i32 %188 to float
%190 = fptosi float %189 to i64
%191 = icmp ne i64 %187, %190
br i1 %191, label %192, label %193
192: ; preds = %184
br label %193
193: ; preds = %192, %184
%194 = load i32, i32* %3
%195 = sitofp i32 %194 to x86_fp80
%196 = call i64 @llroundl(x86_fp80 %195)
%197 = load i32, i32* %3
%198 = sitofp i32 %197 to x86_fp80
%199 = fptosi x86_fp80 %198 to i64
%200 = icmp ne i64 %196, %199
br i1 %200, label %201, label %202
201: ; preds = %193
br label %202
202: ; preds = %201, %193
%203 = load i32, i32* %3
%204 = sitofp i32 %203 to double
%205 = call i64 @lrint(double %204)
%206 = load i32, i32* %3
%207 = sitofp i32 %206 to double
%208 = fptosi double %207 to i64
%209 = icmp ne i64 %205, %208
br i1 %209, label %210, label %211
210: ; preds = %202
br label %211
211: ; preds = %210, %202
%212 = load i32, i32* %3
%213 = sitofp i32 %212 to float
%214 = call i64 @lrintf(float %213)
%215 = load i32, i32* %3
%216 = sitofp i32 %215 to float
%217 = fptosi float %216 to i64
%218 = icmp ne i64 %214, %217
br i1 %218, label %219, label %220
219: ; preds = %211
br label %220
220: ; preds = %219, %211
%221 = load i32, i32* %3
%222 = sitofp i32 %221 to x86_fp80
%223 = call i64 @lrintl(x86_fp80 %222)
%224 = load i32, i32* %3
%225 = sitofp i32 %224 to x86_fp80
%226 = fptosi x86_fp80 %225 to i64
%227 = icmp ne i64 %223, %226
br i1 %227, label %228, label %229
228: ; preds = %220
br label %229
229: ; preds = %228, %220
%230 = load i32, i32* %3
%231 = sitofp i32 %230 to double
%232 = call i64 @llrint(double %231)
%233 = load i32, i32* %3
%234 = sitofp i32 %233 to double
%235 = fptosi double %234 to i64
%236 = icmp ne i64 %232, %235
br i1 %236, label %237, label %238
237: ; preds = %229
br label %238
238: ; preds = %237, %229
%239 = load i32, i32* %3
%240 = sitofp i32 %239 to float
%241 = call i64 @llrintf(float %240)
%242 = load i32, i32* %3
%243 = sitofp i32 %242 to float
%244 = fptosi float %243 to i64
%245 = icmp ne i64 %241, %244
br i1 %245, label %246, label %247
246: ; preds = %238
br label %247
247: ; preds = %246, %238
%248 = load i32, i32* %3
%249 = sitofp i32 %248 to x86_fp80
%250 = call i64 @llrintl(x86_fp80 %249)
%251 = load i32, i32* %3
%252 = sitofp i32 %251 to x86_fp80
%253 = fptosi x86_fp80 %252 to i64
%254 = icmp ne i64 %250, %253
br i1 %254, label %255, label %256
255: ; preds = %247
br label %256
256: ; preds = %255, %247
%257 = call x86_fp80 @llvm.ceil.f80(x86_fp80 0xK4001A000000000000000)
%258 = fcmp une x86_fp80 %257, 0xK4001A000000000000000
br i1 %258, label %259, label %260
259: ; preds = %256
br label %260
260: ; preds = %259, %256
%261 = call i64 @lroundl(x86_fp80 0xK4001A000000000000000)
%262 = icmp ne i64 %261, 5
br i1 %262, label %263, label %264
263: ; preds = %260
br label %264
264: ; preds = %263, %260
%265 = call x86_fp80 @llvm.ceil.f80(x86_fp80 0xK4001A000000000000000)
%266 = fcmp une x86_fp80 %265, 0xK4001A000000000000000
br i1 %266, label %267, label %268
267: ; preds = %264
br label %268
268: ; preds = %267, %264
%269 = call i64 @lroundl(x86_fp80 0xK4001A000000000000000)
%270 = icmp ne i64 %269, 5
br i1 %270, label %271, label %272
271: ; preds = %268
br label %272
272: ; preds = %271, %268
%273 = call x86_fp80 @llvm.ceil.f80(x86_fp80 0xK4001A000000000000000)
%274 = fcmp une x86_fp80 %273, 0xK4001A000000000000000
br i1 %274, label %275, label %276
275: ; preds = %272
br label %276
276: ; preds = %275, %272
%277 = call i64 @lroundl(x86_fp80 0xK4001A000000000000000)
%278 = icmp ne i64 %277, 5
br i1 %278, label %279, label %280
279: ; preds = %276
br label %280
280: ; preds = %279, %276
%281 = load i32, i32* %3
%282 = sitofp i32 %281 to double
%283 = fpext double %282 to x86_fp80
%284 = call x86_fp80 @llvm.ceil.f80(x86_fp80 %283)
%285 = load i32, i32* %3
%286 = sitofp i32 %285 to double
%287 = fpext double %286 to x86_fp80
%288 = fcmp une x86_fp80 %284, %287
br i1 %288, label %289, label %290
289: ; preds = %280
br label %290
290: ; preds = %289, %280
%291 = load i32, i32* %3
%292 = sitofp i32 %291 to double
%293 = fpext double %292 to x86_fp80
%294 = call i64 @lroundl(x86_fp80 %293)
%295 = load i32, i32* %3
%296 = sitofp i32 %295 to double
%297 = fpext double %296 to x86_fp80
%298 = fptosi x86_fp80 %297 to i64
%299 = icmp ne i64 %294, %298
br i1 %299, label %300, label %301
300: ; preds = %290
br label %301
301: ; preds = %300, %290
%302 = load i32, i32* %3
%303 = sitofp i32 %302 to float
%304 = fpext float %303 to x86_fp80
%305 = call x86_fp80 @llvm.ceil.f80(x86_fp80 %304)
%306 = load i32, i32* %3
%307 = sitofp i32 %306 to float
%308 = fpext float %307 to x86_fp80
%309 = fcmp une x86_fp80 %305, %308
br i1 %309, label %310, label %311
310: ; preds = %301
br label %311
311: ; preds = %310, %301
%312 = load i32, i32* %3
%313 = sitofp i32 %312 to float
%314 = fpext float %313 to x86_fp80
%315 = call i64 @lroundl(x86_fp80 %314)
%316 = load i32, i32* %3
%317 = sitofp i32 %316 to float
%318 = fpext float %317 to x86_fp80
%319 = fptosi x86_fp80 %318 to i64
%320 = icmp ne i64 %315, %319
br i1 %320, label %321, label %322
321: ; preds = %311
br label %322
322: ; preds = %321, %311
%323 = load i32, i32* %3
%324 = sitofp i32 %323 to x86_fp80
%325 = call x86_fp80 @llvm.ceil.f80(x86_fp80 %324)
%326 = load i32, i32* %3
%327 = sitofp i32 %326 to x86_fp80
%328 = fcmp une x86_fp80 %325, %327
br i1 %328, label %329, label %330
329: ; preds = %322
br label %330
330: ; preds = %329, %322
%331 = load i32, i32* %3
%332 = sitofp i32 %331 to x86_fp80
%333 = call i64 @lroundl(x86_fp80 %332)
%334 = load i32, i32* %3
%335 = sitofp i32 %334 to x86_fp80
%336 = fptosi x86_fp80 %335 to i64
%337 = icmp ne i64 %333, %336
br i1 %337, label %338, label %339
338: ; preds = %330
br label %339
339: ; preds = %338, %330
%340 = load i32, i32* %3
%341 = sitofp i32 %340 to double
%342 = call double @llvm.fabs.f64(double %341)
%343 = fpext double %342 to x86_fp80
%344 = call x86_fp80 @llvm.ceil.f80(x86_fp80 %343)
%345 = load i32, i32* %3
%346 = sitofp i32 %345 to double
%347 = call double @llvm.fabs.f64(double %346)
%348 = fpext double %347 to x86_fp80
%349 = fcmp une x86_fp80 %344, %348
br i1 %349, label %350, label %351
350: ; preds = %339
br label %351
351: ; preds = %350, %339
%352 = load i32, i32* %3
%353 = sitofp i32 %352 to double
%354 = call double @llvm.fabs.f64(double %353)
%355 = fpext double %354 to x86_fp80
%356 = call i64 @lroundl(x86_fp80 %355)
%357 = load i32, i32* %3
%358 = sitofp i32 %357 to double
%359 = call double @llvm.fabs.f64(double %358)
%360 = fpext double %359 to x86_fp80
%361 = fptosi x86_fp80 %360 to i64
%362 = icmp ne i64 %356, %361
br i1 %362, label %363, label %364
363: ; preds = %351
br label %364
364: ; preds = %363, %351
%365 = load i32, i32* %3
%366 = sitofp i32 %365 to float
%367 = call float @llvm.fabs.f32(float %366)
%368 = fpext float %367 to x86_fp80
%369 = call x86_fp80 @llvm.ceil.f80(x86_fp80 %368)
%370 = load i32, i32* %3
%371 = sitofp i32 %370 to float
%372 = call float @llvm.fabs.f32(float %371)
%373 = fpext float %372 to x86_fp80
%374 = fcmp une x86_fp80 %369, %373
br i1 %374, label %375, label %376
375: ; preds = %364
br label %376
376: ; preds = %375, %364
%377 = load i32, i32* %3
%378 = sitofp i32 %377 to float
%379 = call float @llvm.fabs.f32(float %378)
%380 = fpext float %379 to x86_fp80
%381 = call i64 @lroundl(x86_fp80 %380)
%382 = load i32, i32* %3
%383 = sitofp i32 %382 to float
%384 = call float @llvm.fabs.f32(float %383)
%385 = fpext float %384 to x86_fp80
%386 = fptosi x86_fp80 %385 to i64
%387 = icmp ne i64 %381, %386
br i1 %387, label %388, label %389
388: ; preds = %376
br label %389
389: ; preds = %388, %376
%390 = load i32, i32* %3
%391 = sitofp i32 %390 to x86_fp80
%392 = call x86_fp80 @llvm.fabs.f80(x86_fp80 %391)
%393 = call x86_fp80 @llvm.ceil.f80(x86_fp80 %392)
%394 = load i32, i32* %3
%395 = sitofp i32 %394 to x86_fp80
%396 = call x86_fp80 @llvm.fabs.f80(x86_fp80 %395)
%397 = fcmp une x86_fp80 %393, %396
br i1 %397, label %398, label %399
398: ; preds = %389
br label %399
399: ; preds = %398, %389
%400 = load i32, i32* %3
%401 = sitofp i32 %400 to x86_fp80
%402 = call x86_fp80 @llvm.fabs.f80(x86_fp80 %401)
%403 = call i64 @lroundl(x86_fp80 %402)
%404 = load i32, i32* %3
%405 = sitofp i32 %404 to x86_fp80
%406 = call x86_fp80 @llvm.fabs.f80(x86_fp80 %405)
%407 = fptosi x86_fp80 %406 to i64
%408 = icmp ne i64 %403, %407
br i1 %408, label %409, label %410
409: ; preds = %399
br label %410
410: ; preds = %409, %399
%411 = load i32, i32* %3
%412 = load i32, i32* %4
%413 = sitofp i32 %412 to double
%414 = fpext double %413 to x86_fp80
%415 = call x86_fp80 @llvm.ceil.f80(x86_fp80 %414)
%416 = load i32, i32* %3
%417 = load i32, i32* %4
%418 = sitofp i32 %417 to double
%419 = fpext double %418 to x86_fp80
%420 = fcmp une x86_fp80 %415, %419
br i1 %420, label %421, label %422
421: ; preds = %410
br label %422
422: ; preds = %421, %410
%423 = load i32, i32* %3
%424 = load i32, i32* %4
%425 = sitofp i32 %424 to double
%426 = fpext double %425 to x86_fp80
%427 = call i64 @lroundl(x86_fp80 %426)
%428 = load i32, i32* %3
%429 = load i32, i32* %4
%430 = sitofp i32 %429 to double
%431 = fpext double %430 to x86_fp80
%432 = fptosi x86_fp80 %431 to i64
%433 = icmp ne i64 %427, %432
br i1 %433, label %434, label %435
434: ; preds = %422
br label %435
435: ; preds = %434, %422
%436 = load i32, i32* %3
%437 = sitofp i32 %436 to double
%438 = load i32, i32* %4
%439 = sitofp i32 %438 to double
%440 = fadd double %437, %439
%441 = fpext double %440 to x86_fp80
%442 = call x86_fp80 @llvm.ceil.f80(x86_fp80 %441)
%443 = load i32, i32* %3
%444 = sitofp i32 %443 to double
%445 = load i32, i32* %4
%446 = sitofp i32 %445 to double
%447 = fadd double %444, %446
%448 = fpext double %447 to x86_fp80
%449 = fcmp une x86_fp80 %442, %448
br i1 %449, label %450, label %451
450: ; preds = %435
br label %451
451: ; preds = %450, %435
%452 = load i32, i32* %3
%453 = sitofp i32 %452 to double
%454 = load i32, i32* %4
%455 = sitofp i32 %454 to double
%456 = fadd double %453, %455
%457 = fpext double %456 to x86_fp80
%458 = call i64 @lroundl(x86_fp80 %457)
%459 = load i32, i32* %3
%460 = sitofp i32 %459 to double
%461 = load i32, i32* %4
%462 = sitofp i32 %461 to double
%463 = fadd double %460, %462
%464 = fpext double %463 to x86_fp80
%465 = fptosi x86_fp80 %464 to i64
%466 = icmp ne i64 %458, %465
br i1 %466, label %467, label %468
467: ; preds = %451
br label %468
468: ; preds = %467, %451
%469 = load i32, i32* %3
%470 = sitofp i32 %469 to double
%471 = load i32, i32* %4
%472 = sitofp i32 %471 to double
%473 = fsub double %470, %472
%474 = fpext double %473 to x86_fp80
%475 = call x86_fp80 @llvm.ceil.f80(x86_fp80 %474)
%476 = load i32, i32* %3
%477 = sitofp i32 %476 to double
%478 = load i32, i32* %4
%479 = sitofp i32 %478 to double
%480 = fsub double %477, %479
%481 = fpext double %480 to x86_fp80
%482 = fcmp une x86_fp80 %475, %481
br i1 %482, label %483, label %484
483: ; preds = %468
br label %484
484: ; preds = %483, %468
%485 = load i32, i32* %3
%486 = sitofp i32 %485 to double
%487 = load i32, i32* %4
%488 = sitofp i32 %487 to double
%489 = fsub double %486, %488
%490 = fpext double %489 to x86_fp80
%491 = call i64 @lroundl(x86_fp80 %490)
%492 = load i32, i32* %3
%493 = sitofp i32 %492 to double
%494 = load i32, i32* %4
%495 = sitofp i32 %494 to double
%496 = fsub double %493, %495
%497 = fpext double %496 to x86_fp80
%498 = fptosi x86_fp80 %497 to i64
%499 = icmp ne i64 %491, %498
br i1 %499, label %500, label %501
500: ; preds = %484
br label %501
501: ; preds = %500, %484
%502 = load i32, i32* %3
%503 = sitofp i32 %502 to double
%504 = load i32, i32* %4
%505 = sitofp i32 %504 to double
%506 = fmul double %503, %505
%507 = fpext double %506 to x86_fp80
%508 = call x86_fp80 @llvm.ceil.f80(x86_fp80 %507)
%509 = load i32, i32* %3
%510 = sitofp i32 %509 to double
%511 = load i32, i32* %4
%512 = sitofp i32 %511 to double
%513 = fmul double %510, %512
%514 = fpext double %513 to x86_fp80
%515 = fcmp une x86_fp80 %508, %514
br i1 %515, label %516, label %517
516: ; preds = %501
br label %517
517: ; preds = %516, %501
%518 = load i32, i32* %3
%519 = sitofp i32 %518 to double
%520 = load i32, i32* %4
%521 = sitofp i32 %520 to double
%522 = fmul double %519, %521
%523 = fpext double %522 to x86_fp80
%524 = call i64 @lroundl(x86_fp80 %523)
%525 = load i32, i32* %3
%526 = sitofp i32 %525 to double
%527 = load i32, i32* %4
%528 = sitofp i32 %527 to double
%529 = fmul double %526, %528
%530 = fpext double %529 to x86_fp80
%531 = fptosi x86_fp80 %530 to i64
%532 = icmp ne i64 %524, %531
br i1 %532, label %533, label %534
533: ; preds = %517
br label %534
534: ; preds = %533, %517
ret void
}

LLVM IR (-O2):
define void @test(i32 %0, i32 %1) {
%3 = sitofp i32 %0 to double
%4 = sitofp i32 %0 to float
%5 = sitofp i32 %0 to x86_fp80
%6 = tail call i64 @lround(double %3)
%7 = sext i32 %0 to i64
%8 = icmp eq i64 %6, %7
br i1 %8, label %10, label %9
9: ; preds = %2
tail call void @link_failure_lround()
br label %10
10: ; preds = %9, %2
%11 = tail call i64 @lroundf(float %4)
%12 = fptosi float %4 to i64
%13 = icmp eq i64 %11, %12
br i1 %13, label %15, label %14
14: ; preds = %10
tail call void @link_failure_lroundf()
br label %15
15: ; preds = %14, %10
%16 = tail call i64 @lroundl(x86_fp80 %5)
%17 = icmp eq i64 %16, %7
br i1 %17, label %19, label %18
18: ; preds = %15
tail call void @link_failure_lroundl()
br label %19
19: ; preds = %18, %15
%20 = tail call i64 @llround(double %3)
%21 = icmp eq i64 %20, %7
br i1 %21, label %23, label %22
22: ; preds = %19
tail call void @link_failure_llround()
br label %23
23: ; preds = %22, %19
%24 = tail call i64 @llroundf(float %4)
%25 = icmp eq i64 %24, %12
br i1 %25, label %27, label %26
26: ; preds = %23
tail call void @link_failure_llroundf()
br label %27
27: ; preds = %26, %23
%28 = tail call i64 @llroundl(x86_fp80 %5)
%29 = icmp eq i64 %28, %7
br i1 %29, label %31, label %30
30: ; preds = %27
tail call void @link_failure_llroundl()
br label %31
31: ; preds = %30, %27
%32 = tail call i64 @lrint(double %3)
%33 = icmp eq i64 %32, %7
br i1 %33, label %35, label %34
34: ; preds = %31
tail call void @link_failure_lrint()
br label %35
35: ; preds = %34, %31
%36 = tail call i64 @lrintf(float %4)
%37 = icmp eq i64 %36, %12
br i1 %37, label %39, label %38
38: ; preds = %35
tail call void @link_failure_lrintf()
br label %39
39: ; preds = %38, %35
%40 = tail call i64 @lrintl(x86_fp80 %5)
%41 = icmp eq i64 %40, %7
br i1 %41, label %43, label %42
42: ; preds = %39
tail call void @link_failure_lrintl()
br label %43
43: ; preds = %42, %39
%44 = tail call i64 @llrint(double %3)
%45 = icmp eq i64 %44, %7
br i1 %45, label %47, label %46
46: ; preds = %43
tail call void @link_failure_llrint()
br label %47
47: ; preds = %46, %43
%48 = tail call i64 @llrintf(float %4)
%49 = icmp eq i64 %48, %12
br i1 %49, label %51, label %50
50: ; preds = %47
tail call void @link_failure_llrintf()
br label %51
51: ; preds = %50, %47
%52 = tail call i64 @llrintl(x86_fp80 %5)
%53 = icmp eq i64 %52, %7
br i1 %53, label %55, label %54
54: ; preds = %51
tail call void @link_failure_llrintl()
br label %55
55: ; preds = %54, %51
%56 = tail call x86_fp80 @llvm.ceil.f80(x86_fp80 0xK4001A000000000000000)
%57 = fcmp une x86_fp80 %56, 0xK4001A000000000000000
br i1 %57, label %58, label %59
58: ; preds = %55
tail call void @link_failure_FP_REAL_CST()
br label %59
59: ; preds = %58, %55
%60 = tail call i64 @lroundl(x86_fp80 0xK4001A000000000000000)
%61 = icmp eq i64 %60, 5
br i1 %61, label %63, label %62
62: ; preds = %59
tail call void @link_failure_fixed_REAL_CST()
br label %63
63: ; preds = %62, %59
br i1 %57, label %64, label %65
64: ; preds = %63
tail call void @link_failure_FP_REAL_CSTf()
br label %65
65: ; preds = %64, %63
%66 = tail call i64 @lroundl(x86_fp80 0xK4001A000000000000000)
%67 = icmp eq i64 %66, 5
br i1 %67, label %69, label %68
68: ; preds = %65
tail call void @link_failure_fixed_REAL_CSTf()
br label %69
69: ; preds = %68, %65
br i1 %57, label %70, label %71
70: ; preds = %69
tail call void @link_failure_FP_REAL_CSTl()
br label %71
71: ; preds = %70, %69
%72 = tail call i64 @lroundl(x86_fp80 0xK4001A000000000000000)
%73 = icmp eq i64 %72, 5
br i1 %73, label %75, label %74
74: ; preds = %71
tail call void @link_failure_fixed_REAL_CSTl()
br label %75
75: ; preds = %74, %71
%76 = tail call i64 @lroundl(x86_fp80 %5)
%77 = icmp eq i64 %76, %7
br i1 %77, label %79, label %78
78: ; preds = %75
tail call void @link_failure_fixed_FLOAT_EXPR()
br label %79
79: ; preds = %78, %75
%80 = fpext float %4 to x86_fp80
%81 = tail call x86_fp80 @llvm.ceil.f80(x86_fp80 %80)
%82 = fcmp une x86_fp80 %81, %80
br i1 %82, label %83, label %84
83: ; preds = %79
tail call void @link_failure_FP_FLOAT_EXPRf()
br label %84
84: ; preds = %83, %79
%85 = tail call i64 @lroundl(x86_fp80 %80)
%86 = icmp eq i64 %85, %12
br i1 %86, label %88, label %87
87: ; preds = %84
tail call void @link_failure_fixed_FLOAT_EXPRf()
br label %88
88: ; preds = %84, %87
%89 = tail call i64 @lroundl(x86_fp80 %5)
%90 = icmp eq i64 %89, %7
br i1 %90, label %92, label %91
91: ; preds = %88
tail call void @link_failure_fixed_FLOAT_EXPRl()
br label %92
92: ; preds = %91, %88
%93 = tail call double @llvm.fabs.f64(double %3)
%94 = fpext double %93 to x86_fp80
%95 = tail call x86_fp80 @llvm.ceil.f80(x86_fp80 %94)
%96 = fcmp une x86_fp80 %95, %94
br i1 %96, label %97, label %98
97: ; preds = %92
tail call void @link_failure_FP_ABS_EXPR()
br label %98
98: ; preds = %97, %92
%99 = tail call i64 @lroundl(x86_fp80 %94)
%100 = fptosi double %93 to i64
%101 = icmp eq i64 %99, %100
br i1 %101, label %103, label %102
102: ; preds = %98
tail call void @link_failure_fixed_ABS_EXPR()
br label %103
103: ; preds = %102, %98
%104 = tail call float @llvm.fabs.f32(float %4)
%105 = fpext float %104 to x86_fp80
%106 = tail call x86_fp80 @llvm.ceil.f80(x86_fp80 %105)
%107 = fcmp une x86_fp80 %106, %105
br i1 %107, label %108, label %109
108: ; preds = %103
tail call void @link_failure_FP_ABS_EXPRf()
br label %109
109: ; preds = %108, %103
%110 = tail call i64 @lroundl(x86_fp80 %105)
%111 = fptosi float %104 to i64
%112 = icmp eq i64 %110, %111
br i1 %112, label %114, label %113
113: ; preds = %109
tail call void @link_failure_fixed_ABS_EXPRf()
br label %114
114: ; preds = %113, %109
%115 = tail call x86_fp80 @llvm.fabs.f80(x86_fp80 %5)
%116 = tail call x86_fp80 @llvm.ceil.f80(x86_fp80 %115)
%117 = fcmp une x86_fp80 %116, %115
br i1 %117, label %118, label %119
118: ; preds = %114
tail call void @link_failure_FP_ABS_EXPRl()
br label %119
119: ; preds = %118, %114
%120 = tail call i64 @lroundl(x86_fp80 %115)
%121 = fptosi x86_fp80 %115 to i64
%122 = icmp eq i64 %120, %121
br i1 %122, label %124, label %123
123: ; preds = %119
tail call void @link_failure_fixed_ABS_EXPRl()
br label %124
124: ; preds = %123, %119
%125 = sitofp i32 %1 to double
%126 = sitofp i32 %1 to x86_fp80
%127 = tail call i64 @lroundl(x86_fp80 %126)
%128 = sext i32 %1 to i64
%129 = icmp eq i64 %127, %128
br i1 %129, label %131, label %130
130: ; preds = %124
tail call void @link_failure_fixed_COMPOUND_EXPR()
br label %131
131: ; preds = %130, %124
%132 = fadd double %3, %125
%133 = fpext double %132 to x86_fp80
%134 = tail call x86_fp80 @llvm.ceil.f80(x86_fp80 %133)
%135 = fcmp une x86_fp80 %134, %133
br i1 %135, label %136, label %137
136: ; preds = %131
tail call void @link_failure_FP_PLUS_EXPR()
br label %137
137: ; preds = %136, %131
%138 = tail call i64 @lroundl(x86_fp80 %133)
%139 = fptosi double %132 to i64
%140 = icmp eq i64 %138, %139
br i1 %140, label %142, label %141
141: ; preds = %137
tail call void @link_failure_fixed_PLUS_EXPR()
br label %142
142: ; preds = %141, %137
%143 = fsub double %3, %125
%144 = fpext double %143 to x86_fp80
%145 = tail call x86_fp80 @llvm.ceil.f80(x86_fp80 %144)
%146 = fcmp une x86_fp80 %145, %144
br i1 %146, label %147, label %148
147: ; preds = %142
tail call void @link_failure_FP_MINUS_EXPR()
br label %148
148: ; preds = %147, %142
%149 = tail call i64 @lroundl(x86_fp80 %144)
%150 = fptosi double %143 to i64
%151 = icmp eq i64 %149, %150
br i1 %151, label %153, label %152
152: ; preds = %148
tail call void @link_failure_fixed_MINUS_EXPR()
br label %153
153: ; preds = %152, %148
%154 = fmul double %3, %125
%155 = fpext double %154 to x86_fp80
%156 = tail call x86_fp80 @llvm.ceil.f80(x86_fp80 %155)
%157 = fcmp une x86_fp80 %156, %155
br i1 %157, label %158, label %159
158: ; preds = %153
tail call void @link_failure_FP_MULT_EXPR()
br label %159
159: ; preds = %158, %153
%160 = tail call i64 @lroundl(x86_fp80 %155)
%161 = fptosi double %154 to i64
%162 = icmp eq i64 %160, %161
br i1 %162, label %164, label %163
163: ; preds = %159
tail call void @link_failure_fixed_MULT_EXPR()
br label %164
164: ; preds = %163, %159
ret void
}