LLVM backend for 6502
Go to file
Evan Cheng c4af4638df Remove ARM isel hacks that fold large immediates into a pair of add, sub, and,
and xor. The 32-bit move immediates can be hoisted out of loops by machine
LICM but the isel hacks were preventing them.

Instead, let peephole optimization pass recognize registers that are defined by
immediates and the ARM target hook will fold the immediates in.

Other changes include 1) do not fold and / xor into cmp to isel TST / TEQ
instructions if there are multiple uses. This happens when the 'and' is live
out, machine sink would have sinked the computation and that ends up pessimizing
code. The peephole pass would recognize situations where the 'and' can be
toggled to define CPSR and eliminate the comparison anyway.

2) Move peephole pass to after machine LICM, sink, and CSE to avoid blocking
important optimizations.

rdar://8663787, rdar://8241368


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@119548 91177308-0d34-0410-b5e6-96231b3b80d8
2010-11-17 20:13:28 +00:00
autoconf fix the autoconf script to detect "has asmprinter"ness of a target by 2010-11-14 19:10:47 +00:00
bindings Try to fix ocaml bindings. 2010-10-08 00:36:21 +00:00
cmake Revert inadvertant checkin of CMake libdeps. 2010-11-16 18:14:41 +00:00
docs add some justification for "using namespace llvm;" 2010-11-17 19:47:20 +00:00
examples Fix missing includes of "llvm/Analysis/Passes.h" in the tutorials. Thanks 2010-11-16 17:28:22 +00:00
include Remove ARM isel hacks that fold large immediates into a pair of add, sub, and, 2010-11-17 20:13:28 +00:00
lib Remove ARM isel hacks that fold large immediates into a pair of add, sub, and, 2010-11-17 20:13:28 +00:00
projects projects: Don't try to build libcxx if one happens to have it checked out into 2010-09-09 15:49:32 +00:00
runtime Rename 'libprofile/exported_symbols.lst' to 'libprofile/libprofile.exports'. 2010-09-03 15:42:45 +00:00
test Remove ARM isel hacks that fold large immediates into a pair of add, sub, and, 2010-11-17 20:13:28 +00:00
tools MCJIT: Stub out MCJIT implementation, still doesn't do anything useful. 2010-11-17 16:06:43 +00:00
unittests unittests/CMakeLists.txt: Add missing VMCore/ValueMapTest.cpp to VMCoreTests. 2010-11-14 12:37:51 +00:00
utils Remove ARM isel hacks that fold large immediates into a pair of add, sub, and, 2010-11-17 20:13:28 +00:00
website
build-for-llvm-top.sh Patch to build llvm with srcdir != objdir from 2009-01-23 08:42:38 +00:00
CMakeLists.txt Add LLVMObject Library. 2010-11-15 03:21:41 +00:00
configure fix the autoconf script to detect "has asmprinter"ness of a target by 2010-11-14 19:10:47 +00:00
CREDITS.TXT Convert a bunch of uses of 'bytecode' into 'bitcode'. This 2010-09-29 20:09:55 +00:00
LICENSE.TXT 2010 is upon us. 2010-01-09 18:40:31 +00:00
llvm.spec.in
Makefile Add --enable-docs. Patch by NAKAMURA Takumi. 2010-11-12 19:24:06 +00:00
Makefile.common Removed trailing whitespace from Makefiles. 2009-01-09 16:44:42 +00:00
Makefile.config.in Add --enable-docs. Patch by NAKAMURA Takumi. 2010-11-12 19:24:06 +00:00
Makefile.rules remove JIT support from the Alpha backend. The JIT will be moving to MC, 2010-11-14 18:24:41 +00:00
ModuleInfo.txt Remove trailing space. This is just an excuse to poke the 2010-10-05 20:32:15 +00:00
README.txt Undoing test commit blank space. 2010-09-29 17:39:29 +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.