xref: /qemu/target/ppc/insn64.decode (revision 43d55fc23d9019d113a22e8fd304c82b15bc7148)
199082815SRichard Henderson#
299082815SRichard Henderson# Power ISA decode for 64-bit prefixed insns (opcode space 0 and 1)
399082815SRichard Henderson#
499082815SRichard Henderson# Copyright (c) 2021 Instituto de Pesquisas Eldorado (eldorado.org.br)
599082815SRichard Henderson#
699082815SRichard Henderson# This library is free software; you can redistribute it and/or
799082815SRichard Henderson# modify it under the terms of the GNU Lesser General Public
899082815SRichard Henderson# License as published by the Free Software Foundation; either
999082815SRichard Henderson# version 2.1 of the License, or (at your option) any later version.
1099082815SRichard Henderson#
1199082815SRichard Henderson# This library is distributed in the hope that it will be useful,
1299082815SRichard Henderson# but WITHOUT ANY WARRANTY; without even the implied warranty of
1399082815SRichard Henderson# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1499082815SRichard Henderson# Lesser General Public License for more details.
1599082815SRichard Henderson#
1699082815SRichard Henderson# You should have received a copy of the GNU Lesser General Public
1799082815SRichard Henderson# License along with this library; if not, see <http://www.gnu.org/licenses/>.
1899082815SRichard Henderson#
195e560864SRichard Henderson
205e560864SRichard Henderson# Format MLS:D and 8LS:D
215e560864SRichard Henderson&PLS_D          rt ra si:int64_t r:bool
225e560864SRichard Henderson%pls_si         32:s18 0:16
235e560864SRichard Henderson@PLS_D          ...... .. ... r:1 .. .................. \
245e560864SRichard Henderson                ...... rt:5 ra:5 ................       \
255e560864SRichard Henderson                &PLS_D si=%pls_si
265301d021SLucas Mateus Castro (alqotel)@8LS_D_TSX      ...... .. . .. r:1 .. .................. \
275301d021SLucas Mateus Castro (alqotel)                ..... rt:6 ra:5 ................         \
285301d021SLucas Mateus Castro (alqotel)                &PLS_D si=%pls_si
295e560864SRichard Henderson
30dcbf4831SLucas Mateus Castro (alqotel)%rt_tsxp        21:1 22:4 !function=times_2
31dcbf4831SLucas Mateus Castro (alqotel)@8LS_D_TSXP     ...... .. . .. r:1 .. .................. \
32dcbf4831SLucas Mateus Castro (alqotel)                ...... ..... ra:5 ................       \
33dcbf4831SLucas Mateus Castro (alqotel)                &PLS_D si=%pls_si rt=%rt_tsxp
34dcbf4831SLucas Mateus Castro (alqotel)
35aa4592faSBruno Larsen (billionai)# Format 8RR:D
36aa4592faSBruno Larsen (billionai)%8rr_si         32:s16 0:16
37aa4592faSBruno Larsen (billionai)%8rr_xt         16:1 21:5
38aa4592faSBruno Larsen (billionai)&8RR_D_IX       xt ix si
39aa4592faSBruno Larsen (billionai)@8RR_D_IX       ...... .. .... .. .. ................ \
40aa4592faSBruno Larsen (billionai)                ...... ..... ... ix:1 . ................ \
41aa4592faSBruno Larsen (billionai)                &8RR_D_IX si=%8rr_si xt=%8rr_xt
42ec10f73eSBruno Larsen (billionai)&8RR_D          xt si:int32_t
43ec10f73eSBruno Larsen (billionai)@8RR_D          ...... .. .... .. .. ................ \
44ec10f73eSBruno Larsen (billionai)                ...... ..... ....  . ................ \
45ec10f73eSBruno Larsen (billionai)                &8RR_D si=%8rr_si xt=%8rr_xt
46aa4592faSBruno Larsen (billionai)
47*43d55fc2SMatheus Ferst# Format 8RR:XX4
48*43d55fc2SMatheus Ferst%8rr_xx_xt      0:1 21:5
49*43d55fc2SMatheus Ferst%8rr_xx_xa      2:1 16:5
50*43d55fc2SMatheus Ferst%8rr_xx_xb      1:1 11:5
51*43d55fc2SMatheus Ferst%8rr_xx_xc      3:1  6:5
52*43d55fc2SMatheus Ferst&8RR_XX4        xt xa xb xc
53*43d55fc2SMatheus Ferst@8RR_XX4        ........ ........ ........ ........ \
54788c6399SMatheus Ferst                ...... ..... ..... ..... ..... .. .... \
55*43d55fc2SMatheus Ferst                &8RR_XX4 xt=%8rr_xx_xt xa=%8rr_xx_xa xb=%8rr_xx_xb xc=%8rr_xx_xc
56788c6399SMatheus Ferst
5700e03265SRichard Henderson### Fixed-Point Load Instructions
5800e03265SRichard Henderson
5900e03265SRichard HendersonPLBZ            000001 10 0--.-- .................. \
6000e03265SRichard Henderson                100010 ..... ..... ................     @PLS_D
6100e03265SRichard HendersonPLHZ            000001 10 0--.-- .................. \
6200e03265SRichard Henderson                101000 ..... ..... ................     @PLS_D
6300e03265SRichard HendersonPLHA            000001 10 0--.-- .................. \
6400e03265SRichard Henderson                101010 ..... ..... ................     @PLS_D
6500e03265SRichard HendersonPLWZ            000001 10 0--.-- .................. \
6600e03265SRichard Henderson                100000 ..... ..... ................     @PLS_D
6700e03265SRichard HendersonPLWA            000001 00 0--.-- .................. \
6800e03265SRichard Henderson                101001 ..... ..... ................     @PLS_D
6900e03265SRichard HendersonPLD             000001 00 0--.-- .................. \
7000e03265SRichard Henderson                111001 ..... ..... ................     @PLS_D
7149de0648SMatheus FerstPLQ             000001 00 0--.-- .................. \
7249de0648SMatheus Ferst                111000 ..... ..... ................     @PLS_D
7300e03265SRichard Henderson
74b0f7bebcSRichard Henderson### Fixed-Point Store Instructions
75b0f7bebcSRichard Henderson
76b0f7bebcSRichard HendersonPSTW            000001 10 0--.-- .................. \
77b0f7bebcSRichard Henderson                100100 ..... ..... ................     @PLS_D
78b0f7bebcSRichard HendersonPSTB            000001 10 0--.-- .................. \
79b0f7bebcSRichard Henderson                100110 ..... ..... ................     @PLS_D
80b0f7bebcSRichard HendersonPSTH            000001 10 0--.-- .................. \
81b0f7bebcSRichard Henderson                101100 ..... ..... ................     @PLS_D
82b0f7bebcSRichard Henderson
83b0f7bebcSRichard HendersonPSTD            000001 00 0--.-- .................. \
84b0f7bebcSRichard Henderson                111101 ..... ..... ................     @PLS_D
8549de0648SMatheus FerstPSTQ            000001 00 0--.-- .................. \
8649de0648SMatheus Ferst                111100 ..... ..... ................     @PLS_D
87b0f7bebcSRichard Henderson
885e560864SRichard Henderson### Fixed-Point Arithmetic Instructions
895e560864SRichard Henderson
905e560864SRichard HendersonPADDI           000001 10 0--.-- ..................     \
915e560864SRichard Henderson                001110 ..... ..... ................     @PLS_D
920a11bb7aSRichard Henderson
93dcb4e5b7SFernando Eckhardt Valle### Float-Point Load and Store Instructions
94dcb4e5b7SFernando Eckhardt Valle
95dcb4e5b7SFernando Eckhardt VallePLFS            000001 10 0--.-- .................. \
96dcb4e5b7SFernando Eckhardt Valle                110000 ..... ..... ................     @PLS_D
97dcb4e5b7SFernando Eckhardt VallePLFD            000001 10 0--.-- .................. \
98dcb4e5b7SFernando Eckhardt Valle                110010 ..... ..... ................     @PLS_D
99dcb4e5b7SFernando Eckhardt VallePSTFS           000001 10 0--.-- .................. \
100dcb4e5b7SFernando Eckhardt Valle                110100 ..... ..... ................     @PLS_D
101dcb4e5b7SFernando Eckhardt VallePSTFD           000001 10 0--.-- .................. \
102dcb4e5b7SFernando Eckhardt Valle                110110 ..... ..... ................     @PLS_D
103dcb4e5b7SFernando Eckhardt Valle
1040a11bb7aSRichard Henderson### Prefixed No-operation Instruction
1050a11bb7aSRichard Henderson
1060a11bb7aSRichard Henderson@PNOP           000001 11 0000-- 000000000000000000     \
1070a11bb7aSRichard Henderson                ................................
1080a11bb7aSRichard Henderson
1090a11bb7aSRichard Henderson{
1100a11bb7aSRichard Henderson  [
1110a11bb7aSRichard Henderson    ## Invalid suffixes: Branch instruction
1120a11bb7aSRichard Henderson    # bc[l][a]
1130a11bb7aSRichard Henderson    INVALID     ................................        \
1140a11bb7aSRichard Henderson                010000--------------------------        @PNOP
1150a11bb7aSRichard Henderson    # b[l][a]
1160a11bb7aSRichard Henderson    INVALID     ................................        \
1170a11bb7aSRichard Henderson                010010--------------------------        @PNOP
1180a11bb7aSRichard Henderson    # bclr[l]
1190a11bb7aSRichard Henderson    INVALID     ................................        \
1200a11bb7aSRichard Henderson                010011---------------0000010000-        @PNOP
1210a11bb7aSRichard Henderson    # bcctr[l]
1220a11bb7aSRichard Henderson    INVALID     ................................        \
1230a11bb7aSRichard Henderson                010011---------------1000010000-        @PNOP
1240a11bb7aSRichard Henderson    # bctar[l]
1250a11bb7aSRichard Henderson    INVALID     ................................        \
1260a11bb7aSRichard Henderson                010011---------------1000110000-        @PNOP
1270a11bb7aSRichard Henderson
1280a11bb7aSRichard Henderson    ## Invalid suffixes: rfebb
1290a11bb7aSRichard Henderson    INVALID     ................................        \
1300a11bb7aSRichard Henderson                010011---------------0010010010-        @PNOP
1310a11bb7aSRichard Henderson
1320a11bb7aSRichard Henderson    ## Invalid suffixes: context synchronizing other than isync
1330a11bb7aSRichard Henderson    # sc
1340a11bb7aSRichard Henderson    INVALID     ................................        \
1350a11bb7aSRichard Henderson                010001------------------------1-        @PNOP
1360a11bb7aSRichard Henderson    # scv
1370a11bb7aSRichard Henderson    INVALID     ................................        \
1380a11bb7aSRichard Henderson                010001------------------------01        @PNOP
1390a11bb7aSRichard Henderson    # rfscv
1400a11bb7aSRichard Henderson    INVALID     ................................        \
1410a11bb7aSRichard Henderson                010011---------------0001010010-        @PNOP
1420a11bb7aSRichard Henderson    # rfid
1430a11bb7aSRichard Henderson    INVALID     ................................        \
1440a11bb7aSRichard Henderson                010011---------------0000010010-        @PNOP
1450a11bb7aSRichard Henderson    # hrfid
1460a11bb7aSRichard Henderson    INVALID     ................................        \
1470a11bb7aSRichard Henderson                010011---------------0100010010-        @PNOP
1480a11bb7aSRichard Henderson    # urfid
1490a11bb7aSRichard Henderson    INVALID     ................................        \
1500a11bb7aSRichard Henderson                010011---------------0100110010-        @PNOP
1510a11bb7aSRichard Henderson    # stop
1520a11bb7aSRichard Henderson    INVALID     ................................        \
1530a11bb7aSRichard Henderson                010011---------------0101110010-        @PNOP
1540a11bb7aSRichard Henderson    # mtmsr w/ L=0
1550a11bb7aSRichard Henderson    INVALID     ................................        \
1560a11bb7aSRichard Henderson                011111---------0-----0010010010-        @PNOP
1570a11bb7aSRichard Henderson    # mtmsrd w/ L=0
1580a11bb7aSRichard Henderson    INVALID     ................................        \
1590a11bb7aSRichard Henderson                011111---------0-----0010110010-        @PNOP
1600a11bb7aSRichard Henderson
1610a11bb7aSRichard Henderson    ## Invalid suffixes: Service Processor Attention
1620a11bb7aSRichard Henderson    INVALID     ................................        \
1630a11bb7aSRichard Henderson                000000----------------100000000-        @PNOP
1640a11bb7aSRichard Henderson  ]
1650a11bb7aSRichard Henderson
1660a11bb7aSRichard Henderson  ## Valid suffixes
1670a11bb7aSRichard Henderson  PNOP          ................................        \
1680a11bb7aSRichard Henderson                --------------------------------        @PNOP
1690a11bb7aSRichard Henderson}
1705301d021SLucas Mateus Castro (alqotel)
1715301d021SLucas Mateus Castro (alqotel)### VSX instructions
1725301d021SLucas Mateus Castro (alqotel)
1735301d021SLucas Mateus Castro (alqotel)PLXV            000001 00 0--.-- .................. \
1745301d021SLucas Mateus Castro (alqotel)                11001 ...... ..... ................     @8LS_D_TSX
1755301d021SLucas Mateus Castro (alqotel)PSTXV           000001 00 0--.-- .................. \
1765301d021SLucas Mateus Castro (alqotel)                11011 ...... ..... ................     @8LS_D_TSX
177dcbf4831SLucas Mateus Castro (alqotel)PLXVP           000001 00 0--.-- .................. \
178dcbf4831SLucas Mateus Castro (alqotel)                111010 ..... ..... ................     @8LS_D_TSXP
179dcbf4831SLucas Mateus Castro (alqotel)PSTXVP          000001 00 0--.-- .................. \
180dcbf4831SLucas Mateus Castro (alqotel)                111110 ..... ..... ................     @8LS_D_TSXP
181aa4592faSBruno Larsen (billionai)
182236a6285SBruno Larsen (billionai)XXSPLTIDP       000001 01 0000 -- -- ................ \
183236a6285SBruno Larsen (billionai)                100000 ..... 0010 . ................    @8RR_D
184ec10f73eSBruno Larsen (billionai)XXSPLTIW        000001 01 0000 -- -- ................ \
185ec10f73eSBruno Larsen (billionai)                100000 ..... 0011 . ................    @8RR_D
186aa4592faSBruno Larsen (billionai)XXSPLTI32DX     000001 01 0000 -- -- ................ \
187aa4592faSBruno Larsen (billionai)                100000 ..... 000 .. ................    @8RR_D_IX
188788c6399SMatheus Ferst
189788c6399SMatheus FerstXXBLENDVD       000001 01 0000 -- ------------------ \
190*43d55fc2SMatheus Ferst                100001 ..... ..... ..... ..... 11 ....  @8RR_XX4
191788c6399SMatheus FerstXXBLENDVW       000001 01 0000 -- ------------------ \
192*43d55fc2SMatheus Ferst                100001 ..... ..... ..... ..... 10 ....  @8RR_XX4
193788c6399SMatheus FerstXXBLENDVH       000001 01 0000 -- ------------------ \
194*43d55fc2SMatheus Ferst                100001 ..... ..... ..... ..... 01 ....  @8RR_XX4
195788c6399SMatheus FerstXXBLENDVB       000001 01 0000 -- ------------------ \
196*43d55fc2SMatheus Ferst                100001 ..... ..... ..... ..... 00 ....  @8RR_XX4
197