1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-22 20:43:44 +02:00
llvm-mirror/test/CodeGen
Bill Schmidt 1861624c2e [PATCH][PPC64LE] Correct little-endian usage of vmrgh* and vmrgl*.
Because the PowerPC vmrgh* and vmrgl* instructions have a built-in
big-endian bias, it is necessary to swap their inputs in little-endian
mode when using them to implement a vector shuffle.  This was
previously missed in the vector LE implementation.

There was already logic to distinguish between unary and "normal"
vmrg* vector shuffles, so this patch extends that logic to use a third
option:  "swapped" vmrg* vector shuffles that are used for little
endian in place of the "normal" ones.

I've updated the vec-shuffle-le.ll test to check for the expected
register ordering on the generated instructions.

This bug was discovered when testing the LE and ELFv2 patches for
safety if they were backported to 3.4.  A different vectorization
decision was made in 3.4 than on mainline trunk, and that exposed the
problem.  I've verified this fix takes care of that issue.

llvm-svn: 213915
2014-07-25 01:55:55 +00:00
..
AArch64 [SDAG] Introduce a combined set to the DAG combiner which tracks nodes 2014-07-24 22:15:28 +00:00
ARM [SDAG] Introduce a combined set to the DAG combiner which tracks nodes 2014-07-24 22:15:28 +00:00
CPP
Generic
Hexagon
Inputs
Mips [SDAG] Introduce a combined set to the DAG combiner which tracks nodes 2014-07-24 22:15:28 +00:00
MSP430
NVPTX [NVPTX] Add some extra tests for mul.wide to test non-power-of-two source types 2014-07-23 20:23:49 +00:00
PowerPC [PATCH][PPC64LE] Correct little-endian usage of vmrgh* and vmrgl*. 2014-07-25 01:55:55 +00:00
R600 [SDAG] Introduce a combined set to the DAG combiner which tracks nodes 2014-07-24 22:15:28 +00:00
SPARC
SystemZ
Thumb
Thumb2 ARM: spot SBFX-compatbile code expressed with sign_extend_inreg 2014-07-23 13:59:12 +00:00
X86 [SDAG] Introduce a combined set to the DAG combiner which tracks nodes 2014-07-24 22:15:28 +00:00
XCore