x86: Add CheckRegSize to AVX512_BF16 instructions with Disp8ShiftVL
authorH.J. Lu <hjl.tools@gmail.com>
Tue, 28 May 2019 17:05:28 +0000 (10:05 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Tue, 28 May 2019 17:05:44 +0000 (10:05 -0700)
For AVX512 instructions with Disp8ShiftVL and Broadcast, we may need to
add CheckRegSize to check if broadcast matches the destination register
size.

gas/

PR gas/24625
* testsuite/gas/i386/inval-avx512f.s: Add tests for AVX512_BF16
instructions with invalid broadcast.
* testsuite/gas/i386/x86-64-inval-avx512f.s: Likewise.
* testsuite/gas/i386/inval-avx512f.l: Updated.
* testsuite/gas/i386/x86-64-inval-avx512f.l: Likewise.

opcodes/

PR gas/24625
* i386-opc.tbl: Add CheckRegSize to AVX512_BF16 instructions with
Disp8ShiftVL.
* i386-tbl.h: Regenerated.

gas/ChangeLog
gas/testsuite/gas/i386/inval-avx512f.l
gas/testsuite/gas/i386/inval-avx512f.s
gas/testsuite/gas/i386/x86-64-inval-avx512f.l
gas/testsuite/gas/i386/x86-64-inval-avx512f.s
opcodes/ChangeLog
opcodes/i386-opc.tbl
opcodes/i386-tbl.h

index 6ca88da420e54ecae25998359a894a8407e08628..7de5247623402a9b2bdbf68910365a7d92b6250c 100644 (file)
@@ -1,3 +1,12 @@
+2019-05-28  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR gas/24625
+       * testsuite/gas/i386/inval-avx512f.s: Add tests for AVX512_BF16
+       instructions with invalid broadcast.
+       * testsuite/gas/i386/x86-64-inval-avx512f.s: Likewise.
+       * testsuite/gas/i386/inval-avx512f.l: Updated.
+       * testsuite/gas/i386/x86-64-inval-avx512f.l: Likewise.
+
 2019-05-27  Alan Modra  <amodra@gmail.com>
 
        * config/tc-ppc.c (is_ppc64_target): New function.
index 048e88b9c073f016a8877eb6be1eb4b25d4d2e56..e4141298664bdc45dfd159a5205d21d808a6603a 100644 (file)
 .*:304: Error: .*masking.*vscatterpf1dps.*
 .*:305: Error: .*masking.*vscatterpf1qpd.*
 .*:306: Error: .*masking.*vscatterpf1qps.*
+.*:308: Error: .*unsupported broadcast for `vdpbf16ps'
+.*:309: Error: .*unsupported broadcast for `vcvtne2ps2bf16'
 GAS LISTING .*
 
 
@@ -546,3 +548,6 @@ GAS LISTING .*
 [      ]*304[  ]+vscatterpf1dps \(%eax,%zmm1\)\{%k1\}\{z\}
 [      ]*305[  ]+vscatterpf1qpd \(%eax,%zmm1\)\{%k1\}\{z\}
 [      ]*306[  ]+vscatterpf1qps \(%eax,%zmm1\)\{%k1\}\{z\}
+[      ]*307[  ]*
+[      ]*308[  ]+vdpbf16ps 8\(%eax\)\{1to8\}, %zmm2, %zmm2
+[      ]*309[  ]+vcvtne2ps2bf16 8\(%eax\)\{1to8\}, %zmm2, %zmm2
index f380fe30ee58bb003bfe4cc93d30fb90359c4ce4..2833b1ef1400ff6d6c588b038f473037dcaf9e6b 100644 (file)
@@ -304,3 +304,6 @@ _start:
        vscatterpf1dps (%eax,%zmm1){%k1}{z}
        vscatterpf1qpd (%eax,%zmm1){%k1}{z}
        vscatterpf1qps (%eax,%zmm1){%k1}{z}
+
+       vdpbf16ps 8(%eax){1to8}, %zmm2, %zmm2
+       vcvtne2ps2bf16 8(%eax){1to8}, %zmm2, %zmm2
index 7aa4d5d1d89830eee85f7e5fcd766c68d9cb13c9..634683f43cae3eeb84d3cb75be81c107951ed948 100644 (file)
@@ -39,6 +39,8 @@
 .*:55: Error: .*
 .*:56: Error: .*
 .*:58: Error: .*
+.*:61: Error: .*unsupported broadcast for `vdpbf16ps'
+.*:62: Error: .*unsupported broadcast for `vcvtne2ps2bf16'
 GAS LISTING .*
 
 
@@ -101,3 +103,7 @@ GAS LISTING .*
 [      ]*57[   ]*
 \fGAS LISTING .*
 [      ]*58[   ]+vcvtps2qq xmm0, DWORD PTR \[rax\]
+[      ]*59[   ]*
+[      ]*60[   ]+\.att_syntax prefix
+[      ]*61[   ]+vdpbf16ps 8\(%rax\)\{1to8\}, %zmm2, %zmm2
+[      ]*62[   ]+vcvtne2ps2bf16 8\(%rax\)\{1to8\}, %zmm2, %zmm2
index 91bf562ccd222e1fb5e711c8969ec3c66b95278a..934e9061cfde4015481f8400ecf5127990d15a73 100644 (file)
@@ -56,3 +56,7 @@ _start:
        vaddps zmm2{z}, zmm1, zmm0
 
        vcvtps2qq xmm0, DWORD PTR [rax]
+
+       .att_syntax prefix
+       vdpbf16ps 8(%rax){1to8}, %zmm2, %zmm2
+       vcvtne2ps2bf16 8(%rax){1to8}, %zmm2, %zmm2
index faeccf4ce60a4250985687ef1e03e39d5d165fa1..8c881a2c5869bcfccd30f44a2a31992401dcec32 100644 (file)
@@ -1,3 +1,10 @@
+2019-05-28  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR gas/24625
+       * i386-opc.tbl: Add CheckRegSize to AVX512_BF16 instructions with
+       Disp8ShiftVL.
+       * i386-tbl.h: Regenerated.
+
 2019-05-24  Alan Modra  <amodra@gmail.com>
 
        * po/POTFILES.in: Regenerate.
index 11ee240708aeee9bd79ae595a4ea9bbf8c56f670..f3b3a95d9a5cb20531e666b0dc7b37646ab25a52 100644 (file)
@@ -4713,7 +4713,7 @@ movdir64b, 2, 0x660f38f8, None, 3, CpuMOVDIR64B|Cpu64, Modrm|No_bSuf|No_wSuf|No_
 
 // AVX512_BF16 instructions.
 
-vcvtne2ps2bf16, 3, 0xf272, None, 1, CpuAVX512_BF16, Modrm|VexOpcode|VexVVVV|Masking=3|VexW0|Broadcast|Disp8ShiftVL|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegXMM|RegYMM|RegZMM|Dword|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
+vcvtne2ps2bf16, 3, 0xf272, None, 1, CpuAVX512_BF16, Modrm|VexOpcode|VexVVVV|Masking=3|VexW0|Broadcast|Disp8ShiftVL|CheckRegSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegXMM|RegYMM|RegZMM|Dword|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
 
 vcvtneps2bf16, 2, 0xf372, None, 1, CpuAVX512_BF16|CpuAVX512VL, Modrm|VexOpcode|EVex128|Masking=3|VexW0|Broadcast|Disp8MemShift=4|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegXMM|Dword|BaseIndex, RegXMM }
 vcvtneps2bf16, 2, 0xf372, None, 1, CpuAVX512_BF16|CpuAVX512VL, Modrm|VexOpcode|EVex256|Masking=3|VexW0|Broadcast|Disp8MemShift=5|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegYMM|Dword|BaseIndex, RegXMM }
