summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortg74 <tg74@3ad0048d-3df7-0310-abae-a5850022a9f2>2021-01-11 06:07:55 +0000
committertg74 <tg74@3ad0048d-3df7-0310-abae-a5850022a9f2>2021-01-11 06:07:55 +0000
commit427cc05a6783ce389172d5950abe3fb5e242e034 (patch)
tree534d688523bdb65c8b27f88b862bdec12fb119a4
parent49a53e0f5fc770f11b50b73112b95e838bfb5560 (diff)
downloadfpc-427cc05a6783ce389172d5950abe3fb5e242e034.tar.gz
bugfix internal assembler vgather,vpgather,vscatter,vpscatter and register R13 vgatherdpd xmm0, [R13 + XMM0], xmm1
git-svn-id: https://svn.freepascal.org/svn/fpc/branches/tg74@48133 3ad0048d-3df7-0310-abae-a5850022a9f2
-rw-r--r--fixes_3_2/compiler/x86/rax86.pas6
1 files changed, 4 insertions, 2 deletions
diff --git a/fixes_3_2/compiler/x86/rax86.pas b/fixes_3_2/compiler/x86/rax86.pas
index b40ac83f95..6be8d99a3a 100644
--- a/fixes_3_2/compiler/x86/rax86.pas
+++ b/fixes_3_2/compiler/x86/rax86.pas
@@ -1247,8 +1247,10 @@ begin
end;
OPR_REFERENCE:
begin
- if (opcode<>A_XLAT) and not is_x86_string_op(opcode) then
+ if (not(MemRefInfo(opcode).MemRefSize in MemRefSizeInfoVMems)) and
+ (opcode<>A_XLAT) and not is_x86_string_op(opcode) then
optimize_ref(operands[i].opr.ref,true);
+
ai.loadref(i-1,operands[i].opr.ref);
if operands[i].size<>OS_NO then
begin
@@ -1276,7 +1278,7 @@ begin
this applies only to i386, see tw16622}
- if gas_needsuffix[opcode] in [attsufFPU,attsufFPUint] then
+ if (gas_needsuffix[opcode] in [attsufFPU,attsufFPUint]) or (MemRefInfo(opcode).ExistsSSEAVX) then
asize:=OT_BITS64
{$ifdef i386}
else