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 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 620c982a28SRichard Henderson&rr_cf t r cf 630c982a28SRichard Henderson&rrr_cf t r1 r2 cf 640c982a28SRichard Henderson&rrr_cf_sh t r1 r2 cf sh 650588e061SRichard Henderson&rri_cf t r i cf 660c982a28SRichard Henderson 6701afb7beSRichard Henderson&rrb_c_f disp n c f r1 r2 6801afb7beSRichard Henderson&rib_c_f disp n c f r i 6901afb7beSRichard Henderson 700c982a28SRichard Henderson#### 710c982a28SRichard Henderson# Format definitions 720c982a28SRichard Henderson#### 730c982a28SRichard Henderson 740c982a28SRichard Henderson@rr_cf ...... r:5 ..... cf:4 ....... t:5 &rr_cf 750c982a28SRichard Henderson@rrr_cf ...... r2:5 r1:5 cf:4 ....... t:5 &rrr_cf 760c982a28SRichard Henderson@rrr_cf_sh ...... r2:5 r1:5 cf:4 .... sh:2 . t:5 &rrr_cf_sh 770c982a28SRichard Henderson@rrr_cf_sh0 ...... r2:5 r1:5 cf:4 ....... t:5 &rrr_cf_sh sh=0 780588e061SRichard Henderson@rri_cf ...... r:5 t:5 cf:4 . ........... &rri_cf i=%lowsign_11 790c982a28SRichard Henderson 8001afb7beSRichard Henderson@rrb_cf ...... r2:5 r1:5 c:3 ........... n:1 . \ 8101afb7beSRichard Henderson &rrb_c_f disp=%assemble_12 8201afb7beSRichard Henderson@rib_cf ...... r:5 ..... c:3 ........... n:1 . \ 8301afb7beSRichard Henderson &rib_c_f disp=%assemble_12 i=%im5_16 8401afb7beSRichard Henderson 85deee69a1SRichard Henderson#### 8640f9f908SRichard Henderson# System 8740f9f908SRichard Henderson#### 8840f9f908SRichard Henderson 8940f9f908SRichard Hendersonbreak 000000 ----- ----- --- 00000000 ----- 90c603e14aSRichard Henderson 91c603e14aSRichard Hendersonmtsp 000000 ----- r:5 ... 11000001 00000 sp=%assemble_sr3 92c603e14aSRichard Hendersonmtctl 000000 t:5 r:5 --- 11000010 00000 93c603e14aSRichard Hendersonmtsarcm 000000 01011 r:5 --- 11000110 00000 94c603e14aSRichard Hendersonmtsm 000000 00000 r:5 000 11000011 00000 95c603e14aSRichard Henderson 96c603e14aSRichard Hendersonmfia 000000 ----- 00000 --- 10100101 t:5 97c603e14aSRichard Hendersonmfsp 000000 ----- 00000 ... 00100101 t:5 sp=%assemble_sr3 98c603e14aSRichard Hendersonmfctl 000000 r:5 00000- e:1 -01000101 t:5 99e36f27efSRichard Henderson 100e36f27efSRichard Hendersonsync 000000 ----- ----- 000 00100000 00000 # sync, syncdma 101e36f27efSRichard Henderson 102e36f27efSRichard Hendersonldsid 000000 b:5 ----- sp:2 0 10000101 t:5 103e36f27efSRichard Henderson 104e36f27efSRichard Hendersonrsm 000000 .......... 000 01110011 t:5 i=%sm_imm 105e36f27efSRichard Hendersonssm 000000 .......... 000 01101011 t:5 i=%sm_imm 106e36f27efSRichard Henderson 107e36f27efSRichard Hendersonrfi 000000 ----- ----- --- 01100000 00000 108e36f27efSRichard Hendersonrfi_r 000000 ----- ----- --- 01100101 00000 109deee69a1SRichard Henderson 11096927adbSRichard Henderson# These are artificial instructions used by QEMU firmware. 11196927adbSRichard Henderson# They are allocated from the unassigned instruction space. 11296927adbSRichard Hendersonhalt 1111 1111 1111 1101 1110 1010 1101 0000 11396927adbSRichard Hendersonreset 1111 1111 1111 1101 1110 1010 1101 0001 11496927adbSRichard Henderson 115deee69a1SRichard Henderson#### 116deee69a1SRichard Henderson# Memory Management 117deee69a1SRichard Henderson#### 118deee69a1SRichard Henderson 119deee69a1SRichard Henderson@addrx ...... b:5 x:5 .. ........ m:1 ..... \ 120deee69a1SRichard Henderson &ldst disp=0 scale=0 t=0 sp=0 size=0 121deee69a1SRichard Henderson 122deee69a1SRichard Hendersonnop 000001 ----- ----- -- 11001010 0 ----- # fdc, disp 123deee69a1SRichard Hendersonnop_addrx 000001 ..... ..... -- 01001010 . ----- @addrx # fdc, index 124deee69a1SRichard Hendersonnop_addrx 000001 ..... ..... -- 01001011 . ----- @addrx # fdce 125deee69a1SRichard Hendersonnop_addrx 000001 ..... ..... --- 0001010 . ----- @addrx # fic 0x0a 126deee69a1SRichard Hendersonnop_addrx 000001 ..... ..... -- 01001111 . 00000 @addrx # fic 0x4f 127deee69a1SRichard Hendersonnop_addrx 000001 ..... ..... --- 0001011 . ----- @addrx # fice 128deee69a1SRichard Hendersonnop_addrx 000001 ..... ..... -- 01001110 . 00000 @addrx # pdc 129deee69a1SRichard Henderson 130deee69a1SRichard Hendersonprobe 000001 b:5 ri:5 sp:2 imm:1 100011 write:1 0 t:5 131deee69a1SRichard Henderson 132deee69a1SRichard Hendersonixtlbx 000001 b:5 r:5 sp:2 0100000 addr:1 0 00000 data=1 133deee69a1SRichard Hendersonixtlbx 000001 b:5 r:5 ... 000000 addr:1 0 00000 \ 134deee69a1SRichard Henderson sp=%assemble_sr3x data=0 135deee69a1SRichard Henderson 1366797c315SNick Hudson# pcxl and pcxl2 Fast TLB Insert instructions 1376797c315SNick Hudsonixtlbxf 000001 00000 r:5 00 0 data:1 01000 addr:1 0 00000 1386797c315SNick Hudson 139deee69a1SRichard Hendersonpxtlbx 000001 b:5 x:5 sp:2 0100100 local:1 m:1 ----- data=1 140deee69a1SRichard Hendersonpxtlbx 000001 b:5 x:5 ... 000100 local:1 m:1 ----- \ 141deee69a1SRichard Henderson sp=%assemble_sr3x data=0 142deee69a1SRichard Henderson 143deee69a1SRichard Hendersonlpa 000001 b:5 x:5 sp:2 01001101 m:1 t:5 \ 144deee69a1SRichard Henderson &ldst disp=0 scale=0 size=0 145deee69a1SRichard Henderson 146deee69a1SRichard Hendersonlci 000001 ----- ----- -- 01001100 0 t:5 1470c982a28SRichard Henderson 1480c982a28SRichard Henderson#### 1490c982a28SRichard Henderson# Arith/Log 1500c982a28SRichard Henderson#### 1510c982a28SRichard Henderson 152*3b65b742SHelge Dellerandcm 000010 ..... ..... .... 000000 - ..... @rrr_cf 153*3b65b742SHelge Dellerand 000010 ..... ..... .... 001000 - ..... @rrr_cf 154*3b65b742SHelge Delleror 000010 ..... ..... .... 001001 - ..... @rrr_cf 1550c982a28SRichard Hendersonxor 000010 ..... ..... .... 001010 0 ..... @rrr_cf 1560c982a28SRichard Hendersonuxor 000010 ..... ..... .... 001110 0 ..... @rrr_cf 1570c982a28SRichard Hendersonds 000010 ..... ..... .... 010001 0 ..... @rrr_cf 1580c982a28SRichard Hendersoncmpclr 000010 ..... ..... .... 100010 0 ..... @rrr_cf 1590c982a28SRichard Hendersonuaddcm 000010 ..... ..... .... 100110 0 ..... @rrr_cf 1600c982a28SRichard Hendersonuaddcm_tc 000010 ..... ..... .... 100111 0 ..... @rrr_cf 1610c982a28SRichard Hendersondcor 000010 ..... 00000 .... 101110 0 ..... @rr_cf 1620c982a28SRichard Hendersondcor_i 000010 ..... 00000 .... 101111 0 ..... @rr_cf 1630c982a28SRichard Henderson 164*3b65b742SHelge Delleradd 000010 ..... ..... .... 0110.. - ..... @rrr_cf_sh 1650c982a28SRichard Hendersonadd_l 000010 ..... ..... .... 1010.. 0 ..... @rrr_cf_sh 1660c982a28SRichard Hendersonadd_tsv 000010 ..... ..... .... 1110.. 0 ..... @rrr_cf_sh 1670c982a28SRichard Hendersonadd_c 000010 ..... ..... .... 011100 0 ..... @rrr_cf_sh0 1680c982a28SRichard Hendersonadd_c_tsv 000010 ..... ..... .... 111100 0 ..... @rrr_cf_sh0 1690c982a28SRichard Henderson 170*3b65b742SHelge Dellersub 000010 ..... ..... .... 010000 - ..... @rrr_cf 1710c982a28SRichard Hendersonsub_tsv 000010 ..... ..... .... 110000 0 ..... @rrr_cf 1720c982a28SRichard Hendersonsub_tc 000010 ..... ..... .... 010011 0 ..... @rrr_cf 1730c982a28SRichard Hendersonsub_tsv_tc 000010 ..... ..... .... 110011 0 ..... @rrr_cf 1740c982a28SRichard Hendersonsub_b 000010 ..... ..... .... 010100 0 ..... @rrr_cf 1750c982a28SRichard Hendersonsub_b_tsv 000010 ..... ..... .... 110100 0 ..... @rrr_cf 1761cd012a5SRichard Henderson 1770588e061SRichard Hendersonldil 001000 t:5 ..................... i=%assemble_21 1780588e061SRichard Hendersonaddil 001010 r:5 ..................... i=%assemble_21 1790588e061SRichard Hendersonldo 001101 b:5 t:5 -- .............. i=%lowsign_14 1800588e061SRichard Henderson 1810588e061SRichard Hendersonaddi 101101 ..... ..... .... 0 ........... @rri_cf 1820588e061SRichard Hendersonaddi_tsv 101101 ..... ..... .... 1 ........... @rri_cf 1830588e061SRichard Hendersonaddi_tc 101100 ..... ..... .... 0 ........... @rri_cf 1840588e061SRichard Hendersonaddi_tc_tsv 101100 ..... ..... .... 1 ........... @rri_cf 1850588e061SRichard Henderson 1860588e061SRichard Hendersonsubi 100101 ..... ..... .... 0 ........... @rri_cf 1870588e061SRichard Hendersonsubi_tsv 100101 ..... ..... .... 1 ........... @rri_cf 1880588e061SRichard Henderson 1890588e061SRichard Hendersoncmpiclr 100100 ..... ..... .... 0 ........... @rri_cf 1900588e061SRichard Henderson 1911cd012a5SRichard Henderson#### 1921cd012a5SRichard Henderson# Index Mem 1931cd012a5SRichard Henderson#### 1941cd012a5SRichard Henderson 1951cd012a5SRichard Henderson@ldstx ...... b:5 x:5 sp:2 scale:1 ....... m:1 t:5 &ldst disp=0 1961cd012a5SRichard Henderson@ldim5 ...... b:5 ..... sp:2 ......... t:5 \ 1971cd012a5SRichard Henderson &ldst disp=%im5_16 x=0 scale=0 m=%ma_to_m 1981cd012a5SRichard Henderson@stim5 ...... b:5 t:5 sp:2 ......... ..... \ 1991cd012a5SRichard Henderson &ldst disp=%im5_0 x=0 scale=0 m=%ma_to_m 2001cd012a5SRichard Henderson 2011cd012a5SRichard Hendersonld 000011 ..... ..... .. . 1 -- 00 size:2 ...... @ldim5 2021cd012a5SRichard Hendersonld 000011 ..... ..... .. . 0 -- 00 size:2 ...... @ldstx 2031cd012a5SRichard Hendersonst 000011 ..... ..... .. . 1 -- 10 size:2 ...... @stim5 2041cd012a5SRichard Hendersonldc 000011 ..... ..... .. . 1 -- 0111 ...... @ldim5 size=2 2051cd012a5SRichard Hendersonldc 000011 ..... ..... .. . 0 -- 0111 ...... @ldstx size=2 2061cd012a5SRichard Hendersonlda 000011 ..... ..... .. . 1 -- 0110 ...... @ldim5 size=2 2071cd012a5SRichard Hendersonlda 000011 ..... ..... .. . 0 -- 0110 ...... @ldstx size=2 2081cd012a5SRichard Hendersonsta 000011 ..... ..... .. . 1 -- 1110 ...... @stim5 size=2 2091cd012a5SRichard Hendersonstby 000011 b:5 r:5 sp:2 a:1 1 -- 1100 m:1 ..... disp=%im5_0 210b1e2af57SRichard Henderson 211e8777db7SRichard Henderson@fldstwx ...... b:5 x:5 sp:2 scale:1 ....... m:1 ..... \ 212e8777db7SRichard Henderson &ldst t=%rt64 disp=0 size=2 213e8777db7SRichard Henderson@fldstwi ...... b:5 ..... sp:2 . ....... . ..... \ 214e8777db7SRichard Henderson &ldst t=%rt64 disp=%im5_16 m=%ma_to_m x=0 scale=0 size=2 215e8777db7SRichard Henderson 216e8777db7SRichard Hendersonfldw 001001 ..... ..... .. . 0 -- 000 . . ..... @fldstwx 217e8777db7SRichard Hendersonfldw 001001 ..... ..... .. . 1 -- 000 . . ..... @fldstwi 218e8777db7SRichard Hendersonfstw 001001 ..... ..... .. . 0 -- 100 . . ..... @fldstwx 219e8777db7SRichard Hendersonfstw 001001 ..... ..... .. . 1 -- 100 . . ..... @fldstwi 220e8777db7SRichard Henderson 221e8777db7SRichard Henderson@fldstdx ...... b:5 x:5 sp:2 scale:1 ....... m:1 t:5 \ 222e8777db7SRichard Henderson &ldst disp=0 size=3 223e8777db7SRichard Henderson@fldstdi ...... b:5 ..... sp:2 . ....... . t:5 \ 224e8777db7SRichard Henderson &ldst disp=%im5_16 m=%ma_to_m x=0 scale=0 size=3 225e8777db7SRichard Henderson 226e8777db7SRichard Hendersonfldd 001011 ..... ..... .. . 0 -- 000 0 . ..... @fldstdx 227e8777db7SRichard Hendersonfldd 001011 ..... ..... .. . 1 -- 000 0 . ..... @fldstdi 228e8777db7SRichard Hendersonfstd 001011 ..... ..... .. . 0 -- 100 0 . ..... @fldstdx 229e8777db7SRichard Hendersonfstd 001011 ..... ..... .. . 1 -- 100 0 . ..... @fldstdi 230e8777db7SRichard Henderson 231b1e2af57SRichard Henderson#### 232740038d7SRichard Henderson# Offset Mem 233740038d7SRichard Henderson#### 234740038d7SRichard Henderson 235740038d7SRichard Henderson@ldstim14 ...... b:5 t:5 sp:2 .............. \ 236740038d7SRichard Henderson &ldst disp=%lowsign_14 x=0 scale=0 m=0 237740038d7SRichard Henderson@ldstim14m ...... b:5 t:5 sp:2 .............. \ 238740038d7SRichard Henderson &ldst disp=%lowsign_14 x=0 scale=0 m=%neg_to_m 239740038d7SRichard Henderson@ldstim12m ...... b:5 t:5 sp:2 .............. \ 240740038d7SRichard Henderson &ldst disp=%assemble_12a x=0 scale=0 m=%pos_to_m 241740038d7SRichard Henderson 242740038d7SRichard Henderson# LDB, LDH, LDW, LDWM 243740038d7SRichard Hendersonld 010000 ..... ..... .. .............. @ldstim14 size=0 244740038d7SRichard Hendersonld 010001 ..... ..... .. .............. @ldstim14 size=1 245740038d7SRichard Hendersonld 010010 ..... ..... .. .............. @ldstim14 size=2 246740038d7SRichard Hendersonld 010011 ..... ..... .. .............. @ldstim14m size=2 247740038d7SRichard Hendersonld 010111 ..... ..... .. ...........10. @ldstim12m size=2 248740038d7SRichard Henderson 249740038d7SRichard Henderson# STB, STH, STW, STWM 250740038d7SRichard Hendersonst 011000 ..... ..... .. .............. @ldstim14 size=0 251740038d7SRichard Hendersonst 011001 ..... ..... .. .............. @ldstim14 size=1 252740038d7SRichard Hendersonst 011010 ..... ..... .. .............. @ldstim14 size=2 253740038d7SRichard Hendersonst 011011 ..... ..... .. .............. @ldstim14m size=2 254740038d7SRichard Hendersonst 011111 ..... ..... .. ...........10. @ldstim12m size=2 255740038d7SRichard Henderson 256740038d7SRichard Hendersonfldw 010110 b:5 ..... sp:2 .............. \ 257740038d7SRichard Henderson &ldst disp=%assemble_12a t=%rm64 m=%a_to_m x=0 scale=0 size=2 258740038d7SRichard Hendersonfldw 010111 b:5 ..... sp:2 ...........0.. \ 259740038d7SRichard Henderson &ldst disp=%assemble_12a t=%rm64 m=0 x=0 scale=0 size=2 260740038d7SRichard Henderson 261740038d7SRichard Hendersonfstw 011110 b:5 ..... sp:2 .............. \ 262740038d7SRichard Henderson &ldst disp=%assemble_12a t=%rm64 m=%a_to_m x=0 scale=0 size=2 263740038d7SRichard Hendersonfstw 011111 b:5 ..... sp:2 ...........0.. \ 264740038d7SRichard Henderson &ldst disp=%assemble_12a t=%rm64 m=0 x=0 scale=0 size=2 265740038d7SRichard Henderson 266740038d7SRichard Hendersonfldd 010100 b:5 t:5 sp:2 .......... .. 1 . \ 267740038d7SRichard Henderson &ldst disp=%assemble_11a m=%ma2_to_m x=0 scale=0 size=3 268740038d7SRichard Henderson 269740038d7SRichard Hendersonfstd 011100 b:5 t:5 sp:2 .......... .. 1 . \ 270740038d7SRichard Henderson &ldst disp=%assemble_11a m=%ma2_to_m x=0 scale=0 size=3 271740038d7SRichard Henderson 272740038d7SRichard Henderson#### 273b1e2af57SRichard Henderson# Floating-point Multiply Add 274b1e2af57SRichard Henderson#### 275b1e2af57SRichard Henderson 276b1e2af57SRichard Henderson&mpyadd rm1 rm2 ta ra tm 277b1e2af57SRichard Henderson@mpyadd ...... rm1:5 rm2:5 ta:5 ra:5 . tm:5 &mpyadd 278b1e2af57SRichard Henderson 279b1e2af57SRichard Hendersonfmpyadd_f 000110 ..... ..... ..... ..... 0 ..... @mpyadd 280b1e2af57SRichard Hendersonfmpyadd_d 000110 ..... ..... ..... ..... 1 ..... @mpyadd 281b1e2af57SRichard Hendersonfmpysub_f 100110 ..... ..... ..... ..... 0 ..... @mpyadd 282b1e2af57SRichard Hendersonfmpysub_d 100110 ..... ..... ..... ..... 1 ..... @mpyadd 28301afb7beSRichard Henderson 28401afb7beSRichard Henderson#### 28501afb7beSRichard Henderson# Conditional Branches 28601afb7beSRichard Henderson#### 28701afb7beSRichard Henderson 28801afb7beSRichard Hendersonbb_sar 110000 00000 r:5 c:1 10 ........... n:1 . disp=%assemble_12 28901afb7beSRichard Hendersonbb_imm 110001 p:5 r:5 c:1 10 ........... n:1 . disp=%assemble_12 29001afb7beSRichard Henderson 29101afb7beSRichard Hendersonmovb 110010 ..... ..... ... ........... . . @rrb_cf f=0 29201afb7beSRichard Hendersonmovbi 110011 ..... ..... ... ........... . . @rib_cf f=0 29301afb7beSRichard Henderson 29401afb7beSRichard Hendersoncmpb 100000 ..... ..... ... ........... . . @rrb_cf f=0 29501afb7beSRichard Hendersoncmpb 100010 ..... ..... ... ........... . . @rrb_cf f=1 29601afb7beSRichard Hendersoncmpbi 100001 ..... ..... ... ........... . . @rib_cf f=0 29701afb7beSRichard Hendersoncmpbi 100011 ..... ..... ... ........... . . @rib_cf f=1 29801afb7beSRichard Henderson 29901afb7beSRichard Hendersonaddb 101000 ..... ..... ... ........... . . @rrb_cf f=0 30001afb7beSRichard Hendersonaddb 101010 ..... ..... ... ........... . . @rrb_cf f=1 30101afb7beSRichard Hendersonaddbi 101001 ..... ..... ... ........... . . @rib_cf f=0 30201afb7beSRichard Hendersonaddbi 101011 ..... ..... ... ........... . . @rib_cf f=1 30330878590SRichard Henderson 30430878590SRichard Henderson#### 30530878590SRichard Henderson# Shift, Extract, Deposit 30630878590SRichard Henderson#### 30730878590SRichard Henderson 30830878590SRichard Hendersonshrpw_sar 110100 r2:5 r1:5 c:3 00 0 00000 t:5 30930878590SRichard Hendersonshrpw_imm 110100 r2:5 r1:5 c:3 01 0 cpos:5 t:5 31030878590SRichard Henderson 31130878590SRichard Hendersonextrw_sar 110100 r:5 t:5 c:3 10 se:1 00000 clen:5 31230878590SRichard Hendersonextrw_imm 110100 r:5 t:5 c:3 11 se:1 pos:5 clen:5 31330878590SRichard Henderson 31430878590SRichard Hendersondepw_sar 110101 t:5 r:5 c:3 00 nz:1 00000 clen:5 31530878590SRichard Hendersondepw_imm 110101 t:5 r:5 c:3 01 nz:1 cpos:5 clen:5 31630878590SRichard Hendersondepwi_sar 110101 t:5 ..... c:3 10 nz:1 00000 clen:5 i=%im5_16 31730878590SRichard Hendersondepwi_imm 110101 t:5 ..... c:3 11 nz:1 cpos:5 clen:5 i=%im5_16 3188340f534SRichard Henderson 3198340f534SRichard Henderson#### 3208340f534SRichard Henderson# Branch External 3218340f534SRichard Henderson#### 3228340f534SRichard Henderson 3238340f534SRichard Henderson&BE b l n disp sp 3248340f534SRichard Henderson@be ...... b:5 ..... ... ........... n:1 . \ 3258340f534SRichard Henderson &BE disp=%assemble_17 sp=%assemble_sr3 3268340f534SRichard Henderson 3278340f534SRichard Hendersonbe 111000 ..... ..... ... ........... . . @be l=0 3288340f534SRichard Hendersonbe 111001 ..... ..... ... ........... . . @be l=31 3298340f534SRichard Henderson 3308340f534SRichard Henderson#### 3318340f534SRichard Henderson# Branch 3328340f534SRichard Henderson#### 3338340f534SRichard Henderson 3348340f534SRichard Henderson&BL l n disp 3358340f534SRichard Henderson@bl ...... l:5 ..... ... ........... n:1 . &BL disp=%assemble_17 3368340f534SRichard Henderson 3378340f534SRichard Henderson# B,L and B,L,PUSH 3388340f534SRichard Hendersonbl 111010 ..... ..... 000 ........... . . @bl 3398340f534SRichard Hendersonbl 111010 ..... ..... 100 ........... . . @bl 3408340f534SRichard Henderson# B,L (long displacement) 3418340f534SRichard Hendersonbl 111010 ..... ..... 101 ........... n:1 . &BL l=2 \ 3428340f534SRichard Henderson disp=%assemble_22 3438340f534SRichard Hendersonb_gate 111010 ..... ..... 001 ........... . . @bl 3448340f534SRichard Hendersonblr 111010 l:5 x:5 010 00000000000 n:1 0 3458340f534SRichard Hendersonbv 111010 b:5 x:5 110 00000000000 n:1 0 3468340f534SRichard Hendersonbve 111010 b:5 00000 110 10000000000 n:1 - l=0 3478340f534SRichard Hendersonbve 111010 b:5 00000 111 10000000000 n:1 - l=2 348c3bad4f8SRichard Henderson 349c3bad4f8SRichard Henderson#### 350c3bad4f8SRichard Henderson# FP Fused Multiple-Add 351c3bad4f8SRichard Henderson#### 352c3bad4f8SRichard Henderson 353c3bad4f8SRichard Hendersonfmpyfadd_f 101110 ..... ..... ... . 0 ... . . neg:1 ..... \ 354c3bad4f8SRichard Henderson rm1=%ra64 rm2=%rb64 ra3=%rc64 t=%rt64 355c3bad4f8SRichard Hendersonfmpyfadd_d 101110 rm1:5 rm2:5 ... 0 1 ..0 0 0 neg:1 t:5 ra3=%rc32 3561ca74648SRichard Henderson 3571ca74648SRichard Henderson#### 3581ca74648SRichard Henderson# FP operations 3591ca74648SRichard Henderson#### 3601ca74648SRichard Henderson 3611ca74648SRichard Henderson&fclass01 r t 3621ca74648SRichard Henderson&fclass2 r1 r2 c y 3631ca74648SRichard Henderson&fclass3 r1 r2 t 3641ca74648SRichard Henderson 3651ca74648SRichard Henderson@f0c_0 ...... r:5 00000 ..... 00 000 0 t:5 &fclass01 3661ca74648SRichard Henderson@f0c_1 ...... r:5 000.. ..... 01 000 0 t:5 &fclass01 3671ca74648SRichard Henderson@f0c_2 ...... r1:5 r2:5 y:3 .. 10 000 . c:5 &fclass2 3681ca74648SRichard Henderson@f0c_3 ...... r1:5 r2:5 ..... 11 000 0 t:5 &fclass3 3691ca74648SRichard Henderson 3701ca74648SRichard Henderson@f0e_f_0 ...... ..... 00000 ... 0 0 000 .. 0 ..... \ 3711ca74648SRichard Henderson &fclass01 r=%ra64 t=%rt64 3721ca74648SRichard Henderson@f0e_d_0 ...... r:5 00000 ... 0 1 000 00 0 t:5 &fclass01 3731ca74648SRichard Henderson 3741ca74648SRichard Henderson@f0e_ff_1 ...... ..... 000 ... 0000 010 .. 0 ..... \ 3751ca74648SRichard Henderson &fclass01 r=%ra64 t=%rt64 3761ca74648SRichard Henderson@f0e_fd_1 ...... ..... 000 ... 0100 010 .0 0 t:5 &fclass01 r=%ra64 3771ca74648SRichard Henderson@f0e_df_1 ...... r:5 000 ... 0001 010 0. 0 ..... &fclass01 t=%rt64 3781ca74648SRichard Henderson@f0e_dd_1 ...... r:5 000 ... 0101 010 00 0 t:5 &fclass01 3791ca74648SRichard Henderson 3801ca74648SRichard Henderson@f0e_f_2 ...... ..... ..... y:3 .0 100 .00 c:5 \ 3811ca74648SRichard Henderson &fclass2 r1=%ra64 r2=%rb64 3821ca74648SRichard Henderson@f0e_d_2 ...... r1:5 r2:5 y:3 01 100 000 c:5 &fclass2 3831ca74648SRichard Henderson 3841ca74648SRichard Henderson@f0e_f_3 ...... ..... ..... ... .0 110 ..0 ..... \ 3851ca74648SRichard Henderson &fclass3 r1=%ra64 r2=%rb64 t=%rt64 3861ca74648SRichard Henderson@f0e_d_3 ...... r1:5 r2:5 ... 01 110 000 t:5 3871ca74648SRichard Henderson 3881ca74648SRichard Henderson# Floating point class 0 3891ca74648SRichard Henderson 3901ca74648SRichard Henderson# FID. With r = t = 0, which via fcpy puts 0 into fr0. 3911ca74648SRichard Henderson# This is machine/revision = 0, which is reserved for simulator. 3921ca74648SRichard Hendersonfcpy_f 001100 00000 00000 00000 000000 00000 \ 3931ca74648SRichard Henderson &fclass01 r=0 t=0 3941ca74648SRichard Henderson 3951ca74648SRichard Hendersonfcpy_f 001100 ..... ..... 010 00 ...... ..... @f0c_0 3961ca74648SRichard Hendersonfabs_f 001100 ..... ..... 011 00 ...... ..... @f0c_0 3971ca74648SRichard Hendersonfsqrt_f 001100 ..... ..... 100 00 ...... ..... @f0c_0 3981ca74648SRichard Hendersonfrnd_f 001100 ..... ..... 101 00 ...... ..... @f0c_0 3991ca74648SRichard Hendersonfneg_f 001100 ..... ..... 110 00 ...... ..... @f0c_0 4001ca74648SRichard Hendersonfnegabs_f 001100 ..... ..... 111 00 ...... ..... @f0c_0 4011ca74648SRichard Henderson 4021ca74648SRichard Hendersonfcpy_d 001100 ..... ..... 010 01 ...... ..... @f0c_0 4031ca74648SRichard Hendersonfabs_d 001100 ..... ..... 011 01 ...... ..... @f0c_0 4041ca74648SRichard Hendersonfsqrt_d 001100 ..... ..... 100 01 ...... ..... @f0c_0 4051ca74648SRichard Hendersonfrnd_d 001100 ..... ..... 101 01 ...... ..... @f0c_0 4061ca74648SRichard Hendersonfneg_d 001100 ..... ..... 110 01 ...... ..... @f0c_0 4071ca74648SRichard Hendersonfnegabs_d 001100 ..... ..... 111 01 ...... ..... @f0c_0 4081ca74648SRichard Henderson 4091ca74648SRichard Hendersonfcpy_f 001110 ..... ..... 010 ........ ..... @f0e_f_0 4101ca74648SRichard Hendersonfabs_f 001110 ..... ..... 011 ........ ..... @f0e_f_0 4111ca74648SRichard Hendersonfsqrt_f 001110 ..... ..... 100 ........ ..... @f0e_f_0 4121ca74648SRichard Hendersonfrnd_f 001110 ..... ..... 101 ........ ..... @f0e_f_0 4131ca74648SRichard Hendersonfneg_f 001110 ..... ..... 110 ........ ..... @f0e_f_0 4141ca74648SRichard Hendersonfnegabs_f 001110 ..... ..... 111 ........ ..... @f0e_f_0 4151ca74648SRichard Henderson 4161ca74648SRichard Hendersonfcpy_d 001110 ..... ..... 010 ........ ..... @f0e_d_0 4171ca74648SRichard Hendersonfabs_d 001110 ..... ..... 011 ........ ..... @f0e_d_0 4181ca74648SRichard Hendersonfsqrt_d 001110 ..... ..... 100 ........ ..... @f0e_d_0 4191ca74648SRichard Hendersonfrnd_d 001110 ..... ..... 101 ........ ..... @f0e_d_0 4201ca74648SRichard Hendersonfneg_d 001110 ..... ..... 110 ........ ..... @f0e_d_0 4211ca74648SRichard Hendersonfnegabs_d 001110 ..... ..... 111 ........ ..... @f0e_d_0 4221ca74648SRichard Henderson 4231ca74648SRichard Henderson# Floating point class 1 4241ca74648SRichard Henderson 4251ca74648SRichard Henderson# float/float 4261ca74648SRichard Hendersonfcnv_d_f 001100 ..... ... 000 00 01 ...... ..... @f0c_1 4271ca74648SRichard Hendersonfcnv_f_d 001100 ..... ... 000 01 00 ...... ..... @f0c_1 4281ca74648SRichard Henderson 4291ca74648SRichard Hendersonfcnv_d_f 001110 ..... ... 000 .......... ..... @f0e_df_1 4301ca74648SRichard Hendersonfcnv_f_d 001110 ..... ... 000 .......... ..... @f0e_fd_1 4311ca74648SRichard Henderson 4321ca74648SRichard Henderson# int/float 4331ca74648SRichard Hendersonfcnv_w_f 001100 ..... ... 001 00 00 ...... ..... @f0c_1 4341ca74648SRichard Hendersonfcnv_q_f 001100 ..... ... 001 00 01 ...... ..... @f0c_1 4351ca74648SRichard Hendersonfcnv_w_d 001100 ..... ... 001 01 00 ...... ..... @f0c_1 4361ca74648SRichard Hendersonfcnv_q_d 001100 ..... ... 001 01 01 ...... ..... @f0c_1 4371ca74648SRichard Henderson 4381ca74648SRichard Hendersonfcnv_w_f 001110 ..... ... 001 .......... ..... @f0e_ff_1 4391ca74648SRichard Hendersonfcnv_q_f 001110 ..... ... 001 .......... ..... @f0e_df_1 4401ca74648SRichard Hendersonfcnv_w_d 001110 ..... ... 001 .......... ..... @f0e_fd_1 4411ca74648SRichard Hendersonfcnv_q_d 001110 ..... ... 001 .......... ..... @f0e_dd_1 4421ca74648SRichard Henderson 4431ca74648SRichard Henderson# float/int 4441ca74648SRichard Hendersonfcnv_f_w 001100 ..... ... 010 00 00 ...... ..... @f0c_1 4451ca74648SRichard Hendersonfcnv_d_w 001100 ..... ... 010 00 01 ...... ..... @f0c_1 4461ca74648SRichard Hendersonfcnv_f_q 001100 ..... ... 010 01 00 ...... ..... @f0c_1 4471ca74648SRichard Hendersonfcnv_d_q 001100 ..... ... 010 01 01 ...... ..... @f0c_1 4481ca74648SRichard Henderson 4491ca74648SRichard Hendersonfcnv_f_w 001110 ..... ... 010 .......... ..... @f0e_ff_1 4501ca74648SRichard Hendersonfcnv_d_w 001110 ..... ... 010 .......... ..... @f0e_df_1 4511ca74648SRichard Hendersonfcnv_f_q 001110 ..... ... 010 .......... ..... @f0e_fd_1 4521ca74648SRichard Hendersonfcnv_d_q 001110 ..... ... 010 .......... ..... @f0e_dd_1 4531ca74648SRichard Henderson 4541ca74648SRichard Henderson# float/int truncate 4551ca74648SRichard Hendersonfcnv_t_f_w 001100 ..... ... 011 00 00 ...... ..... @f0c_1 4561ca74648SRichard Hendersonfcnv_t_d_w 001100 ..... ... 011 00 01 ...... ..... @f0c_1 4571ca74648SRichard Hendersonfcnv_t_f_q 001100 ..... ... 011 01 00 ...... ..... @f0c_1 4581ca74648SRichard Hendersonfcnv_t_d_q 001100 ..... ... 011 01 01 ...... ..... @f0c_1 4591ca74648SRichard Henderson 4601ca74648SRichard Hendersonfcnv_t_f_w 001110 ..... ... 011 .......... ..... @f0e_ff_1 4611ca74648SRichard Hendersonfcnv_t_d_w 001110 ..... ... 011 .......... ..... @f0e_df_1 4621ca74648SRichard Hendersonfcnv_t_f_q 001110 ..... ... 011 .......... ..... @f0e_fd_1 4631ca74648SRichard Hendersonfcnv_t_d_q 001110 ..... ... 011 .......... ..... @f0e_dd_1 4641ca74648SRichard Henderson 4651ca74648SRichard Henderson# uint/float 4661ca74648SRichard Hendersonfcnv_uw_f 001100 ..... ... 101 00 00 ...... ..... @f0c_1 4671ca74648SRichard Hendersonfcnv_uq_f 001100 ..... ... 101 00 01 ...... ..... @f0c_1 4681ca74648SRichard Hendersonfcnv_uw_d 001100 ..... ... 101 01 00 ...... ..... @f0c_1 4691ca74648SRichard Hendersonfcnv_uq_d 001100 ..... ... 101 01 01 ...... ..... @f0c_1 4701ca74648SRichard Henderson 4711ca74648SRichard Hendersonfcnv_uw_f 001110 ..... ... 101 .......... ..... @f0e_ff_1 4721ca74648SRichard Hendersonfcnv_uq_f 001110 ..... ... 101 .......... ..... @f0e_df_1 4731ca74648SRichard Hendersonfcnv_uw_d 001110 ..... ... 101 .......... ..... @f0e_fd_1 4741ca74648SRichard Hendersonfcnv_uq_d 001110 ..... ... 101 .......... ..... @f0e_dd_1 4751ca74648SRichard Henderson 4761ca74648SRichard Henderson# float/int 4771ca74648SRichard Hendersonfcnv_f_uw 001100 ..... ... 110 00 00 ...... ..... @f0c_1 4781ca74648SRichard Hendersonfcnv_d_uw 001100 ..... ... 110 00 01 ...... ..... @f0c_1 4791ca74648SRichard Hendersonfcnv_f_uq 001100 ..... ... 110 01 00 ...... ..... @f0c_1 4801ca74648SRichard Hendersonfcnv_d_uq 001100 ..... ... 110 01 01 ...... ..... @f0c_1 4811ca74648SRichard Henderson 4821ca74648SRichard Hendersonfcnv_f_uw 001110 ..... ... 110 .......... ..... @f0e_ff_1 4831ca74648SRichard Hendersonfcnv_d_uw 001110 ..... ... 110 .......... ..... @f0e_df_1 4841ca74648SRichard Hendersonfcnv_f_uq 001110 ..... ... 110 .......... ..... @f0e_fd_1 4851ca74648SRichard Hendersonfcnv_d_uq 001110 ..... ... 110 .......... ..... @f0e_dd_1 4861ca74648SRichard Henderson 4871ca74648SRichard Henderson# float/int truncate 4881ca74648SRichard Hendersonfcnv_t_f_uw 001100 ..... ... 111 00 00 ...... ..... @f0c_1 4891ca74648SRichard Hendersonfcnv_t_d_uw 001100 ..... ... 111 00 01 ...... ..... @f0c_1 4901ca74648SRichard Hendersonfcnv_t_f_uq 001100 ..... ... 111 01 00 ...... ..... @f0c_1 4911ca74648SRichard Hendersonfcnv_t_d_uq 001100 ..... ... 111 01 01 ...... ..... @f0c_1 4921ca74648SRichard Henderson 4931ca74648SRichard Hendersonfcnv_t_f_uw 001110 ..... ... 111 .......... ..... @f0e_ff_1 4941ca74648SRichard Hendersonfcnv_t_d_uw 001110 ..... ... 111 .......... ..... @f0e_df_1 4951ca74648SRichard Hendersonfcnv_t_f_uq 001110 ..... ... 111 .......... ..... @f0e_fd_1 4961ca74648SRichard Hendersonfcnv_t_d_uq 001110 ..... ... 111 .......... ..... @f0e_dd_1 4971ca74648SRichard Henderson 4981ca74648SRichard Henderson# Floating point class 2 4991ca74648SRichard Henderson 5001ca74648SRichard Hendersonftest 001100 00000 00000 y:3 00 10000 1 c:5 5011ca74648SRichard Henderson 5021ca74648SRichard Hendersonfcmp_f 001100 ..... ..... ... 00 ..... 0 ..... @f0c_2 5031ca74648SRichard Hendersonfcmp_d 001100 ..... ..... ... 01 ..... 0 ..... @f0c_2 5041ca74648SRichard Henderson 5051ca74648SRichard Hendersonfcmp_f 001110 ..... ..... ... ..... ... ..... @f0e_f_2 5061ca74648SRichard Hendersonfcmp_d 001110 ..... ..... ... ..... ... ..... @f0e_d_2 5071ca74648SRichard Henderson 5081ca74648SRichard Henderson# Floating point class 3 5091ca74648SRichard Henderson 5101ca74648SRichard Hendersonfadd_f 001100 ..... ..... 000 00 ...... ..... @f0c_3 5111ca74648SRichard Hendersonfsub_f 001100 ..... ..... 001 00 ...... ..... @f0c_3 5121ca74648SRichard Hendersonfmpy_f 001100 ..... ..... 010 00 ...... ..... @f0c_3 5131ca74648SRichard Hendersonfdiv_f 001100 ..... ..... 011 00 ...... ..... @f0c_3 5141ca74648SRichard Henderson 5151ca74648SRichard Hendersonfadd_d 001100 ..... ..... 000 01 ...... ..... @f0c_3 5161ca74648SRichard Hendersonfsub_d 001100 ..... ..... 001 01 ...... ..... @f0c_3 5171ca74648SRichard Hendersonfmpy_d 001100 ..... ..... 010 01 ...... ..... @f0c_3 5181ca74648SRichard Hendersonfdiv_d 001100 ..... ..... 011 01 ...... ..... @f0c_3 5191ca74648SRichard Henderson 5201ca74648SRichard Hendersonfadd_f 001110 ..... ..... 000 ..... ... ..... @f0e_f_3 5211ca74648SRichard Hendersonfsub_f 001110 ..... ..... 001 ..... ... ..... @f0e_f_3 5221ca74648SRichard Hendersonfmpy_f 001110 ..... ..... 010 ..... ... ..... @f0e_f_3 5231ca74648SRichard Hendersonfdiv_f 001110 ..... ..... 011 ..... ... ..... @f0e_f_3 5241ca74648SRichard Henderson 5251ca74648SRichard Hendersonfadd_d 001110 ..... ..... 000 ..... ... ..... @f0e_d_3 5261ca74648SRichard Hendersonfsub_d 001110 ..... ..... 001 ..... ... ..... @f0e_d_3 5271ca74648SRichard Hendersonfmpy_d 001110 ..... ..... 010 ..... ... ..... @f0e_d_3 5281ca74648SRichard Hendersonfdiv_d 001110 ..... ..... 011 ..... ... ..... @f0e_d_3 5291ca74648SRichard Henderson 5301ca74648SRichard Hendersonxmpyu 001110 ..... ..... 010 .0111 .00 t:5 r1=%ra64 r2=%rb64 53115da177bSSven Schnelle 53215da177bSSven Schnelle# diag 53315da177bSSven Schnellediag 000101 ----- ----- ---- ---- ---- ---- 534