xref: /qemu/target/arm/tcg/neon-dp.decode (revision ef2b80eb21aa8314c9eb81a75f3454faf3087747)
1625e3dd4SPeter Maydell# AArch32 Neon data-processing instruction descriptions
2625e3dd4SPeter Maydell#
3625e3dd4SPeter Maydell#  Copyright (c) 2020 Linaro, Ltd
4625e3dd4SPeter Maydell#
5625e3dd4SPeter Maydell# This library is free software; you can redistribute it and/or
6625e3dd4SPeter Maydell# modify it under the terms of the GNU Lesser General Public
7625e3dd4SPeter Maydell# License as published by the Free Software Foundation; either
850f57e09SChetan Pant# version 2.1 of the License, or (at your option) any later version.
9625e3dd4SPeter Maydell#
10625e3dd4SPeter Maydell# This library is distributed in the hope that it will be useful,
11625e3dd4SPeter Maydell# but WITHOUT ANY WARRANTY; without even the implied warranty of
12625e3dd4SPeter Maydell# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13625e3dd4SPeter Maydell# Lesser General Public License for more details.
14625e3dd4SPeter Maydell#
15625e3dd4SPeter Maydell# You should have received a copy of the GNU Lesser General Public
16625e3dd4SPeter Maydell# License along with this library; if not, see <http://www.gnu.org/licenses/>.
17625e3dd4SPeter Maydell
18625e3dd4SPeter Maydell#
19625e3dd4SPeter Maydell# This file is processed by scripts/decodetree.py
20625e3dd4SPeter Maydell#
21a4e143acSPeter Maydell# VFP/Neon register fields; same as vfp.decode
22a4e143acSPeter Maydell%vm_dp  5:1 0:4
23a4e143acSPeter Maydell%vn_dp  7:1 16:4
24a4e143acSPeter Maydell%vd_dp  22:1 12:4
25625e3dd4SPeter Maydell
26625e3dd4SPeter Maydell# Encodings for Neon data processing instructions where the T32 encoding
27625e3dd4SPeter Maydell# is a simple transformation of the A32 encoding.
28625e3dd4SPeter Maydell# More specifically, this file covers instructions where the A32 encoding is
29625e3dd4SPeter Maydell#   0b1111_001p_qqqq_qqqq_qqqq_qqqq_qqqq_qqqq
30625e3dd4SPeter Maydell# and the T32 encoding is
31625e3dd4SPeter Maydell#   0b111p_1111_qqqq_qqqq_qqqq_qqqq_qqqq_qqqq
32625e3dd4SPeter Maydell# This file works on the A32 encoding only; calling code for T32 has to
33625e3dd4SPeter Maydell# transform the insn into the A32 version first.
34a4e143acSPeter Maydell
35a4e143acSPeter Maydell######################################################################
36a4e143acSPeter Maydell# 3-reg-same grouping:
37a4e143acSPeter Maydell# 1111 001 U 0 D sz:2 Vn:4 Vd:4 opc:4 N Q M op Vm:4
38a4e143acSPeter Maydell######################################################################
39a4e143acSPeter Maydell
40a4e143acSPeter Maydell&3same vm vn vd q size
41a4e143acSPeter Maydell
42a4e143acSPeter Maydell@3same           .... ... . . . size:2 .... .... .... . q:1 . . .... \
43a4e143acSPeter Maydell                 &3same vm=%vm_dp vn=%vn_dp vd=%vd_dp
44a4e143acSPeter Maydell
45059c2398SPeter Maydell@3same_q0        .... ... . . . size:2 .... .... .... . 0 . . .... \
46059c2398SPeter Maydell                 &3same vm=%vm_dp vn=%vn_dp vd=%vd_dp q=0
47059c2398SPeter Maydell
486cf0f240SPeter Maydell# For FP insns the high bit of 'size' is used as part of opcode decode,
496cf0f240SPeter Maydell# and the 'size' bit is 0 for 32-bit float and 1 for 16-bit float.
506cf0f240SPeter Maydell# This converts this encoding to the same MO_8/16/32/64 values that the
516cf0f240SPeter Maydell# integer neon insns use.
526cf0f240SPeter Maydell%3same_fp_size   20:1 !function=neon_3same_fp_size
536cf0f240SPeter Maydell
546cf0f240SPeter Maydell@3same_fp        .... ... . . . . . .... .... .... . q:1 . . .... \
556cf0f240SPeter Maydell                 &3same vm=%vm_dp vn=%vn_dp vd=%vd_dp size=%3same_fp_size
566cf0f240SPeter Maydell@3same_fp_q0     .... ... . . . . . .... .... .... . 0 . . .... \
576cf0f240SPeter Maydell                 &3same vm=%vm_dp vn=%vn_dp vd=%vd_dp q=0 size=%3same_fp_size
58a26a352bSPeter Maydell
59cb294bcaSPeter MaydellVHADD_S_3s       1111 001 0 0 . .. .... .... 0000 . . . 0 .... @3same
60cb294bcaSPeter MaydellVHADD_U_3s       1111 001 1 0 . .. .... .... 0000 . . . 0 .... @3same
617a9497f1SPeter MaydellVQADD_S_3s       1111 001 0 0 . .. .... .... 0000 . . . 1 .... @3same
627a9497f1SPeter MaydellVQADD_U_3s       1111 001 1 0 . .. .... .... 0000 . . . 1 .... @3same
637a9497f1SPeter Maydell
648e44d03fSPeter MaydellVRHADD_S_3s      1111 001 0 0 . .. .... .... 0001 . . . 0 .... @3same
658e44d03fSPeter MaydellVRHADD_U_3s      1111 001 1 0 . .. .... .... 0001 . . . 0 .... @3same
668e44d03fSPeter Maydell
6735a548edSPeter Maydell@3same_logic     .... ... . . . .. .... .... .... . q:1 .. .... \
6835a548edSPeter Maydell                 &3same vm=%vm_dp vn=%vn_dp vd=%vd_dp size=0
6935a548edSPeter Maydell
7035a548edSPeter MaydellVAND_3s          1111 001 0 0 . 00 .... .... 0001 ... 1 .... @3same_logic
7135a548edSPeter MaydellVBIC_3s          1111 001 0 0 . 01 .... .... 0001 ... 1 .... @3same_logic
7235a548edSPeter MaydellVORR_3s          1111 001 0 0 . 10 .... .... 0001 ... 1 .... @3same_logic
7335a548edSPeter MaydellVORN_3s          1111 001 0 0 . 11 .... .... 0001 ... 1 .... @3same_logic
7435a548edSPeter MaydellVEOR_3s          1111 001 1 0 . 00 .... .... 0001 ... 1 .... @3same_logic
7535a548edSPeter MaydellVBSL_3s          1111 001 1 0 . 01 .... .... 0001 ... 1 .... @3same_logic
7635a548edSPeter MaydellVBIT_3s          1111 001 1 0 . 10 .... .... 0001 ... 1 .... @3same_logic
7735a548edSPeter MaydellVBIF_3s          1111 001 1 0 . 11 .... .... 0001 ... 1 .... @3same_logic
7835a548edSPeter Maydell
798e44d03fSPeter MaydellVHSUB_S_3s       1111 001 0 0 . .. .... .... 0010 . . . 0 .... @3same
808e44d03fSPeter MaydellVHSUB_U_3s       1111 001 1 0 . .. .... .... 0010 . . . 0 .... @3same
818e44d03fSPeter Maydell
827a9497f1SPeter MaydellVQSUB_S_3s       1111 001 0 0 . .. .... .... 0010 . . . 1 .... @3same
837a9497f1SPeter MaydellVQSUB_U_3s       1111 001 1 0 . .. .... .... 0010 . . . 1 .... @3same
847a9497f1SPeter Maydell
8502bd0cdbSPeter MaydellVCGT_S_3s        1111 001 0 0 . .. .... .... 0011 . . . 0 .... @3same
8602bd0cdbSPeter MaydellVCGT_U_3s        1111 001 1 0 . .. .... .... 0011 . . . 0 .... @3same
8702bd0cdbSPeter MaydellVCGE_S_3s        1111 001 0 0 . .. .... .... 0011 . . . 1 .... @3same
8802bd0cdbSPeter MaydellVCGE_U_3s        1111 001 1 0 . .. .... .... 0011 . . . 1 .... @3same
8902bd0cdbSPeter Maydell
90e9eee531SRichard Henderson# The _rev suffix indicates that Vn and Vm are reversed. This is
91e9eee531SRichard Henderson# the case for shifts. In the Arm ARM these insns are documented
92e9eee531SRichard Henderson# with the Vm and Vn fields in their usual places, but in the
93e9eee531SRichard Henderson# assembly the operands are listed "backwards", ie in the order
94e9eee531SRichard Henderson# Dd, Dm, Dn where other insns use Dd, Dn, Dm. For QEMU we choose
95e9eee531SRichard Henderson# to consider Vm and Vn as being in different fields in the insn,
96e9eee531SRichard Henderson# which allows us to avoid special-casing shifts in the trans_
97e9eee531SRichard Henderson# function code. We would otherwise need to manually swap the operands
98e9eee531SRichard Henderson# over to call Neon helper functions that are shared with AArch64,
99e9eee531SRichard Henderson# which does not have this odd reversed-operand situation.
100e9eee531SRichard Henderson@3same_rev       .... ... . . . size:2 .... .... .... . q:1 . . .... \
101e9eee531SRichard Henderson                 &3same vn=%vm_dp vm=%vn_dp vd=%vd_dp
102e9eee531SRichard Henderson
103e9eee531SRichard HendersonVSHL_S_3s        1111 001 0 0 . .. .... .... 0100 . . . 0 .... @3same_rev
104e9eee531SRichard HendersonVSHL_U_3s        1111 001 1 0 . .. .... .... 0100 . . . 0 .... @3same_rev
1056812dfdcSPeter MaydellVQSHL_S_3s       1111 001 0 0 . .. .... .... 0100 . . . 1 .... @3same_rev
1066812dfdcSPeter MaydellVQSHL_U_3s       1111 001 1 0 . .. .... .... 0100 . . . 1 .... @3same_rev
1076812dfdcSPeter MaydellVRSHL_S_3s       1111 001 0 0 . .. .... .... 0101 . . . 0 .... @3same_rev
1086812dfdcSPeter MaydellVRSHL_U_3s       1111 001 1 0 . .. .... .... 0101 . . . 0 .... @3same_rev
1096812dfdcSPeter MaydellVQRSHL_S_3s      1111 001 0 0 . .. .... .... 0101 . . . 1 .... @3same_rev
1106812dfdcSPeter MaydellVQRSHL_U_3s      1111 001 1 0 . .. .... .... 0101 . . . 1 .... @3same_rev
11135d4352fSPeter Maydell
11236b59310SPeter MaydellVMAX_S_3s        1111 001 0 0 . .. .... .... 0110 . . . 0 .... @3same
11336b59310SPeter MaydellVMAX_U_3s        1111 001 1 0 . .. .... .... 0110 . . . 0 .... @3same
11436b59310SPeter MaydellVMIN_S_3s        1111 001 0 0 . .. .... .... 0110 . . . 1 .... @3same
11536b59310SPeter MaydellVMIN_U_3s        1111 001 1 0 . .. .... .... 0110 . . . 1 .... @3same
11636b59310SPeter Maydell
1177715098fSPeter MaydellVABD_S_3s        1111 001 0 0 . .. .... .... 0111 . . . 0 .... @3same
1187715098fSPeter MaydellVABD_U_3s        1111 001 1 0 . .. .... .... 0111 . . . 0 .... @3same
1197715098fSPeter Maydell
1207715098fSPeter MaydellVABA_S_3s        1111 001 0 0 . .. .... .... 0111 . . . 1 .... @3same
1217715098fSPeter MaydellVABA_U_3s        1111 001 1 0 . .. .... .... 0111 . . . 1 .... @3same
1227715098fSPeter Maydell
123a4e143acSPeter MaydellVADD_3s          1111 001 0 0 . .. .... .... 1000 . . . 0 .... @3same
124a4e143acSPeter MaydellVSUB_3s          1111 001 1 0 . .. .... .... 1000 . . . 0 .... @3same
12502bd0cdbSPeter Maydell
12602bd0cdbSPeter MaydellVTST_3s          1111 001 0 0 . .. .... .... 1000 . . . 1 .... @3same
12702bd0cdbSPeter MaydellVCEQ_3s          1111 001 1 0 . .. .... .... 1000 . . . 1 .... @3same
1280de34fd4SPeter Maydell
1290de34fd4SPeter MaydellVMLA_3s          1111 001 0 0 . .. .... .... 1001 . . . 0 .... @3same
1300de34fd4SPeter MaydellVMLS_3s          1111 001 1 0 . .. .... .... 1001 . . . 0 .... @3same
1310de34fd4SPeter Maydell
1320de34fd4SPeter MaydellVMUL_3s          1111 001 0 0 . .. .... .... 1001 . . . 1 .... @3same
1330de34fd4SPeter MaydellVMUL_p_3s        1111 001 1 0 . .. .... .... 1001 . . . 1 .... @3same
134a0635695SPeter Maydell
135059c2398SPeter MaydellVPMAX_S_3s       1111 001 0 0 . .. .... .... 1010 . . . 0 .... @3same_q0
136059c2398SPeter MaydellVPMAX_U_3s       1111 001 1 0 . .. .... .... 1010 . . . 0 .... @3same_q0
137059c2398SPeter Maydell
138059c2398SPeter MaydellVPMIN_S_3s       1111 001 0 0 . .. .... .... 1010 . . . 1 .... @3same_q0
139059c2398SPeter MaydellVPMIN_U_3s       1111 001 1 0 . .. .... .... 1010 . . . 1 .... @3same_q0
140059c2398SPeter Maydell
1417ecc28bcSPeter MaydellVQDMULH_3s       1111 001 0 0 . .. .... .... 1011 . . . 0 .... @3same
1427ecc28bcSPeter MaydellVQRDMULH_3s      1111 001 1 0 . .. .... .... 1011 . . . 0 .... @3same
1437ecc28bcSPeter Maydell
144fa22827dSPeter MaydellVPADD_3s         1111 001 0 0 . .. .... .... 1011 . . . 1 .... @3same_q0
145fa22827dSPeter Maydell
146a0635695SPeter MaydellVQRDMLAH_3s      1111 001 1 0 . .. .... .... 1011 ... 1 .... @3same
14721290edfSPeter Maydell
148effa992fSRichard Henderson@3same_crypto    .... .... .... .... .... .... .... .... \
149effa992fSRichard Henderson                 &3same vm=%vm_dp vn=%vn_dp vd=%vd_dp size=0 q=1
150effa992fSRichard Henderson
151afc8b7d3SRichard HendersonSHA1C_3s         1111 001 0 0 . 00 .... .... 1100 . 1 . 0 .... @3same_crypto
152afc8b7d3SRichard HendersonSHA1P_3s         1111 001 0 0 . 01 .... .... 1100 . 1 . 0 .... @3same_crypto
153afc8b7d3SRichard HendersonSHA1M_3s         1111 001 0 0 . 10 .... .... 1100 . 1 . 0 .... @3same_crypto
154afc8b7d3SRichard HendersonSHA1SU0_3s       1111 001 0 0 . 11 .... .... 1100 . 1 . 0 .... @3same_crypto
155effa992fSRichard HendersonSHA256H_3s       1111 001 1 0 . 00 .... .... 1100 . 1 . 0 .... @3same_crypto
156effa992fSRichard HendersonSHA256H2_3s      1111 001 1 0 . 01 .... .... 1100 . 1 . 0 .... @3same_crypto
157effa992fSRichard HendersonSHA256SU1_3s     1111 001 1 0 . 10 .... .... 1100 . 1 . 0 .... @3same_crypto
15821290edfSPeter Maydell
159e95485f8SPeter MaydellVFMA_fp_3s       1111 001 0 0 . 0 . .... .... 1100 ... 1 .... @3same_fp
160e95485f8SPeter MaydellVFMS_fp_3s       1111 001 0 0 . 1 . .... .... 1100 ... 1 .... @3same_fp
161e95485f8SPeter Maydell
162a0635695SPeter MaydellVQRDMLSH_3s      1111 001 1 0 . .. .... .... 1100 ... 1 .... @3same
163a26a352bSPeter Maydell
164a26a352bSPeter MaydellVADD_fp_3s       1111 001 0 0 . 0 . .... .... 1101 ... 0 .... @3same_fp
165a26a352bSPeter MaydellVSUB_fp_3s       1111 001 0 0 . 1 . .... .... 1101 ... 0 .... @3same_fp
166ab978335SPeter MaydellVPADD_fp_3s      1111 001 1 0 . 0 . .... .... 1101 ... 0 .... @3same_fp_q0
167a26a352bSPeter MaydellVABD_fp_3s       1111 001 1 0 . 1 . .... .... 1101 ... 0 .... @3same_fp
1688aa71eadSPeter MaydellVMLA_fp_3s       1111 001 0 0 . 0 . .... .... 1101 ... 1 .... @3same_fp
1698aa71eadSPeter MaydellVMLS_fp_3s       1111 001 0 0 . 1 . .... .... 1101 ... 1 .... @3same_fp
1708aa71eadSPeter MaydellVMUL_fp_3s       1111 001 1 0 . 0 . .... .... 1101 ... 1 .... @3same_fp
171727ff1d6SPeter MaydellVCEQ_fp_3s       1111 001 0 0 . 0 . .... .... 1110 ... 0 .... @3same_fp
172727ff1d6SPeter MaydellVCGE_fp_3s       1111 001 1 0 . 0 . .... .... 1110 ... 0 .... @3same_fp
173727ff1d6SPeter MaydellVACGE_fp_3s      1111 001 1 0 . 0 . .... .... 1110 ... 1 .... @3same_fp
174727ff1d6SPeter MaydellVCGT_fp_3s       1111 001 1 0 . 1 . .... .... 1110 ... 0 .... @3same_fp
175727ff1d6SPeter MaydellVACGT_fp_3s      1111 001 1 0 . 1 . .... .... 1110 ... 1 .... @3same_fp
176d5fdf9e9SPeter MaydellVMAX_fp_3s       1111 001 0 0 . 0 . .... .... 1111 ... 0 .... @3same_fp
177d5fdf9e9SPeter MaydellVMIN_fp_3s       1111 001 0 0 . 1 . .... .... 1111 ... 0 .... @3same_fp
178ab978335SPeter MaydellVPMAX_fp_3s      1111 001 1 0 . 0 . .... .... 1111 ... 0 .... @3same_fp_q0
179ab978335SPeter MaydellVPMIN_fp_3s      1111 001 1 0 . 1 . .... .... 1111 ... 0 .... @3same_fp_q0
180d5fdf9e9SPeter MaydellVRECPS_fp_3s     1111 001 0 0 . 0 . .... .... 1111 ... 1 .... @3same_fp
181d5fdf9e9SPeter MaydellVRSQRTS_fp_3s    1111 001 0 0 . 1 . .... .... 1111 ... 1 .... @3same_fp
182d5fdf9e9SPeter MaydellVMAXNM_fp_3s     1111 001 1 0 . 0 . .... .... 1111 ... 1 .... @3same_fp
183d5fdf9e9SPeter MaydellVMINNM_fp_3s     1111 001 1 0 . 1 . .... .... 1111 ... 1 .... @3same_fp
184d3c8c736SPeter Maydell
185d3c8c736SPeter Maydell######################################################################
186d3c8c736SPeter Maydell# 2-reg-and-shift grouping:
187d3c8c736SPeter Maydell# 1111 001 U 1 D immH:3 immL:3 Vd:4 opc:4 L Q M 1 Vm:4
188d3c8c736SPeter Maydell######################################################################
189d3c8c736SPeter Maydell&2reg_shift vm vd q shift size
190d3c8c736SPeter Maydell
19166432d6bSPeter Maydell# Right shifts are encoded as N - shift, where N is the element size in bits.
19266432d6bSPeter Maydell%neon_rshift_i6  16:6 !function=rsub_64
19366432d6bSPeter Maydell%neon_rshift_i5  16:5 !function=rsub_32
19466432d6bSPeter Maydell%neon_rshift_i4  16:4 !function=rsub_16
19566432d6bSPeter Maydell%neon_rshift_i3  16:3 !function=rsub_8
19666432d6bSPeter Maydell
19766432d6bSPeter Maydell@2reg_shr_d      .... ... . . . ......  .... .... 1 q:1 . . .... \
19866432d6bSPeter Maydell                 &2reg_shift vm=%vm_dp vd=%vd_dp size=3 shift=%neon_rshift_i6
19966432d6bSPeter Maydell@2reg_shr_s      .... ... . . . 1 ..... .... .... 0 q:1 . . .... \
20066432d6bSPeter Maydell                 &2reg_shift vm=%vm_dp vd=%vd_dp size=2 shift=%neon_rshift_i5
20166432d6bSPeter Maydell@2reg_shr_h      .... ... . . . 01 .... .... .... 0 q:1 . . .... \
20266432d6bSPeter Maydell                 &2reg_shift vm=%vm_dp vd=%vd_dp size=1 shift=%neon_rshift_i4
20366432d6bSPeter Maydell@2reg_shr_b      .... ... . . . 001 ... .... .... 0 q:1 . . .... \
20466432d6bSPeter Maydell                 &2reg_shift vm=%vm_dp vd=%vd_dp size=0 shift=%neon_rshift_i3
20566432d6bSPeter Maydell
206d3c8c736SPeter Maydell@2reg_shl_d      .... ... . . . shift:6      .... .... 1 q:1 . . .... \
207d3c8c736SPeter Maydell                 &2reg_shift vm=%vm_dp vd=%vd_dp size=3
208d3c8c736SPeter Maydell@2reg_shl_s      .... ... . . . 1 shift:5    .... .... 0 q:1 . . .... \
209d3c8c736SPeter Maydell                 &2reg_shift vm=%vm_dp vd=%vd_dp size=2
210d3c8c736SPeter Maydell@2reg_shl_h      .... ... . . . 01 shift:4   .... .... 0 q:1 . . .... \
211d3c8c736SPeter Maydell                 &2reg_shift vm=%vm_dp vd=%vd_dp size=1
212d3c8c736SPeter Maydell@2reg_shl_b      .... ... . . . 001 shift:3  .... .... 0 q:1 . . .... \
213d3c8c736SPeter Maydell                 &2reg_shift vm=%vm_dp vd=%vd_dp size=0
214d3c8c736SPeter Maydell
215712182d3SPeter Maydell# Narrowing right shifts: here the Q bit is part of the opcode decode
216712182d3SPeter Maydell@2reg_shrn_d     .... ... . . . 1 ..... .... .... 0 . . . .... \
217712182d3SPeter Maydell                 &2reg_shift vm=%vm_dp vd=%vd_dp size=3 q=0 \
218712182d3SPeter Maydell                 shift=%neon_rshift_i5
219712182d3SPeter Maydell@2reg_shrn_s     .... ... . . . 01 .... .... .... 0 . . . .... \
220712182d3SPeter Maydell                 &2reg_shift vm=%vm_dp vd=%vd_dp size=2 q=0 \
221712182d3SPeter Maydell                 shift=%neon_rshift_i4
222712182d3SPeter Maydell@2reg_shrn_h     .... ... . . . 001 ... .... .... 0 . . . .... \
223712182d3SPeter Maydell                 &2reg_shift vm=%vm_dp vd=%vd_dp size=1 q=0 \
224712182d3SPeter Maydell                 shift=%neon_rshift_i3
225712182d3SPeter Maydell
226968bf842SPeter Maydell# Long left shifts: again Q is part of opcode decode
227968bf842SPeter Maydell@2reg_shll_s     .... ... . . . 1 shift:5    .... .... 0 . . . .... \
228968bf842SPeter Maydell                 &2reg_shift vm=%vm_dp vd=%vd_dp size=2 q=0
229968bf842SPeter Maydell@2reg_shll_h     .... ... . . . 01 shift:4   .... .... 0 . . . .... \
230968bf842SPeter Maydell                 &2reg_shift vm=%vm_dp vd=%vd_dp size=1 q=0
231968bf842SPeter Maydell@2reg_shll_b     .... ... . . . 001 shift:3  .... .... 0 . . . .... \
232968bf842SPeter Maydell                 &2reg_shift vm=%vm_dp vd=%vd_dp size=0 q=0
233968bf842SPeter Maydell
2343da26f11SPeter Maydell@2reg_vcvt       .... ... . . . 1 ..... .... .... . q:1 . . .... \
2350ae715c6SPeter Maydell                 &2reg_shift vm=%vm_dp vd=%vd_dp size=2 shift=%neon_rshift_i5
23624018cf3SPeter Maydell@2reg_vcvt_f16   .... ... . . . 11 .... .... .... . q:1 . . .... \
23724018cf3SPeter Maydell                 &2reg_shift vm=%vm_dp vd=%vd_dp size=1 shift=%neon_rshift_i4
2383da26f11SPeter Maydell
23966432d6bSPeter MaydellVSHR_S_2sh       1111 001 0 1 . ...... .... 0000 . . . 1 .... @2reg_shr_d
24066432d6bSPeter MaydellVSHR_S_2sh       1111 001 0 1 . ...... .... 0000 . . . 1 .... @2reg_shr_s
24166432d6bSPeter MaydellVSHR_S_2sh       1111 001 0 1 . ...... .... 0000 . . . 1 .... @2reg_shr_h
24266432d6bSPeter MaydellVSHR_S_2sh       1111 001 0 1 . ...... .... 0000 . . . 1 .... @2reg_shr_b
24366432d6bSPeter Maydell
24466432d6bSPeter MaydellVSHR_U_2sh       1111 001 1 1 . ...... .... 0000 . . . 1 .... @2reg_shr_d
24566432d6bSPeter MaydellVSHR_U_2sh       1111 001 1 1 . ...... .... 0000 . . . 1 .... @2reg_shr_s
24666432d6bSPeter MaydellVSHR_U_2sh       1111 001 1 1 . ...... .... 0000 . . . 1 .... @2reg_shr_h
24766432d6bSPeter MaydellVSHR_U_2sh       1111 001 1 1 . ...... .... 0000 . . . 1 .... @2reg_shr_b
24866432d6bSPeter Maydell
249434f71efSPeter MaydellVSRA_S_2sh       1111 001 0 1 . ...... .... 0001 . . . 1 .... @2reg_shr_d
250434f71efSPeter MaydellVSRA_S_2sh       1111 001 0 1 . ...... .... 0001 . . . 1 .... @2reg_shr_s
251434f71efSPeter MaydellVSRA_S_2sh       1111 001 0 1 . ...... .... 0001 . . . 1 .... @2reg_shr_h
252434f71efSPeter MaydellVSRA_S_2sh       1111 001 0 1 . ...... .... 0001 . . . 1 .... @2reg_shr_b
253434f71efSPeter Maydell
254434f71efSPeter MaydellVSRA_U_2sh       1111 001 1 1 . ...... .... 0001 . . . 1 .... @2reg_shr_d
255434f71efSPeter MaydellVSRA_U_2sh       1111 001 1 1 . ...... .... 0001 . . . 1 .... @2reg_shr_s
256434f71efSPeter MaydellVSRA_U_2sh       1111 001 1 1 . ...... .... 0001 . . . 1 .... @2reg_shr_h
257434f71efSPeter MaydellVSRA_U_2sh       1111 001 1 1 . ...... .... 0001 . . . 1 .... @2reg_shr_b
258434f71efSPeter Maydell
259434f71efSPeter MaydellVRSHR_S_2sh      1111 001 0 1 . ...... .... 0010 . . . 1 .... @2reg_shr_d
260434f71efSPeter MaydellVRSHR_S_2sh      1111 001 0 1 . ...... .... 0010 . . . 1 .... @2reg_shr_s
261434f71efSPeter MaydellVRSHR_S_2sh      1111 001 0 1 . ...... .... 0010 . . . 1 .... @2reg_shr_h
262434f71efSPeter MaydellVRSHR_S_2sh      1111 001 0 1 . ...... .... 0010 . . . 1 .... @2reg_shr_b
263434f71efSPeter Maydell
264434f71efSPeter MaydellVRSHR_U_2sh      1111 001 1 1 . ...... .... 0010 . . . 1 .... @2reg_shr_d
265434f71efSPeter MaydellVRSHR_U_2sh      1111 001 1 1 . ...... .... 0010 . . . 1 .... @2reg_shr_s
266434f71efSPeter MaydellVRSHR_U_2sh      1111 001 1 1 . ...... .... 0010 . . . 1 .... @2reg_shr_h
267434f71efSPeter MaydellVRSHR_U_2sh      1111 001 1 1 . ...... .... 0010 . . . 1 .... @2reg_shr_b
268434f71efSPeter Maydell
269434f71efSPeter MaydellVRSRA_S_2sh      1111 001 0 1 . ...... .... 0011 . . . 1 .... @2reg_shr_d
270434f71efSPeter MaydellVRSRA_S_2sh      1111 001 0 1 . ...... .... 0011 . . . 1 .... @2reg_shr_s
271434f71efSPeter MaydellVRSRA_S_2sh      1111 001 0 1 . ...... .... 0011 . . . 1 .... @2reg_shr_h
272434f71efSPeter MaydellVRSRA_S_2sh      1111 001 0 1 . ...... .... 0011 . . . 1 .... @2reg_shr_b
273434f71efSPeter Maydell
274434f71efSPeter MaydellVRSRA_U_2sh      1111 001 1 1 . ...... .... 0011 . . . 1 .... @2reg_shr_d
275434f71efSPeter MaydellVRSRA_U_2sh      1111 001 1 1 . ...... .... 0011 . . . 1 .... @2reg_shr_s
276434f71efSPeter MaydellVRSRA_U_2sh      1111 001 1 1 . ...... .... 0011 . . . 1 .... @2reg_shr_h
277434f71efSPeter MaydellVRSRA_U_2sh      1111 001 1 1 . ...... .... 0011 . . . 1 .... @2reg_shr_b
278434f71efSPeter Maydell
279434f71efSPeter MaydellVSRI_2sh         1111 001 1 1 . ...... .... 0100 . . . 1 .... @2reg_shr_d
280434f71efSPeter MaydellVSRI_2sh         1111 001 1 1 . ...... .... 0100 . . . 1 .... @2reg_shr_s
281434f71efSPeter MaydellVSRI_2sh         1111 001 1 1 . ...... .... 0100 . . . 1 .... @2reg_shr_h
282434f71efSPeter MaydellVSRI_2sh         1111 001 1 1 . ...... .... 0100 . . . 1 .... @2reg_shr_b
283434f71efSPeter Maydell
284d3c8c736SPeter MaydellVSHL_2sh         1111 001 0 1 . ...... .... 0101 . . . 1 .... @2reg_shl_d
285d3c8c736SPeter MaydellVSHL_2sh         1111 001 0 1 . ...... .... 0101 . . . 1 .... @2reg_shl_s
286d3c8c736SPeter MaydellVSHL_2sh         1111 001 0 1 . ...... .... 0101 . . . 1 .... @2reg_shl_h
287d3c8c736SPeter MaydellVSHL_2sh         1111 001 0 1 . ...... .... 0101 . . . 1 .... @2reg_shl_b
288d3c8c736SPeter Maydell
289d3c8c736SPeter MaydellVSLI_2sh         1111 001 1 1 . ...... .... 0101 . . . 1 .... @2reg_shl_d
290d3c8c736SPeter MaydellVSLI_2sh         1111 001 1 1 . ...... .... 0101 . . . 1 .... @2reg_shl_s
291d3c8c736SPeter MaydellVSLI_2sh         1111 001 1 1 . ...... .... 0101 . . . 1 .... @2reg_shl_h
292d3c8c736SPeter MaydellVSLI_2sh         1111 001 1 1 . ...... .... 0101 . . . 1 .... @2reg_shl_b
29337bfce81SPeter Maydell
294*ef2b80ebSRichard HendersonVQSHLU_2sh       1111 001 1 1 . ...... .... 0110 . . . 1 .... @2reg_shl_d
29537bfce81SPeter MaydellVQSHLU_2sh       1111 001 1 1 . ...... .... 0110 . . . 1 .... @2reg_shl_s
29637bfce81SPeter MaydellVQSHLU_2sh       1111 001 1 1 . ...... .... 0110 . . . 1 .... @2reg_shl_h
29737bfce81SPeter MaydellVQSHLU_2sh       1111 001 1 1 . ...... .... 0110 . . . 1 .... @2reg_shl_b
29837bfce81SPeter Maydell
299*ef2b80ebSRichard HendersonVQSHL_S_2sh      1111 001 0 1 . ...... .... 0111 . . . 1 .... @2reg_shl_d
30037bfce81SPeter MaydellVQSHL_S_2sh      1111 001 0 1 . ...... .... 0111 . . . 1 .... @2reg_shl_s
30137bfce81SPeter MaydellVQSHL_S_2sh      1111 001 0 1 . ...... .... 0111 . . . 1 .... @2reg_shl_h
30237bfce81SPeter MaydellVQSHL_S_2sh      1111 001 0 1 . ...... .... 0111 . . . 1 .... @2reg_shl_b
30337bfce81SPeter Maydell
304*ef2b80ebSRichard HendersonVQSHL_U_2sh      1111 001 1 1 . ...... .... 0111 . . . 1 .... @2reg_shl_d
30537bfce81SPeter MaydellVQSHL_U_2sh      1111 001 1 1 . ...... .... 0111 . . . 1 .... @2reg_shl_s
30637bfce81SPeter MaydellVQSHL_U_2sh      1111 001 1 1 . ...... .... 0111 . . . 1 .... @2reg_shl_h
30737bfce81SPeter MaydellVQSHL_U_2sh      1111 001 1 1 . ...... .... 0111 . . . 1 .... @2reg_shl_b
308712182d3SPeter Maydell
309712182d3SPeter MaydellVSHRN_64_2sh     1111 001 0 1 . ...... .... 1000 . 0 . 1 .... @2reg_shrn_d
310712182d3SPeter MaydellVSHRN_32_2sh     1111 001 0 1 . ...... .... 1000 . 0 . 1 .... @2reg_shrn_s
311712182d3SPeter MaydellVSHRN_16_2sh     1111 001 0 1 . ...... .... 1000 . 0 . 1 .... @2reg_shrn_h
312712182d3SPeter Maydell
313712182d3SPeter MaydellVRSHRN_64_2sh    1111 001 0 1 . ...... .... 1000 . 1 . 1 .... @2reg_shrn_d
314712182d3SPeter MaydellVRSHRN_32_2sh    1111 001 0 1 . ...... .... 1000 . 1 . 1 .... @2reg_shrn_s
315712182d3SPeter MaydellVRSHRN_16_2sh    1111 001 0 1 . ...... .... 1000 . 1 . 1 .... @2reg_shrn_h
316712182d3SPeter Maydell
317712182d3SPeter MaydellVQSHRUN_64_2sh   1111 001 1 1 . ...... .... 1000 . 0 . 1 .... @2reg_shrn_d
318712182d3SPeter MaydellVQSHRUN_32_2sh   1111 001 1 1 . ...... .... 1000 . 0 . 1 .... @2reg_shrn_s
319712182d3SPeter MaydellVQSHRUN_16_2sh   1111 001 1 1 . ...... .... 1000 . 0 . 1 .... @2reg_shrn_h
320712182d3SPeter Maydell
321712182d3SPeter MaydellVQRSHRUN_64_2sh  1111 001 1 1 . ...... .... 1000 . 1 . 1 .... @2reg_shrn_d
322712182d3SPeter MaydellVQRSHRUN_32_2sh  1111 001 1 1 . ...... .... 1000 . 1 . 1 .... @2reg_shrn_s
323712182d3SPeter MaydellVQRSHRUN_16_2sh  1111 001 1 1 . ...... .... 1000 . 1 . 1 .... @2reg_shrn_h
324b4a3a77bSPeter Maydell
325b4a3a77bSPeter Maydell# VQSHRN with signed input
326b4a3a77bSPeter MaydellVQSHRN_S64_2sh   1111 001 0 1 . ...... .... 1001 . 0 . 1 .... @2reg_shrn_d
327b4a3a77bSPeter MaydellVQSHRN_S32_2sh   1111 001 0 1 . ...... .... 1001 . 0 . 1 .... @2reg_shrn_s
328b4a3a77bSPeter MaydellVQSHRN_S16_2sh   1111 001 0 1 . ...... .... 1001 . 0 . 1 .... @2reg_shrn_h
329b4a3a77bSPeter Maydell
330b4a3a77bSPeter Maydell# VQRSHRN with signed input
331b4a3a77bSPeter MaydellVQRSHRN_S64_2sh  1111 001 0 1 . ...... .... 1001 . 1 . 1 .... @2reg_shrn_d
332b4a3a77bSPeter MaydellVQRSHRN_S32_2sh  1111 001 0 1 . ...... .... 1001 . 1 . 1 .... @2reg_shrn_s
333b4a3a77bSPeter MaydellVQRSHRN_S16_2sh  1111 001 0 1 . ...... .... 1001 . 1 . 1 .... @2reg_shrn_h
334b4a3a77bSPeter Maydell
335b4a3a77bSPeter Maydell# VQSHRN with unsigned input
336b4a3a77bSPeter MaydellVQSHRN_U64_2sh   1111 001 1 1 . ...... .... 1001 . 0 . 1 .... @2reg_shrn_d
337b4a3a77bSPeter MaydellVQSHRN_U32_2sh   1111 001 1 1 . ...... .... 1001 . 0 . 1 .... @2reg_shrn_s
338b4a3a77bSPeter MaydellVQSHRN_U16_2sh   1111 001 1 1 . ...... .... 1001 . 0 . 1 .... @2reg_shrn_h
339b4a3a77bSPeter Maydell
340b4a3a77bSPeter Maydell# VQRSHRN with unsigned input
341b4a3a77bSPeter MaydellVQRSHRN_U64_2sh  1111 001 1 1 . ...... .... 1001 . 1 . 1 .... @2reg_shrn_d
342b4a3a77bSPeter MaydellVQRSHRN_U32_2sh  1111 001 1 1 . ...... .... 1001 . 1 . 1 .... @2reg_shrn_s
343b4a3a77bSPeter MaydellVQRSHRN_U16_2sh  1111 001 1 1 . ...... .... 1001 . 1 . 1 .... @2reg_shrn_h
344968bf842SPeter Maydell
345968bf842SPeter MaydellVSHLL_S_2sh      1111 001 0 1 . ...... .... 1010 . 0 . 1 .... @2reg_shll_s
346968bf842SPeter MaydellVSHLL_S_2sh      1111 001 0 1 . ...... .... 1010 . 0 . 1 .... @2reg_shll_h
347968bf842SPeter MaydellVSHLL_S_2sh      1111 001 0 1 . ...... .... 1010 . 0 . 1 .... @2reg_shll_b
348968bf842SPeter Maydell
349968bf842SPeter MaydellVSHLL_U_2sh      1111 001 1 1 . ...... .... 1010 . 0 . 1 .... @2reg_shll_s
350968bf842SPeter MaydellVSHLL_U_2sh      1111 001 1 1 . ...... .... 1010 . 0 . 1 .... @2reg_shll_h
351968bf842SPeter MaydellVSHLL_U_2sh      1111 001 1 1 . ...... .... 1010 . 0 . 1 .... @2reg_shll_b
3523da26f11SPeter Maydell
3533da26f11SPeter Maydell# VCVT fixed<->float conversions
35424018cf3SPeter MaydellVCVT_SH_2sh      1111 001 0 1 . ...... .... 1100 0 . . 1 .... @2reg_vcvt_f16
35524018cf3SPeter MaydellVCVT_UH_2sh      1111 001 1 1 . ...... .... 1100 0 . . 1 .... @2reg_vcvt_f16
35624018cf3SPeter MaydellVCVT_HS_2sh      1111 001 0 1 . ...... .... 1101 0 . . 1 .... @2reg_vcvt_f16
35724018cf3SPeter MaydellVCVT_HU_2sh      1111 001 1 1 . ...... .... 1101 0 . . 1 .... @2reg_vcvt_f16
35824018cf3SPeter Maydell
3593da26f11SPeter MaydellVCVT_SF_2sh      1111 001 0 1 . ...... .... 1110 0 . . 1 .... @2reg_vcvt
3603da26f11SPeter MaydellVCVT_UF_2sh      1111 001 1 1 . ...... .... 1110 0 . . 1 .... @2reg_vcvt
3613da26f11SPeter MaydellVCVT_FS_2sh      1111 001 0 1 . ...... .... 1111 0 . . 1 .... @2reg_vcvt
3623da26f11SPeter MaydellVCVT_FU_2sh      1111 001 1 1 . ...... .... 1111 0 . . 1 .... @2reg_vcvt
3632c35a39eSPeter Maydell
3642c35a39eSPeter Maydell######################################################################
3652c35a39eSPeter Maydell# 1-reg-and-modified-immediate grouping:
3662c35a39eSPeter Maydell# 1111 001 i 1 D 000 imm:3 Vd:4 cmode:4 0 Q op 1 Vm:4
3672c35a39eSPeter Maydell######################################################################
3682c35a39eSPeter Maydell
3692c35a39eSPeter Maydell&1reg_imm        vd q imm cmode op
3702c35a39eSPeter Maydell
3712c35a39eSPeter Maydell%asimd_imm_value 24:1 16:3 0:4
3722c35a39eSPeter Maydell
3732c35a39eSPeter Maydell@1reg_imm        .... ... . . . ... ... .... .... . q:1 . . .... \
3742c35a39eSPeter Maydell                 &1reg_imm imm=%asimd_imm_value vd=%vd_dp
3752c35a39eSPeter Maydell
3762c35a39eSPeter Maydell# The cmode/op bits here decode VORR/VBIC/VMOV/VMNV, but
3772c35a39eSPeter Maydell# not in a way we can conveniently represent in decodetree without
3782c35a39eSPeter Maydell# a lot of repetition:
3792c35a39eSPeter Maydell# VORR: op=0, (cmode & 1) && cmode < 12
3802c35a39eSPeter Maydell# VBIC: op=1, (cmode & 1) && cmode < 12
3812c35a39eSPeter Maydell# VMOV: everything else
3822c35a39eSPeter Maydell# So we have a single decode line and check the cmode/op in the
3832c35a39eSPeter Maydell# trans function.
3842c35a39eSPeter MaydellVimm_1r          1111 001 . 1 . 000 ... .... cmode:4 0 . op:1 1 .... @1reg_imm
385b28be095SPeter Maydell
386b28be095SPeter Maydell######################################################################
387b28be095SPeter Maydell# Within the "two registers, or three registers of different lengths"
388b28be095SPeter Maydell# grouping ([23,4]=0b10), bits [21:20] are either part of the opcode
389b28be095SPeter Maydell# decode: 0b11 for VEXT, two-reg-misc, VTBL, and duplicate-scalar;
390b28be095SPeter Maydell# or they are a size field for the three-reg-different-lengths and
391b28be095SPeter Maydell# two-reg-and-scalar insn groups (where size cannot be 0b11). This
392b28be095SPeter Maydell# is slightly awkward for decodetree: we handle it with this
393b28be095SPeter Maydell# non-exclusive group which contains within it two exclusive groups:
394b28be095SPeter Maydell# one for the size=0b11 patterns, and one for the size-not-0b11
395b28be095SPeter Maydell# patterns. This allows us to check that none of the insns within
396b28be095SPeter Maydell# each subgroup accidentally overlap each other. Note that all the
397b28be095SPeter Maydell# trans functions for the size-not-0b11 patterns must check and
398b28be095SPeter Maydell# return false for size==3.
399b28be095SPeter Maydell######################################################################
400b28be095SPeter Maydell{
4010aad761fSPeter Maydell  [
4020aad761fSPeter Maydell    ##################################################################
4030aad761fSPeter Maydell    # Miscellaneous size=0b11 insns
4040aad761fSPeter Maydell    ##################################################################
4050aad761fSPeter Maydell    VEXT         1111 001 0 1 . 11 .... .... imm:4 . q:1 . 0 .... \
4060aad761fSPeter Maydell                 vm=%vm_dp vn=%vn_dp vd=%vd_dp
40754e96c74SPeter Maydell
40854e96c74SPeter Maydell    VTBL         1111 001 1 1 . 11 .... .... 10 len:2 . op:1 . 0 .... \
40954e96c74SPeter Maydell                 vm=%vm_dp vn=%vn_dp vd=%vd_dp
4109aaa23c2SPeter Maydell
4119aaa23c2SPeter Maydell    VDUP_scalar  1111 001 1 1 . 11 index:3 1 .... 11 000 q:1 . 0 .... \
4129aaa23c2SPeter Maydell                 vm=%vm_dp vd=%vd_dp size=0
4139aaa23c2SPeter Maydell    VDUP_scalar  1111 001 1 1 . 11 index:2 10 .... 11 000 q:1 . 0 .... \
4149aaa23c2SPeter Maydell                 vm=%vm_dp vd=%vd_dp size=1
4159aaa23c2SPeter Maydell    VDUP_scalar  1111 001 1 1 . 11 index:1 100 .... 11 000 q:1 . 0 .... \
4169aaa23c2SPeter Maydell                 vm=%vm_dp vd=%vd_dp size=2
417353d2b85SPeter Maydell
418353d2b85SPeter Maydell    ##################################################################
419353d2b85SPeter Maydell    # 2-reg-misc grouping:
420353d2b85SPeter Maydell    # 1111 001 11 D 11 size:2 opc1:2 Vd:4 0 opc2:4 q:1 M 0 Vm:4
421353d2b85SPeter Maydell    ##################################################################
422353d2b85SPeter Maydell
423353d2b85SPeter Maydell    &2misc vd vm q size
424353d2b85SPeter Maydell
425353d2b85SPeter Maydell    @2misc       .... ... .. . .. size:2 .. .... . .... q:1 . . .... \
426353d2b85SPeter Maydell                 &2misc vm=%vm_dp vd=%vd_dp
4273882bdacSPeter Maydell    @2misc_q0    .... ... .. . .. size:2 .. .... . .... . . . .... \
4283882bdacSPeter Maydell                 &2misc vm=%vm_dp vd=%vd_dp q=0
4290b30dd5bSPeter Maydell    @2misc_q1    .... ... .. . .. size:2 .. .... . .... . . . .... \
4300b30dd5bSPeter Maydell                 &2misc vm=%vm_dp vd=%vd_dp q=1
431353d2b85SPeter Maydell
432353d2b85SPeter Maydell    VREV64       1111 001 11 . 11 .. 00 .... 0 0000 . . 0 .... @2misc
43389668082SPeter Maydell    VREV32       1111 001 11 . 11 .. 00 .... 0 0001 . . 0 .... @2misc
43489668082SPeter Maydell    VREV16       1111 001 11 . 11 .. 00 .... 0 0010 . . 0 .... @2misc
4356106af3aSPeter Maydell
4366106af3aSPeter Maydell    VPADDL_S     1111 001 11 . 11 .. 00 .... 0 0100 . . 0 .... @2misc
4376106af3aSPeter Maydell    VPADDL_U     1111 001 11 . 11 .. 00 .... 0 0101 . . 0 .... @2misc
4386106af3aSPeter Maydell
4390b30dd5bSPeter Maydell    AESE         1111 001 11 . 11 .. 00 .... 0 0110 0 . 0 .... @2misc_q1
4400b30dd5bSPeter Maydell    AESD         1111 001 11 . 11 .. 00 .... 0 0110 1 . 0 .... @2misc_q1
4410b30dd5bSPeter Maydell    AESMC        1111 001 11 . 11 .. 00 .... 0 0111 0 . 0 .... @2misc_q1
4420b30dd5bSPeter Maydell    AESIMC       1111 001 11 . 11 .. 00 .... 0 0111 1 . 0 .... @2misc_q1
4430b30dd5bSPeter Maydell
44484eae770SPeter Maydell    VCLS         1111 001 11 . 11 .. 00 .... 0 1000 . . 0 .... @2misc
44584eae770SPeter Maydell    VCLZ         1111 001 11 . 11 .. 00 .... 0 1001 . . 0 .... @2misc
44684eae770SPeter Maydell    VCNT         1111 001 11 . 11 .. 00 .... 0 1010 . . 0 .... @2misc
44784eae770SPeter Maydell
44875153179SPeter Maydell    VMVN         1111 001 11 . 11 .. 00 .... 0 1011 . . 0 .... @2misc
44975153179SPeter Maydell
4506106af3aSPeter Maydell    VPADAL_S     1111 001 11 . 11 .. 00 .... 0 1100 . . 0 .... @2misc
4516106af3aSPeter Maydell    VPADAL_U     1111 001 11 . 11 .. 00 .... 0 1101 . . 0 .... @2misc
452567663a2SPeter Maydell
4534936f38aSPeter Maydell    VQABS        1111 001 11 . 11 .. 00 .... 0 1110 . . 0 .... @2misc
4544936f38aSPeter Maydell    VQNEG        1111 001 11 . 11 .. 00 .... 0 1111 . . 0 .... @2misc
4554936f38aSPeter Maydell
45675153179SPeter Maydell    VCGT0        1111 001 11 . 11 .. 01 .... 0 0000 . . 0 .... @2misc
45775153179SPeter Maydell    VCGE0        1111 001 11 . 11 .. 01 .... 0 0001 . . 0 .... @2misc
45875153179SPeter Maydell    VCEQ0        1111 001 11 . 11 .. 01 .... 0 0010 . . 0 .... @2misc
45975153179SPeter Maydell    VCLE0        1111 001 11 . 11 .. 01 .... 0 0011 . . 0 .... @2misc
46075153179SPeter Maydell    VCLT0        1111 001 11 . 11 .. 01 .... 0 0100 . . 0 .... @2misc
46175153179SPeter Maydell
4620b30dd5bSPeter Maydell    SHA1H        1111 001 11 . 11 .. 01 .... 0 0101 1 . 0 .... @2misc_q1
4630b30dd5bSPeter Maydell
46475153179SPeter Maydell    VABS         1111 001 11 . 11 .. 01 .... 0 0110 . . 0 .... @2misc
46575153179SPeter Maydell    VNEG         1111 001 11 . 11 .. 01 .... 0 0111 . . 0 .... @2misc
46675153179SPeter Maydell
467baa59323SPeter Maydell    VCGT0_F      1111 001 11 . 11 .. 01 .... 0 1000 . . 0 .... @2misc
468baa59323SPeter Maydell    VCGE0_F      1111 001 11 . 11 .. 01 .... 0 1001 . . 0 .... @2misc
469baa59323SPeter Maydell    VCEQ0_F      1111 001 11 . 11 .. 01 .... 0 1010 . . 0 .... @2misc
470baa59323SPeter Maydell    VCLE0_F      1111 001 11 . 11 .. 01 .... 0 1011 . . 0 .... @2misc
471baa59323SPeter Maydell    VCLT0_F      1111 001 11 . 11 .. 01 .... 0 1100 . . 0 .... @2misc
472baa59323SPeter Maydell
47384eae770SPeter Maydell    VABS_F       1111 001 11 . 11 .. 01 .... 0 1110 . . 0 .... @2misc
47484eae770SPeter Maydell    VNEG_F       1111 001 11 . 11 .. 01 .... 0 1111 . . 0 .... @2misc
47584eae770SPeter Maydell
4768ab3a227SPeter Maydell    VSWP         1111 001 11 . 11 .. 10 .... 0 0000 . . 0 .... @2misc
477d4366190SPeter Maydell    VTRN         1111 001 11 . 11 .. 10 .... 0 0001 . . 0 .... @2misc
478567663a2SPeter Maydell    VUZP         1111 001 11 . 11 .. 10 .... 0 0010 . . 0 .... @2misc
479567663a2SPeter Maydell    VZIP         1111 001 11 . 11 .. 10 .... 0 0011 . . 0 .... @2misc
4803882bdacSPeter Maydell
4813882bdacSPeter Maydell    VMOVN        1111 001 11 . 11 .. 10 .... 0 0100 0 . 0 .... @2misc_q0
4823882bdacSPeter Maydell    # VQMOVUN: unsigned result (source is always signed)
4833882bdacSPeter Maydell    VQMOVUN      1111 001 11 . 11 .. 10 .... 0 0100 1 . 0 .... @2misc_q0
4843882bdacSPeter Maydell    # VQMOVN: signed result, source may be signed (_S) or unsigned (_U)
4853882bdacSPeter Maydell    VQMOVN_S     1111 001 11 . 11 .. 10 .... 0 0101 0 . 0 .... @2misc_q0
4863882bdacSPeter Maydell    VQMOVN_U     1111 001 11 . 11 .. 10 .... 0 0101 1 . 0 .... @2misc_q0
487749e2be3SPeter Maydell
488749e2be3SPeter Maydell    VSHLL        1111 001 11 . 11 .. 10 .... 0 0110 0 . 0 .... @2misc_q0
489654a5173SPeter Maydell
4900b30dd5bSPeter Maydell    SHA1SU1      1111 001 11 . 11 .. 10 .... 0 0111 0 . 0 .... @2misc_q1
4910b30dd5bSPeter Maydell    SHA256SU0    1111 001 11 . 11 .. 10 .... 0 0111 1 . 0 .... @2misc_q1
4920b30dd5bSPeter Maydell
493128123eaSPeter Maydell    VRINTN       1111 001 11 . 11 .. 10 .... 0 1000 . . 0 .... @2misc
4943e96b205SPeter Maydell    VRINTX       1111 001 11 . 11 .. 10 .... 0 1001 . . 0 .... @2misc
495128123eaSPeter Maydell    VRINTA       1111 001 11 . 11 .. 10 .... 0 1010 . . 0 .... @2misc
496128123eaSPeter Maydell    VRINTZ       1111 001 11 . 11 .. 10 .... 0 1011 . . 0 .... @2misc
4973e96b205SPeter Maydell
498654a5173SPeter Maydell    VCVT_F16_F32 1111 001 11 . 11 .. 10 .... 0 1100 0 . 0 .... @2misc_q0
499d29b17caSRichard Henderson    VCVT_B16_F32 1111 001 11 . 11 .. 10 .... 0 1100 1 . 0 .... @2misc_q0
500128123eaSPeter Maydell
501128123eaSPeter Maydell    VRINTM       1111 001 11 . 11 .. 10 .... 0 1101 . . 0 .... @2misc
502128123eaSPeter Maydell
503654a5173SPeter Maydell    VCVT_F32_F16 1111 001 11 . 11 .. 10 .... 0 1110 0 . 0 .... @2misc_q0
50484eae770SPeter Maydell
505128123eaSPeter Maydell    VRINTP       1111 001 11 . 11 .. 10 .... 0 1111 . . 0 .... @2misc
506128123eaSPeter Maydell
507a183d5fbSPeter Maydell    VCVTAS       1111 001 11 . 11 .. 11 .... 0 0000 . . 0 .... @2misc
508a183d5fbSPeter Maydell    VCVTAU       1111 001 11 . 11 .. 11 .... 0 0001 . . 0 .... @2misc
509a183d5fbSPeter Maydell    VCVTNS       1111 001 11 . 11 .. 11 .... 0 0010 . . 0 .... @2misc
510a183d5fbSPeter Maydell    VCVTNU       1111 001 11 . 11 .. 11 .... 0 0011 . . 0 .... @2misc
511a183d5fbSPeter Maydell    VCVTPS       1111 001 11 . 11 .. 11 .... 0 0100 . . 0 .... @2misc
512a183d5fbSPeter Maydell    VCVTPU       1111 001 11 . 11 .. 11 .... 0 0101 . . 0 .... @2misc
513a183d5fbSPeter Maydell    VCVTMS       1111 001 11 . 11 .. 11 .... 0 0110 . . 0 .... @2misc
514a183d5fbSPeter Maydell    VCVTMU       1111 001 11 . 11 .. 11 .... 0 0111 . . 0 .... @2misc
515a183d5fbSPeter Maydell
51684eae770SPeter Maydell    VRECPE       1111 001 11 . 11 .. 11 .... 0 1000 . . 0 .... @2misc
51784eae770SPeter Maydell    VRSQRTE      1111 001 11 . 11 .. 11 .... 0 1001 . . 0 .... @2misc
5183e96b205SPeter Maydell    VRECPE_F     1111 001 11 . 11 .. 11 .... 0 1010 . . 0 .... @2misc
5193e96b205SPeter Maydell    VRSQRTE_F    1111 001 11 . 11 .. 11 .... 0 1011 . . 0 .... @2misc
5203e96b205SPeter Maydell    VCVT_FS      1111 001 11 . 11 .. 11 .... 0 1100 . . 0 .... @2misc
5213e96b205SPeter Maydell    VCVT_FU      1111 001 11 . 11 .. 11 .... 0 1101 . . 0 .... @2misc
5223e96b205SPeter Maydell    VCVT_SF      1111 001 11 . 11 .. 11 .... 0 1110 . . 0 .... @2misc
5233e96b205SPeter Maydell    VCVT_UF      1111 001 11 . 11 .. 11 .... 0 1111 . . 0 .... @2misc
5240aad761fSPeter Maydell  ]
525b28be095SPeter Maydell
526b28be095SPeter Maydell  # Subgroup for size != 0b11
527b28be095SPeter Maydell  [
528b28be095SPeter Maydell    ##################################################################
529b28be095SPeter Maydell    # 3-reg-different-length grouping:
530b28be095SPeter Maydell    # 1111 001 U 1 D sz!=11 Vn:4 Vd:4 opc:4 N 0 M 0 Vm:4
531b28be095SPeter Maydell    ##################################################################
532b28be095SPeter Maydell
533b28be095SPeter Maydell    &3diff vm vn vd size
534b28be095SPeter Maydell
535b28be095SPeter Maydell    @3diff       .... ... . . . size:2 .... .... .... . . . . .... \
536b28be095SPeter Maydell                 &3diff vm=%vm_dp vn=%vn_dp vd=%vd_dp
537b28be095SPeter Maydell
538b28be095SPeter Maydell    VADDL_S_3d   1111 001 0 1 . .. .... .... 0000 . 0 . 0 .... @3diff
539b28be095SPeter Maydell    VADDL_U_3d   1111 001 1 1 . .. .... .... 0000 . 0 . 0 .... @3diff
540b28be095SPeter Maydell
541b28be095SPeter Maydell    VADDW_S_3d   1111 001 0 1 . .. .... .... 0001 . 0 . 0 .... @3diff
542b28be095SPeter Maydell    VADDW_U_3d   1111 001 1 1 . .. .... .... 0001 . 0 . 0 .... @3diff
543b28be095SPeter Maydell
544b28be095SPeter Maydell    VSUBL_S_3d   1111 001 0 1 . .. .... .... 0010 . 0 . 0 .... @3diff
545b28be095SPeter Maydell    VSUBL_U_3d   1111 001 1 1 . .. .... .... 0010 . 0 . 0 .... @3diff
546b28be095SPeter Maydell
547b28be095SPeter Maydell    VSUBW_S_3d   1111 001 0 1 . .. .... .... 0011 . 0 . 0 .... @3diff
548b28be095SPeter Maydell    VSUBW_U_3d   1111 001 1 1 . .. .... .... 0011 . 0 . 0 .... @3diff
5490fa1ab03SPeter Maydell
5500fa1ab03SPeter Maydell    VADDHN_3d    1111 001 0 1 . .. .... .... 0100 . 0 . 0 .... @3diff
5510fa1ab03SPeter Maydell    VRADDHN_3d   1111 001 1 1 . .. .... .... 0100 . 0 . 0 .... @3diff
5520fa1ab03SPeter Maydell
553f5b28401SPeter Maydell    VABAL_S_3d   1111 001 0 1 . .. .... .... 0101 . 0 . 0 .... @3diff
554f5b28401SPeter Maydell    VABAL_U_3d   1111 001 1 1 . .. .... .... 0101 . 0 . 0 .... @3diff
555f5b28401SPeter Maydell
5560fa1ab03SPeter Maydell    VSUBHN_3d    1111 001 0 1 . .. .... .... 0110 . 0 . 0 .... @3diff
5570fa1ab03SPeter Maydell    VRSUBHN_3d   1111 001 1 1 . .. .... .... 0110 . 0 . 0 .... @3diff
558f5b28401SPeter Maydell
559f5b28401SPeter Maydell    VABDL_S_3d   1111 001 0 1 . .. .... .... 0111 . 0 . 0 .... @3diff
560f5b28401SPeter Maydell    VABDL_U_3d   1111 001 1 1 . .. .... .... 0111 . 0 . 0 .... @3diff
5613a1d9eb0SPeter Maydell
5623a1d9eb0SPeter Maydell    VMLAL_S_3d   1111 001 0 1 . .. .... .... 1000 . 0 . 0 .... @3diff
5633a1d9eb0SPeter Maydell    VMLAL_U_3d   1111 001 1 1 . .. .... .... 1000 . 0 . 0 .... @3diff
5643a1d9eb0SPeter Maydell
5659546ca59SPeter Maydell    VQDMLAL_3d   1111 001 0 1 . .. .... .... 1001 . 0 . 0 .... @3diff
5669546ca59SPeter Maydell
5673a1d9eb0SPeter Maydell    VMLSL_S_3d   1111 001 0 1 . .. .... .... 1010 . 0 . 0 .... @3diff
5683a1d9eb0SPeter Maydell    VMLSL_U_3d   1111 001 1 1 . .. .... .... 1010 . 0 . 0 .... @3diff
5693a1d9eb0SPeter Maydell
5709546ca59SPeter Maydell    VQDMLSL_3d   1111 001 0 1 . .. .... .... 1011 . 0 . 0 .... @3diff
5719546ca59SPeter Maydell
5723a1d9eb0SPeter Maydell    VMULL_S_3d   1111 001 0 1 . .. .... .... 1100 . 0 . 0 .... @3diff
5733a1d9eb0SPeter Maydell    VMULL_U_3d   1111 001 1 1 . .. .... .... 1100 . 0 . 0 .... @3diff
5749546ca59SPeter Maydell
5759546ca59SPeter Maydell    VQDMULL_3d   1111 001 0 1 . .. .... .... 1101 . 0 . 0 .... @3diff
57618fb58d5SPeter Maydell
57718fb58d5SPeter Maydell    VMULL_P_3d   1111 001 0 1 . .. .... .... 1110 . 0 . 0 .... @3diff
57896fc80f5SPeter Maydell
57996fc80f5SPeter Maydell    ##################################################################
58096fc80f5SPeter Maydell    # 2-regs-plus-scalar grouping:
58196fc80f5SPeter Maydell    # 1111 001 Q 1 D sz!=11 Vn:4 Vd:4 opc:4 N 1 M 0 Vm:4
58296fc80f5SPeter Maydell    ##################################################################
58396fc80f5SPeter Maydell    &2scalar vm vn vd size q
58496fc80f5SPeter Maydell
58596fc80f5SPeter Maydell    @2scalar     .... ... q:1 . . size:2 .... .... .... . . . . .... \
58696fc80f5SPeter Maydell                 &2scalar vm=%vm_dp vn=%vn_dp vd=%vd_dp
58777e576a9SPeter Maydell    # For the 'long' ops the Q bit is part of insn decode
58877e576a9SPeter Maydell    @2scalar_q0  .... ... . . . size:2 .... .... .... . . . . .... \
58977e576a9SPeter Maydell                 &2scalar vm=%vm_dp vn=%vn_dp vd=%vd_dp q=0
59096fc80f5SPeter Maydell
59196fc80f5SPeter Maydell    VMLA_2sc     1111 001 . 1 . .. .... .... 0000 . 1 . 0 .... @2scalar
59285ac9aefSPeter Maydell    VMLA_F_2sc   1111 001 . 1 . .. .... .... 0001 . 1 . 0 .... @2scalar
59396fc80f5SPeter Maydell
59477e576a9SPeter Maydell    VMLAL_S_2sc  1111 001 0 1 . .. .... .... 0010 . 1 . 0 .... @2scalar_q0
59577e576a9SPeter Maydell    VMLAL_U_2sc  1111 001 1 1 . .. .... .... 0010 . 1 . 0 .... @2scalar_q0
59677e576a9SPeter Maydell
59777e576a9SPeter Maydell    VQDMLAL_2sc  1111 001 0 1 . .. .... .... 0011 . 1 . 0 .... @2scalar_q0
59877e576a9SPeter Maydell
59996fc80f5SPeter Maydell    VMLS_2sc     1111 001 . 1 . .. .... .... 0100 . 1 . 0 .... @2scalar
60085ac9aefSPeter Maydell    VMLS_F_2sc   1111 001 . 1 . .. .... .... 0101 . 1 . 0 .... @2scalar
60196fc80f5SPeter Maydell
60277e576a9SPeter Maydell    VMLSL_S_2sc  1111 001 0 1 . .. .... .... 0110 . 1 . 0 .... @2scalar_q0
60377e576a9SPeter Maydell    VMLSL_U_2sc  1111 001 1 1 . .. .... .... 0110 . 1 . 0 .... @2scalar_q0
60477e576a9SPeter Maydell
60577e576a9SPeter Maydell    VQDMLSL_2sc  1111 001 0 1 . .. .... .... 0111 . 1 . 0 .... @2scalar_q0
60677e576a9SPeter Maydell
60796fc80f5SPeter Maydell    VMUL_2sc     1111 001 . 1 . .. .... .... 1000 . 1 . 0 .... @2scalar
60885ac9aefSPeter Maydell    VMUL_F_2sc   1111 001 . 1 . .. .... .... 1001 . 1 . 0 .... @2scalar
609b2fc7be9SPeter Maydell
61077e576a9SPeter Maydell    VMULL_S_2sc  1111 001 0 1 . .. .... .... 1010 . 1 . 0 .... @2scalar_q0
61177e576a9SPeter Maydell    VMULL_U_2sc  1111 001 1 1 . .. .... .... 1010 . 1 . 0 .... @2scalar_q0
61277e576a9SPeter Maydell
61377e576a9SPeter Maydell    VQDMULL_2sc  1111 001 0 1 . .. .... .... 1011 . 1 . 0 .... @2scalar_q0
61477e576a9SPeter Maydell
615b2fc7be9SPeter Maydell    VQDMULH_2sc  1111 001 . 1 . .. .... .... 1100 . 1 . 0 .... @2scalar
616b2fc7be9SPeter Maydell    VQRDMULH_2sc 1111 001 . 1 . .. .... .... 1101 . 1 . 0 .... @2scalar
617aa318f5bSPeter Maydell
618aa318f5bSPeter Maydell    VQRDMLAH_2sc 1111 001 . 1 . .. .... .... 1110 . 1 . 0 .... @2scalar
619aa318f5bSPeter Maydell    VQRDMLSH_2sc 1111 001 . 1 . .. .... .... 1111 . 1 . 0 .... @2scalar
620b28be095SPeter Maydell  ]
621b28be095SPeter Maydell}
622