aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJulian Brown <julian@codesourcery.com>2006-08-16 10:16:29 +0000
committerJulian Brown <julian@codesourcery.com>2006-08-16 10:16:29 +0000
commit267d2029e75d4aa99eb578f1278cb8eddec12160 (patch)
tree8153479d65bdcd0aa15878e67e01a885a58d6b49
parentcde9e0be8b661444a3a362e4d8bffaf8b742f2e1 (diff)
downloadfsf-binutils-gdb-267d2029e75d4aa99eb578f1278cb8eddec12160.zip
fsf-binutils-gdb-267d2029e75d4aa99eb578f1278cb8eddec12160.tar.gz
fsf-binutils-gdb-267d2029e75d4aa99eb578f1278cb8eddec12160.tar.bz2
* config/tc-arm.c (opcode_lookup): Allow Neon type suffixes to be
recognized in non-unified syntax mode.
-rw-r--r--gas/ChangeLog5
-rw-r--r--gas/config/tc-arm.c16
2 files changed, 16 insertions, 5 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index c4757ad..2a8146b 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,8 @@
+2006-08-16 Julian Brown <julian@codesourcery.com>
+
+ * config/tc-arm.c (opcode_lookup): Allow Neon type suffixes to be
+ recognized in non-unified syntax mode.
+
2006-08-15 Thiemo Seufer <ths@mips.com>
Nigel Stephens <nigel@mips.com>
David Ung <davidu@mips.com>
diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c
index c779522..dc3d7a2 100644
--- a/gas/config/tc-arm.c
+++ b/gas/config/tc-arm.c
@@ -13582,11 +13582,14 @@ opcode_lookup (char **str)
const struct asm_opcode *opcode;
const struct asm_cond *cond;
char save[2];
+ bfd_boolean neon_supported;
+
+ neon_supported = ARM_CPU_HAS_FEATURE (cpu_variant, fpu_neon_ext_v1);
/* Scan up to the end of the mnemonic, which must end in white space,
- '.' (in unified mode only), or end of string. */
+ '.' (in unified mode, or for Neon instructions), or end of string. */
for (base = end = *str; *end != '\0'; end++)
- if (*end == ' ' || (unified_syntax && *end == '.'))
+ if (*end == ' ' || ((unified_syntax || neon_supported) && *end == '.'))
break;
if (end == base)
@@ -13597,9 +13600,11 @@ opcode_lookup (char **str)
{
int offset = 2;
- if (end[1] == 'w')
+ /* The .w and .n suffixes are only valid if the unified syntax is in
+ use. */
+ if (unified_syntax && end[1] == 'w')
inst.size_req = 4;
- else if (end[1] == 'n')
+ else if (unified_syntax && end[1] == 'n')
inst.size_req = 2;
else
offset = 0;
@@ -13610,7 +13615,8 @@ opcode_lookup (char **str)
if (end[offset] == '.')
{
- /* See if we have a Neon type suffix. */
+ /* See if we have a Neon type suffix (possible in either unified or
+ non-unified ARM syntax mode). */
if (parse_neon_type (&inst.vectype, str) == FAIL)
return 0;
}