* [PATCH] x86/Intel: correct AVX512F scatter insn element sizes
@ 2022-07-20 7:57 Jan Beulich
2022-07-20 16:48 ` H.J. Lu
0 siblings, 1 reply; 2+ messages in thread
From: Jan Beulich @ 2022-07-20 7:57 UTC (permalink / raw)
To: Binutils
I clearly screwed up in 6ff00b5e12e7 ("x86/Intel: correct permitted
operand sizes for AVX512 scatter/gather") giving all AVX512F scatter
insns Dword element size. Update testcases (also their gather parts),
utilizing that there previously were two identical lines each (for no
apparent reason).
---
Perhaps another candidate to also go on the 2.39 branch.
--- a/gas/testsuite/gas/i386/avx512f.s
+++ b/gas/testsuite/gas/i386/avx512f.s
@@ -11109,22 +11109,22 @@ _start:
vfnmsub231ss xmm6{k7}, xmm5, DWORD PTR [edx-516] # AVX512F
vgatherdpd zmm6{k1}, [ebp+ymm7*8-123] # AVX512F
- vgatherdpd zmm6{k1}, [ebp+ymm7*8-123] # AVX512F
+ vgatherdpd zmm6{k1}, qword ptr [ebp+ymm7*8-123] # AVX512F
vgatherdpd zmm6{k1}, [eax+ymm7+256] # AVX512F
vgatherdpd zmm6{k1}, [ecx+ymm7*4+1024] # AVX512F
vgatherdps zmm6{k1}, [ebp+zmm7*8-123] # AVX512F
- vgatherdps zmm6{k1}, [ebp+zmm7*8-123] # AVX512F
+ vgatherdps zmm6{k1}, dword ptr [ebp+zmm7*8-123] # AVX512F
vgatherdps zmm6{k1}, [eax+zmm7+256] # AVX512F
vgatherdps zmm6{k1}, [ecx+zmm7*4+1024] # AVX512F
vgatherqpd zmm6{k1}, [ebp+zmm7*8-123] # AVX512F
- vgatherqpd zmm6{k1}, [ebp+zmm7*8-123] # AVX512F
+ vgatherqpd zmm6{k1}, qword ptr [ebp+zmm7*8-123] # AVX512F
vgatherqpd zmm6{k1}, [eax+zmm7+256] # AVX512F
vgatherqpd zmm6{k1}, [ecx+zmm7*4+1024] # AVX512F
vgatherqps ymm6{k1}, [ebp+zmm7*8-123] # AVX512F
- vgatherqps ymm6{k1}, [ebp+zmm7*8-123] # AVX512F
+ vgatherqps ymm6{k1}, dword ptr [ebp+zmm7*8-123] # AVX512F
vgatherqps ymm6{k1}, [eax+zmm7+256] # AVX512F
vgatherqps ymm6{k1}, [ecx+zmm7*4+1024] # AVX512F
@@ -12401,22 +12401,22 @@ _start:
vpexpandq zmm6{k7}{z}, zmm5 # AVX512F
vpgatherdd zmm6{k1}, [ebp+zmm7*8-123] # AVX512F
- vpgatherdd zmm6{k1}, [ebp+zmm7*8-123] # AVX512F
+ vpgatherdd zmm6{k1}, dword ptr [ebp+zmm7*8-123] # AVX512F
vpgatherdd zmm6{k1}, [eax+zmm7+256] # AVX512F
vpgatherdd zmm6{k1}, [ecx+zmm7*4+1024] # AVX512F
vpgatherdq zmm6{k1}, [ebp+ymm7*8-123] # AVX512F
- vpgatherdq zmm6{k1}, [ebp+ymm7*8-123] # AVX512F
+ vpgatherdq zmm6{k1}, qword ptr [ebp+ymm7*8-123] # AVX512F
vpgatherdq zmm6{k1}, [eax+ymm7+256] # AVX512F
vpgatherdq zmm6{k1}, [ecx+ymm7*4+1024] # AVX512F
vpgatherqd ymm6{k1}, [ebp+zmm7*8-123] # AVX512F
- vpgatherqd ymm6{k1}, [ebp+zmm7*8-123] # AVX512F
+ vpgatherqd ymm6{k1}, dword ptr [ebp+zmm7*8-123] # AVX512F
vpgatherqd ymm6{k1}, [eax+zmm7+256] # AVX512F
vpgatherqd ymm6{k1}, [ecx+zmm7*4+1024] # AVX512F
vpgatherqq zmm6{k1}, [ebp+zmm7*8-123] # AVX512F
- vpgatherqq zmm6{k1}, [ebp+zmm7*8-123] # AVX512F
+ vpgatherqq zmm6{k1}, qword ptr [ebp+zmm7*8-123] # AVX512F
vpgatherqq zmm6{k1}, [eax+zmm7+256] # AVX512F
vpgatherqq zmm6{k1}, [ecx+zmm7*4+1024] # AVX512F
@@ -12706,22 +12706,22 @@ _start:
vporq zmm6, zmm5, qword bcst [edx-1032] # AVX512F
vpscatterdd [ebp+zmm7*8-123]{k1}, zmm6 # AVX512F
- vpscatterdd [ebp+zmm7*8-123]{k1}, zmm6 # AVX512F
+ vpscatterdd dword ptr [ebp+zmm7*8-123]{k1}, zmm6 # AVX512F
vpscatterdd [eax+zmm7+256]{k1}, zmm6 # AVX512F
vpscatterdd [ecx+zmm7*4+1024]{k1}, zmm6 # AVX512F
vpscatterdq [ebp+ymm7*8-123]{k1}, zmm6 # AVX512F
- vpscatterdq [ebp+ymm7*8-123]{k1}, zmm6 # AVX512F
+ vpscatterdq qword ptr [ebp+ymm7*8-123]{k1}, zmm6 # AVX512F
vpscatterdq [eax+ymm7+256]{k1}, zmm6 # AVX512F
vpscatterdq [ecx+ymm7*4+1024]{k1}, zmm6 # AVX512F
vpscatterqd [ebp+zmm7*8-123]{k1}, ymm6 # AVX512F
- vpscatterqd [ebp+zmm7*8-123]{k1}, ymm6 # AVX512F
+ vpscatterqd dword ptr [ebp+zmm7*8-123]{k1}, ymm6 # AVX512F
vpscatterqd [eax+zmm7+256]{k1}, ymm6 # AVX512F
vpscatterqd [ecx+zmm7*4+1024]{k1}, ymm6 # AVX512F
vpscatterqq [ebp+zmm7*8-123]{k1}, zmm6 # AVX512F
- vpscatterqq [ebp+zmm7*8-123]{k1}, zmm6 # AVX512F
+ vpscatterqq qword ptr [ebp+zmm7*8-123]{k1}, zmm6 # AVX512F
vpscatterqq [eax+zmm7+256]{k1}, zmm6 # AVX512F
vpscatterqq [ecx+zmm7*4+1024]{k1}, zmm6 # AVX512F
@@ -13162,22 +13162,22 @@ _start:
vrsqrt14ss xmm6{k7}, xmm5, DWORD PTR [edx-516] # AVX512F
vscatterdpd [ebp+ymm7*8-123]{k1}, zmm6 # AVX512F
- vscatterdpd [ebp+ymm7*8-123]{k1}, zmm6 # AVX512F
+ vscatterdpd qword ptr [ebp+ymm7*8-123]{k1}, zmm6 # AVX512F
vscatterdpd [eax+ymm7+256]{k1}, zmm6 # AVX512F
vscatterdpd [ecx+ymm7*4+1024]{k1}, zmm6 # AVX512F
vscatterdps [ebp+zmm7*8-123]{k1}, zmm6 # AVX512F
- vscatterdps [ebp+zmm7*8-123]{k1}, zmm6 # AVX512F
+ vscatterdps dword ptr [ebp+zmm7*8-123]{k1}, zmm6 # AVX512F
vscatterdps [eax+zmm7+256]{k1}, zmm6 # AVX512F
vscatterdps [ecx+zmm7*4+1024]{k1}, zmm6 # AVX512F
vscatterqpd [ebp+zmm7*8-123]{k1}, zmm6 # AVX512F
- vscatterqpd [ebp+zmm7*8-123]{k1}, zmm6 # AVX512F
+ vscatterqpd qword ptr [ebp+zmm7*8-123]{k1}, zmm6 # AVX512F
vscatterqpd [eax+zmm7+256]{k1}, zmm6 # AVX512F
vscatterqpd [ecx+zmm7*4+1024]{k1}, zmm6 # AVX512F
vscatterqps [ebp+zmm7*8-123]{k1}, ymm6 # AVX512F
- vscatterqps [ebp+zmm7*8-123]{k1}, ymm6 # AVX512F
+ vscatterqps dword ptr [ebp+zmm7*8-123]{k1}, ymm6 # AVX512F
vscatterqps [eax+zmm7+256]{k1}, ymm6 # AVX512F
vscatterqps [ecx+zmm7*4+1024]{k1}, ymm6 # AVX512F
--- a/gas/testsuite/gas/i386/x86-64-avx512f.s
+++ b/gas/testsuite/gas/i386/x86-64-avx512f.s
@@ -11618,23 +11618,23 @@ _start:
vfnmsub231ss xmm30{k7}, xmm29, DWORD PTR [rdx-516] # AVX512F
vgatherdpd zmm30{k1}, [r14+ymm31*8-123] # AVX512F
- vgatherdpd zmm30{k1}, [r14+ymm31*8-123] # AVX512F
+ vgatherdpd zmm30{k1}, qword ptr [r14+ymm31*8-123] # AVX512F
vgatherdpd zmm30{k1}, [r9+ymm31+256] # AVX512F
vgatherdpd zmm30{k1}, [rcx+ymm31*4+1024] # AVX512F
vgatherdps zmm30{k1}, [r14+zmm31*8-123] # AVX512F
- vgatherdps zmm30{k1}, [r14+zmm31*8-123] # AVX512F
+ vgatherdps zmm30{k1}, dword ptr [r14+zmm31*8-123] # AVX512F
vgatherdps zmm30{k1}, [r9+zmm31+256] # AVX512F
vgatherdps zmm30{k1}, [rcx+zmm31*4+1024] # AVX512F
vgatherqpd zmm30{k1}, [r14+zmm31*8-123] # AVX512F
- vgatherqpd zmm30{k1}, [r14+zmm31*8-123] # AVX512F
+ vgatherqpd zmm30{k1}, qword ptr [r14+zmm31*8-123] # AVX512F
vgatherqpd zmm30{k1}, [r9+zmm31+256] # AVX512F
vgatherqpd zmm30{k1}, [rcx+zmm31*4+1024] # AVX512F
vgatherqpd zmm3{k1}, [r14+zmm19*8+123] # AVX512F
vgatherqps ymm30{k1}, [r14+zmm31*8-123] # AVX512F
- vgatherqps ymm30{k1}, [r14+zmm31*8-123] # AVX512F
+ vgatherqps ymm30{k1}, dword ptr [r14+zmm31*8-123] # AVX512F
vgatherqps ymm30{k1}, [r9+zmm31+256] # AVX512F
vgatherqps ymm30{k1}, [rcx+zmm31*4+1024] # AVX512F
@@ -13021,22 +13021,22 @@ _start:
vpexpandq zmm30{k7}{z}, zmm29 # AVX512F
vpgatherdd zmm30{k1}, [r14+zmm31*8-123] # AVX512F
- vpgatherdd zmm30{k1}, [r14+zmm31*8-123] # AVX512F
+ vpgatherdd zmm30{k1}, dword ptr [r14+zmm31*8-123] # AVX512F
vpgatherdd zmm30{k1}, [r9+zmm31+256] # AVX512F
vpgatherdd zmm30{k1}, [rcx+zmm31*4+1024] # AVX512F
vpgatherdq zmm30{k1}, [r14+ymm31*8-123] # AVX512F
- vpgatherdq zmm30{k1}, [r14+ymm31*8-123] # AVX512F
+ vpgatherdq zmm30{k1}, qword ptr [r14+ymm31*8-123] # AVX512F
vpgatherdq zmm30{k1}, [r9+ymm31+256] # AVX512F
vpgatherdq zmm30{k1}, [rcx+ymm31*4+1024] # AVX512F
vpgatherqd ymm30{k1}, [r14+zmm31*8-123] # AVX512F
- vpgatherqd ymm30{k1}, [r14+zmm31*8-123] # AVX512F
+ vpgatherqd ymm30{k1}, dword ptr [r14+zmm31*8-123] # AVX512F
vpgatherqd ymm30{k1}, [r9+zmm31+256] # AVX512F
vpgatherqd ymm30{k1}, [rcx+zmm31*4+1024] # AVX512F
vpgatherqq zmm30{k1}, [r14+zmm31*8-123] # AVX512F
- vpgatherqq zmm30{k1}, [r14+zmm31*8-123] # AVX512F
+ vpgatherqq zmm30{k1}, qword ptr [r14+zmm31*8-123] # AVX512F
vpgatherqq zmm30{k1}, [r9+zmm31+256] # AVX512F
vpgatherqq zmm30{k1}, [rcx+zmm31*4+1024] # AVX512F
@@ -13326,22 +13326,22 @@ _start:
vporq zmm30, zmm29, qword bcst [rdx-1032] # AVX512F
vpscatterdd [r14+zmm31*8-123]{k1}, zmm30 # AVX512F
- vpscatterdd [r14+zmm31*8-123]{k1}, zmm30 # AVX512F
+ vpscatterdd dword ptr [r14+zmm31*8-123]{k1}, zmm30 # AVX512F
vpscatterdd [r9+zmm31+256]{k1}, zmm30 # AVX512F
vpscatterdd [rcx+zmm31*4+1024]{k1}, zmm30 # AVX512F
vpscatterdq [r14+ymm31*8-123]{k1}, zmm30 # AVX512F
- vpscatterdq [r14+ymm31*8-123]{k1}, zmm30 # AVX512F
+ vpscatterdq qword ptr [r14+ymm31*8-123]{k1}, zmm30 # AVX512F
vpscatterdq [r9+ymm31+256]{k1}, zmm30 # AVX512F
vpscatterdq [rcx+ymm31*4+1024]{k1}, zmm30 # AVX512F
vpscatterqd [r14+zmm31*8-123]{k1}, ymm30 # AVX512F
- vpscatterqd [r14+zmm31*8-123]{k1}, ymm30 # AVX512F
+ vpscatterqd dword ptr [r14+zmm31*8-123]{k1}, ymm30 # AVX512F
vpscatterqd [r9+zmm31+256]{k1}, ymm30 # AVX512F
vpscatterqd [rcx+zmm31*4+1024]{k1}, ymm30 # AVX512F
vpscatterqq [r14+zmm31*8-123]{k1}, zmm30 # AVX512F
- vpscatterqq [r14+zmm31*8-123]{k1}, zmm30 # AVX512F
+ vpscatterqq qword ptr [r14+zmm31*8-123]{k1}, zmm30 # AVX512F
vpscatterqq [r9+zmm31+256]{k1}, zmm30 # AVX512F
vpscatterqq [rcx+zmm31*4+1024]{k1}, zmm30 # AVX512F
@@ -13782,22 +13782,22 @@ _start:
vrsqrt14ss xmm30{k7}, xmm29, DWORD PTR [rdx-516] # AVX512F
vscatterdpd [r14+ymm31*8-123]{k1}, zmm30 # AVX512F
- vscatterdpd [r14+ymm31*8-123]{k1}, zmm30 # AVX512F
+ vscatterdpd qword ptr [r14+ymm31*8-123]{k1}, zmm30 # AVX512F
vscatterdpd [r9+ymm31+256]{k1}, zmm30 # AVX512F
vscatterdpd [rcx+ymm31*4+1024]{k1}, zmm30 # AVX512F
vscatterdps [r14+zmm31*8-123]{k1}, zmm30 # AVX512F
- vscatterdps [r14+zmm31*8-123]{k1}, zmm30 # AVX512F
+ vscatterdps dword ptr [r14+zmm31*8-123]{k1}, zmm30 # AVX512F
vscatterdps [r9+zmm31+256]{k1}, zmm30 # AVX512F
vscatterdps [rcx+zmm31*4+1024]{k1}, zmm30 # AVX512F
vscatterqpd [r14+zmm31*8-123]{k1}, zmm30 # AVX512F
- vscatterqpd [r14+zmm31*8-123]{k1}, zmm30 # AVX512F
+ vscatterqpd qword ptr [r14+zmm31*8-123]{k1}, zmm30 # AVX512F
vscatterqpd [r9+zmm31+256]{k1}, zmm30 # AVX512F
vscatterqpd [rcx+zmm31*4+1024]{k1}, zmm30 # AVX512F
vscatterqps [r14+zmm31*8-123]{k1}, ymm30 # AVX512F
- vscatterqps [r14+zmm31*8-123]{k1}, ymm30 # AVX512F
+ vscatterqps dword ptr [r14+zmm31*8-123]{k1}, ymm30 # AVX512F
vscatterqps [r9+zmm31+256]{k1}, ymm30 # AVX512F
vscatterqps [rcx+zmm31*4+1024]{k1}, ymm30 # AVX512F
--- a/opcodes/i386-opc.tbl
+++ b/opcodes/i386-opc.tbl
@@ -2278,10 +2278,10 @@ vcompressps, 0x668A, None, CpuAVX512F, M
vpcompressq, 0x668B, None, CpuAVX512F, Modrm|MaskingMorZ|Space0F38|VexW=2|Disp8MemShift=3|CheckRegSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex }
vpcompressd, 0x668B, None, CpuAVX512F, Modrm|MaskingMorZ|Space0F38|VexW=1|Disp8MemShift=2|CheckRegSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex }
-vpscatterdq, 0x66A0, None, CpuAVX512F, Modrm|EVex=1|Masking=2|NoDefMask|Space0F38|VexW1|Disp8MemShift=3|VecSIB256|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegZMM, Dword|Unspecified|BaseIndex }
-vpscatterqq, 0x66A1, None, CpuAVX512F, Modrm|EVex=1|Masking=2|NoDefMask|Space0F38|VexW1|Disp8MemShift=3|VecSIB512|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegZMM, Dword|Unspecified|BaseIndex }
-vscatterdpd, 0x66A2, None, CpuAVX512F, Modrm|EVex=1|Masking=2|NoDefMask|Space0F38|VexW1|Disp8MemShift=3|VecSIB256|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegZMM, Dword|Unspecified|BaseIndex }
-vscatterqpd, 0x66A3, None, CpuAVX512F, Modrm|EVex=1|Masking=2|NoDefMask|Space0F38|VexW1|Disp8MemShift=3|VecSIB512|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegZMM, Dword|Unspecified|BaseIndex }
+vpscatterdq, 0x66A0, None, CpuAVX512F, Modrm|EVex=1|Masking=2|NoDefMask|Space0F38|VexW1|Disp8MemShift=3|VecSIB256|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegZMM, Qword|Unspecified|BaseIndex }
+vpscatterqq, 0x66A1, None, CpuAVX512F, Modrm|EVex=1|Masking=2|NoDefMask|Space0F38|VexW1|Disp8MemShift=3|VecSIB512|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegZMM, Qword|Unspecified|BaseIndex }
+vscatterdpd, 0x66A2, None, CpuAVX512F, Modrm|EVex=1|Masking=2|NoDefMask|Space0F38|VexW1|Disp8MemShift=3|VecSIB256|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegZMM, Qword|Unspecified|BaseIndex }
+vscatterqpd, 0x66A3, None, CpuAVX512F, Modrm|EVex=1|Masking=2|NoDefMask|Space0F38|VexW1|Disp8MemShift=3|VecSIB512|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegZMM, Qword|Unspecified|BaseIndex }
vpscatterdd, 0x66A0, None, CpuAVX512F, Modrm|EVex=1|Masking=2|NoDefMask|Space0F38|VexW0|Disp8MemShift=2|VecSIB512|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegZMM, Dword|Unspecified|BaseIndex }
vscatterdps, 0x66A2, None, CpuAVX512F, Modrm|EVex=1|Masking=2|NoDefMask|Space0F38|VexW0|Disp8MemShift=2|VecSIB512|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegZMM, Dword|Unspecified|BaseIndex }
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [PATCH] x86/Intel: correct AVX512F scatter insn element sizes
2022-07-20 7:57 [PATCH] x86/Intel: correct AVX512F scatter insn element sizes Jan Beulich
@ 2022-07-20 16:48 ` H.J. Lu
0 siblings, 0 replies; 2+ messages in thread
From: H.J. Lu @ 2022-07-20 16:48 UTC (permalink / raw)
To: Jan Beulich; +Cc: Binutils
On Wed, Jul 20, 2022 at 12:57 AM Jan Beulich <jbeulich@suse.com> wrote:
>
> I clearly screwed up in 6ff00b5e12e7 ("x86/Intel: correct permitted
> operand sizes for AVX512 scatter/gather") giving all AVX512F scatter
> insns Dword element size. Update testcases (also their gather parts),
> utilizing that there previously were two identical lines each (for no
> apparent reason).
> ---
> Perhaps another candidate to also go on the 2.39 branch.
OK for master and 2.39 branch.
Thanks.
> --- a/gas/testsuite/gas/i386/avx512f.s
> +++ b/gas/testsuite/gas/i386/avx512f.s
> @@ -11109,22 +11109,22 @@ _start:
> vfnmsub231ss xmm6{k7}, xmm5, DWORD PTR [edx-516] # AVX512F
>
> vgatherdpd zmm6{k1}, [ebp+ymm7*8-123] # AVX512F
> - vgatherdpd zmm6{k1}, [ebp+ymm7*8-123] # AVX512F
> + vgatherdpd zmm6{k1}, qword ptr [ebp+ymm7*8-123] # AVX512F
> vgatherdpd zmm6{k1}, [eax+ymm7+256] # AVX512F
> vgatherdpd zmm6{k1}, [ecx+ymm7*4+1024] # AVX512F
>
> vgatherdps zmm6{k1}, [ebp+zmm7*8-123] # AVX512F
> - vgatherdps zmm6{k1}, [ebp+zmm7*8-123] # AVX512F
> + vgatherdps zmm6{k1}, dword ptr [ebp+zmm7*8-123] # AVX512F
> vgatherdps zmm6{k1}, [eax+zmm7+256] # AVX512F
> vgatherdps zmm6{k1}, [ecx+zmm7*4+1024] # AVX512F
>
> vgatherqpd zmm6{k1}, [ebp+zmm7*8-123] # AVX512F
> - vgatherqpd zmm6{k1}, [ebp+zmm7*8-123] # AVX512F
> + vgatherqpd zmm6{k1}, qword ptr [ebp+zmm7*8-123] # AVX512F
> vgatherqpd zmm6{k1}, [eax+zmm7+256] # AVX512F
> vgatherqpd zmm6{k1}, [ecx+zmm7*4+1024] # AVX512F
>
> vgatherqps ymm6{k1}, [ebp+zmm7*8-123] # AVX512F
> - vgatherqps ymm6{k1}, [ebp+zmm7*8-123] # AVX512F
> + vgatherqps ymm6{k1}, dword ptr [ebp+zmm7*8-123] # AVX512F
> vgatherqps ymm6{k1}, [eax+zmm7+256] # AVX512F
> vgatherqps ymm6{k1}, [ecx+zmm7*4+1024] # AVX512F
>
> @@ -12401,22 +12401,22 @@ _start:
> vpexpandq zmm6{k7}{z}, zmm5 # AVX512F
>
> vpgatherdd zmm6{k1}, [ebp+zmm7*8-123] # AVX512F
> - vpgatherdd zmm6{k1}, [ebp+zmm7*8-123] # AVX512F
> + vpgatherdd zmm6{k1}, dword ptr [ebp+zmm7*8-123] # AVX512F
> vpgatherdd zmm6{k1}, [eax+zmm7+256] # AVX512F
> vpgatherdd zmm6{k1}, [ecx+zmm7*4+1024] # AVX512F
>
> vpgatherdq zmm6{k1}, [ebp+ymm7*8-123] # AVX512F
> - vpgatherdq zmm6{k1}, [ebp+ymm7*8-123] # AVX512F
> + vpgatherdq zmm6{k1}, qword ptr [ebp+ymm7*8-123] # AVX512F
> vpgatherdq zmm6{k1}, [eax+ymm7+256] # AVX512F
> vpgatherdq zmm6{k1}, [ecx+ymm7*4+1024] # AVX512F
>
> vpgatherqd ymm6{k1}, [ebp+zmm7*8-123] # AVX512F
> - vpgatherqd ymm6{k1}, [ebp+zmm7*8-123] # AVX512F
> + vpgatherqd ymm6{k1}, dword ptr [ebp+zmm7*8-123] # AVX512F
> vpgatherqd ymm6{k1}, [eax+zmm7+256] # AVX512F
> vpgatherqd ymm6{k1}, [ecx+zmm7*4+1024] # AVX512F
>
> vpgatherqq zmm6{k1}, [ebp+zmm7*8-123] # AVX512F
> - vpgatherqq zmm6{k1}, [ebp+zmm7*8-123] # AVX512F
> + vpgatherqq zmm6{k1}, qword ptr [ebp+zmm7*8-123] # AVX512F
> vpgatherqq zmm6{k1}, [eax+zmm7+256] # AVX512F
> vpgatherqq zmm6{k1}, [ecx+zmm7*4+1024] # AVX512F
>
> @@ -12706,22 +12706,22 @@ _start:
> vporq zmm6, zmm5, qword bcst [edx-1032] # AVX512F
>
> vpscatterdd [ebp+zmm7*8-123]{k1}, zmm6 # AVX512F
> - vpscatterdd [ebp+zmm7*8-123]{k1}, zmm6 # AVX512F
> + vpscatterdd dword ptr [ebp+zmm7*8-123]{k1}, zmm6 # AVX512F
> vpscatterdd [eax+zmm7+256]{k1}, zmm6 # AVX512F
> vpscatterdd [ecx+zmm7*4+1024]{k1}, zmm6 # AVX512F
>
> vpscatterdq [ebp+ymm7*8-123]{k1}, zmm6 # AVX512F
> - vpscatterdq [ebp+ymm7*8-123]{k1}, zmm6 # AVX512F
> + vpscatterdq qword ptr [ebp+ymm7*8-123]{k1}, zmm6 # AVX512F
> vpscatterdq [eax+ymm7+256]{k1}, zmm6 # AVX512F
> vpscatterdq [ecx+ymm7*4+1024]{k1}, zmm6 # AVX512F
>
> vpscatterqd [ebp+zmm7*8-123]{k1}, ymm6 # AVX512F
> - vpscatterqd [ebp+zmm7*8-123]{k1}, ymm6 # AVX512F
> + vpscatterqd dword ptr [ebp+zmm7*8-123]{k1}, ymm6 # AVX512F
> vpscatterqd [eax+zmm7+256]{k1}, ymm6 # AVX512F
> vpscatterqd [ecx+zmm7*4+1024]{k1}, ymm6 # AVX512F
>
> vpscatterqq [ebp+zmm7*8-123]{k1}, zmm6 # AVX512F
> - vpscatterqq [ebp+zmm7*8-123]{k1}, zmm6 # AVX512F
> + vpscatterqq qword ptr [ebp+zmm7*8-123]{k1}, zmm6 # AVX512F
> vpscatterqq [eax+zmm7+256]{k1}, zmm6 # AVX512F
> vpscatterqq [ecx+zmm7*4+1024]{k1}, zmm6 # AVX512F
>
> @@ -13162,22 +13162,22 @@ _start:
> vrsqrt14ss xmm6{k7}, xmm5, DWORD PTR [edx-516] # AVX512F
>
> vscatterdpd [ebp+ymm7*8-123]{k1}, zmm6 # AVX512F
> - vscatterdpd [ebp+ymm7*8-123]{k1}, zmm6 # AVX512F
> + vscatterdpd qword ptr [ebp+ymm7*8-123]{k1}, zmm6 # AVX512F
> vscatterdpd [eax+ymm7+256]{k1}, zmm6 # AVX512F
> vscatterdpd [ecx+ymm7*4+1024]{k1}, zmm6 # AVX512F
>
> vscatterdps [ebp+zmm7*8-123]{k1}, zmm6 # AVX512F
> - vscatterdps [ebp+zmm7*8-123]{k1}, zmm6 # AVX512F
> + vscatterdps dword ptr [ebp+zmm7*8-123]{k1}, zmm6 # AVX512F
> vscatterdps [eax+zmm7+256]{k1}, zmm6 # AVX512F
> vscatterdps [ecx+zmm7*4+1024]{k1}, zmm6 # AVX512F
>
> vscatterqpd [ebp+zmm7*8-123]{k1}, zmm6 # AVX512F
> - vscatterqpd [ebp+zmm7*8-123]{k1}, zmm6 # AVX512F
> + vscatterqpd qword ptr [ebp+zmm7*8-123]{k1}, zmm6 # AVX512F
> vscatterqpd [eax+zmm7+256]{k1}, zmm6 # AVX512F
> vscatterqpd [ecx+zmm7*4+1024]{k1}, zmm6 # AVX512F
>
> vscatterqps [ebp+zmm7*8-123]{k1}, ymm6 # AVX512F
> - vscatterqps [ebp+zmm7*8-123]{k1}, ymm6 # AVX512F
> + vscatterqps dword ptr [ebp+zmm7*8-123]{k1}, ymm6 # AVX512F
> vscatterqps [eax+zmm7+256]{k1}, ymm6 # AVX512F
> vscatterqps [ecx+zmm7*4+1024]{k1}, ymm6 # AVX512F
>
> --- a/gas/testsuite/gas/i386/x86-64-avx512f.s
> +++ b/gas/testsuite/gas/i386/x86-64-avx512f.s
> @@ -11618,23 +11618,23 @@ _start:
> vfnmsub231ss xmm30{k7}, xmm29, DWORD PTR [rdx-516] # AVX512F
>
> vgatherdpd zmm30{k1}, [r14+ymm31*8-123] # AVX512F
> - vgatherdpd zmm30{k1}, [r14+ymm31*8-123] # AVX512F
> + vgatherdpd zmm30{k1}, qword ptr [r14+ymm31*8-123] # AVX512F
> vgatherdpd zmm30{k1}, [r9+ymm31+256] # AVX512F
> vgatherdpd zmm30{k1}, [rcx+ymm31*4+1024] # AVX512F
>
> vgatherdps zmm30{k1}, [r14+zmm31*8-123] # AVX512F
> - vgatherdps zmm30{k1}, [r14+zmm31*8-123] # AVX512F
> + vgatherdps zmm30{k1}, dword ptr [r14+zmm31*8-123] # AVX512F
> vgatherdps zmm30{k1}, [r9+zmm31+256] # AVX512F
> vgatherdps zmm30{k1}, [rcx+zmm31*4+1024] # AVX512F
>
> vgatherqpd zmm30{k1}, [r14+zmm31*8-123] # AVX512F
> - vgatherqpd zmm30{k1}, [r14+zmm31*8-123] # AVX512F
> + vgatherqpd zmm30{k1}, qword ptr [r14+zmm31*8-123] # AVX512F
> vgatherqpd zmm30{k1}, [r9+zmm31+256] # AVX512F
> vgatherqpd zmm30{k1}, [rcx+zmm31*4+1024] # AVX512F
> vgatherqpd zmm3{k1}, [r14+zmm19*8+123] # AVX512F
>
> vgatherqps ymm30{k1}, [r14+zmm31*8-123] # AVX512F
> - vgatherqps ymm30{k1}, [r14+zmm31*8-123] # AVX512F
> + vgatherqps ymm30{k1}, dword ptr [r14+zmm31*8-123] # AVX512F
> vgatherqps ymm30{k1}, [r9+zmm31+256] # AVX512F
> vgatherqps ymm30{k1}, [rcx+zmm31*4+1024] # AVX512F
>
> @@ -13021,22 +13021,22 @@ _start:
> vpexpandq zmm30{k7}{z}, zmm29 # AVX512F
>
> vpgatherdd zmm30{k1}, [r14+zmm31*8-123] # AVX512F
> - vpgatherdd zmm30{k1}, [r14+zmm31*8-123] # AVX512F
> + vpgatherdd zmm30{k1}, dword ptr [r14+zmm31*8-123] # AVX512F
> vpgatherdd zmm30{k1}, [r9+zmm31+256] # AVX512F
> vpgatherdd zmm30{k1}, [rcx+zmm31*4+1024] # AVX512F
>
> vpgatherdq zmm30{k1}, [r14+ymm31*8-123] # AVX512F
> - vpgatherdq zmm30{k1}, [r14+ymm31*8-123] # AVX512F
> + vpgatherdq zmm30{k1}, qword ptr [r14+ymm31*8-123] # AVX512F
> vpgatherdq zmm30{k1}, [r9+ymm31+256] # AVX512F
> vpgatherdq zmm30{k1}, [rcx+ymm31*4+1024] # AVX512F
>
> vpgatherqd ymm30{k1}, [r14+zmm31*8-123] # AVX512F
> - vpgatherqd ymm30{k1}, [r14+zmm31*8-123] # AVX512F
> + vpgatherqd ymm30{k1}, dword ptr [r14+zmm31*8-123] # AVX512F
> vpgatherqd ymm30{k1}, [r9+zmm31+256] # AVX512F
> vpgatherqd ymm30{k1}, [rcx+zmm31*4+1024] # AVX512F
>
> vpgatherqq zmm30{k1}, [r14+zmm31*8-123] # AVX512F
> - vpgatherqq zmm30{k1}, [r14+zmm31*8-123] # AVX512F
> + vpgatherqq zmm30{k1}, qword ptr [r14+zmm31*8-123] # AVX512F
> vpgatherqq zmm30{k1}, [r9+zmm31+256] # AVX512F
> vpgatherqq zmm30{k1}, [rcx+zmm31*4+1024] # AVX512F
>
> @@ -13326,22 +13326,22 @@ _start:
> vporq zmm30, zmm29, qword bcst [rdx-1032] # AVX512F
>
> vpscatterdd [r14+zmm31*8-123]{k1}, zmm30 # AVX512F
> - vpscatterdd [r14+zmm31*8-123]{k1}, zmm30 # AVX512F
> + vpscatterdd dword ptr [r14+zmm31*8-123]{k1}, zmm30 # AVX512F
> vpscatterdd [r9+zmm31+256]{k1}, zmm30 # AVX512F
> vpscatterdd [rcx+zmm31*4+1024]{k1}, zmm30 # AVX512F
>
> vpscatterdq [r14+ymm31*8-123]{k1}, zmm30 # AVX512F
> - vpscatterdq [r14+ymm31*8-123]{k1}, zmm30 # AVX512F
> + vpscatterdq qword ptr [r14+ymm31*8-123]{k1}, zmm30 # AVX512F
> vpscatterdq [r9+ymm31+256]{k1}, zmm30 # AVX512F
> vpscatterdq [rcx+ymm31*4+1024]{k1}, zmm30 # AVX512F
>
> vpscatterqd [r14+zmm31*8-123]{k1}, ymm30 # AVX512F
> - vpscatterqd [r14+zmm31*8-123]{k1}, ymm30 # AVX512F
> + vpscatterqd dword ptr [r14+zmm31*8-123]{k1}, ymm30 # AVX512F
> vpscatterqd [r9+zmm31+256]{k1}, ymm30 # AVX512F
> vpscatterqd [rcx+zmm31*4+1024]{k1}, ymm30 # AVX512F
>
> vpscatterqq [r14+zmm31*8-123]{k1}, zmm30 # AVX512F
> - vpscatterqq [r14+zmm31*8-123]{k1}, zmm30 # AVX512F
> + vpscatterqq qword ptr [r14+zmm31*8-123]{k1}, zmm30 # AVX512F
> vpscatterqq [r9+zmm31+256]{k1}, zmm30 # AVX512F
> vpscatterqq [rcx+zmm31*4+1024]{k1}, zmm30 # AVX512F
>
> @@ -13782,22 +13782,22 @@ _start:
> vrsqrt14ss xmm30{k7}, xmm29, DWORD PTR [rdx-516] # AVX512F
>
> vscatterdpd [r14+ymm31*8-123]{k1}, zmm30 # AVX512F
> - vscatterdpd [r14+ymm31*8-123]{k1}, zmm30 # AVX512F
> + vscatterdpd qword ptr [r14+ymm31*8-123]{k1}, zmm30 # AVX512F
> vscatterdpd [r9+ymm31+256]{k1}, zmm30 # AVX512F
> vscatterdpd [rcx+ymm31*4+1024]{k1}, zmm30 # AVX512F
>
> vscatterdps [r14+zmm31*8-123]{k1}, zmm30 # AVX512F
> - vscatterdps [r14+zmm31*8-123]{k1}, zmm30 # AVX512F
> + vscatterdps dword ptr [r14+zmm31*8-123]{k1}, zmm30 # AVX512F
> vscatterdps [r9+zmm31+256]{k1}, zmm30 # AVX512F
> vscatterdps [rcx+zmm31*4+1024]{k1}, zmm30 # AVX512F
>
> vscatterqpd [r14+zmm31*8-123]{k1}, zmm30 # AVX512F
> - vscatterqpd [r14+zmm31*8-123]{k1}, zmm30 # AVX512F
> + vscatterqpd qword ptr [r14+zmm31*8-123]{k1}, zmm30 # AVX512F
> vscatterqpd [r9+zmm31+256]{k1}, zmm30 # AVX512F
> vscatterqpd [rcx+zmm31*4+1024]{k1}, zmm30 # AVX512F
>
> vscatterqps [r14+zmm31*8-123]{k1}, ymm30 # AVX512F
> - vscatterqps [r14+zmm31*8-123]{k1}, ymm30 # AVX512F
> + vscatterqps dword ptr [r14+zmm31*8-123]{k1}, ymm30 # AVX512F
> vscatterqps [r9+zmm31+256]{k1}, ymm30 # AVX512F
> vscatterqps [rcx+zmm31*4+1024]{k1}, ymm30 # AVX512F
>
> --- a/opcodes/i386-opc.tbl
> +++ b/opcodes/i386-opc.tbl
> @@ -2278,10 +2278,10 @@ vcompressps, 0x668A, None, CpuAVX512F, M
> vpcompressq, 0x668B, None, CpuAVX512F, Modrm|MaskingMorZ|Space0F38|VexW=2|Disp8MemShift=3|CheckRegSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex }
> vpcompressd, 0x668B, None, CpuAVX512F, Modrm|MaskingMorZ|Space0F38|VexW=1|Disp8MemShift=2|CheckRegSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM|Unspecified|BaseIndex }
>
> -vpscatterdq, 0x66A0, None, CpuAVX512F, Modrm|EVex=1|Masking=2|NoDefMask|Space0F38|VexW1|Disp8MemShift=3|VecSIB256|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegZMM, Dword|Unspecified|BaseIndex }
> -vpscatterqq, 0x66A1, None, CpuAVX512F, Modrm|EVex=1|Masking=2|NoDefMask|Space0F38|VexW1|Disp8MemShift=3|VecSIB512|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegZMM, Dword|Unspecified|BaseIndex }
> -vscatterdpd, 0x66A2, None, CpuAVX512F, Modrm|EVex=1|Masking=2|NoDefMask|Space0F38|VexW1|Disp8MemShift=3|VecSIB256|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegZMM, Dword|Unspecified|BaseIndex }
> -vscatterqpd, 0x66A3, None, CpuAVX512F, Modrm|EVex=1|Masking=2|NoDefMask|Space0F38|VexW1|Disp8MemShift=3|VecSIB512|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegZMM, Dword|Unspecified|BaseIndex }
> +vpscatterdq, 0x66A0, None, CpuAVX512F, Modrm|EVex=1|Masking=2|NoDefMask|Space0F38|VexW1|Disp8MemShift=3|VecSIB256|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegZMM, Qword|Unspecified|BaseIndex }
> +vpscatterqq, 0x66A1, None, CpuAVX512F, Modrm|EVex=1|Masking=2|NoDefMask|Space0F38|VexW1|Disp8MemShift=3|VecSIB512|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegZMM, Qword|Unspecified|BaseIndex }
> +vscatterdpd, 0x66A2, None, CpuAVX512F, Modrm|EVex=1|Masking=2|NoDefMask|Space0F38|VexW1|Disp8MemShift=3|VecSIB256|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegZMM, Qword|Unspecified|BaseIndex }
> +vscatterqpd, 0x66A3, None, CpuAVX512F, Modrm|EVex=1|Masking=2|NoDefMask|Space0F38|VexW1|Disp8MemShift=3|VecSIB512|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegZMM, Qword|Unspecified|BaseIndex }
>
> vpscatterdd, 0x66A0, None, CpuAVX512F, Modrm|EVex=1|Masking=2|NoDefMask|Space0F38|VexW0|Disp8MemShift=2|VecSIB512|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegZMM, Dword|Unspecified|BaseIndex }
> vscatterdps, 0x66A2, None, CpuAVX512F, Modrm|EVex=1|Masking=2|NoDefMask|Space0F38|VexW0|Disp8MemShift=2|VecSIB512|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegZMM, Dword|Unspecified|BaseIndex }
--
H.J.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2022-07-20 16:49 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-07-20 7:57 [PATCH] x86/Intel: correct AVX512F scatter insn element sizes Jan Beulich
2022-07-20 16:48 ` H.J. Lu
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).