don't use MOVSLDUP/MOVSHDUP to do specialized shuffles unless sse3 is available

db4
Joe Groff 2009-10-10 12:00:47 -05:00
parent d9002127fa
commit a5898dffde
1 changed files with 10 additions and 3 deletions

View File

@ -673,11 +673,9 @@ M: x86 %gather-vector-2-reps
[ dupd SHUFPD ]
} case ;
: float-4-shuffle ( dst shuffle -- )
: sse1-float-4-shuffle ( dst shuffle -- )
{
{ { 0 1 2 3 } [ drop ] }
{ { 0 0 2 2 } [ dup MOVSLDUP ] }
{ { 1 1 3 3 } [ dup MOVSHDUP ] }
{ { 0 1 0 1 } [ dup MOVLHPS ] }
{ { 2 3 2 3 } [ dup MOVHLPS ] }
{ { 0 0 1 1 } [ dup UNPCKLPS ] }
@ -685,6 +683,15 @@ M: x86 %gather-vector-2-reps
[ dupd SHUFPS ]
} case ;
: float-4-shuffle ( dst shuffle -- )
sse3? [
{
{ { 0 0 2 2 } [ dup MOVSLDUP ] }
{ { 1 1 3 3 } [ dup MOVSHDUP ] }
[ sse1-float-4-shuffle ]
} case
] [ sse1-float-4-shuffle ] if ;
: int-4-shuffle ( dst shuffle -- )
{
{ { 0 1 2 3 } [ drop ] }