[PATCH/ARM] PR 16722, support VLDR s/d0, =Imm
Jiong Wang
jiong.wang@arm.com
Fri Apr 25 16:15:00 GMT 2014
On 25/04/14 16:50, Richard Earnshaw wrote:
> On 22/04/14 13:46, Jiong Wang wrote:
>> PR target/16722
>> gas/
>> * config/tc-arm.c (add_to_lit_pool): Add one parameter 'nbytes'.
>> Support literal pool entry be 8 byte.
>> (s_ltorg): Likewise.
>> (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.
>> (do_ldstv4): Likewise.
>> (do_t_ldst): Likewise.
>> (neon_write_immbits): Support Thumb-2 mode.
>>
>> gas/testsuite/
>> * 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
>
> .p2align 3
> <pool_symbol>:
> .word 33
> .word 99 // Back-filled
> .dword 55
>
> 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.
Thanks.
> Some additional comments inline.
--
Jiong
More information about the Binutils
mailing list