Browse Source

avxtestgenerator: working on new tests for compressed disp8*N

git-svn-id: branches/tg74/avx512-0037785@48683 -
tg74 4 năm trước cách đây
mục cha
commit
6acf8abcc9
1 tập tin đã thay đổi với 24 bổ sung1 xóa
  1. 24 1
      tests/utils/avx/asmtestgenerator.pas

+ 24 - 1
tests/utils/avx/asmtestgenerator.pas

@@ -39,6 +39,7 @@ type
   TOpMode = (omUnknown,
              omKXM, omKYM, omKZM,
              omKXB32, omKXB64, omKYB32, omKYB64, omKZB32, omKZB64,
+             omKMI, omKB32I, omKB64I,
              omXXM, omXXB32, omXXB64, omXMI, omXB32I, omXB64I,
              omYYM, omYYB32, omYYB64, omYMI, omYB32I, omYB64I,
              omZZM, omZZB32, omZZB64, omZMI, omZB32I, omZB64I);
@@ -4810,6 +4811,15 @@ begin
                             (OItem2.OpTyp = otZMMReg) and
                             (OItem3.OpTyp = otB64) then OpMode := omKZB64
 
+                    else if (OItem1.OpTyp = otKReg) and
+                            (OItem2.OpTyp in MEMTYPES) and
+                            (OItem3.OpTyp = otIMM8) then OpMode := omKMI
+                    else if (OItem1.OpTyp = otKReg) and
+                            (OItem2.OpTyp = otB32) and
+                            (OItem3.OpTyp = otIMM8) then OpMode := omKB32I
+                    else if (OItem1.OpTyp = otKReg) and
+                            (OItem2.OpTyp = otB64) and
+                            (OItem3.OpTyp = otIMM8) then OpMode := omKB64I
 
                     else if (OItem1.OpTyp = otXMMReg) and
                             (OItem2.OpTyp = otXMMReg) and
@@ -4950,7 +4960,7 @@ begin
                           else sMRef := '';
                         end;
 
-                        if ParseBaseIndexReg(OItem3.Values[il_Op3], sBaseReg, sIndexReg) then
+                        if ParseBaseIndexReg(sMRef, sBaseReg, sIndexReg) then
                         begin
                           result.Add(format('%20s %s',               ['    pop', sBaseReg]));
                           result.Add(format('%20s %s',               ['   push', sBaseReg]));
@@ -4988,7 +4998,20 @@ begin
 
                                      result.Add(AsmCodeBlockCompare(iAsmCounter, cmXORTestNZ));
                                    end;
+                            omKMI: begin
+                                     result.Add(format('%20s%6s,%6s + $2000, %s', [aInst, 'K2', OItem2.Values[il_Op2], OItem3.Values[il_Op3] ]));
+                                     result.Add(format('%20s%6s,%6s, %s', ['kxorq', 'K2', OItem1.Values[il_Op1], 'K2']));
 
+                                     result.Add(AsmCodeBlockCompare(iAsmCounter, cmXORTestNZ));
+                                   end;
+                            omKB32I,
+                            omKB64I:
+                                   begin
+                                     result.Add(format('%20s%6s,%6s + $2000, %s', [aInst, 'K2', OItem2.Values[il_Op2], OItem3.Values[il_Op3] ]));
+                                     result.Add(format('%20s%6s,%6s, %s', ['kxorq', 'K2', OItem1.Values[il_Op1], 'K2']));
+
+                                     result.Add(AsmCodeBlockCompare(iAsmCounter, cmXORTestNZ));
+                                   end;
                           omXB32I,
                           omXB64I: begin
                                      sMREF := OItem2.Values[il_Op2];