Fix PR 16722 by adding support for 8-byte vector constants.
authorJiong Wang <jiong.wang@arm.com>
Tue, 8 Jul 2014 11:14:56 +0000 (12:14 +0100)
committerNick Clifton <nickc@redhat.com>
Tue, 8 Jul 2014 11:14:56 +0000 (12:14 +0100)
commit8335d6aa34b88ce31b62e1b578d54ab4aa364435
treecfe3c47cf21f37458ee86cc23161e3bd4e00792f
parentbffebb6ba5b4ddbca7353626d682f9f974584dbf
Fix PR 16722 by adding support for 8-byte vector constants.

 * config/tc-arm.c (literal_pool): New field "alignment".
  (find_or_make_literal_pool): Initialize "alignment" to 2.
  (s_ltorg): Align the pool using value of "alignment"
  (parse_big_immediate): New parameter "in_exp". Return
  parsed expression if "in_exp" is not null.
  (parse_address_main): Invoke "parse_big_immediate" for
  constant parameter.
  (add_to_lit_pool): Add one parameter 'nbytes'.
  Split 8 byte entry into two 4 byte entry.
  Add padding to align 8 byte entry to 8 byte boundary.
  (encode_arm_cp_address): Generate literal pool entry if possible.
  (move_or_literal_pool): Generate entry for vldr case.
  (enum lit_type): New enum type.
  (do_ldst): Use new enum type.
  (do_ldstv4): Likewise.
  (do_t_ldst): Likewise.
  (neon_write_immbits): Support Thumb-2 mode.

  * gas/arm/ldconst.s: Add test cases for symbol literal.
  * gas/arm/ldconst.d: Likewise.
  * gas/arm/vldconst.s: Add test cases for vldr.
  * gas/arm/thumb2_vpool.s: Likewise.
  * gas/arm/vldconst.d: New pattern for little-endian.
  * gas/arm/thumb2_vpool.d: Likewise.
  * gas/arm/vldconst_be.d: New pattern for big-endian.
  * gas/arm/thumb2_vpool_be.d: Likewise.
20 files changed:
gas/ChangeLog
gas/config/tc-arm.c
gas/testsuite/ChangeLog
gas/testsuite/gas/arm/armv8-a+crypto.d
gas/testsuite/gas/arm/armv8-a+fp.d
gas/testsuite/gas/arm/armv8-a+simd.d
gas/testsuite/gas/arm/armv8-a-barrier-thumb.d
gas/testsuite/gas/arm/bl-local-2.d
gas/testsuite/gas/arm/ldconst.d
gas/testsuite/gas/arm/ldconst.s
gas/testsuite/gas/arm/ldgesb-bad.d
gas/testsuite/gas/arm/ldgesh-bad.d
gas/testsuite/gas/arm/thumb2_pool.d
gas/testsuite/gas/arm/thumb2_pool.s
gas/testsuite/gas/arm/thumb2_vpool.d [new file with mode: 0644]
gas/testsuite/gas/arm/thumb2_vpool.s [new file with mode: 0644]
gas/testsuite/gas/arm/thumb2_vpool_be.d [new file with mode: 0644]
gas/testsuite/gas/arm/vldconst.d [new file with mode: 0644]
gas/testsuite/gas/arm/vldconst.s [new file with mode: 0644]
gas/testsuite/gas/arm/vldconst_be.d [new file with mode: 0644]