Something went wrong. Try again.
Cider Isn't Darwin Emulation, Really
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839// float rintf(float x)//// returns the argument rounded to an integral value using the prevailing// rounding mode. rintf is allowed to raise the "inexact" flag if the result// differs from the argument (C99 7.12.9.4).//// -- Stephen Canon, January 2010
.text.align 4.globl _rintf_rintf:#if defined __i386__ movl 4(%esp), %ecx movss 4(%esp), %xmm0#else movd %xmm0, %ecx#endif mov %ecx, %edx and $0x7fffffff, %ecx // |x| xor %ecx, %edx // signbit(x) movd %edx, %xmm1 cmp $0x4b000000, %ecx // if |x| >= 2^23 or isnan(x) jae L_xIsIntegral // then the result is just x cvtps2dq %xmm0, %xmm0 cvtdq2ps %xmm0, %xmm0 orps %xmm1, %xmm0 // restore signbit #if defined __i386__ movss %xmm0, 4(%esp)L_xIsIntegral: flds 4(%esp) ret#elseL_xIsIntegral: ret#endif