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 2445fda88eSRichard Henderson 2545fda88eSRichard Henderson 2645fda88eSRichard Henderson### Data Processing - Immediate 2745fda88eSRichard Henderson 2845fda88eSRichard Henderson# PC-rel addressing 2945fda88eSRichard Henderson 3045fda88eSRichard Henderson%imm_pcrel 5:s19 29:2 3145fda88eSRichard Henderson@pcrel . .. ..... ................... rd:5 &ri imm=%imm_pcrel 3245fda88eSRichard Henderson 3345fda88eSRichard HendersonADR 0 .. 10000 ................... ..... @pcrel 3445fda88eSRichard HendersonADRP 1 .. 10000 ................... ..... @pcrel 353ce7b5eaSRichard Henderson 363ce7b5eaSRichard Henderson# Add/subtract (immediate) 373ce7b5eaSRichard Henderson 383ce7b5eaSRichard Henderson%imm12_sh12 10:12 !function=shl_12 393ce7b5eaSRichard Henderson@addsub_imm sf:1 .. ...... . imm:12 rn:5 rd:5 403ce7b5eaSRichard Henderson@addsub_imm12 sf:1 .. ...... . ............ rn:5 rd:5 imm=%imm12_sh12 413ce7b5eaSRichard Henderson 423ce7b5eaSRichard HendersonADD_i . 00 100010 0 ............ ..... ..... @addsub_imm 433ce7b5eaSRichard HendersonADD_i . 00 100010 1 ............ ..... ..... @addsub_imm12 443ce7b5eaSRichard HendersonADDS_i . 01 100010 0 ............ ..... ..... @addsub_imm 453ce7b5eaSRichard HendersonADDS_i . 01 100010 1 ............ ..... ..... @addsub_imm12 463ce7b5eaSRichard Henderson 473ce7b5eaSRichard HendersonSUB_i . 10 100010 0 ............ ..... ..... @addsub_imm 483ce7b5eaSRichard HendersonSUB_i . 10 100010 1 ............ ..... ..... @addsub_imm12 493ce7b5eaSRichard HendersonSUBS_i . 11 100010 0 ............ ..... ..... @addsub_imm 503ce7b5eaSRichard HendersonSUBS_i . 11 100010 1 ............ ..... ..... @addsub_imm12 5186002eccSRichard Henderson 5286002eccSRichard Henderson# Add/subtract (immediate with tags) 5386002eccSRichard Henderson 5486002eccSRichard Henderson&rri_tag rd rn uimm6 uimm4 5586002eccSRichard Henderson@addsub_imm_tag . .. ...... . uimm6:6 .. uimm4:4 rn:5 rd:5 &rri_tag 5686002eccSRichard Henderson 5786002eccSRichard HendersonADDG_i 1 00 100011 0 ...... 00 .... ..... ..... @addsub_imm_tag 5886002eccSRichard HendersonSUBG_i 1 10 100011 0 ...... 00 .... ..... ..... @addsub_imm_tag 598127f46aSRichard Henderson 608127f46aSRichard Henderson# Logical (immediate) 618127f46aSRichard Henderson 628127f46aSRichard Henderson&rri_log rd rn sf dbm 638127f46aSRichard Henderson@logic_imm_64 1 .. ...... dbm:13 rn:5 rd:5 &rri_log sf=1 648127f46aSRichard Henderson@logic_imm_32 0 .. ...... 0 dbm:12 rn:5 rd:5 &rri_log sf=0 658127f46aSRichard Henderson 668127f46aSRichard HendersonAND_i . 00 100100 . ...... ...... ..... ..... @logic_imm_64 678127f46aSRichard HendersonAND_i . 00 100100 . ...... ...... ..... ..... @logic_imm_32 688127f46aSRichard HendersonORR_i . 01 100100 . ...... ...... ..... ..... @logic_imm_64 698127f46aSRichard HendersonORR_i . 01 100100 . ...... ...... ..... ..... @logic_imm_32 708127f46aSRichard HendersonEOR_i . 10 100100 . ...... ...... ..... ..... @logic_imm_64 718127f46aSRichard HendersonEOR_i . 10 100100 . ...... ...... ..... ..... @logic_imm_32 728127f46aSRichard HendersonANDS_i . 11 100100 . ...... ...... ..... ..... @logic_imm_64 738127f46aSRichard HendersonANDS_i . 11 100100 . ...... ...... ..... ..... @logic_imm_32 74ee0daeb9SRichard Henderson 75ee0daeb9SRichard Henderson# Move wide (immediate) 76ee0daeb9SRichard Henderson 77ee0daeb9SRichard Henderson&movw rd sf imm hw 78ee0daeb9SRichard Henderson@movw_64 1 .. ...... hw:2 imm:16 rd:5 &movw sf=1 79ee0daeb9SRichard Henderson@movw_32 0 .. ...... 0 hw:1 imm:16 rd:5 &movw sf=0 80ee0daeb9SRichard Henderson 81ee0daeb9SRichard HendersonMOVN . 00 100101 .. ................ ..... @movw_64 82ee0daeb9SRichard HendersonMOVN . 00 100101 .. ................ ..... @movw_32 83ee0daeb9SRichard HendersonMOVZ . 10 100101 .. ................ ..... @movw_64 84ee0daeb9SRichard HendersonMOVZ . 10 100101 .. ................ ..... @movw_32 85ee0daeb9SRichard HendersonMOVK . 11 100101 .. ................ ..... @movw_64 86ee0daeb9SRichard HendersonMOVK . 11 100101 .. ................ ..... @movw_32 875e451ae6SRichard Henderson 885e451ae6SRichard Henderson# Bitfield 895e451ae6SRichard Henderson 905e451ae6SRichard Henderson&bitfield rd rn sf immr imms 915e451ae6SRichard Henderson@bitfield_64 1 .. ...... 1 immr:6 imms:6 rn:5 rd:5 &bitfield sf=1 925e451ae6SRichard Henderson@bitfield_32 0 .. ...... 0 0 immr:5 0 imms:5 rn:5 rd:5 &bitfield sf=0 935e451ae6SRichard Henderson 945e451ae6SRichard HendersonSBFM . 00 100110 . ...... ...... ..... ..... @bitfield_64 955e451ae6SRichard HendersonSBFM . 00 100110 . ...... ...... ..... ..... @bitfield_32 965e451ae6SRichard HendersonBFM . 01 100110 . ...... ...... ..... ..... @bitfield_64 975e451ae6SRichard HendersonBFM . 01 100110 . ...... ...... ..... ..... @bitfield_32 985e451ae6SRichard HendersonUBFM . 10 100110 . ...... ...... ..... ..... @bitfield_64 995e451ae6SRichard HendersonUBFM . 10 100110 . ...... ...... ..... ..... @bitfield_32 100*4240fb61SPeter Maydell 101*4240fb61SPeter Maydell# Extract 102*4240fb61SPeter Maydell 103*4240fb61SPeter Maydell&extract rd rn rm imm sf 104*4240fb61SPeter Maydell 105*4240fb61SPeter MaydellEXTR 1 00 100111 1 0 rm:5 imm:6 rn:5 rd:5 &extract sf=1 106*4240fb61SPeter MaydellEXTR 0 00 100111 0 0 rm:5 0 imm:5 rn:5 rd:5 &extract sf=0 107