[ARM] vcmp/vcmpe should accept #0x0 as an operand
authorJiong Wang <jiong.wang@arm.com>
Tue, 13 Jan 2015 15:44:47 +0000 (15:44 +0000)
committerJiong Wang <jiong.wang@arm.com>
Tue, 13 Jan 2015 15:44:47 +0000 (15:44 +0000)
gas/
2015-01-13  Matthew Wahab  <matthew.wahab@arm.com>

     * config/tc-arm.c (parse_ifimm_zero): Accept #0x0 as a synonym for
     #0, restoring previous behaviour.

gas/testsuite/
2015-01-13  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

gas/ChangeLog
gas/config/tc-arm.c
gas/testsuite/ChangeLog
gas/testsuite/gas/arm/ual-vcmp.d
gas/testsuite/gas/arm/ual-vcmp.s
gas/testsuite/gas/arm/vcmp-zero-bad.l

index 78501edc333b0e25cb0ccff93911d17c5b78cc06..ef0af898cd1966ad1c0ca7a781a17247377ebc6c 100644 (file)
@@ -1,3 +1,8 @@
+2015-01-13  Matthew Wahab  <matthew.wahab@arm.com>
+
+       * config/tc-arm.c (parse_ifimm_zero): Accept #0x0 as a synonym for
+       #0, restoring previous behaviour.
+
 2015-01-12  Jan Beulich  <jbeulich@suse.com>
 
        * gas/dw2gencfi.c (cfi_add_label, dot_cfi_label): New.
index e0de0d2b132288081948eeb8fae4e02d5b14f1d1..b17ea6c42b7b50c9ee020405d87ce95c093c1f9d 100644 (file)
@@ -4961,6 +4961,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);
 
index 54d9c6e8ed7707fde83b9a69636214df9945fcf8..a63ebd115db09dd419160b7581996a498b75f656 100644 (file)
@@ -1,3 +1,9 @@
+2015-01-13  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
+
 2015-01-12  Jan Beulich  <jbeulich@suse.com>
 
        gas/cfi/cfi-label.d, gas/cfi/cfi-label.s: New.
index 2e9fb3d5076cec69105b13dbf1d9787ab494de50..5b1b6ce5954bd7e6e5ad121408724fc081e19cc6 100644 (file)
@@ -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
index 79efa4e79a52eabb64d8336879be0ff8a59804ec..5fc5ebed3067b8ccc8bdfd7b34b5de16c65d0fdf 100644 (file)
@@ -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
index 975d02b8c071b85d04c54ab37c5de772bbc9217e..bce8e4ac4ef2c4da62c04e1f1c3149c0e0296b24 100644 (file)
@@ -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'