xref: /openbmc/qemu/target/ppc/insn64.decode (revision ad1a706f)
1#
2# Power ISA decode for 64-bit prefixed insns (opcode space 0 and 1)
3#
4# Copyright (c) 2021 Instituto de Pesquisas Eldorado (eldorado.org.br)
5#
6# This library is free software; you can redistribute it and/or
7# modify it under the terms of the GNU Lesser General Public
8# License as published by the Free Software Foundation; either
9# version 2.1 of the License, or (at your option) any later version.
10#
11# This library is distributed in the hope that it will be useful,
12# but WITHOUT ANY WARRANTY; without even the implied warranty of
13# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14# Lesser General Public License for more details.
15#
16# You should have received a copy of the GNU Lesser General Public
17# License along with this library; if not, see <http://www.gnu.org/licenses/>.
18#
19
20# Format MLS:D and 8LS:D
21&PLS_D          rt ra si:int64_t r:bool
22%pls_si         32:s18 0:16
23@PLS_D          ...... .. ... r:1 .. .................. \
24                ...... rt:5 ra:5 ................       \
25                &PLS_D si=%pls_si
26
27### Fixed-Point Load Instructions
28
29PLBZ            000001 10 0--.-- .................. \
30                100010 ..... ..... ................     @PLS_D
31PLHZ            000001 10 0--.-- .................. \
32                101000 ..... ..... ................     @PLS_D
33PLHA            000001 10 0--.-- .................. \
34                101010 ..... ..... ................     @PLS_D
35PLWZ            000001 10 0--.-- .................. \
36                100000 ..... ..... ................     @PLS_D
37PLWA            000001 00 0--.-- .................. \
38                101001 ..... ..... ................     @PLS_D
39PLD             000001 00 0--.-- .................. \
40                111001 ..... ..... ................     @PLS_D
41
42### Fixed-Point Store Instructions
43
44PSTW            000001 10 0--.-- .................. \
45                100100 ..... ..... ................     @PLS_D
46PSTB            000001 10 0--.-- .................. \
47                100110 ..... ..... ................     @PLS_D
48PSTH            000001 10 0--.-- .................. \
49                101100 ..... ..... ................     @PLS_D
50
51PSTD            000001 00 0--.-- .................. \
52                111101 ..... ..... ................     @PLS_D
53
54### Fixed-Point Arithmetic Instructions
55
56PADDI           000001 10 0--.-- ..................     \
57                001110 ..... ..... ................     @PLS_D
58
59### Prefixed No-operation Instruction
60
61@PNOP           000001 11 0000-- 000000000000000000     \
62                ................................
63
64{
65  [
66    ## Invalid suffixes: Branch instruction
67    # bc[l][a]
68    INVALID     ................................        \
69                010000--------------------------        @PNOP
70    # b[l][a]
71    INVALID     ................................        \
72                010010--------------------------        @PNOP
73    # bclr[l]
74    INVALID     ................................        \
75                010011---------------0000010000-        @PNOP
76    # bcctr[l]
77    INVALID     ................................        \
78                010011---------------1000010000-        @PNOP
79    # bctar[l]
80    INVALID     ................................        \
81                010011---------------1000110000-        @PNOP
82
83    ## Invalid suffixes: rfebb
84    INVALID     ................................        \
85                010011---------------0010010010-        @PNOP
86
87    ## Invalid suffixes: context synchronizing other than isync
88    # sc
89    INVALID     ................................        \
90                010001------------------------1-        @PNOP
91    # scv
92    INVALID     ................................        \
93                010001------------------------01        @PNOP
94    # rfscv
95    INVALID     ................................        \
96                010011---------------0001010010-        @PNOP
97    # rfid
98    INVALID     ................................        \
99                010011---------------0000010010-        @PNOP
100    # hrfid
101    INVALID     ................................        \
102                010011---------------0100010010-        @PNOP
103    # urfid
104    INVALID     ................................        \
105                010011---------------0100110010-        @PNOP
106    # stop
107    INVALID     ................................        \
108                010011---------------0101110010-        @PNOP
109    # mtmsr w/ L=0
110    INVALID     ................................        \
111                011111---------0-----0010010010-        @PNOP
112    # mtmsrd w/ L=0
113    INVALID     ................................        \
114                011111---------0-----0010110010-        @PNOP
115
116    ## Invalid suffixes: Service Processor Attention
117    INVALID     ................................        \
118                000000----------------100000000-        @PNOP
119  ]
120
121  ## Valid suffixes
122  PNOP          ................................        \
123                --------------------------------        @PNOP
124}
125