LLVM backend for 6502
Go to file
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
autoconf Modify the unittests Makefiles so that they don't rebuild parts of LLVM just to 2009-01-04 23:12:21 +00:00
bindings Rename getABITypeSize to getTypePaddedSize, as 2009-01-12 20:38:59 +00:00
cmake CMake: replace `rm' with portable invocations of cmake. 2009-01-07 19:24:44 +00:00
docs Support for multi-valued options in CommandLine 2009-01-16 22:54:19 +00:00
examples reapply Sanjiv's patch to genericize memcpy/memset/memmove to take an 2008-11-21 16:42:48 +00:00
include introduce typedef for complicated vector, and use it too 2009-01-17 00:09:08 +00:00
lib Implement a special algorithm for converting uint_to_fp for i32 values on 2009-01-17 03:56:04 +00:00
projects Add "sample" documentation to sample project. 2008-09-15 05:31:29 +00:00
runtime Fixing the stack walker. 2008-01-24 05:16:36 +00:00
test Simplify extract element of a scalar to vector. 2009-01-17 00:07:25 +00:00
tools Registry.h should not depend on CommandLine.h. 2009-01-16 07:02:28 +00:00
unittests Fix naming of file. 2009-01-11 01:25:51 +00:00
utils Avoid triggering an assertion failure when an instruction pattern 2009-01-16 21:30:55 +00:00
website Prepare for "core" website. 2007-08-03 05:43:35 +00:00
win32 Rename AddReadAttrs to FunctionAttrs, and teach it how 2008-12-31 16:14:43 +00:00
Xcode Remove Stacker.html from Xcode project. 2008-10-14 23:23:59 +00:00
build-for-llvm-top.sh Allow the configure options to be set according to the llvm-top options. 2007-08-31 19:53:42 +00:00
CMakeLists.txt CMake: Option for building with -fPIC. 2008-11-20 19:13:51 +00:00
configure Regenerate. 2009-01-04 23:12:30 +00:00
CREDITS.TXT * Moved author attribution to CREDITS.TXT 2009-01-08 16:40:25 +00:00
LICENSE.TXT Renamed Google Test license file from COPYING to LICENSE.TXT to match LLVM 2009-01-05 17:42:15 +00:00
llvm.spec.in * llvm.spec.in: update blurb 2007-07-13 09:48:29 +00:00
Makefile Removed trailing whitespace. 2009-01-08 02:11:55 +00:00
Makefile.common Removed trailing whitespace from Makefiles. 2009-01-09 16:44:42 +00:00
Makefile.config.in Removed trailing whitespace from Makefiles. 2009-01-09 16:44:42 +00:00
Makefile.rules Support llvmc plugins in out-of-tree projects. 2009-01-09 16:31:01 +00:00
ModuleInfo.txt Update to include clean and install commands. 2007-07-20 20:54:41 +00:00
README.txt Remove extra lines 2008-07-28 20:50:25 +00:00

Low Level Virtual Machine (LLVM)
================================

This directory and its subdirectories contain source code for the Low Level 
Virtual Machine, a toolkit for the construction of highly optimized compilers,
optimizers, and runtime environments. 

LLVM is open source software. You may freely distribute it under the terms of
the license agreement found in LICENSE.txt.

Please see the HTML documentation provided in docs/index.html for further
assistance with LLVM.