18058c831SPeter Maydell# AArch64 A64 allowed instruction decoding 28058c831SPeter Maydell# 38058c831SPeter Maydell# Copyright (c) 2023 Linaro, Ltd 48058c831SPeter Maydell# 58058c831SPeter Maydell# This library is free software; you can redistribute it and/or 68058c831SPeter Maydell# modify it under the terms of the GNU Lesser General Public 78058c831SPeter Maydell# License as published by the Free Software Foundation; either 88058c831SPeter Maydell# version 2.1 of the License, or (at your option) any later version. 98058c831SPeter Maydell# 108058c831SPeter Maydell# This library is distributed in the hope that it will be useful, 118058c831SPeter Maydell# but WITHOUT ANY WARRANTY; without even the implied warranty of 128058c831SPeter Maydell# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 138058c831SPeter Maydell# Lesser General Public License for more details. 148058c831SPeter Maydell# 158058c831SPeter Maydell# You should have received a copy of the GNU Lesser General Public 168058c831SPeter Maydell# License along with this library; if not, see <http://www.gnu.org/licenses/>. 178058c831SPeter Maydell 188058c831SPeter Maydell# 198058c831SPeter Maydell# This file is processed by scripts/decodetree.py 208058c831SPeter Maydell# 2145fda88eSRichard Henderson 2245fda88eSRichard Henderson&ri rd imm 233ce7b5eaSRichard Henderson&rri_sf rd rn imm sf 24*6201b2a4SPeter Maydell&i imm 2545fda88eSRichard Henderson 2645fda88eSRichard Henderson 2745fda88eSRichard Henderson### Data Processing - Immediate 2845fda88eSRichard Henderson 2945fda88eSRichard Henderson# PC-rel addressing 3045fda88eSRichard Henderson 3145fda88eSRichard Henderson%imm_pcrel 5:s19 29:2 3245fda88eSRichard Henderson@pcrel . .. ..... ................... rd:5 &ri imm=%imm_pcrel 3345fda88eSRichard Henderson 3445fda88eSRichard HendersonADR 0 .. 10000 ................... ..... @pcrel 3545fda88eSRichard HendersonADRP 1 .. 10000 ................... ..... @pcrel 363ce7b5eaSRichard Henderson 373ce7b5eaSRichard Henderson# Add/subtract (immediate) 383ce7b5eaSRichard Henderson 393ce7b5eaSRichard Henderson%imm12_sh12 10:12 !function=shl_12 403ce7b5eaSRichard Henderson@addsub_imm sf:1 .. ...... . imm:12 rn:5 rd:5 413ce7b5eaSRichard Henderson@addsub_imm12 sf:1 .. ...... . ............ rn:5 rd:5 imm=%imm12_sh12 423ce7b5eaSRichard Henderson 433ce7b5eaSRichard HendersonADD_i . 00 100010 0 ............ ..... ..... @addsub_imm 443ce7b5eaSRichard HendersonADD_i . 00 100010 1 ............ ..... ..... @addsub_imm12 453ce7b5eaSRichard HendersonADDS_i . 01 100010 0 ............ ..... ..... @addsub_imm 463ce7b5eaSRichard HendersonADDS_i . 01 100010 1 ............ ..... ..... @addsub_imm12 473ce7b5eaSRichard Henderson 483ce7b5eaSRichard HendersonSUB_i . 10 100010 0 ............ ..... ..... @addsub_imm 493ce7b5eaSRichard HendersonSUB_i . 10 100010 1 ............ ..... ..... @addsub_imm12 503ce7b5eaSRichard HendersonSUBS_i . 11 100010 0 ............ ..... ..... @addsub_imm 513ce7b5eaSRichard HendersonSUBS_i . 11 100010 1 ............ ..... ..... @addsub_imm12 5286002eccSRichard Henderson 5386002eccSRichard Henderson# Add/subtract (immediate with tags) 5486002eccSRichard Henderson 5586002eccSRichard Henderson&rri_tag rd rn uimm6 uimm4 5686002eccSRichard Henderson@addsub_imm_tag . .. ...... . uimm6:6 .. uimm4:4 rn:5 rd:5 &rri_tag 5786002eccSRichard Henderson 5886002eccSRichard HendersonADDG_i 1 00 100011 0 ...... 00 .... ..... ..... @addsub_imm_tag 5986002eccSRichard HendersonSUBG_i 1 10 100011 0 ...... 00 .... ..... ..... @addsub_imm_tag 608127f46aSRichard Henderson 618127f46aSRichard Henderson# Logical (immediate) 628127f46aSRichard Henderson 638127f46aSRichard Henderson&rri_log rd rn sf dbm 648127f46aSRichard Henderson@logic_imm_64 1 .. ...... dbm:13 rn:5 rd:5 &rri_log sf=1 658127f46aSRichard Henderson@logic_imm_32 0 .. ...... 0 dbm:12 rn:5 rd:5 &rri_log sf=0 668127f46aSRichard Henderson 678127f46aSRichard HendersonAND_i . 00 100100 . ...... ...... ..... ..... @logic_imm_64 688127f46aSRichard HendersonAND_i . 00 100100 . ...... ...... ..... ..... @logic_imm_32 698127f46aSRichard HendersonORR_i . 01 100100 . ...... ...... ..... ..... @logic_imm_64 708127f46aSRichard HendersonORR_i . 01 100100 . ...... ...... ..... ..... @logic_imm_32 718127f46aSRichard HendersonEOR_i . 10 100100 . ...... ...... ..... ..... @logic_imm_64 728127f46aSRichard HendersonEOR_i . 10 100100 . ...... ...... ..... ..... @logic_imm_32 738127f46aSRichard HendersonANDS_i . 11 100100 . ...... ...... ..... ..... @logic_imm_64 748127f46aSRichard HendersonANDS_i . 11 100100 . ...... ...... ..... ..... @logic_imm_32 75ee0daeb9SRichard Henderson 76ee0daeb9SRichard Henderson# Move wide (immediate) 77ee0daeb9SRichard Henderson 78ee0daeb9SRichard Henderson&movw rd sf imm hw 79ee0daeb9SRichard Henderson@movw_64 1 .. ...... hw:2 imm:16 rd:5 &movw sf=1 80ee0daeb9SRichard Henderson@movw_32 0 .. ...... 0 hw:1 imm:16 rd:5 &movw sf=0 81ee0daeb9SRichard Henderson 82ee0daeb9SRichard HendersonMOVN . 00 100101 .. ................ ..... @movw_64 83ee0daeb9SRichard HendersonMOVN . 00 100101 .. ................ ..... @movw_32 84ee0daeb9SRichard HendersonMOVZ . 10 100101 .. ................ ..... @movw_64 85ee0daeb9SRichard HendersonMOVZ . 10 100101 .. ................ ..... @movw_32 86ee0daeb9SRichard HendersonMOVK . 11 100101 .. ................ ..... @movw_64 87ee0daeb9SRichard HendersonMOVK . 11 100101 .. ................ ..... @movw_32 885e451ae6SRichard Henderson 895e451ae6SRichard Henderson# Bitfield 905e451ae6SRichard Henderson 915e451ae6SRichard Henderson&bitfield rd rn sf immr imms 925e451ae6SRichard Henderson@bitfield_64 1 .. ...... 1 immr:6 imms:6 rn:5 rd:5 &bitfield sf=1 935e451ae6SRichard Henderson@bitfield_32 0 .. ...... 0 0 immr:5 0 imms:5 rn:5 rd:5 &bitfield sf=0 945e451ae6SRichard Henderson 955e451ae6SRichard HendersonSBFM . 00 100110 . ...... ...... ..... ..... @bitfield_64 965e451ae6SRichard HendersonSBFM . 00 100110 . ...... ...... ..... ..... @bitfield_32 975e451ae6SRichard HendersonBFM . 01 100110 . ...... ...... ..... ..... @bitfield_64 985e451ae6SRichard HendersonBFM . 01 100110 . ...... ...... ..... ..... @bitfield_32 995e451ae6SRichard HendersonUBFM . 10 100110 . ...... ...... ..... ..... @bitfield_64 1005e451ae6SRichard HendersonUBFM . 10 100110 . ...... ...... ..... ..... @bitfield_32 1014240fb61SPeter Maydell 1024240fb61SPeter Maydell# Extract 1034240fb61SPeter Maydell 1044240fb61SPeter Maydell&extract rd rn rm imm sf 1054240fb61SPeter Maydell 1064240fb61SPeter MaydellEXTR 1 00 100111 1 0 rm:5 imm:6 rn:5 rd:5 &extract sf=1 1074240fb61SPeter MaydellEXTR 0 00 100111 0 0 rm:5 0 imm:5 rn:5 rd:5 &extract sf=0 108*6201b2a4SPeter Maydell 109*6201b2a4SPeter Maydell# Branches 110*6201b2a4SPeter Maydell 111*6201b2a4SPeter Maydell%imm26 0:s26 !function=times_4 112*6201b2a4SPeter Maydell@branch . ..... .......................... &i imm=%imm26 113*6201b2a4SPeter Maydell 114*6201b2a4SPeter MaydellB 0 00101 .......................... @branch 115*6201b2a4SPeter MaydellBL 1 00101 .......................... @branch 116