diff options
author | tg74 <tg74@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2021-01-11 06:07:55 +0000 |
---|---|---|
committer | tg74 <tg74@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2021-01-11 06:07:55 +0000 |
commit | 427cc05a6783ce389172d5950abe3fb5e242e034 (patch) | |
tree | 534d688523bdb65c8b27f88b862bdec12fb119a4 | |
parent | 49a53e0f5fc770f11b50b73112b95e838bfb5560 (diff) | |
download | fpc-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.pas | 6 |
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 |