xref: /openbmc/qemu/target/openrisc/insns.decode (revision 032de4fc)
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
206ad216abSRichard Henderson&dab            d a b
216ad216abSRichard Henderson&da             d a
226ad216abSRichard Henderson&ab             a b
23e20c2592SRichard Henderson&dal            d a l
24*032de4fcSRichard Henderson&ai             a i
256ad216abSRichard Henderson
267de9729fSRichard Henderson####
277de9729fSRichard Henderson# System Instructions
287de9729fSRichard Henderson####
297de9729fSRichard Henderson
307de9729fSRichard Hendersonl_sys           001000 0000000000 k:16
317de9729fSRichard Hendersonl_trap          001000 0100000000 k:16
327de9729fSRichard Hendersonl_msync         001000 1000000000 00000000 00000000
337de9729fSRichard Hendersonl_psync         001000 1010000000 00000000 00000000
347de9729fSRichard Hendersonl_csync         001000 1100000000 00000000 00000000
35136e13aeSRichard Henderson
368816f70bSRichard Hendersonl_rfe           001001 ----- ----- -------- --------
378816f70bSRichard Henderson
38136e13aeSRichard Henderson####
39136e13aeSRichard Henderson# Branch Instructions
40136e13aeSRichard Henderson####
41136e13aeSRichard Henderson
42136e13aeSRichard Hendersonl_j             000000 n:s26
43136e13aeSRichard Hendersonl_jal           000001 n:s26
44136e13aeSRichard Hendersonl_bnf           000011 n:s26
45136e13aeSRichard Hendersonl_bf            000100 n:s26
46136e13aeSRichard Henderson
47136e13aeSRichard Hendersonl_jr            010001 ---------- b:5 -----------
48136e13aeSRichard Hendersonl_jalr          010010 ---------- b:5 -----------
49d80bff19SRichard Henderson
50d80bff19SRichard Henderson####
51d80bff19SRichard Henderson# Memory Instructions
52d80bff19SRichard Henderson####
53d80bff19SRichard Henderson
54d80bff19SRichard Henderson&load           d a i
55d80bff19SRichard Henderson@load           ...... d:5 a:5 i:s16                    &load
56d80bff19SRichard Henderson
57d80bff19SRichard Henderson%store_i        21:s5 0:11
58d80bff19SRichard Henderson&store          a b i
59d80bff19SRichard Henderson@store          ...... ..... a:5 b:5 ...........        &store i=%store_i
60d80bff19SRichard Henderson
61d80bff19SRichard Hendersonl_lwa           011011 ..... ..... ........ ........    @load
62d80bff19SRichard Hendersonl_lwz           100001 ..... ..... ........ ........    @load
63d80bff19SRichard Hendersonl_lws           100010 ..... ..... ........ ........    @load
64d80bff19SRichard Hendersonl_lbz           100011 ..... ..... ........ ........    @load
65d80bff19SRichard Hendersonl_lbs           100100 ..... ..... ........ ........    @load
66d80bff19SRichard Hendersonl_lhz           100101 ..... ..... ........ ........    @load
67d80bff19SRichard Hendersonl_lhs           100110 ..... ..... ........ ........    @load
68d80bff19SRichard Henderson
69d80bff19SRichard Hendersonl_swa           110011 ..... ..... ..... ...........    @store
70d80bff19SRichard Hendersonl_sw            110101 ..... ..... ..... ...........    @store
71d80bff19SRichard Hendersonl_sb            110110 ..... ..... ..... ...........    @store
72d80bff19SRichard Hendersonl_sh            110111 ..... ..... ..... ...........    @store
738816f70bSRichard Henderson
748816f70bSRichard Henderson####
758816f70bSRichard Henderson# Immediate Operand Instructions
768816f70bSRichard Henderson####
778816f70bSRichard Henderson
788816f70bSRichard Henderson%mtspr_k        21:5 0:11
798816f70bSRichard Henderson
808816f70bSRichard Henderson&rri            d a i
818816f70bSRichard Henderson&rrk            d a k
828816f70bSRichard Henderson@rri            ...... d:5 a:5 i:s16                    &rri
838816f70bSRichard Henderson@rrk            ...... d:5 a:5 k:16                     &rrk
848816f70bSRichard Henderson
858816f70bSRichard Hendersonl_nop           000101 01--- ----- k:16
868816f70bSRichard Henderson
878816f70bSRichard Hendersonl_addi          100111 ..... ..... ........ ........    @rri
888816f70bSRichard Hendersonl_addic         101000 ..... ..... ........ ........    @rri
898816f70bSRichard Hendersonl_andi          101001 ..... ..... ........ ........    @rrk
908816f70bSRichard Hendersonl_ori           101010 ..... ..... ........ ........    @rrk
918816f70bSRichard Hendersonl_xori          101011 ..... ..... ........ ........    @rri
928816f70bSRichard Hendersonl_muli          101100 ..... ..... ........ ........    @rri
938816f70bSRichard Henderson
948816f70bSRichard Hendersonl_mfspr         101101 ..... ..... ........ ........    @rrk
958816f70bSRichard Hendersonl_mtspr         110000 ..... a:5 b:5 ...........        k=%mtspr_k
968816f70bSRichard Henderson
978816f70bSRichard Hendersonl_maci          010011 ----- a:5 i:s16
986ad216abSRichard Henderson
99e720a571SRichard Hendersonl_movhi         000110 d:5 ----0 k:16
100e720a571SRichard Hendersonl_macrc         000110 d:5 ----1 00000000 00000000
101e720a571SRichard Henderson
1026ad216abSRichard Henderson####
1036ad216abSRichard Henderson# Arithmetic Instructions
1046ad216abSRichard Henderson####
1056ad216abSRichard Henderson
1066ad216abSRichard Hendersonl_exths         111000 d:5 a:5 ----- - 0000 -- 1100
1076ad216abSRichard Hendersonl_extbs         111000 d:5 a:5 ----- - 0001 -- 1100
1086ad216abSRichard Hendersonl_exthz         111000 d:5 a:5 ----- - 0010 -- 1100
1096ad216abSRichard Hendersonl_extbz         111000 d:5 a:5 ----- - 0011 -- 1100
1106ad216abSRichard Henderson
1116ad216abSRichard Hendersonl_add           111000 d:5 a:5 b:5   - 00 ---- 0000
1126ad216abSRichard Hendersonl_addc          111000 d:5 a:5 b:5   - 00 ---- 0001
1136ad216abSRichard Hendersonl_sub           111000 d:5 a:5 b:5   - 00 ---- 0010
1146ad216abSRichard Hendersonl_and           111000 d:5 a:5 b:5   - 00 ---- 0011
1156ad216abSRichard Hendersonl_or            111000 d:5 a:5 b:5   - 00 ---- 0100
1166ad216abSRichard Hendersonl_xor           111000 d:5 a:5 b:5   - 00 ---- 0101
1176ad216abSRichard Hendersonl_cmov          111000 d:5 a:5 b:5   - 00 ---- 1110
1186ad216abSRichard Hendersonl_ff1           111000 d:5 a:5 ----- - 00 ---- 1111
1196ad216abSRichard Hendersonl_fl1           111000 d:5 a:5 ----- - 01 ---- 1111
1206ad216abSRichard Henderson
1216ad216abSRichard Hendersonl_sll           111000 d:5 a:5 b:5   - 0000 -- 1000
1226ad216abSRichard Hendersonl_srl           111000 d:5 a:5 b:5   - 0001 -- 1000
1236ad216abSRichard Hendersonl_sra           111000 d:5 a:5 b:5   - 0010 -- 1000
1246ad216abSRichard Hendersonl_ror           111000 d:5 a:5 b:5   - 0011 -- 1000
1256ad216abSRichard Henderson
1266ad216abSRichard Hendersonl_mul           111000 d:5 a:5 b:5   - 11 ---- 0110
1276ad216abSRichard Hendersonl_mulu          111000 d:5 a:5 b:5   - 11 ---- 1011
1286ad216abSRichard Hendersonl_div           111000 d:5 a:5 b:5   - 11 ---- 1001
1296ad216abSRichard Hendersonl_divu          111000 d:5 a:5 b:5   - 11 ---- 1010
1306ad216abSRichard Henderson
1316ad216abSRichard Hendersonl_muld          111000 ----- a:5 b:5 - 11 ---- 0111
1326ad216abSRichard Hendersonl_muldu         111000 ----- a:5 b:5 - 11 ---- 1100
13399d863d6SRichard Henderson
13499d863d6SRichard Hendersonl_mac           110001 ----- a:5 b:5 ------- 0001
13599d863d6SRichard Hendersonl_macu          110001 ----- a:5 b:5 ------- 0011
13699d863d6SRichard Hendersonl_msb           110001 ----- a:5 b:5 ------- 0010
13799d863d6SRichard Hendersonl_msbu          110001 ----- a:5 b:5 ------- 0100
138e20c2592SRichard Henderson
139e20c2592SRichard Hendersonl_slli          101110 d:5 a:5 -------- 00 l:6
140e20c2592SRichard Hendersonl_srli          101110 d:5 a:5 -------- 01 l:6
141e20c2592SRichard Hendersonl_srai          101110 d:5 a:5 -------- 10 l:6
142e20c2592SRichard Hendersonl_rori          101110 d:5 a:5 -------- 11 l:6
143fbb3e29aSRichard Henderson
144fbb3e29aSRichard Henderson####
145fbb3e29aSRichard Henderson# Compare Instructions
146fbb3e29aSRichard Henderson####
147fbb3e29aSRichard Henderson
148fbb3e29aSRichard Hendersonl_sfeq          111001 00000 a:5 b:5 -----------
149fbb3e29aSRichard Hendersonl_sfne          111001 00001 a:5 b:5 -----------
150fbb3e29aSRichard Hendersonl_sfgtu         111001 00010 a:5 b:5 -----------
151fbb3e29aSRichard Hendersonl_sfgeu         111001 00011 a:5 b:5 -----------
152fbb3e29aSRichard Hendersonl_sfltu         111001 00100 a:5 b:5 -----------
153fbb3e29aSRichard Hendersonl_sfleu         111001 00101 a:5 b:5 -----------
154fbb3e29aSRichard Hendersonl_sfgts         111001 01010 a:5 b:5 -----------
155fbb3e29aSRichard Hendersonl_sfges         111001 01011 a:5 b:5 -----------
156fbb3e29aSRichard Hendersonl_sflts         111001 01100 a:5 b:5 -----------
157fbb3e29aSRichard Hendersonl_sfles         111001 01101 a:5 b:5 -----------
158*032de4fcSRichard Henderson
159*032de4fcSRichard Hendersonl_sfeqi         101111 00000 a:5 i:s16
160*032de4fcSRichard Hendersonl_sfnei         101111 00001 a:5 i:s16
161*032de4fcSRichard Hendersonl_sfgtui        101111 00010 a:5 i:s16
162*032de4fcSRichard Hendersonl_sfgeui        101111 00011 a:5 i:s16
163*032de4fcSRichard Hendersonl_sfltui        101111 00100 a:5 i:s16
164*032de4fcSRichard Hendersonl_sfleui        101111 00101 a:5 i:s16
165*032de4fcSRichard Hendersonl_sfgtsi        101111 01010 a:5 i:s16
166*032de4fcSRichard Hendersonl_sfgesi        101111 01011 a:5 i:s16
167*032de4fcSRichard Hendersonl_sfltsi        101111 01100 a:5 i:s16
168*032de4fcSRichard Hendersonl_sflesi        101111 01101 a:5 i:s16
169