llvm-project/llvm
Tim Northover 5bb87b6769 AArch64: fix 128-bit cmpxchg at -O0 (again, again).
This time the issue is fortunately just a simple mistake rather than a horrible
design spectre. I thought SUBS/SBCS provided sufficient NZCV flags for
comparing two 64-bit values, but they don't.

The fix is slightly clunkier in AArch64 because we can't use conditional
execution to emit a pair of CMPs. Traditionally an "icmp ne i128" would map to
an EOR/EOR/ORR/CBNZ, but that uses more registers so it's easier to go with a
CSET/CINC/CBNZ combination. Slightly less efficient, but this is -O0 anyway.

Thanks to Anton Korobeynikov for pointing out the issue.

llvm-svn: 288418
2016-12-01 21:31:59 +00:00
..
bindings Fix go binding to adapt the new attribute API 2016-11-18 10:11:02 +00:00
cmake cmake: Set rpath for loadable modules as well as shared libraries. 2016-11-28 21:59:14 +00:00
docs Revert 'Test commit as per developer policy' 2016-11-30 08:24:43 +00:00
examples ExceptionDemo: remove some undefined behaviour 2016-11-20 02:36:38 +00:00
include Improve documentation on MSVC workaround for AlignedCharArray (NFC) 2016-12-01 20:54:29 +00:00
lib AArch64: fix 128-bit cmpxchg at -O0 (again, again). 2016-12-01 21:31:59 +00:00
projects [CMake] Correct configuration order of the sub-projects based on ther dependancies 2016-10-09 20:38:29 +00:00
resources
runtimes [CMake] Make the runtimes directory work with bootstrap builds 2016-10-19 21:50:25 +00:00
test AArch64: fix 128-bit cmpxchg at -O0 (again, again). 2016-12-01 21:31:59 +00:00
tools Fix a bug with llvm-size and the -m option with multiple files not printing the file names. 2016-12-01 19:12:55 +00:00
unittests Use trigrams to speed up SpecialCaseList. 2016-12-01 02:54:54 +00:00
utils [tablegen] Delete duplicates from a vector without skipping elements 2016-12-01 19:38:50 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitignore
CMakeLists.txt Add link-time detection of LLVM_ABI_BREAKING_CHECKS mismatch 2016-11-28 22:23:53 +00:00
CODE_OWNERS.TXT CODE_OWNERS: Take ownership of Loop Strenght Reduce. 2016-11-30 19:55:49 +00:00
CREDITS.TXT Test Commit, removing a blank line in CREDITS.TXT 2016-11-24 15:40:19 +00:00
LICENSE.TXT
LLVMBuild.txt
README.txt Test commit, deleted empty line at the end of README.txt 2016-11-07 18:31:21 +00:00
RELEASE_TESTERS.TXT
configure
llvm.spec.in

README.txt

Low Level Virtual Machine (LLVM)
================================

This directory and its subdirectories contain source code for LLVM,
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 are writing a package for LLVM, see docs/Packaging.rst for our
suggestions.