* use MOVAPS/MOVAPD for reg -> reg moves to reduce data dependencies

git-svn-id: trunk@24967 -
This commit is contained in:
florian 2013-06-24 20:55:04 +00:00
parent e44d33f4db
commit 466eb4c684

View File

@ -1221,8 +1221,13 @@ unit cgx86;
begin begin
op:=get_scalar_mm_op(fromsize,tosize); op:=get_scalar_mm_op(fromsize,tosize);
{ MOVAPD/MOVAPS are normally faster }
if op=A_MOVSD then
op:=A_MOVAPD
else if op=A_MOVSS then
op:=A_MOVAPS
{ VMOVSD/SS is not available with two register operands } { VMOVSD/SS is not available with two register operands }
if op=A_VMOVSD then else if op=A_VMOVSD then
op:=A_VMOVAPD op:=A_VMOVAPD
else if op=A_VMOVSS then else if op=A_VMOVSS then
op:=A_VMOVAPS; op:=A_VMOVAPS;
@ -1233,12 +1238,14 @@ unit cgx86;
else else
instr:=taicpu.op_reg_reg(op,S_NO,reg1,reg2); instr:=taicpu.op_reg_reg(op,S_NO,reg1,reg2);
case get_scalar_mm_op(fromsize,tosize) of case op of
A_VMOVAPD, A_VMOVAPD,
A_VMOVAPS, A_VMOVAPS,
A_VMOVSS, A_VMOVSS,
A_VMOVSD, A_VMOVSD,
A_VMOVQ, A_VMOVQ,
A_MOVAPD,
A_MOVAPS,
A_MOVSS, A_MOVSS,
A_MOVSD, A_MOVSD,
A_MOVQ: A_MOVQ: