diff --git a/compiler/arm/armatt.inc b/compiler/arm/armatt.inc index 02ca509e03..d2a44a4d9a 100644 --- a/compiler/arm/armatt.inc +++ b/compiler/arm/armatt.inc @@ -296,6 +296,35 @@ 'itttt', 'tbb', 'tbh', +'movw', 'cbz', -'cbnz' +'cbnz', +'vabs', +'vadd', +'vcmp', +'vcmpe', +'vcvt', +'vdiv', +'vldm', +'vldr', +'vmov', +'vmrs', +'vmsr', +'vmul', +'vmla', +'vmls', +'vnmla', +'vnmls', +'vfma', +'vfms', +'vfnma', +'vfnms', +'vneg', +'vnmul', +'vpop', +'vpush', +'vsqrt', +'vstm', +'vstr', +'vsub' ); diff --git a/compiler/arm/armatts.inc b/compiler/arm/armatts.inc index a308f1c381..6f5edc9392 100644 --- a/compiler/arm/armatts.inc +++ b/compiler/arm/armatts.inc @@ -297,5 +297,34 @@ attsufNONE, attsufNONE, attsufNONE, attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, +attsufNONE, attsufNONE ); diff --git a/compiler/arm/armins.dat b/compiler/arm/armins.dat index 201d7c92a9..783ca4c30c 100644 --- a/compiler/arm/armins.dat +++ b/compiler/arm/armins.dat @@ -753,5 +753,37 @@ reg32,reg32,reg32,reg32 \x16\x00\x80\x90 ARM7 [TBB] [TBH] +[MOVW] + [CBZ] -[CBNZ] \ No newline at end of file +[CBNZ] + +; FPv4-s16 - ARMv7M floating point +[VABS] +[VADD] +[VCMP] +[VCMPE] +[VCVT] +[VDIV] +[VLDM] +[VLDR] +[VMOV] +[VMRS] +[VMSR] +[VMUL] +[VMLA] +[VMLS] +[VNMLA] +[VNMLS] +[VFMA] +[VFMS] +[VFNMA] +[VFNMS] +[VNEG] +[VNMUL] +[VPOP] +[VPUSH] +[VSQRT] +[VSTM] +[VSTR] +[VSUB] \ No newline at end of file diff --git a/compiler/arm/armop.inc b/compiler/arm/armop.inc index 20b1956805..e9979c5877 100644 --- a/compiler/arm/armop.inc +++ b/compiler/arm/armop.inc @@ -296,6 +296,35 @@ A_ITETT, A_ITTTT, A_TBB, A_TBH, +A_MOVW, A_CBZ, -A_CBNZ +A_CBNZ, +A_VABS, +A_VADD, +A_VCMP, +A_VCMPE, +A_VCVT, +A_VDIV, +A_VLDM, +A_VLDR, +A_VMOV, +A_VMRS, +A_VMSR, +A_VMUL, +A_VMLA, +A_VMLS, +A_VNMLA, +A_VNMLS, +A_VFMA, +A_VFMS, +A_VFNMA, +A_VFNMS, +A_VNEG, +A_VNMUL, +A_VPOP, +A_VPUSH, +A_VSQRT, +A_VSTM, +A_VSTR, +A_VSUB ); diff --git a/compiler/arm/armreg.dat b/compiler/arm/armreg.dat index 61a804aed3..3cbdd1e6fc 100644 --- a/compiler/arm/armreg.dat +++ b/compiler/arm/armreg.dat @@ -109,4 +109,5 @@ D31,$04,$07,$1F,d31,0,0 ; special registers CPSR,$05,$00,$00,cpsr,0,0 FPSCR,$05,$00,$01,fpscr,0,0 -SPSR,$05,$00,$02,spsr,0,0 \ No newline at end of file +SPSR,$05,$00,$02,spsr,0,0 +APSR_nzcv,$05,$00,$03,apsr_nzcv,0,0 \ No newline at end of file diff --git a/compiler/arm/rarmcon.inc b/compiler/arm/rarmcon.inc index bd73c26ebf..525a320b49 100644 --- a/compiler/arm/rarmcon.inc +++ b/compiler/arm/rarmcon.inc @@ -91,3 +91,4 @@ NR_D31 = tregister($0407001F); NR_CPSR = tregister($05000000); NR_FPSCR = tregister($05000001); NR_SPSR = tregister($05000002); +NR_APSR_nzcv = tregister($05000003); diff --git a/compiler/arm/rarmdwa.inc b/compiler/arm/rarmdwa.inc index b90d9f4662..76141320ac 100644 --- a/compiler/arm/rarmdwa.inc +++ b/compiler/arm/rarmdwa.inc @@ -90,4 +90,5 @@ 0, 0, 0, +0, 0 diff --git a/compiler/arm/rarmnor.inc b/compiler/arm/rarmnor.inc index a628f124d2..92201c66f2 100644 --- a/compiler/arm/rarmnor.inc +++ b/compiler/arm/rarmnor.inc @@ -1,2 +1,2 @@ { don't edit, this file is generated from armreg.dat } -92 +93 diff --git a/compiler/arm/rarmnum.inc b/compiler/arm/rarmnum.inc index deffa79a06..f4e59b44e0 100644 --- a/compiler/arm/rarmnum.inc +++ b/compiler/arm/rarmnum.inc @@ -90,4 +90,5 @@ tregister($0407001E), tregister($0407001F), tregister($05000000), tregister($05000001), -tregister($05000002) +tregister($05000002), +tregister($05000003) diff --git a/compiler/arm/rarmrni.inc b/compiler/arm/rarmrni.inc index 3cf63ad95a..003657a94e 100644 --- a/compiler/arm/rarmrni.inc +++ b/compiler/arm/rarmrni.inc @@ -90,4 +90,5 @@ 88, 89, 90, -91 +91, +92 diff --git a/compiler/arm/rarmsri.inc b/compiler/arm/rarmsri.inc index 0115fed3bb..e1c971d2b1 100644 --- a/compiler/arm/rarmsri.inc +++ b/compiler/arm/rarmsri.inc @@ -1,5 +1,6 @@ { don't edit, this file is generated from armreg.dat } 0, +92, 89, 27, 30, diff --git a/compiler/arm/rarmsta.inc b/compiler/arm/rarmsta.inc index 2aada2432b..b978ff7b1a 100644 --- a/compiler/arm/rarmsta.inc +++ b/compiler/arm/rarmsta.inc @@ -90,4 +90,5 @@ 0, 0, 0, +0, 0 diff --git a/compiler/arm/rarmstd.inc b/compiler/arm/rarmstd.inc index 4e7454dc28..20474a9ce0 100644 --- a/compiler/arm/rarmstd.inc +++ b/compiler/arm/rarmstd.inc @@ -90,4 +90,5 @@ 'd31', 'cpsr', 'fpscr', -'spsr' +'spsr', +'apsr_nzcv' diff --git a/compiler/arm/rarmsup.inc b/compiler/arm/rarmsup.inc index 7187c010d6..6402681c15 100644 --- a/compiler/arm/rarmsup.inc +++ b/compiler/arm/rarmsup.inc @@ -91,3 +91,4 @@ RS_D31 = $1F; RS_CPSR = $00; RS_FPSCR = $01; RS_SPSR = $02; +RS_APSR_nzcv = $03; diff --git a/compiler/avr/cpubase.pas b/compiler/avr/cpubase.pas index 3504bdecc6..a2bf731653 100644 --- a/compiler/avr/cpubase.pas +++ b/compiler/avr/cpubase.pas @@ -326,7 +326,7 @@ unit cpubase; const - std_regname_table : array[tregisterindex] of string[7] = ( + std_regname_table : array[tregisterindex] of string[10] = ( {$i ravrstd.inc} ); diff --git a/compiler/m68k/cpubase.pas b/compiler/m68k/cpubase.pas index 0d17f5547a..659b143d28 100644 --- a/compiler/m68k/cpubase.pas +++ b/compiler/m68k/cpubase.pas @@ -353,7 +353,7 @@ implementation const - std_regname_table : array[tregisterindex] of string[7] = ( + std_regname_table : array[tregisterindex] of string[10] = ( {$i r68kstd.inc} ); diff --git a/compiler/mips/cpubase.pas b/compiler/mips/cpubase.pas index 26393edaba..157155baf6 100644 --- a/compiler/mips/cpubase.pas +++ b/compiler/mips/cpubase.pas @@ -295,7 +295,7 @@ unit cpubase; const - std_regname_table : array[tregisterindex] of string[7] = ( + std_regname_table : array[tregisterindex] of string[10] = ( {$i rmipsstd.inc} ); diff --git a/compiler/powerpc/cpubase.pas b/compiler/powerpc/cpubase.pas index 2fc84b09ad..a344aa8ff9 100644 --- a/compiler/powerpc/cpubase.pas +++ b/compiler/powerpc/cpubase.pas @@ -422,7 +422,7 @@ implementation rgbase,verbose; const - std_regname_table : array[tregisterindex] of string[7] = ( + std_regname_table : array[tregisterindex] of string[10] = ( {$i rppcstd.inc} ); diff --git a/compiler/powerpc64/cpubase.pas b/compiler/powerpc64/cpubase.pas index 286443e2d5..cdc606175a 100644 --- a/compiler/powerpc64/cpubase.pas +++ b/compiler/powerpc64/cpubase.pas @@ -424,7 +424,7 @@ uses rgBase, verbose, itcpugas; const - std_regname_table: array[tregisterindex] of string[7] = ( + std_regname_table: array[tregisterindex] of string[10] = ( {$I rppcstd.inc} ); diff --git a/compiler/x86/cpubase.pas b/compiler/x86/cpubase.pas index 70a9e8ac49..c3c3459c6f 100644 --- a/compiler/x86/cpubase.pas +++ b/compiler/x86/cpubase.pas @@ -268,7 +268,7 @@ implementation const {$ifdef x86_64} - std_regname_table : array[tregisterindex] of string[7] = ( + std_regname_table : array[tregisterindex] of string[10] = ( {$i r8664std.inc} ); @@ -279,7 +279,7 @@ implementation {$i r8664sri.inc} ); {$else x86_64} - std_regname_table : array[tregisterindex] of string[7] = ( + std_regname_table : array[tregisterindex] of string[10] = ( {$i r386std.inc} );