llvm-project/llvm
Craig Topper 242374e219 [X86] Don't remove sign extend of gather/scatter indices during SelectionDAGBuilder.
The sign extend might be from an i16 or i8 type and was inserted by InstCombine to match the pointer width. X86 gather legalization isn't currently detecting this to reinsert a sign extend to make things legal.

It's a bit weird for the SelectionDAGBuilder to do this kind of optimization in the first place. With this removed we can at least lean on InstCombine somewhat to ensure the index is i32 or i64.

I'll work on trying to recover some of the test cases by removing sign extends in the backend when its safe to do so with an understanding of the current legalizer capabilities.

This should fix PR30690.

llvm-svn: 318466
2017-11-16 23:08:57 +00:00
..
bindings Update go bindings to use new functions from rL317135. 2017-11-02 10:22:26 +00:00
cmake [globalisel][tablegen] Generate rule coverage and use it to identify untested rules 2017-11-16 00:46:35 +00:00
docs [libFuzzer] add docs for -reduce_inputs 2017-11-16 18:58:14 +00:00
examples
include [Support] Support NetBSD PaX MPROTECT in sys::Memory. 2017-11-16 23:04:44 +00:00
lib [X86] Don't remove sign extend of gather/scatter indices during SelectionDAGBuilder. 2017-11-16 23:08:57 +00:00
projects Resubmit "Refactor debuginfo-tests" 2017-11-16 18:26:20 +00:00
resources
runtimes [CMake][runtimes] Use cmake_parse_arguments in runtimes functions 2017-11-16 21:28:54 +00:00
test [X86] Don't remove sign extend of gather/scatter indices during SelectionDAGBuilder. 2017-11-16 23:08:57 +00:00
tools [Support] Support NetBSD PaX MPROTECT in sys::Memory. 2017-11-16 23:04:44 +00:00
unittests [DebugInfo/PDB] Adding getUndecoratedNameEx and IPDB interfaces for IDiaEnumTables and IDiaTable. 2017-11-16 14:33:09 +00:00
utils Resubmit "Refactor debuginfo-tests" 2017-11-16 18:26:20 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitignore
CMakeLists.txt Resubmit "Refactor debuginfo-tests" 2017-11-16 18:26:20 +00:00
CODE_OWNERS.TXT Update my email addresses, NFC. 2017-10-26 10:16:54 +00:00
CREDITS.TXT
LICENSE.TXT
LLVMBuild.txt
README.txt
RELEASE_TESTERS.TXT Update my email addresses, NFC. 2017-10-26 10:16:54 +00:00
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.