llvm-project/llvm
Sander de Smalen 20eede7093 [AArch64] Disallow vector operand if FPR128 Q register is required.
Patch https://reviews.llvm.org/D41445 changed the behaviour of 'isReg()'
to also return 'true' if the parsed register operand is a vector
register. Code in the AsmMatcher checks if a register is a subclass of the
expected register class. However, even though both parsed registers map
to the same physical register, the 'v' register is of kind 'NeonVector',
where 'q' is of type Scalar, where isSubclass() does not distinguish
between the two cases.

The solution is to use an AsmOperand instead of the register directly,
and use the PredicateMethod to distinguish the two operands.

This fixes for example:
  ldr v0, [x0]    // 'v0' is an invalid operand for this instruction
  ldr q0, [x0]    // valid

Reviewers: aemerson, Gerolf, SjoerdMeijer, javed.absar

Reviewed By: aemerson

Differential Revision: https://reviews.llvm.org/D46310

llvm-svn: 331755
2018-05-08 10:01:04 +00:00
..
bindings [bindings/go] Add Go bindings for volatile loads/stores 2018-05-04 15:14:00 +00:00
cmake Revert r330742: Let TableGen write output only if it changed, instead of doing so in cmake. 2018-05-07 23:41:48 +00:00
docs [XRay][compiler-rt+docs] Introduce __xray_log_init_mode(...). 2018-05-04 06:01:12 +00:00
examples s/LLVM_ON_WIN32/_WIN32/, llvm 2018-04-29 00:45:03 +00:00
include [MachineVerifier][GlobalISel] NFC, Improving MO printing and refactoring visitMachineInstrBefore 2018-05-07 22:31:12 +00:00
lib [AArch64] Disallow vector operand if FPR128 Q register is required. 2018-05-08 10:01:04 +00:00
projects
resources
runtimes [CMake] Enable warnings for runtimes 2018-04-27 15:10:50 +00:00
test [AArch64] Disallow vector operand if FPR128 Q register is required. 2018-05-08 10:01:04 +00:00
tools [llvm-rc] Don't strictly require quotes around external file names 2018-05-08 08:47:37 +00:00
unittests Re-land r331622 "[llvm-exegesis] Add a library to cluster benchmark results." 2018-05-07 09:09:48 +00:00
utils [globalisel] Update GlobalISel emitter to match new representation of extending loads 2018-05-05 20:53:24 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitattributes
.gitignore
CMakeLists.txt Remove LLVM_INSTALL_CCTOOLS_SYMLINKS 2018-04-24 15:41:02 +00:00
CODE_OWNERS.TXT [CODE_OWNERS] Update my email address. 2018-04-23 19:09:49 +00:00
CREDITS.TXT Update my email address and description. 2018-04-29 01:13:57 +00:00
LICENSE.TXT
LLVMBuild.txt
README.txt
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.