aboutsummaryrefslogtreecommitdiff
path: root/gas/config
diff options
context:
space:
mode:
authorAndre Simoes Dias Vieira <andre.simoesdiasvieira@arm.com>2020-05-04 13:05:42 +0100
committerAndre Vieira <andre.simoesdiasvieira@arm.com>2020-05-04 13:07:45 +0100
commitfe05f369f0df7cad0a6500b79879addaad2e364d (patch)
treef853042df0e8d3aa491deb65bdfe6021f620ff96 /gas/config
parent4706679daca21b5d637afaf5b55858b26f0f8c16 (diff)
downloadbinutils-fe05f369f0df7cad0a6500b79879addaad2e364d.zip
binutils-fe05f369f0df7cad0a6500b79879addaad2e364d.tar.gz
binutils-fe05f369f0df7cad0a6500b79879addaad2e364d.tar.bz2
gas: PR 25863: Fix scalar vmul inside it block when assembling for MVE
This fixes PR 25863 by fixing the condition in the parsing of vmul in do_mve_vmull. It also simplifies the code in there fixing latent issues that would lead to NEON code being accepted when it shouldn't. gas/ChangeLog: 2020-05-04 Andre Vieira <andre.simoesdiasvieira@arm.com> PR gas/25863 * config/tc-arm.c (do_mve_vmull): Fix scalar and NEON parsing of vmul. * testsuite/gas/arm/mve-scalar-vmult-it.d: New test. * testsuite/gas/arm/mve-scalar-vmult-it.s: New test.
Diffstat (limited to 'gas/config')
-rw-r--r--gas/config/tc-arm.c12
1 files changed, 3 insertions, 9 deletions
diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c
index f2a55ab..12ca245 100644
--- a/gas/config/tc-arm.c
+++ b/gas/config/tc-arm.c
@@ -18273,19 +18273,13 @@ do_mve_vmull (void)
enum neon_shape rs = neon_select_shape (NS_HHH, NS_FFF, NS_DDD, NS_DDS,
NS_QQS, NS_QQQ, NS_QQR, NS_NULL);
- if (!ARM_CPU_HAS_FEATURE (cpu_variant, mve_ext)
- && inst.cond == COND_ALWAYS
+ if (inst.cond == COND_ALWAYS
&& ((unsigned)inst.instruction) == M_MNEM_vmullt)
{
+
if (rs == NS_QQQ)
{
-
- struct neon_type_el et = neon_check_type (3, rs, N_EQK , N_EQK,
- N_SUF_32 | N_F64 | N_P8
- | N_P16 | N_I_MVE | N_KEY);
- if (((et.type == NT_poly) && et.size == 8
- && ARM_CPU_IS_ANY (cpu_variant))
- || (et.type == NT_integer) || (et.type == NT_float))
+ if (!ARM_CPU_HAS_FEATURE (cpu_variant, mve_ext))
goto neon_vmul;
}
else