LLVM backend for 6502
Go to file
Chandler Carruth 7782102c70 Use standard promotion for i8 CTTZ nodes and i8 CTLZ nodes when the
LZCNT instructions are available. Force promotion to i32 to get
a smaller encoding since the fix-ups necessary are just as complex for
either promoted type

We can't do standard promotion for CTLZ when lowering through BSR
because it results in poor code surrounding the 'xor' at the end of this
instruction. Essentially, if we promote the entire CTLZ node to i32, we
end up doing the xor on a 32-bit CTLZ implementation, and then
subtracting appropriately to get back to an i8 value. Instead, our
custom logic just uses the knowledge of the incoming size to compute
a perfect xor. I'd love to know of a way to fix this, but so far I'm
drawing a blank. I suspect the legalizer could be more clever and/or it
could collude with the DAG combiner, but how... ;]

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147251 91177308-0d34-0410-b5e6-96231b3b80d8
2011-12-24 12:12:34 +00:00
autoconf Attempt #2 to fix mingw crossbuild. This time with more ugly hacks! 2011-12-22 22:50:44 +00:00
bindings drop unneeded config.h includes 2011-12-22 23:04:07 +00:00
cmake Use 'check_symbol_exists' instead of 'check_function_exists' for finding isatty. This change allows Xcode generated projects to have HAVE_ISATTY to be properly defined. 2011-12-23 01:31:45 +00:00
docs Add a few lines to the release notes: 2011-12-20 08:02:50 +00:00
examples LLVMBuild: Remove trailing newline, which irked me. 2011-12-12 19:48:00 +00:00
include Move x86 specific bits of the COFF writer to lib/Target/X86. 2011-12-24 02:14:02 +00:00
lib Use standard promotion for i8 CTTZ nodes and i8 CTLZ nodes when the 2011-12-24 12:12:34 +00:00
projects Hexagon backend support 2011-12-12 21:14:40 +00:00
runtime LLVMBuild: Remove trailing newline, which irked me. 2011-12-12 19:48:00 +00:00
test Use standard promotion for i8 CTTZ nodes and i8 CTLZ nodes when the 2011-12-24 12:12:34 +00:00
tools drop unneeded config.h includes 2011-12-22 23:04:07 +00:00
unittests Some unittests for APInt rotates; patch by Cameron McInally. 2011-12-22 22:11:19 +00:00
utils ARM VFP assembly parsing and encoding for VCVT(float <--> fixed point). 2011-12-22 22:19:05 +00:00
.gitignore git: Add tools/lldb to the ignore list. 2011-11-10 22:55:50 +00:00
CMakeLists.txt capitalize project name, reference bugzilla 2011-12-18 18:50:16 +00:00
configure Attempt #2 to fix mingw crossbuild. This time with more ugly hacks! 2011-12-22 22:50:44 +00:00
CREDITS.TXT
LICENSE.TXT
llvm.spec.in
LLVMBuild.txt LLVMBuild: Introduce a common section which currently has a list of the 2011-12-12 22:45:54 +00:00
Makefile llvm-config: Replace with C++ version (was llvm-config-2). 2011-12-01 20:18:09 +00:00
Makefile.common
Makefile.config.in capitalize project name, reference bugzilla 2011-12-18 18:50:16 +00:00
Makefile.rules Reenable building with -fvisibility-inlines-hidden. 2011-12-22 21:41:32 +00:00
README.txt Undo test commit 2011-11-22 20:05:48 +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.