1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-20 19:42:54 +02:00
llvm-mirror/test
Sanjay Patel 366e501988 [InstCombine] reverse bitcast + bitwise-logic canonicalization (PR33138)
There are 2 parts to this patch made simultaneously to avoid a regression.

We're reversing the canonicalization that moves bitwise vector ops before bitcasts. 
We're moving bitwise vector ops *after* bitcasts instead. That's the 1st and 3rd hunks 
of the patch. The motivation is that there's only one fold that currently depends on 
the existing canonicalization (see next), but there are many folds that would 
automatically benefit from the new canonicalization. 
PR33138 ( https://bugs.llvm.org/show_bug.cgi?id=33138 ) shows why/how we have these 
patterns in IR.

There's an or(and,andn) pattern that requires an adjustment in order to continue matching
to 'select' because the bitcast changes position. This match is unfortunately complicated 
because it requires 4 logic ops with optional bitcast and sext ops.

Test diffs:

  1. The bitcast.ll and bitcast-bigendian.ll changes show the most basic difference - 
     bitcast comes before logic.
  2. There are also tests with no diffs in bitcast.ll that verify that we're still doing 
     folds that were enabled by the previous canonicalization.
  3. icmp-xor-signbit.ll shows the payoff. We don't need to adjust existing icmp patterns 
     to look through bitcasts.
  4. logical-select.ll contains several tests for the or(and,andn) --> select fold to 
     verify that we are still handling those cases. The lone diff shows the movement of 
     the bitcast from the new canonicalization rule.

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

llvm-svn: 306011
2017-06-22 15:46:54 +00:00
..
Analysis [BasicAA] Use MayAlias instead of PartialAlias for fallback. 2017-06-21 18:25:37 +00:00
Assembler Align definition of DW_OP_plus with DWARF spec [3/3] 2017-06-14 13:14:38 +00:00
Bindings
Bitcode Align definition of DW_OP_plus with DWARF spec [3/3] 2017-06-14 13:14:38 +00:00
BugPoint bugpoint: disabling symbolication of bugpoint-executed programs 2017-06-09 07:29:03 +00:00
CodeGen [X86] Add support for "probe-stack" attribute 2017-06-22 15:42:53 +00:00
DebugInfo [codeview] respect signedness of APSInts when printing to YAML 2017-06-21 22:31:52 +00:00
Examples
ExecutionEngine
Feature
FileCheck [FileCheck] Don't scan past the closing CHECK-DAG for CHECK-NOT inside CHECK-DAG 2017-06-07 12:06:45 +00:00
Instrumentation Fixing section name for Darwin platforms for sanitizer coverage 2017-06-14 23:40:25 +00:00
Integer
JitListener
LibDriver [llvm-ar] Make llvm-lib behave more like the MSVC archiver 2017-06-12 19:45:35 +00:00
Linker [Linker] Remove llc usage from link-arm-and-thumb.ll test case. 2017-06-07 09:59:22 +00:00
LTO Apply summary-based dead stripping to regular LTO modules with summaries. 2017-06-15 17:26:13 +00:00
MC [ARM] Create relocations for beq.w branches to ARM function syms. 2017-06-22 15:32:41 +00:00
Object obj2yaml: Improve error reporting 2017-06-16 23:29:54 +00:00
ObjectYAML [WebAssembly] Add support for weak symbols in the binary format 2017-06-20 04:04:59 +00:00
Other
SymbolRewriter
TableGen [globalisel][tablegen] Add support for COPY_TO_REGCLASS. 2017-06-20 12:36:34 +00:00
ThinLTO/X86 [cfi] CFI-ICall for ThinLTO. 2017-06-16 00:18:29 +00:00
tools [llvm-readobj] Dump the COFF image load config 2017-06-22 01:10:29 +00:00
Transforms [InstCombine] reverse bitcast + bitwise-logic canonicalization (PR33138) 2017-06-22 15:46:54 +00:00
Unit
Verifier [Atomics] Rename and change prototype for atomic memcpy intrinsic 2017-06-16 14:43:59 +00:00
YAMLParser
.clang-format
CMakeLists.txt Rename llvm-pdbdump -> llvm-pdbutil. 2017-06-09 20:46:17 +00:00
lit.cfg [llvm-pdbdump] Don't fail on PDBs with no ID stream. 2017-06-12 21:34:53 +00:00
lit.site.cfg.in Introduce the new feature "abi-breaking-checks" to satisfy -reverse-iterate in llvm/test/Transforms/Util/PredicateInfo/ 2017-06-07 00:22:52 +00:00
TestRunner.sh