1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 19:12:56 +02:00
llvm-mirror/lib
Nicolai Haehnle 7286dd419e [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
..
Analysis [LV, X86] Be more optimistic about vectorizing shifts. 2016-08-04 22:48:03 +00:00
AsmParser Add writeonly IR attribute 2016-07-04 08:01:29 +00:00
Bitcode [ThinLTO] Address review comments from PGO indirect call promotion (NFC) 2016-07-18 18:31:50 +00:00
CodeGen GlobalISel: extend add widening to SUB, MUL, OR, AND and XOR. 2016-08-04 21:39:49 +00:00
DebugInfo [CodeView] Use llvm::Error instead of std::error_code. 2016-08-04 19:39:55 +00:00
ExecutionEngine [ExecutionEngine] Refactor - Roll JITSymbolFlags functionality into JITSymbol.h 2016-08-04 20:32:37 +00:00
Fuzzer [libFuzzer] extend the messages printed by afl_driver 2016-07-19 23:18:28 +00:00
IR [coroutines] Part 4[ab]: Coroutine Devirtualization: Lower coro.resume and coro.destroy. 2016-08-04 20:30:07 +00:00
IRReader
LibDriver Object: Replace NewArchiveIterator with a simpler NewArchiveMember class. NFCI. 2016-06-29 22:27:42 +00:00
LineEditor
Linker IR: New representation for CFI and virtual call optimization pass metadata. 2016-06-24 21:21:32 +00:00
LTO Move legacy LTO interface headers to legacy/ directory. 2016-07-14 21:21:16 +00:00
MC [mips] Set Personality and LSDA encoding for FreeBSD 2016-08-04 15:36:03 +00:00
Object Clean up the logic of the Archive::Child::Child() with an assert to know Err is not a nullptr 2016-08-04 21:54:19 +00:00
ObjectYAML BPF: Use official ELF e_machine value 2016-07-15 22:27:55 +00:00
Option Option parser: class for consuming a joined arg in addition to all remaining args 2016-04-15 00:23:30 +00:00
Passes [PM] Change the name of the repeating utility to something less 2016-08-04 03:52:53 +00:00
ProfileData [PGO] Make needsComdatForCounter() available (NFC) 2016-07-21 20:50:02 +00:00
Support Add unittests to {ARM | AArch64}TargetParser. 2016-07-28 06:11:18 +00:00
TableGen [TableGen] Autobrief-ize Record. NFC. 2016-07-14 14:53:14 +00:00
Target [LV, X86] Be more optimistic about vectorizing shifts. 2016-08-04 22:48:03 +00:00
Transforms [InstCombine] try to fold (select C, (sext A), B) into logical ops 2016-08-05 08:22:29 +00:00
CMakeLists.txt
LLVMBuild.txt