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