mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-16 00:49:43 +02:00
* merge fixes by Torsten Grundke
git-svn-id: trunk@23030 -
This commit is contained in:
parent
2aaa7514f4
commit
d49a88c3c8
@ -346,6 +346,10 @@ interface
|
|||||||
owner.AsmWrite(gas_opsize2str[S_YMM]);
|
owner.AsmWrite(gas_opsize2str[S_YMM]);
|
||||||
break;
|
break;
|
||||||
end;
|
end;
|
||||||
|
0: begin
|
||||||
|
owner.AsmWrite(gas_opsize2str[taicpu(hp).opsize]);
|
||||||
|
break;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
@ -57,17 +57,17 @@ interface
|
|||||||
{ !! S_LQ excluded: movzlq does not exist, movslq is processed
|
{ !! S_LQ excluded: movzlq does not exist, movslq is processed
|
||||||
as a separate instruction w/o suffix (aka movsxd), and there are
|
as a separate instruction w/o suffix (aka movsxd), and there are
|
||||||
no more instructions needing it. }
|
no more instructions needing it. }
|
||||||
att_sizesuffixstr : array[0..11] of string[2] = (
|
att_sizesuffixstr : array[0..13] of string[2] = (
|
||||||
'','BW','BL','WL','BQ','WQ',{'LQ',}'B','W','L','S','Q','T'
|
'','BW','BL','WL','BQ','WQ',{'LQ',}'B','W','L','S','Q','T','X','Y'
|
||||||
);
|
);
|
||||||
att_sizesuffix : array[0..11] of topsize = (
|
att_sizesuffix : array[0..13] of topsize = (
|
||||||
S_NO,S_BW,S_BL,S_WL,S_BQ,S_WQ,{S_LQ,}S_B,S_W,S_L,S_NO,S_Q,S_NO
|
S_NO,S_BW,S_BL,S_WL,S_BQ,S_WQ,{S_LQ,}S_B,S_W,S_L,S_NO,S_Q,S_NO,S_XMM,S_YMM
|
||||||
);
|
);
|
||||||
att_sizefpusuffix : array[0..11] of topsize = (
|
att_sizefpusuffix : array[0..13] of topsize = (
|
||||||
S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,{S_NO,}S_NO,S_NO,S_FL,S_FS,S_NO,S_FX
|
S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,{S_NO,}S_NO,S_NO,S_FL,S_FS,S_NO,S_FX,S_NO,S_NO
|
||||||
);
|
);
|
||||||
att_sizefpuintsuffix : array[0..11] of topsize = (
|
att_sizefpuintsuffix : array[0..13] of topsize = (
|
||||||
S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,{S_NO,}S_NO,S_NO,S_IL,S_IS,S_IQ,S_NO
|
S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,{S_NO,}S_NO,S_NO,S_IL,S_IS,S_IQ,S_NO,S_NO,S_NO
|
||||||
);
|
);
|
||||||
{$else x86_64}
|
{$else x86_64}
|
||||||
gas_opsize2str : array[topsize] of string[2] = ('',
|
gas_opsize2str : array[topsize] of string[2] = ('',
|
||||||
@ -81,17 +81,17 @@ interface
|
|||||||
'y'
|
'y'
|
||||||
);
|
);
|
||||||
{ suffix-to-opsize conversion tables, used in asmreadrer }
|
{ suffix-to-opsize conversion tables, used in asmreadrer }
|
||||||
att_sizesuffixstr : array[0..9] of string[2] = (
|
att_sizesuffixstr : array[0..11] of string[2] = (
|
||||||
'','BW','BL','WL','B','W','L','S','Q','T'
|
'','BW','BL','WL','B','W','L','S','Q','T','X','Y'
|
||||||
);
|
);
|
||||||
att_sizesuffix : array[0..9] of topsize = (
|
att_sizesuffix : array[0..11] of topsize = (
|
||||||
S_NO,S_BW,S_BL,S_WL,S_B,S_W,S_L,S_NO,S_NO,S_NO
|
S_NO,S_BW,S_BL,S_WL,S_B,S_W,S_L,S_NO,S_NO,S_NO,S_XMM,S_YMM
|
||||||
);
|
);
|
||||||
att_sizefpusuffix : array[0..9] of topsize = (
|
att_sizefpusuffix : array[0..11] of topsize = (
|
||||||
S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_FL,S_FS,S_NO,S_FX
|
S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_FL,S_FS,S_NO,S_FX,S_NO,S_NO
|
||||||
);
|
);
|
||||||
att_sizefpuintsuffix : array[0..9] of topsize = (
|
att_sizefpuintsuffix : array[0..11] of topsize = (
|
||||||
S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_IL,S_IS,S_IQ,S_NO
|
S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_IL,S_IS,S_IQ,S_NO,S_NO,S_NO
|
||||||
);
|
);
|
||||||
{$endif x86_64}
|
{$endif x86_64}
|
||||||
|
|
||||||
|
@ -882,6 +882,9 @@ Implementation
|
|||||||
begin
|
begin
|
||||||
actopcode:=tasmop(PtrUInt(iasmops.Find(copy(s,1,len))));
|
actopcode:=tasmop(PtrUInt(iasmops.Find(copy(s,1,len))));
|
||||||
|
|
||||||
|
if (actopcode = A_NONE) and
|
||||||
|
(upper(s) = 'MOVSD') then actopcode := A_MOVSD;
|
||||||
|
|
||||||
{ two-letter suffix is allowed by just a few instructions (movsx,movzx),
|
{ two-letter suffix is allowed by just a few instructions (movsx,movzx),
|
||||||
and it is always required whenever allowed }
|
and it is always required whenever allowed }
|
||||||
if (gas_needsuffix[actopcode]=attsufINTdual) xor (suflen=2) then
|
if (gas_needsuffix[actopcode]=attsufINTdual) xor (suflen=2) then
|
||||||
|
Loading…
Reference in New Issue
Block a user