From 3f05580f2121e342e8fba1605438a68769155c62 Mon Sep 17 00:00:00 2001 From: tg74 Date: Mon, 2 Nov 2020 05:22:22 +0000 Subject: [PATCH] clean up git-svn-id: branches/tg74/avx512-0037785@47281 - --- compiler/x86/cpubase.pas | 1 - compiler/x86/rax86.pas | 142 +++------------------------ tests/utils/avx/asmtestgenerator.pas | 5 - tests/utils/avx/avxopcodes.pas | 63 ++---------- 4 files changed, 25 insertions(+), 186 deletions(-) diff --git a/compiler/x86/cpubase.pas b/compiler/x86/cpubase.pas index d6e20d9be6..208cb2a82c 100644 --- a/compiler/x86/cpubase.pas +++ b/compiler/x86/cpubase.pas @@ -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; diff --git a/compiler/x86/rax86.pas b/compiler/x86/rax86.pas index 4def3eec0b..5dcd4e8e8c 100644 --- a/compiler/x86/rax86.pas +++ b/compiler/x86/rax86.pas @@ -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; diff --git a/tests/utils/avx/asmtestgenerator.pas b/tests/utils/avx/asmtestgenerator.pas index 2f94b55fd0..a94812cee1 100644 --- a/tests/utils/avx/asmtestgenerator.pas +++ b/tests/utils/avx/asmtestgenerator.pas @@ -567,11 +567,6 @@ begin ; - //TG TODO delete - if aInst = 'vpmovw2m' then - begin - sSuffix := sSuffix; - end; for il_Op := 1 to 4 do begin diff --git a/tests/utils/avx/avxopcodes.pas b/tests/utils/avx/avxopcodes.pas index 93bb51f09f..1167bba32d 100644 --- a/tests/utils/avx/avxopcodes.pas +++ b/tests/utils/avx/avxopcodes.pas @@ -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;