Add FPA support.

git-svn-id: branches/laksen/armiw@29366 -
This commit is contained in:
Jeppe Johansen 2015-01-01 11:18:04 +00:00
parent 49346b3041
commit ff7af306df
8 changed files with 705 additions and 24 deletions

View File

@ -1995,9 +1995,9 @@ implementation
IF_NONE,
IF_NONE,
IF_NONE,
IF_NONE,
IF_NONE,
IF_NONE,
IF_FPA,
IF_FPA,
IF_FPA,
IF_VFPv2,
IF_VFPv2 or IF_VFPv3,
IF_VFPv2 or IF_VFPv3,
@ -2299,7 +2299,7 @@ implementation
{ update condition flags
or floating point single }
if (oppostfix=PF_S) and
not(p^.code[0] in [#$04..#$0F,#$14..#$16,#$29,#$30,#$60..#$6B,#$80..#$82]) then
not(p^.code[0] in [#$04..#$0F,#$14..#$16,#$29,#$30,#$60..#$6B,#$80..#$82,#$A0..#$A2]) then
begin
Matches:=0;
exit;
@ -2307,7 +2307,7 @@ implementation
{ floating point size }
if (oppostfix in [PF_D,PF_E,PF_P,PF_EP]) and
not(p^.code[0] in []) then
not(p^.code[0] in [#$A0..#$A2]) then
begin
Matches:=0;
exit;
@ -4589,8 +4589,8 @@ implementation
end
else
begin
bytes:=bytes or (getsupreg(oper[0]^.reg) shl 0);
offset:=1;
bytes:=bytes or (getsupreg(oper[0]^.reg) shl 0);
end;
if oper[offset]^.typ=top_const then
@ -5030,6 +5030,183 @@ implementation
message(asmw_e_invalid_effective_address);
end;
end;
#$A0: { FPA: CPDT(LDF/STF) }
begin
{ set instruction code }
bytes:=bytes or (ord(insentry^.code[1]) shl 24);
bytes:=bytes or (ord(insentry^.code[2]) shl 16);
bytes:=bytes or (ord(insentry^.code[3]) shl 8);
bytes:=bytes or ord(insentry^.code[4]);
if ops=2 then
begin
bytes:=bytes or getsupreg(oper[0]^.reg) shl 12;
bytes:=bytes or getsupreg(oper[1]^.ref^.base) shl 16;
bytes:=bytes or ((oper[1]^.ref^.offset shr 2) and $FF);
if oper[1]^.ref^.offset>=0 then
bytes:=bytes or (1 shl 23);
if oper[1]^.ref^.addressmode<>AM_OFFSET then
bytes:=bytes or (1 shl 21);
if oper[1]^.ref^.addressmode=AM_PREINDEXED then
bytes:=bytes or (1 shl 24);
case oppostfix of
PF_D: bytes:=bytes or (0 shl 22) or (1 shl 15);
PF_E: bytes:=bytes or (1 shl 22) or (0 shl 15);
PF_P: bytes:=bytes or (1 shl 22) or (1 shl 15);
end;
end
else
begin
bytes:=bytes or getsupreg(oper[0]^.reg) shl 12;
case oper[1]^.val of
1: bytes:=bytes or (1 shl 15);
2: bytes:=bytes or (1 shl 22);
3: bytes:=bytes or (1 shl 22) or (1 shl 15);
4: ;
else
message1(asmw_e_invalid_opcode_and_operands, 'Invalid count for LFM/SFM');
end;
bytes:=bytes or getsupreg(oper[2]^.ref^.base) shl 16;
bytes:=bytes or ((oper[2]^.ref^.offset shr 2) and $FF);
if oper[2]^.ref^.offset>=0 then
bytes:=bytes or (2 shl 23);
if oper[2]^.ref^.addressmode<>AM_OFFSET then
bytes:=bytes or (1 shl 21);
if oper[2]^.ref^.addressmode=AM_PREINDEXED then
bytes:=bytes or (1 shl 24);
end;
end;
#$A1: { FPA: CPDO }
begin
{ set instruction code }
bytes:=bytes or ($E shl 24);
bytes:=bytes or (ord(insentry^.code[1]) shl 15);
bytes:=bytes or ((ord(insentry^.code[2]) shr 1) shl 20);
bytes:=bytes or (1 shl 8);
bytes:=bytes or getsupreg(oper[0]^.reg) shl 12;
if ops=2 then
begin
if oper[1]^.typ=top_reg then
bytes:=bytes or getsupreg(oper[1]^.reg) shl 0
else
case oper[1]^.val of
0: bytes:=bytes or $8;
1: bytes:=bytes or $9;
2: bytes:=bytes or $A;
3: bytes:=bytes or $B;
4: bytes:=bytes or $C;
5: bytes:=bytes or $D;
//0.5: bytes:=bytes or $E;
10: bytes:=bytes or $F;
else
Message(asmw_e_invalid_opcode_and_operands);
end;
end
else
begin
bytes:=bytes or getsupreg(oper[1]^.reg) shl 16;
if oper[2]^.typ=top_reg then
bytes:=bytes or getsupreg(oper[2]^.reg) shl 0
else
case oper[2]^.val of
0: bytes:=bytes or $8;
1: bytes:=bytes or $9;
2: bytes:=bytes or $A;
3: bytes:=bytes or $B;
4: bytes:=bytes or $C;
5: bytes:=bytes or $D;
//0.5: bytes:=bytes or $E;
10: bytes:=bytes or $F;
else
Message(asmw_e_invalid_opcode_and_operands);
end;
end;
case roundingmode of
RM_P: bytes:=bytes or (1 shl 5);
RM_M: bytes:=bytes or (2 shl 5);
RM_Z: bytes:=bytes or (3 shl 5);
end;
case oppostfix of
PF_S: bytes:=bytes or (0 shl 19) or (0 shl 7);
PF_D: bytes:=bytes or (0 shl 19) or (1 shl 7);
PF_E: bytes:=bytes or (1 shl 19) or (0 shl 7);
else
message1(asmw_e_invalid_opcode_and_operands, 'Precision cannot be undefined');
end;
end;
#$A2: { FPA: CPDO }
begin
{ set instruction code }
bytes:=bytes or (ord(insentry^.code[1]) shl 24);
bytes:=bytes or (ord(insentry^.code[2]) shl 16);
bytes:=bytes or ($11 shl 4);
case opcode of
A_FLT:
begin
bytes:=bytes or (getsupreg(oper[0]^.reg) shl 16);
bytes:=bytes or (getsupreg(oper[1]^.reg) shl 12);
case roundingmode of
RM_P: bytes:=bytes or (1 shl 5);
RM_M: bytes:=bytes or (2 shl 5);
RM_Z: bytes:=bytes or (3 shl 5);
end;
case oppostfix of
PF_S: bytes:=bytes or (0 shl 19) or (0 shl 7);
PF_D: bytes:=bytes or (0 shl 19) or (1 shl 7);
PF_E: bytes:=bytes or (1 shl 19) or (0 shl 7);
else
message1(asmw_e_invalid_opcode_and_operands, 'Precision cannot be undefined');
end;
end;
A_FIX:
begin
bytes:=bytes or (getsupreg(oper[0]^.reg) shl 12);
bytes:=bytes or (getsupreg(oper[1]^.reg) shl 0);
case roundingmode of
RM_P: bytes:=bytes or (1 shl 5);
RM_M: bytes:=bytes or (2 shl 5);
RM_Z: bytes:=bytes or (3 shl 5);
end;
end;
A_WFS,A_RFS,A_WFC,A_RFC:
begin
bytes:=bytes or (getsupreg(oper[0]^.reg) shl 12);
end;
A_CMF,A_CNF,A_CMFE,A_CNFE:
begin
bytes:=bytes or (getsupreg(oper[0]^.reg) shl 16);
if oper[1]^.typ=top_reg then
bytes:=bytes or getsupreg(oper[1]^.reg) shl 0
else
case oper[1]^.val of
0: bytes:=bytes or $8;
1: bytes:=bytes or $9;
2: bytes:=bytes or $A;
3: bytes:=bytes or $B;
4: bytes:=bytes or $C;
5: bytes:=bytes or $D;
//0.5: bytes:=bytes or $E;
10: bytes:=bytes or $F;
else
Message(asmw_e_invalid_opcode_and_operands);
end;
end;
end;
end;
#$fe: // No written data
begin
exit;

View File

@ -332,6 +332,7 @@
'rdf',
'rfs',
'rfc',
'wfc',
'rmf',
'rpw',
'mnf',
@ -341,6 +342,7 @@
'asn',
'atn',
'cnf',
'cnfe',
'cos',
'dvf',
'exp',

View File

@ -350,5 +350,7 @@ attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE,
attsufNONE
);

View File

@ -127,6 +127,8 @@ reg32,reg32,immshifter \7\x2\x80 ARM32,ARMv4
reg32,reg32,immshifter \x81\xF2\x0\x0\x0 THUMB32,ARMv6T2
[ADFcc]
fpureg,fpureg,fpureg \xA1\0\x0 ARM32,FPA
fpureg,fpureg,immshifter \xA1\0\x0 ARM32,FPA
[ADRcc]
;reg32,immshifter \x33\x2\x0F ARM32,ARMv4
@ -238,15 +240,22 @@ reg32,reg32,shifterop \xE\x1\x40 ARM32,ARMv4
reg32,immshifter \xF\x3\x40 ARM32,ARMv4
[CMFcc]
fpureg,fpureg \xA2\xE\x90 ARM32,FPA
fpureg,immshifter \xA2\xE\x90 ARM32,FPA
[CMFEcc]
fpureg,fpureg \xA2\xE\xC0 ARM32,FPA
fpureg,immshifter \xA2\xE\xC0 ARM32,FPA
[STFcc]
fpureg,memam2 \xA0\xC\x00\x1\x0 ARM32,FPA
[LDFcc]
fpureg,memam2 \xA0\xC\x10\x1\x0 ARM32,FPA
[LFMcc]
reg32,imm8,fpureg \xF0\x02\x01 FPA
fpureg,imm32,memam2 \xA0\xC\x10\x2\x0 ARM32,FPA
fpureg,immshifter,memam2 \xA0\xC\x10\x2\x0 ARM32,FPA
[CLZcc]
reg32,reg32 \x80\xFA\xB0\xF0\x80 THUMB32,ARMv6T2
@ -387,8 +396,8 @@ reg32,reg32,reg32 \x80\xFB\x00\xF0\x00 THUMB32,ARMv6T2
reg32,reg32,reg32 \x14\x00\x00\x90 ARM32,ARMv4
[MVFcc]
fpureg,fpureg \xF2 FPA
fpureg,immfpu \xF2 FPA
fpureg,fpureg \xA1\1\x1 ARM32,FPA
fpureg,immshifter \xA1\1\x1 ARM32,FPA
[MVNcc]
reglo,reglo \x6B\x43\xc0 THUMB,ARMv4T
@ -485,7 +494,8 @@ reg32,reg32,reg32,shifterop \6\x0\xC0 ARM32,ARMv4
reg32,reg32,immshifter \7\x2\xC0 ARM32,ARMv4
[SFMcc]
reg32,imm8,fpureg \xF0\x02\x00 FPA
fpureg,imm32,memam2 \xA0\xC\x00\x2\x0 ARM32,FPA
fpureg,immshifter,memam2 \xA0\xC\x00\x2\x0 ARM32,FPA
[SINcc]
@ -598,6 +608,7 @@ reg32,reg32,reg32,reg32 \x85\xFB\xA0\x0\x0 THUMB32,ARMv6T2
reg32,reg32,reg32,reg32 \x16\x00\x80\x9 ARM32,ARMv4
[WFScc]
reg32 \xA2\xE\x2 ARM32,FPA
; EDSP instructions
[LDRDcc]
@ -1568,57 +1579,112 @@ void void ARM32,ARMv4T
[TANcc]
fpureg,fpureg \xA1\1\x15 ARM32,FPA
fpureg,immshifter \xA1\1\x15 ARM32,FPA
[SQTcc]
fpureg,fpureg \xA1\1\x9 ARM32,FPA
fpureg,immshifter \xA1\1\x9 ARM32,FPA
[SUFcc]
fpureg,fpureg,fpureg \xA1\0\x4 ARM32,FPA
fpureg,fpureg,immshifter \xA1\0\x4 ARM32,FPA
[RSFcc]
fpureg,fpureg,fpureg \xA1\0\x6 ARM32,FPA
fpureg,fpureg,immshifter \xA1\0\x6 ARM32,FPA
[RNDcc]
[POLcc]
fpureg,fpureg,fpureg \xA1\0\x18 ARM32,FPA
fpureg,fpureg,immshifter \xA1\0\x18 ARM32,FPA
[RDFcc]
fpureg,fpureg,fpureg \xA1\0\xA ARM32,FPA
fpureg,fpureg,immshifter \xA1\0\xA ARM32,FPA
[RFScc]
reg32 \xA2\xE\x3 ARM32,FPA
[RFCcc]
reg32 \xA2\xE\x5 ARM32,FPA
[WFCcc]
reg32 \xA2\xE\x4 ARM32,FPA
[RMFcc]
fpureg,fpureg,fpureg \xA1\0\x10 ARM32,FPA
fpureg,fpureg,immshifter \xA1\0\x10 ARM32,FPA
[RPWcc]
fpureg,fpureg,fpureg \xA1\0\xC ARM32,FPA
fpureg,fpureg,immshifter \xA1\0\xC ARM32,FPA
[MNFcc]
fpureg,fpureg \xA1\1\x3 ARM32,FPA
fpureg,immshifter \xA1\1\x3 ARM32,FPA
[MUFcc]
fpureg,fpureg,fpureg \xA1\0\x2 ARM32,FPA
fpureg,fpureg,immshifter \xA1\0\x2 ARM32,FPA
[ABScc]
fpureg,fpureg \xA1\1\x5 ARM32,FPA
fpureg,immshifter \xA1\1\x5 ARM32,FPA
[ACScc]
fpureg,fpureg \xA1\1\x19 ARM32,FPA
fpureg,immshifter \xA1\1\x19 ARM32,FPA
[ASNcc]
fpureg,fpureg \xA1\1\x17 ARM32,FPA
fpureg,immshifter \xA1\1\x17 ARM32,FPA
[ATNcc]
fpureg,fpureg \xA1\1\x1B ARM32,FPA
fpureg,immshifter \xA1\1\x1B ARM32,FPA
[CNFcc]
fpureg,fpureg \xA2\xE\xB0 ARM32,FPA
fpureg,immshifter \xA2\xE\xB0 ARM32,FPA
[CNFEcc]
fpureg,fpureg \xA2\xE\xF0 ARM32,FPA
fpureg,immshifter \xA2\xE\xF0 ARM32,FPA
[COScc]
fpureg,fpureg \xA1\1\x13 ARM32,FPA
fpureg,immshifter \xA1\1\x13 ARM32,FPA
[DVFcc]
fpureg,fpureg,fpureg \xA1\0\x8 ARM32,FPA
fpureg,fpureg,immshifter \xA1\0\x8 ARM32,FPA
[EXPcc]
[FDVcc]
fpureg,fpureg,fpureg \xA1\0\x14 ARM32,FPA
fpureg,fpureg,immshifter \xA1\0\x14 ARM32,FPA
[FLTcc]
fpureg,reg32 \xA2\xE\x00 ARM32,FPA
[FIXcc]
reg32,fpureg \xA2\xE\x10 ARM32,FPA
[FMLcc]
fpureg,fpureg,fpureg \xA1\0\x12 ARM32,FPA
fpureg,fpureg,immshifter \xA1\0\x12 ARM32,FPA
[FRDcc]
fpureg,fpureg,fpureg \xA1\0\x16 ARM32,FPA
fpureg,fpureg,immshifter \xA1\0\x16 ARM32,FPA
[LGNcc]
fpureg,fpureg \xA1\1\xD ARM32,FPA
fpureg,immshifter \xA1\1\xD ARM32,FPA
[LOGcc]
fpureg,fpureg \xA1\1\xB ARM32,FPA
fpureg,immshifter \xA1\1\xB ARM32,FPA

View File

@ -1,2 +1,2 @@
{ don't edit, this file is generated from armins.dat }
746;
808;

View File

@ -332,6 +332,7 @@ A_POL,
A_RDF,
A_RFS,
A_RFC,
A_WFC,
A_RMF,
A_RPW,
A_MNF,
@ -341,6 +342,7 @@ A_ACS,
A_ASN,
A_ATN,
A_CNF,
A_CNFE,
A_COS,
A_DVF,
A_EXP,

View File

@ -210,6 +210,20 @@
code : #129#242#0#0#0;
flags : if_thumb32 or if_armv6t2
),
(
opcode : A_ADF;
ops : 3;
optypes : (ot_fpureg,ot_fpureg,ot_fpureg,ot_none,ot_none,ot_none);
code : #161#0#0;
flags : if_arm32 or if_fpa
),
(
opcode : A_ADF;
ops : 3;
optypes : (ot_fpureg,ot_fpureg,ot_immediateshifter,ot_none,ot_none,ot_none);
code : #161#0#0;
flags : if_arm32 or if_fpa
),
(
opcode : A_ADR;
ops : 2;
@ -686,12 +700,61 @@
code : #15#3#64;
flags : if_arm32 or if_armv4
),
(
opcode : A_CMF;
ops : 2;
optypes : (ot_fpureg,ot_fpureg,ot_none,ot_none,ot_none,ot_none);
code : #162#14#144;
flags : if_arm32 or if_fpa
),
(
opcode : A_CMF;
ops : 2;
optypes : (ot_fpureg,ot_immediateshifter,ot_none,ot_none,ot_none,ot_none);
code : #162#14#144;
flags : if_arm32 or if_fpa
),
(
opcode : A_CMFE;
ops : 2;
optypes : (ot_fpureg,ot_fpureg,ot_none,ot_none,ot_none,ot_none);
code : #162#14#192;
flags : if_arm32 or if_fpa
),
(
opcode : A_CMFE;
ops : 2;
optypes : (ot_fpureg,ot_immediateshifter,ot_none,ot_none,ot_none,ot_none);
code : #162#14#192;
flags : if_arm32 or if_fpa
),
(
opcode : A_STF;
ops : 2;
optypes : (ot_fpureg,ot_memoryam2,ot_none,ot_none,ot_none,ot_none);
code : #160#12#0#1#0;
flags : if_arm32 or if_fpa
),
(
opcode : A_LDF;
ops : 2;
optypes : (ot_fpureg,ot_memoryam2,ot_none,ot_none,ot_none,ot_none);
code : #160#12#16#1#0;
flags : if_arm32 or if_fpa
),
(
opcode : A_LFM;
ops : 3;
optypes : (ot_reg32,ot_immediate or ot_bits8,ot_fpureg,ot_none,ot_none,ot_none);
code : #240#2#1;
flags : if_fpa
optypes : (ot_fpureg,ot_immediate or ot_bits32,ot_memoryam2,ot_none,ot_none,ot_none);
code : #160#12#16#2#0;
flags : if_arm32 or if_fpa
),
(
opcode : A_LFM;
ops : 3;
optypes : (ot_fpureg,ot_immediateshifter,ot_memoryam2,ot_none,ot_none,ot_none);
code : #160#12#16#2#0;
flags : if_arm32 or if_fpa
),
(
opcode : A_CLZ;
@ -1243,15 +1306,15 @@
opcode : A_MVF;
ops : 2;
optypes : (ot_fpureg,ot_fpureg,ot_none,ot_none,ot_none,ot_none);
code : #242;
flags : if_fpa
code : #161#1#1;
flags : if_arm32 or if_fpa
),
(
opcode : A_MVF;
ops : 2;
optypes : (ot_fpureg,ot_immediatefpu,ot_none,ot_none,ot_none,ot_none);
code : #242;
flags : if_fpa
optypes : (ot_fpureg,ot_immediateshifter,ot_none,ot_none,ot_none,ot_none);
code : #161#1#1;
flags : if_arm32 or if_fpa
),
(
opcode : A_MVN;
@ -1718,9 +1781,16 @@
(
opcode : A_SFM;
ops : 3;
optypes : (ot_reg32,ot_immediate or ot_bits8,ot_fpureg,ot_none,ot_none,ot_none);
code : #240#2#0;
flags : if_fpa
optypes : (ot_fpureg,ot_immediate or ot_bits32,ot_memoryam2,ot_none,ot_none,ot_none);
code : #160#12#0#2#0;
flags : if_arm32 or if_fpa
),
(
opcode : A_SFM;
ops : 3;
optypes : (ot_fpureg,ot_immediateshifter,ot_memoryam2,ot_none,ot_none,ot_none);
code : #160#12#0#2#0;
flags : if_arm32 or if_fpa
),
(
opcode : A_SMLAL;
@ -2191,6 +2261,13 @@
code : #22#0#128#9;
flags : if_arm32 or if_armv4
),
(
opcode : A_WFS;
ops : 1;
optypes : (ot_reg32,ot_none,ot_none,ot_none,ot_none,ot_none);
code : #162#14#2;
flags : if_arm32 or if_fpa
),
(
opcode : A_LDRD;
ops : 3;
@ -5221,5 +5298,362 @@
optypes : (ot_none,ot_none,ot_none,ot_none,ot_none,ot_none);
code : #0;
flags : if_arm32 or if_armv4t
),
(
opcode : A_TAN;
ops : 2;
optypes : (ot_fpureg,ot_fpureg,ot_none,ot_none,ot_none,ot_none);
code : #161#1#21;
flags : if_arm32 or if_fpa
),
(
opcode : A_TAN;
ops : 2;
optypes : (ot_fpureg,ot_immediateshifter,ot_none,ot_none,ot_none,ot_none);
code : #161#1#21;
flags : if_arm32 or if_fpa
),
(
opcode : A_SQT;
ops : 2;
optypes : (ot_fpureg,ot_fpureg,ot_none,ot_none,ot_none,ot_none);
code : #161#1#9;
flags : if_arm32 or if_fpa
),
(
opcode : A_SQT;
ops : 2;
optypes : (ot_fpureg,ot_immediateshifter,ot_none,ot_none,ot_none,ot_none);
code : #161#1#9;
flags : if_arm32 or if_fpa
),
(
opcode : A_SUF;
ops : 3;
optypes : (ot_fpureg,ot_fpureg,ot_fpureg,ot_none,ot_none,ot_none);
code : #161#0#4;
flags : if_arm32 or if_fpa
),
(
opcode : A_SUF;
ops : 3;
optypes : (ot_fpureg,ot_fpureg,ot_immediateshifter,ot_none,ot_none,ot_none);
code : #161#0#4;
flags : if_arm32 or if_fpa
),
(
opcode : A_RSF;
ops : 3;
optypes : (ot_fpureg,ot_fpureg,ot_fpureg,ot_none,ot_none,ot_none);
code : #161#0#6;
flags : if_arm32 or if_fpa
),
(
opcode : A_RSF;
ops : 3;
optypes : (ot_fpureg,ot_fpureg,ot_immediateshifter,ot_none,ot_none,ot_none);
code : #161#0#6;
flags : if_arm32 or if_fpa
),
(
opcode : A_POL;
ops : 3;
optypes : (ot_fpureg,ot_fpureg,ot_fpureg,ot_none,ot_none,ot_none);
code : #161#0#24;
flags : if_arm32 or if_fpa
),
(
opcode : A_POL;
ops : 3;
optypes : (ot_fpureg,ot_fpureg,ot_immediateshifter,ot_none,ot_none,ot_none);
code : #161#0#24;
flags : if_arm32 or if_fpa
),
(
opcode : A_RDF;
ops : 3;
optypes : (ot_fpureg,ot_fpureg,ot_fpureg,ot_none,ot_none,ot_none);
code : #161#0#10;
flags : if_arm32 or if_fpa
),
(
opcode : A_RDF;
ops : 3;
optypes : (ot_fpureg,ot_fpureg,ot_immediateshifter,ot_none,ot_none,ot_none);
code : #161#0#10;
flags : if_arm32 or if_fpa
),
(
opcode : A_RFS;
ops : 1;
optypes : (ot_reg32,ot_none,ot_none,ot_none,ot_none,ot_none);
code : #162#14#3;
flags : if_arm32 or if_fpa
),
(
opcode : A_RFC;
ops : 1;
optypes : (ot_reg32,ot_none,ot_none,ot_none,ot_none,ot_none);
code : #162#14#5;
flags : if_arm32 or if_fpa
),
(
opcode : A_WFC;
ops : 1;
optypes : (ot_reg32,ot_none,ot_none,ot_none,ot_none,ot_none);
code : #162#14#4;
flags : if_arm32 or if_fpa
),
(
opcode : A_RMF;
ops : 3;
optypes : (ot_fpureg,ot_fpureg,ot_fpureg,ot_none,ot_none,ot_none);
code : #161#0#16;
flags : if_arm32 or if_fpa
),
(
opcode : A_RMF;
ops : 3;
optypes : (ot_fpureg,ot_fpureg,ot_immediateshifter,ot_none,ot_none,ot_none);
code : #161#0#16;
flags : if_arm32 or if_fpa
),
(
opcode : A_RPW;
ops : 3;
optypes : (ot_fpureg,ot_fpureg,ot_fpureg,ot_none,ot_none,ot_none);
code : #161#0#12;
flags : if_arm32 or if_fpa
),
(
opcode : A_RPW;
ops : 3;
optypes : (ot_fpureg,ot_fpureg,ot_immediateshifter,ot_none,ot_none,ot_none);
code : #161#0#12;
flags : if_arm32 or if_fpa
),
(
opcode : A_MNF;
ops : 2;
optypes : (ot_fpureg,ot_fpureg,ot_none,ot_none,ot_none,ot_none);
code : #161#1#3;
flags : if_arm32 or if_fpa
),
(
opcode : A_MNF;
ops : 2;
optypes : (ot_fpureg,ot_immediateshifter,ot_none,ot_none,ot_none,ot_none);
code : #161#1#3;
flags : if_arm32 or if_fpa
),
(
opcode : A_MUF;
ops : 3;
optypes : (ot_fpureg,ot_fpureg,ot_fpureg,ot_none,ot_none,ot_none);
code : #161#0#2;
flags : if_arm32 or if_fpa
),
(
opcode : A_MUF;
ops : 3;
optypes : (ot_fpureg,ot_fpureg,ot_immediateshifter,ot_none,ot_none,ot_none);
code : #161#0#2;
flags : if_arm32 or if_fpa
),
(
opcode : A_ABS;
ops : 2;
optypes : (ot_fpureg,ot_fpureg,ot_none,ot_none,ot_none,ot_none);
code : #161#1#5;
flags : if_arm32 or if_fpa
),
(
opcode : A_ABS;
ops : 2;
optypes : (ot_fpureg,ot_immediateshifter,ot_none,ot_none,ot_none,ot_none);
code : #161#1#5;
flags : if_arm32 or if_fpa
),
(
opcode : A_ACS;
ops : 2;
optypes : (ot_fpureg,ot_fpureg,ot_none,ot_none,ot_none,ot_none);
code : #161#1#25;
flags : if_arm32 or if_fpa
),
(
opcode : A_ACS;
ops : 2;
optypes : (ot_fpureg,ot_immediateshifter,ot_none,ot_none,ot_none,ot_none);
code : #161#1#25;
flags : if_arm32 or if_fpa
),
(
opcode : A_ASN;
ops : 2;
optypes : (ot_fpureg,ot_fpureg,ot_none,ot_none,ot_none,ot_none);
code : #161#1#23;
flags : if_arm32 or if_fpa
),
(
opcode : A_ASN;
ops : 2;
optypes : (ot_fpureg,ot_immediateshifter,ot_none,ot_none,ot_none,ot_none);
code : #161#1#23;
flags : if_arm32 or if_fpa
),
(
opcode : A_ATN;
ops : 2;
optypes : (ot_fpureg,ot_fpureg,ot_none,ot_none,ot_none,ot_none);
code : #161#1#27;
flags : if_arm32 or if_fpa
),
(
opcode : A_ATN;
ops : 2;
optypes : (ot_fpureg,ot_immediateshifter,ot_none,ot_none,ot_none,ot_none);
code : #161#1#27;
flags : if_arm32 or if_fpa
),
(
opcode : A_CNF;
ops : 2;
optypes : (ot_fpureg,ot_fpureg,ot_none,ot_none,ot_none,ot_none);
code : #162#14#176;
flags : if_arm32 or if_fpa
),
(
opcode : A_CNF;
ops : 2;
optypes : (ot_fpureg,ot_immediateshifter,ot_none,ot_none,ot_none,ot_none);
code : #162#14#176;
flags : if_arm32 or if_fpa
),
(
opcode : A_CNFE;
ops : 2;
optypes : (ot_fpureg,ot_fpureg,ot_none,ot_none,ot_none,ot_none);
code : #162#14#240;
flags : if_arm32 or if_fpa
),
(
opcode : A_CNFE;
ops : 2;
optypes : (ot_fpureg,ot_immediateshifter,ot_none,ot_none,ot_none,ot_none);
code : #162#14#240;
flags : if_arm32 or if_fpa
),
(
opcode : A_COS;
ops : 2;
optypes : (ot_fpureg,ot_fpureg,ot_none,ot_none,ot_none,ot_none);
code : #161#1#19;
flags : if_arm32 or if_fpa
),
(
opcode : A_COS;
ops : 2;
optypes : (ot_fpureg,ot_immediateshifter,ot_none,ot_none,ot_none,ot_none);
code : #161#1#19;
flags : if_arm32 or if_fpa
),
(
opcode : A_DVF;
ops : 3;
optypes : (ot_fpureg,ot_fpureg,ot_fpureg,ot_none,ot_none,ot_none);
code : #161#0#8;
flags : if_arm32 or if_fpa
),
(
opcode : A_DVF;
ops : 3;
optypes : (ot_fpureg,ot_fpureg,ot_immediateshifter,ot_none,ot_none,ot_none);
code : #161#0#8;
flags : if_arm32 or if_fpa
),
(
opcode : A_FDV;
ops : 3;
optypes : (ot_fpureg,ot_fpureg,ot_fpureg,ot_none,ot_none,ot_none);
code : #161#0#20;
flags : if_arm32 or if_fpa
),
(
opcode : A_FDV;
ops : 3;
optypes : (ot_fpureg,ot_fpureg,ot_immediateshifter,ot_none,ot_none,ot_none);
code : #161#0#20;
flags : if_arm32 or if_fpa
),
(
opcode : A_FLT;
ops : 2;
optypes : (ot_fpureg,ot_reg32,ot_none,ot_none,ot_none,ot_none);
code : #162#14#0;
flags : if_arm32 or if_fpa
),
(
opcode : A_FIX;
ops : 2;
optypes : (ot_reg32,ot_fpureg,ot_none,ot_none,ot_none,ot_none);
code : #162#14#16;
flags : if_arm32 or if_fpa
),
(
opcode : A_FML;
ops : 3;
optypes : (ot_fpureg,ot_fpureg,ot_fpureg,ot_none,ot_none,ot_none);
code : #161#0#18;
flags : if_arm32 or if_fpa
),
(
opcode : A_FML;
ops : 3;
optypes : (ot_fpureg,ot_fpureg,ot_immediateshifter,ot_none,ot_none,ot_none);
code : #161#0#18;
flags : if_arm32 or if_fpa
),
(
opcode : A_FRD;
ops : 3;
optypes : (ot_fpureg,ot_fpureg,ot_fpureg,ot_none,ot_none,ot_none);
code : #161#0#22;
flags : if_arm32 or if_fpa
),
(
opcode : A_FRD;
ops : 3;
optypes : (ot_fpureg,ot_fpureg,ot_immediateshifter,ot_none,ot_none,ot_none);
code : #161#0#22;
flags : if_arm32 or if_fpa
),
(
opcode : A_LGN;
ops : 2;
optypes : (ot_fpureg,ot_fpureg,ot_none,ot_none,ot_none,ot_none);
code : #161#1#13;
flags : if_arm32 or if_fpa
),
(
opcode : A_LGN;
ops : 2;
optypes : (ot_fpureg,ot_immediateshifter,ot_none,ot_none,ot_none,ot_none);
code : #161#1#13;
flags : if_arm32 or if_fpa
),
(
opcode : A_LOG;
ops : 2;
optypes : (ot_fpureg,ot_fpureg,ot_none,ot_none,ot_none,ot_none);
code : #161#1#11;
flags : if_arm32 or if_fpa
),
(
opcode : A_LOG;
ops : 2;
optypes : (ot_fpureg,ot_immediateshifter,ot_none,ot_none,ot_none,ot_none);
code : #161#1#11;
flags : if_arm32 or if_fpa
)
);

View File

@ -15,8 +15,6 @@
**********************************************************************}
{$asmmode divided}
{$ifndef FPC_SYSTEM_HAS_MOVE}
{$define FPC_SYSTEM_FPC_MOVE}
{$endif FPC_SYSTEM_HAS_MOVE}