From c4a23bf878f2e9a64034006c91596401faf6db3e Mon Sep 17 00:00:00 2001 From: Srinath Parvathaneni Date: Tue, 27 Aug 2019 12:08:21 +0100 Subject: [PATCH] Add support for the MVE VMOV instruction to the ARM assembler. This instruction copies the value of one vector register to another vector register. The patch also modifies the decoding of VORR instruction which is effecting decoding of VMOV instruction. gas * config/tc-arm.c (parse_neon_mov): Add check to accept vector register to both the arguments in VMOV instruction. * testsuite/gas/arm/mve-vmov-1.d: Modify. * testsuite/gas/arm/mve-vmov-1.s: Likewise. * testsuite/gas/arm/mve-vorr.d: Likewise. opcodes * arm-dis.c (mve_opcodes): Add entry for MVE_VMOV_VEC_TO_VEC. (is_mve_undefined): Add case for MVE_VMOV_VEC_TO_VEC. (print_insn_mve): Add condition to check Qm==Qn of VORR instruction. --- gas/ChangeLog | 8 + gas/config/tc-arm.c | 6 +- gas/testsuite/gas/arm/mve-vmov-1.d | 25 ++ gas/testsuite/gas/arm/mve-vmov-1.s | 6 + gas/testsuite/gas/arm/mve-vorr.d | 400 ++++++++++++++--------------- opcodes/ChangeLog | 6 + opcodes/arm-dis.c | 23 ++ 7 files changed, 272 insertions(+), 202 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index ff9b3e4762..980d970bbc 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,11 @@ +2019-08-27 Srinath Parvathaneni + + * config/tc-arm.c (parse_neon_mov): Add check to accept vector + register to both the arguments in VMOV instruction. + * testsuite/gas/arm/mve-vmov-1.d: Modify. + * testsuite/gas/arm/mve-vmov-1.s: Likewise. + * testsuite/gas/arm/mve-vorr.d: Likewise. + 2019-08-23 Nick Clifton * po/sv.po: Updated Swedish translation. diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c index 27c6f0e52f..9a367ca728 100644 --- a/gas/config/tc-arm.c +++ b/gas/config/tc-arm.c @@ -6743,8 +6743,10 @@ parse_neon_mov (char **str, int *which_operand) inst.operands[i].present = 1; } } - else if ((val = arm_typed_reg_parse (&ptr, REG_TYPE_NSDQ, &rtype, - &optype)) != FAIL) + else if (((val = arm_typed_reg_parse (&ptr, REG_TYPE_NSDQ, &rtype, + &optype)) != FAIL) + || ((val = arm_typed_reg_parse (&ptr, REG_TYPE_MQ, &rtype, + &optype)) != FAIL)) { /* Case 0: VMOV , Case 1: VMOV
, diff --git a/gas/testsuite/gas/arm/mve-vmov-1.d b/gas/testsuite/gas/arm/mve-vmov-1.d index 5f317d8646..504b3e7936 100644 --- a/gas/testsuite/gas/arm/mve-vmov-1.d +++ b/gas/testsuite/gas/arm/mve-vmov-1.d @@ -4154,3 +4154,28 @@ Disassembly of section .text: [^>]*> ef80 0e74 vmov.i64 q0, #0x0000000000ff0000 [^>]*> ef80 0e72 vmov.i64 q0, #0x000000000000ff00 [^>]*> ef80 0e71 vmov.i64 q0, #0x00000000000000ff +[^>]*> ef20 0150 vmov q0, q0 +[^>]*> ef22 0152 vmov q0, q1 +[^>]*> ef24 0154 vmov q0, q2 +[^>]*> ef28 0158 vmov q0, q4 +[^>]*> ef2e 015e vmov q0, q7 +[^>]*> ef20 2150 vmov q1, q0 +[^>]*> ef22 2152 vmov q1, q1 +[^>]*> ef24 2154 vmov q1, q2 +[^>]*> ef28 2158 vmov q1, q4 +[^>]*> ef2e 215e vmov q1, q7 +[^>]*> ef20 4150 vmov q2, q0 +[^>]*> ef22 4152 vmov q2, q1 +[^>]*> ef24 4154 vmov q2, q2 +[^>]*> ef28 4158 vmov q2, q4 +[^>]*> ef2e 415e vmov q2, q7 +[^>]*> ef20 8150 vmov q4, q0 +[^>]*> ef22 8152 vmov q4, q1 +[^>]*> ef24 8154 vmov q4, q2 +[^>]*> ef28 8158 vmov q4, q4 +[^>]*> ef2e 815e vmov q4, q7 +[^>]*> ef20 e150 vmov q7, q0 +[^>]*> ef22 e152 vmov q7, q1 +[^>]*> ef24 e154 vmov q7, q2 +[^>]*> ef28 e158 vmov q7, q4 +[^>]*> ef2e e15e vmov q7, q7 diff --git a/gas/testsuite/gas/arm/mve-vmov-1.s b/gas/testsuite/gas/arm/mve-vmov-1.s index 60c77d0a7c..d24fae60f3 100644 --- a/gas/testsuite/gas/arm/mve-vmov-1.s +++ b/gas/testsuite/gas/arm/mve-vmov-1.s @@ -130,3 +130,9 @@ vmov.i64 q0, #4278190080 @ 0x00000000FF000000 vmov.i64 q0, #16711680 @ 0x00000000000FF0000 vmov.i64 q0, #65280 @ 0x0000000000000FF00 vmov.i64 q0, #255 @ 0x000000000000000FF + +.irp op1, q0, q1, q2, q4, q7 +.irp op2, q0, q1, q2, q4, q7 +vmov \op1, \op2 +.endr +.endr diff --git a/gas/testsuite/gas/arm/mve-vorr.d b/gas/testsuite/gas/arm/mve-vorr.d index 72dcc89538..96a69d8d13 100644 --- a/gas/testsuite/gas/arm/mve-vorr.d +++ b/gas/testsuite/gas/arm/mve-vorr.d @@ -5,14 +5,14 @@ .*: +file format .*arm.* Disassembly of section .text: -[^>]*> ef20 0150 vorr q0, q0, q0 -[^>]*> ef20 0150 vorr q0, q0, q0 -[^>]*> ef20 0150 vorr q0, q0, q0 -[^>]*> ef20 0150 vorr q0, q0, q0 -[^>]*> ef20 0150 vorr q0, q0, q0 -[^>]*> ef20 0150 vorr q0, q0, q0 -[^>]*> ef20 0150 vorr q0, q0, q0 -[^>]*> ef20 0150 vorr q0, q0, q0 +[^>]*> ef20 0150 vmov q0, q0 +[^>]*> ef20 0150 vmov q0, q0 +[^>]*> ef20 0150 vmov q0, q0 +[^>]*> ef20 0150 vmov q0, q0 +[^>]*> ef20 0150 vmov q0, q0 +[^>]*> ef20 0150 vmov q0, q0 +[^>]*> ef20 0150 vmov q0, q0 +[^>]*> ef20 0150 vmov q0, q0 [^>]*> ef20 0152 vorr q0, q0, q1 [^>]*> ef20 0152 vorr q0, q0, q1 [^>]*> ef20 0152 vorr q0, q0, q1 @@ -53,14 +53,14 @@ Disassembly of section .text: [^>]*> ef22 0150 vorr q0, q1, q0 [^>]*> ef22 0150 vorr q0, q1, q0 [^>]*> ef22 0150 vorr q0, q1, q0 -[^>]*> ef22 0152 vorr q0, q1, q1 -[^>]*> ef22 0152 vorr q0, q1, q1 -[^>]*> ef22 0152 vorr q0, q1, q1 -[^>]*> ef22 0152 vorr q0, q1, q1 -[^>]*> ef22 0152 vorr q0, q1, q1 -[^>]*> ef22 0152 vorr q0, q1, q1 -[^>]*> ef22 0152 vorr q0, q1, q1 -[^>]*> ef22 0152 vorr q0, q1, q1 +[^>]*> ef22 0152 vmov q0, q1 +[^>]*> ef22 0152 vmov q0, q1 +[^>]*> ef22 0152 vmov q0, q1 +[^>]*> ef22 0152 vmov q0, q1 +[^>]*> ef22 0152 vmov q0, q1 +[^>]*> ef22 0152 vmov q0, q1 +[^>]*> ef22 0152 vmov q0, q1 +[^>]*> ef22 0152 vmov q0, q1 [^>]*> ef22 0154 vorr q0, q1, q2 [^>]*> ef22 0154 vorr q0, q1, q2 [^>]*> ef22 0154 vorr q0, q1, q2 @@ -101,14 +101,14 @@ Disassembly of section .text: [^>]*> ef24 0152 vorr q0, q2, q1 [^>]*> ef24 0152 vorr q0, q2, q1 [^>]*> ef24 0152 vorr q0, q2, q1 -[^>]*> ef24 0154 vorr q0, q2, q2 -[^>]*> ef24 0154 vorr q0, q2, q2 -[^>]*> ef24 0154 vorr q0, q2, q2 -[^>]*> ef24 0154 vorr q0, q2, q2 -[^>]*> ef24 0154 vorr q0, q2, q2 -[^>]*> ef24 0154 vorr q0, q2, q2 -[^>]*> ef24 0154 vorr q0, q2, q2 -[^>]*> ef24 0154 vorr q0, q2, q2 +[^>]*> ef24 0154 vmov q0, q2 +[^>]*> ef24 0154 vmov q0, q2 +[^>]*> ef24 0154 vmov q0, q2 +[^>]*> ef24 0154 vmov q0, q2 +[^>]*> ef24 0154 vmov q0, q2 +[^>]*> ef24 0154 vmov q0, q2 +[^>]*> ef24 0154 vmov q0, q2 +[^>]*> ef24 0154 vmov q0, q2 [^>]*> ef24 0158 vorr q0, q2, q4 [^>]*> ef24 0158 vorr q0, q2, q4 [^>]*> ef24 0158 vorr q0, q2, q4 @@ -149,14 +149,14 @@ Disassembly of section .text: [^>]*> ef28 0154 vorr q0, q4, q2 [^>]*> ef28 0154 vorr q0, q4, q2 [^>]*> ef28 0154 vorr q0, q4, q2 -[^>]*> ef28 0158 vorr q0, q4, q4 -[^>]*> ef28 0158 vorr q0, q4, q4 -[^>]*> ef28 0158 vorr q0, q4, q4 -[^>]*> ef28 0158 vorr q0, q4, q4 -[^>]*> ef28 0158 vorr q0, q4, q4 -[^>]*> ef28 0158 vorr q0, q4, q4 -[^>]*> ef28 0158 vorr q0, q4, q4 -[^>]*> ef28 0158 vorr q0, q4, q4 +[^>]*> ef28 0158 vmov q0, q4 +[^>]*> ef28 0158 vmov q0, q4 +[^>]*> ef28 0158 vmov q0, q4 +[^>]*> ef28 0158 vmov q0, q4 +[^>]*> ef28 0158 vmov q0, q4 +[^>]*> ef28 0158 vmov q0, q4 +[^>]*> ef28 0158 vmov q0, q4 +[^>]*> ef28 0158 vmov q0, q4 [^>]*> ef28 015e vorr q0, q4, q7 [^>]*> ef28 015e vorr q0, q4, q7 [^>]*> ef28 015e vorr q0, q4, q7 @@ -197,22 +197,22 @@ Disassembly of section .text: [^>]*> ef2e 0158 vorr q0, q7, q4 [^>]*> ef2e 0158 vorr q0, q7, q4 [^>]*> ef2e 0158 vorr q0, q7, q4 -[^>]*> ef2e 015e vorr q0, q7, q7 -[^>]*> ef2e 015e vorr q0, q7, q7 -[^>]*> ef2e 015e vorr q0, q7, q7 -[^>]*> ef2e 015e vorr q0, q7, q7 -[^>]*> ef2e 015e vorr q0, q7, q7 -[^>]*> ef2e 015e vorr q0, q7, q7 -[^>]*> ef2e 015e vorr q0, q7, q7 -[^>]*> ef2e 015e vorr q0, q7, q7 -[^>]*> ef20 2150 vorr q1, q0, q0 -[^>]*> ef20 2150 vorr q1, q0, q0 -[^>]*> ef20 2150 vorr q1, q0, q0 -[^>]*> ef20 2150 vorr q1, q0, q0 -[^>]*> ef20 2150 vorr q1, q0, q0 -[^>]*> ef20 2150 vorr q1, q0, q0 -[^>]*> ef20 2150 vorr q1, q0, q0 -[^>]*> ef20 2150 vorr q1, q0, q0 +[^>]*> ef2e 015e vmov q0, q7 +[^>]*> ef2e 015e vmov q0, q7 +[^>]*> ef2e 015e vmov q0, q7 +[^>]*> ef2e 015e vmov q0, q7 +[^>]*> ef2e 015e vmov q0, q7 +[^>]*> ef2e 015e vmov q0, q7 +[^>]*> ef2e 015e vmov q0, q7 +[^>]*> ef2e 015e vmov q0, q7 +[^>]*> ef20 2150 vmov q1, q0 +[^>]*> ef20 2150 vmov q1, q0 +[^>]*> ef20 2150 vmov q1, q0 +[^>]*> ef20 2150 vmov q1, q0 +[^>]*> ef20 2150 vmov q1, q0 +[^>]*> ef20 2150 vmov q1, q0 +[^>]*> ef20 2150 vmov q1, q0 +[^>]*> ef20 2150 vmov q1, q0 [^>]*> ef20 2152 vorr q1, q0, q1 [^>]*> ef20 2152 vorr q1, q0, q1 [^>]*> ef20 2152 vorr q1, q0, q1 @@ -253,14 +253,14 @@ Disassembly of section .text: [^>]*> ef22 2150 vorr q1, q1, q0 [^>]*> ef22 2150 vorr q1, q1, q0 [^>]*> ef22 2150 vorr q1, q1, q0 -[^>]*> ef22 2152 vorr q1, q1, q1 -[^>]*> ef22 2152 vorr q1, q1, q1 -[^>]*> ef22 2152 vorr q1, q1, q1 -[^>]*> ef22 2152 vorr q1, q1, q1 -[^>]*> ef22 2152 vorr q1, q1, q1 -[^>]*> ef22 2152 vorr q1, q1, q1 -[^>]*> ef22 2152 vorr q1, q1, q1 -[^>]*> ef22 2152 vorr q1, q1, q1 +[^>]*> ef22 2152 vmov q1, q1 +[^>]*> ef22 2152 vmov q1, q1 +[^>]*> ef22 2152 vmov q1, q1 +[^>]*> ef22 2152 vmov q1, q1 +[^>]*> ef22 2152 vmov q1, q1 +[^>]*> ef22 2152 vmov q1, q1 +[^>]*> ef22 2152 vmov q1, q1 +[^>]*> ef22 2152 vmov q1, q1 [^>]*> ef22 2154 vorr q1, q1, q2 [^>]*> ef22 2154 vorr q1, q1, q2 [^>]*> ef22 2154 vorr q1, q1, q2 @@ -301,14 +301,14 @@ Disassembly of section .text: [^>]*> ef24 2152 vorr q1, q2, q1 [^>]*> ef24 2152 vorr q1, q2, q1 [^>]*> ef24 2152 vorr q1, q2, q1 -[^>]*> ef24 2154 vorr q1, q2, q2 -[^>]*> ef24 2154 vorr q1, q2, q2 -[^>]*> ef24 2154 vorr q1, q2, q2 -[^>]*> ef24 2154 vorr q1, q2, q2 -[^>]*> ef24 2154 vorr q1, q2, q2 -[^>]*> ef24 2154 vorr q1, q2, q2 -[^>]*> ef24 2154 vorr q1, q2, q2 -[^>]*> ef24 2154 vorr q1, q2, q2 +[^>]*> ef24 2154 vmov q1, q2 +[^>]*> ef24 2154 vmov q1, q2 +[^>]*> ef24 2154 vmov q1, q2 +[^>]*> ef24 2154 vmov q1, q2 +[^>]*> ef24 2154 vmov q1, q2 +[^>]*> ef24 2154 vmov q1, q2 +[^>]*> ef24 2154 vmov q1, q2 +[^>]*> ef24 2154 vmov q1, q2 [^>]*> ef24 2158 vorr q1, q2, q4 [^>]*> ef24 2158 vorr q1, q2, q4 [^>]*> ef24 2158 vorr q1, q2, q4 @@ -349,14 +349,14 @@ Disassembly of section .text: [^>]*> ef28 2154 vorr q1, q4, q2 [^>]*> ef28 2154 vorr q1, q4, q2 [^>]*> ef28 2154 vorr q1, q4, q2 -[^>]*> ef28 2158 vorr q1, q4, q4 -[^>]*> ef28 2158 vorr q1, q4, q4 -[^>]*> ef28 2158 vorr q1, q4, q4 -[^>]*> ef28 2158 vorr q1, q4, q4 -[^>]*> ef28 2158 vorr q1, q4, q4 -[^>]*> ef28 2158 vorr q1, q4, q4 -[^>]*> ef28 2158 vorr q1, q4, q4 -[^>]*> ef28 2158 vorr q1, q4, q4 +[^>]*> ef28 2158 vmov q1, q4 +[^>]*> ef28 2158 vmov q1, q4 +[^>]*> ef28 2158 vmov q1, q4 +[^>]*> ef28 2158 vmov q1, q4 +[^>]*> ef28 2158 vmov q1, q4 +[^>]*> ef28 2158 vmov q1, q4 +[^>]*> ef28 2158 vmov q1, q4 +[^>]*> ef28 2158 vmov q1, q4 [^>]*> ef28 215e vorr q1, q4, q7 [^>]*> ef28 215e vorr q1, q4, q7 [^>]*> ef28 215e vorr q1, q4, q7 @@ -397,22 +397,22 @@ Disassembly of section .text: [^>]*> ef2e 2158 vorr q1, q7, q4 [^>]*> ef2e 2158 vorr q1, q7, q4 [^>]*> ef2e 2158 vorr q1, q7, q4 -[^>]*> ef2e 215e vorr q1, q7, q7 -[^>]*> ef2e 215e vorr q1, q7, q7 -[^>]*> ef2e 215e vorr q1, q7, q7 -[^>]*> ef2e 215e vorr q1, q7, q7 -[^>]*> ef2e 215e vorr q1, q7, q7 -[^>]*> ef2e 215e vorr q1, q7, q7 -[^>]*> ef2e 215e vorr q1, q7, q7 -[^>]*> ef2e 215e vorr q1, q7, q7 -[^>]*> ef20 4150 vorr q2, q0, q0 -[^>]*> ef20 4150 vorr q2, q0, q0 -[^>]*> ef20 4150 vorr q2, q0, q0 -[^>]*> ef20 4150 vorr q2, q0, q0 -[^>]*> ef20 4150 vorr q2, q0, q0 -[^>]*> ef20 4150 vorr q2, q0, q0 -[^>]*> ef20 4150 vorr q2, q0, q0 -[^>]*> ef20 4150 vorr q2, q0, q0 +[^>]*> ef2e 215e vmov q1, q7 +[^>]*> ef2e 215e vmov q1, q7 +[^>]*> ef2e 215e vmov q1, q7 +[^>]*> ef2e 215e vmov q1, q7 +[^>]*> ef2e 215e vmov q1, q7 +[^>]*> ef2e 215e vmov q1, q7 +[^>]*> ef2e 215e vmov q1, q7 +[^>]*> ef2e 215e vmov q1, q7 +[^>]*> ef20 4150 vmov q2, q0 +[^>]*> ef20 4150 vmov q2, q0 +[^>]*> ef20 4150 vmov q2, q0 +[^>]*> ef20 4150 vmov q2, q0 +[^>]*> ef20 4150 vmov q2, q0 +[^>]*> ef20 4150 vmov q2, q0 +[^>]*> ef20 4150 vmov q2, q0 +[^>]*> ef20 4150 vmov q2, q0 [^>]*> ef20 4152 vorr q2, q0, q1 [^>]*> ef20 4152 vorr q2, q0, q1 [^>]*> ef20 4152 vorr q2, q0, q1 @@ -453,14 +453,14 @@ Disassembly of section .text: [^>]*> ef22 4150 vorr q2, q1, q0 [^>]*> ef22 4150 vorr q2, q1, q0 [^>]*> ef22 4150 vorr q2, q1, q0 -[^>]*> ef22 4152 vorr q2, q1, q1 -[^>]*> ef22 4152 vorr q2, q1, q1 -[^>]*> ef22 4152 vorr q2, q1, q1 -[^>]*> ef22 4152 vorr q2, q1, q1 -[^>]*> ef22 4152 vorr q2, q1, q1 -[^>]*> ef22 4152 vorr q2, q1, q1 -[^>]*> ef22 4152 vorr q2, q1, q1 -[^>]*> ef22 4152 vorr q2, q1, q1 +[^>]*> ef22 4152 vmov q2, q1 +[^>]*> ef22 4152 vmov q2, q1 +[^>]*> ef22 4152 vmov q2, q1 +[^>]*> ef22 4152 vmov q2, q1 +[^>]*> ef22 4152 vmov q2, q1 +[^>]*> ef22 4152 vmov q2, q1 +[^>]*> ef22 4152 vmov q2, q1 +[^>]*> ef22 4152 vmov q2, q1 [^>]*> ef22 4154 vorr q2, q1, q2 [^>]*> ef22 4154 vorr q2, q1, q2 [^>]*> ef22 4154 vorr q2, q1, q2 @@ -501,14 +501,14 @@ Disassembly of section .text: [^>]*> ef24 4152 vorr q2, q2, q1 [^>]*> ef24 4152 vorr q2, q2, q1 [^>]*> ef24 4152 vorr q2, q2, q1 -[^>]*> ef24 4154 vorr q2, q2, q2 -[^>]*> ef24 4154 vorr q2, q2, q2 -[^>]*> ef24 4154 vorr q2, q2, q2 -[^>]*> ef24 4154 vorr q2, q2, q2 -[^>]*> ef24 4154 vorr q2, q2, q2 -[^>]*> ef24 4154 vorr q2, q2, q2 -[^>]*> ef24 4154 vorr q2, q2, q2 -[^>]*> ef24 4154 vorr q2, q2, q2 +[^>]*> ef24 4154 vmov q2, q2 +[^>]*> ef24 4154 vmov q2, q2 +[^>]*> ef24 4154 vmov q2, q2 +[^>]*> ef24 4154 vmov q2, q2 +[^>]*> ef24 4154 vmov q2, q2 +[^>]*> ef24 4154 vmov q2, q2 +[^>]*> ef24 4154 vmov q2, q2 +[^>]*> ef24 4154 vmov q2, q2 [^>]*> ef24 4158 vorr q2, q2, q4 [^>]*> ef24 4158 vorr q2, q2, q4 [^>]*> ef24 4158 vorr q2, q2, q4 @@ -549,14 +549,14 @@ Disassembly of section .text: [^>]*> ef28 4154 vorr q2, q4, q2 [^>]*> ef28 4154 vorr q2, q4, q2 [^>]*> ef28 4154 vorr q2, q4, q2 -[^>]*> ef28 4158 vorr q2, q4, q4 -[^>]*> ef28 4158 vorr q2, q4, q4 -[^>]*> ef28 4158 vorr q2, q4, q4 -[^>]*> ef28 4158 vorr q2, q4, q4 -[^>]*> ef28 4158 vorr q2, q4, q4 -[^>]*> ef28 4158 vorr q2, q4, q4 -[^>]*> ef28 4158 vorr q2, q4, q4 -[^>]*> ef28 4158 vorr q2, q4, q4 +[^>]*> ef28 4158 vmov q2, q4 +[^>]*> ef28 4158 vmov q2, q4 +[^>]*> ef28 4158 vmov q2, q4 +[^>]*> ef28 4158 vmov q2, q4 +[^>]*> ef28 4158 vmov q2, q4 +[^>]*> ef28 4158 vmov q2, q4 +[^>]*> ef28 4158 vmov q2, q4 +[^>]*> ef28 4158 vmov q2, q4 [^>]*> ef28 415e vorr q2, q4, q7 [^>]*> ef28 415e vorr q2, q4, q7 [^>]*> ef28 415e vorr q2, q4, q7 @@ -597,22 +597,22 @@ Disassembly of section .text: [^>]*> ef2e 4158 vorr q2, q7, q4 [^>]*> ef2e 4158 vorr q2, q7, q4 [^>]*> ef2e 4158 vorr q2, q7, q4 -[^>]*> ef2e 415e vorr q2, q7, q7 -[^>]*> ef2e 415e vorr q2, q7, q7 -[^>]*> ef2e 415e vorr q2, q7, q7 -[^>]*> ef2e 415e vorr q2, q7, q7 -[^>]*> ef2e 415e vorr q2, q7, q7 -[^>]*> ef2e 415e vorr q2, q7, q7 -[^>]*> ef2e 415e vorr q2, q7, q7 -[^>]*> ef2e 415e vorr q2, q7, q7 -[^>]*> ef20 8150 vorr q4, q0, q0 -[^>]*> ef20 8150 vorr q4, q0, q0 -[^>]*> ef20 8150 vorr q4, q0, q0 -[^>]*> ef20 8150 vorr q4, q0, q0 -[^>]*> ef20 8150 vorr q4, q0, q0 -[^>]*> ef20 8150 vorr q4, q0, q0 -[^>]*> ef20 8150 vorr q4, q0, q0 -[^>]*> ef20 8150 vorr q4, q0, q0 +[^>]*> ef2e 415e vmov q2, q7 +[^>]*> ef2e 415e vmov q2, q7 +[^>]*> ef2e 415e vmov q2, q7 +[^>]*> ef2e 415e vmov q2, q7 +[^>]*> ef2e 415e vmov q2, q7 +[^>]*> ef2e 415e vmov q2, q7 +[^>]*> ef2e 415e vmov q2, q7 +[^>]*> ef2e 415e vmov q2, q7 +[^>]*> ef20 8150 vmov q4, q0 +[^>]*> ef20 8150 vmov q4, q0 +[^>]*> ef20 8150 vmov q4, q0 +[^>]*> ef20 8150 vmov q4, q0 +[^>]*> ef20 8150 vmov q4, q0 +[^>]*> ef20 8150 vmov q4, q0 +[^>]*> ef20 8150 vmov q4, q0 +[^>]*> ef20 8150 vmov q4, q0 [^>]*> ef20 8152 vorr q4, q0, q1 [^>]*> ef20 8152 vorr q4, q0, q1 [^>]*> ef20 8152 vorr q4, q0, q1 @@ -653,14 +653,14 @@ Disassembly of section .text: [^>]*> ef22 8150 vorr q4, q1, q0 [^>]*> ef22 8150 vorr q4, q1, q0 [^>]*> ef22 8150 vorr q4, q1, q0 -[^>]*> ef22 8152 vorr q4, q1, q1 -[^>]*> ef22 8152 vorr q4, q1, q1 -[^>]*> ef22 8152 vorr q4, q1, q1 -[^>]*> ef22 8152 vorr q4, q1, q1 -[^>]*> ef22 8152 vorr q4, q1, q1 -[^>]*> ef22 8152 vorr q4, q1, q1 -[^>]*> ef22 8152 vorr q4, q1, q1 -[^>]*> ef22 8152 vorr q4, q1, q1 +[^>]*> ef22 8152 vmov q4, q1 +[^>]*> ef22 8152 vmov q4, q1 +[^>]*> ef22 8152 vmov q4, q1 +[^>]*> ef22 8152 vmov q4, q1 +[^>]*> ef22 8152 vmov q4, q1 +[^>]*> ef22 8152 vmov q4, q1 +[^>]*> ef22 8152 vmov q4, q1 +[^>]*> ef22 8152 vmov q4, q1 [^>]*> ef22 8154 vorr q4, q1, q2 [^>]*> ef22 8154 vorr q4, q1, q2 [^>]*> ef22 8154 vorr q4, q1, q2 @@ -701,14 +701,14 @@ Disassembly of section .text: [^>]*> ef24 8152 vorr q4, q2, q1 [^>]*> ef24 8152 vorr q4, q2, q1 [^>]*> ef24 8152 vorr q4, q2, q1 -[^>]*> ef24 8154 vorr q4, q2, q2 -[^>]*> ef24 8154 vorr q4, q2, q2 -[^>]*> ef24 8154 vorr q4, q2, q2 -[^>]*> ef24 8154 vorr q4, q2, q2 -[^>]*> ef24 8154 vorr q4, q2, q2 -[^>]*> ef24 8154 vorr q4, q2, q2 -[^>]*> ef24 8154 vorr q4, q2, q2 -[^>]*> ef24 8154 vorr q4, q2, q2 +[^>]*> ef24 8154 vmov q4, q2 +[^>]*> ef24 8154 vmov q4, q2 +[^>]*> ef24 8154 vmov q4, q2 +[^>]*> ef24 8154 vmov q4, q2 +[^>]*> ef24 8154 vmov q4, q2 +[^>]*> ef24 8154 vmov q4, q2 +[^>]*> ef24 8154 vmov q4, q2 +[^>]*> ef24 8154 vmov q4, q2 [^>]*> ef24 8158 vorr q4, q2, q4 [^>]*> ef24 8158 vorr q4, q2, q4 [^>]*> ef24 8158 vorr q4, q2, q4 @@ -749,14 +749,14 @@ Disassembly of section .text: [^>]*> ef28 8154 vorr q4, q4, q2 [^>]*> ef28 8154 vorr q4, q4, q2 [^>]*> ef28 8154 vorr q4, q4, q2 -[^>]*> ef28 8158 vorr q4, q4, q4 -[^>]*> ef28 8158 vorr q4, q4, q4 -[^>]*> ef28 8158 vorr q4, q4, q4 -[^>]*> ef28 8158 vorr q4, q4, q4 -[^>]*> ef28 8158 vorr q4, q4, q4 -[^>]*> ef28 8158 vorr q4, q4, q4 -[^>]*> ef28 8158 vorr q4, q4, q4 -[^>]*> ef28 8158 vorr q4, q4, q4 +[^>]*> ef28 8158 vmov q4, q4 +[^>]*> ef28 8158 vmov q4, q4 +[^>]*> ef28 8158 vmov q4, q4 +[^>]*> ef28 8158 vmov q4, q4 +[^>]*> ef28 8158 vmov q4, q4 +[^>]*> ef28 8158 vmov q4, q4 +[^>]*> ef28 8158 vmov q4, q4 +[^>]*> ef28 8158 vmov q4, q4 [^>]*> ef28 815e vorr q4, q4, q7 [^>]*> ef28 815e vorr q4, q4, q7 [^>]*> ef28 815e vorr q4, q4, q7 @@ -797,22 +797,22 @@ Disassembly of section .text: [^>]*> ef2e 8158 vorr q4, q7, q4 [^>]*> ef2e 8158 vorr q4, q7, q4 [^>]*> ef2e 8158 vorr q4, q7, q4 -[^>]*> ef2e 815e vorr q4, q7, q7 -[^>]*> ef2e 815e vorr q4, q7, q7 -[^>]*> ef2e 815e vorr q4, q7, q7 -[^>]*> ef2e 815e vorr q4, q7, q7 -[^>]*> ef2e 815e vorr q4, q7, q7 -[^>]*> ef2e 815e vorr q4, q7, q7 -[^>]*> ef2e 815e vorr q4, q7, q7 -[^>]*> ef2e 815e vorr q4, q7, q7 -[^>]*> ef20 e150 vorr q7, q0, q0 -[^>]*> ef20 e150 vorr q7, q0, q0 -[^>]*> ef20 e150 vorr q7, q0, q0 -[^>]*> ef20 e150 vorr q7, q0, q0 -[^>]*> ef20 e150 vorr q7, q0, q0 -[^>]*> ef20 e150 vorr q7, q0, q0 -[^>]*> ef20 e150 vorr q7, q0, q0 -[^>]*> ef20 e150 vorr q7, q0, q0 +[^>]*> ef2e 815e vmov q4, q7 +[^>]*> ef2e 815e vmov q4, q7 +[^>]*> ef2e 815e vmov q4, q7 +[^>]*> ef2e 815e vmov q4, q7 +[^>]*> ef2e 815e vmov q4, q7 +[^>]*> ef2e 815e vmov q4, q7 +[^>]*> ef2e 815e vmov q4, q7 +[^>]*> ef2e 815e vmov q4, q7 +[^>]*> ef20 e150 vmov q7, q0 +[^>]*> ef20 e150 vmov q7, q0 +[^>]*> ef20 e150 vmov q7, q0 +[^>]*> ef20 e150 vmov q7, q0 +[^>]*> ef20 e150 vmov q7, q0 +[^>]*> ef20 e150 vmov q7, q0 +[^>]*> ef20 e150 vmov q7, q0 +[^>]*> ef20 e150 vmov q7, q0 [^>]*> ef20 e152 vorr q7, q0, q1 [^>]*> ef20 e152 vorr q7, q0, q1 [^>]*> ef20 e152 vorr q7, q0, q1 @@ -853,14 +853,14 @@ Disassembly of section .text: [^>]*> ef22 e150 vorr q7, q1, q0 [^>]*> ef22 e150 vorr q7, q1, q0 [^>]*> ef22 e150 vorr q7, q1, q0 -[^>]*> ef22 e152 vorr q7, q1, q1 -[^>]*> ef22 e152 vorr q7, q1, q1 -[^>]*> ef22 e152 vorr q7, q1, q1 -[^>]*> ef22 e152 vorr q7, q1, q1 -[^>]*> ef22 e152 vorr q7, q1, q1 -[^>]*> ef22 e152 vorr q7, q1, q1 -[^>]*> ef22 e152 vorr q7, q1, q1 -[^>]*> ef22 e152 vorr q7, q1, q1 +[^>]*> ef22 e152 vmov q7, q1 +[^>]*> ef22 e152 vmov q7, q1 +[^>]*> ef22 e152 vmov q7, q1 +[^>]*> ef22 e152 vmov q7, q1 +[^>]*> ef22 e152 vmov q7, q1 +[^>]*> ef22 e152 vmov q7, q1 +[^>]*> ef22 e152 vmov q7, q1 +[^>]*> ef22 e152 vmov q7, q1 [^>]*> ef22 e154 vorr q7, q1, q2 [^>]*> ef22 e154 vorr q7, q1, q2 [^>]*> ef22 e154 vorr q7, q1, q2 @@ -901,14 +901,14 @@ Disassembly of section .text: [^>]*> ef24 e152 vorr q7, q2, q1 [^>]*> ef24 e152 vorr q7, q2, q1 [^>]*> ef24 e152 vorr q7, q2, q1 -[^>]*> ef24 e154 vorr q7, q2, q2 -[^>]*> ef24 e154 vorr q7, q2, q2 -[^>]*> ef24 e154 vorr q7, q2, q2 -[^>]*> ef24 e154 vorr q7, q2, q2 -[^>]*> ef24 e154 vorr q7, q2, q2 -[^>]*> ef24 e154 vorr q7, q2, q2 -[^>]*> ef24 e154 vorr q7, q2, q2 -[^>]*> ef24 e154 vorr q7, q2, q2 +[^>]*> ef24 e154 vmov q7, q2 +[^>]*> ef24 e154 vmov q7, q2 +[^>]*> ef24 e154 vmov q7, q2 +[^>]*> ef24 e154 vmov q7, q2 +[^>]*> ef24 e154 vmov q7, q2 +[^>]*> ef24 e154 vmov q7, q2 +[^>]*> ef24 e154 vmov q7, q2 +[^>]*> ef24 e154 vmov q7, q2 [^>]*> ef24 e158 vorr q7, q2, q4 [^>]*> ef24 e158 vorr q7, q2, q4 [^>]*> ef24 e158 vorr q7, q2, q4 @@ -949,14 +949,14 @@ Disassembly of section .text: [^>]*> ef28 e154 vorr q7, q4, q2 [^>]*> ef28 e154 vorr q7, q4, q2 [^>]*> ef28 e154 vorr q7, q4, q2 -[^>]*> ef28 e158 vorr q7, q4, q4 -[^>]*> ef28 e158 vorr q7, q4, q4 -[^>]*> ef28 e158 vorr q7, q4, q4 -[^>]*> ef28 e158 vorr q7, q4, q4 -[^>]*> ef28 e158 vorr q7, q4, q4 -[^>]*> ef28 e158 vorr q7, q4, q4 -[^>]*> ef28 e158 vorr q7, q4, q4 -[^>]*> ef28 e158 vorr q7, q4, q4 +[^>]*> ef28 e158 vmov q7, q4 +[^>]*> ef28 e158 vmov q7, q4 +[^>]*> ef28 e158 vmov q7, q4 +[^>]*> ef28 e158 vmov q7, q4 +[^>]*> ef28 e158 vmov q7, q4 +[^>]*> ef28 e158 vmov q7, q4 +[^>]*> ef28 e158 vmov q7, q4 +[^>]*> ef28 e158 vmov q7, q4 [^>]*> ef28 e15e vorr q7, q4, q7 [^>]*> ef28 e15e vorr q7, q4, q7 [^>]*> ef28 e15e vorr q7, q4, q7 @@ -997,14 +997,14 @@ Disassembly of section .text: [^>]*> ef2e e158 vorr q7, q7, q4 [^>]*> ef2e e158 vorr q7, q7, q4 [^>]*> ef2e e158 vorr q7, q7, q4 -[^>]*> ef2e e15e vorr q7, q7, q7 -[^>]*> ef2e e15e vorr q7, q7, q7 -[^>]*> ef2e e15e vorr q7, q7, q7 -[^>]*> ef2e e15e vorr q7, q7, q7 -[^>]*> ef2e e15e vorr q7, q7, q7 -[^>]*> ef2e e15e vorr q7, q7, q7 -[^>]*> ef2e e15e vorr q7, q7, q7 -[^>]*> ef2e e15e vorr q7, q7, q7 +[^>]*> ef2e e15e vmov q7, q7 +[^>]*> ef2e e15e vmov q7, q7 +[^>]*> ef2e e15e vmov q7, q7 +[^>]*> ef2e e15e vmov q7, q7 +[^>]*> ef2e e15e vmov q7, q7 +[^>]*> ef2e e15e vmov q7, q7 +[^>]*> ef2e e15e vmov q7, q7 +[^>]*> ef2e e15e vmov q7, q7 [^>]*> ef80 0150 vorr.i32 q0, #0 ; 0x00000000 [^>]*> ff87 015f vorr.i32 q0, #255 ; 0x000000ff [^>]*> ff87 035f vorr.i32 q0, #65280 ; 0x0000ff00 diff --git a/opcodes/ChangeLog b/opcodes/ChangeLog index 0017bd47f5..bec2b59cc4 100644 --- a/opcodes/ChangeLog +++ b/opcodes/ChangeLog @@ -1,3 +1,9 @@ +2019-08-27 Srinath Parvathaneni + + * arm-dis.c (mve_opcodes): Add entry for MVE_VMOV_VEC_TO_VEC. + (is_mve_undefined): Add case for MVE_VMOV_VEC_TO_VEC. + (print_insn_mve): Add condition to check Qm==Qn of VORR instruction. + 2019-08-22 Kyrylo Tkachov * aarch64-opc.c (aarch64_sys_regs): Update encoding of tfsre0_el1, diff --git a/opcodes/arm-dis.c b/opcodes/arm-dis.c index 50d1306c19..8ff86bf4d6 100644 --- a/opcodes/arm-dis.c +++ b/opcodes/arm-dis.c @@ -2951,6 +2951,16 @@ static const struct mopcode32 mve_opcodes[] = 0xef200150, 0xffb11f51, "vorr%v\t%13-15,22Q, %17-19,7Q, %1-3,5Q"}, + /* Vector VMOV, vector to vector move. While decoding MVE_VORR_REG if + "Qm==Qn", VORR should replaced by its alias VMOV. For that to happen + MVE_VMOV_VEC_TO_VEC need to placed after MVE_VORR_REG in this mve_opcodes + array. */ + + {ARM_FEATURE_COPROC (FPU_MVE), + MVE_VMOV_VEC_TO_VEC, + 0xef200150, 0xffb11f51, + "vmov%v\t%13-15,22Q, %17-19,7Q"}, + /* Vector VQDMULL T1 variant. */ {ARM_FEATURE_COPROC (FPU_MVE), MVE_VQDMULL_T1, @@ -6104,6 +6114,12 @@ is_mve_undefined (unsigned long given, enum mve_instructions matched_insn, else return FALSE; + case MVE_VMOV_VEC_TO_VEC: + if ((arm_decode_field (given, 5, 5) == 1) + || (arm_decode_field (given, 22, 22) == 1)) + return TRUE; + return FALSE; + case MVE_VMOV_IMM_TO_VEC: if (arm_decode_field (given, 5, 5) == 0) { @@ -9214,6 +9230,13 @@ print_insn_mve (struct disassemble_info *info, long given) if (is_mve_undefined (given, insn->mve_op, &undefined_cond)) is_undefined = TRUE; + /* In "VORR Qd, Qm, Qn", if Qm==Qn, VORR is nothing but VMOV, + i.e "VMOV Qd, Qm". */ + if ((insn->mve_op == MVE_VORR_REG) + && (arm_decode_field (given, 1, 3) + == arm_decode_field (given, 17, 19))) + continue; + for (c = insn->assembler; *c; c++) { if (*c == '%') -- 2.34.1