summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortg74 <tg74@3ad0048d-3df7-0310-abae-a5850022a9f2>2020-11-11 05:07:56 +0000
committertg74 <tg74@3ad0048d-3df7-0310-abae-a5850022a9f2>2020-11-11 05:07:56 +0000
commit1e957364ad47dfb4f7f305bcde0aa9179cd52c76 (patch)
tree58c34aa65543cdc72d2ed6e87e58a1e580caffa4
parentd6fb28a37107f113834fa31451aa38b958feace6 (diff)
downloadfpc-1e957364ad47dfb4f7f305bcde0aa9179cd52c76.tar.gz
bugfix internal assembler compiling vpmov*
git-svn-id: https://svn.freepascal.org/svn/fpc/branches/tg74@47386 3ad0048d-3df7-0310-abae-a5850022a9f2
-rw-r--r--avx512-0037785/compiler/x86/rax86.pas32
1 files changed, 31 insertions, 1 deletions
diff --git a/avx512-0037785/compiler/x86/rax86.pas b/avx512-0037785/compiler/x86/rax86.pas
index 2b727f28ac..6c52bc3af3 100644
--- a/avx512-0037785/compiler/x86/rax86.pas
+++ b/avx512-0037785/compiler/x86/rax86.pas
@@ -544,6 +544,21 @@ begin
end;
end;
end;
+ msiMemRegx16y32z64:
+ begin
+ for j := 1 to ops do
+ begin
+ if operands[j].Opr.Typ = OPR_REGISTER then
+ begin
+ case getsubreg(operands[j].opr.reg) of
+ R_SUBMMX: memrefsize := 16;
+ R_SUBMMY: memrefsize := 32;
+ R_SUBMMZ: memrefsize := 64;
+ else Message(asmr_e_unable_to_determine_reference_size);
+ end;
+ end;
+ end;
+ end;
msiMemRegx32y64:
begin
for j := 1 to ops do
@@ -558,6 +573,21 @@ begin
end;
end;
end;
+ msiMemRegx32y64z128:
+ begin
+ for j := 1 to ops do
+ begin
+ if operands[j].Opr.Typ = OPR_REGISTER then
+ begin
+ case getsubreg(operands[j].opr.reg) of
+ R_SUBMMX: memrefsize := 32;
+ R_SUBMMY: memrefsize := 64;
+ R_SUBMMZ: memrefsize := 128;
+ else Message(asmr_e_unable_to_determine_reference_size);
+ end;
+ end;
+ end;
+ end;
msiMemRegx64y128:
begin
for j := 1 to ops do
@@ -712,7 +742,7 @@ begin
msiMultiple:
;
else
- Internalerror(2019081005);
+ Internalerror(2020111001);
end;
if memrefsize > -1 then