bugfix external gnu-assembler - special handling suffix vcvtpd.. destination operand = xmm =>> suffix x, destination ymm or zmm =>> no suffix

git-svn-id: branches/tg74/avx512-0037785@47145 -
This commit is contained in:
tg74 2020-10-20 08:00:39 +00:00
parent 4a6d21b1c9
commit d8fa3dd4ed
4 changed files with 17 additions and 2 deletions

View File

@ -320,6 +320,11 @@ begin
dec(attopcode[0]); dec(attopcode[0]);
attsuffix:='attsufMM'; attsuffix:='attsufMM';
end; end;
'N' :
begin
dec(attopcode[0]);
attsuffix:='attsufMMX';
end;
'X' : 'X' :
begin begin
dec(attopcode[0]); dec(attopcode[0]);

View File

@ -29,7 +29,7 @@ interface
cgbase,cpubase; cgbase,cpubase;
type type
TAttSuffix = (AttSufNONE,AttSufINT,AttSufFPU,AttSufFPUint,AttSufINTdual,AttSufMM); TAttSuffix = (AttSufNONE,AttSufINT,AttSufFPU,AttSufFPUint,AttSufINTdual,AttSufMM,AttSufMMX);
const const
{ include mnemonic strings } { include mnemonic strings }
@ -75,6 +75,10 @@ interface
att_sizemmsuffix : array[0..14] of topsize = ( att_sizemmsuffix : array[0..14] of topsize = (
S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,{S_NO,}S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_XMM,S_YMM,S_ZMM S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,{S_NO,}S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_XMM,S_YMM,S_ZMM
); );
att_sizemmxsuffix : array[0..14] of topsize = (
S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,{S_NO,}S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_XMM,S_NO,S_NO
);
{$else x86_64} {$else x86_64}
gas_opsize2str : array[topsize] of string[2] = ('', gas_opsize2str : array[topsize] of string[2] = ('',
'b','w','l','q','bw','bl','wl', 'b','w','l','q','bw','bl','wl',
@ -103,6 +107,10 @@ interface
att_sizemmsuffix : array[0..12] of topsize = ( att_sizemmsuffix : array[0..12] of topsize = (
S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_XMM,S_YMM,S_ZMM S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_XMM,S_YMM,S_ZMM
); );
att_sizemmxsuffix : array[0..12] of topsize = (
S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_NO,S_XMM,S_NO,S_NO
);
{$endif x86_64} {$endif x86_64}

View File

@ -239,7 +239,7 @@ begin
; ;
end; end;
end end
else if gas_needsuffix[opcode]=AttSufMM then else if gas_needsuffix[opcode] in [AttSufMM, AttSufMMX] then
begin begin
if (opr.typ=OPR_Reference) then if (opr.typ=OPR_Reference) then
begin begin

View File

@ -1041,6 +1041,8 @@ Implementation
actopsize:=att_sizefpuintsuffix[sufidx] actopsize:=att_sizefpuintsuffix[sufidx]
else if gas_needsuffix[actopcode]=attsufMM then else if gas_needsuffix[actopcode]=attsufMM then
actopsize:=att_sizemmsuffix[sufidx] actopsize:=att_sizemmsuffix[sufidx]
else if gas_needsuffix[actopcode]=attsufMMX then
actopsize:=att_sizemmXsuffix[sufidx]
else else
actopsize:=att_sizesuffix[sufidx]; actopsize:=att_sizesuffix[sufidx];
{ only accept suffix from the same category that the opcode belongs to } { only accept suffix from the same category that the opcode belongs to }