瀏覽代碼

clean up

git-svn-id: branches/tg74/avx512-0037785@47281 -
tg74 4 年之前
父節點
當前提交
3f05580f21
共有 4 個文件被更改,包括 25 次插入186 次删除
  1. 0 1
      compiler/x86/cpubase.pas
  2. 16 126
      compiler/x86/rax86.pas
  3. 0 5
      tests/utils/avx/asmtestgenerator.pas
  4. 9 54
      tests/utils/avx/avxopcodes.pas

+ 0 - 1
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;

+ 16 - 126
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;
 
 

+ 0 - 5
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

+ 9 - 54
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;