1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 12:12:47 +01:00
llvm-mirror/test
Ahmed Bougacha faad462651 [AArch64] Avoid going through GPRs for across-vector instructions.
This adds new node types for each intrinsic.
For instance, for addv, we have AArch64ISD::UADDV, such that:
  (v4i32 (uaddv ...))
is the same as
  (v4i32 (scalar_to_vector (i32 (int_aarch64_neon_uaddv ...))))
that is,
  (v4i32 (INSERT_SUBREG (v4i32 (IMPLICIT_DEF)),
           (i32 (int_aarch64_neon_uaddv ...)), ssub)

In a combine, we transform all such across-vector-lanes intrinsics to:

  (i32 (extract_vector_elt (uaddv ...), 0))

This has one big advantage: by making the extract_element explicit, we
enable the existing patterns for lane-aware instructions to fire.
This lets us avoid needlessly going through the GPRs.  Consider:

    uint32x4_t test_mul(uint32x4_t a, uint32x4_t b) {
        return vmulq_n_u32(a, vaddvq_u32(b));
    }

We now generate:
    addv.4s  s1, v1
    mul.4s   v0, v0, v1[0]
instead of the previous:
    addv.4s  s1, v1
    fmov     w8, s1
    dup.4s   v1, w8
    mul.4s   v0, v1, v0

rdar://20044838

llvm-svn: 231840
2015-03-10 20:45:38 +00:00
..
Analysis [LoopAccesses 3/3] Print the dependences with -analyze 2015-03-10 17:40:43 +00:00
Assembler Fix a stack overflow in the assembler when checking that GEPs must be over sized types. 2015-03-10 06:34:57 +00:00
Bindings
Bitcode
BugPoint
CodeGen [AArch64] Avoid going through GPRs for across-vector instructions. 2015-03-10 20:45:38 +00:00
DebugInfo Use a better name for compile unit labels. 2015-03-10 03:58:36 +00:00
ExecutionEngine
Feature
FileCheck
Instrumentation [sanitizer] fix instrumentation with -mllvm -sanitizer-coverage-block-threshold=0 to actually do something useful. 2015-03-10 01:58:27 +00:00
Integer
JitListener
Linker
LTO
MC [AsmPrinter][TLOF] Reintroduce AArch64 test 2015-03-10 20:05:23 +00:00
Object
Other
SymbolRewriter
TableGen
tools
Transforms Fix a crash in InstCombine where we could try to truncate a switch comparison to zero width. 2015-03-10 06:51:39 +00:00
Unit
Verifier Fix an issue in the verifier where we could try to read information out of a malformed statepoint intrinsic. 2015-03-10 05:58:21 +00:00
YAMLParser
.clang-format
CMakeLists.txt
lit.cfg
lit.site.cfg.in
Makefile
Makefile.tests
TestRunner.sh