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