This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] New option for automatically generating IT blocks


I just discovered that I submitted an old version of this patch.

My apologies, I'll resend the new one as soon as test finishes.

Thanks,
	Daniel.

Daniel Gutson wrote:
Hi,
with this patch, the assembler allows use of conditional Thumb-2 instructions without requiring explicit IT instructions.


The patch adds the -mauto-it command-line option to enable this automatic generation of IT instructions. When not specified, the original behavior takes place.

I tested this by running the gas testsuite, plus some test cases I added.

Please note that I don't have write access, so please commit this for me if accepted.

Thanks,
    Daniel.


2009-05-07 Daniel Gutson <dgutson@codesourcery.com>


   gas/
   * config/tc-arm.c (do_automatic_it): New variable.
   (it_instruction_type): New enum.
   (arm_it): New field.
   (it_state): New enum.
   (current_it): New struct and global variable.
   (current_it_compatible): New function.
   (conditional_insn): New function.
   (set_it_insn_type): New macro.
   (set_it_insn_type_last): New macro.
   (do_t_add_sub): Call automatic IT machinery functions.
   (do_t_arit3): Likewise.
   (do_t_arit3c): Likewise.
   (do_t_blx): Likewise.
   (do_t_branch): Likewise.
   (do_t_bkpt): Likewise.
   (do_t_branch23): Likewise.
   (do_t_bx): Likewise.
   (do_t_bxj): Likewise.
   (do_t_cps): Likewise.
   (do_t_cpsi): Likewise.
   (do_t_cbz): Likewise.
   (do_t_it): Likewise.
   (encode_thumb2_ldmstm): Likewise.
   (do_t_ldst): Likewise.
   (do_t_mov_cmp): Likewise.
   (do_t_mvn_tst): Likewise.
   (do_t_mul): Likewise.
   (do_t_neg): Likewise.
   (do_t_setend): Likewise.
   (do_t_shift): Likewise.
   (do_t_tb): Likewise.
   (output_it_inst): New function.
   (new_automatic_it_block): New function.
   (close_automatic_it_block): New function.
   (current_it_add_mask): New function.
   (it_fsm_pre_encode): New function.
   (handle_it_state): New function.
   (it_fsm_post_encode): New function.
   (force_automatic_it_block_close): New function.
   (in_it_block): New function.
   (md_assemble): Call automatic IT block machinery functions.
   (arm_frob_label): Likewise.
   (arm_opts): New element.
   * doc/c-arm.texi: New option -mauto-it.

   gas/testsuite/
   * gas/arm/arm-it-auto.d: New test.
   * gas/arm/arm-it-auto.s: New file.
   * gas/arm/thumb2_it_auto.d: New test.
   * gas/arm/thumb2_it_bad.l: Error message updated.
   * gas/arm/thumb2_it_bad_auto.d: New test.
   * gas/arm/thumb2_it.d: Comment added.
   * gas/arm/thumb2_it_bad.d: Comment added.


-- Daniel Gutson

"Don't trust a computer you can't throw out a window"


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]