diff options
author | tg74 <tg74@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2021-03-03 05:26:29 +0000 |
---|---|---|
committer | tg74 <tg74@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2021-03-03 05:26:29 +0000 |
commit | 82de5ab95e5eaf4ae9af53be425357ccad5ad93d (patch) | |
tree | 1aead120b2275d1c5b4662ef0d96338be5b24087 | |
parent | d8270a354d104dcb0f848af612d815b09012dac5 (diff) | |
download | fpc-82de5ab95e5eaf4ae9af53be425357ccad5ad93d.tar.gz |
avxtestgenerator: working on new tests for compressed disp8*N
git-svn-id: https://svn.freepascal.org/svn/fpc/branches/tg74@48872 3ad0048d-3df7-0310-abae-a5850022a9f2
-rw-r--r-- | avx512-0037785/tests/utils/avx/asmtestgenerator.pas | 115 |
1 files changed, 112 insertions, 3 deletions
diff --git a/avx512-0037785/tests/utils/avx/asmtestgenerator.pas b/avx512-0037785/tests/utils/avx/asmtestgenerator.pas index f000467c29..5b03a6908d 100644 --- a/avx512-0037785/tests/utils/avx/asmtestgenerator.pas +++ b/avx512-0037785/tests/utils/avx/asmtestgenerator.pas @@ -44,11 +44,17 @@ type omKXM, omKYM, omKZM, omKXB32, omKXB64, omKYB32, omKYB64, omKZB32, omKZB64, + omKXB32I, omKXB64I, omKXMI, omKYB32I, omKYB64I, omKYMI, omKZB32I, omKZB64I, omKZMI, + omKMI, omKB32I, omKB64I, omMXI, omMYI, omMZI, omXXM, omXXB32, omXXB64, omXMI, omXB32I, omXB64I, + omXXMI, omXXB32I, omXXB64I, + omYYM, omYYB32, omYYB64, omYMI, omYB32I, omYB64I, - omZZM, omZZB32, omZZB64, omZMI, omZB32I, omZB64I); + omYYMI, omYYB32I, omYYB64I, + omZZM, omZZB32, omZZB64, omZMI, omZB32I, omZB64I, + omZZMI, omZZB32I, omZZB64I); TOperandListItem = class(TObject) private @@ -4789,7 +4795,7 @@ begin // TODO delete - if il_Operands = 2 then + if il_Operands = 4 then case il_Operands of 2: begin @@ -4994,6 +5000,102 @@ begin writeln('offen : ' + sLogMsg + ' (' + aInst + ')'); end; end; + 4: if (OItem1.OpTyp = otKReg) and + (OItem2.OpTyp = otXMMReg) and + (OItem3.OpTyp = otB32) and + (OItem4.OpTyp = otIMM8) then OpMode := omKXB32I + else if (OItem1.OpTyp = otKReg) and + (OItem2.OpTyp = otXMMReg) and + (OItem3.OpTyp = otB64) and + (OItem4.OpTyp = otIMM8) then OpMode := omKXB64I + else if (OItem1.OpTyp = otKReg) and + (OItem2.OpTyp = otXMMReg) and + (OItem3.OpTyp in MEMTYPES) and + (OItem4.OpTyp = otIMM8) then OpMode := omKXMI + + else if (OItem1.OpTyp = otKReg) and + (OItem2.OpTyp = otYMMReg) and + (OItem3.OpTyp = otB32) and + (OItem4.OpTyp = otIMM8) then OpMode := omKYB32I + else if (OItem1.OpTyp = otKReg) and + (OItem2.OpTyp = otYMMReg) and + (OItem3.OpTyp = otB64) and + (OItem4.OpTyp = otIMM8) then OpMode := omKYB64I + else if (OItem1.OpTyp = otKReg) and + (OItem2.OpTyp = otYMMReg) and + (OItem3.OpTyp in MEMTYPES) and + (OItem4.OpTyp = otIMM8) then OpMode := omKYMI + + else if (OItem1.OpTyp = otKReg) and + (OItem2.OpTyp = otZMMReg) and + (OItem3.OpTyp = otB32) and + (OItem4.OpTyp = otIMM8) then OpMode := omKZB32I + else if (OItem1.OpTyp = otKReg) and + (OItem2.OpTyp = otZMMReg) and + (OItem3.OpTyp = otB64) and + (OItem4.OpTyp = otIMM8) then OpMode := omKZB64I + else if (OItem1.OpTyp = otKReg) and + (OItem2.OpTyp = otZMMReg) and + (OItem3.OpTyp in MEMTYPES) and + (OItem4.OpTyp = otIMM8) then OpMode := omKZMI + + else if (OItem1.OpTyp = otXMMReg) and + (OItem2.OpTyp = otXMMReg) and + (OItem3.OpTyp = otB32) and + (OItem4.OpTyp = otIMM8) then OpMode := omXXB32I + else if (OItem1.OpTyp = otXMMReg) and + (OItem2.OpTyp = otXMMReg) and + (OItem3.OpTyp = otB64) and + (OItem4.OpTyp = otIMM8) then OpMode := omXXB64I + else if (OItem1.OpTyp = otYMMReg) and + (OItem2.OpTyp = otYMMReg) and + (OItem3.OpTyp = otB32) and + (OItem4.OpTyp = otIMM8) then OpMode := omYYB32I + else if (OItem1.OpTyp = otYMMReg) and + (OItem2.OpTyp = otYMMReg) and + (OItem3.OpTyp = otB64) and + (OItem4.OpTyp = otIMM8) then OpMode := omYYB64I + else if (OItem1.OpTyp = otZMMReg) and + (OItem2.OpTyp = otZMMReg) and + (OItem3.OpTyp = otB32) and + (OItem4.OpTyp = otIMM8) then OpMode := omZZB32I + else if (OItem1.OpTyp = otZMMReg) and + (OItem2.OpTyp = otZMMReg) and + (OItem3.OpTyp = otB64) and + (OItem4.OpTyp = otIMM8) then OpMode := omZZB64I + + + else if (OItem1.OpTyp = otXMMReg) and + (OItem2.OpTyp = otXMMReg) and + (OItem3.OpTyp in MEMTYPES) and + (OItem4.OpTyp = otIMM8) then OpMode := omXXMI + else if (OItem1.OpTyp = otYMMReg) and + (OItem2.OpTyp = otYMMReg) and + (OItem3.OpTyp in MEMTYPES) and + (OItem4.OpTyp = otIMM8) then OpMode := omYYMI + else if (OItem1.OpTyp = otZMMReg) and + (OItem2.OpTyp = otZMMReg) and + (OItem3.OpTyp in MEMTYPES) and + (OItem4.OpTyp = otIMM8) then OpMode := omZZMI + else + begin + sLogMsg := ''; + sLogMsg := MapOperand(OItem1.Optyp) + MapOperand(OItem2.Optyp) + MapOperand(OItem3.Optyp) + MapOperand(OItem4.Optyp); + if sLogMsg <> '' then + begin + + if (sLogMsg <> 'KXXI') and + (sLogMsg <> 'KYYI') and + (sLogMsg <> 'KZZI') and + (sLogMsg <> 'XXRI') and + (sLogMsg <> 'XXXI') and + (sLogMsg <> 'YYYI') and + (sLogMsg <> 'ZZZI') then + + writeln('offen : ' + sLogMsg + ' (' + aInst + ')'); + end; + end; + else; end; @@ -5432,10 +5534,17 @@ begin result.Add(AsmCodeBlockCompare(iAsmCounter, cmKORTESTNC)); end; + + omKXB32I, omKXB64I, omKXMI, omKYB32I, omKYB64I, omKYMI, omKZB32I, omKZB64I, omKZMI:; + omXXMI, omXXB32I, omXXB64I:; + omYYMI, omYYB32I, omYYB64I:; + omZZMI, omZZB32I, omZZB64I:; + + else begin sLogMsg := ''; sLogMsg := MapOperand(OItem1.Optyp) + MapOperand(OItem2.Optyp) + MapOperand(OItem3.Optyp); - writeln('offen - : ' + sLogMsg + ' (' + aInst + ')'); + //writeln('offen - : ' + sLogMsg + ' (' + aInst + ')'); end; end; |