浏览代码

* MIPS64 can
* MIPS64 does not need separate 64 bit code path for ordinals

florian 3 年之前
父节点
当前提交
bbece3e668
共有 2 个文件被更改,包括 5 次插入1 次删除
  1. 3 1
      compiler/mips/cpupara.pas
  2. 2 0
      compiler/ncgadd.pas

+ 3 - 1
compiler/mips/cpupara.pas

@@ -365,7 +365,8 @@ implementation
             while paralen>0 do
             while paralen>0 do
               begin
               begin
                 paraloc:=hp.paraloc[side].add_location;
                 paraloc:=hp.paraloc[side].add_location;
-                { We can allocate at maximum 32 bits per register }
+{$ifndef cpu64bitalu}
+                { We can allocate at maximum 32 bits per register on mips32 }
                 if (paracgsize in [OS_64,OS_S64]) or
                 if (paracgsize in [OS_64,OS_S64]) or
                    ((paracgsize in [OS_F32,OS_F64]) and
                    ((paracgsize in [OS_F32,OS_F64]) and
                      not(can_use_float)) then
                      not(can_use_float)) then
@@ -374,6 +375,7 @@ implementation
                     paraloc^.def:=u32inttype;
                     paraloc^.def:=u32inttype;
                   end
                   end
                 else
                 else
+{$endif cpu64bitalu}
                   begin
                   begin
                     paraloc^.size:=paracgsize;
                     paraloc^.size:=paracgsize;
                     paraloc^.def:=locdef;
                     paraloc^.def:=locdef;

+ 2 - 0
compiler/ncgadd.pas

@@ -786,9 +786,11 @@ interface
               if is_boolean(left.resultdef) and
               if is_boolean(left.resultdef) and
                  is_boolean(right.resultdef) then
                  is_boolean(right.resultdef) then
                 second_opboolean
                 second_opboolean
+{$ifndef cpu64bitalu}
               { 64bit operations }
               { 64bit operations }
               else if is_64bit(left.resultdef) then
               else if is_64bit(left.resultdef) then
                 second_op64bit
                 second_op64bit
+{$endif cpu64bitalu}
               else
               else
                 second_opordinal;
                 second_opordinal;
             end;
             end;