mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-21 09:09:30 +02:00
new avx512 tests
git-svn-id: branches/tg74/avx512@39721 -
This commit is contained in:
parent
c611e4814a
commit
53e4b5451c
@ -339,7 +339,9 @@ const
|
||||
OT_XMMREG = OT_REGNORM or otf_reg_xmm;
|
||||
OT_XMMRM = OT_REGMEM or otf_reg_xmm;
|
||||
OT_XMEM32 = OT_REGNORM or otf_reg_xmm or otf_reg_gpr or OT_BITS32;
|
||||
OT_XMEM32_M = OT_XMEM32 or OT_VECTORMASK;
|
||||
OT_XMEM64 = OT_REGNORM or otf_reg_xmm or otf_reg_gpr or OT_BITS64;
|
||||
OT_XMEM64_M = OT_XMEM64 or OT_VECTORMASK;
|
||||
|
||||
OT_XMMREG_M = OT_XMMREG or OT_VECTORMASK;
|
||||
OT_XMMREG_MZ = OT_XMMREG or OT_VECTORMASK or OT_VECTORZERO;
|
||||
@ -355,7 +357,9 @@ const
|
||||
OT_YMMREG = OT_REGNORM or otf_reg_ymm;
|
||||
OT_YMMRM = OT_REGMEM or otf_reg_ymm;
|
||||
OT_YMEM32 = OT_REGNORM or otf_reg_ymm or otf_reg_gpr or OT_BITS32;
|
||||
OT_YMEM32_M = OT_YMEM32 or OT_VECTORMASK;
|
||||
OT_YMEM64 = OT_REGNORM or otf_reg_ymm or otf_reg_gpr or OT_BITS64;
|
||||
OT_YMEM64_M = OT_YMEM64 or OT_VECTORMASK;
|
||||
|
||||
OT_YMMREG_M = OT_YMMREG or OT_VECTORMASK;
|
||||
OT_YMMREG_MZ = OT_YMMREG or OT_VECTORMASK or OT_VECTORZERO;
|
||||
@ -370,7 +374,9 @@ const
|
||||
OT_ZMMREG = OT_REGNORM or otf_reg_zmm;
|
||||
OT_ZMMRM = OT_REGMEM or otf_reg_zmm;
|
||||
OT_ZMEM32 = OT_REGNORM or otf_reg_zmm or otf_reg_gpr or OT_BITS32;
|
||||
OT_ZMEM32_M = OT_ZMEM32 or OT_VECTORMASK;
|
||||
OT_ZMEM64 = OT_REGNORM or otf_reg_zmm or otf_reg_gpr or OT_BITS64;
|
||||
OT_ZMEM64_M = OT_ZMEM64 or OT_VECTORMASK;
|
||||
|
||||
OT_ZMMREG_M = OT_ZMMREG or OT_VECTORMASK;
|
||||
OT_ZMMREG_MZ = OT_ZMMREG or OT_VECTORMASK or OT_VECTORZERO;
|
||||
@ -390,6 +396,7 @@ const
|
||||
{ Memory operands }
|
||||
OT_MEM8 = OT_MEMORY or OT_BITS8;
|
||||
OT_MEM16 = OT_MEMORY or OT_BITS16;
|
||||
OT_MEM16_M = OT_MEM16 or OT_VECTORMASK;
|
||||
OT_MEM32 = OT_MEMORY or OT_BITS32;
|
||||
OT_MEM32_M = OT_MEMORY or OT_BITS32 or OT_VECTORMASK;
|
||||
OT_BMEM32 = OT_MEMORY or OT_BITS32 or OT_VECTORBCST;
|
||||
@ -521,7 +528,7 @@ begin
|
||||
;
|
||||
|
||||
//TG TODO delete
|
||||
if aInst = 'vpmovsxbq' then
|
||||
if aInst = 'valignd' then
|
||||
begin
|
||||
sSuffix := sSuffix;
|
||||
end;
|
||||
@ -562,11 +569,11 @@ begin
|
||||
Item.OpActive := true;
|
||||
|
||||
sSuffix := '';
|
||||
if Pos('_MZ', sl_Operand) > 0 then sSuffix := ' {k1} {z}'
|
||||
else if Pos('_M', sl_Operand) > 0 then sSuffix := ' {k1}';
|
||||
if Pos('_MZ', AnsiUppercase(sl_Operand)) > 0 then sSuffix := ' {k1} {z}'
|
||||
else if Pos('_M', AnsiUppercase(sl_Operand)) > 0 then sSuffix := ' {k1}';
|
||||
|
||||
if Pos('_ER', sl_Operand) > 0 then sSuffix := ', {ru-sae}'
|
||||
else if FSAE and (Pos('_SAE', sl_Operand) > 0) then sSuffix := ', {sae}';
|
||||
else if FSAE and (Pos('_SAE', AnsiUppercase(sl_Operand)) > 0) then sSuffix := ', {sae}';
|
||||
|
||||
Item.Values.Add('XMM0' + sSuffix);
|
||||
Item.Values.Add('XMM1' + sSuffix);
|
||||
@ -611,11 +618,11 @@ begin
|
||||
if UsePrefix then sl_Prefix := 'oword ';
|
||||
|
||||
sSuffix := '';
|
||||
if Pos('_MZ', sl_Operand) > 0 then sSuffix := ' {k1} {z}'
|
||||
else if Pos('_M', sl_Operand) > 0 then sSuffix := ' {k1}';
|
||||
if Pos('_MZ', AnsiUppercase(sl_Operand)) > 0 then sSuffix := ' {k1} {z}'
|
||||
else if Pos('_M', AnsiUppercase(sl_Operand)) > 0 then sSuffix := ' {k1}';
|
||||
|
||||
if Pos('_ER', sl_Operand) > 0 then sSuffix := ', {rd-sae}'
|
||||
else if FSAE and (Pos('_SAE', sl_Operand) > 0) then sSuffix := ', {sae}';
|
||||
if Pos('_ER', AnsiUppercase(sl_Operand)) > 0 then sSuffix := ', {rd-sae}'
|
||||
else if FSAE and (Pos('_SAE', AnsiUppercase(sl_Operand)) > 0) then sSuffix := ', {sae}';
|
||||
|
||||
Item.Values.Add('XMM0' + sSuffix);
|
||||
Item.Values.Add('XMM1' + sSuffix);
|
||||
@ -667,11 +674,11 @@ begin
|
||||
if UsePrefix then sl_Prefix := 'byte ';
|
||||
|
||||
sSuffix := '';
|
||||
if Pos('_MZ', sl_Operand) > 0 then sSuffix := ' {k1} {z}'
|
||||
else if Pos('_M', sl_Operand) > 0 then sSuffix := ' {k1}';
|
||||
if Pos('_MZ', AnsiUppercase(sl_Operand)) > 0 then sSuffix := ' {k1} {z}'
|
||||
else if Pos('_M', AnsiUppercase(sl_Operand)) > 0 then sSuffix := ' {k1}';
|
||||
|
||||
if Pos('_ER', sl_Operand) > 0 then sSuffix := ', {rd-sae}'
|
||||
else if FSAE and (Pos('_SAE', sl_Operand) > 0) then sSuffix := ', {sae}';
|
||||
if Pos('_ER', AnsiUppercase(sl_Operand)) > 0 then sSuffix := ', {rd-sae}'
|
||||
else if FSAE and (Pos('_SAE', AnsiUppercase(sl_Operand)) > 0) then sSuffix := ', {sae}';
|
||||
|
||||
Item.Values.Add('XMM0' + sSuffix);
|
||||
Item.Values.Add('XMM1' + sSuffix);
|
||||
@ -727,11 +734,11 @@ begin
|
||||
if UsePrefix then sl_Prefix := 'word ';
|
||||
|
||||
sSuffix := '';
|
||||
if Pos('_MZ', sl_Operand) > 0 then sSuffix := ' {k1} {z}'
|
||||
else if Pos('_M', sl_Operand) > 0 then sSuffix := ' {k1}';
|
||||
if Pos('_MZ', AnsiUppercase(sl_Operand)) > 0 then sSuffix := ' {k1} {z}'
|
||||
else if Pos('_M', AnsiUppercase(sl_Operand)) > 0 then sSuffix := ' {k1}';
|
||||
|
||||
if Pos('_ER', sl_Operand) > 0 then sSuffix := ', {rd-sae}'
|
||||
else if FSAE and (Pos('_SAE', sl_Operand) > 0) then sSuffix := ', {sae}';
|
||||
if Pos('_ER', AnsiUppercase(sl_Operand)) > 0 then sSuffix := ', {rd-sae}'
|
||||
else if FSAE and (Pos('_SAE', AnsiUppercase(sl_Operand)) > 0) then sSuffix := ', {sae}';
|
||||
|
||||
Item.Values.Add('XMM0' + sSuffix);
|
||||
Item.Values.Add('XMM1' + sSuffix);
|
||||
@ -785,11 +792,11 @@ begin
|
||||
Item.OpActive := true;
|
||||
|
||||
sSuffix := '';
|
||||
if Pos('_MZ', sl_Operand) > 0 then sSuffix := ' {k1} {z}'
|
||||
else if Pos('_M', sl_Operand) > 0 then sSuffix := ' {k1}';
|
||||
if Pos('_MZ', AnsiUppercase(sl_Operand)) > 0 then sSuffix := ' {k1} {z}'
|
||||
else if Pos('_M', AnsiUppercase(sl_Operand)) > 0 then sSuffix := ' {k1}';
|
||||
|
||||
if Pos('_ER', sl_Operand) > 0 then sSuffix := ', {rd-sae}'
|
||||
else if FSAE and (Pos('_SAE', sl_Operand) > 0) then sSuffix := ', {sae}';
|
||||
if Pos('_ER', AnsiUppercase(sl_Operand)) > 0 then sSuffix := ', {rd-sae}'
|
||||
else if FSAE and (Pos('_SAE', AnsiUppercase(sl_Operand)) > 0) then sSuffix := ', {sae}';
|
||||
|
||||
Item.Values.Add('YMM0' + sSuffix);
|
||||
Item.Values.Add('YMM1' + sSuffix);
|
||||
@ -835,11 +842,11 @@ begin
|
||||
if UsePrefix then sl_Prefix := 'yword ';
|
||||
|
||||
sSuffix := '';
|
||||
if Pos('_MZ', sl_Operand) > 0 then sSuffix := ' {k1} {z}'
|
||||
else if Pos('_M', sl_Operand) > 0 then sSuffix := ' {k1}';
|
||||
if Pos('_MZ', AnsiUppercase(sl_Operand)) > 0 then sSuffix := ' {k1} {z}'
|
||||
else if Pos('_M', AnsiUppercase(sl_Operand)) > 0 then sSuffix := ' {k1}';
|
||||
|
||||
if Pos('_ER', sl_Operand) > 0 then sSuffix := ', {rd-sae}'
|
||||
else if FSAE and (Pos('_SAE', sl_Operand) > 0) then sSuffix := ', {sae}';
|
||||
if Pos('_ER', AnsiUppercase(sl_Operand)) > 0 then sSuffix := ', {rd-sae}'
|
||||
else if FSAE and (Pos('_SAE', AnsiUppercase(sl_Operand)) > 0) then sSuffix := ', {sae}';
|
||||
|
||||
Item.Values.Add('YMM0' + sSuffix);
|
||||
Item.Values.Add('YMM1' + sSuffix);
|
||||
@ -890,11 +897,11 @@ begin
|
||||
Item.OpActive := true;
|
||||
|
||||
sSuffix := '';
|
||||
if Pos('_MZ', sl_Operand) > 0 then sSuffix := ' {k1} {z}'
|
||||
else if Pos('_M', sl_Operand) > 0 then sSuffix := ' {k1}';
|
||||
if Pos('_MZ', AnsiUppercase(sl_Operand)) > 0 then sSuffix := ' {k1} {z}'
|
||||
else if Pos('_M', AnsiUppercase(sl_Operand)) > 0 then sSuffix := ' {k1}';
|
||||
|
||||
if Pos('_ER', sl_Operand) > 0 then sSuffix := ', {rd-sae}'
|
||||
else if FSAE and (Pos('_SAE', sl_Operand) > 0) then sSuffix := ', {sae}';
|
||||
if Pos('_ER', AnsiUppercase(sl_Operand)) > 0 then sSuffix := ', {rd-sae}'
|
||||
else if FSAE and (Pos('_SAE', AnsiUppercase(sl_Operand)) > 0) then sSuffix := ', {sae}';
|
||||
|
||||
Item.Values.Add('ZMM0' + sSuffix);
|
||||
Item.Values.Add('ZMM1' + sSuffix);
|
||||
@ -940,11 +947,11 @@ begin
|
||||
if UsePrefix then sl_Prefix := 'zword ';
|
||||
|
||||
sSuffix := '';
|
||||
if Pos('_MZ', sl_Operand) > 0 then sSuffix := ' {k1} {z}'
|
||||
else if Pos('_M', sl_Operand) > 0 then sSuffix := ' {k1}';
|
||||
if Pos('_MZ', AnsiUppercase(sl_Operand)) > 0 then sSuffix := ' {k1} {z}'
|
||||
else if Pos('_M', AnsiUppercase(sl_Operand)) > 0 then sSuffix := ' {k1}';
|
||||
|
||||
if Pos('_ER', sl_Operand) > 0 then sSuffix := ', {rd-sae}'
|
||||
else if FSAE and (Pos('_SAE', sl_Operand) > 0) then sSuffix := ', {sae}';
|
||||
if Pos('_ER', AnsiUppercase(sl_Operand)) > 0 then sSuffix := ', {rd-sae}'
|
||||
else if FSAE and (Pos('_SAE', AnsiUppercase(sl_Operand)) > 0) then sSuffix := ', {sae}';
|
||||
|
||||
Item.Values.Add('ZMM0' + sSuffix);
|
||||
Item.Values.Add('ZMM1' + sSuffix);
|
||||
@ -998,7 +1005,8 @@ begin
|
||||
end
|
||||
else MemRegBaseIndexCombi(sl_prefix, '', FReg32Base, FReg32Index, Item.Values);
|
||||
end
|
||||
else if AnsiSameText(sl_Operand, 'MEM16') then
|
||||
else if AnsiSameText(sl_Operand, 'MEM16') or
|
||||
AnsiSameText(sl_Operand, 'MEM16_M') then
|
||||
begin
|
||||
Item.OpNumber := il_Op;
|
||||
Item.OpTyp := otMEM16;
|
||||
@ -1006,12 +1014,14 @@ begin
|
||||
|
||||
if UsePrefix then sl_Prefix := 'word ';
|
||||
|
||||
if Pos('_M', AnsiUppercase(sl_Operand)) > 0 then sSuffix := ' {k1}';
|
||||
|
||||
if x64 then
|
||||
begin
|
||||
MemRegBaseIndexCombi(sl_Prefix, '', FReg64Base, FReg64Index, Item.Values);
|
||||
MemRegBaseIndexCombi(sl_Prefix, sSuffix, FReg64Base, FReg64Index, Item.Values);
|
||||
//MemRegBaseIndexCombi(FReg6432Base, FReg6432Index, Item.Values);
|
||||
end
|
||||
else MemRegBaseIndexCombi(sl_Prefix, '', FReg32Base, FReg32Index, Item.Values);
|
||||
else MemRegBaseIndexCombi(sl_Prefix, sSuffix, FReg32Base, FReg32Index, Item.Values);
|
||||
end
|
||||
else if AnsiSameText(sl_Operand, 'MEM32') or
|
||||
AnsiSameText(sl_Operand, 'MEM32_M') then
|
||||
@ -1023,7 +1033,7 @@ begin
|
||||
if UsePrefix then sl_Prefix := 'dword ';
|
||||
|
||||
sSuffix := '';
|
||||
if Pos('_M', sl_Operand) > 0 then sSuffix := ' {k1}';
|
||||
if Pos('_M', AnsiUppercase(sl_Operand)) > 0 then sSuffix := ' {k1}';
|
||||
|
||||
|
||||
if x64 then
|
||||
@ -1043,7 +1053,7 @@ begin
|
||||
if UsePrefix then sl_Prefix := 'qword ';
|
||||
|
||||
sSuffix := '';
|
||||
if Pos('_M', sl_Operand) > 0 then sSuffix := ' {k1}';
|
||||
if Pos('_M', AnsiUppercase(sl_Operand)) > 0 then sSuffix := ' {k1}';
|
||||
|
||||
if x64 then
|
||||
begin
|
||||
@ -1062,7 +1072,7 @@ begin
|
||||
if UsePrefix then sl_Prefix := 'oword ';
|
||||
|
||||
sSuffix := '';
|
||||
if Pos('_M', sl_Operand) > 0 then sSuffix := ' {k1}';
|
||||
if Pos('_M', AnsiUppercase(sl_Operand)) > 0 then sSuffix := ' {k1}';
|
||||
|
||||
if x64 then
|
||||
begin
|
||||
@ -1081,7 +1091,7 @@ begin
|
||||
if UsePrefix then sl_Prefix := 'yword ';
|
||||
|
||||
sSuffix := '';
|
||||
if Pos('_M', sl_Operand) > 0 then sSuffix := ' {k1}';
|
||||
if Pos('_M', AnsiUppercase(sl_Operand)) > 0 then sSuffix := ' {k1}';
|
||||
|
||||
|
||||
if x64 then
|
||||
@ -1101,7 +1111,7 @@ begin
|
||||
if UsePrefix then sl_Prefix := 'zword ';
|
||||
|
||||
sSuffix := '';
|
||||
if Pos('_M', sl_Operand) > 0 then sSuffix := ' {k1}';
|
||||
if Pos('_M', AnsiUppercase(sl_Operand)) > 0 then sSuffix := ' {k1}';
|
||||
|
||||
|
||||
if x64 then
|
||||
@ -1438,7 +1448,7 @@ begin
|
||||
Item.OpTyp := otKREG;
|
||||
Item.OpActive := true;
|
||||
|
||||
if Pos('_M', sl_Operand) > 0 then sSuffix := ' {k1}';
|
||||
if Pos('_M', AnsiUppercase(sl_Operand)) > 0 then sSuffix := ' {k1}';
|
||||
|
||||
if UsePrefix then sl_Prefix := '';
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user