xref: /qemu/target/arm/tcg/neon-dp.decode (revision 24018cf3990b692b51e50183c5fbd98d17b3fa40)
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
8625e3dd4SPeter Maydell# version 2 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
48a26a352bSPeter Maydell# For FP insns the high bit of 'size' is used as part of opcode decode
49a26a352bSPeter Maydell@3same_fp        .... ... . . . . size:1 .... .... .... . q:1 . . .... \
50a26a352bSPeter Maydell                 &3same vm=%vm_dp vn=%vn_dp vd=%vd_dp
51ab978335SPeter Maydell@3same_fp_q0     .... ... . . . . size:1 .... .... .... . 0 . . .... \
52ab978335SPeter Maydell                 &3same vm=%vm_dp vn=%vn_dp vd=%vd_dp q=0
53a26a352bSPeter Maydell
54cb294bcaSPeter MaydellVHADD_S_3s       1111 001 0 0 . .. .... .... 0000 . . . 0 .... @3same
55cb294bcaSPeter MaydellVHADD_U_3s       1111 001 1 0 . .. .... .... 0000 . . . 0 .... @3same
567a9497f1SPeter MaydellVQADD_S_3s       1111 001 0 0 . .. .... .... 0000 . . . 1 .... @3same
577a9497f1SPeter MaydellVQADD_U_3s       1111 001 1 0 . .. .... .... 0000 . . . 1 .... @3same
587a9497f1SPeter Maydell
598e44d03fSPeter MaydellVRHADD_S_3s      1111 001 0 0 . .. .... .... 0001 . . . 0 .... @3same
608e44d03fSPeter MaydellVRHADD_U_3s      1111 001 1 0 . .. .... .... 0001 . . . 0 .... @3same
618e44d03fSPeter Maydell
6235a548edSPeter Maydell@3same_logic     .... ... . . . .. .... .... .... . q:1 .. .... \
6335a548edSPeter Maydell                 &3same vm=%vm_dp vn=%vn_dp vd=%vd_dp size=0
6435a548edSPeter Maydell
6535a548edSPeter MaydellVAND_3s          1111 001 0 0 . 00 .... .... 0001 ... 1 .... @3same_logic
6635a548edSPeter MaydellVBIC_3s          1111 001 0 0 . 01 .... .... 0001 ... 1 .... @3same_logic
6735a548edSPeter MaydellVORR_3s          1111 001 0 0 . 10 .... .... 0001 ... 1 .... @3same_logic
6835a548edSPeter MaydellVORN_3s          1111 001 0 0 . 11 .... .... 0001 ... 1 .... @3same_logic
6935a548edSPeter MaydellVEOR_3s          1111 001 1 0 . 00 .... .... 0001 ... 1 .... @3same_logic
7035a548edSPeter MaydellVBSL_3s          1111 001 1 0 . 01 .... .... 0001 ... 1 .... @3same_logic
7135a548edSPeter MaydellVBIT_3s          1111 001 1 0 . 10 .... .... 0001 ... 1 .... @3same_logic
7235a548edSPeter MaydellVBIF_3s          1111 001 1 0 . 11 .... .... 0001 ... 1 .... @3same_logic
7335a548edSPeter Maydell
748e44d03fSPeter MaydellVHSUB_S_3s       1111 001 0 0 . .. .... .... 0010 . . . 0 .... @3same
758e44d03fSPeter MaydellVHSUB_U_3s       1111 001 1 0 . .. .... .... 0010 . . . 0 .... @3same
768e44d03fSPeter Maydell
777a9497f1SPeter MaydellVQSUB_S_3s       1111 001 0 0 . .. .... .... 0010 . . . 1 .... @3same
787a9497f1SPeter MaydellVQSUB_U_3s       1111 001 1 0 . .. .... .... 0010 . . . 1 .... @3same
797a9497f1SPeter Maydell
8002bd0cdbSPeter MaydellVCGT_S_3s        1111 001 0 0 . .. .... .... 0011 . . . 0 .... @3same
8102bd0cdbSPeter MaydellVCGT_U_3s        1111 001 1 0 . .. .... .... 0011 . . . 0 .... @3same
8202bd0cdbSPeter MaydellVCGE_S_3s        1111 001 0 0 . .. .... .... 0011 . . . 1 .... @3same
8302bd0cdbSPeter MaydellVCGE_U_3s        1111 001 1 0 . .. .... .... 0011 . . . 1 .... @3same
8402bd0cdbSPeter Maydell
85e9eee531SRichard Henderson# The _rev suffix indicates that Vn and Vm are reversed. This is
86e9eee531SRichard Henderson# the case for shifts. In the Arm ARM these insns are documented
87e9eee531SRichard Henderson# with the Vm and Vn fields in their usual places, but in the
88e9eee531SRichard Henderson# assembly the operands are listed "backwards", ie in the order
89e9eee531SRichard Henderson# Dd, Dm, Dn where other insns use Dd, Dn, Dm. For QEMU we choose
90e9eee531SRichard Henderson# to consider Vm and Vn as being in different fields in the insn,
91e9eee531SRichard Henderson# which allows us to avoid special-casing shifts in the trans_
92e9eee531SRichard Henderson# function code. We would otherwise need to manually swap the operands
93e9eee531SRichard Henderson# over to call Neon helper functions that are shared with AArch64,
94e9eee531SRichard Henderson# which does not have this odd reversed-operand situation.
95e9eee531SRichard Henderson@3same_rev       .... ... . . . size:2 .... .... .... . q:1 . . .... \
96e9eee531SRichard Henderson                 &3same vn=%vm_dp vm=%vn_dp vd=%vd_dp
97e9eee531SRichard Henderson
98e9eee531SRichard HendersonVSHL_S_3s        1111 001 0 0 . .. .... .... 0100 . . . 0 .... @3same_rev
99e9eee531SRichard HendersonVSHL_U_3s        1111 001 1 0 . .. .... .... 0100 . . . 0 .... @3same_rev
1000de34fd4SPeter Maydell
10135d4352fSPeter Maydell# Insns operating on 64-bit elements (size!=0b11 handled elsewhere)
10235d4352fSPeter Maydell# The _rev suffix indicates that Vn and Vm are reversed (as explained
10335d4352fSPeter Maydell# by the comment for the @3same_rev format).
10435d4352fSPeter Maydell@3same_64_rev    .... ... . . . 11 .... .... .... . q:1 . . .... \
10535d4352fSPeter Maydell                 &3same vm=%vn_dp vn=%vm_dp vd=%vd_dp size=3
10635d4352fSPeter Maydell
1076812dfdcSPeter Maydell{
10835d4352fSPeter Maydell  VQSHL_S64_3s   1111 001 0 0 . .. .... .... 0100 . . . 1 .... @3same_64_rev
1096812dfdcSPeter Maydell  VQSHL_S_3s     1111 001 0 0 . .. .... .... 0100 . . . 1 .... @3same_rev
1106812dfdcSPeter Maydell}
1116812dfdcSPeter Maydell{
11235d4352fSPeter Maydell  VQSHL_U64_3s   1111 001 1 0 . .. .... .... 0100 . . . 1 .... @3same_64_rev
1136812dfdcSPeter Maydell  VQSHL_U_3s     1111 001 1 0 . .. .... .... 0100 . . . 1 .... @3same_rev
1146812dfdcSPeter Maydell}
1156812dfdcSPeter Maydell{
11635d4352fSPeter Maydell  VRSHL_S64_3s   1111 001 0 0 . .. .... .... 0101 . . . 0 .... @3same_64_rev
1176812dfdcSPeter Maydell  VRSHL_S_3s     1111 001 0 0 . .. .... .... 0101 . . . 0 .... @3same_rev
1186812dfdcSPeter Maydell}
1196812dfdcSPeter Maydell{
12035d4352fSPeter Maydell  VRSHL_U64_3s   1111 001 1 0 . .. .... .... 0101 . . . 0 .... @3same_64_rev
1216812dfdcSPeter Maydell  VRSHL_U_3s     1111 001 1 0 . .. .... .... 0101 . . . 0 .... @3same_rev
1226812dfdcSPeter Maydell}
1236812dfdcSPeter Maydell{
12435d4352fSPeter Maydell  VQRSHL_S64_3s  1111 001 0 0 . .. .... .... 0101 . . . 1 .... @3same_64_rev
1256812dfdcSPeter Maydell  VQRSHL_S_3s    1111 001 0 0 . .. .... .... 0101 . . . 1 .... @3same_rev
1266812dfdcSPeter Maydell}
1276812dfdcSPeter Maydell{
12835d4352fSPeter Maydell  VQRSHL_U64_3s  1111 001 1 0 . .. .... .... 0101 . . . 1 .... @3same_64_rev
1296812dfdcSPeter Maydell  VQRSHL_U_3s    1111 001 1 0 . .. .... .... 0101 . . . 1 .... @3same_rev
1306812dfdcSPeter Maydell}
13135d4352fSPeter Maydell
13236b59310SPeter MaydellVMAX_S_3s        1111 001 0 0 . .. .... .... 0110 . . . 0 .... @3same
13336b59310SPeter MaydellVMAX_U_3s        1111 001 1 0 . .. .... .... 0110 . . . 0 .... @3same
13436b59310SPeter MaydellVMIN_S_3s        1111 001 0 0 . .. .... .... 0110 . . . 1 .... @3same
13536b59310SPeter MaydellVMIN_U_3s        1111 001 1 0 . .. .... .... 0110 . . . 1 .... @3same
13636b59310SPeter Maydell
1377715098fSPeter MaydellVABD_S_3s        1111 001 0 0 . .. .... .... 0111 . . . 0 .... @3same
1387715098fSPeter MaydellVABD_U_3s        1111 001 1 0 . .. .... .... 0111 . . . 0 .... @3same
1397715098fSPeter Maydell
1407715098fSPeter MaydellVABA_S_3s        1111 001 0 0 . .. .... .... 0111 . . . 1 .... @3same
1417715098fSPeter MaydellVABA_U_3s        1111 001 1 0 . .. .... .... 0111 . . . 1 .... @3same
1427715098fSPeter Maydell
143a4e143acSPeter MaydellVADD_3s          1111 001 0 0 . .. .... .... 1000 . . . 0 .... @3same
144a4e143acSPeter MaydellVSUB_3s          1111 001 1 0 . .. .... .... 1000 . . . 0 .... @3same
14502bd0cdbSPeter Maydell
14602bd0cdbSPeter MaydellVTST_3s          1111 001 0 0 . .. .... .... 1000 . . . 1 .... @3same
14702bd0cdbSPeter MaydellVCEQ_3s          1111 001 1 0 . .. .... .... 1000 . . . 1 .... @3same
1480de34fd4SPeter Maydell
1490de34fd4SPeter MaydellVMLA_3s          1111 001 0 0 . .. .... .... 1001 . . . 0 .... @3same
1500de34fd4SPeter MaydellVMLS_3s          1111 001 1 0 . .. .... .... 1001 . . . 0 .... @3same
1510de34fd4SPeter Maydell
1520de34fd4SPeter MaydellVMUL_3s          1111 001 0 0 . .. .... .... 1001 . . . 1 .... @3same
1530de34fd4SPeter MaydellVMUL_p_3s        1111 001 1 0 . .. .... .... 1001 . . . 1 .... @3same
154a0635695SPeter Maydell
155059c2398SPeter MaydellVPMAX_S_3s       1111 001 0 0 . .. .... .... 1010 . . . 0 .... @3same_q0
156059c2398SPeter MaydellVPMAX_U_3s       1111 001 1 0 . .. .... .... 1010 . . . 0 .... @3same_q0
157059c2398SPeter Maydell
158059c2398SPeter MaydellVPMIN_S_3s       1111 001 0 0 . .. .... .... 1010 . . . 1 .... @3same_q0
159059c2398SPeter MaydellVPMIN_U_3s       1111 001 1 0 . .. .... .... 1010 . . . 1 .... @3same_q0
160059c2398SPeter Maydell
1617ecc28bcSPeter MaydellVQDMULH_3s       1111 001 0 0 . .. .... .... 1011 . . . 0 .... @3same
1627ecc28bcSPeter MaydellVQRDMULH_3s      1111 001 1 0 . .. .... .... 1011 . . . 0 .... @3same
1637ecc28bcSPeter Maydell
164fa22827dSPeter MaydellVPADD_3s         1111 001 0 0 . .. .... .... 1011 . . . 1 .... @3same_q0
165fa22827dSPeter Maydell
166a0635695SPeter MaydellVQRDMLAH_3s      1111 001 1 0 . .. .... .... 1011 ... 1 .... @3same
16721290edfSPeter Maydell
168effa992fSRichard Henderson@3same_crypto    .... .... .... .... .... .... .... .... \
169effa992fSRichard Henderson                 &3same vm=%vm_dp vn=%vn_dp vd=%vd_dp size=0 q=1
170effa992fSRichard Henderson
171afc8b7d3SRichard HendersonSHA1C_3s         1111 001 0 0 . 00 .... .... 1100 . 1 . 0 .... @3same_crypto
172afc8b7d3SRichard HendersonSHA1P_3s         1111 001 0 0 . 01 .... .... 1100 . 1 . 0 .... @3same_crypto
173afc8b7d3SRichard HendersonSHA1M_3s         1111 001 0 0 . 10 .... .... 1100 . 1 . 0 .... @3same_crypto
174afc8b7d3SRichard HendersonSHA1SU0_3s       1111 001 0 0 . 11 .... .... 1100 . 1 . 0 .... @3same_crypto
175effa992fSRichard HendersonSHA256H_3s       1111 001 1 0 . 00 .... .... 1100 . 1 . 0 .... @3same_crypto
176effa992fSRichard HendersonSHA256H2_3s      1111 001 1 0 . 01 .... .... 1100 . 1 . 0 .... @3same_crypto
177effa992fSRichard HendersonSHA256SU1_3s     1111 001 1 0 . 10 .... .... 1100 . 1 . 0 .... @3same_crypto
17821290edfSPeter Maydell
179e95485f8SPeter MaydellVFMA_fp_3s       1111 001 0 0 . 0 . .... .... 1100 ... 1 .... @3same_fp
180e95485f8SPeter MaydellVFMS_fp_3s       1111 001 0 0 . 1 . .... .... 1100 ... 1 .... @3same_fp
181e95485f8SPeter Maydell
182a0635695SPeter MaydellVQRDMLSH_3s      1111 001 1 0 . .. .... .... 1100 ... 1 .... @3same
183a26a352bSPeter Maydell
184a26a352bSPeter MaydellVADD_fp_3s       1111 001 0 0 . 0 . .... .... 1101 ... 0 .... @3same_fp
185a26a352bSPeter MaydellVSUB_fp_3s       1111 001 0 0 . 1 . .... .... 1101 ... 0 .... @3same_fp
186ab978335SPeter MaydellVPADD_fp_3s      1111 001 1 0 . 0 . .... .... 1101 ... 0 .... @3same_fp_q0
187a26a352bSPeter MaydellVABD_fp_3s       1111 001 1 0 . 1 . .... .... 1101 ... 0 .... @3same_fp
1888aa71eadSPeter MaydellVMLA_fp_3s       1111 001 0 0 . 0 . .... .... 1101 ... 1 .... @3same_fp
1898aa71eadSPeter MaydellVMLS_fp_3s       1111 001 0 0 . 1 . .... .... 1101 ... 1 .... @3same_fp
1908aa71eadSPeter MaydellVMUL_fp_3s       1111 001 1 0 . 0 . .... .... 1101 ... 1 .... @3same_fp
191727ff1d6SPeter MaydellVCEQ_fp_3s       1111 001 0 0 . 0 . .... .... 1110 ... 0 .... @3same_fp
192727ff1d6SPeter MaydellVCGE_fp_3s       1111 001 1 0 . 0 . .... .... 1110 ... 0 .... @3same_fp
193727ff1d6SPeter MaydellVACGE_fp_3s      1111 001 1 0 . 0 . .... .... 1110 ... 1 .... @3same_fp
194727ff1d6SPeter MaydellVCGT_fp_3s       1111 001 1 0 . 1 . .... .... 1110 ... 0 .... @3same_fp
195727ff1d6SPeter MaydellVACGT_fp_3s      1111 001 1 0 . 1 . .... .... 1110 ... 1 .... @3same_fp
196d5fdf9e9SPeter MaydellVMAX_fp_3s       1111 001 0 0 . 0 . .... .... 1111 ... 0 .... @3same_fp
197d5fdf9e9SPeter MaydellVMIN_fp_3s       1111 001 0 0 . 1 . .... .... 1111 ... 0 .... @3same_fp
198ab978335SPeter MaydellVPMAX_fp_3s      1111 001 1 0 . 0 . .... .... 1111 ... 0 .... @3same_fp_q0
199ab978335SPeter MaydellVPMIN_fp_3s      1111 001 1 0 . 1 . .... .... 1111 ... 0 .... @3same_fp_q0
200d5fdf9e9SPeter MaydellVRECPS_fp_3s     1111 001 0 0 . 0 . .... .... 1111 ... 1 .... @3same_fp
201d5fdf9e9SPeter MaydellVRSQRTS_fp_3s    1111 001 0 0 . 1 . .... .... 1111 ... 1 .... @3same_fp
202d5fdf9e9SPeter MaydellVMAXNM_fp_3s     1111 001 1 0 . 0 . .... .... 1111 ... 1 .... @3same_fp
203d5fdf9e9SPeter MaydellVMINNM_fp_3s     1111 001 1 0 . 1 . .... .... 1111 ... 1 .... @3same_fp
204d3c8c736SPeter Maydell
205d3c8c736SPeter Maydell######################################################################
206d3c8c736SPeter Maydell# 2-reg-and-shift grouping:
207d3c8c736SPeter Maydell# 1111 001 U 1 D immH:3 immL:3 Vd:4 opc:4 L Q M 1 Vm:4
208d3c8c736SPeter Maydell######################################################################
209d3c8c736SPeter Maydell&2reg_shift vm vd q shift size
210d3c8c736SPeter Maydell
21166432d6bSPeter Maydell# Right shifts are encoded as N - shift, where N is the element size in bits.
21266432d6bSPeter Maydell%neon_rshift_i6  16:6 !function=rsub_64
21366432d6bSPeter Maydell%neon_rshift_i5  16:5 !function=rsub_32
21466432d6bSPeter Maydell%neon_rshift_i4  16:4 !function=rsub_16
21566432d6bSPeter Maydell%neon_rshift_i3  16:3 !function=rsub_8
21666432d6bSPeter Maydell
21766432d6bSPeter Maydell@2reg_shr_d      .... ... . . . ......  .... .... 1 q:1 . . .... \
21866432d6bSPeter Maydell                 &2reg_shift vm=%vm_dp vd=%vd_dp size=3 shift=%neon_rshift_i6
21966432d6bSPeter Maydell@2reg_shr_s      .... ... . . . 1 ..... .... .... 0 q:1 . . .... \
22066432d6bSPeter Maydell                 &2reg_shift vm=%vm_dp vd=%vd_dp size=2 shift=%neon_rshift_i5
22166432d6bSPeter Maydell@2reg_shr_h      .... ... . . . 01 .... .... .... 0 q:1 . . .... \
22266432d6bSPeter Maydell                 &2reg_shift vm=%vm_dp vd=%vd_dp size=1 shift=%neon_rshift_i4
22366432d6bSPeter Maydell@2reg_shr_b      .... ... . . . 001 ... .... .... 0 q:1 . . .... \
22466432d6bSPeter Maydell                 &2reg_shift vm=%vm_dp vd=%vd_dp size=0 shift=%neon_rshift_i3
22566432d6bSPeter Maydell
226d3c8c736SPeter Maydell@2reg_shl_d      .... ... . . . shift:6      .... .... 1 q:1 . . .... \
227d3c8c736SPeter Maydell                 &2reg_shift vm=%vm_dp vd=%vd_dp size=3
228d3c8c736SPeter Maydell@2reg_shl_s      .... ... . . . 1 shift:5    .... .... 0 q:1 . . .... \
229d3c8c736SPeter Maydell                 &2reg_shift vm=%vm_dp vd=%vd_dp size=2
230d3c8c736SPeter Maydell@2reg_shl_h      .... ... . . . 01 shift:4   .... .... 0 q:1 . . .... \
231d3c8c736SPeter Maydell                 &2reg_shift vm=%vm_dp vd=%vd_dp size=1
232d3c8c736SPeter Maydell@2reg_shl_b      .... ... . . . 001 shift:3  .... .... 0 q:1 . . .... \
233d3c8c736SPeter Maydell                 &2reg_shift vm=%vm_dp vd=%vd_dp size=0
234d3c8c736SPeter Maydell
235712182d3SPeter Maydell# Narrowing right shifts: here the Q bit is part of the opcode decode
236712182d3SPeter Maydell@2reg_shrn_d     .... ... . . . 1 ..... .... .... 0 . . . .... \
237712182d3SPeter Maydell                 &2reg_shift vm=%vm_dp vd=%vd_dp size=3 q=0 \
238712182d3SPeter Maydell                 shift=%neon_rshift_i5
239712182d3SPeter Maydell@2reg_shrn_s     .... ... . . . 01 .... .... .... 0 . . . .... \
240712182d3SPeter Maydell                 &2reg_shift vm=%vm_dp vd=%vd_dp size=2 q=0 \
241712182d3SPeter Maydell                 shift=%neon_rshift_i4
242712182d3SPeter Maydell@2reg_shrn_h     .... ... . . . 001 ... .... .... 0 . . . .... \
243712182d3SPeter Maydell                 &2reg_shift vm=%vm_dp vd=%vd_dp size=1 q=0 \
244712182d3SPeter Maydell                 shift=%neon_rshift_i3
245712182d3SPeter Maydell
246968bf842SPeter Maydell# Long left shifts: again Q is part of opcode decode
247968bf842SPeter Maydell@2reg_shll_s     .... ... . . . 1 shift:5    .... .... 0 . . . .... \
248968bf842SPeter Maydell                 &2reg_shift vm=%vm_dp vd=%vd_dp size=2 q=0
249968bf842SPeter Maydell@2reg_shll_h     .... ... . . . 01 shift:4   .... .... 0 . . . .... \
250968bf842SPeter Maydell                 &2reg_shift vm=%vm_dp vd=%vd_dp size=1 q=0
251968bf842SPeter Maydell@2reg_shll_b     .... ... . . . 001 shift:3  .... .... 0 . . . .... \
252968bf842SPeter Maydell                 &2reg_shift vm=%vm_dp vd=%vd_dp size=0 q=0
253968bf842SPeter Maydell
2543da26f11SPeter Maydell# We use size=0 for fp32 and size=1 for fp16 to match the 3-same encodings.
2553da26f11SPeter Maydell@2reg_vcvt       .... ... . . . 1 ..... .... .... . q:1 . . .... \
2563da26f11SPeter Maydell                 &2reg_shift vm=%vm_dp vd=%vd_dp size=0 shift=%neon_rshift_i5
257*24018cf3SPeter Maydell@2reg_vcvt_f16   .... ... . . . 11 .... .... .... . q:1 . . .... \
258*24018cf3SPeter Maydell                 &2reg_shift vm=%vm_dp vd=%vd_dp size=1 shift=%neon_rshift_i4
2593da26f11SPeter Maydell
26066432d6bSPeter MaydellVSHR_S_2sh       1111 001 0 1 . ...... .... 0000 . . . 1 .... @2reg_shr_d
26166432d6bSPeter MaydellVSHR_S_2sh       1111 001 0 1 . ...... .... 0000 . . . 1 .... @2reg_shr_s
26266432d6bSPeter MaydellVSHR_S_2sh       1111 001 0 1 . ...... .... 0000 . . . 1 .... @2reg_shr_h
26366432d6bSPeter MaydellVSHR_S_2sh       1111 001 0 1 . ...... .... 0000 . . . 1 .... @2reg_shr_b
26466432d6bSPeter Maydell
26566432d6bSPeter MaydellVSHR_U_2sh       1111 001 1 1 . ...... .... 0000 . . . 1 .... @2reg_shr_d
26666432d6bSPeter MaydellVSHR_U_2sh       1111 001 1 1 . ...... .... 0000 . . . 1 .... @2reg_shr_s
26766432d6bSPeter MaydellVSHR_U_2sh       1111 001 1 1 . ...... .... 0000 . . . 1 .... @2reg_shr_h
26866432d6bSPeter MaydellVSHR_U_2sh       1111 001 1 1 . ...... .... 0000 . . . 1 .... @2reg_shr_b
26966432d6bSPeter Maydell
270434f71efSPeter MaydellVSRA_S_2sh       1111 001 0 1 . ...... .... 0001 . . . 1 .... @2reg_shr_d
271434f71efSPeter MaydellVSRA_S_2sh       1111 001 0 1 . ...... .... 0001 . . . 1 .... @2reg_shr_s
272434f71efSPeter MaydellVSRA_S_2sh       1111 001 0 1 . ...... .... 0001 . . . 1 .... @2reg_shr_h
273434f71efSPeter MaydellVSRA_S_2sh       1111 001 0 1 . ...... .... 0001 . . . 1 .... @2reg_shr_b
274434f71efSPeter Maydell
275434f71efSPeter MaydellVSRA_U_2sh       1111 001 1 1 . ...... .... 0001 . . . 1 .... @2reg_shr_d
276434f71efSPeter MaydellVSRA_U_2sh       1111 001 1 1 . ...... .... 0001 . . . 1 .... @2reg_shr_s
277434f71efSPeter MaydellVSRA_U_2sh       1111 001 1 1 . ...... .... 0001 . . . 1 .... @2reg_shr_h
278434f71efSPeter MaydellVSRA_U_2sh       1111 001 1 1 . ...... .... 0001 . . . 1 .... @2reg_shr_b
279434f71efSPeter Maydell
280434f71efSPeter MaydellVRSHR_S_2sh      1111 001 0 1 . ...... .... 0010 . . . 1 .... @2reg_shr_d
281434f71efSPeter MaydellVRSHR_S_2sh      1111 001 0 1 . ...... .... 0010 . . . 1 .... @2reg_shr_s
282434f71efSPeter MaydellVRSHR_S_2sh      1111 001 0 1 . ...... .... 0010 . . . 1 .... @2reg_shr_h
283434f71efSPeter MaydellVRSHR_S_2sh      1111 001 0 1 . ...... .... 0010 . . . 1 .... @2reg_shr_b
284434f71efSPeter Maydell
285434f71efSPeter MaydellVRSHR_U_2sh      1111 001 1 1 . ...... .... 0010 . . . 1 .... @2reg_shr_d
286434f71efSPeter MaydellVRSHR_U_2sh      1111 001 1 1 . ...... .... 0010 . . . 1 .... @2reg_shr_s
287434f71efSPeter MaydellVRSHR_U_2sh      1111 001 1 1 . ...... .... 0010 . . . 1 .... @2reg_shr_h
288434f71efSPeter MaydellVRSHR_U_2sh      1111 001 1 1 . ...... .... 0010 . . . 1 .... @2reg_shr_b
289434f71efSPeter Maydell
290434f71efSPeter MaydellVRSRA_S_2sh      1111 001 0 1 . ...... .... 0011 . . . 1 .... @2reg_shr_d
291434f71efSPeter MaydellVRSRA_S_2sh      1111 001 0 1 . ...... .... 0011 . . . 1 .... @2reg_shr_s
292434f71efSPeter MaydellVRSRA_S_2sh      1111 001 0 1 . ...... .... 0011 . . . 1 .... @2reg_shr_h
293434f71efSPeter MaydellVRSRA_S_2sh      1111 001 0 1 . ...... .... 0011 . . . 1 .... @2reg_shr_b
294434f71efSPeter Maydell
295434f71efSPeter MaydellVRSRA_U_2sh      1111 001 1 1 . ...... .... 0011 . . . 1 .... @2reg_shr_d
296434f71efSPeter MaydellVRSRA_U_2sh      1111 001 1 1 . ...... .... 0011 . . . 1 .... @2reg_shr_s
297434f71efSPeter MaydellVRSRA_U_2sh      1111 001 1 1 . ...... .... 0011 . . . 1 .... @2reg_shr_h
298434f71efSPeter MaydellVRSRA_U_2sh      1111 001 1 1 . ...... .... 0011 . . . 1 .... @2reg_shr_b
299434f71efSPeter Maydell
300434f71efSPeter MaydellVSRI_2sh         1111 001 1 1 . ...... .... 0100 . . . 1 .... @2reg_shr_d
301434f71efSPeter MaydellVSRI_2sh         1111 001 1 1 . ...... .... 0100 . . . 1 .... @2reg_shr_s
302434f71efSPeter MaydellVSRI_2sh         1111 001 1 1 . ...... .... 0100 . . . 1 .... @2reg_shr_h
303434f71efSPeter MaydellVSRI_2sh         1111 001 1 1 . ...... .... 0100 . . . 1 .... @2reg_shr_b
304434f71efSPeter Maydell
305d3c8c736SPeter MaydellVSHL_2sh         1111 001 0 1 . ...... .... 0101 . . . 1 .... @2reg_shl_d
306d3c8c736SPeter MaydellVSHL_2sh         1111 001 0 1 . ...... .... 0101 . . . 1 .... @2reg_shl_s
307d3c8c736SPeter MaydellVSHL_2sh         1111 001 0 1 . ...... .... 0101 . . . 1 .... @2reg_shl_h
308d3c8c736SPeter MaydellVSHL_2sh         1111 001 0 1 . ...... .... 0101 . . . 1 .... @2reg_shl_b
309d3c8c736SPeter Maydell
310d3c8c736SPeter MaydellVSLI_2sh         1111 001 1 1 . ...... .... 0101 . . . 1 .... @2reg_shl_d
311d3c8c736SPeter MaydellVSLI_2sh         1111 001 1 1 . ...... .... 0101 . . . 1 .... @2reg_shl_s
312d3c8c736SPeter MaydellVSLI_2sh         1111 001 1 1 . ...... .... 0101 . . . 1 .... @2reg_shl_h
313d3c8c736SPeter MaydellVSLI_2sh         1111 001 1 1 . ...... .... 0101 . . . 1 .... @2reg_shl_b
31437bfce81SPeter Maydell
31537bfce81SPeter MaydellVQSHLU_64_2sh    1111 001 1 1 . ...... .... 0110 . . . 1 .... @2reg_shl_d
31637bfce81SPeter MaydellVQSHLU_2sh       1111 001 1 1 . ...... .... 0110 . . . 1 .... @2reg_shl_s
31737bfce81SPeter MaydellVQSHLU_2sh       1111 001 1 1 . ...... .... 0110 . . . 1 .... @2reg_shl_h
31837bfce81SPeter MaydellVQSHLU_2sh       1111 001 1 1 . ...... .... 0110 . . . 1 .... @2reg_shl_b
31937bfce81SPeter Maydell
32037bfce81SPeter MaydellVQSHL_S_64_2sh   1111 001 0 1 . ...... .... 0111 . . . 1 .... @2reg_shl_d
32137bfce81SPeter MaydellVQSHL_S_2sh      1111 001 0 1 . ...... .... 0111 . . . 1 .... @2reg_shl_s
32237bfce81SPeter MaydellVQSHL_S_2sh      1111 001 0 1 . ...... .... 0111 . . . 1 .... @2reg_shl_h
32337bfce81SPeter MaydellVQSHL_S_2sh      1111 001 0 1 . ...... .... 0111 . . . 1 .... @2reg_shl_b
32437bfce81SPeter Maydell
32537bfce81SPeter MaydellVQSHL_U_64_2sh   1111 001 1 1 . ...... .... 0111 . . . 1 .... @2reg_shl_d
32637bfce81SPeter MaydellVQSHL_U_2sh      1111 001 1 1 . ...... .... 0111 . . . 1 .... @2reg_shl_s
32737bfce81SPeter MaydellVQSHL_U_2sh      1111 001 1 1 . ...... .... 0111 . . . 1 .... @2reg_shl_h
32837bfce81SPeter MaydellVQSHL_U_2sh      1111 001 1 1 . ...... .... 0111 . . . 1 .... @2reg_shl_b
329712182d3SPeter Maydell
330712182d3SPeter MaydellVSHRN_64_2sh     1111 001 0 1 . ...... .... 1000 . 0 . 1 .... @2reg_shrn_d
331712182d3SPeter MaydellVSHRN_32_2sh     1111 001 0 1 . ...... .... 1000 . 0 . 1 .... @2reg_shrn_s
332712182d3SPeter MaydellVSHRN_16_2sh     1111 001 0 1 . ...... .... 1000 . 0 . 1 .... @2reg_shrn_h
333712182d3SPeter Maydell
334712182d3SPeter MaydellVRSHRN_64_2sh    1111 001 0 1 . ...... .... 1000 . 1 . 1 .... @2reg_shrn_d
335712182d3SPeter MaydellVRSHRN_32_2sh    1111 001 0 1 . ...... .... 1000 . 1 . 1 .... @2reg_shrn_s
336712182d3SPeter MaydellVRSHRN_16_2sh    1111 001 0 1 . ...... .... 1000 . 1 . 1 .... @2reg_shrn_h
337712182d3SPeter Maydell
338712182d3SPeter MaydellVQSHRUN_64_2sh   1111 001 1 1 . ...... .... 1000 . 0 . 1 .... @2reg_shrn_d
339712182d3SPeter MaydellVQSHRUN_32_2sh   1111 001 1 1 . ...... .... 1000 . 0 . 1 .... @2reg_shrn_s
340712182d3SPeter MaydellVQSHRUN_16_2sh   1111 001 1 1 . ...... .... 1000 . 0 . 1 .... @2reg_shrn_h
341712182d3SPeter Maydell
342712182d3SPeter MaydellVQRSHRUN_64_2sh  1111 001 1 1 . ...... .... 1000 . 1 . 1 .... @2reg_shrn_d
343712182d3SPeter MaydellVQRSHRUN_32_2sh  1111 001 1 1 . ...... .... 1000 . 1 . 1 .... @2reg_shrn_s
344712182d3SPeter MaydellVQRSHRUN_16_2sh  1111 001 1 1 . ...... .... 1000 . 1 . 1 .... @2reg_shrn_h
345b4a3a77bSPeter Maydell
346b4a3a77bSPeter Maydell# VQSHRN with signed input
347b4a3a77bSPeter MaydellVQSHRN_S64_2sh   1111 001 0 1 . ...... .... 1001 . 0 . 1 .... @2reg_shrn_d
348b4a3a77bSPeter MaydellVQSHRN_S32_2sh   1111 001 0 1 . ...... .... 1001 . 0 . 1 .... @2reg_shrn_s
349b4a3a77bSPeter MaydellVQSHRN_S16_2sh   1111 001 0 1 . ...... .... 1001 . 0 . 1 .... @2reg_shrn_h
350b4a3a77bSPeter Maydell
351b4a3a77bSPeter Maydell# VQRSHRN with signed input
352b4a3a77bSPeter MaydellVQRSHRN_S64_2sh  1111 001 0 1 . ...... .... 1001 . 1 . 1 .... @2reg_shrn_d
353b4a3a77bSPeter MaydellVQRSHRN_S32_2sh  1111 001 0 1 . ...... .... 1001 . 1 . 1 .... @2reg_shrn_s
354b4a3a77bSPeter MaydellVQRSHRN_S16_2sh  1111 001 0 1 . ...... .... 1001 . 1 . 1 .... @2reg_shrn_h
355b4a3a77bSPeter Maydell
356b4a3a77bSPeter Maydell# VQSHRN with unsigned input
357b4a3a77bSPeter MaydellVQSHRN_U64_2sh   1111 001 1 1 . ...... .... 1001 . 0 . 1 .... @2reg_shrn_d
358b4a3a77bSPeter MaydellVQSHRN_U32_2sh   1111 001 1 1 . ...... .... 1001 . 0 . 1 .... @2reg_shrn_s
359b4a3a77bSPeter MaydellVQSHRN_U16_2sh   1111 001 1 1 . ...... .... 1001 . 0 . 1 .... @2reg_shrn_h
360b4a3a77bSPeter Maydell
361b4a3a77bSPeter Maydell# VQRSHRN with unsigned input
362b4a3a77bSPeter MaydellVQRSHRN_U64_2sh  1111 001 1 1 . ...... .... 1001 . 1 . 1 .... @2reg_shrn_d
363b4a3a77bSPeter MaydellVQRSHRN_U32_2sh  1111 001 1 1 . ...... .... 1001 . 1 . 1 .... @2reg_shrn_s
364b4a3a77bSPeter MaydellVQRSHRN_U16_2sh  1111 001 1 1 . ...... .... 1001 . 1 . 1 .... @2reg_shrn_h
365968bf842SPeter Maydell
366968bf842SPeter MaydellVSHLL_S_2sh      1111 001 0 1 . ...... .... 1010 . 0 . 1 .... @2reg_shll_s
367968bf842SPeter MaydellVSHLL_S_2sh      1111 001 0 1 . ...... .... 1010 . 0 . 1 .... @2reg_shll_h
368968bf842SPeter MaydellVSHLL_S_2sh      1111 001 0 1 . ...... .... 1010 . 0 . 1 .... @2reg_shll_b
369968bf842SPeter Maydell
370968bf842SPeter MaydellVSHLL_U_2sh      1111 001 1 1 . ...... .... 1010 . 0 . 1 .... @2reg_shll_s
371968bf842SPeter MaydellVSHLL_U_2sh      1111 001 1 1 . ...... .... 1010 . 0 . 1 .... @2reg_shll_h
372968bf842SPeter MaydellVSHLL_U_2sh      1111 001 1 1 . ...... .... 1010 . 0 . 1 .... @2reg_shll_b
3733da26f11SPeter Maydell
3743da26f11SPeter Maydell# VCVT fixed<->float conversions
375*24018cf3SPeter MaydellVCVT_SH_2sh      1111 001 0 1 . ...... .... 1100 0 . . 1 .... @2reg_vcvt_f16
376*24018cf3SPeter MaydellVCVT_UH_2sh      1111 001 1 1 . ...... .... 1100 0 . . 1 .... @2reg_vcvt_f16
377*24018cf3SPeter MaydellVCVT_HS_2sh      1111 001 0 1 . ...... .... 1101 0 . . 1 .... @2reg_vcvt_f16
378*24018cf3SPeter MaydellVCVT_HU_2sh      1111 001 1 1 . ...... .... 1101 0 . . 1 .... @2reg_vcvt_f16
379*24018cf3SPeter Maydell
3803da26f11SPeter MaydellVCVT_SF_2sh      1111 001 0 1 . ...... .... 1110 0 . . 1 .... @2reg_vcvt
3813da26f11SPeter MaydellVCVT_UF_2sh      1111 001 1 1 . ...... .... 1110 0 . . 1 .... @2reg_vcvt
3823da26f11SPeter MaydellVCVT_FS_2sh      1111 001 0 1 . ...... .... 1111 0 . . 1 .... @2reg_vcvt
3833da26f11SPeter MaydellVCVT_FU_2sh      1111 001 1 1 . ...... .... 1111 0 . . 1 .... @2reg_vcvt
3842c35a39eSPeter Maydell
3852c35a39eSPeter Maydell######################################################################
3862c35a39eSPeter Maydell# 1-reg-and-modified-immediate grouping:
3872c35a39eSPeter Maydell# 1111 001 i 1 D 000 imm:3 Vd:4 cmode:4 0 Q op 1 Vm:4
3882c35a39eSPeter Maydell######################################################################
3892c35a39eSPeter Maydell
3902c35a39eSPeter Maydell&1reg_imm        vd q imm cmode op
3912c35a39eSPeter Maydell
3922c35a39eSPeter Maydell%asimd_imm_value 24:1 16:3 0:4
3932c35a39eSPeter Maydell
3942c35a39eSPeter Maydell@1reg_imm        .... ... . . . ... ... .... .... . q:1 . . .... \
3952c35a39eSPeter Maydell                 &1reg_imm imm=%asimd_imm_value vd=%vd_dp
3962c35a39eSPeter Maydell
3972c35a39eSPeter Maydell# The cmode/op bits here decode VORR/VBIC/VMOV/VMNV, but
3982c35a39eSPeter Maydell# not in a way we can conveniently represent in decodetree without
3992c35a39eSPeter Maydell# a lot of repetition:
4002c35a39eSPeter Maydell# VORR: op=0, (cmode & 1) && cmode < 12
4012c35a39eSPeter Maydell# VBIC: op=1, (cmode & 1) && cmode < 12
4022c35a39eSPeter Maydell# VMOV: everything else
4032c35a39eSPeter Maydell# So we have a single decode line and check the cmode/op in the
4042c35a39eSPeter Maydell# trans function.
4052c35a39eSPeter MaydellVimm_1r          1111 001 . 1 . 000 ... .... cmode:4 0 . op:1 1 .... @1reg_imm
406b28be095SPeter Maydell
407b28be095SPeter Maydell######################################################################
408b28be095SPeter Maydell# Within the "two registers, or three registers of different lengths"
409b28be095SPeter Maydell# grouping ([23,4]=0b10), bits [21:20] are either part of the opcode
410b28be095SPeter Maydell# decode: 0b11 for VEXT, two-reg-misc, VTBL, and duplicate-scalar;
411b28be095SPeter Maydell# or they are a size field for the three-reg-different-lengths and
412b28be095SPeter Maydell# two-reg-and-scalar insn groups (where size cannot be 0b11). This
413b28be095SPeter Maydell# is slightly awkward for decodetree: we handle it with this
414b28be095SPeter Maydell# non-exclusive group which contains within it two exclusive groups:
415b28be095SPeter Maydell# one for the size=0b11 patterns, and one for the size-not-0b11
416b28be095SPeter Maydell# patterns. This allows us to check that none of the insns within
417b28be095SPeter Maydell# each subgroup accidentally overlap each other. Note that all the
418b28be095SPeter Maydell# trans functions for the size-not-0b11 patterns must check and
419b28be095SPeter Maydell# return false for size==3.
420b28be095SPeter Maydell######################################################################
421b28be095SPeter Maydell{
4220aad761fSPeter Maydell  [
4230aad761fSPeter Maydell    ##################################################################
4240aad761fSPeter Maydell    # Miscellaneous size=0b11 insns
4250aad761fSPeter Maydell    ##################################################################
4260aad761fSPeter Maydell    VEXT         1111 001 0 1 . 11 .... .... imm:4 . q:1 . 0 .... \
4270aad761fSPeter Maydell                 vm=%vm_dp vn=%vn_dp vd=%vd_dp
42854e96c74SPeter Maydell
42954e96c74SPeter Maydell    VTBL         1111 001 1 1 . 11 .... .... 10 len:2 . op:1 . 0 .... \
43054e96c74SPeter Maydell                 vm=%vm_dp vn=%vn_dp vd=%vd_dp
4319aaa23c2SPeter Maydell
4329aaa23c2SPeter Maydell    VDUP_scalar  1111 001 1 1 . 11 index:3 1 .... 11 000 q:1 . 0 .... \
4339aaa23c2SPeter Maydell                 vm=%vm_dp vd=%vd_dp size=0
4349aaa23c2SPeter Maydell    VDUP_scalar  1111 001 1 1 . 11 index:2 10 .... 11 000 q:1 . 0 .... \
4359aaa23c2SPeter Maydell                 vm=%vm_dp vd=%vd_dp size=1
4369aaa23c2SPeter Maydell    VDUP_scalar  1111 001 1 1 . 11 index:1 100 .... 11 000 q:1 . 0 .... \
4379aaa23c2SPeter Maydell                 vm=%vm_dp vd=%vd_dp size=2
438353d2b85SPeter Maydell
439353d2b85SPeter Maydell    ##################################################################
440353d2b85SPeter Maydell    # 2-reg-misc grouping:
441353d2b85SPeter Maydell    # 1111 001 11 D 11 size:2 opc1:2 Vd:4 0 opc2:4 q:1 M 0 Vm:4
442353d2b85SPeter Maydell    ##################################################################
443353d2b85SPeter Maydell
444353d2b85SPeter Maydell    &2misc vd vm q size
445353d2b85SPeter Maydell
446353d2b85SPeter Maydell    @2misc       .... ... .. . .. size:2 .. .... . .... q:1 . . .... \
447353d2b85SPeter Maydell                 &2misc vm=%vm_dp vd=%vd_dp
4483882bdacSPeter Maydell    @2misc_q0    .... ... .. . .. size:2 .. .... . .... . . . .... \
4493882bdacSPeter Maydell                 &2misc vm=%vm_dp vd=%vd_dp q=0
4500b30dd5bSPeter Maydell    @2misc_q1    .... ... .. . .. size:2 .. .... . .... . . . .... \
4510b30dd5bSPeter Maydell                 &2misc vm=%vm_dp vd=%vd_dp q=1
452353d2b85SPeter Maydell
453353d2b85SPeter Maydell    VREV64       1111 001 11 . 11 .. 00 .... 0 0000 . . 0 .... @2misc
45489668082SPeter Maydell    VREV32       1111 001 11 . 11 .. 00 .... 0 0001 . . 0 .... @2misc
45589668082SPeter Maydell    VREV16       1111 001 11 . 11 .. 00 .... 0 0010 . . 0 .... @2misc
4566106af3aSPeter Maydell
4576106af3aSPeter Maydell    VPADDL_S     1111 001 11 . 11 .. 00 .... 0 0100 . . 0 .... @2misc
4586106af3aSPeter Maydell    VPADDL_U     1111 001 11 . 11 .. 00 .... 0 0101 . . 0 .... @2misc
4596106af3aSPeter Maydell
4600b30dd5bSPeter Maydell    AESE         1111 001 11 . 11 .. 00 .... 0 0110 0 . 0 .... @2misc_q1
4610b30dd5bSPeter Maydell    AESD         1111 001 11 . 11 .. 00 .... 0 0110 1 . 0 .... @2misc_q1
4620b30dd5bSPeter Maydell    AESMC        1111 001 11 . 11 .. 00 .... 0 0111 0 . 0 .... @2misc_q1
4630b30dd5bSPeter Maydell    AESIMC       1111 001 11 . 11 .. 00 .... 0 0111 1 . 0 .... @2misc_q1
4640b30dd5bSPeter Maydell
46584eae770SPeter Maydell    VCLS         1111 001 11 . 11 .. 00 .... 0 1000 . . 0 .... @2misc
46684eae770SPeter Maydell    VCLZ         1111 001 11 . 11 .. 00 .... 0 1001 . . 0 .... @2misc
46784eae770SPeter Maydell    VCNT         1111 001 11 . 11 .. 00 .... 0 1010 . . 0 .... @2misc
46884eae770SPeter Maydell
46975153179SPeter Maydell    VMVN         1111 001 11 . 11 .. 00 .... 0 1011 . . 0 .... @2misc
47075153179SPeter Maydell
4716106af3aSPeter Maydell    VPADAL_S     1111 001 11 . 11 .. 00 .... 0 1100 . . 0 .... @2misc
4726106af3aSPeter Maydell    VPADAL_U     1111 001 11 . 11 .. 00 .... 0 1101 . . 0 .... @2misc
473567663a2SPeter Maydell
4744936f38aSPeter Maydell    VQABS        1111 001 11 . 11 .. 00 .... 0 1110 . . 0 .... @2misc
4754936f38aSPeter Maydell    VQNEG        1111 001 11 . 11 .. 00 .... 0 1111 . . 0 .... @2misc
4764936f38aSPeter Maydell
47775153179SPeter Maydell    VCGT0        1111 001 11 . 11 .. 01 .... 0 0000 . . 0 .... @2misc
47875153179SPeter Maydell    VCGE0        1111 001 11 . 11 .. 01 .... 0 0001 . . 0 .... @2misc
47975153179SPeter Maydell    VCEQ0        1111 001 11 . 11 .. 01 .... 0 0010 . . 0 .... @2misc
48075153179SPeter Maydell    VCLE0        1111 001 11 . 11 .. 01 .... 0 0011 . . 0 .... @2misc
48175153179SPeter Maydell    VCLT0        1111 001 11 . 11 .. 01 .... 0 0100 . . 0 .... @2misc
48275153179SPeter Maydell
4830b30dd5bSPeter Maydell    SHA1H        1111 001 11 . 11 .. 01 .... 0 0101 1 . 0 .... @2misc_q1
4840b30dd5bSPeter Maydell
48575153179SPeter Maydell    VABS         1111 001 11 . 11 .. 01 .... 0 0110 . . 0 .... @2misc
48675153179SPeter Maydell    VNEG         1111 001 11 . 11 .. 01 .... 0 0111 . . 0 .... @2misc
48775153179SPeter Maydell
488baa59323SPeter Maydell    VCGT0_F      1111 001 11 . 11 .. 01 .... 0 1000 . . 0 .... @2misc
489baa59323SPeter Maydell    VCGE0_F      1111 001 11 . 11 .. 01 .... 0 1001 . . 0 .... @2misc
490baa59323SPeter Maydell    VCEQ0_F      1111 001 11 . 11 .. 01 .... 0 1010 . . 0 .... @2misc
491baa59323SPeter Maydell    VCLE0_F      1111 001 11 . 11 .. 01 .... 0 1011 . . 0 .... @2misc
492baa59323SPeter Maydell    VCLT0_F      1111 001 11 . 11 .. 01 .... 0 1100 . . 0 .... @2misc
493baa59323SPeter Maydell
49484eae770SPeter Maydell    VABS_F       1111 001 11 . 11 .. 01 .... 0 1110 . . 0 .... @2misc
49584eae770SPeter Maydell    VNEG_F       1111 001 11 . 11 .. 01 .... 0 1111 . . 0 .... @2misc
49684eae770SPeter Maydell
4978ab3a227SPeter Maydell    VSWP         1111 001 11 . 11 .. 10 .... 0 0000 . . 0 .... @2misc
498d4366190SPeter Maydell    VTRN         1111 001 11 . 11 .. 10 .... 0 0001 . . 0 .... @2misc
499567663a2SPeter Maydell    VUZP         1111 001 11 . 11 .. 10 .... 0 0010 . . 0 .... @2misc
500567663a2SPeter Maydell    VZIP         1111 001 11 . 11 .. 10 .... 0 0011 . . 0 .... @2misc
5013882bdacSPeter Maydell
5023882bdacSPeter Maydell    VMOVN        1111 001 11 . 11 .. 10 .... 0 0100 0 . 0 .... @2misc_q0
5033882bdacSPeter Maydell    # VQMOVUN: unsigned result (source is always signed)
5043882bdacSPeter Maydell    VQMOVUN      1111 001 11 . 11 .. 10 .... 0 0100 1 . 0 .... @2misc_q0
5053882bdacSPeter Maydell    # VQMOVN: signed result, source may be signed (_S) or unsigned (_U)
5063882bdacSPeter Maydell    VQMOVN_S     1111 001 11 . 11 .. 10 .... 0 0101 0 . 0 .... @2misc_q0
5073882bdacSPeter Maydell    VQMOVN_U     1111 001 11 . 11 .. 10 .... 0 0101 1 . 0 .... @2misc_q0
508749e2be3SPeter Maydell
509749e2be3SPeter Maydell    VSHLL        1111 001 11 . 11 .. 10 .... 0 0110 0 . 0 .... @2misc_q0
510654a5173SPeter Maydell
5110b30dd5bSPeter Maydell    SHA1SU1      1111 001 11 . 11 .. 10 .... 0 0111 0 . 0 .... @2misc_q1
5120b30dd5bSPeter Maydell    SHA256SU0    1111 001 11 . 11 .. 10 .... 0 0111 1 . 0 .... @2misc_q1
5130b30dd5bSPeter Maydell
514128123eaSPeter Maydell    VRINTN       1111 001 11 . 11 .. 10 .... 0 1000 . . 0 .... @2misc
5153e96b205SPeter Maydell    VRINTX       1111 001 11 . 11 .. 10 .... 0 1001 . . 0 .... @2misc
516128123eaSPeter Maydell    VRINTA       1111 001 11 . 11 .. 10 .... 0 1010 . . 0 .... @2misc
517128123eaSPeter Maydell    VRINTZ       1111 001 11 . 11 .. 10 .... 0 1011 . . 0 .... @2misc
5183e96b205SPeter Maydell
519654a5173SPeter Maydell    VCVT_F16_F32 1111 001 11 . 11 .. 10 .... 0 1100 0 . 0 .... @2misc_q0
520128123eaSPeter Maydell
521128123eaSPeter Maydell    VRINTM       1111 001 11 . 11 .. 10 .... 0 1101 . . 0 .... @2misc
522128123eaSPeter Maydell
523654a5173SPeter Maydell    VCVT_F32_F16 1111 001 11 . 11 .. 10 .... 0 1110 0 . 0 .... @2misc_q0
52484eae770SPeter Maydell
525128123eaSPeter Maydell    VRINTP       1111 001 11 . 11 .. 10 .... 0 1111 . . 0 .... @2misc
526128123eaSPeter Maydell
527a183d5fbSPeter Maydell    VCVTAS       1111 001 11 . 11 .. 11 .... 0 0000 . . 0 .... @2misc
528a183d5fbSPeter Maydell    VCVTAU       1111 001 11 . 11 .. 11 .... 0 0001 . . 0 .... @2misc
529a183d5fbSPeter Maydell    VCVTNS       1111 001 11 . 11 .. 11 .... 0 0010 . . 0 .... @2misc
530a183d5fbSPeter Maydell    VCVTNU       1111 001 11 . 11 .. 11 .... 0 0011 . . 0 .... @2misc
531a183d5fbSPeter Maydell    VCVTPS       1111 001 11 . 11 .. 11 .... 0 0100 . . 0 .... @2misc
532a183d5fbSPeter Maydell    VCVTPU       1111 001 11 . 11 .. 11 .... 0 0101 . . 0 .... @2misc
533a183d5fbSPeter Maydell    VCVTMS       1111 001 11 . 11 .. 11 .... 0 0110 . . 0 .... @2misc
534a183d5fbSPeter Maydell    VCVTMU       1111 001 11 . 11 .. 11 .... 0 0111 . . 0 .... @2misc
535a183d5fbSPeter Maydell
53684eae770SPeter Maydell    VRECPE       1111 001 11 . 11 .. 11 .... 0 1000 . . 0 .... @2misc
53784eae770SPeter Maydell    VRSQRTE      1111 001 11 . 11 .. 11 .... 0 1001 . . 0 .... @2misc
5383e96b205SPeter Maydell    VRECPE_F     1111 001 11 . 11 .. 11 .... 0 1010 . . 0 .... @2misc
5393e96b205SPeter Maydell    VRSQRTE_F    1111 001 11 . 11 .. 11 .... 0 1011 . . 0 .... @2misc
5403e96b205SPeter Maydell    VCVT_FS      1111 001 11 . 11 .. 11 .... 0 1100 . . 0 .... @2misc
5413e96b205SPeter Maydell    VCVT_FU      1111 001 11 . 11 .. 11 .... 0 1101 . . 0 .... @2misc
5423e96b205SPeter Maydell    VCVT_SF      1111 001 11 . 11 .. 11 .... 0 1110 . . 0 .... @2misc
5433e96b205SPeter Maydell    VCVT_UF      1111 001 11 . 11 .. 11 .... 0 1111 . . 0 .... @2misc
5440aad761fSPeter Maydell  ]
545b28be095SPeter Maydell
546b28be095SPeter Maydell  # Subgroup for size != 0b11
547b28be095SPeter Maydell  [
548b28be095SPeter Maydell    ##################################################################
549b28be095SPeter Maydell    # 3-reg-different-length grouping:
550b28be095SPeter Maydell    # 1111 001 U 1 D sz!=11 Vn:4 Vd:4 opc:4 N 0 M 0 Vm:4
551b28be095SPeter Maydell    ##################################################################
552b28be095SPeter Maydell
553b28be095SPeter Maydell    &3diff vm vn vd size
554b28be095SPeter Maydell
555b28be095SPeter Maydell    @3diff       .... ... . . . size:2 .... .... .... . . . . .... \
556b28be095SPeter Maydell                 &3diff vm=%vm_dp vn=%vn_dp vd=%vd_dp
557b28be095SPeter Maydell
558b28be095SPeter Maydell    VADDL_S_3d   1111 001 0 1 . .. .... .... 0000 . 0 . 0 .... @3diff
559b28be095SPeter Maydell    VADDL_U_3d   1111 001 1 1 . .. .... .... 0000 . 0 . 0 .... @3diff
560b28be095SPeter Maydell
561b28be095SPeter Maydell    VADDW_S_3d   1111 001 0 1 . .. .... .... 0001 . 0 . 0 .... @3diff
562b28be095SPeter Maydell    VADDW_U_3d   1111 001 1 1 . .. .... .... 0001 . 0 . 0 .... @3diff
563b28be095SPeter Maydell
564b28be095SPeter Maydell    VSUBL_S_3d   1111 001 0 1 . .. .... .... 0010 . 0 . 0 .... @3diff
565b28be095SPeter Maydell    VSUBL_U_3d   1111 001 1 1 . .. .... .... 0010 . 0 . 0 .... @3diff
566b28be095SPeter Maydell
567b28be095SPeter Maydell    VSUBW_S_3d   1111 001 0 1 . .. .... .... 0011 . 0 . 0 .... @3diff
568b28be095SPeter Maydell    VSUBW_U_3d   1111 001 1 1 . .. .... .... 0011 . 0 . 0 .... @3diff
5690fa1ab03SPeter Maydell
5700fa1ab03SPeter Maydell    VADDHN_3d    1111 001 0 1 . .. .... .... 0100 . 0 . 0 .... @3diff
5710fa1ab03SPeter Maydell    VRADDHN_3d   1111 001 1 1 . .. .... .... 0100 . 0 . 0 .... @3diff
5720fa1ab03SPeter Maydell
573f5b28401SPeter Maydell    VABAL_S_3d   1111 001 0 1 . .. .... .... 0101 . 0 . 0 .... @3diff
574f5b28401SPeter Maydell    VABAL_U_3d   1111 001 1 1 . .. .... .... 0101 . 0 . 0 .... @3diff
575f5b28401SPeter Maydell
5760fa1ab03SPeter Maydell    VSUBHN_3d    1111 001 0 1 . .. .... .... 0110 . 0 . 0 .... @3diff
5770fa1ab03SPeter Maydell    VRSUBHN_3d   1111 001 1 1 . .. .... .... 0110 . 0 . 0 .... @3diff
578f5b28401SPeter Maydell
579f5b28401SPeter Maydell    VABDL_S_3d   1111 001 0 1 . .. .... .... 0111 . 0 . 0 .... @3diff
580f5b28401SPeter Maydell    VABDL_U_3d   1111 001 1 1 . .. .... .... 0111 . 0 . 0 .... @3diff
5813a1d9eb0SPeter Maydell
5823a1d9eb0SPeter Maydell    VMLAL_S_3d   1111 001 0 1 . .. .... .... 1000 . 0 . 0 .... @3diff
5833a1d9eb0SPeter Maydell    VMLAL_U_3d   1111 001 1 1 . .. .... .... 1000 . 0 . 0 .... @3diff
5843a1d9eb0SPeter Maydell
5859546ca59SPeter Maydell    VQDMLAL_3d   1111 001 0 1 . .. .... .... 1001 . 0 . 0 .... @3diff
5869546ca59SPeter Maydell
5873a1d9eb0SPeter Maydell    VMLSL_S_3d   1111 001 0 1 . .. .... .... 1010 . 0 . 0 .... @3diff
5883a1d9eb0SPeter Maydell    VMLSL_U_3d   1111 001 1 1 . .. .... .... 1010 . 0 . 0 .... @3diff
5893a1d9eb0SPeter Maydell
5909546ca59SPeter Maydell    VQDMLSL_3d   1111 001 0 1 . .. .... .... 1011 . 0 . 0 .... @3diff
5919546ca59SPeter Maydell
5923a1d9eb0SPeter Maydell    VMULL_S_3d   1111 001 0 1 . .. .... .... 1100 . 0 . 0 .... @3diff
5933a1d9eb0SPeter Maydell    VMULL_U_3d   1111 001 1 1 . .. .... .... 1100 . 0 . 0 .... @3diff
5949546ca59SPeter Maydell
5959546ca59SPeter Maydell    VQDMULL_3d   1111 001 0 1 . .. .... .... 1101 . 0 . 0 .... @3diff
59618fb58d5SPeter Maydell
59718fb58d5SPeter Maydell    VMULL_P_3d   1111 001 0 1 . .. .... .... 1110 . 0 . 0 .... @3diff
59896fc80f5SPeter Maydell
59996fc80f5SPeter Maydell    ##################################################################
60096fc80f5SPeter Maydell    # 2-regs-plus-scalar grouping:
60196fc80f5SPeter Maydell    # 1111 001 Q 1 D sz!=11 Vn:4 Vd:4 opc:4 N 1 M 0 Vm:4
60296fc80f5SPeter Maydell    ##################################################################
60396fc80f5SPeter Maydell    &2scalar vm vn vd size q
60496fc80f5SPeter Maydell
60596fc80f5SPeter Maydell    @2scalar     .... ... q:1 . . size:2 .... .... .... . . . . .... \
60696fc80f5SPeter Maydell                 &2scalar vm=%vm_dp vn=%vn_dp vd=%vd_dp
60777e576a9SPeter Maydell    # For the 'long' ops the Q bit is part of insn decode
60877e576a9SPeter Maydell    @2scalar_q0  .... ... . . . size:2 .... .... .... . . . . .... \
60977e576a9SPeter Maydell                 &2scalar vm=%vm_dp vn=%vn_dp vd=%vd_dp q=0
61096fc80f5SPeter Maydell
61196fc80f5SPeter Maydell    VMLA_2sc     1111 001 . 1 . .. .... .... 0000 . 1 . 0 .... @2scalar
61285ac9aefSPeter Maydell    VMLA_F_2sc   1111 001 . 1 . .. .... .... 0001 . 1 . 0 .... @2scalar
61396fc80f5SPeter Maydell
61477e576a9SPeter Maydell    VMLAL_S_2sc  1111 001 0 1 . .. .... .... 0010 . 1 . 0 .... @2scalar_q0
61577e576a9SPeter Maydell    VMLAL_U_2sc  1111 001 1 1 . .. .... .... 0010 . 1 . 0 .... @2scalar_q0
61677e576a9SPeter Maydell
61777e576a9SPeter Maydell    VQDMLAL_2sc  1111 001 0 1 . .. .... .... 0011 . 1 . 0 .... @2scalar_q0
61877e576a9SPeter Maydell
61996fc80f5SPeter Maydell    VMLS_2sc     1111 001 . 1 . .. .... .... 0100 . 1 . 0 .... @2scalar
62085ac9aefSPeter Maydell    VMLS_F_2sc   1111 001 . 1 . .. .... .... 0101 . 1 . 0 .... @2scalar
62196fc80f5SPeter Maydell
62277e576a9SPeter Maydell    VMLSL_S_2sc  1111 001 0 1 . .. .... .... 0110 . 1 . 0 .... @2scalar_q0
62377e576a9SPeter Maydell    VMLSL_U_2sc  1111 001 1 1 . .. .... .... 0110 . 1 . 0 .... @2scalar_q0
62477e576a9SPeter Maydell
62577e576a9SPeter Maydell    VQDMLSL_2sc  1111 001 0 1 . .. .... .... 0111 . 1 . 0 .... @2scalar_q0
62677e576a9SPeter Maydell
62796fc80f5SPeter Maydell    VMUL_2sc     1111 001 . 1 . .. .... .... 1000 . 1 . 0 .... @2scalar
62885ac9aefSPeter Maydell    VMUL_F_2sc   1111 001 . 1 . .. .... .... 1001 . 1 . 0 .... @2scalar
629b2fc7be9SPeter Maydell
63077e576a9SPeter Maydell    VMULL_S_2sc  1111 001 0 1 . .. .... .... 1010 . 1 . 0 .... @2scalar_q0
63177e576a9SPeter Maydell    VMULL_U_2sc  1111 001 1 1 . .. .... .... 1010 . 1 . 0 .... @2scalar_q0
63277e576a9SPeter Maydell
63377e576a9SPeter Maydell    VQDMULL_2sc  1111 001 0 1 . .. .... .... 1011 . 1 . 0 .... @2scalar_q0
63477e576a9SPeter Maydell
635b2fc7be9SPeter Maydell    VQDMULH_2sc  1111 001 . 1 . .. .... .... 1100 . 1 . 0 .... @2scalar
636b2fc7be9SPeter Maydell    VQRDMULH_2sc 1111 001 . 1 . .. .... .... 1101 . 1 . 0 .... @2scalar
637aa318f5bSPeter Maydell
638aa318f5bSPeter Maydell    VQRDMLAH_2sc 1111 001 . 1 . .. .... .... 1110 . 1 . 0 .... @2scalar
639aa318f5bSPeter Maydell    VQRDMLSH_2sc 1111 001 . 1 . .. .... .... 1111 . 1 . 0 .... @2scalar
640b28be095SPeter Maydell  ]
641b28be095SPeter Maydell}
642