This is the mail archive of the binutils-cvs@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] Add .noavx512XX directives to x86 assembler


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=144b71e2a88e02d0b54d4f09cc652f353b46e455

commit 144b71e2a88e02d0b54d4f09cc652f353b46e455
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Fri May 27 15:41:45 2016 -0700

    Add .noavx512XX directives to x86 assembler
    
    Add .noavx512f, .noavx512cd, .noavx512er, .noavx512pf, .noavx512dq,
    .noavx512bw, .noavx512vl, .noavx512ifma, .noavx512vbmi directives to x86
    assembler.
    
    gas/
    
    	PR gas/20145
    	* config/tc-i386.c (cpu_noarch): Add noavx512f, noavx512cd,
    	noavx512er, noavx512pf, noavx512dq, noavx512bw, noavx512vl,
    	noavx512ifma and noavx512vbmi.
    	* doc/c-i386.texi: Mention noavx512f, noavx512cd, noavx512er,
    	noavx512pf, noavx512dq, noavx512bw, noavx512vl, noavx512ifma
    	and noavx512vbmi.
    	* testsuite/gas/i386/i386.exp: Run noavx512-1 and noavx512-2.
    	* testsuite/gas/i386/noavx512-1.l: New file.
    	* testsuite/gas/i386/noavx512-1.s: Likewise.
    	* testsuite/gas/i386/noavx512-2.l: Likewise.
    	* testsuite/gas/i386/noavx512-2.s: Likewise.
    
    opcodes/
    
    	PR gas/20145
    	* i386-gen.c (cpu_flag_init): Add CPU_ANY_AVX512F_FLAGS,
    	CPU_ANY_AVX512CD_FLAGS, CPU_ANY_AVX512ER_FLAGS,
    	CPU_ANY_AVX512PF_FLAGS, CPU_ANY_AVX512DQ_FLAGS,
    	CPU_ANY_AVX512BW_FLAGS, CPU_ANY_AVX512VL_FLAGS,
    	CPU_ANY_AVX512IFMA_FLAGS and CPU_ANY_AVX512VBMI_FLAGS.
    	* i386-init.h: Regenerated.

Diff:
---
 gas/config/tc-i386.c                |   9 +
 gas/doc/c-i386.texi                 |   9 +
 gas/testsuite/gas/i386/i386.exp     |   2 +
 gas/testsuite/gas/i386/noavx512-1.l | 416 ++++++++++++++++++++++++++++++++++++
 gas/testsuite/gas/i386/noavx512-1.s | 207 ++++++++++++++++++
 gas/testsuite/gas/i386/noavx512-2.l | 105 +++++++++
 gas/testsuite/gas/i386/noavx512-2.s |  53 +++++
 opcodes/i386-gen.c                  |  18 ++
 opcodes/i386-init.h                 |  63 ++++++
 9 files changed, 882 insertions(+)

diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c
index b69130a..457f557 100644
--- a/gas/config/tc-i386.c
+++ b/gas/config/tc-i386.c
@@ -987,6 +987,15 @@ static const noarch_entry cpu_noarch[] =
   { STRING_COMMA_LEN ("nosse4"),  CPU_ANY_SSE4_1_FLAGS },
   { STRING_COMMA_LEN ("noavx"),  CPU_ANY_AVX_FLAGS },
   { STRING_COMMA_LEN ("noavx2"),  CPU_ANY_AVX2_FLAGS },
+  { STRING_COMMA_LEN ("noavx512f"), CPU_ANY_AVX512F_FLAGS },
+  { STRING_COMMA_LEN ("noavx512cd"), CPU_ANY_AVX512CD_FLAGS },
+  { STRING_COMMA_LEN ("noavx512er"), CPU_ANY_AVX512ER_FLAGS },
+  { STRING_COMMA_LEN ("noavx512pf"), CPU_ANY_AVX512PF_FLAGS },
+  { STRING_COMMA_LEN ("noavx512dq"), CPU_ANY_AVX512DQ_FLAGS },
+  { STRING_COMMA_LEN ("noavx512bw"), CPU_ANY_AVX512BW_FLAGS },
+  { STRING_COMMA_LEN ("noavx512vl"), CPU_ANY_AVX512VL_FLAGS },
+  { STRING_COMMA_LEN ("noavx512ifma"), CPU_ANY_AVX512IFMA_FLAGS },
+  { STRING_COMMA_LEN ("noavx512vbmi"), CPU_ANY_AVX512VBMI_FLAGS },
 };
 
 #ifdef I386COFF
diff --git a/gas/doc/c-i386.texi b/gas/doc/c-i386.texi
index 696cadf..30e29f6 100644
--- a/gas/doc/c-i386.texi
+++ b/gas/doc/c-i386.texi
@@ -180,6 +180,15 @@ accept various extension mnemonics.  For example,
 @code{avx512dq},
 @code{avx512ifma},
 @code{avx512vbmi},
+@code{noavx512f},
+@code{noavx512cd},
+@code{noavx512er},
+@code{noavx512pf},
+@code{noavx512vl},
+@code{noavx512bw},
+@code{noavx512dq},
+@code{noavx512ifma},
+@code{noavx512vbmi},
 @code{vmx},
 @code{vmfunc},
 @code{smx},
diff --git a/gas/testsuite/gas/i386/i386.exp b/gas/testsuite/gas/i386/i386.exp
index 0c22498..959cd14 100644
--- a/gas/testsuite/gas/i386/i386.exp
+++ b/gas/testsuite/gas/i386/i386.exp
@@ -178,6 +178,8 @@ if [expr ([istarget "i*86-*-*"] ||  [istarget "x86_64-*-*"]) && [gas_32_check]]
     run_list_test "noavx-2" "-march=+noavx -al"
     run_list_test "noavx-3" "-al"
     run_dump_test "noavx-4"
+    run_list_test "noavx512-1" "-al"
+    run_list_test "noavx512-2" "-al"
     run_dump_test "xsave"
     run_dump_test "xsave-intel"
     run_dump_test "aes"
