mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-10-21 01:25:20 +00:00
Add a note
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27998 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d929f06f4d
commit
217fde5255
@ -1144,3 +1144,47 @@ It should be
|
||||
ret
|
||||
|
||||
since paddw is commutative.
|
||||
|
||||
//===---------------------------------------------------------------------===//
|
||||
|
||||
This testcase:
|
||||
|
||||
%G1 = weak global <4 x float> zeroinitializer ; <<4 x float>*> [#uses=1]
|
||||
%G2 = weak global <4 x float> zeroinitializer ; <<4 x float>*> [#uses=1]
|
||||
%G3 = weak global <4 x float> zeroinitializer ; <<4 x float>*> [#uses=1]
|
||||
%G4 = weak global <4 x float> zeroinitializer ; <<4 x float>*> [#uses=1]
|
||||
|
||||
implementation ; Functions:
|
||||
|
||||
void %test() {
|
||||
%tmp = load <4 x float>* %G1 ; <<4 x float>> [#uses=2]
|
||||
%tmp2 = load <4 x float>* %G2 ; <<4 x float>> [#uses=2]
|
||||
%tmp135 = shufflevector <4 x float> %tmp, <4 x float> %tmp2, <4 x uint> < uint 0, uint 4, uint 1, uint 5 > ; <<4 x float>> [#uses=1]
|
||||
store <4 x float> %tmp135, <4 x float>* %G3
|
||||
%tmp293 = shufflevector <4 x float> %tmp, <4 x float> %tmp2, <4 x uint> < uint 1, uint undef, uint 3, uint 4 > ; <<4 x float>> [#uses=1]
|
||||
store <4 x float> %tmp293, <4 x float>* %G4
|
||||
ret void
|
||||
}
|
||||
|
||||
Compiles (llc -march=x86 -mcpu=yonah -relocation-model=static) to:
|
||||
|
||||
_test:
|
||||
movaps _G2, %xmm0
|
||||
movaps _G1, %xmm1
|
||||
movaps %xmm1, %xmm2
|
||||
2) shufps $3, %xmm0, %xmm2
|
||||
movaps %xmm1, %xmm3
|
||||
2) shufps $1, %xmm0, %xmm3
|
||||
1) unpcklps %xmm0, %xmm1
|
||||
2) shufps $128, %xmm2, %xmm3
|
||||
1) movaps %xmm1, _G3
|
||||
movaps %xmm3, _G4
|
||||
ret
|
||||
|
||||
The 1) marked instructions could be scheduled better for reduced register
|
||||
pressure. The scheduling issue is more pronounced without -static.
|
||||
|
||||
The 2) marked instructions are the lowered form of the 1,undef,3,4
|
||||
shufflevector. It seems that there should be a better way to do it :)
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user