hanchenye-llvm-project/llvm
Simon Pilgrim e054199354 [X86][SSE] Improve support for 128-bit vector sign extension
This patch improves support for sign extension of the lower lanes of vectors of integers by making use of the SSE41 pmovsx* sign extension instructions where possible, and optimizing the sign extension by shifts on pre-SSE41 targets (avoiding the use of i64 arithmetic shifts which require scalarization).

It converts SIGN_EXTEND nodes to SIGN_EXTEND_VECTOR_INREG where necessary, that more closely matches the pmovsx* instruction than the default approach of using SIGN_EXTEND_INREG which splits the operation (into an ANY_EXTEND lowered to a shuffle followed by shifts) making instruction matching difficult during lowering. Necessary support for SIGN_EXTEND_VECTOR_INREG has been added to the DAGCombiner.

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

llvm-svn: 237885
2015-05-21 10:05:03 +00:00
..
autoconf Deprecate in-source autotools builds 2015-05-04 02:04:54 +00:00
bindings IR: Give 'DI' prefix to debug info metadata 2015-04-29 16:38:44 +00:00
cmake Try to fix the build with MSVC 2015 by disabling sized deallocation 2015-05-19 23:28:23 +00:00
docs Document the CoreCLR GC Strategy 2015-05-21 00:50:10 +00:00
examples BrainF.cpp: Update CreateCall() according to r237624. 2015-05-19 06:50:19 +00:00
include AsmPrinter: Compute absolute label difference directly 2015-05-21 02:41:23 +00:00
lib [X86][SSE] Improve support for 128-bit vector sign extension 2015-05-21 10:05:03 +00:00
projects build: make libunwind a proper project 2015-04-25 01:47:39 +00:00
test [X86][SSE] Improve support for 128-bit vector sign extension 2015-05-21 10:05:03 +00:00
tools [DWARF parser] Make DWARF parser more robust against missing compile/type units. 2015-05-19 21:54:32 +00:00
unittests AsmParser: Require a terminating null character when creating memory buffer. 2015-05-20 20:41:27 +00:00
utils Improve check on git-svnrevert, better error message 2015-05-16 10:23:48 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitignore Ignore compile_commands.json only at the root of the tree. 2015-03-26 18:55:42 +00:00
CMakeLists.txt Enable solid lzma compression for cpack, decreases setup size by ~30% 2015-05-14 17:07:41 +00:00
CODE_OWNERS.TXT Added Andrey Churbanov as the owner of the OpenMP runtime library code 2015-05-05 20:17:53 +00:00
CREDITS.TXT
LICENSE.TXT
LLVMBuild.txt
Makefile
Makefile.common
Makefile.config.in Deprecate in-source autotools builds 2015-05-04 02:04:54 +00:00
Makefile.rules
README.txt Revert test commit at revision 233535. 2015-03-30 12:39:03 +00:00
configure Deprecate in-source autotools builds 2015-05-04 02:04:54 +00:00
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're writing a package for LLVM, see docs/Packaging.rst for our
suggestions.