This is the mail archive of the
binutils@sourceware.org
mailing list for the binutils project.
[PATCH, ARM] Fix Neon floating-point constant encoding & support floating-point syntax
- From: Julian Brown <julian at codesourcery dot com>
- To: binutils at sources dot redhat dot com
- Cc: Paul Brook <paul at codesourcery dot com>, Richard Earnshaw <Richard dot Earnshaw at arm dot com>, Julian Brown <julian at codesourcery dot com>
- Date: Sun, 23 Apr 2006 21:23:41 +0100
- Subject: [PATCH, ARM] Fix Neon floating-point constant encoding & support floating-point syntax
Hi,
This patch fixes a bug with floating-point constant encoding for the
VMOV instruction, and enables support for floating-point syntax for
assembly and disassembly for that instruction too. It also tweaks the
encoding so that floating-point instructions are used in preference to
integer ones in the couple of ambiguous cases where both may be used.
I've added a test case for the new floating-point constant support.
Tested with "make check" with cross to arm-none-eabi. OK to apply on the
CSL branch? (This should probably be applied on mainline too at the same
time as the initial Neon support patch).
Cheers,
Julian
ChangeLog (gas):
* gas/config/tc-arm.c (neon_is_quarter_float): Move, and rename
to...
(is_quarter_float): Rename from above.
(parse_qfloat_immediate): Parse a "quarter precision" floating-point
number.
(parse_neon_mov): Parse floating-point constants.
(neon_qfloat_bits): Fix encoding.
(neon_cmode_for_move_imm): Tweak to use floating-point encoding in
preference to integer encoding when using the F32 type.
ChangeLog (gas/testsuite):
* gas/testsuite/gas/arm/neon-const.s: New testcase. Neon
floating-point constants.
* gas/testsuite/gas/arm/neon-const.d: Expected output of above.
* gas/testsuite/gas/arm/neon-cov.d: Expect floating-point
disassembly for VMOV.F32.
ChangeLog (opcodes):
* arm-dis.c (print_insn_neon): Disassemble floating-point constant
VMOV.
? bfd/doc/bfd.info
? binutils/doc/binutils.info
? gas/doc/as.info
? ld/ld.info
Index: gas/config/tc-arm.c
===================================================================
RCS file: /cvs/src/src/gas/config/tc-arm.c,v
retrieving revision 1.250.2.9
diff -c -p -r1.250.2.9 tc-arm.c
*** gas/config/tc-arm.c 7 Apr 2006 15:46:20 -0000 1.250.2.9
--- gas/config/tc-arm.c 23 Apr 2006 20:07:20 -0000
*************** parse_fpa_immediate (char ** str)
*** 3994,3999 ****
--- 3994,4051 ----
return FAIL;
}
+ /* Returns 1 if a number has "quarter-precision" float format
+ 0baBbbbbbc defgh000 00000000 00000000. */
+
+ static int
+ is_quarter_float (unsigned imm)
+ {
+ int b = (imm & 0x20000000) != 0;
+ int bs = (b << 25) | (b << 26) | (b << 27) | (b << 28) | (b << 29)
+ | ((!b) << 30);
+ return (imm & 0x81ffffff) == (imm & 0x81f80000)
+ && ((imm & 0x7e000000) ^ bs) == 0;
+ }
+
+ /* Parse an 8-bit "quarter-precision" floating point number of the form:
+ 0baBbbbbbc defgh000 00000000 00000000.
+ The minus-zero case needs special handling, since it can't be encoded in the
+ "quarter-precision" float format, but can nonetheless be loaded as an integer
+ constant. */
+
+ static unsigned
+ parse_qfloat_immediate (char **ccp, int *immed)
+ {
+ char *str = *ccp;
+ LITTLENUM_TYPE words[MAX_LITTLENUMS];
+
+ skip_past_char (&str, '#');
+
+ if ((str = atof_ieee (str, 's', words)) != NULL)
+ {
+ unsigned fpword = 0;
+ int i;
+
+ /* Our FP word must be 32 bits (single-precision FP). */
+ for (i = 0; i < 32 / LITTLENUM_NUMBER_OF_BITS; i++)
+ {
+ fpword <<= LITTLENUM_NUMBER_OF_BITS;
+ fpword |= words[i];
+ }
+
+ if (is_quarter_float (fpword) || fpword == 0x80000000)
+ *immed = fpword;
+ else
+ return FAIL;
+
+ *ccp = str;
+
+ return SUCCESS;
+ }
+
+ return FAIL;
+ }
+
/* Shift operands. */
enum shift_kind
{
*************** parse_neon_mov (char **str, int *which_o
*** 4702,4707 ****
--- 4754,4766 ----
inst.operands[i].isreg = 1;
inst.operands[i].present = 1;
}
+ else if (parse_qfloat_immediate (&ptr, &inst.operands[i].imm) == SUCCESS)
+ {
+ /* Case 2: VMOV<c><q>.<dt> <Qd>, #<float-imm>
+ Case 3: VMOV<c><q>.<dt> <Dd>, #<float-imm> */
+ if (!thumb_mode && (inst.instruction & 0xf0000000) != 0xe0000000)
+ goto bad_cond;
+ }
else if (parse_big_immediate (&ptr, i) == SUCCESS)
{
/* Case 2: VMOV<c><q>.<dt> <Qd>, #<imm>
*************** neon_squash_bits (unsigned imm)
*** 10214,10238 ****
| ((imm & 0x01000000) >> 21);
}
! /* Returns 1 if a number has "quarter-precision" float format
! 0baBbbbbbc defgh000 00000000 00000000. */
!
! static int
! neon_is_quarter_float (unsigned imm)
! {
! int b = (imm & 0x20000000) != 0;
! int bs = (b << 25) | (b << 26) | (b << 27) | (b << 28) | (b << 29)
! | ((!b) << 30);
! return (imm & 0x81ffffff) == (imm & 0x81f80000)
! && ((imm & 0x7e000000) ^ bs) == 0;
! }
!
! /* Compress above representation to 0b...000 abcdefgh. */
static unsigned
neon_qfloat_bits (unsigned imm)
{
! return ((imm >> 19) & 0x7f) | (imm >> 24);
}
/* Returns CMODE. IMMBITS [7:0] is set to bits suitable for inserting into
--- 10273,10284 ----
| ((imm & 0x01000000) >> 21);
}
! /* Compress quarter-float representation to 0b...000 abcdefgh. */
static unsigned
neon_qfloat_bits (unsigned imm)
{
! return ((imm >> 19) & 0x7f) | ((imm >> 24) & 0x80);
}
/* Returns CMODE. IMMBITS [7:0] is set to bits suitable for inserting into
*************** neon_qfloat_bits (unsigned imm)
*** 10243,10251 ****
static int
neon_cmode_for_move_imm (unsigned immlo, unsigned immhi, unsigned *immbits,
! int *op, int size)
{
! if (size == 64 && neon_bits_same_in_bytes (immhi)
&& neon_bits_same_in_bytes (immlo))
{
/* Check this one first so we don't have to bother with immhi in later
--- 10289,10304 ----
static int
neon_cmode_for_move_imm (unsigned immlo, unsigned immhi, unsigned *immbits,
! int *op, int size, enum neon_el_type type)
{
! if (type == NT_float && is_quarter_float (immlo) && immhi == 0)
! {
! if (size != 32 || *op == 1)
! return FAIL;
! *immbits = neon_qfloat_bits (immlo);
! return 0xf;
! }
! else if (size == 64 && neon_bits_same_in_bytes (immhi)
&& neon_bits_same_in_bytes (immlo))
{
/* Check this one first so we don't have to bother with immhi in later
*************** neon_cmode_for_move_imm (unsigned immlo,
*** 10303,10315 ****
*immbits = (immlo >> 16) & 0xff;
return 0xd;
}
- else if (neon_is_quarter_float (immlo))
- {
- if (size != 32 || *op == 1)
- return FAIL;
- *immbits = neon_qfloat_bits (immlo);
- return 0xf;
- }
return FAIL;
}
--- 10356,10361 ----
*************** neon_move_immediate (void)
*** 10996,11002 ****
_("immediate has bits set outside the operand size"));
if ((cmode = neon_cmode_for_move_imm (immlo, immhi, &immbits, &op,
! et.size)) == FAIL)
{
/* Invert relevant bits only. */
neon_invert_size (&immlo, &immhi, et.size);
--- 11042,11048 ----
_("immediate has bits set outside the operand size"));
if ((cmode = neon_cmode_for_move_imm (immlo, immhi, &immbits, &op,
! et.size, et.type)) == FAIL)
{
/* Invert relevant bits only. */
neon_invert_size (&immlo, &immhi, et.size);
*************** neon_move_immediate (void)
*** 11005,11011 ****
neon_cmode_for_move_imm. */
op = !op;
if ((cmode = neon_cmode_for_move_imm (immlo, immhi, &immbits, &op,
! et.size)) == FAIL)
{
first_error (_("immediate out of range"));
return;
--- 11051,11057 ----
neon_cmode_for_move_imm. */
op = !op;
if ((cmode = neon_cmode_for_move_imm (immlo, immhi, &immbits, &op,
! et.size, et.type)) == FAIL)
{
first_error (_("immediate out of range"));
return;
Index: gas/testsuite/gas/arm/neon-const.d
===================================================================
RCS file: gas/testsuite/gas/arm/neon-const.d
diff -N gas/testsuite/gas/arm/neon-const.d
*** /dev/null 1 Jan 1970 00:00:00 -0000
--- gas/testsuite/gas/arm/neon-const.d 23 Apr 2006 20:07:21 -0000
***************
*** 0 ****
--- 1,265 ----
+ # name: Neon floating-point constants
+ # as: -mfpu=neon
+ # objdump: -dr --prefix-addresses --show-raw-insn
+
+ .*: +file format .*arm.*
+
+ Disassembly of section .text:
+ 0[0-9a-f]+ <[^>]+> f2800050 vmov\.i32 q0, #0 ; 0x00000000
+ 0[0-9a-f]+ <[^>]+> f2800f50 vmov\.f32 q0, #2 ; 0x40000000
+ 0[0-9a-f]+ <[^>]+> f2810f50 vmov\.f32 q0, #4 ; 0x40800000
+ 0[0-9a-f]+ <[^>]+> f2820f50 vmov\.f32 q0, #8 ; 0x41000000
+ 0[0-9a-f]+ <[^>]+> f2830f50 vmov\.f32 q0, #16 ; 0x41800000
+ 0[0-9a-f]+ <[^>]+> f2840f50 vmov\.f32 q0, #0\.125 ; 0x3e000000
+ 0[0-9a-f]+ <[^>]+> f2850f50 vmov\.f32 q0, #0\.25 ; 0x3e800000
+ 0[0-9a-f]+ <[^>]+> f2860f50 vmov\.f32 q0, #0\.5 ; 0x3f000000
+ 0[0-9a-f]+ <[^>]+> f2870f50 vmov\.f32 q0, #1 ; 0x3f800000
+ 0[0-9a-f]+ <[^>]+> f2800f51 vmov\.f32 q0, #2\.125 ; 0x40080000
+ 0[0-9a-f]+ <[^>]+> f2810f51 vmov\.f32 q0, #4\.25 ; 0x40880000
+ 0[0-9a-f]+ <[^>]+> f2820f51 vmov\.f32 q0, #8\.5 ; 0x41080000
+ 0[0-9a-f]+ <[^>]+> f2830f51 vmov\.f32 q0, #17 ; 0x41880000
+ 0[0-9a-f]+ <[^>]+> f2840f51 vmov\.f32 q0, #0\.1328125 ; 0x3e080000
+ 0[0-9a-f]+ <[^>]+> f2850f51 vmov\.f32 q0, #0\.265625 ; 0x3e880000
+ 0[0-9a-f]+ <[^>]+> f2860f51 vmov\.f32 q0, #0\.53125 ; 0x3f080000
+ 0[0-9a-f]+ <[^>]+> f2870f51 vmov\.f32 q0, #1\.0625 ; 0x3f880000
+ 0[0-9a-f]+ <[^>]+> f2800f52 vmov\.f32 q0, #2\.25 ; 0x40100000
+ 0[0-9a-f]+ <[^>]+> f2810f52 vmov\.f32 q0, #4\.5 ; 0x40900000
+ 0[0-9a-f]+ <[^>]+> f2820f52 vmov\.f32 q0, #9 ; 0x41100000
+ 0[0-9a-f]+ <[^>]+> f2830f52 vmov\.f32 q0, #18 ; 0x41900000
+ 0[0-9a-f]+ <[^>]+> f2840f52 vmov\.f32 q0, #0\.140625 ; 0x3e100000
+ 0[0-9a-f]+ <[^>]+> f2850f52 vmov\.f32 q0, #0\.28125 ; 0x3e900000
+ 0[0-9a-f]+ <[^>]+> f2860f52 vmov\.f32 q0, #0\.5625 ; 0x3f100000
+ 0[0-9a-f]+ <[^>]+> f2870f52 vmov\.f32 q0, #1\.125 ; 0x3f900000
+ 0[0-9a-f]+ <[^>]+> f2800f53 vmov\.f32 q0, #2\.375 ; 0x40180000
+ 0[0-9a-f]+ <[^>]+> f2810f53 vmov\.f32 q0, #4\.75 ; 0x40980000
+ 0[0-9a-f]+ <[^>]+> f2820f53 vmov\.f32 q0, #9\.5 ; 0x41180000
+ 0[0-9a-f]+ <[^>]+> f2830f53 vmov\.f32 q0, #19 ; 0x41980000
+ 0[0-9a-f]+ <[^>]+> f2840f53 vmov\.f32 q0, #0\.1484375 ; 0x3e180000
+ 0[0-9a-f]+ <[^>]+> f2850f53 vmov\.f32 q0, #0\.296875 ; 0x3e980000
+ 0[0-9a-f]+ <[^>]+> f2860f53 vmov\.f32 q0, #0\.59375 ; 0x3f180000
+ 0[0-9a-f]+ <[^>]+> f2870f53 vmov\.f32 q0, #1\.1875 ; 0x3f980000
+ 0[0-9a-f]+ <[^>]+> f2800f54 vmov\.f32 q0, #2\.5 ; 0x40200000
+ 0[0-9a-f]+ <[^>]+> f2810f54 vmov\.f32 q0, #5 ; 0x40a00000
+ 0[0-9a-f]+ <[^>]+> f2820f54 vmov\.f32 q0, #10 ; 0x41200000
+ 0[0-9a-f]+ <[^>]+> f2830f54 vmov\.f32 q0, #20 ; 0x41a00000
+ 0[0-9a-f]+ <[^>]+> f2840f54 vmov\.f32 q0, #0\.15625 ; 0x3e200000
+ 0[0-9a-f]+ <[^>]+> f2850f54 vmov\.f32 q0, #0\.3125 ; 0x3ea00000
+ 0[0-9a-f]+ <[^>]+> f2860f54 vmov\.f32 q0, #0\.625 ; 0x3f200000
+ 0[0-9a-f]+ <[^>]+> f2870f54 vmov\.f32 q0, #1\.25 ; 0x3fa00000
+ 0[0-9a-f]+ <[^>]+> f2800f55 vmov\.f32 q0, #2\.625 ; 0x40280000
+ 0[0-9a-f]+ <[^>]+> f2810f55 vmov\.f32 q0, #5\.25 ; 0x40a80000
+ 0[0-9a-f]+ <[^>]+> f2820f55 vmov\.f32 q0, #10\.5 ; 0x41280000
+ 0[0-9a-f]+ <[^>]+> f2830f55 vmov\.f32 q0, #21 ; 0x41a80000
+ 0[0-9a-f]+ <[^>]+> f2840f55 vmov\.f32 q0, #0\.1640625 ; 0x3e280000
+ 0[0-9a-f]+ <[^>]+> f2850f55 vmov\.f32 q0, #0\.328125 ; 0x3ea80000
+ 0[0-9a-f]+ <[^>]+> f2860f55 vmov\.f32 q0, #0\.65625 ; 0x3f280000
+ 0[0-9a-f]+ <[^>]+> f2870f55 vmov\.f32 q0, #1\.3125 ; 0x3fa80000
+ 0[0-9a-f]+ <[^>]+> f2800f56 vmov\.f32 q0, #2\.75 ; 0x40300000
+ 0[0-9a-f]+ <[^>]+> f2810f56 vmov\.f32 q0, #5\.5 ; 0x40b00000
+ 0[0-9a-f]+ <[^>]+> f2820f56 vmov\.f32 q0, #11 ; 0x41300000
+ 0[0-9a-f]+ <[^>]+> f2830f56 vmov\.f32 q0, #22 ; 0x41b00000
+ 0[0-9a-f]+ <[^>]+> f2840f56 vmov\.f32 q0, #0\.171875 ; 0x3e300000
+ 0[0-9a-f]+ <[^>]+> f2850f56 vmov\.f32 q0, #0\.34375 ; 0x3eb00000
+ 0[0-9a-f]+ <[^>]+> f2860f56 vmov\.f32 q0, #0\.6875 ; 0x3f300000
+ 0[0-9a-f]+ <[^>]+> f2870f56 vmov\.f32 q0, #1\.375 ; 0x3fb00000
+ 0[0-9a-f]+ <[^>]+> f2800f57 vmov\.f32 q0, #2\.875 ; 0x40380000
+ 0[0-9a-f]+ <[^>]+> f2810f57 vmov\.f32 q0, #5\.75 ; 0x40b80000
+ 0[0-9a-f]+ <[^>]+> f2820f57 vmov\.f32 q0, #11\.5 ; 0x41380000
+ 0[0-9a-f]+ <[^>]+> f2830f57 vmov\.f32 q0, #23 ; 0x41b80000
+ 0[0-9a-f]+ <[^>]+> f2840f57 vmov\.f32 q0, #0\.1796875 ; 0x3e380000
+ 0[0-9a-f]+ <[^>]+> f2850f57 vmov\.f32 q0, #0\.359375 ; 0x3eb80000
+ 0[0-9a-f]+ <[^>]+> f2860f57 vmov\.f32 q0, #0\.71875 ; 0x3f380000
+ 0[0-9a-f]+ <[^>]+> f2870f57 vmov\.f32 q0, #1\.4375 ; 0x3fb80000
+ 0[0-9a-f]+ <[^>]+> f2800f58 vmov\.f32 q0, #3 ; 0x40400000
+ 0[0-9a-f]+ <[^>]+> f2810f58 vmov\.f32 q0, #6 ; 0x40c00000
+ 0[0-9a-f]+ <[^>]+> f2820f58 vmov\.f32 q0, #12 ; 0x41400000
+ 0[0-9a-f]+ <[^>]+> f2830f58 vmov\.f32 q0, #24 ; 0x41c00000
+ 0[0-9a-f]+ <[^>]+> f2840f58 vmov\.f32 q0, #0\.1875 ; 0x3e400000
+ 0[0-9a-f]+ <[^>]+> f2850f58 vmov\.f32 q0, #0\.375 ; 0x3ec00000
+ 0[0-9a-f]+ <[^>]+> f2860f58 vmov\.f32 q0, #0\.75 ; 0x3f400000
+ 0[0-9a-f]+ <[^>]+> f2870f58 vmov\.f32 q0, #1\.5 ; 0x3fc00000
+ 0[0-9a-f]+ <[^>]+> f2800f59 vmov\.f32 q0, #3\.125 ; 0x40480000
+ 0[0-9a-f]+ <[^>]+> f2810f59 vmov\.f32 q0, #6\.25 ; 0x40c80000
+ 0[0-9a-f]+ <[^>]+> f2820f59 vmov\.f32 q0, #12\.5 ; 0x41480000
+ 0[0-9a-f]+ <[^>]+> f2830f59 vmov\.f32 q0, #25 ; 0x41c80000
+ 0[0-9a-f]+ <[^>]+> f2840f59 vmov\.f32 q0, #0\.1953125 ; 0x3e480000
+ 0[0-9a-f]+ <[^>]+> f2850f59 vmov\.f32 q0, #0\.390625 ; 0x3ec80000
+ 0[0-9a-f]+ <[^>]+> f2860f59 vmov\.f32 q0, #0\.78125 ; 0x3f480000
+ 0[0-9a-f]+ <[^>]+> f2870f59 vmov\.f32 q0, #1\.5625 ; 0x3fc80000
+ 0[0-9a-f]+ <[^>]+> f2800f5a vmov\.f32 q0, #3\.25 ; 0x40500000
+ 0[0-9a-f]+ <[^>]+> f2810f5a vmov\.f32 q0, #6\.5 ; 0x40d00000
+ 0[0-9a-f]+ <[^>]+> f2820f5a vmov\.f32 q0, #13 ; 0x41500000
+ 0[0-9a-f]+ <[^>]+> f2830f5a vmov\.f32 q0, #26 ; 0x41d00000
+ 0[0-9a-f]+ <[^>]+> f2840f5a vmov\.f32 q0, #0\.203125 ; 0x3e500000
+ 0[0-9a-f]+ <[^>]+> f2850f5a vmov\.f32 q0, #0\.40625 ; 0x3ed00000
+ 0[0-9a-f]+ <[^>]+> f2860f5a vmov\.f32 q0, #0\.8125 ; 0x3f500000
+ 0[0-9a-f]+ <[^>]+> f2870f5a vmov\.f32 q0, #1\.625 ; 0x3fd00000
+ 0[0-9a-f]+ <[^>]+> f2800f5b vmov\.f32 q0, #3\.375 ; 0x40580000
+ 0[0-9a-f]+ <[^>]+> f2810f5b vmov\.f32 q0, #6\.75 ; 0x40d80000
+ 0[0-9a-f]+ <[^>]+> f2820f5b vmov\.f32 q0, #13\.5 ; 0x41580000
+ 0[0-9a-f]+ <[^>]+> f2830f5b vmov\.f32 q0, #27 ; 0x41d80000
+ 0[0-9a-f]+ <[^>]+> f2840f5b vmov\.f32 q0, #0\.2109375 ; 0x3e580000
+ 0[0-9a-f]+ <[^>]+> f2850f5b vmov\.f32 q0, #0\.421875 ; 0x3ed80000
+ 0[0-9a-f]+ <[^>]+> f2860f5b vmov\.f32 q0, #0\.84375 ; 0x3f580000
+ 0[0-9a-f]+ <[^>]+> f2870f5b vmov\.f32 q0, #1\.6875 ; 0x3fd80000
+ 0[0-9a-f]+ <[^>]+> f2800f5c vmov\.f32 q0, #3\.5 ; 0x40600000
+ 0[0-9a-f]+ <[^>]+> f2810f5c vmov\.f32 q0, #7 ; 0x40e00000
+ 0[0-9a-f]+ <[^>]+> f2820f5c vmov\.f32 q0, #14 ; 0x41600000
+ 0[0-9a-f]+ <[^>]+> f2830f5c vmov\.f32 q0, #28 ; 0x41e00000
+ 0[0-9a-f]+ <[^>]+> f2840f5c vmov\.f32 q0, #0\.21875 ; 0x3e600000
+ 0[0-9a-f]+ <[^>]+> f2850f5c vmov\.f32 q0, #0\.4375 ; 0x3ee00000
+ 0[0-9a-f]+ <[^>]+> f2860f5c vmov\.f32 q0, #0\.875 ; 0x3f600000
+ 0[0-9a-f]+ <[^>]+> f2870f5c vmov\.f32 q0, #1\.75 ; 0x3fe00000
+ 0[0-9a-f]+ <[^>]+> f2800f5d vmov\.f32 q0, #3\.625 ; 0x40680000
+ 0[0-9a-f]+ <[^>]+> f2810f5d vmov\.f32 q0, #7\.25 ; 0x40e80000
+ 0[0-9a-f]+ <[^>]+> f2820f5d vmov\.f32 q0, #14\.5 ; 0x41680000
+ 0[0-9a-f]+ <[^>]+> f2830f5d vmov\.f32 q0, #29 ; 0x41e80000
+ 0[0-9a-f]+ <[^>]+> f2840f5d vmov\.f32 q0, #0\.2265625 ; 0x3e680000
+ 0[0-9a-f]+ <[^>]+> f2850f5d vmov\.f32 q0, #0\.453125 ; 0x3ee80000
+ 0[0-9a-f]+ <[^>]+> f2860f5d vmov\.f32 q0, #0\.90625 ; 0x3f680000
+ 0[0-9a-f]+ <[^>]+> f2870f5d vmov\.f32 q0, #1\.8125 ; 0x3fe80000
+ 0[0-9a-f]+ <[^>]+> f2800f5e vmov\.f32 q0, #3\.75 ; 0x40700000
+ 0[0-9a-f]+ <[^>]+> f2810f5e vmov\.f32 q0, #7\.5 ; 0x40f00000
+ 0[0-9a-f]+ <[^>]+> f2820f5e vmov\.f32 q0, #15 ; 0x41700000
+ 0[0-9a-f]+ <[^>]+> f2830f5e vmov\.f32 q0, #30 ; 0x41f00000
+ 0[0-9a-f]+ <[^>]+> f2840f5e vmov\.f32 q0, #0\.234375 ; 0x3e700000
+ 0[0-9a-f]+ <[^>]+> f2850f5e vmov\.f32 q0, #0\.46875 ; 0x3ef00000
+ 0[0-9a-f]+ <[^>]+> f2860f5e vmov\.f32 q0, #0\.9375 ; 0x3f700000
+ 0[0-9a-f]+ <[^>]+> f2870f5e vmov\.f32 q0, #1\.875 ; 0x3ff00000
+ 0[0-9a-f]+ <[^>]+> f2800f5f vmov\.f32 q0, #3\.875 ; 0x40780000
+ 0[0-9a-f]+ <[^>]+> f2810f5f vmov\.f32 q0, #7\.75 ; 0x40f80000
+ 0[0-9a-f]+ <[^>]+> f2820f5f vmov\.f32 q0, #15\.5 ; 0x41780000
+ 0[0-9a-f]+ <[^>]+> f2830f5f vmov\.f32 q0, #31 ; 0x41f80000
+ 0[0-9a-f]+ <[^>]+> f2840f5f vmov\.f32 q0, #0\.2421875 ; 0x3e780000
+ 0[0-9a-f]+ <[^>]+> f2850f5f vmov\.f32 q0, #0\.484375 ; 0x3ef80000
+ 0[0-9a-f]+ <[^>]+> f2860f5f vmov\.f32 q0, #0\.96875 ; 0x3f780000
+ 0[0-9a-f]+ <[^>]+> f2870f5f vmov\.f32 q0, #1\.9375 ; 0x3ff80000
+ 0[0-9a-f]+ <[^>]+> f3800650 vmov\.i32 q0, #-2147483648 ; 0x80000000
+ 0[0-9a-f]+ <[^>]+> f3800f50 vmov\.f32 q0, #-2 ; 0xc0000000
+ 0[0-9a-f]+ <[^>]+> f3810f50 vmov\.f32 q0, #-4 ; 0xc0800000
+ 0[0-9a-f]+ <[^>]+> f3820f50 vmov\.f32 q0, #-8 ; 0xc1000000
+ 0[0-9a-f]+ <[^>]+> f3830f50 vmov\.f32 q0, #-16 ; 0xc1800000
+ 0[0-9a-f]+ <[^>]+> f3840f50 vmov\.f32 q0, #-0\.125 ; 0xbe000000
+ 0[0-9a-f]+ <[^>]+> f3850f50 vmov\.f32 q0, #-0\.25 ; 0xbe800000
+ 0[0-9a-f]+ <[^>]+> f3860f50 vmov\.f32 q0, #-0\.5 ; 0xbf000000
+ 0[0-9a-f]+ <[^>]+> f3870f50 vmov\.f32 q0, #-1 ; 0xbf800000
+ 0[0-9a-f]+ <[^>]+> f3800f51 vmov\.f32 q0, #-2\.125 ; 0xc0080000
+ 0[0-9a-f]+ <[^>]+> f3810f51 vmov\.f32 q0, #-4\.25 ; 0xc0880000
+ 0[0-9a-f]+ <[^>]+> f3820f51 vmov\.f32 q0, #-8\.5 ; 0xc1080000
+ 0[0-9a-f]+ <[^>]+> f3830f51 vmov\.f32 q0, #-17 ; 0xc1880000
+ 0[0-9a-f]+ <[^>]+> f3840f51 vmov\.f32 q0, #-0\.1328125 ; 0xbe080000
+ 0[0-9a-f]+ <[^>]+> f3850f51 vmov\.f32 q0, #-0\.265625 ; 0xbe880000
+ 0[0-9a-f]+ <[^>]+> f3860f51 vmov\.f32 q0, #-0\.53125 ; 0xbf080000
+ 0[0-9a-f]+ <[^>]+> f3870f51 vmov\.f32 q0, #-1\.0625 ; 0xbf880000
+ 0[0-9a-f]+ <[^>]+> f3800f52 vmov\.f32 q0, #-2\.25 ; 0xc0100000
+ 0[0-9a-f]+ <[^>]+> f3810f52 vmov\.f32 q0, #-4\.5 ; 0xc0900000
+ 0[0-9a-f]+ <[^>]+> f3820f52 vmov\.f32 q0, #-9 ; 0xc1100000
+ 0[0-9a-f]+ <[^>]+> f3830f52 vmov\.f32 q0, #-18 ; 0xc1900000
+ 0[0-9a-f]+ <[^>]+> f3840f52 vmov\.f32 q0, #-0\.140625 ; 0xbe100000
+ 0[0-9a-f]+ <[^>]+> f3850f52 vmov\.f32 q0, #-0\.28125 ; 0xbe900000
+ 0[0-9a-f]+ <[^>]+> f3860f52 vmov\.f32 q0, #-0\.5625 ; 0xbf100000
+ 0[0-9a-f]+ <[^>]+> f3870f52 vmov\.f32 q0, #-1\.125 ; 0xbf900000
+ 0[0-9a-f]+ <[^>]+> f3800f53 vmov\.f32 q0, #-2\.375 ; 0xc0180000
+ 0[0-9a-f]+ <[^>]+> f3810f53 vmov\.f32 q0, #-4\.75 ; 0xc0980000
+ 0[0-9a-f]+ <[^>]+> f3820f53 vmov\.f32 q0, #-9\.5 ; 0xc1180000
+ 0[0-9a-f]+ <[^>]+> f3830f53 vmov\.f32 q0, #-19 ; 0xc1980000
+ 0[0-9a-f]+ <[^>]+> f3840f53 vmov\.f32 q0, #-0\.1484375 ; 0xbe180000
+ 0[0-9a-f]+ <[^>]+> f3850f53 vmov\.f32 q0, #-0\.296875 ; 0xbe980000
+ 0[0-9a-f]+ <[^>]+> f3860f53 vmov\.f32 q0, #-0\.59375 ; 0xbf180000
+ 0[0-9a-f]+ <[^>]+> f3870f53 vmov\.f32 q0, #-1\.1875 ; 0xbf980000
+ 0[0-9a-f]+ <[^>]+> f3800f54 vmov\.f32 q0, #-2\.5 ; 0xc0200000
+ 0[0-9a-f]+ <[^>]+> f3810f54 vmov\.f32 q0, #-5 ; 0xc0a00000
+ 0[0-9a-f]+ <[^>]+> f3820f54 vmov\.f32 q0, #-10 ; 0xc1200000
+ 0[0-9a-f]+ <[^>]+> f3830f54 vmov\.f32 q0, #-20 ; 0xc1a00000
+ 0[0-9a-f]+ <[^>]+> f3840f54 vmov\.f32 q0, #-0\.15625 ; 0xbe200000
+ 0[0-9a-f]+ <[^>]+> f3850f54 vmov\.f32 q0, #-0\.3125 ; 0xbea00000
+ 0[0-9a-f]+ <[^>]+> f3860f54 vmov\.f32 q0, #-0\.625 ; 0xbf200000
+ 0[0-9a-f]+ <[^>]+> f3870f54 vmov\.f32 q0, #-1\.25 ; 0xbfa00000
+ 0[0-9a-f]+ <[^>]+> f3800f55 vmov\.f32 q0, #-2\.625 ; 0xc0280000
+ 0[0-9a-f]+ <[^>]+> f3810f55 vmov\.f32 q0, #-5\.25 ; 0xc0a80000
+ 0[0-9a-f]+ <[^>]+> f3820f55 vmov\.f32 q0, #-10\.5 ; 0xc1280000
+ 0[0-9a-f]+ <[^>]+> f3830f55 vmov\.f32 q0, #-21 ; 0xc1a80000
+ 0[0-9a-f]+ <[^>]+> f3840f55 vmov\.f32 q0, #-0\.1640625 ; 0xbe280000
+ 0[0-9a-f]+ <[^>]+> f3850f55 vmov\.f32 q0, #-0\.328125 ; 0xbea80000
+ 0[0-9a-f]+ <[^>]+> f3860f55 vmov\.f32 q0, #-0\.65625 ; 0xbf280000
+ 0[0-9a-f]+ <[^>]+> f3870f55 vmov\.f32 q0, #-1\.3125 ; 0xbfa80000
+ 0[0-9a-f]+ <[^>]+> f3800f56 vmov\.f32 q0, #-2\.75 ; 0xc0300000
+ 0[0-9a-f]+ <[^>]+> f3810f56 vmov\.f32 q0, #-5\.5 ; 0xc0b00000
+ 0[0-9a-f]+ <[^>]+> f3820f56 vmov\.f32 q0, #-11 ; 0xc1300000
+ 0[0-9a-f]+ <[^>]+> f3830f56 vmov\.f32 q0, #-22 ; 0xc1b00000
+ 0[0-9a-f]+ <[^>]+> f3840f56 vmov\.f32 q0, #-0\.171875 ; 0xbe300000
+ 0[0-9a-f]+ <[^>]+> f3850f56 vmov\.f32 q0, #-0\.34375 ; 0xbeb00000
+ 0[0-9a-f]+ <[^>]+> f3860f56 vmov\.f32 q0, #-0\.6875 ; 0xbf300000
+ 0[0-9a-f]+ <[^>]+> f3870f56 vmov\.f32 q0, #-1\.375 ; 0xbfb00000
+ 0[0-9a-f]+ <[^>]+> f3800f57 vmov\.f32 q0, #-2\.875 ; 0xc0380000
+ 0[0-9a-f]+ <[^>]+> f3810f57 vmov\.f32 q0, #-5\.75 ; 0xc0b80000
+ 0[0-9a-f]+ <[^>]+> f3820f57 vmov\.f32 q0, #-11\.5 ; 0xc1380000
+ 0[0-9a-f]+ <[^>]+> f3830f57 vmov\.f32 q0, #-23 ; 0xc1b80000
+ 0[0-9a-f]+ <[^>]+> f3840f57 vmov\.f32 q0, #-0\.1796875 ; 0xbe380000
+ 0[0-9a-f]+ <[^>]+> f3850f57 vmov\.f32 q0, #-0\.359375 ; 0xbeb80000
+ 0[0-9a-f]+ <[^>]+> f3860f57 vmov\.f32 q0, #-0\.71875 ; 0xbf380000
+ 0[0-9a-f]+ <[^>]+> f3870f57 vmov\.f32 q0, #-1\.4375 ; 0xbfb80000
+ 0[0-9a-f]+ <[^>]+> f3800f58 vmov\.f32 q0, #-3 ; 0xc0400000
+ 0[0-9a-f]+ <[^>]+> f3810f58 vmov\.f32 q0, #-6 ; 0xc0c00000
+ 0[0-9a-f]+ <[^>]+> f3820f58 vmov\.f32 q0, #-12 ; 0xc1400000
+ 0[0-9a-f]+ <[^>]+> f3830f58 vmov\.f32 q0, #-24 ; 0xc1c00000
+ 0[0-9a-f]+ <[^>]+> f3840f58 vmov\.f32 q0, #-0\.1875 ; 0xbe400000
+ 0[0-9a-f]+ <[^>]+> f3850f58 vmov\.f32 q0, #-0\.375 ; 0xbec00000
+ 0[0-9a-f]+ <[^>]+> f3860f58 vmov\.f32 q0, #-0\.75 ; 0xbf400000
+ 0[0-9a-f]+ <[^>]+> f3870f58 vmov\.f32 q0, #-1\.5 ; 0xbfc00000
+ 0[0-9a-f]+ <[^>]+> f3800f59 vmov\.f32 q0, #-3\.125 ; 0xc0480000
+ 0[0-9a-f]+ <[^>]+> f3810f59 vmov\.f32 q0, #-6\.25 ; 0xc0c80000
+ 0[0-9a-f]+ <[^>]+> f3820f59 vmov\.f32 q0, #-12\.5 ; 0xc1480000
+ 0[0-9a-f]+ <[^>]+> f3830f59 vmov\.f32 q0, #-25 ; 0xc1c80000
+ 0[0-9a-f]+ <[^>]+> f3840f59 vmov\.f32 q0, #-0\.1953125 ; 0xbe480000
+ 0[0-9a-f]+ <[^>]+> f3850f59 vmov\.f32 q0, #-0\.390625 ; 0xbec80000
+ 0[0-9a-f]+ <[^>]+> f3860f59 vmov\.f32 q0, #-0\.78125 ; 0xbf480000
+ 0[0-9a-f]+ <[^>]+> f3870f59 vmov\.f32 q0, #-1\.5625 ; 0xbfc80000
+ 0[0-9a-f]+ <[^>]+> f3800f5a vmov\.f32 q0, #-3\.25 ; 0xc0500000
+ 0[0-9a-f]+ <[^>]+> f3810f5a vmov\.f32 q0, #-6\.5 ; 0xc0d00000
+ 0[0-9a-f]+ <[^>]+> f3820f5a vmov\.f32 q0, #-13 ; 0xc1500000
+ 0[0-9a-f]+ <[^>]+> f3830f5a vmov\.f32 q0, #-26 ; 0xc1d00000
+ 0[0-9a-f]+ <[^>]+> f3840f5a vmov\.f32 q0, #-0\.203125 ; 0xbe500000
+ 0[0-9a-f]+ <[^>]+> f3850f5a vmov\.f32 q0, #-0\.40625 ; 0xbed00000
+ 0[0-9a-f]+ <[^>]+> f3860f5a vmov\.f32 q0, #-0\.8125 ; 0xbf500000
+ 0[0-9a-f]+ <[^>]+> f3870f5a vmov\.f32 q0, #-1\.625 ; 0xbfd00000
+ 0[0-9a-f]+ <[^>]+> f3800f5b vmov\.f32 q0, #-3\.375 ; 0xc0580000
+ 0[0-9a-f]+ <[^>]+> f3810f5b vmov\.f32 q0, #-6\.75 ; 0xc0d80000
+ 0[0-9a-f]+ <[^>]+> f3820f5b vmov\.f32 q0, #-13\.5 ; 0xc1580000
+ 0[0-9a-f]+ <[^>]+> f3830f5b vmov\.f32 q0, #-27 ; 0xc1d80000
+ 0[0-9a-f]+ <[^>]+> f3840f5b vmov\.f32 q0, #-0\.2109375 ; 0xbe580000
+ 0[0-9a-f]+ <[^>]+> f3850f5b vmov\.f32 q0, #-0\.421875 ; 0xbed80000
+ 0[0-9a-f]+ <[^>]+> f3860f5b vmov\.f32 q0, #-0\.84375 ; 0xbf580000
+ 0[0-9a-f]+ <[^>]+> f3870f5b vmov\.f32 q0, #-1\.6875 ; 0xbfd80000
+ 0[0-9a-f]+ <[^>]+> f3800f5c vmov\.f32 q0, #-3\.5 ; 0xc0600000
+ 0[0-9a-f]+ <[^>]+> f3810f5c vmov\.f32 q0, #-7 ; 0xc0e00000
+ 0[0-9a-f]+ <[^>]+> f3820f5c vmov\.f32 q0, #-14 ; 0xc1600000
+ 0[0-9a-f]+ <[^>]+> f3830f5c vmov\.f32 q0, #-28 ; 0xc1e00000
+ 0[0-9a-f]+ <[^>]+> f3840f5c vmov\.f32 q0, #-0\.21875 ; 0xbe600000
+ 0[0-9a-f]+ <[^>]+> f3850f5c vmov\.f32 q0, #-0\.4375 ; 0xbee00000
+ 0[0-9a-f]+ <[^>]+> f3860f5c vmov\.f32 q0, #-0\.875 ; 0xbf600000
+ 0[0-9a-f]+ <[^>]+> f3870f5c vmov\.f32 q0, #-1\.75 ; 0xbfe00000
+ 0[0-9a-f]+ <[^>]+> f3800f5d vmov\.f32 q0, #-3\.625 ; 0xc0680000
+ 0[0-9a-f]+ <[^>]+> f3810f5d vmov\.f32 q0, #-7\.25 ; 0xc0e80000
+ 0[0-9a-f]+ <[^>]+> f3820f5d vmov\.f32 q0, #-14\.5 ; 0xc1680000
+ 0[0-9a-f]+ <[^>]+> f3830f5d vmov\.f32 q0, #-29 ; 0xc1e80000
+ 0[0-9a-f]+ <[^>]+> f3840f5d vmov\.f32 q0, #-0\.2265625 ; 0xbe680000
+ 0[0-9a-f]+ <[^>]+> f3850f5d vmov\.f32 q0, #-0\.453125 ; 0xbee80000
+ 0[0-9a-f]+ <[^>]+> f3860f5d vmov\.f32 q0, #-0\.90625 ; 0xbf680000
+ 0[0-9a-f]+ <[^>]+> f3870f5d vmov\.f32 q0, #-1\.8125 ; 0xbfe80000
+ 0[0-9a-f]+ <[^>]+> f3800f5e vmov\.f32 q0, #-3\.75 ; 0xc0700000
+ 0[0-9a-f]+ <[^>]+> f3810f5e vmov\.f32 q0, #-7\.5 ; 0xc0f00000
+ 0[0-9a-f]+ <[^>]+> f3820f5e vmov\.f32 q0, #-15 ; 0xc1700000
+ 0[0-9a-f]+ <[^>]+> f3830f5e vmov\.f32 q0, #-30 ; 0xc1f00000
+ 0[0-9a-f]+ <[^>]+> f3840f5e vmov\.f32 q0, #-0\.234375 ; 0xbe700000
+ 0[0-9a-f]+ <[^>]+> f3850f5e vmov\.f32 q0, #-0\.46875 ; 0xbef00000
+ 0[0-9a-f]+ <[^>]+> f3860f5e vmov\.f32 q0, #-0\.9375 ; 0xbf700000
+ 0[0-9a-f]+ <[^>]+> f3870f5e vmov\.f32 q0, #-1\.875 ; 0xbff00000
+ 0[0-9a-f]+ <[^>]+> f3800f5f vmov\.f32 q0, #-3\.875 ; 0xc0780000
+ 0[0-9a-f]+ <[^>]+> f3810f5f vmov\.f32 q0, #-7\.75 ; 0xc0f80000
+ 0[0-9a-f]+ <[^>]+> f3820f5f vmov\.f32 q0, #-15\.5 ; 0xc1780000
+ 0[0-9a-f]+ <[^>]+> f3830f5f vmov\.f32 q0, #-31 ; 0xc1f80000
+ 0[0-9a-f]+ <[^>]+> f3840f5f vmov\.f32 q0, #-0\.2421875 ; 0xbe780000
+ 0[0-9a-f]+ <[^>]+> f3850f5f vmov\.f32 q0, #-0\.484375 ; 0xbef80000
+ 0[0-9a-f]+ <[^>]+> f3860f5f vmov\.f32 q0, #-0\.96875 ; 0xbf780000
+ 0[0-9a-f]+ <[^>]+> f3870f5f vmov\.f32 q0, #-1\.9375 ; 0xbff80000
Index: gas/testsuite/gas/arm/neon-const.s
===================================================================
RCS file: gas/testsuite/gas/arm/neon-const.s
diff -N gas/testsuite/gas/arm/neon-const.s
*** /dev/null 1 Jan 1970 00:00:00 -0000
--- gas/testsuite/gas/arm/neon-const.s 23 Apr 2006 20:07:21 -0000
***************
*** 0 ****
--- 1,297 ----
+ @ test floating-point constant parsing.
+
+ .arm
+ .text
+ .syntax unified
+
+ vmov.f32 q0, 0
+
+ vmov.f32 q0, 2.0
+ vmov.f32 q0, 4.0
+ vmov.f32 q0, 8.0
+ vmov.f32 q0, 16.0
+ vmov.f32 q0, 0.125
+ vmov.f32 q0, 0.25
+ vmov.f32 q0, 0.5
+ vmov.f32 q0, 1.0
+
+ vmov.f32 q0, 2.125
+ vmov.f32 q0, 4.25
+ vmov.f32 q0, 8.5
+ vmov.f32 q0, 17.0
+ vmov.f32 q0, 0.1328125
+ vmov.f32 q0, 0.265625
+ vmov.f32 q0, 0.53125
+ vmov.f32 q0, 1.0625
+
+ vmov.f32 q0, 2.25
+ vmov.f32 q0, 4.5
+ vmov.f32 q0, 9.0
+ vmov.f32 q0, 18.0
+ vmov.f32 q0, 0.140625
+ vmov.f32 q0, 0.28125
+ vmov.f32 q0, 0.5625
+ vmov.f32 q0, 1.125
+
+ vmov.f32 q0, 2.375
+ vmov.f32 q0, 4.75
+ vmov.f32 q0, 9.5
+ vmov.f32 q0, 19.0
+ vmov.f32 q0, 0.1484375
+ vmov.f32 q0, 0.296875
+ vmov.f32 q0, 0.59375
+ vmov.f32 q0, 1.1875
+
+ vmov.f32 q0, 2.5
+ vmov.f32 q0, 5.0
+ vmov.f32 q0, 10.0
+ vmov.f32 q0, 20.0
+ vmov.f32 q0, 0.15625
+ vmov.f32 q0, 0.3125
+ vmov.f32 q0, 0.625
+ vmov.f32 q0, 1.25
+
+ vmov.f32 q0, 2.625
+ vmov.f32 q0, 5.25
+ vmov.f32 q0, 10.5
+ vmov.f32 q0, 21.0
+ vmov.f32 q0, 0.1640625
+ vmov.f32 q0, 0.328125
+ vmov.f32 q0, 0.65625
+ vmov.f32 q0, 1.3125
+
+ vmov.f32 q0, 2.75
+ vmov.f32 q0, 5.5
+ vmov.f32 q0, 11.0
+ vmov.f32 q0, 22.0
+ vmov.f32 q0, 0.171875
+ vmov.f32 q0, 0.34375
+ vmov.f32 q0, 0.6875
+ vmov.f32 q0, 1.375
+
+ vmov.f32 q0, 2.875
+ vmov.f32 q0, 5.75
+ vmov.f32 q0, 11.5
+ vmov.f32 q0, 23.0
+ vmov.f32 q0, 0.1796875
+ vmov.f32 q0, 0.359375
+ vmov.f32 q0, 0.71875
+ vmov.f32 q0, 1.4375
+
+ vmov.f32 q0, 3.0
+ vmov.f32 q0, 6.0
+ vmov.f32 q0, 12.0
+ vmov.f32 q0, 24.0
+ vmov.f32 q0, 0.1875
+ vmov.f32 q0, 0.375
+ vmov.f32 q0, 0.75
+ vmov.f32 q0, 1.5
+
+ vmov.f32 q0, 3.125
+ vmov.f32 q0, 6.25
+ vmov.f32 q0, 12.5
+ vmov.f32 q0, 25.0
+ vmov.f32 q0, 0.1953125
+ vmov.f32 q0, 0.390625
+ vmov.f32 q0, 0.78125
+ vmov.f32 q0, 1.5625
+
+ vmov.f32 q0, 3.25
+ vmov.f32 q0, 6.5
+ vmov.f32 q0, 13.0
+ vmov.f32 q0, 26.0
+ vmov.f32 q0, 0.203125
+ vmov.f32 q0, 0.40625
+ vmov.f32 q0, 0.8125
+ vmov.f32 q0, 1.625
+
+ vmov.f32 q0, 3.375
+ vmov.f32 q0, 6.75
+ vmov.f32 q0, 13.5
+ vmov.f32 q0, 27.0
+ vmov.f32 q0, 0.2109375
+ vmov.f32 q0, 0.421875
+ vmov.f32 q0, 0.84375
+ vmov.f32 q0, 1.6875
+
+ vmov.f32 q0, 3.5
+ vmov.f32 q0, 7.0
+ vmov.f32 q0, 14.0
+ vmov.f32 q0, 28.0
+ vmov.f32 q0, 0.21875
+ vmov.f32 q0, 0.4375
+ vmov.f32 q0, 0.875
+ vmov.f32 q0, 1.75
+
+ vmov.f32 q0, 3.625
+ vmov.f32 q0, 7.25
+ vmov.f32 q0, 14.5
+ vmov.f32 q0, 29.0
+ vmov.f32 q0, 0.2265625
+ vmov.f32 q0, 0.453125
+ vmov.f32 q0, 0.90625
+ vmov.f32 q0, 1.8125
+
+ vmov.f32 q0, 3.75
+ vmov.f32 q0, 7.5
+ vmov.f32 q0, 15.0
+ vmov.f32 q0, 30.0
+ vmov.f32 q0, 0.234375
+ vmov.f32 q0, 0.46875
+ vmov.f32 q0, 0.9375
+ vmov.f32 q0, 1.875
+
+ vmov.f32 q0, 3.875
+ vmov.f32 q0, 7.75
+ vmov.f32 q0, 15.5
+ vmov.f32 q0, 31.0
+ vmov.f32 q0, 0.2421875
+ vmov.f32 q0, 0.484375
+ vmov.f32 q0, 0.96875
+ vmov.f32 q0, 1.9375
+
+ vmov.f32 q0, -0
+
+ vmov.f32 q0, -2.0
+ vmov.f32 q0, -4.0
+ vmov.f32 q0, -8.0
+ vmov.f32 q0, -16.0
+ vmov.f32 q0, -0.125
+ vmov.f32 q0, -0.25
+ vmov.f32 q0, -0.5
+ vmov.f32 q0, -1.0
+
+ vmov.f32 q0, -2.125
+ vmov.f32 q0, -4.25
+ vmov.f32 q0, -8.5
+ vmov.f32 q0, -17.0
+ vmov.f32 q0, -0.1328125
+ vmov.f32 q0, -0.265625
+ vmov.f32 q0, -0.53125
+ vmov.f32 q0, -1.0625
+
+ vmov.f32 q0, -2.25
+ vmov.f32 q0, -4.5
+ vmov.f32 q0, -9.0
+ vmov.f32 q0, -18.0
+ vmov.f32 q0, -0.140625
+ vmov.f32 q0, -0.28125
+ vmov.f32 q0, -0.5625
+ vmov.f32 q0, -1.125
+
+ vmov.f32 q0, -2.375
+ vmov.f32 q0, -4.75
+ vmov.f32 q0, -9.5
+ vmov.f32 q0, -19.0
+ vmov.f32 q0, -0.1484375
+ vmov.f32 q0, -0.296875
+ vmov.f32 q0, -0.59375
+ vmov.f32 q0, -1.1875
+
+ vmov.f32 q0, -2.5
+ vmov.f32 q0, -5.0
+ vmov.f32 q0, -10.0
+ vmov.f32 q0, -20.0
+ vmov.f32 q0, -0.15625
+ vmov.f32 q0, -0.3125
+ vmov.f32 q0, -0.625
+ vmov.f32 q0, -1.25
+
+ vmov.f32 q0, -2.625
+ vmov.f32 q0, -5.25
+ vmov.f32 q0, -10.5
+ vmov.f32 q0, -21.0
+ vmov.f32 q0, -0.1640625
+ vmov.f32 q0, -0.328125
+ vmov.f32 q0, -0.65625
+ vmov.f32 q0, -1.3125
+
+ vmov.f32 q0, -2.75
+ vmov.f32 q0, -5.5
+ vmov.f32 q0, -11.0
+ vmov.f32 q0, -22.0
+ vmov.f32 q0, -0.171875
+ vmov.f32 q0, -0.34375
+ vmov.f32 q0, -0.6875
+ vmov.f32 q0, -1.375
+
+ vmov.f32 q0, -2.875
+ vmov.f32 q0, -5.75
+ vmov.f32 q0, -11.5
+ vmov.f32 q0, -23.0
+ vmov.f32 q0, -0.1796875
+ vmov.f32 q0, -0.359375
+ vmov.f32 q0, -0.71875
+ vmov.f32 q0, -1.4375
+
+ vmov.f32 q0, -3.0
+ vmov.f32 q0, -6.0
+ vmov.f32 q0, -12.0
+ vmov.f32 q0, -24.0
+ vmov.f32 q0, -0.1875
+ vmov.f32 q0, -0.375
+ vmov.f32 q0, -0.75
+ vmov.f32 q0, -1.5
+
+ vmov.f32 q0, -3.125
+ vmov.f32 q0, -6.25
+ vmov.f32 q0, -12.5
+ vmov.f32 q0, -25.0
+ vmov.f32 q0, -0.1953125
+ vmov.f32 q0, -0.390625
+ vmov.f32 q0, -0.78125
+ vmov.f32 q0, -1.5625
+
+ vmov.f32 q0, -3.25
+ vmov.f32 q0, -6.5
+ vmov.f32 q0, -13.0
+ vmov.f32 q0, -26.0
+ vmov.f32 q0, -0.203125
+ vmov.f32 q0, -0.40625
+ vmov.f32 q0, -0.8125
+ vmov.f32 q0, -1.625
+
+ vmov.f32 q0, -3.375
+ vmov.f32 q0, -6.75
+ vmov.f32 q0, -13.5
+ vmov.f32 q0, -27.0
+ vmov.f32 q0, -0.2109375
+ vmov.f32 q0, -0.421875
+ vmov.f32 q0, -0.84375
+ vmov.f32 q0, -1.6875
+
+ vmov.f32 q0, -3.5
+ vmov.f32 q0, -7.0
+ vmov.f32 q0, -14.0
+ vmov.f32 q0, -28.0
+ vmov.f32 q0, -0.21875
+ vmov.f32 q0, -0.4375
+ vmov.f32 q0, -0.875
+ vmov.f32 q0, -1.75
+
+ vmov.f32 q0, -3.625
+ vmov.f32 q0, -7.25
+ vmov.f32 q0, -14.5
+ vmov.f32 q0, -29.0
+ vmov.f32 q0, -0.2265625
+ vmov.f32 q0, -0.453125
+ vmov.f32 q0, -0.90625
+ vmov.f32 q0, -1.8125
+
+ vmov.f32 q0, -3.75
+ vmov.f32 q0, -7.5
+ vmov.f32 q0, -15.0
+ vmov.f32 q0, -30.0
+ vmov.f32 q0, -0.234375
+ vmov.f32 q0, -0.46875
+ vmov.f32 q0, -0.9375
+ vmov.f32 q0, -1.875
+
+ vmov.f32 q0, -3.875
+ vmov.f32 q0, -7.75
+ vmov.f32 q0, -15.5
+ vmov.f32 q0, -31.0
+ vmov.f32 q0, -0.2421875
+ vmov.f32 q0, -0.484375
+ vmov.f32 q0, -0.96875
+ vmov.f32 q0, -1.9375
Index: gas/testsuite/gas/arm/neon-cov.d
===================================================================
RCS file: /cvs/src/src/gas/testsuite/gas/arm/Attic/neon-cov.d,v
retrieving revision 1.1.2.1
diff -c -p -r1.1.2.1 neon-cov.d
*** gas/testsuite/gas/arm/neon-cov.d 3 Apr 2006 00:03:34 -0000 1.1.2.1
--- gas/testsuite/gas/arm/neon-cov.d 23 Apr 2006 20:07:21 -0000
*************** Disassembly of section \.text:
*** 989,996 ****
0[0-9a-f]+ <[^>]+> f2870e17 vmov\.i8 d0, #119 ; 0x77
0[0-9a-f]+ <[^>]+> f3810e71 vmov\.i64 q0, #0xff0000ff000000ff
0[0-9a-f]+ <[^>]+> f3810e31 vmov\.i64 d0, #0xff0000ff000000ff
! 0[0-9a-f]+ <[^>]+> f2850f51 vmov\.f32 q0, #1027866624 ; 0x3d440000
! 0[0-9a-f]+ <[^>]+> f2850f11 vmov\.f32 d0, #1027866624 ; 0x3d440000
0[0-9a-f]+ <[^>]+> f3b005c0 vmvn q0, q0
0[0-9a-f]+ <[^>]+> f3b005c0 vmvn q0, q0
0[0-9a-f]+ <[^>]+> f3b00580 vmvn d0, d0
--- 989,996 ----
0[0-9a-f]+ <[^>]+> f2870e17 vmov\.i8 d0, #119 ; 0x77
0[0-9a-f]+ <[^>]+> f3810e71 vmov\.i64 q0, #0xff0000ff000000ff
0[0-9a-f]+ <[^>]+> f3810e31 vmov\.i64 d0, #0xff0000ff000000ff
! 0[0-9a-f]+ <[^>]+> f2810f51 vmov\.f32 q0, #4\.25 ; 0x40880000
! 0[0-9a-f]+ <[^>]+> f2810f11 vmov\.f32 d0, #4\.25 ; 0x40880000
0[0-9a-f]+ <[^>]+> f3b005c0 vmvn q0, q0
0[0-9a-f]+ <[^>]+> f3b005c0 vmvn q0, q0
0[0-9a-f]+ <[^>]+> f3b00580 vmvn d0, d0
Index: opcodes/arm-dis.c
===================================================================
RCS file: /cvs/src/src/opcodes/arm-dis.c,v
retrieving revision 1.62.2.1
diff -c -p -r1.62.2.1 arm-dis.c
*** opcodes/arm-dis.c 3 Apr 2006 00:03:34 -0000 1.62.2.1
--- opcodes/arm-dis.c 23 Apr 2006 20:07:24 -0000
*************** print_insn_neon (struct disassemble_info
*** 2283,2288 ****
--- 2283,2289 ----
unsigned long value = 0, hival = 0;
unsigned shift;
int size = 0;
+ int isfloat = 0;
bits |= ((given >> 24) & 1) << 7;
bits |= ((given >> 16) & 7) << 4;
*************** print_insn_neon (struct disassemble_info
*** 2339,2349 ****
/* floating point encoding */
int tmp;
! value = (unsigned long)(bits & 0x7f) << (24 - 6);
value |= (unsigned long)(bits & 0x80) << 24;
tmp = bits & 0x40 ? 0x3c : 0x40;
value |= (unsigned long)tmp << 24;
size = 32;
}
else
{
--- 2340,2351 ----
/* floating point encoding */
int tmp;
! value = (unsigned long)(bits & 0x7f) << 19;
value |= (unsigned long)(bits & 0x80) << 24;
tmp = bits & 0x40 ? 0x3c : 0x40;
value |= (unsigned long)tmp << 24;
size = 32;
+ isfloat = 1;
}
else
{
*************** print_insn_neon (struct disassemble_info
*** 2363,2369 ****
break;
case 32:
! func (stream, "#%ld\t; 0x%.8lx", value, value);
break;
case 64:
--- 2365,2404 ----
break;
case 32:
! if (isfloat)
! {
! /* FIXME: Is there a more sane way of printing
! IEEE754 floating-point numbers in binutils?
! Of course, we aren't guaranteed to be on a
! host system which uses them. Luckily we don't
! have any fiddly corner cases to deal with. */
! double sign = (value & 0x80000000) ? -1.0 : 1.0;
! int exponent, mantissa;
! double fvalue;
!
! exponent = ((value >> 23) & 0xff) - 127;
! mantissa = (value & 0x7fffff) | 0x800000;
!
! /* Sanity check. */
! if (exponent < -31 || exponent > 31)
! abort ();
!
! /* It'd be easier to use exp2 here, but that
! means pulling in -lm, which we probably don't
! want to do just for this. */
! if (exponent >= 0)
! fvalue = (double) (1u << exponent);
! else
! fvalue = 1.0 / (double) (1u << -exponent);
!
! fvalue *= sign * (double) mantissa
! / (double) (1 << 23);
!
! func (stream, "#%.7g\t; 0x%.8lx", fvalue,
! value);
! }
! else
! func (stream, "#%ld\t; 0x%.8lx", value, value);
break;
case 64: