teach libanalysis to simplify vector loads with bitcast sources. This

implements something out of Target/README.txt producing:

_foo:                                                       ## @foo
	movl	4(%esp), %eax
	movapd	LCPI1_0, %xmm0
	movapd	%xmm0, (%eax)
	ret	$4

instead of:

_foo:                                                       ## @foo
	movl	4(%esp), %eax
	movapd	_b, %xmm0
	mulpd	LCPI1_0, %xmm0
	addpd	_a, %xmm0
	movapd	%xmm0, (%eax)
	ret	$4



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@84942 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner
2009-10-23 06:57:37 +00:00
parent 739208a790
commit 17f0cd3cc1
2 changed files with 23 additions and 7 deletions
+10
View File
@@ -77,3 +77,13 @@ define i128 @test9() {
; @test9
; CHECK: ret i128 112312312
}
; vector load.
define <2 x i64> @test10() {
%r = load <2 x i64>* bitcast({i64, i64}* @test3 to <2 x i64>*)
ret <2 x i64> %r
; @test10
; CHECK: ret <2 x i64> <i64 112312312, i64 0>
}