This is the mail archive of the binutils-cvs@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb/binutils-2_25-branch] [ARM] Backport vcmp/vcmpe should accept #0x0 as an operand


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=175f96969bf3f4cef300dec23360572a8ab2d7ef

commit 175f96969bf3f4cef300dec23360572a8ab2d7ef
Author: Jiong Wang <jiong.wang@arm.com>
Date:   Wed Jan 28 09:55:51 2015 +0000

    [ARM] Backport vcmp/vcmpe should accept #0x0 as an operand
    
      gas/
      2015-01-28  Matthew Wahab  <matthew.wahab@arm.com>
    
        * config/tc-arm.c (parse_ifimm_zero): Accept #0x0 as a synonym for
        #0, restoring previous behaviour.
    
      testsuite/
      2015-01-28  Matthew Wahab  <matthew.wahab@arm.com>
    
        * gas/arm/ual-vcmp.s: Add vcmp, vcmpe with #0x0 operand.
        * gas/ual/vcmp.d: Update expected output.
        * gas/ual/vcmp-zero-bad.l: Likewise

Diff:
---
 gas/ChangeLog                         |  5 +++++
 gas/config/tc-arm.c                   | 10 ++++++++++
 gas/testsuite/ChangeLog               |  6 ++++++
 gas/testsuite/gas/arm/ual-vcmp.d      | 20 ++++++++++++--------
 gas/testsuite/gas/arm/ual-vcmp.s      |  4 ++++
 gas/testsuite/gas/arm/vcmp-zero-bad.l |  2 +-
 6 files changed, 38 insertions(+), 9 deletions(-)

diff --git a/gas/ChangeLog b/gas/ChangeLog
index 627940a..b4f0eea 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,8 @@
+2015-01-28  Matthew Wahab  <matthew.wahab@arm.com>
+
+	* config/tc-arm.c (parse_ifimm_zero): Accept #0x0 as a synonym for #0,
+	restoring previous behaviour.
+
 2014-12-23  Tristan Gingold  <gingold@adacore.com>
 
 	* configure: Regenerate.
diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c
index 5077f87..2db6c2d 100644
--- a/gas/config/tc-arm.c
+++ b/gas/config/tc-arm.c
@@ -4959,6 +4959,16 @@ parse_ifimm_zero (char **in)
     return FALSE;
 
   ++*in;
+
+  /* Accept #0x0 as a synonym for #0.  */
+  if (strncmp (*in, "0x", 2) == 0)
+    {
+      int val;
+      if (parse_immediate (in, &val, 0, 0, TRUE) == FAIL)
+	return FALSE;
+      return TRUE;
+    }
+
   error_code = atof_generic (in, ".", EXP_CHARS,
                              &generic_floating_point_number);
 
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index d53d518..cea61aa 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,9 @@
+2015-01-28  Matthew Fortune  <matthew.fortune@imgtec.com>
+
+	* gas/arm/ual-vcmp.s: Add vcmp, vcmpe with #0x0 operand.
+	* gas/ual/vcmp.d: Update expected output.
+	* gas/ual/vcmp-zero-bad.l: Likewise
+
 2014-12-19  Matthew Fortune  <matthew.fortune@imgtec.com>
 
 	* gas/mips/r6-64.s: Remove .align directives from LDPC
diff --git a/gas/testsuite/gas/arm/ual-vcmp.d b/gas/testsuite/gas/arm/ual-vcmp.d
index 2e9fb3d..5b1b6ce 100644
--- a/gas/testsuite/gas/arm/ual-vcmp.d
+++ b/gas/testsuite/gas/arm/ual-vcmp.d
@@ -14,11 +14,15 @@ Disassembly of section .text:
 0+014 <[^>]*> eeb53a40 	vcmp.f32	s6, #0.0
 0+018 <[^>]*> eef53ac0 	vcmpe.f32	s7, #0.0
 0+01c <[^>]*> eeb54ac0 	vcmpe.f32	s8, #0.0
