1625e3dd4SPeter Maydell# AArch32 Neon 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# 21625e3dd4SPeter Maydell 22625e3dd4SPeter Maydell# Encodings for Neon instructions whose encoding is the same for 23625e3dd4SPeter Maydell# both A32 and T32. 24625e3dd4SPeter Maydell 25625e3dd4SPeter Maydell# More specifically, this covers: 26625e3dd4SPeter Maydell# 2reg scalar ext: 0b1111_1110_xxxx_xxxx_xxxx_1x0x_xxxx_xxxx 27625e3dd4SPeter Maydell# 3same ext: 0b1111_110x_xxxx_xxxx_xxxx_1x0x_xxxx_xxxx 28afff8de0SPeter Maydell 29afff8de0SPeter Maydell# VFP/Neon register fields; same as vfp.decode 30afff8de0SPeter Maydell%vm_dp 5:1 0:4 31afff8de0SPeter Maydell%vm_sp 0:4 5:1 32afff8de0SPeter Maydell%vn_dp 7:1 16:4 33afff8de0SPeter Maydell%vn_sp 16:4 7:1 34afff8de0SPeter Maydell%vd_dp 22:1 12:4 35afff8de0SPeter Maydell%vd_sp 12:4 22:1 36afff8de0SPeter Maydell 37d186a485SPeter Maydell# For VCMLA/VCADD insns, convert the single-bit size field 38d186a485SPeter Maydell# which is 0 for fp16 and 1 for fp32 into a MO_* constant. 39d186a485SPeter Maydell# (Note that this is the reverse of the sense of the 1-bit size 40d186a485SPeter Maydell# field in the 3same_fp Neon insns.) 41*8fe612a1SPeter Maydell%vcadd_size 20:1 !function=plus_1 4294d5eb7bSPeter Maydell 43d186a485SPeter MaydellVCMLA 1111 110 rot:2 . 1 . .... .... 1000 . q:1 . 0 .... \ 44d186a485SPeter Maydell vm=%vm_dp vn=%vn_dp vd=%vd_dp size=%vcadd_size 45d186a485SPeter Maydell 46d186a485SPeter MaydellVCADD 1111 110 rot:1 1 . 0 . .... .... 1000 . q:1 . 0 .... \ 47d186a485SPeter Maydell vm=%vm_dp vn=%vn_dp vd=%vd_dp size=%vcadd_size 4832da0e33SPeter Maydell 49f0ad96cbSRichard HendersonVSDOT 1111 110 00 . 10 .... .... 1101 . q:1 . 0 .... \ 50f0ad96cbSRichard Henderson vm=%vm_dp vn=%vn_dp vd=%vd_dp 51f0ad96cbSRichard HendersonVUDOT 1111 110 00 . 10 .... .... 1101 . q:1 . 1 .... \ 5232da0e33SPeter Maydell vm=%vm_dp vn=%vn_dp vd=%vd_dp 5351879c67SRichard HendersonVUSDOT 1111 110 01 . 10 .... .... 1101 . q:1 . 0 .... \ 5451879c67SRichard Henderson vm=%vm_dp vn=%vn_dp vd=%vd_dp 55cb8657f7SRichard HendersonVDOT_b16 1111 110 00 . 00 .... .... 1101 . q:1 . 0 .... \ 56cb8657f7SRichard Henderson vm=%vm_dp vn=%vn_dp vd=%vd_dp 579a107e7bSPeter Maydell 589a107e7bSPeter Maydell# VFM[AS]L 599a107e7bSPeter MaydellVFML 1111 110 0 s:1 . 10 .... .... 1000 . 0 . 1 .... \ 609a107e7bSPeter Maydell vm=%vm_sp vn=%vn_sp vd=%vd_dp q=0 619a107e7bSPeter MaydellVFML 1111 110 0 s:1 . 10 .... .... 1000 . 1 . 1 .... \ 629a107e7bSPeter Maydell vm=%vm_dp vn=%vn_dp vd=%vd_dp q=1 637e1b5d61SPeter Maydell 642323c5ffSRichard HendersonVSMMLA 1111 1100 0.10 .... .... 1100 .1.0 .... \ 652323c5ffSRichard Henderson vm=%vm_dp vn=%vn_dp vd=%vd_dp 662323c5ffSRichard HendersonVUMMLA 1111 1100 0.10 .... .... 1100 .1.1 .... \ 672323c5ffSRichard Henderson vm=%vm_dp vn=%vn_dp vd=%vd_dp 682323c5ffSRichard HendersonVUSMMLA 1111 1100 1.10 .... .... 1100 .1.0 .... \ 692323c5ffSRichard Henderson vm=%vm_dp vn=%vn_dp vd=%vd_dp 7081266a1fSRichard HendersonVMMLA_b16 1111 1100 0.00 .... .... 1100 .1.0 .... \ 7181266a1fSRichard Henderson vm=%vm_dp vn=%vn_dp vd=%vd_dp 722323c5ffSRichard Henderson 735693887fSRichard HendersonVFMA_b16 1111 110 0 0.11 .... .... 1000 . q:1 . 1 .... \ 745693887fSRichard Henderson vm=%vm_dp vn=%vn_dp vd=%vd_dp 755693887fSRichard Henderson 767e1b5d61SPeter MaydellVCMLA_scalar 1111 1110 0 . rot:2 .... .... 1000 . q:1 index:1 0 vm:4 \ 77d186a485SPeter Maydell vn=%vn_dp vd=%vd_dp size=1 787e1b5d61SPeter MaydellVCMLA_scalar 1111 1110 1 . rot:2 .... .... 1000 . q:1 . 0 .... \ 79d186a485SPeter Maydell vm=%vm_dp vn=%vn_dp vd=%vd_dp size=2 index=0 8035f5d4d1SPeter Maydell 81f0ad96cbSRichard HendersonVSDOT_scalar 1111 1110 0 . 10 .... .... 1101 . q:1 index:1 0 vm:4 \ 82f0ad96cbSRichard Henderson vn=%vn_dp vd=%vd_dp 83f0ad96cbSRichard HendersonVUDOT_scalar 1111 1110 0 . 10 .... .... 1101 . q:1 index:1 1 vm:4 \ 8464ea6086SRichard Henderson vn=%vn_dp vd=%vd_dp 8551879c67SRichard HendersonVUSDOT_scalar 1111 1110 1 . 00 .... .... 1101 . q:1 index:1 0 vm:4 \ 8651879c67SRichard Henderson vn=%vn_dp vd=%vd_dp 8751879c67SRichard HendersonVSUDOT_scalar 1111 1110 1 . 00 .... .... 1101 . q:1 index:1 1 vm:4 \ 8851879c67SRichard Henderson vn=%vn_dp vd=%vd_dp 8983914478SRichard HendersonVDOT_b16_scal 1111 1110 0 . 00 .... .... 1101 . q:1 index:1 0 vm:4 \ 9083914478SRichard Henderson vn=%vn_dp vd=%vd_dp 91d27e82f7SPeter Maydell 92d27e82f7SPeter Maydell%vfml_scalar_q0_rm 0:3 5:1 93d27e82f7SPeter Maydell%vfml_scalar_q1_index 5:1 3:1 94d27e82f7SPeter MaydellVFML_scalar 1111 1110 0 . 0 s:1 .... .... 1000 . 0 . 1 index:1 ... \ 95d27e82f7SPeter Maydell rm=%vfml_scalar_q0_rm vn=%vn_sp vd=%vd_dp q=0 96d27e82f7SPeter MaydellVFML_scalar 1111 1110 0 . 0 s:1 .... .... 1000 . 1 . 1 . rm:3 \ 97d27e82f7SPeter Maydell index=%vfml_scalar_q1_index vn=%vn_dp vd=%vd_dp q=1 98458d0ab6SRichard HendersonVFMA_b16_scal 1111 1110 0.11 .... .... 1000 . q:1 . 1 . vm:3 \ 99458d0ab6SRichard Henderson index=%vfml_scalar_q1_index vn=%vn_dp vd=%vd_dp 100