Browse Source

arm: Fix MVE vmla encoding

master
Claudio Bantaloukas 2 years ago
committed by Nick Clifton
parent
commit
3e562e4be8
  1. 4
      gas/config/tc-arm.c
  2. 3384
      gas/testsuite/gas/arm/mve-vmla.d
  3. 8
      gas/testsuite/gas/arm/mve-vmla.s
  4. 2
      opcodes/arm-dis.c

4
gas/config/tc-arm.c

@ -17984,9 +17984,9 @@ do_neon_mac_maybe_scalar (void)
constraint (!ARM_CPU_HAS_FEATURE (cpu_variant, mve_ext), BAD_FPU); constraint (!ARM_CPU_HAS_FEATURE (cpu_variant, mve_ext), BAD_FPU);
enum neon_shape rs = neon_select_shape (NS_QQR, NS_NULL); enum neon_shape rs = neon_select_shape (NS_QQR, NS_NULL);
neon_check_type (3, rs, N_EQK, N_EQK, N_SU_MVE | N_KEY); neon_check_type (3, rs, N_EQK, N_EQK, N_SU_MVE | N_I_MVE | N_KEY);
neon_dyadic_misc (NT_unsigned, N_SU_MVE, 0); neon_dyadic_misc (NT_untyped, N_SU_MVE | N_I_MVE, 0);
} }
else else
{ {

3384
gas/testsuite/gas/arm/mve-vmla.d

File diff suppressed because it is too large

8
gas/testsuite/gas/arm/mve-vmla.s

@ -1,6 +1,6 @@
.syntax unified .syntax unified
.thumb .thumb
.irp data, s8, u8, s16, u16, s32, u32 .irp data, s8, u8, s16, u16, s32, u32, i8, i16, i32
.irp op1, q0, q1, q2, q4, q7 .irp op1, q0, q1, q2, q4, q7
.irp op2, q0, q1, q2, q4, q7 .irp op2, q0, q1, q2, q4, q7
.irp op3, r0, r1, r2, r4, r7, r8, r10, r12, r14 .irp op3, r0, r1, r2, r4, r7, r8, r10, r12, r14
@ -12,3 +12,9 @@ vmla.\data \op1, \op2, \op3
vpste vpste
vmlat.u8 q0, q1, r2 vmlat.u8 q0, q1, r2
vmlae.s8 q7, q7, r14 vmlae.s8 q7, q7, r14
vpste
vmlat.i8 q0, q1, r2
vmlae.i8 q7, q7, r14
@ bit 12 is ignored, should decode as vmla.i8 q0, q0, r0
.inst 0xfe010e40

2
opcodes/arm-dis.c

@ -2763,7 +2763,7 @@ static const struct mopcode32 mve_opcodes[] =
{ARM_FEATURE_CORE_HIGH (ARM_EXT2_MVE), {ARM_FEATURE_CORE_HIGH (ARM_EXT2_MVE),
MVE_VMLA, MVE_VMLA,
0xee010e40, 0xef811f70, 0xee010e40, 0xef811f70,
"vmla%v.%u%20-21s\t%13-15,22Q, %17-19,7Q, %0-3r"}, "vmla%v.i%20-21s\t%13-15,22Q, %17-19,7Q, %0-3r"},
/* Vector VMLALDAV. Note must appear before VMLADAV due to instruction /* Vector VMLALDAV. Note must appear before VMLADAV due to instruction
opcode aliasing. */ opcode aliasing. */

Loading…
Cancel
Save