xref: /openbmc/qemu/target/arm/tcg/a64.decode (revision 4240fb61)
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