xref: /openbmc/qemu/target/openrisc/insns.decode (revision cc9c8b82)
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
9198a2d21SThomas Huth# version 2.1 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
24032de4fcSRichard Henderson&ai             a i
2562f2b038SRichard Henderson&dab_pair       d a b dp ap bp
2662f2b038SRichard Henderson&ab_pair        a b ap bp
2762f2b038SRichard Henderson&da_pair        d a dp ap
286ad216abSRichard Henderson
297de9729fSRichard Henderson####
307de9729fSRichard Henderson# System Instructions
317de9729fSRichard Henderson####
327de9729fSRichard Henderson
337de9729fSRichard Hendersonl_sys           001000 0000000000 k:16
347de9729fSRichard Hendersonl_trap          001000 0100000000 k:16
357de9729fSRichard Hendersonl_msync         001000 1000000000 00000000 00000000
367de9729fSRichard Hendersonl_psync         001000 1010000000 00000000 00000000
377de9729fSRichard Hendersonl_csync         001000 1100000000 00000000 00000000
38136e13aeSRichard Henderson
398816f70bSRichard Hendersonl_rfe           001001 ----- ----- -------- --------
408816f70bSRichard Henderson
41136e13aeSRichard Henderson####
42136e13aeSRichard Henderson# Branch Instructions
43136e13aeSRichard Henderson####
44136e13aeSRichard Henderson
45136e13aeSRichard Hendersonl_j             000000 n:s26
46136e13aeSRichard Hendersonl_jal           000001 n:s26
47136e13aeSRichard Hendersonl_bnf           000011 n:s26
48136e13aeSRichard Hendersonl_bf            000100 n:s26
49136e13aeSRichard Henderson
50136e13aeSRichard Hendersonl_jr            010001 ---------- b:5 -----------
51136e13aeSRichard Hendersonl_jalr          010010 ---------- b:5 -----------
52d80bff19SRichard Henderson
53d80bff19SRichard Henderson####
54d80bff19SRichard Henderson# Memory Instructions
55d80bff19SRichard Henderson####
56d80bff19SRichard Henderson
57d80bff19SRichard Henderson&load           d a i
58d80bff19SRichard Henderson@load           ...... d:5 a:5 i:s16                    &load
59d80bff19SRichard Henderson
60d80bff19SRichard Henderson%store_i        21:s5 0:11
61d80bff19SRichard Henderson&store          a b i
62d80bff19SRichard Henderson@store          ...... ..... a:5 b:5 ...........        &store i=%store_i
63d80bff19SRichard Henderson
64d80bff19SRichard Hendersonl_lwa           011011 ..... ..... ........ ........    @load
65d80bff19SRichard Hendersonl_lwz           100001 ..... ..... ........ ........    @load
66d80bff19SRichard Hendersonl_lws           100010 ..... ..... ........ ........    @load
67d80bff19SRichard Hendersonl_lbz           100011 ..... ..... ........ ........    @load
68d80bff19SRichard Hendersonl_lbs           100100 ..... ..... ........ ........    @load
69d80bff19SRichard Hendersonl_lhz           100101 ..... ..... ........ ........    @load
70d80bff19SRichard Hendersonl_lhs           100110 ..... ..... ........ ........    @load
71d80bff19SRichard Henderson
72d80bff19SRichard Hendersonl_swa           110011 ..... ..... ..... ...........    @store
73d80bff19SRichard Hendersonl_sw            110101 ..... ..... ..... ...........    @store
74d80bff19SRichard Hendersonl_sb            110110 ..... ..... ..... ...........    @store
75d80bff19SRichard Hendersonl_sh            110111 ..... ..... ..... ...........    @store
768816f70bSRichard Henderson
778816f70bSRichard Henderson####
788816f70bSRichard Henderson# Immediate Operand Instructions
798816f70bSRichard Henderson####
808816f70bSRichard Henderson
818816f70bSRichard Henderson%mtspr_k        21:5 0:11
828816f70bSRichard Henderson
838816f70bSRichard Henderson&rri            d a i
848816f70bSRichard Henderson&rrk            d a k
858816f70bSRichard Henderson@rri            ...... d:5 a:5 i:s16                    &rri
868816f70bSRichard Henderson@rrk            ...... d:5 a:5 k:16                     &rrk
878816f70bSRichard Henderson
888816f70bSRichard Hendersonl_nop           000101 01--- ----- k:16
898816f70bSRichard Henderson
908816f70bSRichard Hendersonl_addi          100111 ..... ..... ........ ........    @rri
918816f70bSRichard Hendersonl_addic         101000 ..... ..... ........ ........    @rri
928816f70bSRichard Hendersonl_andi          101001 ..... ..... ........ ........    @rrk
938816f70bSRichard Hendersonl_ori           101010 ..... ..... ........ ........    @rrk
948816f70bSRichard Hendersonl_xori          101011 ..... ..... ........ ........    @rri
958816f70bSRichard Hendersonl_muli          101100 ..... ..... ........ ........    @rri
968816f70bSRichard Henderson
978816f70bSRichard Hendersonl_mfspr         101101 ..... ..... ........ ........    @rrk
988816f70bSRichard Hendersonl_mtspr         110000 ..... a:5 b:5 ...........        k=%mtspr_k
998816f70bSRichard Henderson
1008816f70bSRichard Hendersonl_maci          010011 ----- a:5 i:s16
1016ad216abSRichard Henderson
102e720a571SRichard Hendersonl_movhi         000110 d:5 ----0 k:16
103e720a571SRichard Hendersonl_macrc         000110 d:5 ----1 00000000 00000000
104e720a571SRichard Henderson
105*3e0e41efSRichard Hendersonl_adrp          000010 d:5 i:s21
106*3e0e41efSRichard Henderson
1076ad216abSRichard Henderson####
1086ad216abSRichard Henderson# Arithmetic Instructions
1096ad216abSRichard Henderson####
1106ad216abSRichard Henderson
1116ad216abSRichard Hendersonl_exths         111000 d:5 a:5 ----- - 0000 -- 1100
1126ad216abSRichard Hendersonl_extbs         111000 d:5 a:5 ----- - 0001 -- 1100
1136ad216abSRichard Hendersonl_exthz         111000 d:5 a:5 ----- - 0010 -- 1100
1146ad216abSRichard Hendersonl_extbz         111000 d:5 a:5 ----- - 0011 -- 1100
1156ad216abSRichard Henderson
1166ad216abSRichard Hendersonl_add           111000 d:5 a:5 b:5   - 00 ---- 0000
1176ad216abSRichard Hendersonl_addc          111000 d:5 a:5 b:5   - 00 ---- 0001
1186ad216abSRichard Hendersonl_sub           111000 d:5 a:5 b:5   - 00 ---- 0010
1196ad216abSRichard Hendersonl_and           111000 d:5 a:5 b:5   - 00 ---- 0011
1206ad216abSRichard Hendersonl_or            111000 d:5 a:5 b:5   - 00 ---- 0100
1216ad216abSRichard Hendersonl_xor           111000 d:5 a:5 b:5   - 00 ---- 0101
1226ad216abSRichard Hendersonl_cmov          111000 d:5 a:5 b:5   - 00 ---- 1110
1236ad216abSRichard Hendersonl_ff1           111000 d:5 a:5 ----- - 00 ---- 1111
1246ad216abSRichard Hendersonl_fl1           111000 d:5 a:5 ----- - 01 ---- 1111
1256ad216abSRichard Henderson
1266ad216abSRichard Hendersonl_sll           111000 d:5 a:5 b:5   - 0000 -- 1000
1276ad216abSRichard Hendersonl_srl           111000 d:5 a:5 b:5   - 0001 -- 1000
1286ad216abSRichard Hendersonl_sra           111000 d:5 a:5 b:5   - 0010 -- 1000
1296ad216abSRichard Hendersonl_ror           111000 d:5 a:5 b:5   - 0011 -- 1000
1306ad216abSRichard Henderson
1316ad216abSRichard Hendersonl_mul           111000 d:5 a:5 b:5   - 11 ---- 0110
1326ad216abSRichard Hendersonl_mulu          111000 d:5 a:5 b:5   - 11 ---- 1011
1336ad216abSRichard Hendersonl_div           111000 d:5 a:5 b:5   - 11 ---- 1001
1346ad216abSRichard Hendersonl_divu          111000 d:5 a:5 b:5   - 11 ---- 1010
1356ad216abSRichard Henderson
1366ad216abSRichard Hendersonl_muld          111000 ----- a:5 b:5 - 11 ---- 0111
1376ad216abSRichard Hendersonl_muldu         111000 ----- a:5 b:5 - 11 ---- 1100
13899d863d6SRichard Henderson
13999d863d6SRichard Hendersonl_mac           110001 ----- a:5 b:5 ------- 0001
14099d863d6SRichard Hendersonl_macu          110001 ----- a:5 b:5 ------- 0011
14199d863d6SRichard Hendersonl_msb           110001 ----- a:5 b:5 ------- 0010
14299d863d6SRichard Hendersonl_msbu          110001 ----- a:5 b:5 ------- 0100
143e20c2592SRichard Henderson
144e20c2592SRichard Hendersonl_slli          101110 d:5 a:5 -------- 00 l:6
145e20c2592SRichard Hendersonl_srli          101110 d:5 a:5 -------- 01 l:6
146e20c2592SRichard Hendersonl_srai          101110 d:5 a:5 -------- 10 l:6
147e20c2592SRichard Hendersonl_rori          101110 d:5 a:5 -------- 11 l:6
148fbb3e29aSRichard Henderson
149fbb3e29aSRichard Henderson####
150fbb3e29aSRichard Henderson# Compare Instructions
151fbb3e29aSRichard Henderson####
152fbb3e29aSRichard Henderson
153fbb3e29aSRichard Hendersonl_sfeq          111001 00000 a:5 b:5 -----------
154fbb3e29aSRichard Hendersonl_sfne          111001 00001 a:5 b:5 -----------
155fbb3e29aSRichard Hendersonl_sfgtu         111001 00010 a:5 b:5 -----------
156fbb3e29aSRichard Hendersonl_sfgeu         111001 00011 a:5 b:5 -----------
157fbb3e29aSRichard Hendersonl_sfltu         111001 00100 a:5 b:5 -----------
158fbb3e29aSRichard Hendersonl_sfleu         111001 00101 a:5 b:5 -----------
159fbb3e29aSRichard Hendersonl_sfgts         111001 01010 a:5 b:5 -----------
160fbb3e29aSRichard Hendersonl_sfges         111001 01011 a:5 b:5 -----------
161fbb3e29aSRichard Hendersonl_sflts         111001 01100 a:5 b:5 -----------
162fbb3e29aSRichard Hendersonl_sfles         111001 01101 a:5 b:5 -----------
163032de4fcSRichard Henderson
164032de4fcSRichard Hendersonl_sfeqi         101111 00000 a:5 i:s16
165032de4fcSRichard Hendersonl_sfnei         101111 00001 a:5 i:s16
166032de4fcSRichard Hendersonl_sfgtui        101111 00010 a:5 i:s16
167032de4fcSRichard Hendersonl_sfgeui        101111 00011 a:5 i:s16
168032de4fcSRichard Hendersonl_sfltui        101111 00100 a:5 i:s16
169032de4fcSRichard Hendersonl_sfleui        101111 00101 a:5 i:s16
170032de4fcSRichard Hendersonl_sfgtsi        101111 01010 a:5 i:s16
171032de4fcSRichard Hendersonl_sfgesi        101111 01011 a:5 i:s16
172032de4fcSRichard Hendersonl_sfltsi        101111 01100 a:5 i:s16
173032de4fcSRichard Hendersonl_sflesi        101111 01101 a:5 i:s16
1746fd204a2SRichard Henderson
1756fd204a2SRichard Henderson####
1766fd204a2SRichard Henderson# FP Instructions
1776fd204a2SRichard Henderson####
1786fd204a2SRichard Henderson
1796fd204a2SRichard Hendersonlf_add_s        110010 d:5 a:5 b:5   --- 00000000
1806fd204a2SRichard Hendersonlf_sub_s        110010 d:5 a:5 b:5   --- 00000001
1816fd204a2SRichard Hendersonlf_mul_s        110010 d:5 a:5 b:5   --- 00000010
1826fd204a2SRichard Hendersonlf_div_s        110010 d:5 a:5 b:5   --- 00000011
1836fd204a2SRichard Hendersonlf_rem_s        110010 d:5 a:5 b:5   --- 00000110
1846fd204a2SRichard Hendersonlf_madd_s       110010 d:5 a:5 b:5   --- 00000111
1856fd204a2SRichard Henderson
1866fd204a2SRichard Hendersonlf_itof_s       110010 d:5 a:5 00000 --- 00000100
1876fd204a2SRichard Hendersonlf_ftoi_s       110010 d:5 a:5 00000 --- 00000101
1886fd204a2SRichard Henderson
1896fd204a2SRichard Hendersonlf_sfeq_s       110010 ----- a:5 b:5 --- 00001000
1906fd204a2SRichard Hendersonlf_sfne_s       110010 ----- a:5 b:5 --- 00001001
1916fd204a2SRichard Hendersonlf_sfgt_s       110010 ----- a:5 b:5 --- 00001010
1926fd204a2SRichard Hendersonlf_sfge_s       110010 ----- a:5 b:5 --- 00001011
1936fd204a2SRichard Hendersonlf_sflt_s       110010 ----- a:5 b:5 --- 00001100
1946fd204a2SRichard Hendersonlf_sfle_s       110010 ----- a:5 b:5 --- 00001101
1952b13b4b9SRichard Hendersonlf_sfueq_s      110010 ----- a:5 b:5 --- 00101000
1962b13b4b9SRichard Hendersonlf_sfuge_s      110010 ----- a:5 b:5 --- 00101011
1972b13b4b9SRichard Hendersonlf_sfugt_s      110010 ----- a:5 b:5 --- 00101010
1982b13b4b9SRichard Hendersonlf_sfule_s      110010 ----- a:5 b:5 --- 00101101
1992b13b4b9SRichard Hendersonlf_sfult_s      110010 ----- a:5 b:5 --- 00101100
2002b13b4b9SRichard Hendersonlf_sfun_s       110010 ----- a:5 b:5 --- 00101110
20162f2b038SRichard Henderson
20262f2b038SRichard Henderson####
20362f2b038SRichard Henderson# DP Instructions
20462f2b038SRichard Henderson####
20562f2b038SRichard Henderson
20662f2b038SRichard Henderson@dab_pair       ...... d:5   a:5 b:5   dp:1 ap:1 bp:1 ........  &dab_pair
20762f2b038SRichard Henderson@ab_pair        ...... ..... a:5 b:5   .    ap:1 bp:1 ........  &ab_pair
20862f2b038SRichard Henderson@da_pair        ...... d:5   a:5 ..... dp:1 ap:1 .    ........  &da_pair
20962f2b038SRichard Henderson
21062f2b038SRichard Hendersonlf_add_d        110010 ..... ..... ..... ... 00010000  @dab_pair
21162f2b038SRichard Hendersonlf_sub_d        110010 ..... ..... ..... ... 00010001  @dab_pair
21262f2b038SRichard Hendersonlf_mul_d        110010 ..... ..... ..... ... 00010010  @dab_pair
21362f2b038SRichard Hendersonlf_div_d        110010 ..... ..... ..... ... 00010011  @dab_pair
21462f2b038SRichard Hendersonlf_rem_d        110010 ..... ..... ..... ... 00010110  @dab_pair
21562f2b038SRichard Hendersonlf_madd_d       110010 ..... ..... ..... ... 00010111  @dab_pair
21662f2b038SRichard Henderson
21762f2b038SRichard Hendersonlf_itof_d       110010 ..... ..... 00000 ..0 00010100  @da_pair
21862f2b038SRichard Hendersonlf_ftoi_d       110010 ..... ..... 00000 ..0 00010101  @da_pair
21962f2b038SRichard Henderson
22062f2b038SRichard Hendersonlf_stod_d       110010 d:5 a:5 00000 dp:1 0 0 00110100
22162f2b038SRichard Hendersonlf_dtos_d       110010 d:5 a:5 00000 0 ap:1 0 00110101
22262f2b038SRichard Henderson
22362f2b038SRichard Hendersonlf_sfeq_d       110010 00000 ..... ..... 0.. 00011000  @ab_pair
22462f2b038SRichard Hendersonlf_sfne_d       110010 00000 ..... ..... 0.. 00011001  @ab_pair
22562f2b038SRichard Hendersonlf_sfgt_d       110010 00000 ..... ..... 0.. 00011010  @ab_pair
22662f2b038SRichard Hendersonlf_sfge_d       110010 00000 ..... ..... 0.. 00011011  @ab_pair
22762f2b038SRichard Hendersonlf_sflt_d       110010 00000 ..... ..... 0.. 00011100  @ab_pair
22862f2b038SRichard Hendersonlf_sfle_d       110010 00000 ..... ..... 0.. 00011101  @ab_pair
2292b13b4b9SRichard Hendersonlf_sfueq_d      110010 00000 ..... ..... 0.. 00111000  @ab_pair
2302b13b4b9SRichard Hendersonlf_sfuge_d      110010 00000 ..... ..... 0.. 00111011  @ab_pair
2312b13b4b9SRichard Hendersonlf_sfugt_d      110010 00000 ..... ..... 0.. 00111010  @ab_pair
2322b13b4b9SRichard Hendersonlf_sfule_d      110010 00000 ..... ..... 0.. 00111101  @ab_pair
2332b13b4b9SRichard Hendersonlf_sfult_d      110010 00000 ..... ..... 0.. 00111100  @ab_pair
2342b13b4b9SRichard Hendersonlf_sfun_d       110010 00000 ..... ..... 0.. 00111110  @ab_pair
235