LLVM backend for 6502
Go to file
Ahmed Bougacha bc47ceef43 [ARM] Don't break alignment when combining base updates into load/stores.
r223862/r224203 tried to also combine base-updating load/stores.
There was a mistake there: the alignment was added as is as an operand to
the ARMISD::VLD/VST node.  However, the VLD/VST selection logic doesn't care
about less-than-standard alignment attributes.
For example, no matter the alignment of a v2i64 load (say 1), SelectVLD picks
VLD1q64 (because of the memory type).  But VLD1q64 ("vld1.64 {dXX, dYY}") is
8-aligned, per ARMARMv7a 3.2.1.
For the 1-aligned load, what we really want is VLD1q8.

This commit introduces bitcasts if necessary, and changes the vld/vst type to
one whose standard alignment matches the original load/store alignment.

Differential Revision: http://reviews.llvm.org/D6759


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@224754 91177308-0d34-0410-b5e6-96231b3b80d8
2014-12-23 06:07:31 +00:00
autoconf Require python 2.7. 2014-12-12 15:29:31 +00:00
bindings Go bindings: introduce Value.ConstantAsMetadata. 2014-12-13 02:25:57 +00:00
cmake [cmake] Unbreak LLVM-Config.cmake / llvm_expand_dependencies. 2014-12-18 23:56:52 +00:00
docs IR: Make metadata typeless in assembly 2014-12-15 19:07:53 +00:00
examples Once more on the cmake build. nativecodegen->native on the dependencies. 2014-12-08 18:24:06 +00:00
include Fix UBSan bootstrap: don't bind reference to nullptr. 2014-12-23 04:15:47 +00:00
lib [ARM] Don't break alignment when combining base updates into load/stores. 2014-12-23 06:07:31 +00:00
projects
test [ARM] Don't break alignment when combining base updates into load/stores. 2014-12-23 06:07:31 +00:00
tools strnlen isn't available on some platforms, use StringRef instead 2014-12-20 08:24:43 +00:00
unittests [C API] Expose LLVMGetGlobalValueAddress and LLVMGetFunctionAddress. 2014-12-22 18:53:11 +00:00
utils Use iterators rather than indices to make this forwards-compatible with a change to the underlying container (to std::list) 2014-12-22 21:26:38 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitignore
CMakeLists.txt Adding a new option to CMake to disable C++ atexit on llvm-shlib. 2014-12-09 18:49:55 +00:00
CODE_OWNERS.TXT Add myself as SystemZ code owner 2014-12-18 19:27:50 +00:00
configure Require python 2.7. 2014-12-12 15:29:31 +00:00
CREDITS.TXT
LICENSE.TXT
llvm.spec.in
LLVMBuild.txt
Makefile
Makefile.common
Makefile.config.in Add a check for misbehaving -Wcomment from gcc-4.7 and add 2014-11-05 00:35:15 +00:00
Makefile.rules Add a check for misbehaving -Wcomment from gcc-4.7 and add 2014-11-05 00:35:15 +00:00
README.txt [TEST-COMMIT] As per Developer Policy, Added a blank line. 2014-12-06 00:38:39 +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 documentation provided in docs/ for further
assistance with LLVM, and in particular docs/GettingStarted.rst for getting
started with LLVM and docs/README.txt for an overview of LLVM's
documentation setup.

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