|
@@ -71,9 +71,13 @@ Type
|
|
|
fpu_vfpv3_d16,
|
|
|
fpu_fpv4_s16,
|
|
|
fpu_vfpv4
|
|
|
+ { when new elements added afterwards, update also fpu_vfp_last below }
|
|
|
);
|
|
|
|
|
|
Const
|
|
|
+ fpu_vfp_first = fpu_vfpv2;
|
|
|
+ fpu_vfp_last = fpu_vfpv4;
|
|
|
+
|
|
|
fputypestrllvm : array[tfputype] of string[13] = ('',
|
|
|
'',
|
|
|
'',
|
|
@@ -1049,6 +1053,13 @@ Const
|
|
|
CPUARM_HAS_UMULL
|
|
|
);
|
|
|
|
|
|
+ tfpuflags =
|
|
|
+ (
|
|
|
+ FPUARM_HAS_VFP_EXTENSION, { fpu is a vfp extension }
|
|
|
+ FPUARM_HAS_VMOV_CONST, { vmov supports (some) real constants }
|
|
|
+ FPUARM_HAS_EXCEPTION_TRAPPING { vfp does exceptions trapping }
|
|
|
+ );
|
|
|
+
|
|
|
const
|
|
|
cpu_capabilities : array[tcputype] of set of tcpuflags =
|
|
|
( { cpu_none } [],
|
|
@@ -1072,6 +1083,20 @@ Const
|
|
|
{ cpu_armv7em } [CPUARM_HAS_ALL_MEM,CPUARM_HAS_BX,CPUARM_HAS_BLX,CPUARM_HAS_CLZ,CPUARM_HAS_EDSP,CPUARM_HAS_REV,CPUARM_HAS_RBIT,CPUARM_HAS_LDREX,CPUARM_HAS_THUMB_IDIV,CPUARM_HAS_DMB,CPUARM_HAS_THUMB2,CPUARM_HAS_UMULL]
|
|
|
);
|
|
|
|
|
|
+ fpu_capabilities : array[tfputype] of set of tfpuflags =
|
|
|
+ ( { fpu_none } [],
|
|
|
+ { fpu_soft } [],
|
|
|
+ { fpu_libgcc } [],
|
|
|
+ { fpu_fpa } [],
|
|
|
+ { fpu_fpa10 } [],
|
|
|
+ { fpu_fpa11 } [],
|
|
|
+ { fpu_vfpv2 } [FPUARM_HAS_VFP_EXTENSION],
|
|
|
+ { fpu_vfpv3 } [FPUARM_HAS_VFP_EXTENSION,FPUARM_HAS_VMOV_CONST],
|
|
|
+ { fpu_vfpv3_d16 } [FPUARM_HAS_VFP_EXTENSION,FPUARM_HAS_VMOV_CONST],
|
|
|
+ { fpu_fpv4_s16 } [FPUARM_HAS_VFP_EXTENSION,FPUARM_HAS_VMOV_CONST],
|
|
|
+ { fpu_vfpv4 } [FPUARM_HAS_VFP_EXTENSION,FPUARM_HAS_VMOV_CONST]
|
|
|
+ );
|
|
|
+
|
|
|
{ contains all CPU supporting any kind of thumb instruction set }
|
|
|
cpu_has_thumb = [cpu_armv4t,cpu_armv5t,cpu_armv5te,cpu_armv5tej,cpu_armv6t2,cpu_armv6z,cpu_armv6m,cpu_armv7a,cpu_armv7r,cpu_armv7m,cpu_armv7em];
|
|
|
|