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