summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gas/ChangeLog6
-rw-r--r--gas/config/tc-aarch64.c2
-rw-r--r--gas/testsuite/gas/aarch64/illegal.l8
-rw-r--r--gas/testsuite/gas/aarch64/illegal.s18
4 files changed, 32 insertions, 2 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 792ba877c6a..403f122cb3a 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,9 @@
+2016-08-11 Richard Sandiford <richard.sandiford@arm.com>
+
+ * config/tc-aarch64.c (parse_aarch64_imm_float): Reject -0.0.
+ * testsuite/gas/aarch64/illegal.s, testsuite/gas/aarch64/illegal.l:
+ Add tests for -0.0. Add an end-of-file comment.
+
2016-08-05 Nick Clifton <nickc@redhat.com>
PR gas/20429
diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c
index e221ef47377..34fdc53e121 100644
--- a/gas/config/tc-aarch64.c
+++ b/gas/config/tc-aarch64.c
@@ -2240,7 +2240,7 @@ parse_aarch64_imm_float (char **ccp, int *immed, bfd_boolean dp_p)
}
}
- if (aarch64_imm_float_p (fpword) || (fpword & 0x7fffffff) == 0)
+ if (aarch64_imm_float_p (fpword) || fpword == 0)
{
*immed = fpword;
*ccp = str;
diff --git a/gas/testsuite/gas/aarch64/illegal.l b/gas/testsuite/gas/aarch64/illegal.l
index 61190655c4d..a0985cea501 100644
--- a/gas/testsuite/gas/aarch64/illegal.l
+++ b/gas/testsuite/gas/aarch64/illegal.l
@@ -567,4 +567,10 @@
[^:]*:567: Error: .*`mrs x7,S1_1_C16_C6_6'
[^:]*:568: Error: .*`mrs x8,S2_2_C15_C16_7'
[^:]*:569: Error: .*`mrs x9,S3_3_C14_C15_8'
-[^:]*:569: Error: .*
+[^:]*:571: Error: .*`fmov s0,#-0\.0'
+[^:]*:573: Error: .*`fmov s0,#0x80000000'
+[^:]*:575: Error: .*`fmov d0,#-0\.0'
+[^:]*:577: Error: .*`fmov d0,#0x8000000000000000'
+[^:]*:582: Error: .*`fcmgt v0\.4s,v0\.4s,#-0\.0'
+[^:]*:585: Error: .*`fcmgt v0\.2d,v0\.2d,#-0\.0'
+[^:]*:587: Error: .*
diff --git a/gas/testsuite/gas/aarch64/illegal.s b/gas/testsuite/gas/aarch64/illegal.s
index a315a6de859..df31895491b 100644
--- a/gas/testsuite/gas/aarch64/illegal.s
+++ b/gas/testsuite/gas/aarch64/illegal.s
@@ -567,3 +567,21 @@ one_label:
mrs x7, S1_1_C16_C6_6
mrs x8, S2_2_C15_C16_7
mrs x9, S3_3_C14_C15_8
+
+ fmov s0, #-0.0
+ fmov s0, #0x40000000 // OK
+ fmov s0, #0x80000000
+ fmov s0, #0xc0000000 // OK
+ fmov d0, #-0.0
+ fmov d0, #0x4000000000000000 // OK
+ fmov d0, #0x8000000000000000
+ fmov d0, #0xc000000000000000 // OK
+
+ fcmgt v0.4s, v0.4s, #0.0 // OK
+ fcmgt v0.4s, v0.4s, #0 // OK
+ fcmgt v0.4s, v0.4s, #-0.0
+ fcmgt v0.2d, v0.2d, #0.0 // OK
+ fcmgt v0.2d, v0.2d, #0 // OK
+ fcmgt v0.2d, v0.2d, #-0.0
+
+ // End (for errors during literal pool generation)