xref: /qemu/target/hppa/insns.decode (revision 1cd012a5f720963deeaa4059c75cbdfce12fbee5)
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
27e36f27efSRichard Henderson%sm_imm         16:10 !function=expand_sm_imm
28e36f27efSRichard Henderson
29*1cd012a5SRichard Henderson%im5_0          0:s1 1:4
30*1cd012a5SRichard Henderson%im5_16         16:s1 17:4
31*1cd012a5SRichard Henderson%ma_to_m        5:1 13:1 !function=ma_to_m
32*1cd012a5SRichard Henderson
33c603e14aSRichard Henderson####
34deee69a1SRichard Henderson# Argument set definitions
35deee69a1SRichard Henderson####
36deee69a1SRichard Henderson
37deee69a1SRichard Henderson# All insns that need to form a virtual address should use this set.
38deee69a1SRichard Henderson&ldst           t b x disp sp m scale size
39deee69a1SRichard Henderson
400c982a28SRichard Henderson&rr_cf          t r cf
410c982a28SRichard Henderson&rrr_cf         t r1 r2 cf
420c982a28SRichard Henderson&rrr_cf_sh      t r1 r2 cf sh
430c982a28SRichard Henderson
440c982a28SRichard Henderson####
450c982a28SRichard Henderson# Format definitions
460c982a28SRichard Henderson####
470c982a28SRichard Henderson
480c982a28SRichard Henderson@rr_cf          ...... r:5 ..... cf:4 ....... t:5       &rr_cf
490c982a28SRichard Henderson@rrr_cf         ...... r2:5 r1:5 cf:4 ....... t:5       &rrr_cf
500c982a28SRichard Henderson@rrr_cf_sh      ...... r2:5 r1:5 cf:4 .... sh:2 . t:5   &rrr_cf_sh
510c982a28SRichard Henderson@rrr_cf_sh0     ...... r2:5 r1:5 cf:4 ....... t:5       &rrr_cf_sh sh=0
520c982a28SRichard Henderson
53deee69a1SRichard Henderson####
5440f9f908SRichard Henderson# System
5540f9f908SRichard Henderson####
5640f9f908SRichard Henderson
5740f9f908SRichard Hendersonbreak           000000 ----- ----- --- 00000000 -----
58c603e14aSRichard Henderson
59c603e14aSRichard Hendersonmtsp            000000 ----- r:5   ... 11000001 00000   sp=%assemble_sr3
60c603e14aSRichard Hendersonmtctl           000000 t:5   r:5   --- 11000010 00000
61c603e14aSRichard Hendersonmtsarcm         000000 01011 r:5   --- 11000110 00000
62c603e14aSRichard Hendersonmtsm            000000 00000 r:5   000 11000011 00000
63c603e14aSRichard Henderson
64c603e14aSRichard Hendersonmfia            000000 ----- 00000 ---   10100101 t:5
65c603e14aSRichard Hendersonmfsp            000000 ----- 00000 ...   00100101 t:5   sp=%assemble_sr3
66c603e14aSRichard Hendersonmfctl           000000 r:5   00000- e:1 -01000101 t:5
67e36f27efSRichard Henderson
68e36f27efSRichard Hendersonsync            000000 ----- ----- 000 00100000 00000   # sync, syncdma
69e36f27efSRichard Henderson
70e36f27efSRichard Hendersonldsid           000000 b:5   ----- sp:2 0 10000101 t:5
71e36f27efSRichard Henderson
72e36f27efSRichard Hendersonrsm             000000 ..........  000 01110011 t:5     i=%sm_imm
73e36f27efSRichard Hendersonssm             000000 ..........  000 01101011 t:5     i=%sm_imm
74e36f27efSRichard Henderson
75e36f27efSRichard Hendersonrfi             000000 ----- ----- --- 01100000 00000
76e36f27efSRichard Hendersonrfi_r           000000 ----- ----- --- 01100101 00000
77deee69a1SRichard Henderson
78deee69a1SRichard Henderson####
79deee69a1SRichard Henderson# Memory Management
80deee69a1SRichard Henderson####
81deee69a1SRichard Henderson
82deee69a1SRichard Henderson@addrx          ...... b:5 x:5 .. ........ m:1 .....    \
83deee69a1SRichard Henderson                &ldst disp=0 scale=0 t=0 sp=0 size=0
84deee69a1SRichard Henderson
85deee69a1SRichard Hendersonnop             000001 ----- ----- -- 11001010 0 -----         # fdc, disp
86deee69a1SRichard Hendersonnop_addrx       000001 ..... ..... -- 01001010 . -----  @addrx # fdc, index
87deee69a1SRichard Hendersonnop_addrx       000001 ..... ..... -- 01001011 . -----  @addrx # fdce
88deee69a1SRichard Hendersonnop_addrx       000001 ..... ..... --- 0001010 . -----  @addrx # fic 0x0a
89deee69a1SRichard Hendersonnop_addrx       000001 ..... ..... -- 01001111 . 00000  @addrx # fic 0x4f
90deee69a1SRichard Hendersonnop_addrx       000001 ..... ..... --- 0001011 . -----  @addrx # fice
91deee69a1SRichard Hendersonnop_addrx       000001 ..... ..... -- 01001110 . 00000  @addrx # pdc
92deee69a1SRichard Henderson
93deee69a1SRichard Hendersonprobe           000001 b:5 ri:5 sp:2 imm:1 100011 write:1 0 t:5
94deee69a1SRichard Henderson
95deee69a1SRichard Hendersonixtlbx          000001 b:5 r:5 sp:2 0100000 addr:1 0 00000      data=1
96deee69a1SRichard Hendersonixtlbx          000001 b:5 r:5 ... 000000 addr:1 0 00000        \
97deee69a1SRichard Henderson                sp=%assemble_sr3x data=0
98deee69a1SRichard Henderson
99deee69a1SRichard Hendersonpxtlbx          000001 b:5 x:5 sp:2 0100100 local:1 m:1 -----   data=1
100deee69a1SRichard Hendersonpxtlbx          000001 b:5 x:5 ... 000100 local:1 m:1 -----     \
101deee69a1SRichard Henderson                sp=%assemble_sr3x data=0
102deee69a1SRichard Henderson
103deee69a1SRichard Hendersonlpa             000001 b:5 x:5 sp:2 01001101 m:1 t:5    \
104deee69a1SRichard Henderson                &ldst disp=0 scale=0 size=0
105deee69a1SRichard Henderson
106deee69a1SRichard Hendersonlci             000001 ----- ----- -- 01001100 0 t:5
1070c982a28SRichard Henderson
1080c982a28SRichard Henderson####
1090c982a28SRichard Henderson# Arith/Log
1100c982a28SRichard Henderson####
1110c982a28SRichard Henderson
1120c982a28SRichard Hendersonandcm           000010 ..... ..... .... 000000 0 .....  @rrr_cf
1130c982a28SRichard Hendersonand             000010 ..... ..... .... 001000 0 .....  @rrr_cf
1140c982a28SRichard Hendersonor              000010 ..... ..... .... 001001 0 .....  @rrr_cf
1150c982a28SRichard Hendersonxor             000010 ..... ..... .... 001010 0 .....  @rrr_cf
1160c982a28SRichard Hendersonuxor            000010 ..... ..... .... 001110 0 .....  @rrr_cf
1170c982a28SRichard Hendersonds              000010 ..... ..... .... 010001 0 .....  @rrr_cf
1180c982a28SRichard Hendersoncmpclr          000010 ..... ..... .... 100010 0 .....  @rrr_cf
1190c982a28SRichard Hendersonuaddcm          000010 ..... ..... .... 100110 0 .....  @rrr_cf
1200c982a28SRichard Hendersonuaddcm_tc       000010 ..... ..... .... 100111 0 .....  @rrr_cf
1210c982a28SRichard Hendersondcor            000010 ..... 00000 .... 101110 0 .....  @rr_cf
1220c982a28SRichard Hendersondcor_i          000010 ..... 00000 .... 101111 0 .....  @rr_cf
1230c982a28SRichard Henderson
1240c982a28SRichard Hendersonadd             000010 ..... ..... .... 0110.. 0 .....  @rrr_cf_sh
1250c982a28SRichard Hendersonadd_l           000010 ..... ..... .... 1010.. 0 .....  @rrr_cf_sh
1260c982a28SRichard Hendersonadd_tsv         000010 ..... ..... .... 1110.. 0 .....  @rrr_cf_sh
1270c982a28SRichard Hendersonadd_c           000010 ..... ..... .... 011100 0 .....  @rrr_cf_sh0
1280c982a28SRichard Hendersonadd_c_tsv       000010 ..... ..... .... 111100 0 .....  @rrr_cf_sh0
1290c982a28SRichard Henderson
1300c982a28SRichard Hendersonsub             000010 ..... ..... .... 010000 0 .....  @rrr_cf
1310c982a28SRichard Hendersonsub_tsv         000010 ..... ..... .... 110000 0 .....  @rrr_cf
1320c982a28SRichard Hendersonsub_tc          000010 ..... ..... .... 010011 0 .....  @rrr_cf
1330c982a28SRichard Hendersonsub_tsv_tc      000010 ..... ..... .... 110011 0 .....  @rrr_cf
1340c982a28SRichard Hendersonsub_b           000010 ..... ..... .... 010100 0 .....  @rrr_cf
1350c982a28SRichard Hendersonsub_b_tsv       000010 ..... ..... .... 110100 0 .....  @rrr_cf
136*1cd012a5SRichard Henderson
137*1cd012a5SRichard Henderson####
138*1cd012a5SRichard Henderson# Index Mem
139*1cd012a5SRichard Henderson####
140*1cd012a5SRichard Henderson
141*1cd012a5SRichard Henderson@ldstx          ...... b:5 x:5 sp:2 scale:1 ....... m:1 t:5     &ldst disp=0
142*1cd012a5SRichard Henderson@ldim5          ...... b:5 ..... sp:2 ......... t:5     \
143*1cd012a5SRichard Henderson                &ldst disp=%im5_16 x=0 scale=0 m=%ma_to_m
144*1cd012a5SRichard Henderson@stim5          ...... b:5 t:5 sp:2 ......... .....     \
145*1cd012a5SRichard Henderson                &ldst disp=%im5_0 x=0 scale=0 m=%ma_to_m
146*1cd012a5SRichard Henderson
147*1cd012a5SRichard Hendersonld              000011 ..... ..... .. . 1 -- 00 size:2 ......   @ldim5
148*1cd012a5SRichard Hendersonld              000011 ..... ..... .. . 0 -- 00 size:2 ......   @ldstx
149*1cd012a5SRichard Hendersonst              000011 ..... ..... .. . 1 -- 10 size:2 ......   @stim5
150*1cd012a5SRichard Hendersonldc             000011 ..... ..... .. . 1 -- 0111      ......   @ldim5 size=2
151*1cd012a5SRichard Hendersonldc             000011 ..... ..... .. . 0 -- 0111      ......   @ldstx size=2
152*1cd012a5SRichard Hendersonlda             000011 ..... ..... .. . 1 -- 0110      ......   @ldim5 size=2
153*1cd012a5SRichard Hendersonlda             000011 ..... ..... .. . 0 -- 0110      ......   @ldstx size=2
154*1cd012a5SRichard Hendersonsta             000011 ..... ..... .. . 1 -- 1110      ......   @stim5 size=2
155*1cd012a5SRichard Hendersonstby            000011 b:5 r:5 sp:2 a:1 1 -- 1100 m:1   .....   disp=%im5_0
156