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