The implementation of an float ordered <= looks buggy, but maybe I'm not reading the assembly right. This is lesf2vfp.S in compiler-rt, and it has this code:<div><span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: medium; "><pre style="word-wrap: break-word; white-space: pre-wrap; ">

// extern int __lesf2vfp(float a, float b);
//
// Returns one iff a <= b and neither is NaN.
// Uses Darwin calling convention where single precision arguments are passsed 
// like 32-bit ints
//
DEFINE_COMPILERRT_FUNCTION(__lesf2vfp)
        fmsr    s14, r0     // move from GPR 0 to float register
        fmsr    s15, r1     // move from GPR 1 to float register
        fcmps   s14, s15
        fmstat
        movls   r0, #1      // set result register to 1 if equal
        movhi   r0, #0
        bx      lr</pre><font class="Apple-style-span" face="arial"><span class="Apple-style-span" style="font-size: small;"><div><span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: medium; "><font class="Apple-style-span" face="arial"><span class="Apple-style-span" style="font-size: small;">If I read this right, the high bits of r0 are always cleared (by the movhi) while the low bits are conditionally set to 1 (by the movls), but there's nothing to clear the r0's low bits in the false case. Is this a bug or have I misunderstood the assembly?</span></font></span></div>

<div><span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: medium; "><font class="Apple-style-span" face="arial"><span class="Apple-style-span" style="font-size: small;"><br></span></font></span></div>

<div><span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: medium; "><font class="Apple-style-span" face="arial"><span class="Apple-style-span" style="font-size: small;">Nick</span></font></span></div>

<div><span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: medium; "><font class="Apple-style-span" face="arial"><span class="Apple-style-span" style="font-size: small;"><br></span></font></span></div>

</span></font></span></div>