For the flavors having a GPR operand VEX.W is ignored outside of 64-bit
mode. The mnemonic should therefore not be KMOVQ.
+2018-11-06 Jan Beulich <jbeulich@suse.com>
+
+ * testsuite/gas/i386/avx-wig.s: Add kmovd cases.
+ * testsuite/gas/i386/avx-wig.d: Adjust expectations.
+
2018-11-06 Jan Beulich <jbeulich@suse.com>
* testsuite/gas/i386/avx-wig.s,
2018-11-06 Jan Beulich <jbeulich@suse.com>
* testsuite/gas/i386/avx-wig.s,
+[a-f0-9]+: c4 e2 f8 f3 10 blsmsk \(%eax\),%eax
+[a-f0-9]+: c4 e2 f8 f3 08 blsr \(%eax\),%eax
+[a-f0-9]+: c4 e2 f8 f5 00 bzhi %eax,\(%eax\),%eax
+[a-f0-9]+: c4 e2 f8 f3 10 blsmsk \(%eax\),%eax
+[a-f0-9]+: c4 e2 f8 f3 08 blsr \(%eax\),%eax
+[a-f0-9]+: c4 e2 f8 f5 00 bzhi %eax,\(%eax\),%eax
+ +[a-f0-9]+: c4 e1 fb 92 c0 kmovd %eax,%k0
+ +[a-f0-9]+: c4 e1 fb 93 c0 kmovd %k0,%eax
+[a-f0-9]+: 8f e9 f8 12 c0 llwpcb %eax
+[a-f0-9]+: 8f ea f8 12 00 00 00 00 00 lwpins \$0x0,\(%eax\),%eax
+[a-f0-9]+: 8f ea f8 12 08 00 00 00 00 lwpval \$0x0,\(%eax\),%eax
+[a-f0-9]+: 8f e9 f8 12 c0 llwpcb %eax
+[a-f0-9]+: 8f ea f8 12 00 00 00 00 00 lwpins \$0x0,\(%eax\),%eax
+[a-f0-9]+: 8f ea f8 12 08 00 00 00 00 lwpval \$0x0,\(%eax\),%eax
blsmsk (%eax), %eax
blsr (%eax), %eax
bzhi %eax, (%eax), %eax
blsmsk (%eax), %eax
blsr (%eax), %eax
bzhi %eax, (%eax), %eax
+ kmovd %eax, %k0
+ kmovd %k0, %eax
llwpcb %eax
lwpins $0, (%eax), %eax
lwpval $0, (%eax), %eax
llwpcb %eax
lwpins $0, (%eax), %eax
lwpval $0, (%eax), %eax
+2018-11-06 Jan Beulich <jbeulich@suse.com>
+
+ * i386-dis.c (MOD_VEX_W_0_0F92_P_3_LEN_0,
+ MOD_VEX_W_1_0F92_P_3_LEN_0): Fold into MOD_VEX_0F92_P_3_LEN_0.
+ (MOD_VEX_W_0_0F93_P_3_LEN_0, MOD_VEX_W_1_0F93_P_3_LEN_0): Fold
+ into MOD_VEX_0F93_P_3_LEN_0.
+ (vex_len_table, vex_w_table, mod_table): Move kmov[dq} with GPR
+ operand cases up one level in the hierarchy.
+
2018-11-06 Jan Beulich <jbeulich@suse.com>
* i386-dis.c (VEX_W_0FC4_P_2, VEX_W_0FC5_P_2, VEX_W_0F3A14_P_2,
2018-11-06 Jan Beulich <jbeulich@suse.com>
* i386-dis.c (VEX_W_0FC4_P_2, VEX_W_0FC5_P_2, VEX_W_0F3A14_P_2,
MOD_VEX_W_1_0F91_P_2_LEN_0,
MOD_VEX_W_0_0F92_P_0_LEN_0,
MOD_VEX_W_0_0F92_P_2_LEN_0,
MOD_VEX_W_1_0F91_P_2_LEN_0,
MOD_VEX_W_0_0F92_P_0_LEN_0,
MOD_VEX_W_0_0F92_P_2_LEN_0,
- MOD_VEX_W_0_0F92_P_3_LEN_0,
- MOD_VEX_W_1_0F92_P_3_LEN_0,
+ MOD_VEX_0F92_P_3_LEN_0,
MOD_VEX_W_0_0F93_P_0_LEN_0,
MOD_VEX_W_0_0F93_P_2_LEN_0,
MOD_VEX_W_0_0F93_P_0_LEN_0,
MOD_VEX_W_0_0F93_P_2_LEN_0,
- MOD_VEX_W_0_0F93_P_3_LEN_0,
- MOD_VEX_W_1_0F93_P_3_LEN_0,
+ MOD_VEX_0F93_P_3_LEN_0,
MOD_VEX_W_0_0F98_P_0_LEN_0,
MOD_VEX_W_1_0F98_P_0_LEN_0,
MOD_VEX_W_0_0F98_P_2_LEN_0,
MOD_VEX_W_0_0F98_P_0_LEN_0,
MOD_VEX_W_1_0F98_P_0_LEN_0,
MOD_VEX_W_0_0F98_P_2_LEN_0,
VEX_W_0F91_P_2_LEN_0,
VEX_W_0F92_P_0_LEN_0,
VEX_W_0F92_P_2_LEN_0,
VEX_W_0F91_P_2_LEN_0,
VEX_W_0F92_P_0_LEN_0,
VEX_W_0F92_P_2_LEN_0,
VEX_W_0F93_P_0_LEN_0,
VEX_W_0F93_P_2_LEN_0,
VEX_W_0F93_P_0_LEN_0,
VEX_W_0F93_P_2_LEN_0,
VEX_W_0F98_P_0_LEN_0,
VEX_W_0F98_P_2_LEN_0,
VEX_W_0F99_P_0_LEN_0,
VEX_W_0F98_P_0_LEN_0,
VEX_W_0F98_P_2_LEN_0,
VEX_W_0F99_P_0_LEN_0,
- { VEX_W_TABLE (VEX_W_0F92_P_3_LEN_0) },
+ { MOD_TABLE (MOD_VEX_0F92_P_3_LEN_0) },
},
/* VEX_LEN_0F93_P_0 */
},
/* VEX_LEN_0F93_P_0 */
- { VEX_W_TABLE (VEX_W_0F93_P_3_LEN_0) },
+ { MOD_TABLE (MOD_VEX_0F93_P_3_LEN_0) },
},
/* VEX_LEN_0F98_P_0 */
},
/* VEX_LEN_0F98_P_0 */
/* VEX_W_0F92_P_2_LEN_0 */
{ MOD_TABLE (MOD_VEX_W_0_0F92_P_2_LEN_0) },
},
/* VEX_W_0F92_P_2_LEN_0 */
{ MOD_TABLE (MOD_VEX_W_0_0F92_P_2_LEN_0) },
},
- {
- /* VEX_W_0F92_P_3_LEN_0 */
- { MOD_TABLE (MOD_VEX_W_0_0F92_P_3_LEN_0) },
- { MOD_TABLE (MOD_VEX_W_1_0F92_P_3_LEN_0) },
- },
{
/* VEX_W_0F93_P_0_LEN_0 */
{ MOD_TABLE (MOD_VEX_W_0_0F93_P_0_LEN_0) },
{
/* VEX_W_0F93_P_0_LEN_0 */
{ MOD_TABLE (MOD_VEX_W_0_0F93_P_0_LEN_0) },
/* VEX_W_0F93_P_2_LEN_0 */
{ MOD_TABLE (MOD_VEX_W_0_0F93_P_2_LEN_0) },
},
/* VEX_W_0F93_P_2_LEN_0 */
{ MOD_TABLE (MOD_VEX_W_0_0F93_P_2_LEN_0) },
},
- {
- /* VEX_W_0F93_P_3_LEN_0 */
- { MOD_TABLE (MOD_VEX_W_0_0F93_P_3_LEN_0) },
- { MOD_TABLE (MOD_VEX_W_1_0F93_P_3_LEN_0) },
- },
{
/* VEX_W_0F98_P_0_LEN_0 */
{ MOD_TABLE (MOD_VEX_W_0_0F98_P_0_LEN_0) },
{
/* VEX_W_0F98_P_0_LEN_0 */
{ MOD_TABLE (MOD_VEX_W_0_0F98_P_0_LEN_0) },
{ "kmovb", { MaskG, Rdq }, 0 },
},
{
{ "kmovb", { MaskG, Rdq }, 0 },
},
{
- /* MOD_VEX_W_0_0F92_P_3_LEN_0 */
- { Bad_Opcode },
- { "kmovd", { MaskG, Rdq }, 0 },
- },
- {
- /* MOD_VEX_W_1_0F92_P_3_LEN_0 */
+ /* MOD_VEX_0F92_P_3_LEN_0 */
- { "kmovq", { MaskG, Rdq }, 0 },
+ { "kmovK", { MaskG, Rdq }, 0 },
},
{
/* MOD_VEX_W_0_0F93_P_0_LEN_0 */
},
{
/* MOD_VEX_W_0_0F93_P_0_LEN_0 */
{ "kmovb", { Gdq, MaskR }, 0 },
},
{
{ "kmovb", { Gdq, MaskR }, 0 },
},
{
- /* MOD_VEX_W_0_0F93_P_3_LEN_0 */
- { Bad_Opcode },
- { "kmovd", { Gdq, MaskR }, 0 },
- },
- {
- /* MOD_VEX_W_1_0F93_P_3_LEN_0 */
+ /* MOD_VEX_0F93_P_3_LEN_0 */
- { "kmovq", { Gdq, MaskR }, 0 },
+ { "kmovK", { Gdq, MaskR }, 0 },
},
{
/* MOD_VEX_W_0_0F98_P_0_LEN_0 */
},
{
/* MOD_VEX_W_0_0F98_P_0_LEN_0 */