x86: FMA4 scalar insns ignore VEX.L
[deliverable/binutils-gdb.git] / opcodes / ChangeLog
index f9b87d1b0f3a1d492e13369aa7c52a63c0122a53..c1103f4f8abc797d4e4533e5565445ce640fc5cd 100644 (file)
@@ -1,3 +1,121 @@
+2020-07-08  Jan Beulich  <jbeulich@suse.com>
+
+       * i386-dis.c (XMVexScalarI4): Define.
+       (VEX_LEN_0F3A6A_P_2, VEX_LEN_0F3A6B_P_2, VEX_LEN_0F3A6E_P_2,
+       VEX_LEN_0F3A6F_P_2, VEX_LEN_0F3A7A_P_2, VEX_LEN_0F3A7B_P_2,
+       VEX_LEN_0F3A7E_P_2, VEX_LEN_0F3A7F_P_2): Delete.
+       (vex_len_table): Move scalar FMA4 entries ...
+       (prefix_table): ... here.
+       (OP_REG_VexI4): Handle scalar_mode.
+       * i386-opc.tbl: Use VexLIG for scalar FMA4 insns.
+       * i386-tbl.h: Re-generate.
+
+2020-07-08  Jan Beulich  <jbeulich@suse.com>
+
+       * i386-dis.c (OP_Vex_2src_1, OP_Vex_2src_2, Vex_2src_1,
+       Vex_2src_2): Delete.
+       (OP_VexW, VexW): New.
+       (xop_table): Use EXx for rotates by immediate. Use EXx and VexW
+       for shifts and rotates by register.
+
+2020-07-08  Jan Beulich  <jbeulich@suse.com>
+
+       * i386-dis.c (OP_EX_VexImmW, OP_XMM_VexW, EXVexImmW, XMVexW,
+       VEX_W_0F3A48_P_2, VEX_W_0F3A49_P_2, vex_w_done, get_vex_imm8,
+       OP_EX_VexReg): Delete.
+       (OP_VexI4, VexI4): New.
+       (vex_w_table): Move vpermil2ps and vpermil2pd entries ...
+       (prefix_table): ... here.
+       (print_insn): Drop setting of vex_w_done.
+
+2020-07-08  Jan Beulich  <jbeulich@suse.com>
+
+       * i386-dis.c (OP_EX_VexW, EXVexW, EXdVexW, EXqVexW): Delete.
+       (prefix_table, vex_len_table): Replace operands for FMA4 insns.
+       (xop_table): Replace operands of 4-operand insns.
+       (OP_REG_VexI4): Move VEX.W based operand swaping here.
+
+2020-07-07  Claudiu Zissulescu  <claziss@synopsys.com>
+
+       * arc-opc.c (insert_rbd): New function.
+       (RBD): Define.
+       (RBDdup): Likewise.
+       * arc-tbl.h (vadd2, vadd4h, vmac2h, vmpy2h, vsub4h): Update
+       instructions.
+
+2020-07-07  Jan Beulich  <jbeulich@suse.com>
+
+       * i386-dis.c (EVEX_W_0F3826_P_1, EVEX_W_0F3826_P_2,
+       EVEX_W_0F3828_P_1, EVEX_W_0F3829_P_1, EVEX_W_0F3854_P_2,
+       EVEX_W_0F3866_P_2, EVEX_W_0F3875_P_2, EVEX_W_0F387D_P_2,
+       EVEX_W_0F388D_P_2, EVEX_W_0F3A3E_P_2, EVEX_W_0F3A3F_P_2):
+       Delete.
+       (putop): Handle "BW".
+       * i386-dis-evex-w.h: Move entries for opcodes 0F3826, 0F3826,
+       0F3828, 0F3829, 0F3854, 0F3866, 0F3875, 0F387D, 0F388D, 0F3A3E,
+       and 0F3A3F ...
+       * i386-dis-evex-prefix.h: ... here.
+
+2020-07-06  Jan Beulich  <jbeulich@suse.com>
+
+       * i386-dis.c (VEX_LEN_0FXOP_09_80, VEX_LEN_0FXOP_09_81): Delete.
+       (VEX_LEN_0FXOP_09_82_W_0, VEX_LEN_0FXOP_09_83_W_0,
+       VEX_W_0FXOP_09_80, VEX_W_0FXOP_09_81, VEX_W_0FXOP_09_82,
+       VEX_W_0FXOP_09_83): New enumerators.
+       (xop_table): Reference the above.
+       (vex_len_table): Replace vfrczp* entries by vfrczs* ones.
+       (vex_w_table): New VEX_W_0FXOP_09_80, VEX_W_0FXOP_09_81,
+       VEX_W_0FXOP_09_82, and VEX_W_0FXOP_09_83 entries.
+       (get_valid_dis386): Return bad_opcode for XOP.PP != 0.
+
+2020-07-06  Jan Beulich  <jbeulich@suse.com>
+
+       * i386-dis.c (EVEX_W_0F3838_P_1,
+       EVEX_W_0F3839_P_1, EVEX_W_0F3840_P_2, EVEX_W_0F3855_P_2,
+       EVEX_W_0F3868_P_3, EVEX_W_0F3871_P_2, EVEX_W_0F3873_P_2,
+       EVEX_W_0F3A50_P_2, EVEX_W_0F3A51_P_2, EVEX_W_0F3A56_P_2,
+       EVEX_W_0F3A57_P_2, EVEX_W_0F3A66_P_2, EVEX_W_0F3A67_P_2,
+       EVEX_W_0F3A71_P_2, EVEX_W_0F3A73_P_2): Delete.
+       (putop): Centralize management of last[]. Delete SAVE_LAST.
+       * i386-dis-evex-w.h: Move entries for opcodes 0F3838, 0F3839,
+       0F3840, 0F3855, 0F3868, 0F3871, 0F3873, 0F3A50, 0F3A51, 0F3A56,
+       0F3A57, 0F3A66, 0F3A67, 0F3A71, and 0F3A73 ...
+       * i386-dis-evex-prefix.h: here.
+
+2020-07-06  Jan Beulich  <jbeulich@suse.com>
+
+       * i386-dis.c (MOD_EVEX_0F381A_P_2_W_0, MOD_EVEX_0F381A_P_2_W_1,
+       MOD_EVEX_0F381B_P_2_W_0, MOD_EVEX_0F381B_P_2_W_1,
+       MOD_EVEX_0F385A_P_2_W_0, MOD_EVEX_0F385A_P_2_W_1,
+       MOD_EVEX_0F385B_P_2_W_0, MOD_EVEX_0F385B_P_2_W_1): New
+       enumerators.
+       (EVEX_LEN_0F381A_P_2_W_0, EVEX_LEN_0F381A_P_2_W_1,
+       EVEX_LEN_0F381B_P_2_W_0, EVEX_LEN_0F381B_P_2_W_1,
+       EVEX_LEN_0F385A_P_2_W_0, EVEX_LEN_0F385A_P_2_W_1,
+       EVEX_LEN_0F385B_P_2_W_0, EVEX_LEN_0F385B_P_2_W_1): Rename to ...
+       (EVEX_LEN_0F381A_P_2_W_0_M_0, EVEX_LEN_0F381A_P_2_W_1_M_0,
+       EVEX_LEN_0F381B_P_2_W_0_M_0, EVEX_LEN_0F381B_P_2_W_1_M_0,
+       EVEX_LEN_0F385A_P_2_W_0_M_0, EVEX_LEN_0F385A_P_2_W_1_M_0,
+       EVEX_LEN_0F385B_P_2_W_0_M_0, EVEX_LEN_0F385B_P_2_W_1_M_0): ...
+       these, respectively.
+       * i386-dis-evex-len.h: Adjust comments.
+       * i386-dis-evex-mod.h: New MOD_EVEX_0F381A_P_2_W_0,
+       MOD_EVEX_0F381A_P_2_W_1, MOD_EVEX_0F381B_P_2_W_0,
+       MOD_EVEX_0F381B_P_2_W_1, MOD_EVEX_0F385A_P_2_W_0,
+       MOD_EVEX_0F385A_P_2_W_1, MOD_EVEX_0F385B_P_2_W_0, and
+       MOD_EVEX_0F385B_P_2_W_1 table entries.
+       * i386-dis-evex-w.h: Reference mod_table[] for
+       EVEX_W_0F381A_P_2, EVEX_W_0F381B_P_2, EVEX_W_0F385A_P_2, and
+       EVEX_W_0F385B_P_2.
+
+2020-07-06  Jan Beulich  <jbeulich@suse.com>
+
+       * i386-dis-evex-len.h (vbroadcastf32x8, vbroadcasti32x8,
+       vinsertf32x8, vinsertf64x4, vextractf32x8, vextractf64x4): Use
+       EXymm.
+       (vinserti32x8, vinserti64x4, vextracti32x8, vextracti64x4):
+       Likewise. Mark 256-bit entries invalid.
+
 2020-07-06  Jan Beulich  <jbeulich@suse.com>
 
        * i386-dis.c (PREFIX_EVEX_0F62, PREFIX_EVEX_0F6A,
This page took 0.031456 seconds and 4 git commands to generate.