@@ -4722,6 +4722,6 @@ vcvtneps2bf16, 2, 0xf372, None, 1, CpuAVX512_BF16, Modrm|VexOpcode|EVex512|Maski
 vcvtneps2bf16x, 2, 0xf372, None, 1, CpuAVX512_BF16|CpuAVX512VL, Modrm|VexOpcode|EVex128|Masking=3|VexW0|Disp8MemShift=4|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|ATTSyntax, { Unspecified|BaseIndex, RegXMM }
 vcvtneps2bf16y, 2, 0xf372, None, 1, CpuAVX512_BF16|CpuAVX512VL, Modrm|VexOpcode|EVex256|Masking=3|VexW0|Disp8MemShift=5|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf|ATTSyntax, { Unspecified|BaseIndex, RegXMM }
 
-vdpbf16ps, 3, 0xf352, None, 1, CpuAVX512_BF16, Modrm|VexOpcode|VexVVVV|Masking=3|VexW0|Broadcast|Disp8ShiftVL|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegXMM|RegYMM|RegZMM|Dword|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
+vdpbf16ps, 3, 0xf352, None, 1, CpuAVX512_BF16, Modrm|VexOpcode|VexVVVV|Masking=3|VexW0|Broadcast|Disp8ShiftVL|CheckRegSize|No_bSuf|No_wSuf|No_lSuf|No_sSuf|No_qSuf|No_ldSuf, { RegXMM|RegYMM|RegZMM|Dword|Unspecified|BaseIndex, RegXMM|RegYMM|RegZMM, RegXMM|RegYMM|RegZMM }
 
 // AVX512_BF16 instructions end.
index ab251c6f15af6f4f5e6901fded545e23875e42b8..5e1611e9ad80a9fe9069699366704c919083aa7e 100644 (file)
@@ -67651,7 +67651,7 @@ const insn_template i386_optab[] =
         0, 0, 0, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1,
+    { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1,
       1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
       1, 1, 0, 0, 0, 0, 0, 3, 3, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0 },
     { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,
@@ -67750,7 +67750,7 @@ const insn_template i386_optab[] =
         0, 0, 0, 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, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1,
+    { 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 1, 1, 1, 1,
       1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
       1, 1, 0, 0, 0, 0, 0, 3, 3, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0 },
     { { { 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1,