1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 11:42:57 +01:00
Go to file
Sanjay Patel ad6c7a9c3a [InstCombine] don't change the size of a select if it would mismatch its condition operands' sizes
Don't always:
cast (select (cmp x, y), z, C) --> select (cmp x, y), (cast z), C'

This is something that came up as far back as D26556, and I lost track of it. 
I suspect that this transform is part of the underlying problem that is 
inspiring some of the recent proposals that seek to match larger patterns 
that include a cast op. Even if that's not true, this transform causes
problems for codegen (particularly with vector types).

A transform to actively match the size of cmp and select operand sizes should
follow. This patch just removes the harmful canonicalization in the other
direction.

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

llvm-svn: 333611
2018-05-31 00:16:58 +00:00
bindings [LLVM-C] [OCaml] Remove LLVMAddBBVectorizePass 2018-05-28 16:58:10 +00:00
cmake Remove CMake workaround for LLD PR24476 which is no longer needed 2018-05-21 20:14:46 +00:00
docs Revert r333584: [lit] Report line number for failed RUN command 2018-05-30 21:07:27 +00:00
examples [ORC] Update JITCompileCallbackManager to support multi-threaded code. 2018-05-30 01:57:45 +00:00
include [IRBuilder] Add APIs for creating calls to atomic memmove and memset intrinsics. (NFC) 2018-05-30 20:02:56 +00:00
lib [InstCombine] don't change the size of a select if it would mismatch its condition operands' sizes 2018-05-31 00:16:58 +00:00
projects
resources
runtimes [CMake] Pass Clang defaults to runtimes builds 2018-05-22 00:43:04 +00:00
test [InstCombine] don't change the size of a select if it would mismatch its condition operands' sizes 2018-05-31 00:16:58 +00:00
tools [llvm-cov] Use the new PrintHTMLEscaped utility 2018-05-30 23:35:14 +00:00
unittests [ADT] Add unit test for PrintHTMLEscaped 2018-05-30 20:47:18 +00:00
utils Revert r333584: [lit] Report line number for failed RUN command 2018-05-30 21:07:27 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitattributes [DebugInfo] Add DILabel metadata and intrinsic llvm.dbg.label. 2018-05-09 02:40:45 +00:00
.gitignore
CMakeLists.txt [cmake] Add a switch to enable/disable bindings. 2018-05-20 08:37:54 +00:00
CODE_OWNERS.TXT [CODE_OWNERS] Update my email address. 2018-04-23 19:09:49 +00:00
configure
CREDITS.TXT Update my information in the CREDITS file. 2018-05-23 14:44:42 +00:00
LICENSE.TXT
llvm.spec.in
LLVMBuild.txt
README.txt
RELEASE_TESTERS.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.