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