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 425*9aaa23c2SPeter Maydell 426*9aaa23c2SPeter Maydell VDUP_scalar 1111 001 1 1 . 11 index:3 1 .... 11 000 q:1 . 0 .... \ 427*9aaa23c2SPeter Maydell vm=%vm_dp vd=%vd_dp size=0 428*9aaa23c2SPeter Maydell VDUP_scalar 1111 001 1 1 . 11 index:2 10 .... 11 000 q:1 . 0 .... \ 429*9aaa23c2SPeter Maydell vm=%vm_dp vd=%vd_dp size=1 430*9aaa23c2SPeter Maydell VDUP_scalar 1111 001 1 1 . 11 index:1 100 .... 11 000 q:1 . 0 .... \ 431*9aaa23c2SPeter Maydell vm=%vm_dp vd=%vd_dp size=2 4320aad761fSPeter Maydell ] 433b28be095SPeter Maydell 434b28be095SPeter Maydell # Subgroup for size != 0b11 435b28be095SPeter Maydell [ 436b28be095SPeter Maydell ################################################################## 437b28be095SPeter Maydell # 3-reg-different-length grouping: 438b28be095SPeter Maydell # 1111 001 U 1 D sz!=11 Vn:4 Vd:4 opc:4 N 0 M 0 Vm:4 439b28be095SPeter Maydell ################################################################## 440b28be095SPeter Maydell 441b28be095SPeter Maydell &3diff vm vn vd size 442b28be095SPeter Maydell 443b28be095SPeter Maydell @3diff .... ... . . . size:2 .... .... .... . . . . .... \ 444b28be095SPeter Maydell &3diff vm=%vm_dp vn=%vn_dp vd=%vd_dp 445b28be095SPeter Maydell 446b28be095SPeter Maydell VADDL_S_3d 1111 001 0 1 . .. .... .... 0000 . 0 . 0 .... @3diff 447b28be095SPeter Maydell VADDL_U_3d 1111 001 1 1 . .. .... .... 0000 . 0 . 0 .... @3diff 448b28be095SPeter Maydell 449b28be095SPeter Maydell VADDW_S_3d 1111 001 0 1 . .. .... .... 0001 . 0 . 0 .... @3diff 450b28be095SPeter Maydell VADDW_U_3d 1111 001 1 1 . .. .... .... 0001 . 0 . 0 .... @3diff 451b28be095SPeter Maydell 452b28be095SPeter Maydell VSUBL_S_3d 1111 001 0 1 . .. .... .... 0010 . 0 . 0 .... @3diff 453b28be095SPeter Maydell VSUBL_U_3d 1111 001 1 1 . .. .... .... 0010 . 0 . 0 .... @3diff 454b28be095SPeter Maydell 455b28be095SPeter Maydell VSUBW_S_3d 1111 001 0 1 . .. .... .... 0011 . 0 . 0 .... @3diff 456b28be095SPeter Maydell VSUBW_U_3d 1111 001 1 1 . .. .... .... 0011 . 0 . 0 .... @3diff 4570fa1ab03SPeter Maydell 4580fa1ab03SPeter Maydell VADDHN_3d 1111 001 0 1 . .. .... .... 0100 . 0 . 0 .... @3diff 4590fa1ab03SPeter Maydell VRADDHN_3d 1111 001 1 1 . .. .... .... 0100 . 0 . 0 .... @3diff 4600fa1ab03SPeter Maydell 461f5b28401SPeter Maydell VABAL_S_3d 1111 001 0 1 . .. .... .... 0101 . 0 . 0 .... @3diff 462f5b28401SPeter Maydell VABAL_U_3d 1111 001 1 1 . .. .... .... 0101 . 0 . 0 .... @3diff 463f5b28401SPeter Maydell 4640fa1ab03SPeter Maydell VSUBHN_3d 1111 001 0 1 . .. .... .... 0110 . 0 . 0 .... @3diff 4650fa1ab03SPeter Maydell VRSUBHN_3d 1111 001 1 1 . .. .... .... 0110 . 0 . 0 .... @3diff 466f5b28401SPeter Maydell 467f5b28401SPeter Maydell VABDL_S_3d 1111 001 0 1 . .. .... .... 0111 . 0 . 0 .... @3diff 468f5b28401SPeter Maydell VABDL_U_3d 1111 001 1 1 . .. .... .... 0111 . 0 . 0 .... @3diff 4693a1d9eb0SPeter Maydell 4703a1d9eb0SPeter Maydell VMLAL_S_3d 1111 001 0 1 . .. .... .... 1000 . 0 . 0 .... @3diff 4713a1d9eb0SPeter Maydell VMLAL_U_3d 1111 001 1 1 . .. .... .... 1000 . 0 . 0 .... @3diff 4723a1d9eb0SPeter Maydell 4739546ca59SPeter Maydell VQDMLAL_3d 1111 001 0 1 . .. .... .... 1001 . 0 . 0 .... @3diff 4749546ca59SPeter Maydell 4753a1d9eb0SPeter Maydell VMLSL_S_3d 1111 001 0 1 . .. .... .... 1010 . 0 . 0 .... @3diff 4763a1d9eb0SPeter Maydell VMLSL_U_3d 1111 001 1 1 . .. .... .... 1010 . 0 . 0 .... @3diff 4773a1d9eb0SPeter Maydell 4789546ca59SPeter Maydell VQDMLSL_3d 1111 001 0 1 . .. .... .... 1011 . 0 . 0 .... @3diff 4799546ca59SPeter Maydell 4803a1d9eb0SPeter Maydell VMULL_S_3d 1111 001 0 1 . .. .... .... 1100 . 0 . 0 .... @3diff 4813a1d9eb0SPeter Maydell VMULL_U_3d 1111 001 1 1 . .. .... .... 1100 . 0 . 0 .... @3diff 4829546ca59SPeter Maydell 4839546ca59SPeter Maydell VQDMULL_3d 1111 001 0 1 . .. .... .... 1101 . 0 . 0 .... @3diff 48418fb58d5SPeter Maydell 48518fb58d5SPeter Maydell VMULL_P_3d 1111 001 0 1 . .. .... .... 1110 . 0 . 0 .... @3diff 48696fc80f5SPeter Maydell 48796fc80f5SPeter Maydell ################################################################## 48896fc80f5SPeter Maydell # 2-regs-plus-scalar grouping: 48996fc80f5SPeter Maydell # 1111 001 Q 1 D sz!=11 Vn:4 Vd:4 opc:4 N 1 M 0 Vm:4 49096fc80f5SPeter Maydell ################################################################## 49196fc80f5SPeter Maydell &2scalar vm vn vd size q 49296fc80f5SPeter Maydell 49396fc80f5SPeter Maydell @2scalar .... ... q:1 . . size:2 .... .... .... . . . . .... \ 49496fc80f5SPeter Maydell &2scalar vm=%vm_dp vn=%vn_dp vd=%vd_dp 49577e576a9SPeter Maydell # For the 'long' ops the Q bit is part of insn decode 49677e576a9SPeter Maydell @2scalar_q0 .... ... . . . size:2 .... .... .... . . . . .... \ 49777e576a9SPeter Maydell &2scalar vm=%vm_dp vn=%vn_dp vd=%vd_dp q=0 49896fc80f5SPeter Maydell 49996fc80f5SPeter Maydell VMLA_2sc 1111 001 . 1 . .. .... .... 0000 . 1 . 0 .... @2scalar 50085ac9aefSPeter Maydell VMLA_F_2sc 1111 001 . 1 . .. .... .... 0001 . 1 . 0 .... @2scalar 50196fc80f5SPeter Maydell 50277e576a9SPeter Maydell VMLAL_S_2sc 1111 001 0 1 . .. .... .... 0010 . 1 . 0 .... @2scalar_q0 50377e576a9SPeter Maydell VMLAL_U_2sc 1111 001 1 1 . .. .... .... 0010 . 1 . 0 .... @2scalar_q0 50477e576a9SPeter Maydell 50577e576a9SPeter Maydell VQDMLAL_2sc 1111 001 0 1 . .. .... .... 0011 . 1 . 0 .... @2scalar_q0 50677e576a9SPeter Maydell 50796fc80f5SPeter Maydell VMLS_2sc 1111 001 . 1 . .. .... .... 0100 . 1 . 0 .... @2scalar 50885ac9aefSPeter Maydell VMLS_F_2sc 1111 001 . 1 . .. .... .... 0101 . 1 . 0 .... @2scalar 50996fc80f5SPeter Maydell 51077e576a9SPeter Maydell VMLSL_S_2sc 1111 001 0 1 . .. .... .... 0110 . 1 . 0 .... @2scalar_q0 51177e576a9SPeter Maydell VMLSL_U_2sc 1111 001 1 1 . .. .... .... 0110 . 1 . 0 .... @2scalar_q0 51277e576a9SPeter Maydell 51377e576a9SPeter Maydell VQDMLSL_2sc 1111 001 0 1 . .. .... .... 0111 . 1 . 0 .... @2scalar_q0 51477e576a9SPeter Maydell 51596fc80f5SPeter Maydell VMUL_2sc 1111 001 . 1 . .. .... .... 1000 . 1 . 0 .... @2scalar 51685ac9aefSPeter Maydell VMUL_F_2sc 1111 001 . 1 . .. .... .... 1001 . 1 . 0 .... @2scalar 517b2fc7be9SPeter Maydell 51877e576a9SPeter Maydell VMULL_S_2sc 1111 001 0 1 . .. .... .... 1010 . 1 . 0 .... @2scalar_q0 51977e576a9SPeter Maydell VMULL_U_2sc 1111 001 1 1 . .. .... .... 1010 . 1 . 0 .... @2scalar_q0 52077e576a9SPeter Maydell 52177e576a9SPeter Maydell VQDMULL_2sc 1111 001 0 1 . .. .... .... 1011 . 1 . 0 .... @2scalar_q0 52277e576a9SPeter Maydell 523b2fc7be9SPeter Maydell VQDMULH_2sc 1111 001 . 1 . .. .... .... 1100 . 1 . 0 .... @2scalar 524b2fc7be9SPeter Maydell VQRDMULH_2sc 1111 001 . 1 . .. .... .... 1101 . 1 . 0 .... @2scalar 525aa318f5bSPeter Maydell 526aa318f5bSPeter Maydell VQRDMLAH_2sc 1111 001 . 1 . .. .... .... 1110 . 1 . 0 .... @2scalar 527aa318f5bSPeter Maydell VQRDMLSH_2sc 1111 001 . 1 . .. .... .... 1111 . 1 . 0 .... @2scalar 528b28be095SPeter Maydell ] 529b28be095SPeter Maydell} 530