Przeglądaj źródła

Add VFPv4 FPU type for ARM.
Fix assembler reader so it can read instructions longer than 5 characters.

git-svn-id: trunk@30186 -

Jeppe Johansen 10 lat temu
rodzic
commit
64f127141f

+ 3 - 1
compiler/arm/aasmcpu.pas

@@ -165,6 +165,7 @@ uses
       IF_FPA        = $10000000;
       IF_VFPv2      = $20000000;
       IF_VFPv3      = $40000000;
+      IF_VFPv4      = $80000000;
 
       { if the instruction can change in a second pass }
       IF_PASS2  = longint($80000000);
@@ -2034,7 +2035,8 @@ implementation
             IF_VFPv2,
             IF_VFPv2 or IF_VFPv3,
             IF_VFPv2 or IF_VFPv3,
-            IF_NONE
+            IF_NONE,
+            IF_VFPv2 or IF_VFPv3 or IF_VFPv4
           );
       begin
         fArmVMask:=Masks[current_settings.cputype] or FPUMasks[current_settings.fputype];

+ 2 - 0
compiler/arm/agarmgas.pas

@@ -109,6 +109,8 @@ unit agarmgas;
           result:='-mfpu=vfpv3-d16 '+result;
         if (current_settings.fputype = fpu_fpv4_s16) then
           result:='-mfpu=fpv4-sp-d16 '+result;
+        if (current_settings.fputype = fpu_vfpv4) then
+          result:='-mfpu=vfpv4 '+result;
 
         if GenerateThumb2Code then
           result:='-march='+cputype_to_gas_march[current_settings.cputype]+' -mthumb -mthumb-interwork '+result

+ 4 - 2
compiler/arm/cpuinfo.pas

@@ -67,7 +67,8 @@ Type
       fpu_vfpv2,
       fpu_vfpv3,
       fpu_vfpv3_d16,
-      fpu_fpv4_s16
+      fpu_fpv4_s16,
+      fpu_vfpv4
      );
 
    tcontrollertype =
@@ -402,7 +403,8 @@ Const
      'VFPV2',
      'VFPV3',
      'VFPV3_D16',
-     'FPV4_S16'
+     'FPV4_S16',
+     'VFPV4'
    );
 
 

+ 1 - 1
compiler/arm/raarmgas.pas

@@ -1287,7 +1287,7 @@ Unit raarmgas;
                   end;
               end;
           end;
-        maxlen:=min(length(hs),5);
+        maxlen:=min(length(hs),6);
         actopcode:=A_NONE;
         j2:=maxlen;
         hs2:=hs;