llvm-6502/lib
Chris Lattner 7900779543 handle the constant case of vector insertion. For something
like this:

struct S { float A, B, C, D; };

struct S g;
struct S bar() { 
  struct S A = g;
  ++A.B;
  A.A = 42;
  return A;
}

we now generate:

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

instead of:

_bar:                                   ## @bar
## BB#0:                                ## %entry
	movq	_g@GOTPCREL(%rip), %rax
	movss	12(%rax), %xmm0
	pshufd	$16, %xmm0, %xmm0
	movss	4(%rax), %xmm2
	movss	8(%rax), %xmm1
	pshufd	$16, %xmm1, %xmm1
	unpcklps	%xmm0, %xmm1
	addss	LCPI1_0(%rip), %xmm2
	movd	%xmm2, %eax
	shlq	$32, %rax
	addq	$1109917696, %rax       ## imm = 0x42280000
	movd	%rax, %xmm0
	ret



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@112345 91177308-0d34-0410-b5e6-96231b3b80d8
2010-08-28 01:50:57 +00:00
..
Analysis Fix an index calculation thinko. 2010-08-28 00:39:27 +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 Completely disable tail calls when fast-isel is enabled, as fast-isel 2010-08-28 00:51:03 +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 Reapply r112091 and r111922, support for metadata linking, with a 2010-08-26 15:41:53 +00:00
MC MCELF: Port EmitInstruction changes from MachO streamer. Patch by Roman Divacky. 2010-08-27 10:40:51 +00:00
Support StringRef::compare_numeric also differed from StringRef::compare for characters > 127. 2010-08-26 15:25:35 +00:00
System Fix --disable-threads build, PR7949. 2010-08-20 20:54:37 +00:00
Target We don't need to custom-select VLDMQ and VSTMQ anymore. 2010-08-28 00:20:11 +00:00
Transforms handle the constant case of vector insertion. For something 2010-08-28 01:50:57 +00:00
VMCore Add alignment arguments to all the NEON load/store intrinsics. 2010-08-27 17:13:24 +00:00
Makefile