xref: /openbmc/qemu/target/openrisc/insns.decode (revision 6ad216ab)
17de9729fSRichard Henderson#
27de9729fSRichard Henderson# OpenRISC instruction decode definitions.
37de9729fSRichard Henderson#
47de9729fSRichard Henderson# Copyright (c) 2018 Richard Henderson <rth@twiddle.net>
57de9729fSRichard Henderson#
67de9729fSRichard Henderson# This library is free software; you can redistribute it and/or
77de9729fSRichard Henderson# modify it under the terms of the GNU Lesser General Public
87de9729fSRichard Henderson# License as published by the Free Software Foundation; either
97de9729fSRichard Henderson# version 2 of the License, or (at your option) any later version.
107de9729fSRichard Henderson#
117de9729fSRichard Henderson# This library is distributed in the hope that it will be useful,
127de9729fSRichard Henderson# but WITHOUT ANY WARRANTY; without even the implied warranty of
137de9729fSRichard Henderson# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
147de9729fSRichard Henderson# Lesser General Public License for more details.
157de9729fSRichard Henderson#
167de9729fSRichard Henderson# You should have received a copy of the GNU Lesser General Public
177de9729fSRichard Henderson# License along with this library; if not, see <http://www.gnu.org/licenses/>.
187de9729fSRichard Henderson#
197de9729fSRichard Henderson
20*6ad216abSRichard Henderson&dab            d a b
21*6ad216abSRichard Henderson&da             d a
22*6ad216abSRichard Henderson&ab             a b
23*6ad216abSRichard Henderson
247de9729fSRichard Henderson####
257de9729fSRichard Henderson# System Instructions
267de9729fSRichard Henderson####
277de9729fSRichard Henderson
287de9729fSRichard Hendersonl_sys           001000 0000000000 k:16
297de9729fSRichard Hendersonl_trap          001000 0100000000 k:16
307de9729fSRichard Hendersonl_msync         001000 1000000000 00000000 00000000
317de9729fSRichard Hendersonl_psync         001000 1010000000 00000000 00000000
327de9729fSRichard Hendersonl_csync         001000 1100000000 00000000 00000000
33136e13aeSRichard Henderson
348816f70bSRichard Hendersonl_rfe           001001 ----- ----- -------- --------
358816f70bSRichard Henderson
36136e13aeSRichard Henderson####
37136e13aeSRichard Henderson# Branch Instructions
38136e13aeSRichard Henderson####
39136e13aeSRichard Henderson
40136e13aeSRichard Hendersonl_j             000000 n:s26
41136e13aeSRichard Hendersonl_jal           000001 n:s26
42136e13aeSRichard Hendersonl_bnf           000011 n:s26
43136e13aeSRichard Hendersonl_bf            000100 n:s26
44136e13aeSRichard Henderson
45136e13aeSRichard Hendersonl_jr            010001 ---------- b:5 -----------
46136e13aeSRichard Hendersonl_jalr          010010 ---------- b:5 -----------
47d80bff19SRichard Henderson
48d80bff19SRichard Henderson####
49d80bff19SRichard Henderson# Memory Instructions
50d80bff19SRichard Henderson####
51d80bff19SRichard Henderson
52d80bff19SRichard Henderson&load           d a i
53d80bff19SRichard Henderson@load           ...... d:5 a:5 i:s16                    &load
54d80bff19SRichard Henderson
55d80bff19SRichard Henderson%store_i        21:s5 0:11
56d80bff19SRichard Henderson&store          a b i
57d80bff19SRichard Henderson@store          ...... ..... a:5 b:5 ...........        &store i=%store_i
58d80bff19SRichard Henderson
59d80bff19SRichard Hendersonl_lwa           011011 ..... ..... ........ ........    @load
60d80bff19SRichard Hendersonl_lwz           100001 ..... ..... ........ ........    @load
61d80bff19SRichard Hendersonl_lws           100010 ..... ..... ........ ........    @load
62d80bff19SRichard Hendersonl_lbz           100011 ..... ..... ........ ........    @load
63d80bff19SRichard Hendersonl_lbs           100100 ..... ..... ........ ........    @load
64d80bff19SRichard Hendersonl_lhz           100101 ..... ..... ........ ........    @load
65d80bff19SRichard Hendersonl_lhs           100110 ..... ..... ........ ........    @load
66d80bff19SRichard Henderson
67d80bff19SRichard Hendersonl_swa           110011 ..... ..... ..... ...........    @store
68d80bff19SRichard Hendersonl_sw            110101 ..... ..... ..... ...........    @store
69d80bff19SRichard Hendersonl_sb            110110 ..... ..... ..... ...........    @store
70d80bff19SRichard Hendersonl_sh            110111 ..... ..... ..... ...........    @store
718816f70bSRichard Henderson
728816f70bSRichard Henderson####
738816f70bSRichard Henderson# Immediate Operand Instructions
748816f70bSRichard Henderson####
758816f70bSRichard Henderson
768816f70bSRichard Henderson%mtspr_k        21:5 0:11
778816f70bSRichard Henderson
788816f70bSRichard Henderson&rri            d a i
798816f70bSRichard Henderson&rrk            d a k
808816f70bSRichard Henderson@rri            ...... d:5 a:5 i:s16                    &rri
818816f70bSRichard Henderson@rrk            ...... d:5 a:5 k:16                     &rrk
828816f70bSRichard Henderson
838816f70bSRichard Hendersonl_nop           000101 01--- ----- k:16
848816f70bSRichard Henderson
858816f70bSRichard Hendersonl_addi          100111 ..... ..... ........ ........    @rri
868816f70bSRichard Hendersonl_addic         101000 ..... ..... ........ ........    @rri
878816f70bSRichard Hendersonl_andi          101001 ..... ..... ........ ........    @rrk
888816f70bSRichard Hendersonl_ori           101010 ..... ..... ........ ........    @rrk
898816f70bSRichard Hendersonl_xori          101011 ..... ..... ........ ........    @rri
908816f70bSRichard Hendersonl_muli          101100 ..... ..... ........ ........    @rri
918816f70bSRichard Henderson
928816f70bSRichard Hendersonl_mfspr         101101 ..... ..... ........ ........    @rrk
938816f70bSRichard Hendersonl_mtspr         110000 ..... a:5 b:5 ...........        k=%mtspr_k
948816f70bSRichard Henderson
958816f70bSRichard Hendersonl_maci          010011 ----- a:5 i:s16
96*6ad216abSRichard Henderson
97*6ad216abSRichard Henderson####
98*6ad216abSRichard Henderson# Arithmetic Instructions
99*6ad216abSRichard Henderson####
100*6ad216abSRichard Henderson
101*6ad216abSRichard Hendersonl_exths         111000 d:5 a:5 ----- - 0000 -- 1100
102*6ad216abSRichard Hendersonl_extbs         111000 d:5 a:5 ----- - 0001 -- 1100
103*6ad216abSRichard Hendersonl_exthz         111000 d:5 a:5 ----- - 0010 -- 1100
104*6ad216abSRichard Hendersonl_extbz         111000 d:5 a:5 ----- - 0011 -- 1100
105*6ad216abSRichard Henderson
106*6ad216abSRichard Hendersonl_add           111000 d:5 a:5 b:5   - 00 ---- 0000
107*6ad216abSRichard Hendersonl_addc          111000 d:5 a:5 b:5   - 00 ---- 0001
108*6ad216abSRichard Hendersonl_sub           111000 d:5 a:5 b:5   - 00 ---- 0010
109*6ad216abSRichard Hendersonl_and           111000 d:5 a:5 b:5   - 00 ---- 0011
110*6ad216abSRichard Hendersonl_or            111000 d:5 a:5 b:5   - 00 ---- 0100
111*6ad216abSRichard Hendersonl_xor           111000 d:5 a:5 b:5   - 00 ---- 0101
112*6ad216abSRichard Hendersonl_cmov          111000 d:5 a:5 b:5   - 00 ---- 1110
113*6ad216abSRichard Hendersonl_ff1           111000 d:5 a:5 ----- - 00 ---- 1111
114*6ad216abSRichard Hendersonl_fl1           111000 d:5 a:5 ----- - 01 ---- 1111
115*6ad216abSRichard Henderson
116*6ad216abSRichard Hendersonl_sll           111000 d:5 a:5 b:5   - 0000 -- 1000
117*6ad216abSRichard Hendersonl_srl           111000 d:5 a:5 b:5   - 0001 -- 1000
118*6ad216abSRichard Hendersonl_sra           111000 d:5 a:5 b:5   - 0010 -- 1000
119*6ad216abSRichard Hendersonl_ror           111000 d:5 a:5 b:5   - 0011 -- 1000
120*6ad216abSRichard Henderson
121*6ad216abSRichard Hendersonl_mul           111000 d:5 a:5 b:5   - 11 ---- 0110
122*6ad216abSRichard Hendersonl_mulu          111000 d:5 a:5 b:5   - 11 ---- 1011
123*6ad216abSRichard Hendersonl_div           111000 d:5 a:5 b:5   - 11 ---- 1001
124*6ad216abSRichard Hendersonl_divu          111000 d:5 a:5 b:5   - 11 ---- 1010
125*6ad216abSRichard Henderson
126*6ad216abSRichard Hendersonl_muld          111000 ----- a:5 b:5 - 11 ---- 0111
127*6ad216abSRichard Hendersonl_muldu         111000 ----- a:5 b:5 - 11 ---- 1100
128