[PATCH 9/57][Arm][GAS] Add support for MVE instructions: vmov
[external/binutils.git] / gas / ChangeLog
index 57be175..6d4342a 100644 (file)
@@ -1,3 +1,336 @@
+2019-05-16  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+
+       * config/tc-arm.c (struct arm_it): Expand isscalar field to be able to
+       distinguish between types of scalar.
+       (parse_typed_reg_or_scalar): Change to accept MVE scalar variants.
+       (parse_scalar): Likewise.
+       (parse_neon_mov): Accept MVE variant.
+       (po_scalar_or_goto): Make use reg_type.
+       (parse_operands): Change uses of po_scalar_or_goto.
+       (do_vfp_sp_monadic): Change to accept MVE variants.
+       (do_vfp_reg_from_sp): Likewise.
+       (do_vfp_sp_from_reg): Likewise.
+       (do_vfp_dp_rd_rm): Likewise.
+       (do_vfp_dp_rd_rn_rm): Likewise.
+       (do_vfp_dp_rm_rd_rn): Likewise.
+       (M_MNEM_vmovlt, M_MNEM_vmovlb, M_MNEM_vmovnt, M_MNEM_vmovnb): New
+       instruction encodings.
+       (NEON_SHAPE_DEF): New shape.
+       (do_mve_mov): New encoding fuction.
+       (do_mve_movn): Likewise.
+       (do_mve_movl): Likewise.
+       (do_neon_mov): Change to accept MVE variants.
+       (mcCE): New MACRO.
+       (insns): Accept new MVE variants and instructions.
+       * testsuite/gas/arm/mve-vmov-bad-1.d: New test.
+       * testsuite/gas/arm/mve-vmov-bad-1.l: New test.
+       * testsuite/gas/arm/mve-vmov-bad-1.s: New test.
+       * testsuite/gas/arm/mve-vmov-bad-2.d: New test.
+       * testsuite/gas/arm/mve-vmov-bad-2.l: New test.
+       * testsuite/gas/arm/mve-vmov-bad-2.s: New test.
+
+2019-05-16  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+
+       * config/tc-arm.c (enum operand_parse_code): Add new operand.
+       (parse_operands): Handle new operand.
+       (do_neon_cvt_1): Handle MVE variants.
+       (do_neon_cvttb_1): Likewise.
+       (insns): Accept MVE variants.
+       * testsuite/gas/arm/mve-vcvt-bad-1.d: New test.
+       * testsuite/gas/arm/mve-vcvt-bad-1.l: New test.
+       * testsuite/gas/arm/mve-vcvt-bad-1.s: New test.
+       * testsuite/gas/arm/mve-vcvt-bad-2.d: New test.
+       * testsuite/gas/arm/mve-vcvt-bad-2.l: New test.
+       * testsuite/gas/arm/mve-vcvt-bad-2.s: New test.
+       * testsuite/gas/arm/mve-vcvt-bad-3.d: New test.
+       * testsuite/gas/arm/mve-vcvt-bad-3.l: New test.
+       * testsuite/gas/arm/mve-vcvt-bad-3.s: New test.
+       * testsuite/gas/arm/mve-vcvt-bad-4.d: New test.
+       * testsuite/gas/arm/mve-vcvt-bad-4.l: New test.
+       * testsuite/gas/arm/mve-vcvt-bad-4.s: New test.
+       * testsuite/gas/arm/mve-vcvt-bad.d: New test.
+       * testsuite/gas/arm/mve-vcvt-bad.l: New test.
+       * testsuite/gas/arm/mve-vcvt-bad.s: New test.
+
+2019-05-16  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+
+       * config/tc-arm.c (struct arm_it): Make immisreg field larger to hold
+       type of register.
+       (enum shift_kind): Add SHIFT_UXTW shift kind.
+       (enum parse_shift_mode): Add SHIFT_UXTW_IMMEDIATE shift mode.
+       (parse_shift): Handle new shift type.
+       (parse_address_main): Accept new addressing modes.
+       (M_MNEM_vstrb, M_MNEM_vstrh, M_MNEM_vstrw, M_MNEM_vstrd,
+        M_MNEM_vldrb, M_MNEM_vldrh, M_MNEM_vldrw, M_MNEM_vldrd): New
+       instruction encodings.
+       (do_mve_vstr_vldr_QI): New encoding functions.
+       (do_mve_vstr_vldr_RQ): Likewise.
+       (do_mve_vstr_vldr_RI): Likewise.
+       (do_mve_vstr_vldr): Likewise.
+       * testsuite/gas/arm/mve-vldr-bad-1.d: New test.
+       * testsuite/gas/arm/mve-vldr-bad-1.l: New test.
+       * testsuite/gas/arm/mve-vldr-bad-1.s: New test.
+       * testsuite/gas/arm/mve-vldr-bad-2.d: New test.
+       * testsuite/gas/arm/mve-vldr-bad-2.l: New test.
+       * testsuite/gas/arm/mve-vldr-bad-2.s: New test.
+       * testsuite/gas/arm/mve-vldr-bad-3.d: New test.
+       * testsuite/gas/arm/mve-vldr-bad-3.l: New test.
+       * testsuite/gas/arm/mve-vldr-bad-3.s: New test.
+       * testsuite/gas/arm/mve-vstr-bad-1.d: New test.
+       * testsuite/gas/arm/mve-vstr-bad-1.l: New test.
+       * testsuite/gas/arm/mve-vstr-bad-1.s: New test.
+       * testsuite/gas/arm/mve-vstr-bad-2.d: New test.
+       * testsuite/gas/arm/mve-vstr-bad-2.l: New test.
+       * testsuite/gas/arm/mve-vstr-bad-2.s: New test.
+       * testsuite/gas/arm/mve-vstr-bad-3.d: New test.
+       * testsuite/gas/arm/mve-vstr-bad-3.l: New test.
+       * testsuite/gas/arm/mve-vstr-bad-3.s: New test.
+
+2019-05-16  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+
+       * config/tc-arm.c (enum it_instruction_type): Add MVE_UNPREDICABLE_INSN.
+       (BAD_EL_TYPE): New error message.
+       (parse_neon_el_struct_list): Adapt to be able to accept MVE variant.
+       (parse_address_main): Likewise.
+       (group_reloc_type): Add GROUP_MVE.
+       (enum operand_parse_code): Add new operands.
+       (parse_operands): Handle new operands.
+       (M_MNEM_vst20, M_MNEM_vst21, M_MNEM_vst40, M_MNEM_vst41, M_MNEM_vst42,
+        M_MNEM_vst43, M_MNEM_vld20, M_MNEM_vld21, M_MNEM_vld40, M_MNEM_vld41,
+        M_MNEM_vld42, M_MNEM_vld43): New encodings.
+       (do_mve_vst_vld): New encoding function.
+       (do_neon_ld_st_interleave): Use BAD_EL_TYPE.
+       (it_fsm_pre_encode): Handle new it_instruction_type
+       (handle_pred_state): Likewise.
+       * testsuite/gas/arm/mve-vstld-bad.d: New test.
+       * testsuite/gas/arm/mve-vstld-bad.l: New test.
+       * testsuite/gas/arm/mve-vstld-bad.s: New test.
+
+2019-05-16  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+
+       * config/tc-arm.c (BAD_MVE_AUTO): New error message.
+       (BAD_MVE_SRCDEST): Likewise.
+       (mark_feature_used): Diagnose MVE only instructions when in
+       auto-detection mode or -march=all.
+       (enum operand_parse_code): Define new operand.
+       (parse_operands): Handle new operand.
+       (M_MNEM_vmullt, M_MNEM_vmullb): New encodings.
+       (mve_encode_qqq): New encoding helper function.
+       (do_mve_vmull): New encoding function.
+       (insns): Handle new instructions.
+       * testsuite/gas/arm/mve-vmullbt-bad.d: New test.
+       * testsuite/gas/arm/mve-vmullbt-bad.l: New test.
+       * testsuite/gas/arm/mve-vmullbt-bad.s: New test.
+
+2019-05-16  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+
+       * config/tc-arm.c (struct asm_opcode): Make avalue a full int.
+       (BAD_ODD, BAD_EVEN, BAD_SIMD_TYPE): New errors.
+       (enum operand_parse_code): Handle new operands.
+       (parse_operands): Likewise.
+       (M_MNEM_vabav, M_MNEM_vmladav, M_MNEM_vmladava, M_MNEM_vmladavx,
+        M_MNEM_vmladavax, M_MNEM_vmlsdav, M_MNEM_vmlsdava, M_MNEM_vmlsdavx,
+        M_MNEM_vmlsdavax): Define new encodings.
+       (NEON_SHAPE_DEF): Add new shape.
+       (neon_check_type): Use BAD_SIMD_TYPE.
+       (mve_encode_rqq): New encoding helper function.
+       (do_mve_vabav, do_mve_vmladav): New encoding functions.
+       (mCEF): New MACRO.
+       * testsuite/gas/arm/mve-vabav-bad.d: New test.
+       * testsuite/gas/arm/mve-vabav-bad.l: New test.
+       * testsuite/gas/arm/mve-vabav-bad.s: New test.
+       * testsuite/gas/arm/mve-vmladav-bad.d: New test.
+       * testsuite/gas/arm/mve-vmladav-bad.l: New test.
+       * testsuite/gas/arm/mve-vmladav-bad.s: New test.
+       * testsuite/gas/arm/mve-vmlav-bad.d: New test.
+       * testsuite/gas/arm/mve-vmlav-bad.l: New test.
+       * testsuite/gas/arm/mve-vmlav-bad.s: New test.
+       * testsuite/gas/arm/mve-vmlsdav-bad.d: New test.
+       * testsuite/gas/arm/mve-vmlsdav-bad.l: New test.
+       * testsuite/gas/arm/mve-vmlsdav-bad.s: New test.
+
+2019-05-16  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+
+       * config/tc-arm.c (do_neon_abs_neg): Make it accept MVE variant.
+       (insns): Change vabs and vneg entries to accept MVE variants.
+       * testsuite/gas/arm/mve-vabsneg-bad-1.d: New test.
+       * testsuite/gas/arm/mve-vabsneg-bad-1.l: New test.
+       * testsuite/gas/arm/mve-vabsneg-bad-1.s: New test.
+       * testsuite/gas/arm/mve-vabsneg-bad-2.d: New test.
+       * testsuite/gas/arm/mve-vabsneg-bad-2.l: New test.
+       * testsuite/gas/arm/mve-vabsneg-bad-2.s: New test.
+
+2019-05-16  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+
+       * config/tc-arm.c (enum it_instruction_type): Rename to...
+       (enum pred_instruction_type): ... this. Include VPT types.
+       (it_insn_type): Rename to ...
+       (pred_insn_type): .. this.
+       (arm_it): Change comment.
+       (enum arm_reg_type): Add new value.
+       (reg_expected_msgs): New entry.
+       (asm_opcode): Add mayBeVecPred member.
+       (BAD_SYNTAX, BAD_NOT_VPT, BAD_OUT_VPT, BAD_VPT_COND, MVE_NOT_IT,
+        MVE_NOT_VPT, MVE_BAD_PC, MVE_BAD_SP): New diagnostic MACROS.
+       (arm_vcond_hsh): New table for vector condition codes.
+       (now_it): Rename to ...
+       (now_pred): ... this.
+       (now_it_compatible): Rename to ...
+       (now_pred_compatible): ... this.
+       (in_it_block): Rename to ...
+       (in_pred_block): ... this.
+       (handle_it_state): Rename to ...
+       (handle_pred_state): ... this. And change it to accept VPT blocks.
+       (set_it_insn_type): Rename to ...
+       (set_pred_insn_type): ... this.
+       (set_it_insn_type_nonvoid): Rename to ...
+       (set_pred_insn_type_nonvoid): ... this.
+       (set_it_insn_type_last): Rename to ...
+       (set_pred_insn_type_last): ... this.
+       (record_feature_use): Moved.
+       (mark_feature_used): Likewise.
+       (parse_typed_reg_or_scalar): Add new case for REG_TYPE_MQ.
+       (emit_insn): Use renamed functions and variables.
+       (enum operand_parse_code): Add new operands.
+       (parse_operands): Handle new operands.
+       (do_scalar_fp16_v82_encode): Change predication detection.
+       (do_it): Use renamed functions and variables.
+       (do_t_add_sub): Likewise.
+       (do_t_arit3): Likewise.
+       (do_t_arit3c): Likewise.
+       (do_t_blx): Likewise.
+       (do_t_branch): Likewise.
+       (do_t_bkpt_hlt1): Likewise.
+       (do_t_branch23): Likewise.
+       (do_t_bx): Likewise.
+       (do_t_bxj): Likewise.
+       (do_t_cond): Likewise.
+       (do_t_csdb): Likewise.
+       (do_t_cps): Likewise.
+       (do_t_cpsi): Likewise.
+       (do_t_cbz): Likewise.
+       (do_t_it): Likewise.
+       (do_mve_vpt): New function to handle VPT blocks.
+       (encode_thumb2_multi): Use renamed functions and variables.
+       (do_t_ldst): Use renamed functions and variables.
+       (do_t_mov_cmp): Likewise.
+       (do_t_mvn_tst): Likewise.
+       (do_t_mul): Likewise.
+       (do_t_nop): Likewise.
+       (do_t_neg): Likewise.
+       (do_t_rsb): Likewise.
+       (do_t_setend): Likewise.
+       (do_t_shift): Likewise.
+       (do_t_smc): Likewise.
+       (do_t_tb): Likewise.
+       (do_t_udf): Likewise.
+       (do_t_loloop): Likewise.
+       (do_neon_cvt_1): Likewise.
+       (do_vfp_nsyn_cvt_fpv8): Likewise.
+       (do_vsel): Likewise.
+       (do_vmaxnm): Likewise.
+       (do_vrint_1): Likewise.
+       (do_crypto_2op_1): Likewise.
+       (do_crypto_3op_1): Likewise.
+       (do_crc32_1): Likewise.
+       (it_fsm_pre_encode): Likewise.
+       (it_fsm_post_encode): Likewise.
+       (force_automatic_it_block_close): Likewise.
+       (check_it_blocks_finished): Likewise.
+       (check_pred_blocks_finished): Likewise.
+       (arm_cleanup): Likewise.
+       (now_it_add_mask): Rename to ...
+       (now_pred_add_mask): ... this. And use new variables and functions.
+       (NEON_ENC_TAB): Add entries for vabdl, vaddl and vsubl.
+       (N_I_MVE, N_F_MVE, N_SU_MVE): New MACROs.
+       (neon_check_type): Generalize error message.
+       (mve_encode_qqr): New MVE generic encoding function.
+       (neon_dyadic_misc): Change to accept MVE variants.
+       (do_neon_dyadic_if_su): Likewise.
+       (do_neon_addsub_if_i): Likewise.
+       (do_neon_dyadic_long): Likewise.
+       (vfp_or_neon_is_neon): Add extra checks.
+       (check_simd_pred_availability): Helper function to check SIMD
+       instruction availability with respect to predication.
+       (enum opcode_tag): New suffix value.
+       (opcode_lookup): Change to handle VPT blocks.
+       (new_automatic_it_block): Rename to ...
+       (close_automatic_it_block): ...this.
+       (TxCE, TxC3, TxC3w, TUE, TUEc, TUF, CE, C3, ToC, ToU,
+        toC, toU, CL, cCE, cCL, C3E, xCM_, UE, UF, NUF, nUF,
+        NCE_tag, NCE, NCEF, nCE_tag, nCE, nCEF): Add default value for new
+       field.
+       (mCEF, mnCEF, mnCE, MNUF, mnUF, mToC, MNCE, MNCEF): New MACROs.
+       (insns): Redefine vadd, vsub, cabd, vabdl, vaddl, vsubl to accept MVE
+       variants. Add entries for vscclrm, and vpst.
+       (md_begin): Add arm_vcond_hsh initialization.
+       * config/tc-arm.h (enum it_state): Rename to...
+       (enum pred_state): ...this.
+       (struct current_it): Rename to...
+       (struct current_pred): ...this.
+       (enum pred_type): New enum.
+       (struct arm_segment_info_type): Use current_pred.
+       * testsuite/gas/arm/armv8_3-a-fp-bad.l: Update error message.
+       * testsuite/gas/arm/armv8_3-a-simd-bad.l: Update error message.
+       * testsuite/gas/arm/dotprod-illegal.l: Update error message.
+       * testsuite/gas/arm/mve-vaddsubabd-bad-1.d: New test.
+       * testsuite/gas/arm/mve-vaddsubabd-bad-1.l: New test.
+       * testsuite/gas/arm/mve-vaddsubabd-bad-1.s: New test.
+       * testsuite/gas/arm/mve-vaddsubabd-bad-2.d: New test.
+       * testsuite/gas/arm/mve-vaddsubabd-bad-2.l: New test.
+       * testsuite/gas/arm/mve-vaddsubabd-bad-2.s: New test.
+       * testsuite/gas/arm/mve-vpst-bad.d: New test.
+       * testsuite/gas/arm/mve-vpst-bad.l: New test.
+       * testsuite/gas/arm/mve-vpst-bad.s: New test.
+       * testsuite/gas/arm/neon-ldst-es-bad.l: Updated error message.
+
+2019-05-16  Andre Vieira  <andre.simoesdiasvieira@arm.com>
+
+       * config/tc-arm.c (mve_ext, mve_fp_ext): New features.
+       (armv8_1m_main_ext_table): Add new extensions.
+       (aeabi_set_public_attributes): Translate new features to new build attributes.
+       (arm_convert_symbolic_attribute): Add Tag_MVE_arch.
+       * doc/c-arm.texi: Document new extensions and new build attribute.
+
+2019-05-15  John Darrington <john@darrington.wattle.id.au>
+
+       * config/tc-s12z.c (register_prefix): New variable.  (md_show_usage,
+       md_parse_option):  parse the new option.
+       (lex_reg_name): Scan the prefix if one is set.
+       * doc/c-s12z.texi (S12Z-Opts): Document the new option.
+       * testsuite/gas/s12z/reg-prefix.d: New file.
+       * testsuite/gas/s12z/reg-prefix.s: New file.
+       * testsuite/gas/s12z/s12z.exp: Add them.
+
+2019-05-14  John Darrington <john@darrington.wattle.id.au>
+
+       * doc/as.texi (Machine Dependencies): Fix misaligned menu entry.
+
+2019-05-15  Alan Modra  <amodra@gmail.com>
+
+       * config/tc-csky.c (md_convert_frag): Initialise trailing
+       padding for COND_JUMP_PIC.
+
+2019-05-15  Alan Modra  <amodra@gmail.com>
+
+       * dwarf2dbg.c: Whitespace fixes.
+       (get_filenum): Don't strdup "file".  Adjust error message.
+       (dwarf2_directive_filename): Use an unsigned type for "num".
+       Catch truncation of file number and overflow of get_filenum
+       XRESIZEVEC multiplication.  Delete dead code.
+
+2019-05-15  Alan Modra  <amodra@gmail.com>
+
+       PR 24538
+       * config/tc-tic54x.c (tic54x_start_line_hook): Do skip end of line
+       chars in setting endp.
+
+2019-05-14  Nick Clifton  <nickc@redhat.com>
+
+       PR 24538
+       * config/tc-i386-intel.c (i386_intel_simplify_register): Reject
+       illegal register numbers.
+
 2019-05-10  Nick Clifton  <nickc@redhat.com>
 
        PR 24538
 
 2019-04-29  John Darrington <john@darrington.wattle.id.au>
 
