LLVM backend for 6502
Go to file
Benjamin Kramer 66821d9020 InstCombine: Turn (zext A) == (B & (1<<X)-1) into A == (trunc B), narrowing the compare.
This saves a cast, and zext is more expensive on platforms with subreg support
than trunc is. This occurs in the BSD implementation of memchr(3), see PR12750.
On the synthetic benchmark from that bug stupid_memchr and bsd_memchr have the
same performance now when not inlining either function.

stupid_memchr: 323.0us
bsd_memchr: 321.0us
memchr: 479.0us

where memchr is the llvm-gcc compiled bsd_memchr from osx lion's libc. When
inlining is enabled bsd_memchr still regresses down to llvm-gcc memchr time,
I haven't fully understood the issue yet, something is grossly mangling the
loop after inlining.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158297 91177308-0d34-0410-b5e6-96231b3b80d8
2012-06-10 20:35:00 +00:00
autoconf Remove the PTX back-end and all of its artifacts (triple, etc.) 2012-05-24 21:38:21 +00:00
bindings
cmake cmake: Pass the -m32 flag to modules if LLVM_BUILD_32_BITS is enabled 2012-06-08 09:41:23 +00:00
docs [llvm-nm] Update documentation to cover object file support and arguments. 2012-06-06 23:34:10 +00:00
examples Fix typos found by http://github.com/lyda/misspell-check 2012-06-02 10:20:22 +00:00
include Add intrinsics for immediate form of XOP vprot instructions. Use i128mem instead of f128mem for integer XOP instructions. 2012-06-10 07:31:56 +00:00
lib InstCombine: Turn (zext A) == (B & (1<<X)-1) into A == (trunc B), narrowing the compare. 2012-06-10 20:35:00 +00:00
projects Remove the PTX back-end and all of its artifacts (triple, etc.) 2012-05-24 21:38:21 +00:00
runtime Small code cleanup. No functionality change. 2012-05-25 21:57:59 +00:00
test InstCombine: Turn (zext A) == (B & (1<<X)-1) into A == (trunc B), narrowing the compare. 2012-06-10 20:35:00 +00:00
tools [llvm-nm] Update documentation to cover object file support and arguments. 2012-06-06 23:34:10 +00:00
unittests Round 2 of dead private variable removal. 2012-06-06 19:47:08 +00:00
utils Sched itinerary fix: Avoid static initializers. 2012-06-08 18:25:47 +00:00
.gitignore Add tools/lld to .gitignore. 2012-05-02 21:25:32 +00:00
CMakeLists.txt Remove the PTX back-end and all of its artifacts (triple, etc.) 2012-05-24 21:38:21 +00:00
configure Remove the PTX back-end and all of its artifacts (triple, etc.) 2012-05-24 21:38:21 +00:00
CREDITS.TXT
LICENSE.TXT
llvm.spec.in
LLVMBuild.txt
Makefile Do not install llvm-config-host for cross-builds of clang. rdar://11317847 2012-05-09 00:07:02 +00:00
Makefile.common [docs] Remove unsupported references to ExtraSource variable. 2012-05-15 21:32:27 +00:00
Makefile.config.in - Added ExecutionEngine/MCJIT tests 2012-05-17 21:07:47 +00:00
Makefile.rules llvm-ld does not exist anymore, use llvm-link instead. 2012-05-23 20:34:19 +00:00
README.txt Testing commit access 2012-05-24 14:20:13 +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.