1*f0984d40SFabiano Rosas# A32 conditional instructions 2*f0984d40SFabiano Rosas# 3*f0984d40SFabiano Rosas# Copyright (c) 2019 Linaro, Ltd 4*f0984d40SFabiano Rosas# 5*f0984d40SFabiano Rosas# This library is free software; you can redistribute it and/or 6*f0984d40SFabiano Rosas# modify it under the terms of the GNU Lesser General Public 7*f0984d40SFabiano Rosas# License as published by the Free Software Foundation; either 8*f0984d40SFabiano Rosas# version 2.1 of the License, or (at your option) any later version. 9*f0984d40SFabiano Rosas# 10*f0984d40SFabiano Rosas# This library is distributed in the hope that it will be useful, 11*f0984d40SFabiano Rosas# but WITHOUT ANY WARRANTY; without even the implied warranty of 12*f0984d40SFabiano Rosas# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13*f0984d40SFabiano Rosas# Lesser General Public License for more details. 14*f0984d40SFabiano Rosas# 15*f0984d40SFabiano Rosas# You should have received a copy of the GNU Lesser General Public 16*f0984d40SFabiano Rosas# License along with this library; if not, see <http://www.gnu.org/licenses/>. 17*f0984d40SFabiano Rosas 18*f0984d40SFabiano Rosas# 19*f0984d40SFabiano Rosas# This file is processed by scripts/decodetree.py 20*f0984d40SFabiano Rosas# 21*f0984d40SFabiano Rosas# All of the insn that have a COND field in insn[31:28] are here. 22*f0984d40SFabiano Rosas# All insns that have 0xf in insn[31:28] are in a32-uncond.decode. 23*f0984d40SFabiano Rosas# 24*f0984d40SFabiano Rosas 25*f0984d40SFabiano Rosas&empty 26*f0984d40SFabiano Rosas&s_rrr_shi s rd rn rm shim shty 27*f0984d40SFabiano Rosas&s_rrr_shr s rn rd rm rs shty 28*f0984d40SFabiano Rosas&s_rri_rot s rn rd imm rot 29*f0984d40SFabiano Rosas&s_rrrr s rd rn rm ra 30*f0984d40SFabiano Rosas&rrrr rd rn rm ra 31*f0984d40SFabiano Rosas&rrr_rot rd rn rm rot 32*f0984d40SFabiano Rosas&rrr rd rn rm 33*f0984d40SFabiano Rosas&rr rd rm 34*f0984d40SFabiano Rosas&ri rd imm 35*f0984d40SFabiano Rosas&r rm 36*f0984d40SFabiano Rosas&i imm 37*f0984d40SFabiano Rosas&msr_reg rn r mask 38*f0984d40SFabiano Rosas&mrs_reg rd r 39*f0984d40SFabiano Rosas&msr_bank rn r sysm 40*f0984d40SFabiano Rosas&mrs_bank rd r sysm 41*f0984d40SFabiano Rosas&ldst_rr p w u rn rt rm shimm shtype 42*f0984d40SFabiano Rosas&ldst_ri p w u rn rt imm 43*f0984d40SFabiano Rosas&ldst_block rn i b u w list 44*f0984d40SFabiano Rosas&strex rn rd rt rt2 imm 45*f0984d40SFabiano Rosas&ldrex rn rt rt2 imm 46*f0984d40SFabiano Rosas&bfx rd rn lsb widthm1 47*f0984d40SFabiano Rosas&bfi rd rn lsb msb 48*f0984d40SFabiano Rosas&sat rd rn satimm imm sh 49*f0984d40SFabiano Rosas&pkh rd rn rm imm tb 50*f0984d40SFabiano Rosas&mcr cp opc1 crn crm opc2 rt 51*f0984d40SFabiano Rosas&mcrr cp opc1 crm rt rt2 52*f0984d40SFabiano Rosas 53*f0984d40SFabiano Rosas# Data-processing (register) 54*f0984d40SFabiano Rosas 55*f0984d40SFabiano Rosas@s_rrr_shi ---- ... .... s:1 rn:4 rd:4 shim:5 shty:2 . rm:4 \ 56*f0984d40SFabiano Rosas &s_rrr_shi 57*f0984d40SFabiano Rosas@s_rxr_shi ---- ... .... s:1 .... rd:4 shim:5 shty:2 . rm:4 \ 58*f0984d40SFabiano Rosas &s_rrr_shi rn=0 59*f0984d40SFabiano Rosas@S_xrr_shi ---- ... .... . rn:4 .... shim:5 shty:2 . rm:4 \ 60*f0984d40SFabiano Rosas &s_rrr_shi s=1 rd=0 61*f0984d40SFabiano Rosas 62*f0984d40SFabiano RosasAND_rrri .... 000 0000 . .... .... ..... .. 0 .... @s_rrr_shi 63*f0984d40SFabiano RosasEOR_rrri .... 000 0001 . .... .... ..... .. 0 .... @s_rrr_shi 64*f0984d40SFabiano RosasSUB_rrri .... 000 0010 . .... .... ..... .. 0 .... @s_rrr_shi 65*f0984d40SFabiano RosasRSB_rrri .... 000 0011 . .... .... ..... .. 0 .... @s_rrr_shi 66*f0984d40SFabiano RosasADD_rrri .... 000 0100 . .... .... ..... .. 0 .... @s_rrr_shi 67*f0984d40SFabiano RosasADC_rrri .... 000 0101 . .... .... ..... .. 0 .... @s_rrr_shi 68*f0984d40SFabiano RosasSBC_rrri .... 000 0110 . .... .... ..... .. 0 .... @s_rrr_shi 69*f0984d40SFabiano RosasRSC_rrri .... 000 0111 . .... .... ..... .. 0 .... @s_rrr_shi 70*f0984d40SFabiano RosasTST_xrri .... 000 1000 1 .... 0000 ..... .. 0 .... @S_xrr_shi 71*f0984d40SFabiano RosasTEQ_xrri .... 000 1001 1 .... 0000 ..... .. 0 .... @S_xrr_shi 72*f0984d40SFabiano RosasCMP_xrri .... 000 1010 1 .... 0000 ..... .. 0 .... @S_xrr_shi 73*f0984d40SFabiano RosasCMN_xrri .... 000 1011 1 .... 0000 ..... .. 0 .... @S_xrr_shi 74*f0984d40SFabiano RosasORR_rrri .... 000 1100 . .... .... ..... .. 0 .... @s_rrr_shi 75*f0984d40SFabiano RosasMOV_rxri .... 000 1101 . 0000 .... ..... .. 0 .... @s_rxr_shi 76*f0984d40SFabiano RosasBIC_rrri .... 000 1110 . .... .... ..... .. 0 .... @s_rrr_shi 77*f0984d40SFabiano RosasMVN_rxri .... 000 1111 . 0000 .... ..... .. 0 .... @s_rxr_shi 78*f0984d40SFabiano Rosas 79*f0984d40SFabiano Rosas%imm16 16:4 0:12 80*f0984d40SFabiano Rosas@mov16 ---- .... .... .... rd:4 ............ &ri imm=%imm16 81*f0984d40SFabiano Rosas 82*f0984d40SFabiano RosasMOVW .... 0011 0000 .... .... ............ @mov16 83*f0984d40SFabiano RosasMOVT .... 0011 0100 .... .... ............ @mov16 84*f0984d40SFabiano Rosas 85*f0984d40SFabiano Rosas# Data-processing (register-shifted register) 86*f0984d40SFabiano Rosas 87*f0984d40SFabiano Rosas@s_rrr_shr ---- ... .... s:1 rn:4 rd:4 rs:4 . shty:2 . rm:4 \ 88*f0984d40SFabiano Rosas &s_rrr_shr 89*f0984d40SFabiano Rosas@s_rxr_shr ---- ... .... s:1 .... rd:4 rs:4 . shty:2 . rm:4 \ 90*f0984d40SFabiano Rosas &s_rrr_shr rn=0 91*f0984d40SFabiano Rosas@S_xrr_shr ---- ... .... . rn:4 .... rs:4 . shty:2 . rm:4 \ 92*f0984d40SFabiano Rosas &s_rrr_shr rd=0 s=1 93*f0984d40SFabiano Rosas 94*f0984d40SFabiano RosasAND_rrrr .... 000 0000 . .... .... .... 0 .. 1 .... @s_rrr_shr 95*f0984d40SFabiano RosasEOR_rrrr .... 000 0001 . .... .... .... 0 .. 1 .... @s_rrr_shr 96*f0984d40SFabiano RosasSUB_rrrr .... 000 0010 . .... .... .... 0 .. 1 .... @s_rrr_shr 97*f0984d40SFabiano RosasRSB_rrrr .... 000 0011 . .... .... .... 0 .. 1 .... @s_rrr_shr 98*f0984d40SFabiano RosasADD_rrrr .... 000 0100 . .... .... .... 0 .. 1 .... @s_rrr_shr 99*f0984d40SFabiano RosasADC_rrrr .... 000 0101 . .... .... .... 0 .. 1 .... @s_rrr_shr 100*f0984d40SFabiano RosasSBC_rrrr .... 000 0110 . .... .... .... 0 .. 1 .... @s_rrr_shr 101*f0984d40SFabiano RosasRSC_rrrr .... 000 0111 . .... .... .... 0 .. 1 .... @s_rrr_shr 102*f0984d40SFabiano RosasTST_xrrr .... 000 1000 1 .... 0000 .... 0 .. 1 .... @S_xrr_shr 103*f0984d40SFabiano RosasTEQ_xrrr .... 000 1001 1 .... 0000 .... 0 .. 1 .... @S_xrr_shr 104*f0984d40SFabiano RosasCMP_xrrr .... 000 1010 1 .... 0000 .... 0 .. 1 .... @S_xrr_shr 105*f0984d40SFabiano RosasCMN_xrrr .... 000 1011 1 .... 0000 .... 0 .. 1 .... @S_xrr_shr 106*f0984d40SFabiano RosasORR_rrrr .... 000 1100 . .... .... .... 0 .. 1 .... @s_rrr_shr 107*f0984d40SFabiano RosasMOV_rxrr .... 000 1101 . 0000 .... .... 0 .. 1 .... @s_rxr_shr 108*f0984d40SFabiano RosasBIC_rrrr .... 000 1110 . .... .... .... 0 .. 1 .... @s_rrr_shr 109*f0984d40SFabiano RosasMVN_rxrr .... 000 1111 . 0000 .... .... 0 .. 1 .... @s_rxr_shr 110*f0984d40SFabiano Rosas 111*f0984d40SFabiano Rosas# Data-processing (immediate) 112*f0984d40SFabiano Rosas 113*f0984d40SFabiano Rosas%a32extrot 8:4 !function=times_2 114*f0984d40SFabiano Rosas 115*f0984d40SFabiano Rosas@s_rri_rot ---- ... .... s:1 rn:4 rd:4 .... imm:8 \ 116*f0984d40SFabiano Rosas &s_rri_rot rot=%a32extrot 117*f0984d40SFabiano Rosas@s_rxi_rot ---- ... .... s:1 .... rd:4 .... imm:8 \ 118*f0984d40SFabiano Rosas &s_rri_rot rot=%a32extrot rn=0 119*f0984d40SFabiano Rosas@S_xri_rot ---- ... .... . rn:4 .... .... imm:8 \ 120*f0984d40SFabiano Rosas &s_rri_rot rot=%a32extrot rd=0 s=1 121*f0984d40SFabiano Rosas 122*f0984d40SFabiano RosasAND_rri .... 001 0000 . .... .... ............ @s_rri_rot 123*f0984d40SFabiano RosasEOR_rri .... 001 0001 . .... .... ............ @s_rri_rot 124*f0984d40SFabiano RosasSUB_rri .... 001 0010 . .... .... ............ @s_rri_rot 125*f0984d40SFabiano RosasRSB_rri .... 001 0011 . .... .... ............ @s_rri_rot 126*f0984d40SFabiano RosasADD_rri .... 001 0100 . .... .... ............ @s_rri_rot 127*f0984d40SFabiano RosasADC_rri .... 001 0101 . .... .... ............ @s_rri_rot 128*f0984d40SFabiano RosasSBC_rri .... 001 0110 . .... .... ............ @s_rri_rot 129*f0984d40SFabiano RosasRSC_rri .... 001 0111 . .... .... ............ @s_rri_rot 130*f0984d40SFabiano RosasTST_xri .... 001 1000 1 .... 0000 ............ @S_xri_rot 131*f0984d40SFabiano RosasTEQ_xri .... 001 1001 1 .... 0000 ............ @S_xri_rot 132*f0984d40SFabiano RosasCMP_xri .... 001 1010 1 .... 0000 ............ @S_xri_rot 133*f0984d40SFabiano RosasCMN_xri .... 001 1011 1 .... 0000 ............ @S_xri_rot 134*f0984d40SFabiano RosasORR_rri .... 001 1100 . .... .... ............ @s_rri_rot 135*f0984d40SFabiano RosasMOV_rxi .... 001 1101 . 0000 .... ............ @s_rxi_rot 136*f0984d40SFabiano RosasBIC_rri .... 001 1110 . .... .... ............ @s_rri_rot 137*f0984d40SFabiano RosasMVN_rxi .... 001 1111 . 0000 .... ............ @s_rxi_rot 138*f0984d40SFabiano Rosas 139*f0984d40SFabiano Rosas# Multiply and multiply accumulate 140*f0984d40SFabiano Rosas 141*f0984d40SFabiano Rosas@s_rdamn ---- .... ... s:1 rd:4 ra:4 rm:4 .... rn:4 &s_rrrr 142*f0984d40SFabiano Rosas@s_rd0mn ---- .... ... s:1 rd:4 .... rm:4 .... rn:4 &s_rrrr ra=0 143*f0984d40SFabiano Rosas@rdamn ---- .... ... . rd:4 ra:4 rm:4 .... rn:4 &rrrr 144*f0984d40SFabiano Rosas@rd0mn ---- .... ... . rd:4 .... rm:4 .... rn:4 &rrrr ra=0 145*f0984d40SFabiano Rosas 146*f0984d40SFabiano RosasMUL .... 0000 000 . .... 0000 .... 1001 .... @s_rd0mn 147*f0984d40SFabiano RosasMLA .... 0000 001 . .... .... .... 1001 .... @s_rdamn 148*f0984d40SFabiano RosasUMAAL .... 0000 010 0 .... .... .... 1001 .... @rdamn 149*f0984d40SFabiano RosasMLS .... 0000 011 0 .... .... .... 1001 .... @rdamn 150*f0984d40SFabiano RosasUMULL .... 0000 100 . .... .... .... 1001 .... @s_rdamn 151*f0984d40SFabiano RosasUMLAL .... 0000 101 . .... .... .... 1001 .... @s_rdamn 152*f0984d40SFabiano RosasSMULL .... 0000 110 . .... .... .... 1001 .... @s_rdamn 153*f0984d40SFabiano RosasSMLAL .... 0000 111 . .... .... .... 1001 .... @s_rdamn 154*f0984d40SFabiano Rosas 155*f0984d40SFabiano Rosas# Saturating addition and subtraction 156*f0984d40SFabiano Rosas 157*f0984d40SFabiano Rosas@rndm ---- .... .... rn:4 rd:4 .... .... rm:4 &rrr 158*f0984d40SFabiano Rosas 159*f0984d40SFabiano RosasQADD .... 0001 0000 .... .... 0000 0101 .... @rndm 160*f0984d40SFabiano RosasQSUB .... 0001 0010 .... .... 0000 0101 .... @rndm 161*f0984d40SFabiano RosasQDADD .... 0001 0100 .... .... 0000 0101 .... @rndm 162*f0984d40SFabiano RosasQDSUB .... 0001 0110 .... .... 0000 0101 .... @rndm 163*f0984d40SFabiano Rosas 164*f0984d40SFabiano Rosas# Halfword multiply and multiply accumulate 165*f0984d40SFabiano Rosas 166*f0984d40SFabiano RosasSMLABB .... 0001 0000 .... .... .... 1000 .... @rdamn 167*f0984d40SFabiano RosasSMLABT .... 0001 0000 .... .... .... 1100 .... @rdamn 168*f0984d40SFabiano RosasSMLATB .... 0001 0000 .... .... .... 1010 .... @rdamn 169*f0984d40SFabiano RosasSMLATT .... 0001 0000 .... .... .... 1110 .... @rdamn 170*f0984d40SFabiano RosasSMLAWB .... 0001 0010 .... .... .... 1000 .... @rdamn 171*f0984d40SFabiano RosasSMULWB .... 0001 0010 .... 0000 .... 1010 .... @rd0mn 172*f0984d40SFabiano RosasSMLAWT .... 0001 0010 .... .... .... 1100 .... @rdamn 173*f0984d40SFabiano RosasSMULWT .... 0001 0010 .... 0000 .... 1110 .... @rd0mn 174*f0984d40SFabiano RosasSMLALBB .... 0001 0100 .... .... .... 1000 .... @rdamn 175*f0984d40SFabiano RosasSMLALBT .... 0001 0100 .... .... .... 1100 .... @rdamn 176*f0984d40SFabiano RosasSMLALTB .... 0001 0100 .... .... .... 1010 .... @rdamn 177*f0984d40SFabiano RosasSMLALTT .... 0001 0100 .... .... .... 1110 .... @rdamn 178*f0984d40SFabiano RosasSMULBB .... 0001 0110 .... 0000 .... 1000 .... @rd0mn 179*f0984d40SFabiano RosasSMULBT .... 0001 0110 .... 0000 .... 1100 .... @rd0mn 180*f0984d40SFabiano RosasSMULTB .... 0001 0110 .... 0000 .... 1010 .... @rd0mn 181*f0984d40SFabiano RosasSMULTT .... 0001 0110 .... 0000 .... 1110 .... @rd0mn 182*f0984d40SFabiano Rosas 183*f0984d40SFabiano Rosas# MSR (immediate) and hints 184*f0984d40SFabiano Rosas 185*f0984d40SFabiano Rosas&msr_i r mask rot imm 186*f0984d40SFabiano Rosas@msr_i ---- .... .... mask:4 .... rot:4 imm:8 &msr_i 187*f0984d40SFabiano Rosas 188*f0984d40SFabiano Rosas{ 189*f0984d40SFabiano Rosas { 190*f0984d40SFabiano Rosas [ 191*f0984d40SFabiano Rosas YIELD ---- 0011 0010 0000 1111 ---- 0000 0001 192*f0984d40SFabiano Rosas WFE ---- 0011 0010 0000 1111 ---- 0000 0010 193*f0984d40SFabiano Rosas WFI ---- 0011 0010 0000 1111 ---- 0000 0011 194*f0984d40SFabiano Rosas 195*f0984d40SFabiano Rosas # TODO: Implement SEV, SEVL; may help SMP performance. 196*f0984d40SFabiano Rosas # SEV ---- 0011 0010 0000 1111 ---- 0000 0100 197*f0984d40SFabiano Rosas # SEVL ---- 0011 0010 0000 1111 ---- 0000 0101 198*f0984d40SFabiano Rosas 199*f0984d40SFabiano Rosas ESB ---- 0011 0010 0000 1111 ---- 0001 0000 200*f0984d40SFabiano Rosas ] 201*f0984d40SFabiano Rosas 202*f0984d40SFabiano Rosas # The canonical nop ends in 00000000, but the whole of the 203*f0984d40SFabiano Rosas # rest of the space executes as nop if otherwise unsupported. 204*f0984d40SFabiano Rosas NOP ---- 0011 0010 0000 1111 ---- ---- ---- 205*f0984d40SFabiano Rosas } 206*f0984d40SFabiano Rosas # Note mask = 0 is covered by NOP 207*f0984d40SFabiano Rosas MSR_imm .... 0011 0010 .... 1111 .... .... .... @msr_i r=0 208*f0984d40SFabiano Rosas} 209*f0984d40SFabiano RosasMSR_imm .... 0011 0110 .... 1111 .... .... .... @msr_i r=1 210*f0984d40SFabiano Rosas 211*f0984d40SFabiano Rosas# Cyclic Redundancy Check 212*f0984d40SFabiano Rosas 213*f0984d40SFabiano RosasCRC32B .... 0001 0000 .... .... 0000 0100 .... @rndm 214*f0984d40SFabiano RosasCRC32H .... 0001 0010 .... .... 0000 0100 .... @rndm 215*f0984d40SFabiano RosasCRC32W .... 0001 0100 .... .... 0000 0100 .... @rndm 216*f0984d40SFabiano RosasCRC32CB .... 0001 0000 .... .... 0010 0100 .... @rndm 217*f0984d40SFabiano RosasCRC32CH .... 0001 0010 .... .... 0010 0100 .... @rndm 218*f0984d40SFabiano RosasCRC32CW .... 0001 0100 .... .... 0010 0100 .... @rndm 219*f0984d40SFabiano Rosas 220*f0984d40SFabiano Rosas# Miscellaneous instructions 221*f0984d40SFabiano Rosas 222*f0984d40SFabiano Rosas%sysm 8:1 16:4 223*f0984d40SFabiano Rosas%imm16_8_0 8:12 0:4 224*f0984d40SFabiano Rosas 225*f0984d40SFabiano Rosas@rm ---- .... .... .... .... .... .... rm:4 &r 226*f0984d40SFabiano Rosas@rdm ---- .... .... .... rd:4 .... .... rm:4 &rr 227*f0984d40SFabiano Rosas@i16 ---- .... .... .... .... .... .... .... &i imm=%imm16_8_0 228*f0984d40SFabiano Rosas 229*f0984d40SFabiano RosasMRS_bank ---- 0001 0 r:1 00 .... rd:4 001. 0000 0000 &mrs_bank %sysm 230*f0984d40SFabiano RosasMSR_bank ---- 0001 0 r:1 10 .... 1111 001. 0000 rn:4 &msr_bank %sysm 231*f0984d40SFabiano Rosas 232*f0984d40SFabiano RosasMRS_reg ---- 0001 0 r:1 00 1111 rd:4 0000 0000 0000 &mrs_reg 233*f0984d40SFabiano RosasMSR_reg ---- 0001 0 r:1 10 mask:4 1111 0000 0000 rn:4 &msr_reg 234*f0984d40SFabiano Rosas 235*f0984d40SFabiano RosasBX .... 0001 0010 1111 1111 1111 0001 .... @rm 236*f0984d40SFabiano RosasBXJ .... 0001 0010 1111 1111 1111 0010 .... @rm 237*f0984d40SFabiano RosasBLX_r .... 0001 0010 1111 1111 1111 0011 .... @rm 238*f0984d40SFabiano Rosas 239*f0984d40SFabiano RosasCLZ .... 0001 0110 1111 .... 1111 0001 .... @rdm 240*f0984d40SFabiano Rosas 241*f0984d40SFabiano RosasERET ---- 0001 0110 0000 0000 0000 0110 1110 242*f0984d40SFabiano Rosas 243*f0984d40SFabiano RosasHLT .... 0001 0000 .... .... .... 0111 .... @i16 244*f0984d40SFabiano RosasBKPT .... 0001 0010 .... .... .... 0111 .... @i16 245*f0984d40SFabiano RosasHVC .... 0001 0100 .... .... .... 0111 .... @i16 246*f0984d40SFabiano RosasSMC ---- 0001 0110 0000 0000 0000 0111 imm:4 &i 247*f0984d40SFabiano Rosas 248*f0984d40SFabiano Rosas# Load/Store Dual, Half, Signed Byte (register) 249*f0984d40SFabiano Rosas 250*f0984d40SFabiano Rosas@ldst_rr_p1w ---- ...1 u:1 . w:1 . rn:4 rt:4 .... .... rm:4 \ 251*f0984d40SFabiano Rosas &ldst_rr p=1 shimm=0 shtype=0 252*f0984d40SFabiano Rosas@ldst_rr_pw0 ---- ...0 u:1 . 0 . rn:4 rt:4 .... .... rm:4 \ 253*f0984d40SFabiano Rosas &ldst_rr p=0 w=0 shimm=0 shtype=0 254*f0984d40SFabiano Rosas 255*f0984d40SFabiano RosasSTRH_rr .... 000. .0.0 .... .... 0000 1011 .... @ldst_rr_pw0 256*f0984d40SFabiano RosasSTRH_rr .... 000. .0.0 .... .... 0000 1011 .... @ldst_rr_p1w 257*f0984d40SFabiano Rosas 258*f0984d40SFabiano RosasLDRD_rr .... 000. .0.0 .... .... 0000 1101 .... @ldst_rr_pw0 259*f0984d40SFabiano RosasLDRD_rr .... 000. .0.0 .... .... 0000 1101 .... @ldst_rr_p1w 260*f0984d40SFabiano Rosas 261*f0984d40SFabiano RosasSTRD_rr .... 000. .0.0 .... .... 0000 1111 .... @ldst_rr_pw0 262*f0984d40SFabiano RosasSTRD_rr .... 000. .0.0 .... .... 0000 1111 .... @ldst_rr_p1w 263*f0984d40SFabiano Rosas 264*f0984d40SFabiano RosasLDRH_rr .... 000. .0.1 .... .... 0000 1011 .... @ldst_rr_pw0 265*f0984d40SFabiano RosasLDRH_rr .... 000. .0.1 .... .... 0000 1011 .... @ldst_rr_p1w 266*f0984d40SFabiano Rosas 267*f0984d40SFabiano RosasLDRSB_rr .... 000. .0.1 .... .... 0000 1101 .... @ldst_rr_pw0 268*f0984d40SFabiano RosasLDRSB_rr .... 000. .0.1 .... .... 0000 1101 .... @ldst_rr_p1w 269*f0984d40SFabiano Rosas 270*f0984d40SFabiano RosasLDRSH_rr .... 000. .0.1 .... .... 0000 1111 .... @ldst_rr_pw0 271*f0984d40SFabiano RosasLDRSH_rr .... 000. .0.1 .... .... 0000 1111 .... @ldst_rr_p1w 272*f0984d40SFabiano Rosas 273*f0984d40SFabiano Rosas# Note the unpriv load/stores use the previously invalid P=0, W=1 encoding, 274*f0984d40SFabiano Rosas# and act as normal post-indexed (P=0, W=0). 275*f0984d40SFabiano Rosas@ldst_rr_p0w1 ---- ...0 u:1 . 1 . rn:4 rt:4 .... .... rm:4 \ 276*f0984d40SFabiano Rosas &ldst_rr p=0 w=0 shimm=0 shtype=0 277*f0984d40SFabiano Rosas 278*f0984d40SFabiano RosasSTRHT_rr .... 000. .0.0 .... .... 0000 1011 .... @ldst_rr_p0w1 279*f0984d40SFabiano RosasLDRHT_rr .... 000. .0.1 .... .... 0000 1011 .... @ldst_rr_p0w1 280*f0984d40SFabiano RosasLDRSBT_rr .... 000. .0.1 .... .... 0000 1101 .... @ldst_rr_p0w1 281*f0984d40SFabiano RosasLDRSHT_rr .... 000. .0.1 .... .... 0000 1111 .... @ldst_rr_p0w1 282*f0984d40SFabiano Rosas 283*f0984d40SFabiano Rosas# Load/Store word and unsigned byte (register) 284*f0984d40SFabiano Rosas 285*f0984d40SFabiano Rosas@ldst_rs_p1w ---- ...1 u:1 . w:1 . rn:4 rt:4 shimm:5 shtype:2 . rm:4 \ 286*f0984d40SFabiano Rosas &ldst_rr p=1 287*f0984d40SFabiano Rosas@ldst_rs_pw0 ---- ...0 u:1 . 0 . rn:4 rt:4 shimm:5 shtype:2 . rm:4 \ 288*f0984d40SFabiano Rosas &ldst_rr p=0 w=0 289*f0984d40SFabiano Rosas 290*f0984d40SFabiano RosasSTR_rr .... 011. .0.0 .... .... .... ...0 .... @ldst_rs_pw0 291*f0984d40SFabiano RosasSTR_rr .... 011. .0.0 .... .... .... ...0 .... @ldst_rs_p1w 292*f0984d40SFabiano RosasSTRB_rr .... 011. .1.0 .... .... .... ...0 .... @ldst_rs_pw0 293*f0984d40SFabiano RosasSTRB_rr .... 011. .1.0 .... .... .... ...0 .... @ldst_rs_p1w 294*f0984d40SFabiano Rosas 295*f0984d40SFabiano RosasLDR_rr .... 011. .0.1 .... .... .... ...0 .... @ldst_rs_pw0 296*f0984d40SFabiano RosasLDR_rr .... 011. .0.1 .... .... .... ...0 .... @ldst_rs_p1w 297*f0984d40SFabiano RosasLDRB_rr .... 011. .1.1 .... .... .... ...0 .... @ldst_rs_pw0 298*f0984d40SFabiano RosasLDRB_rr .... 011. .1.1 .... .... .... ...0 .... @ldst_rs_p1w 299*f0984d40SFabiano Rosas 300*f0984d40SFabiano Rosas@ldst_rs_p0w1 ---- ...0 u:1 . 1 . rn:4 rt:4 shimm:5 shtype:2 . rm:4 \ 301*f0984d40SFabiano Rosas &ldst_rr p=0 w=0 302*f0984d40SFabiano Rosas 303*f0984d40SFabiano RosasSTRT_rr .... 011. .0.0 .... .... .... ...0 .... @ldst_rs_p0w1 304*f0984d40SFabiano RosasSTRBT_rr .... 011. .1.0 .... .... .... ...0 .... @ldst_rs_p0w1 305*f0984d40SFabiano RosasLDRT_rr .... 011. .0.1 .... .... .... ...0 .... @ldst_rs_p0w1 306*f0984d40SFabiano RosasLDRBT_rr .... 011. .1.1 .... .... .... ...0 .... @ldst_rs_p0w1 307*f0984d40SFabiano Rosas 308*f0984d40SFabiano Rosas# Load/Store Dual, Half, Signed Byte (immediate) 309*f0984d40SFabiano Rosas 310*f0984d40SFabiano Rosas%imm8s_8_0 8:4 0:4 311*f0984d40SFabiano Rosas@ldst_ri8_p1w ---- ...1 u:1 . w:1 . rn:4 rt:4 .... .... .... \ 312*f0984d40SFabiano Rosas &ldst_ri imm=%imm8s_8_0 p=1 313*f0984d40SFabiano Rosas@ldst_ri8_pw0 ---- ...0 u:1 . 0 . rn:4 rt:4 .... .... .... \ 314*f0984d40SFabiano Rosas &ldst_ri imm=%imm8s_8_0 p=0 w=0 315*f0984d40SFabiano Rosas 316*f0984d40SFabiano RosasSTRH_ri .... 000. .1.0 .... .... .... 1011 .... @ldst_ri8_pw0 317*f0984d40SFabiano RosasSTRH_ri .... 000. .1.0 .... .... .... 1011 .... @ldst_ri8_p1w 318*f0984d40SFabiano Rosas 319*f0984d40SFabiano RosasLDRD_ri_a32 .... 000. .1.0 .... .... .... 1101 .... @ldst_ri8_pw0 320*f0984d40SFabiano RosasLDRD_ri_a32 .... 000. .1.0 .... .... .... 1101 .... @ldst_ri8_p1w 321*f0984d40SFabiano Rosas 322*f0984d40SFabiano RosasSTRD_ri_a32 .... 000. .1.0 .... .... .... 1111 .... @ldst_ri8_pw0 323*f0984d40SFabiano RosasSTRD_ri_a32 .... 000. .1.0 .... .... .... 1111 .... @ldst_ri8_p1w 324*f0984d40SFabiano Rosas 325*f0984d40SFabiano RosasLDRH_ri .... 000. .1.1 .... .... .... 1011 .... @ldst_ri8_pw0 326*f0984d40SFabiano RosasLDRH_ri .... 000. .1.1 .... .... .... 1011 .... @ldst_ri8_p1w 327*f0984d40SFabiano Rosas 328*f0984d40SFabiano RosasLDRSB_ri .... 000. .1.1 .... .... .... 1101 .... @ldst_ri8_pw0 329*f0984d40SFabiano RosasLDRSB_ri .... 000. .1.1 .... .... .... 1101 .... @ldst_ri8_p1w 330*f0984d40SFabiano Rosas 331*f0984d40SFabiano RosasLDRSH_ri .... 000. .1.1 .... .... .... 1111 .... @ldst_ri8_pw0 332*f0984d40SFabiano RosasLDRSH_ri .... 000. .1.1 .... .... .... 1111 .... @ldst_ri8_p1w 333*f0984d40SFabiano Rosas 334*f0984d40SFabiano Rosas# Note the unpriv load/stores use the previously invalid P=0, W=1 encoding, 335*f0984d40SFabiano Rosas# and act as normal post-indexed (P=0, W=0). 336*f0984d40SFabiano Rosas@ldst_ri8_p0w1 ---- ...0 u:1 . 1 . rn:4 rt:4 .... .... .... \ 337*f0984d40SFabiano Rosas &ldst_ri imm=%imm8s_8_0 p=0 w=0 338*f0984d40SFabiano Rosas 339*f0984d40SFabiano RosasSTRHT_ri .... 000. .1.0 .... .... .... 1011 .... @ldst_ri8_p0w1 340*f0984d40SFabiano RosasLDRHT_ri .... 000. .1.1 .... .... .... 1011 .... @ldst_ri8_p0w1 341*f0984d40SFabiano RosasLDRSBT_ri .... 000. .1.1 .... .... .... 1101 .... @ldst_ri8_p0w1 342*f0984d40SFabiano RosasLDRSHT_ri .... 000. .1.1 .... .... .... 1111 .... @ldst_ri8_p0w1 343*f0984d40SFabiano Rosas 344*f0984d40SFabiano Rosas# Load/Store word and unsigned byte (immediate) 345*f0984d40SFabiano Rosas 346*f0984d40SFabiano Rosas@ldst_ri12_p1w ---- ...1 u:1 . w:1 . rn:4 rt:4 imm:12 &ldst_ri p=1 347*f0984d40SFabiano Rosas@ldst_ri12_pw0 ---- ...0 u:1 . 0 . rn:4 rt:4 imm:12 &ldst_ri p=0 w=0 348*f0984d40SFabiano Rosas 349*f0984d40SFabiano RosasSTR_ri .... 010. .0.0 .... .... ............ @ldst_ri12_p1w 350*f0984d40SFabiano RosasSTR_ri .... 010. .0.0 .... .... ............ @ldst_ri12_pw0 351*f0984d40SFabiano RosasSTRB_ri .... 010. .1.0 .... .... ............ @ldst_ri12_p1w 352*f0984d40SFabiano RosasSTRB_ri .... 010. .1.0 .... .... ............ @ldst_ri12_pw0 353*f0984d40SFabiano Rosas 354*f0984d40SFabiano RosasLDR_ri .... 010. .0.1 .... .... ............ @ldst_ri12_p1w 355*f0984d40SFabiano RosasLDR_ri .... 010. .0.1 .... .... ............ @ldst_ri12_pw0 356*f0984d40SFabiano RosasLDRB_ri .... 010. .1.1 .... .... ............ @ldst_ri12_p1w 357*f0984d40SFabiano RosasLDRB_ri .... 010. .1.1 .... .... ............ @ldst_ri12_pw0 358*f0984d40SFabiano Rosas 359*f0984d40SFabiano Rosas@ldst_ri12_p0w1 ---- ...0 u:1 . 1 . rn:4 rt:4 imm:12 &ldst_ri p=0 w=0 360*f0984d40SFabiano Rosas 361*f0984d40SFabiano RosasSTRT_ri .... 010. .0.0 .... .... ............ @ldst_ri12_p0w1 362*f0984d40SFabiano RosasSTRBT_ri .... 010. .1.0 .... .... ............ @ldst_ri12_p0w1 363*f0984d40SFabiano RosasLDRT_ri .... 010. .0.1 .... .... ............ @ldst_ri12_p0w1 364*f0984d40SFabiano RosasLDRBT_ri .... 010. .1.1 .... .... ............ @ldst_ri12_p0w1 365*f0984d40SFabiano Rosas 366*f0984d40SFabiano Rosas# Synchronization primitives 367*f0984d40SFabiano Rosas 368*f0984d40SFabiano Rosas@swp ---- .... .... rn:4 rt:4 .... .... rt2:4 369*f0984d40SFabiano Rosas 370*f0984d40SFabiano RosasSWP .... 0001 0000 .... .... 0000 1001 .... @swp 371*f0984d40SFabiano RosasSWPB .... 0001 0100 .... .... 0000 1001 .... @swp 372*f0984d40SFabiano Rosas 373*f0984d40SFabiano Rosas# Load/Store Exclusive and Load-Acquire/Store-Release 374*f0984d40SFabiano Rosas# 375*f0984d40SFabiano Rosas# Note rt2 for STREXD/LDREXD is set by the helper after checking rt is even. 376*f0984d40SFabiano Rosas 377*f0984d40SFabiano Rosas@strex ---- .... .... rn:4 rd:4 .... .... rt:4 \ 378*f0984d40SFabiano Rosas &strex imm=0 rt2=15 379*f0984d40SFabiano Rosas@ldrex ---- .... .... rn:4 rt:4 .... .... .... \ 380*f0984d40SFabiano Rosas &ldrex imm=0 rt2=15 381*f0984d40SFabiano Rosas@stl ---- .... .... rn:4 .... .... .... rt:4 \ 382*f0984d40SFabiano Rosas &ldrex imm=0 rt2=15 383*f0984d40SFabiano Rosas 384*f0984d40SFabiano RosasSTREX .... 0001 1000 .... .... 1111 1001 .... @strex 385*f0984d40SFabiano RosasSTREXD_a32 .... 0001 1010 .... .... 1111 1001 .... @strex 386*f0984d40SFabiano RosasSTREXB .... 0001 1100 .... .... 1111 1001 .... @strex 387*f0984d40SFabiano RosasSTREXH .... 0001 1110 .... .... 1111 1001 .... @strex 388*f0984d40SFabiano Rosas 389*f0984d40SFabiano RosasSTLEX .... 0001 1000 .... .... 1110 1001 .... @strex 390*f0984d40SFabiano RosasSTLEXD_a32 .... 0001 1010 .... .... 1110 1001 .... @strex 391*f0984d40SFabiano RosasSTLEXB .... 0001 1100 .... .... 1110 1001 .... @strex 392*f0984d40SFabiano RosasSTLEXH .... 0001 1110 .... .... 1110 1001 .... @strex 393*f0984d40SFabiano Rosas 394*f0984d40SFabiano RosasSTL .... 0001 1000 .... 1111 1100 1001 .... @stl 395*f0984d40SFabiano RosasSTLB .... 0001 1100 .... 1111 1100 1001 .... @stl 396*f0984d40SFabiano RosasSTLH .... 0001 1110 .... 1111 1100 1001 .... @stl 397*f0984d40SFabiano Rosas 398*f0984d40SFabiano RosasLDREX .... 0001 1001 .... .... 1111 1001 1111 @ldrex 399*f0984d40SFabiano RosasLDREXD_a32 .... 0001 1011 .... .... 1111 1001 1111 @ldrex 400*f0984d40SFabiano RosasLDREXB .... 0001 1101 .... .... 1111 1001 1111 @ldrex 401*f0984d40SFabiano RosasLDREXH .... 0001 1111 .... .... 1111 1001 1111 @ldrex 402*f0984d40SFabiano Rosas 403*f0984d40SFabiano RosasLDAEX .... 0001 1001 .... .... 1110 1001 1111 @ldrex 404*f0984d40SFabiano RosasLDAEXD_a32 .... 0001 1011 .... .... 1110 1001 1111 @ldrex 405*f0984d40SFabiano RosasLDAEXB .... 0001 1101 .... .... 1110 1001 1111 @ldrex 406*f0984d40SFabiano RosasLDAEXH .... 0001 1111 .... .... 1110 1001 1111 @ldrex 407*f0984d40SFabiano Rosas 408*f0984d40SFabiano RosasLDA .... 0001 1001 .... .... 1100 1001 1111 @ldrex 409*f0984d40SFabiano RosasLDAB .... 0001 1101 .... .... 1100 1001 1111 @ldrex 410*f0984d40SFabiano RosasLDAH .... 0001 1111 .... .... 1100 1001 1111 @ldrex 411*f0984d40SFabiano Rosas 412*f0984d40SFabiano Rosas# Media instructions 413*f0984d40SFabiano Rosas 414*f0984d40SFabiano Rosas# usad8 is usada8 w/ ra=15 415*f0984d40SFabiano RosasUSADA8 ---- 0111 1000 rd:4 ra:4 rm:4 0001 rn:4 416*f0984d40SFabiano Rosas 417*f0984d40SFabiano Rosas# ubfx and sbfx 418*f0984d40SFabiano Rosas@bfx ---- .... ... widthm1:5 rd:4 lsb:5 ... rn:4 &bfx 419*f0984d40SFabiano Rosas 420*f0984d40SFabiano RosasSBFX .... 0111 101 ..... .... ..... 101 .... @bfx 421*f0984d40SFabiano RosasUBFX .... 0111 111 ..... .... ..... 101 .... @bfx 422*f0984d40SFabiano Rosas 423*f0984d40SFabiano Rosas# bfc is bfi w/ rn=15 424*f0984d40SFabiano RosasBFCI ---- 0111 110 msb:5 rd:4 lsb:5 001 rn:4 &bfi 425*f0984d40SFabiano Rosas 426*f0984d40SFabiano Rosas# While we could get UDEF by not including this, add the pattern for 427*f0984d40SFabiano Rosas# documentation and to conflict with any other typos in this file. 428*f0984d40SFabiano RosasUDF 1110 0111 1111 ---- ---- ---- 1111 ---- 429*f0984d40SFabiano Rosas 430*f0984d40SFabiano Rosas# Parallel addition and subtraction 431*f0984d40SFabiano Rosas 432*f0984d40SFabiano RosasSADD16 .... 0110 0001 .... .... 1111 0001 .... @rndm 433*f0984d40SFabiano RosasSASX .... 0110 0001 .... .... 1111 0011 .... @rndm 434*f0984d40SFabiano RosasSSAX .... 0110 0001 .... .... 1111 0101 .... @rndm 435*f0984d40SFabiano RosasSSUB16 .... 0110 0001 .... .... 1111 0111 .... @rndm 436*f0984d40SFabiano RosasSADD8 .... 0110 0001 .... .... 1111 1001 .... @rndm 437*f0984d40SFabiano RosasSSUB8 .... 0110 0001 .... .... 1111 1111 .... @rndm 438*f0984d40SFabiano Rosas 439*f0984d40SFabiano RosasQADD16 .... 0110 0010 .... .... 1111 0001 .... @rndm 440*f0984d40SFabiano RosasQASX .... 0110 0010 .... .... 1111 0011 .... @rndm 441*f0984d40SFabiano RosasQSAX .... 0110 0010 .... .... 1111 0101 .... @rndm 442*f0984d40SFabiano RosasQSUB16 .... 0110 0010 .... .... 1111 0111 .... @rndm 443*f0984d40SFabiano RosasQADD8 .... 0110 0010 .... .... 1111 1001 .... @rndm 444*f0984d40SFabiano RosasQSUB8 .... 0110 0010 .... .... 1111 1111 .... @rndm 445*f0984d40SFabiano Rosas 446*f0984d40SFabiano RosasSHADD16 .... 0110 0011 .... .... 1111 0001 .... @rndm 447*f0984d40SFabiano RosasSHASX .... 0110 0011 .... .... 1111 0011 .... @rndm 448*f0984d40SFabiano RosasSHSAX .... 0110 0011 .... .... 1111 0101 .... @rndm 449*f0984d40SFabiano RosasSHSUB16 .... 0110 0011 .... .... 1111 0111 .... @rndm 450*f0984d40SFabiano RosasSHADD8 .... 0110 0011 .... .... 1111 1001 .... @rndm 451*f0984d40SFabiano RosasSHSUB8 .... 0110 0011 .... .... 1111 1111 .... @rndm 452*f0984d40SFabiano Rosas 453*f0984d40SFabiano RosasUADD16 .... 0110 0101 .... .... 1111 0001 .... @rndm 454*f0984d40SFabiano RosasUASX .... 0110 0101 .... .... 1111 0011 .... @rndm 455*f0984d40SFabiano RosasUSAX .... 0110 0101 .... .... 1111 0101 .... @rndm 456*f0984d40SFabiano RosasUSUB16 .... 0110 0101 .... .... 1111 0111 .... @rndm 457*f0984d40SFabiano RosasUADD8 .... 0110 0101 .... .... 1111 1001 .... @rndm 458*f0984d40SFabiano RosasUSUB8 .... 0110 0101 .... .... 1111 1111 .... @rndm 459*f0984d40SFabiano Rosas 460*f0984d40SFabiano RosasUQADD16 .... 0110 0110 .... .... 1111 0001 .... @rndm 461*f0984d40SFabiano RosasUQASX .... 0110 0110 .... .... 1111 0011 .... @rndm 462*f0984d40SFabiano RosasUQSAX .... 0110 0110 .... .... 1111 0101 .... @rndm 463*f0984d40SFabiano RosasUQSUB16 .... 0110 0110 .... .... 1111 0111 .... @rndm 464*f0984d40SFabiano RosasUQADD8 .... 0110 0110 .... .... 1111 1001 .... @rndm 465*f0984d40SFabiano RosasUQSUB8 .... 0110 0110 .... .... 1111 1111 .... @rndm 466*f0984d40SFabiano Rosas 467*f0984d40SFabiano RosasUHADD16 .... 0110 0111 .... .... 1111 0001 .... @rndm 468*f0984d40SFabiano RosasUHASX .... 0110 0111 .... .... 1111 0011 .... @rndm 469*f0984d40SFabiano RosasUHSAX .... 0110 0111 .... .... 1111 0101 .... @rndm 470*f0984d40SFabiano RosasUHSUB16 .... 0110 0111 .... .... 1111 0111 .... @rndm 471*f0984d40SFabiano RosasUHADD8 .... 0110 0111 .... .... 1111 1001 .... @rndm 472*f0984d40SFabiano RosasUHSUB8 .... 0110 0111 .... .... 1111 1111 .... @rndm 473*f0984d40SFabiano Rosas 474*f0984d40SFabiano Rosas# Packing, unpacking, saturation, and reversal 475*f0984d40SFabiano Rosas 476*f0984d40SFabiano RosasPKH ---- 0110 1000 rn:4 rd:4 imm:5 tb:1 01 rm:4 &pkh 477*f0984d40SFabiano Rosas 478*f0984d40SFabiano Rosas@sat ---- .... ... satimm:5 rd:4 imm:5 sh:1 .. rn:4 &sat 479*f0984d40SFabiano Rosas@sat16 ---- .... .... satimm:4 rd:4 .... .... rn:4 \ 480*f0984d40SFabiano Rosas &sat imm=0 sh=0 481*f0984d40SFabiano Rosas 482*f0984d40SFabiano RosasSSAT .... 0110 101. .... .... .... ..01 .... @sat 483*f0984d40SFabiano RosasUSAT .... 0110 111. .... .... .... ..01 .... @sat 484*f0984d40SFabiano Rosas 485*f0984d40SFabiano RosasSSAT16 .... 0110 1010 .... .... 1111 0011 .... @sat16 486*f0984d40SFabiano RosasUSAT16 .... 0110 1110 .... .... 1111 0011 .... @sat16 487*f0984d40SFabiano Rosas 488*f0984d40SFabiano Rosas@rrr_rot ---- .... .... rn:4 rd:4 rot:2 ...... rm:4 &rrr_rot 489*f0984d40SFabiano Rosas 490*f0984d40SFabiano RosasSXTAB16 .... 0110 1000 .... .... ..00 0111 .... @rrr_rot 491*f0984d40SFabiano RosasSXTAB .... 0110 1010 .... .... ..00 0111 .... @rrr_rot 492*f0984d40SFabiano RosasSXTAH .... 0110 1011 .... .... ..00 0111 .... @rrr_rot 493*f0984d40SFabiano RosasUXTAB16 .... 0110 1100 .... .... ..00 0111 .... @rrr_rot 494*f0984d40SFabiano RosasUXTAB .... 0110 1110 .... .... ..00 0111 .... @rrr_rot 495*f0984d40SFabiano RosasUXTAH .... 0110 1111 .... .... ..00 0111 .... @rrr_rot 496*f0984d40SFabiano Rosas 497*f0984d40SFabiano RosasSEL .... 0110 1000 .... .... 1111 1011 .... @rndm 498*f0984d40SFabiano RosasREV .... 0110 1011 1111 .... 1111 0011 .... @rdm 499*f0984d40SFabiano RosasREV16 .... 0110 1011 1111 .... 1111 1011 .... @rdm 500*f0984d40SFabiano RosasREVSH .... 0110 1111 1111 .... 1111 1011 .... @rdm 501*f0984d40SFabiano RosasRBIT .... 0110 1111 1111 .... 1111 0011 .... @rdm 502*f0984d40SFabiano Rosas 503*f0984d40SFabiano Rosas# Signed multiply, signed and unsigned divide 504*f0984d40SFabiano Rosas 505*f0984d40SFabiano Rosas@rdmn ---- .... .... rd:4 .... rm:4 .... rn:4 &rrr 506*f0984d40SFabiano Rosas 507*f0984d40SFabiano RosasSMLAD .... 0111 0000 .... .... .... 0001 .... @rdamn 508*f0984d40SFabiano RosasSMLADX .... 0111 0000 .... .... .... 0011 .... @rdamn 509*f0984d40SFabiano RosasSMLSD .... 0111 0000 .... .... .... 0101 .... @rdamn 510*f0984d40SFabiano RosasSMLSDX .... 0111 0000 .... .... .... 0111 .... @rdamn 511*f0984d40SFabiano Rosas 512*f0984d40SFabiano RosasSDIV .... 0111 0001 .... 1111 .... 0001 .... @rdmn 513*f0984d40SFabiano RosasUDIV .... 0111 0011 .... 1111 .... 0001 .... @rdmn 514*f0984d40SFabiano Rosas 515*f0984d40SFabiano RosasSMLALD .... 0111 0100 .... .... .... 0001 .... @rdamn 516*f0984d40SFabiano RosasSMLALDX .... 0111 0100 .... .... .... 0011 .... @rdamn 517*f0984d40SFabiano RosasSMLSLD .... 0111 0100 .... .... .... 0101 .... @rdamn 518*f0984d40SFabiano RosasSMLSLDX .... 0111 0100 .... .... .... 0111 .... @rdamn 519*f0984d40SFabiano Rosas 520*f0984d40SFabiano RosasSMMLA .... 0111 0101 .... .... .... 0001 .... @rdamn 521*f0984d40SFabiano RosasSMMLAR .... 0111 0101 .... .... .... 0011 .... @rdamn 522*f0984d40SFabiano RosasSMMLS .... 0111 0101 .... .... .... 1101 .... @rdamn 523*f0984d40SFabiano RosasSMMLSR .... 0111 0101 .... .... .... 1111 .... @rdamn 524*f0984d40SFabiano Rosas 525*f0984d40SFabiano Rosas# Block data transfer 526*f0984d40SFabiano Rosas 527*f0984d40SFabiano RosasSTM ---- 100 b:1 i:1 u:1 w:1 0 rn:4 list:16 &ldst_block 528*f0984d40SFabiano RosasLDM_a32 ---- 100 b:1 i:1 u:1 w:1 1 rn:4 list:16 &ldst_block 529*f0984d40SFabiano Rosas 530*f0984d40SFabiano Rosas# Branch, branch with link 531*f0984d40SFabiano Rosas 532*f0984d40SFabiano Rosas%imm26 0:s24 !function=times_4 533*f0984d40SFabiano Rosas@branch ---- .... ........................ &i imm=%imm26 534*f0984d40SFabiano Rosas 535*f0984d40SFabiano RosasB .... 1010 ........................ @branch 536*f0984d40SFabiano RosasBL .... 1011 ........................ @branch 537*f0984d40SFabiano Rosas 538*f0984d40SFabiano Rosas# Coprocessor instructions 539*f0984d40SFabiano Rosas 540*f0984d40SFabiano Rosas# We decode MCR, MCR, MRRC and MCRR only, because for QEMU the 541*f0984d40SFabiano Rosas# other coprocessor instructions always UNDEF. 542*f0984d40SFabiano Rosas# The trans_ functions for these will ignore cp values 8..13 for v7 or 543*f0984d40SFabiano Rosas# earlier, and 0..13 for v8 and later, because those areas of the 544*f0984d40SFabiano Rosas# encoding space may be used for other things, such as VFP or Neon. 545*f0984d40SFabiano Rosas 546*f0984d40SFabiano Rosas@mcr ---- .... opc1:3 . crn:4 rt:4 cp:4 opc2:3 . crm:4 &mcr 547*f0984d40SFabiano Rosas@mcrr ---- .... .... rt2:4 rt:4 cp:4 opc1:4 crm:4 &mcrr 548*f0984d40SFabiano Rosas 549*f0984d40SFabiano RosasMCRR .... 1100 0100 .... .... .... .... .... @mcrr 550*f0984d40SFabiano RosasMRRC .... 1100 0101 .... .... .... .... .... @mcrr 551*f0984d40SFabiano Rosas 552*f0984d40SFabiano RosasMCR .... 1110 ... 0 .... .... .... ... 1 .... @mcr 553*f0984d40SFabiano RosasMRC .... 1110 ... 1 .... .... .... ... 1 .... @mcr 554*f0984d40SFabiano Rosas 555*f0984d40SFabiano Rosas# Supervisor call 556*f0984d40SFabiano Rosas 557*f0984d40SFabiano RosasSVC ---- 1111 imm:24 &i 558