Go to file
Nicolai Haehnle 870bf1788c [InstCombine] try to fold (select C, (sext A), B) into logical ops
Summary:
Turn (select C, (sext A), B) into (sext (select C, A, B')) when A is i1 and
B is a compatible constant, also for zext instead of sext. This will then be
further folded into logical operations.

The transformation would be valid for non-i1 types as well, but other parts of
InstCombine prefer to have sext from non-i1 as an operand of select.

Motivated by the shader compiler frontend in Mesa for AMDGPU, which emits i32
for boolean operations. With this change, the boolean logic is fully
recovered.

Reviewers: majnemer, spatel, tstellarAMD

Subscribers: llvm-commits

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

llvm-svn: 277801
2016-08-05 08:22:29 +00:00
clang Fix crash in template type diffing. 2016-08-05 03:16:36 +00:00
clang-tools-extra [clang-tidy] misc-argument-comment non-strict mode 2016-08-04 14:54:54 +00:00
compiler-rt Reverting r277632 as it breaks the build on MacOS. 2016-08-05 03:18:27 +00:00
debuginfo-tests
libclc Make min follow the OCL 1.0 specs 2016-07-25 22:36:22 +00:00
libcxx Add MSVC specifics to .gitignore. Patch from STL@microsoft.com 2016-08-03 05:51:19 +00:00
libcxxabi Attempt to bring peace to -Werror buildbots. 2016-07-19 20:35:09 +00:00
libunwind libunwind: correct return code in unwinding trace log message 2016-07-29 21:24:19 +00:00
lld Simplify. NFC. 2016-08-05 01:25:45 +00:00
lldb Change the indexing done for kernel/kext directories to be recursive. 2016-08-05 00:44:34 +00:00
llgo [llgo] add llgo source path to LLVM_GO_PACKAGES 2016-07-27 03:01:00 +00:00
llvm [InstCombine] try to fold (select C, (sext A), B) into logical ops 2016-08-05 08:22:29 +00:00
openmp Add test case for nested creation of tasks 2016-08-04 14:55:56 +00:00
parallel-libs [StreamExecutor] Add KernelLoaderSpec 2016-08-03 18:04:13 +00:00
polly Add missing 'REQUIRES' line 2016-08-05 07:08:45 +00:00