From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1130) id E36A33858C53; Thu, 30 Mar 2023 10:16:24 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org E36A33858C53 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Richard Sandiford To: bfd-cvs@sourceware.org Subject: [binutils-gdb] aarch64: Add the SME2 UZP and ZIP instructions X-Act-Checkin: binutils-gdb X-Git-Author: Richard Sandiford X-Git-Refname: refs/heads/master X-Git-Oldrev: fa64dc802c82d07b93ac7d3c072a9ccbb99c6c0f X-Git-Newrev: 7bd1d20e174fa324e02c334f8bfd1c1614233962 Message-Id: <20230330101624.E36A33858C53@sourceware.org> Date: Thu, 30 Mar 2023 10:16:24 +0000 (GMT) X-BeenThere: binutils-cvs@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 30 Mar 2023 10:16:25 -0000 https://sourceware.org/git/gitweb.cgi?p=3Dbinutils-gdb.git;h=3D7bd1d20e174f= a324e02c334f8bfd1c1614233962 commit 7bd1d20e174fa324e02c334f8bfd1c1614233962 Author: Richard Sandiford Date: Thu Mar 30 11:09:16 2023 +0100 aarch64: Add the SME2 UZP and ZIP instructions =20 This patch adds UZP and ZIP, which combine UZP{1,2} and ZIP{1,2} into single instructions. Diff: --- gas/testsuite/gas/aarch64/sme2-30-invalid.d | 3 + gas/testsuite/gas/aarch64/sme2-30-invalid.l | 29 ++ gas/testsuite/gas/aarch64/sme2-30-invalid.s | 18 + gas/testsuite/gas/aarch64/sme2-30-noarch.d | 3 + gas/testsuite/gas/aarch64/sme2-30-noarch.l | 91 ++++ gas/testsuite/gas/aarch64/sme2-30.d | 99 ++++ gas/testsuite/gas/aarch64/sme2-30.s | 109 ++++ opcodes/aarch64-dis-2.c | 764 ++++++++++++++++--------= ---- opcodes/aarch64-tbl.h | 12 + 9 files changed, 790 insertions(+), 338 deletions(-) diff --git a/gas/testsuite/gas/aarch64/sme2-30-invalid.d b/gas/testsuite/ga= s/aarch64/sme2-30-invalid.d new file mode 100644 index 00000000000..535abe3f490 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme2-30-invalid.d @@ -0,0 +1,3 @@ +#as: -march=3Darmv8-a +#source: sme2-30-invalid.s +#error_output: sme2-30-invalid.l diff --git a/gas/testsuite/gas/aarch64/sme2-30-invalid.l b/gas/testsuite/ga= s/aarch64/sme2-30-invalid.l new file mode 100644 index 00000000000..6805ddba39c --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme2-30-invalid.l @@ -0,0 +1,29 @@ +[^ :]+: Assembler messages: +[^ :]+:[0-9]+: Error: expected '{' at operand 1 -- `uzp 0,z0\.b,z0\.b' +[^ :]+:[0-9]+: Error: expected a register or register list at operand 2 --= `uzp {z0\.b-z1\.b},0,z0\.b' +[^ :]+:[0-9]+: Error: expected an SVE vector register at operand 3 -- `uzp= {z0\.b-z1\.b},z0\.b,0' +[^ :]+:[0-9]+: Error: start register out of range at operand 1 -- `uzp {z1= \.b-z2\.b},z0\.b,z0\.b' +[^ :]+:[0-9]+: Error: expected a list of 2 registers at operand 1 -- `uzp = {z0\.b-z2\.b},z0\.b,z0\.b' +[^ :]+:[0-9]+: Error: expected a list of 2 registers at operand 1 -- `uzp = {z0\.b-z3\.b},z0\.b,z0\.b' +[^ :]+:[0-9]+: Error: unexpected characters following instruction at opera= nd 2 -- `uzp {z0\.b-z1\.b},{z0\.b-z1\.b},{z0\.b,z1\.b}' +[^ :]+:[0-9]+: Error: operand mismatch -- `uzp {z0\.h-z1\.h},z0\.b,z0\.b' +[^ :]+:[0-9]+: Info: did you mean this\? +[^ :]+:[0-9]+: Info: uzp {z0\.b-z1\.b}, z0\.b, z0\.b +[^ :]+:[0-9]+: Info: other valid variant\(s\): +[^ :]+:[0-9]+: Info: uzp {z0\.h-z1\.h}, z0\.h, z0\.h +[^ :]+:[0-9]+: Info: uzp {z0\.s-z1\.s}, z0\.s, z0\.s +[^ :]+:[0-9]+: Info: uzp {z0\.d-z1\.d}, z0\.d, z0\.d +[^ :]+:[0-9]+: Error: operand mismatch -- `uzp {z0\.q-z3\.q},z0\.b,z0\.b' +[^ :]+:[0-9]+: Info: did you mean this\? +[^ :]+:[0-9]+: Info: uzp {z0\.b-z3\.b}, z0\.b, z0\.b +[^ :]+:[0-9]+: Info: other valid variant\(s\): +[^ :]+:[0-9]+: Info: uzp {z0\.h-z3\.h}, z0\.h, z0\.h +[^ :]+:[0-9]+: Info: uzp {z0\.s-z3\.s}, z0\.s, z0\.s +[^ :]+:[0-9]+: Info: uzp {z0\.d-z3\.d}, z0\.d, z0\.d +[^ :]+:[0-9]+: Error: unexpected characters following instruction at opera= nd 2 -- `uzp {z0\.b-z3\.b},{z0\.b-z1\.b},{z2\.b-z3\.b}' +[^ :]+:[0-9]+: Error: start register out of range at operand 1 -- `uzp {z1= \.b-z4\.b},{z0\.b-z3\.b}' +[^ :]+:[0-9]+: Error: start register out of range at operand 1 -- `uzp {z2= \.b-z5\.b},{z0\.b-z3\.b}' +[^ :]+:[0-9]+: Error: start register out of range at operand 1 -- `uzp {z3= \.b-z6\.b},{z0\.b-z3\.b}' +[^ :]+:[0-9]+: Error: start register out of range at operand 2 -- `uzp {z0= \.b-z3\.b},{z1\.b-z4\.b}' +[^ :]+:[0-9]+: Error: start register out of range at operand 2 -- `uzp {z0= \.b-z3\.b},{z2\.b-z5\.b}' +[^ :]+:[0-9]+: Error: start register out of range at operand 2 -- `uzp {z0= \.b-z3\.b},{z3\.b-z6\.b}' diff --git a/gas/testsuite/gas/aarch64/sme2-30-invalid.s b/gas/testsuite/ga= s/aarch64/sme2-30-invalid.s new file mode 100644 index 00000000000..2d3dd1b2604 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme2-30-invalid.s @@ -0,0 +1,18 @@ + uzp 0, z0.b, z0.b + uzp { z0.b - z1.b }, 0, z0.b + uzp { z0.b - z1.b }, z0.b, 0 + + uzp { z1.b - z2.b }, z0.b, z0.b + uzp { z0.b - z2.b }, z0.b, z0.b + uzp { z0.b - z3.b }, z0.b, z0.b + uzp { z0.b - z1.b }, { z0.b - z1.b }, { z0.b, z1.b } + uzp { z0.h - z1.h }, z0.b, z0.b + uzp { z0.q - z3.q }, z0.b, z0.b + + uzp { z0.b - z3.b }, { z0.b - z1.b }, { z2.b - z3.b } + uzp { z1.b - z4.b }, { z0.b - z3.b } + uzp { z2.b - z5.b }, { z0.b - z3.b } + uzp { z3.b - z6.b }, { z0.b - z3.b } + uzp { z0.b - z3.b }, { z1.b - z4.b } + uzp { z0.b - z3.b }, { z2.b - z5.b } + uzp { z0.b - z3.b }, { z3.b - z6.b } diff --git a/gas/testsuite/gas/aarch64/sme2-30-noarch.d b/gas/testsuite/gas= /aarch64/sme2-30-noarch.d new file mode 100644 index 00000000000..c58d102b75b --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme2-30-noarch.d @@ -0,0 +1,3 @@ +#as: -march=3Darmv8-a+sme +#source: sme2-30.s +#error_output: sme2-30-noarch.l diff --git a/gas/testsuite/gas/aarch64/sme2-30-noarch.l b/gas/testsuite/gas= /aarch64/sme2-30-noarch.l new file mode 100644 index 00000000000..e3ddd704860 --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme2-30-noarch.l @@ -0,0 +1,91 @@ +[^ :]+: Assembler messages: +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.b-z1\.= b},z0\.b,z0\.b' +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z30\.b-z31= \.b},z0\.b,z0\.b' +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.b-z1\.= b},z31\.b,z0\.b' +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.b-z1\.= b},z0\.b,z31\.b' +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z18\.b-z19= \.b},z11\.b,z25\.b' +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.h-z1\.= h},z0\.h,z0\.h' +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z30\.h-z31= \.h},z0\.h,z0\.h' +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.h-z1\.= h},z31\.h,z0\.h' +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.h-z1\.= h},z0\.h,z31\.h' +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z6\.h-z7\.= h},z8\.h,z22\.h' +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.s-z1\.= s},z0\.s,z0\.s' +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z30\.s-z31= \.s},z0\.s,z0\.s' +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.s-z1\.= s},z31\.s,z0\.s' +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.s-z1\.= s},z0\.s,z31\.s' +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z24\.s-z25= \.s},z19\.s,z2\.s' +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.d-z1\.= d},z0\.d,z0\.d' +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z30\.d-z31= \.d},z0\.d,z0\.d' +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.d-z1\.= d},z31\.d,z0\.d' +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.d-z1\.= d},z0\.d,z31\.d' +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z2\.d-z3\.= d},z29\.d,z5\.d' +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.q-z1\.= q},z0\.q,z0\.q' +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z30\.q-z31= \.q},z0\.q,z0\.q' +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.q-z1\.= q},z31\.q,z0\.q' +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.q-z1\.= q},z0\.q,z31\.q' +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z14\.q-z15= \.q},z24\.q,z9\.q' +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.b-z3\.= b},{z0\.b-z3\.b}' +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z28\.b-z31= \.b},{z0\.b-z3\.b}' +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.b-z3\.= b},{z28\.b-z31\.b}' +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z4\.b-z7\.= b},{z24\.b-z27\.b}' +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.h-z3\.= h},{z0\.h-z3\.h}' +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z28\.h-z31= \.h},{z0\.h-z3\.h}' +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.h-z3\.= h},{z28\.h-z31\.h}' +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z16\.h-z19= \.h},{z8\.h-z11\.h}' +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.s-z3\.= s},{z0\.s-z3\.s}' +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z28\.s-z31= \.s},{z0\.s-z3\.s}' +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.s-z3\.= s},{z28\.s-z31\.s}' +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z20\.s-z23= \.s},{z12\.s-z15\.s}' +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.d-z3\.= d},{z0\.d-z3\.d}' +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z28\.d-z31= \.d},{z0\.d-z3\.d}' +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.d-z3\.= d},{z28\.d-z31\.d}' +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z8\.d-z11\= .d},{z16\.d-z19\.d}' +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.q-z3\.= q},{z0\.q-z3\.q}' +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z28\.q-z31= \.q},{z0\.q-z3\.q}' +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z0\.q-z3\.= q},{z28\.q-z31\.q}' +[^ :]+:[0-9]+: Error: selected processor does not support `uzp {z12\.q-z15= \.q},{z4\.q-z7\.q}' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.b-z1\.= b},z0\.b,z0\.b' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z30\.b-z31= \.b},z0\.b,z0\.b' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.b-z1\.= b},z31\.b,z0\.b' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.b-z1\.= b},z0\.b,z31\.b' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z18\.b-z19= \.b},z11\.b,z25\.b' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.h-z1\.= h},z0\.h,z0\.h' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z30\.h-z31= \.h},z0\.h,z0\.h' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.h-z1\.= h},z31\.h,z0\.h' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.h-z1\.= h},z0\.h,z31\.h' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z6\.h-z7\.= h},z8\.h,z22\.h' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.s-z1\.= s},z0\.s,z0\.s' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z30\.s-z31= \.s},z0\.s,z0\.s' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.s-z1\.= s},z31\.s,z0\.s' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.s-z1\.= s},z0\.s,z31\.s' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z24\.s-z25= \.s},z19\.s,z2\.s' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.d-z1\.= d},z0\.d,z0\.d' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z30\.d-z31= \.d},z0\.d,z0\.d' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.d-z1\.= d},z31\.d,z0\.d' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.d-z1\.= d},z0\.d,z31\.d' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z2\.d-z3\.= d},z29\.d,z5\.d' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.q-z1\.= q},z0\.q,z0\.q' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z30\.q-z31= \.q},z0\.q,z0\.q' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.q-z1\.= q},z31\.q,z0\.q' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.q-z1\.= q},z0\.q,z31\.q' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z14\.q-z15= \.q},z24\.q,z9\.q' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.b-z3\.= b},{z0\.b-z3\.b}' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z28\.b-z31= \.b},{z0\.b-z3\.b}' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.b-z3\.= b},{z28\.b-z31\.b}' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z4\.b-z7\.= b},{z24\.b-z27\.b}' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.h-z3\.= h},{z0\.h-z3\.h}' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z28\.h-z31= \.h},{z0\.h-z3\.h}' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.h-z3\.= h},{z28\.h-z31\.h}' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z16\.h-z19= \.h},{z8\.h-z11\.h}' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.s-z3\.= s},{z0\.s-z3\.s}' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z28\.s-z31= \.s},{z0\.s-z3\.s}' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.s-z3\.= s},{z28\.s-z31\.s}' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z20\.s-z23= \.s},{z12\.s-z15\.s}' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.d-z3\.= d},{z0\.d-z3\.d}' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z28\.d-z31= \.d},{z0\.d-z3\.d}' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.d-z3\.= d},{z28\.d-z31\.d}' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z8\.d-z11\= .d},{z16\.d-z19\.d}' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.q-z3\.= q},{z0\.q-z3\.q}' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z28\.q-z31= \.q},{z0\.q-z3\.q}' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z0\.q-z3\.= q},{z28\.q-z31\.q}' +[^ :]+:[0-9]+: Error: selected processor does not support `zip {z12\.q-z15= \.q},{z4\.q-z7\.q}' diff --git a/gas/testsuite/gas/aarch64/sme2-30.d b/gas/testsuite/gas/aarch6= 4/sme2-30.d new file mode 100644 index 00000000000..2db95e0a83a --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme2-30.d @@ -0,0 +1,99 @@ +#as: -march=3Darmv8-a+sme2 +#objdump: -dr + +[^:]+: file format .* + + +[^:]+: + +[^:]+: +[^:]+: c120d001 uzp {z0\.b-z1\.b}, z0\.b, z0\.b +[^:]+: c120d01f uzp {z30\.b-z31\.b}, z0\.b, z0\.b +[^:]+: c120d3e1 uzp {z0\.b-z1\.b}, z31\.b, z0\.b +[^:]+: c13fd001 uzp {z0\.b-z1\.b}, z0\.b, z31\.b +[^:]+: c139d173 uzp {z18\.b-z19\.b}, z11\.b, z25\.b +[^:]+: c160d001 uzp {z0\.h-z1\.h}, z0\.h, z0\.h +[^:]+: c160d01f uzp {z30\.h-z31\.h}, z0\.h, z0\.h +[^:]+: c160d3e1 uzp {z0\.h-z1\.h}, z31\.h, z0\.h +[^:]+: c17fd001 uzp {z0\.h-z1\.h}, z0\.h, z31\.h +[^:]+: c176d107 uzp {z6\.h-z7\.h}, z8\.h, z22\.h +[^:]+: c1a0d001 uzp {z0\.s-z1\.s}, z0\.s, z0\.s +[^:]+: c1a0d01f uzp {z30\.s-z31\.s}, z0\.s, z0\.s +[^:]+: c1a0d3e1 uzp {z0\.s-z1\.s}, z31\.s, z0\.s +[^:]+: c1bfd001 uzp {z0\.s-z1\.s}, z0\.s, z31\.s +[^:]+: c1a2d279 uzp {z24\.s-z25\.s}, z19\.s, z2\.s +[^:]+: c1e0d001 uzp {z0\.d-z1\.d}, z0\.d, z0\.d +[^:]+: c1e0d01f uzp {z30\.d-z31\.d}, z0\.d, z0\.d +[^:]+: c1e0d3e1 uzp {z0\.d-z1\.d}, z31\.d, z0\.d +[^:]+: c1ffd001 uzp {z0\.d-z1\.d}, z0\.d, z31\.d +[^:]+: c1e5d3a3 uzp {z2\.d-z3\.d}, z29\.d, z5\.d +[^:]+: c120d401 uzp {z0\.q-z1\.q}, z0\.q, z0\.q +[^:]+: c120d41f uzp {z30\.q-z31\.q}, z0\.q, z0\.q +[^:]+: c120d7e1 uzp {z0\.q-z1\.q}, z31\.q, z0\.q +[^:]+: c13fd401 uzp {z0\.q-z1\.q}, z0\.q, z31\.q +[^:]+: c129d70f uzp {z14\.q-z15\.q}, z24\.q, z9\.q +[^:]+: c136e002 uzp {z0\.b-z3\.b}, {z0\.b-z3\.b} +[^:]+: c136e01e uzp {z28\.b-z31\.b}, {z0\.b-z3\.b} +[^:]+: c136e382 uzp {z0\.b-z3\.b}, {z28\.b-z31\.b} +[^:]+: c136e306 uzp {z4\.b-z7\.b}, {z24\.b-z27\.b} +[^:]+: c176e002 uzp {z0\.h-z3\.h}, {z0\.h-z3\.h} +[^:]+: c176e01e uzp {z28\.h-z31\.h}, {z0\.h-z3\.h} +[^:]+: c176e382 uzp {z0\.h-z3\.h}, {z28\.h-z31\.h} +[^:]+: c176e112 uzp {z16\.h-z19\.h}, {z8\.h-z11\.h} +[^:]+: c1b6e002 uzp {z0\.s-z3\.s}, {z0\.s-z3\.s} +[^:]+: c1b6e01e uzp {z28\.s-z31\.s}, {z0\.s-z3\.s} +[^:]+: c1b6e382 uzp {z0\.s-z3\.s}, {z28\.s-z31\.s} +[^:]+: c1b6e196 uzp {z20\.s-z23\.s}, {z12\.s-z15\.s} +[^:]+: c1f6e002 uzp {z0\.d-z3\.d}, {z0\.d-z3\.d} +[^:]+: c1f6e01e uzp {z28\.d-z31\.d}, {z0\.d-z3\.d} +[^:]+: c1f6e382 uzp {z0\.d-z3\.d}, {z28\.d-z31\.d} +[^:]+: c1f6e20a uzp {z8\.d-z11\.d}, {z16\.d-z19\.d} +[^:]+: c137e002 uzp {z0\.q-z3\.q}, {z0\.q-z3\.q} +[^:]+: c137e01e uzp {z28\.q-z31\.q}, {z0\.q-z3\.q} +[^:]+: c137e382 uzp {z0\.q-z3\.q}, {z28\.q-z31\.q} +[^:]+: c137e08e uzp {z12\.q-z15\.q}, {z4\.q-z7\.q} +[^:]+: c120d000 zip {z0\.b-z1\.b}, z0\.b, z0\.b +[^:]+: c120d01e zip {z30\.b-z31\.b}, z0\.b, z0\.b +[^:]+: c120d3e0 zip {z0\.b-z1\.b}, z31\.b, z0\.b +[^:]+: c13fd000 zip {z0\.b-z1\.b}, z0\.b, z31\.b +[^:]+: c139d172 zip {z18\.b-z19\.b}, z11\.b, z25\.b +[^:]+: c160d000 zip {z0\.h-z1\.h}, z0\.h, z0\.h +[^:]+: c160d01e zip {z30\.h-z31\.h}, z0\.h, z0\.h +[^:]+: c160d3e0 zip {z0\.h-z1\.h}, z31\.h, z0\.h +[^:]+: c17fd000 zip {z0\.h-z1\.h}, z0\.h, z31\.h +[^:]+: c176d106 zip {z6\.h-z7\.h}, z8\.h, z22\.h +[^:]+: c1a0d000 zip {z0\.s-z1\.s}, z0\.s, z0\.s +[^:]+: c1a0d01e zip {z30\.s-z31\.s}, z0\.s, z0\.s +[^:]+: c1a0d3e0 zip {z0\.s-z1\.s}, z31\.s, z0\.s +[^:]+: c1bfd000 zip {z0\.s-z1\.s}, z0\.s, z31\.s +[^:]+: c1a2d278 zip {z24\.s-z25\.s}, z19\.s, z2\.s +[^:]+: c1e0d000 zip {z0\.d-z1\.d}, z0\.d, z0\.d +[^:]+: c1e0d01e zip {z30\.d-z31\.d}, z0\.d, z0\.d +[^:]+: c1e0d3e0 zip {z0\.d-z1\.d}, z31\.d, z0\.d +[^:]+: c1ffd000 zip {z0\.d-z1\.d}, z0\.d, z31\.d +[^:]+: c1e5d3a2 zip {z2\.d-z3\.d}, z29\.d, z5\.d +[^:]+: c120d400 zip {z0\.q-z1\.q}, z0\.q, z0\.q +[^:]+: c120d41e zip {z30\.q-z31\.q}, z0\.q, z0\.q +[^:]+: c120d7e0 zip {z0\.q-z1\.q}, z31\.q, z0\.q +[^:]+: c13fd400 zip {z0\.q-z1\.q}, z0\.q, z31\.q +[^:]+: c129d70e zip {z14\.q-z15\.q}, z24\.q, z9\.q +[^:]+: c136e000 zip {z0\.b-z3\.b}, {z0\.b-z3\.b} +[^:]+: c136e01c zip {z28\.b-z31\.b}, {z0\.b-z3\.b} +[^:]+: c136e380 zip {z0\.b-z3\.b}, {z28\.b-z31\.b} +[^:]+: c136e304 zip {z4\.b-z7\.b}, {z24\.b-z27\.b} +[^:]+: c176e000 zip {z0\.h-z3\.h}, {z0\.h-z3\.h} +[^:]+: c176e01c zip {z28\.h-z31\.h}, {z0\.h-z3\.h} +[^:]+: c176e380 zip {z0\.h-z3\.h}, {z28\.h-z31\.h} +[^:]+: c176e110 zip {z16\.h-z19\.h}, {z8\.h-z11\.h} +[^:]+: c1b6e000 zip {z0\.s-z3\.s}, {z0\.s-z3\.s} +[^:]+: c1b6e01c zip {z28\.s-z31\.s}, {z0\.s-z3\.s} +[^:]+: c1b6e380 zip {z0\.s-z3\.s}, {z28\.s-z31\.s} +[^:]+: c1b6e194 zip {z20\.s-z23\.s}, {z12\.s-z15\.s} +[^:]+: c1f6e000 zip {z0\.d-z3\.d}, {z0\.d-z3\.d} +[^:]+: c1f6e01c zip {z28\.d-z31\.d}, {z0\.d-z3\.d} +[^:]+: c1f6e380 zip {z0\.d-z3\.d}, {z28\.d-z31\.d} +[^:]+: c1f6e208 zip {z8\.d-z11\.d}, {z16\.d-z19\.d} +[^:]+: c137e000 zip {z0\.q-z3\.q}, {z0\.q-z3\.q} +[^:]+: c137e01c zip {z28\.q-z31\.q}, {z0\.q-z3\.q} +[^:]+: c137e380 zip {z0\.q-z3\.q}, {z28\.q-z31\.q} +[^:]+: c137e08c zip {z12\.q-z15\.q}, {z4\.q-z7\.q} diff --git a/gas/testsuite/gas/aarch64/sme2-30.s b/gas/testsuite/gas/aarch6= 4/sme2-30.s new file mode 100644 index 00000000000..ade5fc1a0bd --- /dev/null +++ b/gas/testsuite/gas/aarch64/sme2-30.s @@ -0,0 +1,109 @@ + uzp { z0.b - z1.b }, z0.b, z0.b + uzp { z30.b - z31.b }, z0.b, z0.b + uzp { z0.b - z1.b }, z31.b, z0.b + uzp { z0.b - z1.b }, z0.b, z31.b + uzp { z18.b - z19.b }, z11.b, z25.b + + uzp { z0.h - z1.h }, z0.h, z0.h + uzp { z30.h - z31.h }, z0.h, z0.h + uzp { z0.h - z1.h }, z31.h, z0.h + uzp { z0.h - z1.h }, z0.h, z31.h + uzp { z6.h - z7.h }, z8.h, z22.h + + uzp { z0.s - z1.s }, z0.s, z0.s + uzp { z30.s - z31.s }, z0.s, z0.s + uzp { z0.s - z1.s }, z31.s, z0.s + uzp { z0.s - z1.s }, z0.s, z31.s + uzp { z24.s - z25.s }, z19.s, z2.s + + uzp { z0.d - z1.d }, z0.d, z0.d + uzp { z30.d - z31.d }, z0.d, z0.d + uzp { z0.d - z1.d }, z31.d, z0.d + uzp { z0.d - z1.d }, z0.d, z31.d + uzp { z2.d - z3.d }, z29.d, z5.d + + uzp { z0.q - z1.q }, z0.q, z0.q + uzp { z30.q - z31.q }, z0.q, z0.q + uzp { z0.q - z1.q }, z31.q, z0.q + uzp { z0.q - z1.q }, z0.q, z31.q + uzp { z14.q - z15.q }, z24.q, z9.q + + uzp { z0.b - z3.b }, { z0.b - z3.b } + uzp { z28.b - z31.b }, { z0.b - z3.b } + uzp { z0.b - z3.b }, { z28.b - z31.b } + uzp { z4.b - z7.b }, { z24.b - z27.b } + + uzp { z0.h - z3.h }, { z0.h - z3.h } + uzp { z28.h - z31.h }, { z0.h - z3.h } + uzp { z0.h - z3.h }, { z28.h - z31.h } + uzp { z16.h - z19.h }, { z8.h - z11.h } + + uzp { z0.s - z3.s }, { z0.s - z3.s } + uzp { z28.s - z31.s }, { z0.s - z3.s } + uzp { z0.s - z3.s }, { z28.s - z31.s } + uzp { z20.s - z23.s }, { z12.s - z15.s } + + uzp { z0.d - z3.d }, { z0.d - z3.d } + uzp { z28.d - z31.d }, { z0.d - z3.d } + uzp { z0.d - z3.d }, { z28.d - z31.d } + uzp { z8.d - z11.d }, { z16.d - z19.d } + + uzp { z0.q - z3.q }, { z0.q - z3.q } + uzp { z28.q - z31.q }, { z0.q - z3.q } + uzp { z0.q - z3.q }, { z28.q - z31.q } + uzp { z12.q - z15.q }, { z4.q - z7.q } + + zip { z0.b - z1.b }, z0.b, z0.b + zip { z30.b - z31.b }, z0.b, z0.b + zip { z0.b - z1.b }, z31.b, z0.b + zip { z0.b - z1.b }, z0.b, z31.b + zip { z18.b - z19.b }, z11.b, z25.b + + zip { z0.h - z1.h }, z0.h, z0.h + zip { z30.h - z31.h }, z0.h, z0.h + zip { z0.h - z1.h }, z31.h, z0.h + zip { z0.h - z1.h }, z0.h, z31.h + zip { z6.h - z7.h }, z8.h, z22.h + + zip { z0.s - z1.s }, z0.s, z0.s + zip { z30.s - z31.s }, z0.s, z0.s + zip { z0.s - z1.s }, z31.s, z0.s + zip { z0.s - z1.s }, z0.s, z31.s + zip { z24.s - z25.s }, z19.s, z2.s + + zip { z0.d - z1.d }, z0.d, z0.d + zip { z30.d - z31.d }, z0.d, z0.d + zip { z0.d - z1.d }, z31.d, z0.d + zip { z0.d - z1.d }, z0.d, z31.d + zip { z2.d - z3.d }, z29.d, z5.d + + zip { z0.q - z1.q }, z0.q, z0.q + zip { z30.q - z31.q }, z0.q, z0.q + zip { z0.q - z1.q }, z31.q, z0.q + zip { z0.q - z1.q }, z0.q, z31.q + zip { z14.q - z15.q }, z24.q, z9.q + + zip { z0.b - z3.b }, { z0.b - z3.b } + zip { z28.b - z31.b }, { z0.b - z3.b } + zip { z0.b - z3.b }, { z28.b - z31.b } + zip { z4.b - z7.b }, { z24.b - z27.b } + + zip { z0.h - z3.h }, { z0.h - z3.h } + zip { z28.h - z31.h }, { z0.h - z3.h } + zip { z0.h - z3.h }, { z28.h - z31.h } + zip { z16.h - z19.h }, { z8.h - z11.h } + + zip { z0.s - z3.s }, { z0.s - z3.s } + zip { z28.s - z31.s }, { z0.s - z3.s } + zip { z0.s - z3.s }, { z28.s - z31.s } + zip { z20.s - z23.s }, { z12.s - z15.s } + + zip { z0.d - z3.d }, { z0.d - z3.d } + zip { z28.d - z31.d }, { z0.d - z3.d } + zip { z0.d - z3.d }, { z28.d - z31.d } + zip { z8.d - z11.d }, { z16.d - z19.d } + + zip { z0.q - z3.q }, { z0.q - z3.q } + zip { z28.q - z31.q }, { z0.q - z3.q } + zip { z0.q - z3.q }, { z28.q - z31.q } + zip { z12.q - z15.q }, { z4.q - z7.q } diff --git a/opcodes/aarch64-dis-2.c b/opcodes/aarch64-dis-2.c index e514becb5fd..bf04e3fcb0b 100644 --- a/opcodes/aarch64-dis-2.c +++ b/opcodes/aarch64-dis-2.c @@ -188,7 +188,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 109876543210987654321= 09876543210 x1000000x10x100xxxxxx= xxxxxxxxxxx zero. */ - return 2887; + return 2891; } } } @@ -1721,7 +1721,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 x10000011000x= xxxxxx0xxxxxxx00xxx smlall. */ - return 2890; + return 2898; } else { @@ -1731,7 +1731,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 109876543= 21098765432109876543210 x10000011= 001xxxx0xx0xxxxxxx00xxx smlall. = */ - return 2891; + return 2899; } else { @@ -1739,7 +1739,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 109876543= 21098765432109876543210 x10000011= 001xxxx1xx0xxxxxxx00xxx smlall. = */ - return 2892; + return 2900; } } } @@ -1806,7 +1806,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 x10000011000x= xxxxxx0xxxxxxx10xxx umlall. */ - return 2899; + return 2907; } else { @@ -1816,7 +1816,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 109876543= 21098765432109876543210 x10000011= 001xxxx0xx0xxxxxxx10xxx umlall. = */ - return 2900; + return 2908; } else { @@ -1824,7 +1824,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 109876543= 21098765432109876543210 x10000011= 001xxxx1xx0xxxxxxx10xxx umlall. = */ - return 2901; + return 2909; } } } @@ -1884,7 +1884,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765= 432109876543210 xx0000011000xxxxx= xx0xxxxxxx01xxx smlsll. */ - return 2893; + return 2901; } else { @@ -1894,7 +1894,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx0000011001x= xxx0xx0xxxxxxx01xxx smlsll. */ - return 2894; + return 2902; } else { @@ -1902,7 +1902,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx0000011001x= xxx1xx0xxxxxxx01xxx smlsll. */ - return 2895; + return 2903; } } } @@ -1958,7 +1958,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765= 432109876543210 xx0000011000xxxxx= xx0xxxxxxx11xxx umlsll. */ - return 2902; + return 2910; } else { @@ -1968,7 +1968,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx0000011001x= xxx0xx0xxxxxxx11xxx umlsll. */ - return 2903; + return 2911; } else { @@ -1976,7 +1976,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx0000011001x= xxx1xx0xxxxxxx11xxx umlsll. */ - return 2904; + return 2912; } } } @@ -2522,7 +2522,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765= 432109876543210 xx000001110xxxxx0= xx0xxxxxxx00xxx fmla. */ - return 2906; + return 2914; } else { @@ -2530,7 +2530,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765= 432109876543210 xx000001110xxxxx1= xx0xxxxxxx00xxx fmla. */ - return 2907; + return 2915; } } else @@ -2576,7 +2576,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx000001110xx= xxx0xx00xxxxxx01xxx sdot. */ - return 2888; + return 2896; } else { @@ -2584,7 +2584,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx000001110xx= xxx1xx00xxxxxx01xxx sdot. */ - return 2889; + return 2897; } } else @@ -2593,7 +2593,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765= 432109876543210 xx000001110xxxxxx= xx01xxxxxx01xxx svdot. */ - return 2896; + return 2904; } } else @@ -2662,7 +2662,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765= 432109876543210 xx000001110xxxxx0= xx0xxxxxxx10xxx fmls. */ - return 2908; + return 2916; } else { @@ -2670,7 +2670,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765= 432109876543210 xx000001110xxxxx1= xx0xxxxxxx10xxx fmls. */ - return 2909; + return 2917; } } else @@ -2725,7 +2725,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765= 432109876543210 xxx00001110xxxxx0= xx00xxxxxx11xxx udot. */ - return 2897; + return 2905; } else { @@ -2733,7 +2733,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765= 432109876543210 xxx00001110xxxxx1= xx00xxxxxx11xxx udot. */ - return 2898; + return 2906; } } else @@ -2742,7 +2742,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 109876543210987654321= 09876543210 xxx00001110xxxxxxxx01= xxxxxx11xxx uvdot. */ - return 2905; + return 2913; } } else @@ -4162,11 +4162,33 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((word >> 11) & 0x1)= =3D=3D 0) { - /* 33222222222211111= 111110000000000 - 10987654321098765= 432109876543210 - x1000001xx1xxxxx1= 10x00xxxxxxxxxx - fclamp. */ - return 2466; + if (((word >> 0) & 0= x1) =3D=3D 0) + { + if (((word >> 12= ) & 0x1) =3D=3D 0) + { + /* 332222222= 22211111111110000000000 + 109876543= 21098765432109876543210 + x1000001x= x1xxxxx110000xxxxxxxxx0 + fclamp. = */ + return 2466; + } + else + { + /* 332222222= 22211111111110000000000 + 109876543= 21098765432109876543210 + x1000001x= x1xxxxx110100xxxxxxxxx0 + zip. */ + return 2892; + } + } + else + { + /* 3322222222221= 1111111110000000000 + 1098765432109= 8765432109876543210 + x1000001xx1xx= xxx110x00xxxxxxxxx1 + uzp. */ + return 2879; + } } else { @@ -4235,32 +4257,54 @@ aarch64_opcode_lookup_1 (uint32_t word) } else { - if (((word >> 5)= & 0x1) =3D=3D 0) + if (((word >> 22= ) & 0x1) =3D=3D 0) { - if (((word >= > 20) & 0x1) =3D=3D 0) + if (((word >= > 0) & 0x1) =3D=3D 0) { /* 33222= 222222211111111110000000000 10987= 654321098765432109876543210 - x1000= 001xx10xxxx110101xxxx0xxxxx - sqrsh= r. */ - return 2= 697; + x1000= 001x01xxxxx110101xxxxxxxxx0 + zip. = */ + return 2= 893; } else { /* 33222= 222222211111111110000000000 10987= 654321098765432109876543210 - x1000= 001xx11xxxx110101xxxx0xxxxx - sqrsh= ru. */ - return 2= 700; + x1000= 001x01xxxxx110101xxxxxxxxx1 + uzp. = */ + return 2= 880; } } else { - /* 332222222= 22211111111110000000000 - 109876543= 21098765432109876543210 - x1000001x= x1xxxxx110101xxxx1xxxxx - uqrshr. = */ - return 2853; + if (((word >= > 5) & 0x1) =3D=3D 0) + { + if (((wo= rd >> 20) & 0x1) =3D=3D 0) + { + /* 3= 3222222222211111111110000000000 + 1= 0987654321098765432109876543210 + x= 1000001x110xxxx110101xxxx0xxxxx + s= qrshr. */ + retu= rn 2697; + } + else + { + /* 3= 3222222222211111111110000000000 + 1= 0987654321098765432109876543210 + x= 1000001x111xxxx110101xxxx0xxxxx + s= qrshru. */ + retu= rn 2700; + } + } + else + { + /* 33222= 222222211111111110000000000 + 10987= 654321098765432109876543210 + x1000= 001x11xxxxx110101xxxx1xxxxx + uqrsh= r. */ + return 2= 853; + } } } } @@ -4516,42 +4560,64 @@ aarch64_opcode_lookup_1 (uint32_t word) } else { - if (= ((word >> 19) & 0x1) =3D=3D 0) + if (= ((word >> 18) & 0x1) =3D=3D 0) { - = if (((word >> 20) & 0x1) =3D=3D 0) + = if (((word >> 19) & 0x1) =3D=3D 0) = { - = /* 33222222222211111111110000000000 - = 10987654321098765432109876543210 - = x1000001xx100x10111000xxxx0xxxxx - = scvtf. */ - = return 2629; + = if (((word >> 20) & 0x1) =3D=3D 0) + = { + = /* 33222222222211111111110000000000 + = 10987654321098765432109876543210 + = x1000001xx100010111000xxxx0xxxxx + = scvtf. */ + = return 2629; + = } + = else + = { + = /* 33222222222211111111110000000000 + = 10987654321098765432109876543210 + = x1000001xx110010111000xxxx0xxxxx + = scvtf. */ + = return 2630; + = } = } = else = { - = /* 33222222222211111111110000000000 - = 10987654321098765432109876543210 - = x1000001xx110x10111000xxxx0xxxxx - = scvtf. */ - = return 2630; + = if (((word >> 20) & 0x1) =3D=3D 0) + = { + = /* 33222222222211111111110000000000 + = 10987654321098765432109876543210 + = x1000001xx101010111000xxxx0xxxxx + = frintm. */ + = return 2526; + = } + = else + = { + = /* 33222222222211111111110000000000 + = 10987654321098765432109876543210 + = x1000001xx111010111000xxxx0xxxxx + = frintm. */ + = return 2527; + = } = } } else { - = if (((word >> 20) & 0x1) =3D=3D 0) + = if (((word >> 1) & 0x1) =3D=3D 0) = { = /* 33222222222211111111110000000000 = 10987654321098765432109876543210 - = x1000001xx101x10111000xxxx0xxxxx - = frintm. */ - = return 2526; + = x1000001xx1xx110111000xxxx0xxx0x + = zip. */ + = return 2894; = } = else = { = /* 33222222222211111111110000000000 = 10987654321098765432109876543210 - = x1000001xx111x10111000xxxx0xxxxx - = frintm. */ - = return 2527; + = x1000001xx1xx110111000xxxx0xxx1x + = uzp. */ + = return 2881; = } } } @@ -4711,66 +4777,88 @@ aarch64_opcode_lookup_1 (uint32_t word) { if (((wo= rd >> 5) & 0x1) =3D=3D 0) { - if (= ((word >> 20) & 0x1) =3D=3D 0) - { - = if (((word >> 22) & 0x1) =3D=3D 0) - = { - = /* 33222222222211111111110000000000 - = 10987654321098765432109876543210 - = x1000001x010xx11111000xxxx0xxxxx - = sqcvt. */ - = return 2687; - = } - = else - = { - = /* 33222222222211111111110000000000 - = 10987654321098765432109876543210 - = x1000001x110xx11111000xxxx0xxxxx - = sqcvtu. */ - = return 2690; - = } - } - else + if (= ((word >> 18) & 0x1) =3D=3D 0) { - = if (((word >> 6) & 0x1) =3D=3D 0) + = if (((word >> 20) & 0x1) =3D=3D 0) = { = if (((word >> 22) & 0x1) =3D=3D 0) = { = /* 33222222222211111111110000000000 = 10987654321098765432109876543210 - = x1000001x011xx11111000xxx00xxxxx + = x1000001x010x011111000xxxx0xxxxx = sqcvt. */ - = return 2688; + = return 2687; = } = else = { = /* 33222222222211111111110000000000 = 10987654321098765432109876543210 - = x1000001x111xx11111000xxx00xxxxx + = x1000001x110x011111000xxxx0xxxxx = sqcvtu. */ - = return 2691; + = return 2690; = } = } = else = { - = if (((word >> 22) & 0x1) =3D=3D 0) + = if (((word >> 6) & 0x1) =3D=3D 0) = { - = /* 33222222222211111111110000000000 - = 10987654321098765432109876543210 - = x1000001x011xx11111000xxx10xxxxx - = sqcvtn. */ - = return 2689; + = if (((word >> 22) & 0x1) =3D=3D 0) + = { + = /* 33222222222211111111110000000000 + = 10987654321098765432109876543210 + = x1000001x011x011111000xxx00xxxxx + = sqcvt. */ + = return 2688; + = } + = else + = { + = /* 33222222222211111111110000000000 + = 10987654321098765432109876543210 + = x1000001x111x011111000xxx00xxxxx + = sqcvtu. */ + = return 2691; + = } = } = else = { - = /* 33222222222211111111110000000000 - = 10987654321098765432109876543210 - = x1000001x111xx11111000xxx10xxxxx - = sqcvtun. */ - = return 2692; + = if (((word >> 22) & 0x1) =3D=3D 0) + = { + = /* 33222222222211111111110000000000 + = 10987654321098765432109876543210 + = x1000001x011x011111000xxx10xxxxx + = sqcvtn. */ + = return 2689; + = } + = else + = { + = /* 33222222222211111111110000000000 + = 10987654321098765432109876543210 + = x1000001x111x011111000xxx10xxxxx + = sqcvtun. */ + = return 2692; + = } = } = } } + else + { + = if (((word >> 1) & 0x1) =3D=3D 0) + = { + = /* 33222222222211111111110000000000 + = 10987654321098765432109876543210 + = x1000001xx1xx111111000xxxx0xxx0x + = zip. */ + = return 2895; + = } + = else + = { + = /* 33222222222211111111110000000000 + = 10987654321098765432109876543210 + = x1000001xx1xx111111000xxxx0xxx1x + = uzp. */ + = return 2882; + = } + } } else { @@ -7978,7 +8066,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765= 432109876543210 00011001000xxxxxx= xxx00xxxxxxxxxx stlurb. */ - return 2950; + return 2958; } else { @@ -7986,7 +8074,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765= 432109876543210 10011001000xxxxxx= xxx00xxxxxxxxxx stlur. */ - return 2958; + return 2966; } } else @@ -7997,7 +8085,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765= 432109876543210 01011001000xxxxxx= xxx00xxxxxxxxxx stlurh. */ - return 2954; + return 2962; } else { @@ -8005,7 +8093,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765= 432109876543210 11011001000xxxxxx= xxx00xxxxxxxxxx stlur. */ - return 2961; + return 2969; } } } @@ -8043,7 +8131,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx011001000xx= xxx0000x1xxxxxxxxxx cpyfp. */ - return 3010; + return 3018; } else { @@ -8051,7 +8139,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx011001000xx= xxx1000x1xxxxxxxxxx cpyfprn. */ - return 3016; + return 3024; } } else @@ -8062,7 +8150,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx011001000xx= xxx0100x1xxxxxxxxxx cpyfpwn. */ - return 3013; + return 3021; } else { @@ -8070,7 +8158,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx011001000xx= xxx1100x1xxxxxxxxxx cpyfpn. */ - return 3019; + return 3027; } } } @@ -8084,7 +8172,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx011001000xx= xxx0010x1xxxxxxxxxx cpyfprt. */ - return 3034; + return 3042; } else { @@ -8092,7 +8180,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx011001000xx= xxx1010x1xxxxxxxxxx cpyfprtrn. */ - return 3040; + return 3048; } } else @@ -8103,7 +8191,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx011001000xx= xxx0110x1xxxxxxxxxx cpyfprtwn. */ - return 3037; + return 3045; } else { @@ -8111,7 +8199,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx011001000xx= xxx1110x1xxxxxxxxxx cpyfprtn. */ - return 3043; + return 3051; } } } @@ -8128,7 +8216,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx011001000xx= xxx0001x1xxxxxxxxxx cpyfpwt. */ - return 3022; + return 3030; } else { @@ -8136,7 +8224,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx011001000xx= xxx1001x1xxxxxxxxxx cpyfpwtrn. */ - return 3028; + return 3036; } } else @@ -8147,7 +8235,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx011001000xx= xxx0101x1xxxxxxxxxx cpyfpwtwn. */ - return 3025; + return 3033; } else { @@ -8155,7 +8243,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx011001000xx= xxx1101x1xxxxxxxxxx cpyfpwtn. */ - return 3031; + return 3039; } } } @@ -8169,7 +8257,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx011001000xx= xxx0011x1xxxxxxxxxx cpyfpt. */ - return 3046; + return 3054; } else { @@ -8177,7 +8265,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx011001000xx= xxx1011x1xxxxxxxxxx cpyfptrn. */ - return 3052; + return 3060; } } else @@ -8188,7 +8276,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx011001000xx= xxx0111x1xxxxxxxxxx cpyfptwn. */ - return 3049; + return 3057; } else { @@ -8196,7 +8284,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx011001000xx= xxx1111x1xxxxxxxxxx cpyfptn. */ - return 3055; + return 3063; } } } @@ -8261,7 +8349,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765= 432109876543210 00011001010xxxxxx= xxx00xxxxxxxxxx ldapurb. */ - return 2951; + return 2959; } else { @@ -8269,7 +8357,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765= 432109876543210 10011001010xxxxxx= xxx00xxxxxxxxxx ldapur. */ - return 2959; + return 2967; } } else @@ -8280,7 +8368,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765= 432109876543210 01011001010xxxxxx= xxx00xxxxxxxxxx ldapurh. */ - return 2955; + return 2963; } else { @@ -8288,7 +8376,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765= 432109876543210 11011001010xxxxxx= xxx00xxxxxxxxxx ldapur. */ - return 2962; + return 2970; } } } @@ -8326,7 +8414,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx011001010xx= xxx0000x1xxxxxxxxxx cpyfm. */ - return 3011; + return 3019; } else { @@ -8334,7 +8422,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx011001010xx= xxx1000x1xxxxxxxxxx cpyfmrn. */ - return 3017; + return 3025; } } else @@ -8345,7 +8433,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx011001010xx= xxx0100x1xxxxxxxxxx cpyfmwn. */ - return 3014; + return 3022; } else { @@ -8353,7 +8441,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx011001010xx= xxx1100x1xxxxxxxxxx cpyfmn. */ - return 3020; + return 3028; } } } @@ -8367,7 +8455,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx011001010xx= xxx0010x1xxxxxxxxxx cpyfmrt. */ - return 3035; + return 3043; } else { @@ -8375,7 +8463,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx011001010xx= xxx1010x1xxxxxxxxxx cpyfmrtrn. */ - return 3041; + return 3049; } } else @@ -8386,7 +8474,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx011001010xx= xxx0110x1xxxxxxxxxx cpyfmrtwn. */ - return 3038; + return 3046; } else { @@ -8394,7 +8482,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx011001010xx= xxx1110x1xxxxxxxxxx cpyfmrtn. */ - return 3044; + return 3052; } } } @@ -8411,7 +8499,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx011001010xx= xxx0001x1xxxxxxxxxx cpyfmwt. */ - return 3023; + return 3031; } else { @@ -8419,7 +8507,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx011001010xx= xxx1001x1xxxxxxxxxx cpyfmwtrn. */ - return 3029; + return 3037; } } else @@ -8430,7 +8518,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx011001010xx= xxx0101x1xxxxxxxxxx cpyfmwtwn. */ - return 3026; + return 3034; } else { @@ -8438,7 +8526,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx011001010xx= xxx1101x1xxxxxxxxxx cpyfmwtn. */ - return 3032; + return 3040; } } } @@ -8452,7 +8540,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx011001010xx= xxx0011x1xxxxxxxxxx cpyfmt. */ - return 3047; + return 3055; } else { @@ -8460,7 +8548,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx011001010xx= xxx1011x1xxxxxxxxxx cpyfmtrn. */ - return 3053; + return 3061; } } else @@ -8471,7 +8559,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx011001010xx= xxx0111x1xxxxxxxxxx cpyfmtwn. */ - return 3050; + return 3058; } else { @@ -8479,7 +8567,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx011001010xx= xxx1111x1xxxxxxxxxx cpyfmtn. */ - return 3056; + return 3064; } } } @@ -8547,7 +8635,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765= 432109876543210 00011001100xxxxxx= xxx00xxxxxxxxxx ldapursb. */ - return 2953; + return 2961; } else { @@ -8555,7 +8643,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765= 432109876543210 10011001100xxxxxx= xxx00xxxxxxxxxx ldapursw. */ - return 2960; + return 2968; } } else @@ -8564,7 +8652,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 109876543210987654321= 09876543210 x1011001100xxxxxxxxx0= 0xxxxxxxxxx ldapursh. */ - return 2957; + return 2965; } } else @@ -8575,7 +8663,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 109876543210987654321= 09876543210 x0011001110xxxxxxxxx0= 0xxxxxxxxxx ldapursb. */ - return 2952; + return 2960; } else { @@ -8583,7 +8671,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 109876543210987654321= 09876543210 x1011001110xxxxxxxxx0= 0xxxxxxxxxx ldapursh. */ - return 2956; + return 2964; } } } @@ -8645,7 +8733,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx011001100xx= xxx0000x1xxxxxxxxxx cpyfe. */ - return 3012; + return 3020; } else { @@ -8653,7 +8741,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx011001110xx= xxx0000x1xxxxxxxxxx setp. */ - return 3106; + return 3114; } } else @@ -8664,7 +8752,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx011001100xx= xxx1000x1xxxxxxxxxx cpyfern. */ - return 3018; + return 3026; } else { @@ -8672,7 +8760,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx011001110xx= xxx1000x1xxxxxxxxxx sete. */ - return 3108; + return 3116; } } } @@ -8686,7 +8774,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx011001100xx= xxx0100x1xxxxxxxxxx cpyfewn. */ - return 3015; + return 3023; } else { @@ -8694,7 +8782,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx011001110xx= xxx0100x1xxxxxxxxxx setm. */ - return 3107; + return 3115; } } else @@ -8703,7 +8791,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 10987654321098765= 432109876543210 xx0110011x0xxxxx1= 100x1xxxxxxxxxx cpyfen. */ - return 3021; + return 3029; } } } @@ -8719,7 +8807,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx011001100xx= xxx0010x1xxxxxxxxxx cpyfert. */ - return 3036; + return 3044; } else { @@ -8727,7 +8815,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx011001110xx= xxx0010x1xxxxxxxxxx setpn. */ - return 3112; + return 3120; } } else @@ -8738,7 +8826,7 @@ aarch64_opcode_lookup_1 (uint32_t word) 1098765432109= 8765432109876543210 xx011001100xx= xxx1010x1xxxxxxxxxx cpyfertrn. */ - return [...] [diff truncated at 100000 bytes]