LLVM backend for 6502
Go to file
Chris Lattner 20a35c3fa5 Teach the codegen to turn [aez]ext (setcc) -> selectcc of 1/0, which often
allows other simplifications.  For example, this compiles:
int isnegative(unsigned int X) {
   return !(X < 2147483648U);
}

Into this code:

x86:
        movl 4(%esp), %eax
        shrl $31, %eax
        ret
arm:
        mov r0, r0, lsr #31
        bx lr
thumb:
        lsr r0, r0, #31
        bx lr

instead of:

x86:
        cmpl $0, 4(%esp)
        sets %al
        movzbl %al, %eax
        ret

arm:
        mov r3, #0
        cmp r0, #0
        movlt r3, #1
        mov r0, r3
        bx lr

thumb:
        mov r2, #1
        mov r1, #0
        cmp r0, #0
        blt LBB1_2      @entry
LBB1_1: @entry
        cpy r2, r1
LBB1_2: @entry
        cpy r0, r2
        bx lr

Testcase here: test/CodeGen/Generic/ispositive.ll


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35883 91177308-0d34-0410-b5e6-96231b3b80d8
2007-04-11 05:32:27 +00:00
autoconf Hack the shared library extension for dylib. The existing code just looks 2007-04-11 00:33:43 +00:00
docs Fix name of an intrinsic: bit.part_select -> part.select 2007-04-10 02:51:31 +00:00
examples Revert last patch. The examples build now. 2007-03-06 17:26:14 +00:00
include For PR1146: 2007-04-11 02:44:20 +00:00
lib Teach the codegen to turn [aez]ext (setcc) -> selectcc of 1/0, which often 2007-04-11 05:32:27 +00:00
projects avoid collision with /usr/bin/sample if this ever gets installed. 2007-02-18 03:03:41 +00:00
runtime crtend is only for llvm-gcc3, remove it. 2007-02-23 19:34:09 +00:00
test new testcase 2007-04-11 05:32:13 +00:00
tools For PR1146: 2007-04-11 02:44:20 +00:00
utils Correctly report version of GCC used. 2007-04-10 19:13:43 +00:00
win32 Track new header file. 2007-04-08 21:19:52 +00:00
Xcode Update project 2007-01-29 18:45:08 +00:00
.cvsignore Add llvm.spec, a generated file. 2006-10-18 19:23:56 +00:00
configure Hopefully fix LTDL_SHLIB_EXT on Darwin 2007-04-11 00:27:39 +00:00
CREDITS.TXT Add Roman to credits 2007-03-21 21:45:25 +00:00
LICENSE.TXT remove these. 2007-02-25 02:28:21 +00:00
llvm.spec.in Minor technical correction in documentation. 2006-08-21 01:58:57 +00:00
Makefile don't build runtime for now, ever 2007-03-29 18:14:00 +00:00
Makefile.common Update comments to reflect new variable names. Patch contributed by 2005-02-14 16:02:19 +00:00
Makefile.config.in For PR789: 2007-03-29 19:05:44 +00:00
Makefile.rules Speed up installation a bit by ignoring .svn directories. 2007-04-09 19:08:58 +00:00
README.txt Make the text of this file a little more useful. 2004-09-02 22:49:27 +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.