git-svn-id: branches/tg74/avx512-0037785@47281 -
This commit is contained in:
tg74 2020-11-02 05:22:22 +00:00
parent 12ccccd610
commit 3f05580f21
4 changed files with 25 additions and 186 deletions

View File

@ -505,7 +505,6 @@ implementation
end;
R_ADDRESSREGISTER:
case reg of
//NR_K0..NR_K7: reg_cgsize:=OS_64;
NR_K0..NR_K7: reg_cgsize:=OS_NO;
else internalerror(2003031801);
end;

View File

@ -1451,114 +1451,23 @@ var
begin
if opsize<>S_NO then
exit;
// case ops of
// 0 : ;
// 1 :
// begin
// { "push es" must be stored as a long PM }
// if ((opcode=A_PUSH) or
// (opcode=A_POP)) and
// (operands[1].opr.typ=OPR_REGISTER) and
// is_segment_reg(operands[1].opr.reg) then
//{$ifdef i8086}
// opsize:=S_W
//{$else i8086}
// opsize:=S_L
//{$endif i8086}
// else
// opsize:=tx86operand(operands[1]).opsize;
// end;
// 2 :
// begin
// case opcode of
// A_MOVZX,A_MOVSX :
// begin
// if tx86operand(operands[1]).opsize=S_NO then
// begin
// tx86operand(operands[1]).opsize:=S_B;
// if (m_delphi in current_settings.modeswitches) then
// Message(asmr_w_unable_to_determine_reference_size_using_byte)
// else
// Message(asmr_e_unable_to_determine_reference_size);
// end;
// case tx86operand(operands[1]).opsize of
// S_W :
// case tx86operand(operands[2]).opsize of
// S_L :
// opsize:=S_WL;
//{$ifdef x86_64}
// S_Q :
// opsize:=S_WQ;
//{$endif}
// else
// ;
// end;
// S_B :
// begin
// case tx86operand(operands[2]).opsize of
// S_W :
// opsize:=S_BW;
// S_L :
// opsize:=S_BL;
//{$ifdef x86_64}
// S_Q :
// opsize:=S_BQ;
//{$endif}
// else
// ;
// end;
// end;
// else
// ;
// end;
// end;
// A_MOVSS,
// A_VMOVSS,
// A_MOVD : { movd is a move from a mmx register to a
// 32 bit register or memory, so no opsize is correct here PM }
// //exit;
// ;
// A_MOVQ :
// opsize:=S_IQ;
// A_CVTSI2SS,
// A_CVTSI2SD,
// A_VCVTPD2DQ,
// A_VCVTPD2PS,
// A_VCVTTPD2DQ,
// A_VCVTPD2UDQ,
// A_VCVTQQ2PS,
// A_VCVTTPD2UDQ,
// A_VCVTUQQ2PS,
//
// A_OUT :
// opsize:=tx86operand(operands[1]).opsize;
// else
// opsize:=tx86operand(operands[2]).opsize;
// end;
// end;
// 3 :
// begin
// case opcode of
// A_VCVTSI2SS,
// A_VCVTSI2SD,
// A_VCVTUSI2SS,
// A_VCVTUSI2SD:
// opsize:=tx86operand(operands[1]).opsize;
// A_VFPCLASSPD,
// A_VFPCLASSPS:
// opsize:=tx86operand(operands[2]).opsize;
// else
// opsize:=tx86operand(operands[ops]).opsize;
// end;
// end;
// 4 :
// opsize:=tx86operand(operands[ops]).opsize;
//
// end;
// iops := S_NO;
case ops of
0,1: iops := opsize;
0 : ;
1 :
begin
{ "push es" must be stored as a long PM }
if ((opcode=A_PUSH) or
(opcode=A_POP)) and
(operands[1].opr.typ=OPR_REGISTER) and
is_segment_reg(operands[1].opr.reg) then
{$ifdef i8086}
opsize:=S_W
{$else i8086}
opsize:=S_L
{$endif i8086}
else
opsize:=tx86operand(operands[1]).opsize;
end;
2 : begin
case opcode of
A_MOVZX,A_MOVSX :
@ -1644,26 +1553,7 @@ begin
end;
4 :
opsize:=tx86operand(operands[ops]).opsize;
end;
// todo delete (only test)
// if opsize <> iops then
// begin
// if not isBCastMemRef then
// Message1(asmr_w_adding_explicit_args_fXX, std_op2str[opcode] + 'no broadcast')
// else
// begin
// Message1(asmr_w_adding_explicit_args_fXX, std_op2str[opcode] + ' -broadcast- ' + GetEnumName(TypeInfo(topsize), ord(opsize)) + ':' + GetEnumName(TypeInfo(topsize), ord(iops)));
//
//
//// writeln(GetEnumName(TypeInfo(topsize), ord(opsize)));
//// writeln(GetEnumName(TypeInfo(topsize), ord(iops)));
// end;
//
// end;
// opsize := iops;
end;

View File

@ -567,11 +567,6 @@ begin
;
//TG TODO delete
if aInst = 'vpmovw2m' then
begin
sSuffix := sSuffix;
end;
for il_Op := 1 to 4 do
begin

View File

