[PATCH][ARM][BINUTILS] Support for MVE VMOV instruction.

Srinath Parvathaneni Srinath.Parvathaneni@arm.com
Fri Aug 23 17:02:00 GMT 2019


Hello,

This patch supports MVE VMOV instruction which copy the value of one vector register to another vector register.
This patch also modifies the decoding of VORR instruction which is effecting decoding of VMOV instruction.

Example1:

$ cat test.s
vmov q0, q1

Before this patch:

$ arm-none-eabi-as test.s -march=armv8.1-m.main+mve -mfloat-abi=hard
test.s: Assembler messages:
test.s:1: Error: expected <Rm> or <Dm> or <Qm> operand -- `vmov q0,q1'

After assembler support by this patch:

Disassembly of section .text:
00000000 <.text> ef22 0152 	vorr	q0, q1, q1

After assembler and disassembler support by this patch:

Disassembly of section .text:
00000000 <.text> ef22 0152 	vmov	q0, q1


Example2:

$cat test.s
vorr q0, q1, q2
vorr q0, q1, q1


Before this patch:

Disassembly of section .text:
00000000 <.text> ef22 0154 	vorr	q0, q1, q2
00000004 <.text+0x4> ef22 0152 	vorr	q0, q1, q1


After this patch:

Disassembly of section .text:
00000000 <.text> ef22 0154 	vorr	q0, q1, q2
00000004 <.text+0x4> ef22 0152 	vmov	q0, q1


For more details about the above mentioned instructions please refer to latest arm architecture reference manual [1].

[1] https://developer.arm.com/architectures/cpu-architecture/m-profile/docs/ddi0553/latest/armv81-m-architecture-reference-manual

Bootstrapped on arm-none-linux-gnueabihf and regression tested on arm-none-eabi with no regressions.

Ok for master? If okay please commit on my behalf, I don't
have the commit rights.

Thanks,
Srinath.

gas ChangeLog:

2019-08-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>

	* gas/config/tc-arm.c (parse_neon_mov): Add check to accept vector
	register to both the arguments in VMOV instruction.
	* gas/testsuite/gas/arm/mve-vmov-1.d: Modify.
	* gas/testsuite/gas/arm/mve-vmov-1.s: Likewise.
	* gas/testsuite/gas/arm/mve-vorr.d: Likewise.

opcodes ChangeLog:

2019-08-23  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>

	* 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.


###############     Attachment also inlined for ease of reply    ###############


diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c
index e2b21ed915f4ede69ef926d6144d7a87e2dacdf4..1a968ca173640edf1e84f230d966eee838ad6b17 100644
--- a/gas/config/tc-arm.c
+++ b/gas/config/tc-arm.c
@@ -6748,8 +6748,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<c><q> <Qd>, <Qm>
 	     Case 1: VMOV<c><q> <Dd>, <Dm>
diff --git a/gas/testsuite/gas/arm/mve-vmov-1.d b/gas/testsuite/gas/arm/mve-vmov-1.d
index 5f317d86467501091b8ab53a04dd47c9d6ea9a74..504b3e79365b355e8647d07747ecabde6429dc57 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 60c77d0a7c2d6705ce8f48f41cad41b9231b51d0..d24fae60f37336176b2de88f6e2bb04ec29f9d4c 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 72dcc8953840c7baafac7ed36dd2a343bd23cf2e..96a69d8d13cfaf8773181e45ab1b3821679ddb69 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/arm-dis.c b/opcodes/arm-dis.c
index 50d1306c19d950ba0c22cb72fcb2ccfd317795c8..8ff86bf4d62ff69ed9a4a5f3f5bc5c81b3abbe85 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 == '%')

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: rb11683.patch.patch
URL: <https://sourceware.org/pipermail/binutils/attachments/20190823/8bae0ff2/attachment.ksh>


More information about the Binutils mailing list