llvm-6502/lib
Bill Wendling 8b8a636843 Implement a special algorithm for converting uint_to_fp for i32 values on
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.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62404 91177308-0d34-0410-b5e6-96231b3b80d8
2009-01-17 03:56:04 +00:00
..
Analysis speed up iterative loop by using iterators. changes direction, but functionally equivalent 2009-01-17 00:14:25 +00:00
Archive Add the private linkage. 2009-01-15 20:18:42 +00:00
AsmParser Add the private linkage. 2009-01-15 20:18:42 +00:00
Bitcode use specialized accessor instead of plain getOperand(0) 2009-01-16 18:40:27 +00:00
CodeGen Simplify extract element of a scalar to vector. 2009-01-17 00:07:25 +00:00
Debugger Removed trailing whitespace from Makefiles. 2009-01-09 16:44:42 +00:00
ExecutionEngine don't assert and die on out of range (undefined) shifts. This fixes 2009-01-16 20:17:02 +00:00
Linker Add the private linkage. 2009-01-15 20:18:42 +00:00
Support Support for multi-valued options in CommandLine 2009-01-16 22:54:19 +00:00
System Removed trailing whitespace from Makefiles. 2009-01-09 16:44:42 +00:00
Target Implement a special algorithm for converting uint_to_fp for i32 values on 2009-01-17 03:56:04 +00:00
Transforms introduce typedef for complicated vector, and use it too 2009-01-17 00:09:08 +00:00
VMCore Add the private linkage. 2009-01-15 20:18:42 +00:00
Makefile Removed trailing whitespace from Makefiles. 2009-01-09 16:44:42 +00:00