aboutsummaryrefslogtreecommitdiff
path: root/gas/config
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2010-01-06 15:02:45 +0000
committerNick Clifton <nickc@redhat.com>2010-01-06 15:02:45 +0000
commite3e535bc5863ec5a183bfaabcd5d1d36a129305a (patch)
tree460508dec456686ca3450132e898a85b05dda5d4 /gas/config
parent15d123c99f48b4b4620d87a0e9ee124de1a0659f (diff)
downloadgdb-e3e535bc5863ec5a183bfaabcd5d1d36a129305a.zip
gdb-e3e535bc5863ec5a183bfaabcd5d1d36a129305a.tar.gz
gdb-e3e535bc5863ec5a183bfaabcd5d1d36a129305a.tar.bz2
* arm-dis.c (print_insn): Fixed search for next
symbol and data dumping condition, and the initial mapping symbol state. * gas/arm/dis-data.d: New test case. * gas/arm/dis-data.s: New file.
Diffstat (limited to 'gas/config')
-rw-r--r--gas/config/tc-arm.c27
1 files changed, 25 insertions, 2 deletions
diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c
index 97db70c..b0184a5 100644
--- a/gas/config/tc-arm.c
+++ b/gas/config/tc-arm.c
@@ -13666,12 +13666,22 @@ do_vfp_nsyn_cvtz (void)
}
static void
-do_neon_cvt (void)
+do_neon_cvt_1 (bfd_boolean round_to_zero ATTRIBUTE_UNUSED)
{
enum neon_shape rs = neon_select_shape (NS_DDI, NS_QQI, NS_FFI, NS_DD, NS_QQ,
NS_FD, NS_DF, NS_FF, NS_QD, NS_DQ, NS_NULL);
int flavour = neon_cvt_flavour (rs);
+ /* PR11109: Handle round-to-zero for VCVT conversions. */
+ if (round_to_zero
+ && ARM_CPU_HAS_FEATURE (cpu_variant, fpu_arch_vfp_v2)
+ && (flavour == 0 || flavour == 1 || flavour == 8 || flavour == 9)
+ && (rs == NS_FD || rs == NS_FF))
+ {
+ do_vfp_nsyn_cvtz ();
+ return;
+ }
+
/* VFP rather than Neon conversions. */
if (flavour >= 6)
{
@@ -13772,6 +13782,18 @@ do_neon_cvt (void)
}
static void
+do_neon_cvtr (void)
+{
+ do_neon_cvt_1 (FALSE);
+}
+
+static void
+do_neon_cvt (void)
+{
+ do_neon_cvt_1 (TRUE);
+}
+
+static void
do_neon_cvtb (void)
{
inst.instruction = 0xeb20a40;
@@ -17416,7 +17438,8 @@ static const struct asm_opcode insns[] =
NCE(vldr, d100b00, 2, (RVSD, ADDRGLDC), neon_ldr_str),
NCE(vstr, d000b00, 2, (RVSD, ADDRGLDC), neon_ldr_str),
- nCEF(vcvt, _vcvt, 3, (RNSDQ, RNSDQ, oI32b), neon_cvt),
+ nCEF(vcvt, _vcvt, 3, (RNSDQ, RNSDQ, oI32b), neon_cvt),
+ nCEF(vcvtr, _vcvt, 2, (RNSDQ, RNSDQ), neon_cvtr),
nCEF(vcvtb, _vcvt, 2, (RVS, RVS), neon_cvtb),
nCEF(vcvtt, _vcvt, 2, (RVS, RVS), neon_cvtt),