xref: /qemu/target/hppa/insns.decode (revision 84e224d4226001ed73b8da42e4ad155cf80b1eef)
140f9f908SRichard Henderson#
240f9f908SRichard Henderson# HPPA instruction decode definitions.
340f9f908SRichard Henderson#
440f9f908SRichard Henderson# Copyright (c) 2018 Richard Henderson <rth@twiddle.net>
540f9f908SRichard Henderson#
640f9f908SRichard Henderson# This library is free software; you can redistribute it and/or
740f9f908SRichard Henderson# modify it under the terms of the GNU Lesser General Public
840f9f908SRichard Henderson# License as published by the Free Software Foundation; either
9d6ea4236SChetan Pant# version 2.1 of the License, or (at your option) any later version.
1040f9f908SRichard Henderson#
1140f9f908SRichard Henderson# This library is distributed in the hope that it will be useful,
1240f9f908SRichard Henderson# but WITHOUT ANY WARRANTY; without even the implied warranty of
1340f9f908SRichard Henderson# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
1440f9f908SRichard Henderson# Lesser General Public License for more details.
1540f9f908SRichard Henderson#
1640f9f908SRichard Henderson# You should have received a copy of the GNU Lesser General Public
1740f9f908SRichard Henderson# License along with this library; if not, see <http://www.gnu.org/licenses/>.
1840f9f908SRichard Henderson#
1940f9f908SRichard Henderson
2040f9f908SRichard Henderson####
21c603e14aSRichard Henderson# Field definitions
22c603e14aSRichard Henderson####
23c603e14aSRichard Henderson
24c603e14aSRichard Henderson%assemble_sr3   13:1 14:2
25deee69a1SRichard Henderson%assemble_sr3x  13:1 14:2 !function=expand_sr3x
26c603e14aSRichard Henderson
27740038d7SRichard Henderson%assemble_11a   0:s1 4:10            !function=expand_shl3
2801afb7beSRichard Henderson%assemble_12    0:s1 2:1 3:10        !function=expand_shl2
29740038d7SRichard Henderson%assemble_12a   0:s1 3:11            !function=expand_shl2
308340f534SRichard Henderson%assemble_17    0:s1 16:5 2:1 3:10   !function=expand_shl2
318340f534SRichard Henderson%assemble_22    0:s1 16:10 2:1 3:10  !function=expand_shl2
3201afb7beSRichard Henderson
330588e061SRichard Henderson%assemble_21    0:s1 1:11 14:2 16:5 12:2  !function=expand_shl11
340588e061SRichard Henderson
350588e061SRichard Henderson%lowsign_11     0:s1 1:10
360588e061SRichard Henderson%lowsign_14     0:s1 1:13
370588e061SRichard Henderson
38e36f27efSRichard Henderson%sm_imm         16:10 !function=expand_sm_imm
39e36f27efSRichard Henderson
40740038d7SRichard Henderson%rm64           1:1 16:5
41e8777db7SRichard Henderson%rt64           6:1 0:5
42c3bad4f8SRichard Henderson%ra64           7:1 21:5
43c3bad4f8SRichard Henderson%rb64           12:1 16:5
44c3bad4f8SRichard Henderson%rc64           8:1 13:3 9:2
45c3bad4f8SRichard Henderson%rc32           13:3 9:2
46740038d7SRichard Henderson
471cd012a5SRichard Henderson%im5_0          0:s1 1:4
481cd012a5SRichard Henderson%im5_16         16:s1 17:4
491cd012a5SRichard Henderson%ma_to_m        5:1 13:1 !function=ma_to_m
50740038d7SRichard Henderson%ma2_to_m       2:2      !function=ma_to_m
51740038d7SRichard Henderson%pos_to_m       0:1      !function=pos_to_m
52740038d7SRichard Henderson%neg_to_m       0:1      !function=neg_to_m
53740038d7SRichard Henderson%a_to_m         2:1      !function=neg_to_m
541cd012a5SRichard Henderson
55c603e14aSRichard Henderson####
56deee69a1SRichard Henderson# Argument set definitions
57deee69a1SRichard Henderson####
58deee69a1SRichard Henderson
59deee69a1SRichard Henderson# All insns that need to form a virtual address should use this set.
60deee69a1SRichard Henderson&ldst           t b x disp sp m scale size
61deee69a1SRichard Henderson
62af240753SRichard Henderson&rr_cf_d        t r cf d
630c982a28SRichard Henderson&rrr_cf         t r1 r2 cf
64fa8e3bedSRichard Henderson&rrr_cf_d       t r1 r2 cf d
65faf97ba1SRichard Henderson&rrr_cf_d_sh    t r1 r2 cf d sh
660588e061SRichard Henderson&rri_cf         t r i cf
67345aa35fSRichard Henderson&rri_cf_d       t r i cf d
680c982a28SRichard Henderson
6901afb7beSRichard Henderson&rrb_c_f        disp n c f r1 r2
7001afb7beSRichard Henderson&rib_c_f        disp n c f r i
7101afb7beSRichard Henderson
720c982a28SRichard Henderson####
730c982a28SRichard Henderson# Format definitions
740c982a28SRichard Henderson####
750c982a28SRichard Henderson
76af240753SRichard Henderson@rr_cf_d        ...... r:5 ..... cf:4 ...... d:1 t:5    &rr_cf_d
770c982a28SRichard Henderson@rrr_cf         ...... r2:5 r1:5 cf:4 ....... t:5       &rrr_cf
78fa8e3bedSRichard Henderson@rrr_cf_d       ...... r2:5 r1:5 cf:4 ...... d:1 t:5    &rrr_cf_d
79faf97ba1SRichard Henderson@rrr_cf_d_sh    ...... r2:5 r1:5 cf:4 .... sh:2 d:1 t:5 &rrr_cf_d_sh
80faf97ba1SRichard Henderson@rrr_cf_d_sh0   ...... r2:5 r1:5 cf:4 ...... d:1 t:5    &rrr_cf_d_sh sh=0
810588e061SRichard Henderson@rri_cf         ...... r:5  t:5  cf:4 . ...........     &rri_cf i=%lowsign_11
82345aa35fSRichard Henderson@rri_cf_d       ...... r:5  t:5  cf:4 d:1 ...........   &rri_cf_d i=%lowsign_11
830c982a28SRichard Henderson
8401afb7beSRichard Henderson@rrb_cf         ...... r2:5 r1:5 c:3 ........... n:1 .  \
8501afb7beSRichard Henderson                &rrb_c_f disp=%assemble_12
8601afb7beSRichard Henderson@rib_cf         ...... r:5 ..... c:3 ........... n:1 .  \
8701afb7beSRichard Henderson                &rib_c_f disp=%assemble_12 i=%im5_16
8801afb7beSRichard Henderson
89deee69a1SRichard Henderson####
9040f9f908SRichard Henderson# System
9140f9f908SRichard Henderson####
9240f9f908SRichard Henderson
9340f9f908SRichard Hendersonbreak           000000 ----- ----- --- 00000000 -----
94c603e14aSRichard Henderson
95c603e14aSRichard Hendersonmtsp            000000 ----- r:5   ... 11000001 00000   sp=%assemble_sr3
96c603e14aSRichard Hendersonmtctl           000000 t:5   r:5   --- 11000010 00000
97c603e14aSRichard Hendersonmtsarcm         000000 01011 r:5   --- 11000110 00000
98c603e14aSRichard Hendersonmtsm            000000 00000 r:5   000 11000011 00000
99c603e14aSRichard Henderson
100c603e14aSRichard Hendersonmfia            000000 ----- 00000 ---   10100101 t:5
101c603e14aSRichard Hendersonmfsp            000000 ----- 00000 ...   00100101 t:5   sp=%assemble_sr3
102c603e14aSRichard Hendersonmfctl           000000 r:5   00000- e:1 -01000101 t:5
103e36f27efSRichard Henderson
104e36f27efSRichard Hendersonsync            000000 ----- ----- 000 00100000 00000   # sync, syncdma
105e36f27efSRichard Henderson
106e36f27efSRichard Hendersonldsid           000000 b:5   ----- sp:2 0 10000101 t:5
107e36f27efSRichard Henderson
108e36f27efSRichard Hendersonrsm             000000 ..........  000 01110011 t:5     i=%sm_imm
109e36f27efSRichard Hendersonssm             000000 ..........  000 01101011 t:5     i=%sm_imm
110e36f27efSRichard Henderson
111e36f27efSRichard Hendersonrfi             000000 ----- ----- --- 01100000 00000
112e36f27efSRichard Hendersonrfi_r           000000 ----- ----- --- 01100101 00000
113deee69a1SRichard Henderson
11496927adbSRichard Henderson# These are artificial instructions used by QEMU firmware.
11596927adbSRichard Henderson# They are allocated from the unassigned instruction space.
11696927adbSRichard Hendersonhalt            1111 1111 1111 1101 1110 1010 1101 0000
11796927adbSRichard Hendersonreset           1111 1111 1111 1101 1110 1010 1101 0001
1184a4554c6SHelge Dellergetshadowregs   1111 1111 1111 1101 1110 1010 1101 0010
11996927adbSRichard Henderson
120deee69a1SRichard Henderson####
121deee69a1SRichard Henderson# Memory Management
122deee69a1SRichard Henderson####
123deee69a1SRichard Henderson
124deee69a1SRichard Henderson@addrx          ...... b:5 x:5 .. ........ m:1 .....    \
125deee69a1SRichard Henderson                &ldst disp=0 scale=0 t=0 sp=0 size=0
126deee69a1SRichard Henderson
127deee69a1SRichard Hendersonnop             000001 ----- ----- -- 11001010 0 -----         # fdc, disp
128deee69a1SRichard Hendersonnop_addrx       000001 ..... ..... -- 01001010 . -----  @addrx # fdc, index
129deee69a1SRichard Hendersonnop_addrx       000001 ..... ..... -- 01001011 . -----  @addrx # fdce
130deee69a1SRichard Hendersonnop_addrx       000001 ..... ..... --- 0001010 . -----  @addrx # fic 0x0a
131deee69a1SRichard Hendersonnop_addrx       000001 ..... ..... -- 01001111 . 00000  @addrx # fic 0x4f
132deee69a1SRichard Hendersonnop_addrx       000001 ..... ..... --- 0001011 . -----  @addrx # fice
133deee69a1SRichard Hendersonnop_addrx       000001 ..... ..... -- 01001110 . 00000  @addrx # pdc
134deee69a1SRichard Henderson
135deee69a1SRichard Hendersonprobe           000001 b:5 ri:5 sp:2 imm:1 100011 write:1 0 t:5
136deee69a1SRichard Henderson
137deee69a1SRichard Hendersonixtlbx          000001 b:5 r:5 sp:2 0100000 addr:1 0 00000      data=1
138deee69a1SRichard Hendersonixtlbx          000001 b:5 r:5 ... 000000 addr:1 0 00000        \
139deee69a1SRichard Henderson                sp=%assemble_sr3x data=0
140deee69a1SRichard Henderson
1416797c315SNick Hudson# pcxl and pcxl2 Fast TLB Insert instructions
1426797c315SNick Hudsonixtlbxf         000001 00000 r:5 00 0 data:1 01000 addr:1 0 00000
1436797c315SNick Hudson
144deee69a1SRichard Hendersonpxtlbx          000001 b:5 x:5 sp:2 0100100 local:1 m:1 -----   data=1
145deee69a1SRichard Hendersonpxtlbx          000001 b:5 x:5 ... 000100 local:1 m:1 -----     \
146deee69a1SRichard Henderson                sp=%assemble_sr3x data=0
147deee69a1SRichard Henderson
148deee69a1SRichard Hendersonlpa             000001 b:5 x:5 sp:2 01001101 m:1 t:5    \
149deee69a1SRichard Henderson                &ldst disp=0 scale=0 size=0
150deee69a1SRichard Henderson
151deee69a1SRichard Hendersonlci             000001 ----- ----- -- 01001100 0 t:5
1520c982a28SRichard Henderson
1530c982a28SRichard Henderson####
1540c982a28SRichard Henderson# Arith/Log
1550c982a28SRichard Henderson####
1560c982a28SRichard Henderson
157fa8e3bedSRichard Hendersonandcm           000010 ..... ..... .... 000000 . .....  @rrr_cf_d
158fa8e3bedSRichard Hendersonand             000010 ..... ..... .... 001000 . .....  @rrr_cf_d
159fa8e3bedSRichard Hendersonor              000010 ..... ..... .... 001001 . .....  @rrr_cf_d
160fa8e3bedSRichard Hendersonxor             000010 ..... ..... .... 001010 . .....  @rrr_cf_d
161af240753SRichard Hendersonuxor            000010 ..... ..... .... 001110 . .....  @rrr_cf_d
1620c982a28SRichard Hendersonds              000010 ..... ..... .... 010001 0 .....  @rrr_cf
163345aa35fSRichard Hendersoncmpclr          000010 ..... ..... .... 100010 . .....  @rrr_cf_d
164af240753SRichard Hendersonuaddcm          000010 ..... ..... .... 100110 . .....  @rrr_cf_d
165af240753SRichard Hendersonuaddcm_tc       000010 ..... ..... .... 100111 . .....  @rrr_cf_d
166af240753SRichard Hendersondcor            000010 ..... 00000 .... 101110 . .....  @rr_cf_d
167af240753SRichard Hendersondcor_i          000010 ..... 00000 .... 101111 . .....  @rr_cf_d
1680c982a28SRichard Henderson
169faf97ba1SRichard Hendersonadd             000010 ..... ..... .... 0110.. . .....  @rrr_cf_d_sh
170faf97ba1SRichard Hendersonadd_l           000010 ..... ..... .... 1010.. . .....  @rrr_cf_d_sh
171faf97ba1SRichard Hendersonadd_tsv         000010 ..... ..... .... 1110.. . .....  @rrr_cf_d_sh
172faf97ba1SRichard Hendersonadd_c           000010 ..... ..... .... 011100 . .....  @rrr_cf_d_sh0
173faf97ba1SRichard Hendersonadd_c_tsv       000010 ..... ..... .... 111100 . .....  @rrr_cf_d_sh0
1740c982a28SRichard Henderson
17563c427c6SRichard Hendersonsub             000010 ..... ..... .... 010000 . .....  @rrr_cf_d
17663c427c6SRichard Hendersonsub_tsv         000010 ..... ..... .... 110000 . .....  @rrr_cf_d
17763c427c6SRichard Hendersonsub_tc          000010 ..... ..... .... 010011 . .....  @rrr_cf_d
17863c427c6SRichard Hendersonsub_tsv_tc      000010 ..... ..... .... 110011 . .....  @rrr_cf_d
17963c427c6SRichard Hendersonsub_b           000010 ..... ..... .... 010100 . .....  @rrr_cf_d
18063c427c6SRichard Hendersonsub_b_tsv       000010 ..... ..... .... 110100 . .....  @rrr_cf_d
1811cd012a5SRichard Henderson
1820588e061SRichard Hendersonldil            001000 t:5 .....................        i=%assemble_21
1830588e061SRichard Hendersonaddil           001010 r:5 .....................        i=%assemble_21
1840588e061SRichard Hendersonldo             001101 b:5 t:5 -- ..............        i=%lowsign_14
1850588e061SRichard Henderson
1860588e061SRichard Hendersonaddi            101101 ..... ..... .... 0 ...........   @rri_cf
1870588e061SRichard Hendersonaddi_tsv        101101 ..... ..... .... 1 ...........   @rri_cf
1880588e061SRichard Hendersonaddi_tc         101100 ..... ..... .... 0 ...........   @rri_cf
1890588e061SRichard Hendersonaddi_tc_tsv     101100 ..... ..... .... 1 ...........   @rri_cf
1900588e061SRichard Henderson
1910588e061SRichard Hendersonsubi            100101 ..... ..... .... 0 ...........   @rri_cf
1920588e061SRichard Hendersonsubi_tsv        100101 ..... ..... .... 1 ...........   @rri_cf
1930588e061SRichard Henderson
194345aa35fSRichard Hendersoncmpiclr         100100 ..... ..... .... . ...........   @rri_cf_d
1950588e061SRichard Henderson
1961cd012a5SRichard Henderson####
1971cd012a5SRichard Henderson# Index Mem
1981cd012a5SRichard Henderson####
1991cd012a5SRichard Henderson
2001cd012a5SRichard Henderson@ldstx          ...... b:5 x:5 sp:2 scale:1 ....... m:1 t:5     &ldst disp=0
2011cd012a5SRichard Henderson@ldim5          ...... b:5 ..... sp:2 ......... t:5     \
2021cd012a5SRichard Henderson                &ldst disp=%im5_16 x=0 scale=0 m=%ma_to_m
2031cd012a5SRichard Henderson@stim5          ...... b:5 t:5 sp:2 ......... .....     \
2041cd012a5SRichard Henderson                &ldst disp=%im5_0 x=0 scale=0 m=%ma_to_m
2051cd012a5SRichard Henderson
2061cd012a5SRichard Hendersonld              000011 ..... ..... .. . 1 -- 00 size:2 ......   @ldim5
2071cd012a5SRichard Hendersonld              000011 ..... ..... .. . 0 -- 00 size:2 ......   @ldstx
2081cd012a5SRichard Hendersonst              000011 ..... ..... .. . 1 -- 10 size:2 ......   @stim5
2091cd012a5SRichard Hendersonldc             000011 ..... ..... .. . 1 -- 0111      ......   @ldim5 size=2
2101cd012a5SRichard Hendersonldc             000011 ..... ..... .. . 0 -- 0111      ......   @ldstx size=2
2111cd012a5SRichard Hendersonlda             000011 ..... ..... .. . 1 -- 0110      ......   @ldim5 size=2
2121cd012a5SRichard Hendersonlda             000011 ..... ..... .. . 0 -- 0110      ......   @ldstx size=2
2131cd012a5SRichard Hendersonsta             000011 ..... ..... .. . 1 -- 1110      ......   @stim5 size=2
2141cd012a5SRichard Hendersonstby            000011 b:5 r:5 sp:2 a:1 1 -- 1100 m:1   .....   disp=%im5_0
215b1e2af57SRichard Henderson
216e8777db7SRichard Henderson@fldstwx        ...... b:5 x:5   sp:2 scale:1 ....... m:1 ..... \
217e8777db7SRichard Henderson                &ldst t=%rt64 disp=0 size=2
218e8777db7SRichard Henderson@fldstwi        ...... b:5 ..... sp:2 .       ....... .   ..... \
219e8777db7SRichard Henderson                &ldst t=%rt64 disp=%im5_16 m=%ma_to_m x=0 scale=0 size=2
220e8777db7SRichard Henderson
221e8777db7SRichard Hendersonfldw            001001 ..... ..... .. . 0 -- 000 . . .....      @fldstwx
222e8777db7SRichard Hendersonfldw            001001 ..... ..... .. . 1 -- 000 . . .....      @fldstwi
223e8777db7SRichard Hendersonfstw            001001 ..... ..... .. . 0 -- 100 . . .....      @fldstwx
224e8777db7SRichard Hendersonfstw            001001 ..... ..... .. . 1 -- 100 . . .....      @fldstwi
225e8777db7SRichard Henderson
226e8777db7SRichard Henderson@fldstdx        ...... b:5 x:5   sp:2 scale:1 ....... m:1 t:5 \
227e8777db7SRichard Henderson                &ldst disp=0 size=3
228e8777db7SRichard Henderson@fldstdi        ...... b:5 ..... sp:2 .       ....... .   t:5 \
229e8777db7SRichard Henderson                &ldst disp=%im5_16 m=%ma_to_m x=0 scale=0 size=3
230e8777db7SRichard Henderson
231e8777db7SRichard Hendersonfldd            001011 ..... ..... .. . 0 -- 000 0 . .....      @fldstdx
232e8777db7SRichard Hendersonfldd            001011 ..... ..... .. . 1 -- 000 0 . .....      @fldstdi
233e8777db7SRichard Hendersonfstd            001011 ..... ..... .. . 0 -- 100 0 . .....      @fldstdx
234e8777db7SRichard Hendersonfstd            001011 ..... ..... .. . 1 -- 100 0 . .....      @fldstdi
235e8777db7SRichard Henderson
236b1e2af57SRichard Henderson####
237740038d7SRichard Henderson# Offset Mem
238740038d7SRichard Henderson####
239740038d7SRichard Henderson
240740038d7SRichard Henderson@ldstim14       ...... b:5 t:5 sp:2 ..............      \
241740038d7SRichard Henderson                &ldst disp=%lowsign_14 x=0 scale=0 m=0
242740038d7SRichard Henderson@ldstim14m      ...... b:5 t:5 sp:2 ..............      \
243740038d7SRichard Henderson                &ldst disp=%lowsign_14 x=0 scale=0 m=%neg_to_m
244740038d7SRichard Henderson@ldstim12m      ...... b:5 t:5 sp:2 ..............      \
245740038d7SRichard Henderson                &ldst disp=%assemble_12a x=0 scale=0 m=%pos_to_m
246740038d7SRichard Henderson
247740038d7SRichard Henderson# LDB, LDH, LDW, LDWM
248740038d7SRichard Hendersonld              010000 ..... ..... .. ..............    @ldstim14  size=0
249740038d7SRichard Hendersonld              010001 ..... ..... .. ..............    @ldstim14  size=1
250740038d7SRichard Hendersonld              010010 ..... ..... .. ..............    @ldstim14  size=2
251740038d7SRichard Hendersonld              010011 ..... ..... .. ..............    @ldstim14m size=2
252740038d7SRichard Hendersonld              010111 ..... ..... .. ...........10.    @ldstim12m size=2
253740038d7SRichard Henderson
254740038d7SRichard Henderson# STB, STH, STW, STWM
255740038d7SRichard Hendersonst              011000 ..... ..... .. ..............    @ldstim14  size=0
256740038d7SRichard Hendersonst              011001 ..... ..... .. ..............    @ldstim14  size=1
257740038d7SRichard Hendersonst              011010 ..... ..... .. ..............    @ldstim14  size=2
258740038d7SRichard Hendersonst              011011 ..... ..... .. ..............    @ldstim14m size=2
259740038d7SRichard Hendersonst              011111 ..... ..... .. ...........10.    @ldstim12m size=2
260740038d7SRichard Henderson
261740038d7SRichard Hendersonfldw            010110 b:5 ..... sp:2 ..............    \
262740038d7SRichard Henderson                &ldst disp=%assemble_12a t=%rm64 m=%a_to_m x=0 scale=0 size=2
263740038d7SRichard Hendersonfldw            010111 b:5 ..... sp:2 ...........0..    \
264740038d7SRichard Henderson                &ldst disp=%assemble_12a t=%rm64 m=0 x=0 scale=0 size=2
265740038d7SRichard Henderson
266740038d7SRichard Hendersonfstw            011110 b:5 ..... sp:2 ..............    \
267740038d7SRichard Henderson                &ldst disp=%assemble_12a t=%rm64 m=%a_to_m x=0 scale=0 size=2
268740038d7SRichard Hendersonfstw            011111 b:5 ..... sp:2 ...........0..    \
269740038d7SRichard Henderson                &ldst disp=%assemble_12a t=%rm64 m=0 x=0 scale=0 size=2
270740038d7SRichard Henderson
271740038d7SRichard Hendersonfldd            010100 b:5 t:5   sp:2 .......... .. 1 . \
272740038d7SRichard Henderson                &ldst disp=%assemble_11a m=%ma2_to_m x=0 scale=0 size=3
273740038d7SRichard Henderson
274740038d7SRichard Hendersonfstd            011100 b:5 t:5   sp:2 .......... .. 1 . \
275740038d7SRichard Henderson                &ldst disp=%assemble_11a m=%ma2_to_m x=0 scale=0 size=3
276740038d7SRichard Henderson
277740038d7SRichard Henderson####
278b1e2af57SRichard Henderson# Floating-point Multiply Add
279b1e2af57SRichard Henderson####
280b1e2af57SRichard Henderson
281b1e2af57SRichard Henderson&mpyadd         rm1 rm2 ta ra tm
282b1e2af57SRichard Henderson@mpyadd         ...... rm1:5 rm2:5 ta:5 ra:5 . tm:5     &mpyadd
283b1e2af57SRichard Henderson
284b1e2af57SRichard Hendersonfmpyadd_f       000110 ..... ..... ..... ..... 0 .....  @mpyadd
285b1e2af57SRichard Hendersonfmpyadd_d       000110 ..... ..... ..... ..... 1 .....  @mpyadd
286b1e2af57SRichard Hendersonfmpysub_f       100110 ..... ..... ..... ..... 0 .....  @mpyadd
287b1e2af57SRichard Hendersonfmpysub_d       100110 ..... ..... ..... ..... 1 .....  @mpyadd
28801afb7beSRichard Henderson
28901afb7beSRichard Henderson####
29001afb7beSRichard Henderson# Conditional Branches
29101afb7beSRichard Henderson####
29201afb7beSRichard Henderson
293*84e224d4SRichard Hendersonbb_sar          110000 00000 r:5 c:1 1 d:1 ........... n:1 . disp=%assemble_12
294*84e224d4SRichard Hendersonbb_imm          110001 p:5   r:5 c:1 1 d:1 ........... n:1 . disp=%assemble_12
29501afb7beSRichard Henderson
29601afb7beSRichard Hendersonmovb            110010 ..... ..... ... ........... . .  @rrb_cf f=0
29701afb7beSRichard Hendersonmovbi           110011 ..... ..... ... ........... . .  @rib_cf f=0
29801afb7beSRichard Henderson
29901afb7beSRichard Hendersoncmpb            100000 ..... ..... ... ........... . .  @rrb_cf f=0
30001afb7beSRichard Hendersoncmpb            100010 ..... ..... ... ........... . .  @rrb_cf f=1
30101afb7beSRichard Hendersoncmpbi           100001 ..... ..... ... ........... . .  @rib_cf f=0
30201afb7beSRichard Hendersoncmpbi           100011 ..... ..... ... ........... . .  @rib_cf f=1
30301afb7beSRichard Henderson
30401afb7beSRichard Hendersonaddb            101000 ..... ..... ... ........... . .  @rrb_cf f=0
30501afb7beSRichard Hendersonaddb            101010 ..... ..... ... ........... . .  @rrb_cf f=1
30601afb7beSRichard Hendersonaddbi           101001 ..... ..... ... ........... . .  @rib_cf f=0
30701afb7beSRichard Hendersonaddbi           101011 ..... ..... ... ........... . .  @rib_cf f=1
30830878590SRichard Henderson
30930878590SRichard Henderson####
31030878590SRichard Henderson# Shift, Extract, Deposit
31130878590SRichard Henderson####
31230878590SRichard Henderson
31330878590SRichard Hendersonshrpw_sar       110100 r2:5 r1:5 c:3 00 0    00000  t:5
31430878590SRichard Hendersonshrpw_imm       110100 r2:5 r1:5 c:3 01 0    cpos:5 t:5
31530878590SRichard Henderson
31630878590SRichard Hendersonextrw_sar       110100 r:5  t:5  c:3 10 se:1 00000  clen:5
31730878590SRichard Hendersonextrw_imm       110100 r:5  t:5  c:3 11 se:1 pos:5  clen:5
31830878590SRichard Henderson
31930878590SRichard Hendersondepw_sar        110101 t:5 r:5   c:3 00 nz:1 00000  clen:5
32030878590SRichard Hendersondepw_imm        110101 t:5 r:5   c:3 01 nz:1 cpos:5 clen:5
32130878590SRichard Hendersondepwi_sar       110101 t:5 ..... c:3 10 nz:1 00000  clen:5      i=%im5_16
32230878590SRichard Hendersondepwi_imm       110101 t:5 ..... c:3 11 nz:1 cpos:5 clen:5      i=%im5_16
3238340f534SRichard Henderson
3248340f534SRichard Henderson####
3258340f534SRichard Henderson# Branch External
3268340f534SRichard Henderson####
3278340f534SRichard Henderson
3288340f534SRichard Henderson&BE             b l n disp sp
3298340f534SRichard Henderson@be             ...... b:5 ..... ... ........... n:1 .  \
3308340f534SRichard Henderson                &BE disp=%assemble_17 sp=%assemble_sr3
3318340f534SRichard Henderson
3328340f534SRichard Hendersonbe              111000 ..... ..... ... ........... . .  @be l=0
3338340f534SRichard Hendersonbe              111001 ..... ..... ... ........... . .  @be l=31
3348340f534SRichard Henderson
3358340f534SRichard Henderson####
3368340f534SRichard Henderson# Branch
3378340f534SRichard Henderson####
3388340f534SRichard Henderson
3398340f534SRichard Henderson&BL             l n disp
3408340f534SRichard Henderson@bl             ...... l:5 ..... ... ........... n:1 .  &BL disp=%assemble_17
3418340f534SRichard Henderson
3428340f534SRichard Henderson# B,L and B,L,PUSH
3438340f534SRichard Hendersonbl              111010 ..... ..... 000 ........... .   .        @bl
3448340f534SRichard Hendersonbl              111010 ..... ..... 100 ........... .   .        @bl
3458340f534SRichard Henderson# B,L (long displacement)
3468340f534SRichard Hendersonbl              111010 ..... ..... 101 ........... n:1 .        &BL l=2 \
3478340f534SRichard Henderson                disp=%assemble_22
3488340f534SRichard Hendersonb_gate          111010 ..... ..... 001 ........... .   .        @bl
3498340f534SRichard Hendersonblr             111010 l:5   x:5   010 00000000000 n:1 0
3508340f534SRichard Hendersonbv              111010 b:5   x:5   110 00000000000 n:1 0
3518340f534SRichard Hendersonbve             111010 b:5   00000 110 10000000000 n:1 -        l=0
3528340f534SRichard Hendersonbve             111010 b:5   00000 111 10000000000 n:1 -        l=2
353c3bad4f8SRichard Henderson
354c3bad4f8SRichard Henderson####
355c3bad4f8SRichard Henderson# FP Fused Multiple-Add
356c3bad4f8SRichard Henderson####
357c3bad4f8SRichard Henderson
358c3bad4f8SRichard Hendersonfmpyfadd_f      101110 ..... ..... ... . 0 ... . . neg:1 ..... \
359c3bad4f8SRichard Henderson                rm1=%ra64 rm2=%rb64 ra3=%rc64 t=%rt64
360c3bad4f8SRichard Hendersonfmpyfadd_d      101110 rm1:5 rm2:5 ... 0 1 ..0 0 0 neg:1 t:5    ra3=%rc32
3611ca74648SRichard Henderson
3621ca74648SRichard Henderson####
3631ca74648SRichard Henderson# FP operations
3641ca74648SRichard Henderson####
3651ca74648SRichard Henderson
3661ca74648SRichard Henderson&fclass01       r t
3671ca74648SRichard Henderson&fclass2        r1 r2 c y
3681ca74648SRichard Henderson&fclass3        r1 r2 t
3691ca74648SRichard Henderson
3701ca74648SRichard Henderson@f0c_0          ...... r:5  00000 ..... 00 000 0 t:5    &fclass01
3711ca74648SRichard Henderson@f0c_1          ...... r:5  000.. ..... 01 000 0 t:5    &fclass01
3721ca74648SRichard Henderson@f0c_2          ...... r1:5 r2:5 y:3 .. 10 000 . c:5    &fclass2
3731ca74648SRichard Henderson@f0c_3          ...... r1:5 r2:5  ..... 11 000 0 t:5    &fclass3
3741ca74648SRichard Henderson
3751ca74648SRichard Henderson@f0e_f_0        ...... ..... 00000 ... 0 0 000 .. 0 .....  \
3761ca74648SRichard Henderson                &fclass01 r=%ra64 t=%rt64
3771ca74648SRichard Henderson@f0e_d_0        ...... r:5   00000 ... 0 1 000 00 0 t:5    &fclass01
3781ca74648SRichard Henderson
3791ca74648SRichard Henderson@f0e_ff_1       ...... ..... 000  ... 0000 010 .. 0 .....  \
3801ca74648SRichard Henderson                &fclass01 r=%ra64 t=%rt64
3811ca74648SRichard Henderson@f0e_fd_1       ...... ..... 000  ... 0100 010 .0 0 t:5    &fclass01 r=%ra64
3821ca74648SRichard Henderson@f0e_df_1       ...... r:5   000  ... 0001 010 0. 0 .....  &fclass01 t=%rt64
3831ca74648SRichard Henderson@f0e_dd_1       ...... r:5   000  ... 0101 010 00 0 t:5    &fclass01
3841ca74648SRichard Henderson
3851ca74648SRichard Henderson@f0e_f_2        ...... ..... ..... y:3 .0 100 .00 c:5      \
3861ca74648SRichard Henderson                &fclass2 r1=%ra64 r2=%rb64
3871ca74648SRichard Henderson@f0e_d_2        ...... r1:5  r2:5  y:3 01 100 000 c:5      &fclass2
3881ca74648SRichard Henderson
3891ca74648SRichard Henderson@f0e_f_3        ...... ..... ..... ... .0 110 ..0 .....    \
3901ca74648SRichard Henderson                &fclass3 r1=%ra64 r2=%rb64 t=%rt64
3911ca74648SRichard Henderson@f0e_d_3        ...... r1:5  r2:5  ... 01 110 000 t:5
3921ca74648SRichard Henderson
3931ca74648SRichard Henderson# Floating point class 0
3941ca74648SRichard Henderson
39559f8c04bSHelge Dellerfid_f           001100 00000 00000 000 00 000000 00000
3961ca74648SRichard Henderson
3971ca74648SRichard Hendersonfcpy_f          001100 ..... ..... 010 00 ...... .....  @f0c_0
3981ca74648SRichard Hendersonfabs_f          001100 ..... ..... 011 00 ...... .....  @f0c_0
3991ca74648SRichard Hendersonfsqrt_f         001100 ..... ..... 100 00 ...... .....  @f0c_0
4001ca74648SRichard Hendersonfrnd_f          001100 ..... ..... 101 00 ...... .....  @f0c_0
4011ca74648SRichard Hendersonfneg_f          001100 ..... ..... 110 00 ...... .....  @f0c_0
4021ca74648SRichard Hendersonfnegabs_f       001100 ..... ..... 111 00 ...... .....  @f0c_0
4031ca74648SRichard Henderson
4041ca74648SRichard Hendersonfcpy_d          001100 ..... ..... 010 01 ...... .....  @f0c_0
4051ca74648SRichard Hendersonfabs_d          001100 ..... ..... 011 01 ...... .....  @f0c_0
4061ca74648SRichard Hendersonfsqrt_d         001100 ..... ..... 100 01 ...... .....  @f0c_0
4071ca74648SRichard Hendersonfrnd_d          001100 ..... ..... 101 01 ...... .....  @f0c_0
4081ca74648SRichard Hendersonfneg_d          001100 ..... ..... 110 01 ...... .....  @f0c_0
4091ca74648SRichard Hendersonfnegabs_d       001100 ..... ..... 111 01 ...... .....  @f0c_0
4101ca74648SRichard Henderson
4111ca74648SRichard Hendersonfcpy_f          001110 ..... ..... 010 ........ .....   @f0e_f_0
4121ca74648SRichard Hendersonfabs_f          001110 ..... ..... 011 ........ .....   @f0e_f_0
4131ca74648SRichard Hendersonfsqrt_f         001110 ..... ..... 100 ........ .....   @f0e_f_0
4141ca74648SRichard Hendersonfrnd_f          001110 ..... ..... 101 ........ .....   @f0e_f_0
4151ca74648SRichard Hendersonfneg_f          001110 ..... ..... 110 ........ .....   @f0e_f_0
4161ca74648SRichard Hendersonfnegabs_f       001110 ..... ..... 111 ........ .....   @f0e_f_0
4171ca74648SRichard Henderson
4181ca74648SRichard Hendersonfcpy_d          001110 ..... ..... 010 ........ .....   @f0e_d_0
4191ca74648SRichard Hendersonfabs_d          001110 ..... ..... 011 ........ .....   @f0e_d_0
4201ca74648SRichard Hendersonfsqrt_d         001110 ..... ..... 100 ........ .....   @f0e_d_0
4211ca74648SRichard Hendersonfrnd_d          001110 ..... ..... 101 ........ .....   @f0e_d_0
4221ca74648SRichard Hendersonfneg_d          001110 ..... ..... 110 ........ .....   @f0e_d_0
4231ca74648SRichard Hendersonfnegabs_d       001110 ..... ..... 111 ........ .....   @f0e_d_0
4241ca74648SRichard Henderson
4251ca74648SRichard Henderson# Floating point class 1
4261ca74648SRichard Henderson
4271ca74648SRichard Henderson# float/float
4281ca74648SRichard Hendersonfcnv_d_f        001100 ..... ... 000 00 01 ...... ..... @f0c_1
4291ca74648SRichard Hendersonfcnv_f_d        001100 ..... ... 000 01 00 ...... ..... @f0c_1
4301ca74648SRichard Henderson
4311ca74648SRichard Hendersonfcnv_d_f        001110 ..... ... 000 .......... .....   @f0e_df_1
4321ca74648SRichard Hendersonfcnv_f_d        001110 ..... ... 000 .......... .....   @f0e_fd_1
4331ca74648SRichard Henderson
4341ca74648SRichard Henderson# int/float
4351ca74648SRichard Hendersonfcnv_w_f        001100 ..... ... 001 00 00 ...... ..... @f0c_1
4361ca74648SRichard Hendersonfcnv_q_f        001100 ..... ... 001 00 01 ...... ..... @f0c_1
4371ca74648SRichard Hendersonfcnv_w_d        001100 ..... ... 001 01 00 ...... ..... @f0c_1
4381ca74648SRichard Hendersonfcnv_q_d        001100 ..... ... 001 01 01 ...... ..... @f0c_1
4391ca74648SRichard Henderson
4401ca74648SRichard Hendersonfcnv_w_f        001110 ..... ... 001 .......... .....   @f0e_ff_1
4411ca74648SRichard Hendersonfcnv_q_f        001110 ..... ... 001 .......... .....   @f0e_df_1
4421ca74648SRichard Hendersonfcnv_w_d        001110 ..... ... 001 .......... .....   @f0e_fd_1
4431ca74648SRichard Hendersonfcnv_q_d        001110 ..... ... 001 .......... .....   @f0e_dd_1
4441ca74648SRichard Henderson
4451ca74648SRichard Henderson# float/int
4461ca74648SRichard Hendersonfcnv_f_w        001100 ..... ... 010 00 00 ...... ..... @f0c_1
4471ca74648SRichard Hendersonfcnv_d_w        001100 ..... ... 010 00 01 ...... ..... @f0c_1
4481ca74648SRichard Hendersonfcnv_f_q        001100 ..... ... 010 01 00 ...... ..... @f0c_1
4491ca74648SRichard Hendersonfcnv_d_q        001100 ..... ... 010 01 01 ...... ..... @f0c_1
4501ca74648SRichard Henderson
4511ca74648SRichard Hendersonfcnv_f_w        001110 ..... ... 010 .......... .....   @f0e_ff_1
4521ca74648SRichard Hendersonfcnv_d_w        001110 ..... ... 010 .......... .....   @f0e_df_1
4531ca74648SRichard Hendersonfcnv_f_q        001110 ..... ... 010 .......... .....   @f0e_fd_1
4541ca74648SRichard Hendersonfcnv_d_q        001110 ..... ... 010 .......... .....   @f0e_dd_1
4551ca74648SRichard Henderson
4561ca74648SRichard Henderson# float/int truncate
4571ca74648SRichard Hendersonfcnv_t_f_w      001100 ..... ... 011 00 00 ...... ..... @f0c_1
4581ca74648SRichard Hendersonfcnv_t_d_w      001100 ..... ... 011 00 01 ...... ..... @f0c_1
4591ca74648SRichard Hendersonfcnv_t_f_q      001100 ..... ... 011 01 00 ...... ..... @f0c_1
4601ca74648SRichard Hendersonfcnv_t_d_q      001100 ..... ... 011 01 01 ...... ..... @f0c_1
4611ca74648SRichard Henderson
4621ca74648SRichard Hendersonfcnv_t_f_w      001110 ..... ... 011 .......... .....   @f0e_ff_1
4631ca74648SRichard Hendersonfcnv_t_d_w      001110 ..... ... 011 .......... .....   @f0e_df_1
4641ca74648SRichard Hendersonfcnv_t_f_q      001110 ..... ... 011 .......... .....   @f0e_fd_1
4651ca74648SRichard Hendersonfcnv_t_d_q      001110 ..... ... 011 .......... .....   @f0e_dd_1
4661ca74648SRichard Henderson
4671ca74648SRichard Henderson# uint/float
4681ca74648SRichard Hendersonfcnv_uw_f       001100 ..... ... 101 00 00 ...... ..... @f0c_1
4691ca74648SRichard Hendersonfcnv_uq_f       001100 ..... ... 101 00 01 ...... ..... @f0c_1
4701ca74648SRichard Hendersonfcnv_uw_d       001100 ..... ... 101 01 00 ...... ..... @f0c_1
4711ca74648SRichard Hendersonfcnv_uq_d       001100 ..... ... 101 01 01 ...... ..... @f0c_1
4721ca74648SRichard Henderson
4731ca74648SRichard Hendersonfcnv_uw_f       001110 ..... ... 101 .......... .....   @f0e_ff_1
4741ca74648SRichard Hendersonfcnv_uq_f       001110 ..... ... 101 .......... .....   @f0e_df_1
4751ca74648SRichard Hendersonfcnv_uw_d       001110 ..... ... 101 .......... .....   @f0e_fd_1
4761ca74648SRichard Hendersonfcnv_uq_d       001110 ..... ... 101 .......... .....   @f0e_dd_1
4771ca74648SRichard Henderson
4781ca74648SRichard Henderson# float/int
4791ca74648SRichard Hendersonfcnv_f_uw       001100 ..... ... 110 00 00 ...... ..... @f0c_1
4801ca74648SRichard Hendersonfcnv_d_uw       001100 ..... ... 110 00 01 ...... ..... @f0c_1
4811ca74648SRichard Hendersonfcnv_f_uq       001100 ..... ... 110 01 00 ...... ..... @f0c_1
4821ca74648SRichard Hendersonfcnv_d_uq       001100 ..... ... 110 01 01 ...... ..... @f0c_1
4831ca74648SRichard Henderson
4841ca74648SRichard Hendersonfcnv_f_uw       001110 ..... ... 110 .......... .....   @f0e_ff_1
4851ca74648SRichard Hendersonfcnv_d_uw       001110 ..... ... 110 .......... .....   @f0e_df_1
4861ca74648SRichard Hendersonfcnv_f_uq       001110 ..... ... 110 .......... .....   @f0e_fd_1
4871ca74648SRichard Hendersonfcnv_d_uq       001110 ..... ... 110 .......... .....   @f0e_dd_1
4881ca74648SRichard Henderson
4891ca74648SRichard Henderson# float/int truncate
4901ca74648SRichard Hendersonfcnv_t_f_uw     001100 ..... ... 111 00 00 ...... ..... @f0c_1
4911ca74648SRichard Hendersonfcnv_t_d_uw     001100 ..... ... 111 00 01 ...... ..... @f0c_1
4921ca74648SRichard Hendersonfcnv_t_f_uq     001100 ..... ... 111 01 00 ...... ..... @f0c_1
4931ca74648SRichard Hendersonfcnv_t_d_uq     001100 ..... ... 111 01 01 ...... ..... @f0c_1
4941ca74648SRichard Henderson
4951ca74648SRichard Hendersonfcnv_t_f_uw     001110 ..... ... 111 .......... .....   @f0e_ff_1
4961ca74648SRichard Hendersonfcnv_t_d_uw     001110 ..... ... 111 .......... .....   @f0e_df_1
4971ca74648SRichard Hendersonfcnv_t_f_uq     001110 ..... ... 111 .......... .....   @f0e_fd_1
4981ca74648SRichard Hendersonfcnv_t_d_uq     001110 ..... ... 111 .......... .....   @f0e_dd_1
4991ca74648SRichard Henderson
5001ca74648SRichard Henderson# Floating point class 2
5011ca74648SRichard Henderson
5021ca74648SRichard Hendersonftest           001100 00000 00000 y:3 00 10000 1 c:5
5031ca74648SRichard Henderson
5041ca74648SRichard Hendersonfcmp_f          001100 ..... ..... ... 00 ..... 0 ..... @f0c_2
5051ca74648SRichard Hendersonfcmp_d          001100 ..... ..... ... 01 ..... 0 ..... @f0c_2
5061ca74648SRichard Henderson
5071ca74648SRichard Hendersonfcmp_f          001110 ..... ..... ... ..... ... .....  @f0e_f_2
5081ca74648SRichard Hendersonfcmp_d          001110 ..... ..... ... ..... ... .....  @f0e_d_2
5091ca74648SRichard Henderson
5101ca74648SRichard Henderson# Floating point class 3
5111ca74648SRichard Henderson
5121ca74648SRichard Hendersonfadd_f          001100 ..... ..... 000 00 ...... .....  @f0c_3
5131ca74648SRichard Hendersonfsub_f          001100 ..... ..... 001 00 ...... .....  @f0c_3
5141ca74648SRichard Hendersonfmpy_f          001100 ..... ..... 010 00 ...... .....  @f0c_3
5151ca74648SRichard Hendersonfdiv_f          001100 ..... ..... 011 00 ...... .....  @f0c_3
5161ca74648SRichard Henderson
5171ca74648SRichard Hendersonfadd_d          001100 ..... ..... 000 01 ...... .....  @f0c_3
5181ca74648SRichard Hendersonfsub_d          001100 ..... ..... 001 01 ...... .....  @f0c_3
5191ca74648SRichard Hendersonfmpy_d          001100 ..... ..... 010 01 ...... .....  @f0c_3
5201ca74648SRichard Hendersonfdiv_d          001100 ..... ..... 011 01 ...... .....  @f0c_3
5211ca74648SRichard Henderson
5221ca74648SRichard Hendersonfadd_f          001110 ..... ..... 000 ..... ... .....  @f0e_f_3
5231ca74648SRichard Hendersonfsub_f          001110 ..... ..... 001 ..... ... .....  @f0e_f_3
5241ca74648SRichard Hendersonfmpy_f          001110 ..... ..... 010 ..... ... .....  @f0e_f_3
5251ca74648SRichard Hendersonfdiv_f          001110 ..... ..... 011 ..... ... .....  @f0e_f_3
5261ca74648SRichard Henderson
5271ca74648SRichard Hendersonfadd_d          001110 ..... ..... 000 ..... ... .....  @f0e_d_3
5281ca74648SRichard Hendersonfsub_d          001110 ..... ..... 001 ..... ... .....  @f0e_d_3
5291ca74648SRichard Hendersonfmpy_d          001110 ..... ..... 010 ..... ... .....  @f0e_d_3
5301ca74648SRichard Hendersonfdiv_d          001110 ..... ..... 011 ..... ... .....  @f0e_d_3
5311ca74648SRichard Henderson
5321ca74648SRichard Hendersonxmpyu           001110 ..... ..... 010 .0111 .00 t:5    r1=%ra64 r2=%rb64
53315da177bSSven Schnelle
53415da177bSSven Schnelle# diag
535a64b8842SHelge Dellerdiag            000101 i:26
536