From 144b71e2a88e02d0b54d4f09cc652f353b46e455 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Fri, 27 May 2016 15:41:45 -0700 Subject: [PATCH] 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. --- 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(+) create mode 100644 gas/testsuite/gas/i386/noavx512-1.l create mode 100644 gas/testsuite/gas/i386/noavx512-1.s create mode 100644 gas/testsuite/gas/i386/noavx512-2.l create mode 100644 gas/testsuite/gas/i386/noavx512-2.s diff --git a/gas/config/tc-i386.c b/gas/config/tc-i386.c index b69130a71ca..457f557c9ad 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 696cadf9bcc..30e29f62029 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 0c22498c85e..959cd14fe00 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 00000000000..ece92113a36 --- /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 00000000000..786f2447e8c --- /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 00000000000..08febefa95b --- /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 00000000000..b9ef95ca700 --- /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 f1e81426761..6ebad474bb5 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 e522d61821e..10bc4f08cc8 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, \ -- 2.30.2