mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-13 11:49:30 +02:00
bugfix avx512 OS32bit EVEX-coding
git-svn-id: branches/tg74/avx512@39661 -
This commit is contained in:
parent
6985da744b
commit
6f64177c6a
@ -3622,6 +3622,12 @@ implementation
|
||||
end;
|
||||
until false;
|
||||
|
||||
{$ifndef x86_64}
|
||||
EVEXv := 1;
|
||||
EVEXx := 1;
|
||||
EVEXr := 1;
|
||||
{$endif}
|
||||
|
||||
if needed_VEX or needed_EVEX then
|
||||
begin
|
||||
if (opmode > ops) or
|
||||
@ -3633,7 +3639,9 @@ implementation
|
||||
begin
|
||||
VEXvvvv := VEXvvvv or ($0F shl 3); // set VEXvvvv bits (bits 6-3) to 1
|
||||
EVEXvvvv := $0F;
|
||||
if not(needed_vsib) then EVEXv := 1;
|
||||
{$ifdef x86_64}
|
||||
if not(needed_vsib) then EVEXv := 1;
|
||||
{$endif x86_64}
|
||||
end
|
||||
else if oper[opmode]^.typ = top_reg then
|
||||
begin
|
||||
@ -3647,6 +3655,7 @@ implementation
|
||||
if getsupreg(oper[opmode]^.reg) and $10 = 0 then EVEXv := 1; //TG TODO check
|
||||
{$else}
|
||||
VEXvvvv := VEXvvvv or (1 shl 6);
|
||||
EVEXvvvv := EVEXvvvv or (1 shl 3);
|
||||
{$endif x86_64}
|
||||
end
|
||||
else Internalerror(777101);
|
||||
@ -3722,6 +3731,8 @@ implementation
|
||||
bytes[1] := ((EVEXmm and $03) shl 0) or
|
||||
{$ifdef x86_64}
|
||||
((not(rex) and $05) shl 5) or
|
||||
{$else}
|
||||
(($05) shl 5) or
|
||||
{$endif x86_64}
|
||||
((EVEXr and $01) shl 4) or
|
||||
((EVEXx and $01) shl 6);
|
||||
|
Loading…
Reference in New Issue
Block a user