xref: /qemu/target/arm/tcg/a32.decode (revision f0984d4040c328d1c021ae6680479cbbe13c485b)
151409b9eSRichard Henderson# A32 conditional instructions
251409b9eSRichard Henderson#
351409b9eSRichard Henderson#  Copyright (c) 2019 Linaro, Ltd
451409b9eSRichard Henderson#
551409b9eSRichard Henderson# This library is free software; you can redistribute it and/or
651409b9eSRichard Henderson# modify it under the terms of the GNU Lesser General Public
751409b9eSRichard Henderson# License as published by the Free Software Foundation; either
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#
2151409b9eSRichard Henderson# All of the insn that have a COND field in insn[31:28] are here.
2251409b9eSRichard Henderson# All insns that have 0xf in insn[31:28] are in a32-uncond.decode.
2351409b9eSRichard Henderson#
2425ae32c5SRichard Henderson
2563130596SRichard Henderson&empty
2625ae32c5SRichard Henderson&s_rrr_shi       s rd rn rm shim shty
275be2c123SRichard Henderson&s_rrr_shr       s rn rd rm rs shty
28581c6ebdSRichard Henderson&s_rri_rot       s rn rd imm rot
29bd92fe35SRichard Henderson&s_rrrr          s rd rn rm ra
30bd92fe35SRichard Henderson&rrrr            rd rn rm ra
3146497f6aSRichard Henderson&rrr_rot         rd rn rm rot
326d0730a8SRichard Henderson&rrr             rd rn rm
334c97f5b2SRichard Henderson&rr              rd rm
34145952e8SRichard Henderson&ri              rd imm
354ed95abdSRichard Henderson&r               rm
362cde9ea5SRichard Henderson&i               imm
37d0b26644SRichard Henderson&msr_reg         rn r mask
38d0b26644SRichard Henderson&mrs_reg         rd r
39d0b26644SRichard Henderson&msr_bank        rn r sysm
40d0b26644SRichard Henderson&mrs_bank        rd r sysm
415e291fe1SRichard Henderson&ldst_rr         p w u rn rt rm shimm shtype
425e291fe1SRichard Henderson&ldst_ri         p w u rn rt imm
43c5c426d4SRichard Henderson&ldst_block      rn i b u w list
441efdd407SRichard Henderson&strex           rn rd rt rt2 imm
451efdd407SRichard Henderson&ldrex           rn rt rt2 imm
4686d21e4bSRichard Henderson&bfx             rd rn lsb widthm1
4786d21e4bSRichard Henderson&bfi             rd rn lsb msb
4846497f6aSRichard Henderson&sat             rd rn satimm imm sh
4946497f6aSRichard Henderson&pkh             rd rn rm imm tb
50cd8be50eSPeter Maydell&mcr             cp opc1 crn crm opc2 rt
51cd8be50eSPeter Maydell&mcrr            cp opc1 crm rt rt2
5225ae32c5SRichard Henderson
5325ae32c5SRichard Henderson# Data-processing (register)
5425ae32c5SRichard Henderson
5525ae32c5SRichard Henderson@s_rrr_shi       ---- ... .... s:1 rn:4 rd:4 shim:5 shty:2 . rm:4 \
5625ae32c5SRichard Henderson                 &s_rrr_shi
5725ae32c5SRichard Henderson@s_rxr_shi       ---- ... .... s:1 .... rd:4 shim:5 shty:2 . rm:4 \
5825ae32c5SRichard Henderson                 &s_rrr_shi rn=0
5925ae32c5SRichard Henderson@S_xrr_shi       ---- ... .... .   rn:4 .... shim:5 shty:2 . rm:4 \
6025ae32c5SRichard Henderson                 &s_rrr_shi s=1 rd=0
6125ae32c5SRichard Henderson
6225ae32c5SRichard HendersonAND_rrri         .... 000 0000 . .... .... ..... .. 0 ....    @s_rrr_shi
6325ae32c5SRichard HendersonEOR_rrri         .... 000 0001 . .... .... ..... .. 0 ....    @s_rrr_shi
6425ae32c5SRichard HendersonSUB_rrri         .... 000 0010 . .... .... ..... .. 0 ....    @s_rrr_shi
6525ae32c5SRichard HendersonRSB_rrri         .... 000 0011 . .... .... ..... .. 0 ....    @s_rrr_shi
6625ae32c5SRichard HendersonADD_rrri         .... 000 0100 . .... .... ..... .. 0 ....    @s_rrr_shi
6725ae32c5SRichard HendersonADC_rrri         .... 000 0101 . .... .... ..... .. 0 ....    @s_rrr_shi
6825ae32c5SRichard HendersonSBC_rrri         .... 000 0110 . .... .... ..... .. 0 ....    @s_rrr_shi
6925ae32c5SRichard HendersonRSC_rrri         .... 000 0111 . .... .... ..... .. 0 ....    @s_rrr_shi
7025ae32c5SRichard HendersonTST_xrri         .... 000 1000 1 .... 0000 ..... .. 0 ....    @S_xrr_shi
7125ae32c5SRichard HendersonTEQ_xrri         .... 000 1001 1 .... 0000 ..... .. 0 ....    @S_xrr_shi
7225ae32c5SRichard HendersonCMP_xrri         .... 000 1010 1 .... 0000 ..... .. 0 ....    @S_xrr_shi
7325ae32c5SRichard HendersonCMN_xrri         .... 000 1011 1 .... 0000 ..... .. 0 ....    @S_xrr_shi
7425ae32c5SRichard HendersonORR_rrri         .... 000 1100 . .... .... ..... .. 0 ....    @s_rrr_shi
7525ae32c5SRichard HendersonMOV_rxri         .... 000 1101 . 0000 .... ..... .. 0 ....    @s_rxr_shi
7625ae32c5SRichard HendersonBIC_rrri         .... 000 1110 . .... .... ..... .. 0 ....    @s_rrr_shi
7725ae32c5SRichard HendersonMVN_rxri         .... 000 1111 . 0000 .... ..... .. 0 ....    @s_rxr_shi
785be2c123SRichard Henderson
798f445127SRichard Henderson%imm16           16:4 0:12
808f445127SRichard Henderson@mov16           ---- .... .... .... rd:4 ............        &ri imm=%imm16
818f445127SRichard Henderson
828f445127SRichard HendersonMOVW             .... 0011 0000 .... .... ............        @mov16
838f445127SRichard HendersonMOVT             .... 0011 0100 .... .... ............        @mov16
848f445127SRichard Henderson
855be2c123SRichard Henderson# Data-processing (register-shifted register)
865be2c123SRichard Henderson
875be2c123SRichard Henderson@s_rrr_shr       ---- ... .... s:1 rn:4 rd:4 rs:4 . shty:2 . rm:4 \
885be2c123SRichard Henderson                 &s_rrr_shr
895be2c123SRichard Henderson@s_rxr_shr       ---- ... .... s:1 .... rd:4 rs:4 . shty:2 . rm:4 \
905be2c123SRichard Henderson                 &s_rrr_shr rn=0
915be2c123SRichard Henderson@S_xrr_shr       ---- ... .... .   rn:4 .... rs:4 . shty:2 . rm:4 \
925be2c123SRichard Henderson                 &s_rrr_shr rd=0 s=1
935be2c123SRichard Henderson
945be2c123SRichard HendersonAND_rrrr         .... 000 0000 . .... .... .... 0 .. 1 ....   @s_rrr_shr
955be2c123SRichard HendersonEOR_rrrr         .... 000 0001 . .... .... .... 0 .. 1 ....   @s_rrr_shr
965be2c123SRichard HendersonSUB_rrrr         .... 000 0010 . .... .... .... 0 .. 1 ....   @s_rrr_shr
975be2c123SRichard HendersonRSB_rrrr         .... 000 0011 . .... .... .... 0 .. 1 ....   @s_rrr_shr
985be2c123SRichard HendersonADD_rrrr         .... 000 0100 . .... .... .... 0 .. 1 ....   @s_rrr_shr
995be2c123SRichard HendersonADC_rrrr         .... 000 0101 . .... .... .... 0 .. 1 ....   @s_rrr_shr
1005be2c123SRichard HendersonSBC_rrrr         .... 000 0110 . .... .... .... 0 .. 1 ....   @s_rrr_shr
1015be2c123SRichard HendersonRSC_rrrr         .... 000 0111 . .... .... .... 0 .. 1 ....   @s_rrr_shr
1025be2c123SRichard HendersonTST_xrrr         .... 000 1000 1 .... 0000 .... 0 .. 1 ....   @S_xrr_shr
1035be2c123SRichard HendersonTEQ_xrrr         .... 000 1001 1 .... 0000 .... 0 .. 1 ....   @S_xrr_shr
1045be2c123SRichard HendersonCMP_xrrr         .... 000 1010 1 .... 0000 .... 0 .. 1 ....   @S_xrr_shr
1055be2c123SRichard HendersonCMN_xrrr         .... 000 1011 1 .... 0000 .... 0 .. 1 ....   @S_xrr_shr
1065be2c123SRichard HendersonORR_rrrr         .... 000 1100 . .... .... .... 0 .. 1 ....   @s_rrr_shr
1075be2c123SRichard HendersonMOV_rxrr         .... 000 1101 . 0000 .... .... 0 .. 1 ....   @s_rxr_shr
1085be2c123SRichard HendersonBIC_rrrr         .... 000 1110 . .... .... .... 0 .. 1 ....   @s_rrr_shr
1095be2c123SRichard HendersonMVN_rxrr         .... 000 1111 . 0000 .... .... 0 .. 1 ....   @s_rxr_shr
110581c6ebdSRichard Henderson
111581c6ebdSRichard Henderson# Data-processing (immediate)
112581c6ebdSRichard Henderson
113581c6ebdSRichard Henderson%a32extrot       8:4 !function=times_2
114581c6ebdSRichard Henderson
115581c6ebdSRichard Henderson@s_rri_rot       ---- ... .... s:1 rn:4 rd:4 .... imm:8 \
116581c6ebdSRichard Henderson                 &s_rri_rot rot=%a32extrot
117581c6ebdSRichard Henderson@s_rxi_rot       ---- ... .... s:1 .... rd:4 .... imm:8 \
118581c6ebdSRichard Henderson                 &s_rri_rot rot=%a32extrot rn=0
119581c6ebdSRichard Henderson@S_xri_rot       ---- ... .... .   rn:4 .... .... imm:8 \
120581c6ebdSRichard Henderson                 &s_rri_rot rot=%a32extrot rd=0 s=1
121581c6ebdSRichard Henderson
122581c6ebdSRichard HendersonAND_rri          .... 001 0000 . .... .... ............       @s_rri_rot
123581c6ebdSRichard HendersonEOR_rri          .... 001 0001 . .... .... ............       @s_rri_rot
124581c6ebdSRichard HendersonSUB_rri          .... 001 0010 . .... .... ............       @s_rri_rot
125581c6ebdSRichard HendersonRSB_rri          .... 001 0011 . .... .... ............       @s_rri_rot
126581c6ebdSRichard HendersonADD_rri          .... 001 0100 . .... .... ............       @s_rri_rot
127581c6ebdSRichard HendersonADC_rri          .... 001 0101 . .... .... ............       @s_rri_rot
128581c6ebdSRichard HendersonSBC_rri          .... 001 0110 . .... .... ............       @s_rri_rot
129581c6ebdSRichard HendersonRSC_rri          .... 001 0111 . .... .... ............       @s_rri_rot
130581c6ebdSRichard HendersonTST_xri          .... 001 1000 1 .... 0000 ............       @S_xri_rot
131581c6ebdSRichard HendersonTEQ_xri          .... 001 1001 1 .... 0000 ............       @S_xri_rot
132581c6ebdSRichard HendersonCMP_xri          .... 001 1010 1 .... 0000 ............       @S_xri_rot
133581c6ebdSRichard HendersonCMN_xri          .... 001 1011 1 .... 0000 ............       @S_xri_rot
134581c6ebdSRichard HendersonORR_rri          .... 001 1100 . .... .... ............       @s_rri_rot
135581c6ebdSRichard HendersonMOV_rxi          .... 001 1101 . 0000 .... ............       @s_rxi_rot
136581c6ebdSRichard HendersonBIC_rri          .... 001 1110 . .... .... ............       @s_rri_rot
137581c6ebdSRichard HendersonMVN_rxi          .... 001 1111 . 0000 .... ............       @s_rxi_rot
138bd92fe35SRichard Henderson
139bd92fe35SRichard Henderson# Multiply and multiply accumulate
140bd92fe35SRichard Henderson
141bd92fe35SRichard Henderson@s_rdamn         ---- .... ... s:1 rd:4 ra:4 rm:4 .... rn:4   &s_rrrr
142bd92fe35SRichard Henderson@s_rd0mn         ---- .... ... s:1 rd:4 .... rm:4 .... rn:4   &s_rrrr ra=0
143bd92fe35SRichard Henderson@rdamn           ---- .... ... .   rd:4 ra:4 rm:4 .... rn:4   &rrrr
14426c6923dSRichard Henderson@rd0mn           ---- .... ... .   rd:4 .... rm:4 .... rn:4   &rrrr ra=0
145bd92fe35SRichard Henderson
146bd92fe35SRichard HendersonMUL              .... 0000 000 . .... 0000 .... 1001 ....     @s_rd0mn
147bd92fe35SRichard HendersonMLA              .... 0000 001 . .... .... .... 1001 ....     @s_rdamn
148bd92fe35SRichard HendersonUMAAL            .... 0000 010 0 .... .... .... 1001 ....     @rdamn
149bd92fe35SRichard HendersonMLS              .... 0000 011 0 .... .... .... 1001 ....     @rdamn
150bd92fe35SRichard HendersonUMULL            .... 0000 100 . .... .... .... 1001 ....     @s_rdamn
151bd92fe35SRichard HendersonUMLAL            .... 0000 101 . .... .... .... 1001 ....     @s_rdamn
152bd92fe35SRichard HendersonSMULL            .... 0000 110 . .... .... .... 1001 ....     @s_rdamn
153bd92fe35SRichard HendersonSMLAL            .... 0000 111 . .... .... .... 1001 ....     @s_rdamn
1546d0730a8SRichard Henderson
1556d0730a8SRichard Henderson# Saturating addition and subtraction
1566d0730a8SRichard Henderson
1576d0730a8SRichard Henderson@rndm            ---- .... .... rn:4 rd:4 .... .... rm:4      &rrr
1586d0730a8SRichard Henderson
1596d0730a8SRichard HendersonQADD             .... 0001 0000 .... .... 0000 0101 ....      @rndm
1606d0730a8SRichard HendersonQSUB             .... 0001 0010 .... .... 0000 0101 ....      @rndm
1616d0730a8SRichard HendersonQDADD            .... 0001 0100 .... .... 0000 0101 ....      @rndm
1626d0730a8SRichard HendersonQDSUB            .... 0001 0110 .... .... 0000 0101 ....      @rndm
16326c6923dSRichard Henderson
16426c6923dSRichard Henderson# Halfword multiply and multiply accumulate
16526c6923dSRichard Henderson
16626c6923dSRichard HendersonSMLABB           .... 0001 0000 .... .... .... 1000 ....      @rdamn
16726c6923dSRichard HendersonSMLABT           .... 0001 0000 .... .... .... 1100 ....      @rdamn
16826c6923dSRichard HendersonSMLATB           .... 0001 0000 .... .... .... 1010 ....      @rdamn
16926c6923dSRichard HendersonSMLATT           .... 0001 0000 .... .... .... 1110 ....      @rdamn
17026c6923dSRichard HendersonSMLAWB           .... 0001 0010 .... .... .... 1000 ....      @rdamn
17126c6923dSRichard HendersonSMULWB           .... 0001 0010 .... 0000 .... 1010 ....      @rd0mn
17226c6923dSRichard HendersonSMLAWT           .... 0001 0010 .... .... .... 1100 ....      @rdamn
17326c6923dSRichard HendersonSMULWT           .... 0001 0010 .... 0000 .... 1110 ....      @rd0mn
17426c6923dSRichard HendersonSMLALBB          .... 0001 0100 .... .... .... 1000 ....      @rdamn
17526c6923dSRichard HendersonSMLALBT          .... 0001 0100 .... .... .... 1100 ....      @rdamn
17626c6923dSRichard HendersonSMLALTB          .... 0001 0100 .... .... .... 1010 ....      @rdamn
17726c6923dSRichard HendersonSMLALTT          .... 0001 0100 .... .... .... 1110 ....      @rdamn
17826c6923dSRichard HendersonSMULBB           .... 0001 0110 .... 0000 .... 1000 ....      @rd0mn
17926c6923dSRichard HendersonSMULBT           .... 0001 0110 .... 0000 .... 1100 ....      @rd0mn
18026c6923dSRichard HendersonSMULTB           .... 0001 0110 .... 0000 .... 1010 ....      @rd0mn
18126c6923dSRichard HendersonSMULTT           .... 0001 0110 .... 0000 .... 1110 ....      @rd0mn
18263130596SRichard Henderson
18363130596SRichard Henderson# MSR (immediate) and hints
18463130596SRichard Henderson
18563130596SRichard Henderson&msr_i           r mask rot imm
18663130596SRichard Henderson@msr_i           ---- .... .... mask:4 .... rot:4 imm:8       &msr_i
18763130596SRichard Henderson
18863130596SRichard Henderson{
18963130596SRichard Henderson  {
190*13954587SRichard Henderson    [
19163130596SRichard Henderson      YIELD      ---- 0011 0010 0000 1111 ---- 0000 0001
19263130596SRichard Henderson      WFE        ---- 0011 0010 0000 1111 ---- 0000 0010
19363130596SRichard Henderson      WFI        ---- 0011 0010 0000 1111 ---- 0000 0011
19463130596SRichard Henderson
19563130596SRichard Henderson      # TODO: Implement SEV, SEVL; may help SMP performance.
19663130596SRichard Henderson      # SEV      ---- 0011 0010 0000 1111 ---- 0000 0100
19763130596SRichard Henderson      # SEVL     ---- 0011 0010 0000 1111 ---- 0000 0101
19863130596SRichard Henderson
199*13954587SRichard Henderson      ESB        ---- 0011 0010 0000 1111 ---- 0001 0000
200*13954587SRichard Henderson    ]
201*13954587SRichard Henderson
20263130596SRichard Henderson    # The canonical nop ends in 00000000, but the whole of the
20363130596SRichard Henderson    # rest of the space executes as nop if otherwise unsupported.
20463130596SRichard Henderson    NOP          ---- 0011 0010 0000 1111 ---- ---- ----
20563130596SRichard Henderson  }
20663130596SRichard Henderson  # Note mask = 0 is covered by NOP
20763130596SRichard Henderson  MSR_imm        .... 0011 0010 .... 1111 .... .... ....      @msr_i r=0
20863130596SRichard Henderson}
20963130596SRichard HendersonMSR_imm          .... 0011 0110 .... 1111 .... .... ....      @msr_i r=1
210d0b26644SRichard Henderson
2116c35d53fSRichard Henderson# Cyclic Redundancy Check
2126c35d53fSRichard Henderson
2136c35d53fSRichard HendersonCRC32B           .... 0001 0000 .... .... 0000 0100 ....      @rndm
2146c35d53fSRichard HendersonCRC32H           .... 0001 0010 .... .... 0000 0100 ....      @rndm
2156c35d53fSRichard HendersonCRC32W           .... 0001 0100 .... .... 0000 0100 ....      @rndm
2166c35d53fSRichard HendersonCRC32CB          .... 0001 0000 .... .... 0010 0100 ....      @rndm
2176c35d53fSRichard HendersonCRC32CH          .... 0001 0010 .... .... 0010 0100 ....      @rndm
2186c35d53fSRichard HendersonCRC32CW          .... 0001 0100 .... .... 0010 0100 ....      @rndm
2196c35d53fSRichard Henderson
220d0b26644SRichard Henderson# Miscellaneous instructions
221d0b26644SRichard Henderson
222d0b26644SRichard Henderson%sysm            8:1 16:4
2232cde9ea5SRichard Henderson%imm16_8_0       8:12 0:4
224d0b26644SRichard Henderson
2254ed95abdSRichard Henderson@rm              ---- .... .... .... .... .... .... rm:4      &r
2264c97f5b2SRichard Henderson@rdm             ---- .... .... .... rd:4 .... .... rm:4      &rr
2272cde9ea5SRichard Henderson@i16             ---- .... .... .... .... .... .... ....      &i imm=%imm16_8_0
2284ed95abdSRichard Henderson
229d0b26644SRichard HendersonMRS_bank         ---- 0001 0 r:1 00 .... rd:4 001. 0000 0000  &mrs_bank %sysm
230d0b26644SRichard HendersonMSR_bank         ---- 0001 0 r:1 10 .... 1111 001. 0000 rn:4  &msr_bank %sysm
231d0b26644SRichard Henderson
232d0b26644SRichard HendersonMRS_reg          ---- 0001 0 r:1 00 1111   rd:4 0000 0000 0000  &mrs_reg
233d0b26644SRichard HendersonMSR_reg          ---- 0001 0 r:1 10 mask:4 1111 0000 0000 rn:4  &msr_reg
2344ed95abdSRichard Henderson
2354ed95abdSRichard HendersonBX               .... 0001 0010 1111 1111 1111 0001 ....      @rm
2364ed95abdSRichard HendersonBXJ              .... 0001 0010 1111 1111 1111 0010 ....      @rm
2374ed95abdSRichard HendersonBLX_r            .... 0001 0010 1111 1111 1111 0011 ....      @rm
2384c97f5b2SRichard Henderson
2394c97f5b2SRichard HendersonCLZ              .... 0001 0110 1111 .... 1111 0001 ....      @rdm
240ef11bc3cSRichard Henderson
241ef11bc3cSRichard HendersonERET             ---- 0001 0110 0000 0000 0000 0110 1110
2422cde9ea5SRichard Henderson
2432cde9ea5SRichard HendersonHLT              .... 0001 0000 .... .... .... 0111 ....      @i16
2442cde9ea5SRichard HendersonBKPT             .... 0001 0010 .... .... .... 0111 ....      @i16
2452cde9ea5SRichard HendersonHVC              .... 0001 0100 .... .... .... 0111 ....      @i16
2462cde9ea5SRichard HendersonSMC              ---- 0001 0110 0000 0000 0000 0111 imm:4     &i
2475e291fe1SRichard Henderson
2485e291fe1SRichard Henderson# Load/Store Dual, Half, Signed Byte (register)
2495e291fe1SRichard Henderson
2505e291fe1SRichard Henderson@ldst_rr_p1w     ---- ...1 u:1 . w:1 . rn:4 rt:4 .... .... rm:4 \
2515e291fe1SRichard Henderson                 &ldst_rr p=1 shimm=0 shtype=0
2525e291fe1SRichard Henderson@ldst_rr_pw0     ---- ...0 u:1 . 0   . rn:4 rt:4 .... .... rm:4 \
2535e291fe1SRichard Henderson                 &ldst_rr p=0 w=0 shimm=0 shtype=0
2545e291fe1SRichard Henderson
2555e291fe1SRichard HendersonSTRH_rr          .... 000. .0.0 .... .... 0000 1011 ....      @ldst_rr_pw0
2565e291fe1SRichard HendersonSTRH_rr          .... 000. .0.0 .... .... 0000 1011 ....      @ldst_rr_p1w
2575e291fe1SRichard Henderson
2585e291fe1SRichard HendersonLDRD_rr          .... 000. .0.0 .... .... 0000 1101 ....      @ldst_rr_pw0
2595e291fe1SRichard HendersonLDRD_rr          .... 000. .0.0 .... .... 0000 1101 ....      @ldst_rr_p1w
2605e291fe1SRichard Henderson
2615e291fe1SRichard HendersonSTRD_rr          .... 000. .0.0 .... .... 0000 1111 ....      @ldst_rr_pw0
2625e291fe1SRichard HendersonSTRD_rr          .... 000. .0.0 .... .... 0000 1111 ....      @ldst_rr_p1w
2635e291fe1SRichard Henderson
2645e291fe1SRichard HendersonLDRH_rr          .... 000. .0.1 .... .... 0000 1011 ....      @ldst_rr_pw0
2655e291fe1SRichard HendersonLDRH_rr          .... 000. .0.1 .... .... 0000 1011 ....      @ldst_rr_p1w
2665e291fe1SRichard Henderson
2675e291fe1SRichard HendersonLDRSB_rr         .... 000. .0.1 .... .... 0000 1101 ....      @ldst_rr_pw0
2685e291fe1SRichard HendersonLDRSB_rr         .... 000. .0.1 .... .... 0000 1101 ....      @ldst_rr_p1w
2695e291fe1SRichard Henderson
2705e291fe1SRichard HendersonLDRSH_rr         .... 000. .0.1 .... .... 0000 1111 ....      @ldst_rr_pw0
2715e291fe1SRichard HendersonLDRSH_rr         .... 000. .0.1 .... .... 0000 1111 ....      @ldst_rr_p1w
2725e291fe1SRichard Henderson
2735e291fe1SRichard Henderson# Note the unpriv load/stores use the previously invalid P=0, W=1 encoding,
2745e291fe1SRichard Henderson# and act as normal post-indexed (P=0, W=0).
2755e291fe1SRichard Henderson@ldst_rr_p0w1    ---- ...0 u:1 . 1   . rn:4 rt:4 .... .... rm:4 \
2765e291fe1SRichard Henderson                 &ldst_rr p=0 w=0 shimm=0 shtype=0
2775e291fe1SRichard Henderson
2785e291fe1SRichard HendersonSTRHT_rr         .... 000. .0.0 .... .... 0000 1011 ....      @ldst_rr_p0w1
2795e291fe1SRichard HendersonLDRHT_rr         .... 000. .0.1 .... .... 0000 1011 ....      @ldst_rr_p0w1
2805e291fe1SRichard HendersonLDRSBT_rr        .... 000. .0.1 .... .... 0000 1101 ....      @ldst_rr_p0w1
2815e291fe1SRichard HendersonLDRSHT_rr        .... 000. .0.1 .... .... 0000 1111 ....      @ldst_rr_p0w1
2825e291fe1SRichard Henderson
2835e291fe1SRichard Henderson# Load/Store word and unsigned byte (register)
2845e291fe1SRichard Henderson
2855e291fe1SRichard Henderson@ldst_rs_p1w     ---- ...1 u:1 . w:1 . rn:4 rt:4 shimm:5 shtype:2 . rm:4 \
2865e291fe1SRichard Henderson                 &ldst_rr p=1
2875e291fe1SRichard Henderson@ldst_rs_pw0     ---- ...0 u:1 . 0   . rn:4 rt:4 shimm:5 shtype:2 . rm:4 \
2885e291fe1SRichard Henderson                 &ldst_rr p=0 w=0
2895e291fe1SRichard Henderson
2905e291fe1SRichard HendersonSTR_rr           .... 011. .0.0 .... .... .... ...0 ....      @ldst_rs_pw0
2915e291fe1SRichard HendersonSTR_rr           .... 011. .0.0 .... .... .... ...0 ....      @ldst_rs_p1w
2925e291fe1SRichard HendersonSTRB_rr          .... 011. .1.0 .... .... .... ...0 ....      @ldst_rs_pw0
2935e291fe1SRichard HendersonSTRB_rr          .... 011. .1.0 .... .... .... ...0 ....      @ldst_rs_p1w
2945e291fe1SRichard Henderson
2955e291fe1SRichard HendersonLDR_rr           .... 011. .0.1 .... .... .... ...0 ....      @ldst_rs_pw0
2965e291fe1SRichard HendersonLDR_rr           .... 011. .0.1 .... .... .... ...0 ....      @ldst_rs_p1w
2975e291fe1SRichard HendersonLDRB_rr          .... 011. .1.1 .... .... .... ...0 ....      @ldst_rs_pw0
2985e291fe1SRichard HendersonLDRB_rr          .... 011. .1.1 .... .... .... ...0 ....      @ldst_rs_p1w
2995e291fe1SRichard Henderson
3005e291fe1SRichard Henderson@ldst_rs_p0w1    ---- ...0 u:1 . 1   . rn:4 rt:4 shimm:5 shtype:2 . rm:4 \
3015e291fe1SRichard Henderson                 &ldst_rr p=0 w=0
3025e291fe1SRichard Henderson
3035e291fe1SRichard HendersonSTRT_rr          .... 011. .0.0 .... .... .... ...0 ....      @ldst_rs_p0w1
3045e291fe1SRichard HendersonSTRBT_rr         .... 011. .1.0 .... .... .... ...0 ....      @ldst_rs_p0w1
3055e291fe1SRichard HendersonLDRT_rr          .... 011. .0.1 .... .... .... ...0 ....      @ldst_rs_p0w1
3065e291fe1SRichard HendersonLDRBT_rr         .... 011. .1.1 .... .... .... ...0 ....      @ldst_rs_p0w1
3075e291fe1SRichard Henderson
3085e291fe1SRichard Henderson# Load/Store Dual, Half, Signed Byte (immediate)
3095e291fe1SRichard Henderson
3105e291fe1SRichard Henderson%imm8s_8_0       8:4 0:4
3115e291fe1SRichard Henderson@ldst_ri8_p1w    ---- ...1 u:1 . w:1 . rn:4 rt:4 .... .... .... \
3125e291fe1SRichard Henderson                 &ldst_ri imm=%imm8s_8_0 p=1
3135e291fe1SRichard Henderson@ldst_ri8_pw0    ---- ...0 u:1 . 0   . rn:4 rt:4 .... .... .... \
3145e291fe1SRichard Henderson                 &ldst_ri imm=%imm8s_8_0 p=0 w=0
3155e291fe1SRichard Henderson
3165e291fe1SRichard HendersonSTRH_ri          .... 000. .1.0 .... .... .... 1011 ....      @ldst_ri8_pw0
3175e291fe1SRichard HendersonSTRH_ri          .... 000. .1.0 .... .... .... 1011 ....      @ldst_ri8_p1w
3185e291fe1SRichard Henderson
3195e291fe1SRichard HendersonLDRD_ri_a32      .... 000. .1.0 .... .... .... 1101 ....      @ldst_ri8_pw0
3205e291fe1SRichard HendersonLDRD_ri_a32      .... 000. .1.0 .... .... .... 1101 ....      @ldst_ri8_p1w
3215e291fe1SRichard Henderson
3225e291fe1SRichard HendersonSTRD_ri_a32      .... 000. .1.0 .... .... .... 1111 ....      @ldst_ri8_pw0
3235e291fe1SRichard HendersonSTRD_ri_a32      .... 000. .1.0 .... .... .... 1111 ....      @ldst_ri8_p1w
3245e291fe1SRichard Henderson
3255e291fe1SRichard HendersonLDRH_ri          .... 000. .1.1 .... .... .... 1011 ....      @ldst_ri8_pw0
3265e291fe1SRichard HendersonLDRH_ri          .... 000. .1.1 .... .... .... 1011 ....      @ldst_ri8_p1w
3275e291fe1SRichard Henderson
3285e291fe1SRichard HendersonLDRSB_ri         .... 000. .1.1 .... .... .... 1101 ....      @ldst_ri8_pw0
3295e291fe1SRichard HendersonLDRSB_ri         .... 000. .1.1 .... .... .... 1101 ....      @ldst_ri8_p1w
3305e291fe1SRichard Henderson
3315e291fe1SRichard HendersonLDRSH_ri         .... 000. .1.1 .... .... .... 1111 ....      @ldst_ri8_pw0
3325e291fe1SRichard HendersonLDRSH_ri         .... 000. .1.1 .... .... .... 1111 ....      @ldst_ri8_p1w
3335e291fe1SRichard Henderson
3345e291fe1SRichard Henderson# Note the unpriv load/stores use the previously invalid P=0, W=1 encoding,
3355e291fe1SRichard Henderson# and act as normal post-indexed (P=0, W=0).
3365e291fe1SRichard Henderson@ldst_ri8_p0w1   ---- ...0 u:1 . 1   . rn:4 rt:4 .... .... .... \
3375e291fe1SRichard Henderson                 &ldst_ri imm=%imm8s_8_0 p=0 w=0
3385e291fe1SRichard Henderson
3395e291fe1SRichard HendersonSTRHT_ri         .... 000. .1.0 .... .... .... 1011 ....      @ldst_ri8_p0w1
3405e291fe1SRichard HendersonLDRHT_ri         .... 000. .1.1 .... .... .... 1011 ....      @ldst_ri8_p0w1
3415e291fe1SRichard HendersonLDRSBT_ri        .... 000. .1.1 .... .... .... 1101 ....      @ldst_ri8_p0w1
3425e291fe1SRichard HendersonLDRSHT_ri        .... 000. .1.1 .... .... .... 1111 ....      @ldst_ri8_p0w1
3435e291fe1SRichard Henderson
3445e291fe1SRichard Henderson# Load/Store word and unsigned byte (immediate)
3455e291fe1SRichard Henderson
3465e291fe1SRichard Henderson@ldst_ri12_p1w   ---- ...1 u:1 . w:1 . rn:4 rt:4 imm:12       &ldst_ri p=1
3475e291fe1SRichard Henderson@ldst_ri12_pw0   ---- ...0 u:1 . 0   . rn:4 rt:4 imm:12       &ldst_ri p=0 w=0
3485e291fe1SRichard Henderson
3495e291fe1SRichard HendersonSTR_ri           .... 010. .0.0 .... .... ............        @ldst_ri12_p1w
3505e291fe1SRichard HendersonSTR_ri           .... 010. .0.0 .... .... ............        @ldst_ri12_pw0
3515e291fe1SRichard HendersonSTRB_ri          .... 010. .1.0 .... .... ............        @ldst_ri12_p1w
3525e291fe1SRichard HendersonSTRB_ri          .... 010. .1.0 .... .... ............        @ldst_ri12_pw0
3535e291fe1SRichard Henderson
3545e291fe1SRichard HendersonLDR_ri           .... 010. .0.1 .... .... ............        @ldst_ri12_p1w
3555e291fe1SRichard HendersonLDR_ri           .... 010. .0.1 .... .... ............        @ldst_ri12_pw0
3565e291fe1SRichard HendersonLDRB_ri          .... 010. .1.1 .... .... ............        @ldst_ri12_p1w
3575e291fe1SRichard HendersonLDRB_ri          .... 010. .1.1 .... .... ............        @ldst_ri12_pw0
3585e291fe1SRichard Henderson
3595e291fe1SRichard Henderson@ldst_ri12_p0w1  ---- ...0 u:1 . 1 . rn:4 rt:4 imm:12         &ldst_ri p=0 w=0
3605e291fe1SRichard Henderson
3615e291fe1SRichard HendersonSTRT_ri          .... 010. .0.0 .... .... ............        @ldst_ri12_p0w1
3625e291fe1SRichard HendersonSTRBT_ri         .... 010. .1.0 .... .... ............        @ldst_ri12_p0w1
3635e291fe1SRichard HendersonLDRT_ri          .... 010. .0.1 .... .... ............        @ldst_ri12_p0w1
3645e291fe1SRichard HendersonLDRBT_ri         .... 010. .1.1 .... .... ............        @ldst_ri12_p0w1
3651efdd407SRichard Henderson
3661efdd407SRichard Henderson# Synchronization primitives
3671efdd407SRichard Henderson
3681efdd407SRichard Henderson@swp             ---- .... .... rn:4 rt:4 .... .... rt2:4
3691efdd407SRichard Henderson
3701efdd407SRichard HendersonSWP              .... 0001 0000 .... .... 0000 1001 ....      @swp
3711efdd407SRichard HendersonSWPB             .... 0001 0100 .... .... 0000 1001 ....      @swp
3721efdd407SRichard Henderson
3731efdd407SRichard Henderson# Load/Store Exclusive and Load-Acquire/Store-Release
3741efdd407SRichard Henderson#
3751efdd407SRichard Henderson# Note rt2 for STREXD/LDREXD is set by the helper after checking rt is even.
3761efdd407SRichard Henderson
3771efdd407SRichard Henderson@strex           ---- .... .... rn:4 rd:4 .... .... rt:4 \
3781efdd407SRichard Henderson                 &strex imm=0 rt2=15
3791efdd407SRichard Henderson@ldrex           ---- .... .... rn:4 rt:4 .... .... .... \
3801efdd407SRichard Henderson                 &ldrex imm=0 rt2=15
3811efdd407SRichard Henderson@stl             ---- .... .... rn:4 .... .... .... rt:4 \
3821efdd407SRichard Henderson                 &ldrex imm=0 rt2=15
3831efdd407SRichard Henderson
3841efdd407SRichard HendersonSTREX            .... 0001 1000 .... .... 1111 1001 ....      @strex
3851efdd407SRichard HendersonSTREXD_a32       .... 0001 1010 .... .... 1111 1001 ....      @strex
3861efdd407SRichard HendersonSTREXB           .... 0001 1100 .... .... 1111 1001 ....      @strex
3871efdd407SRichard HendersonSTREXH           .... 0001 1110 .... .... 1111 1001 ....      @strex
3881efdd407SRichard Henderson
3891efdd407SRichard HendersonSTLEX            .... 0001 1000 .... .... 1110 1001 ....      @strex
3901efdd407SRichard HendersonSTLEXD_a32       .... 0001 1010 .... .... 1110 1001 ....      @strex
3911efdd407SRichard HendersonSTLEXB           .... 0001 1100 .... .... 1110 1001 ....      @strex
3921efdd407SRichard HendersonSTLEXH           .... 0001 1110 .... .... 1110 1001 ....      @strex
3931efdd407SRichard Henderson
3941efdd407SRichard HendersonSTL              .... 0001 1000 .... 1111 1100 1001 ....      @stl
3951efdd407SRichard HendersonSTLB             .... 0001 1100 .... 1111 1100 1001 ....      @stl
3961efdd407SRichard HendersonSTLH             .... 0001 1110 .... 1111 1100 1001 ....      @stl
3971efdd407SRichard Henderson
3981efdd407SRichard HendersonLDREX            .... 0001 1001 .... .... 1111 1001 1111      @ldrex
3991efdd407SRichard HendersonLDREXD_a32       .... 0001 1011 .... .... 1111 1001 1111      @ldrex
4001efdd407SRichard HendersonLDREXB           .... 0001 1101 .... .... 1111 1001 1111      @ldrex
4011efdd407SRichard HendersonLDREXH           .... 0001 1111 .... .... 1111 1001 1111      @ldrex
4021efdd407SRichard Henderson
4031efdd407SRichard HendersonLDAEX            .... 0001 1001 .... .... 1110 1001 1111      @ldrex
4041efdd407SRichard HendersonLDAEXD_a32       .... 0001 1011 .... .... 1110 1001 1111      @ldrex
4051efdd407SRichard HendersonLDAEXB           .... 0001 1101 .... .... 1110 1001 1111      @ldrex
4061efdd407SRichard HendersonLDAEXH           .... 0001 1111 .... .... 1110 1001 1111      @ldrex
4071efdd407SRichard Henderson
4081efdd407SRichard HendersonLDA              .... 0001 1001 .... .... 1100 1001 1111      @ldrex
4091efdd407SRichard HendersonLDAB             .... 0001 1101 .... .... 1100 1001 1111      @ldrex
4101efdd407SRichard HendersonLDAH             .... 0001 1111 .... .... 1100 1001 1111      @ldrex
41186d21e4bSRichard Henderson
41286d21e4bSRichard Henderson# Media instructions
41386d21e4bSRichard Henderson
41486d21e4bSRichard Henderson# usad8 is usada8 w/ ra=15
41586d21e4bSRichard HendersonUSADA8           ---- 0111 1000 rd:4 ra:4 rm:4 0001 rn:4
41686d21e4bSRichard Henderson
41786d21e4bSRichard Henderson# ubfx and sbfx
41886d21e4bSRichard Henderson@bfx             ---- .... ... widthm1:5 rd:4 lsb:5 ... rn:4  &bfx
41986d21e4bSRichard Henderson
42086d21e4bSRichard HendersonSBFX             .... 0111 101 ..... .... ..... 101 ....      @bfx
42186d21e4bSRichard HendersonUBFX             .... 0111 111 ..... .... ..... 101 ....      @bfx
42286d21e4bSRichard Henderson
42386d21e4bSRichard Henderson# bfc is bfi w/ rn=15
42486d21e4bSRichard HendersonBFCI             ---- 0111 110 msb:5 rd:4 lsb:5 001 rn:4      &bfi
42586d21e4bSRichard Henderson
42686d21e4bSRichard Henderson# While we could get UDEF by not including this, add the pattern for
42786d21e4bSRichard Henderson# documentation and to conflict with any other typos in this file.
42886d21e4bSRichard HendersonUDF              1110 0111 1111 ---- ---- ---- 1111 ----
429adf1a566SRichard Henderson
430adf1a566SRichard Henderson# Parallel addition and subtraction
431adf1a566SRichard Henderson
432adf1a566SRichard HendersonSADD16           .... 0110 0001 .... .... 1111 0001 ....      @rndm
433adf1a566SRichard HendersonSASX             .... 0110 0001 .... .... 1111 0011 ....      @rndm
434adf1a566SRichard HendersonSSAX             .... 0110 0001 .... .... 1111 0101 ....      @rndm
435adf1a566SRichard HendersonSSUB16           .... 0110 0001 .... .... 1111 0111 ....      @rndm
436adf1a566SRichard HendersonSADD8            .... 0110 0001 .... .... 1111 1001 ....      @rndm
437adf1a566SRichard HendersonSSUB8            .... 0110 0001 .... .... 1111 1111 ....      @rndm
438adf1a566SRichard Henderson
439adf1a566SRichard HendersonQADD16           .... 0110 0010 .... .... 1111 0001 ....      @rndm
440adf1a566SRichard HendersonQASX             .... 0110 0010 .... .... 1111 0011 ....      @rndm
441adf1a566SRichard HendersonQSAX             .... 0110 0010 .... .... 1111 0101 ....      @rndm
442adf1a566SRichard HendersonQSUB16           .... 0110 0010 .... .... 1111 0111 ....      @rndm
443adf1a566SRichard HendersonQADD8            .... 0110 0010 .... .... 1111 1001 ....      @rndm
444adf1a566SRichard HendersonQSUB8            .... 0110 0010 .... .... 1111 1111 ....      @rndm
445adf1a566SRichard Henderson
446adf1a566SRichard HendersonSHADD16          .... 0110 0011 .... .... 1111 0001 ....      @rndm
447adf1a566SRichard HendersonSHASX            .... 0110 0011 .... .... 1111 0011 ....      @rndm
448adf1a566SRichard HendersonSHSAX            .... 0110 0011 .... .... 1111 0101 ....      @rndm
449adf1a566SRichard HendersonSHSUB16          .... 0110 0011 .... .... 1111 0111 ....      @rndm
450adf1a566SRichard HendersonSHADD8           .... 0110 0011 .... .... 1111 1001 ....      @rndm
451adf1a566SRichard HendersonSHSUB8           .... 0110 0011 .... .... 1111 1111 ....      @rndm
452adf1a566SRichard Henderson
453adf1a566SRichard HendersonUADD16           .... 0110 0101 .... .... 1111 0001 ....      @rndm
454adf1a566SRichard HendersonUASX             .... 0110 0101 .... .... 1111 0011 ....      @rndm
455adf1a566SRichard HendersonUSAX             .... 0110 0101 .... .... 1111 0101 ....      @rndm
456adf1a566SRichard HendersonUSUB16           .... 0110 0101 .... .... 1111 0111 ....      @rndm
457adf1a566SRichard HendersonUADD8            .... 0110 0101 .... .... 1111 1001 ....      @rndm
458adf1a566SRichard HendersonUSUB8            .... 0110 0101 .... .... 1111 1111 ....      @rndm
459adf1a566SRichard Henderson
460adf1a566SRichard HendersonUQADD16          .... 0110 0110 .... .... 1111 0001 ....      @rndm
461adf1a566SRichard HendersonUQASX            .... 0110 0110 .... .... 1111 0011 ....      @rndm
462adf1a566SRichard HendersonUQSAX            .... 0110 0110 .... .... 1111 0101 ....      @rndm
463adf1a566SRichard HendersonUQSUB16          .... 0110 0110 .... .... 1111 0111 ....      @rndm
464adf1a566SRichard HendersonUQADD8           .... 0110 0110 .... .... 1111 1001 ....      @rndm
465adf1a566SRichard HendersonUQSUB8           .... 0110 0110 .... .... 1111 1111 ....      @rndm
466adf1a566SRichard Henderson
467adf1a566SRichard HendersonUHADD16          .... 0110 0111 .... .... 1111 0001 ....      @rndm
468adf1a566SRichard HendersonUHASX            .... 0110 0111 .... .... 1111 0011 ....      @rndm
469adf1a566SRichard HendersonUHSAX            .... 0110 0111 .... .... 1111 0101 ....      @rndm
470adf1a566SRichard HendersonUHSUB16          .... 0110 0111 .... .... 1111 0111 ....      @rndm
471adf1a566SRichard HendersonUHADD8           .... 0110 0111 .... .... 1111 1001 ....      @rndm
472adf1a566SRichard HendersonUHSUB8           .... 0110 0111 .... .... 1111 1111 ....      @rndm
47346497f6aSRichard Henderson
47446497f6aSRichard Henderson# Packing, unpacking, saturation, and reversal
47546497f6aSRichard Henderson
47646497f6aSRichard HendersonPKH              ---- 0110 1000 rn:4 rd:4 imm:5 tb:1 01 rm:4  &pkh
47746497f6aSRichard Henderson
47846497f6aSRichard Henderson@sat             ---- .... ... satimm:5  rd:4 imm:5 sh:1 .. rn:4  &sat
47946497f6aSRichard Henderson@sat16           ---- .... .... satimm:4 rd:4 .... .... rn:4 \
48046497f6aSRichard Henderson                 &sat imm=0 sh=0
48146497f6aSRichard Henderson
48246497f6aSRichard HendersonSSAT             .... 0110 101. .... .... .... ..01 ....      @sat
48346497f6aSRichard HendersonUSAT             .... 0110 111. .... .... .... ..01 ....      @sat
48446497f6aSRichard Henderson
48546497f6aSRichard HendersonSSAT16           .... 0110 1010 .... .... 1111 0011 ....      @sat16
48646497f6aSRichard HendersonUSAT16           .... 0110 1110 .... .... 1111 0011 ....      @sat16
48746497f6aSRichard Henderson
48846497f6aSRichard Henderson@rrr_rot         ---- .... .... rn:4 rd:4 rot:2 ...... rm:4   &rrr_rot
48946497f6aSRichard Henderson
49046497f6aSRichard HendersonSXTAB16          .... 0110 1000 .... .... ..00 0111 ....      @rrr_rot
49146497f6aSRichard HendersonSXTAB            .... 0110 1010 .... .... ..00 0111 ....      @rrr_rot
49246497f6aSRichard HendersonSXTAH            .... 0110 1011 .... .... ..00 0111 ....      @rrr_rot
49346497f6aSRichard HendersonUXTAB16          .... 0110 1100 .... .... ..00 0111 ....      @rrr_rot
49446497f6aSRichard HendersonUXTAB            .... 0110 1110 .... .... ..00 0111 ....      @rrr_rot
49546497f6aSRichard HendersonUXTAH            .... 0110 1111 .... .... ..00 0111 ....      @rrr_rot
49646497f6aSRichard Henderson
49746497f6aSRichard HendersonSEL              .... 0110 1000 .... .... 1111 1011 ....      @rndm
49846497f6aSRichard HendersonREV              .... 0110 1011 1111 .... 1111 0011 ....      @rdm
49946497f6aSRichard HendersonREV16            .... 0110 1011 1111 .... 1111 1011 ....      @rdm
50046497f6aSRichard HendersonREVSH            .... 0110 1111 1111 .... 1111 1011 ....      @rdm
50146497f6aSRichard HendersonRBIT             .... 0110 1111 1111 .... 1111 0011 ....      @rdm
5022c7c4e09SRichard Henderson
5032c7c4e09SRichard Henderson# Signed multiply, signed and unsigned divide
5042c7c4e09SRichard Henderson
5052c7c4e09SRichard Henderson@rdmn            ---- .... .... rd:4 .... rm:4 .... rn:4      &rrr
5062c7c4e09SRichard Henderson
5072c7c4e09SRichard HendersonSMLAD            .... 0111 0000 .... .... .... 0001 ....      @rdamn
5082c7c4e09SRichard HendersonSMLADX           .... 0111 0000 .... .... .... 0011 ....      @rdamn
5092c7c4e09SRichard HendersonSMLSD            .... 0111 0000 .... .... .... 0101 ....      @rdamn
5102c7c4e09SRichard HendersonSMLSDX           .... 0111 0000 .... .... .... 0111 ....      @rdamn
5112c7c4e09SRichard Henderson
5122c7c4e09SRichard HendersonSDIV             .... 0111 0001 .... 1111 .... 0001 ....      @rdmn
5132c7c4e09SRichard HendersonUDIV             .... 0111 0011 .... 1111 .... 0001 ....      @rdmn
5142c7c4e09SRichard Henderson
5152c7c4e09SRichard HendersonSMLALD           .... 0111 0100 .... .... .... 0001 ....      @rdamn
5162c7c4e09SRichard HendersonSMLALDX          .... 0111 0100 .... .... .... 0011 ....      @rdamn
5172c7c4e09SRichard HendersonSMLSLD           .... 0111 0100 .... .... .... 0101 ....      @rdamn
5182c7c4e09SRichard HendersonSMLSLDX          .... 0111 0100 .... .... .... 0111 ....      @rdamn
5192c7c4e09SRichard Henderson
5202c7c4e09SRichard HendersonSMMLA            .... 0111 0101 .... .... .... 0001 ....      @rdamn
5212c7c4e09SRichard HendersonSMMLAR           .... 0111 0101 .... .... .... 0011 ....      @rdamn
5222c7c4e09SRichard HendersonSMMLS            .... 0111 0101 .... .... .... 1101 ....      @rdamn
5232c7c4e09SRichard HendersonSMMLSR           .... 0111 0101 .... .... .... 1111 ....      @rdamn
524c5c426d4SRichard Henderson
525c5c426d4SRichard Henderson# Block data transfer
526c5c426d4SRichard Henderson
527c5c426d4SRichard HendersonSTM              ---- 100 b:1 i:1 u:1 w:1 0 rn:4 list:16   &ldst_block
528c5c426d4SRichard HendersonLDM_a32          ---- 100 b:1 i:1 u:1 w:1 1 rn:4 list:16   &ldst_block
529360144f3SRichard Henderson
530360144f3SRichard Henderson# Branch, branch with link
531360144f3SRichard Henderson
532360144f3SRichard Henderson%imm26           0:s24  !function=times_4
533360144f3SRichard Henderson@branch          ---- .... ........................           &i imm=%imm26
534360144f3SRichard Henderson
535360144f3SRichard HendersonB                .... 1010 ........................           @branch
536360144f3SRichard HendersonBL               .... 1011 ........................           @branch
537542f5188SRichard Henderson
538cd8be50eSPeter Maydell# Coprocessor instructions
539cd8be50eSPeter Maydell
540cd8be50eSPeter Maydell# We decode MCR, MCR, MRRC and MCRR only, because for QEMU the
541cd8be50eSPeter Maydell# other coprocessor instructions always UNDEF.
542cd8be50eSPeter Maydell# The trans_ functions for these will ignore cp values 8..13 for v7 or
543cd8be50eSPeter Maydell# earlier, and 0..13 for v8 and later, because those areas of the
544cd8be50eSPeter Maydell# encoding space may be used for other things, such as VFP or Neon.
545cd8be50eSPeter Maydell
546cd8be50eSPeter Maydell@mcr             ---- .... opc1:3 . crn:4 rt:4 cp:4 opc2:3 . crm:4 &mcr
547cd8be50eSPeter Maydell@mcrr            ---- .... .... rt2:4 rt:4 cp:4 opc1:4 crm:4       &mcrr
548cd8be50eSPeter Maydell
549cd8be50eSPeter MaydellMCRR             .... 1100 0100 .... .... .... .... .... @mcrr
550cd8be50eSPeter MaydellMRRC             .... 1100 0101 .... .... .... .... .... @mcrr
551cd8be50eSPeter Maydell
552cd8be50eSPeter MaydellMCR              .... 1110 ... 0 .... .... .... ... 1 .... @mcr
553cd8be50eSPeter MaydellMRC              .... 1110 ... 1 .... .... .... ... 1 .... @mcr
554cd8be50eSPeter Maydell
555542f5188SRichard Henderson# Supervisor call
556542f5188SRichard Henderson
557542f5188SRichard HendersonSVC              ---- 1111 imm:24                             &i
558