-        * testsuite/gas/s12z/truncated.d: New file.
+       * testsuite/gas/s12z/truncated.d: New file.
        * testsuite/gas/s12z/truncated.s: New file.
        * testsuite/gas/s12z/s12z.exp: Add new test.
 
        * testsuite/gas/arm/archv8m_1m-cmse-main.s: Likewise.
 
 2019-04-15  Sudakshina Das  <sudi.das@arm.com>
-            Andre Vieira  <andre.simoesdiasvieira@arm.com>
+           Andre Vieira  <andre.simoesdiasvieira@arm.com>
 
        * config/tc-arm.c (operand_parse_code): Add OP_LR and OP_oLR
        for the LR operand and optional LR operand.
        * testsuite/gas/arm/armv8_1-m-tloop-bad.l: New.
 
 2019-04-15  Sudakshina Das  <sudi.das@arm.com>
-            Andre Vieira  <andre.simoesdiasvieira@arm.com>
+           Andre Vieira  <andre.simoesdiasvieira@arm.com>
 
        * config/tc-arm.c (T16_32_TAB): New entriy for bfcsel.
        (do_t_v8_1_branch): New switch case for bfcsel.
        (tc_gen_reloc): Likewise.
 
 2019-04-15  Sudakshina Das  <sudi.das@arm.com>
