aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndre Vieira <andre.simoesdiasvieira@arm.com>2020-11-13 08:59:48 +0000
committerAndreas K. Hüttel <dilfridge@gentoo.org>2021-01-23 20:23:26 +0200
commit3cb1ae9cc1a74748b837b75fe6278da914733fd5 (patch)
tree8b04cdcc31fc9ccd682aa402ab01e6e5c03ea89d
parent[GOLD] powerpc incremental-dump assertion failure (diff)
downloadbinutils-gdb-3cb1ae9cc1a74748b837b75fe6278da914733fd5.tar.gz
binutils-gdb-3cb1ae9cc1a74748b837b75fe6278da914733fd5.tar.bz2
binutils-gdb-3cb1ae9cc1a74748b837b75fe6278da914733fd5.zip
gas, arm: PR26858 Fix availability of single precision vmul/vmla in arm mode
This patch fixes a mistake when enabling MVE instructions that disabled support for single precision vmla and vmul for arm mode. gas/ChangeLog: 2020-11-19 Andre Vieira <andre.simoesdiasvieira@arm.com> Backport from mainline. 2020-11-12 Andre Vieira <andre.simoesdiasvieira@arm.com> PR 26858 * config/tc-arm.c (asm_opcode insns): Fix vmul and vmla's ARM_VARIANT. * testsuite/gas/arm/pr26858.s: New test. * testsuite/gas/arm/pr26858.d: New test. (cherry picked from commit 3792ebe961f68438b06c0a0b4a731a38b666080c)
-rw-r--r--gas/config/tc-arm.c4
-rw-r--r--gas/testsuite/gas/arm/pr26858.d8
-rw-r--r--gas/testsuite/gas/arm/pr26858.s6
3 files changed, 16 insertions, 2 deletions
diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c
index 64475d6672..b02e9fb1c8 100644
--- a/gas/config/tc-arm.c
+++ b/gas/config/tc-arm.c
@@ -26514,14 +26514,14 @@ static const struct asm_opcode insns[] =
#define ARM_VARIANT & fpu_vfp_ext_v1
#undef THUMB_VARIANT
#define THUMB_VARIANT & arm_ext_v6t2
- mnCEF(vmla, _vmla, 3, (RNSDQMQ, oRNSDQMQ, RNSDQ_RNSC_MQ_RR), neon_mac_maybe_scalar),
- mnCEF(vmul, _vmul, 3, (RNSDQMQ, oRNSDQMQ, RNSDQ_RNSC_MQ_RR), neon_mul),
mcCE(fcpyd, eb00b40, 2, (RVD, RVD), vfp_dp_rd_rm),
#undef ARM_VARIANT
#define ARM_VARIANT & fpu_vfp_ext_v1xd
+ mnCEF(vmla, _vmla, 3, (RNSDQMQ, oRNSDQMQ, RNSDQ_RNSC_MQ_RR), neon_mac_maybe_scalar),
+ mnCEF(vmul, _vmul, 3, (RNSDQMQ, oRNSDQMQ, RNSDQ_RNSC_MQ_RR), neon_mul),
MNCE(vmov, 0, 1, (VMOV), neon_mov),
mcCE(fmrs, e100a10, 2, (RR, RVS), vfp_reg_from_sp),
mcCE(fmsr, e000a10, 2, (RVS, RR), vfp_sp_from_reg),
diff --git a/gas/testsuite/gas/arm/pr26858.d b/gas/testsuite/gas/arm/pr26858.d
new file mode 100644
index 0000000000..dbe4d7122e
--- /dev/null
+++ b/gas/testsuite/gas/arm/pr26858.d
@@ -0,0 +1,8 @@
+# name: PR26858
+# objdump: -dr --prefix-addresses --show-raw-insn
+
+.*: +file format .*arm.*
+
+Disassembly of section .text:
+[^>]*> ee266a87 vmul.f32 s12, s13, s14
+[^>]*> ee000a81 vmla.f32 s0, s1, s2
diff --git a/gas/testsuite/gas/arm/pr26858.s b/gas/testsuite/gas/arm/pr26858.s
new file mode 100644
index 0000000000..5a450e7bde
--- /dev/null
+++ b/gas/testsuite/gas/arm/pr26858.s
@@ -0,0 +1,6 @@
+.syntax unified
+.arch armv8-r
+.arm
+.fpu fpv5-sp-d16
+vmul.f32 s12, s13, s14
+vmla.f32 s0, s1, s2