summaryrefslogtreecommitdiff
path: root/opcodes/i386-dis-evex-len.h
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2019-06-27 13:39:19 -0700
committerH.J. Lu <hjl.tools@gmail.com>2019-06-27 13:39:32 -0700
commite395f487b3758b3de99fddd2ef15a799e9fc1203 (patch)
treec4f2177a544c1c49c99d1dd05ee294250cb733cb /opcodes/i386-dis-evex-len.h
parent1b7f24cd6b4e96c64bf82eba06be2c48942699fa (diff)
downloadbinutils-gdb-e395f487b3758b3de99fddd2ef15a799e9fc1203.tar.gz
i386: Check vector length for scatter/gather prefetch instructions
Since not all vector lengths are supported by scatter/gather prefetch instructions, decode them only with supported vector lengths. gas/ PR binutils/24719 * testsuite/gas/i386/disassem.s: Add test for vgatherpf0dps with invalid vector length. * testsuite/gas/i386/x86-64-disassem.s: Likewise. * testsuite/gas/i386/disassem.d: Updated. * testsuite/gas/i386/x86-64-disassem.d: Likewise. opcodes/ PR binutils/24719 * i386-dis-evex-len.h: Add EVEX_LEN_0F38C6_REG_1_PREFIX_2, EVEX_LEN_0F38C6_REG_2_PREFIX_2, EVEX_LEN_0F38C6_REG_5_PREFIX_2, EVEX_LEN_0F38C6_REG_6_PREFIX_2, EVEX_LEN_0F38C7_R_1_P_2_W_0, EVEX_LEN_0F38C7_R_1_P_2_W_1, EVEX_LEN_0F38C7_R_2_P_2_W_0, EVEX_LEN_0F38C7_R_2_P_2_W_1, EVEX_LEN_0F38C7_R_5_P_2_W_0, EVEX_LEN_0F38C7_R_5_P_2_W_1, EVEX_LEN_0F38C7_R_6_P_2_W_0 and EVEX_LEN_0F38C7_R_6_P_2_W_1. * i386-dis-evex-prefix.h: Update PREFIX_EVEX_0F38C6_REG_1, PREFIX_EVEX_0F38C6_REG_2, PREFIX_EVEX_0F38C6_REG_5 and PREFIX_EVEX_0F38C6_REG_6 entries. * i386-dis-evex-w.h: Update EVEX_W_0F38C7_R_1_P_2, EVEX_W_0F38C7_R_2_P_2, EVEX_W_0F38C7_R_5_P_2 and EVEX_W_0F38C7_R_6_P_2 entries. * i386-dis.c: Add EVEX_LEN_0F38C6_REG_1_PREFIX_2, EVEX_LEN_0F38C6_REG_2_PREFIX_2, EVEX_LEN_0F38C6_REG_5_PREFIX_2, EVEX_LEN_0F38C6_REG_6_PREFIX_2, EVEX_LEN_0F38C7_R_1_P_2_W_0, EVEX_LEN_0F38C7_R_1_P_2_W_1, EVEX_LEN_0F38C7_R_2_P_2_W_0, EVEX_LEN_0F38C7_R_2_P_2_W_1, EVEX_LEN_0F38C7_R_5_P_2_W_0, EVEX_LEN_0F38C7_R_5_P_2_W_1, EVEX_LEN_0F38C7_R_6_P_2_W_0 and EVEX_LEN_0F38C7_R_6_P_2_W_1 enums.
Diffstat (limited to 'opcodes/i386-dis-evex-len.h')
-rw-r--r--opcodes/i386-dis-evex-len.h84
1 files changed, 84 insertions, 0 deletions
diff --git a/opcodes/i386-dis-evex-len.h b/opcodes/i386-dis-evex-len.h
index 50b89ebc57a..ce581995980 100644
--- a/opcodes/i386-dis-evex-len.h
+++ b/opcodes/i386-dis-evex-len.h
@@ -89,6 +89,90 @@ static const struct dis386 evex_len_table[][3] = {
{ "vbroadcasti64x4", { XM, EXymm }, 0 },
},
+ /* EVEX_LEN_0F38C6_REG_1_PREFIX_2 */
+ {
+ { Bad_Opcode },
+ { Bad_Opcode },
+ { "vgatherpf0dp%XW", { MVexVSIBDWpX }, 0 },
+ },
+
+ /* EVEX_LEN_0F38C6_REG_2_PREFIX_2 */
+ {
+ { Bad_Opcode },
+ { Bad_Opcode },
+ { "vgatherpf1dp%XW", { MVexVSIBDWpX }, 0 },
+ },
+
+ /* EVEX_LEN_0F38C6_REG_5_PREFIX_2 */
+ {
+ { Bad_Opcode },
+ { Bad_Opcode },
+ { "vscatterpf0dp%XW", { MVexVSIBDWpX }, 0 },
+ },
+
+ /* EVEX_LEN_0F38C6_REG_6_PREFIX_2 */
+ {
+ { Bad_Opcode },
+ { Bad_Opcode },
+ { "vscatterpf1dp%XW", { MVexVSIBDWpX }, 0 },
+ },
+
+ /* EVEX_LEN_0F38C7_R_1_P_2_W_0 */
+ {
+ { Bad_Opcode },
+ { Bad_Opcode },
+ { "vgatherpf0qps", { MVexVSIBDQWpX }, 0 },
+ },
+
+ /* EVEX_LEN_0F38C7_R_1_P_2_W_1 */
+ {
+ { Bad_Opcode },
+ { Bad_Opcode },
+ { "vgatherpf0qpd", { MVexVSIBQWpX }, 0 },
+ },
+
+ /* EVEX_LEN_0F38C7_R_2_P_2_W_0 */
+ {
+ { Bad_Opcode },
+ { Bad_Opcode },
+ { "vgatherpf1qps", { MVexVSIBDQWpX }, 0 },
+ },
+
+ /* EVEX_LEN_0F38C7_R_2_P_2_W_1 */
+ {
+ { Bad_Opcode },
+ { Bad_Opcode },
+ { "vgatherpf1qpd", { MVexVSIBQWpX }, 0 },
+ },
+
+ /* EVEX_LEN_0F38C7_R_5_P_2_W_0 */
+ {
+ { Bad_Opcode },
+ { Bad_Opcode },
+ { "vscatterpf0qps", { MVexVSIBDQWpX }, 0 },
+ },
+
+ /* EVEX_LEN_0F38C7_R_5_P_2_W_1 */
+ {
+ { Bad_Opcode },
+ { Bad_Opcode },
+ { "vscatterpf0qpd", { MVexVSIBQWpX }, 0 },
+ },
+
+ /* EVEX_LEN_0F38C7_R_6_P_2_W_0 */
+ {
+ { Bad_Opcode },
+ { Bad_Opcode },
+ { "vscatterpf1qps", { MVexVSIBDQWpX }, 0 },
+ },
+
+ /* EVEX_LEN_0F38C7_R_6_P_2_W_1 */
+ {
+ { Bad_Opcode },
+ { Bad_Opcode },
+ { "vscatterpf1qpd", { MVexVSIBQWpX }, 0 },
+ },
+
/* EVEX_LEN_0F3A18_P_2_W_0 */
{
{ Bad_Opcode },