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

m68k: define cpurox and enabled the rotate-related optimizations on CPUs which support rotate instructionsoptions.pas

git-svn-id: trunk@36302 -
Károly Balogh 8 жил өмнө
parent
commit
3e8ee48458

+ 1 - 0
compiler/fpcdefs.inc

@@ -162,6 +162,7 @@
   {$define cpu32bitaddr}
   {$define cpu32bitaddr}
   {$define cpu32bitalu}
   {$define cpu32bitalu}
   {$define cpuflags}
   {$define cpuflags}
+  {$define cpurox}
   {$define cpufpemu}
   {$define cpufpemu}
   {$define cpurefshaveindexreg}
   {$define cpurefshaveindexreg}
   {$define cpucapabilities}
   {$define cpucapabilities}

+ 3 - 0
compiler/nadd.pas

@@ -1068,6 +1068,9 @@ implementation
 {$ifdef cpurox}
 {$ifdef cpurox}
             { optimize (i shl x) or (i shr (bitsizeof(i)-x)) into rol(x,i) (and different flavours with shl/shr swapped etc.) }
             { optimize (i shl x) or (i shr (bitsizeof(i)-x)) into rol(x,i) (and different flavours with shl/shr swapped etc.) }
             if (nodetype=orn)
             if (nodetype=orn)
+{$ifdef m68k}
+               and (CPUM68K_HAS_ROLROR in cpu_capabilities[current_settings.cputype])
+{$endif m68k}
 {$ifndef cpu64bitalu}
 {$ifndef cpu64bitalu}
                and (left.resultdef.typ=orddef) and
                and (left.resultdef.typ=orddef) and
                not(torddef(left.resultdef).ordtype in [s64bit,u64bit,scurrency])
                not(torddef(left.resultdef).ordtype in [s64bit,u64bit,scurrency])