151409b9eSRichard Henderson# Thumb2 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# 2125ae32c5SRichard Henderson 2263130596SRichard Henderson&empty !extern 2325ae32c5SRichard Henderson&s_rrr_shi !extern s rd rn rm shim shty 245be2c123SRichard Henderson&s_rrr_shr !extern s rn rd rm rs shty 25581c6ebdSRichard Henderson&s_rri_rot !extern s rn rd imm rot 26bd92fe35SRichard Henderson&s_rrrr !extern s rd rn rm ra 27bd92fe35SRichard Henderson&rrrr !extern rd rn rm ra 2846497f6aSRichard Henderson&rrr_rot !extern rd rn rm rot 296d0730a8SRichard Henderson&rrr !extern rd rn rm 304c97f5b2SRichard Henderson&rr !extern rd rm 31145952e8SRichard Henderson&ri !extern rd imm 324ed95abdSRichard Henderson&r !extern rm 332cde9ea5SRichard Henderson&i !extern imm 34d0b26644SRichard Henderson&msr_reg !extern rn r mask 35d0b26644SRichard Henderson&mrs_reg !extern rd r 36d0b26644SRichard Henderson&msr_bank !extern rn r sysm 37d0b26644SRichard Henderson&mrs_bank !extern rd r sysm 385e291fe1SRichard Henderson&ldst_rr !extern p w u rn rt rm shimm shtype 395e291fe1SRichard Henderson&ldst_ri !extern p w u rn rt imm 40c5c426d4SRichard Henderson&ldst_block !extern rn i b u w list 411efdd407SRichard Henderson&strex !extern rn rd rt rt2 imm 421efdd407SRichard Henderson&ldrex !extern rn rt rt2 imm 4386d21e4bSRichard Henderson&bfx !extern rd rn lsb widthm1 4486d21e4bSRichard Henderson&bfi !extern rd rn lsb msb 4546497f6aSRichard Henderson&sat !extern rd rn satimm imm sh 4646497f6aSRichard Henderson&pkh !extern rd rn rm imm tb 4752f83b9cSRichard Henderson&cps !extern mode imod M A I F 484c498dcfSPeter Maydell&mcr !extern cp opc1 crn crm opc2 rt 494c498dcfSPeter Maydell&mcrr !extern cp opc1 crm rt rt2 5025ae32c5SRichard Henderson 5125ae32c5SRichard Henderson# Data-processing (register) 5225ae32c5SRichard Henderson 5325ae32c5SRichard Henderson%imm5_12_6 12:3 6:2 5425ae32c5SRichard Henderson 5525ae32c5SRichard Henderson@s_rrr_shi ....... .... s:1 rn:4 .... rd:4 .. shty:2 rm:4 \ 5625ae32c5SRichard Henderson &s_rrr_shi shim=%imm5_12_6 5725ae32c5SRichard Henderson@s_rxr_shi ....... .... s:1 .... .... rd:4 .. shty:2 rm:4 \ 5825ae32c5SRichard Henderson &s_rrr_shi shim=%imm5_12_6 rn=0 5925ae32c5SRichard Henderson@S_xrr_shi ....... .... . rn:4 .... .... .. shty:2 rm:4 \ 6025ae32c5SRichard Henderson &s_rrr_shi shim=%imm5_12_6 s=1 rd=0 6125ae32c5SRichard Henderson 6225ae32c5SRichard Henderson{ 6325ae32c5SRichard Henderson TST_xrri 1110101 0000 1 .... 0 ... 1111 .... .... @S_xrr_shi 6425ae32c5SRichard Henderson AND_rrri 1110101 0000 . .... 0 ... .... .... .... @s_rrr_shi 6525ae32c5SRichard Henderson} 6625ae32c5SRichard HendersonBIC_rrri 1110101 0001 . .... 0 ... .... .... .... @s_rrr_shi 6725ae32c5SRichard Henderson{ 6825ae32c5SRichard Henderson MOV_rxri 1110101 0010 . 1111 0 ... .... .... .... @s_rxr_shi 6925ae32c5SRichard Henderson ORR_rrri 1110101 0010 . .... 0 ... .... .... .... @s_rrr_shi 7025ae32c5SRichard Henderson} 7125ae32c5SRichard Henderson{ 7225ae32c5SRichard Henderson MVN_rxri 1110101 0011 . 1111 0 ... .... .... .... @s_rxr_shi 7325ae32c5SRichard Henderson ORN_rrri 1110101 0011 . .... 0 ... .... .... .... @s_rrr_shi 7425ae32c5SRichard Henderson} 7525ae32c5SRichard Henderson{ 7625ae32c5SRichard Henderson TEQ_xrri 1110101 0100 1 .... 0 ... 1111 .... .... @S_xrr_shi 7725ae32c5SRichard Henderson EOR_rrri 1110101 0100 . .... 0 ... .... .... .... @s_rrr_shi 7825ae32c5SRichard Henderson} 7946497f6aSRichard HendersonPKH 1110101 0110 0 rn:4 0 ... rd:4 .. tb:1 0 rm:4 \ 8046497f6aSRichard Henderson &pkh imm=%imm5_12_6 8125ae32c5SRichard Henderson{ 8225ae32c5SRichard Henderson CMN_xrri 1110101 1000 1 .... 0 ... 1111 .... .... @S_xrr_shi 8325ae32c5SRichard Henderson ADD_rrri 1110101 1000 . .... 0 ... .... .... .... @s_rrr_shi 8425ae32c5SRichard Henderson} 8525ae32c5SRichard HendersonADC_rrri 1110101 1010 . .... 0 ... .... .... .... @s_rrr_shi 8625ae32c5SRichard HendersonSBC_rrri 1110101 1011 . .... 0 ... .... .... .... @s_rrr_shi 8725ae32c5SRichard Henderson{ 8825ae32c5SRichard Henderson CMP_xrri 1110101 1101 1 .... 0 ... 1111 .... .... @S_xrr_shi 8925ae32c5SRichard Henderson SUB_rrri 1110101 1101 . .... 0 ... .... .... .... @s_rrr_shi 9025ae32c5SRichard Henderson} 9125ae32c5SRichard HendersonRSB_rrri 1110101 1110 . .... 0 ... .... .... .... @s_rrr_shi 925be2c123SRichard Henderson 93*cc73bbdeSPeter Maydell# v8.1M CSEL and friends 94*cc73bbdeSPeter MaydellCSEL 1110101 0010 1 rn:4 10 op:2 rd:4 fcond:4 rm:4 95*cc73bbdeSPeter Maydell 965be2c123SRichard Henderson# Data-processing (register-shifted register) 975be2c123SRichard Henderson 985be2c123SRichard HendersonMOV_rxrr 1111 1010 0 shty:2 s:1 rm:4 1111 rd:4 0000 rs:4 \ 995be2c123SRichard Henderson &s_rrr_shr rn=0 100581c6ebdSRichard Henderson 101581c6ebdSRichard Henderson# Data-processing (immediate) 102581c6ebdSRichard Henderson 103581c6ebdSRichard Henderson%t32extrot 26:1 12:3 0:8 !function=t32_expandimm_rot 104581c6ebdSRichard Henderson%t32extimm 26:1 12:3 0:8 !function=t32_expandimm_imm 105581c6ebdSRichard Henderson 106581c6ebdSRichard Henderson@s_rri_rot ....... .... s:1 rn:4 . ... rd:4 ........ \ 107581c6ebdSRichard Henderson &s_rri_rot imm=%t32extimm rot=%t32extrot 108581c6ebdSRichard Henderson@s_rxi_rot ....... .... s:1 .... . ... rd:4 ........ \ 109581c6ebdSRichard Henderson &s_rri_rot imm=%t32extimm rot=%t32extrot rn=0 110581c6ebdSRichard Henderson@S_xri_rot ....... .... . rn:4 . ... .... ........ \ 111581c6ebdSRichard Henderson &s_rri_rot imm=%t32extimm rot=%t32extrot s=1 rd=0 112581c6ebdSRichard Henderson 113581c6ebdSRichard Henderson{ 114581c6ebdSRichard Henderson TST_xri 1111 0.0 0000 1 .... 0 ... 1111 ........ @S_xri_rot 115581c6ebdSRichard Henderson AND_rri 1111 0.0 0000 . .... 0 ... .... ........ @s_rri_rot 116581c6ebdSRichard Henderson} 117581c6ebdSRichard HendersonBIC_rri 1111 0.0 0001 . .... 0 ... .... ........ @s_rri_rot 118581c6ebdSRichard Henderson{ 119581c6ebdSRichard Henderson MOV_rxi 1111 0.0 0010 . 1111 0 ... .... ........ @s_rxi_rot 120581c6ebdSRichard Henderson ORR_rri 1111 0.0 0010 . .... 0 ... .... ........ @s_rri_rot 121581c6ebdSRichard Henderson} 122581c6ebdSRichard Henderson{ 123581c6ebdSRichard Henderson MVN_rxi 1111 0.0 0011 . 1111 0 ... .... ........ @s_rxi_rot 124581c6ebdSRichard Henderson ORN_rri 1111 0.0 0011 . .... 0 ... .... ........ @s_rri_rot 125581c6ebdSRichard Henderson} 126581c6ebdSRichard Henderson{ 127581c6ebdSRichard Henderson TEQ_xri 1111 0.0 0100 1 .... 0 ... 1111 ........ @S_xri_rot 128581c6ebdSRichard Henderson EOR_rri 1111 0.0 0100 . .... 0 ... .... ........ @s_rri_rot 129581c6ebdSRichard Henderson} 130581c6ebdSRichard Henderson{ 131581c6ebdSRichard Henderson CMN_xri 1111 0.0 1000 1 .... 0 ... 1111 ........ @S_xri_rot 132581c6ebdSRichard Henderson ADD_rri 1111 0.0 1000 . .... 0 ... .... ........ @s_rri_rot 133581c6ebdSRichard Henderson} 134581c6ebdSRichard HendersonADC_rri 1111 0.0 1010 . .... 0 ... .... ........ @s_rri_rot 135581c6ebdSRichard HendersonSBC_rri 1111 0.0 1011 . .... 0 ... .... ........ @s_rri_rot 136581c6ebdSRichard Henderson{ 137581c6ebdSRichard Henderson CMP_xri 1111 0.0 1101 1 .... 0 ... 1111 ........ @S_xri_rot 138581c6ebdSRichard Henderson SUB_rri 1111 0.0 1101 . .... 0 ... .... ........ @s_rri_rot 139581c6ebdSRichard Henderson} 140581c6ebdSRichard HendersonRSB_rri 1111 0.0 1110 . .... 0 ... .... ........ @s_rri_rot 141bd92fe35SRichard Henderson 142145952e8SRichard Henderson# Data processing (plain binary immediate) 143145952e8SRichard Henderson 144145952e8SRichard Henderson%imm12_26_12_0 26:1 12:3 0:8 145145952e8SRichard Henderson%neg12_26_12_0 26:1 12:3 0:8 !function=negate 146145952e8SRichard Henderson@s0_rri_12 .... ... .... . rn:4 . ... rd:4 ........ \ 147145952e8SRichard Henderson &s_rri_rot imm=%imm12_26_12_0 rot=0 s=0 148145952e8SRichard Henderson 149145952e8SRichard Henderson{ 150145952e8SRichard Henderson ADR 1111 0.1 0000 0 1111 0 ... rd:4 ........ \ 151145952e8SRichard Henderson &ri imm=%imm12_26_12_0 152145952e8SRichard Henderson ADD_rri 1111 0.1 0000 0 .... 0 ... .... ........ @s0_rri_12 153145952e8SRichard Henderson} 154145952e8SRichard Henderson{ 155145952e8SRichard Henderson ADR 1111 0.1 0101 0 1111 0 ... rd:4 ........ \ 156145952e8SRichard Henderson &ri imm=%neg12_26_12_0 157145952e8SRichard Henderson SUB_rri 1111 0.1 0101 0 .... 0 ... .... ........ @s0_rri_12 158145952e8SRichard Henderson} 159145952e8SRichard Henderson 1608f445127SRichard Henderson# Move Wide 1618f445127SRichard Henderson 1628f445127SRichard Henderson%imm16_26_16_12_0 16:4 26:1 12:3 0:8 1638f445127SRichard Henderson@mov16 .... .... .... .... .... rd:4 .... .... \ 1648f445127SRichard Henderson &ri imm=%imm16_26_16_12_0 1658f445127SRichard Henderson 1668f445127SRichard HendersonMOVW 1111 0.10 0100 .... 0 ... .... ........ @mov16 1678f445127SRichard HendersonMOVT 1111 0.10 1100 .... 0 ... .... ........ @mov16 1688f445127SRichard Henderson 16986d21e4bSRichard Henderson# Saturate, bitfield 17086d21e4bSRichard Henderson 17146497f6aSRichard Henderson@sat .... .... .. sh:1 . rn:4 . ... rd:4 .. . satimm:5 \ 17246497f6aSRichard Henderson &sat imm=%imm5_12_6 17346497f6aSRichard Henderson@sat16 .... .... .. . . rn:4 . ... rd:4 .. . satimm:5 \ 17446497f6aSRichard Henderson &sat sh=0 imm=0 17546497f6aSRichard Henderson 17646497f6aSRichard Henderson{ 17746497f6aSRichard Henderson SSAT16 1111 0011 001 0 .... 0 000 .... 00 0 ..... @sat16 17846497f6aSRichard Henderson SSAT 1111 0011 00. 0 .... 0 ... .... .. 0 ..... @sat 17946497f6aSRichard Henderson} 18046497f6aSRichard Henderson{ 18146497f6aSRichard Henderson USAT16 1111 0011 101 0 .... 0 000 .... 00 0 ..... @sat16 18246497f6aSRichard Henderson USAT 1111 0011 10. 0 .... 0 ... .... .. 0 ..... @sat 18346497f6aSRichard Henderson} 18446497f6aSRichard Henderson 18586d21e4bSRichard Henderson@bfx .... .... ... . rn:4 . ... rd:4 .. . widthm1:5 \ 18686d21e4bSRichard Henderson &bfx lsb=%imm5_12_6 18786d21e4bSRichard Henderson@bfi .... .... ... . rn:4 . ... rd:4 .. . msb:5 \ 18886d21e4bSRichard Henderson &bfi lsb=%imm5_12_6 18986d21e4bSRichard Henderson 19086d21e4bSRichard HendersonSBFX 1111 0011 010 0 .... 0 ... .... ..0..... @bfx 19186d21e4bSRichard HendersonUBFX 1111 0011 110 0 .... 0 ... .... ..0..... @bfx 19286d21e4bSRichard Henderson 19386d21e4bSRichard Henderson# bfc is bfi w/ rn=15 19486d21e4bSRichard HendersonBFCI 1111 0011 011 0 .... 0 ... .... ..0..... @bfi 19586d21e4bSRichard Henderson 196bd92fe35SRichard Henderson# Multiply and multiply accumulate 197bd92fe35SRichard Henderson 198bd92fe35SRichard Henderson@s0_rnadm .... .... .... rn:4 ra:4 rd:4 .... rm:4 &s_rrrr s=0 199bd92fe35SRichard Henderson@s0_rn0dm .... .... .... rn:4 .... rd:4 .... rm:4 &s_rrrr ra=0 s=0 200bd92fe35SRichard Henderson@rnadm .... .... .... rn:4 ra:4 rd:4 .... rm:4 &rrrr 20126c6923dSRichard Henderson@rn0dm .... .... .... rn:4 .... rd:4 .... rm:4 &rrrr ra=0 2026d0730a8SRichard Henderson@rndm .... .... .... rn:4 .... rd:4 .... rm:4 &rrr 2034c97f5b2SRichard Henderson@rdm .... .... .... .... .... rd:4 .... rm:4 &rr 204bd92fe35SRichard Henderson 205bd92fe35SRichard Henderson{ 206bd92fe35SRichard Henderson MUL 1111 1011 0000 .... 1111 .... 0000 .... @s0_rn0dm 207bd92fe35SRichard Henderson MLA 1111 1011 0000 .... .... .... 0000 .... @s0_rnadm 208bd92fe35SRichard Henderson} 209bd92fe35SRichard HendersonMLS 1111 1011 0000 .... .... .... 0001 .... @rnadm 210bd92fe35SRichard HendersonSMULL 1111 1011 1000 .... .... .... 0000 .... @s0_rnadm 211bd92fe35SRichard HendersonUMULL 1111 1011 1010 .... .... .... 0000 .... @s0_rnadm 212bd92fe35SRichard HendersonSMLAL 1111 1011 1100 .... .... .... 0000 .... @s0_rnadm 213bd92fe35SRichard HendersonUMLAL 1111 1011 1110 .... .... .... 0000 .... @s0_rnadm 214bd92fe35SRichard HendersonUMAAL 1111 1011 1110 .... .... .... 0110 .... @rnadm 21526c6923dSRichard Henderson{ 21626c6923dSRichard Henderson SMULWB 1111 1011 0011 .... 1111 .... 0000 .... @rn0dm 21726c6923dSRichard Henderson SMLAWB 1111 1011 0011 .... .... .... 0000 .... @rnadm 21826c6923dSRichard Henderson} 21926c6923dSRichard Henderson{ 22026c6923dSRichard Henderson SMULWT 1111 1011 0011 .... 1111 .... 0001 .... @rn0dm 22126c6923dSRichard Henderson SMLAWT 1111 1011 0011 .... .... .... 0001 .... @rnadm 22226c6923dSRichard Henderson} 22326c6923dSRichard Henderson{ 22426c6923dSRichard Henderson SMULBB 1111 1011 0001 .... 1111 .... 0000 .... @rn0dm 22526c6923dSRichard Henderson SMLABB 1111 1011 0001 .... .... .... 0000 .... @rnadm 22626c6923dSRichard Henderson} 22726c6923dSRichard Henderson{ 22826c6923dSRichard Henderson SMULBT 1111 1011 0001 .... 1111 .... 0001 .... @rn0dm 22926c6923dSRichard Henderson SMLABT 1111 1011 0001 .... .... .... 0001 .... @rnadm 23026c6923dSRichard Henderson} 23126c6923dSRichard Henderson{ 23226c6923dSRichard Henderson SMULTB 1111 1011 0001 .... 1111 .... 0010 .... @rn0dm 23326c6923dSRichard Henderson SMLATB 1111 1011 0001 .... .... .... 0010 .... @rnadm 23426c6923dSRichard Henderson} 23526c6923dSRichard Henderson{ 23626c6923dSRichard Henderson SMULTT 1111 1011 0001 .... 1111 .... 0011 .... @rn0dm 23726c6923dSRichard Henderson SMLATT 1111 1011 0001 .... .... .... 0011 .... @rnadm 23826c6923dSRichard Henderson} 23926c6923dSRichard HendersonSMLALBB 1111 1011 1100 .... .... .... 1000 .... @rnadm 24026c6923dSRichard HendersonSMLALBT 1111 1011 1100 .... .... .... 1001 .... @rnadm 24126c6923dSRichard HendersonSMLALTB 1111 1011 1100 .... .... .... 1010 .... @rnadm 24226c6923dSRichard HendersonSMLALTT 1111 1011 1100 .... .... .... 1011 .... @rnadm 2436d0730a8SRichard Henderson 24486d21e4bSRichard Henderson# usad8 is usada8 w/ ra=15 24586d21e4bSRichard HendersonUSADA8 1111 1011 0111 .... .... .... 0000 .... @rnadm 24686d21e4bSRichard Henderson 2472c7c4e09SRichard HendersonSMLAD 1111 1011 0010 .... .... .... 0000 .... @rnadm 2482c7c4e09SRichard HendersonSMLADX 1111 1011 0010 .... .... .... 0001 .... @rnadm 2492c7c4e09SRichard HendersonSMLSD 1111 1011 0100 .... .... .... 0000 .... @rnadm 2502c7c4e09SRichard HendersonSMLSDX 1111 1011 0100 .... .... .... 0001 .... @rnadm 2512c7c4e09SRichard Henderson 2522c7c4e09SRichard HendersonSMLALD 1111 1011 1100 .... .... .... 1100 .... @rnadm 2532c7c4e09SRichard HendersonSMLALDX 1111 1011 1100 .... .... .... 1101 .... @rnadm 2542c7c4e09SRichard HendersonSMLSLD 1111 1011 1101 .... .... .... 1100 .... @rnadm 2552c7c4e09SRichard HendersonSMLSLDX 1111 1011 1101 .... .... .... 1101 .... @rnadm 2562c7c4e09SRichard Henderson 2572c7c4e09SRichard HendersonSMMLA 1111 1011 0101 .... .... .... 0000 .... @rnadm 2582c7c4e09SRichard HendersonSMMLAR 1111 1011 0101 .... .... .... 0001 .... @rnadm 2592c7c4e09SRichard HendersonSMMLS 1111 1011 0110 .... .... .... 0000 .... @rnadm 2602c7c4e09SRichard HendersonSMMLSR 1111 1011 0110 .... .... .... 0001 .... @rnadm 2612c7c4e09SRichard Henderson 2622c7c4e09SRichard HendersonSDIV 1111 1011 1001 .... 1111 .... 1111 .... @rndm 2632c7c4e09SRichard HendersonUDIV 1111 1011 1011 .... 1111 .... 1111 .... @rndm 2642c7c4e09SRichard Henderson 2656d0730a8SRichard Henderson# Data-processing (two source registers) 2666d0730a8SRichard Henderson 2676d0730a8SRichard HendersonQADD 1111 1010 1000 .... 1111 .... 1000 .... @rndm 2686d0730a8SRichard HendersonQSUB 1111 1010 1000 .... 1111 .... 1010 .... @rndm 2696d0730a8SRichard HendersonQDADD 1111 1010 1000 .... 1111 .... 1001 .... @rndm 2706d0730a8SRichard HendersonQDSUB 1111 1010 1000 .... 1111 .... 1011 .... @rndm 27163130596SRichard Henderson 2726c35d53fSRichard HendersonCRC32B 1111 1010 1100 .... 1111 .... 1000 .... @rndm 2736c35d53fSRichard HendersonCRC32H 1111 1010 1100 .... 1111 .... 1001 .... @rndm 2746c35d53fSRichard HendersonCRC32W 1111 1010 1100 .... 1111 .... 1010 .... @rndm 2756c35d53fSRichard HendersonCRC32CB 1111 1010 1101 .... 1111 .... 1000 .... @rndm 2766c35d53fSRichard HendersonCRC32CH 1111 1010 1101 .... 1111 .... 1001 .... @rndm 2776c35d53fSRichard HendersonCRC32CW 1111 1010 1101 .... 1111 .... 1010 .... @rndm 2786c35d53fSRichard Henderson 27946497f6aSRichard HendersonSEL 1111 1010 1010 .... 1111 .... 1000 .... @rndm 28046497f6aSRichard Henderson 2814c97f5b2SRichard Henderson# Note rn != rm is CONSTRAINED UNPREDICTABLE; we choose to ignore rn. 28246497f6aSRichard HendersonREV 1111 1010 1001 ---- 1111 .... 1000 .... @rdm 28346497f6aSRichard HendersonREV16 1111 1010 1001 ---- 1111 .... 1001 .... @rdm 28446497f6aSRichard HendersonRBIT 1111 1010 1001 ---- 1111 .... 1010 .... @rdm 28546497f6aSRichard HendersonREVSH 1111 1010 1001 ---- 1111 .... 1011 .... @rdm 2864c97f5b2SRichard HendersonCLZ 1111 1010 1011 ---- 1111 .... 1000 .... @rdm 2874c97f5b2SRichard Henderson 28863130596SRichard Henderson# Branches and miscellaneous control 28963130596SRichard Henderson 290d0b26644SRichard Henderson%msr_sysm 4:1 8:4 291d0b26644SRichard Henderson%mrs_sysm 4:1 16:4 2922cde9ea5SRichard Henderson%imm16_16_0 16:4 0:12 293360144f3SRichard Henderson%imm21 26:s1 11:1 13:1 16:6 0:11 !function=times_2 294360144f3SRichard Henderson&ci cond imm 295d0b26644SRichard Henderson 296d0b26644SRichard Henderson{ 297360144f3SRichard Henderson # Group insn[25:23] = 111, which is cond=111x for the branch below, 298360144f3SRichard Henderson # or unconditional, which would be illegal for the branch. 299360144f3SRichard Henderson { 300360144f3SRichard Henderson # Hints 30163130596SRichard Henderson { 30263130596SRichard Henderson YIELD 1111 0011 1010 1111 1000 0000 0000 0001 30363130596SRichard Henderson WFE 1111 0011 1010 1111 1000 0000 0000 0010 30463130596SRichard Henderson WFI 1111 0011 1010 1111 1000 0000 0000 0011 30563130596SRichard Henderson 30663130596SRichard Henderson # TODO: Implement SEV, SEVL; may help SMP performance. 30763130596SRichard Henderson # SEV 1111 0011 1010 1111 1000 0000 0000 0100 30863130596SRichard Henderson # SEVL 1111 0011 1010 1111 1000 0000 0000 0101 30963130596SRichard Henderson 31063130596SRichard Henderson # The canonical nop ends in 0000 0000, but the whole rest 31163130596SRichard Henderson # of the space is "reserved hint, behaves as nop". 31263130596SRichard Henderson NOP 1111 0011 1010 1111 1000 0000 ---- ---- 31363130596SRichard Henderson } 314519b8471SRichard Henderson 31552f83b9cSRichard Henderson # If imod == '00' && M == '0' then SEE "Hint instructions", above. 31652f83b9cSRichard Henderson CPS 1111 0011 1010 1111 1000 0 imod:2 M:1 A:1 I:1 F:1 mode:5 \ 31752f83b9cSRichard Henderson &cps 31852f83b9cSRichard Henderson 319519b8471SRichard Henderson # Miscellaneous control 320d6084fbaSRichard Henderson [ 321519b8471SRichard Henderson CLREX 1111 0011 1011 1111 1000 1111 0010 1111 322519b8471SRichard Henderson DSB 1111 0011 1011 1111 1000 1111 0100 ---- 323519b8471SRichard Henderson DMB 1111 0011 1011 1111 1000 1111 0101 ---- 324519b8471SRichard Henderson ISB 1111 0011 1011 1111 1000 1111 0110 ---- 325519b8471SRichard Henderson SB 1111 0011 1011 1111 1000 1111 0111 0000 326d6084fbaSRichard Henderson ] 327519b8471SRichard Henderson 328d0b26644SRichard Henderson # Note that the v7m insn overlaps both the normal and banked insn. 329d0b26644SRichard Henderson { 330d0b26644SRichard Henderson MRS_bank 1111 0011 111 r:1 .... 1000 rd:4 001. 0000 \ 331d0b26644SRichard Henderson &mrs_bank sysm=%mrs_sysm 332d0b26644SRichard Henderson MRS_reg 1111 0011 111 r:1 1111 1000 rd:4 0000 0000 &mrs_reg 333d0b26644SRichard Henderson MRS_v7m 1111 0011 111 0 1111 1000 rd:4 sysm:8 334d0b26644SRichard Henderson } 335d0b26644SRichard Henderson { 336d0b26644SRichard Henderson MSR_bank 1111 0011 100 r:1 rn:4 1000 .... 001. 0000 \ 337d0b26644SRichard Henderson &msr_bank sysm=%msr_sysm 338d0b26644SRichard Henderson MSR_reg 1111 0011 100 r:1 rn:4 1000 mask:4 0000 0000 &msr_reg 339d0b26644SRichard Henderson MSR_v7m 1111 0011 100 0 rn:4 1000 mask:2 00 sysm:8 340d0b26644SRichard Henderson } 3414ed95abdSRichard Henderson BXJ 1111 0011 1100 rm:4 1000 1111 0000 0000 &r 342ef11bc3cSRichard Henderson { 343ef11bc3cSRichard Henderson # At v6T2, this is the T5 encoding of SUBS PC, LR, #IMM, and works as for 344ef11bc3cSRichard Henderson # every other encoding of SUBS. With v7VE, IMM=0 is redefined as ERET. 345ef11bc3cSRichard Henderson # The distinction between the two only matters for Hyp mode. 346ef11bc3cSRichard Henderson ERET 1111 0011 1101 1110 1000 1111 0000 0000 347ef11bc3cSRichard Henderson SUB_rri 1111 0011 1101 1110 1000 1111 imm:8 \ 348ef11bc3cSRichard Henderson &s_rri_rot rot=0 s=1 rd=15 rn=14 349ef11bc3cSRichard Henderson } 3502cde9ea5SRichard Henderson SMC 1111 0111 1111 imm:4 1000 0000 0000 0000 &i 3512cde9ea5SRichard Henderson HVC 1111 0111 1110 .... 1000 .... .... .... \ 3522cde9ea5SRichard Henderson &i imm=%imm16_16_0 35386d21e4bSRichard Henderson UDF 1111 0111 1111 ---- 1010 ---- ---- ---- 354d0b26644SRichard Henderson } 355360144f3SRichard Henderson B_cond_thumb 1111 0. cond:4 ...... 10.0 ............ &ci imm=%imm21 356360144f3SRichard Henderson} 3575e291fe1SRichard Henderson 3585e291fe1SRichard Henderson# Load/store (register, immediate, literal) 3595e291fe1SRichard Henderson 3605e291fe1SRichard Henderson@ldst_rr .... .... .... rn:4 rt:4 ...... shimm:2 rm:4 \ 3615e291fe1SRichard Henderson &ldst_rr p=1 w=0 u=1 shtype=0 3625e291fe1SRichard Henderson@ldst_ri_idx .... .... .... rn:4 rt:4 . p:1 u:1 . imm:8 \ 3635e291fe1SRichard Henderson &ldst_ri w=1 3645e291fe1SRichard Henderson@ldst_ri_neg .... .... .... rn:4 rt:4 .... imm:8 \ 3655e291fe1SRichard Henderson &ldst_ri p=1 w=0 u=0 3665e291fe1SRichard Henderson@ldst_ri_unp .... .... .... rn:4 rt:4 .... imm:8 \ 3675e291fe1SRichard Henderson &ldst_ri p=1 w=0 u=1 3685e291fe1SRichard Henderson@ldst_ri_pos .... .... .... rn:4 rt:4 imm:12 \ 3695e291fe1SRichard Henderson &ldst_ri p=1 w=0 u=1 3705e291fe1SRichard Henderson@ldst_ri_lit .... .... u:1 ... .... rt:4 imm:12 \ 3715e291fe1SRichard Henderson &ldst_ri p=1 w=0 rn=15 3725e291fe1SRichard Henderson 3735e291fe1SRichard HendersonSTRB_rr 1111 1000 0000 .... .... 000000 .. .... @ldst_rr 3745e291fe1SRichard HendersonSTRB_ri 1111 1000 0000 .... .... 1..1 ........ @ldst_ri_idx 3755e291fe1SRichard HendersonSTRB_ri 1111 1000 0000 .... .... 1100 ........ @ldst_ri_neg 3765e291fe1SRichard HendersonSTRBT_ri 1111 1000 0000 .... .... 1110 ........ @ldst_ri_unp 3775e291fe1SRichard HendersonSTRB_ri 1111 1000 1000 .... .... ............ @ldst_ri_pos 3785e291fe1SRichard Henderson 3795e291fe1SRichard HendersonSTRH_rr 1111 1000 0010 .... .... 000000 .. .... @ldst_rr 3805e291fe1SRichard HendersonSTRH_ri 1111 1000 0010 .... .... 1..1 ........ @ldst_ri_idx 3815e291fe1SRichard HendersonSTRH_ri 1111 1000 0010 .... .... 1100 ........ @ldst_ri_neg 3825e291fe1SRichard HendersonSTRHT_ri 1111 1000 0010 .... .... 1110 ........ @ldst_ri_unp 3835e291fe1SRichard HendersonSTRH_ri 1111 1000 1010 .... .... ............ @ldst_ri_pos 3845e291fe1SRichard Henderson 3855e291fe1SRichard HendersonSTR_rr 1111 1000 0100 .... .... 000000 .. .... @ldst_rr 3865e291fe1SRichard HendersonSTR_ri 1111 1000 0100 .... .... 1..1 ........ @ldst_ri_idx 3875e291fe1SRichard HendersonSTR_ri 1111 1000 0100 .... .... 1100 ........ @ldst_ri_neg 3885e291fe1SRichard HendersonSTRT_ri 1111 1000 0100 .... .... 1110 ........ @ldst_ri_unp 3895e291fe1SRichard HendersonSTR_ri 1111 1000 1100 .... .... ............ @ldst_ri_pos 3905e291fe1SRichard Henderson 3915e291fe1SRichard Henderson# Note that Load, unsigned (literal) overlaps all other load encodings. 3925e291fe1SRichard Henderson{ 3935e291fe1SRichard Henderson { 3945e291fe1SRichard Henderson NOP 1111 1000 -001 1111 1111 ------------ # PLD 3955e291fe1SRichard Henderson LDRB_ri 1111 1000 .001 1111 .... ............ @ldst_ri_lit 3965e291fe1SRichard Henderson } 3975e291fe1SRichard Henderson { 3985e291fe1SRichard Henderson NOP 1111 1000 1001 ---- 1111 ------------ # PLD 3995e291fe1SRichard Henderson LDRB_ri 1111 1000 1001 .... .... ............ @ldst_ri_pos 4005e291fe1SRichard Henderson } 4015e291fe1SRichard Henderson LDRB_ri 1111 1000 0001 .... .... 1..1 ........ @ldst_ri_idx 4025e291fe1SRichard Henderson { 4035e291fe1SRichard Henderson NOP 1111 1000 0001 ---- 1111 1100 -------- # PLD 4045e291fe1SRichard Henderson LDRB_ri 1111 1000 0001 .... .... 1100 ........ @ldst_ri_neg 4055e291fe1SRichard Henderson } 4065e291fe1SRichard Henderson LDRBT_ri 1111 1000 0001 .... .... 1110 ........ @ldst_ri_unp 4075e291fe1SRichard Henderson { 4085e291fe1SRichard Henderson NOP 1111 1000 0001 ---- 1111 000000 -- ---- # PLD 4095e291fe1SRichard Henderson LDRB_rr 1111 1000 0001 .... .... 000000 .. .... @ldst_rr 4105e291fe1SRichard Henderson } 4115e291fe1SRichard Henderson} 4125e291fe1SRichard Henderson{ 4135e291fe1SRichard Henderson { 4145e291fe1SRichard Henderson NOP 1111 1000 -011 1111 1111 ------------ # PLD 4155e291fe1SRichard Henderson LDRH_ri 1111 1000 .011 1111 .... ............ @ldst_ri_lit 4165e291fe1SRichard Henderson } 4175e291fe1SRichard Henderson { 4185e291fe1SRichard Henderson NOP 1111 1000 1011 ---- 1111 ------------ # PLDW 4195e291fe1SRichard Henderson LDRH_ri 1111 1000 1011 .... .... ............ @ldst_ri_pos 4205e291fe1SRichard Henderson } 4215e291fe1SRichard Henderson LDRH_ri 1111 1000 0011 .... .... 1..1 ........ @ldst_ri_idx 4225e291fe1SRichard Henderson { 4235e291fe1SRichard Henderson NOP 1111 1000 0011 ---- 1111 1100 -------- # PLDW 4245e291fe1SRichard Henderson LDRH_ri 1111 1000 0011 .... .... 1100 ........ @ldst_ri_neg 4255e291fe1SRichard Henderson } 4265e291fe1SRichard Henderson LDRHT_ri 1111 1000 0011 .... .... 1110 ........ @ldst_ri_unp 4275e291fe1SRichard Henderson { 4285e291fe1SRichard Henderson NOP 1111 1000 0011 ---- 1111 000000 -- ---- # PLDW 4295e291fe1SRichard Henderson LDRH_rr 1111 1000 0011 .... .... 000000 .. .... @ldst_rr 4305e291fe1SRichard Henderson } 4315e291fe1SRichard Henderson} 4325e291fe1SRichard Henderson{ 4335e291fe1SRichard Henderson LDR_ri 1111 1000 .101 1111 .... ............ @ldst_ri_lit 4345e291fe1SRichard Henderson LDR_ri 1111 1000 1101 .... .... ............ @ldst_ri_pos 4355e291fe1SRichard Henderson LDR_ri 1111 1000 0101 .... .... 1..1 ........ @ldst_ri_idx 4365e291fe1SRichard Henderson LDR_ri 1111 1000 0101 .... .... 1100 ........ @ldst_ri_neg 4375e291fe1SRichard Henderson LDRT_ri 1111 1000 0101 .... .... 1110 ........ @ldst_ri_unp 4385e291fe1SRichard Henderson LDR_rr 1111 1000 0101 .... .... 000000 .. .... @ldst_rr 4395e291fe1SRichard Henderson} 4405e291fe1SRichard Henderson# NOPs here are PLI. 4415e291fe1SRichard Henderson{ 4425e291fe1SRichard Henderson { 4435e291fe1SRichard Henderson NOP 1111 1001 -001 1111 1111 ------------ 4445e291fe1SRichard Henderson LDRSB_ri 1111 1001 .001 1111 .... ............ @ldst_ri_lit 4455e291fe1SRichard Henderson } 4465e291fe1SRichard Henderson { 4475e291fe1SRichard Henderson NOP 1111 1001 1001 ---- 1111 ------------ 4485e291fe1SRichard Henderson LDRSB_ri 1111 1001 1001 .... .... ............ @ldst_ri_pos 4495e291fe1SRichard Henderson } 4505e291fe1SRichard Henderson LDRSB_ri 1111 1001 0001 .... .... 1..1 ........ @ldst_ri_idx 4515e291fe1SRichard Henderson { 4525e291fe1SRichard Henderson NOP 1111 1001 0001 ---- 1111 1100 -------- 4535e291fe1SRichard Henderson LDRSB_ri 1111 1001 0001 .... .... 1100 ........ @ldst_ri_neg 4545e291fe1SRichard Henderson } 4555e291fe1SRichard Henderson LDRSBT_ri 1111 1001 0001 .... .... 1110 ........ @ldst_ri_unp 4565e291fe1SRichard Henderson { 4575e291fe1SRichard Henderson NOP 1111 1001 0001 ---- 1111 000000 -- ---- 4585e291fe1SRichard Henderson LDRSB_rr 1111 1001 0001 .... .... 000000 .. .... @ldst_rr 4595e291fe1SRichard Henderson } 4605e291fe1SRichard Henderson} 4615e291fe1SRichard Henderson# NOPs here are unallocated memory hints, treated as NOP. 4625e291fe1SRichard Henderson{ 4635e291fe1SRichard Henderson { 4645e291fe1SRichard Henderson NOP 1111 1001 -011 1111 1111 ------------ 4655e291fe1SRichard Henderson LDRSH_ri 1111 1001 .011 1111 .... ............ @ldst_ri_lit 4665e291fe1SRichard Henderson } 4675e291fe1SRichard Henderson { 4685e291fe1SRichard Henderson NOP 1111 1001 1011 ---- 1111 ------------ 4695e291fe1SRichard Henderson LDRSH_ri 1111 1001 1011 .... .... ............ @ldst_ri_pos 4705e291fe1SRichard Henderson } 4715e291fe1SRichard Henderson LDRSH_ri 1111 1001 0011 .... .... 1..1 ........ @ldst_ri_idx 4725e291fe1SRichard Henderson { 4735e291fe1SRichard Henderson NOP 1111 1001 0011 ---- 1111 1100 -------- 4745e291fe1SRichard Henderson LDRSH_ri 1111 1001 0011 .... .... 1100 ........ @ldst_ri_neg 4755e291fe1SRichard Henderson } 4765e291fe1SRichard Henderson LDRSHT_ri 1111 1001 0011 .... .... 1110 ........ @ldst_ri_unp 4775e291fe1SRichard Henderson { 4785e291fe1SRichard Henderson NOP 1111 1001 0011 ---- 1111 000000 -- ---- 4795e291fe1SRichard Henderson LDRSH_rr 1111 1001 0011 .... .... 000000 .. .... @ldst_rr 4805e291fe1SRichard Henderson } 4815e291fe1SRichard Henderson} 4825e291fe1SRichard Henderson 4835e291fe1SRichard Henderson%imm8x4 0:8 !function=times_4 4845e291fe1SRichard Henderson&ldst_ri2 p w u rn rt rt2 imm 4855e291fe1SRichard Henderson@ldstd_ri8 .... .... u:1 ... rn:4 rt:4 rt2:4 ........ \ 4865e291fe1SRichard Henderson &ldst_ri2 imm=%imm8x4 4875e291fe1SRichard Henderson 4885e291fe1SRichard HendersonSTRD_ri_t32 1110 1000 .110 .... .... .... ........ @ldstd_ri8 w=1 p=0 4895e291fe1SRichard HendersonLDRD_ri_t32 1110 1000 .111 .... .... .... ........ @ldstd_ri8 w=1 p=0 4905e291fe1SRichard Henderson 4915e291fe1SRichard HendersonSTRD_ri_t32 1110 1001 .100 .... .... .... ........ @ldstd_ri8 w=0 p=1 4925e291fe1SRichard HendersonLDRD_ri_t32 1110 1001 .101 .... .... .... ........ @ldstd_ri8 w=0 p=1 4935e291fe1SRichard Henderson 4945e291fe1SRichard HendersonSTRD_ri_t32 1110 1001 .110 .... .... .... ........ @ldstd_ri8 w=1 p=1 49535d240acSRichard Henderson{ 49635d240acSRichard Henderson SG 1110 1001 0111 1111 1110 1001 01111111 4975e291fe1SRichard Henderson LDRD_ri_t32 1110 1001 .111 .... .... .... ........ @ldstd_ri8 w=1 p=1 49835d240acSRichard Henderson} 4991efdd407SRichard Henderson 500808092bbSRichard Henderson# Load/Store Exclusive, Load-Acquire/Store-Release, and Table Branch 5011efdd407SRichard Henderson 5021efdd407SRichard Henderson@strex_i .... .... .... rn:4 rt:4 rd:4 .... .... \ 5031efdd407SRichard Henderson &strex rt2=15 imm=%imm8x4 5041efdd407SRichard Henderson@strex_0 .... .... .... rn:4 rt:4 .... .... rd:4 \ 5051efdd407SRichard Henderson &strex rt2=15 imm=0 5061efdd407SRichard Henderson@strex_d .... .... .... rn:4 rt:4 rt2:4 .... rd:4 \ 5071efdd407SRichard Henderson &strex imm=0 5081efdd407SRichard Henderson 5091efdd407SRichard Henderson@ldrex_i .... .... .... rn:4 rt:4 .... .... .... \ 5101efdd407SRichard Henderson &ldrex rt2=15 imm=%imm8x4 5111efdd407SRichard Henderson@ldrex_0 .... .... .... rn:4 rt:4 .... .... .... \ 5121efdd407SRichard Henderson &ldrex rt2=15 imm=0 5131efdd407SRichard Henderson@ldrex_d .... .... .... rn:4 rt:4 rt2:4 .... .... \ 5141efdd407SRichard Henderson &ldrex imm=0 5151efdd407SRichard Henderson 516d449f174SRichard Henderson{ 517d449f174SRichard Henderson TT 1110 1000 0100 rn:4 1111 rd:4 A:1 T:1 000000 5181efdd407SRichard Henderson STREX 1110 1000 0100 .... .... .... .... .... @strex_i 519d449f174SRichard Henderson} 5201efdd407SRichard HendersonSTREXB 1110 1000 1100 .... .... 1111 0100 .... @strex_0 5211efdd407SRichard HendersonSTREXH 1110 1000 1100 .... .... 1111 0101 .... @strex_0 5221efdd407SRichard HendersonSTREXD_t32 1110 1000 1100 .... .... .... 0111 .... @strex_d 5231efdd407SRichard Henderson 5241efdd407SRichard HendersonSTLEX 1110 1000 1100 .... .... 1111 1110 .... @strex_0 5251efdd407SRichard HendersonSTLEXB 1110 1000 1100 .... .... 1111 1100 .... @strex_0 5261efdd407SRichard HendersonSTLEXH 1110 1000 1100 .... .... 1111 1101 .... @strex_0 5271efdd407SRichard HendersonSTLEXD_t32 1110 1000 1100 .... .... .... 1111 .... @strex_d 5281efdd407SRichard Henderson 5291efdd407SRichard HendersonSTL 1110 1000 1100 .... .... 1111 1010 1111 @ldrex_0 5301efdd407SRichard HendersonSTLB 1110 1000 1100 .... .... 1111 1000 1111 @ldrex_0 5311efdd407SRichard HendersonSTLH 1110 1000 1100 .... .... 1111 1001 1111 @ldrex_0 5321efdd407SRichard Henderson 5331efdd407SRichard HendersonLDREX 1110 1000 0101 .... .... 1111 .... .... @ldrex_i 5341efdd407SRichard HendersonLDREXB 1110 1000 1101 .... .... 1111 0100 1111 @ldrex_0 5351efdd407SRichard HendersonLDREXH 1110 1000 1101 .... .... 1111 0101 1111 @ldrex_0 5361efdd407SRichard HendersonLDREXD_t32 1110 1000 1101 .... .... .... 0111 1111 @ldrex_d 5371efdd407SRichard Henderson 5381efdd407SRichard HendersonLDAEX 1110 1000 1101 .... .... 1111 1110 1111 @ldrex_0 5391efdd407SRichard HendersonLDAEXB 1110 1000 1101 .... .... 1111 1100 1111 @ldrex_0 5401efdd407SRichard HendersonLDAEXH 1110 1000 1101 .... .... 1111 1101 1111 @ldrex_0 5411efdd407SRichard HendersonLDAEXD_t32 1110 1000 1101 .... .... .... 1111 1111 @ldrex_d 5421efdd407SRichard Henderson 5431efdd407SRichard HendersonLDA 1110 1000 1101 .... .... 1111 1010 1111 @ldrex_0 5441efdd407SRichard HendersonLDAB 1110 1000 1101 .... .... 1111 1000 1111 @ldrex_0 5451efdd407SRichard HendersonLDAH 1110 1000 1101 .... .... 1111 1001 1111 @ldrex_0 546adf1a566SRichard Henderson 547808092bbSRichard Henderson&tbranch rn rm 548808092bbSRichard Henderson@tbranch .... .... .... rn:4 .... .... .... rm:4 &tbranch 549808092bbSRichard Henderson 550808092bbSRichard HendersonTBB 1110 1000 1101 .... 1111 0000 0000 .... @tbranch 551808092bbSRichard HendersonTBH 1110 1000 1101 .... 1111 0000 0001 .... @tbranch 552808092bbSRichard Henderson 553adf1a566SRichard Henderson# Parallel addition and subtraction 554adf1a566SRichard Henderson 555adf1a566SRichard HendersonSADD8 1111 1010 1000 .... 1111 .... 0000 .... @rndm 556adf1a566SRichard HendersonQADD8 1111 1010 1000 .... 1111 .... 0001 .... @rndm 557adf1a566SRichard HendersonSHADD8 1111 1010 1000 .... 1111 .... 0010 .... @rndm 558adf1a566SRichard HendersonUADD8 1111 1010 1000 .... 1111 .... 0100 .... @rndm 559adf1a566SRichard HendersonUQADD8 1111 1010 1000 .... 1111 .... 0101 .... @rndm 560adf1a566SRichard HendersonUHADD8 1111 1010 1000 .... 1111 .... 0110 .... @rndm 561adf1a566SRichard Henderson 562adf1a566SRichard HendersonSADD16 1111 1010 1001 .... 1111 .... 0000 .... @rndm 563adf1a566SRichard HendersonQADD16 1111 1010 1001 .... 1111 .... 0001 .... @rndm 564adf1a566SRichard HendersonSHADD16 1111 1010 1001 .... 1111 .... 0010 .... @rndm 565adf1a566SRichard HendersonUADD16 1111 1010 1001 .... 1111 .... 0100 .... @rndm 566adf1a566SRichard HendersonUQADD16 1111 1010 1001 .... 1111 .... 0101 .... @rndm 567adf1a566SRichard HendersonUHADD16 1111 1010 1001 .... 1111 .... 0110 .... @rndm 568adf1a566SRichard Henderson 569adf1a566SRichard HendersonSASX 1111 1010 1010 .... 1111 .... 0000 .... @rndm 570adf1a566SRichard HendersonQASX 1111 1010 1010 .... 1111 .... 0001 .... @rndm 571adf1a566SRichard HendersonSHASX 1111 1010 1010 .... 1111 .... 0010 .... @rndm 572adf1a566SRichard HendersonUASX 1111 1010 1010 .... 1111 .... 0100 .... @rndm 573adf1a566SRichard HendersonUQASX 1111 1010 1010 .... 1111 .... 0101 .... @rndm 574adf1a566SRichard HendersonUHASX 1111 1010 1010 .... 1111 .... 0110 .... @rndm 575adf1a566SRichard Henderson 576adf1a566SRichard HendersonSSUB8 1111 1010 1100 .... 1111 .... 0000 .... @rndm 577adf1a566SRichard HendersonQSUB8 1111 1010 1100 .... 1111 .... 0001 .... @rndm 578adf1a566SRichard HendersonSHSUB8 1111 1010 1100 .... 1111 .... 0010 .... @rndm 579adf1a566SRichard HendersonUSUB8 1111 1010 1100 .... 1111 .... 0100 .... @rndm 580adf1a566SRichard HendersonUQSUB8 1111 1010 1100 .... 1111 .... 0101 .... @rndm 581adf1a566SRichard HendersonUHSUB8 1111 1010 1100 .... 1111 .... 0110 .... @rndm 582adf1a566SRichard Henderson 583adf1a566SRichard HendersonSSUB16 1111 1010 1101 .... 1111 .... 0000 .... @rndm 584adf1a566SRichard HendersonQSUB16 1111 1010 1101 .... 1111 .... 0001 .... @rndm 585adf1a566SRichard HendersonSHSUB16 1111 1010 1101 .... 1111 .... 0010 .... @rndm 586adf1a566SRichard HendersonUSUB16 1111 1010 1101 .... 1111 .... 0100 .... @rndm 587adf1a566SRichard HendersonUQSUB16 1111 1010 1101 .... 1111 .... 0101 .... @rndm 588adf1a566SRichard HendersonUHSUB16 1111 1010 1101 .... 1111 .... 0110 .... @rndm 589adf1a566SRichard Henderson 590adf1a566SRichard HendersonSSAX 1111 1010 1110 .... 1111 .... 0000 .... @rndm 591adf1a566SRichard HendersonQSAX 1111 1010 1110 .... 1111 .... 0001 .... @rndm 592adf1a566SRichard HendersonSHSAX 1111 1010 1110 .... 1111 .... 0010 .... @rndm 593adf1a566SRichard HendersonUSAX 1111 1010 1110 .... 1111 .... 0100 .... @rndm 594adf1a566SRichard HendersonUQSAX 1111 1010 1110 .... 1111 .... 0101 .... @rndm 595adf1a566SRichard HendersonUHSAX 1111 1010 1110 .... 1111 .... 0110 .... @rndm 59646497f6aSRichard Henderson 59746497f6aSRichard Henderson# Register extends 59846497f6aSRichard Henderson 59946497f6aSRichard Henderson@rrr_rot .... .... .... rn:4 .... rd:4 .. rot:2 rm:4 &rrr_rot 60046497f6aSRichard Henderson 60146497f6aSRichard HendersonSXTAH 1111 1010 0000 .... 1111 .... 10.. .... @rrr_rot 60246497f6aSRichard HendersonUXTAH 1111 1010 0001 .... 1111 .... 10.. .... @rrr_rot 60346497f6aSRichard HendersonSXTAB16 1111 1010 0010 .... 1111 .... 10.. .... @rrr_rot 60446497f6aSRichard HendersonUXTAB16 1111 1010 0011 .... 1111 .... 10.. .... @rrr_rot 60546497f6aSRichard HendersonSXTAB 1111 1010 0100 .... 1111 .... 10.. .... @rrr_rot 60646497f6aSRichard HendersonUXTAB 1111 1010 0101 .... 1111 .... 10.. .... @rrr_rot 607c5c426d4SRichard Henderson 608c5c426d4SRichard Henderson# Load/store multiple 609c5c426d4SRichard Henderson 610c5c426d4SRichard Henderson@ldstm .... .... .. w:1 . rn:4 list:16 &ldst_block u=0 611c5c426d4SRichard Henderson 612c5c426d4SRichard HendersonSTM_t32 1110 1000 10.0 .... ................ @ldstm i=1 b=0 613c5c426d4SRichard HendersonSTM_t32 1110 1001 00.0 .... ................ @ldstm i=0 b=1 614c5c426d4SRichard HendersonLDM_t32 1110 1000 10.1 .... ................ @ldstm i=1 b=0 615c5c426d4SRichard HendersonLDM_t32 1110 1001 00.1 .... ................ @ldstm i=0 b=1 616360144f3SRichard Henderson 617885782a7SRichard Henderson&rfe !extern rn w pu 618885782a7SRichard Henderson@rfe .... .... .. w:1 . rn:4 ................ &rfe 619885782a7SRichard Henderson 620885782a7SRichard HendersonRFE 1110 1000 00.1 .... 1100000000000000 @rfe pu=2 621885782a7SRichard HendersonRFE 1110 1001 10.1 .... 1100000000000000 @rfe pu=1 622885782a7SRichard Henderson 623885782a7SRichard Henderson&srs !extern mode w pu 624885782a7SRichard Henderson@srs .... .... .. w:1 . .... ........... mode:5 &srs 625885782a7SRichard Henderson 626885782a7SRichard HendersonSRS 1110 1000 00.0 1101 1100 0000 000. .... @srs pu=2 627885782a7SRichard HendersonSRS 1110 1001 10.0 1101 1100 0000 000. .... @srs pu=1 628885782a7SRichard Henderson 6294c498dcfSPeter Maydell# Coprocessor instructions 6304c498dcfSPeter Maydell 6314c498dcfSPeter Maydell# We decode MCR, MCR, MRRC and MCRR only, because for QEMU the 6324c498dcfSPeter Maydell# other coprocessor instructions always UNDEF. 6334c498dcfSPeter Maydell# The trans_ functions for these will ignore cp values 8..13 for v7 or 6344c498dcfSPeter Maydell# earlier, and 0..13 for v8 and later, because those areas of the 6354c498dcfSPeter Maydell# encoding space may be used for other things, such as VFP or Neon. 6364c498dcfSPeter Maydell 6374c498dcfSPeter Maydell@mcr .... .... opc1:3 . crn:4 rt:4 cp:4 opc2:3 . crm:4 6384c498dcfSPeter Maydell@mcrr .... .... .... rt2:4 rt:4 cp:4 opc1:4 crm:4 6394c498dcfSPeter Maydell 6404c498dcfSPeter MaydellMCRR 1110 1100 0100 .... .... .... .... .... @mcrr 6414c498dcfSPeter MaydellMRRC 1110 1100 0101 .... .... .... .... .... @mcrr 6424c498dcfSPeter Maydell 6434c498dcfSPeter MaydellMCR 1110 1110 ... 0 .... .... .... ... 1 .... @mcr 6444c498dcfSPeter MaydellMRC 1110 1110 ... 1 .... .... .... ... 1 .... @mcr 6454c498dcfSPeter Maydell 646360144f3SRichard Henderson# Branches 647360144f3SRichard Henderson 648360144f3SRichard Henderson%imm24 26:s1 13:1 11:1 16:10 0:11 !function=t32_branch24 649360144f3SRichard Henderson@branch24 ................................ &i imm=%imm24 650360144f3SRichard Henderson 651360144f3SRichard HendersonB 1111 0. .......... 10.1 ............ @branch24 652360144f3SRichard HendersonBL 1111 0. .......... 11.1 ............ @branch24 653360144f3SRichard HendersonBLX_i 1111 0. .......... 11.0 ............ @branch24 654