llvm-6502/test
Chris Lattner 3dd08734c1 optimize bitcasts from large integers to vector into vector
element insertion from the pieces that feed into the vector.
This handles a pattern that occurs frequently due to code
generated for the x86-64 abi.  We now compile something like
this:

struct S { float A, B, C, D; };
struct S g;
struct S bar() { 
  struct S A = g;
  ++A.A;
  ++A.C;
  return A;
}

into all nice vector operations:

_bar:                                   ## @bar
## BB#0:                                ## %entry
	movq	_g@GOTPCREL(%rip), %rax
	movss	LCPI1_0(%rip), %xmm1
	movss	(%rax), %xmm0
	addss	%xmm1, %xmm0
	pshufd	$16, %xmm0, %xmm0
	movss	4(%rax), %xmm2
	movss	12(%rax), %xmm3
	pshufd	$16, %xmm2, %xmm2
	unpcklps	%xmm2, %xmm0
	addss	8(%rax), %xmm1
	pshufd	$16, %xmm1, %xmm1
	pshufd	$16, %xmm3, %xmm2
	unpcklps	%xmm2, %xmm1
	ret

instead of icky integer operations:

_bar:                                   ## @bar
	movq	_g@GOTPCREL(%rip), %rax
	movss	LCPI1_0(%rip), %xmm1
	movss	(%rax), %xmm0
	addss	%xmm1, %xmm0
	movd	%xmm0, %ecx
	movl	4(%rax), %edx
	movl	12(%rax), %esi
	shlq	$32, %rdx
	addq	%rcx, %rdx
	movd	%rdx, %xmm0
	addss	8(%rax), %xmm1
	movd	%xmm1, %eax
	shlq	$32, %rsi
	addq	%rax, %rsi
	movd	%rsi, %xmm1
	ret

This resolves rdar://8360454



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112343 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-28 01:20:38 +00:00
..
Analysis refix PR1143 by making basicaa analyze zexts of indices aggresively, 2010-08-18 23:09:49 +00:00
Archive These tests are no longer stored in *CVS*. 2010-08-04 15:58:01 +00:00
Assembler
Bindings/Ocaml Fix vmcore.ml test. 2010-08-20 18:24:35 +00:00
Bitcode Add alignment arguments to all the NEON load/store intrinsics. 2010-08-27 17:13:24 +00:00
BugPoint XFAIL this on mingw, following remove_arguments_test.ll. 2010-08-24 20:54:50 +00:00
CodeGen Completely disable tail calls when fast-isel is enabled, as fast-isel 2010-08-28 00:51:03 +00:00
DebugInfo Convert DbgInfoPrinter to use errs() instead of outs(). 2010-08-20 18:03:05 +00:00
ExecutionEngine
Feature Extend function-local metadata to be usable as attachments. 2010-08-24 02:24:03 +00:00
FrontendAda
FrontendC no really, fix the test. 2010-08-27 23:05:54 +00:00
FrontendC++
FrontendFortran
FrontendObjC
FrontendObjC++ Test case for r110459. Radar 8264751. Test case by Fariborz Jahanian! 2010-08-06 19:02:24 +00:00
Integer
lib
Linker Reapply r112091 and r111922, support for metadata linking, with a 2010-08-26 15:41:53 +00:00
LLVMC llvmc: Make syntax more consistent. 2010-08-23 23:21:23 +00:00
MC X86: Fix misencode of RI64mi8. This fixes OpenSSL / x86_64-apple-darwin10 / clang -O3. 2010-08-25 21:11:02 +00:00
Other Try to escape the '$'s in these so they reach the underlying 'sh' invocation. 2010-08-23 08:54:19 +00:00
Scripts Add some win64 coff goodness. 2010-08-17 21:05:54 +00:00
TableGen
Transforms optimize bitcasts from large integers to vector into vector 2010-08-28 01:20:38 +00:00
Unit
Verifier Reject unrepresentable pointer types in intrinsics. Fixes PR7316. 2010-08-08 06:12:09 +00:00
CMakeLists.txt
lit.cfg The %ocamlopt setting has embedded quotes. Copy the entire value instead 2010-08-20 14:19:38 +00:00
lit.site.cfg.in
Makefile check-lit was failing again on F13 64 bits :-( 2010-08-05 03:35:01 +00:00
Makefile.tests
site.exp.in
TestRunner.sh tests: Deprecate TestRunner.sh, and have it just invoke 'llvm-lit' (which will 2010-08-02 00:52:41 +00:00