-            Andre Vieira  <andre.simoesdiasvieira@arm.com>
+           Andre Vieira  <andre.simoesdiasvieira@arm.com>
 
        * config/tc-arm.c (T16_32_TAB): New entrie for bfl.
        (do_t_v8_1_branch): New switch case for bfl.
        * testsuite/gas/arm/armv8_1-m-bf-exchange-bad.d: New
 
 2019-04-15  Sudakshina Das  <sudi.das@arm.com>
-            Andre Vieira  <andre.simoesdiasvieira@arm.com>
+           Andre Vieira  <andre.simoesdiasvieira@arm.com>
 
        * config/tc-arm.c (T16_32_TAB): New entries for bf.
        (do_t_branch_future): New.
        * testsuite/gas/mips/mips.exp: Run the new test.
 
 2019-04-12  John Darrington <john@darrington.wattle.id.au>
-       
+
        config/tc-s12z.h: Remove definition of macro TC_M68K
 
 2019-04-01  John Darrington <john@darrington.wattle.id.au>
-       
+
        config/tc-s12z.c: Use bfd_boolean where appropriate.
 
 2019-04-11  Max Filippov  <jcmvbkbc@gmail.com>
 
 2019-01-31  John Darrington <john@darrington.wattle.id.au>
 
-        * config/tc-s12z.c (lex_imm): Add new argument exp_o.
+       * config/tc-s12z.c (lex_imm): Add new argument exp_o.
        (emit_reloc): New function.
        (md_apply_fix): [BFD_RELOC_S12Z_OPR] Recognise that it
        can be either 2 bytes or 3 bytes long.
 
 2019-01-09  John Darrington <john@darrington.wattle.id.au>
 
-        * testsuite/gas/s12z/jsr.s: New case.
+       * testsuite/gas/s12z/jsr.s: New case.
        * testsuite/gas/s12z/jsr.d: New case.
 
 2019-01-09  Andrew Paprocki  <andrew@ishiboo.com>