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.) 41d186a485SPeter Maydell%vcadd_size 20:1 !function=plus1 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 49*f0ad96cbSRichard HendersonVSDOT 1111 110 00 . 10 .... .... 1101 . q:1 . 0 .... \ 50*f0ad96cbSRichard Henderson vm=%vm_dp vn=%vn_dp vd=%vd_dp 51*f0ad96cbSRichard HendersonVUDOT 1111 110 00 . 10 .... .... 1101 . q:1 . 1 .... \ 5232da0e33SPeter Maydell vm=%vm_dp vn=%vn_dp vd=%vd_dp 539a107e7bSPeter Maydell 549a107e7bSPeter Maydell# VFM[AS]L 559a107e7bSPeter MaydellVFML 1111 110 0 s:1 . 10 .... .... 1000 . 0 . 1 .... \ 569a107e7bSPeter Maydell vm=%vm_sp vn=%vn_sp vd=%vd_dp q=0 579a107e7bSPeter MaydellVFML 1111 110 0 s:1 . 10 .... .... 1000 . 1 . 1 .... \ 589a107e7bSPeter Maydell vm=%vm_dp vn=%vn_dp vd=%vd_dp q=1 597e1b5d61SPeter Maydell 607e1b5d61SPeter MaydellVCMLA_scalar 1111 1110 0 . rot:2 .... .... 1000 . q:1 index:1 0 vm:4 \ 61d186a485SPeter Maydell vn=%vn_dp vd=%vd_dp size=1 627e1b5d61SPeter MaydellVCMLA_scalar 1111 1110 1 . rot:2 .... .... 1000 . q:1 . 0 .... \ 63d186a485SPeter Maydell vm=%vm_dp vn=%vn_dp vd=%vd_dp size=2 index=0 6435f5d4d1SPeter Maydell 65*f0ad96cbSRichard HendersonVSDOT_scalar 1111 1110 0 . 10 .... .... 1101 . q:1 index:1 0 vm:4 \ 66*f0ad96cbSRichard Henderson vn=%vn_dp vd=%vd_dp 67*f0ad96cbSRichard HendersonVUDOT_scalar 1111 1110 0 . 10 .... .... 1101 . q:1 index:1 1 vm:4 \ 6864ea6086SRichard Henderson vn=%vn_dp vd=%vd_dp 69d27e82f7SPeter Maydell 70d27e82f7SPeter Maydell%vfml_scalar_q0_rm 0:3 5:1 71d27e82f7SPeter Maydell%vfml_scalar_q1_index 5:1 3:1 72d27e82f7SPeter MaydellVFML_scalar 1111 1110 0 . 0 s:1 .... .... 1000 . 0 . 1 index:1 ... \ 73d27e82f7SPeter Maydell rm=%vfml_scalar_q0_rm vn=%vn_sp vd=%vd_dp q=0 74d27e82f7SPeter MaydellVFML_scalar 1111 1110 0 . 0 s:1 .... .... 1000 . 1 . 1 . rm:3 \ 75d27e82f7SPeter Maydell index=%vfml_scalar_q1_index vn=%vn_dp vd=%vd_dp q=1 76