Skip to content
  • Dale Johannesen's avatar
    Fix uint64->{float, double} conversion to do rounding correctly in 32-bit. · 3a366a88
    Dale Johannesen authored
    The implementation in LegalizeIntegerTypes to handle this as 
    sint64->float + appropriate power of 2 is subject to double rounding,
    considered incorrect by numerics people.  Use this implementation only
    when it is safe.  This leads to using library calls in some cases
    that produced inline code before, but it's correct now.
    (EVTToAPFloatSemantics belongs somewhere else, any suggestions?)
    
    Add a correctly rounding (though not particularly fast) conversion
    that uses X87 80-bit computations for x86-32.
    
    7885399, 5901940.  This shows up in gcc.c-torture/execute/ieee/rbug.c
    in the gcc testsuite on some platforms.
    
    llvm-svn: 103883
    3a366a88
Loading