xref: /qemu/target/ppc/insn64.decode (revision 20e2d04e66cd69f6ffb1ca9509b51a7668953459)
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)
357eec8cbbSLeandro Lupori@8LS_D          ...... .. . .. r:1 .. .................. \
367eec8cbbSLeandro Lupori                ...... rt:5 ra:5 ................        \
377eec8cbbSLeandro Lupori                &PLS_D si=%pls_si
387eec8cbbSLeandro Lupori
39aa4592faSBruno Larsen (billionai)# Format 8RR:D
40aa4592faSBruno Larsen (billionai)%8rr_si         32:s16 0:16
41aa4592faSBruno Larsen (billionai)%8rr_xt         16:1 21:5
42aa4592faSBruno Larsen (billionai)&8RR_D_IX       xt ix si
43aa4592faSBruno Larsen (billionai)@8RR_D_IX       ...... .. .... .. .. ................ \
44aa4592faSBruno Larsen (billionai)                ...... ..... ... ix:1 . ................ \
45aa4592faSBruno Larsen (billionai)                &8RR_D_IX si=%8rr_si xt=%8rr_xt
46ec10f73eSBruno Larsen (billionai)&8RR_D          xt si:int32_t
47ec10f73eSBruno Larsen (billionai)@8RR_D          ...... .. .... .. .. ................ \
48ec10f73eSBruno Larsen (billionai)                ...... ..... ....  . ................ \
49ec10f73eSBruno Larsen (billionai)                &8RR_D si=%8rr_si xt=%8rr_xt
50aa4592faSBruno Larsen (billionai)
5143d55fc2SMatheus Ferst# Format 8RR:XX4
5243d55fc2SMatheus Ferst%8rr_xx_xt      0:1 21:5
5343d55fc2SMatheus Ferst%8rr_xx_xa      2:1 16:5
5443d55fc2SMatheus Ferst%8rr_xx_xb      1:1 11:5
5543d55fc2SMatheus Ferst%8rr_xx_xc      3:1  6:5
5643d55fc2SMatheus Ferst&8RR_XX4        xt xa xb xc
5743d55fc2SMatheus Ferst@8RR_XX4        ........ ........ ........ ........ \
58788c6399SMatheus Ferst                ...... ..... ..... ..... ..... .. .... \
5943d55fc2SMatheus Ferst                &8RR_XX4 xt=%8rr_xx_xt xa=%8rr_xx_xa xb=%8rr_xx_xb xc=%8rr_xx_xc
60788c6399SMatheus Ferst
611015fcabSMatheus Ferst&8RR_XX4_imm    xt xa xb xc imm
621015fcabSMatheus Ferst@8RR_XX4_imm    ........ ........ ........ imm:8 \
631015fcabSMatheus Ferst                ...... ..... ..... ..... ..... .. .... \
641015fcabSMatheus Ferst                &8RR_XX4_imm xt=%8rr_xx_xt xa=%8rr_xx_xa xb=%8rr_xx_xb xc=%8rr_xx_xc
651015fcabSMatheus Ferst
6641c2877fSMatheus Ferst&8RR_XX4_uim3   xt xa xb xc uim3
6741c2877fSMatheus Ferst@8RR_XX4_uim3   ...... .. .... .. ............... uim3:3 \
6841c2877fSMatheus Ferst                ...... ..... ..... ..... ..... .. ....   \
6941c2877fSMatheus Ferst                &8RR_XX4_uim3 xt=%8rr_xx_xt xa=%8rr_xx_xa xb=%8rr_xx_xb xc=%8rr_xx_xc
7041c2877fSMatheus Ferst
7100e03265SRichard Henderson### Fixed-Point Load Instructions
7200e03265SRichard Henderson
7300e03265SRichard HendersonPLBZ            000001 10 0--.-- .................. \
7400e03265SRichard Henderson                100010 ..... ..... ................     @PLS_D
7500e03265SRichard HendersonPLHZ            000001 10 0--.-- .................. \
7600e03265SRichard Henderson                101000 ..... ..... ................     @PLS_D
7700e03265SRichard HendersonPLHA            000001 10 0--.-- .................. \
7800e03265SRichard Henderson                101010 ..... ..... ................     @PLS_D
7900e03265SRichard HendersonPLWZ            000001 10 0--.-- .................. \
8000e03265SRichard Henderson                100000 ..... ..... ................     @PLS_D
8100e03265SRichard HendersonPLWA            000001 00 0--.-- .................. \
8200e03265SRichard Henderson                101001 ..... ..... ................     @PLS_D
8300e03265SRichard HendersonPLD             000001 00 0--.-- .................. \
8400e03265SRichard Henderson                111001 ..... ..... ................     @PLS_D
8549de0648SMatheus FerstPLQ             000001 00 0--.-- .................. \
8649de0648SMatheus Ferst                111000 ..... ..... ................     @PLS_D
8700e03265SRichard Henderson
88b0f7bebcSRichard Henderson### Fixed-Point Store Instructions
89b0f7bebcSRichard Henderson
90b0f7bebcSRichard HendersonPSTW            000001 10 0--.-- .................. \
91b0f7bebcSRichard Henderson                100100 ..... ..... ................     @PLS_D
92b0f7bebcSRichard HendersonPSTB            000001 10 0--.-- .................. \
93b0f7bebcSRichard Henderson                100110 ..... ..... ................     @PLS_D
94b0f7bebcSRichard HendersonPSTH            000001 10 0--.-- .................. \
95b0f7bebcSRichard Henderson                101100 ..... ..... ................     @PLS_D
96b0f7bebcSRichard Henderson
97b0f7bebcSRichard HendersonPSTD            000001 00 0--.-- .................. \
98b0f7bebcSRichard Henderson                111101 ..... ..... ................     @PLS_D
9949de0648SMatheus FerstPSTQ            000001 00 0--.-- .................. \
10049de0648SMatheus Ferst                111100 ..... ..... ................     @PLS_D
101b0f7bebcSRichard Henderson
1025e560864SRichard Henderson### Fixed-Point Arithmetic Instructions
1035e560864SRichard Henderson
1045e560864SRichard HendersonPADDI           000001 10 0--.-- ..................     \
1055e560864SRichard Henderson                001110 ..... ..... ................     @PLS_D
1060a11bb7aSRichard Henderson
107dcb4e5b7SFernando Eckhardt Valle### Float-Point Load and Store Instructions
108dcb4e5b7SFernando Eckhardt Valle
109dcb4e5b7SFernando Eckhardt VallePLFS            000001 10 0--.-- .................. \
110dcb4e5b7SFernando Eckhardt Valle                110000 ..... ..... ................     @PLS_D
111dcb4e5b7SFernando Eckhardt VallePLFD            000001 10 0--.-- .................. \
112dcb4e5b7SFernando Eckhardt Valle                110010 ..... ..... ................     @PLS_D
113dcb4e5b7SFernando Eckhardt VallePSTFS           000001 10 0--.-- .................. \
114dcb4e5b7SFernando Eckhardt Valle                110100 ..... ..... ................     @PLS_D
115dcb4e5b7SFernando Eckhardt VallePSTFD           000001 10 0--.-- .................. \
116dcb4e5b7SFernando Eckhardt Valle                110110 ..... ..... ................     @PLS_D
117dcb4e5b7SFernando Eckhardt Valle
1180a11bb7aSRichard Henderson### Prefixed No-operation Instruction
1190a11bb7aSRichard Henderson
1200a11bb7aSRichard Henderson@PNOP           000001 11 0000-- 000000000000000000     \
1210a11bb7aSRichard Henderson                ................................
1220a11bb7aSRichard Henderson
1230a11bb7aSRichard Henderson{
1240a11bb7aSRichard Henderson  [
1250a11bb7aSRichard Henderson    ## Invalid suffixes: Branch instruction
1260a11bb7aSRichard Henderson    # bc[l][a]
1270a11bb7aSRichard Henderson    INVALID     ................................        \
1280a11bb7aSRichard Henderson                010000--------------------------        @PNOP
1290a11bb7aSRichard Henderson    # b[l][a]
1300a11bb7aSRichard Henderson    INVALID     ................................        \
1310a11bb7aSRichard Henderson                010010--------------------------        @PNOP
1320a11bb7aSRichard Henderson    # bclr[l]
1330a11bb7aSRichard Henderson    INVALID     ................................        \
1340a11bb7aSRichard Henderson                010011---------------0000010000-        @PNOP
1350a11bb7aSRichard Henderson    # bcctr[l]
1360a11bb7aSRichard Henderson    INVALID     ................................        \
1370a11bb7aSRichard Henderson                010011---------------1000010000-        @PNOP
1380a11bb7aSRichard Henderson    # bctar[l]
1390a11bb7aSRichard Henderson    INVALID     ................................        \
1400a11bb7aSRichard Henderson                010011---------------1000110000-        @PNOP
1410a11bb7aSRichard Henderson
1420a11bb7aSRichard Henderson    ## Invalid suffixes: rfebb
1430a11bb7aSRichard Henderson    INVALID     ................................        \
1440a11bb7aSRichard Henderson                010011---------------0010010010-        @PNOP
1450a11bb7aSRichard Henderson
1460a11bb7aSRichard Henderson    ## Invalid suffixes: context synchronizing other than isync
1470a11bb7aSRichard Henderson    # sc
1480a11bb7aSRichard Henderson    INVALID     ................................        \
1490a11bb7aSRichard Henderson                010001------------------------1-        @PNOP
1500a11bb7aSRichard Henderson    # scv
1510a11bb7aSRichard Henderson    INVALID     ................................        \
1520a11bb7aSRichard Henderson                010001------------------------01        @PNOP
1530a11bb7aSRichard Henderson    # rfscv
1540a11bb7aSRichard Henderson    INVALID     ................................        \
1550a11bb7aSRichard Henderson                010011---------------0001010010-        @PNOP
1560a11bb7aSRichard Henderson    # rfid
1570a11bb7aSRichard Henderson    INVALID     ................................        \
1580a11bb7aSRichard Henderson                010011---------------0000010010-        @PNOP
1590a11bb7aSRichard Henderson    # hrfid
1600a11bb7aSRichard Henderson    INVALID     ................................        \
1610a11bb7aSRichard Henderson                010011---------------0100010010-        @PNOP
1620a11bb7aSRichard Henderson    # urfid
1630a11bb7aSRichard Henderson    INVALID     ................................        \
1640a11bb7aSRichard Henderson                010011---------------0100110010-        @PNOP
1650a11bb7aSRichard Henderson    # stop
1660a11bb7aSRichard Henderson    INVALID     ................................        \
1670a11bb7aSRichard Henderson                010011---------------0101110010-        @PNOP
1680a11bb7aSRichard Henderson    # mtmsr w/ L=0
1690a11bb7aSRichard Henderson    INVALID     ................................        \
1700a11bb7aSRichard Henderson                011111---------0-----0010010010-        @PNOP
1710a11bb7aSRichard Henderson    # mtmsrd w/ L=0
1720a11bb7aSRichard Henderson    INVALID     ................................        \
1730a11bb7aSRichard Henderson                011111---------0-----0010110010-        @PNOP
1740a11bb7aSRichard Henderson
1750a11bb7aSRichard Henderson    ## Invalid suffixes: Service Processor Attention
1760a11bb7aSRichard Henderson    INVALID     ................................        \
1770a11bb7aSRichard Henderson                000000----------------100000000-        @PNOP
1780a11bb7aSRichard Henderson  ]
1790a11bb7aSRichard Henderson
1800a11bb7aSRichard Henderson  ## Valid suffixes
1810a11bb7aSRichard Henderson  PNOP          ................................        \
1820a11bb7aSRichard Henderson                --------------------------------        @PNOP
1830a11bb7aSRichard Henderson}
1845301d021SLucas Mateus Castro (alqotel)
1855301d021SLucas Mateus Castro (alqotel)### VSX instructions
1865301d021SLucas Mateus Castro (alqotel)
1877eec8cbbSLeandro LuporiPLXSD           000001 00 0--.-- .................. \
1887eec8cbbSLeandro Lupori                101010 ..... ..... ................     @8LS_D
1897eec8cbbSLeandro Lupori
1907eec8cbbSLeandro LuporiPSTXSD          000001 00 0--.-- .................. \
1917eec8cbbSLeandro Lupori                101110 ..... ..... ................     @8LS_D
1927eec8cbbSLeandro Lupori
193*20e2d04eSLeandro LuporiPLXSSP          000001 00 0--.-- .................. \
194*20e2d04eSLeandro Lupori                101011 ..... ..... ................     @8LS_D
195*20e2d04eSLeandro Lupori
196*20e2d04eSLeandro LuporiPSTXSSP         000001 00 0--.-- .................. \
197*20e2d04eSLeandro Lupori                101111 ..... ..... ................     @8LS_D
198*20e2d04eSLeandro Lupori
1995301d021SLucas Mateus Castro (alqotel)PLXV            000001 00 0--.-- .................. \
2005301d021SLucas Mateus Castro (alqotel)                11001 ...... ..... ................     @8LS_D_TSX
2015301d021SLucas Mateus Castro (alqotel)PSTXV           000001 00 0--.-- .................. \
2025301d021SLucas Mateus Castro (alqotel)                11011 ...... ..... ................     @8LS_D_TSX
203dcbf4831SLucas Mateus Castro (alqotel)PLXVP           000001 00 0--.-- .................. \
204dcbf4831SLucas Mateus Castro (alqotel)                111010 ..... ..... ................     @8LS_D_TSXP
205dcbf4831SLucas Mateus Castro (alqotel)PSTXVP          000001 00 0--.-- .................. \
206dcbf4831SLucas Mateus Castro (alqotel)                111110 ..... ..... ................     @8LS_D_TSXP
207aa4592faSBruno Larsen (billionai)
2081015fcabSMatheus FerstXXEVAL          000001 01 0000 -- ---------- ........ \
2091015fcabSMatheus Ferst                100010 ..... ..... ..... ..... 01 ....  @8RR_XX4_imm
2101015fcabSMatheus Ferst
211236a6285SBruno Larsen (billionai)XXSPLTIDP       000001 01 0000 -- -- ................ \
212236a6285SBruno Larsen (billionai)                100000 ..... 0010 . ................    @8RR_D
213ec10f73eSBruno Larsen (billionai)XXSPLTIW        000001 01 0000 -- -- ................ \
214ec10f73eSBruno Larsen (billionai)                100000 ..... 0011 . ................    @8RR_D
215aa4592faSBruno Larsen (billionai)XXSPLTI32DX     000001 01 0000 -- -- ................ \
216aa4592faSBruno Larsen (billionai)                100000 ..... 000 .. ................    @8RR_D_IX
217788c6399SMatheus Ferst
218788c6399SMatheus FerstXXBLENDVD       000001 01 0000 -- ------------------ \
21943d55fc2SMatheus Ferst                100001 ..... ..... ..... ..... 11 ....  @8RR_XX4
220788c6399SMatheus FerstXXBLENDVW       000001 01 0000 -- ------------------ \
22143d55fc2SMatheus Ferst                100001 ..... ..... ..... ..... 10 ....  @8RR_XX4
222788c6399SMatheus FerstXXBLENDVH       000001 01 0000 -- ------------------ \
22343d55fc2SMatheus Ferst                100001 ..... ..... ..... ..... 01 ....  @8RR_XX4
224788c6399SMatheus FerstXXBLENDVB       000001 01 0000 -- ------------------ \
22543d55fc2SMatheus Ferst                100001 ..... ..... ..... ..... 00 ....  @8RR_XX4
22641c2877fSMatheus Ferst
22741c2877fSMatheus FerstXXPERMX         000001 01 0000 -- --------------- ... \
22841c2877fSMatheus Ferst                100010 ..... ..... ..... ..... 00 ....  @8RR_XX4_uim3
229