-0+020 <[^>]*> eeb50b40 	vcmp.f64	d0, #0.0
-0+024 <[^>]*> eeb51b40 	vcmp.f64	d1, #0.0
-0+028 <[^>]*> eeb52bc0 	vcmpe.f64	d2, #0.0
-0+02c <[^>]*> eeb53bc0 	vcmpe.f64	d3, #0.0
-0+030 <[^>]*> eeb54b40 	vcmp.f64	d4, #0.0
-0+034 <[^>]*> eeb55b40 	vcmp.f64	d5, #0.0
-0+038 <[^>]*> eeb56bc0 	vcmpe.f64	d6, #0.0
-0+03c <[^>]*> eeb57bc0 	vcmpe.f64	d7, #0.0
\ No newline at end of file
+0+020 <[^>]*> eef54a40 	vcmp.f32	s9, #0.0
+0+024 <[^>]*> eeb55ac0 	vcmpe.f32	s10, #0.0
+0+028 <[^>]*> eeb50b40 	vcmp.f64	d0, #0.0
+0+02c <[^>]*> eeb51b40 	vcmp.f64	d1, #0.0
+0+030 <[^>]*> eeb52bc0 	vcmpe.f64	d2, #0.0
+0+034 <[^>]*> eeb53bc0 	vcmpe.f64	d3, #0.0
+0+038 <[^>]*> eeb54b40 	vcmp.f64	d4, #0.0
+0+03c <[^>]*> eeb55b40 	vcmp.f64	d5, #0.0
+0+040 <[^>]*> eeb56bc0 	vcmpe.f64	d6, #0.0
+0+044 <[^>]*> eeb57bc0 	vcmpe.f64	d7, #0.0
+0+048 <[^>]*> eeb58b40 	vcmp.f64	d8, #0.0
+0+04c <[^>]*> eeb59bc0 	vcmpe.f64	d9, #0.0
\ No newline at end of file
diff --git a/gas/testsuite/gas/arm/ual-vcmp.s b/gas/testsuite/gas/arm/ual-vcmp.s
index 79efa4e..1b9ffa6 100644
--- a/gas/testsuite/gas/arm/ual-vcmp.s
+++ b/gas/testsuite/gas/arm/ual-vcmp.s
@@ -10,6 +10,8 @@ vcmp.f32	s5, #0.0e2
 vcmp.f32	s6, #0e-3
 vcmpe.f32	s7, #0.0000
 vcmpe.f32	s8, #.0
+vcmp.f32	s9, #0x0
+vcmpe.f32	s10, #0x0
 
 vcmp.f64	d0, #0.0
 vcmp.f64	d1, #0
@@ -19,3 +21,5 @@ vcmp.f64	d4, #0.0e5
 vcmp.f64	d5, #0e-2
 vcmpe.f64	d6, #0.00
 vcmpe.f64	d7, #.0
+vcmp.f64	d8, #0x0
+vcmpe.f64	d9, #0x0
diff --git a/gas/testsuite/gas/arm/vcmp-zero-bad.l b/gas/testsuite/gas/arm/vcmp-zero-bad.l
index 975d02b..bce8e4a 100644
--- a/gas/testsuite/gas/arm/vcmp-zero-bad.l
+++ b/gas/testsuite/gas/arm/vcmp-zero-bad.l
@@ -4,5 +4,5 @@
 [^:]*:7: Error: only floating point zero is allowed as immediate value -- `vcmpe.f32 s3,5'
 [^:]*:8: Error: only floating point zero is allowed as immediate value -- `vcmpe.f32 s4,#-0.0'
 [^:]*:10: Error: only floating point zero is allowed as immediate value -- `vcmp.f64 d0,#-1'
-[^:]*:11: Error: garbage following instruction -- `vcmpe.f64 d3,#0x35'
+[^:]*:11: Error: only floating point zero is allowed as immediate value -- `vcmpe.f64 d3,#0x35'
 [^:]*:12: Error: only floating point zero is allowed as immediate value -- `vcmpe.f64 d4,0xf'


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]