new avx512 tests

git-svn-id: branches/tg74/avx512@39721 -
This commit is contained in:
tg74 2018-09-10 07:47:25 +00:00
parent c611e4814a
commit 53e4b5451c
2 changed files with 2995 additions and 1584 deletions

View File

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