소스 검색

* mm register spilling fixed
* no sse instruction can operate on memory

git-svn-id: trunk@762 -

florian 20 년 전
부모
커밋
0e89afa607
1개의 변경된 파일23개의 추가작업 그리고 1개의 파일을 삭제
  1. 23 1
      compiler/x86/rgx86.pas

+ 23 - 1
compiler/x86/rgx86.pas

@@ -142,7 +142,7 @@ implementation
                          (getsupreg(oper[0]^.reg)=orgreg) then
                         replaceoper:=0
                       else
-                        if (getregtype(oper[0]^.reg)=regtype) and
+                        if (getregtype(oper[1]^.reg)=regtype) and
                            (getsupreg(oper[1]^.reg)=orgreg) then
                           replaceoper:=1
                       else
@@ -177,6 +177,28 @@ implementation
                               A_DIVSS,
                               A_SHLD,
                               A_SHRD,
+                              A_CVTDQ2PD,
+                              A_CVTDQ2PS,
+                              A_CVTPD2DQ,
+                              A_CVTPD2PI,
+                              A_CVTPD2PS,
+                              A_CVTPI2PD,
+                              A_CVTPS2DQ,
+                              A_CVTPS2PD,
+                              A_CVTSD2SI,
+                              A_CVTSD2SS,
+                              A_CVTSI2SD,
+                              A_CVTSS2SD,
+                              A_CVTTPD2PI,
+                              A_CVTTPD2DQ,
+                              A_CVTTPS2DQ,
+                              A_CVTTSD2SI,
+                              A_CVTPI2PS,
+                              A_CVTPS2PI,
+                              A_CVTSI2SS,
+                              A_CVTSS2SI,
+                              A_CVTTPS2PI,
+                              A_CVTTSS2SI,
                               A_IMUL :
                                 replaceoper:=-1;
                             end;