public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* [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

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).