151409b9eSRichard Henderson# A32 conditional instructions 251409b9eSRichard Henderson# 351409b9eSRichard Henderson# Copyright (c) 2019 Linaro, Ltd 451409b9eSRichard Henderson# 551409b9eSRichard Henderson# This library is free software; you can redistribute it and/or 651409b9eSRichard Henderson# modify it under the terms of the GNU Lesser General Public 751409b9eSRichard Henderson# License as published by the Free Software Foundation; either 851409b9eSRichard Henderson# version 2 of the License, or (at your option) any later version. 951409b9eSRichard Henderson# 1051409b9eSRichard Henderson# This library is distributed in the hope that it will be useful, 1151409b9eSRichard Henderson# but WITHOUT ANY WARRANTY; without even the implied warranty of 1251409b9eSRichard Henderson# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1351409b9eSRichard Henderson# Lesser General Public License for more details. 1451409b9eSRichard Henderson# 1551409b9eSRichard Henderson# You should have received a copy of the GNU Lesser General Public 1651409b9eSRichard Henderson# License along with this library; if not, see <http://www.gnu.org/licenses/>. 1751409b9eSRichard Henderson 1851409b9eSRichard Henderson# 1951409b9eSRichard Henderson# This file is processed by scripts/decodetree.py 2051409b9eSRichard Henderson# 2151409b9eSRichard Henderson# All of the insn that have a COND field in insn[31:28] are here. 2251409b9eSRichard Henderson# All insns that have 0xf in insn[31:28] are in a32-uncond.decode. 2351409b9eSRichard Henderson# 2425ae32c5SRichard Henderson 2563130596SRichard Henderson&empty 2625ae32c5SRichard Henderson&s_rrr_shi s rd rn rm shim shty 275be2c123SRichard Henderson&s_rrr_shr s rn rd rm rs shty 28581c6ebdSRichard Henderson&s_rri_rot s rn rd imm rot 29bd92fe35SRichard Henderson&s_rrrr s rd rn rm ra 30bd92fe35SRichard Henderson&rrrr rd rn rm ra 31*46497f6aSRichard Henderson&rrr_rot rd rn rm rot 326d0730a8SRichard Henderson&rrr rd rn rm 334c97f5b2SRichard Henderson&rr rd rm 34145952e8SRichard Henderson&ri rd imm 354ed95abdSRichard Henderson&r rm 362cde9ea5SRichard Henderson&i imm 37d0b26644SRichard Henderson&msr_reg rn r mask 38d0b26644SRichard Henderson&mrs_reg rd r 39d0b26644SRichard Henderson&msr_bank rn r sysm 40d0b26644SRichard Henderson&mrs_bank rd r sysm 415e291fe1SRichard Henderson&ldst_rr p w u rn rt rm shimm shtype 425e291fe1SRichard Henderson&ldst_ri p w u rn rt imm 431efdd407SRichard Henderson&strex rn rd rt rt2 imm 441efdd407SRichard Henderson&ldrex rn rt rt2 imm 4586d21e4bSRichard Henderson&bfx rd rn lsb widthm1 4686d21e4bSRichard Henderson&bfi rd rn lsb msb 47*46497f6aSRichard Henderson&sat rd rn satimm imm sh 48*46497f6aSRichard Henderson&pkh rd rn rm imm tb 4925ae32c5SRichard Henderson 5025ae32c5SRichard Henderson# Data-processing (register) 5125ae32c5SRichard Henderson 5225ae32c5SRichard Henderson@s_rrr_shi ---- ... .... s:1 rn:4 rd:4 shim:5 shty:2 . rm:4 \ 5325ae32c5SRichard Henderson &s_rrr_shi 5425ae32c5SRichard Henderson@s_rxr_shi ---- ... .... s:1 .... rd:4 shim:5 shty:2 . rm:4 \ 5525ae32c5SRichard Henderson &s_rrr_shi rn=0 5625ae32c5SRichard Henderson@S_xrr_shi ---- ... .... . rn:4 .... shim:5 shty:2 . rm:4 \ 5725ae32c5SRichard Henderson &s_rrr_shi s=1 rd=0 5825ae32c5SRichard Henderson 5925ae32c5SRichard HendersonAND_rrri .... 000 0000 . .... .... ..... .. 0 .... @s_rrr_shi 6025ae32c5SRichard HendersonEOR_rrri .... 000 0001 . .... .... ..... .. 0 .... @s_rrr_shi 6125ae32c5SRichard HendersonSUB_rrri .... 000 0010 . .... .... ..... .. 0 .... @s_rrr_shi 6225ae32c5SRichard HendersonRSB_rrri .... 000 0011 . .... .... ..... .. 0 .... @s_rrr_shi 6325ae32c5SRichard HendersonADD_rrri .... 000 0100 . .... .... ..... .. 0 .... @s_rrr_shi 6425ae32c5SRichard HendersonADC_rrri .... 000 0101 . .... .... ..... .. 0 .... @s_rrr_shi 6525ae32c5SRichard HendersonSBC_rrri .... 000 0110 . .... .... ..... .. 0 .... @s_rrr_shi 6625ae32c5SRichard HendersonRSC_rrri .... 000 0111 . .... .... ..... .. 0 .... @s_rrr_shi 6725ae32c5SRichard HendersonTST_xrri .... 000 1000 1 .... 0000 ..... .. 0 .... @S_xrr_shi 6825ae32c5SRichard HendersonTEQ_xrri .... 000 1001 1 .... 0000 ..... .. 0 .... @S_xrr_shi 6925ae32c5SRichard HendersonCMP_xrri .... 000 1010 1 .... 0000 ..... .. 0 .... @S_xrr_shi 7025ae32c5SRichard HendersonCMN_xrri .... 000 1011 1 .... 0000 ..... .. 0 .... @S_xrr_shi 7125ae32c5SRichard HendersonORR_rrri .... 000 1100 . .... .... ..... .. 0 .... @s_rrr_shi 7225ae32c5SRichard HendersonMOV_rxri .... 000 1101 . 0000 .... ..... .. 0 .... @s_rxr_shi 7325ae32c5SRichard HendersonBIC_rrri .... 000 1110 . .... .... ..... .. 0 .... @s_rrr_shi 7425ae32c5SRichard HendersonMVN_rxri .... 000 1111 . 0000 .... ..... .. 0 .... @s_rxr_shi 755be2c123SRichard Henderson 765be2c123SRichard Henderson# Data-processing (register-shifted register) 775be2c123SRichard Henderson 785be2c123SRichard Henderson@s_rrr_shr ---- ... .... s:1 rn:4 rd:4 rs:4 . shty:2 . rm:4 \ 795be2c123SRichard Henderson &s_rrr_shr 805be2c123SRichard Henderson@s_rxr_shr ---- ... .... s:1 .... rd:4 rs:4 . shty:2 . rm:4 \ 815be2c123SRichard Henderson &s_rrr_shr rn=0 825be2c123SRichard Henderson@S_xrr_shr ---- ... .... . rn:4 .... rs:4 . shty:2 . rm:4 \ 835be2c123SRichard Henderson &s_rrr_shr rd=0 s=1 845be2c123SRichard Henderson 855be2c123SRichard HendersonAND_rrrr .... 000 0000 . .... .... .... 0 .. 1 .... @s_rrr_shr 865be2c123SRichard HendersonEOR_rrrr .... 000 0001 . .... .... .... 0 .. 1 .... @s_rrr_shr 875be2c123SRichard HendersonSUB_rrrr .... 000 0010 . .... .... .... 0 .. 1 .... @s_rrr_shr 885be2c123SRichard HendersonRSB_rrrr .... 000 0011 . .... .... .... 0 .. 1 .... @s_rrr_shr 895be2c123SRichard HendersonADD_rrrr .... 000 0100 . .... .... .... 0 .. 1 .... @s_rrr_shr 905be2c123SRichard HendersonADC_rrrr .... 000 0101 . .... .... .... 0 .. 1 .... @s_rrr_shr 915be2c123SRichard HendersonSBC_rrrr .... 000 0110 . .... .... .... 0 .. 1 .... @s_rrr_shr 925be2c123SRichard HendersonRSC_rrrr .... 000 0111 . .... .... .... 0 .. 1 .... @s_rrr_shr 935be2c123SRichard HendersonTST_xrrr .... 000 1000 1 .... 0000 .... 0 .. 1 .... @S_xrr_shr 945be2c123SRichard HendersonTEQ_xrrr .... 000 1001 1 .... 0000 .... 0 .. 1 .... @S_xrr_shr 955be2c123SRichard HendersonCMP_xrrr .... 000 1010 1 .... 0000 .... 0 .. 1 .... @S_xrr_shr 965be2c123SRichard HendersonCMN_xrrr .... 000 1011 1 .... 0000 .... 0 .. 1 .... @S_xrr_shr 975be2c123SRichard HendersonORR_rrrr .... 000 1100 . .... .... .... 0 .. 1 .... @s_rrr_shr 985be2c123SRichard HendersonMOV_rxrr .... 000 1101 . 0000 .... .... 0 .. 1 .... @s_rxr_shr 995be2c123SRichard HendersonBIC_rrrr .... 000 1110 . .... .... .... 0 .. 1 .... @s_rrr_shr 1005be2c123SRichard HendersonMVN_rxrr .... 000 1111 . 0000 .... .... 0 .. 1 .... @s_rxr_shr 101581c6ebdSRichard Henderson 102581c6ebdSRichard Henderson# Data-processing (immediate) 103581c6ebdSRichard Henderson 104581c6ebdSRichard Henderson%a32extrot 8:4 !function=times_2 105581c6ebdSRichard Henderson 106581c6ebdSRichard Henderson@s_rri_rot ---- ... .... s:1 rn:4 rd:4 .... imm:8 \ 107581c6ebdSRichard Henderson &s_rri_rot rot=%a32extrot 108581c6ebdSRichard Henderson@s_rxi_rot ---- ... .... s:1 .... rd:4 .... imm:8 \ 109581c6ebdSRichard Henderson &s_rri_rot rot=%a32extrot rn=0 110581c6ebdSRichard Henderson@S_xri_rot ---- ... .... . rn:4 .... .... imm:8 \ 111581c6ebdSRichard Henderson &s_rri_rot rot=%a32extrot rd=0 s=1 112581c6ebdSRichard Henderson 113581c6ebdSRichard HendersonAND_rri .... 001 0000 . .... .... ............ @s_rri_rot 114581c6ebdSRichard HendersonEOR_rri .... 001 0001 . .... .... ............ @s_rri_rot 115581c6ebdSRichard HendersonSUB_rri .... 001 0010 . .... .... ............ @s_rri_rot 116581c6ebdSRichard HendersonRSB_rri .... 001 0011 . .... .... ............ @s_rri_rot 117581c6ebdSRichard HendersonADD_rri .... 001 0100 . .... .... ............ @s_rri_rot 118581c6ebdSRichard HendersonADC_rri .... 001 0101 . .... .... ............ @s_rri_rot 119581c6ebdSRichard HendersonSBC_rri .... 001 0110 . .... .... ............ @s_rri_rot 120581c6ebdSRichard HendersonRSC_rri .... 001 0111 . .... .... ............ @s_rri_rot 121581c6ebdSRichard HendersonTST_xri .... 001 1000 1 .... 0000 ............ @S_xri_rot 122581c6ebdSRichard HendersonTEQ_xri .... 001 1001 1 .... 0000 ............ @S_xri_rot 123581c6ebdSRichard HendersonCMP_xri .... 001 1010 1 .... 0000 ............ @S_xri_rot 124581c6ebdSRichard HendersonCMN_xri .... 001 1011 1 .... 0000 ............ @S_xri_rot 125581c6ebdSRichard HendersonORR_rri .... 001 1100 . .... .... ............ @s_rri_rot 126581c6ebdSRichard HendersonMOV_rxi .... 001 1101 . 0000 .... ............ @s_rxi_rot 127581c6ebdSRichard HendersonBIC_rri .... 001 1110 . .... .... ............ @s_rri_rot 128581c6ebdSRichard HendersonMVN_rxi .... 001 1111 . 0000 .... ............ @s_rxi_rot 129bd92fe35SRichard Henderson 130bd92fe35SRichard Henderson# Multiply and multiply accumulate 131bd92fe35SRichard Henderson 132bd92fe35SRichard Henderson@s_rdamn ---- .... ... s:1 rd:4 ra:4 rm:4 .... rn:4 &s_rrrr 133bd92fe35SRichard Henderson@s_rd0mn ---- .... ... s:1 rd:4 .... rm:4 .... rn:4 &s_rrrr ra=0 134bd92fe35SRichard Henderson@rdamn ---- .... ... . rd:4 ra:4 rm:4 .... rn:4 &rrrr 13526c6923dSRichard Henderson@rd0mn ---- .... ... . rd:4 .... rm:4 .... rn:4 &rrrr ra=0 136bd92fe35SRichard Henderson 137bd92fe35SRichard HendersonMUL .... 0000 000 . .... 0000 .... 1001 .... @s_rd0mn 138bd92fe35SRichard HendersonMLA .... 0000 001 . .... .... .... 1001 .... @s_rdamn 139bd92fe35SRichard HendersonUMAAL .... 0000 010 0 .... .... .... 1001 .... @rdamn 140bd92fe35SRichard HendersonMLS .... 0000 011 0 .... .... .... 1001 .... @rdamn 141bd92fe35SRichard HendersonUMULL .... 0000 100 . .... .... .... 1001 .... @s_rdamn 142bd92fe35SRichard HendersonUMLAL .... 0000 101 . .... .... .... 1001 .... @s_rdamn 143bd92fe35SRichard HendersonSMULL .... 0000 110 . .... .... .... 1001 .... @s_rdamn 144bd92fe35SRichard HendersonSMLAL .... 0000 111 . .... .... .... 1001 .... @s_rdamn 1456d0730a8SRichard Henderson 1466d0730a8SRichard Henderson# Saturating addition and subtraction 1476d0730a8SRichard Henderson 1486d0730a8SRichard Henderson@rndm ---- .... .... rn:4 rd:4 .... .... rm:4 &rrr 1496d0730a8SRichard Henderson 1506d0730a8SRichard HendersonQADD .... 0001 0000 .... .... 0000 0101 .... @rndm 1516d0730a8SRichard HendersonQSUB .... 0001 0010 .... .... 0000 0101 .... @rndm 1526d0730a8SRichard HendersonQDADD .... 0001 0100 .... .... 0000 0101 .... @rndm 1536d0730a8SRichard HendersonQDSUB .... 0001 0110 .... .... 0000 0101 .... @rndm 15426c6923dSRichard Henderson 15526c6923dSRichard Henderson# Halfword multiply and multiply accumulate 15626c6923dSRichard Henderson 15726c6923dSRichard HendersonSMLABB .... 0001 0000 .... .... .... 1000 .... @rdamn 15826c6923dSRichard HendersonSMLABT .... 0001 0000 .... .... .... 1100 .... @rdamn 15926c6923dSRichard HendersonSMLATB .... 0001 0000 .... .... .... 1010 .... @rdamn 16026c6923dSRichard HendersonSMLATT .... 0001 0000 .... .... .... 1110 .... @rdamn 16126c6923dSRichard HendersonSMLAWB .... 0001 0010 .... .... .... 1000 .... @rdamn 16226c6923dSRichard HendersonSMULWB .... 0001 0010 .... 0000 .... 1010 .... @rd0mn 16326c6923dSRichard HendersonSMLAWT .... 0001 0010 .... .... .... 1100 .... @rdamn 16426c6923dSRichard HendersonSMULWT .... 0001 0010 .... 0000 .... 1110 .... @rd0mn 16526c6923dSRichard HendersonSMLALBB .... 0001 0100 .... .... .... 1000 .... @rdamn 16626c6923dSRichard HendersonSMLALBT .... 0001 0100 .... .... .... 1100 .... @rdamn 16726c6923dSRichard HendersonSMLALTB .... 0001 0100 .... .... .... 1010 .... @rdamn 16826c6923dSRichard HendersonSMLALTT .... 0001 0100 .... .... .... 1110 .... @rdamn 16926c6923dSRichard HendersonSMULBB .... 0001 0110 .... 0000 .... 1000 .... @rd0mn 17026c6923dSRichard HendersonSMULBT .... 0001 0110 .... 0000 .... 1100 .... @rd0mn 17126c6923dSRichard HendersonSMULTB .... 0001 0110 .... 0000 .... 1010 .... @rd0mn 17226c6923dSRichard HendersonSMULTT .... 0001 0110 .... 0000 .... 1110 .... @rd0mn 17363130596SRichard Henderson 17463130596SRichard Henderson# MSR (immediate) and hints 17563130596SRichard Henderson 17663130596SRichard Henderson&msr_i r mask rot imm 17763130596SRichard Henderson@msr_i ---- .... .... mask:4 .... rot:4 imm:8 &msr_i 17863130596SRichard Henderson 17963130596SRichard Henderson{ 18063130596SRichard Henderson { 18163130596SRichard Henderson YIELD ---- 0011 0010 0000 1111 ---- 0000 0001 18263130596SRichard Henderson WFE ---- 0011 0010 0000 1111 ---- 0000 0010 18363130596SRichard Henderson WFI ---- 0011 0010 0000 1111 ---- 0000 0011 18463130596SRichard Henderson 18563130596SRichard Henderson # TODO: Implement SEV, SEVL; may help SMP performance. 18663130596SRichard Henderson # SEV ---- 0011 0010 0000 1111 ---- 0000 0100 18763130596SRichard Henderson # SEVL ---- 0011 0010 0000 1111 ---- 0000 0101 18863130596SRichard Henderson 18963130596SRichard Henderson # The canonical nop ends in 00000000, but the whole of the 19063130596SRichard Henderson # rest of the space executes as nop if otherwise unsupported. 19163130596SRichard Henderson NOP ---- 0011 0010 0000 1111 ---- ---- ---- 19263130596SRichard Henderson } 19363130596SRichard Henderson # Note mask = 0 is covered by NOP 19463130596SRichard Henderson MSR_imm .... 0011 0010 .... 1111 .... .... .... @msr_i r=0 19563130596SRichard Henderson} 19663130596SRichard HendersonMSR_imm .... 0011 0110 .... 1111 .... .... .... @msr_i r=1 197d0b26644SRichard Henderson 1986c35d53fSRichard Henderson# Cyclic Redundancy Check 1996c35d53fSRichard Henderson 2006c35d53fSRichard HendersonCRC32B .... 0001 0000 .... .... 0000 0100 .... @rndm 2016c35d53fSRichard HendersonCRC32H .... 0001 0010 .... .... 0000 0100 .... @rndm 2026c35d53fSRichard HendersonCRC32W .... 0001 0100 .... .... 0000 0100 .... @rndm 2036c35d53fSRichard HendersonCRC32CB .... 0001 0000 .... .... 0010 0100 .... @rndm 2046c35d53fSRichard HendersonCRC32CH .... 0001 0010 .... .... 0010 0100 .... @rndm 2056c35d53fSRichard HendersonCRC32CW .... 0001 0100 .... .... 0010 0100 .... @rndm 2066c35d53fSRichard Henderson 207d0b26644SRichard Henderson# Miscellaneous instructions 208d0b26644SRichard Henderson 209d0b26644SRichard Henderson%sysm 8:1 16:4 2102cde9ea5SRichard Henderson%imm16_8_0 8:12 0:4 211d0b26644SRichard Henderson 2124ed95abdSRichard Henderson@rm ---- .... .... .... .... .... .... rm:4 &r 2134c97f5b2SRichard Henderson@rdm ---- .... .... .... rd:4 .... .... rm:4 &rr 2142cde9ea5SRichard Henderson@i16 ---- .... .... .... .... .... .... .... &i imm=%imm16_8_0 2154ed95abdSRichard Henderson 216d0b26644SRichard HendersonMRS_bank ---- 0001 0 r:1 00 .... rd:4 001. 0000 0000 &mrs_bank %sysm 217d0b26644SRichard HendersonMSR_bank ---- 0001 0 r:1 10 .... 1111 001. 0000 rn:4 &msr_bank %sysm 218d0b26644SRichard Henderson 219d0b26644SRichard HendersonMRS_reg ---- 0001 0 r:1 00 1111 rd:4 0000 0000 0000 &mrs_reg 220d0b26644SRichard HendersonMSR_reg ---- 0001 0 r:1 10 mask:4 1111 0000 0000 rn:4 &msr_reg 2214ed95abdSRichard Henderson 2224ed95abdSRichard HendersonBX .... 0001 0010 1111 1111 1111 0001 .... @rm 2234ed95abdSRichard HendersonBXJ .... 0001 0010 1111 1111 1111 0010 .... @rm 2244ed95abdSRichard HendersonBLX_r .... 0001 0010 1111 1111 1111 0011 .... @rm 2254c97f5b2SRichard Henderson 2264c97f5b2SRichard HendersonCLZ .... 0001 0110 1111 .... 1111 0001 .... @rdm 227ef11bc3cSRichard Henderson 228ef11bc3cSRichard HendersonERET ---- 0001 0110 0000 0000 0000 0110 1110 2292cde9ea5SRichard Henderson 2302cde9ea5SRichard HendersonHLT .... 0001 0000 .... .... .... 0111 .... @i16 2312cde9ea5SRichard HendersonBKPT .... 0001 0010 .... .... .... 0111 .... @i16 2322cde9ea5SRichard HendersonHVC .... 0001 0100 .... .... .... 0111 .... @i16 2332cde9ea5SRichard HendersonSMC ---- 0001 0110 0000 0000 0000 0111 imm:4 &i 2345e291fe1SRichard Henderson 2355e291fe1SRichard Henderson# Load/Store Dual, Half, Signed Byte (register) 2365e291fe1SRichard Henderson 2375e291fe1SRichard Henderson@ldst_rr_p1w ---- ...1 u:1 . w:1 . rn:4 rt:4 .... .... rm:4 \ 2385e291fe1SRichard Henderson &ldst_rr p=1 shimm=0 shtype=0 2395e291fe1SRichard Henderson@ldst_rr_pw0 ---- ...0 u:1 . 0 . rn:4 rt:4 .... .... rm:4 \ 2405e291fe1SRichard Henderson &ldst_rr p=0 w=0 shimm=0 shtype=0 2415e291fe1SRichard Henderson 2425e291fe1SRichard HendersonSTRH_rr .... 000. .0.0 .... .... 0000 1011 .... @ldst_rr_pw0 2435e291fe1SRichard HendersonSTRH_rr .... 000. .0.0 .... .... 0000 1011 .... @ldst_rr_p1w 2445e291fe1SRichard Henderson 2455e291fe1SRichard HendersonLDRD_rr .... 000. .0.0 .... .... 0000 1101 .... @ldst_rr_pw0 2465e291fe1SRichard HendersonLDRD_rr .... 000. .0.0 .... .... 0000 1101 .... @ldst_rr_p1w 2475e291fe1SRichard Henderson 2485e291fe1SRichard HendersonSTRD_rr .... 000. .0.0 .... .... 0000 1111 .... @ldst_rr_pw0 2495e291fe1SRichard HendersonSTRD_rr .... 000. .0.0 .... .... 0000 1111 .... @ldst_rr_p1w 2505e291fe1SRichard Henderson 2515e291fe1SRichard HendersonLDRH_rr .... 000. .0.1 .... .... 0000 1011 .... @ldst_rr_pw0 2525e291fe1SRichard HendersonLDRH_rr .... 000. .0.1 .... .... 0000 1011 .... @ldst_rr_p1w 2535e291fe1SRichard Henderson 2545e291fe1SRichard HendersonLDRSB_rr .... 000. .0.1 .... .... 0000 1101 .... @ldst_rr_pw0 2555e291fe1SRichard HendersonLDRSB_rr .... 000. .0.1 .... .... 0000 1101 .... @ldst_rr_p1w 2565e291fe1SRichard Henderson 2575e291fe1SRichard HendersonLDRSH_rr .... 000. .0.1 .... .... 0000 1111 .... @ldst_rr_pw0 2585e291fe1SRichard HendersonLDRSH_rr .... 000. .0.1 .... .... 0000 1111 .... @ldst_rr_p1w 2595e291fe1SRichard Henderson 2605e291fe1SRichard Henderson# Note the unpriv load/stores use the previously invalid P=0, W=1 encoding, 2615e291fe1SRichard Henderson# and act as normal post-indexed (P=0, W=0). 2625e291fe1SRichard Henderson@ldst_rr_p0w1 ---- ...0 u:1 . 1 . rn:4 rt:4 .... .... rm:4 \ 2635e291fe1SRichard Henderson &ldst_rr p=0 w=0 shimm=0 shtype=0 2645e291fe1SRichard Henderson 2655e291fe1SRichard HendersonSTRHT_rr .... 000. .0.0 .... .... 0000 1011 .... @ldst_rr_p0w1 2665e291fe1SRichard HendersonLDRHT_rr .... 000. .0.1 .... .... 0000 1011 .... @ldst_rr_p0w1 2675e291fe1SRichard HendersonLDRSBT_rr .... 000. .0.1 .... .... 0000 1101 .... @ldst_rr_p0w1 2685e291fe1SRichard HendersonLDRSHT_rr .... 000. .0.1 .... .... 0000 1111 .... @ldst_rr_p0w1 2695e291fe1SRichard Henderson 2705e291fe1SRichard Henderson# Load/Store word and unsigned byte (register) 2715e291fe1SRichard Henderson 2725e291fe1SRichard Henderson@ldst_rs_p1w ---- ...1 u:1 . w:1 . rn:4 rt:4 shimm:5 shtype:2 . rm:4 \ 2735e291fe1SRichard Henderson &ldst_rr p=1 2745e291fe1SRichard Henderson@ldst_rs_pw0 ---- ...0 u:1 . 0 . rn:4 rt:4 shimm:5 shtype:2 . rm:4 \ 2755e291fe1SRichard Henderson &ldst_rr p=0 w=0 2765e291fe1SRichard Henderson 2775e291fe1SRichard HendersonSTR_rr .... 011. .0.0 .... .... .... ...0 .... @ldst_rs_pw0 2785e291fe1SRichard HendersonSTR_rr .... 011. .0.0 .... .... .... ...0 .... @ldst_rs_p1w 2795e291fe1SRichard HendersonSTRB_rr .... 011. .1.0 .... .... .... ...0 .... @ldst_rs_pw0 2805e291fe1SRichard HendersonSTRB_rr .... 011. .1.0 .... .... .... ...0 .... @ldst_rs_p1w 2815e291fe1SRichard Henderson 2825e291fe1SRichard HendersonLDR_rr .... 011. .0.1 .... .... .... ...0 .... @ldst_rs_pw0 2835e291fe1SRichard HendersonLDR_rr .... 011. .0.1 .... .... .... ...0 .... @ldst_rs_p1w 2845e291fe1SRichard HendersonLDRB_rr .... 011. .1.1 .... .... .... ...0 .... @ldst_rs_pw0 2855e291fe1SRichard HendersonLDRB_rr .... 011. .1.1 .... .... .... ...0 .... @ldst_rs_p1w 2865e291fe1SRichard Henderson 2875e291fe1SRichard Henderson@ldst_rs_p0w1 ---- ...0 u:1 . 1 . rn:4 rt:4 shimm:5 shtype:2 . rm:4 \ 2885e291fe1SRichard Henderson &ldst_rr p=0 w=0 2895e291fe1SRichard Henderson 2905e291fe1SRichard HendersonSTRT_rr .... 011. .0.0 .... .... .... ...0 .... @ldst_rs_p0w1 2915e291fe1SRichard HendersonSTRBT_rr .... 011. .1.0 .... .... .... ...0 .... @ldst_rs_p0w1 2925e291fe1SRichard HendersonLDRT_rr .... 011. .0.1 .... .... .... ...0 .... @ldst_rs_p0w1 2935e291fe1SRichard HendersonLDRBT_rr .... 011. .1.1 .... .... .... ...0 .... @ldst_rs_p0w1 2945e291fe1SRichard Henderson 2955e291fe1SRichard Henderson# Load/Store Dual, Half, Signed Byte (immediate) 2965e291fe1SRichard Henderson 2975e291fe1SRichard Henderson%imm8s_8_0 8:4 0:4 2985e291fe1SRichard Henderson@ldst_ri8_p1w ---- ...1 u:1 . w:1 . rn:4 rt:4 .... .... .... \ 2995e291fe1SRichard Henderson &ldst_ri imm=%imm8s_8_0 p=1 3005e291fe1SRichard Henderson@ldst_ri8_pw0 ---- ...0 u:1 . 0 . rn:4 rt:4 .... .... .... \ 3015e291fe1SRichard Henderson &ldst_ri imm=%imm8s_8_0 p=0 w=0 3025e291fe1SRichard Henderson 3035e291fe1SRichard HendersonSTRH_ri .... 000. .1.0 .... .... .... 1011 .... @ldst_ri8_pw0 3045e291fe1SRichard HendersonSTRH_ri .... 000. .1.0 .... .... .... 1011 .... @ldst_ri8_p1w 3055e291fe1SRichard Henderson 3065e291fe1SRichard HendersonLDRD_ri_a32 .... 000. .1.0 .... .... .... 1101 .... @ldst_ri8_pw0 3075e291fe1SRichard HendersonLDRD_ri_a32 .... 000. .1.0 .... .... .... 1101 .... @ldst_ri8_p1w 3085e291fe1SRichard Henderson 3095e291fe1SRichard HendersonSTRD_ri_a32 .... 000. .1.0 .... .... .... 1111 .... @ldst_ri8_pw0 3105e291fe1SRichard HendersonSTRD_ri_a32 .... 000. .1.0 .... .... .... 1111 .... @ldst_ri8_p1w 3115e291fe1SRichard Henderson 3125e291fe1SRichard HendersonLDRH_ri .... 000. .1.1 .... .... .... 1011 .... @ldst_ri8_pw0 3135e291fe1SRichard HendersonLDRH_ri .... 000. .1.1 .... .... .... 1011 .... @ldst_ri8_p1w 3145e291fe1SRichard Henderson 3155e291fe1SRichard HendersonLDRSB_ri .... 000. .1.1 .... .... .... 1101 .... @ldst_ri8_pw0 3165e291fe1SRichard HendersonLDRSB_ri .... 000. .1.1 .... .... .... 1101 .... @ldst_ri8_p1w 3175e291fe1SRichard Henderson 3185e291fe1SRichard HendersonLDRSH_ri .... 000. .1.1 .... .... .... 1111 .... @ldst_ri8_pw0 3195e291fe1SRichard HendersonLDRSH_ri .... 000. .1.1 .... .... .... 1111 .... @ldst_ri8_p1w 3205e291fe1SRichard Henderson 3215e291fe1SRichard Henderson# Note the unpriv load/stores use the previously invalid P=0, W=1 encoding, 3225e291fe1SRichard Henderson# and act as normal post-indexed (P=0, W=0). 3235e291fe1SRichard Henderson@ldst_ri8_p0w1 ---- ...0 u:1 . 1 . rn:4 rt:4 .... .... .... \ 3245e291fe1SRichard Henderson &ldst_ri imm=%imm8s_8_0 p=0 w=0 3255e291fe1SRichard Henderson 3265e291fe1SRichard HendersonSTRHT_ri .... 000. .1.0 .... .... .... 1011 .... @ldst_ri8_p0w1 3275e291fe1SRichard HendersonLDRHT_ri .... 000. .1.1 .... .... .... 1011 .... @ldst_ri8_p0w1 3285e291fe1SRichard HendersonLDRSBT_ri .... 000. .1.1 .... .... .... 1101 .... @ldst_ri8_p0w1 3295e291fe1SRichard HendersonLDRSHT_ri .... 000. .1.1 .... .... .... 1111 .... @ldst_ri8_p0w1 3305e291fe1SRichard Henderson 3315e291fe1SRichard Henderson# Load/Store word and unsigned byte (immediate) 3325e291fe1SRichard Henderson 3335e291fe1SRichard Henderson@ldst_ri12_p1w ---- ...1 u:1 . w:1 . rn:4 rt:4 imm:12 &ldst_ri p=1 3345e291fe1SRichard Henderson@ldst_ri12_pw0 ---- ...0 u:1 . 0 . rn:4 rt:4 imm:12 &ldst_ri p=0 w=0 3355e291fe1SRichard Henderson 3365e291fe1SRichard HendersonSTR_ri .... 010. .0.0 .... .... ............ @ldst_ri12_p1w 3375e291fe1SRichard HendersonSTR_ri .... 010. .0.0 .... .... ............ @ldst_ri12_pw0 3385e291fe1SRichard HendersonSTRB_ri .... 010. .1.0 .... .... ............ @ldst_ri12_p1w 3395e291fe1SRichard HendersonSTRB_ri .... 010. .1.0 .... .... ............ @ldst_ri12_pw0 3405e291fe1SRichard Henderson 3415e291fe1SRichard HendersonLDR_ri .... 010. .0.1 .... .... ............ @ldst_ri12_p1w 3425e291fe1SRichard HendersonLDR_ri .... 010. .0.1 .... .... ............ @ldst_ri12_pw0 3435e291fe1SRichard HendersonLDRB_ri .... 010. .1.1 .... .... ............ @ldst_ri12_p1w 3445e291fe1SRichard HendersonLDRB_ri .... 010. .1.1 .... .... ............ @ldst_ri12_pw0 3455e291fe1SRichard Henderson 3465e291fe1SRichard Henderson@ldst_ri12_p0w1 ---- ...0 u:1 . 1 . rn:4 rt:4 imm:12 &ldst_ri p=0 w=0 3475e291fe1SRichard Henderson 3485e291fe1SRichard HendersonSTRT_ri .... 010. .0.0 .... .... ............ @ldst_ri12_p0w1 3495e291fe1SRichard HendersonSTRBT_ri .... 010. .1.0 .... .... ............ @ldst_ri12_p0w1 3505e291fe1SRichard HendersonLDRT_ri .... 010. .0.1 .... .... ............ @ldst_ri12_p0w1 3515e291fe1SRichard HendersonLDRBT_ri .... 010. .1.1 .... .... ............ @ldst_ri12_p0w1 3521efdd407SRichard Henderson 3531efdd407SRichard Henderson# Synchronization primitives 3541efdd407SRichard Henderson 3551efdd407SRichard Henderson@swp ---- .... .... rn:4 rt:4 .... .... rt2:4 3561efdd407SRichard Henderson 3571efdd407SRichard HendersonSWP .... 0001 0000 .... .... 0000 1001 .... @swp 3581efdd407SRichard HendersonSWPB .... 0001 0100 .... .... 0000 1001 .... @swp 3591efdd407SRichard Henderson 3601efdd407SRichard Henderson# Load/Store Exclusive and Load-Acquire/Store-Release 3611efdd407SRichard Henderson# 3621efdd407SRichard Henderson# Note rt2 for STREXD/LDREXD is set by the helper after checking rt is even. 3631efdd407SRichard Henderson 3641efdd407SRichard Henderson@strex ---- .... .... rn:4 rd:4 .... .... rt:4 \ 3651efdd407SRichard Henderson &strex imm=0 rt2=15 3661efdd407SRichard Henderson@ldrex ---- .... .... rn:4 rt:4 .... .... .... \ 3671efdd407SRichard Henderson &ldrex imm=0 rt2=15 3681efdd407SRichard Henderson@stl ---- .... .... rn:4 .... .... .... rt:4 \ 3691efdd407SRichard Henderson &ldrex imm=0 rt2=15 3701efdd407SRichard Henderson 3711efdd407SRichard HendersonSTREX .... 0001 1000 .... .... 1111 1001 .... @strex 3721efdd407SRichard HendersonSTREXD_a32 .... 0001 1010 .... .... 1111 1001 .... @strex 3731efdd407SRichard HendersonSTREXB .... 0001 1100 .... .... 1111 1001 .... @strex 3741efdd407SRichard HendersonSTREXH .... 0001 1110 .... .... 1111 1001 .... @strex 3751efdd407SRichard Henderson 3761efdd407SRichard HendersonSTLEX .... 0001 1000 .... .... 1110 1001 .... @strex 3771efdd407SRichard HendersonSTLEXD_a32 .... 0001 1010 .... .... 1110 1001 .... @strex 3781efdd407SRichard HendersonSTLEXB .... 0001 1100 .... .... 1110 1001 .... @strex 3791efdd407SRichard HendersonSTLEXH .... 0001 1110 .... .... 1110 1001 .... @strex 3801efdd407SRichard Henderson 3811efdd407SRichard HendersonSTL .... 0001 1000 .... 1111 1100 1001 .... @stl 3821efdd407SRichard HendersonSTLB .... 0001 1100 .... 1111 1100 1001 .... @stl 3831efdd407SRichard HendersonSTLH .... 0001 1110 .... 1111 1100 1001 .... @stl 3841efdd407SRichard Henderson 3851efdd407SRichard HendersonLDREX .... 0001 1001 .... .... 1111 1001 1111 @ldrex 3861efdd407SRichard HendersonLDREXD_a32 .... 0001 1011 .... .... 1111 1001 1111 @ldrex 3871efdd407SRichard HendersonLDREXB .... 0001 1101 .... .... 1111 1001 1111 @ldrex 3881efdd407SRichard HendersonLDREXH .... 0001 1111 .... .... 1111 1001 1111 @ldrex 3891efdd407SRichard Henderson 3901efdd407SRichard HendersonLDAEX .... 0001 1001 .... .... 1110 1001 1111 @ldrex 3911efdd407SRichard HendersonLDAEXD_a32 .... 0001 1011 .... .... 1110 1001 1111 @ldrex 3921efdd407SRichard HendersonLDAEXB .... 0001 1101 .... .... 1110 1001 1111 @ldrex 3931efdd407SRichard HendersonLDAEXH .... 0001 1111 .... .... 1110 1001 1111 @ldrex 3941efdd407SRichard Henderson 3951efdd407SRichard HendersonLDA .... 0001 1001 .... .... 1100 1001 1111 @ldrex 3961efdd407SRichard HendersonLDAB .... 0001 1101 .... .... 1100 1001 1111 @ldrex 3971efdd407SRichard HendersonLDAH .... 0001 1111 .... .... 1100 1001 1111 @ldrex 39886d21e4bSRichard Henderson 39986d21e4bSRichard Henderson# Media instructions 40086d21e4bSRichard Henderson 40186d21e4bSRichard Henderson# usad8 is usada8 w/ ra=15 40286d21e4bSRichard HendersonUSADA8 ---- 0111 1000 rd:4 ra:4 rm:4 0001 rn:4 40386d21e4bSRichard Henderson 40486d21e4bSRichard Henderson# ubfx and sbfx 40586d21e4bSRichard Henderson@bfx ---- .... ... widthm1:5 rd:4 lsb:5 ... rn:4 &bfx 40686d21e4bSRichard Henderson 40786d21e4bSRichard HendersonSBFX .... 0111 101 ..... .... ..... 101 .... @bfx 40886d21e4bSRichard HendersonUBFX .... 0111 111 ..... .... ..... 101 .... @bfx 40986d21e4bSRichard Henderson 41086d21e4bSRichard Henderson# bfc is bfi w/ rn=15 41186d21e4bSRichard HendersonBFCI ---- 0111 110 msb:5 rd:4 lsb:5 001 rn:4 &bfi 41286d21e4bSRichard Henderson 41386d21e4bSRichard Henderson# While we could get UDEF by not including this, add the pattern for 41486d21e4bSRichard Henderson# documentation and to conflict with any other typos in this file. 41586d21e4bSRichard HendersonUDF 1110 0111 1111 ---- ---- ---- 1111 ---- 416adf1a566SRichard Henderson 417adf1a566SRichard Henderson# Parallel addition and subtraction 418adf1a566SRichard Henderson 419adf1a566SRichard HendersonSADD16 .... 0110 0001 .... .... 1111 0001 .... @rndm 420adf1a566SRichard HendersonSASX .... 0110 0001 .... .... 1111 0011 .... @rndm 421adf1a566SRichard HendersonSSAX .... 0110 0001 .... .... 1111 0101 .... @rndm 422adf1a566SRichard HendersonSSUB16 .... 0110 0001 .... .... 1111 0111 .... @rndm 423adf1a566SRichard HendersonSADD8 .... 0110 0001 .... .... 1111 1001 .... @rndm 424adf1a566SRichard HendersonSSUB8 .... 0110 0001 .... .... 1111 1111 .... @rndm 425adf1a566SRichard Henderson 426adf1a566SRichard HendersonQADD16 .... 0110 0010 .... .... 1111 0001 .... @rndm 427adf1a566SRichard HendersonQASX .... 0110 0010 .... .... 1111 0011 .... @rndm 428adf1a566SRichard HendersonQSAX .... 0110 0010 .... .... 1111 0101 .... @rndm 429adf1a566SRichard HendersonQSUB16 .... 0110 0010 .... .... 1111 0111 .... @rndm 430adf1a566SRichard HendersonQADD8 .... 0110 0010 .... .... 1111 1001 .... @rndm 431adf1a566SRichard HendersonQSUB8 .... 0110 0010 .... .... 1111 1111 .... @rndm 432adf1a566SRichard Henderson 433adf1a566SRichard HendersonSHADD16 .... 0110 0011 .... .... 1111 0001 .... @rndm 434adf1a566SRichard HendersonSHASX .... 0110 0011 .... .... 1111 0011 .... @rndm 435adf1a566SRichard HendersonSHSAX .... 0110 0011 .... .... 1111 0101 .... @rndm 436adf1a566SRichard HendersonSHSUB16 .... 0110 0011 .... .... 1111 0111 .... @rndm 437adf1a566SRichard HendersonSHADD8 .... 0110 0011 .... .... 1111 1001 .... @rndm 438adf1a566SRichard HendersonSHSUB8 .... 0110 0011 .... .... 1111 1111 .... @rndm 439adf1a566SRichard Henderson 440adf1a566SRichard HendersonUADD16 .... 0110 0101 .... .... 1111 0001 .... @rndm 441adf1a566SRichard HendersonUASX .... 0110 0101 .... .... 1111 0011 .... @rndm 442adf1a566SRichard HendersonUSAX .... 0110 0101 .... .... 1111 0101 .... @rndm 443adf1a566SRichard HendersonUSUB16 .... 0110 0101 .... .... 1111 0111 .... @rndm 444adf1a566SRichard HendersonUADD8 .... 0110 0101 .... .... 1111 1001 .... @rndm 445adf1a566SRichard HendersonUSUB8 .... 0110 0101 .... .... 1111 1111 .... @rndm 446adf1a566SRichard Henderson 447adf1a566SRichard HendersonUQADD16 .... 0110 0110 .... .... 1111 0001 .... @rndm 448adf1a566SRichard HendersonUQASX .... 0110 0110 .... .... 1111 0011 .... @rndm 449adf1a566SRichard HendersonUQSAX .... 0110 0110 .... .... 1111 0101 .... @rndm 450adf1a566SRichard HendersonUQSUB16 .... 0110 0110 .... .... 1111 0111 .... @rndm 451adf1a566SRichard HendersonUQADD8 .... 0110 0110 .... .... 1111 1001 .... @rndm 452adf1a566SRichard HendersonUQSUB8 .... 0110 0110 .... .... 1111 1111 .... @rndm 453adf1a566SRichard Henderson 454adf1a566SRichard HendersonUHADD16 .... 0110 0111 .... .... 1111 0001 .... @rndm 455adf1a566SRichard HendersonUHASX .... 0110 0111 .... .... 1111 0011 .... @rndm 456adf1a566SRichard HendersonUHSAX .... 0110 0111 .... .... 1111 0101 .... @rndm 457adf1a566SRichard HendersonUHSUB16 .... 0110 0111 .... .... 1111 0111 .... @rndm 458adf1a566SRichard HendersonUHADD8 .... 0110 0111 .... .... 1111 1001 .... @rndm 459adf1a566SRichard HendersonUHSUB8 .... 0110 0111 .... .... 1111 1111 .... @rndm 460*46497f6aSRichard Henderson 461*46497f6aSRichard Henderson# Packing, unpacking, saturation, and reversal 462*46497f6aSRichard Henderson 463*46497f6aSRichard HendersonPKH ---- 0110 1000 rn:4 rd:4 imm:5 tb:1 01 rm:4 &pkh 464*46497f6aSRichard Henderson 465*46497f6aSRichard Henderson@sat ---- .... ... satimm:5 rd:4 imm:5 sh:1 .. rn:4 &sat 466*46497f6aSRichard Henderson@sat16 ---- .... .... satimm:4 rd:4 .... .... rn:4 \ 467*46497f6aSRichard Henderson &sat imm=0 sh=0 468*46497f6aSRichard Henderson 469*46497f6aSRichard HendersonSSAT .... 0110 101. .... .... .... ..01 .... @sat 470*46497f6aSRichard HendersonUSAT .... 0110 111. .... .... .... ..01 .... @sat 471*46497f6aSRichard Henderson 472*46497f6aSRichard HendersonSSAT16 .... 0110 1010 .... .... 1111 0011 .... @sat16 473*46497f6aSRichard HendersonUSAT16 .... 0110 1110 .... .... 1111 0011 .... @sat16 474*46497f6aSRichard Henderson 475*46497f6aSRichard Henderson@rrr_rot ---- .... .... rn:4 rd:4 rot:2 ...... rm:4 &rrr_rot 476*46497f6aSRichard Henderson 477*46497f6aSRichard HendersonSXTAB16 .... 0110 1000 .... .... ..00 0111 .... @rrr_rot 478*46497f6aSRichard HendersonSXTAB .... 0110 1010 .... .... ..00 0111 .... @rrr_rot 479*46497f6aSRichard HendersonSXTAH .... 0110 1011 .... .... ..00 0111 .... @rrr_rot 480*46497f6aSRichard HendersonUXTAB16 .... 0110 1100 .... .... ..00 0111 .... @rrr_rot 481*46497f6aSRichard HendersonUXTAB .... 0110 1110 .... .... ..00 0111 .... @rrr_rot 482*46497f6aSRichard HendersonUXTAH .... 0110 1111 .... .... ..00 0111 .... @rrr_rot 483*46497f6aSRichard Henderson 484*46497f6aSRichard HendersonSEL .... 0110 1000 .... .... 1111 1011 .... @rndm 485*46497f6aSRichard HendersonREV .... 0110 1011 1111 .... 1111 0011 .... @rdm 486*46497f6aSRichard HendersonREV16 .... 0110 1011 1111 .... 1111 1011 .... @rdm 487*46497f6aSRichard HendersonREVSH .... 0110 1111 1111 .... 1111 1011 .... @rdm 488*46497f6aSRichard HendersonRBIT .... 0110 1111 1111 .... 1111 0011 .... @rdm 489