1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-23 04:52:54 +02:00
llvm-mirror/test
Roman Lebedev adffa0d402 [DAGCombiner] Unfold scalar masked merge if profitable
Summary:
This is [[ https://bugs.llvm.org/show_bug.cgi?id=37104 | PR37104 ]].

[[ https://bugs.llvm.org/show_bug.cgi?id=6773 | PR6773 ]] will introduce an IR canonicalization that is likely bad for the end assembly.
Previously, `andl`+`andn`/`andps`+`andnps` / `bic`/`bsl` would be generated. (see `@out`)
Now, they would no longer be generated  (see `@in`).
So we need to make sure that they are still generated.

If the mask is constant, we do nothing. InstCombine should have unfolded it.
Else, i use `hasAndNot()` TLI hook.

For now, only handle scalars.

https://rise4fun.com/Alive/bO6

----

I *really* don't like the code i wrote in `DAGCombiner::unfoldMaskedMerge()`.
It is super fragile. Is there something like IR Pattern Matchers for this?

Reviewers: spatel, craig.topper, RKSimon, javed.absar

Reviewed By: spatel

Subscribers: andreadb, courbet, kristof.beyls, javed.absar, rengolin, nemanjai, llvm-commits

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

llvm-svn: 330646
2018-04-23 20:38:49 +00:00
..
Analysis [AArch64] Add cost model test case for transpose 2018-04-23 18:21:29 +00:00
Assembler
Bindings [LLVM-C] DIBuilderBindings for Subrange and Arrays 2018-04-23 14:29:33 +00:00
Bitcode [bcanalyzer] Recognize more stream types 2018-04-21 23:52:04 +00:00
BugPoint
CodeGen [DAGCombiner] Unfold scalar masked merge if profitable 2018-04-23 20:38:49 +00:00
DebugInfo [DEBUGINFO, NVPTX] Add the test for the debug info of the local 2018-04-23 14:00:53 +00:00
Examples
ExecutionEngine [RuntimeDyld][PowerPC] Fix a newly added test in r329355 2018-04-09 14:29:23 +00:00
Feature
FileCheck
Instrumentation [HWASan] Introduce non-zero based and dynamic shadow memory (LLVM). 2018-04-20 20:04:04 +00:00
Integer
JitListener
Linker [llvm-link] Use WithColor for printing errors 2018-04-18 14:41:47 +00:00
LTO Object: Don't mark alias unconditionally defined 2018-04-10 00:53:16 +00:00
MC [X86] Revert r330638 - accidental commit 2018-04-23 20:05:51 +00:00
Object
ObjectYAML [WebAssembly] libObject: Don't include the name the size of custom sections 2018-04-12 20:31:12 +00:00
Other
SafepointIRVerifier
SymbolRewriter
TableGen
ThinLTO/X86
tools Fix computeSymbolSizes SEGFAULT on invalid file 2018-04-23 16:08:01 +00:00
Transforms [AggressiveInstCombine] add tests for PR37098; NFC 2018-04-23 20:20:32 +00:00
Unit
Verifier
YAMLParser
.clang-format
CMakeLists.txt Sort a target list a bit better. 2018-04-23 14:28:49 +00:00
lit.cfg.py Enable debug fission for thinLTO linked via gold-plugin 2018-04-13 05:03:28 +00:00
lit.site.cfg.py.in
TestRunner.sh