浏览代码

* fixed std_regname() for xmm registers with custom sizes
* fixed findreg_by_number() for xmm registers with R_SUBNONE
(from the assembler reader)

git-svn-id: trunk@23151 -

Jonas Maebe 12 年之前
父节点
当前提交
68dd05e259
共有 1 个文件被更改,包括 4 次插入5 次删除
  1. 4 5
      compiler/x86/cpubase.pas

+ 4 - 5
compiler/x86/cpubase.pas

@@ -458,10 +458,9 @@ implementation
       begin
       begin
         { for the name the sub reg doesn't matter }
         { for the name the sub reg doesn't matter }
         hr:=r;
         hr:=r;
-        case getsubreg(hr) of
-          R_SUBMMS,R_SUBMMD,R_SUBMMWHOLE:
-            setsubreg(hr,R_SUBMMX);
-        end;
+        if (getregtype(hr)=R_MMREGISTER) and
+           (getsubreg(hr)<>R_SUBMMY) then
+          setsubreg(hr,R_SUBMMX);
         result:=findreg_by_number_table(hr,regnumber_index);
         result:=findreg_by_number_table(hr,regnumber_index);
       end;
       end;
 
 
@@ -478,7 +477,7 @@ implementation
       begin
       begin
         if getregtype(r) in [R_MMREGISTER,R_MMXREGISTER] then
         if getregtype(r) in [R_MMREGISTER,R_MMXREGISTER] then
           r:=newreg(getregtype(r),getsupreg(r),R_SUBNONE);
           r:=newreg(getregtype(r),getsupreg(r),R_SUBNONE);
-        p:=findreg_by_number_table(r,regnumber_index);
+        p:=findreg_by_number(r);
         if p<>0 then
         if p<>0 then
           result:=std_regname_table[p]
           result:=std_regname_table[p]
         else
         else