* merge fixes by Torsten Grundke

git-svn-id: trunk@23030 -
This commit is contained in:
florian 2012-11-18 21:18:49 +00:00
parent 2aaa7514f4
commit d49a88c3c8
3 changed files with 23 additions and 16 deletions

View File

@ -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;

View File

@ -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}

View File

@ -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