1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-23 03:02:36 +01:00
llvm-mirror/test
Sanjay Patel 50d6ec057c [x86] avoid 256-bit andnp that requires insert/extract with AVX1 (PR37449)
This is the final (I hope!) problem pattern mentioned in PR37749:
https://bugs.llvm.org/show_bug.cgi?id=37749

We are trying to avoid an AVX1 sinkhole caused by having 256-bit bitwise logic ops but no other 256-bit integer ops. 
We've already solved the simple logic ops, but 'andn' is an x86 special. I looked at alternative solutions like 
extending the generic DAG combine or trying to wait until the ANDNP node is created, but those are bigger patches 
that can over-reach. Ie, splitting to 128-bit does not look like a win in most cases with >1 256-bit op.

The pattern matching is cluttered with bitcasts because of our i64 element canonicalization. For the affected test, 
we have this vector-type-legalized sequence:

        t29: v8i32 = concat_vectors t27, t28
      t30: v4i64 = bitcast t29
        t18: v8i32 = BUILD_VECTOR Constant:i32<-1>, Constant:i32<-1>, ...
      t31: v4i64 = bitcast t18
    t32: v4i64 = xor t30, t31
      t9: v8i32 = BUILD_VECTOR Constant:i32<255>, Constant:i32<255>, ...
    t34: v4i64 = bitcast t9
  t35: v4i64 = and t32, t34
t36: v8i32 = bitcast t35
      t37: v4i32 = extract_subvector t36, Constant:i64<0>
      t38: v4i32 = extract_subvector t36, Constant:i64<4>

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

llvm-svn: 343008
2018-09-25 19:09:34 +00:00
..
Analysis
Assembler [test] Fix Assembler/debug-info.ll 2018-09-21 12:28:44 +00:00
Bindings
Bitcode Fix some missing opcodes in bcanalyzer 2018-09-24 12:47:17 +00:00
BugPoint
CodeGen [x86] avoid 256-bit andnp that requires insert/extract with AVX1 (PR37449) 2018-09-25 19:09:34 +00:00
DebugInfo [WebAssembly] Move/clone DBG_VALUE during WebAssemblyRegStackify pass 2018-09-25 18:59:34 +00:00
Demangle
Examples
ExecutionEngine
Feature
FileCheck
Instrumentation [hwasan] Record and display stack history in stack-based reports. 2018-09-24 23:03:34 +00:00
Integer
JitListener
Linker Fix asserts when linking wrong address space declarations 2018-09-24 04:42:14 +00:00
LTO Pass code-model through Module IR to LTO which will use it. 2018-09-21 18:41:31 +00:00
MC [WebAssembly] SIMD sqrt 2018-09-25 03:39:28 +00:00
Object
ObjectYAML
Other [New PM][PassInstrumentation] IR printing support for New Pass Manager 2018-09-24 16:08:15 +00:00
SafepointIRVerifier
SymbolRewriter
TableGen [globalisel][tblgen] Table optimization should consider the C++ code in C++ predicates 2018-09-25 17:59:02 +00:00
ThinLTO/X86
tools [llvm-exegesis] Serializes registers initial values. 2018-09-25 15:15:54 +00:00
Transforms [InstCombine] narrow binops on concatenated vectors (PR33026) 2018-09-25 15:57:37 +00:00
Unit
Verifier
YAMLParser
.clang-format
CMakeLists.txt [llvm-exegesis] Add lit tests (v2). 2018-09-25 13:59:35 +00:00
lit.cfg.py [llvm-exegesis] Add lit tests (v2). 2018-09-25 13:59:35 +00:00
lit.site.cfg.py.in
TestRunner.sh