diff --git a/gas/testsuite/gas/i386/noavx512-1.l b/gas/testsuite/gas/i386/noavx512-1.l
new file mode 100644
index 0000000..ece9211
--- /dev/null
+++ b/gas/testsuite/gas/i386/noavx512-1.l
@@ -0,0 +1,416 @@
+.*: Assembler messages:
+.*:25: Error: .*unsupported instruction.*
+.*:26: Error: .*unsupported masking.*
+.*:27: Error: .*unsupported masking.*
+.*:47: Error: .*unsupported instruction.*
+.*:48: Error: .*unsupported masking.*
+.*:49: Error: .*unsupported masking.*
+.*:50: Error: .*not supported.*
+.*:51: Error: .*not supported.*
+.*:52: Error: .*not supported.*
+.*:69: Error: .*unsupported instruction.*
+.*:70: Error: .*unsupported masking.*
+.*:71: Error: .*unsupported masking.*
+.*:72: Error: .*not supported.*
+.*:73: Error: .*not supported.*
+.*:74: Error: .*not supported.*
+.*:75: Error: .*not supported.*
+.*:76: Error: .*not supported.*
+.*:77: Error: .*not supported.*
+.*:91: Error: .*unsupported instruction.*
+.*:92: Error: .*unsupported masking.*
+.*:93: Error: .*unsupported masking.*
+.*:94: Error: .*not supported.*
+.*:95: Error: .*not supported.*
+.*:96: Error: .*not supported.*
+.*:97: Error: .*not supported.*
+.*:98: Error: .*not supported.*
+.*:99: Error: .*not supported.*
+.*:100: Error: .*not supported.*
+.*:113: Error: .*unsupported instruction.*
+.*:114: Error: .*unsupported masking.*
+.*:115: Error: .*unsupported masking.*
+.*:116: Error: .*not supported.*
+.*:117: Error: .*not supported.*
+.*:118: Error: .*not supported.*
+.*:119: Error: .*not supported.*
+.*:120: Error: .*not supported.*
+.*:121: Error: .*not supported.*
+.*:122: Error: .*not supported.*
+.*:126: Error: .*not supported.*
+.*:127: Error: .*not supported.*
+.*:128: Error: .*not supported.*
+.*:135: Error: .*unsupported instruction.*
+.*:136: Error: .*unsupported masking.*
+.*:137: Error: .*unsupported masking.*
+.*:138: Error: .*not supported.*
+.*:139: Error: .*not supported.*
+.*:140: Error: .*not supported.*
+.*:141: Error: .*not supported.*
+.*:142: Error: .*not supported.*
+.*:143: Error: .*not supported.*
+.*:144: Error: .*not supported.*
+.*:148: Error: .*not supported.*
+.*:149: Error: .*not supported.*
+.*:150: Error: .*not supported.*
+.*:151: Error: .*not supported.*
+.*:157: Error: .*unsupported instruction.*
+.*:158: Error: .*unsupported masking.*
+.*:159: Error: .*unsupported masking.*
+.*:160: Error: .*not supported.*
+.*:161: Error: .*not supported.*
+.*:162: Error: .*not supported.*
+.*:163: Error: .*not supported.*
+.*:164: Error: .*not supported.*
+.*:165: Error: .*not supported.*
+.*:166: Error: .*not supported.*
+.*:170: Error: .*not supported.*
+.*:171: Error: .*not supported.*
+.*:172: Error: .*not supported.*
+.*:173: Error: .*not supported.*
+.*:174: Error: .*not supported.*
+.*:175: Error: .*not supported.*
+.*:176: Error: .*not supported.*
+.*:179: Error: .*bad register name.*
+.*:180: Error: .*unknown vector operation.*
+.*:181: Error: .*unknown vector operation.*
+.*:182: Error: .*not supported.*
+.*:183: Error: .*not supported.*
+.*:184: Error: .*not supported.*
+.*:185: Error: .*not supported.*
+.*:186: Error: .*not supported.*
+.*:187: Error: .*not supported.*
+.*:188: Error: .*not supported.*
+.*:189: Error: .*bad register name.*
+.*:190: Error: .*unknown vector operation.*
+.*:191: Error: .*unknown vector operation.*
+.*:192: Error: .*not supported.*
+.*:193: Error: .*not supported.*
+.*:194: Error: .*not supported.*
+.*:195: Error: .*not supported.*
+.*:196: Error: .*not supported.*
+.*:197: Error: .*not supported.*
+.*:198: Error: .*not supported.*
+GAS LISTING .*
+#...
+[ 	]*1[ 	]+\# Test \.arch \.noavx512XX
+[ 	]*2[ 	]+\.text
+[ 	]*3[ 	]+\?\?\?\? 62F27D4F 		vpabsb %zmm5, %zmm6\{%k7\}		\# AVX512BW
+[ 	]*3[ 	]+1CF5
+[ 	]*4[ 	]+\?\?\?\? 62F27D0F 		vpabsb %xmm5, %xmm6\{%k7\}		\# AVX512BW \+ AVX512VL
+[ 	]*4[ 	]+1CF5
+[ 	]*5[ 	]+\?\?\?\? 62F27D2F 		vpabsb %ymm5, %ymm6\{%k7\}		\# AVX512BW \+ AVX512VL
+[ 	]*5[ 	]+1CF5
+[ 	]*6[ 	]+\?\?\?\? 62F27D48 		vpconflictd %zmm5, %zmm6		\# AVX412CD
+[ 	]*6[ 	]+C4F5
+[ 	]*7[ 	]+\?\?\?\? 62F27D08 		vpconflictd %xmm5, %xmm6		\# AVX412CD \+ AVX512VL
+[ 	]*7[ 	]+C4F5
+[ 	]*8[ 	]+\?\?\?\? 62F27D28 		vpconflictd %ymm5, %ymm6		\# AVX412CD \+ AVX512VL
+[ 	]*8[ 	]+C4F5
+[ 	]*9[ 	]+\?\?\?\? 62F1FD4F 		vcvtpd2qq \(%ecx\), %zmm6\{%k7\}		\# AVX512DQ
+[ 	]*9[ 	]+7B31
+[ 	]*10[ 	]+\?\?\?\? 62F1FD0F 		vcvtpd2qq \(%ecx\), %xmm6\{%k7\}		\# AVX512DQ \+ AVX512VL
+[ 	]*10[ 	]+7B31
+[ 	]*11[ 	]+\?\?\?\? 62F1FD2F 		vcvtpd2qq \(%ecx\), %ymm6\{%k7\}		\# AVX512DQ \+ AVX512VL
+[ 	]*11[ 	]+7B31
+[ 	]*12[ 	]+\?\?\?\? 62F27D4F 		vexp2ps %zmm5, %zmm6\{%k7\}		\# AVX512ER
+[ 	]*12[ 	]+C8F5
+[ 	]*13[ 	]+\?\?\?\? 62F1D54F 		vaddpd %zmm4, %zmm5, %zmm6\{%k7\}		\# AVX512F
+[ 	]*13[ 	]+58F4
+[ 	]*14[ 	]+\?\?\?\? 62F1D50F 		vaddpd %xmm4, %xmm5, %xmm6\{%k7\}		\# AVX512F \+ AVX512VL
+[ 	]*14[ 	]+58F4
+[ 	]*15[ 	]+\?\?\?\? 62F1D52F 		vaddpd %ymm4, %ymm5, %ymm6\{%k7\}		\# AVX512F \+ AVX512VL
+[ 	]*15[ 	]+58F4
+[ 	]*16[ 	]+\?\?\?\? 62F2D54F 		vpmadd52luq %zmm4, %zmm5, %zmm6\{%k7\}	\# AVX512IFMA
+[ 	]*16[ 	]+B4F4
+[ 	]*17[ 	]+\?\?\?\? 62F2D50F 		vpmadd52luq %xmm4, %xmm5, %xmm6\{%k7\}	\# AVX512IFMA \+ AVX512VL
+[ 	]*17[ 	]+B4F4
+[ 	]*18[ 	]+\?\?\?\? 62F2D52F 		vpmadd52luq %ymm4, %ymm5, %ymm6\{%k7\}	\# AVX512IFMA \+ AVX512VL
+[ 	]*18[ 	]+B4F4
+[ 	]*19[ 	]+\?\?\?\? 62F2FD49 		vgatherpf0dpd 23\(%ebp,%ymm7,8\)\{%k1\}	\# AVX512PF
+[ 	]*19[ 	]+C68CFD17 
+[ 	]*19[ 	]+000000
+[ 	]*20[ 	]+\?\?\?\? 62F2554F 		vpermb %zmm4, %zmm5, %zmm6\{%k7\}		\# AVX512VBMI
+[ 	]*20[ 	]+8DF4
+[ 	]*21[ 	]+\?\?\?\? 62F2550F 		vpermb %xmm4, %xmm5, %xmm6\{%k7\}		\# AVX512VBMI \+ AVX512VL
+[ 	]*21[ 	]+8DF4
+[ 	]*22[ 	]+\?\?\?\? 62F2552F 		vpermb %ymm4, %ymm5, %ymm6\{%k7\}		\# AVX512VBMI \+ AVX512VL
+[ 	]*22[ 	]+8DF4
+[ 	]*23[ 	]+
+[ 	]*24[ 	]+\.arch \.noavx512bw
+[ 	]*25[ 	]+vpabsb %zmm5, %zmm6\{%k7\}		\# AVX512BW
+[ 	]*26[ 	]+vpabsb %xmm5, %xmm6\{%k7\}		\# AVX512BW \+ AVX512VL
+[ 	]*27[ 	]+vpabsb %ymm5, %ymm6\{%k7\}		\# AVX512BW \+ AVX512VL
+[ 	]*28[ 	]+\?\?\?\? 62F27D48 		vpconflictd %zmm5, %zmm6		\# AVX412CD
+[ 	]*28[ 	]+C4F5
+[ 	]*29[ 	]+\?\?\?\? 62F27D08 		vpconflictd %xmm5, %xmm6		\# AVX412CD \+ AVX512VL
+[ 	]*29[ 	]+C4F5
+[ 	]*30[ 	]+\?\?\?\? 62F27D28 		vpconflictd %ymm5, %ymm6		\# AVX412CD \+ AVX512VL
+[ 	]*30[ 	]+C4F5
+[ 	]*31[ 	]+\?\?\?\? 62F1FD4F 		vcvtpd2qq \(%ecx\), %zmm6\{%k7\}		\# AVX512DQ
+[ 	]*31[ 	]+7B31
+[ 	]*32[ 	]+\?\?\?\? 62F1FD0F 		vcvtpd2qq \(%ecx\), %xmm6\{%k7\}		\# AVX512DQ \+ AVX512VL
+GAS LISTING .*
+
+
+[ 	]*32[ 	]+7B31
+[ 	]*33[ 	]+\?\?\?\? 62F1FD2F 		vcvtpd2qq \(%ecx\), %ymm6\{%k7\}		\# AVX512DQ \+ AVX512VL
+[ 	]*33[ 	]+7B31
+[ 	]*34[ 	]+\?\?\?\? 62F27D4F 		vexp2ps %zmm5, %zmm6\{%k7\}		\# AVX512ER
+[ 	]*34[ 	]+C8F5
+[ 	]*35[ 	]+\?\?\?\? 62F1D54F 		vaddpd %zmm4, %zmm5, %zmm6\{%k7\}		\# AVX512F
+[ 	]*35[ 	]+58F4
+[ 	]*36[ 	]+\?\?\?\? 62F1D50F 		vaddpd %xmm4, %xmm5, %xmm6\{%k7\}		\# AVX512F \+ AVX512VL
+[ 	]*36[ 	]+58F4
+[ 	]*37[ 	]+\?\?\?\? 62F1D52F 		vaddpd %ymm4, %ymm5, %ymm6\{%k7\}		\# AVX512F \+ AVX512VL
+[ 	]*37[ 	]+58F4
+[ 	]*38[ 	]+\?\?\?\? 62F2D54F 		vpmadd52luq %zmm4, %zmm5, %zmm6\{%k7\}	\# AVX512IFMA
+[ 	]*38[ 	]+B4F4
+[ 	]*39[ 	]+\?\?\?\? 62F2D50F 		vpmadd52luq %xmm4, %xmm5, %xmm6\{%k7\}	\# AVX512IFMA \+ AVX512VL
+[ 	]*39[ 	]+B4F4
+[ 	]*40[ 	]+\?\?\?\? 62F2D52F 		vpmadd52luq %ymm4, %ymm5, %ymm6\{%k7\}	\# AVX512IFMA \+ AVX512VL
+[ 	]*40[ 	]+B4F4
+[ 	]*41[ 	]+\?\?\?\? 62F2FD49 		vgatherpf0dpd 23\(%ebp,%ymm7,8\)\{%k1\}	\# AVX512PF
+[ 	]*41[ 	]+C68CFD17 
+[ 	]*41[ 	]+000000
+[ 	]*42[ 	]+\?\?\?\? 62F2554F 		vpermb %zmm4, %zmm5, %zmm6\{%k7\}		\# AVX512VBMI
+[ 	]*42[ 	]+8DF4
+[ 	]*43[ 	]+\?\?\?\? 62F2550F 		vpermb %xmm4, %xmm5, %xmm6\{%k7\}		\# AVX512VBMI \+ AVX512VL
+[ 	]*43[ 	]+8DF4
+[ 	]*44[ 	]+\?\?\?\? 62F2552F 		vpermb %ymm4, %ymm5, %ymm6\{%k7\}		\# AVX512VBMI \+ AVX512VL
+[ 	]*44[ 	]+8DF4
+[ 	]*45[ 	]+
+[ 	]*46[ 	]+\.arch \.noavx512cd
+[ 	]*47[ 	]+vpabsb %zmm5, %zmm6\{%k7\}		\# AVX512BW
+[ 	]*48[ 	]+vpabsb %xmm5, %xmm6\{%k7\}		\# AVX512BW \+ AVX512VL
+[ 	]*49[ 	]+vpabsb %ymm5, %ymm6\{%k7\}		\# AVX512BW \+ AVX512VL
+[ 	]*50[ 	]+vpconflictd %zmm5, %zmm6		\# AVX412CD
+[ 	]*51[ 	]+vpconflictd %xmm5, %xmm6		\# AVX412CD \+ AVX512VL
+[ 	]*52[ 	]+vpconflictd %ymm5, %ymm6		\# AVX412CD \+ AVX512VL
+[ 	]*53[ 	]+\?\?\?\? 62F1FD4F 		vcvtpd2qq \(%ecx\), %zmm6\{%k7\}		\# AVX512DQ
+[ 	]*53[ 	]+7B31
+[ 	]*54[ 	]+\?\?\?\? 62F1FD0F 		vcvtpd2qq \(%ecx\), %xmm6\{%k7\}		\# AVX512DQ \+ AVX512VL
+[ 	]*54[ 	]+7B31
+[ 	]*55[ 	]+\?\?\?\? 62F1FD2F 		vcvtpd2qq \(%ecx\), %ymm6\{%k7\}		\# AVX512DQ \+ AVX512VL
+[ 	]*55[ 	]+7B31
+[ 	]*56[ 	]+\?\?\?\? 62F27D4F 		vexp2ps %zmm5, %zmm6\{%k7\}		\# AVX512ER
+[ 	]*56[ 	]+C8F5
+[ 	]*57[ 	]+\?\?\?\? 62F1D54F 		vaddpd %zmm4, %zmm5, %zmm6\{%k7\}		\# AVX512F
+[ 	]*57[ 	]+58F4
+[ 	]*58[ 	]+\?\?\?\? 62F1D50F 		vaddpd %xmm4, %xmm5, %xmm6\{%k7\}		\# AVX512F \+ AVX512VL
+[ 	]*58[ 	]+58F4
+[ 	]*59[ 	]+\?\?\?\? 62F1D52F 		vaddpd %ymm4, %ymm5, %ymm6\{%k7\}		\# AVX512F \+ AVX512VL
+[ 	]*59[ 	]+58F4
+[ 	]*60[ 	]+\?\?\?\? 62F2D54F 		vpmadd52luq %zmm4, %zmm5, %zmm6\{%k7\}	\# AVX512IFMA
+[ 	]*60[ 	]+B4F4
+[ 	]*61[ 	]+\?\?\?\? 62F2D50F 		vpmadd52luq %xmm4, %xmm5, %xmm6\{%k7\}	\# AVX512IFMA \+ AVX512VL
+[ 	]*61[ 	]+B4F4
+[ 	]*62[ 	]+\?\?\?\? 62F2D52F 		vpmadd52luq %ymm4, %ymm5, %ymm6\{%k7\}	\# AVX512IFMA \+ AVX512VL
+[ 	]*62[ 	]+B4F4
+[ 	]*63[ 	]+\?\?\?\? 62F2FD49 		vgatherpf0dpd 23\(%ebp,%ymm7,8\)\{%k1\}	\# AVX512PF
+[ 	]*63[ 	]+C68CFD17 
+[ 	]*63[ 	]+000000
+GAS LISTING .*
+
+
+[ 	]*64[ 	]+\?\?\?\? 62F2554F 		vpermb %zmm4, %zmm5, %zmm6\{%k7\}		\# AVX512VBMI
+[ 	]*64[ 	]+8DF4
+[ 	]*65[ 	]+\?\?\?\? 62F2550F 		vpermb %xmm4, %xmm5, %xmm6\{%k7\}		\# AVX512VBMI \+ AVX512VL
+[ 	]*65[ 	]+8DF4
+[ 	]*66[ 	]+\?\?\?\? 62F2552F 		vpermb %ymm4, %ymm5, %ymm6\{%k7\}		\# AVX512VBMI \+ AVX512VL
+[ 	]*66[ 	]+8DF4
+[ 	]*67[ 	]+
+[ 	]*68[ 	]+\.arch \.noavx512dq
+[ 	]*69[ 	]+vpabsb %zmm5, %zmm6\{%k7\}		\# AVX512BW
+[ 	]*70[ 	]+vpabsb %xmm5, %xmm6\{%k7\}		\# AVX512BW \+ AVX512VL
+[ 	]*71[ 	]+vpabsb %ymm5, %ymm6\{%k7\}		\# AVX512BW \+ AVX512VL
+[ 	]*72[ 	]+vpconflictd %zmm5, %zmm6		\# AVX412CD
+[ 	]*73[ 	]+vpconflictd %xmm5, %xmm6		\# AVX412CD \+ AVX512VL
+[ 	]*74[ 	]+vpconflictd %ymm5, %ymm6		\# AVX412CD \+ AVX512VL
+[ 	]*75[ 	]+vcvtpd2qq \(%ecx\), %zmm6\{%k7\}		\# AVX512DQ
+[ 	]*76[ 	]+vcvtpd2qq \(%ecx\), %xmm6\{%k7\}		\# AVX512DQ \+ AVX512VL
+[ 	]*77[ 	]+vcvtpd2qq \(%ecx\), %ymm6\{%k7\}		\# AVX512DQ \+ AVX512VL
+[ 	]*78[ 	]+\?\?\?\? 62F27D4F 		vexp2ps %zmm5, %zmm6\{%k7\}		\# AVX512ER
+[ 	]*78[ 	]+C8F5
+[ 	]*79[ 	]+\?\?\?\? 62F1D54F 		vaddpd %zmm4, %zmm5, %zmm6\{%k7\}		\# AVX512F
+[ 	]*79[ 	]+58F4
+[ 	]*80[ 	]+\?\?\?\? 62F1D50F 		vaddpd %xmm4, %xmm5, %xmm6\{%k7\}		\# AVX512F \+ AVX512VL
+[ 	]*80[ 	]+58F4
+[ 	]*81[ 	]+\?\?\?\? 62F1D52F 		vaddpd %ymm4, %ymm5, %ymm6\{%k7\}		\# AVX512F \+ AVX512VL
+[ 	]*81[ 	]+58F4
+[ 	]*82[ 	]+\?\?\?\? 62F2D54F 		vpmadd52luq %zmm4, %zmm5, %zmm6\{%k7\}	\# AVX512IFMA
+[ 	]*82[ 	]+B4F4
+[ 	]*83[ 	]+\?\?\?\? 62F2D50F 		vpmadd52luq %xmm4, %xmm5, %xmm6\{%k7\}	\# AVX512IFMA \+ AVX512VL
+[ 	]*83[ 	]+B4F4
+[ 	]*84[ 	]+\?\?\?\? 62F2D52F 		vpmadd52luq %ymm4, %ymm5, %ymm6\{%k7\}	\# AVX512IFMA \+ AVX512VL
+[ 	]*84[ 	]+B4F4
+[ 	]*85[ 	]+\?\?\?\? 62F2FD49 		vgatherpf0dpd 23\(%ebp,%ymm7,8\)\{%k1\}	\# AVX512PF
+[ 	]*85[ 	]+C68CFD17 
+[ 	]*85[ 	]+000000
+[ 	]*86[ 	]+\?\?\?\? 62F2554F 		vpermb %zmm4, %zmm5, %zmm6\{%k7\}		\# AVX512VBMI
+[ 	]*86[ 	]+8DF4
+[ 	]*87[ 	]+\?\?\?\? 62F2550F 		vpermb %xmm4, %xmm5, %xmm6\{%k7\}		\# AVX512VBMI \+ AVX512VL
+[ 	]*87[ 	]+8DF4
+[ 	]*88[ 	]+\?\?\?\? 62F2552F 		vpermb %ymm4, %ymm5, %ymm6\{%k7\}		\# AVX512VBMI \+ AVX512VL
+[ 	]*88[ 	]+8DF4
+[ 	]*89[ 	]+
+[ 	]*90[ 	]+\.arch \.noavx512er
+[ 	]*91[ 	]+vpabsb %zmm5, %zmm6\{%k7\}		\# AVX512BW
+[ 	]*92[ 	]+vpabsb %xmm5, %xmm6\{%k7\}		\# AVX512BW \+ AVX512VL
+[ 	]*93[ 	]+vpabsb %ymm5, %ymm6\{%k7\}		\# AVX512BW \+ AVX512VL
+[ 	]*94[ 	]+vpconflictd %zmm5, %zmm6		\# AVX412CD
+[ 	]*95[ 	]+vpconflictd %xmm5, %xmm6		\# AVX412CD \+ AVX512VL
+[ 	]*96[ 	]+vpconflictd %ymm5, %ymm6		\# AVX412CD \+ AVX512VL
+[ 	]*97[ 	]+vcvtpd2qq \(%ecx\), %zmm6\{%k7\}		\# AVX512DQ
+[ 	]*98[ 	]+vcvtpd2qq \(%ecx\), %xmm6\{%k7\}		\# AVX512DQ \+ AVX512VL
+[ 	]*99[ 	]+vcvtpd2qq \(%ecx\), %ymm6\{%k7\}		\# AVX512DQ \+ AVX512VL
+[ 	]*100[ 	]+vexp2ps %zmm5, %zmm6\{%k7\}		\# AVX512ER
+[ 	]*101[ 	]+\?\?\?\? 62F1D54F 		vaddpd %zmm4, %zmm5, %zmm6\{%k7\}		\# AVX512F
+[ 	]*101[ 	]+58F4
+[ 	]*102[ 	]+\?\?\?\? 62F1D50F 		vaddpd %xmm4, %xmm5, %xmm6\{%k7\}		\# AVX512F \+ AVX512VL
+[ 	]*102[ 	]+58F4
+[ 	]*103[ 	]+\?\?\?\? 62F1D52F 		vaddpd %ymm4, %ymm5, %ymm6\{%k7\}		\# AVX512F \+ AVX512VL
+GAS LISTING .*
+
+
+[ 	]*103[ 	]+58F4
+[ 	]*104[ 	]+\?\?\?\? 62F2D54F 		vpmadd52luq %zmm4, %zmm5, %zmm6\{%k7\}	\# AVX512IFMA
+[ 	]*104[ 	]+B4F4
+[ 	]*105[ 	]+\?\?\?\? 62F2D50F 		vpmadd52luq %xmm4, %xmm5, %xmm6\{%k7\}	\# AVX512IFMA \+ AVX512VL
+[ 	]*105[ 	]+B4F4
+[ 	]*106[ 	]+\?\?\?\? 62F2D52F 		vpmadd52luq %ymm4, %ymm5, %ymm6\{%k7\}	\# AVX512IFMA \+ AVX512VL
+[ 	]*106[ 	]+B4F4
+[ 	]*107[ 	]+\?\?\?\? 62F2FD49 		vgatherpf0dpd 23\(%ebp,%ymm7,8\)\{%k1\}	\# AVX512PF
+[ 	]*107[ 	]+C68CFD17 
+[ 	]*107[ 	]+000000
+[ 	]*108[ 	]+\?\?\?\? 62F2554F 		vpermb %zmm4, %zmm5, %zmm6\{%k7\}		\# AVX512VBMI
+[ 	]*108[ 	]+8DF4
+[ 	]*109[ 	]+\?\?\?\? 62F2550F 		vpermb %xmm4, %xmm5, %xmm6\{%k7\}		\# AVX512VBMI \+ AVX512VL
+[ 	]*109[ 	]+8DF4
+[ 	]*110[ 	]+\?\?\?\? 62F2552F 		vpermb %ymm4, %ymm5, %ymm6\{%k7\}		\# AVX512VBMI \+ AVX512VL
+[ 	]*110[ 	]+8DF4
+[ 	]*111[ 	]+
+[ 	]*112[ 	]+\.arch \.noavx512ifma
+[ 	]*113[ 	]+vpabsb %zmm5, %zmm6\{%k7\}		\# AVX512BW
+[ 	]*114[ 	]+vpabsb %xmm5, %xmm6\{%k7\}		\# AVX512BW \+ AVX512VL
+[ 	]*115[ 	]+vpabsb %ymm5, %ymm6\{%k7\}		\# AVX512BW \+ AVX512VL
+[ 	]*116[ 	]+vpconflictd %zmm5, %zmm6		\# AVX412CD
+[ 	]*117[ 	]+vpconflictd %xmm5, %xmm6		\# AVX412CD \+ AVX512VL
+[ 	]*118[ 	]+vpconflictd %ymm5, %ymm6		\# AVX412CD \+ AVX512VL
+[ 	]*119[ 	]+vcvtpd2qq \(%ecx\), %zmm6\{%k7\}		\# AVX512DQ
+[ 	]*120[ 	]+vcvtpd2qq \(%ecx\), %xmm6\{%k7\}		\# AVX512DQ \+ AVX512VL
+[ 	]*121[ 	]+vcvtpd2qq \(%ecx\), %ymm6\{%k7\}		\# AVX512DQ \+ AVX512VL
+[ 	]*122[ 	]+vexp2ps %zmm5, %zmm6\{%k7\}		\# AVX512ER
+[ 	]*123[ 	]+\?\?\?\? 62F1D54F 		vaddpd %zmm4, %zmm5, %zmm6\{%k7\}		\# AVX512F
+[ 	]*123[ 	]+58F4
+[ 	]*124[ 	]+\?\?\?\? 62F1D50F 		vaddpd %xmm4, %xmm5, %xmm6\{%k7\}		\# AVX512F \+ AVX512VL
+[ 	]*124[ 	]+58F4
+[ 	]*125[ 	]+\?\?\?\? 62F1D52F 		vaddpd %ymm4, %ymm5, %ymm6\{%k7\}		\# AVX512F \+ AVX512VL
+[ 	]*125[ 	]+58F4
+[ 	]*126[ 	]+vpmadd52luq %zmm4, %zmm5, %zmm6\{%k7\}	\# AVX512IFMA
+[ 	]*127[ 	]+vpmadd52luq %xmm4, %xmm5, %xmm6\{%k7\}	\# AVX512IFMA \+ AVX512VL
+[ 	]*128[ 	]+vpmadd52luq %ymm4, %ymm5, %ymm6\{%k7\}	\# AVX512IFMA \+ AVX512VL
+[ 	]*129[ 	]+\?\?\?\? 62F2FD49 		vgatherpf0dpd 23\(%ebp,%ymm7,8\)\{%k1\}	\# AVX512PF
+[ 	]*129[ 	]+C68CFD17 
+[ 	]*129[ 	]+000000
+[ 	]*130[ 	]+\?\?\?\? 62F2554F 		vpermb %zmm4, %zmm5, %zmm6\{%k7\}		\# AVX512VBMI
+[ 	]*130[ 	]+8DF4
+[ 	]*131[ 	]+\?\?\?\? 62F2550F 		vpermb %xmm4, %xmm5, %xmm6\{%k7\}		\# AVX512VBMI \+ AVX512VL
+[ 	]*131[ 	]+8DF4
+[ 	]*132[ 	]+\?\?\?\? 62F2552F 		vpermb %ymm4, %ymm5, %ymm6\{%k7\}		\# AVX512VBMI \+ AVX512VL
+[ 	]*132[ 	]+8DF4
+[ 	]*133[ 	]+
+[ 	]*134[ 	]+\.arch \.noavx512pf
+[ 	]*135[ 	]+vpabsb %zmm5, %zmm6\{%k7\}		\# AVX512BW
+[ 	]*136[ 	]+vpabsb %xmm5, %xmm6\{%k7\}		\# AVX512BW \+ AVX512VL
+[ 	]*137[ 	]+vpabsb %ymm5, %ymm6\{%k7\}		\# AVX512BW \+ AVX512VL
+[ 	]*138[ 	]+vpconflictd %zmm5, %zmm6		\# AVX412CD
+[ 	]*139[ 	]+vpconflictd %xmm5, %xmm6		\# AVX412CD \+ AVX512VL
+[ 	]*140[ 	]+vpconflictd %ymm5, %ymm6		\# AVX412CD \+ AVX512VL
+[ 	]*141[ 	]+vcvtpd2qq \(%ecx\), %zmm6\{%k7\}		\# AVX512DQ
+[ 	]*142[ 	]+vcvtpd2qq \(%ecx\), %xmm6\{%k7\}		\# AVX512DQ \+ AVX512VL
+[ 	]*143[ 	]+vcvtpd2qq \(%ecx\), %ymm6\{%k7\}		\# AVX512DQ \+ AVX512VL
+GAS LISTING .*
+
+
+[ 	]*144[ 	]+vexp2ps %zmm5, %zmm6\{%k7\}		\# AVX512ER
+[ 	]*145[ 	]+\?\?\?\? 62F1D54F 		vaddpd %zmm4, %zmm5, %zmm6\{%k7\}		\# AVX512F
+[ 	]*145[ 	]+58F4
+[ 	]*146[ 	]+\?\?\?\? 62F1D50F 		vaddpd %xmm4, %xmm5, %xmm6\{%k7\}		\# AVX512F \+ AVX512VL
+[ 	]*146[ 	]+58F4
+[ 	]*147[ 	]+\?\?\?\? 62F1D52F 		vaddpd %ymm4, %ymm5, %ymm6\{%k7\}		\# AVX512F \+ AVX512VL
+[ 	]*147[ 	]+58F4
+[ 	]*148[ 	]+vpmadd52luq %zmm4, %zmm5, %zmm6\{%k7\}	\# AVX512IFMA
+[ 	]*149[ 	]+vpmadd52luq %xmm4, %xmm5, %xmm6\{%k7\}	\# AVX512IFMA \+ AVX512VL
+[ 	]*150[ 	]+vpmadd52luq %ymm4, %ymm5, %ymm6\{%k7\}	\# AVX512IFMA \+ AVX512VL
+[ 	]*151[ 	]+vgatherpf0dpd 23\(%ebp,%ymm7,8\)\{%k1\}	\# AVX512PF
+[ 	]*152[ 	]+\?\?\?\? 62F2554F 		vpermb %zmm4, %zmm5, %zmm6\{%k7\}		\# AVX512VBMI
+[ 	]*152[ 	]+8DF4
+[ 	]*153[ 	]+\?\?\?\? 62F2550F 		vpermb %xmm4, %xmm5, %xmm6\{%k7\}		\# AVX512VBMI \+ AVX512VL
+[ 	]*153[ 	]+8DF4
+[ 	]*154[ 	]+\?\?\?\? 62F2552F 		vpermb %ymm4, %ymm5, %ymm6\{%k7\}		\# AVX512VBMI \+ AVX512VL
+[ 	]*154[ 	]+8DF4
+[ 	]*155[ 	]+
+[ 	]*156[ 	]+\.arch \.noavx512vbmi
+[ 	]*157[ 	]+vpabsb %zmm5, %zmm6\{%k7\}		\# AVX512BW
+[ 	]*158[ 	]+vpabsb %xmm5, %xmm6\{%k7\}		\# AVX512BW \+ AVX512VL
+[ 	]*159[ 	]+vpabsb %ymm5, %ymm6\{%k7\}		\# AVX512BW \+ AVX512VL
+[ 	]*160[ 	]+vpconflictd %zmm5, %zmm6		\# AVX412CD
+[ 	]*161[ 	]+vpconflictd %xmm5, %xmm6		\# AVX412CD \+ AVX512VL
+[ 	]*162[ 	]+vpconflictd %ymm5, %ymm6		\# AVX412CD \+ AVX512VL
+[ 	]*163[ 	]+vcvtpd2qq \(%ecx\), %zmm6\{%k7\}		\# AVX512DQ
+[ 	]*164[ 	]+vcvtpd2qq \(%ecx\), %xmm6\{%k7\}		\# AVX512DQ \+ AVX512VL
+[ 	]*165[ 	]+vcvtpd2qq \(%ecx\), %ymm6\{%k7\}		\# AVX512DQ \+ AVX512VL
+[ 	]*166[ 	]+vexp2ps %zmm5, %zmm6\{%k7\}		\# AVX512ER
+[ 	]*167[ 	]+\?\?\?\? 62F1D54F 		vaddpd %zmm4, %zmm5, %zmm6\{%k7\}		\# AVX512F
+[ 	]*167[ 	]+58F4
+[ 	]*168[ 	]+\?\?\?\? 62F1D50F 		vaddpd %xmm4, %xmm5, %xmm6\{%k7\}		\# AVX512F \+ AVX512VL
+[ 	]*168[ 	]+58F4
+[ 	]*169[ 	]+\?\?\?\? 62F1D52F 		vaddpd %ymm4, %ymm5, %ymm6\{%k7\}		\# AVX512F \+ AVX512VL
+[ 	]*169[ 	]+58F4
+[ 	]*170[ 	]+vpmadd52luq %zmm4, %zmm5, %zmm6\{%k7\}	\# AVX512IFMA
+[ 	]*171[ 	]+vpmadd52luq %xmm4, %xmm5, %xmm6\{%k7\}	\# AVX512IFMA \+ AVX512VL
+[ 	]*172[ 	]+vpmadd52luq %ymm4, %ymm5, %ymm6\{%k7\}	\# AVX512IFMA \+ AVX512VL
+[ 	]*173[ 	]+vgatherpf0dpd 23\(%ebp,%ymm7,8\)\{%k1\}	\# AVX512PF
+[ 	]*174[ 	]+vpermb %zmm4, %zmm5, %zmm6\{%k7\}		\# AVX512VBMI
+[ 	]*175[ 	]+vpermb %xmm4, %xmm5, %xmm6\{%k7\}		\# AVX512VBMI \+ AVX512VL
+[ 	]*176[ 	]+vpermb %ymm4, %ymm5, %ymm6\{%k7\}		\# AVX512VBMI \+ AVX512VL
+[ 	]*177[ 	]+
+[ 	]*178[ 	]+\.arch \.noavx512f
+[ 	]*179[ 	]+vpabsb %zmm5, %zmm6\{%k7\}		\# AVX512BW
+[ 	]*180[ 	]+vpabsb %xmm5, %xmm6\{%k7\}		\# AVX512BW \+ AVX512VL
+[ 	]*181[ 	]+vpabsb %ymm5, %ymm6\{%k7\}		\# AVX512BW \+ AVX512VL
+[ 	]*182[ 	]+vpconflictd %zmm5, %zmm6		\# AVX412CD
+[ 	]*183[ 	]+vpconflictd %xmm5, %xmm6		\# AVX412CD \+ AVX512VL
+[ 	]*184[ 	]+vpconflictd %ymm5, %ymm6		\# AVX412CD \+ AVX512VL
+[ 	]*185[ 	]+vcvtpd2qq \(%ecx\), %zmm6\{%k7\}		\# AVX512DQ
+[ 	]*186[ 	]+vcvtpd2qq \(%ecx\), %xmm6\{%k7\}		\# AVX512DQ \+ AVX512VL
+[ 	]*187[ 	]+vcvtpd2qq \(%ecx\), %ymm6\{%k7\}		\# AVX512DQ \+ AVX512VL
+[ 	]*188[ 	]+vexp2ps %zmm5, %zmm6\{%k7\}		\# AVX512ER
+[ 	]*189[ 	]+vaddpd %zmm4, %zmm5, %zmm6\{%k7\}		\# AVX512F
+[ 	]*190[ 	]+vaddpd %xmm4, %xmm5, %xmm6\{%k7\}		\# AVX512F \+ AVX512VL
+[ 	]*191[ 	]+vaddpd %ymm4, %ymm5, %ymm6\{%k7\}		\# AVX512F \+ AVX512VL
+GAS LISTING .*
+
+
+[ 	]*192[ 	]+vpmadd52luq %zmm4, %zmm5, %zmm6\{%k7\}	\# AVX512IFMA
+[ 	]*193[ 	]+vpmadd52luq %xmm4, %xmm5, %xmm6\{%k7\}	\# AVX512IFMA \+ AVX512VL
+[ 	]*194[ 	]+vpmadd52luq %ymm4, %ymm5, %ymm6\{%k7\}	\# AVX512IFMA \+ AVX512VL
+[ 	]*195[ 	]+vgatherpf0dpd 23\(%ebp,%ymm7,8\)\{%k1\}	\# AVX512PF
+[ 	]*196[ 	]+vpermb %zmm4, %zmm5, %zmm6\{%k7\}		\# AVX512VBMI
+[ 	]*197[ 	]+vpermb %xmm4, %xmm5, %xmm6\{%k7\}		\# AVX512VBMI \+ AVX512VL
+[ 	]*198[ 	]+vpermb %ymm4, %ymm5, %ymm6\{%k7\}		\# AVX512VBMI \+ AVX512VL
+[ 	]*199[ 	]+
+[ 	]*200[ 	]+\?\?\?\? C4E2791C 		vpabsb %xmm5, %xmm6
+[ 	]*200[ 	]+F5
+[ 	]*201[ 	]+\?\?\?\? C4E27D1C 		vpabsb %ymm5, %ymm6
+[ 	]*201[ 	]+F5
+[ 	]*202[ 	]+\?\?\?\? C5D158F4 		vaddpd %xmm4, %xmm5, %xmm6
+[ 	]*203[ 	]+\?\?\?\? C5D558F4 		vaddpd %ymm4, %ymm5, %ymm6
+[ 	]*204[ 	]+\?\?\?\? 660F381C 		pabsb %xmm5, %xmm6
+[ 	]*204[ 	]+F5
+[ 	]*205[ 	]+\?\?\?\? 660F58F4 		addpd %xmm4, %xmm6
+[ 	]*206[ 	]+
+[ 	]*207[ 	]+\?\?\?\? 0F1F8000 		\.p2align 4
+[ 	]*207[ 	]+000000
+#pass
diff --git a/gas/testsuite/gas/i386/noavx512-1.s b/gas/testsuite/gas/i386/noavx512-1.s
new file mode 100644
index 0000000..786f244
--- /dev/null
+++ b/gas/testsuite/gas/i386/noavx512-1.s
@@ -0,0 +1,207 @@
+# Test .arch .noavx512XX
+	.text
+	vpabsb %zmm5, %zmm6{%k7}		# AVX512BW
+	vpabsb %xmm5, %xmm6{%k7}		# AVX512BW + AVX512VL
+	vpabsb %ymm5, %ymm6{%k7}		# AVX512BW + AVX512VL
+	vpconflictd %zmm5, %zmm6		# AVX412CD
+	vpconflictd %xmm5, %xmm6		# AVX412CD + AVX512VL
+	vpconflictd %ymm5, %ymm6		# AVX412CD + AVX512VL
+	vcvtpd2qq (%ecx), %zmm6{%k7}		# AVX512DQ
+	vcvtpd2qq (%ecx), %xmm6{%k7}		# AVX512DQ + AVX512VL
+	vcvtpd2qq (%ecx), %ymm6{%k7}		# AVX512DQ + AVX512VL
+	vexp2ps %zmm5, %zmm6{%k7}		# AVX512ER
+	vaddpd %zmm4, %zmm5, %zmm6{%k7}		# AVX512F
+	vaddpd %xmm4, %xmm5, %xmm6{%k7}		# AVX512F + AVX512VL
+	vaddpd %ymm4, %ymm5, %ymm6{%k7}		# AVX512F + AVX512VL
+	vpmadd52luq %zmm4, %zmm5, %zmm6{%k7}	# AVX512IFMA
+	vpmadd52luq %xmm4, %xmm5, %xmm6{%k7}	# AVX512IFMA + AVX512VL
+	vpmadd52luq %ymm4, %ymm5, %ymm6{%k7}	# AVX512IFMA + AVX512VL
+	vgatherpf0dpd 23(%ebp,%ymm7,8){%k1}	# AVX512PF
+	vpermb %zmm4, %zmm5, %zmm6{%k7}		# AVX512VBMI
+	vpermb %xmm4, %xmm5, %xmm6{%k7}		# AVX512VBMI + AVX512VL
+	vpermb %ymm4, %ymm5, %ymm6{%k7}		# AVX512VBMI + AVX512VL
+
+	.arch .noavx512bw
+	vpabsb %zmm5, %zmm6{%k7}		# AVX512BW
+	vpabsb %xmm5, %xmm6{%k7}		# AVX512BW + AVX512VL
+	vpabsb %ymm5, %ymm6{%k7}		# AVX512BW + AVX512VL
+	vpconflictd %zmm5, %zmm6		# AVX412CD
+	vpconflictd %xmm5, %xmm6		# AVX412CD + AVX512VL
+	vpconflictd %ymm5, %ymm6		# AVX412CD + AVX512VL
+	vcvtpd2qq (%ecx), %zmm6{%k7}		# AVX512DQ
+	vcvtpd2qq (%ecx), %xmm6{%k7}		# AVX512DQ + AVX512VL
+	vcvtpd2qq (%ecx), %ymm6{%k7}		# AVX512DQ + AVX512VL
+	vexp2ps %zmm5, %zmm6{%k7}		# AVX512ER
+	vaddpd %zmm4, %zmm5, %zmm6{%k7}		# AVX512F
+	vaddpd %xmm4, %xmm5, %xmm6{%k7}		# AVX512F + AVX512VL
+	vaddpd %ymm4, %ymm5, %ymm6{%k7}		# AVX512F + AVX512VL
+	vpmadd52luq %zmm4, %zmm5, %zmm6{%k7}	# AVX512IFMA
+	vpmadd52luq %xmm4, %xmm5, %xmm6{%k7}	# AVX512IFMA + AVX512VL
+	vpmadd52luq %ymm4, %ymm5, %ymm6{%k7}	# AVX512IFMA + AVX512VL
+	vgatherpf0dpd 23(%ebp,%ymm7,8){%k1}	# AVX512PF
+	vpermb %zmm4, %zmm5, %zmm6{%k7}		# AVX512VBMI
+	vpermb %xmm4, %xmm5, %xmm6{%k7}		# AVX512VBMI + AVX512VL
+	vpermb %ymm4, %ymm5, %ymm6{%k7}		# AVX512VBMI + AVX512VL
+
+	.arch .noavx512cd
+	vpabsb %zmm5, %zmm6{%k7}		# AVX512BW
+	vpabsb %xmm5, %xmm6{%k7}		# AVX512BW + AVX512VL
+	vpabsb %ymm5, %ymm6{%k7}		# AVX512BW + AVX512VL
+	vpconflictd %zmm5, %zmm6		# AVX412CD
+	vpconflictd %xmm5, %xmm6		# AVX412CD + AVX512VL
+	vpconflictd %ymm5, %ymm6		# AVX412CD + AVX512VL
+	vcvtpd2qq (%ecx), %zmm6{%k7}		# AVX512DQ
+	vcvtpd2qq (%ecx), %xmm6{%k7}		# AVX512DQ + AVX512VL
+	vcvtpd2qq (%ecx), %ymm6{%k7}		# AVX512DQ + AVX512VL
+	vexp2ps %zmm5, %zmm6{%k7}		# AVX512ER
+	vaddpd %zmm4, %zmm5, %zmm6{%k7}		# AVX512F
+	vaddpd %xmm4, %xmm5, %xmm6{%k7}		# AVX512F + AVX512VL
+	vaddpd %ymm4, %ymm5, %ymm6{%k7}		# AVX512F + AVX512VL
+	vpmadd52luq %zmm4, %zmm5, %zmm6{%k7}	# AVX512IFMA
+	vpmadd52luq %xmm4, %xmm5, %xmm6{%k7}	# AVX512IFMA + AVX512VL
+	vpmadd52luq %ymm4, %ymm5, %ymm6{%k7}	# AVX512IFMA + AVX512VL
+	vgatherpf0dpd 23(%ebp,%ymm7,8){%k1}	# AVX512PF
+	vpermb %zmm4, %zmm5, %zmm6{%k7}		# AVX512VBMI
+	vpermb %xmm4, %xmm5, %xmm6{%k7}		# AVX512VBMI + AVX512VL
+	vpermb %ymm4, %ymm5, %ymm6{%k7}		# AVX512VBMI + AVX512VL
+
+	.arch .noavx512dq
+	vpabsb %zmm5, %zmm6{%k7}		# AVX512BW
+	vpabsb %xmm5, %xmm6{%k7}		# AVX512BW + AVX512VL
+	vpabsb %ymm5, %ymm6{%k7}		# AVX512BW + AVX512VL
+	vpconflictd %zmm5, %zmm6		# AVX412CD
+	vpconflictd %xmm5, %xmm6		# AVX412CD + AVX512VL
+	vpconflictd %ymm5, %ymm6		# AVX412CD + AVX512VL
+	vcvtpd2qq (%ecx), %zmm6{%k7}		# AVX512DQ
+	vcvtpd2qq (%ecx), %xmm6{%k7}		# AVX512DQ + AVX512VL
+	vcvtpd2qq (%ecx), %ymm6{%k7}		# AVX512DQ + AVX512VL
+	vexp2ps %zmm5, %zmm6{%k7}		# AVX512ER
+	vaddpd %zmm4, %zmm5, %zmm6{%k7}		# AVX512F
+	vaddpd %xmm4, %xmm5, %xmm6{%k7}		# AVX512F + AVX512VL
+	vaddpd %ymm4, %ymm5, %ymm6{%k7}		# AVX512F + AVX512VL
+	vpmadd52luq %zmm4, %zmm5, %zmm6{%k7}	# AVX512IFMA
+	vpmadd52luq %xmm4, %xmm5, %xmm6{%k7}	# AVX512IFMA + AVX512VL
+	vpmadd52luq %ymm4, %ymm5, %ymm6{%k7}	# AVX512IFMA + AVX512VL
+	vgatherpf0dpd 23(%ebp,%ymm7,8){%k1}	# AVX512PF
+	vpermb %zmm4, %zmm5, %zmm6{%k7}		# AVX512VBMI
+	vpermb %xmm4, %xmm5, %xmm6{%k7}		# AVX512VBMI + AVX512VL
+	vpermb %ymm4, %ymm5, %ymm6{%k7}		# AVX512VBMI + AVX512VL
+
+	.arch .noavx512er
+	vpabsb %zmm5, %zmm6{%k7}		# AVX512BW
+	vpabsb %xmm5, %xmm6{%k7}		# AVX512BW + AVX512VL
+	vpabsb %ymm5, %ymm6{%k7}		# AVX512BW + AVX512VL
+	vpconflictd %zmm5, %zmm6		# AVX412CD
+	vpconflictd %xmm5, %xmm6		# AVX412CD + AVX512VL
+	vpconflictd %ymm5, %ymm6		# AVX412CD + AVX512VL
+	vcvtpd2qq (%ecx), %zmm6{%k7}		# AVX512DQ
+	vcvtpd2qq (%ecx), %xmm6{%k7}		# AVX512DQ + AVX512VL
+	vcvtpd2qq (%ecx), %ymm6{%k7}		# AVX512DQ + AVX512VL
+	vexp2ps %zmm5, %zmm6{%k7}		# AVX512ER
+	vaddpd %zmm4, %zmm5, %zmm6{%k7}		# AVX512F
+	vaddpd %xmm4, %xmm5, %xmm6{%k7}		# AVX512F + AVX512VL
+	vaddpd %ymm4, %ymm5, %ymm6{%k7}		# AVX512F + AVX512VL
+	vpmadd52luq %zmm4, %zmm5, %zmm6{%k7}	# AVX512IFMA
+	vpmadd52luq %xmm4, %xmm5, %xmm6{%k7}	# AVX512IFMA + AVX512VL
+	vpmadd52luq %ymm4, %ymm5, %ymm6{%k7}	# AVX512IFMA + AVX512VL
+	vgatherpf0dpd 23(%ebp,%ymm7,8){%k1}	# AVX512PF
+	vpermb %zmm4, %zmm5, %zmm6{%k7}		# AVX512VBMI
+	vpermb %xmm4, %xmm5, %xmm6{%k7}		# AVX512VBMI + AVX512VL
+	vpermb %ymm4, %ymm5, %ymm6{%k7}		# AVX512VBMI + AVX512VL
+
+	.arch .noavx512ifma
+	vpabsb %zmm5, %zmm6{%k7}		# AVX512BW
+	vpabsb %xmm5, %xmm6{%k7}		# AVX512BW + AVX512VL
+	vpabsb %ymm5, %ymm6{%k7}		# AVX512BW + AVX512VL
+	vpconflictd %zmm5, %zmm6		# AVX412CD
+	vpconflictd %xmm5, %xmm6		# AVX412CD + AVX512VL
+	vpconflictd %ymm5, %ymm6		# AVX412CD + AVX512VL
+	vcvtpd2qq (%ecx), %zmm6{%k7}		# AVX512DQ
+	vcvtpd2qq (%ecx), %xmm6{%k7}		# AVX512DQ + AVX512VL
+	vcvtpd2qq (%ecx), %ymm6{%k7}		# AVX512DQ + AVX512VL
+	vexp2ps %zmm5, %zmm6{%k7}		# AVX512ER
+	vaddpd %zmm4, %zmm5, %zmm6{%k7}		# AVX512F
+	vaddpd %xmm4, %xmm5, %xmm6{%k7}		# AVX512F + AVX512VL
+	vaddpd %ymm4, %ymm5, %ymm6{%k7}		# AVX512F + AVX512VL
+	vpmadd52luq %zmm4, %zmm5, %zmm6{%k7}	# AVX512IFMA
+	vpmadd52luq %xmm4, %xmm5, %xmm6{%k7}	# AVX512IFMA + AVX512VL
+	vpmadd52luq %ymm4, %ymm5, %ymm6{%k7}	# AVX512IFMA + AVX512VL
+	vgatherpf0dpd 23(%ebp,%ymm7,8){%k1}	# AVX512PF
+	vpermb %zmm4, %zmm5, %zmm6{%k7}		# AVX512VBMI
+	vpermb %xmm4, %xmm5, %xmm6{%k7}		# AVX512VBMI + AVX512VL
+	vpermb %ymm4, %ymm5, %ymm6{%k7}		# AVX512VBMI + AVX512VL
+
+	.arch .noavx512pf
+	vpabsb %zmm5, %zmm6{%k7}		# AVX512BW
+	vpabsb %xmm5, %xmm6{%k7}		# AVX512BW + AVX512VL
+	vpabsb %ymm5, %ymm6{%k7}		# AVX512BW + AVX512VL
+	vpconflictd %zmm5, %zmm6		# AVX412CD
+	vpconflictd %xmm5, %xmm6		# AVX412CD + AVX512VL
+	vpconflictd %ymm5, %ymm6		# AVX412CD + AVX512VL
+	vcvtpd2qq (%ecx), %zmm6{%k7}		# AVX512DQ
+	vcvtpd2qq (%ecx), %xmm6{%k7}		# AVX512DQ + AVX512VL
+	vcvtpd2qq (%ecx), %ymm6{%k7}		# AVX512DQ + AVX512VL
+	vexp2ps %zmm5, %zmm6{%k7}		# AVX512ER
+	vaddpd %zmm4, %zmm5, %zmm6{%k7}		# AVX512F
+	vaddpd %xmm4, %xmm5, %xmm6{%k7}		# AVX512F + AVX512VL
+	vaddpd %ymm4, %ymm5, %ymm6{%k7}		# AVX512F + AVX512VL
+	vpmadd52luq %zmm4, %zmm5, %zmm6{%k7}	# AVX512IFMA
+	vpmadd52luq %xmm4, %xmm5, %xmm6{%k7}	# AVX512IFMA + AVX512VL
+	vpmadd52luq %ymm4, %ymm5, %ymm6{%k7}	# AVX512IFMA + AVX512VL
+	vgatherpf0dpd 23(%ebp,%ymm7,8){%k1}	# AVX512PF
+	vpermb %zmm4, %zmm5, %zmm6{%k7}		# AVX512VBMI
+	vpermb %xmm4, %xmm5, %xmm6{%k7}		# AVX512VBMI + AVX512VL
+	vpermb %ymm4, %ymm5, %ymm6{%k7}		# AVX512VBMI + AVX512VL
+
+	.arch .noavx512vbmi
+	vpabsb %zmm5, %zmm6{%k7}		# AVX512BW
+	vpabsb %xmm5, %xmm6{%k7}		# AVX512BW + AVX512VL
+	vpabsb %ymm5, %ymm6{%k7}		# AVX512BW + AVX512VL
+	vpconflictd %zmm5, %zmm6		# AVX412CD
+	vpconflictd %xmm5, %xmm6		# AVX412CD + AVX512VL
+	vpconflictd %ymm5, %ymm6		# AVX412CD + AVX512VL
+	vcvtpd2qq (%ecx), %zmm6{%k7}		# AVX512DQ
+	vcvtpd2qq (%ecx), %xmm6{%k7}		# AVX512DQ + AVX512VL
+	vcvtpd2qq (%ecx), %ymm6{%k7}		# AVX512DQ + AVX512VL
+	vexp2ps %zmm5, %zmm6{%k7}		# AVX512ER
+	vaddpd %zmm4, %zmm5, %zmm6{%k7}		# AVX512F
+	vaddpd %xmm4, %xmm5, %xmm6{%k7}		# AVX512F + AVX512VL
+	vaddpd %ymm4, %ymm5, %ymm6{%k7}		# AVX512F + AVX512VL
+	vpmadd52luq %zmm4, %zmm5, %zmm6{%k7}	# AVX512IFMA
+	vpmadd52luq %xmm4, %xmm5, %xmm6{%k7}	# AVX512IFMA + AVX512VL
+	vpmadd52luq %ymm4, %ymm5, %ymm6{%k7}	# AVX512IFMA + AVX512VL
+	vgatherpf0dpd 23(%ebp,%ymm7,8){%k1}	# AVX512PF
+	vpermb %zmm4, %zmm5, %zmm6{%k7}		# AVX512VBMI
+	vpermb %xmm4, %xmm5, %xmm6{%k7}		# AVX512VBMI + AVX512VL
+	vpermb %ymm4, %ymm5, %ymm6{%k7}		# AVX512VBMI + AVX512VL
+
+	.arch .noavx512f
+	vpabsb %zmm5, %zmm6{%k7}		# AVX512BW
+	vpabsb %xmm5, %xmm6{%k7}		# AVX512BW + AVX512VL
+	vpabsb %ymm5, %ymm6{%k7}		# AVX512BW + AVX512VL
+	vpconflictd %zmm5, %zmm6		# AVX412CD
+	vpconflictd %xmm5, %xmm6		# AVX412CD + AVX512VL
+	vpconflictd %ymm5, %ymm6		# AVX412CD + AVX512VL
+	vcvtpd2qq (%ecx), %zmm6{%k7}		# AVX512DQ
+	vcvtpd2qq (%ecx), %xmm6{%k7}		# AVX512DQ + AVX512VL
+	vcvtpd2qq (%ecx), %ymm6{%k7}		# AVX512DQ + AVX512VL
+	vexp2ps %zmm5, %zmm6{%k7}		# AVX512ER
+	vaddpd %zmm4, %zmm5, %zmm6{%k7}		# AVX512F
+	vaddpd %xmm4, %xmm5, %xmm6{%k7}		# AVX512F + AVX512VL
+	vaddpd %ymm4, %ymm5, %ymm6{%k7}		# AVX512F + AVX512VL
+	vpmadd52luq %zmm4, %zmm5, %zmm6{%k7}	# AVX512IFMA
+	vpmadd52luq %xmm4, %xmm5, %xmm6{%k7}	# AVX512IFMA + AVX512VL
+	vpmadd52luq %ymm4, %ymm5, %ymm6{%k7}	# AVX512IFMA + AVX512VL
+	vgatherpf0dpd 23(%ebp,%ymm7,8){%k1}	# AVX512PF
+	vpermb %zmm4, %zmm5, %zmm6{%k7}		# AVX512VBMI
+	vpermb %xmm4, %xmm5, %xmm6{%k7}		# AVX512VBMI + AVX512VL
+	vpermb %ymm4, %ymm5, %ymm6{%k7}		# AVX512VBMI + AVX512VL
+
+	vpabsb %xmm5, %xmm6
+	vpabsb %ymm5, %ymm6
+	vaddpd %xmm4, %xmm5, %xmm6
+	vaddpd %ymm4, %ymm5, %ymm6
+	pabsb %xmm5, %xmm6
+	addpd %xmm4, %xmm6
+
+	.p2align 4
diff --git a/gas/testsuite/gas/i386/noavx512-2.l b/gas/testsuite/gas/i386/noavx512-2.l
new file mode 100644
index 0000000..08febef
--- /dev/null
+++ b/gas/testsuite/gas/i386/noavx512-2.l
@@ -0,0 +1,105 @@
+.*: Assembler messages:
+.*:26: Error: .*unsupported masking.*
+.*:27: Error: .*unsupported masking.*
+.*:29: Error: .*unsupported instruction.*
+.*:30: Error: .*unsupported instruction.*
+.*:32: Error: .*unsupported instruction.*
+.*:33: Error: .*unsupported instruction.*
+.*:36: Error: .*unsupported masking.*
+.*:37: Error: .*unsupported masking.*
+.*:39: Error: .*unsupported instruction.*
+.*:40: Error: .*unsupported instruction.*
+.*:43: Error: .*unsupported instruction.*
+.*:44: Error: .*unsupported instruction.*
+GAS LISTING .*
+#...
+[ 	]*1[ 	]+\# Test \.arch \.noavx512vl
+[ 	]*2[ 	]+\.text
+[ 	]*3[ 	]+\?\?\?\? 62F27D4F 		vpabsb %zmm5, %zmm6\{%k7\}		\# AVX512BW
+[ 	]*3[ 	]+1CF5
+[ 	]*4[ 	]+\?\?\?\? 62F27D0F 		vpabsb %xmm5, %xmm6\{%k7\}		\# AVX512BW \+ AVX512VL
+[ 	]*4[ 	]+1CF5
+[ 	]*5[ 	]+\?\?\?\? 62F27D2F 		vpabsb %ymm5, %ymm6\{%k7\}		\# AVX512BW \+ AVX512VL
+[ 	]*5[ 	]+1CF5
+[ 	]*6[ 	]+\?\?\?\? 62F27D48 		vpconflictd %zmm5, %zmm6		\# AVX412CD
+[ 	]*6[ 	]+C4F5
+[ 	]*7[ 	]+\?\?\?\? 62F27D08 		vpconflictd %xmm5, %xmm6		\# AVX412CD \+ AVX512VL
+[ 	]*7[ 	]+C4F5
+[ 	]*8[ 	]+\?\?\?\? 62F27D28 		vpconflictd %ymm5, %ymm6		\# AVX412CD \+ AVX512VL
+[ 	]*8[ 	]+C4F5
+[ 	]*9[ 	]+\?\?\?\? 62F1FD4F 		vcvtpd2qq \(%ecx\), %zmm6\{%k7\}		\# AVX512DQ
+[ 	]*9[ 	]+7B31
+[ 	]*10[ 	]+\?\?\?\? 62F1FD0F 		vcvtpd2qq \(%ecx\), %xmm6\{%k7\}		\# AVX512DQ \+ AVX512VL
+[ 	]*10[ 	]+7B31
+[ 	]*11[ 	]+\?\?\?\? 62F1FD2F 		vcvtpd2qq \(%ecx\), %ymm6\{%k7\}		\# AVX512DQ \+ AVX512VL
+[ 	]*11[ 	]+7B31
+[ 	]*12[ 	]+\?\?\?\? 62F27D4F 		vexp2ps %zmm5, %zmm6\{%k7\}		\# AVX512ER
+[ 	]*12[ 	]+C8F5
+[ 	]*13[ 	]+\?\?\?\? 62F1D54F 		vaddpd %zmm4, %zmm5, %zmm6\{%k7\}		\# AVX512F
+[ 	]*13[ 	]+58F4
+[ 	]*14[ 	]+\?\?\?\? 62F1D50F 		vaddpd %xmm4, %xmm5, %xmm6\{%k7\}		\# AVX512F \+ AVX512VL
+[ 	]*14[ 	]+58F4
+[ 	]*15[ 	]+\?\?\?\? 62F1D52F 		vaddpd %ymm4, %ymm5, %ymm6\{%k7\}		\# AVX512F \+ AVX512VL
+[ 	]*15[ 	]+58F4
+[ 	]*16[ 	]+\?\?\?\? 62F2D54F 		vpmadd52luq %zmm4, %zmm5, %zmm6\{%k7\}	\# AVX512IFMA
+[ 	]*16[ 	]+B4F4
+[ 	]*17[ 	]+\?\?\?\? 62F2D50F 		vpmadd52luq %xmm4, %xmm5, %xmm6\{%k7\}	\# AVX512IFMA \+ AVX512VL
+[ 	]*17[ 	]+B4F4
+[ 	]*18[ 	]+\?\?\?\? 62F2D52F 		vpmadd52luq %ymm4, %ymm5, %ymm6\{%k7\}	\# AVX512IFMA \+ AVX512VL
+[ 	]*18[ 	]+B4F4
+[ 	]*19[ 	]+\?\?\?\? 62F2FD49 		vgatherpf0dpd 23\(%ebp,%ymm7,8\)\{%k1\}	\# AVX512PF
+[ 	]*19[ 	]+C68CFD17 
+[ 	]*19[ 	]+000000
+[ 	]*20[ 	]+\?\?\?\? 62F2554F 		vpermb %zmm4, %zmm5, %zmm6\{%k7\}		\# AVX512VBMI
+[ 	]*20[ 	]+8DF4
+[ 	]*21[ 	]+\?\?\?\? 62F2550F 		vpermb %xmm4, %xmm5, %xmm6\{%k7\}		\# AVX512VBMI \+ AVX512VL
+[ 	]*21[ 	]+8DF4
+[ 	]*22[ 	]+\?\?\?\? 62F2552F 		vpermb %ymm4, %ymm5, %ymm6\{%k7\}		\# AVX512VBMI \+ AVX512VL
+[ 	]*22[ 	]+8DF4
+[ 	]*23[ 	]+
+[ 	]*24[ 	]+\.arch \.noavx512vl
+[ 	]*25[ 	]+\?\?\?\? 62F27D4F 		vpabsb %zmm5, %zmm6\{%k7\}		\# AVX512BW
+[ 	]*25[ 	]+1CF5
+[ 	]*26[ 	]+vpabsb %xmm5, %xmm6\{%k7\}		\# AVX512BW \+ AVX512VL
+[ 	]*27[ 	]+vpabsb %ymm5, %ymm6\{%k7\}		\# AVX512BW \+ AVX512VL
+[ 	]*28[ 	]+\?\?\?\? 62F27D48 		vpconflictd %zmm5, %zmm6		\# AVX412CD
+[ 	]*28[ 	]+C4F5
+[ 	]*29[ 	]+vpconflictd %xmm5, %xmm6		\# AVX412CD \+ AVX512VL
+[ 	]*30[ 	]+vpconflictd %ymm5, %ymm6		\# AVX412CD \+ AVX512VL
+[ 	]*31[ 	]+\?\?\?\? 62F1FD4F 		vcvtpd2qq \(%ecx\), %zmm6\{%k7\}		\# AVX512DQ
+[ 	]*31[ 	]+7B31
+[ 	]*32[ 	]+vcvtpd2qq \(%ecx\), %xmm6\{%k7\}		\# AVX512DQ \+ AVX512VL
+[ 	]*33[ 	]+vcvtpd2qq \(%ecx\), %ymm6\{%k7\}		\# AVX512DQ \+ AVX512VL
+GAS LISTING .*
+
+
+[ 	]*34[ 	]+\?\?\?\? 62F27D4F 		vexp2ps %zmm5, %zmm6\{%k7\}		\# AVX512ER
+[ 	]*34[ 	]+C8F5
+[ 	]*35[ 	]+\?\?\?\? 62F1D54F 		vaddpd %zmm4, %zmm5, %zmm6\{%k7\}		\# AVX512F
+[ 	]*35[ 	]+58F4
+[ 	]*36[ 	]+vaddpd %xmm4, %xmm5, %xmm6\{%k7\}		\# AVX512F \+ AVX512VL
+[ 	]*37[ 	]+vaddpd %ymm4, %ymm5, %ymm6\{%k7\}		\# AVX512F \+ AVX512VL
+[ 	]*38[ 	]+\?\?\?\? 62F2D54F 		vpmadd52luq %zmm4, %zmm5, %zmm6\{%k7\}	\# AVX512IFMA
+[ 	]*38[ 	]+B4F4
+[ 	]*39[ 	]+vpmadd52luq %xmm4, %xmm5, %xmm6\{%k7\}	\# AVX512IFMA \+ AVX512VL
+[ 	]*40[ 	]+vpmadd52luq %ymm4, %ymm5, %ymm6\{%k7\}	\# AVX512IFMA \+ AVX512VL
+[ 	]*41[ 	]+\?\?\?\? 62F2FD49 		vgatherpf0dpd 23\(%ebp,%ymm7,8\)\{%k1\}	\# AVX512PF
+[ 	]*41[ 	]+C68CFD17 
+[ 	]*41[ 	]+000000
+[ 	]*42[ 	]+\?\?\?\? 62F2554F 		vpermb %zmm4, %zmm5, %zmm6\{%k7\}		\# AVX512VBMI
+[ 	]*42[ 	]+8DF4
+[ 	]*43[ 	]+vpermb %xmm4, %xmm5, %xmm6\{%k7\}		\# AVX512VBMI \+ AVX512VL
+[ 	]*44[ 	]+vpermb %ymm4, %ymm5, %ymm6\{%k7\}		\# AVX512VBMI \+ AVX512VL
+[ 	]*45[ 	]+
+[ 	]*46[ 	]+\?\?\?\? C4E2791C 		vpabsb %xmm5, %xmm6
+[ 	]*46[ 	]+F5
+[ 	]*47[ 	]+\?\?\?\? C4E27D1C 		vpabsb %ymm5, %ymm6
+[ 	]*47[ 	]+F5
+[ 	]*48[ 	]+\?\?\?\? C5D158F4 		vaddpd %xmm4, %xmm5, %xmm6
+[ 	]*49[ 	]+\?\?\?\? C5D558F4 		vaddpd %ymm4, %ymm5, %ymm6
+[ 	]*50[ 	]+\?\?\?\? 660F381C 		pabsb %xmm5, %xmm6
+[ 	]*50[ 	]+F5
+[ 	]*51[ 	]+\?\?\?\? 660F58F4 		addpd %xmm4, %xmm6
+[ 	]*52[ 	]+
+[ 	]*53[ 	]+\?\?\?\? 0F1F00   		\.p2align 4
+#pass
diff --git a/gas/testsuite/gas/i386/noavx512-2.s b/gas/testsuite/gas/i386/noavx512-2.s
new file mode 100644
index 0000000..b9ef95c
--- /dev/null
+++ b/gas/testsuite/gas/i386/noavx512-2.s
@@ -0,0 +1,53 @@
+# Test .arch .noavx512vl
+	.text
+	vpabsb %zmm5, %zmm6{%k7}		# AVX512BW
+	vpabsb %xmm5, %xmm6{%k7}		# AVX512BW + AVX512VL
+	vpabsb %ymm5, %ymm6{%k7}		# AVX512BW + AVX512VL
+	vpconflictd %zmm5, %zmm6		# AVX412CD
+	vpconflictd %xmm5, %xmm6		# AVX412CD + AVX512VL
+	vpconflictd %ymm5, %ymm6		# AVX412CD + AVX512VL
+	vcvtpd2qq (%ecx), %zmm6{%k7}		# AVX512DQ
+	vcvtpd2qq (%ecx), %xmm6{%k7}		# AVX512DQ + AVX512VL
+	vcvtpd2qq (%ecx), %ymm6{%k7}		# AVX512DQ + AVX512VL
+	vexp2ps %zmm5, %zmm6{%k7}		# AVX512ER
+	vaddpd %zmm4, %zmm5, %zmm6{%k7}		# AVX512F
+	vaddpd %xmm4, %xmm5, %xmm6{%k7}		# AVX512F + AVX512VL
+	vaddpd %ymm4, %ymm5, %ymm6{%k7}		# AVX512F + AVX512VL
+	vpmadd52luq %zmm4, %zmm5, %zmm6{%k7}	# AVX512IFMA
+	vpmadd52luq %xmm4, %xmm5, %xmm6{%k7}	# AVX512IFMA + AVX512VL
+	vpmadd52luq %ymm4, %ymm5, %ymm6{%k7}	# AVX512IFMA + AVX512VL
+	vgatherpf0dpd 23(%ebp,%ymm7,8){%k1}	# AVX512PF
+	vpermb %zmm4, %zmm5, %zmm6{%k7}		# AVX512VBMI
+	vpermb %xmm4, %xmm5, %xmm6{%k7}		# AVX512VBMI + AVX512VL
+	vpermb %ymm4, %ymm5, %ymm6{%k7}		# AVX512VBMI + AVX512VL
+
+	.arch .noavx512vl
+	vpabsb %zmm5, %zmm6{%k7}		# AVX512BW
+	vpabsb %xmm5, %xmm6{%k7}		# AVX512BW + AVX512VL
+	vpabsb %ymm5, %ymm6{%k7}		# AVX512BW + AVX512VL
+	vpconflictd %zmm5, %zmm6		# AVX412CD
+	vpconflictd %xmm5, %xmm6		# AVX412CD + AVX512VL
+	vpconflictd %ymm5, %ymm6		# AVX412CD + AVX512VL
+	vcvtpd2qq (%ecx), %zmm6{%k7}		# AVX512DQ
+	vcvtpd2qq (%ecx), %xmm6{%k7}		# AVX512DQ + AVX512VL
+	vcvtpd2qq (%ecx), %ymm6{%k7}		# AVX512DQ + AVX512VL
+	vexp2ps %zmm5, %zmm6{%k7}		# AVX512ER
+	vaddpd %zmm4, %zmm5, %zmm6{%k7}		# AVX512F
+	vaddpd %xmm4, %xmm5, %xmm6{%k7}		# AVX512F + AVX512VL
+	vaddpd %ymm4, %ymm5, %ymm6{%k7}		# AVX512F + AVX512VL
+	vpmadd52luq %zmm4, %zmm5, %zmm6{%k7}	# AVX512IFMA
+	vpmadd52luq %xmm4, %xmm5, %xmm6{%k7}	# AVX512IFMA + AVX512VL
+	vpmadd52luq %ymm4, %ymm5, %ymm6{%k7}	# AVX512IFMA + AVX512VL
+	vgatherpf0dpd 23(%ebp,%ymm7,8){%k1}	# AVX512PF
+	vpermb %zmm4, %zmm5, %zmm6{%k7}		# AVX512VBMI
+	vpermb %xmm4, %xmm5, %xmm6{%k7}		# AVX512VBMI + AVX512VL
+	vpermb %ymm4, %ymm5, %ymm6{%k7}		# AVX512VBMI + AVX512VL
+
+	vpabsb %xmm5, %xmm6
+	vpabsb %ymm5, %ymm6
+	vaddpd %xmm4, %xmm5, %xmm6
+	vaddpd %ymm4, %ymm5, %ymm6
+	pabsb %xmm5, %xmm6
+	addpd %xmm4, %xmm6
+
+	.p2align 4
diff --git a/opcodes/i386-gen.c b/opcodes/i386-gen.c
index f1e8142..6ebad47 100644
--- a/opcodes/i386-gen.c
+++ b/opcodes/i386-gen.c
@@ -285,6 +285,24 @@ static initializer cpu_flag_init[] =
     "CPU_ANY_AVX2_FLAGS|CpuF16C|CpuFMA|CpuFMA4|CpuXOP|CpuAVX" },
   { "CPU_ANY_AVX2_FLAGS",
     "CpuAVX2" },
