1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-22 20:43:44 +02:00
llvm-mirror/lib
Chris Lattner fe7c4ec039 Change handling of illegal vector types to widen when possible instead of
expanding: e.g. <2 x float> -> <4 x float> instead of -> 2 floats.  This
affects two places in the code: handling cross block values and handling
function return and arguments.  Since vectors are already widened by 
legalizetypes, this gives us much better code and unblocks x86-64 abi
and SPU abi work.

For example, this (which is a silly example of a cross-block value):
define <4 x float> @test2(<4 x float> %A) nounwind {
 %B = shufflevector <4 x float> %A, <4 x float> undef, <2 x i32> <i32 0, i32 1>
 %C = fadd <2 x float> %B, %B
  br label %BB
BB:
 %D = fadd <2 x float> %C, %C
 %E = shufflevector <2 x float> %D, <2 x float> undef, <4 x i32> <i32 0, i32 1, i32 undef, i32 undef>
 ret <4 x float> %E
}

Now compiles into:

_test2:                                 ## @test2
## BB#0:
 addps %xmm0, %xmm0
 addps %xmm0, %xmm0
 ret

previously it compiled into:

_test2:                                 ## @test2
## BB#0:
 addps %xmm0, %xmm0
 pshufd $1, %xmm0, %xmm1
                                        ## kill: XMM0<def> XMM0<kill> XMM0<def>
 insertps $0, %xmm0, %xmm0
 insertps $16, %xmm1, %xmm0
 addps %xmm0, %xmm0
 ret

This implements rdar://8230384

llvm-svn: 112101
2010-08-25 22:49:25 +00:00
..
Analysis In the default address space, any GEP off of null results in a trap value if you try to load it. Thus, 2010-08-25 01:16:47 +00:00
Archive Eliminate some unnessary Path::exists() calls. 2010-05-27 20:51:54 +00:00
AsmParser Add a comment explaining why this code doesn't just call 2010-08-24 14:35:45 +00:00
Bitcode Add a FIXME comment. 2010-08-25 20:23:38 +00:00
CodeGen Change handling of illegal vector types to widen when possible instead of 2010-08-25 22:49:25 +00:00
CompilerDriver Add a TODO. 2010-08-23 19:24:12 +00:00
ExecutionEngine remove some dead code. 2010-08-23 03:12:06 +00:00
Linker Remap metadata attached to instructions when remapping individual 2010-08-25 21:36:50 +00:00
MC MCELF: Use precomputed symbol indices, patch by Roman Divacky. 2010-08-25 20:09:43 +00:00
Support Use Bits.data() instead of &Bits[0]. 2010-08-24 23:16:53 +00:00
System Fix --disable-threads build, PR7949. 2010-08-20 20:54:37 +00:00
Target Revert this for now, PUNPCKLDQ dont operate on v4f32 2010-08-25 21:26:37 +00:00
Transforms Remap metadata attached to instructions when remapping individual 2010-08-25 21:36:50 +00:00
VMCore Don't include the is-function-local bit in the FoldingSetNodeID 2010-08-24 23:21:12 +00:00
Makefile