Skip to content
  • Bill Wendling's avatar
    Implement a special algorithm for converting uint_to_fp for i32 values on · 4d527590
    Bill Wendling authored
    X86. This code:
    
    void f() {
      uint32_t x;
      float y = (float)x;
    }
    
    used to be:
    
         movl     %eax, -8(%ebp)
         movl     [2^52 double], -4(%ebp)
         movsd    -8(%ebp), %xmm0
         subsd    [2^52 double], %xmm0
         cvtsd2ss %xmm0, %xmm0
    
    Is now:
    
       movsd        [2^52 double], %xmm0
       movsd        %xmm0, %xmm1
       movd         %ecx, %xmm2
       orps         %xmm2, %xmm1
       subsd        %xmm0, %xmm1
       cvtsd2ss     %xmm1, %xmm0
    
    This is faster on X86. Note that there's an extra load of %xmm0 into %xmm1. That
    will be fixed in a later coalescer fix.
    
    llvm-svn: 62404
    4d527590
Loading