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