]> Git Repo - qemu.git/blame - target/arm/a32.decode
Merge remote-tracking branch 'remotes/mst/tags/for_upstream' into staging
[qemu.git] / target / arm / a32.decode
CommitLineData
51409b9e
RH
1# A32 conditional instructions
2#
3# Copyright (c) 2019 Linaro, Ltd
4#
5# This library is free software; you can redistribute it and/or
6# modify it under the terms of the GNU Lesser General Public
7# License as published by the Free Software Foundation; either
8# version 2 of the License, or (at your option) any later version.
9#
10# This library is distributed in the hope that it will be useful,
11# but WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13# Lesser General Public License for more details.
14#
15# You should have received a copy of the GNU Lesser General Public
16# License along with this library; if not, see <http://www.gnu.org/licenses/>.
17
18#
19# This file is processed by scripts/decodetree.py
20#
21# All of the insn that have a COND field in insn[31:28] are here.
22# All insns that have 0xf in insn[31:28] are in a32-uncond.decode.
23#
25ae32c5 24
63130596 25&empty
25ae32c5 26&s_rrr_shi s rd rn rm shim shty
5be2c123 27&s_rrr_shr s rn rd rm rs shty
581c6ebd 28&s_rri_rot s rn rd imm rot
bd92fe35
RH
29&s_rrrr s rd rn rm ra
30&rrrr rd rn rm ra
46497f6a 31&rrr_rot rd rn rm rot
6d0730a8 32&rrr rd rn rm
4c97f5b2 33&rr rd rm
145952e8 34&ri rd imm
4ed95abd 35&r rm
2cde9ea5 36&i imm
d0b26644
RH
37&msr_reg rn r mask
38&mrs_reg rd r
39&msr_bank rn r sysm
40&mrs_bank rd r sysm
5e291fe1
RH
41&ldst_rr p w u rn rt rm shimm shtype
42&ldst_ri p w u rn rt imm
c5c426d4 43&ldst_block rn i b u w list
1efdd407
RH
44&strex rn rd rt rt2 imm
45&ldrex rn rt rt2 imm
86d21e4b
RH
46&bfx rd rn lsb widthm1
47&bfi rd rn lsb msb
46497f6a
RH
48&sat rd rn satimm imm sh
49&pkh rd rn rm imm tb
25ae32c5
RH
50
51# Data-processing (register)
52
53@s_rrr_shi ---- ... .... s:1 rn:4 rd:4 shim:5 shty:2 . rm:4 \
54 &s_rrr_shi
55@s_rxr_shi ---- ... .... s:1 .... rd:4 shim:5 shty:2 . rm:4 \
56 &s_rrr_shi rn=0
57@S_xrr_shi ---- ... .... . rn:4 .... shim:5 shty:2 . rm:4 \
58 &s_rrr_shi s=1 rd=0
59
60AND_rrri .... 000 0000 . .... .... ..... .. 0 .... @s_rrr_shi
61EOR_rrri .... 000 0001 . .... .... ..... .. 0 .... @s_rrr_shi
62SUB_rrri .... 000 0010 . .... .... ..... .. 0 .... @s_rrr_shi
63RSB_rrri .... 000 0011 . .... .... ..... .. 0 .... @s_rrr_shi
64ADD_rrri .... 000 0100 . .... .... ..... .. 0 .... @s_rrr_shi
65ADC_rrri .... 000 0101 . .... .... ..... .. 0 .... @s_rrr_shi
66SBC_rrri .... 000 0110 . .... .... ..... .. 0 .... @s_rrr_shi
67RSC_rrri .... 000 0111 . .... .... ..... .. 0 .... @s_rrr_shi
68TST_xrri .... 000 1000 1 .... 0000 ..... .. 0 .... @S_xrr_shi
69TEQ_xrri .... 000 1001 1 .... 0000 ..... .. 0 .... @S_xrr_shi
70CMP_xrri .... 000 1010 1 .... 0000 ..... .. 0 .... @S_xrr_shi
71CMN_xrri .... 000 1011 1 .... 0000 ..... .. 0 .... @S_xrr_shi
72ORR_rrri .... 000 1100 . .... .... ..... .. 0 .... @s_rrr_shi
73MOV_rxri .... 000 1101 . 0000 .... ..... .. 0 .... @s_rxr_shi
74BIC_rrri .... 000 1110 . .... .... ..... .. 0 .... @s_rrr_shi
75MVN_rxri .... 000 1111 . 0000 .... ..... .. 0 .... @s_rxr_shi
5be2c123 76
8f445127
RH
77%imm16 16:4 0:12
78@mov16 ---- .... .... .... rd:4 ............ &ri imm=%imm16
79
80MOVW .... 0011 0000 .... .... ............ @mov16
81MOVT .... 0011 0100 .... .... ............ @mov16
82
5be2c123
RH
83# Data-processing (register-shifted register)
84
85@s_rrr_shr ---- ... .... s:1 rn:4 rd:4 rs:4 . shty:2 . rm:4 \
86 &s_rrr_shr
87@s_rxr_shr ---- ... .... s:1 .... rd:4 rs:4 . shty:2 . rm:4 \
88 &s_rrr_shr rn=0
89@S_xrr_shr ---- ... .... . rn:4 .... rs:4 . shty:2 . rm:4 \
90 &s_rrr_shr rd=0 s=1
91
92AND_rrrr .... 000 0000 . .... .... .... 0 .. 1 .... @s_rrr_shr
93EOR_rrrr .... 000 0001 . .... .... .... 0 .. 1 .... @s_rrr_shr
94SUB_rrrr .... 000 0010 . .... .... .... 0 .. 1 .... @s_rrr_shr
95RSB_rrrr .... 000 0011 . .... .... .... 0 .. 1 .... @s_rrr_shr
96ADD_rrrr .... 000 0100 . .... .... .... 0 .. 1 .... @s_rrr_shr
97ADC_rrrr .... 000 0101 . .... .... .... 0 .. 1 .... @s_rrr_shr
98SBC_rrrr .... 000 0110 . .... .... .... 0 .. 1 .... @s_rrr_shr
99RSC_rrrr .... 000 0111 . .... .... .... 0 .. 1 .... @s_rrr_shr
100TST_xrrr .... 000 1000 1 .... 0000 .... 0 .. 1 .... @S_xrr_shr
101TEQ_xrrr .... 000 1001 1 .... 0000 .... 0 .. 1 .... @S_xrr_shr
102CMP_xrrr .... 000 1010 1 .... 0000 .... 0 .. 1 .... @S_xrr_shr
103CMN_xrrr .... 000 1011 1 .... 0000 .... 0 .. 1 .... @S_xrr_shr
104ORR_rrrr .... 000 1100 . .... .... .... 0 .. 1 .... @s_rrr_shr
105MOV_rxrr .... 000 1101 . 0000 .... .... 0 .. 1 .... @s_rxr_shr
106BIC_rrrr .... 000 1110 . .... .... .... 0 .. 1 .... @s_rrr_shr
107MVN_rxrr .... 000 1111 . 0000 .... .... 0 .. 1 .... @s_rxr_shr
581c6ebd
RH
108
109# Data-processing (immediate)
110
111%a32extrot 8:4 !function=times_2
112
113@s_rri_rot ---- ... .... s:1 rn:4 rd:4 .... imm:8 \
114 &s_rri_rot rot=%a32extrot
115@s_rxi_rot ---- ... .... s:1 .... rd:4 .... imm:8 \
116 &s_rri_rot rot=%a32extrot rn=0
117@S_xri_rot ---- ... .... . rn:4 .... .... imm:8 \
118 &s_rri_rot rot=%a32extrot rd=0 s=1
119
120AND_rri .... 001 0000 . .... .... ............ @s_rri_rot
121EOR_rri .... 001 0001 . .... .... ............ @s_rri_rot
122SUB_rri .... 001 0010 . .... .... ............ @s_rri_rot
123RSB_rri .... 001 0011 . .... .... ............ @s_rri_rot
124ADD_rri .... 001 0100 . .... .... ............ @s_rri_rot
125ADC_rri .... 001 0101 . .... .... ............ @s_rri_rot
126SBC_rri .... 001 0110 . .... .... ............ @s_rri_rot
127RSC_rri .... 001 0111 . .... .... ............ @s_rri_rot
128TST_xri .... 001 1000 1 .... 0000 ............ @S_xri_rot
129TEQ_xri .... 001 1001 1 .... 0000 ............ @S_xri_rot
130CMP_xri .... 001 1010 1 .... 0000 ............ @S_xri_rot
131CMN_xri .... 001 1011 1 .... 0000 ............ @S_xri_rot
132ORR_rri .... 001 1100 . .... .... ............ @s_rri_rot
133MOV_rxi .... 001 1101 . 0000 .... ............ @s_rxi_rot
134BIC_rri .... 001 1110 . .... .... ............ @s_rri_rot
135MVN_rxi .... 001 1111 . 0000 .... ............ @s_rxi_rot
bd92fe35
RH
136
137# Multiply and multiply accumulate
138
139@s_rdamn ---- .... ... s:1 rd:4 ra:4 rm:4 .... rn:4 &s_rrrr
140@s_rd0mn ---- .... ... s:1 rd:4 .... rm:4 .... rn:4 &s_rrrr ra=0
141@rdamn ---- .... ... . rd:4 ra:4 rm:4 .... rn:4 &rrrr
26c6923d 142@rd0mn ---- .... ... . rd:4 .... rm:4 .... rn:4 &rrrr ra=0
bd92fe35
RH
143
144MUL .... 0000 000 . .... 0000 .... 1001 .... @s_rd0mn
145MLA .... 0000 001 . .... .... .... 1001 .... @s_rdamn
146UMAAL .... 0000 010 0 .... .... .... 1001 .... @rdamn
147MLS .... 0000 011 0 .... .... .... 1001 .... @rdamn
148UMULL .... 0000 100 . .... .... .... 1001 .... @s_rdamn
149UMLAL .... 0000 101 . .... .... .... 1001 .... @s_rdamn
150SMULL .... 0000 110 . .... .... .... 1001 .... @s_rdamn
151SMLAL .... 0000 111 . .... .... .... 1001 .... @s_rdamn
6d0730a8
RH
152
153# Saturating addition and subtraction
154
155@rndm ---- .... .... rn:4 rd:4 .... .... rm:4 &rrr
156
157QADD .... 0001 0000 .... .... 0000 0101 .... @rndm
158QSUB .... 0001 0010 .... .... 0000 0101 .... @rndm
159QDADD .... 0001 0100 .... .... 0000 0101 .... @rndm
160QDSUB .... 0001 0110 .... .... 0000 0101 .... @rndm
26c6923d
RH
161
162# Halfword multiply and multiply accumulate
163
164SMLABB .... 0001 0000 .... .... .... 1000 .... @rdamn
165SMLABT .... 0001 0000 .... .... .... 1100 .... @rdamn
166SMLATB .... 0001 0000 .... .... .... 1010 .... @rdamn
167SMLATT .... 0001 0000 .... .... .... 1110 .... @rdamn
168SMLAWB .... 0001 0010 .... .... .... 1000 .... @rdamn
169SMULWB .... 0001 0010 .... 0000 .... 1010 .... @rd0mn
170SMLAWT .... 0001 0010 .... .... .... 1100 .... @rdamn
171SMULWT .... 0001 0010 .... 0000 .... 1110 .... @rd0mn
172SMLALBB .... 0001 0100 .... .... .... 1000 .... @rdamn
173SMLALBT .... 0001 0100 .... .... .... 1100 .... @rdamn
174SMLALTB .... 0001 0100 .... .... .... 1010 .... @rdamn
175SMLALTT .... 0001 0100 .... .... .... 1110 .... @rdamn
176SMULBB .... 0001 0110 .... 0000 .... 1000 .... @rd0mn
177SMULBT .... 0001 0110 .... 0000 .... 1100 .... @rd0mn
178SMULTB .... 0001 0110 .... 0000 .... 1010 .... @rd0mn
179SMULTT .... 0001 0110 .... 0000 .... 1110 .... @rd0mn
63130596
RH
180
181# MSR (immediate) and hints
182
183&msr_i r mask rot imm
184@msr_i ---- .... .... mask:4 .... rot:4 imm:8 &msr_i
185
186{
187 {
188 YIELD ---- 0011 0010 0000 1111 ---- 0000 0001
189 WFE ---- 0011 0010 0000 1111 ---- 0000 0010
190 WFI ---- 0011 0010 0000 1111 ---- 0000 0011
191
192 # TODO: Implement SEV, SEVL; may help SMP performance.
193 # SEV ---- 0011 0010 0000 1111 ---- 0000 0100
194 # SEVL ---- 0011 0010 0000 1111 ---- 0000 0101
195
196 # The canonical nop ends in 00000000, but the whole of the
197 # rest of the space executes as nop if otherwise unsupported.
198 NOP ---- 0011 0010 0000 1111 ---- ---- ----
199 }
200 # Note mask = 0 is covered by NOP
201 MSR_imm .... 0011 0010 .... 1111 .... .... .... @msr_i r=0
202}
203MSR_imm .... 0011 0110 .... 1111 .... .... .... @msr_i r=1
d0b26644 204
6c35d53f
RH
205# Cyclic Redundancy Check
206
207CRC32B .... 0001 0000 .... .... 0000 0100 .... @rndm
208CRC32H .... 0001 0010 .... .... 0000 0100 .... @rndm
209CRC32W .... 0001 0100 .... .... 0000 0100 .... @rndm
210CRC32CB .... 0001 0000 .... .... 0010 0100 .... @rndm
211CRC32CH .... 0001 0010 .... .... 0010 0100 .... @rndm
212CRC32CW .... 0001 0100 .... .... 0010 0100 .... @rndm
213
d0b26644
RH
214# Miscellaneous instructions
215
216%sysm 8:1 16:4
2cde9ea5 217%imm16_8_0 8:12 0:4
d0b26644 218
4ed95abd 219@rm ---- .... .... .... .... .... .... rm:4 &r
4c97f5b2 220@rdm ---- .... .... .... rd:4 .... .... rm:4 &rr
2cde9ea5 221@i16 ---- .... .... .... .... .... .... .... &i imm=%imm16_8_0
4ed95abd 222
d0b26644
RH
223MRS_bank ---- 0001 0 r:1 00 .... rd:4 001. 0000 0000 &mrs_bank %sysm
224MSR_bank ---- 0001 0 r:1 10 .... 1111 001. 0000 rn:4 &msr_bank %sysm
225
226MRS_reg ---- 0001 0 r:1 00 1111 rd:4 0000 0000 0000 &mrs_reg
227MSR_reg ---- 0001 0 r:1 10 mask:4 1111 0000 0000 rn:4 &msr_reg
4ed95abd
RH
228
229BX .... 0001 0010 1111 1111 1111 0001 .... @rm
230BXJ .... 0001 0010 1111 1111 1111 0010 .... @rm
231BLX_r .... 0001 0010 1111 1111 1111 0011 .... @rm
4c97f5b2
RH
232
233CLZ .... 0001 0110 1111 .... 1111 0001 .... @rdm
ef11bc3c
RH
234
235ERET ---- 0001 0110 0000 0000 0000 0110 1110
2cde9ea5
RH
236
237HLT .... 0001 0000 .... .... .... 0111 .... @i16
238BKPT .... 0001 0010 .... .... .... 0111 .... @i16
239HVC .... 0001 0100 .... .... .... 0111 .... @i16
240SMC ---- 0001 0110 0000 0000 0000 0111 imm:4 &i
5e291fe1
RH
241
242# Load/Store Dual, Half, Signed Byte (register)
243
244@ldst_rr_p1w ---- ...1 u:1 . w:1 . rn:4 rt:4 .... .... rm:4 \
245 &ldst_rr p=1 shimm=0 shtype=0
246@ldst_rr_pw0 ---- ...0 u:1 . 0 . rn:4 rt:4 .... .... rm:4 \
247 &ldst_rr p=0 w=0 shimm=0 shtype=0
248
249STRH_rr .... 000. .0.0 .... .... 0000 1011 .... @ldst_rr_pw0
250STRH_rr .... 000. .0.0 .... .... 0000 1011 .... @ldst_rr_p1w
251
252LDRD_rr .... 000. .0.0 .... .... 0000 1101 .... @ldst_rr_pw0
253LDRD_rr .... 000. .0.0 .... .... 0000 1101 .... @ldst_rr_p1w
254
255STRD_rr .... 000. .0.0 .... .... 0000 1111 .... @ldst_rr_pw0
256STRD_rr .... 000. .0.0 .... .... 0000 1111 .... @ldst_rr_p1w
257
258LDRH_rr .... 000. .0.1 .... .... 0000 1011 .... @ldst_rr_pw0
259LDRH_rr .... 000. .0.1 .... .... 0000 1011 .... @ldst_rr_p1w
260
261LDRSB_rr .... 000. .0.1 .... .... 0000 1101 .... @ldst_rr_pw0
262LDRSB_rr .... 000. .0.1 .... .... 0000 1101 .... @ldst_rr_p1w
263
264LDRSH_rr .... 000. .0.1 .... .... 0000 1111 .... @ldst_rr_pw0
265LDRSH_rr .... 000. .0.1 .... .... 0000 1111 .... @ldst_rr_p1w
266
267# Note the unpriv load/stores use the previously invalid P=0, W=1 encoding,
268# and act as normal post-indexed (P=0, W=0).
269@ldst_rr_p0w1 ---- ...0 u:1 . 1 . rn:4 rt:4 .... .... rm:4 \
270 &ldst_rr p=0 w=0 shimm=0 shtype=0
271
272STRHT_rr .... 000. .0.0 .... .... 0000 1011 .... @ldst_rr_p0w1
273LDRHT_rr .... 000. .0.1 .... .... 0000 1011 .... @ldst_rr_p0w1
274LDRSBT_rr .... 000. .0.1 .... .... 0000 1101 .... @ldst_rr_p0w1
275LDRSHT_rr .... 000. .0.1 .... .... 0000 1111 .... @ldst_rr_p0w1
276
277# Load/Store word and unsigned byte (register)
278
279@ldst_rs_p1w ---- ...1 u:1 . w:1 . rn:4 rt:4 shimm:5 shtype:2 . rm:4 \
280 &ldst_rr p=1
281@ldst_rs_pw0 ---- ...0 u:1 . 0 . rn:4 rt:4 shimm:5 shtype:2 . rm:4 \
282 &ldst_rr p=0 w=0
283
284STR_rr .... 011. .0.0 .... .... .... ...0 .... @ldst_rs_pw0
285STR_rr .... 011. .0.0 .... .... .... ...0 .... @ldst_rs_p1w
286STRB_rr .... 011. .1.0 .... .... .... ...0 .... @ldst_rs_pw0
287STRB_rr .... 011. .1.0 .... .... .... ...0 .... @ldst_rs_p1w
288
289LDR_rr .... 011. .0.1 .... .... .... ...0 .... @ldst_rs_pw0
290LDR_rr .... 011. .0.1 .... .... .... ...0 .... @ldst_rs_p1w
291LDRB_rr .... 011. .1.1 .... .... .... ...0 .... @ldst_rs_pw0
292LDRB_rr .... 011. .1.1 .... .... .... ...0 .... @ldst_rs_p1w
293
294@ldst_rs_p0w1 ---- ...0 u:1 . 1 . rn:4 rt:4 shimm:5 shtype:2 . rm:4 \
295 &ldst_rr p=0 w=0
296
297STRT_rr .... 011. .0.0 .... .... .... ...0 .... @ldst_rs_p0w1
298STRBT_rr .... 011. .1.0 .... .... .... ...0 .... @ldst_rs_p0w1
299LDRT_rr .... 011. .0.1 .... .... .... ...0 .... @ldst_rs_p0w1
300LDRBT_rr .... 011. .1.1 .... .... .... ...0 .... @ldst_rs_p0w1
301
302# Load/Store Dual, Half, Signed Byte (immediate)
303
304%imm8s_8_0 8:4 0:4
305@ldst_ri8_p1w ---- ...1 u:1 . w:1 . rn:4 rt:4 .... .... .... \
306 &ldst_ri imm=%imm8s_8_0 p=1
307@ldst_ri8_pw0 ---- ...0 u:1 . 0 . rn:4 rt:4 .... .... .... \
308 &ldst_ri imm=%imm8s_8_0 p=0 w=0
309
310STRH_ri .... 000. .1.0 .... .... .... 1011 .... @ldst_ri8_pw0
311STRH_ri .... 000. .1.0 .... .... .... 1011 .... @ldst_ri8_p1w
312
313LDRD_ri_a32 .... 000. .1.0 .... .... .... 1101 .... @ldst_ri8_pw0
314LDRD_ri_a32 .... 000. .1.0 .... .... .... 1101 .... @ldst_ri8_p1w
315
316STRD_ri_a32 .... 000. .1.0 .... .... .... 1111 .... @ldst_ri8_pw0
317STRD_ri_a32 .... 000. .1.0 .... .... .... 1111 .... @ldst_ri8_p1w
318
319LDRH_ri .... 000. .1.1 .... .... .... 1011 .... @ldst_ri8_pw0
320LDRH_ri .... 000. .1.1 .... .... .... 1011 .... @ldst_ri8_p1w
321
322LDRSB_ri .... 000. .1.1 .... .... .... 1101 .... @ldst_ri8_pw0
323LDRSB_ri .... 000. .1.1 .... .... .... 1101 .... @ldst_ri8_p1w
324
325LDRSH_ri .... 000. .1.1 .... .... .... 1111 .... @ldst_ri8_pw0
326LDRSH_ri .... 000. .1.1 .... .... .... 1111 .... @ldst_ri8_p1w
327
328# Note the unpriv load/stores use the previously invalid P=0, W=1 encoding,
329# and act as normal post-indexed (P=0, W=0).
330@ldst_ri8_p0w1 ---- ...0 u:1 . 1 . rn:4 rt:4 .... .... .... \
331 &ldst_ri imm=%imm8s_8_0 p=0 w=0
332
333STRHT_ri .... 000. .1.0 .... .... .... 1011 .... @ldst_ri8_p0w1
334LDRHT_ri .... 000. .1.1 .... .... .... 1011 .... @ldst_ri8_p0w1
335LDRSBT_ri .... 000. .1.1 .... .... .... 1101 .... @ldst_ri8_p0w1
336LDRSHT_ri .... 000. .1.1 .... .... .... 1111 .... @ldst_ri8_p0w1
337
338# Load/Store word and unsigned byte (immediate)
339
340@ldst_ri12_p1w ---- ...1 u:1 . w:1 . rn:4 rt:4 imm:12 &ldst_ri p=1
341@ldst_ri12_pw0 ---- ...0 u:1 . 0 . rn:4 rt:4 imm:12 &ldst_ri p=0 w=0
342
343STR_ri .... 010. .0.0 .... .... ............ @ldst_ri12_p1w
344STR_ri .... 010. .0.0 .... .... ............ @ldst_ri12_pw0
345STRB_ri .... 010. .1.0 .... .... ............ @ldst_ri12_p1w
346STRB_ri .... 010. .1.0 .... .... ............ @ldst_ri12_pw0
347
348LDR_ri .... 010. .0.1 .... .... ............ @ldst_ri12_p1w
349LDR_ri .... 010. .0.1 .... .... ............ @ldst_ri12_pw0
350LDRB_ri .... 010. .1.1 .... .... ............ @ldst_ri12_p1w
351LDRB_ri .... 010. .1.1 .... .... ............ @ldst_ri12_pw0
352
353@ldst_ri12_p0w1 ---- ...0 u:1 . 1 . rn:4 rt:4 imm:12 &ldst_ri p=0 w=0
354
355STRT_ri .... 010. .0.0 .... .... ............ @ldst_ri12_p0w1
356STRBT_ri .... 010. .1.0 .... .... ............ @ldst_ri12_p0w1
357LDRT_ri .... 010. .0.1 .... .... ............ @ldst_ri12_p0w1
358LDRBT_ri .... 010. .1.1 .... .... ............ @ldst_ri12_p0w1
1efdd407
RH
359
360# Synchronization primitives
361
362@swp ---- .... .... rn:4 rt:4 .... .... rt2:4
363
364SWP .... 0001 0000 .... .... 0000 1001 .... @swp
365SWPB .... 0001 0100 .... .... 0000 1001 .... @swp
366
367# Load/Store Exclusive and Load-Acquire/Store-Release
368#
369# Note rt2 for STREXD/LDREXD is set by the helper after checking rt is even.
370
371@strex ---- .... .... rn:4 rd:4 .... .... rt:4 \
372 &strex imm=0 rt2=15
373@ldrex ---- .... .... rn:4 rt:4 .... .... .... \
374 &ldrex imm=0 rt2=15
375@stl ---- .... .... rn:4 .... .... .... rt:4 \
376 &ldrex imm=0 rt2=15
377
378STREX .... 0001 1000 .... .... 1111 1001 .... @strex
379STREXD_a32 .... 0001 1010 .... .... 1111 1001 .... @strex
380STREXB .... 0001 1100 .... .... 1111 1001 .... @strex
381STREXH .... 0001 1110 .... .... 1111 1001 .... @strex
382
383STLEX .... 0001 1000 .... .... 1110 1001 .... @strex
384STLEXD_a32 .... 0001 1010 .... .... 1110 1001 .... @strex
385STLEXB .... 0001 1100 .... .... 1110 1001 .... @strex
386STLEXH .... 0001 1110 .... .... 1110 1001 .... @strex
387
388STL .... 0001 1000 .... 1111 1100 1001 .... @stl
389STLB .... 0001 1100 .... 1111 1100 1001 .... @stl
390STLH .... 0001 1110 .... 1111 1100 1001 .... @stl
391
392LDREX .... 0001 1001 .... .... 1111 1001 1111 @ldrex
393LDREXD_a32 .... 0001 1011 .... .... 1111 1001 1111 @ldrex
394LDREXB .... 0001 1101 .... .... 1111 1001 1111 @ldrex
395LDREXH .... 0001 1111 .... .... 1111 1001 1111 @ldrex
396
397LDAEX .... 0001 1001 .... .... 1110 1001 1111 @ldrex
398LDAEXD_a32 .... 0001 1011 .... .... 1110 1001 1111 @ldrex
399LDAEXB .... 0001 1101 .... .... 1110 1001 1111 @ldrex
400LDAEXH .... 0001 1111 .... .... 1110 1001 1111 @ldrex
401
402LDA .... 0001 1001 .... .... 1100 1001 1111 @ldrex
403LDAB .... 0001 1101 .... .... 1100 1001 1111 @ldrex
404LDAH .... 0001 1111 .... .... 1100 1001 1111 @ldrex
86d21e4b
RH
405
406# Media instructions
407
408# usad8 is usada8 w/ ra=15
409USADA8 ---- 0111 1000 rd:4 ra:4 rm:4 0001 rn:4
410
411# ubfx and sbfx
412@bfx ---- .... ... widthm1:5 rd:4 lsb:5 ... rn:4 &bfx
413
414SBFX .... 0111 101 ..... .... ..... 101 .... @bfx
415UBFX .... 0111 111 ..... .... ..... 101 .... @bfx
416
417# bfc is bfi w/ rn=15
418BFCI ---- 0111 110 msb:5 rd:4 lsb:5 001 rn:4 &bfi
419
420# While we could get UDEF by not including this, add the pattern for
421# documentation and to conflict with any other typos in this file.
422UDF 1110 0111 1111 ---- ---- ---- 1111 ----
adf1a566
RH
423
424# Parallel addition and subtraction
425
426SADD16 .... 0110 0001 .... .... 1111 0001 .... @rndm
427SASX .... 0110 0001 .... .... 1111 0011 .... @rndm
428SSAX .... 0110 0001 .... .... 1111 0101 .... @rndm
429SSUB16 .... 0110 0001 .... .... 1111 0111 .... @rndm
430SADD8 .... 0110 0001 .... .... 1111 1001 .... @rndm
431SSUB8 .... 0110 0001 .... .... 1111 1111 .... @rndm
432
433QADD16 .... 0110 0010 .... .... 1111 0001 .... @rndm
434QASX .... 0110 0010 .... .... 1111 0011 .... @rndm
435QSAX .... 0110 0010 .... .... 1111 0101 .... @rndm
436QSUB16 .... 0110 0010 .... .... 1111 0111 .... @rndm
437QADD8 .... 0110 0010 .... .... 1111 1001 .... @rndm
438QSUB8 .... 0110 0010 .... .... 1111 1111 .... @rndm
439
440SHADD16 .... 0110 0011 .... .... 1111 0001 .... @rndm
441SHASX .... 0110 0011 .... .... 1111 0011 .... @rndm
442SHSAX .... 0110 0011 .... .... 1111 0101 .... @rndm
443SHSUB16 .... 0110 0011 .... .... 1111 0111 .... @rndm
444SHADD8 .... 0110 0011 .... .... 1111 1001 .... @rndm
445SHSUB8 .... 0110 0011 .... .... 1111 1111 .... @rndm
446
447UADD16 .... 0110 0101 .... .... 1111 0001 .... @rndm
448UASX .... 0110 0101 .... .... 1111 0011 .... @rndm
449USAX .... 0110 0101 .... .... 1111 0101 .... @rndm
450USUB16 .... 0110 0101 .... .... 1111 0111 .... @rndm
451UADD8 .... 0110 0101 .... .... 1111 1001 .... @rndm
452USUB8 .... 0110 0101 .... .... 1111 1111 .... @rndm
453
454UQADD16 .... 0110 0110 .... .... 1111 0001 .... @rndm
455UQASX .... 0110 0110 .... .... 1111 0011 .... @rndm
456UQSAX .... 0110 0110 .... .... 1111 0101 .... @rndm
457UQSUB16 .... 0110 0110 .... .... 1111 0111 .... @rndm
458UQADD8 .... 0110 0110 .... .... 1111 1001 .... @rndm
459UQSUB8 .... 0110 0110 .... .... 1111 1111 .... @rndm
460
461UHADD16 .... 0110 0111 .... .... 1111 0001 .... @rndm
462UHASX .... 0110 0111 .... .... 1111 0011 .... @rndm
463UHSAX .... 0110 0111 .... .... 1111 0101 .... @rndm
464UHSUB16 .... 0110 0111 .... .... 1111 0111 .... @rndm
465UHADD8 .... 0110 0111 .... .... 1111 1001 .... @rndm
466UHSUB8 .... 0110 0111 .... .... 1111 1111 .... @rndm
46497f6a
RH
467
468# Packing, unpacking, saturation, and reversal
469
470PKH ---- 0110 1000 rn:4 rd:4 imm:5 tb:1 01 rm:4 &pkh
471
472@sat ---- .... ... satimm:5 rd:4 imm:5 sh:1 .. rn:4 &sat
473@sat16 ---- .... .... satimm:4 rd:4 .... .... rn:4 \
474 &sat imm=0 sh=0
475
476SSAT .... 0110 101. .... .... .... ..01 .... @sat
477USAT .... 0110 111. .... .... .... ..01 .... @sat
478
479SSAT16 .... 0110 1010 .... .... 1111 0011 .... @sat16
480USAT16 .... 0110 1110 .... .... 1111 0011 .... @sat16
481
482@rrr_rot ---- .... .... rn:4 rd:4 rot:2 ...... rm:4 &rrr_rot
483
484SXTAB16 .... 0110 1000 .... .... ..00 0111 .... @rrr_rot
485SXTAB .... 0110 1010 .... .... ..00 0111 .... @rrr_rot
486SXTAH .... 0110 1011 .... .... ..00 0111 .... @rrr_rot
487UXTAB16 .... 0110 1100 .... .... ..00 0111 .... @rrr_rot
488UXTAB .... 0110 1110 .... .... ..00 0111 .... @rrr_rot
489UXTAH .... 0110 1111 .... .... ..00 0111 .... @rrr_rot
490
491SEL .... 0110 1000 .... .... 1111 1011 .... @rndm
492REV .... 0110 1011 1111 .... 1111 0011 .... @rdm
493REV16 .... 0110 1011 1111 .... 1111 1011 .... @rdm
494REVSH .... 0110 1111 1111 .... 1111 1011 .... @rdm
495RBIT .... 0110 1111 1111 .... 1111 0011 .... @rdm
2c7c4e09
RH
496
497# Signed multiply, signed and unsigned divide
498
499@rdmn ---- .... .... rd:4 .... rm:4 .... rn:4 &rrr
500
501SMLAD .... 0111 0000 .... .... .... 0001 .... @rdamn
502SMLADX .... 0111 0000 .... .... .... 0011 .... @rdamn
503SMLSD .... 0111 0000 .... .... .... 0101 .... @rdamn
504SMLSDX .... 0111 0000 .... .... .... 0111 .... @rdamn
505
506SDIV .... 0111 0001 .... 1111 .... 0001 .... @rdmn
507UDIV .... 0111 0011 .... 1111 .... 0001 .... @rdmn
508
509SMLALD .... 0111 0100 .... .... .... 0001 .... @rdamn
510SMLALDX .... 0111 0100 .... .... .... 0011 .... @rdamn
511SMLSLD .... 0111 0100 .... .... .... 0101 .... @rdamn
512SMLSLDX .... 0111 0100 .... .... .... 0111 .... @rdamn
513
514SMMLA .... 0111 0101 .... .... .... 0001 .... @rdamn
515SMMLAR .... 0111 0101 .... .... .... 0011 .... @rdamn
516SMMLS .... 0111 0101 .... .... .... 1101 .... @rdamn
517SMMLSR .... 0111 0101 .... .... .... 1111 .... @rdamn
c5c426d4
RH
518
519# Block data transfer
520
521STM ---- 100 b:1 i:1 u:1 w:1 0 rn:4 list:16 &ldst_block
522LDM_a32 ---- 100 b:1 i:1 u:1 w:1 1 rn:4 list:16 &ldst_block
360144f3
RH
523
524# Branch, branch with link
525
526%imm26 0:s24 !function=times_4
527@branch ---- .... ........................ &i imm=%imm26
528
529B .... 1010 ........................ @branch
530BL .... 1011 ........................ @branch
542f5188
RH
531
532# Supervisor call
533
534SVC ---- 1111 imm:24 &i
This page took 0.139361 seconds and 4 git commands to generate.