2
0
Эх сурвалжийг харах

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

git-svn-id: trunk@24967 -
florian 12 жил өмнө
parent
commit
466eb4c684

+ 9 - 2
compiler/x86/cgx86.pas

@@ -1221,8 +1221,13 @@ unit cgx86;
           begin
             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 }
-            if op=A_VMOVSD then
+            else if op=A_VMOVSD then
               op:=A_VMOVAPD
             else if op=A_VMOVSS then
               op:=A_VMOVAPS;
@@ -1233,12 +1238,14 @@ unit cgx86;
             else
               instr:=taicpu.op_reg_reg(op,S_NO,reg1,reg2);
 
-            case get_scalar_mm_op(fromsize,tosize) of
+            case op of
               A_VMOVAPD,
               A_VMOVAPS,
               A_VMOVSS,
               A_VMOVSD,
               A_VMOVQ,
+              A_MOVAPD,
+              A_MOVAPS,
               A_MOVSS,
               A_MOVSD,
               A_MOVQ: