LLVM backend for 6502
Go to file
Benjamin Kramer 1db071f0da Teach instcombine to transform
(X >s -1) ? C1 : C2 and (X <s  0) ? C2 : C1
into ((X >>s 31) & (C2 - C1)) + C1, avoiding the conditional.

This optimization could be extended to take non-const C1 and C2 but we better
stay conservative to avoid code size bloat for now.

for
int sel(int n) {
     return n >= 0 ? 60 : 100;
}

we now generate
  sarl  $31, %edi
  andl  $40, %edi
  leal  60(%rdi), %eax

instead of
  testl %edi, %edi
  movl  $60, %ecx
  movl  $100, %eax
  cmovnsl %ecx, %eax


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@107866 91177308-0d34-0410-b5e6-96231b3b80d8
2010-07-08 11:39:10 +00:00
autoconf Pull in the libCrashReporterClient.a information with a warning comment. 2010-06-28 18:25:51 +00:00
bindings Implement the "linker_private_weak" linkage type. This will be used for 2010-07-01 21:55:59 +00:00
cmake Don't link against libm and libpthread which don't exist in BeOS/Haiku. Also, 2010-06-23 06:48:34 +00:00
docs Tweak some docs now that the default build is called Debug+Asserts. 2010-07-08 08:27:18 +00:00
examples fix several bugs in the tutorial, patch by Kevin Kelley! 2010-06-21 22:51:14 +00:00
include Add TargetInstrInfo::copyPhysReg hook and use it from LowerSubregs. 2010-07-08 05:01:41 +00:00
lib Teach instcombine to transform 2010-07-08 11:39:10 +00:00
projects Testing subversion commit access 2010-02-23 15:11:17 +00:00
runtime Delete a blank line. 2010-04-16 13:32:55 +00:00
test Teach instcombine to transform 2010-07-08 11:39:10 +00:00
tools Implement the "linker_private_weak" linkage type. This will be used for 2010-07-01 21:55:59 +00:00
unittests ADT: Add DAGDeltaAlgorithm, which is a DAG minimization algorithm built on top of the standard 'delta debugging' algorithm. 2010-06-08 16:21:22 +00:00
utils Changes to ARM tail calls, mostly cosmetic. 2010-07-08 01:18:23 +00:00
website
build-for-llvm-top.sh
CMakeLists.txt Fix LLVM CMake PACKAGE_VERSION variable. 2010-06-25 16:29:14 +00:00
configure Pull in the libCrashReporterClient.a information with a warning comment. 2010-06-28 18:25:51 +00:00
CREDITS.TXT Adding the MicroBlaze backend. 2010-02-23 19:15:24 +00:00
LICENSE.TXT 2010 is upon us. 2010-01-09 18:40:31 +00:00
llvm.spec.in
Makefile Issue the warning about being slow whenever optimization is disabled, 2010-07-07 16:48:16 +00:00
Makefile.common
Makefile.config.in typo in comment, regeneration not necessary 2010-07-07 13:58:46 +00:00
Makefile.rules Rename "Release" builds as "Release+Asserts"; rename "Release-Asserts" 2010-07-07 07:48:00 +00:00
ModuleInfo.txt Patch to build llvm with srcdir != objdir from 2009-01-23 08:42:38 +00:00
README.txt Give packagers some advice about how to build LLVM so it's useful to 2010-02-26 00:54:42 +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.

If you're writing a package for LLVM, see docs/Packaging.html for our
suggestions.