+  { "CPU_ANY_AVX512F_FLAGS",
+    "CpuVREX|CpuRegZMM|CpuRegMask|CpuAVX512CD|CpuAVX512ER|CpuAVX512PF|CpuAVX512DQ|CpuAVX512BW|CpuAVX512VL|CpuAVX512IFMA|CpuAVX512VBMI|CpuAVX512F" },
+  { "CPU_ANY_AVX512CD_FLAGS",
+    "CpuAVX512CD" },
+  { "CPU_ANY_AVX512ER_FLAGS",
+    "CpuAVX512ER" },
+  { "CPU_ANY_AVX512PF_FLAGS",
+    "CpuAVX512PF" },
+  { "CPU_ANY_AVX512DQ_FLAGS",
+    "CpuAVX512DQ" },
+  { "CPU_ANY_AVX512BW_FLAGS",
+    "CpuAVX512BW" },
+  { "CPU_ANY_AVX512VL_FLAGS",
+    "CpuAVX512VL" },
+  { "CPU_ANY_AVX512IFMA_FLAGS",
+    "CpuAVX512IFMA" },
+  { "CPU_ANY_AVX512VBMI_FLAGS",
+    "CpuAVX512VBMI" },
 };
 
 static initializer operand_type_init[] =
diff --git a/opcodes/i386-init.h b/opcodes/i386-init.h
index e522d61..10bc4f0 100644
--- a/opcodes/i386-init.h
+++ b/opcodes/i386-init.h
@@ -858,6 +858,69 @@
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
 
+#define CPU_ANY_AVX512F_FLAGS \
+  { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, \
+      1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0 } }
+
+#define CPU_ANY_AVX512CD_FLAGS \
+  { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
+
+#define CPU_ANY_AVX512ER_FLAGS \
+  { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
+
+#define CPU_ANY_AVX512PF_FLAGS \
+  { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
+
+#define CPU_ANY_AVX512DQ_FLAGS \
+  { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
+
+#define CPU_ANY_AVX512BW_FLAGS \
+  { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
+
+#define CPU_ANY_AVX512VL_FLAGS \
+  { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
+
+#define CPU_ANY_AVX512IFMA_FLAGS \
+  { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
+
+#define CPU_ANY_AVX512VBMI_FLAGS \
+  { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+      1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }
+
 
 #define OPERAND_TYPE_NONE \
   { { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]