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 850f57e09SChetan Pant# version 2.1 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 51*f4ae6c8cSPeter Maydell&mve_shl_ri rdalo rdahi shim 52*f4ae6c8cSPeter Maydell 53*f4ae6c8cSPeter Maydell# rdahi: bits [3:1] from insn, bit 0 is 1 54*f4ae6c8cSPeter Maydell# rdalo: bits [3:1] from insn, bit 0 is 0 55*f4ae6c8cSPeter Maydell%rdahi_9 9:3 !function=times_2_plus_1 56*f4ae6c8cSPeter Maydell%rdalo_17 17:3 !function=times_2 57*f4ae6c8cSPeter Maydell 5825ae32c5SRichard Henderson# Data-processing (register) 5925ae32c5SRichard Henderson 6025ae32c5SRichard Henderson%imm5_12_6 12:3 6:2 6125ae32c5SRichard Henderson 6225ae32c5SRichard Henderson@s_rrr_shi ....... .... s:1 rn:4 .... rd:4 .. shty:2 rm:4 \ 6325ae32c5SRichard Henderson &s_rrr_shi shim=%imm5_12_6 6425ae32c5SRichard Henderson@s_rxr_shi ....... .... s:1 .... .... rd:4 .. shty:2 rm:4 \ 6525ae32c5SRichard Henderson &s_rrr_shi shim=%imm5_12_6 rn=0 6625ae32c5SRichard Henderson@S_xrr_shi ....... .... . rn:4 .... .... .. shty:2 rm:4 \ 6725ae32c5SRichard Henderson &s_rrr_shi shim=%imm5_12_6 s=1 rd=0 6825ae32c5SRichard Henderson 69*f4ae6c8cSPeter Maydell@mve_shl_ri ....... .... . ... . . ... ... . .. .. .... \ 70*f4ae6c8cSPeter Maydell &mve_shl_ri shim=%imm5_12_6 rdalo=%rdalo_17 rdahi=%rdahi_9 71*f4ae6c8cSPeter Maydell 7225ae32c5SRichard Henderson{ 7325ae32c5SRichard Henderson TST_xrri 1110101 0000 1 .... 0 ... 1111 .... .... @S_xrr_shi 7425ae32c5SRichard Henderson AND_rrri 1110101 0000 . .... 0 ... .... .... .... @s_rrr_shi 7525ae32c5SRichard Henderson} 7625ae32c5SRichard HendersonBIC_rrri 1110101 0001 . .... 0 ... .... .... .... @s_rrr_shi 7725ae32c5SRichard Henderson{ 78*f4ae6c8cSPeter Maydell # The v8.1M MVE shift insns overlap in encoding with MOVS/ORRS 79*f4ae6c8cSPeter Maydell # and are distinguished by having Rm==13 or 15. Those are UNPREDICTABLE 80*f4ae6c8cSPeter Maydell # cases for MOVS/ORRS. We decode the MVE cases first, ensuring that 81*f4ae6c8cSPeter Maydell # they explicitly call unallocated_encoding() for cases that must UNDEF 82*f4ae6c8cSPeter Maydell # (eg "using a new shift insn on a v8.1M CPU without MVE"), and letting 83*f4ae6c8cSPeter Maydell # the rest fall through (where ORR_rrri and MOV_rxri will end up 84*f4ae6c8cSPeter Maydell # handling them as r13 and r15 accesses with the same semantics as A32). 85*f4ae6c8cSPeter Maydell [ 86*f4ae6c8cSPeter Maydell LSLL_ri 1110101 0010 1 ... 0 0 ... ... 1 .. 00 1111 @mve_shl_ri 87*f4ae6c8cSPeter Maydell LSRL_ri 1110101 0010 1 ... 0 0 ... ... 1 .. 01 1111 @mve_shl_ri 88*f4ae6c8cSPeter Maydell ASRL_ri 1110101 0010 1 ... 0 0 ... ... 1 .. 10 1111 @mve_shl_ri 89*f4ae6c8cSPeter Maydell 90*f4ae6c8cSPeter Maydell UQSHLL_ri 1110101 0010 1 ... 1 0 ... ... 1 .. 00 1111 @mve_shl_ri 91*f4ae6c8cSPeter Maydell URSHRL_ri 1110101 0010 1 ... 1 0 ... ... 1 .. 01 1111 @mve_shl_ri 92*f4ae6c8cSPeter Maydell SRSHRL_ri 1110101 0010 1 ... 1 0 ... ... 1 .. 10 1111 @mve_shl_ri 93*f4ae6c8cSPeter Maydell SQSHLL_ri 1110101 0010 1 ... 1 0 ... ... 1 .. 11 1111 @mve_shl_ri 94*f4ae6c8cSPeter Maydell ] 95*f4ae6c8cSPeter Maydell 9625ae32c5SRichard Henderson MOV_rxri 1110101 0010 . 1111 0 ... .... .... .... @s_rxr_shi 9725ae32c5SRichard Henderson ORR_rrri 1110101 0010 . .... 0 ... .... .... .... @s_rrr_shi 9825ae32c5SRichard Henderson} 9925ae32c5SRichard Henderson{ 10025ae32c5SRichard Henderson MVN_rxri 1110101 0011 . 1111 0 ... .... .... .... @s_rxr_shi 10125ae32c5SRichard Henderson ORN_rrri 1110101 0011 . .... 0 ... .... .... .... @s_rrr_shi 10225ae32c5SRichard Henderson} 10325ae32c5SRichard Henderson{ 10425ae32c5SRichard Henderson TEQ_xrri 1110101 0100 1 .... 0 ... 1111 .... .... @S_xrr_shi 10525ae32c5SRichard Henderson EOR_rrri 1110101 0100 . .... 0 ... .... .... .... @s_rrr_shi 10625ae32c5SRichard Henderson} 10746497f6aSRichard HendersonPKH 1110101 0110 0 rn:4 0 ... rd:4 .. tb:1 0 rm:4 \ 10846497f6aSRichard Henderson &pkh imm=%imm5_12_6 10925ae32c5SRichard Henderson{ 11025ae32c5SRichard Henderson CMN_xrri 1110101 1000 1 .... 0 ... 1111 .... .... @S_xrr_shi 11125ae32c5SRichard Henderson ADD_rrri 1110101 1000 . .... 0 ... .... .... .... @s_rrr_shi 11225ae32c5SRichard Henderson} 11325ae32c5SRichard HendersonADC_rrri 1110101 1010 . .... 0 ... .... .... .... @s_rrr_shi 11425ae32c5SRichard HendersonSBC_rrri 1110101 1011 . .... 0 ... .... .... .... @s_rrr_shi 11525ae32c5SRichard Henderson{ 11625ae32c5SRichard Henderson CMP_xrri 1110101 1101 1 .... 0 ... 1111 .... .... @S_xrr_shi 11725ae32c5SRichard Henderson SUB_rrri 1110101 1101 . .... 0 ... .... .... .... @s_rrr_shi 11825ae32c5SRichard Henderson} 11925ae32c5SRichard HendersonRSB_rrri 1110101 1110 . .... 0 ... .... .... .... @s_rrr_shi 1205be2c123SRichard Henderson 121cc73bbdeSPeter Maydell# v8.1M CSEL and friends 122cc73bbdeSPeter MaydellCSEL 1110101 0010 1 rn:4 10 op:2 rd:4 fcond:4 rm:4 123cc73bbdeSPeter Maydell 1245be2c123SRichard Henderson# Data-processing (register-shifted register) 1255be2c123SRichard Henderson 1265be2c123SRichard HendersonMOV_rxrr 1111 1010 0 shty:2 s:1 rm:4 1111 rd:4 0000 rs:4 \ 1275be2c123SRichard Henderson &s_rrr_shr rn=0 128581c6ebdSRichard Henderson 129581c6ebdSRichard Henderson# Data-processing (immediate) 130581c6ebdSRichard Henderson 131581c6ebdSRichard Henderson%t32extrot 26:1 12:3 0:8 !function=t32_expandimm_rot 132581c6ebdSRichard Henderson%t32extimm 26:1 12:3 0:8 !function=t32_expandimm_imm 133581c6ebdSRichard Henderson 134581c6ebdSRichard Henderson@s_rri_rot ....... .... s:1 rn:4 . ... rd:4 ........ \ 135581c6ebdSRichard Henderson &s_rri_rot imm=%t32extimm rot=%t32extrot 136581c6ebdSRichard Henderson@s_rxi_rot ....... .... s:1 .... . ... rd:4 ........ \ 137581c6ebdSRichard Henderson &s_rri_rot imm=%t32extimm rot=%t32extrot rn=0 138581c6ebdSRichard Henderson@S_xri_rot ....... .... . rn:4 . ... .... ........ \ 139581c6ebdSRichard Henderson &s_rri_rot imm=%t32extimm rot=%t32extrot s=1 rd=0 140581c6ebdSRichard Henderson 141581c6ebdSRichard Henderson{ 142581c6ebdSRichard Henderson TST_xri 1111 0.0 0000 1 .... 0 ... 1111 ........ @S_xri_rot 143581c6ebdSRichard Henderson AND_rri 1111 0.0 0000 . .... 0 ... .... ........ @s_rri_rot 144581c6ebdSRichard Henderson} 145581c6ebdSRichard HendersonBIC_rri 1111 0.0 0001 . .... 0 ... .... ........ @s_rri_rot 146581c6ebdSRichard Henderson{ 147581c6ebdSRichard Henderson MOV_rxi 1111 0.0 0010 . 1111 0 ... .... ........ @s_rxi_rot 148581c6ebdSRichard Henderson ORR_rri 1111 0.0 0010 . .... 0 ... .... ........ @s_rri_rot 149581c6ebdSRichard Henderson} 150581c6ebdSRichard Henderson{ 151581c6ebdSRichard Henderson MVN_rxi 1111 0.0 0011 . 1111 0 ... .... ........ @s_rxi_rot 152581c6ebdSRichard Henderson ORN_rri 1111 0.0 0011 . .... 0 ... .... ........ @s_rri_rot 153581c6ebdSRichard Henderson} 154581c6ebdSRichard Henderson{ 155581c6ebdSRichard Henderson TEQ_xri 1111 0.0 0100 1 .... 0 ... 1111 ........ @S_xri_rot 156581c6ebdSRichard Henderson EOR_rri 1111 0.0 0100 . .... 0 ... .... ........ @s_rri_rot 157581c6ebdSRichard Henderson} 158581c6ebdSRichard Henderson{ 159581c6ebdSRichard Henderson CMN_xri 1111 0.0 1000 1 .... 0 ... 1111 ........ @S_xri_rot 160581c6ebdSRichard Henderson ADD_rri 1111 0.0 1000 . .... 0 ... .... ........ @s_rri_rot 161581c6ebdSRichard Henderson} 162581c6ebdSRichard HendersonADC_rri 1111 0.0 1010 . .... 0 ... .... ........ @s_rri_rot 163581c6ebdSRichard HendersonSBC_rri 1111 0.0 1011 . .... 0 ... .... ........ @s_rri_rot 164581c6ebdSRichard Henderson{ 165581c6ebdSRichard Henderson CMP_xri 1111 0.0 1101 1 .... 0 ... 1111 ........ @S_xri_rot 166581c6ebdSRichard Henderson SUB_rri 1111 0.0 1101 . .... 0 ... .... ........ @s_rri_rot 167581c6ebdSRichard Henderson} 168581c6ebdSRichard HendersonRSB_rri 1111 0.0 1110 . .... 0 ... .... ........ @s_rri_rot 169bd92fe35SRichard Henderson 170145952e8SRichard Henderson# Data processing (plain binary immediate) 171145952e8SRichard Henderson 172145952e8SRichard Henderson%imm12_26_12_0 26:1 12:3 0:8 173145952e8SRichard Henderson%neg12_26_12_0 26:1 12:3 0:8 !function=negate 174145952e8SRichard Henderson@s0_rri_12 .... ... .... . rn:4 . ... rd:4 ........ \ 175145952e8SRichard Henderson &s_rri_rot imm=%imm12_26_12_0 rot=0 s=0 176145952e8SRichard Henderson 177145952e8SRichard Henderson{ 178145952e8SRichard Henderson ADR 1111 0.1 0000 0 1111 0 ... rd:4 ........ \ 179145952e8SRichard Henderson &ri imm=%imm12_26_12_0 180145952e8SRichard Henderson ADD_rri 1111 0.1 0000 0 .... 0 ... .... ........ @s0_rri_12 181145952e8SRichard Henderson} 182145952e8SRichard Henderson{ 183145952e8SRichard Henderson ADR 1111 0.1 0101 0 1111 0 ... rd:4 ........ \ 184145952e8SRichard Henderson &ri imm=%neg12_26_12_0 185145952e8SRichard Henderson SUB_rri 1111 0.1 0101 0 .... 0 ... .... ........ @s0_rri_12 186145952e8SRichard Henderson} 187145952e8SRichard Henderson 1888f445127SRichard Henderson# Move Wide 1898f445127SRichard Henderson 1908f445127SRichard Henderson%imm16_26_16_12_0 16:4 26:1 12:3 0:8 1918f445127SRichard Henderson@mov16 .... .... .... .... .... rd:4 .... .... \ 1928f445127SRichard Henderson &ri imm=%imm16_26_16_12_0 1938f445127SRichard Henderson 1948f445127SRichard HendersonMOVW 1111 0.10 0100 .... 0 ... .... ........ @mov16 1958f445127SRichard HendersonMOVT 1111 0.10 1100 .... 0 ... .... ........ @mov16 1968f445127SRichard Henderson 19786d21e4bSRichard Henderson# Saturate, bitfield 19886d21e4bSRichard Henderson 19946497f6aSRichard Henderson@sat .... .... .. sh:1 . rn:4 . ... rd:4 .. . satimm:5 \ 20046497f6aSRichard Henderson &sat imm=%imm5_12_6 20146497f6aSRichard Henderson@sat16 .... .... .. . . rn:4 . ... rd:4 .. . satimm:5 \ 20246497f6aSRichard Henderson &sat sh=0 imm=0 20346497f6aSRichard Henderson 20446497f6aSRichard Henderson{ 20546497f6aSRichard Henderson SSAT16 1111 0011 001 0 .... 0 000 .... 00 0 ..... @sat16 20646497f6aSRichard Henderson SSAT 1111 0011 00. 0 .... 0 ... .... .. 0 ..... @sat 20746497f6aSRichard Henderson} 20846497f6aSRichard Henderson{ 20946497f6aSRichard Henderson USAT16 1111 0011 101 0 .... 0 000 .... 00 0 ..... @sat16 21046497f6aSRichard Henderson USAT 1111 0011 10. 0 .... 0 ... .... .. 0 ..... @sat 21146497f6aSRichard Henderson} 21246497f6aSRichard Henderson 21386d21e4bSRichard Henderson@bfx .... .... ... . rn:4 . ... rd:4 .. . widthm1:5 \ 21486d21e4bSRichard Henderson &bfx lsb=%imm5_12_6 21586d21e4bSRichard Henderson@bfi .... .... ... . rn:4 . ... rd:4 .. . msb:5 \ 21686d21e4bSRichard Henderson &bfi lsb=%imm5_12_6 21786d21e4bSRichard Henderson 21886d21e4bSRichard HendersonSBFX 1111 0011 010 0 .... 0 ... .... ..0..... @bfx 21986d21e4bSRichard HendersonUBFX 1111 0011 110 0 .... 0 ... .... ..0..... @bfx 22086d21e4bSRichard Henderson 22186d21e4bSRichard Henderson# bfc is bfi w/ rn=15 22286d21e4bSRichard HendersonBFCI 1111 0011 011 0 .... 0 ... .... ..0..... @bfi 22386d21e4bSRichard Henderson 224bd92fe35SRichard Henderson# Multiply and multiply accumulate 225bd92fe35SRichard Henderson 226bd92fe35SRichard Henderson@s0_rnadm .... .... .... rn:4 ra:4 rd:4 .... rm:4 &s_rrrr s=0 227bd92fe35SRichard Henderson@s0_rn0dm .... .... .... rn:4 .... rd:4 .... rm:4 &s_rrrr ra=0 s=0 228bd92fe35SRichard Henderson@rnadm .... .... .... rn:4 ra:4 rd:4 .... rm:4 &rrrr 22926c6923dSRichard Henderson@rn0dm .... .... .... rn:4 .... rd:4 .... rm:4 &rrrr ra=0 2306d0730a8SRichard Henderson@rndm .... .... .... rn:4 .... rd:4 .... rm:4 &rrr 2314c97f5b2SRichard Henderson@rdm .... .... .... .... .... rd:4 .... rm:4 &rr 232bd92fe35SRichard Henderson 233bd92fe35SRichard Henderson{ 234bd92fe35SRichard Henderson MUL 1111 1011 0000 .... 1111 .... 0000 .... @s0_rn0dm 235bd92fe35SRichard Henderson MLA 1111 1011 0000 .... .... .... 0000 .... @s0_rnadm 236bd92fe35SRichard Henderson} 237bd92fe35SRichard HendersonMLS 1111 1011 0000 .... .... .... 0001 .... @rnadm 238bd92fe35SRichard HendersonSMULL 1111 1011 1000 .... .... .... 0000 .... @s0_rnadm 239bd92fe35SRichard HendersonUMULL 1111 1011 1010 .... .... .... 0000 .... @s0_rnadm 240bd92fe35SRichard HendersonSMLAL 1111 1011 1100 .... .... .... 0000 .... @s0_rnadm 241bd92fe35SRichard HendersonUMLAL 1111 1011 1110 .... .... .... 0000 .... @s0_rnadm 242bd92fe35SRichard HendersonUMAAL 1111 1011 1110 .... .... .... 0110 .... @rnadm 24326c6923dSRichard Henderson{ 24426c6923dSRichard Henderson SMULWB 1111 1011 0011 .... 1111 .... 0000 .... @rn0dm 24526c6923dSRichard Henderson SMLAWB 1111 1011 0011 .... .... .... 0000 .... @rnadm 24626c6923dSRichard Henderson} 24726c6923dSRichard Henderson{ 24826c6923dSRichard Henderson SMULWT 1111 1011 0011 .... 1111 .... 0001 .... @rn0dm 24926c6923dSRichard Henderson SMLAWT 1111 1011 0011 .... .... .... 0001 .... @rnadm 25026c6923dSRichard Henderson} 25126c6923dSRichard Henderson{ 25226c6923dSRichard Henderson SMULBB 1111 1011 0001 .... 1111 .... 0000 .... @rn0dm 25326c6923dSRichard Henderson SMLABB 1111 1011 0001 .... .... .... 0000 .... @rnadm 25426c6923dSRichard Henderson} 25526c6923dSRichard Henderson{ 25626c6923dSRichard Henderson SMULBT 1111 1011 0001 .... 1111 .... 0001 .... @rn0dm 25726c6923dSRichard Henderson SMLABT 1111 1011 0001 .... .... .... 0001 .... @rnadm 25826c6923dSRichard Henderson} 25926c6923dSRichard Henderson{ 26026c6923dSRichard Henderson SMULTB 1111 1011 0001 .... 1111 .... 0010 .... @rn0dm 26126c6923dSRichard Henderson SMLATB 1111 1011 0001 .... .... .... 0010 .... @rnadm 26226c6923dSRichard Henderson} 26326c6923dSRichard Henderson{ 26426c6923dSRichard Henderson SMULTT 1111 1011 0001 .... 1111 .... 0011 .... @rn0dm 26526c6923dSRichard Henderson SMLATT 1111 1011 0001 .... .... .... 0011 .... @rnadm 26626c6923dSRichard Henderson} 26726c6923dSRichard HendersonSMLALBB 1111 1011 1100 .... .... .... 1000 .... @rnadm 26826c6923dSRichard HendersonSMLALBT 1111 1011 1100 .... .... .... 1001 .... @rnadm 26926c6923dSRichard HendersonSMLALTB 1111 1011 1100 .... .... .... 1010 .... @rnadm 27026c6923dSRichard HendersonSMLALTT 1111 1011 1100 .... .... .... 1011 .... @rnadm 2716d0730a8SRichard Henderson 27286d21e4bSRichard Henderson# usad8 is usada8 w/ ra=15 27386d21e4bSRichard HendersonUSADA8 1111 1011 0111 .... .... .... 0000 .... @rnadm 27486d21e4bSRichard Henderson 2752c7c4e09SRichard HendersonSMLAD 1111 1011 0010 .... .... .... 0000 .... @rnadm 2762c7c4e09SRichard HendersonSMLADX 1111 1011 0010 .... .... .... 0001 .... @rnadm 2772c7c4e09SRichard HendersonSMLSD 1111 1011 0100 .... .... .... 0000 .... @rnadm 2782c7c4e09SRichard HendersonSMLSDX 1111 1011 0100 .... .... .... 0001 .... @rnadm 2792c7c4e09SRichard Henderson 2802c7c4e09SRichard HendersonSMLALD 1111 1011 1100 .... .... .... 1100 .... @rnadm 2812c7c4e09SRichard HendersonSMLALDX 1111 1011 1100 .... .... .... 1101 .... @rnadm 2822c7c4e09SRichard HendersonSMLSLD 1111 1011 1101 .... .... .... 1100 .... @rnadm 2832c7c4e09SRichard HendersonSMLSLDX 1111 1011 1101 .... .... .... 1101 .... @rnadm 2842c7c4e09SRichard Henderson 2852c7c4e09SRichard HendersonSMMLA 1111 1011 0101 .... .... .... 0000 .... @rnadm 2862c7c4e09SRichard HendersonSMMLAR 1111 1011 0101 .... .... .... 0001 .... @rnadm 2872c7c4e09SRichard HendersonSMMLS 1111 1011 0110 .... .... .... 0000 .... @rnadm 2882c7c4e09SRichard HendersonSMMLSR 1111 1011 0110 .... .... .... 0001 .... @rnadm 2892c7c4e09SRichard Henderson 2902c7c4e09SRichard HendersonSDIV 1111 1011 1001 .... 1111 .... 1111 .... @rndm 2912c7c4e09SRichard HendersonUDIV 1111 1011 1011 .... 1111 .... 1111 .... @rndm 2922c7c4e09SRichard Henderson 2936d0730a8SRichard Henderson# Data-processing (two source registers) 2946d0730a8SRichard Henderson 2956d0730a8SRichard HendersonQADD 1111 1010 1000 .... 1111 .... 1000 .... @rndm 2966d0730a8SRichard HendersonQSUB 1111 1010 1000 .... 1111 .... 1010 .... @rndm 2976d0730a8SRichard HendersonQDADD 1111 1010 1000 .... 1111 .... 1001 .... @rndm 2986d0730a8SRichard HendersonQDSUB 1111 1010 1000 .... 1111 .... 1011 .... @rndm 29963130596SRichard Henderson 3006c35d53fSRichard HendersonCRC32B 1111 1010 1100 .... 1111 .... 1000 .... @rndm 3016c35d53fSRichard HendersonCRC32H 1111 1010 1100 .... 1111 .... 1001 .... @rndm 3026c35d53fSRichard HendersonCRC32W 1111 1010 1100 .... 1111 .... 1010 .... @rndm 3036c35d53fSRichard HendersonCRC32CB 1111 1010 1101 .... 1111 .... 1000 .... @rndm 3046c35d53fSRichard HendersonCRC32CH 1111 1010 1101 .... 1111 .... 1001 .... @rndm 3056c35d53fSRichard HendersonCRC32CW 1111 1010 1101 .... 1111 .... 1010 .... @rndm 3066c35d53fSRichard Henderson 30746497f6aSRichard HendersonSEL 1111 1010 1010 .... 1111 .... 1000 .... @rndm 30846497f6aSRichard Henderson 3094c97f5b2SRichard Henderson# Note rn != rm is CONSTRAINED UNPREDICTABLE; we choose to ignore rn. 31046497f6aSRichard HendersonREV 1111 1010 1001 ---- 1111 .... 1000 .... @rdm 31146497f6aSRichard HendersonREV16 1111 1010 1001 ---- 1111 .... 1001 .... @rdm 31246497f6aSRichard HendersonRBIT 1111 1010 1001 ---- 1111 .... 1010 .... @rdm 31346497f6aSRichard HendersonREVSH 1111 1010 1001 ---- 1111 .... 1011 .... @rdm 3144c97f5b2SRichard HendersonCLZ 1111 1010 1011 ---- 1111 .... 1000 .... @rdm 3154c97f5b2SRichard Henderson 31663130596SRichard Henderson# Branches and miscellaneous control 31763130596SRichard Henderson 318d0b26644SRichard Henderson%msr_sysm 4:1 8:4 319d0b26644SRichard Henderson%mrs_sysm 4:1 16:4 3202cde9ea5SRichard Henderson%imm16_16_0 16:4 0:12 321360144f3SRichard Henderson%imm21 26:s1 11:1 13:1 16:6 0:11 !function=times_2 322360144f3SRichard Henderson&ci cond imm 323d0b26644SRichard Henderson 324d0b26644SRichard Henderson{ 325360144f3SRichard Henderson # Group insn[25:23] = 111, which is cond=111x for the branch below, 326360144f3SRichard Henderson # or unconditional, which would be illegal for the branch. 32745f11876SPeter Maydell [ 32845f11876SPeter Maydell # Hints, and CPS 32963130596SRichard Henderson { 33063130596SRichard Henderson YIELD 1111 0011 1010 1111 1000 0000 0000 0001 33163130596SRichard Henderson WFE 1111 0011 1010 1111 1000 0000 0000 0010 33263130596SRichard Henderson WFI 1111 0011 1010 1111 1000 0000 0000 0011 33363130596SRichard Henderson 33463130596SRichard Henderson # TODO: Implement SEV, SEVL; may help SMP performance. 33563130596SRichard Henderson # SEV 1111 0011 1010 1111 1000 0000 0000 0100 33663130596SRichard Henderson # SEVL 1111 0011 1010 1111 1000 0000 0000 0101 33763130596SRichard Henderson 33846f4976fSPeter Maydell # For M-profile minimal-RAS ESB can be a NOP, which is the 33946f4976fSPeter Maydell # default behaviour since it is in the hint space. 34046f4976fSPeter Maydell # ESB 1111 0011 1010 1111 1000 0000 0001 0000 34146f4976fSPeter Maydell 34263130596SRichard Henderson # The canonical nop ends in 0000 0000, but the whole rest 34363130596SRichard Henderson # of the space is "reserved hint, behaves as nop". 34463130596SRichard Henderson NOP 1111 0011 1010 1111 1000 0000 ---- ---- 345519b8471SRichard Henderson 34652f83b9cSRichard Henderson # If imod == '00' && M == '0' then SEE "Hint instructions", above. 34752f83b9cSRichard Henderson CPS 1111 0011 1010 1111 1000 0 imod:2 M:1 A:1 I:1 F:1 mode:5 \ 34852f83b9cSRichard Henderson &cps 34945f11876SPeter Maydell } 35052f83b9cSRichard Henderson 351519b8471SRichard Henderson # Miscellaneous control 352519b8471SRichard Henderson CLREX 1111 0011 1011 1111 1000 1111 0010 1111 353519b8471SRichard Henderson DSB 1111 0011 1011 1111 1000 1111 0100 ---- 354519b8471SRichard Henderson DMB 1111 0011 1011 1111 1000 1111 0101 ---- 355519b8471SRichard Henderson ISB 1111 0011 1011 1111 1000 1111 0110 ---- 356519b8471SRichard Henderson SB 1111 0011 1011 1111 1000 1111 0111 0000 357519b8471SRichard Henderson 358d0b26644SRichard Henderson # Note that the v7m insn overlaps both the normal and banked insn. 359d0b26644SRichard Henderson { 360d0b26644SRichard Henderson MRS_bank 1111 0011 111 r:1 .... 1000 rd:4 001. 0000 \ 361d0b26644SRichard Henderson &mrs_bank sysm=%mrs_sysm 362d0b26644SRichard Henderson MRS_reg 1111 0011 111 r:1 1111 1000 rd:4 0000 0000 &mrs_reg 363d0b26644SRichard Henderson MRS_v7m 1111 0011 111 0 1111 1000 rd:4 sysm:8 364d0b26644SRichard Henderson } 365d0b26644SRichard Henderson { 366d0b26644SRichard Henderson MSR_bank 1111 0011 100 r:1 rn:4 1000 .... 001. 0000 \ 367d0b26644SRichard Henderson &msr_bank sysm=%msr_sysm 368d0b26644SRichard Henderson MSR_reg 1111 0011 100 r:1 rn:4 1000 mask:4 0000 0000 &msr_reg 369d0b26644SRichard Henderson MSR_v7m 1111 0011 100 0 rn:4 1000 mask:2 00 sysm:8 370d0b26644SRichard Henderson } 3714ed95abdSRichard Henderson BXJ 1111 0011 1100 rm:4 1000 1111 0000 0000 &r 372ef11bc3cSRichard Henderson { 373ef11bc3cSRichard Henderson # At v6T2, this is the T5 encoding of SUBS PC, LR, #IMM, and works as for 374ef11bc3cSRichard Henderson # every other encoding of SUBS. With v7VE, IMM=0 is redefined as ERET. 375ef11bc3cSRichard Henderson # The distinction between the two only matters for Hyp mode. 376ef11bc3cSRichard Henderson ERET 1111 0011 1101 1110 1000 1111 0000 0000 377ef11bc3cSRichard Henderson SUB_rri 1111 0011 1101 1110 1000 1111 imm:8 \ 378ef11bc3cSRichard Henderson &s_rri_rot rot=0 s=1 rd=15 rn=14 379ef11bc3cSRichard Henderson } 3802cde9ea5SRichard Henderson SMC 1111 0111 1111 imm:4 1000 0000 0000 0000 &i 3812cde9ea5SRichard Henderson HVC 1111 0111 1110 .... 1000 .... .... .... \ 3822cde9ea5SRichard Henderson &i imm=%imm16_16_0 38386d21e4bSRichard Henderson UDF 1111 0111 1111 ---- 1010 ---- ---- ---- 38445f11876SPeter Maydell ] 385360144f3SRichard Henderson B_cond_thumb 1111 0. cond:4 ...... 10.0 ............ &ci imm=%imm21 386360144f3SRichard Henderson} 3875e291fe1SRichard Henderson 3885e291fe1SRichard Henderson# Load/store (register, immediate, literal) 3895e291fe1SRichard Henderson 3905e291fe1SRichard Henderson@ldst_rr .... .... .... rn:4 rt:4 ...... shimm:2 rm:4 \ 3915e291fe1SRichard Henderson &ldst_rr p=1 w=0 u=1 shtype=0 3925e291fe1SRichard Henderson@ldst_ri_idx .... .... .... rn:4 rt:4 . p:1 u:1 . imm:8 \ 3935e291fe1SRichard Henderson &ldst_ri w=1 3945e291fe1SRichard Henderson@ldst_ri_neg .... .... .... rn:4 rt:4 .... imm:8 \ 3955e291fe1SRichard Henderson &ldst_ri p=1 w=0 u=0 3965e291fe1SRichard Henderson@ldst_ri_unp .... .... .... rn:4 rt:4 .... imm:8 \ 3975e291fe1SRichard Henderson &ldst_ri p=1 w=0 u=1 3985e291fe1SRichard Henderson@ldst_ri_pos .... .... .... rn:4 rt:4 imm:12 \ 3995e291fe1SRichard Henderson &ldst_ri p=1 w=0 u=1 4005e291fe1SRichard Henderson@ldst_ri_lit .... .... u:1 ... .... rt:4 imm:12 \ 4015e291fe1SRichard Henderson &ldst_ri p=1 w=0 rn=15 4025e291fe1SRichard Henderson 4035e291fe1SRichard HendersonSTRB_rr 1111 1000 0000 .... .... 000000 .. .... @ldst_rr 4045e291fe1SRichard HendersonSTRB_ri 1111 1000 0000 .... .... 1..1 ........ @ldst_ri_idx 4055e291fe1SRichard HendersonSTRB_ri 1111 1000 0000 .... .... 1100 ........ @ldst_ri_neg 4065e291fe1SRichard HendersonSTRBT_ri 1111 1000 0000 .... .... 1110 ........ @ldst_ri_unp 4075e291fe1SRichard HendersonSTRB_ri 1111 1000 1000 .... .... ............ @ldst_ri_pos 4085e291fe1SRichard Henderson 4095e291fe1SRichard HendersonSTRH_rr 1111 1000 0010 .... .... 000000 .. .... @ldst_rr 4105e291fe1SRichard HendersonSTRH_ri 1111 1000 0010 .... .... 1..1 ........ @ldst_ri_idx 4115e291fe1SRichard HendersonSTRH_ri 1111 1000 0010 .... .... 1100 ........ @ldst_ri_neg 4125e291fe1SRichard HendersonSTRHT_ri 1111 1000 0010 .... .... 1110 ........ @ldst_ri_unp 4135e291fe1SRichard HendersonSTRH_ri 1111 1000 1010 .... .... ............ @ldst_ri_pos 4145e291fe1SRichard Henderson 4155e291fe1SRichard HendersonSTR_rr 1111 1000 0100 .... .... 000000 .. .... @ldst_rr 4165e291fe1SRichard HendersonSTR_ri 1111 1000 0100 .... .... 1..1 ........ @ldst_ri_idx 4175e291fe1SRichard HendersonSTR_ri 1111 1000 0100 .... .... 1100 ........ @ldst_ri_neg 4185e291fe1SRichard HendersonSTRT_ri 1111 1000 0100 .... .... 1110 ........ @ldst_ri_unp 4195e291fe1SRichard HendersonSTR_ri 1111 1000 1100 .... .... ............ @ldst_ri_pos 4205e291fe1SRichard Henderson 4215e291fe1SRichard Henderson# Note that Load, unsigned (literal) overlaps all other load encodings. 4225e291fe1SRichard Henderson{ 4235e291fe1SRichard Henderson { 4245e291fe1SRichard Henderson NOP 1111 1000 -001 1111 1111 ------------ # PLD 4255e291fe1SRichard Henderson LDRB_ri 1111 1000 .001 1111 .... ............ @ldst_ri_lit 4265e291fe1SRichard Henderson } 4275e291fe1SRichard Henderson { 4285e291fe1SRichard Henderson NOP 1111 1000 1001 ---- 1111 ------------ # PLD 4295e291fe1SRichard Henderson LDRB_ri 1111 1000 1001 .... .... ............ @ldst_ri_pos 4305e291fe1SRichard Henderson } 4315e291fe1SRichard Henderson LDRB_ri 1111 1000 0001 .... .... 1..1 ........ @ldst_ri_idx 4325e291fe1SRichard Henderson { 4335e291fe1SRichard Henderson NOP 1111 1000 0001 ---- 1111 1100 -------- # PLD 4345e291fe1SRichard Henderson LDRB_ri 1111 1000 0001 .... .... 1100 ........ @ldst_ri_neg 4355e291fe1SRichard Henderson } 4365e291fe1SRichard Henderson LDRBT_ri 1111 1000 0001 .... .... 1110 ........ @ldst_ri_unp 4375e291fe1SRichard Henderson { 4385e291fe1SRichard Henderson NOP 1111 1000 0001 ---- 1111 000000 -- ---- # PLD 4395e291fe1SRichard Henderson LDRB_rr 1111 1000 0001 .... .... 000000 .. .... @ldst_rr 4405e291fe1SRichard Henderson } 4415e291fe1SRichard Henderson} 4425e291fe1SRichard Henderson{ 4435e291fe1SRichard Henderson { 4445e291fe1SRichard Henderson NOP 1111 1000 -011 1111 1111 ------------ # PLD 4455e291fe1SRichard Henderson LDRH_ri 1111 1000 .011 1111 .... ............ @ldst_ri_lit 4465e291fe1SRichard Henderson } 4475e291fe1SRichard Henderson { 4485e291fe1SRichard Henderson NOP 1111 1000 1011 ---- 1111 ------------ # PLDW 4495e291fe1SRichard Henderson LDRH_ri 1111 1000 1011 .... .... ............ @ldst_ri_pos 4505e291fe1SRichard Henderson } 4515e291fe1SRichard Henderson LDRH_ri 1111 1000 0011 .... .... 1..1 ........ @ldst_ri_idx 4525e291fe1SRichard Henderson { 4535e291fe1SRichard Henderson NOP 1111 1000 0011 ---- 1111 1100 -------- # PLDW 4545e291fe1SRichard Henderson LDRH_ri 1111 1000 0011 .... .... 1100 ........ @ldst_ri_neg 4555e291fe1SRichard Henderson } 4565e291fe1SRichard Henderson LDRHT_ri 1111 1000 0011 .... .... 1110 ........ @ldst_ri_unp 4575e291fe1SRichard Henderson { 4585e291fe1SRichard Henderson NOP 1111 1000 0011 ---- 1111 000000 -- ---- # PLDW 4595e291fe1SRichard Henderson LDRH_rr 1111 1000 0011 .... .... 000000 .. .... @ldst_rr 4605e291fe1SRichard Henderson } 4615e291fe1SRichard Henderson} 4625e291fe1SRichard Henderson{ 4635e291fe1SRichard Henderson LDR_ri 1111 1000 .101 1111 .... ............ @ldst_ri_lit 4645e291fe1SRichard Henderson LDR_ri 1111 1000 1101 .... .... ............ @ldst_ri_pos 4655e291fe1SRichard Henderson LDR_ri 1111 1000 0101 .... .... 1..1 ........ @ldst_ri_idx 4665e291fe1SRichard Henderson LDR_ri 1111 1000 0101 .... .... 1100 ........ @ldst_ri_neg 4675e291fe1SRichard Henderson LDRT_ri 1111 1000 0101 .... .... 1110 ........ @ldst_ri_unp 4685e291fe1SRichard Henderson LDR_rr 1111 1000 0101 .... .... 000000 .. .... @ldst_rr 4695e291fe1SRichard Henderson} 4705e291fe1SRichard Henderson# NOPs here are PLI. 4715e291fe1SRichard Henderson{ 4725e291fe1SRichard Henderson { 4735e291fe1SRichard Henderson NOP 1111 1001 -001 1111 1111 ------------ 4745e291fe1SRichard Henderson LDRSB_ri 1111 1001 .001 1111 .... ............ @ldst_ri_lit 4755e291fe1SRichard Henderson } 4765e291fe1SRichard Henderson { 4775e291fe1SRichard Henderson NOP 1111 1001 1001 ---- 1111 ------------ 4785e291fe1SRichard Henderson LDRSB_ri 1111 1001 1001 .... .... ............ @ldst_ri_pos 4795e291fe1SRichard Henderson } 4805e291fe1SRichard Henderson LDRSB_ri 1111 1001 0001 .... .... 1..1 ........ @ldst_ri_idx 4815e291fe1SRichard Henderson { 4825e291fe1SRichard Henderson NOP 1111 1001 0001 ---- 1111 1100 -------- 4835e291fe1SRichard Henderson LDRSB_ri 1111 1001 0001 .... .... 1100 ........ @ldst_ri_neg 4845e291fe1SRichard Henderson } 4855e291fe1SRichard Henderson LDRSBT_ri 1111 1001 0001 .... .... 1110 ........ @ldst_ri_unp 4865e291fe1SRichard Henderson { 4875e291fe1SRichard Henderson NOP 1111 1001 0001 ---- 1111 000000 -- ---- 4885e291fe1SRichard Henderson LDRSB_rr 1111 1001 0001 .... .... 000000 .. .... @ldst_rr 4895e291fe1SRichard Henderson } 4905e291fe1SRichard Henderson} 4915e291fe1SRichard Henderson# NOPs here are unallocated memory hints, treated as NOP. 4925e291fe1SRichard Henderson{ 4935e291fe1SRichard Henderson { 4945e291fe1SRichard Henderson NOP 1111 1001 -011 1111 1111 ------------ 4955e291fe1SRichard Henderson LDRSH_ri 1111 1001 .011 1111 .... ............ @ldst_ri_lit 4965e291fe1SRichard Henderson } 4975e291fe1SRichard Henderson { 4985e291fe1SRichard Henderson NOP 1111 1001 1011 ---- 1111 ------------ 4995e291fe1SRichard Henderson LDRSH_ri 1111 1001 1011 .... .... ............ @ldst_ri_pos 5005e291fe1SRichard Henderson } 5015e291fe1SRichard Henderson LDRSH_ri 1111 1001 0011 .... .... 1..1 ........ @ldst_ri_idx 5025e291fe1SRichard Henderson { 5035e291fe1SRichard Henderson NOP 1111 1001 0011 ---- 1111 1100 -------- 5045e291fe1SRichard Henderson LDRSH_ri 1111 1001 0011 .... .... 1100 ........ @ldst_ri_neg 5055e291fe1SRichard Henderson } 5065e291fe1SRichard Henderson LDRSHT_ri 1111 1001 0011 .... .... 1110 ........ @ldst_ri_unp 5075e291fe1SRichard Henderson { 5085e291fe1SRichard Henderson NOP 1111 1001 0011 ---- 1111 000000 -- ---- 5095e291fe1SRichard Henderson LDRSH_rr 1111 1001 0011 .... .... 000000 .. .... @ldst_rr 5105e291fe1SRichard Henderson } 5115e291fe1SRichard Henderson} 5125e291fe1SRichard Henderson 5135e291fe1SRichard Henderson%imm8x4 0:8 !function=times_4 5145e291fe1SRichard Henderson&ldst_ri2 p w u rn rt rt2 imm 5155e291fe1SRichard Henderson@ldstd_ri8 .... .... u:1 ... rn:4 rt:4 rt2:4 ........ \ 5165e291fe1SRichard Henderson &ldst_ri2 imm=%imm8x4 5175e291fe1SRichard Henderson 5185e291fe1SRichard HendersonSTRD_ri_t32 1110 1000 .110 .... .... .... ........ @ldstd_ri8 w=1 p=0 5195e291fe1SRichard HendersonLDRD_ri_t32 1110 1000 .111 .... .... .... ........ @ldstd_ri8 w=1 p=0 5205e291fe1SRichard Henderson 5215e291fe1SRichard HendersonSTRD_ri_t32 1110 1001 .100 .... .... .... ........ @ldstd_ri8 w=0 p=1 5225e291fe1SRichard HendersonLDRD_ri_t32 1110 1001 .101 .... .... .... ........ @ldstd_ri8 w=0 p=1 5235e291fe1SRichard Henderson 5245e291fe1SRichard HendersonSTRD_ri_t32 1110 1001 .110 .... .... .... ........ @ldstd_ri8 w=1 p=1 52535d240acSRichard Henderson{ 52635d240acSRichard Henderson SG 1110 1001 0111 1111 1110 1001 01111111 5275e291fe1SRichard Henderson LDRD_ri_t32 1110 1001 .111 .... .... .... ........ @ldstd_ri8 w=1 p=1 52835d240acSRichard Henderson} 5291efdd407SRichard Henderson 530808092bbSRichard Henderson# Load/Store Exclusive, Load-Acquire/Store-Release, and Table Branch 5311efdd407SRichard Henderson 5321efdd407SRichard Henderson@strex_i .... .... .... rn:4 rt:4 rd:4 .... .... \ 5331efdd407SRichard Henderson &strex rt2=15 imm=%imm8x4 5341efdd407SRichard Henderson@strex_0 .... .... .... rn:4 rt:4 .... .... rd:4 \ 5351efdd407SRichard Henderson &strex rt2=15 imm=0 5361efdd407SRichard Henderson@strex_d .... .... .... rn:4 rt:4 rt2:4 .... rd:4 \ 5371efdd407SRichard Henderson &strex imm=0 5381efdd407SRichard Henderson 5391efdd407SRichard Henderson@ldrex_i .... .... .... rn:4 rt:4 .... .... .... \ 5401efdd407SRichard Henderson &ldrex rt2=15 imm=%imm8x4 5411efdd407SRichard Henderson@ldrex_0 .... .... .... rn:4 rt:4 .... .... .... \ 5421efdd407SRichard Henderson &ldrex rt2=15 imm=0 5431efdd407SRichard Henderson@ldrex_d .... .... .... rn:4 rt:4 rt2:4 .... .... \ 5441efdd407SRichard Henderson &ldrex imm=0 5451efdd407SRichard Henderson 546d449f174SRichard Henderson{ 547d449f174SRichard Henderson TT 1110 1000 0100 rn:4 1111 rd:4 A:1 T:1 000000 5481efdd407SRichard Henderson STREX 1110 1000 0100 .... .... .... .... .... @strex_i 549d449f174SRichard Henderson} 5501efdd407SRichard HendersonSTREXB 1110 1000 1100 .... .... 1111 0100 .... @strex_0 5511efdd407SRichard HendersonSTREXH 1110 1000 1100 .... .... 1111 0101 .... @strex_0 5521efdd407SRichard HendersonSTREXD_t32 1110 1000 1100 .... .... .... 0111 .... @strex_d 5531efdd407SRichard Henderson 5541efdd407SRichard HendersonSTLEX 1110 1000 1100 .... .... 1111 1110 .... @strex_0 5551efdd407SRichard HendersonSTLEXB 1110 1000 1100 .... .... 1111 1100 .... @strex_0 5561efdd407SRichard HendersonSTLEXH 1110 1000 1100 .... .... 1111 1101 .... @strex_0 5571efdd407SRichard HendersonSTLEXD_t32 1110 1000 1100 .... .... .... 1111 .... @strex_d 5581efdd407SRichard Henderson 5591efdd407SRichard HendersonSTL 1110 1000 1100 .... .... 1111 1010 1111 @ldrex_0 5601efdd407SRichard HendersonSTLB 1110 1000 1100 .... .... 1111 1000 1111 @ldrex_0 5611efdd407SRichard HendersonSTLH 1110 1000 1100 .... .... 1111 1001 1111 @ldrex_0 5621efdd407SRichard Henderson 5631efdd407SRichard HendersonLDREX 1110 1000 0101 .... .... 1111 .... .... @ldrex_i 5641efdd407SRichard HendersonLDREXB 1110 1000 1101 .... .... 1111 0100 1111 @ldrex_0 5651efdd407SRichard HendersonLDREXH 1110 1000 1101 .... .... 1111 0101 1111 @ldrex_0 5661efdd407SRichard HendersonLDREXD_t32 1110 1000 1101 .... .... .... 0111 1111 @ldrex_d 5671efdd407SRichard Henderson 5681efdd407SRichard HendersonLDAEX 1110 1000 1101 .... .... 1111 1110 1111 @ldrex_0 5691efdd407SRichard HendersonLDAEXB 1110 1000 1101 .... .... 1111 1100 1111 @ldrex_0 5701efdd407SRichard HendersonLDAEXH 1110 1000 1101 .... .... 1111 1101 1111 @ldrex_0 5711efdd407SRichard HendersonLDAEXD_t32 1110 1000 1101 .... .... .... 1111 1111 @ldrex_d 5721efdd407SRichard Henderson 5731efdd407SRichard HendersonLDA 1110 1000 1101 .... .... 1111 1010 1111 @ldrex_0 5741efdd407SRichard HendersonLDAB 1110 1000 1101 .... .... 1111 1000 1111 @ldrex_0 5751efdd407SRichard HendersonLDAH 1110 1000 1101 .... .... 1111 1001 1111 @ldrex_0 576adf1a566SRichard Henderson 577808092bbSRichard Henderson&tbranch rn rm 578808092bbSRichard Henderson@tbranch .... .... .... rn:4 .... .... .... rm:4 &tbranch 579808092bbSRichard Henderson 580808092bbSRichard HendersonTBB 1110 1000 1101 .... 1111 0000 0000 .... @tbranch 581808092bbSRichard HendersonTBH 1110 1000 1101 .... 1111 0000 0001 .... @tbranch 582808092bbSRichard Henderson 583adf1a566SRichard Henderson# Parallel addition and subtraction 584adf1a566SRichard Henderson 585adf1a566SRichard HendersonSADD8 1111 1010 1000 .... 1111 .... 0000 .... @rndm 586adf1a566SRichard HendersonQADD8 1111 1010 1000 .... 1111 .... 0001 .... @rndm 587adf1a566SRichard HendersonSHADD8 1111 1010 1000 .... 1111 .... 0010 .... @rndm 588adf1a566SRichard HendersonUADD8 1111 1010 1000 .... 1111 .... 0100 .... @rndm 589adf1a566SRichard HendersonUQADD8 1111 1010 1000 .... 1111 .... 0101 .... @rndm 590adf1a566SRichard HendersonUHADD8 1111 1010 1000 .... 1111 .... 0110 .... @rndm 591adf1a566SRichard Henderson 592adf1a566SRichard HendersonSADD16 1111 1010 1001 .... 1111 .... 0000 .... @rndm 593adf1a566SRichard HendersonQADD16 1111 1010 1001 .... 1111 .... 0001 .... @rndm 594adf1a566SRichard HendersonSHADD16 1111 1010 1001 .... 1111 .... 0010 .... @rndm 595adf1a566SRichard HendersonUADD16 1111 1010 1001 .... 1111 .... 0100 .... @rndm 596adf1a566SRichard HendersonUQADD16 1111 1010 1001 .... 1111 .... 0101 .... @rndm 597adf1a566SRichard HendersonUHADD16 1111 1010 1001 .... 1111 .... 0110 .... @rndm 598adf1a566SRichard Henderson 599adf1a566SRichard HendersonSASX 1111 1010 1010 .... 1111 .... 0000 .... @rndm 600adf1a566SRichard HendersonQASX 1111 1010 1010 .... 1111 .... 0001 .... @rndm 601adf1a566SRichard HendersonSHASX 1111 1010 1010 .... 1111 .... 0010 .... @rndm 602adf1a566SRichard HendersonUASX 1111 1010 1010 .... 1111 .... 0100 .... @rndm 603adf1a566SRichard HendersonUQASX 1111 1010 1010 .... 1111 .... 0101 .... @rndm 604adf1a566SRichard HendersonUHASX 1111 1010 1010 .... 1111 .... 0110 .... @rndm 605adf1a566SRichard Henderson 606adf1a566SRichard HendersonSSUB8 1111 1010 1100 .... 1111 .... 0000 .... @rndm 607adf1a566SRichard HendersonQSUB8 1111 1010 1100 .... 1111 .... 0001 .... @rndm 608adf1a566SRichard HendersonSHSUB8 1111 1010 1100 .... 1111 .... 0010 .... @rndm 609adf1a566SRichard HendersonUSUB8 1111 1010 1100 .... 1111 .... 0100 .... @rndm 610adf1a566SRichard HendersonUQSUB8 1111 1010 1100 .... 1111 .... 0101 .... @rndm 611adf1a566SRichard HendersonUHSUB8 1111 1010 1100 .... 1111 .... 0110 .... @rndm 612adf1a566SRichard Henderson 613adf1a566SRichard HendersonSSUB16 1111 1010 1101 .... 1111 .... 0000 .... @rndm 614adf1a566SRichard HendersonQSUB16 1111 1010 1101 .... 1111 .... 0001 .... @rndm 615adf1a566SRichard HendersonSHSUB16 1111 1010 1101 .... 1111 .... 0010 .... @rndm 616adf1a566SRichard HendersonUSUB16 1111 1010 1101 .... 1111 .... 0100 .... @rndm 617adf1a566SRichard HendersonUQSUB16 1111 1010 1101 .... 1111 .... 0101 .... @rndm 618adf1a566SRichard HendersonUHSUB16 1111 1010 1101 .... 1111 .... 0110 .... @rndm 619adf1a566SRichard Henderson 620adf1a566SRichard HendersonSSAX 1111 1010 1110 .... 1111 .... 0000 .... @rndm 621adf1a566SRichard HendersonQSAX 1111 1010 1110 .... 1111 .... 0001 .... @rndm 622adf1a566SRichard HendersonSHSAX 1111 1010 1110 .... 1111 .... 0010 .... @rndm 623adf1a566SRichard HendersonUSAX 1111 1010 1110 .... 1111 .... 0100 .... @rndm 624adf1a566SRichard HendersonUQSAX 1111 1010 1110 .... 1111 .... 0101 .... @rndm 625adf1a566SRichard HendersonUHSAX 1111 1010 1110 .... 1111 .... 0110 .... @rndm 62646497f6aSRichard Henderson 62746497f6aSRichard Henderson# Register extends 62846497f6aSRichard Henderson 62946497f6aSRichard Henderson@rrr_rot .... .... .... rn:4 .... rd:4 .. rot:2 rm:4 &rrr_rot 63046497f6aSRichard Henderson 63146497f6aSRichard HendersonSXTAH 1111 1010 0000 .... 1111 .... 10.. .... @rrr_rot 63246497f6aSRichard HendersonUXTAH 1111 1010 0001 .... 1111 .... 10.. .... @rrr_rot 63346497f6aSRichard HendersonSXTAB16 1111 1010 0010 .... 1111 .... 10.. .... @rrr_rot 63446497f6aSRichard HendersonUXTAB16 1111 1010 0011 .... 1111 .... 10.. .... @rrr_rot 63546497f6aSRichard HendersonSXTAB 1111 1010 0100 .... 1111 .... 10.. .... @rrr_rot 63646497f6aSRichard HendersonUXTAB 1111 1010 0101 .... 1111 .... 10.. .... @rrr_rot 637c5c426d4SRichard Henderson 638c5c426d4SRichard Henderson# Load/store multiple 639c5c426d4SRichard Henderson 640c5c426d4SRichard Henderson@ldstm .... .... .. w:1 . rn:4 list:16 &ldst_block u=0 641c5c426d4SRichard Henderson 642c5c426d4SRichard HendersonSTM_t32 1110 1000 10.0 .... ................ @ldstm i=1 b=0 643c5c426d4SRichard HendersonSTM_t32 1110 1001 00.0 .... ................ @ldstm i=0 b=1 6446e21a013SPeter Maydell{ 6456e21a013SPeter Maydell # Rn=15 UNDEFs for LDM; M-profile CLRM uses that encoding 6466e21a013SPeter Maydell CLRM 1110 1000 1001 1111 list:16 647c5c426d4SRichard Henderson LDM_t32 1110 1000 10.1 .... ................ @ldstm i=1 b=0 6486e21a013SPeter Maydell} 649c5c426d4SRichard HendersonLDM_t32 1110 1001 00.1 .... ................ @ldstm i=0 b=1 650360144f3SRichard Henderson 651885782a7SRichard Henderson&rfe !extern rn w pu 652885782a7SRichard Henderson@rfe .... .... .. w:1 . rn:4 ................ &rfe 653885782a7SRichard Henderson 654885782a7SRichard HendersonRFE 1110 1000 00.1 .... 1100000000000000 @rfe pu=2 655885782a7SRichard HendersonRFE 1110 1001 10.1 .... 1100000000000000 @rfe pu=1 656885782a7SRichard Henderson 657885782a7SRichard Henderson&srs !extern mode w pu 658885782a7SRichard Henderson@srs .... .... .. w:1 . .... ........... mode:5 &srs 659885782a7SRichard Henderson 660885782a7SRichard HendersonSRS 1110 1000 00.0 1101 1100 0000 000. .... @srs pu=2 661885782a7SRichard HendersonSRS 1110 1001 10.0 1101 1100 0000 000. .... @srs pu=1 662885782a7SRichard Henderson 6634c498dcfSPeter Maydell# Coprocessor instructions 6644c498dcfSPeter Maydell 6654c498dcfSPeter Maydell# We decode MCR, MCR, MRRC and MCRR only, because for QEMU the 6664c498dcfSPeter Maydell# other coprocessor instructions always UNDEF. 6674c498dcfSPeter Maydell# The trans_ functions for these will ignore cp values 8..13 for v7 or 6684c498dcfSPeter Maydell# earlier, and 0..13 for v8 and later, because those areas of the 6694c498dcfSPeter Maydell# encoding space may be used for other things, such as VFP or Neon. 6704c498dcfSPeter Maydell 6714c498dcfSPeter Maydell@mcr .... .... opc1:3 . crn:4 rt:4 cp:4 opc2:3 . crm:4 6724c498dcfSPeter Maydell@mcrr .... .... .... rt2:4 rt:4 cp:4 opc1:4 crm:4 6734c498dcfSPeter Maydell 6744c498dcfSPeter MaydellMCRR 1110 1100 0100 .... .... .... .... .... @mcrr 6754c498dcfSPeter MaydellMRRC 1110 1100 0101 .... .... .... .... .... @mcrr 6764c498dcfSPeter Maydell 6774c498dcfSPeter MaydellMCR 1110 1110 ... 0 .... .... .... ... 1 .... @mcr 6784c498dcfSPeter MaydellMRC 1110 1110 ... 1 .... .... .... ... 1 .... @mcr 6794c498dcfSPeter Maydell 680360144f3SRichard Henderson# Branches 681360144f3SRichard Henderson 682360144f3SRichard Henderson%imm24 26:s1 13:1 11:1 16:10 0:11 !function=t32_branch24 683360144f3SRichard Henderson@branch24 ................................ &i imm=%imm24 684360144f3SRichard Henderson 685360144f3SRichard HendersonB 1111 0. .......... 10.1 ............ @branch24 686360144f3SRichard HendersonBL 1111 0. .......... 11.1 ............ @branch24 68705903f03SPeter Maydell{ 68805903f03SPeter Maydell # BLX_i is non-M-profile only 689360144f3SRichard Henderson BLX_i 1111 0. .......... 11.0 ............ @branch24 69005903f03SPeter Maydell # M-profile only: loop and branch insns 69105903f03SPeter Maydell [ 69205903f03SPeter Maydell # All these BF insns have boff != 0b0000; we NOP them all 69305903f03SPeter Maydell BF 1111 0 boff:4 ------- 1100 - ---------- 1 # BFL 69405903f03SPeter Maydell BF 1111 0 boff:4 0 ------ 1110 - ---------- 1 # BFCSEL 69505903f03SPeter Maydell BF 1111 0 boff:4 10 ----- 1110 - ---------- 1 # BF 69605903f03SPeter Maydell BF 1111 0 boff:4 11 ----- 1110 0 0000000000 1 # BFX, BFLX 69705903f03SPeter Maydell ] 698b7226369SPeter Maydell [ 699b7226369SPeter Maydell # LE and WLS immediate 700b7226369SPeter Maydell %lob_imm 1:10 11:1 !function=times_2 701b7226369SPeter Maydell 70240a36f00SPeter Maydell DLS 1111 0 0000 100 rn:4 1110 0000 0000 0001 size=4 7036822abfdSPeter Maydell WLS 1111 0 0000 100 rn:4 1100 . .......... 1 imm=%lob_imm size=4 7046822abfdSPeter Maydell { 705a454ea1eSPeter Maydell LE 1111 0 0000 0 f:1 tp:1 1111 1100 . .......... 1 imm=%lob_imm 7066822abfdSPeter Maydell # This is WLSTP 7076822abfdSPeter Maydell WLS 1111 0 0000 0 size:2 rn:4 1100 . .......... 1 imm=%lob_imm 7086822abfdSPeter Maydell } 70940a36f00SPeter Maydell { 71076c32d72SPeter Maydell LCTP 1111 0 0000 000 1111 1110 0000 0000 0001 71140a36f00SPeter Maydell # This is DLSTP 71240a36f00SPeter Maydell DLS 1111 0 0000 0 size:2 rn:4 1110 0000 0000 0001 71340a36f00SPeter Maydell } 714b7226369SPeter Maydell ] 71505903f03SPeter Maydell} 716