llvm-project/llvm
Mikhail Maltsev 68f35bcc85 [ARM] Do not convert some vmov instructions
Summary:
Patch https://reviews.llvm.org/D44467 implements conversion of invalid
vmov instructions into valid ones. It turned out that some valid
instructions also get converted, for example

  vmov.i64 d2, #0xff00ff00ff00ff00 ->
  vmov.i16 d2, #0xff00

Such behavior is incorrect because according to the ARM ARM section
F2.7.7 Modified immediate constants in T32 and A32 Advanced SIMD
instructions, "On assembly, the data type must be matched in the table
if possible."

This patch fixes the isNEONmovReplicate check so that the above
instruction is not modified any more.

Reviewers: rengolin, olista01

Reviewed By: rengolin

Subscribers: javed.absar, kristof.beyls, rogfer01, llvm-commits

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

llvm-svn: 329158
2018-04-04 08:54:19 +00:00
..
bindings Fix Go IR test for changes in DIBuilder API 2018-04-02 21:45:35 +00:00
cmake Revert r329156 "Add llvm-exegesis tool." 2018-04-04 08:22:54 +00:00
docs Revert r329156 "Add llvm-exegesis tool." 2018-04-04 08:22:54 +00:00
examples [ORC] Create a new SymbolStringPool by default in ExecutionSession constructor. 2018-04-02 20:57:56 +00:00
include Revert r329156 "Add llvm-exegesis tool." 2018-04-04 08:22:54 +00:00
lib [ARM] Do not convert some vmov instructions 2018-04-04 08:54:19 +00:00
projects
resources
runtimes
test [ARM] Do not convert some vmov instructions 2018-04-04 08:54:19 +00:00
tools Revert r329156 "Add llvm-exegesis tool." 2018-04-04 08:22:54 +00:00
unittests Revert r329156 "Add llvm-exegesis tool." 2018-04-04 08:22:54 +00:00
utils 'cat' command for internal shell - Support Python 3 2018-04-03 22:38:25 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitattributes
.gitignore
CMakeLists.txt Assume existence of inttypes.h and stdint.h in DataTypes.h. 2018-04-02 13:22:26 +00:00
CODE_OWNERS.TXT
CREDITS.TXT
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.