gas: ARM: Fix encoding of VCVTr.s32.f64 instructions
authorWill Newton <will.newton@linaro.org>
Thu, 16 Jan 2014 10:08:45 +0000 (10:08 +0000)
committerWill Newton <will.newton@linaro.org>
Fri, 17 Jan 2014 15:34:56 +0000 (15:34 +0000)
The direct rounding floating-point VCVT instructions introduced in
ARMv8 encode the s32.f64 variant incorrectly. The op bit should be
set to 1 for all signed conversions.

gas/ChangeLog:

2014-01-17  Will Newton  <will.newton@linaro.org>

* config/tc-arm.c (do_vfp_nsyn_cvt_fpv8): Set OP to 1
for the s32.f64 flavours of VCVT.

gas/testsuite/ChangeLog:

2014-01-17  Will Newton  <will.newton@linaro.org>

* gas/arm/armv8-a+fp.d: Correct encoding of vcvta.s32.f64.

gas/ChangeLog
gas/config/tc-arm.c
gas/testsuite/ChangeLog
gas/testsuite/gas/arm/armv8-a+fp.d

index 3685edb6b55f07f769eb43da22abb2ba4893c253..15fe29c9bedd497ab88e4a864a71bdc16b31573b 100644 (file)
@@ -1,3 +1,8 @@
+2014-01-17  Will Newton  <will.newton@linaro.org>
+
+       * config/tc-arm.c (do_vfp_nsyn_cvt_fpv8): Set OP to 1
+       for the s32.f64 flavours of VCVT.
+
 2014-01-14  Nick Clifton  <nickc@redhat.com>
 
        PR gas/16434
index 08b5ea246c3ebd0c9e173372331e813556c046a0..e596217f9b6296945efbeca41ea3e4b3aa11ef53 100644 (file)
@@ -14671,7 +14671,7 @@ do_vfp_nsyn_cvt_fpv8 (enum neon_cvt_flavour flavour,
     {
     case neon_cvt_flavour_s32_f64:
       sz = 1;
-      op = 0;
+      op = 1;
       break;
     case neon_cvt_flavour_s32_f32:
       sz = 0;
index dfe7d09ad04f5345ac3c6530f840642af2d617ee..17694f8c268f1481ab3d9403c49ec6d8c3b179d0 100644 (file)
@@ -1,3 +1,7 @@
+2014-01-17  Will Newton  <will.newton@linaro.org>
+
+       * gas/arm/armv8-a+fp.d: Correct encoding of vcvta.s32.f64.
+
 For older changes see ChangeLog-2013
 \f
 Copyright (C) 2014 Free Software Foundation, Inc.
index d50a73bd10e19685effa08f173c55793bf58a2f7..6443c4bfb19d66181ebdeafbddd310b1ae96b5bb 100644 (file)
@@ -32,8 +32,8 @@ Disassembly of section .text:
 0[0-9a-f]+ <[^>]+> fefd0ae0    vcvtn.s32.f32   s1, s1
 0[0-9a-f]+ <[^>]+> febefa4f    vcvtp.u32.f32   s30, s30
 0[0-9a-f]+ <[^>]+> fefffa6f    vcvtm.u32.f32   s31, s31
-0[0-9a-f]+ <[^>]+> febc0b40    vcvta.u32.f64   s0, d0
-0[0-9a-f]+ <[^>]+> fefd0b60    vcvtn.u32.f64   s1, d16
+0[0-9a-f]+ <[^>]+> febc0bc0    vcvta.s32.f64   s0, d0
+0[0-9a-f]+ <[^>]+> fefd0be0    vcvtn.s32.f64   s1, d16
 0[0-9a-f]+ <[^>]+> febefb4f    vcvtp.u32.f64   s30, d15
 0[0-9a-f]+ <[^>]+> fefffb6f    vcvtm.u32.f64   s31, d31
 0[0-9a-f]+ <[^>]+> eeb60ac0    vrintz.f32      s0, s0
@@ -86,8 +86,8 @@ Disassembly of section .text:
 0[0-9a-f]+ <[^>]+> fefd 0ae0   vcvtn.s32.f32   s1, s1
 0[0-9a-f]+ <[^>]+> febe fa4f   vcvtp.u32.f32   s30, s30
 0[0-9a-f]+ <[^>]+> feff fa6f   vcvtm.u32.f32   s31, s31
-0[0-9a-f]+ <[^>]+> febc 0b40   vcvta.u32.f64   s0, d0
-0[0-9a-f]+ <[^>]+> fefd 0b60   vcvtn.u32.f64   s1, d16
+0[0-9a-f]+ <[^>]+> febc 0bc0   vcvta.s32.f64   s0, d0
+0[0-9a-f]+ <[^>]+> fefd 0be0   vcvtn.s32.f64   s1, d16
 0[0-9a-f]+ <[^>]+> febe fb4f   vcvtp.u32.f64   s30, d15
 0[0-9a-f]+ <[^>]+> feff fb6f   vcvtm.u32.f64   s31, d31
 0[0-9a-f]+ <[^>]+> eeb6 0ac0   vrintz.f32      s0, s0