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 51f4ae6c8cSPeter Maydell&mve_shl_ri rdalo rdahi shim 520aa4b4c3SPeter Maydell&mve_shl_rr rdalo rdahi rm 5346321d47SPeter Maydell&mve_sh_ri rda shim 5404ea4d3cSPeter Maydell&mve_sh_rr rda rm 55f4ae6c8cSPeter Maydell 56f4ae6c8cSPeter Maydell# rdahi: bits [3:1] from insn, bit 0 is 1 57f4ae6c8cSPeter Maydell# rdalo: bits [3:1] from insn, bit 0 is 0 58f4ae6c8cSPeter Maydell%rdahi_9 9:3 !function=times_2_plus_1 59f4ae6c8cSPeter Maydell%rdalo_17 17:3 !function=times_2 60f4ae6c8cSPeter Maydell 6125ae32c5SRichard Henderson# Data-processing (register) 6225ae32c5SRichard Henderson 6325ae32c5SRichard Henderson%imm5_12_6 12:3 6:2 6425ae32c5SRichard Henderson 6525ae32c5SRichard Henderson@s_rrr_shi ....... .... s:1 rn:4 .... rd:4 .. shty:2 rm:4 \ 6625ae32c5SRichard Henderson &s_rrr_shi shim=%imm5_12_6 6725ae32c5SRichard Henderson@s_rxr_shi ....... .... s:1 .... .... rd:4 .. shty:2 rm:4 \ 6825ae32c5SRichard Henderson &s_rrr_shi shim=%imm5_12_6 rn=0 6925ae32c5SRichard Henderson@S_xrr_shi ....... .... . rn:4 .... .... .. shty:2 rm:4 \ 7025ae32c5SRichard Henderson &s_rrr_shi shim=%imm5_12_6 s=1 rd=0 7125ae32c5SRichard Henderson 72f4ae6c8cSPeter Maydell@mve_shl_ri ....... .... . ... . . ... ... . .. .. .... \ 73f4ae6c8cSPeter Maydell &mve_shl_ri shim=%imm5_12_6 rdalo=%rdalo_17 rdahi=%rdahi_9 740aa4b4c3SPeter Maydell@mve_shl_rr ....... .... . ... . rm:4 ... . .. .. .... \ 750aa4b4c3SPeter Maydell &mve_shl_rr rdalo=%rdalo_17 rdahi=%rdahi_9 7646321d47SPeter Maydell@mve_sh_ri ....... .... . rda:4 . ... ... . .. .. .... \ 7746321d47SPeter Maydell &mve_sh_ri shim=%imm5_12_6 7804ea4d3cSPeter Maydell@mve_sh_rr ....... .... . rda:4 rm:4 .... .... .... &mve_sh_rr 79f4ae6c8cSPeter Maydell 8025ae32c5SRichard Henderson{ 8125ae32c5SRichard Henderson TST_xrri 1110101 0000 1 .... 0 ... 1111 .... .... @S_xrr_shi 8225ae32c5SRichard Henderson AND_rrri 1110101 0000 . .... 0 ... .... .... .... @s_rrr_shi 8325ae32c5SRichard Henderson} 8425ae32c5SRichard HendersonBIC_rrri 1110101 0001 . .... 0 ... .... .... .... @s_rrr_shi 8525ae32c5SRichard Henderson{ 86f4ae6c8cSPeter Maydell # The v8.1M MVE shift insns overlap in encoding with MOVS/ORRS 87f4ae6c8cSPeter Maydell # and are distinguished by having Rm==13 or 15. Those are UNPREDICTABLE 88f4ae6c8cSPeter Maydell # cases for MOVS/ORRS. We decode the MVE cases first, ensuring that 89f4ae6c8cSPeter Maydell # they explicitly call unallocated_encoding() for cases that must UNDEF 90f4ae6c8cSPeter Maydell # (eg "using a new shift insn on a v8.1M CPU without MVE"), and letting 91f4ae6c8cSPeter Maydell # the rest fall through (where ORR_rrri and MOV_rxri will end up 92f4ae6c8cSPeter Maydell # handling them as r13 and r15 accesses with the same semantics as A32). 93f4ae6c8cSPeter Maydell [ 9446321d47SPeter Maydell { 9546321d47SPeter Maydell UQSHL_ri 1110101 0010 1 .... 0 ... 1111 .. 00 1111 @mve_sh_ri 96f4ae6c8cSPeter Maydell LSLL_ri 1110101 0010 1 ... 0 0 ... ... 1 .. 00 1111 @mve_shl_ri 97f4ae6c8cSPeter Maydell UQSHLL_ri 1110101 0010 1 ... 1 0 ... ... 1 .. 00 1111 @mve_shl_ri 9846321d47SPeter Maydell } 9946321d47SPeter Maydell 10046321d47SPeter Maydell { 10146321d47SPeter Maydell URSHR_ri 1110101 0010 1 .... 0 ... 1111 .. 01 1111 @mve_sh_ri 10246321d47SPeter Maydell LSRL_ri 1110101 0010 1 ... 0 0 ... ... 1 .. 01 1111 @mve_shl_ri 103f4ae6c8cSPeter Maydell URSHRL_ri 1110101 0010 1 ... 1 0 ... ... 1 .. 01 1111 @mve_shl_ri 10446321d47SPeter Maydell } 10546321d47SPeter Maydell 10646321d47SPeter Maydell { 10746321d47SPeter Maydell SRSHR_ri 1110101 0010 1 .... 0 ... 1111 .. 10 1111 @mve_sh_ri 10846321d47SPeter Maydell ASRL_ri 1110101 0010 1 ... 0 0 ... ... 1 .. 10 1111 @mve_shl_ri 109f4ae6c8cSPeter Maydell SRSHRL_ri 1110101 0010 1 ... 1 0 ... ... 1 .. 10 1111 @mve_shl_ri 11046321d47SPeter Maydell } 11146321d47SPeter Maydell 11246321d47SPeter Maydell { 11346321d47SPeter Maydell SQSHL_ri 1110101 0010 1 .... 0 ... 1111 .. 11 1111 @mve_sh_ri 114f4ae6c8cSPeter Maydell SQSHLL_ri 1110101 0010 1 ... 1 0 ... ... 1 .. 11 1111 @mve_shl_ri 11546321d47SPeter Maydell } 1160aa4b4c3SPeter Maydell 11704ea4d3cSPeter Maydell { 11804ea4d3cSPeter Maydell UQRSHL_rr 1110101 0010 1 .... .... 1111 0000 1101 @mve_sh_rr 1190aa4b4c3SPeter Maydell LSLL_rr 1110101 0010 1 ... 0 .... ... 1 0000 1101 @mve_shl_rr 1200aa4b4c3SPeter Maydell UQRSHLL64_rr 1110101 0010 1 ... 1 .... ... 1 0000 1101 @mve_shl_rr 12104ea4d3cSPeter Maydell } 12204ea4d3cSPeter Maydell 12304ea4d3cSPeter Maydell { 12404ea4d3cSPeter Maydell SQRSHR_rr 1110101 0010 1 .... .... 1111 0010 1101 @mve_sh_rr 12504ea4d3cSPeter Maydell ASRL_rr 1110101 0010 1 ... 0 .... ... 1 0010 1101 @mve_shl_rr 1260aa4b4c3SPeter Maydell SQRSHRL64_rr 1110101 0010 1 ... 1 .... ... 1 0010 1101 @mve_shl_rr 12704ea4d3cSPeter Maydell } 12804ea4d3cSPeter Maydell 1290aa4b4c3SPeter Maydell UQRSHLL48_rr 1110101 0010 1 ... 1 .... ... 1 1000 1101 @mve_shl_rr 1300aa4b4c3SPeter Maydell SQRSHRL48_rr 1110101 0010 1 ... 1 .... ... 1 1010 1101 @mve_shl_rr 131f4ae6c8cSPeter Maydell ] 132f4ae6c8cSPeter Maydell 13325ae32c5SRichard Henderson MOV_rxri 1110101 0010 . 1111 0 ... .... .... .... @s_rxr_shi 13425ae32c5SRichard Henderson ORR_rrri 1110101 0010 . .... 0 ... .... .... .... @s_rrr_shi 1350aa4b4c3SPeter Maydell 1360aa4b4c3SPeter Maydell # v8.1M CSEL and friends 1370aa4b4c3SPeter Maydell CSEL 1110101 0010 1 rn:4 10 op:2 rd:4 fcond:4 rm:4 13825ae32c5SRichard Henderson} 13925ae32c5SRichard Henderson{ 14025ae32c5SRichard Henderson MVN_rxri 1110101 0011 . 1111 0 ... .... .... .... @s_rxr_shi 14125ae32c5SRichard Henderson ORN_rrri 1110101 0011 . .... 0 ... .... .... .... @s_rrr_shi 14225ae32c5SRichard Henderson} 14325ae32c5SRichard Henderson{ 14425ae32c5SRichard Henderson TEQ_xrri 1110101 0100 1 .... 0 ... 1111 .... .... @S_xrr_shi 14525ae32c5SRichard Henderson EOR_rrri 1110101 0100 . .... 0 ... .... .... .... @s_rrr_shi 14625ae32c5SRichard Henderson} 14746497f6aSRichard HendersonPKH 1110101 0110 0 rn:4 0 ... rd:4 .. tb:1 0 rm:4 \ 14846497f6aSRichard Henderson &pkh imm=%imm5_12_6 14925ae32c5SRichard Henderson{ 15025ae32c5SRichard Henderson CMN_xrri 1110101 1000 1 .... 0 ... 1111 .... .... @S_xrr_shi 15125ae32c5SRichard Henderson ADD_rrri 1110101 1000 . .... 0 ... .... .... .... @s_rrr_shi 15225ae32c5SRichard Henderson} 15325ae32c5SRichard HendersonADC_rrri 1110101 1010 . .... 0 ... .... .... .... @s_rrr_shi 15425ae32c5SRichard HendersonSBC_rrri 1110101 1011 . .... 0 ... .... .... .... @s_rrr_shi 15525ae32c5SRichard Henderson{ 15625ae32c5SRichard Henderson CMP_xrri 1110101 1101 1 .... 0 ... 1111 .... .... @S_xrr_shi 15725ae32c5SRichard Henderson SUB_rrri 1110101 1101 . .... 0 ... .... .... .... @s_rrr_shi 15825ae32c5SRichard Henderson} 15925ae32c5SRichard HendersonRSB_rrri 1110101 1110 . .... 0 ... .... .... .... @s_rrr_shi 1605be2c123SRichard Henderson 1615be2c123SRichard Henderson# Data-processing (register-shifted register) 1625be2c123SRichard Henderson 1635be2c123SRichard HendersonMOV_rxrr 1111 1010 0 shty:2 s:1 rm:4 1111 rd:4 0000 rs:4 \ 1645be2c123SRichard Henderson &s_rrr_shr rn=0 165581c6ebdSRichard Henderson 166581c6ebdSRichard Henderson# Data-processing (immediate) 167581c6ebdSRichard Henderson 168581c6ebdSRichard Henderson%t32extrot 26:1 12:3 0:8 !function=t32_expandimm_rot 169581c6ebdSRichard Henderson%t32extimm 26:1 12:3 0:8 !function=t32_expandimm_imm 170581c6ebdSRichard Henderson 171581c6ebdSRichard Henderson@s_rri_rot ....... .... s:1 rn:4 . ... rd:4 ........ \ 172581c6ebdSRichard Henderson &s_rri_rot imm=%t32extimm rot=%t32extrot 173581c6ebdSRichard Henderson@s_rxi_rot ....... .... s:1 .... . ... rd:4 ........ \ 174581c6ebdSRichard Henderson &s_rri_rot imm=%t32extimm rot=%t32extrot rn=0 175581c6ebdSRichard Henderson@S_xri_rot ....... .... . rn:4 . ... .... ........ \ 176581c6ebdSRichard Henderson &s_rri_rot imm=%t32extimm rot=%t32extrot s=1 rd=0 177581c6ebdSRichard Henderson 178581c6ebdSRichard Henderson{ 179581c6ebdSRichard Henderson TST_xri 1111 0.0 0000 1 .... 0 ... 1111 ........ @S_xri_rot 180581c6ebdSRichard Henderson AND_rri 1111 0.0 0000 . .... 0 ... .... ........ @s_rri_rot 181581c6ebdSRichard Henderson} 182581c6ebdSRichard HendersonBIC_rri 1111 0.0 0001 . .... 0 ... .... ........ @s_rri_rot 183581c6ebdSRichard Henderson{ 184581c6ebdSRichard Henderson MOV_rxi 1111 0.0 0010 . 1111 0 ... .... ........ @s_rxi_rot 185581c6ebdSRichard Henderson ORR_rri 1111 0.0 0010 . .... 0 ... .... ........ @s_rri_rot 186581c6ebdSRichard Henderson} 187581c6ebdSRichard Henderson{ 188581c6ebdSRichard Henderson MVN_rxi 1111 0.0 0011 . 1111 0 ... .... ........ @s_rxi_rot 189581c6ebdSRichard Henderson ORN_rri 1111 0.0 0011 . .... 0 ... .... ........ @s_rri_rot 190581c6ebdSRichard Henderson} 191581c6ebdSRichard Henderson{ 192581c6ebdSRichard Henderson TEQ_xri 1111 0.0 0100 1 .... 0 ... 1111 ........ @S_xri_rot 193581c6ebdSRichard Henderson EOR_rri 1111 0.0 0100 . .... 0 ... .... ........ @s_rri_rot 194581c6ebdSRichard Henderson} 195581c6ebdSRichard Henderson{ 196581c6ebdSRichard Henderson CMN_xri 1111 0.0 1000 1 .... 0 ... 1111 ........ @S_xri_rot 197581c6ebdSRichard Henderson ADD_rri 1111 0.0 1000 . .... 0 ... .... ........ @s_rri_rot 198581c6ebdSRichard Henderson} 199581c6ebdSRichard HendersonADC_rri 1111 0.0 1010 . .... 0 ... .... ........ @s_rri_rot 200581c6ebdSRichard HendersonSBC_rri 1111 0.0 1011 . .... 0 ... .... ........ @s_rri_rot 201581c6ebdSRichard Henderson{ 202581c6ebdSRichard Henderson CMP_xri 1111 0.0 1101 1 .... 0 ... 1111 ........ @S_xri_rot 203581c6ebdSRichard Henderson SUB_rri 1111 0.0 1101 . .... 0 ... .... ........ @s_rri_rot 204581c6ebdSRichard Henderson} 205581c6ebdSRichard HendersonRSB_rri 1111 0.0 1110 . .... 0 ... .... ........ @s_rri_rot 206bd92fe35SRichard Henderson 207145952e8SRichard Henderson# Data processing (plain binary immediate) 208145952e8SRichard Henderson 209145952e8SRichard Henderson%imm12_26_12_0 26:1 12:3 0:8 210145952e8SRichard Henderson%neg12_26_12_0 26:1 12:3 0:8 !function=negate 211145952e8SRichard Henderson@s0_rri_12 .... ... .... . rn:4 . ... rd:4 ........ \ 212145952e8SRichard Henderson &s_rri_rot imm=%imm12_26_12_0 rot=0 s=0 213145952e8SRichard Henderson 214145952e8SRichard Henderson{ 215145952e8SRichard Henderson ADR 1111 0.1 0000 0 1111 0 ... rd:4 ........ \ 216145952e8SRichard Henderson &ri imm=%imm12_26_12_0 217145952e8SRichard Henderson ADD_rri 1111 0.1 0000 0 .... 0 ... .... ........ @s0_rri_12 218145952e8SRichard Henderson} 219145952e8SRichard Henderson{ 220145952e8SRichard Henderson ADR 1111 0.1 0101 0 1111 0 ... rd:4 ........ \ 221145952e8SRichard Henderson &ri imm=%neg12_26_12_0 222145952e8SRichard Henderson SUB_rri 1111 0.1 0101 0 .... 0 ... .... ........ @s0_rri_12 223145952e8SRichard Henderson} 224145952e8SRichard Henderson 2258f445127SRichard Henderson# Move Wide 2268f445127SRichard Henderson 2278f445127SRichard Henderson%imm16_26_16_12_0 16:4 26:1 12:3 0:8 2288f445127SRichard Henderson@mov16 .... .... .... .... .... rd:4 .... .... \ 2298f445127SRichard Henderson &ri imm=%imm16_26_16_12_0 2308f445127SRichard Henderson 2318f445127SRichard HendersonMOVW 1111 0.10 0100 .... 0 ... .... ........ @mov16 2328f445127SRichard HendersonMOVT 1111 0.10 1100 .... 0 ... .... ........ @mov16 2338f445127SRichard Henderson 23486d21e4bSRichard Henderson# Saturate, bitfield 23586d21e4bSRichard Henderson 23646497f6aSRichard Henderson@sat .... .... .. sh:1 . rn:4 . ... rd:4 .. . satimm:5 \ 23746497f6aSRichard Henderson &sat imm=%imm5_12_6 23846497f6aSRichard Henderson@sat16 .... .... .. . . rn:4 . ... rd:4 .. . satimm:5 \ 23946497f6aSRichard Henderson &sat sh=0 imm=0 24046497f6aSRichard Henderson 24146497f6aSRichard Henderson{ 24246497f6aSRichard Henderson SSAT16 1111 0011 001 0 .... 0 000 .... 00 0 ..... @sat16 24346497f6aSRichard Henderson SSAT 1111 0011 00. 0 .... 0 ... .... .. 0 ..... @sat 24446497f6aSRichard Henderson} 24546497f6aSRichard Henderson{ 24646497f6aSRichard Henderson USAT16 1111 0011 101 0 .... 0 000 .... 00 0 ..... @sat16 24746497f6aSRichard Henderson USAT 1111 0011 10. 0 .... 0 ... .... .. 0 ..... @sat 24846497f6aSRichard Henderson} 24946497f6aSRichard Henderson 25086d21e4bSRichard Henderson@bfx .... .... ... . rn:4 . ... rd:4 .. . widthm1:5 \ 25186d21e4bSRichard Henderson &bfx lsb=%imm5_12_6 25286d21e4bSRichard Henderson@bfi .... .... ... . rn:4 . ... rd:4 .. . msb:5 \ 25386d21e4bSRichard Henderson &bfi lsb=%imm5_12_6 25486d21e4bSRichard Henderson 25586d21e4bSRichard HendersonSBFX 1111 0011 010 0 .... 0 ... .... ..0..... @bfx 25686d21e4bSRichard HendersonUBFX 1111 0011 110 0 .... 0 ... .... ..0..... @bfx 25786d21e4bSRichard Henderson 25886d21e4bSRichard Henderson# bfc is bfi w/ rn=15 25986d21e4bSRichard HendersonBFCI 1111 0011 011 0 .... 0 ... .... ..0..... @bfi 26086d21e4bSRichard Henderson 261bd92fe35SRichard Henderson# Multiply and multiply accumulate 262bd92fe35SRichard Henderson 263bd92fe35SRichard Henderson@s0_rnadm .... .... .... rn:4 ra:4 rd:4 .... rm:4 &s_rrrr s=0 264bd92fe35SRichard Henderson@s0_rn0dm .... .... .... rn:4 .... rd:4 .... rm:4 &s_rrrr ra=0 s=0 265bd92fe35SRichard Henderson@rnadm .... .... .... rn:4 ra:4 rd:4 .... rm:4 &rrrr 26626c6923dSRichard Henderson@rn0dm .... .... .... rn:4 .... rd:4 .... rm:4 &rrrr ra=0 2676d0730a8SRichard Henderson@rndm .... .... .... rn:4 .... rd:4 .... rm:4 &rrr 2684c97f5b2SRichard Henderson@rdm .... .... .... .... .... rd:4 .... rm:4 &rr 269bd92fe35SRichard Henderson 270bd92fe35SRichard Henderson{ 271bd92fe35SRichard Henderson MUL 1111 1011 0000 .... 1111 .... 0000 .... @s0_rn0dm 272bd92fe35SRichard Henderson MLA 1111 1011 0000 .... .... .... 0000 .... @s0_rnadm 273bd92fe35SRichard Henderson} 274bd92fe35SRichard HendersonMLS 1111 1011 0000 .... .... .... 0001 .... @rnadm 275bd92fe35SRichard HendersonSMULL 1111 1011 1000 .... .... .... 0000 .... @s0_rnadm 276bd92fe35SRichard HendersonUMULL 1111 1011 1010 .... .... .... 0000 .... @s0_rnadm 277bd92fe35SRichard HendersonSMLAL 1111 1011 1100 .... .... .... 0000 .... @s0_rnadm 278bd92fe35SRichard HendersonUMLAL 1111 1011 1110 .... .... .... 0000 .... @s0_rnadm 279bd92fe35SRichard HendersonUMAAL 1111 1011 1110 .... .... .... 0110 .... @rnadm 28026c6923dSRichard Henderson{ 28126c6923dSRichard Henderson SMULWB 1111 1011 0011 .... 1111 .... 0000 .... @rn0dm 28226c6923dSRichard Henderson SMLAWB 1111 1011 0011 .... .... .... 0000 .... @rnadm 28326c6923dSRichard Henderson} 28426c6923dSRichard Henderson{ 28526c6923dSRichard Henderson SMULWT 1111 1011 0011 .... 1111 .... 0001 .... @rn0dm 28626c6923dSRichard Henderson SMLAWT 1111 1011 0011 .... .... .... 0001 .... @rnadm 28726c6923dSRichard Henderson} 28826c6923dSRichard Henderson{ 28926c6923dSRichard Henderson SMULBB 1111 1011 0001 .... 1111 .... 0000 .... @rn0dm 29026c6923dSRichard Henderson SMLABB 1111 1011 0001 .... .... .... 0000 .... @rnadm 29126c6923dSRichard Henderson} 29226c6923dSRichard Henderson{ 29326c6923dSRichard Henderson SMULBT 1111 1011 0001 .... 1111 .... 0001 .... @rn0dm 29426c6923dSRichard Henderson SMLABT 1111 1011 0001 .... .... .... 0001 .... @rnadm 29526c6923dSRichard Henderson} 29626c6923dSRichard Henderson{ 29726c6923dSRichard Henderson SMULTB 1111 1011 0001 .... 1111 .... 0010 .... @rn0dm 29826c6923dSRichard Henderson SMLATB 1111 1011 0001 .... .... .... 0010 .... @rnadm 29926c6923dSRichard Henderson} 30026c6923dSRichard Henderson{ 30126c6923dSRichard Henderson SMULTT 1111 1011 0001 .... 1111 .... 0011 .... @rn0dm 30226c6923dSRichard Henderson SMLATT 1111 1011 0001 .... .... .... 0011 .... @rnadm 30326c6923dSRichard Henderson} 30426c6923dSRichard HendersonSMLALBB 1111 1011 1100 .... .... .... 1000 .... @rnadm 30526c6923dSRichard HendersonSMLALBT 1111 1011 1100 .... .... .... 1001 .... @rnadm 30626c6923dSRichard HendersonSMLALTB 1111 1011 1100 .... .... .... 1010 .... @rnadm 30726c6923dSRichard HendersonSMLALTT 1111 1011 1100 .... .... .... 1011 .... @rnadm 3086d0730a8SRichard Henderson 30986d21e4bSRichard Henderson# usad8 is usada8 w/ ra=15 31086d21e4bSRichard HendersonUSADA8 1111 1011 0111 .... .... .... 0000 .... @rnadm 31186d21e4bSRichard Henderson 3122c7c4e09SRichard HendersonSMLAD 1111 1011 0010 .... .... .... 0000 .... @rnadm 3132c7c4e09SRichard HendersonSMLADX 1111 1011 0010 .... .... .... 0001 .... @rnadm 3142c7c4e09SRichard HendersonSMLSD 1111 1011 0100 .... .... .... 0000 .... @rnadm 3152c7c4e09SRichard HendersonSMLSDX 1111 1011 0100 .... .... .... 0001 .... @rnadm 3162c7c4e09SRichard Henderson 3172c7c4e09SRichard HendersonSMLALD 1111 1011 1100 .... .... .... 1100 .... @rnadm 3182c7c4e09SRichard HendersonSMLALDX 1111 1011 1100 .... .... .... 1101 .... @rnadm 3192c7c4e09SRichard HendersonSMLSLD 1111 1011 1101 .... .... .... 1100 .... @rnadm 3202c7c4e09SRichard HendersonSMLSLDX 1111 1011 1101 .... .... .... 1101 .... @rnadm 3212c7c4e09SRichard Henderson 3222c7c4e09SRichard HendersonSMMLA 1111 1011 0101 .... .... .... 0000 .... @rnadm 3232c7c4e09SRichard HendersonSMMLAR 1111 1011 0101 .... .... .... 0001 .... @rnadm 3242c7c4e09SRichard HendersonSMMLS 1111 1011 0110 .... .... .... 0000 .... @rnadm 3252c7c4e09SRichard HendersonSMMLSR 1111 1011 0110 .... .... .... 0001 .... @rnadm 3262c7c4e09SRichard Henderson 3272c7c4e09SRichard HendersonSDIV 1111 1011 1001 .... 1111 .... 1111 .... @rndm 3282c7c4e09SRichard HendersonUDIV 1111 1011 1011 .... 1111 .... 1111 .... @rndm 3292c7c4e09SRichard Henderson 3306d0730a8SRichard Henderson# Data-processing (two source registers) 3316d0730a8SRichard Henderson 3326d0730a8SRichard HendersonQADD 1111 1010 1000 .... 1111 .... 1000 .... @rndm 3336d0730a8SRichard HendersonQSUB 1111 1010 1000 .... 1111 .... 1010 .... @rndm 3346d0730a8SRichard HendersonQDADD 1111 1010 1000 .... 1111 .... 1001 .... @rndm 3356d0730a8SRichard HendersonQDSUB 1111 1010 1000 .... 1111 .... 1011 .... @rndm 33663130596SRichard Henderson 3376c35d53fSRichard HendersonCRC32B 1111 1010 1100 .... 1111 .... 1000 .... @rndm 3386c35d53fSRichard HendersonCRC32H 1111 1010 1100 .... 1111 .... 1001 .... @rndm 3396c35d53fSRichard HendersonCRC32W 1111 1010 1100 .... 1111 .... 1010 .... @rndm 3406c35d53fSRichard HendersonCRC32CB 1111 1010 1101 .... 1111 .... 1000 .... @rndm 3416c35d53fSRichard HendersonCRC32CH 1111 1010 1101 .... 1111 .... 1001 .... @rndm 3426c35d53fSRichard HendersonCRC32CW 1111 1010 1101 .... 1111 .... 1010 .... @rndm 3436c35d53fSRichard Henderson 34446497f6aSRichard HendersonSEL 1111 1010 1010 .... 1111 .... 1000 .... @rndm 34546497f6aSRichard Henderson 3464c97f5b2SRichard Henderson# Note rn != rm is CONSTRAINED UNPREDICTABLE; we choose to ignore rn. 34746497f6aSRichard HendersonREV 1111 1010 1001 ---- 1111 .... 1000 .... @rdm 34846497f6aSRichard HendersonREV16 1111 1010 1001 ---- 1111 .... 1001 .... @rdm 34946497f6aSRichard HendersonRBIT 1111 1010 1001 ---- 1111 .... 1010 .... @rdm 35046497f6aSRichard HendersonREVSH 1111 1010 1001 ---- 1111 .... 1011 .... @rdm 3514c97f5b2SRichard HendersonCLZ 1111 1010 1011 ---- 1111 .... 1000 .... @rdm 3524c97f5b2SRichard Henderson 35363130596SRichard Henderson# Branches and miscellaneous control 35463130596SRichard Henderson 355d0b26644SRichard Henderson%msr_sysm 4:1 8:4 356d0b26644SRichard Henderson%mrs_sysm 4:1 16:4 3572cde9ea5SRichard Henderson%imm16_16_0 16:4 0:12 358360144f3SRichard Henderson%imm21 26:s1 11:1 13:1 16:6 0:11 !function=times_2 359360144f3SRichard Henderson&ci cond imm 360d0b26644SRichard Henderson 361d0b26644SRichard Henderson{ 362360144f3SRichard Henderson # Group insn[25:23] = 111, which is cond=111x for the branch below, 363360144f3SRichard Henderson # or unconditional, which would be illegal for the branch. 36445f11876SPeter Maydell [ 36545f11876SPeter Maydell # Hints, and CPS 36663130596SRichard Henderson { 36713954587SRichard Henderson [ 36863130596SRichard Henderson YIELD 1111 0011 1010 1111 1000 0000 0000 0001 36963130596SRichard Henderson WFE 1111 0011 1010 1111 1000 0000 0000 0010 37063130596SRichard Henderson WFI 1111 0011 1010 1111 1000 0000 0000 0011 37163130596SRichard Henderson 37263130596SRichard Henderson # TODO: Implement SEV, SEVL; may help SMP performance. 37363130596SRichard Henderson # SEV 1111 0011 1010 1111 1000 0000 0000 0100 37463130596SRichard Henderson # SEVL 1111 0011 1010 1111 1000 0000 0000 0101 37563130596SRichard Henderson 37613954587SRichard Henderson ESB 1111 0011 1010 1111 1000 0000 0001 0000 37713954587SRichard Henderson ] 37846f4976fSPeter Maydell 37963130596SRichard Henderson # The canonical nop ends in 0000 0000, but the whole rest 38063130596SRichard Henderson # of the space is "reserved hint, behaves as nop". 38163130596SRichard Henderson NOP 1111 0011 1010 1111 1000 0000 ---- ---- 382519b8471SRichard Henderson 38352f83b9cSRichard Henderson # If imod == '00' && M == '0' then SEE "Hint instructions", above. 38452f83b9cSRichard Henderson CPS 1111 0011 1010 1111 1000 0 imod:2 M:1 A:1 I:1 F:1 mode:5 \ 38552f83b9cSRichard Henderson &cps 38645f11876SPeter Maydell } 38752f83b9cSRichard Henderson 388519b8471SRichard Henderson # Miscellaneous control 389519b8471SRichard Henderson CLREX 1111 0011 1011 1111 1000 1111 0010 1111 390519b8471SRichard Henderson DSB 1111 0011 1011 1111 1000 1111 0100 ---- 391519b8471SRichard Henderson DMB 1111 0011 1011 1111 1000 1111 0101 ---- 392519b8471SRichard Henderson ISB 1111 0011 1011 1111 1000 1111 0110 ---- 393519b8471SRichard Henderson SB 1111 0011 1011 1111 1000 1111 0111 0000 394519b8471SRichard Henderson 395d0b26644SRichard Henderson # Note that the v7m insn overlaps both the normal and banked insn. 396d0b26644SRichard Henderson { 397d0b26644SRichard Henderson MRS_bank 1111 0011 111 r:1 .... 1000 rd:4 001. 0000 \ 398d0b26644SRichard Henderson &mrs_bank sysm=%mrs_sysm 399d0b26644SRichard Henderson MRS_reg 1111 0011 111 r:1 1111 1000 rd:4 0000 0000 &mrs_reg 400d0b26644SRichard Henderson MRS_v7m 1111 0011 111 0 1111 1000 rd:4 sysm:8 401d0b26644SRichard Henderson } 402d0b26644SRichard Henderson { 403d0b26644SRichard Henderson MSR_bank 1111 0011 100 r:1 rn:4 1000 .... 001. 0000 \ 404d0b26644SRichard Henderson &msr_bank sysm=%msr_sysm 405d0b26644SRichard Henderson MSR_reg 1111 0011 100 r:1 rn:4 1000 mask:4 0000 0000 &msr_reg 406d0b26644SRichard Henderson MSR_v7m 1111 0011 100 0 rn:4 1000 mask:2 00 sysm:8 407d0b26644SRichard Henderson } 4084ed95abdSRichard Henderson BXJ 1111 0011 1100 rm:4 1000 1111 0000 0000 &r 409ef11bc3cSRichard Henderson { 410ef11bc3cSRichard Henderson # At v6T2, this is the T5 encoding of SUBS PC, LR, #IMM, and works as for 411ef11bc3cSRichard Henderson # every other encoding of SUBS. With v7VE, IMM=0 is redefined as ERET. 412ef11bc3cSRichard Henderson # The distinction between the two only matters for Hyp mode. 413ef11bc3cSRichard Henderson ERET 1111 0011 1101 1110 1000 1111 0000 0000 414ef11bc3cSRichard Henderson SUB_rri 1111 0011 1101 1110 1000 1111 imm:8 \ 415ef11bc3cSRichard Henderson &s_rri_rot rot=0 s=1 rd=15 rn=14 416ef11bc3cSRichard Henderson } 4172cde9ea5SRichard Henderson SMC 1111 0111 1111 imm:4 1000 0000 0000 0000 &i 4182cde9ea5SRichard Henderson HVC 1111 0111 1110 .... 1000 .... .... .... \ 4192cde9ea5SRichard Henderson &i imm=%imm16_16_0 42086d21e4bSRichard Henderson UDF 1111 0111 1111 ---- 1010 ---- ---- ---- 42145f11876SPeter Maydell ] 422360144f3SRichard Henderson B_cond_thumb 1111 0. cond:4 ...... 10.0 ............ &ci imm=%imm21 423360144f3SRichard Henderson} 4245e291fe1SRichard Henderson 4255e291fe1SRichard Henderson# Load/store (register, immediate, literal) 4265e291fe1SRichard Henderson 4275e291fe1SRichard Henderson@ldst_rr .... .... .... rn:4 rt:4 ...... shimm:2 rm:4 \ 4285e291fe1SRichard Henderson &ldst_rr p=1 w=0 u=1 shtype=0 4295e291fe1SRichard Henderson@ldst_ri_idx .... .... .... rn:4 rt:4 . p:1 u:1 . imm:8 \ 4305e291fe1SRichard Henderson &ldst_ri w=1 4315e291fe1SRichard Henderson@ldst_ri_neg .... .... .... rn:4 rt:4 .... imm:8 \ 4325e291fe1SRichard Henderson &ldst_ri p=1 w=0 u=0 4335e291fe1SRichard Henderson@ldst_ri_unp .... .... .... rn:4 rt:4 .... imm:8 \ 4345e291fe1SRichard Henderson &ldst_ri p=1 w=0 u=1 4355e291fe1SRichard Henderson@ldst_ri_pos .... .... .... rn:4 rt:4 imm:12 \ 4365e291fe1SRichard Henderson &ldst_ri p=1 w=0 u=1 4375e291fe1SRichard Henderson@ldst_ri_lit .... .... u:1 ... .... rt:4 imm:12 \ 4385e291fe1SRichard Henderson &ldst_ri p=1 w=0 rn=15 4395e291fe1SRichard Henderson 4405e291fe1SRichard HendersonSTRB_rr 1111 1000 0000 .... .... 000000 .. .... @ldst_rr 4415e291fe1SRichard HendersonSTRB_ri 1111 1000 0000 .... .... 1..1 ........ @ldst_ri_idx 4425e291fe1SRichard HendersonSTRB_ri 1111 1000 0000 .... .... 1100 ........ @ldst_ri_neg 4435e291fe1SRichard HendersonSTRBT_ri 1111 1000 0000 .... .... 1110 ........ @ldst_ri_unp 4445e291fe1SRichard HendersonSTRB_ri 1111 1000 1000 .... .... ............ @ldst_ri_pos 4455e291fe1SRichard Henderson 4465e291fe1SRichard HendersonSTRH_rr 1111 1000 0010 .... .... 000000 .. .... @ldst_rr 4475e291fe1SRichard HendersonSTRH_ri 1111 1000 0010 .... .... 1..1 ........ @ldst_ri_idx 4485e291fe1SRichard HendersonSTRH_ri 1111 1000 0010 .... .... 1100 ........ @ldst_ri_neg 4495e291fe1SRichard HendersonSTRHT_ri 1111 1000 0010 .... .... 1110 ........ @ldst_ri_unp 4505e291fe1SRichard HendersonSTRH_ri 1111 1000 1010 .... .... ............ @ldst_ri_pos 4515e291fe1SRichard Henderson 4525e291fe1SRichard HendersonSTR_rr 1111 1000 0100 .... .... 000000 .. .... @ldst_rr 4535e291fe1SRichard HendersonSTR_ri 1111 1000 0100 .... .... 1..1 ........ @ldst_ri_idx 4545e291fe1SRichard HendersonSTR_ri 1111 1000 0100 .... .... 1100 ........ @ldst_ri_neg 4555e291fe1SRichard HendersonSTRT_ri 1111 1000 0100 .... .... 1110 ........ @ldst_ri_unp 4565e291fe1SRichard HendersonSTR_ri 1111 1000 1100 .... .... ............ @ldst_ri_pos 4575e291fe1SRichard Henderson 4585e291fe1SRichard Henderson# Note that Load, unsigned (literal) overlaps all other load encodings. 4595e291fe1SRichard Henderson{ 4605e291fe1SRichard Henderson { 461*db36e145SRichard Henderson PLD 1111 1000 -001 1111 1111 ------------ # (literal) 4625e291fe1SRichard Henderson LDRB_ri 1111 1000 .001 1111 .... ............ @ldst_ri_lit 4635e291fe1SRichard Henderson } 4645e291fe1SRichard Henderson { 465*db36e145SRichard Henderson PLD 1111 1000 1001 ---- 1111 ------------ # (immediate T1) 4665e291fe1SRichard Henderson LDRB_ri 1111 1000 1001 .... .... ............ @ldst_ri_pos 4675e291fe1SRichard Henderson } 4685e291fe1SRichard Henderson LDRB_ri 1111 1000 0001 .... .... 1..1 ........ @ldst_ri_idx 4695e291fe1SRichard Henderson { 470*db36e145SRichard Henderson PLD 1111 1000 0001 ---- 1111 1100 -------- # (immediate T2) 4715e291fe1SRichard Henderson LDRB_ri 1111 1000 0001 .... .... 1100 ........ @ldst_ri_neg 4725e291fe1SRichard Henderson } 4735e291fe1SRichard Henderson LDRBT_ri 1111 1000 0001 .... .... 1110 ........ @ldst_ri_unp 4745e291fe1SRichard Henderson { 475*db36e145SRichard Henderson PLD 1111 1000 0001 ---- 1111 000000 -- ---- # (register) 4765e291fe1SRichard Henderson LDRB_rr 1111 1000 0001 .... .... 000000 .. .... @ldst_rr 4775e291fe1SRichard Henderson } 4785e291fe1SRichard Henderson} 4795e291fe1SRichard Henderson{ 4805e291fe1SRichard Henderson { 481*db36e145SRichard Henderson PLD 1111 1000 -011 1111 1111 ------------ # (literal) 4825e291fe1SRichard Henderson LDRH_ri 1111 1000 .011 1111 .... ............ @ldst_ri_lit 4835e291fe1SRichard Henderson } 4845e291fe1SRichard Henderson { 485*db36e145SRichard Henderson PLDW 1111 1000 1011 ---- 1111 ------------ # (immediate T1) 4865e291fe1SRichard Henderson LDRH_ri 1111 1000 1011 .... .... ............ @ldst_ri_pos 4875e291fe1SRichard Henderson } 4885e291fe1SRichard Henderson LDRH_ri 1111 1000 0011 .... .... 1..1 ........ @ldst_ri_idx 4895e291fe1SRichard Henderson { 490*db36e145SRichard Henderson PLDW 1111 1000 0011 ---- 1111 1100 -------- # (immediate T2) 4915e291fe1SRichard Henderson LDRH_ri 1111 1000 0011 .... .... 1100 ........ @ldst_ri_neg 4925e291fe1SRichard Henderson } 4935e291fe1SRichard Henderson LDRHT_ri 1111 1000 0011 .... .... 1110 ........ @ldst_ri_unp 4945e291fe1SRichard Henderson { 495*db36e145SRichard Henderson PLDW 1111 1000 0011 ---- 1111 000000 -- ---- # (register) 4965e291fe1SRichard Henderson LDRH_rr 1111 1000 0011 .... .... 000000 .. .... @ldst_rr 4975e291fe1SRichard Henderson } 4985e291fe1SRichard Henderson} 4995e291fe1SRichard Henderson{ 5005e291fe1SRichard Henderson LDR_ri 1111 1000 .101 1111 .... ............ @ldst_ri_lit 5015e291fe1SRichard Henderson LDR_ri 1111 1000 1101 .... .... ............ @ldst_ri_pos 5025e291fe1SRichard Henderson LDR_ri 1111 1000 0101 .... .... 1..1 ........ @ldst_ri_idx 5035e291fe1SRichard Henderson LDR_ri 1111 1000 0101 .... .... 1100 ........ @ldst_ri_neg 5045e291fe1SRichard Henderson LDRT_ri 1111 1000 0101 .... .... 1110 ........ @ldst_ri_unp 5055e291fe1SRichard Henderson LDR_rr 1111 1000 0101 .... .... 000000 .. .... @ldst_rr 5065e291fe1SRichard Henderson} 5075e291fe1SRichard Henderson{ 5085e291fe1SRichard Henderson { 509*db36e145SRichard Henderson PLI 1111 1001 -001 1111 1111 ------------ # (literal T3) 5105e291fe1SRichard Henderson LDRSB_ri 1111 1001 .001 1111 .... ............ @ldst_ri_lit 5115e291fe1SRichard Henderson } 5125e291fe1SRichard Henderson { 513*db36e145SRichard Henderson PLI 1111 1001 1001 ---- 1111 ------------ # (immediate T1) 5145e291fe1SRichard Henderson LDRSB_ri 1111 1001 1001 .... .... ............ @ldst_ri_pos 5155e291fe1SRichard Henderson } 5165e291fe1SRichard Henderson LDRSB_ri 1111 1001 0001 .... .... 1..1 ........ @ldst_ri_idx 5175e291fe1SRichard Henderson { 518*db36e145SRichard Henderson PLI 1111 1001 0001 ---- 1111 1100 -------- # (immediate T2) 5195e291fe1SRichard Henderson LDRSB_ri 1111 1001 0001 .... .... 1100 ........ @ldst_ri_neg 5205e291fe1SRichard Henderson } 5215e291fe1SRichard Henderson LDRSBT_ri 1111 1001 0001 .... .... 1110 ........ @ldst_ri_unp 5225e291fe1SRichard Henderson { 523*db36e145SRichard Henderson PLI 1111 1001 0001 ---- 1111 000000 -- ---- # (register) 5245e291fe1SRichard Henderson LDRSB_rr 1111 1001 0001 .... .... 000000 .. .... @ldst_rr 5255e291fe1SRichard Henderson } 5265e291fe1SRichard Henderson} 5275e291fe1SRichard Henderson# NOPs here are unallocated memory hints, treated as NOP. 5285e291fe1SRichard Henderson{ 5295e291fe1SRichard Henderson { 5305e291fe1SRichard Henderson NOP 1111 1001 -011 1111 1111 ------------ 5315e291fe1SRichard Henderson LDRSH_ri 1111 1001 .011 1111 .... ............ @ldst_ri_lit 5325e291fe1SRichard Henderson } 5335e291fe1SRichard Henderson { 5345e291fe1SRichard Henderson NOP 1111 1001 1011 ---- 1111 ------------ 5355e291fe1SRichard Henderson LDRSH_ri 1111 1001 1011 .... .... ............ @ldst_ri_pos 5365e291fe1SRichard Henderson } 5375e291fe1SRichard Henderson LDRSH_ri 1111 1001 0011 .... .... 1..1 ........ @ldst_ri_idx 5385e291fe1SRichard Henderson { 5395e291fe1SRichard Henderson NOP 1111 1001 0011 ---- 1111 1100 -------- 5405e291fe1SRichard Henderson LDRSH_ri 1111 1001 0011 .... .... 1100 ........ @ldst_ri_neg 5415e291fe1SRichard Henderson } 5425e291fe1SRichard Henderson LDRSHT_ri 1111 1001 0011 .... .... 1110 ........ @ldst_ri_unp 5435e291fe1SRichard Henderson { 5445e291fe1SRichard Henderson NOP 1111 1001 0011 ---- 1111 000000 -- ---- 5455e291fe1SRichard Henderson LDRSH_rr 1111 1001 0011 .... .... 000000 .. .... @ldst_rr 5465e291fe1SRichard Henderson } 5475e291fe1SRichard Henderson} 5485e291fe1SRichard Henderson 5495e291fe1SRichard Henderson%imm8x4 0:8 !function=times_4 5505e291fe1SRichard Henderson&ldst_ri2 p w u rn rt rt2 imm 5515e291fe1SRichard Henderson@ldstd_ri8 .... .... u:1 ... rn:4 rt:4 rt2:4 ........ \ 5525e291fe1SRichard Henderson &ldst_ri2 imm=%imm8x4 5535e291fe1SRichard Henderson 5545e291fe1SRichard HendersonSTRD_ri_t32 1110 1000 .110 .... .... .... ........ @ldstd_ri8 w=1 p=0 5555e291fe1SRichard HendersonLDRD_ri_t32 1110 1000 .111 .... .... .... ........ @ldstd_ri8 w=1 p=0 5565e291fe1SRichard Henderson 5575e291fe1SRichard HendersonSTRD_ri_t32 1110 1001 .100 .... .... .... ........ @ldstd_ri8 w=0 p=1 5585e291fe1SRichard HendersonLDRD_ri_t32 1110 1001 .101 .... .... .... ........ @ldstd_ri8 w=0 p=1 5595e291fe1SRichard Henderson 5605e291fe1SRichard HendersonSTRD_ri_t32 1110 1001 .110 .... .... .... ........ @ldstd_ri8 w=1 p=1 56135d240acSRichard Henderson{ 56235d240acSRichard Henderson SG 1110 1001 0111 1111 1110 1001 01111111 5635e291fe1SRichard Henderson LDRD_ri_t32 1110 1001 .111 .... .... .... ........ @ldstd_ri8 w=1 p=1 56435d240acSRichard Henderson} 5651efdd407SRichard Henderson 566808092bbSRichard Henderson# Load/Store Exclusive, Load-Acquire/Store-Release, and Table Branch 5671efdd407SRichard Henderson 5681efdd407SRichard Henderson@strex_i .... .... .... rn:4 rt:4 rd:4 .... .... \ 5691efdd407SRichard Henderson &strex rt2=15 imm=%imm8x4 5701efdd407SRichard Henderson@strex_0 .... .... .... rn:4 rt:4 .... .... rd:4 \ 5711efdd407SRichard Henderson &strex rt2=15 imm=0 5721efdd407SRichard Henderson@strex_d .... .... .... rn:4 rt:4 rt2:4 .... rd:4 \ 5731efdd407SRichard Henderson &strex imm=0 5741efdd407SRichard Henderson 5751efdd407SRichard Henderson@ldrex_i .... .... .... rn:4 rt:4 .... .... .... \ 5761efdd407SRichard Henderson &ldrex rt2=15 imm=%imm8x4 5771efdd407SRichard Henderson@ldrex_0 .... .... .... rn:4 rt:4 .... .... .... \ 5781efdd407SRichard Henderson &ldrex rt2=15 imm=0 5791efdd407SRichard Henderson@ldrex_d .... .... .... rn:4 rt:4 rt2:4 .... .... \ 5801efdd407SRichard Henderson &ldrex imm=0 5811efdd407SRichard Henderson 582d449f174SRichard Henderson{ 583d449f174SRichard Henderson TT 1110 1000 0100 rn:4 1111 rd:4 A:1 T:1 000000 5841efdd407SRichard Henderson STREX 1110 1000 0100 .... .... .... .... .... @strex_i 585d449f174SRichard Henderson} 5861efdd407SRichard HendersonSTREXB 1110 1000 1100 .... .... 1111 0100 .... @strex_0 5871efdd407SRichard HendersonSTREXH 1110 1000 1100 .... .... 1111 0101 .... @strex_0 5881efdd407SRichard HendersonSTREXD_t32 1110 1000 1100 .... .... .... 0111 .... @strex_d 5891efdd407SRichard Henderson 5901efdd407SRichard HendersonSTLEX 1110 1000 1100 .... .... 1111 1110 .... @strex_0 5911efdd407SRichard HendersonSTLEXB 1110 1000 1100 .... .... 1111 1100 .... @strex_0 5921efdd407SRichard HendersonSTLEXH 1110 1000 1100 .... .... 1111 1101 .... @strex_0 5931efdd407SRichard HendersonSTLEXD_t32 1110 1000 1100 .... .... .... 1111 .... @strex_d 5941efdd407SRichard Henderson 5951efdd407SRichard HendersonSTL 1110 1000 1100 .... .... 1111 1010 1111 @ldrex_0 5961efdd407SRichard HendersonSTLB 1110 1000 1100 .... .... 1111 1000 1111 @ldrex_0 5971efdd407SRichard HendersonSTLH 1110 1000 1100 .... .... 1111 1001 1111 @ldrex_0 5981efdd407SRichard Henderson 5991efdd407SRichard HendersonLDREX 1110 1000 0101 .... .... 1111 .... .... @ldrex_i 6001efdd407SRichard HendersonLDREXB 1110 1000 1101 .... .... 1111 0100 1111 @ldrex_0 6011efdd407SRichard HendersonLDREXH 1110 1000 1101 .... .... 1111 0101 1111 @ldrex_0 6021efdd407SRichard HendersonLDREXD_t32 1110 1000 1101 .... .... .... 0111 1111 @ldrex_d 6031efdd407SRichard Henderson 6041efdd407SRichard HendersonLDAEX 1110 1000 1101 .... .... 1111 1110 1111 @ldrex_0 6051efdd407SRichard HendersonLDAEXB 1110 1000 1101 .... .... 1111 1100 1111 @ldrex_0 6061efdd407SRichard HendersonLDAEXH 1110 1000 1101 .... .... 1111 1101 1111 @ldrex_0 6071efdd407SRichard HendersonLDAEXD_t32 1110 1000 1101 .... .... .... 1111 1111 @ldrex_d 6081efdd407SRichard Henderson 6091efdd407SRichard HendersonLDA 1110 1000 1101 .... .... 1111 1010 1111 @ldrex_0 6101efdd407SRichard HendersonLDAB 1110 1000 1101 .... .... 1111 1000 1111 @ldrex_0 6111efdd407SRichard HendersonLDAH 1110 1000 1101 .... .... 1111 1001 1111 @ldrex_0 612adf1a566SRichard Henderson 613808092bbSRichard Henderson&tbranch rn rm 614808092bbSRichard Henderson@tbranch .... .... .... rn:4 .... .... .... rm:4 &tbranch 615808092bbSRichard Henderson 616808092bbSRichard HendersonTBB 1110 1000 1101 .... 1111 0000 0000 .... @tbranch 617808092bbSRichard HendersonTBH 1110 1000 1101 .... 1111 0000 0001 .... @tbranch 618808092bbSRichard Henderson 619adf1a566SRichard Henderson# Parallel addition and subtraction 620adf1a566SRichard Henderson 621adf1a566SRichard HendersonSADD8 1111 1010 1000 .... 1111 .... 0000 .... @rndm 622adf1a566SRichard HendersonQADD8 1111 1010 1000 .... 1111 .... 0001 .... @rndm 623adf1a566SRichard HendersonSHADD8 1111 1010 1000 .... 1111 .... 0010 .... @rndm 624adf1a566SRichard HendersonUADD8 1111 1010 1000 .... 1111 .... 0100 .... @rndm 625adf1a566SRichard HendersonUQADD8 1111 1010 1000 .... 1111 .... 0101 .... @rndm 626adf1a566SRichard HendersonUHADD8 1111 1010 1000 .... 1111 .... 0110 .... @rndm 627adf1a566SRichard Henderson 628adf1a566SRichard HendersonSADD16 1111 1010 1001 .... 1111 .... 0000 .... @rndm 629adf1a566SRichard HendersonQADD16 1111 1010 1001 .... 1111 .... 0001 .... @rndm 630adf1a566SRichard HendersonSHADD16 1111 1010 1001 .... 1111 .... 0010 .... @rndm 631adf1a566SRichard HendersonUADD16 1111 1010 1001 .... 1111 .... 0100 .... @rndm 632adf1a566SRichard HendersonUQADD16 1111 1010 1001 .... 1111 .... 0101 .... @rndm 633adf1a566SRichard HendersonUHADD16 1111 1010 1001 .... 1111 .... 0110 .... @rndm 634adf1a566SRichard Henderson 635adf1a566SRichard HendersonSASX 1111 1010 1010 .... 1111 .... 0000 .... @rndm 636adf1a566SRichard HendersonQASX 1111 1010 1010 .... 1111 .... 0001 .... @rndm 637adf1a566SRichard HendersonSHASX 1111 1010 1010 .... 1111 .... 0010 .... @rndm 638adf1a566SRichard HendersonUASX 1111 1010 1010 .... 1111 .... 0100 .... @rndm 639adf1a566SRichard HendersonUQASX 1111 1010 1010 .... 1111 .... 0101 .... @rndm 640adf1a566SRichard HendersonUHASX 1111 1010 1010 .... 1111 .... 0110 .... @rndm 641adf1a566SRichard Henderson 642adf1a566SRichard HendersonSSUB8 1111 1010 1100 .... 1111 .... 0000 .... @rndm 643adf1a566SRichard HendersonQSUB8 1111 1010 1100 .... 1111 .... 0001 .... @rndm 644adf1a566SRichard HendersonSHSUB8 1111 1010 1100 .... 1111 .... 0010 .... @rndm 645adf1a566SRichard HendersonUSUB8 1111 1010 1100 .... 1111 .... 0100 .... @rndm 646adf1a566SRichard HendersonUQSUB8 1111 1010 1100 .... 1111 .... 0101 .... @rndm 647adf1a566SRichard HendersonUHSUB8 1111 1010 1100 .... 1111 .... 0110 .... @rndm 648adf1a566SRichard Henderson 649adf1a566SRichard HendersonSSUB16 1111 1010 1101 .... 1111 .... 0000 .... @rndm 650adf1a566SRichard HendersonQSUB16 1111 1010 1101 .... 1111 .... 0001 .... @rndm 651adf1a566SRichard HendersonSHSUB16 1111 1010 1101 .... 1111 .... 0010 .... @rndm 652adf1a566SRichard HendersonUSUB16 1111 1010 1101 .... 1111 .... 0100 .... @rndm 653adf1a566SRichard HendersonUQSUB16 1111 1010 1101 .... 1111 .... 0101 .... @rndm 654adf1a566SRichard HendersonUHSUB16 1111 1010 1101 .... 1111 .... 0110 .... @rndm 655adf1a566SRichard Henderson 656adf1a566SRichard HendersonSSAX 1111 1010 1110 .... 1111 .... 0000 .... @rndm 657adf1a566SRichard HendersonQSAX 1111 1010 1110 .... 1111 .... 0001 .... @rndm 658adf1a566SRichard HendersonSHSAX 1111 1010 1110 .... 1111 .... 0010 .... @rndm 659adf1a566SRichard HendersonUSAX 1111 1010 1110 .... 1111 .... 0100 .... @rndm 660adf1a566SRichard HendersonUQSAX 1111 1010 1110 .... 1111 .... 0101 .... @rndm 661adf1a566SRichard HendersonUHSAX 1111 1010 1110 .... 1111 .... 0110 .... @rndm 66246497f6aSRichard Henderson 66346497f6aSRichard Henderson# Register extends 66446497f6aSRichard Henderson 66546497f6aSRichard Henderson@rrr_rot .... .... .... rn:4 .... rd:4 .. rot:2 rm:4 &rrr_rot 66646497f6aSRichard Henderson 66746497f6aSRichard HendersonSXTAH 1111 1010 0000 .... 1111 .... 10.. .... @rrr_rot 66846497f6aSRichard HendersonUXTAH 1111 1010 0001 .... 1111 .... 10.. .... @rrr_rot 66946497f6aSRichard HendersonSXTAB16 1111 1010 0010 .... 1111 .... 10.. .... @rrr_rot 67046497f6aSRichard HendersonUXTAB16 1111 1010 0011 .... 1111 .... 10.. .... @rrr_rot 67146497f6aSRichard HendersonSXTAB 1111 1010 0100 .... 1111 .... 10.. .... @rrr_rot 67246497f6aSRichard HendersonUXTAB 1111 1010 0101 .... 1111 .... 10.. .... @rrr_rot 673c5c426d4SRichard Henderson 674c5c426d4SRichard Henderson# Load/store multiple 675c5c426d4SRichard Henderson 676c5c426d4SRichard Henderson@ldstm .... .... .. w:1 . rn:4 list:16 &ldst_block u=0 677c5c426d4SRichard Henderson 678c5c426d4SRichard HendersonSTM_t32 1110 1000 10.0 .... ................ @ldstm i=1 b=0 679c5c426d4SRichard HendersonSTM_t32 1110 1001 00.0 .... ................ @ldstm i=0 b=1 6806e21a013SPeter Maydell{ 6816e21a013SPeter Maydell # Rn=15 UNDEFs for LDM; M-profile CLRM uses that encoding 6826e21a013SPeter Maydell CLRM 1110 1000 1001 1111 list:16 683c5c426d4SRichard Henderson LDM_t32 1110 1000 10.1 .... ................ @ldstm i=1 b=0 6846e21a013SPeter Maydell} 685c5c426d4SRichard HendersonLDM_t32 1110 1001 00.1 .... ................ @ldstm i=0 b=1 686360144f3SRichard Henderson 687885782a7SRichard Henderson&rfe !extern rn w pu 688885782a7SRichard Henderson@rfe .... .... .. w:1 . rn:4 ................ &rfe 689885782a7SRichard Henderson 690885782a7SRichard HendersonRFE 1110 1000 00.1 .... 1100000000000000 @rfe pu=2 691885782a7SRichard HendersonRFE 1110 1001 10.1 .... 1100000000000000 @rfe pu=1 692885782a7SRichard Henderson 693885782a7SRichard Henderson&srs !extern mode w pu 694885782a7SRichard Henderson@srs .... .... .. w:1 . .... ........... mode:5 &srs 695885782a7SRichard Henderson 696885782a7SRichard HendersonSRS 1110 1000 00.0 1101 1100 0000 000. .... @srs pu=2 697885782a7SRichard HendersonSRS 1110 1001 10.0 1101 1100 0000 000. .... @srs pu=1 698885782a7SRichard Henderson 6994c498dcfSPeter Maydell# Coprocessor instructions 7004c498dcfSPeter Maydell 7014c498dcfSPeter Maydell# We decode MCR, MCR, MRRC and MCRR only, because for QEMU the 7024c498dcfSPeter Maydell# other coprocessor instructions always UNDEF. 7034c498dcfSPeter Maydell# The trans_ functions for these will ignore cp values 8..13 for v7 or 7044c498dcfSPeter Maydell# earlier, and 0..13 for v8 and later, because those areas of the 7054c498dcfSPeter Maydell# encoding space may be used for other things, such as VFP or Neon. 7064c498dcfSPeter Maydell 7074c498dcfSPeter Maydell@mcr .... .... opc1:3 . crn:4 rt:4 cp:4 opc2:3 . crm:4 7084c498dcfSPeter Maydell@mcrr .... .... .... rt2:4 rt:4 cp:4 opc1:4 crm:4 7094c498dcfSPeter Maydell 7104c498dcfSPeter MaydellMCRR 1110 1100 0100 .... .... .... .... .... @mcrr 7114c498dcfSPeter MaydellMRRC 1110 1100 0101 .... .... .... .... .... @mcrr 7124c498dcfSPeter Maydell 7134c498dcfSPeter MaydellMCR 1110 1110 ... 0 .... .... .... ... 1 .... @mcr 7144c498dcfSPeter MaydellMRC 1110 1110 ... 1 .... .... .... ... 1 .... @mcr 7154c498dcfSPeter Maydell 716360144f3SRichard Henderson# Branches 717360144f3SRichard Henderson 718360144f3SRichard Henderson%imm24 26:s1 13:1 11:1 16:10 0:11 !function=t32_branch24 719360144f3SRichard Henderson@branch24 ................................ &i imm=%imm24 720360144f3SRichard Henderson 721360144f3SRichard HendersonB 1111 0. .......... 10.1 ............ @branch24 722360144f3SRichard HendersonBL 1111 0. .......... 11.1 ............ @branch24 72305903f03SPeter Maydell{ 72405903f03SPeter Maydell # BLX_i is non-M-profile only 725360144f3SRichard Henderson BLX_i 1111 0. .......... 11.0 ............ @branch24 72605903f03SPeter Maydell # M-profile only: loop and branch insns 72705903f03SPeter Maydell [ 72805903f03SPeter Maydell # All these BF insns have boff != 0b0000; we NOP them all 72905903f03SPeter Maydell BF 1111 0 boff:4 ------- 1100 - ---------- 1 # BFL 73005903f03SPeter Maydell BF 1111 0 boff:4 0 ------ 1110 - ---------- 1 # BFCSEL 73105903f03SPeter Maydell BF 1111 0 boff:4 10 ----- 1110 - ---------- 1 # BF 73205903f03SPeter Maydell BF 1111 0 boff:4 11 ----- 1110 0 0000000000 1 # BFX, BFLX 73305903f03SPeter Maydell ] 734b7226369SPeter Maydell [ 735b7226369SPeter Maydell # LE and WLS immediate 736b7226369SPeter Maydell %lob_imm 1:10 11:1 !function=times_2 737b7226369SPeter Maydell 73840a36f00SPeter Maydell DLS 1111 0 0000 100 rn:4 1110 0000 0000 0001 size=4 7396822abfdSPeter Maydell WLS 1111 0 0000 100 rn:4 1100 . .......... 1 imm=%lob_imm size=4 7406822abfdSPeter Maydell { 741a454ea1eSPeter Maydell LE 1111 0 0000 0 f:1 tp:1 1111 1100 . .......... 1 imm=%lob_imm 7426822abfdSPeter Maydell # This is WLSTP 7436822abfdSPeter Maydell WLS 1111 0 0000 0 size:2 rn:4 1100 . .......... 1 imm=%lob_imm 7446822abfdSPeter Maydell } 74540a36f00SPeter Maydell { 74676c32d72SPeter Maydell LCTP 1111 0 0000 000 1111 1110 0000 0000 0001 74740a36f00SPeter Maydell # This is DLSTP 74840a36f00SPeter Maydell DLS 1111 0 0000 0 size:2 rn:4 1110 0000 0000 0001 74940a36f00SPeter Maydell } 7500f31e37cSPeter Maydell VCTP 1111 0 0000 0 size:2 rn:4 1110 1000 0000 0001 751b7226369SPeter Maydell ] 75205903f03SPeter Maydell} 753