This is the mail archive of the
mailing list for the binutils project.
Re: [PATCH/ARM] PR 16722, support VLDR s/d0, =Imm
- From: Jiong Wang <jiong dot wang at arm dot com>
- To: Richard Earnshaw <Richard dot Earnshaw at arm dot com>
- Cc: Binutils <binutils at sourceware dot org>
- Date: Fri, 25 Apr 2014 17:15:03 +0100
- Subject: Re: [PATCH/ARM] PR 16722, support VLDR s/d0, =Imm
- Authentication-results: sourceware.org; auth=none
- References: <5356648F dot 9080205 at arm dot com> <535A842B dot 6090408 at arm dot com>
On 25/04/14 16:50, Richard Earnshaw wrote:
On 22/04/14 13:46, Jiong Wang wrote:
* config/tc-arm.c (add_to_lit_pool): Add one parameter 'nbytes'.
Support literal pool entry be 8 byte.
(enum lit_type): New enum type.
(encode_arm_cp_address): Generate literal pool entry if possible.
(move_or_literal_pool): Generate entry for vldr case.
(do_ldst): Use new enum type.
(neon_write_immbits): Support Thumb-2 mode.
* gas/arm/ldconst.s: Add new cases for vldr.
* gas/arm/ldconst.d: Likewise.
* gas/arm/thumb2_pool.s: Likewise.
* gas/arm/thumb2_pool.d: Likewise.
I see no evidence that the 8-byte entries have been placed on 8-byte
aligned locations; I think that should be done since misaligned loads
can be slower than aligned loads. If the pool contains any 8-byte
entries, then the whole pool should be started on an 8-byte boundary;
you'll then have to insert padding before an 8-byte entry if that is
necessary to get back to alignment. Bonus points for keeping track of
such holes and making use of them for later literal values that are
small enough to fit.
yes, no alignment support for 8-byte aligned locations.
thanks for pointing this out.
For example, the sequence:
vldr s0, =33
vldr d1, =55
vldr s6, =99
should generate a literal pool that contains
.word 99 // Back-filled
Also, please can you put the new tests in separate files; they are big
enough, and distinct enough to justify doing this.
OK, I will address this and your following comments.
Some additional comments inline.