@ -34,12 +34,21 @@ uses SysUtils, AsmTestGenerator, Dialogs;
{ TAVXTestGenerator }
constructor TAVXTestGenerator.Create;
var
i: integer;
begin
inherited;
FOpCodeList := TStringList.Create;
FOpCodeList.Duplicates := dupIgnore;
FOpCodeList.Sorted := true;
Init;
FOpCodeList.Sorted := false;
for i := 0 to FOpCodeList.Count - 1 do
FOpCodeList[i] := AnsiLowerCase(FOpCodeList[i]);
end;
destructor TAVXTestGenerator.Destroy;
@ -2441,24 +2450,6 @@ begin
FOpCodeList.Add('vpblendmw,1,1,1,xmmreg_mz,xmmreg,xmmrm,');
FOpCodeList.Add('vpblendmw,1,1,1,ymmreg_mz,ymmreg,ymmrm,');
FOpCodeList.Add('vpblendmw,1,1,1,zmmreg_mz,zmmreg,zmmrm,');
FOpCodeList.Add('vpbroadcastb,1,1,1,xmmreg_mz,mem8,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,xmmreg_mz,reg16,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,xmmreg_mz,reg32,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,xmmreg_mz,reg64,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,xmmreg_mz,reg8,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,xmmreg_mz,xmmreg,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,ymmreg_mz,mem8,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,ymmreg_mz,reg16,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,ymmreg_mz,reg32,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,ymmreg_mz,reg64,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,ymmreg_mz,reg8,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,ymmreg_mz,xmmreg,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,zmmreg_mz,mem8,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,zmmreg_mz,reg16,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,zmmreg_mz,reg32,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,zmmreg_mz,reg64,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,zmmreg_mz,reg8,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,zmmreg_mz,xmmreg,,');
FOpCodeList.Add('vpbroadcastd,1,1,1,xmmreg_mz,mem32,,');
FOpCodeList.Add('vpbroadcastd,1,1,1,xmmreg_mz,reg32,,');
FOpCodeList.Add('vpbroadcastd,1,1,1,xmmreg_mz,xmmreg,,');
@ -2483,21 +2474,6 @@ begin
FOpCodeList.Add('vpbroadcastq,1,1,1,zmmreg_mz,mem64,,');
FOpCodeList.Add('vpbroadcastq,1,1,1,zmmreg_mz,reg64,,');
FOpCodeList.Add('vpbroadcastq,1,1,1,zmmreg_mz,xmmreg,,');
FOpCodeList.Add('vpbroadcastw,1,1,1,xmmreg_mz,mem16,,');
FOpCodeList.Add('vpbroadcastw,1,1,1,xmmreg_mz,reg16,,');
FOpCodeList.Add('vpbroadcastw,1,1,1,xmmreg_mz,reg32,,');
FOpCodeList.Add('vpbroadcastw,1,1,1,xmmreg_mz,reg64,,');
FOpCodeList.Add('vpbroadcastw,1,1,1,xmmreg_mz,xmmreg,,');
FOpCodeList.Add('vpbroadcastw,1,1,1,ymmreg_mz,mem16,,');
FOpCodeList.Add('vpbroadcastw,1,1,1,ymmreg_mz,reg16,,');
FOpCodeList.Add('vpbroadcastw,1,1,1,ymmreg_mz,reg32,,');
FOpCodeList.Add('vpbroadcastw,1,1,1,ymmreg_mz,reg64,,');
FOpCodeList.Add('vpbroadcastw,1,1,1,ymmreg_mz,xmmreg,,');
FOpCodeList.Add('vpbroadcastw,1,1,1,zmmreg_mz,mem16,,');
FOpCodeList.Add('vpbroadcastw,1,1,1,zmmreg_mz,reg16,,');
FOpCodeList.Add('vpbroadcastw,1,1,1,zmmreg_mz,reg32,,');
FOpCodeList.Add('vpbroadcastw,1,1,1,zmmreg_mz,reg64,,');
FOpCodeList.Add('vpbroadcastw,1,1,1,zmmreg_mz,xmmreg,,');
FOpCodeList.Add('vpcmpb,1,1,1,kreg_m,xmmreg,xmmrm,imm8');
FOpCodeList.Add('vpcmpb,1,1,1,kreg_m,ymmreg,ymmrm,imm8');
FOpCodeList.Add('vpcmpb,1,1,1,kreg_m,zmmreg,zmmrm,imm8');
@ -3322,20 +3298,6 @@ begin
NewOpCode := ansilowercase(sl[0]);
if NewOpCode <> '' then
begin
//if NewOpCode <> LastOpCode then
//begin
// if LastOpCode <> '' then
// begin
// SaveFile(slAsm, LastOpCode, aDestPath, aFileExt, aHeaderList, aFooterList);
// writeln(format('%s%s%s', [aDestPath, LastOpCode, aFileExt]));
//
// slAsm.Clear;
// LastOpCode := NewOpCode;
// end
// else LastOpCode := NewOpCode;
//end;
if (not(aX64) and (sl[1] = '1')) or // i386
(aX64 and (sl[2] = '1')) then // x86_64
begin
@ -3358,13 +3320,6 @@ begin
end;
end;
end;
if NewOpCode <> '' then
begin
//SaveFile(slAsm, NewOpCode, aDestPath, aFileExt, aHeaderList, aFooterList);
//writeln(format('%s%s%s', [aDestPath, NewOpCode, aFileExt]));
end;
finally
FreeAndNil(slAsm);
end;