mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-25 04:02:41 +01:00
49d93dc6d1
1. rename the movhp patfrag to movlhps, since thats what it actually matches 2. eliminate the bogus movhps load and store patterns, they were incorrect. The load transforms are already handled (correctly) by shufps/unpack. 3. revert a recent test change to its correct form. llvm-svn: 86415
21 lines
1.0 KiB
LLVM
21 lines
1.0 KiB
LLVM
; RUN: llc < %s -march=x86 -mattr=+sse2 -o %t
|
|
; RUN: grep movlhps %t | count 1
|
|
; RUN: grep movhlps %t | count 1
|
|
|
|
define <4 x float> @test1(<4 x float>* %x, <4 x float>* %y) {
|
|
%tmp = load <4 x float>* %y ; <<4 x float>> [#uses=2]
|
|
%tmp5 = load <4 x float>* %x ; <<4 x float>> [#uses=2]
|
|
%tmp9 = fadd <4 x float> %tmp5, %tmp ; <<4 x float>> [#uses=1]
|
|
%tmp21 = fsub <4 x float> %tmp5, %tmp ; <<4 x float>> [#uses=1]
|
|
%tmp27 = shufflevector <4 x float> %tmp9, <4 x float> %tmp21, <4 x i32> < i32 0, i32 1, i32 4, i32 5 > ; <<4 x float>> [#uses=1]
|
|
ret <4 x float> %tmp27
|
|
}
|
|
|
|
define <4 x float> @movhl(<4 x float>* %x, <4 x float>* %y) {
|
|
entry:
|
|
%tmp = load <4 x float>* %y ; <<4 x float>> [#uses=1]
|
|
%tmp3 = load <4 x float>* %x ; <<4 x float>> [#uses=1]
|
|
%tmp4 = shufflevector <4 x float> %tmp3, <4 x float> %tmp, <4 x i32> < i32 2, i32 3, i32 6, i32 7 > ; <<4 x float>> [#uses=1]
|
|
ret <4 x float> %tmp4
|
|
}
|