xref: /qemu/target/hppa/insns.decode (revision 01afb7be33e346a7475a1b21bf04927c4ab29f6f)
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
940f9f908SRichard Henderson# version 2 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
27*01afb7beSRichard Henderson%assemble_12    0:s1 2:1 3:10  !function=expand_shl2
28*01afb7beSRichard Henderson
29e36f27efSRichard Henderson%sm_imm         16:10 !function=expand_sm_imm
30e36f27efSRichard Henderson
311cd012a5SRichard Henderson%im5_0          0:s1 1:4
321cd012a5SRichard Henderson%im5_16         16:s1 17:4
331cd012a5SRichard Henderson%ma_to_m        5:1 13:1 !function=ma_to_m
341cd012a5SRichard Henderson
35c603e14aSRichard Henderson####
36deee69a1SRichard Henderson# Argument set definitions
37deee69a1SRichard Henderson####
38deee69a1SRichard Henderson
39deee69a1SRichard Henderson# All insns that need to form a virtual address should use this set.
40deee69a1SRichard Henderson&ldst           t b x disp sp m scale size
41deee69a1SRichard Henderson
420c982a28SRichard Henderson&rr_cf          t r cf
430c982a28SRichard Henderson&rrr_cf         t r1 r2 cf
440c982a28SRichard Henderson&rrr_cf_sh      t r1 r2 cf sh
450c982a28SRichard Henderson
46*01afb7beSRichard Henderson&rrb_c_f        disp n c f r1 r2
47*01afb7beSRichard Henderson&rib_c_f        disp n c f r i
48*01afb7beSRichard Henderson
490c982a28SRichard Henderson####
500c982a28SRichard Henderson# Format definitions
510c982a28SRichard Henderson####
520c982a28SRichard Henderson
530c982a28SRichard Henderson@rr_cf          ...... r:5 ..... cf:4 ....... t:5       &rr_cf
540c982a28SRichard Henderson@rrr_cf         ...... r2:5 r1:5 cf:4 ....... t:5       &rrr_cf
550c982a28SRichard Henderson@rrr_cf_sh      ...... r2:5 r1:5 cf:4 .... sh:2 . t:5   &rrr_cf_sh
560c982a28SRichard Henderson@rrr_cf_sh0     ...... r2:5 r1:5 cf:4 ....... t:5       &rrr_cf_sh sh=0
570c982a28SRichard Henderson
58*01afb7beSRichard Henderson@rrb_cf         ...... r2:5 r1:5 c:3 ........... n:1 .  \
59*01afb7beSRichard Henderson                &rrb_c_f disp=%assemble_12
60*01afb7beSRichard Henderson@rib_cf         ...... r:5 ..... c:3 ........... n:1 .  \
61*01afb7beSRichard Henderson                &rib_c_f disp=%assemble_12 i=%im5_16
62*01afb7beSRichard Henderson
63deee69a1SRichard Henderson####
6440f9f908SRichard Henderson# System
6540f9f908SRichard Henderson####
6640f9f908SRichard Henderson
6740f9f908SRichard Hendersonbreak           000000 ----- ----- --- 00000000 -----
68c603e14aSRichard Henderson
69c603e14aSRichard Hendersonmtsp            000000 ----- r:5   ... 11000001 00000   sp=%assemble_sr3
70c603e14aSRichard Hendersonmtctl           000000 t:5   r:5   --- 11000010 00000
71c603e14aSRichard Hendersonmtsarcm         000000 01011 r:5   --- 11000110 00000
72c603e14aSRichard Hendersonmtsm            000000 00000 r:5   000 11000011 00000
73c603e14aSRichard Henderson
74c603e14aSRichard Hendersonmfia            000000 ----- 00000 ---   10100101 t:5
75c603e14aSRichard Hendersonmfsp            000000 ----- 00000 ...   00100101 t:5   sp=%assemble_sr3
76c603e14aSRichard Hendersonmfctl           000000 r:5   00000- e:1 -01000101 t:5
77e36f27efSRichard Henderson
78e36f27efSRichard Hendersonsync            000000 ----- ----- 000 00100000 00000   # sync, syncdma
79e36f27efSRichard Henderson
80e36f27efSRichard Hendersonldsid           000000 b:5   ----- sp:2 0 10000101 t:5
81e36f27efSRichard Henderson
82e36f27efSRichard Hendersonrsm             000000 ..........  000 01110011 t:5     i=%sm_imm
83e36f27efSRichard Hendersonssm             000000 ..........  000 01101011 t:5     i=%sm_imm
84e36f27efSRichard Henderson
85e36f27efSRichard Hendersonrfi             000000 ----- ----- --- 01100000 00000
86e36f27efSRichard Hendersonrfi_r           000000 ----- ----- --- 01100101 00000
87deee69a1SRichard Henderson
88deee69a1SRichard Henderson####
89deee69a1SRichard Henderson# Memory Management
90deee69a1SRichard Henderson####
91deee69a1SRichard Henderson
92deee69a1SRichard Henderson@addrx          ...... b:5 x:5 .. ........ m:1 .....    \
93deee69a1SRichard Henderson                &ldst disp=0 scale=0 t=0 sp=0 size=0
94deee69a1SRichard Henderson
95deee69a1SRichard Hendersonnop             000001 ----- ----- -- 11001010 0 -----         # fdc, disp
96deee69a1SRichard Hendersonnop_addrx       000001 ..... ..... -- 01001010 . -----  @addrx # fdc, index
97deee69a1SRichard Hendersonnop_addrx       000001 ..... ..... -- 01001011 . -----  @addrx # fdce
98deee69a1SRichard Hendersonnop_addrx       000001 ..... ..... --- 0001010 . -----  @addrx # fic 0x0a
99deee69a1SRichard Hendersonnop_addrx       000001 ..... ..... -- 01001111 . 00000  @addrx # fic 0x4f
100deee69a1SRichard Hendersonnop_addrx       000001 ..... ..... --- 0001011 . -----  @addrx # fice
101deee69a1SRichard Hendersonnop_addrx       000001 ..... ..... -- 01001110 . 00000  @addrx # pdc
102deee69a1SRichard Henderson
103deee69a1SRichard Hendersonprobe           000001 b:5 ri:5 sp:2 imm:1 100011 write:1 0 t:5
104deee69a1SRichard Henderson
105deee69a1SRichard Hendersonixtlbx          000001 b:5 r:5 sp:2 0100000 addr:1 0 00000      data=1
106deee69a1SRichard Hendersonixtlbx          000001 b:5 r:5 ... 000000 addr:1 0 00000        \
107deee69a1SRichard Henderson                sp=%assemble_sr3x data=0
108deee69a1SRichard Henderson
109deee69a1SRichard Hendersonpxtlbx          000001 b:5 x:5 sp:2 0100100 local:1 m:1 -----   data=1
110deee69a1SRichard Hendersonpxtlbx          000001 b:5 x:5 ... 000100 local:1 m:1 -----     \
111deee69a1SRichard Henderson                sp=%assemble_sr3x data=0
112deee69a1SRichard Henderson
113deee69a1SRichard Hendersonlpa             000001 b:5 x:5 sp:2 01001101 m:1 t:5    \
114deee69a1SRichard Henderson                &ldst disp=0 scale=0 size=0
115deee69a1SRichard Henderson
116deee69a1SRichard Hendersonlci             000001 ----- ----- -- 01001100 0 t:5
1170c982a28SRichard Henderson
1180c982a28SRichard Henderson####
1190c982a28SRichard Henderson# Arith/Log
1200c982a28SRichard Henderson####
1210c982a28SRichard Henderson
1220c982a28SRichard Hendersonandcm           000010 ..... ..... .... 000000 0 .....  @rrr_cf
1230c982a28SRichard Hendersonand             000010 ..... ..... .... 001000 0 .....  @rrr_cf
1240c982a28SRichard Hendersonor              000010 ..... ..... .... 001001 0 .....  @rrr_cf
1250c982a28SRichard Hendersonxor             000010 ..... ..... .... 001010 0 .....  @rrr_cf
1260c982a28SRichard Hendersonuxor            000010 ..... ..... .... 001110 0 .....  @rrr_cf
1270c982a28SRichard Hendersonds              000010 ..... ..... .... 010001 0 .....  @rrr_cf
1280c982a28SRichard Hendersoncmpclr          000010 ..... ..... .... 100010 0 .....  @rrr_cf
1290c982a28SRichard Hendersonuaddcm          000010 ..... ..... .... 100110 0 .....  @rrr_cf
1300c982a28SRichard Hendersonuaddcm_tc       000010 ..... ..... .... 100111 0 .....  @rrr_cf
1310c982a28SRichard Hendersondcor            000010 ..... 00000 .... 101110 0 .....  @rr_cf
1320c982a28SRichard Hendersondcor_i          000010 ..... 00000 .... 101111 0 .....  @rr_cf
1330c982a28SRichard Henderson
1340c982a28SRichard Hendersonadd             000010 ..... ..... .... 0110.. 0 .....  @rrr_cf_sh
1350c982a28SRichard Hendersonadd_l           000010 ..... ..... .... 1010.. 0 .....  @rrr_cf_sh
1360c982a28SRichard Hendersonadd_tsv         000010 ..... ..... .... 1110.. 0 .....  @rrr_cf_sh
1370c982a28SRichard Hendersonadd_c           000010 ..... ..... .... 011100 0 .....  @rrr_cf_sh0
1380c982a28SRichard Hendersonadd_c_tsv       000010 ..... ..... .... 111100 0 .....  @rrr_cf_sh0
1390c982a28SRichard Henderson
1400c982a28SRichard Hendersonsub             000010 ..... ..... .... 010000 0 .....  @rrr_cf
1410c982a28SRichard Hendersonsub_tsv         000010 ..... ..... .... 110000 0 .....  @rrr_cf
1420c982a28SRichard Hendersonsub_tc          000010 ..... ..... .... 010011 0 .....  @rrr_cf
1430c982a28SRichard Hendersonsub_tsv_tc      000010 ..... ..... .... 110011 0 .....  @rrr_cf
1440c982a28SRichard Hendersonsub_b           000010 ..... ..... .... 010100 0 .....  @rrr_cf
1450c982a28SRichard Hendersonsub_b_tsv       000010 ..... ..... .... 110100 0 .....  @rrr_cf
1461cd012a5SRichard Henderson
1471cd012a5SRichard Henderson####
1481cd012a5SRichard Henderson# Index Mem
1491cd012a5SRichard Henderson####
1501cd012a5SRichard Henderson
1511cd012a5SRichard Henderson@ldstx          ...... b:5 x:5 sp:2 scale:1 ....... m:1 t:5     &ldst disp=0
1521cd012a5SRichard Henderson@ldim5          ...... b:5 ..... sp:2 ......... t:5     \
1531cd012a5SRichard Henderson                &ldst disp=%im5_16 x=0 scale=0 m=%ma_to_m
1541cd012a5SRichard Henderson@stim5          ...... b:5 t:5 sp:2 ......... .....     \
1551cd012a5SRichard Henderson                &ldst disp=%im5_0 x=0 scale=0 m=%ma_to_m
1561cd012a5SRichard Henderson
1571cd012a5SRichard Hendersonld              000011 ..... ..... .. . 1 -- 00 size:2 ......   @ldim5
1581cd012a5SRichard Hendersonld              000011 ..... ..... .. . 0 -- 00 size:2 ......   @ldstx
1591cd012a5SRichard Hendersonst              000011 ..... ..... .. . 1 -- 10 size:2 ......   @stim5
1601cd012a5SRichard Hendersonldc             000011 ..... ..... .. . 1 -- 0111      ......   @ldim5 size=2
1611cd012a5SRichard Hendersonldc             000011 ..... ..... .. . 0 -- 0111      ......   @ldstx size=2
1621cd012a5SRichard Hendersonlda             000011 ..... ..... .. . 1 -- 0110      ......   @ldim5 size=2
1631cd012a5SRichard Hendersonlda             000011 ..... ..... .. . 0 -- 0110      ......   @ldstx size=2
1641cd012a5SRichard Hendersonsta             000011 ..... ..... .. . 1 -- 1110      ......   @stim5 size=2
1651cd012a5SRichard Hendersonstby            000011 b:5 r:5 sp:2 a:1 1 -- 1100 m:1   .....   disp=%im5_0
166b1e2af57SRichard Henderson
167b1e2af57SRichard Henderson####
168b1e2af57SRichard Henderson# Floating-point Multiply Add
169b1e2af57SRichard Henderson####
170b1e2af57SRichard Henderson
171b1e2af57SRichard Henderson&mpyadd         rm1 rm2 ta ra tm
172b1e2af57SRichard Henderson@mpyadd         ...... rm1:5 rm2:5 ta:5 ra:5 . tm:5     &mpyadd
173b1e2af57SRichard Henderson
174b1e2af57SRichard Hendersonfmpyadd_f       000110 ..... ..... ..... ..... 0 .....  @mpyadd
175b1e2af57SRichard Hendersonfmpyadd_d       000110 ..... ..... ..... ..... 1 .....  @mpyadd
176b1e2af57SRichard Hendersonfmpysub_f       100110 ..... ..... ..... ..... 0 .....  @mpyadd
177b1e2af57SRichard Hendersonfmpysub_d       100110 ..... ..... ..... ..... 1 .....  @mpyadd
178*01afb7beSRichard Henderson
179*01afb7beSRichard Henderson####
180*01afb7beSRichard Henderson# Conditional Branches
181*01afb7beSRichard Henderson####
182*01afb7beSRichard Henderson
183*01afb7beSRichard Hendersonbb_sar          110000 00000 r:5 c:1 10 ........... n:1 .  disp=%assemble_12
184*01afb7beSRichard Hendersonbb_imm          110001 p:5   r:5 c:1 10 ........... n:1 .  disp=%assemble_12
185*01afb7beSRichard Henderson
186*01afb7beSRichard Hendersonmovb            110010 ..... ..... ... ........... . .  @rrb_cf f=0
187*01afb7beSRichard Hendersonmovbi           110011 ..... ..... ... ........... . .  @rib_cf f=0
188*01afb7beSRichard Henderson
189*01afb7beSRichard Hendersoncmpb            100000 ..... ..... ... ........... . .  @rrb_cf f=0
190*01afb7beSRichard Hendersoncmpb            100010 ..... ..... ... ........... . .  @rrb_cf f=1
191*01afb7beSRichard Hendersoncmpbi           100001 ..... ..... ... ........... . .  @rib_cf f=0
192*01afb7beSRichard Hendersoncmpbi           100011 ..... ..... ... ........... . .  @rib_cf f=1
193*01afb7beSRichard Henderson
194*01afb7beSRichard Hendersonaddb            101000 ..... ..... ... ........... . .  @rrb_cf f=0
195*01afb7beSRichard Hendersonaddb            101010 ..... ..... ... ........... . .  @rrb_cf f=1
196*01afb7beSRichard Hendersonaddbi           101001 ..... ..... ... ........... . .  @rib_cf f=0
197*01afb7beSRichard Hendersonaddbi           101011 ..... ..... ... ........... . .  @rib_cf f=1
198