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 2573da26f11SPeter Maydell 25866432d6bSPeter MaydellVSHR_S_2sh 1111 001 0 1 . ...... .... 0000 . . . 1 .... @2reg_shr_d 25966432d6bSPeter MaydellVSHR_S_2sh 1111 001 0 1 . ...... .... 0000 . . . 1 .... @2reg_shr_s 26066432d6bSPeter MaydellVSHR_S_2sh 1111 001 0 1 . ...... .... 0000 . . . 1 .... @2reg_shr_h 26166432d6bSPeter MaydellVSHR_S_2sh 1111 001 0 1 . ...... .... 0000 . . . 1 .... @2reg_shr_b 26266432d6bSPeter Maydell 26366432d6bSPeter MaydellVSHR_U_2sh 1111 001 1 1 . ...... .... 0000 . . . 1 .... @2reg_shr_d 26466432d6bSPeter MaydellVSHR_U_2sh 1111 001 1 1 . ...... .... 0000 . . . 1 .... @2reg_shr_s 26566432d6bSPeter MaydellVSHR_U_2sh 1111 001 1 1 . ...... .... 0000 . . . 1 .... @2reg_shr_h 26666432d6bSPeter MaydellVSHR_U_2sh 1111 001 1 1 . ...... .... 0000 . . . 1 .... @2reg_shr_b 26766432d6bSPeter Maydell 268434f71efSPeter MaydellVSRA_S_2sh 1111 001 0 1 . ...... .... 0001 . . . 1 .... @2reg_shr_d 269434f71efSPeter MaydellVSRA_S_2sh 1111 001 0 1 . ...... .... 0001 . . . 1 .... @2reg_shr_s 270434f71efSPeter MaydellVSRA_S_2sh 1111 001 0 1 . ...... .... 0001 . . . 1 .... @2reg_shr_h 271434f71efSPeter MaydellVSRA_S_2sh 1111 001 0 1 . ...... .... 0001 . . . 1 .... @2reg_shr_b 272434f71efSPeter Maydell 273434f71efSPeter MaydellVSRA_U_2sh 1111 001 1 1 . ...... .... 0001 . . . 1 .... @2reg_shr_d 274434f71efSPeter MaydellVSRA_U_2sh 1111 001 1 1 . ...... .... 0001 . . . 1 .... @2reg_shr_s 275434f71efSPeter MaydellVSRA_U_2sh 1111 001 1 1 . ...... .... 0001 . . . 1 .... @2reg_shr_h 276434f71efSPeter MaydellVSRA_U_2sh 1111 001 1 1 . ...... .... 0001 . . . 1 .... @2reg_shr_b 277434f71efSPeter Maydell 278434f71efSPeter MaydellVRSHR_S_2sh 1111 001 0 1 . ...... .... 0010 . . . 1 .... @2reg_shr_d 279434f71efSPeter MaydellVRSHR_S_2sh 1111 001 0 1 . ...... .... 0010 . . . 1 .... @2reg_shr_s 280434f71efSPeter MaydellVRSHR_S_2sh 1111 001 0 1 . ...... .... 0010 . . . 1 .... @2reg_shr_h 281434f71efSPeter MaydellVRSHR_S_2sh 1111 001 0 1 . ...... .... 0010 . . . 1 .... @2reg_shr_b 282434f71efSPeter Maydell 283434f71efSPeter MaydellVRSHR_U_2sh 1111 001 1 1 . ...... .... 0010 . . . 1 .... @2reg_shr_d 284434f71efSPeter MaydellVRSHR_U_2sh 1111 001 1 1 . ...... .... 0010 . . . 1 .... @2reg_shr_s 285434f71efSPeter MaydellVRSHR_U_2sh 1111 001 1 1 . ...... .... 0010 . . . 1 .... @2reg_shr_h 286434f71efSPeter MaydellVRSHR_U_2sh 1111 001 1 1 . ...... .... 0010 . . . 1 .... @2reg_shr_b 287434f71efSPeter Maydell 288434f71efSPeter MaydellVRSRA_S_2sh 1111 001 0 1 . ...... .... 0011 . . . 1 .... @2reg_shr_d 289434f71efSPeter MaydellVRSRA_S_2sh 1111 001 0 1 . ...... .... 0011 . . . 1 .... @2reg_shr_s 290434f71efSPeter MaydellVRSRA_S_2sh 1111 001 0 1 . ...... .... 0011 . . . 1 .... @2reg_shr_h 291434f71efSPeter MaydellVRSRA_S_2sh 1111 001 0 1 . ...... .... 0011 . . . 1 .... @2reg_shr_b 292434f71efSPeter Maydell 293434f71efSPeter MaydellVRSRA_U_2sh 1111 001 1 1 . ...... .... 0011 . . . 1 .... @2reg_shr_d 294434f71efSPeter MaydellVRSRA_U_2sh 1111 001 1 1 . ...... .... 0011 . . . 1 .... @2reg_shr_s 295434f71efSPeter MaydellVRSRA_U_2sh 1111 001 1 1 . ...... .... 0011 . . . 1 .... @2reg_shr_h 296434f71efSPeter MaydellVRSRA_U_2sh 1111 001 1 1 . ...... .... 0011 . . . 1 .... @2reg_shr_b 297434f71efSPeter Maydell 298434f71efSPeter MaydellVSRI_2sh 1111 001 1 1 . ...... .... 0100 . . . 1 .... @2reg_shr_d 299434f71efSPeter MaydellVSRI_2sh 1111 001 1 1 . ...... .... 0100 . . . 1 .... @2reg_shr_s 300434f71efSPeter MaydellVSRI_2sh 1111 001 1 1 . ...... .... 0100 . . . 1 .... @2reg_shr_h 301434f71efSPeter MaydellVSRI_2sh 1111 001 1 1 . ...... .... 0100 . . . 1 .... @2reg_shr_b 302434f71efSPeter Maydell 303d3c8c736SPeter MaydellVSHL_2sh 1111 001 0 1 . ...... .... 0101 . . . 1 .... @2reg_shl_d 304d3c8c736SPeter MaydellVSHL_2sh 1111 001 0 1 . ...... .... 0101 . . . 1 .... @2reg_shl_s 305d3c8c736SPeter MaydellVSHL_2sh 1111 001 0 1 . ...... .... 0101 . . . 1 .... @2reg_shl_h 306d3c8c736SPeter MaydellVSHL_2sh 1111 001 0 1 . ...... .... 0101 . . . 1 .... @2reg_shl_b 307d3c8c736SPeter Maydell 308d3c8c736SPeter MaydellVSLI_2sh 1111 001 1 1 . ...... .... 0101 . . . 1 .... @2reg_shl_d 309d3c8c736SPeter MaydellVSLI_2sh 1111 001 1 1 . ...... .... 0101 . . . 1 .... @2reg_shl_s 310d3c8c736SPeter MaydellVSLI_2sh 1111 001 1 1 . ...... .... 0101 . . . 1 .... @2reg_shl_h 311d3c8c736SPeter MaydellVSLI_2sh 1111 001 1 1 . ...... .... 0101 . . . 1 .... @2reg_shl_b 31237bfce81SPeter Maydell 31337bfce81SPeter MaydellVQSHLU_64_2sh 1111 001 1 1 . ...... .... 0110 . . . 1 .... @2reg_shl_d 31437bfce81SPeter MaydellVQSHLU_2sh 1111 001 1 1 . ...... .... 0110 . . . 1 .... @2reg_shl_s 31537bfce81SPeter MaydellVQSHLU_2sh 1111 001 1 1 . ...... .... 0110 . . . 1 .... @2reg_shl_h 31637bfce81SPeter MaydellVQSHLU_2sh 1111 001 1 1 . ...... .... 0110 . . . 1 .... @2reg_shl_b 31737bfce81SPeter Maydell 31837bfce81SPeter MaydellVQSHL_S_64_2sh 1111 001 0 1 . ...... .... 0111 . . . 1 .... @2reg_shl_d 31937bfce81SPeter MaydellVQSHL_S_2sh 1111 001 0 1 . ...... .... 0111 . . . 1 .... @2reg_shl_s 32037bfce81SPeter MaydellVQSHL_S_2sh 1111 001 0 1 . ...... .... 0111 . . . 1 .... @2reg_shl_h 32137bfce81SPeter MaydellVQSHL_S_2sh 1111 001 0 1 . ...... .... 0111 . . . 1 .... @2reg_shl_b 32237bfce81SPeter Maydell 32337bfce81SPeter MaydellVQSHL_U_64_2sh 1111 001 1 1 . ...... .... 0111 . . . 1 .... @2reg_shl_d 32437bfce81SPeter MaydellVQSHL_U_2sh 1111 001 1 1 . ...... .... 0111 . . . 1 .... @2reg_shl_s 32537bfce81SPeter MaydellVQSHL_U_2sh 1111 001 1 1 . ...... .... 0111 . . . 1 .... @2reg_shl_h 32637bfce81SPeter MaydellVQSHL_U_2sh 1111 001 1 1 . ...... .... 0111 . . . 1 .... @2reg_shl_b 327712182d3SPeter Maydell 328712182d3SPeter MaydellVSHRN_64_2sh 1111 001 0 1 . ...... .... 1000 . 0 . 1 .... @2reg_shrn_d 329712182d3SPeter MaydellVSHRN_32_2sh 1111 001 0 1 . ...... .... 1000 . 0 . 1 .... @2reg_shrn_s 330712182d3SPeter MaydellVSHRN_16_2sh 1111 001 0 1 . ...... .... 1000 . 0 . 1 .... @2reg_shrn_h 331712182d3SPeter Maydell 332712182d3SPeter MaydellVRSHRN_64_2sh 1111 001 0 1 . ...... .... 1000 . 1 . 1 .... @2reg_shrn_d 333712182d3SPeter MaydellVRSHRN_32_2sh 1111 001 0 1 . ...... .... 1000 . 1 . 1 .... @2reg_shrn_s 334712182d3SPeter MaydellVRSHRN_16_2sh 1111 001 0 1 . ...... .... 1000 . 1 . 1 .... @2reg_shrn_h 335712182d3SPeter Maydell 336712182d3SPeter MaydellVQSHRUN_64_2sh 1111 001 1 1 . ...... .... 1000 . 0 . 1 .... @2reg_shrn_d 337712182d3SPeter MaydellVQSHRUN_32_2sh 1111 001 1 1 . ...... .... 1000 . 0 . 1 .... @2reg_shrn_s 338712182d3SPeter MaydellVQSHRUN_16_2sh 1111 001 1 1 . ...... .... 1000 . 0 . 1 .... @2reg_shrn_h 339712182d3SPeter Maydell 340712182d3SPeter MaydellVQRSHRUN_64_2sh 1111 001 1 1 . ...... .... 1000 . 1 . 1 .... @2reg_shrn_d 341712182d3SPeter MaydellVQRSHRUN_32_2sh 1111 001 1 1 . ...... .... 1000 . 1 . 1 .... @2reg_shrn_s 342712182d3SPeter MaydellVQRSHRUN_16_2sh 1111 001 1 1 . ...... .... 1000 . 1 . 1 .... @2reg_shrn_h 343b4a3a77bSPeter Maydell 344b4a3a77bSPeter Maydell# VQSHRN with signed input 345b4a3a77bSPeter MaydellVQSHRN_S64_2sh 1111 001 0 1 . ...... .... 1001 . 0 . 1 .... @2reg_shrn_d 346b4a3a77bSPeter MaydellVQSHRN_S32_2sh 1111 001 0 1 . ...... .... 1001 . 0 . 1 .... @2reg_shrn_s 347b4a3a77bSPeter MaydellVQSHRN_S16_2sh 1111 001 0 1 . ...... .... 1001 . 0 . 1 .... @2reg_shrn_h 348b4a3a77bSPeter Maydell 349b4a3a77bSPeter Maydell# VQRSHRN with signed input 350b4a3a77bSPeter MaydellVQRSHRN_S64_2sh 1111 001 0 1 . ...... .... 1001 . 1 . 1 .... @2reg_shrn_d 351b4a3a77bSPeter MaydellVQRSHRN_S32_2sh 1111 001 0 1 . ...... .... 1001 . 1 . 1 .... @2reg_shrn_s 352b4a3a77bSPeter MaydellVQRSHRN_S16_2sh 1111 001 0 1 . ...... .... 1001 . 1 . 1 .... @2reg_shrn_h 353b4a3a77bSPeter Maydell 354b4a3a77bSPeter Maydell# VQSHRN with unsigned input 355b4a3a77bSPeter MaydellVQSHRN_U64_2sh 1111 001 1 1 . ...... .... 1001 . 0 . 1 .... @2reg_shrn_d 356b4a3a77bSPeter MaydellVQSHRN_U32_2sh 1111 001 1 1 . ...... .... 1001 . 0 . 1 .... @2reg_shrn_s 357b4a3a77bSPeter MaydellVQSHRN_U16_2sh 1111 001 1 1 . ...... .... 1001 . 0 . 1 .... @2reg_shrn_h 358b4a3a77bSPeter Maydell 359b4a3a77bSPeter Maydell# VQRSHRN with unsigned input 360b4a3a77bSPeter MaydellVQRSHRN_U64_2sh 1111 001 1 1 . ...... .... 1001 . 1 . 1 .... @2reg_shrn_d 361b4a3a77bSPeter MaydellVQRSHRN_U32_2sh 1111 001 1 1 . ...... .... 1001 . 1 . 1 .... @2reg_shrn_s 362b4a3a77bSPeter MaydellVQRSHRN_U16_2sh 1111 001 1 1 . ...... .... 1001 . 1 . 1 .... @2reg_shrn_h 363968bf842SPeter Maydell 364968bf842SPeter MaydellVSHLL_S_2sh 1111 001 0 1 . ...... .... 1010 . 0 . 1 .... @2reg_shll_s 365968bf842SPeter MaydellVSHLL_S_2sh 1111 001 0 1 . ...... .... 1010 . 0 . 1 .... @2reg_shll_h 366968bf842SPeter MaydellVSHLL_S_2sh 1111 001 0 1 . ...... .... 1010 . 0 . 1 .... @2reg_shll_b 367968bf842SPeter Maydell 368968bf842SPeter MaydellVSHLL_U_2sh 1111 001 1 1 . ...... .... 1010 . 0 . 1 .... @2reg_shll_s 369968bf842SPeter MaydellVSHLL_U_2sh 1111 001 1 1 . ...... .... 1010 . 0 . 1 .... @2reg_shll_h 370968bf842SPeter MaydellVSHLL_U_2sh 1111 001 1 1 . ...... .... 1010 . 0 . 1 .... @2reg_shll_b 3713da26f11SPeter Maydell 3723da26f11SPeter Maydell# VCVT fixed<->float conversions 3733da26f11SPeter Maydell# TODO: FP16 fixed<->float conversions are opc==0b1100 and 0b1101 3743da26f11SPeter MaydellVCVT_SF_2sh 1111 001 0 1 . ...... .... 1110 0 . . 1 .... @2reg_vcvt 3753da26f11SPeter MaydellVCVT_UF_2sh 1111 001 1 1 . ...... .... 1110 0 . . 1 .... @2reg_vcvt 3763da26f11SPeter MaydellVCVT_FS_2sh 1111 001 0 1 . ...... .... 1111 0 . . 1 .... @2reg_vcvt 3773da26f11SPeter MaydellVCVT_FU_2sh 1111 001 1 1 . ...... .... 1111 0 . . 1 .... @2reg_vcvt 3782c35a39eSPeter Maydell 3792c35a39eSPeter Maydell###################################################################### 3802c35a39eSPeter Maydell# 1-reg-and-modified-immediate grouping: 3812c35a39eSPeter Maydell# 1111 001 i 1 D 000 imm:3 Vd:4 cmode:4 0 Q op 1 Vm:4 3822c35a39eSPeter Maydell###################################################################### 3832c35a39eSPeter Maydell 3842c35a39eSPeter Maydell&1reg_imm vd q imm cmode op 3852c35a39eSPeter Maydell 3862c35a39eSPeter Maydell%asimd_imm_value 24:1 16:3 0:4 3872c35a39eSPeter Maydell 3882c35a39eSPeter Maydell@1reg_imm .... ... . . . ... ... .... .... . q:1 . . .... \ 3892c35a39eSPeter Maydell &1reg_imm imm=%asimd_imm_value vd=%vd_dp 3902c35a39eSPeter Maydell 3912c35a39eSPeter Maydell# The cmode/op bits here decode VORR/VBIC/VMOV/VMNV, but 3922c35a39eSPeter Maydell# not in a way we can conveniently represent in decodetree without 3932c35a39eSPeter Maydell# a lot of repetition: 3942c35a39eSPeter Maydell# VORR: op=0, (cmode & 1) && cmode < 12 3952c35a39eSPeter Maydell# VBIC: op=1, (cmode & 1) && cmode < 12 3962c35a39eSPeter Maydell# VMOV: everything else 3972c35a39eSPeter Maydell# So we have a single decode line and check the cmode/op in the 3982c35a39eSPeter Maydell# trans function. 3992c35a39eSPeter MaydellVimm_1r 1111 001 . 1 . 000 ... .... cmode:4 0 . op:1 1 .... @1reg_imm 400b28be095SPeter Maydell 401b28be095SPeter Maydell###################################################################### 402b28be095SPeter Maydell# Within the "two registers, or three registers of different lengths" 403b28be095SPeter Maydell# grouping ([23,4]=0b10), bits [21:20] are either part of the opcode 404b28be095SPeter Maydell# decode: 0b11 for VEXT, two-reg-misc, VTBL, and duplicate-scalar; 405b28be095SPeter Maydell# or they are a size field for the three-reg-different-lengths and 406b28be095SPeter Maydell# two-reg-and-scalar insn groups (where size cannot be 0b11). This 407b28be095SPeter Maydell# is slightly awkward for decodetree: we handle it with this 408b28be095SPeter Maydell# non-exclusive group which contains within it two exclusive groups: 409b28be095SPeter Maydell# one for the size=0b11 patterns, and one for the size-not-0b11 410b28be095SPeter Maydell# patterns. This allows us to check that none of the insns within 411b28be095SPeter Maydell# each subgroup accidentally overlap each other. Note that all the 412b28be095SPeter Maydell# trans functions for the size-not-0b11 patterns must check and 413b28be095SPeter Maydell# return false for size==3. 414b28be095SPeter Maydell###################################################################### 415b28be095SPeter Maydell{ 4160aad761fSPeter Maydell [ 4170aad761fSPeter Maydell ################################################################## 4180aad761fSPeter Maydell # Miscellaneous size=0b11 insns 4190aad761fSPeter Maydell ################################################################## 4200aad761fSPeter Maydell VEXT 1111 001 0 1 . 11 .... .... imm:4 . q:1 . 0 .... \ 4210aad761fSPeter Maydell vm=%vm_dp vn=%vn_dp vd=%vd_dp 42254e96c74SPeter Maydell 42354e96c74SPeter Maydell VTBL 1111 001 1 1 . 11 .... .... 10 len:2 . op:1 . 0 .... \ 42454e96c74SPeter Maydell vm=%vm_dp vn=%vn_dp vd=%vd_dp 4259aaa23c2SPeter Maydell 4269aaa23c2SPeter Maydell VDUP_scalar 1111 001 1 1 . 11 index:3 1 .... 11 000 q:1 . 0 .... \ 4279aaa23c2SPeter Maydell vm=%vm_dp vd=%vd_dp size=0 4289aaa23c2SPeter Maydell VDUP_scalar 1111 001 1 1 . 11 index:2 10 .... 11 000 q:1 . 0 .... \ 4299aaa23c2SPeter Maydell vm=%vm_dp vd=%vd_dp size=1 4309aaa23c2SPeter Maydell VDUP_scalar 1111 001 1 1 . 11 index:1 100 .... 11 000 q:1 . 0 .... \ 4319aaa23c2SPeter Maydell vm=%vm_dp vd=%vd_dp size=2 432353d2b85SPeter Maydell 433353d2b85SPeter Maydell ################################################################## 434353d2b85SPeter Maydell # 2-reg-misc grouping: 435353d2b85SPeter Maydell # 1111 001 11 D 11 size:2 opc1:2 Vd:4 0 opc2:4 q:1 M 0 Vm:4 436353d2b85SPeter Maydell ################################################################## 437353d2b85SPeter Maydell 438353d2b85SPeter Maydell &2misc vd vm q size 439353d2b85SPeter Maydell 440353d2b85SPeter Maydell @2misc .... ... .. . .. size:2 .. .... . .... q:1 . . .... \ 441353d2b85SPeter Maydell &2misc vm=%vm_dp vd=%vd_dp 4423882bdacSPeter Maydell @2misc_q0 .... ... .. . .. size:2 .. .... . .... . . . .... \ 4433882bdacSPeter Maydell &2misc vm=%vm_dp vd=%vd_dp q=0 4440b30dd5bSPeter Maydell @2misc_q1 .... ... .. . .. size:2 .. .... . .... . . . .... \ 4450b30dd5bSPeter Maydell &2misc vm=%vm_dp vd=%vd_dp q=1 446353d2b85SPeter Maydell 447353d2b85SPeter Maydell VREV64 1111 001 11 . 11 .. 00 .... 0 0000 . . 0 .... @2misc 44889668082SPeter Maydell VREV32 1111 001 11 . 11 .. 00 .... 0 0001 . . 0 .... @2misc 44989668082SPeter Maydell VREV16 1111 001 11 . 11 .. 00 .... 0 0010 . . 0 .... @2misc 4506106af3aSPeter Maydell 4516106af3aSPeter Maydell VPADDL_S 1111 001 11 . 11 .. 00 .... 0 0100 . . 0 .... @2misc 4526106af3aSPeter Maydell VPADDL_U 1111 001 11 . 11 .. 00 .... 0 0101 . . 0 .... @2misc 4536106af3aSPeter Maydell 4540b30dd5bSPeter Maydell AESE 1111 001 11 . 11 .. 00 .... 0 0110 0 . 0 .... @2misc_q1 4550b30dd5bSPeter Maydell AESD 1111 001 11 . 11 .. 00 .... 0 0110 1 . 0 .... @2misc_q1 4560b30dd5bSPeter Maydell AESMC 1111 001 11 . 11 .. 00 .... 0 0111 0 . 0 .... @2misc_q1 4570b30dd5bSPeter Maydell AESIMC 1111 001 11 . 11 .. 00 .... 0 0111 1 . 0 .... @2misc_q1 4580b30dd5bSPeter Maydell 45984eae770SPeter Maydell VCLS 1111 001 11 . 11 .. 00 .... 0 1000 . . 0 .... @2misc 46084eae770SPeter Maydell VCLZ 1111 001 11 . 11 .. 00 .... 0 1001 . . 0 .... @2misc 46184eae770SPeter Maydell VCNT 1111 001 11 . 11 .. 00 .... 0 1010 . . 0 .... @2misc 46284eae770SPeter Maydell 46375153179SPeter Maydell VMVN 1111 001 11 . 11 .. 00 .... 0 1011 . . 0 .... @2misc 46475153179SPeter Maydell 4656106af3aSPeter Maydell VPADAL_S 1111 001 11 . 11 .. 00 .... 0 1100 . . 0 .... @2misc 4666106af3aSPeter Maydell VPADAL_U 1111 001 11 . 11 .. 00 .... 0 1101 . . 0 .... @2misc 467567663a2SPeter Maydell 4684936f38aSPeter Maydell VQABS 1111 001 11 . 11 .. 00 .... 0 1110 . . 0 .... @2misc 4694936f38aSPeter Maydell VQNEG 1111 001 11 . 11 .. 00 .... 0 1111 . . 0 .... @2misc 4704936f38aSPeter Maydell 47175153179SPeter Maydell VCGT0 1111 001 11 . 11 .. 01 .... 0 0000 . . 0 .... @2misc 47275153179SPeter Maydell VCGE0 1111 001 11 . 11 .. 01 .... 0 0001 . . 0 .... @2misc 47375153179SPeter Maydell VCEQ0 1111 001 11 . 11 .. 01 .... 0 0010 . . 0 .... @2misc 47475153179SPeter Maydell VCLE0 1111 001 11 . 11 .. 01 .... 0 0011 . . 0 .... @2misc 47575153179SPeter Maydell VCLT0 1111 001 11 . 11 .. 01 .... 0 0100 . . 0 .... @2misc 47675153179SPeter Maydell 4770b30dd5bSPeter Maydell SHA1H 1111 001 11 . 11 .. 01 .... 0 0101 1 . 0 .... @2misc_q1 4780b30dd5bSPeter Maydell 47975153179SPeter Maydell VABS 1111 001 11 . 11 .. 01 .... 0 0110 . . 0 .... @2misc 48075153179SPeter Maydell VNEG 1111 001 11 . 11 .. 01 .... 0 0111 . . 0 .... @2misc 48175153179SPeter Maydell 482baa59323SPeter Maydell VCGT0_F 1111 001 11 . 11 .. 01 .... 0 1000 . . 0 .... @2misc 483baa59323SPeter Maydell VCGE0_F 1111 001 11 . 11 .. 01 .... 0 1001 . . 0 .... @2misc 484baa59323SPeter Maydell VCEQ0_F 1111 001 11 . 11 .. 01 .... 0 1010 . . 0 .... @2misc 485baa59323SPeter Maydell VCLE0_F 1111 001 11 . 11 .. 01 .... 0 1011 . . 0 .... @2misc 486baa59323SPeter Maydell VCLT0_F 1111 001 11 . 11 .. 01 .... 0 1100 . . 0 .... @2misc 487baa59323SPeter Maydell 48884eae770SPeter Maydell VABS_F 1111 001 11 . 11 .. 01 .... 0 1110 . . 0 .... @2misc 48984eae770SPeter Maydell VNEG_F 1111 001 11 . 11 .. 01 .... 0 1111 . . 0 .... @2misc 49084eae770SPeter Maydell 491*8ab3a227SPeter Maydell VSWP 1111 001 11 . 11 .. 10 .... 0 0000 . . 0 .... @2misc 492*8ab3a227SPeter Maydell 493567663a2SPeter Maydell VUZP 1111 001 11 . 11 .. 10 .... 0 0010 . . 0 .... @2misc 494567663a2SPeter Maydell VZIP 1111 001 11 . 11 .. 10 .... 0 0011 . . 0 .... @2misc 4953882bdacSPeter Maydell 4963882bdacSPeter Maydell VMOVN 1111 001 11 . 11 .. 10 .... 0 0100 0 . 0 .... @2misc_q0 4973882bdacSPeter Maydell # VQMOVUN: unsigned result (source is always signed) 4983882bdacSPeter Maydell VQMOVUN 1111 001 11 . 11 .. 10 .... 0 0100 1 . 0 .... @2misc_q0 4993882bdacSPeter Maydell # VQMOVN: signed result, source may be signed (_S) or unsigned (_U) 5003882bdacSPeter Maydell VQMOVN_S 1111 001 11 . 11 .. 10 .... 0 0101 0 . 0 .... @2misc_q0 5013882bdacSPeter Maydell VQMOVN_U 1111 001 11 . 11 .. 10 .... 0 0101 1 . 0 .... @2misc_q0 502749e2be3SPeter Maydell 503749e2be3SPeter Maydell VSHLL 1111 001 11 . 11 .. 10 .... 0 0110 0 . 0 .... @2misc_q0 504654a5173SPeter Maydell 5050b30dd5bSPeter Maydell SHA1SU1 1111 001 11 . 11 .. 10 .... 0 0111 0 . 0 .... @2misc_q1 5060b30dd5bSPeter Maydell SHA256SU0 1111 001 11 . 11 .. 10 .... 0 0111 1 . 0 .... @2misc_q1 5070b30dd5bSPeter Maydell 508128123eaSPeter Maydell VRINTN 1111 001 11 . 11 .. 10 .... 0 1000 . . 0 .... @2misc 5093e96b205SPeter Maydell VRINTX 1111 001 11 . 11 .. 10 .... 0 1001 . . 0 .... @2misc 510128123eaSPeter Maydell VRINTA 1111 001 11 . 11 .. 10 .... 0 1010 . . 0 .... @2misc 511128123eaSPeter Maydell VRINTZ 1111 001 11 . 11 .. 10 .... 0 1011 . . 0 .... @2misc 5123e96b205SPeter Maydell 513654a5173SPeter Maydell VCVT_F16_F32 1111 001 11 . 11 .. 10 .... 0 1100 0 . 0 .... @2misc_q0 514128123eaSPeter Maydell 515128123eaSPeter Maydell VRINTM 1111 001 11 . 11 .. 10 .... 0 1101 . . 0 .... @2misc 516128123eaSPeter Maydell 517654a5173SPeter Maydell VCVT_F32_F16 1111 001 11 . 11 .. 10 .... 0 1110 0 . 0 .... @2misc_q0 51884eae770SPeter Maydell 519128123eaSPeter Maydell VRINTP 1111 001 11 . 11 .. 10 .... 0 1111 . . 0 .... @2misc 520128123eaSPeter Maydell 521a183d5fbSPeter Maydell VCVTAS 1111 001 11 . 11 .. 11 .... 0 0000 . . 0 .... @2misc 522a183d5fbSPeter Maydell VCVTAU 1111 001 11 . 11 .. 11 .... 0 0001 . . 0 .... @2misc 523a183d5fbSPeter Maydell VCVTNS 1111 001 11 . 11 .. 11 .... 0 0010 . . 0 .... @2misc 524a183d5fbSPeter Maydell VCVTNU 1111 001 11 . 11 .. 11 .... 0 0011 . . 0 .... @2misc 525a183d5fbSPeter Maydell VCVTPS 1111 001 11 . 11 .. 11 .... 0 0100 . . 0 .... @2misc 526a183d5fbSPeter Maydell VCVTPU 1111 001 11 . 11 .. 11 .... 0 0101 . . 0 .... @2misc 527a183d5fbSPeter Maydell VCVTMS 1111 001 11 . 11 .. 11 .... 0 0110 . . 0 .... @2misc 528a183d5fbSPeter Maydell VCVTMU 1111 001 11 . 11 .. 11 .... 0 0111 . . 0 .... @2misc 529a183d5fbSPeter Maydell 53084eae770SPeter Maydell VRECPE 1111 001 11 . 11 .. 11 .... 0 1000 . . 0 .... @2misc 53184eae770SPeter Maydell VRSQRTE 1111 001 11 . 11 .. 11 .... 0 1001 . . 0 .... @2misc 5323e96b205SPeter Maydell VRECPE_F 1111 001 11 . 11 .. 11 .... 0 1010 . . 0 .... @2misc 5333e96b205SPeter Maydell VRSQRTE_F 1111 001 11 . 11 .. 11 .... 0 1011 . . 0 .... @2misc 5343e96b205SPeter Maydell VCVT_FS 1111 001 11 . 11 .. 11 .... 0 1100 . . 0 .... @2misc 5353e96b205SPeter Maydell VCVT_FU 1111 001 11 . 11 .. 11 .... 0 1101 . . 0 .... @2misc 5363e96b205SPeter Maydell VCVT_SF 1111 001 11 . 11 .. 11 .... 0 1110 . . 0 .... @2misc 5373e96b205SPeter Maydell VCVT_UF 1111 001 11 . 11 .. 11 .... 0 1111 . . 0 .... @2misc 5380aad761fSPeter Maydell ] 539b28be095SPeter Maydell 540b28be095SPeter Maydell # Subgroup for size != 0b11 541b28be095SPeter Maydell [ 542b28be095SPeter Maydell ################################################################## 543b28be095SPeter Maydell # 3-reg-different-length grouping: 544b28be095SPeter Maydell # 1111 001 U 1 D sz!=11 Vn:4 Vd:4 opc:4 N 0 M 0 Vm:4 545b28be095SPeter Maydell ################################################################## 546b28be095SPeter Maydell 547b28be095SPeter Maydell &3diff vm vn vd size 548b28be095SPeter Maydell 549b28be095SPeter Maydell @3diff .... ... . . . size:2 .... .... .... . . . . .... \ 550b28be095SPeter Maydell &3diff vm=%vm_dp vn=%vn_dp vd=%vd_dp 551b28be095SPeter Maydell 552b28be095SPeter Maydell VADDL_S_3d 1111 001 0 1 . .. .... .... 0000 . 0 . 0 .... @3diff 553b28be095SPeter Maydell VADDL_U_3d 1111 001 1 1 . .. .... .... 0000 . 0 . 0 .... @3diff 554b28be095SPeter Maydell 555b28be095SPeter Maydell VADDW_S_3d 1111 001 0 1 . .. .... .... 0001 . 0 . 0 .... @3diff 556b28be095SPeter Maydell VADDW_U_3d 1111 001 1 1 . .. .... .... 0001 . 0 . 0 .... @3diff 557b28be095SPeter Maydell 558b28be095SPeter Maydell VSUBL_S_3d 1111 001 0 1 . .. .... .... 0010 . 0 . 0 .... @3diff 559b28be095SPeter Maydell VSUBL_U_3d 1111 001 1 1 . .. .... .... 0010 . 0 . 0 .... @3diff 560b28be095SPeter Maydell 561b28be095SPeter Maydell VSUBW_S_3d 1111 001 0 1 . .. .... .... 0011 . 0 . 0 .... @3diff 562b28be095SPeter Maydell VSUBW_U_3d 1111 001 1 1 . .. .... .... 0011 . 0 . 0 .... @3diff 5630fa1ab03SPeter Maydell 5640fa1ab03SPeter Maydell VADDHN_3d 1111 001 0 1 . .. .... .... 0100 . 0 . 0 .... @3diff 5650fa1ab03SPeter Maydell VRADDHN_3d 1111 001 1 1 . .. .... .... 0100 . 0 . 0 .... @3diff 5660fa1ab03SPeter Maydell 567f5b28401SPeter Maydell VABAL_S_3d 1111 001 0 1 . .. .... .... 0101 . 0 . 0 .... @3diff 568f5b28401SPeter Maydell VABAL_U_3d 1111 001 1 1 . .. .... .... 0101 . 0 . 0 .... @3diff 569f5b28401SPeter Maydell 5700fa1ab03SPeter Maydell VSUBHN_3d 1111 001 0 1 . .. .... .... 0110 . 0 . 0 .... @3diff 5710fa1ab03SPeter Maydell VRSUBHN_3d 1111 001 1 1 . .. .... .... 0110 . 0 . 0 .... @3diff 572f5b28401SPeter Maydell 573f5b28401SPeter Maydell VABDL_S_3d 1111 001 0 1 . .. .... .... 0111 . 0 . 0 .... @3diff 574f5b28401SPeter Maydell VABDL_U_3d 1111 001 1 1 . .. .... .... 0111 . 0 . 0 .... @3diff 5753a1d9eb0SPeter Maydell 5763a1d9eb0SPeter Maydell VMLAL_S_3d 1111 001 0 1 . .. .... .... 1000 . 0 . 0 .... @3diff 5773a1d9eb0SPeter Maydell VMLAL_U_3d 1111 001 1 1 . .. .... .... 1000 . 0 . 0 .... @3diff 5783a1d9eb0SPeter Maydell 5799546ca59SPeter Maydell VQDMLAL_3d 1111 001 0 1 . .. .... .... 1001 . 0 . 0 .... @3diff 5809546ca59SPeter Maydell 5813a1d9eb0SPeter Maydell VMLSL_S_3d 1111 001 0 1 . .. .... .... 1010 . 0 . 0 .... @3diff 5823a1d9eb0SPeter Maydell VMLSL_U_3d 1111 001 1 1 . .. .... .... 1010 . 0 . 0 .... @3diff 5833a1d9eb0SPeter Maydell 5849546ca59SPeter Maydell VQDMLSL_3d 1111 001 0 1 . .. .... .... 1011 . 0 . 0 .... @3diff 5859546ca59SPeter Maydell 5863a1d9eb0SPeter Maydell VMULL_S_3d 1111 001 0 1 . .. .... .... 1100 . 0 . 0 .... @3diff 5873a1d9eb0SPeter Maydell VMULL_U_3d 1111 001 1 1 . .. .... .... 1100 . 0 . 0 .... @3diff 5889546ca59SPeter Maydell 5899546ca59SPeter Maydell VQDMULL_3d 1111 001 0 1 . .. .... .... 1101 . 0 . 0 .... @3diff 59018fb58d5SPeter Maydell 59118fb58d5SPeter Maydell VMULL_P_3d 1111 001 0 1 . .. .... .... 1110 . 0 . 0 .... @3diff 59296fc80f5SPeter Maydell 59396fc80f5SPeter Maydell ################################################################## 59496fc80f5SPeter Maydell # 2-regs-plus-scalar grouping: 59596fc80f5SPeter Maydell # 1111 001 Q 1 D sz!=11 Vn:4 Vd:4 opc:4 N 1 M 0 Vm:4 59696fc80f5SPeter Maydell ################################################################## 59796fc80f5SPeter Maydell &2scalar vm vn vd size q 59896fc80f5SPeter Maydell 59996fc80f5SPeter Maydell @2scalar .... ... q:1 . . size:2 .... .... .... . . . . .... \ 60096fc80f5SPeter Maydell &2scalar vm=%vm_dp vn=%vn_dp vd=%vd_dp 60177e576a9SPeter Maydell # For the 'long' ops the Q bit is part of insn decode 60277e576a9SPeter Maydell @2scalar_q0 .... ... . . . size:2 .... .... .... . . . . .... \ 60377e576a9SPeter Maydell &2scalar vm=%vm_dp vn=%vn_dp vd=%vd_dp q=0 60496fc80f5SPeter Maydell 60596fc80f5SPeter Maydell VMLA_2sc 1111 001 . 1 . .. .... .... 0000 . 1 . 0 .... @2scalar 60685ac9aefSPeter Maydell VMLA_F_2sc 1111 001 . 1 . .. .... .... 0001 . 1 . 0 .... @2scalar 60796fc80f5SPeter Maydell 60877e576a9SPeter Maydell VMLAL_S_2sc 1111 001 0 1 . .. .... .... 0010 . 1 . 0 .... @2scalar_q0 60977e576a9SPeter Maydell VMLAL_U_2sc 1111 001 1 1 . .. .... .... 0010 . 1 . 0 .... @2scalar_q0 61077e576a9SPeter Maydell 61177e576a9SPeter Maydell VQDMLAL_2sc 1111 001 0 1 . .. .... .... 0011 . 1 . 0 .... @2scalar_q0 61277e576a9SPeter Maydell 61396fc80f5SPeter Maydell VMLS_2sc 1111 001 . 1 . .. .... .... 0100 . 1 . 0 .... @2scalar 61485ac9aefSPeter Maydell VMLS_F_2sc 1111 001 . 1 . .. .... .... 0101 . 1 . 0 .... @2scalar 61596fc80f5SPeter Maydell 61677e576a9SPeter Maydell VMLSL_S_2sc 1111 001 0 1 . .. .... .... 0110 . 1 . 0 .... @2scalar_q0 61777e576a9SPeter Maydell VMLSL_U_2sc 1111 001 1 1 . .. .... .... 0110 . 1 . 0 .... @2scalar_q0 61877e576a9SPeter Maydell 61977e576a9SPeter Maydell VQDMLSL_2sc 1111 001 0 1 . .. .... .... 0111 . 1 . 0 .... @2scalar_q0 62077e576a9SPeter Maydell 62196fc80f5SPeter Maydell VMUL_2sc 1111 001 . 1 . .. .... .... 1000 . 1 . 0 .... @2scalar 62285ac9aefSPeter Maydell VMUL_F_2sc 1111 001 . 1 . .. .... .... 1001 . 1 . 0 .... @2scalar 623b2fc7be9SPeter Maydell 62477e576a9SPeter Maydell VMULL_S_2sc 1111 001 0 1 . .. .... .... 1010 . 1 . 0 .... @2scalar_q0 62577e576a9SPeter Maydell VMULL_U_2sc 1111 001 1 1 . .. .... .... 1010 . 1 . 0 .... @2scalar_q0 62677e576a9SPeter Maydell 62777e576a9SPeter Maydell VQDMULL_2sc 1111 001 0 1 . .. .... .... 1011 . 1 . 0 .... @2scalar_q0 62877e576a9SPeter Maydell 629b2fc7be9SPeter Maydell VQDMULH_2sc 1111 001 . 1 . .. .... .... 1100 . 1 . 0 .... @2scalar 630b2fc7be9SPeter Maydell VQRDMULH_2sc 1111 001 . 1 . .. .... .... 1101 . 1 . 0 .... @2scalar 631aa318f5bSPeter Maydell 632aa318f5bSPeter Maydell VQRDMLAH_2sc 1111 001 . 1 . .. .... .... 1110 . 1 . 0 .... @2scalar 633aa318f5bSPeter Maydell VQRDMLSH_2sc 1111 001 . 1 . .. .... .... 1111 . 1 . 0 .... @2scalar 634b28be095SPeter Maydell ] 635b28be095SPeter Maydell} 636