]> gitweb.factorcode.org Git - factor.git/blob - basis/cpu/arm/assembler/opcodes/opcodes.factor
cpu.arm.assembler: More words to encode, bounds checking
[factor.git] / basis / cpu / arm / assembler / opcodes / opcodes.factor
1 ! Copyright (C) 2020 Doug Coleman.
2 ! See http://factorcode.org/license.txt for BSD license.
3 USING: accessors assocs classes.error classes.parser effects
4 effects.parser kernel lexer math math.bitwise math.parser
5 multiline parser sequences vocabs.parser words words.symbol ;
6 IN: cpu.arm.assembler.opcodes
7
8 ! https://developer.arm.com/documentation/ddi0487/latest/
9 ! https://static.docs.arm.com/ddi0487/fb/DDI0487F_b_armv8_arm.pdf ! initial work
10 ! https://static.docs.arm.com/ddi0487/fb/DDI0487G_a_armv8_arm.pdf ! 3/13/21
11
12 <<
13 SYNTAX: REGISTERS:
14     ";"
15     [
16         create-word-in
17         [ define-symbol ]
18         [ dup name>> 1 tail string>number "ordinal" set-word-prop ] bi
19     ] each-token ;
20 >>
21
22 <<
23 GENERIC: register ( obj -- n )
24 M: word register "ordinal" word-prop ;
25 M: integer register ;
26 : error-word ( word -- new-class )
27     name>> "-range" append create-class-in dup save-location
28     tuple
29     { "value" }
30     [ define-error-class ] keepdd ;
31
32 : make-checker-word ( word n -- )
33     [ drop dup error-word ]
34     [ nip swap '[ dup _ on-bits > [ _ execute( value -- * ) ] when ] ]
35     [ 2drop ( n -- n ) ] 2tri
36     define-declared ;
37
38 SYNTAX: FIELD:
39     scan-new-word scan-object
40     [ "width" set-word-prop ] 2keep
41     make-checker-word ;
42
43 : make-register-checker-word ( word n -- )
44     [ drop dup error-word '[ _ execute( value -- * ) ] ]
45     [ nip swap '[ register dup _ on-bits > _ when ] ]
46     [ 2drop ( n -- n ) ] 2tri
47     define-declared ;
48
49 SYNTAX: REGISTER-FIELD:
50     scan-new-word scan-object
51     [ "width" set-word-prop ] 2keep
52     make-register-checker-word ;
53
54 >>
55
56 <<
57 FIELD: op1 1
58 FIELD: op2 2
59 FIELD: op3 3
60 FIELD: op4 4
61 FIELD: op5 5
62 FIELD: op6 6
63 FIELD: op7 7
64 FIELD: op8 8
65 FIELD: op9 9
66 FIELD: op10 10
67
68 FIELD: opc1 1
69 FIELD: opc2 2
70 FIELD: opc3 3
71 FIELD: opc4 4
72
73 FIELD: option1 1
74 FIELD: option2 2
75 FIELD: option3 3
76 FIELD: option4 4
77 FIELD: option5 5
78
79 FIELD: a1 1
80 FIELD: b1 1
81 FIELD: c1 1
82 FIELD: d1 1
83 FIELD: e1 1
84 FIELD: f1 1
85 FIELD: g1 1
86 FIELD: h1 1
87
88 FIELD: A 1
89 FIELD: D 1
90 FIELD: L 1
91 FIELD: M 1
92 FIELD: N 1
93 FIELD: Q 1
94 FIELD: S 1
95 FIELD: U 1
96 FIELD: Z 1
97
98 FIELD: sf 1
99
100 FIELD: size1 1
101 FIELD: size2 2
102
103 FIELD: shift2 2
104
105 FIELD: b40 5
106
107 FIELD: immr 6
108 FIELD: imms 6
109 FIELD: immrimms 12
110 FIELD: Nimmrimms 13
111 FIELD: imm3 3
112 FIELD: imm4 4
113 FIELD: imm5 5
114 FIELD: imm6 6
115 FIELD: imm7 7
116 FIELD: imm9 9
117 FIELD: imm12 12
118 FIELD: imm13 13
119 FIELD: imm14 14
120 FIELD: imm16 16
121 FIELD: imm19 19
122 FIELD: imm26 26
123
124 FIELD: simm7 7
125 FIELD: uimm4 4
126 FIELD: uimm6 6
127
128 FIELD: immlo2 2
129 FIELD: immhi19 19
130
131 FIELD: cond4 4
132 FIELD: cmode4 4
133 FIELD: CRm4 4
134 FIELD: CRn4 4
135 FIELD: CRm 4
136 FIELD: CRn 4
137 FIELD: nzcv4 4
138 FIELD: nzcv 4
139 FIELD: o0 1
140 FIELD: hw2 2
141 FIELD: mask4 4
142
143 REGISTER-FIELD: Ra 5
144 REGISTER-FIELD: Rm 5
145 REGISTER-FIELD: Rn 5
146 REGISTER-FIELD: Rd 5
147 REGISTER-FIELD: Rs 5
148 REGISTER-FIELD: Rt 5
149 REGISTER-FIELD: Rt2 5
150 REGISTER-FIELD: Xd 5
151 REGISTER-FIELD: Xm 5
152 REGISTER-FIELD: Xn 5
153 REGISTER-FIELD: Xt 5
154 REGISTER-FIELD: Xt2 5
155
156 ! General purpose registers, 64bit
157 REGISTERS: X0 X1 X2 X3 X4 X5 X6 X7 X8 X9 X10 X11 X12
158 X13 X14 X15 X16 X17 X18 X19 X20 X21 X22 X23 X24 X25
159 X26 X27 X28 X29 X30 ;
160
161 ! Lower registers, shared with X0..X30, 32bit
162 REGISTERS: W0 W1 W2 W3 W4 W5 W6 W7 W8 W9 W10 W11 W12
163 W13 W14 W15 W16 W17 W18 W19 W20 W21 W22 W23 W24 W25
164 W26 W27 W28 W29 W30 ;
165
166 ! https://static.docs.arm.com/ddi0487/fb/DDI0487F_b_armv8_arm.pdf pgA1-42
167 ! Neon registers (SIMD Scalar) Q/D/S/H/B 128/64/32/16/8 bits
168 REGISTERS: V0 V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12
169 V13 V14 V15 V16 V17 V18 V19 V20 V21 V22 V23 V24 V25
170 V26 V27 V28 V29 V30 V31 ;
171
172 REGISTERS: B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 B10 B11 B12
173 B13 B14 B15 B16 B17 B18 B19 B20 B21 B22 B23 B24 B25
174 B26 B27 B28 B29 B30 B31 ;
175
176 REGISTERS: H0 H1 H2 H3 H4 H5 H6 H7 H8 H9 H10 H11 H12
177 H13 H14 H15 H16 H17 H18 H19 H20 H21 H22 H23 H24 H25
178 H26 H27 H28 H29 H30 H31 ;
179
180 REGISTERS: S0 S1 S2 S3 S4 S5 S6 S7 S8 S9 S10 S11 S12
181 S13 S14 S15 S16 S17 S18 S19 S20 S21 S22 S23 S24 S25
182 S26 S27 S28 S29 S30 S31 ;
183
184 REGISTERS: D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 D10 D11 D12
185 D13 D14 D15 D16 D17 D18 D19 D20 D21 D22 D23 D24 D25
186 D26 D27 D28 D29 D30 D31 ;
187
188 REGISTERS: Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q8 Q9 Q10 Q11 Q12
189 Q13 Q14 Q15 Q16 Q17 Q18 Q19 Q20 Q21 Q22 Q23 Q24 Q25
190 Q26 Q27 Q28 Q29 Q30 Q31 ;
191
192 CONSTANT: SP 31
193 CONSTANT: WSP 31
194 CONSTANT: WZR 31
195 CONSTANT: XZR 31
196
197 ! Zero/discard register 31, ZR WZR XZR - reads 0 always, writes to it succeed
198 ! Stack Pointer register 31 WSP SP
199 ! SINGLETONS: WZR XZR ; ! alias for register 31
200 ! SINGLETONS: WSP SP ; ! alias for register 31 which does not exist
201 ! Rn - register
202
203 ! PSTATE EL0: NZCV, DAIF, 
204
205 ! EL - exception level. application 0, OS (priv) 1, hypervisor 2, low-level 3
206
207 ! Stack Pointer EL0 is 64bit, rest are 32bit
208 SINGLETONS: SP_EL0 SP_EL1 SP_EL2 SP_EL3 ;
209
210 ! Exception link registers, 64bit
211 SINGLETONS: ELR_EL1 ELR_EL2 ELR_EL3 ;
212
213 ! Saved program status registers, exception level, 64bit
214 SINGLETONS: SPSR_EL1 SPSR_EL2 SPSR_EL3 ;
215
216 ! Program counter, 64bit
217 ! SINGLETONS: PC ; ! not accessible (?)
218
219 ! Flags: N negative, Z zero, C carry, V overflow, SS software step, IL illegal execution
220 ! D debug, A SError system error, I IRQ normal interrupt, F FIQ fast interrupt
221
222 ! Distinct L1 I-cache (instruction) and D-cache (data), unified L2 cache
223 ! 4kb page size alignment, unaligned accepted
224
225 ! PCS Procedure Call Standard X0-X7 parameters/results registers
226 ! X9-X15 caller-saved temp regs (use)
227 ! X19-X29 callee-saved (preserved)
228 ! X8 indirect result register, syscalls register
229 ! X16 X17 are IP0 and IP1, intra-procedure temp regs (avoid)
230 ! X18 platform-register (avoid)
231 ! X29 FP frame pointer register (avoid)
232 ! X30 LR link register (avoid)
233
234 ![[
235 (bits(N), bit) LSL_C(bits(N) x, integer shift)
236     assert shift > 0;
237     shift = if shift > N then N else shift;
238     extended_x = x : Zeros(shift);
239     result = extended_x<N-1:0>;
240     carry_out = extended_x<N>;
241     return (result, carry_out);
242 ]]
243
244 ! Instructions
245
246 ! https://www.element14.com/community/servlet/JiveServlet/previewBody/41836-102-1-229511/ARM.Reference_Manual.pdf
247 ! pg 16
248 ! cond code set in prev arm assembler
249 : >CC ( x -- x ) ; inline
250 : EQ ( -- n ) 0000 >CC ; inline ! Z set equal
251 : NE ( -- n ) 0001 >CC ; inline ! Z clear not equal
252 : CS ( -- n ) 0010 >CC ; inline ! C set unsigned higher or same
253 : HS ( -- n ) 0010 >CC ; inline !
254 : CC ( -- n ) 0011 >CC ; inline ! C clear unsigned lower
255 : LO ( -- n ) 0011 >CC ; inline !
256 : MI ( -- n ) 0100 >CC ; inline ! N set negative
257 : PL ( -- n ) 0101 >CC ; inline ! N clear positive or zero
258 : VS ( -- n ) 0110 >CC ; inline ! V set overflow
259 : VC ( -- n ) 0111 >CC ; inline ! V clear no overflow
260 : HI ( -- n ) 1000 >CC ; inline ! C set and Z clear unsigned higher
261 : LS ( -- n ) 1001 >CC ; inline ! C clear or Z set unsigned lower or same
262 : GE ( -- n ) 1010 >CC ; inline ! N equals V greater or equal
263 : LT ( -- n ) 1011 >CC ; inline ! N not equal to V less than
264 : GT ( -- n ) 1100 >CC ; inline ! Z clear AND (N equals V) greater than
265 : LE ( -- n ) 1101 >CC ; inline ! Z set OR (N not equal to V) less than or equal
266 : AL ( -- n ) 1110 >CC ; inline ! AL (ignored) always
267 : NV ( -- n ) 1111 >CC ; inline ! no value
268
269 : imm13>parts-64 ( imm13 -- imms immr N )
270     [ -4 shift 4 bits ] [ 4 bits ] [ -8 shift ] tri ;
271
272 : imm12>parts-32 ( imm12 -- imms immr N-is-0 )
273     [ -4 shift 4 bits ] [ 4 bits ] [ drop 0 ] tri ;
274
275
276 ERROR: no-field-word vocab name ;
277
278 TUPLE: integer-literal value width ;
279 C: <integer-literal> integer-literal
280
281 ! handle 1xx0 where x = dontcare
282 : make-integer-literal ( string -- integer-literal )
283     [ "0b" prepend { { CHAR: x CHAR: 0 } } substitute string>number ]
284     [ length ] bi <integer-literal> ;
285
286 : ?lookup-word ( name vocab -- word )
287     2dup lookup-word
288     [ 2nip ]
289     [ over [ "01x" member? ] all? [ drop make-integer-literal ] [ no-field-word ] if ] if* ;
290
291 GENERIC: width ( obj -- n )
292 M: word width "width" word-prop ;
293 M: integer-literal width width>> ;
294
295 GENERIC: value ( obj -- n )
296 M: integer-literal value value>> ;
297 M: object value ;
298
299 : arm-bitfield ( seq -- assoc )
300     [ current-vocab name>> ?lookup-word ] map
301     [ dup width ] map>alist
302     dup values [ f = ] any? [ throw ] when ;
303
304 ERROR: bad-instruction values ;
305 >>
306 <<
307 SYNTAX: ARM-INSTRUCTION:
308     scan-new-word
309     scan-effect
310     [
311       in>> arm-bitfield
312       [ keys [ value ] map ]
313       [ values 32 [ - ] accumulate* ] bi zip
314       dup last second 0 = [ bad-instruction ] unless
315       '[ _ bitfield* ]
316     ] [ in>> [ string>number ] reject { "instruction" } <effect> ] bi define-declared ;
317 >>
318
319
320
321 ! ADC: Add with Carry.
322 ! ADCS: Add with Carry, setting flags.
323 ARM-INSTRUCTION: ADC32-encode ( 0 0 0 11010000 Rm 000000 Rn Rd -- instruction )
324 ARM-INSTRUCTION: ADCS32-encode ( 0 0 1 11010000 Rm 000000 Rn Rd -- instruction )
325 ARM-INSTRUCTION: ADC64-encode ( 1 0 0 11010000 Rm 000000 Rn Rd -- instruction )
326 ARM-INSTRUCTION: ADCS64-encode ( 1 0 1 11010000 Rm 000000 Rn Rd -- instruction )
327
328 ! ADD (extended register): Add (extended register).
329 ARM-INSTRUCTION: ADDer32-encode ( 0 0 0 01011 00 0 Rm option3 imm3 Rn Rd -- instruction )
330 ARM-INSTRUCTION: ADDer64-encode ( 1 0 0 01011 00 0 Rm option3 imm3 Rn Rd -- instruction )
331
332 ! ADD (immediate): Add (immediate).
333 ARM-INSTRUCTION: ADDi32-encode ( 0 0 0 10001 shift2 imm12 Rn Rd -- instruction )
334 ARM-INSTRUCTION: ADDi64-encode ( 1 0 0 10001 shift2 imm12 Rn Rd -- instruction )
335
336 ! ADD (shifted register): Add (shifted register).
337 ARM-INSTRUCTION: ADDsr32-encode ( 0 0 0 01011 shift2 0 Rm imm6 Rn Rd -- instruction )
338 ARM-INSTRUCTION: ADDsr64-encode ( 1 0 0 01011 shift2 0 Rm imm6 Rn Rd -- instruction )
339
340 ARM-INSTRUCTION: ADDs-encode ( 01 0 11110 size2 1 Rm 10000 1 Rn Rd -- instruction )
341
342 ! ADDG: Add with Tag.
343 ARM-INSTRUCTION: ADDG-encode ( 1 0 0 100011 0 uimm6 00 uimm4 Xn Xd -- instruction )
344
345 ! ADDS (extended register): Add (extended register), setting flags.
346 ARM-INSTRUCTION: ADDSer32-encode ( 0 0 1 01011 00 1 Rm option3 imm3 Rn Rd -- instruction )
347 ARM-INSTRUCTION: ADDSer64-encode ( 1 0 1 01011 00 1 Rm option3 imm3 Rn Rd -- instruction )
348
349 ! ADDS (immediate): Add (immediate), setting flags.
350 ARM-INSTRUCTION: ADDSi32-encode ( 0 0 1 10001 shift2 imm12 Rn Rd -- instruction )
351 ARM-INSTRUCTION: ADDSi64-encode ( 1 0 1 10001 shift2 imm12 Rn Rd -- instruction )
352
353 ! ADDS (shifted register): Add (shifted register), setting flags.
354 ARM-INSTRUCTION: ADDSsr32-encode ( 0 0 1 01011 shift2 0 Rm imm6 Rn Rd -- instruction )
355 ARM-INSTRUCTION: ADDSsr64-encode ( 1 0 1 01011 shift2 0 Rm imm6 Rn Rd -- instruction )
356
357 ! ADR: Form PC-relative address.
358 ! ADRP: Form PC-relative address to 4KB page.
359 ARM-INSTRUCTION: ADR-encode  ( 0 immlo2 10000 immhi19 Rd -- instruction )
360 ARM-INSTRUCTION: ADRP-encode ( 1 immlo2 10000 immhi19 Rd -- instruction )
361
362
363 ! AND (immediate): Bitwise AND (immediate).
364 ARM-INSTRUCTION: ANDi32-encode ( 0 00 100100 0 immrimms Rn Rd -- instruction )
365 ARM-INSTRUCTION: ANDi64-encode ( 1 00 100100 Nimmrimms Rn Rd -- instruction )
366
367 ! AND (shifted register): Bitwise AND (shifted register).
368 ARM-INSTRUCTION: ANDsr32-encode ( 0 00 01010 shift2 0 Rm imm6 Rn Rd -- instruction )
369 ARM-INSTRUCTION: ANDsr64-encode ( 1 00 01010 shift2 0 Rm imm6 Rn Rd -- instruction )
370
371 ! ANDS (immediate): Bitwise AND (immediate), setting flags.
372 ARM-INSTRUCTION: ANDSi32-encode ( 0 11 100100 0 immrimms Rn Rd -- instruction )
373 ARM-INSTRUCTION: ANDSi64-encode ( 1 11 100100 Nimmrimms Rn Rd -- instruction )
374
375 ! ANDS (shifted register): Bitwise AND (shifted register), setting flags.
376 ARM-INSTRUCTION: ANDSsr32-encode ( 0 11 01010 shift2 0 Rm imm6 Rn Rd -- instruction )
377 ARM-INSTRUCTION: ANDSsr64-encode ( 1 11 01010 shift2 0 Rm imm6 Rn Rd -- instruction )
378
379 ! ASR (immediate): Arithmetic Shift Right (immediate): an alias of SBFM.
380 ARM-INSTRUCTION: ASRi32-encode ( 0 00 100110 0 immr 011111 Rn Rd -- instruction )
381 ARM-INSTRUCTION: ASRi64-encode ( 1 00 100110 1 immr 111111 Rn Rd -- instruction )
382
383 ! ASR (register): Arithmetic Shift Right (register): an alias of ASRV.
384 ARM-INSTRUCTION: ASRr32-encode ( 0 0 0 11010110 Rm 0010 10 Rn Rd -- instruction )
385 ARM-INSTRUCTION: ASRr64-encode ( 1 0 0 11010110 Rm 0010 10 Rn Rd -- instruction )
386
387 ! ASRV: Arithmetic Shift Right Variable.
388 ARM-INSTRUCTION: ASRV32-encode ( 0 0 0 11010110 Rm 0010 10 Rn Rd -- instruction )
389 ARM-INSTRUCTION: ASRV64-encode ( 1 0 0 11010110 Rm 0010 10 Rn Rd -- instruction )
390
391 ! AT: Address Translate: an alias of SYS.
392 ARM-INSTRUCTION: AT-encode ( 1101010100 0 01 op3 0111 1000 op3 Rt -- instruction )
393
394 ! AUTDA, AUTDZA: Authenticate Data address, using key A.
395 ! AUTDB, AUTDZB: Authenticate Data address, using key B.
396 ARM-INSTRUCTION: AUTDA-encode  ( 1 1 0 11010110 00001 0 0 0 110 Rn Rd -- instruction )
397 ARM-INSTRUCTION: AUTDZA-encode ( 1 1 0 11010110 00001 0 0 1 110 11111 Rd -- instruction )
398 ARM-INSTRUCTION: AUTDB-encode  ( 1 1 0 11010110 00001 0 0 0 111 Rn Rd -- instruction )
399 ARM-INSTRUCTION: AUTDZB-encode ( 1 1 0 11010110 00001 0 0 1 111 11111 Rd -- instruction )
400
401 ! AUTIA, AUTIA1716, AUTIASP, AUTIAZ, AUTIZA: Authenticate Instruction address, using key A.
402 ! ARMv8.3
403 ARM-INSTRUCTION: AUTIA-encode  ( 1 1 0 11010110 00001 0 0 0 100 Rn Rd -- instruction )
404 ARM-INSTRUCTION: AUTIZA-encode ( 1 1 0 11010110 00001 0 0 1 100 11111 Rd -- instruction )
405 ! ARMv8.3
406 ARM-INSTRUCTION: AUTIA1716-encode ( 1101010100 0 00 011 0010 0001 100 11111 -- instruction )
407 ARM-INSTRUCTION: AUTIASP-encode   ( 1101010100 0 00 011 0010 0011 101 11111 -- instruction )
408 ARM-INSTRUCTION: AUTIAAZ-encode   ( 1101010100 0 00 011 0010 0011 100 11111 -- instruction )
409
410 ! AUTIB, AUTIB1716, AUTIBSP, AUTIBZ, AUTIZB: Authenticate Instruction address, using key B.
411 ! ARMv8.3
412 ARM-INSTRUCTION: AUTIB-encode  ( 1 1 0 11010110 00001 0 0 0 101 Rn Rd -- instruction )
413 ARM-INSTRUCTION: AUTIZB-encode ( 1 1 0 11010110 00001 0 0 1 101 11111 Rd -- instruction )
414 ! ARMv8.3
415 ARM-INSTRUCTION: AUTIB1716-encode ( 1101010100 0 00 011 0010 0001 110 11111 -- instruction )
416 ARM-INSTRUCTION: AUTIBSP-encode   ( 1101010100 0 00 011 0010 0011 111 11111 -- instruction )
417 ARM-INSTRUCTION: AUTIBZ-encode    ( 1101010100 0 00 011 0010 0011 110 11111 -- instruction )
418
419 ! AXFlag: Convert floating-point condition flags from ARM to external format.
420 ARM-INSTRUCTION: AXFlag-encode ( 1101010100 0 00 000 0100 0000 010 11111 -- instruction )
421
422 ! B: Branch.
423 ARM-INSTRUCTION: B-encode ( 0 00101 imm26 -- instruction )
424
425 ! B.cond: Branch conditionally.
426 ARM-INSTRUCTION: B.cond-encode ( 0101010 0 imm19 0 cond4 -- instruction )
427
428 ! BFC: Bitfield Clear: an alias of BFM.
429 ARM-INSTRUCTION: BFC32-encode ( 0 01 100110 0 immrimms 11111 Rd -- instruction )
430 ARM-INSTRUCTION: BFC64-encode ( 1 01 100110 Nimmrimms 11111 Rd -- instruction )
431
432 ! BFI: Bitfield Insert: an alias of BFM.
433 ARM-INSTRUCTION: BFI32-encode ( 0 01 100110 0 immrimms Rn Rd -- instruction )
434 ARM-INSTRUCTION: BFI64-encode ( 1 01 100110 Nimmrimms Rn Rd -- instruction )
435
436 ! BFM: Bitfield Move.
437 ARM-INSTRUCTION: BFM32-encode ( 0 01 100110 0 immrimms Rn Rd -- instruction )
438 ARM-INSTRUCTION: BFM64-encode ( 1 01 100110 Nimmrimms Rn Rd -- instruction )
439
440 ! BFXIL: Bitfield extract and insert at low end: an alias of BFM.
441 ARM-INSTRUCTION: BFXIL32-encode ( 0 01 100110 0 immrimms Rn Rd -- instruction )
442 ARM-INSTRUCTION: BFXIL64-encode ( 1 01 100110 Nimmrimms Rn Rd -- instruction )
443
444 ! BIC (shifted register): Bitwise Bit Clear (shifted register).
445 ARM-INSTRUCTION: BIC-encode ( 0 Q 1 0111100000 a1 b1 c1 cmode4 0 1 d1 e1 f1 g1 h1 Rd -- instruction )
446 ! BIC (shifted register): Bitwise Bit Clear (shifted register).
447 ARM-INSTRUCTION: BICsr32-encode ( 0 00 01010 shift2 1 Rm imm6 Rn Rd -- instruction )
448 ARM-INSTRUCTION: BICsr64-encode ( 1 00 01010 shift2 1 Rm imm6 Rn Rd -- instruction )
449 ! BICS (shifted register): Bitwise Bit Clear (shifted register), setting flags.
450 ARM-INSTRUCTION: BICSsr32-encode ( 0 11 01010 shift2 1 Rm imm6 Rn Rd -- instruction )
451 ARM-INSTRUCTION: BICSsr64-encode ( 1 11 01010 shift2 1 Rm imm6 Rn Rd -- instruction )
452 ! BL: Branch with Link.
453 ARM-INSTRUCTION: BL-encode ( 1 00101 imm26 -- instruction )
454 ! BLR: Branch with Link to Register.
455 ARM-INSTRUCTION: BLR-encode ( 1101011 0 0 01 11111 0000 0 0 Rn 00000 -- instruction )
456
457 ! BLRAA, BLRAAZ, BLRAB, BLRABZ: Branch with Link to Register, with pointer authentication.
458 ARM-INSTRUCTION: BLRAA-encode  ( 1101011 0 0 01 11111 0000 1 0 Rn Rm -- instruction )
459 ARM-INSTRUCTION: BLRAAZ-encode ( 1101011 1 0 01 11111 0000 1 0 Rn 11111 -- instruction )
460 ARM-INSTRUCTION: BLRAB-encode  ( 1101011 0 0 01 11111 0000 1 1 Rn Rm -- instruction )
461 ARM-INSTRUCTION: BLRABZ-encode ( 1101011 1 0 01 11111 0000 1 1 Rn 11111 -- instruction )
462
463 ! BR: Branch to Register.
464 ARM-INSTRUCTION: BR-encode ( 1101011 0 0 00 11111 0000 0 0 Rn 00000 -- instruction )
465
466 ! BRAA, BRAAZ, BRAB, BRABZ: Branch to Register, with pointer authentication.
467 ARM-INSTRUCTION: BRAA-encode  ( 1101011 0 0 00 11111 0000 1 0 Rn 11111 -- instruction )
468 ARM-INSTRUCTION: BRAAZ-encode ( 1101011 1 0 00 11111 0000 1 0 Rn Rm -- instruction )
469 ARM-INSTRUCTION: BRAB-encode  ( 1101011 0 0 00 11111 0000 1 1 Rn 11111 -- instruction )
470 ARM-INSTRUCTION: BRABZ-encode ( 1101011 1 0 00 11111 0000 1 1 Rn Rm -- instruction )
471
472 ! BRK: Breakpoint instruction.
473 ARM-INSTRUCTION: BRK-encode ( 11010100 001 imm16 000 00 -- instruction )
474 ! BTI: Branch Target Identification.
475 ARM-INSTRUCTION: BTI-encode ( 1101010100 0 00 011 0010 0100 000 11111 -- instruction )
476
477 ! CAS, CASA, CASAL, CASL: Compare and Swap word or doubleword in memory.
478 ARM-INSTRUCTION: CAS32-encode   ( 10 001000 1 0 1 Rs 0 11111 Rn Rt -- instruction )
479 ARM-INSTRUCTION: CASA32-encode  ( 10 001000 1 1 1 Rs 0 11111 Rn Rt -- instruction )
480 ARM-INSTRUCTION: CASAL32-encode ( 10 001000 1 1 1 Rs 1 11111 Rn Rt -- instruction )
481 ARM-INSTRUCTION: CASL32-encode  ( 10 001000 1 0 1 Rs 1 11111 Rn Rt -- instruction )
482 ARM-INSTRUCTION: CAS64-encode   ( 11 001000 1 0 1 Rs 0 11111 Rn Rt -- instruction )
483 ARM-INSTRUCTION: CASA64-encode  ( 11 001000 1 1 1 Rs 0 11111 Rn Rt -- instruction )
484 ARM-INSTRUCTION: CASAL64-encode ( 11 001000 1 1 1 Rs 1 11111 Rn Rt -- instruction )
485 ARM-INSTRUCTION: CASL64-encode  ( 11 001000 1 0 1 Rs 1 11111 Rn Rt -- instruction )
486
487 ! CASB, CASAB, CASALB, CASLB: Compare and Swap byte in memory.
488 ARM-INSTRUCTION: CASAB-encode  ( 00 001000 1 1 1 Rs 0 11111 Rn Rt -- instruction )
489 ARM-INSTRUCTION: CASALB-encode ( 00 001000 1 1 1 Rs 1 11111 Rn Rt -- instruction )
490 ARM-INSTRUCTION: CASB-encode   ( 00 001000 1 0 1 Rs 0 11111 Rn Rt -- instruction )
491 ARM-INSTRUCTION: CASLB-encode  ( 00 001000 1 0 1 Rs 1 11111 Rn Rt -- instruction )
492
493 ! CASH, CASAH, CASALH, CASLH: Compare and Swap halfword in memory.
494 ARM-INSTRUCTION: CASAH-encode  ( 01 001000 1 1 1 Rs 0 11111 Rn Rt -- instruction )
495 ARM-INSTRUCTION: CASALH-encode ( 01 001000 1 1 1 Rs 1 11111 Rn Rt -- instruction )
496 ARM-INSTRUCTION: CASH-encode   ( 01 001000 1 0 1 Rs 0 11111 Rn Rt -- instruction )
497 ARM-INSTRUCTION: CASLH-encode  ( 01 001000 1 0 1 Rs 1 11111 Rn Rt -- instruction )
498
499 ! CASP, CASPA, CASPAL, CASPL: Compare and Swap Pair of words or doublewords in memory.
500 ARM-INSTRUCTION: CASP32-encode   ( 0 0 001000 0 0 1 Rs 0 11111 Rn Rt -- instruction )
501 ARM-INSTRUCTION: CASPA32-encode  ( 0 0 001000 0 1 1 Rs 0 11111 Rn Rt -- instruction )
502 ARM-INSTRUCTION: CASPAL32-encode ( 0 0 001000 0 1 1 Rs 1 11111 Rn Rt -- instruction )
503 ARM-INSTRUCTION: CASPL32-encode  ( 0 0 001000 0 0 1 Rs 1 11111 Rn Rt -- instruction )
504 ARM-INSTRUCTION: CASP64-encode   ( 0 1 001000 0 0 1 Rs 0 11111 Rn Rt -- instruction )
505 ARM-INSTRUCTION: CASPA64-encode  ( 0 1 001000 0 1 1 Rs 0 11111 Rn Rt -- instruction )
506 ARM-INSTRUCTION: CASPAL64-encode ( 0 1 001000 0 1 1 Rs 1 11111 Rn Rt -- instruction )
507 ARM-INSTRUCTION: CASPL64-encode  ( 0 1 001000 0 0 1 Rs 1 11111 Rn Rt -- instruction )
508
509 ! CBNZ: Compare and Branch on Nonzero.
510 ARM-INSTRUCTION: CBNZ32-encode ( 0 011010 1 imm19 Rt -- instruction )
511 ARM-INSTRUCTION: CBNZ64-encode ( 1 011010 1 imm19 Rt -- instruction )
512
513 ! CBZ: Compare and Branch on Zero.
514 ARM-INSTRUCTION: CBZ32-encode ( 0 011010 0 imm19 Rt -- instruction )
515 ARM-INSTRUCTION: CBZ64-encode ( 1 011010 0 imm19 Rt -- instruction )
516
517
518 ! CCMN (immediate): Conditional Compare Negative (immediate).
519 ARM-INSTRUCTION: CCMNi32-encode ( 0 0 1 11010010 imm5 cond4 1 0 Rn 0 nzcv4 -- instruction )
520 ARM-INSTRUCTION: CCMNi64-encode ( 1 0 1 11010010 imm5 cond4 1 0 Rn 0 nzcv4 -- instruction )
521 ! CCMN (register): Conditional Compare Negative (register).
522 ARM-INSTRUCTION: CCMNr32-encode ( 0 0 1 11010010 Rm cond4 0 0 Rn 0 nzcv4 -- instruction )
523 ARM-INSTRUCTION: CCMNr64-encode ( 1 0 1 11010010 Rm cond4 0 0 Rn 0 nzcv4 -- instruction )
524 ! CCMP (immediate): Conditional Compare (immediate).
525 ARM-INSTRUCTION: CCMPi32-encode ( 0 1 1 11010010 imm5 cond4 1 0 Rn 0 nzcv4 -- instruction )
526 ARM-INSTRUCTION: CCMPi64-encode ( 1 1 1 11010010 imm5 cond4 1 0 Rn 0 nzcv4 -- instruction )
527 ! CCMP (register): Conditional Compare (register).
528 ARM-INSTRUCTION: CCMPr32-encode ( 0 1 1 11010010 Rm cond4 0 0 Rn 0 nzcv4 -- instruction )
529 ARM-INSTRUCTION: CCMPr64-encode ( 1 1 1 11010010 Rm cond4 0 0 Rn 0 nzcv4 -- instruction )
530
531 ! CFINV: Invert Carry Flag.
532 ARM-INSTRUCTION: CFINV-encode ( 1101010100 0 0 0 000 0100 0000 000 11111 -- instruction )
533 ! CFP: Control Flow Prediction Restriction by Context: an alias of SYS.
534 ARM-INSTRUCTION: CFP-encode ( 1101010100 0 01 011 0111 0011 100 Rt -- instruction )
535 ! CINC: Conditional Increment: an alias of CSINC.
536 ARM-INSTRUCTION: CINC32-encode ( 0 0 0 11010100 Rm cond4 0 1 Rn Rd -- instruction )
537 ARM-INSTRUCTION: CINC64-encode ( 1 0 0 11010100 Rm cond4 0 1 Rn Rd -- instruction )
538 ! CINV: Conditional Invert: an alias of CSINV.
539 ARM-INSTRUCTION: CINV32-encode ( 0 0 0 11010100 Rm cond4 0 0 Rn Rd -- instruction )
540 ARM-INSTRUCTION: CINV64-encode ( 1 0 0 11010100 Rm cond4 0 0 Rn Rd -- instruction )
541 ! CLREX: Clear Exclusive.
542 ARM-INSTRUCTION: CLREX-encode ( 1101010100 0 00 011 0011 CRm 010 11111 -- instruction )
543 ! CLS: Count Leading Sign bits.
544 ARM-INSTRUCTION: CLS32-encode ( 0 1 0 11010110 00000 00010 1 Rn Rd -- instruction )
545 ARM-INSTRUCTION: CLS64-encode ( 1 1 0 11010110 00000 00010 1 Rn Rd -- instruction )
546 ! CLZ: Count Leading Zeros.
547 ARM-INSTRUCTION: CLZ32-encode ( 0 1 0 11010110 00000 00010 0 Rn Rd -- instruction )
548 ARM-INSTRUCTION: CLZ64-encode ( 1 1 0 11010110 00000 00010 0 Rn Rd -- instruction )
549
550 ! CMN (extended register): Compare Negative (extended register): an alias of ADDS (extended register).
551 ARM-INSTRUCTION: CMNer32-encode ( 0 0 1 01011 00 1 Rm option3 imm3 Rn Rd -- instruction )
552 ARM-INSTRUCTION: CMNer64-encode ( 1 0 1 01011 00 1 Rm option3 imm3 Rn Rd -- instruction )
553 ! CMN (immediate): Compare Negative (immediate): an alias of ADDS (immediate).
554 ARM-INSTRUCTION: CMNi32-encode ( 0 0 1 10001 shift2 imm12 Rn 11111 -- instruction )
555 ARM-INSTRUCTION: CMNi64-encode ( 1 0 1 10001 shift2 imm12 Rn 11111 -- instruction )
556 ! CMN (shifted register): Compare Negative (shifted register): an alias of ADDS (shifted register).
557 ARM-INSTRUCTION: CMN-sr32-encode ( 0 0 1 01011 shift2 0 Rm imm6 Rn 11111 -- instruction )
558 ARM-INSTRUCTION: CMN-sr64-encode ( 1 0 1 01011 shift2 0 Rm imm6 Rn 11111 -- instruction )
559
560 ! CMP (extended register): Compare (extended register): an alias of SUBS (extended register).
561 ARM-INSTRUCTION: CMPer32-encode ( 0 1 1 01011 00 1 Rm option3 imm3 Rn 11111 -- instruction )
562 ARM-INSTRUCTION: CMPer64-encode ( 1 1 1 01011 00 1 Rm option3 imm3 Rn 11111 -- instruction )
563 ! CMP (immediate): Compare (immediate): an alias of SUBS (immediate).
564 ARM-INSTRUCTION: CMPi32-encode ( 0 1 1 10001 shift2 imm12 Rn 11111 -- instruction )
565 ARM-INSTRUCTION: CMPi64-encode ( 1 1 1 10001 shift2 imm12 Rn 11111 -- instruction )
566 ! CMP (shifted register): Compare (shifted register): an alias of SUBS (shifted register).
567 ARM-INSTRUCTION: CMPsr32-encode ( 0 1 1 01011 shift2 0 Rm imm6 Rn Rd -- instruction )
568 ARM-INSTRUCTION: CMPsr64-encode ( 1 1 1 01011 shift2 0 Rm imm6 Rn Rd -- instruction )
569
570 ! CMPP: Compare with Tag: an alias of SUBPS.
571 ARM-INSTRUCTION: CMPP-encode ( 1 0 1 11010110 Xm 0 0 0 0 0 0 Xn Xd -- instruction )
572 ! CNEG: Conditional Negate: an alias of CSNEG.
573 ARM-INSTRUCTION: CNEG32-encode ( 0 1 0 11010100 Rm cond4 0 1 Rn Rd -- instruction )
574 ARM-INSTRUCTION: CNEG64-encode ( 1 1 0 11010100 Rm cond4 0 1 Rn Rd -- instruction )
575 ! CPP: Cache Prefetch Prediction Restriction by Context: an alias of SYS.
576 ARM-INSTRUCTION: CPP-encode ( 1101010100 0 01 011 0111 0011 111 Rt -- instruction )
577
578 ! CRC32B, CRC32H, CRC32W, CRC32X: CRC32 checksum.
579 ARM-INSTRUCTION: CRC32B32-encode ( 0 0 0 11010110 Rm 010 0 00 Rn Rd -- instruction )
580 ARM-INSTRUCTION: CRC32B64-encode ( 1 0 0 11010110 Rm 010 0 00 Rn Rd -- instruction )
581 ARM-INSTRUCTION: CRC32H32-encode ( 0 0 0 11010110 Rm 010 0 01 Rn Rd -- instruction )
582 ARM-INSTRUCTION: CRC32H64-encode ( 1 0 0 11010110 Rm 010 0 01 Rn Rd -- instruction )
583 ARM-INSTRUCTION: CRC32W32-encode ( 0 0 0 11010110 Rm 010 0 10 Rn Rd -- instruction )
584 ARM-INSTRUCTION: CRC32W64-encode ( 1 0 0 11010110 Rm 010 0 10 Rn Rd -- instruction )
585 ARM-INSTRUCTION: CRC32X32-encode ( 0 0 0 11010110 Rm 010 0 11 Rn Rd -- instruction )
586 ARM-INSTRUCTION: CRC32X64-encode ( 1 0 0 11010110 Rm 010 0 11 Rn Rd -- instruction )
587
588 ! CRC32CB, CRC32CH, CRC32CW, CRC32CX: CRC32C checksum.
589 ARM-INSTRUCTION: CRC32CB32-encode ( 0 0 0 11010110 Rm 010 1 00 Rn Rd -- instruction )
590 ARM-INSTRUCTION: CRC32CB64-encode ( 1 0 0 11010110 Rm 010 1 00 Rn Rd -- instruction )
591 ARM-INSTRUCTION: CRC32CH32-encode ( 0 0 0 11010110 Rm 010 1 01 Rn Rd -- instruction )
592 ARM-INSTRUCTION: CRC32CH64-encode ( 1 0 0 11010110 Rm 010 1 01 Rn Rd -- instruction )
593 ARM-INSTRUCTION: CRC32CW32-encode ( 0 0 0 11010110 Rm 010 1 10 Rn Rd -- instruction )
594 ARM-INSTRUCTION: CRC32CW64-encode ( 1 0 0 11010110 Rm 010 1 10 Rn Rd -- instruction )
595 ARM-INSTRUCTION: CRC32CX32-encode ( 0 0 0 11010110 Rm 010 1 11 Rn Rd -- instruction )
596 ARM-INSTRUCTION: CRC32CX64-encode ( 1 0 0 11010110 Rm 010 1 11 Rn Rd -- instruction )
597
598 ! CSDB: Consumption of Speculative Data Barrier.
599 ARM-INSTRUCTION: CSDB-encode ( 1101010100 0 00 011 0010 0010 100 11111 -- instruction )
600 ! CSEL: Conditional Select.
601 ARM-INSTRUCTION: CSEL32-encode ( 0 0 0 11010100 Rm cond4 0 0 Rn Rd -- instruction )
602 ARM-INSTRUCTION: CSEL64-encode ( 1 0 0 11010100 Rm cond4 0 0 Rn Rd -- instruction )
603 ! CSET: Conditional Set: an alias of CSINC.
604 ARM-INSTRUCTION: CSET32-encode ( 0 0 0 11010100 11111 cond4 0 1 11111 Rd -- instruction )
605 ARM-INSTRUCTION: CSET64-encode ( 1 0 0 11010100 11111 cond4 0 1 11111 Rd -- instruction )
606 ! CSETM: Conditional Set Mask: an alias of CSINV.
607 ARM-INSTRUCTION: CSETM32-encode ( 0 0 0 11010100 11111 cond4 0 0 11111 Rd -- instruction )
608 ARM-INSTRUCTION: CSETM64-encode ( 1 0 0 11010100 11111 cond4 0 0 11111 Rd -- instruction )
609
610 ! CSINC: Conditional Select Increment.
611 ARM-INSTRUCTION: CSINC32-encode ( 0 0 0 11010100 Rm cond4 0 1 Rn Rd -- instruction )
612 ARM-INSTRUCTION: CSINC64-encode ( 1 0 0 11010100 Rm cond4 0 1 Rn Rd -- instruction )
613
614 ! CSINV: Conditional Select Invert.
615 ARM-INSTRUCTION: CSINV32-encode ( 0 0 0 11010100 Rm cond4 0 0 Rn Rd -- instruction )
616 ARM-INSTRUCTION: CSINV64-encode ( 1 0 0 11010100 Rm cond4 0 0 Rn Rd -- instruction )
617
618 ! CSNEG: Conditional Select Negation.
619 ARM-INSTRUCTION: CSNEG32-encode ( 0 1 0 11010100 Rm cond4 0 1 Rn Rd -- instruction )
620 ARM-INSTRUCTION: CSNEG64-encode ( 1 1 0 11010100 Rm cond4 0 1 Rn Rd -- instruction )
621
622 ! DC: Data Cache operation: an alias of SYS.
623 ARM-INSTRUCTION: DC-encode ( 1101010100 0 01 op3 0111 CRm op3 Rt -- instruction )
624 ! DCPS1: Debug Change PE State to EL1..
625 ARM-INSTRUCTION: DCPS1-encode ( 11010100 101 imm16 000 01 -- instruction )
626 ! DCPS2: Debug Change PE State to EL2..
627 ARM-INSTRUCTION: DCPS2-encode ( 11010100 101 imm16 000 10 -- instruction )
628 ! DCPS3: Debug Change PE State to EL3.
629 ARM-INSTRUCTION: DCPS3-encode ( 11010100 101 imm16 000 11 -- instruction )
630
631 ! DMB: Data Memory Barrier.
632 ARM-INSTRUCTION: DMB-encode ( 1101010100 0 00 011 0011 CRm 1 01 11111 -- instruction )
633 ! DRPS: Debug restore process state.
634 ARM-INSTRUCTION: DPRS-encode ( 1101011 0101 11111 000000 11111 00000 -- instruction )
635 ! DSB: Data Synchronization Barrier.
636 ARM-INSTRUCTION: DSB-encode ( 1101010100 0 00 011 0011 CRm 1 00 11111 -- instruction )
637 ! DVP: Data Value Prediction Restriction by Context: an alias of SYS.
638 ARM-INSTRUCTION: DVP-encode ( 1101010100 0 01 011 0111 0011 101 Rt -- instruction )
639
640 ! EON (shifted register): Bitwise Exclusive OR NOT (shifted register).
641 ARM-INSTRUCTION: EONsr32-encode ( 0 10 01010 shift2 1 Rm imm6 Rn Rd -- instruction )
642 ARM-INSTRUCTION: EONsr64-encode ( 1 10 01010 shift2 1 Rm imm6 Rn Rd -- instruction )
643
644 ! EOR (immediate): Bitwise Exclusive OR (immediate).
645 ARM-INSTRUCTION: EORi32-encode ( 0 10 100100 0 immrimms Rn Rd -- instruction )
646 ARM-INSTRUCTION: EORi64-encode ( 1 10 100100 Nimmrimms Rn Rd -- instruction )
647
648 ! EOR (shifted register): Bitwise Exclusive OR (shifted register).
649 ARM-INSTRUCTION: EORsr32-encode ( 0 10 01010 shift2 0 Rm imm6 Rn Rd -- instruction )
650 ARM-INSTRUCTION: EORsr64-encode ( 1 10 01010 shift2 0 Rm imm6 Rn Rd -- instruction )
651
652 ! ERET: Exception Return.
653 ARM-INSTRUCTION: ERET-encode ( 1101011 0 100 11111 0000 0 0 11111 00000 -- instruction )
654
655 ! ERETAA, ERETAB: Exception Return, with pointer authentication.
656 ! ARMv8.3
657 ARM-INSTRUCTION: ERETAA-encode ( 1101011 0 100 11111 0000 1 0 11111 00000 -- instruction )
658 ARM-INSTRUCTION: ERETAB-encode ( 1101011 0 100 11111 0000 1 1 11111 11111 -- instruction )
659
660 ! ESB: Error Synchronization Barrier.
661 ! ARMv8.2
662 ARM-INSTRUCTION: ESB-encode ( 1101010100 0 00 011 0010 0010 000 11111 -- instruction )
663 ! EXTR: Extract register.
664 ARM-INSTRUCTION: EXTR32-encode ( 0 00 100111 0 0 Rm imms Rn Rd -- instruction )
665 ARM-INSTRUCTION: EXTR64-encode ( 1 00 100111 1 0 Rm imms Rn Rd -- instruction )
666
667 ! GMI: Tag Mask Insert.
668 ARM-INSTRUCTION: GMI-encode ( 1 0 0 11010110 Xm 0 0 0 1 0 1 Xn Xd -- instruction )
669 ! HINT: Hint instruction.
670 ARM-INSTRUCTION: HINT-encode ( 1101010100 0 00 011 0010 CRm op3 11111 -- instruction )
671 ! HLT: Halt instruction.
672 ARM-INSTRUCTION: HLT-encode ( 11010100 010 imm16 000 00 -- instruction )
673
674 ! HVC: Hypervisor Call.
675 ARM-INSTRUCTION: HVC-encode ( 11010100 000 imm16 000 10 -- instruction )
676 ! IC: Instruction Cache operation: an alias of SYS.
677 ARM-INSTRUCTION: IC-encode ( 1101010100 0 01 op3 0111 CRm op3 Rt -- instruction )
678 ! IRG: Insert Random Tag.
679 ARM-INSTRUCTION: IRG-encode ( 1 0 0 11010110 Xm 0 0 0 1 0 0 Xn Xd -- instruction )
680 ! ISB: Instruction Synchronization Barrier.
681 ARM-INSTRUCTION: ISB-encode ( 1101010100 0 00 011 0011 CRm 1 10 11111 -- instruction )
682
683 ! LDADD, LDADDA, LDADDAL, LDADDL: Atomic add on word or doubleword in memory.
684 ARM-INSTRUCTION: LDADD32-encode   ( 10 111 0 00 0 0 1 Rs 0 000 00 Rn Rt -- instruction )
685 ARM-INSTRUCTION: LDADDA32-encode  ( 10 111 0 00 1 0 1 Rs 0 000 00 Rn Rt -- instruction )
686 ARM-INSTRUCTION: LDADDAL32-encode ( 10 111 0 00 1 1 1 Rs 0 000 00 Rn Rt -- instruction )
687 ARM-INSTRUCTION: LDADDL32-encode  ( 10 111 0 00 0 1 1 Rs 0 000 00 Rn Rt -- instruction )
688 ARM-INSTRUCTION: LDADD64-encode   ( 11 111 0 00 0 0 1 Rs 0 000 00 Rn Rt -- instruction )
689 ARM-INSTRUCTION: LDADDA64-encode  ( 11 111 0 00 1 0 1 Rs 0 000 00 Rn Rt -- instruction )
690 ARM-INSTRUCTION: LDADDAL64-encode ( 11 111 0 00 1 1 1 Rs 0 000 00 Rn Rt -- instruction )
691 ARM-INSTRUCTION: LDADDL64-encode  ( 11 111 0 00 0 1 1 Rs 0 000 00 Rn Rt -- instruction )
692
693 ! LDADDB, LDADDAB, LDADDALB, LDADDLB: Atomic add on byte in memory.
694 ARM-INSTRUCTION: LDADDAB-encode  ( 00 111 0 00 1 0 1 Rs 0 000 00 Rn Rt -- instruction )
695 ARM-INSTRUCTION: LDADDALB-encode ( 00 111 0 00 1 1 1 Rs 0 000 00 Rn Rt -- instruction )
696 ARM-INSTRUCTION: LDADDB-encode   ( 00 111 0 00 0 0 1 Rs 0 000 00 Rn Rt -- instruction )
697 ARM-INSTRUCTION: LDADDLB-encode  ( 00 111 0 00 0 1 1 Rs 0 000 00 Rn Rt -- instruction )
698
699 ! LDADDH, LDADDAH, LDADDALH, LDADDLH: Atomic add on halfword in memory.
700 ARM-INSTRUCTION: LDADDAH-encode  ( 01 111 0 00 1 0 1 Rs 0 000 00 Rn Rt -- instruction )
701 ARM-INSTRUCTION: LDADDALH-encode ( 01 111 0 00 1 1 1 Rs 0 000 00 Rn Rt -- instruction )
702 ARM-INSTRUCTION: LDADDH-encode   ( 01 111 0 00 0 0 1 Rs 0 000 00 Rn Rt -- instruction )
703 ARM-INSTRUCTION: LDADDLH-encode  ( 01 111 0 00 0 1 1 Rs 0 000 00 Rn Rt -- instruction )
704
705 ! LDAPR: Load-Acquire RCpc Register.
706 ! ARMv8.3
707 ARM-INSTRUCTION: LDAPR32-encode ( 10 111 0 00 1 0 1 11111 1 100 00 Rn Rt -- instruction )
708 ARM-INSTRUCTION: LDAPR64-encode ( 11 111 0 00 1 0 1 11111 1 100 00 Rn Rt -- instruction )
709 ! LDAPRB: Load-Acquire RCpc Register Byte.
710 ARM-INSTRUCTION: LDAPRB-encode ( 00 111 0 00 1 0 1 11111 1 100 00 Rn Rt -- instruction )
711 ! LDAPRH: Load-Acquire RCpc Register Halfword.
712 ARM-INSTRUCTION: LDAPRH-encode ( 01 111 0 00 1 0 1 11111 1 100 00 Rn Rt -- instruction )
713
714 ! LDAPUR: Load-Acquire RCpc Register (unscaled).
715 ARM-INSTRUCTION: LDAPUR32-encode ( 10 011001 01 0 imm9 00 Rn Rt -- instruction )
716 ARM-INSTRUCTION: LDAPUR64-encode ( 11 011001 01 0 imm9 00 Rn Rt -- instruction )
717 ! LDAPURB: Load-Acquire RCpc Register Byte (unscaled).
718 ARM-INSTRUCTION: LDAPURB-encode ( 00 011001 01 0 imm9 00 Rn Rt -- instruction )
719 ! LDAPURH: Load-Acquire RCpc Register Halfword (unscaled).
720 ARM-INSTRUCTION: LDAPURH-encode ( 01 011001 01 0 imm9 00 Rn Rt -- instruction )
721 ! LDAPURSB: Load-Acquire RCpc Register Signed Byte (unscaled).
722 ARM-INSTRUCTION: LDAPURSB32-encode ( 00 011001 11 0 imm9 00 Rn Rt -- instruction )
723 ARM-INSTRUCTION: LDAPURSB64-encode ( 00 011001 10 0 imm9 00 Rn Rt -- instruction )
724 ! LDAPURSH: Load-Acquire RCpc Register Signed Halfword (unscaled).
725 ARM-INSTRUCTION: LDAPURSH32-encode ( 01 011001 11 0 imm9 00 Rn Rt -- instruction )
726 ARM-INSTRUCTION: LDAPURSH64-encode ( 01 011001 10 0 imm9 00 Rn Rt -- instruction )
727 ! LDAPURSW: Load-Acquire RCpc Register Signed Word (unscaled).
728 ARM-INSTRUCTION: LDAPURSW-encode ( 10 011001 10 0 imm9 00 Rn Rt -- instruction )
729 ! LDAR: Load-Acquire Register.
730 ARM-INSTRUCTION: LDAR32-encode ( 10 001000 1 1 0 11111 1 11111 Rn Rt -- instruction )
731 ARM-INSTRUCTION: LDAR64-encode ( 11 001000 1 1 0 11111 1 11111 Rn Rt -- instruction )
732 ! LDARB: Load-Acquire Register Byte.
733 ARM-INSTRUCTION: LDARB-encode ( 00 001000 1 1 0 11111 1 11111 Rn Rt -- instruction )
734 ! LDARH: Load-Acquire Register Halfword.
735 ARM-INSTRUCTION: LDARH-encode ( 01 001000 1 1 0 11111 1 11111 Rn Rt -- instruction )
736 ! LDAXP: Load-Acquire Exclusive Pair of Registers.
737 ARM-INSTRUCTION: LDAXP32-encode ( 1 0 001000 0 1 1 11111 1 Rt2 Rn Rt -- instruction )
738 ARM-INSTRUCTION: LDAXP64-encode ( 1 1 001000 0 1 1 11111 1 Rt2 Rn Rt -- instruction )
739 ! LDAXR: Load-Acquire Exclusive Register.
740 ARM-INSTRUCTION: LDAXR32-encode ( 10 001000 0 1 0 11111 1 11111 Rn Rt -- instruction )
741 ARM-INSTRUCTION: LDAXR64-encode ( 11 001000 0 1 0 11111 1 11111 Rn Rt -- instruction )
742 ! LDAXRB: Load-Acquire Exclusive Register Byte.
743 ARM-INSTRUCTION: LDAXRB-encode ( 00 001000 0 1 0 11111 1 11111 Rn Rt -- instruction )
744 ! LDAXRH: Load-Acquire Exclusive Register Halfword.
745 ARM-INSTRUCTION: LDAXRH-encode ( 01 001000 0 1 0 11111 1 11111 Rn Rt -- instruction )
746
747 ! LDCLR, LDCLRA, LDCLRAL, LDCLRL: Atomic bit clear on word or doubleword in memory.
748 ARM-INSTRUCTION: LDCLR32-encode   ( 10 111 0 00 0 0 1 Rs 0 001 00 Rn Rt -- instruction )
749 ARM-INSTRUCTION: LDCLRA32-encode  ( 10 111 0 00 1 0 1 Rs 0 001 00 Rn Rt -- instruction )
750 ARM-INSTRUCTION: LDCLRAL32-encode ( 10 111 0 00 1 1 1 Rs 0 001 00 Rn Rt -- instruction )
751 ARM-INSTRUCTION: LDCLRL32-encode  ( 10 111 0 00 0 1 1 Rs 0 001 00 Rn Rt -- instruction )
752 ARM-INSTRUCTION: LDCLR64-encode   ( 11 111 0 00 0 0 1 Rs 0 001 00 Rn Rt -- instruction )
753 ARM-INSTRUCTION: LDCLRA64-encode  ( 11 111 0 00 1 0 1 Rs 0 001 00 Rn Rt -- instruction )
754 ARM-INSTRUCTION: LDCLRAL64-encode ( 11 111 0 00 1 1 1 Rs 0 001 00 Rn Rt -- instruction )
755 ARM-INSTRUCTION: LDCLRL64-encode  ( 11 111 0 00 0 1 1 Rs 0 001 00 Rn Rt -- instruction )
756
757 ! LDCLRB, LDCLRAB, LDCLRALB, LDCLRLB: Atomic bit clear on byte in memory.
758 ARM-INSTRUCTION: LDCLRAB-encode  ( 00 111 0 00 1 0 1 Rs 0 001 00 Rn Rt -- instruction )
759 ARM-INSTRUCTION: LDCLRALB-encode ( 00 111 0 00 1 1 1 Rs 0 001 00 Rn Rt -- instruction )
760 ARM-INSTRUCTION: LDCLRB-encode   ( 00 111 0 00 0 0 1 Rs 0 001 00 Rn Rt -- instruction )
761 ARM-INSTRUCTION: LDCLRLB-encode  ( 00 111 0 00 0 1 1 Rs 0 001 00 Rn Rt -- instruction )
762
763 ! LDCLRH, LDCLRAH, LDCLRALH, LDCLRLH: Atomic bit clear on halfword in memory.
764 ARM-INSTRUCTION: LDCLRAH-encode  ( 01 111 0 00 1 0 1 Rs 0 001 00 Rn Rt -- instruction )
765 ARM-INSTRUCTION: LDCLRALH-encode ( 01 111 0 00 1 1 1 Rs 0 001 00 Rn Rt -- instruction )
766 ARM-INSTRUCTION: LDCLRA-encode   ( 01 111 0 00 0 0 1 Rs 0 001 00 Rn Rt -- instruction )
767 ARM-INSTRUCTION: LDCLRLH-encode  ( 01 111 0 00 0 1 1 Rs 0 001 00 Rn Rt -- instruction )
768
769 ! LDEOR, LDEORA, LDEORAL, LDEORL: Atomic exclusive OR on word or doubleword in memory.
770 ARM-INSTRUCTION: LDEOR32-encode   ( 10 111 0 00 0 0 1 Rs 0 010 00 Rn Rt -- instruction )
771 ARM-INSTRUCTION: LDEORA32-encode  ( 10 111 0 00 1 0 1 Rs 0 010 00 Rn Rt -- instruction )
772 ARM-INSTRUCTION: LDEORAL32-encode ( 10 111 0 00 1 1 1 Rs 0 010 00 Rn Rt -- instruction )
773 ARM-INSTRUCTION: LDEORL32-encode  ( 10 111 0 00 0 1 1 Rs 0 010 00 Rn Rt -- instruction )
774 ARM-INSTRUCTION: LDEOR64-encode   ( 11 111 0 00 0 0 1 Rs 0 010 00 Rn Rt -- instruction )
775 ARM-INSTRUCTION: LDEORA64-encode  ( 11 111 0 00 1 0 1 Rs 0 010 00 Rn Rt -- instruction )
776 ARM-INSTRUCTION: LDEORAL64-encode ( 11 111 0 00 1 1 1 Rs 0 010 00 Rn Rt -- instruction )
777 ARM-INSTRUCTION: LDEORL64-encode  ( 11 111 0 00 0 1 1 Rs 0 010 00 Rn Rt -- instruction )
778
779 ! LDEORB, LDEORAB, LDEORALB, LDEORLB: Atomic exclusive OR on byte in memory.
780 ARM-INSTRUCTION: LDEORAB-encode  ( 00 111 0 00 1 0 1 Rs 0 010 00 Rn Rt -- instruction )
781 ARM-INSTRUCTION: LDEORALB-encode ( 00 111 0 00 1 1 1 Rs 0 010 00 Rn Rt -- instruction )
782 ARM-INSTRUCTION: LDEORB-encode   ( 00 111 0 00 0 0 1 Rs 0 010 00 Rn Rt -- instruction )
783 ARM-INSTRUCTION: LDEORLB-encode  ( 00 111 0 00 0 1 1 Rs 0 010 00 Rn Rt -- instruction )
784
785 ! LDEORH, LDEORAH, LDEORALH, LDEORLH: Atomic exclusive OR on halfword in memory.
786 ! ARMv8.1
787 ARM-INSTRUCTION: LDEORAH-encode  ( 01 111 0 00 1 0 1 Rs 0 010 00 Rn Rt -- instruction )
788 ARM-INSTRUCTION: LDEORALH-encode ( 01 111 0 00 1 1 1 Rs 0 010 00 Rn Rt -- instruction )
789 ARM-INSTRUCTION: LDEORH-encode   ( 01 111 0 00 0 0 1 Rs 0 010 00 Rn Rt -- instruction )
790 ARM-INSTRUCTION: LDEORLH-encode  ( 01 111 0 00 0 1 1 Rs 0 010 00 Rn Rt -- instruction )
791
792 ! LDG: Load Allocation Tag.
793 ! ARMv8.5
794 ARM-INSTRUCTION: LDG-encode ( 11011001 0 1 1 imm9 0 0 Xn Xt -- instruction )
795 ! LDGV: Load Allocation Tag.
796 ! ARMv8.5
797 ARM-INSTRUCTION: LDGV-encode ( 11011001 1 1 1 0 0 0 0 0 0 0 0 0 0 0 Xn Xt -- instruction )
798
799 ! LDLAR: Load LOAcquire Register.
800 ! ARMv8.1
801 ARM-INSTRUCTION: LDLAR32-encode ( 10 001000 1 1 0 11111 0 11111 Rn Rt -- instruction )
802 ARM-INSTRUCTION: LDLAR64-encode ( 11 001000 1 1 0 11111 0 11111 Rn Rt -- instruction )
803 ! LDLARB: Load LOAcquire Register Byte.
804 ARM-INSTRUCTION: LDLARB-encode ( 00 001000 1 1 0 11111 0 11111 Rn Rt -- instruction )
805 ! LDLARH: Load LOAcquire Register Halfword.
806 ARM-INSTRUCTION: LDLARH-encode ( 01 001000 1 1 0 11111 0 11111 Rn Rt -- instruction )
807
808 ! LDNP: Load Pair of Registers, with non-temporal hint.
809 ARM-INSTRUCTION: LDNP32-encode ( 00 101 0 000 1 imm7 Rt2 Rn Rt -- instruction )
810 ARM-INSTRUCTION: LDNP64-encode ( 10 101 0 000 1 imm7 Rt2 Rn Rt -- instruction )
811
812 ! LDP: Load Pair of Registers.
813 ARM-INSTRUCTION: LDPpost32-encode ( 00 101 0 001 1 imm7 Rt2 Rn Rt -- instruction )
814 ARM-INSTRUCTION: LDPpost64-encode ( 10 101 0 001 1 imm7 Rt2 Rn Rt -- instruction )
815 ARM-INSTRUCTION: LDPpre32-encode  ( 00 101 0 011 1 imm7 Rt2 Rn Rt -- instruction )
816 ARM-INSTRUCTION: LDPpre64-encode  ( 10 101 0 011 1 imm7 Rt2 Rn Rt -- instruction )
817 ARM-INSTRUCTION: LDPsoff32-encode ( 00 101 0 010 1 imm7 Rt2 Rn Rt -- instruction )
818 ARM-INSTRUCTION: LDPsoff64-encode ( 10 101 0 010 1 imm7 Rt2 Rn Rt -- instruction )
819
820 ! LDPSW: Load Pair of Registers Signed Word.
821 ARM-INSTRUCTION: LDPSWpost32-encode ( 01 101 0 001 1 imm7 Rt2 Rn Rt -- instruction )
822 ARM-INSTRUCTION: LDPSWpost64-encode ( 01 101 0 001 1 imm7 Rt2 Rn Rt -- instruction )
823 ARM-INSTRUCTION: LDPSWpre32-encode  ( 01 101 0 011 1 imm7 Rt2 Rn Rt -- instruction )
824 ARM-INSTRUCTION: LDPSWpre64-encode  ( 01 101 0 011 1 imm7 Rt2 Rn Rt -- instruction )
825 ARM-INSTRUCTION: LDPSWsoff32-encode ( 01 101 0 010 1 imm7 Rt2 Rn Rt -- instruction )
826 ARM-INSTRUCTION: LDPSWsoff64-encode ( 01 101 0 010 1 imm7 Rt2 Rn Rt -- instruction )
827
828 ! LDR (immediate): Load Register (immediate).
829 ARM-INSTRUCTION: LDRpost32-encode ( 10 111 0 00 01 0 imm9 01 Rn Rt -- instruction )
830 ARM-INSTRUCTION: LDRpost64-encode ( 11 111 0 00 01 0 imm9 01 Rn Rt -- instruction )
831 ARM-INSTRUCTION: LDRpre32-encode  ( 10 111 0 00 01 0 imm9 11 Rn Rt -- instruction )
832 ARM-INSTRUCTION: LDRpre64-encode  ( 11 111 0 00 01 0 imm9 11 Rn Rt -- instruction )
833 ARM-INSTRUCTION: LDRuoff32-encode ( 10 111 0 01 01 imm12 Rn Rt -- instruction )
834 ARM-INSTRUCTION: LDRuoff64-encode ( 11 111 0 01 01 imm12 Rn Rt -- instruction )
835
836 ! LDR (literal): Load Register (literal).
837 ARM-INSTRUCTION: LDRl32-encode ( 00 011 0 00 imm19 Rt -- instruction )
838 ARM-INSTRUCTION: LDRl64-encode ( 00 011 0 00 imm19 Rt -- instruction )
839
840 ! LDR (register): Load Register (register).
841 ARM-INSTRUCTION: LDRr32-encode ( 10 111 0 00 01 1 Rm option3 S 1 0 Rn Rt -- instruction )
842 ARM-INSTRUCTION: LDRr64-encode ( 11 111 0 00 01 1 Rm option3 S 1 0 Rn Rt -- instruction )
843
844 ! LDRAA, LDRAB: Load Register, with pointer authentication.
845 ! ARMv8.3
846 ARM-INSTRUCTION: LDRAAoff-encode ( 11 111 0 00 0 S 1 imm9 0 1 Rn Rt  -- instruction )
847 ARM-INSTRUCTION: LDRAApre-encode ( 11 111 0 00 0 S 1 imm9 1 1 Rn Rt  -- instruction )
848 ARM-INSTRUCTION: LDRABoff-encode ( 11 111 0 00 1 S 1 imm9 0 1 Rn Rt  -- instruction )
849 ARM-INSTRUCTION: LDRABpre-encode ( 11 111 0 00 1 S 1 imm9 1 1 Rn Rt  -- instruction )
850
851 ! LDRB (immediate): Load Register Byte (immediate).
852 ARM-INSTRUCTION: LDRBimmpost-encode ( 00 111 0 00 01 0 imm9 01 Rn Rt -- instruction )
853 ARM-INSTRUCTION: LDRBimmpre-encode ( 00 111 0 00 01 0 imm9 11 Rn Rt -- instruction )
854 ARM-INSTRUCTION: LDRBimmuoff-encode ( 00 111 0 01 01 imm12 Rn Rt -- instruction )
855
856 ! LDRB (register): Load Register Byte (register).
857 ! option: 010: UXTW, 110 SXTW, 111 SXTX, S shift 0/1
858 ARM-INSTRUCTION: LDRBrext-encode ( 00 111 0 00 01 1 Rm option3 S 10 Rn Rt -- instruction )
859 ARM-INSTRUCTION: LDRBrshift-encode ( 00 111 0 00 01 1 Rm 011 S 10 Rn Rt -- instruction )
860
861 ! LDRH (immediate): Load Register Halfword (immediate).
862 ARM-INSTRUCTION: LDRHimmpost-encode ( 01 111 0 00 01 0 imm9 01 Rn Rt -- instruction )
863 ARM-INSTRUCTION: LDRHimmpre-encode ( 01 111 0 00 01 0 imm9 11 Rn Rt -- instruction )
864 ARM-INSTRUCTION: LDRHimmuoff-encode ( 01 111 0 01 01 imm12 Rn Rt -- instruction )
865
866 ! LDRH (register): Load Register Halfword (register).
867 ARM-INSTRUCTION: LDRHr-encode ( 01 111 0 00 01 1 Rm option3 S 10 Rn Rt  -- instruction )
868
869 ! LDRSB (immediate): Load Register Signed Byte (immediate).
870 ARM-INSTRUCTION: LDRSBimmpost32-encode ( 00 111 0 00 11 0 imm9 01 Rn Rt -- instruction )
871 ARM-INSTRUCTION: LDRSBimmpost64-encode ( 00 111 0 00 10 0 imm9 01 Rn Rt -- instruction )
872 ARM-INSTRUCTION: LDRSBimmpre32-encode  ( 00 111 0 00 11 0 imm9 11 Rn Rt -- instruction )
873 ARM-INSTRUCTION: LDRSBimmpre64-encode  ( 00 111 0 00 10 0 imm9 11 Rn Rt -- instruction )
874 ARM-INSTRUCTION: LDRSBimmuoff32-encode ( 00 111 0 01 11 imm12 Rn Rt -- instruction )
875 ARM-INSTRUCTION: LDRSBimmuoff64-encode ( 00 111 0 01 10 imm12 Rn Rt -- instruction )
876
877 ! LDRSB (register): Load Register Signed Byte (register).
878 ARM-INSTRUCTION: LDRSBextreg32-encode   ( 00 111 0 00 11 1 Rm option3 S 10 Rn Rt -- instruction )
879 ARM-INSTRUCTION: LDRSBshiftreg32-encode ( 00 111 0 00 11 1 Rm 011 S 10 Rn Rt -- instruction )
880 ARM-INSTRUCTION: LDRSBextreg64-encode   ( 00 111 0 00 10 1 Rm option3 S 10 Rn Rt -- instruction )
881 ARM-INSTRUCTION: LDRSBshiftreg64-encode ( 00 111 0 00 10 1 Rm 011 S 10 Rn Rt -- instruction )
882
883 ! LDRSH (immediate): Load Register Signed Halfword (immediate).
884 ARM-INSTRUCTION: LDRSHimmpost32-encode ( 01 111 0 00 11 0 imm9 01 Rn Rt -- instruction )
885 ARM-INSTRUCTION: LDRSHimmpost64-encode ( 01 111 0 00 10 0 imm9 01 Rn Rt -- instruction )
886 ARM-INSTRUCTION: LDRSHimmpre32-encode  ( 01 111 0 00 11 0 imm9 11 Rn Rt -- instruction )
887 ARM-INSTRUCTION: LDRSHimmpre64-encode  ( 01 111 0 00 10 0 imm9 11 Rn Rt -- instruction )
888 ARM-INSTRUCTION: LDRSHimmuoff32-encode ( 01 111 0 01 11 imm12 Rn Rt -- instruction )
889 ARM-INSTRUCTION: LDRSHimmuoff64-encode ( 01 111 0 01 10 imm12 Rn Rt -- instruction )
890
891 ! LDRSH (register): Load Register Signed Halfword (register).
892 ARM-INSTRUCTION: LDRSH32-encode ( 01 111 0 00 11 1 Rm option3 S 10 Rn Rt -- instruction )
893 ARM-INSTRUCTION: LDRSH64-encode ( 01 111 0 00 10 1 Rm option3 S 10 Rn Rt -- instruction )
894
895 ! LDRSW (immediate): Load Register Signed Word (immediate).
896 ARM-INSTRUCTION: LDRSWimmpost32-encode ( 10 111 0 00 10 0 imm9 01 Rn Rt -- instruction )
897 ARM-INSTRUCTION: LDRSWimmpre32-encode  ( 10 111 0 00 10 0 imm9 11 Rn Rt -- instruction )
898 ARM-INSTRUCTION: LDRSWimmuoff64-encode ( 10 111 0 01 10 imm12 Rn Rt -- instruction )
899
900 ! LDRSW (literal): Load Register Signed Word (literal).
901 ARM-INSTRUCTION: LDRSWl-encode ( 10 011 0 00 imm19 Rt -- instruction )
902
903 ! LDRSW (register): Load Register Signed Word (register).
904 ARM-INSTRUCTION: LDRSWr-encode ( 10 111 0 00 10 1 Rm option3 S 10 Rn Rt -- instruction )
905
906 ! LDSET, LDSETA, LDSETAL, LDSETL: Atomic bit set on word or doubleword in memory.
907 ARM-INSTRUCTION: LDSET32-encode   ( 10 111 0 00 0 0 1 Rs 0 011 00 Rn Rt -- instruction )
908 ARM-INSTRUCTION: LDSETA32-encode  ( 10 111 0 00 1 0 1 Rs 0 011 00 Rn Rt -- instruction )
909 ARM-INSTRUCTION: LDSETAL32-encode ( 10 111 0 00 1 1 1 Rs 0 011 00 Rn Rt -- instruction )
910 ARM-INSTRUCTION: LDSETL32-encode  ( 10 111 0 00 0 1 1 Rs 0 011 00 Rn Rt -- instruction )
911 ARM-INSTRUCTION: LDSET64-encode   ( 11 111 0 00 0 0 1 Rs 0 011 00 Rn Rt -- instruction )
912 ARM-INSTRUCTION: LDSETA64-encode  ( 11 111 0 00 1 0 1 Rs 0 011 00 Rn Rt -- instruction )
913 ARM-INSTRUCTION: LDSETAL64-encode ( 11 111 0 00 1 1 1 Rs 0 011 00 Rn Rt -- instruction )
914 ARM-INSTRUCTION: LDSETL64-encode  ( 11 111 0 00 0 1 1 Rs 0 011 00 Rn Rt -- instruction )
915
916 ! LDSETB, LDSETAB, LDSETALB, LDSETLB: Atomic bit set on byte in memory.
917 ARM-INSTRUCTION: LDSETAB-encode  ( 00 111 0 00 1 0 1 Rs 0 011 00 Rn Rt -- instruction )
918 ARM-INSTRUCTION: LDSETALB-encode ( 00 111 0 00 1 1 1 Rs 0 011 00 Rn Rt -- instruction )
919 ARM-INSTRUCTION: LDSETB-encode   ( 00 111 0 00 0 0 1 Rs 0 011 00 Rn Rt -- instruction )
920 ARM-INSTRUCTION: LDSETLB-encode  ( 00 111 0 00 0 1 1 Rs 0 011 00 Rn Rt -- instruction )
921
922 ! LDSETH, LDSETAH, LDSETALH, LDSETLH: Atomic bit set on halfword in memory.
923 ARM-INSTRUCTION: LDSETAH-encode  ( 01 111 0 00 1 0 1 Rs 0 011 00 Rn Rt -- instruction )
924 ARM-INSTRUCTION: LDSETALH-encode ( 01 111 0 00 1 1 1 Rs 0 011 00 Rn Rt -- instruction )
925 ARM-INSTRUCTION: LDSETH-encode   ( 01 111 0 00 0 0 1 Rs 0 011 00 Rn Rt -- instruction )
926 ARM-INSTRUCTION: LDSETLH-encode  ( 01 111 0 00 0 1 1 Rs 0 011 00 Rn Rt -- instruction )
927
928 ! LDSMAX, LDSMAXA, LDSMAXAL, LDSMAXL: Atomic signed maximum on word or doubleword in memory.
929 ARM-INSTRUCTION: LDSMAX32-encode   ( 10 111 0 00 0 0 1 Rs 0 100 00 Rn Rt -- instruction )
930 ARM-INSTRUCTION: LDSMAXA32-encode  ( 10 111 0 00 1 0 1 Rs 0 100 00 Rn Rt -- instruction )
931 ARM-INSTRUCTION: LDSMAXAL32-encode ( 10 111 0 00 1 1 1 Rs 0 100 00 Rn Rt -- instruction )
932 ARM-INSTRUCTION: LDSMAXL32-encode  ( 10 111 0 00 0 1 1 Rs 0 100 00 Rn Rt -- instruction )
933 ARM-INSTRUCTION: LDSMAX64-encode   ( 11 111 0 00 0 0 1 Rs 0 100 00 Rn Rt -- instruction )
934 ARM-INSTRUCTION: LDSMAXA64-encode  ( 11 111 0 00 1 0 1 Rs 0 100 00 Rn Rt -- instruction )
935 ARM-INSTRUCTION: LDSMAXAL64-encode ( 11 111 0 00 1 1 1 Rs 0 100 00 Rn Rt -- instruction )
936 ARM-INSTRUCTION: LDSMAXL64-encode  ( 11 111 0 00 0 1 1 Rs 0 100 00 Rn Rt -- instruction )
937
938 ! LDSMAXB, LDSMAXAB, LDSMAXALB, LDSMAXLB: Atomic signed maximum on byte in memory.
939 ARM-INSTRUCTION: LDSMAXAB-encode  ( 00 111 0 00 1 0 1 Rs 0 100 00 Rn Rt -- instruction )
940 ARM-INSTRUCTION: LDSMAXALB-encode ( 00 111 0 00 1 1 1 Rs 0 100 00 Rn Rt -- instruction )
941 ARM-INSTRUCTION: LDSMAXB-encode   ( 00 111 0 00 0 0 1 Rs 0 100 00 Rn Rt -- instruction )
942 ARM-INSTRUCTION: LDSMAXLB-encode  ( 00 111 0 00 0 1 1 Rs 0 100 00 Rn Rt -- instruction )
943
944 ! LDSMAXH, LDSMAXAH, LDSMAXALH, LDSMAXLH: Atomic signed maximum on halfword in memory.
945 ARM-INSTRUCTION: LDSMAXAH-encode  ( 00 111 0 00 1 0 1 Rs 0 100 00 Rn Rt -- instruction )
946 ARM-INSTRUCTION: LDSMAXALH-encode ( 00 111 0 00 1 1 1 Rs 0 100 00 Rn Rt -- instruction )
947 ARM-INSTRUCTION: LDSMAXH-encode   ( 00 111 0 00 0 0 1 Rs 0 100 00 Rn Rt -- instruction )
948 ARM-INSTRUCTION: LDSMAXLH-encode  ( 00 111 0 00 0 1 1 Rs 0 100 00 Rn Rt -- instruction )
949
950 ! LDSMIN, LDSMINA, LDSMINAL, LDSMINL: Atomic signed minimum on word or doubleword in memory.
951 ARM-INSTRUCTION: LDSMIN32-encode   ( 10 111 0 00 0 0 1 Rs 0 101 00 Rn Rt -- instruction )
952 ARM-INSTRUCTION: LDSMINA32-encode  ( 10 111 0 00 1 0 1 Rs 0 101 00 Rn Rt -- instruction )
953 ARM-INSTRUCTION: LDSMINAL32-encode ( 10 111 0 00 1 1 1 Rs 0 101 00 Rn Rt -- instruction )
954 ARM-INSTRUCTION: LDSMINL32-encode  ( 10 111 0 00 0 1 1 Rs 0 101 00 Rn Rt -- instruction )
955 ARM-INSTRUCTION: LDSMIN64-encode   ( 11 111 0 00 0 0 1 Rs 0 101 00 Rn Rt -- instruction )
956 ARM-INSTRUCTION: LDSMINA64-encode  ( 11 111 0 00 1 0 1 Rs 0 101 00 Rn Rt -- instruction )
957 ARM-INSTRUCTION: LDSMINAL64-encode ( 11 111 0 00 1 1 1 Rs 0 101 00 Rn Rt -- instruction )
958 ARM-INSTRUCTION: LDSMINL64-encode  ( 11 111 0 00 0 1 1 Rs 0 101 00 Rn Rt -- instruction )
959
960 ! LDSMINB, LDSMINAB, LDSMINALB, LDSMINLB: Atomic signed minimum on byte in memory.
961 ! ARMv8.1
962 ARM-INSTRUCTION: LDSMINAB-encode  ( 00 111 0 00 1 0 1 Rs 0 101 00 Rn Rt -- instruction )
963 ARM-INSTRUCTION: LDSMINALB-encode ( 00 111 0 00 1 1 1 Rs 0 101 00 Rn Rt -- instruction )
964 ARM-INSTRUCTION: LDSMINB-encode   ( 00 111 0 00 0 0 1 Rs 0 101 00 Rn Rt -- instruction )
965 ARM-INSTRUCTION: LDSMINLB-encode  ( 00 111 0 00 0 1 1 Rs 0 101 00 Rn Rt -- instruction )
966
967 ! LDSMINH, LDSMINAH, LDSMINALH, LDSMINLH: Atomic signed minimum on halfword in memory.
968 ! ARMv8.1
969 ARM-INSTRUCTION: LDSMINAH-encode  ( 01 111 0 00 1 0 1 Rs 0 101 00 Rn Rt -- instruction )
970 ARM-INSTRUCTION: LDSMINALH-encode ( 01 111 0 00 1 1 1 Rs 0 101 00 Rn Rt -- instruction )
971 ARM-INSTRUCTION: LDSMINH-encode   ( 01 111 0 00 0 0 1 Rs 0 101 00 Rn Rt -- instruction )
972 ARM-INSTRUCTION: LDSMINLH-encode  ( 01 111 0 00 0 1 1 Rs 0 101 00 Rn Rt -- instruction )
973
974 ! LDTR: Load Register (unprivileged).
975 ARM-INSTRUCTION: LDTR32-encode ( 10 111 0 00 01 0 imm9 10 Rn Rt -- instruction )
976 ARM-INSTRUCTION: LDTR64-encode ( 11 111 0 00 01 0 imm9 10 Rn Rt -- instruction )
977
978 ! LDTRB: Load Register Byte (unprivileged).
979 ARM-INSTRUCTION: LDTRB-encode ( 00 111 0 00 01 0 imm9 10 Rn Rt -- instruction )
980
981 ! LDTRH: Load Register Halfword (unprivileged).
982 ARM-INSTRUCTION: LDTRH-encode ( 01 111 0 00 01 0 imm9 10 Rn Rt -- instruction )
983
984 ! LDTRSB: Load Register Signed Byte (unprivileged).
985 ARM-INSTRUCTION: LDTRSB32-encode ( 00 111 0 00 11 0 imm9 10 Rn Rt -- instruction )
986 ARM-INSTRUCTION: LDTRSB64-encode ( 00 111 0 00 10 0 imm9 10 Rn Rt -- instruction )
987
988 ! LDTRSH: Load Register Signed Halfword (unprivileged).
989 ARM-INSTRUCTION: LDTRSH32-encode ( 01 111 0 00 11 0 imm9 10 Rn Rt -- instruction )
990 ARM-INSTRUCTION: LDTRSH64-encode ( 01 111 0 00 10 0 imm9 10 Rn Rt -- instruction )
991
992 ! LDTRSW: Load Register Signed Word (unprivileged).
993 ARM-INSTRUCTION: LDTRSW-encode ( 10 111 0 00 10 0 imm9 10 Rn Rt -- instruction )
994
995 ! LDUMAX, LDUMAXA, LDUMAXAL, LDUMAXL: Atomic unsigned maximum on word or doubleword in memory.
996 ! ARMv8.1
997 ARM-INSTRUCTION: LDUMAX32-encode   ( 10 111 0 00 0 0 1 Rs 0 110 00 Rn Rt -- instruction )
998 ARM-INSTRUCTION: LDUMAXA32-encode  ( 10 111 0 00 1 0 1 Rs 0 110 00 Rn Rt -- instruction )
999 ARM-INSTRUCTION: LDUMAXAL32-encode ( 10 111 0 00 1 1 1 Rs 0 110 00 Rn Rt -- instruction )
1000 ARM-INSTRUCTION: LDUMAXL32-encode  ( 10 111 0 00 0 1 1 Rs 0 110 00 Rn Rt -- instruction )
1001 ARM-INSTRUCTION: LDUMAX64-encode   ( 11 111 0 00 0 0 1 Rs 0 110 00 Rn Rt -- instruction )
1002 ARM-INSTRUCTION: LDUMAXA64-encode  ( 11 111 0 00 1 0 1 Rs 0 110 00 Rn Rt -- instruction )
1003 ARM-INSTRUCTION: LDUMAXAL64-encode ( 11 111 0 00 1 1 1 Rs 0 110 00 Rn Rt -- instruction )
1004 ARM-INSTRUCTION: LDUMAXL64-encode  ( 11 111 0 00 0 1 1 Rs 0 110 00 Rn Rt -- instruction )
1005
1006 ! LDUMAXB, LDUMAXAB, LDUMAXALB, LDUMAXLB: Atomic unsigned maximum on byte in memory.
1007 ! ARMv8.1
1008 ARM-INSTRUCTION: LDUMAXAB-encode  ( 00 111 0 00 1 0 1 Rs 0 110 00 Rn Rt -- instruction )
1009 ARM-INSTRUCTION: LDUMAXALB-encode ( 00 111 0 00 1 1 1 Rs 0 110 00 Rn Rt -- instruction )
1010 ARM-INSTRUCTION: LDUMAXB-encode   ( 00 111 0 00 0 0 1 Rs 0 110 00 Rn Rt -- instruction )
1011 ARM-INSTRUCTION: LDUMAXLB-encode  ( 00 111 0 00 0 1 1 Rs 0 110 00 Rn Rt -- instruction )
1012
1013 ! LDUMAXH, LDUMAXAH, LDUMAXALH, LDUMAXLH: Atomic unsigned maximum on halfword in memory.
1014 ! ARMv8.1
1015 ARM-INSTRUCTION: LDUMAXAH-encode  ( 01 111 0 00 1 0 1 Rs 0 110 00 Rn Rt -- instruction )
1016 ARM-INSTRUCTION: LDUMAXALH-encode ( 01 111 0 00 1 1 1 Rs 0 110 00 Rn Rt -- instruction )
1017 ARM-INSTRUCTION: LDUMAXH-encode   ( 01 111 0 00 0 0 1 Rs 0 110 00 Rn Rt -- instruction )
1018 ARM-INSTRUCTION: LDUMAXLH-encode  ( 01 111 0 00 0 1 1 Rs 0 110 00 Rn Rt -- instruction )
1019
1020 ! LDUMIN, LDUMINA, LDUMINAL, LDUMINL: Atomic unsigned minimum on word or doubleword in memory.
1021 ! ARMv8.1
1022 ARM-INSTRUCTION: LDUMIN32-encode   ( 10 111 0 00 0 0 1 Rs 0 111 00 Rn Rt -- instruction )
1023 ARM-INSTRUCTION: LDUMINA32-encode  ( 10 111 0 00 1 0 1 Rs 0 111 00 Rn Rt -- instruction )
1024 ARM-INSTRUCTION: LDUMINAL32-encode ( 10 111 0 00 1 1 1 Rs 0 111 00 Rn Rt -- instruction )
1025 ARM-INSTRUCTION: LDUMINL32-encode  ( 10 111 0 00 0 1 1 Rs 0 111 00 Rn Rt -- instruction )
1026 ARM-INSTRUCTION: LDUMIN64-encode   ( 11 111 0 00 0 0 1 Rs 0 111 00 Rn Rt -- instruction )
1027 ARM-INSTRUCTION: LDUMINA64-encode  ( 11 111 0 00 1 0 1 Rs 0 111 00 Rn Rt -- instruction )
1028 ARM-INSTRUCTION: LDUMINAL64-encode ( 11 111 0 00 1 1 1 Rs 0 111 00 Rn Rt -- instruction )
1029 ARM-INSTRUCTION: LDUMINL64-encode  ( 11 111 0 00 0 1 1 Rs 0 111 00 Rn Rt -- instruction )
1030
1031 ! LDUMINB, LDUMINAB, LDUMINALB, LDUMINLB: Atomic unsigned minimum on byte in memory.
1032 ! ARMv8.1
1033 ARM-INSTRUCTION: LDUMINAB-encode  ( 00 111 0 00 1 0 1 Rs 0 111 00 Rn Rt -- instruction )
1034 ARM-INSTRUCTION: LDUMINALB-encode ( 00 111 0 00 1 1 1 Rs 0 111 00 Rn Rt -- instruction )
1035 ARM-INSTRUCTION: LDUMINB-encode   ( 00 111 0 00 0 0 1 Rs 0 111 00 Rn Rt -- instruction )
1036 ARM-INSTRUCTION: LDUMINLB-encode  ( 00 111 0 00 0 1 1 Rs 0 111 00 Rn Rt -- instruction )
1037
1038 ! LDUMINH, LDUMINAH, LDUMINALH, LDUMINLH: Atomic unsigned minimum on halfword in memory.
1039 ! ARMv8.1
1040 ARM-INSTRUCTION: LDUMINAH-encode  ( 01 111 0 00 1 0 1 Rs 0 111 00 Rn Rt -- instruction )
1041 ARM-INSTRUCTION: LDUMINALH-encode ( 01 111 0 00 1 1 1 Rs 0 111 00 Rn Rt -- instruction )
1042 ARM-INSTRUCTION: LDUMINH-encode   ( 01 111 0 00 0 0 1 Rs 0 111 00 Rn Rt -- instruction )
1043 ARM-INSTRUCTION: LDUMINLH-encode  ( 01 111 0 00 0 1 1 Rs 0 111 00 Rn Rt -- instruction )
1044
1045 ! LDUR: Load Register (unscaled).
1046 ARM-INSTRUCTION: LDUR32-encode ( 10 111 0 00 01 0 imm9 00 Rn Rt -- instruction )
1047 ARM-INSTRUCTION: LDUR64-encode ( 11 111 0 00 01 0 imm9 00 Rn Rt -- instruction )
1048
1049 ! LDURB: Load Register Byte (unscaled).
1050 ARM-INSTRUCTION: LDURB-encode ( 00 111 0 00 01 0 imm9 00 Rn Rt -- instruction )
1051
1052 ! LDURH: Load Register Halfword (unscaled).
1053 ARM-INSTRUCTION: LDURH-encode ( 01 111 0 00 01 0 imm9 00 Rn Rt -- instruction )
1054
1055 ! LDURSB: Load Register Signed Byte (unscaled).
1056 ARM-INSTRUCTION: LDURSB32-encode ( 00 111 0 00 10 0 imm9 00 Rn Rt -- instruction )
1057 ARM-INSTRUCTION: LDURSB64-encode ( 00 111 0 00 11 0 imm9 00 Rn Rt -- instruction )
1058
1059 ! LDURSH: Load Register Signed Halfword (unscaled).
1060 ARM-INSTRUCTION: LDURSH32-encode ( 01 111 0 00 10 0 imm9 00 Rn Rt -- instruction )
1061 ARM-INSTRUCTION: LDURSH64-encode ( 01 111 0 00 11 0 imm9 00 Rn Rt -- instruction )
1062
1063 ! LDURSW: Load Register Signed Word (unscaled).
1064 ARM-INSTRUCTION: LDURSW-encode ( 10 111 0 00 10 0 imm9 00 Rn Rt -- instruction )
1065
1066 ! LDXP: Load Exclusive Pair of Registers.
1067 ARM-INSTRUCTION: LDXP32-encode ( 1 0 001000 0 1 1 11111 0 Rt2 Rn Rt -- instruction )
1068 ARM-INSTRUCTION: LDXP64-encode ( 1 1 001000 0 1 1 11111 0 Rt2 Rn Rt -- instruction )
1069
1070 ! LDXR: Load Exclusive Register.
1071 ARM-INSTRUCTION: LDXR32-encode ( 10 001000 0 1 0 11111 0 11111 Rn Rt -- instruction )
1072 ARM-INSTRUCTION: LDXR64-encode ( 11 001000 0 1 0 11111 0 11111 Rn Rt -- instruction )
1073
1074 ! LDXRB: Load Exclusive Register Byte.
1075 ARM-INSTRUCTION: LDXRB-encode ( 00 001000 0 1 0 11111 0 11111 Rn Rt -- instruction )
1076
1077 ! LDXRH: Load Exclusive Register Halfword.
1078 ARM-INSTRUCTION: LDXRH-encode ( 01 001000 0 1 0 11111 0 11111 Rn Rt -- instruction )
1079
1080 ! LSL (immediate): Logical Shift Left (immediate): an alias of UBFM.
1081 ARM-INSTRUCTION: LSLi32-encode ( 0 10 100110 0 immrimms Rn Rd -- instruction )
1082 ARM-INSTRUCTION: LSLi64-encode ( 1 10 100110 1 immrimms Rn Rd -- instruction )
1083
1084 ! LSL (register): Logical Shift Left (register): an alias of LSLV.
1085 ARM-INSTRUCTION: LSLr32-encode ( 0 0 0 11010110 Rm 0010 00 Rn Rd -- instruction )
1086 ARM-INSTRUCTION: LSLr64-encode ( 1 0 0 11010110 Rm 0010 00 Rn Rd -- instruction )
1087
1088 ! LSLV: Logical Shift Left Variable.
1089 ARM-INSTRUCTION: LSLV32-encode ( 0 0 0 11010110 Rm 0010 00 Rn Rd -- instruction )
1090 ARM-INSTRUCTION: LSLV64-encode ( 1 0 0 11010110 Rm 0010 00 Rn Rd -- instruction )
1091
1092 ! LSR (immediate): Logical Shift Right (immediate): an alias of UBFM.
1093 ARM-INSTRUCTION: LSRi32-encode ( 0 10 100110 0 immr 011111 Rn Rd -- instruction )
1094 ARM-INSTRUCTION: LSRi64-encode ( 1 10 100110 1 immr 111111 Rn Rd -- instruction )
1095
1096 ! LSR (register): Logical Shift Right (register): an alias of LSRV.
1097 ARM-INSTRUCTION: LSRr32-encode ( 0 0 0 11010110 Rm 0010 01 Rn Rd -- instruction )
1098 ARM-INSTRUCTION: LSRr64-encode ( 1 0 0 11010110 Rm 0010 01 Rn Rd -- instruction )
1099
1100 ! LSRV: Logical Shift Right Variable.
1101 ARM-INSTRUCTION: LSRV32-encode ( 0 0 0 11010110 Rm 0010 01 Rn Rd -- instruction )
1102 ARM-INSTRUCTION: LSRV64-encode ( 1 0 0 11010110 Rm 0010 01 Rn Rd -- instruction )
1103
1104 ! MADD: Multiply-Add.
1105 ARM-INSTRUCTION: MADD32-encode ( 0 00 11011 000 Rm 0 Ra Rn Rd -- instruction )
1106 ARM-INSTRUCTION: MADD64-encode ( 1 00 11011 000 Rm 0 Ra Rn Rd -- instruction )
1107
1108 ! MNEG: Multiply-Negate: an alias of MSUB.
1109 ARM-INSTRUCTION: MNEG32-encode ( 0 00 11011 000 Rm 1 11111 Rn Rd -- instruction )
1110 ARM-INSTRUCTION: MNEG64-encode ( 1 00 11011 000 Rm 1 11111 Rn Rd -- instruction )
1111
1112 ! MOV (bitmask immediate): Move (bitmask immediate): an alias of ORR (immediate).
1113 ARM-INSTRUCTION: MOVbi32-encode ( 0 01 100100 0 immr imms 11111 Rn -- instruction )
1114 ARM-INSTRUCTION: MOVbi64-encode ( 1 01 100100 Nimmrimms 11111 Rn -- instruction )
1115
1116 ! MOV (inverted wide immediate): Move (inverted wide immediate): an alias of MOVN.
1117 ARM-INSTRUCTION: MOViwi32-encode ( 0 00 100101 hw2 imm16 Rd -- instruction )
1118 ARM-INSTRUCTION: MOViwi64-encode ( 1 00 100101 hw2 imm16 Rd -- instruction )
1119
1120 ! MOV (register): Move (register): an alias of ORR (shifted register).
1121 ARM-INSTRUCTION: MOVr32-encode ( 0 01 01010 00 0 Rm 000000 11111 Rd -- instruction )
1122 ARM-INSTRUCTION: MOVr64-encode ( 1 01 01010 00 0 Rm 000000 11111 Rd -- instruction )
1123
1124 ! MOV (to/from SP): Move between register and stack pointer: an alias of ADD (immediate).
1125 ARM-INSTRUCTION: MOVsp32-encode ( 0 0 0 10001 shift2 000000000000 Rn Rd -- instruction )
1126 ARM-INSTRUCTION: MOVsp64-encode ( 1 0 0 10001 shift2 000000000000 Rn Rd -- instruction )
1127
1128 ! MOV (wide immediate): Move (wide immediate): an alias of MOVZ.
1129 ARM-INSTRUCTION: MOVwi32-encode ( 0 10 100101 hw2 imm16 Rd -- instruction )
1130 ARM-INSTRUCTION: MOVwi64-encode ( 1 10 100101 hw2 imm16 Rd -- instruction )
1131
1132 ! MOVK: Move wide with keep.
1133 ARM-INSTRUCTION: MOVK32-encode ( 0 11 100101 hw2 imm16 Rd -- instruction )
1134 ARM-INSTRUCTION: MOVK64-encode ( 1 11 100101 hw2 imm16 Rd -- instruction )
1135
1136 ! MOVN: Move wide with NOT.
1137 ARM-INSTRUCTION: MOVN32-encode ( 0 00 100101 hw2 imm16 Rd -- instruction )
1138 ARM-INSTRUCTION: MOVN64-encode ( 1 00 100101 hw2 imm16 Rd -- instruction )
1139
1140 ! MOVZ: Move wide with zero.
1141 ARM-INSTRUCTION: MOVZ32-encode ( 0 10 100101 hw2 imm16 Rd -- instruction )
1142 ARM-INSTRUCTION: MOVZ64-encode ( 1 10 100101 hw2 imm16 Rd -- instruction )
1143
1144 ! MRS: Move System Register.
1145 ! System register name, encoded in the "o0:op1:CRn:CRm:op2"
1146 ARM-INSTRUCTION: MRS-encode ( 1101010100 1 1 o0 op3 CRn CRm op3 Rt -- instruction )
1147
1148 ! MSR (immediate): Move immediate value to Special Register.
1149 ARM-INSTRUCTION: MRSi-encode ( 1101010100 0 00 op3 0100 CRm op3 11111 -- instruction )
1150
1151 ! MSR (register): Move general-purpose register to System Register.
1152 ARM-INSTRUCTION: MRSr-encode ( 1101010100 0 1 o0 op3 CRn CRm op3 Rt -- instruction )
1153
1154 ! MSUB: Multiply-Subtract.
1155 ARM-INSTRUCTION: MSUB32-encode ( 0 00 11011 000 Rm 1 Ra Rn Rd -- instruction )
1156 ARM-INSTRUCTION: MSUB64-encode ( 1 00 11011 000 Rm 1 Ra Rn Rd -- instruction )
1157
1158 ! MUL: Multiply: an alias of MADD.
1159 ARM-INSTRUCTION: MUL32-encode ( 0 00 11011 000 Rm 0 11111 Rn Rd -- instruction )
1160 ARM-INSTRUCTION: MUL64-encode ( 1 00 11011 000 Rm 0 11111 Rn Rd -- instruction )
1161
1162 ! MVN: Bitwise NOT: an alias of ORN (shifted register).
1163 ARM-INSTRUCTION: MVN32-encode ( 0 0 1 01010 shift2 1 Rm imm6 11111 Rd -- instruction )
1164 ARM-INSTRUCTION: MVN64-encode ( 1 0 1 01010 shift2 1 Rm imm6 11111 Rd -- instruction )
1165
1166 ! NEG (shifted register): Negate (shifted register): an alias of SUB (shifted register).
1167 ARM-INSTRUCTION: NEGsr32-encode ( 0 1 0 01011 shift2 0 Rm imm6 11111 Rd -- instruction )
1168 ARM-INSTRUCTION: NEGsr64-encode ( 1 1 0 01011 shift2 0 Rm imm6 11111 Rd -- instruction )
1169
1170 ! NEGS: Negate, setting flags: an alias of SUBS (shifted register).
1171 ARM-INSTRUCTION: NEGS32-encode ( 0 1 1 01011 shift2 0 Rm imm6 11111 Rd -- instruction )
1172 ARM-INSTRUCTION: NEGS64-encode ( 1 1 1 01011 shift2 0 Rm imm6 11111 Rd -- instruction )
1173
1174 ! NGC: Negate with Carry: an alias of SBC.
1175 ARM-INSTRUCTION: NGC32-encode ( 0 1 0 11010000 Rm 000000 11111 Rd -- instruction )
1176 ARM-INSTRUCTION: NGC64-encode ( 1 1 0 11010000 Rm 000000 11111 Rd -- instruction )
1177
1178 ! NGCS: Negate with Carry, setting flags: an alias of SBCS.
1179 ARM-INSTRUCTION: NGCS32-encode ( 0 1 1 11010000 Rm 000000 11111 Rd -- instruction )
1180 ARM-INSTRUCTION: NGCS64-encode ( 1 1 1 11010000 Rm 000000 11111 Rd -- instruction )
1181
1182 ! NOP: No Operation.
1183 ARM-INSTRUCTION: NOP ( 1101010100 0 00 011 0010 0000 000 11111 -- instruction )
1184
1185 ! ORN (shifted register): Bitwise OR NOT (shifted register).
1186 ARM-INSTRUCTION: ORNsr32-encode ( 0 01 01010 shift2 1 Rm imm6 Rn Rd -- instruction )
1187 ARM-INSTRUCTION: ORNsr64-encode ( 1 01 01010 shift2 1 Rm imm6 Rn Rd -- instruction )
1188
1189 ! ORR (immediate): Bitwise OR (immediate).
1190 ARM-INSTRUCTION: ORR32-encode ( 0 01 100100 0 immrimms Rn Rd -- instruction )
1191 ARM-INSTRUCTION: ORR64-encode ( 1 01 100100 Nimmrimms Rn Rd -- instruction )
1192
1193 ! ORR (shifted register): Bitwise OR (shifted register).
1194 ARM-INSTRUCTION: ORRsr32-encode ( 0 01 01010 shift2 0 Rm imm6 Rn Rd -- instruction )
1195 ARM-INSTRUCTION: ORRsr64-encode ( 1 01 01010 shift2 0 Rm imm6 Rn Rd -- instruction )
1196
1197 ! PACDA, PACDZA: Pointer Authentication Code for Data address, using key A.
1198 ! ARMv8.3
1199 ARM-INSTRUCTION: PACDA-encode  ( 1 1 0 11010110 00001 0 0 0 010 Rn Rd -- instruction )
1200 ARM-INSTRUCTION: PACDZA-encode ( 1 1 0 11010110 00001 0 0 1 010 11111 Rd -- instruction )
1201
1202 ! PACDB, PACDZB: Pointer Authentication Code for Data address, using key B.
1203 ! ARMv8.3
1204 ARM-INSTRUCTION: PACDB-encode  ( 1 1 0 11010110 00001 0 0 0 011 Rn Rd -- instruction )
1205 ARM-INSTRUCTION: PACDZB-encode ( 1 1 0 11010110 00001 0 0 1 011 11111 Rd -- instruction )
1206
1207 ! PACGA: Pointer Authentication Code, using Generic key.
1208 ! ARMv8.3
1209 ARM-INSTRUCTION: PACGA-encode ( 1 0 0 11010110 Rm 001100 Rn Rd -- instruction )
1210
1211 ! PACIA, PACIA1716, PACIASP, PACIAZ, PACIZA: Pointer Authentication Code for Instruction address, using key A.
1212 ! ARMv8.3
1213 ARM-INSTRUCTION: PACIA-encode  ( 1 1 0 11010110 00001 0 0 0 000 Rn Rd -- instruction )
1214 ARM-INSTRUCTION: PACIZA-encode ( 1 1 0 11010110 00001 0 0 1 000 Rn Rd -- instruction )
1215 ! ARMv8.3
1216 ARM-INSTRUCTION: PACIA1716-encode ( 1101010100 0 00 011 0010 0001 000 11111 -- instruction )
1217 ARM-INSTRUCTION: PACIASP-encode   ( 1101010100 0 00 011 0010 0011 001 11111 -- instruction )
1218 ARM-INSTRUCTION: PACIAZ-encode    ( 1101010100 0 00 011 0010 0011 000 11111 -- instruction )
1219
1220
1221 ! PACIB, PACIB1716, PACIBSP, PACIBZ, PACIZB: Pointer Authentication Code for Instruction address, using key B.
1222 ! ARMv8.3
1223 ARM-INSTRUCTION: PACIB-encode  ( 1 1 0 11010110 00001 0 0 0 001 Rn Rd -- instruction )
1224 ARM-INSTRUCTION: PACIZB-encode ( 1 1 0 11010110 00001 0 0 1 001 Rn Rd -- instruction )
1225 ! ARMv8.3
1226 ARM-INSTRUCTION: PACIB1716-encode ( 1101010100 0 00 011 0010 0001 010 11111 -- instruction )
1227 ARM-INSTRUCTION: PACIBSP-encode   ( 1101010100 0 00 011 0010 0011 011 11111 -- instruction )
1228 ARM-INSTRUCTION: PACIBZ-encode    ( 1101010100 0 00 011 0010 0011 010 11111 -- instruction )
1229
1230 ! PRFM (immediate): Prefetch Memory (immediate).
1231 ARM-INSTRUCTION: PRFMi-encode ( 11 111 0 01 10 imm12 Rn Rt -- instruction )
1232
1233 ! PRFM (literal): Prefetch Memory (literal).
1234 ARM-INSTRUCTION: PRFMl-encode ( 11 011 0 00 imm19 Rt -- instruction )
1235
1236 ! PRFM (register): Prefetch Memory (register).
1237 ARM-INSTRUCTION: PRFMr-encode ( 11 111 0 00 10 1 Rm option3 S 10 Rn Rt -- instruction )
1238
1239 ! PRFM (unscaled offset): Prefetch Memory (unscaled offset).
1240 ARM-INSTRUCTION: PRFMunscoff-encode ( 11 111 0 00 10 0 imm9 00 Rn Rt -- instruction )
1241
1242 ! PSB CSYNC: Profiling Synchronization Barrier.
1243 ! ARMv8.2
1244 ARM-INSTRUCTION: PSB-CSYNC-encode ( 1101010100 0 00 011 0010 0010 001 11111 -- instruction )
1245
1246 ! PSSBB: Physical Speculative Store Bypass Barrier.
1247 ARM-INSTRUCTION: PSSBB-encode ( 1101010100 0 00 011 0011 0100 1 00 11111 -- instruction )
1248
1249 ! RBIT: Reverse Bits.
1250 ARM-INSTRUCTION: RBIT32-encode ( 0 1 0 11010110 00000 0000 00 Rn Rd -- instruction )
1251 ARM-INSTRUCTION: RBIT64-encode ( 1 1 0 11010110 00000 0000 00 Rn Rd -- instruction )
1252
1253 ! RET: Return from subroutine.
1254 ARM-INSTRUCTION: RET-encode ( 1101011 0 0 10 11111 0000 0 0 Rn 00000 -- instruction )
1255
1256 ! RETAA, RETAB: Return from subroutine, with pointer authentication.
1257 ! ARMv8.3
1258 ARM-INSTRUCTION: RETAA-encode ( 1101011 0 0 10 11111 0000 1 0 11111 11111 -- instruction )
1259 ARM-INSTRUCTION: RETAB-encode ( 1101011 0 0 10 11111 0000 1 1 11111 11111 -- instruction )
1260
1261 ! REV: Reverse Bytes.
1262 ARM-INSTRUCTION: REVb32-encode ( 0 1 0 11010110 00000 0000 10 Rn Rd -- instruction )
1263 ARM-INSTRUCTION: REVb64-encode ( 1 1 0 11010110 00000 0000 11 Rn Rd -- instruction )
1264
1265 ! REV16: Reverse bytes in 16-bit halfwords.
1266 ARM-INSTRUCTION: REV16_32 ( 0 1 0 11010110 00000 0000 01 Rn Rd -- instruction )
1267 ARM-INSTRUCTION: REV16_64 ( 1 1 0 11010110 00000 0000 01 Rn Rd -- instruction )
1268
1269 ! REV32: Reverse bytes in 32-bit words.
1270 ARM-INSTRUCTION: REV32-encode ( 1 1 0 11010110 00000 0000 10 Rn Rd -- instruction )
1271
1272 ! REV64: Reverse Bytes: an alias of REV.
1273 ARM-INSTRUCTION: REV64-encode ( 0 Q 0 01110 size2 10000 0000 0 10 Rn Rd -- instruction )
1274
1275 ! RMIF: Rotate, Mask Insert Flags.
1276 ! ARMv8.4
1277 ARM-INSTRUCTION: RMIF-encode ( 1 0 1 11010000 imm6 00001 Rn 0 mask4 -- instruction )
1278
1279 ! ROR (immediate): Rotate right (immediate): an alias of EXTR.
1280 ARM-INSTRUCTION: RORi32-encode ( 0 00 100111 0 0 Rm 0 imm5 Rn Rd -- instruction )
1281 ARM-INSTRUCTION: RORi64-encode ( 1 00 100111 1 0 Rm imms Rn Rd -- instruction )
1282
1283 ! ROR (register): Rotate Right (register): an alias of RORV.
1284 ARM-INSTRUCTION: RORr32-encode ( 0 0 0 11010110 Rm 0010 11 Rn Rd -- instruction )
1285 ARM-INSTRUCTION: RORr64-encode ( 1 0 0 11010110 Rm 0010 11 Rn Rd -- instruction )
1286
1287 ! RORV: Rotate Right Variable.
1288 ARM-INSTRUCTION: RORV32-encode ( 0 0 0 11010110 Rm 0010 11 Rn Rd -- instruction )
1289 ARM-INSTRUCTION: RORV64-encode ( 1 0 0 11010110 Rm 0010 11 Rn Rd -- instruction )
1290
1291 ! SB: Speculation Barrier.
1292 ARM-INSTRUCTION: SB-encode ( 1101010100 0 00 011 0011 0000 1 11 11111 -- instruction )
1293
1294 ! SBC: Subtract with Carry.
1295 ARM-INSTRUCTION: SBC32-encode ( 0 1 0 11010000 Rm 000000 Rn Rd -- instruction )
1296 ARM-INSTRUCTION: SBC64-encode ( 1 1 0 11010000 Rm 000000 Rn Rd -- instruction )
1297
1298 ! SBCS: Subtract with Carry, setting flags.
1299 ARM-INSTRUCTION: SBCS32-encode ( 0 1 1 11010000 Rm 000000 Rn Rd -- instruction )
1300 ARM-INSTRUCTION: SBCS64-encode ( 1 1 1 11010000 Rm 000000 Rn Rd -- instruction )
1301
1302 ! SBFIZ: Signed Bitfield Insert in Zero: an alias of SBFM.
1303 ARM-INSTRUCTION: SBFIZ32-encode ( 0 00 100110 0 immr imms Rn Rd -- instruction )
1304 ARM-INSTRUCTION: SBFIZ64-encode ( 1 00 100110 1 immr imms Rn Rd -- instruction )
1305
1306 ! SBFM: Signed Bitfield Move.
1307 ARM-INSTRUCTION: SBFM32-encode ( 0 00 100110 0 immr imms Rn Rd -- instruction )
1308 ARM-INSTRUCTION: SBFM64-encode ( 1 00 100110 1 immr imms Rn Rd -- instruction )
1309
1310 ! SBFX: Signed Bitfield Extract: an alias of SBFM.
1311 ARM-INSTRUCTION: SBFX32-encode ( 0 00 100110 0 immr imms Rn Rd -- instruction )
1312 ARM-INSTRUCTION: SBFX64-encode ( 1 00 100110 1 immr imms Rn Rd -- instruction )
1313
1314 ! SDIV: Signed Divide.
1315 ARM-INSTRUCTION: SDIV32-encode ( 0 0 0 11010110 Rm 00001 1 Rn Rd -- instruction )
1316 ARM-INSTRUCTION: SDIV64-encode ( 1 0 0 11010110 Rm 00001 1 Rn Rd -- instruction )
1317
1318 ! SETF8, SETF16: Evaluation of 8 or 16 bit flag values.
1319 ! ARMv8.4
1320 ARM-INSTRUCTION: SETF8-encode  ( 0 0 1 11010000 000000 0 0010 Rn 0 1101 -- instruction )
1321 ARM-INSTRUCTION: SETF16-encode ( 0 0 1 11010000 000000 1 0010 Rn 0 1101 -- instruction )
1322
1323 ! SEV: Send Event.
1324 ARM-INSTRUCTION: SEV-encode  ( 1101010100 0 00 011 0010 0000 100 11111 -- instruction )
1325
1326 ! SEVL: Send Event Local.
1327 ARM-INSTRUCTION: SEVL-encode ( 1101010100 0 00 011 0010 0000 101 11111 -- instruction )
1328
1329 ! SMADDL: Signed Multiply-Add Long.
1330 ARM-INSTRUCTION: SMADDL-encode ( 1 00 11011 0 01 Rm 0 Ra Rn Rd -- instruction )
1331
1332 ! SMC: Secure Monitor Call.
1333 ARM-INSTRUCTION: SMC-encode ( 11010100 000 imm16 000 11 -- instruction )
1334
1335 ! SMNEGL: Signed Multiply-Negate Long: an alias of SMSUBL.
1336 ARM-INSTRUCTION: SMNEGL-encode ( 1 00 11011 0 01 Rm 1 11111 Rn Rd -- instruction )
1337
1338 ! SMSUBL: Signed Multiply-Subtract Long.
1339 ARM-INSTRUCTION: SMSUBL-encode ( 1 00 11011 0 01 Rm 1 Ra Rn Rd -- instruction )
1340
1341 ! SMULH: Signed Multiply High.
1342 ARM-INSTRUCTION: SMULH-encode ( 1 00 11011 0 10 Rm 0 11111 Rn Rd -- instruction )
1343
1344 ! SMULL: Signed Multiply Long: an alias of SMADDL.
1345 ARM-INSTRUCTION: SMULL-encode ( 1 00 11011 0 01 Rm 0 11111 Rn Rd -- instruction )
1346
1347 ! SSBB: Speculative Store Bypass Barrier.
1348 ARM-INSTRUCTION: SSBB-encode ( 1101010100 0 00 011 0011 0000 1 00 11111 -- instruction )
1349
1350 ! ST2G: Store Allocation Tags.
1351 ! ARMv8.5
1352 ARM-INSTRUCTION: ST2Gpost-encode ( 11011001 1 0 1 imm9 0 1 Xn 11111 -- instruction )
1353 ARM-INSTRUCTION: ST2Gpre-encode  ( 11011001 1 0 1 imm9 1 1 Xn 11111 -- instruction )
1354 ARM-INSTRUCTION: ST2Gsoff-encode ( 11011001 1 0 1 imm9 1 0 Xn 11111 -- instruction )
1355
1356 ! STADD, STADDL: Atomic add on word or doubleword in memory, without return: an alias of LDADD, LDADDA, LDADDAL, LDADDL.
1357 ARM-INSTRUCTION: STADD32-encode  ( 10 111 0 00 0 0 1 Rs 0 000 00 Rn 11111 -- instruction )
1358 ARM-INSTRUCTION: STADDL32-encode ( 10 111 0 00 0 1 1 Rs 0 000 00 Rn 11111 -- instruction )
1359 ARM-INSTRUCTION: STADD64-encode  ( 11 111 0 00 0 0 1 Rs 0 000 00 Rn 11111 -- instruction )
1360 ARM-INSTRUCTION: STADDL64-encode ( 11 111 0 00 0 1 1 Rs 0 000 00 Rn 11111 -- instruction )
1361
1362 ! STADDB, STADDLB: Atomic add on byte in memory, without return: an alias of LDADDB, LDADDAB, LDADDALB, LDADDLB.
1363 ! ARMv8.1
1364 ARM-INSTRUCTION: STADDB-encode  ( 00 111 0 00 0 0 1 Rs 0 000 00 Rn 11111 -- instruction )
1365 ARM-INSTRUCTION: STADDLB-encode ( 00 111 0 00 0 1 1 Rs 0 000 00 Rn 11111 -- instruction )
1366
1367 ! STADDH, STADDLH: Atomic add on halfword in memory, without return: an alias of LDADDH, LDADDAH, LDADDALH, LDADDLH.
1368 ARM-INSTRUCTION: STADDH-encode  ( 01 111 0 00 0 0 1 Rs 0 000 00 Rn 11111 -- instruction )
1369 ARM-INSTRUCTION: STADDLH-encode ( 01 111 0 00 0 1 1 Rs 0 000 00 Rn 11111 -- instruction )
1370
1371 ! STCLR, STCLRL: Atomic bit clear on word or doubleword in memory, without return: an alias of LDCLR, LDCLRA, LDCLRAL, LDCLRL.
1372 ! ARMv8.1
1373 ARM-INSTRUCTION: STCLR32-encode  ( 10 111 0 00 0 0 1 Rs 0 001 00 Rn 11111 -- instruction )
1374 ARM-INSTRUCTION: STCLR64-encode  ( 10 111 0 00 0 1 1 Rs 0 001 00 Rn 11111 -- instruction )
1375 ARM-INSTRUCTION: STCLRL32-encode ( 11 111 0 00 0 0 1 Rs 0 001 00 Rn 11111 -- instruction )
1376 ARM-INSTRUCTION: STCLRL64-encode ( 11 111 0 00 0 1 1 Rs 0 001 00 Rn 11111 -- instruction )
1377
1378 ! STCLRB, STCLRLB: Atomic bit clear on byte in memory, without return: an alias of LDCLRB, LDCLRAB, LDCLRALB, LDCLRLB.
1379 ! ARMv8.1
1380 ARM-INSTRUCTION: STCLRB-encode   ( 00 111 0 00 0 0 1 Rs 0 001 00 Rn 11111 -- instruction )
1381 ARM-INSTRUCTION: STCLRLB-encode  ( 00 111 0 00 0 1 1 Rs 0 001 00 Rn 11111 -- instruction )
1382
1383 ! STCLRH, STCLRLH: Atomic bit clear on halfword in memory, without return: an alias of LDCLRH, LDCLRAH, LDCLRALH, LDCLRLH.
1384 ! ARMv8.1
1385 ARM-INSTRUCTION: STCLRH-encode  ( 01 111 0 00 0 0 1 Rs 0 001 00 Rn 11111 -- instruction )
1386 ARM-INSTRUCTION: STCLRLH-encode ( 01 111 0 00 0 1 1 Rs 0 001 00 Rn 11111 -- instruction )
1387
1388 ! STEOR, STEORL: Atomic exclusive OR on word or doubleword in memory, without return: an alias of LDEOR, LDEORA, LDEORAL, LDEORL.
1389 ! ARMv8.1
1390 ARM-INSTRUCTION: STEOR32-encode  ( 10 111 0 00 0 0 1 Rs 0 010 00 Rn 11111 -- instruction )
1391 ARM-INSTRUCTION: STEORL32-encode ( 10 111 0 00 0 1 1 Rs 0 010 00 Rn 11111 -- instruction )
1392 ARM-INSTRUCTION: STEOR64-encode  ( 11 111 0 00 0 0 1 Rs 0 010 00 Rn 11111 -- instruction )
1393 ARM-INSTRUCTION: STEORL64-encode ( 11 111 0 00 0 1 1 Rs 0 010 00 Rn 11111 -- instruction )
1394
1395 ! STEORB, STEORLB: Atomic exclusive OR on byte in memory, without return: an alias of LDEORB, LDEORAB, LDEORALB, LDEORLB.
1396 ! ARMv8.1
1397 ARM-INSTRUCTION: STEORB-encode  ( 00 111 0 00 0 0 1 Rs 0 010 00 Rn 11111 -- instruction )
1398 ARM-INSTRUCTION: STEORLB-encode ( 00 111 0 00 0 1 1 Rs 0 010 00 Rn 11111 -- instruction )
1399
1400 ! STEORH, STEORLH: Atomic exclusive OR on halfword in memory, without return: an alias of LDEORH, LDEORAH, LDEORALH, LDEORLH.
1401 ! ARMv8.1
1402 ARM-INSTRUCTION: STEORH-encode  ( 01 111 0 00 0 0 1 Rs 0 010 00 Rn 11111 -- instruction )
1403 ARM-INSTRUCTION: STEORLH-encode ( 01 111 0 00 0 1 1 Rs 0 010 00 Rn 11111 -- instruction )
1404
1405 ! STG: Store Allocation Tag.
1406 ! ARMv8.5
1407 ARM-INSTRUCTION: STGpost-encode ( 11011001 0 0 1 imm9 0 1 Xn 11111 -- instruction )
1408 ARM-INSTRUCTION: STGpre-encode  ( 11011001 0 0 1 imm9 1 1 Xn 11111 -- instruction )
1409 ARM-INSTRUCTION: STGsoff-encode ( 11011001 0 0 1 imm9 1 0 Xn 11111 -- instruction )
1410
1411 ! STGP: Store Allocation Tag and Pair of registers.
1412 ! ARMv8.5
1413 ARM-INSTRUCTION: STGPpost-encode ( 0 1 101 0 001 0 simm7 Xt2 Xn Xt -- instruction )
1414 ARM-INSTRUCTION: STGPpre-encode  ( 0 1 101 0 011 0 simm7 Xt2 Xn Xt -- instruction )
1415 ARM-INSTRUCTION: STGPsoff-encode ( 0 1 101 0 010 0 simm7 Xt2 Xn Xt -- instruction )
1416
1417 ! STGV: Store Tag Vector.
1418 ! ARMv8.5
1419 ARM-INSTRUCTION: STGV-encode ( 11011001 1 0 1 0 0 0 0 0 0 0 0 0 0 0 Xn Xt -- instruction )
1420
1421 ! STLLR: Store LORelease Register.
1422 ! ARMv8.1
1423 ARM-INSTRUCTION: STLLR32-encode ( 10 001000 1 0 0 11111 0 11111 Rn Rt -- instruction )
1424 ARM-INSTRUCTION: STLLR64-encode ( 11 001000 1 0 0 11111 0 11111 Rn Rt -- instruction )
1425
1426 ! STLLRB: Store LORelease Register Byte.
1427 ! ARMv8.1
1428 ARM-INSTRUCTION: STLLRB-encode ( 00 001000 1 0 0 11111 0 11111 Rn Rt -- instruction )
1429
1430 ! STLLRH: Store LORelease Register Halfword.
1431 ARM-INSTRUCTION: STLLRH-encode ( 01 001000 1 0 0 11111 0 11111 Rn Rt -- instruction )
1432
1433 ! STLR: Store-Release Register.
1434 ARM-INSTRUCTION: STLR32-encode ( 10 001000 1 0 0 11111 1 11111 Rn Rt -- instruction )
1435 ARM-INSTRUCTION: STLR64-encode ( 11 001000 1 0 0 11111 1 11111 Rn Rt -- instruction )
1436
1437 ! STLRB: Store-Release Register Byte.
1438 ARM-INSTRUCTION: STLRB-encode ( 00 001000 1 0 0 11111 1 11111 Rn Rt -- instruction )
1439
1440 ! STLRH: Store-Release Register Halfword.
1441 ARM-INSTRUCTION: STLRH-encode ( 01 001000 1 0 0 11111 1 11111 Rn Rt -- instruction )
1442
1443 ! STLUR: Store-Release Register (unscaled).
1444 ARM-INSTRUCTION: STLUR32-encode ( 10 011001 00 0 imm9 00 Rn Rt -- instruction )
1445 ARM-INSTRUCTION: STLUR64-encode ( 11 011001 00 0 imm9 00 Rn Rt -- instruction )
1446
1447 ! STLURB: Store-Release Register Byte (unscaled).
1448 ARM-INSTRUCTION: STLURB-encode ( 00 011001 00 0 imm9 00 Rn Rt -- instruction )
1449
1450 ! STLURH: Store-Release Register Halfword (unscaled).
1451 ARM-INSTRUCTION: STLURH-encode ( 01 011001 00 0 imm9 00 Rn Rt -- instruction )
1452
1453 ! STLXP: Store-Release Exclusive Pair of registers.
1454 ARM-INSTRUCTION: STLXP32-encode ( 1 0 001000 0 0 1 Rs 1 Rt2 Rn Rt -- instruction )
1455 ARM-INSTRUCTION: STLXP64-encode ( 1 1 001000 0 0 1 Rs 1 Rt2 Rn Rt -- instruction )
1456
1457 ! STLXR: Store-Release Exclusive Register.
1458 ARM-INSTRUCTION: STLXR32-encode ( 10 001000 0 0 0 Rs 1 11111 Rn Rt -- instruction )
1459 ARM-INSTRUCTION: STLXR64-encode ( 11 001000 0 0 0 Rs 1 11111 Rn Rt -- instruction )
1460
1461 ! STLXRB: Store-Release Exclusive Register Byte.
1462 ARM-INSTRUCTION: STLXRB-encode ( 00 001000 0 0 0 Rs 1 11111 Rn Rt -- instruction )
1463
1464 ! STLXRH: Store-Release Exclusive Register Halfword.
1465 ARM-INSTRUCTION: STLXRH-encode ( 01 001000 0 0 0 Rs 1 11111 Rn Rt -- instruction )
1466
1467 ! STNP: Store Pair of Registers, with non-temporal hint.
1468 ARM-INSTRUCTION: STNP32-encode ( 00 101 0 000 0 imm7 Rt2 Rn Rt -- instruction )
1469 ARM-INSTRUCTION: STNP64-encode ( 10 101 0 000 0 imm7 Rt2 Rn Rt -- instruction )
1470
1471 ! STP: Store Pair of Registers.
1472 ARM-INSTRUCTION: STPpost32-encode ( 00 101 0 001 0 imm7 Rt2 Rn Rt -- instruction )
1473 ARM-INSTRUCTION: STPpost64-encode ( 10 101 0 001 0 imm7 Rt2 Rn Rt -- instruction )
1474 ARM-INSTRUCTION: STPpre32-encode  ( 00 101 0 011 0 imm7 Rt2 Rn Rt -- instruction )
1475 ARM-INSTRUCTION: STPpre64-encode  ( 10 101 0 011 0 imm7 Rt2 Rn Rt -- instruction )
1476 ARM-INSTRUCTION: STPsoff32-encode ( 00 101 0 010 0 imm7 Rt2 Rn Rt -- instruction )
1477 ARM-INSTRUCTION: STPsoff64-encode ( 10 101 0 010 0 imm7 Rt2 Rn Rt -- instruction )
1478
1479 ! STR (immediate): Store Register (immediate).
1480 ARM-INSTRUCTION: STRpost32-encode ( 00 111 0 00 00 0 imm9 01 Rn Rt -- instruction )
1481 ARM-INSTRUCTION: STRpost64-encode ( 11 111 0 00 00 0 imm9 01 Rn Rt -- instruction )
1482 ARM-INSTRUCTION: STRpre32-encode  ( 00 111 0 00 00 0 imm9 11 Rn Rt -- instruction )
1483 ARM-INSTRUCTION: STRpre64-encode  ( 11 111 0 00 00 0 imm9 11 Rn Rt -- instruction )
1484 ARM-INSTRUCTION: STRuoff32-encode ( 00 111 0 01 00 imm12 Rn Rt -- instruction )
1485 ARM-INSTRUCTION: STRuoff64-encode ( 11 111 0 01 00 imm12 Rn Rt -- instruction )
1486
1487 ! STR (register): Store Register (register).
1488 ARM-INSTRUCTION: STRr32-encode ( 10 111 0 00 00 1 Rm option3 S 10 Rn Rt -- instruction )
1489 ARM-INSTRUCTION: STRr64-encode ( 11 111 0 00 00 1 Rm option3 S 10 Rn Rt -- instruction )
1490
1491 ! STRB (immediate): Store Register Byte (immediate).
1492 ARM-INSTRUCTION: STRpost-encode ( 00 111 0 00 00 0 imm9 01 Rn Rt -- instruction )
1493 ARM-INSTRUCTION: STRpre-encode  ( 00 111 0 00 00 0 imm9 11 Rn Rt -- instruction )
1494 ARM-INSTRUCTION: STRuoff-encode ( 00 111 0 01 00 imm12 Rn Rt -- instruction )
1495
1496 ! STRB (register): Store Register Byte (register).
1497 ARM-INSTRUCTION: STRBext-encode   ( 00 111 0 00 00 1 Rm option3 S 10 Rn Rt -- instruction )
1498 ARM-INSTRUCTION: STRBshift-encode ( 00 111 0 00 00 1 Rm 011 S 10 Rn Rt -- instruction )
1499
1500 ! STRH (immediate): Store Register Halfword (immediate).
1501 ARM-INSTRUCTION: STRHpost-encode ( 01 111 0 00 00 0 imm9 01 Rn Rt -- instruction )
1502 ARM-INSTRUCTION: STRHpre-encode  ( 01 111 0 00 00 0 imm9 11 Rn Rt -- instruction )
1503 ARM-INSTRUCTION: STRHuoff-encode ( 01 111 0 01 00 imm12 Rn Rt -- instruction )
1504
1505 ! STRH (register): Store Register Halfword (register).
1506 ARM-INSTRUCTION: STRH-encode ( 01 111 0 00 00 1 Rm option3 S 10 Rn Rt -- instruction )
1507
1508 ! STSET, STSETL: Atomic bit set on word or doubleword in memory, without return: an alias of LDSET, LDSETA, LDSETAL, LDSETL.
1509 ! ARMv8.1
1510 ARM-INSTRUCTION: STSET32-encode  ( 10 111 0 00 0 0 1 Rs 0 011 00 Rn 11111 -- instruction )
1511 ARM-INSTRUCTION: STSETL32-encode ( 10 111 0 00 0 1 1 Rs 0 011 00 Rn 11111 -- instruction )
1512 ARM-INSTRUCTION: STSET64-encode  ( 11 111 0 00 0 0 1 Rs 0 011 00 Rn 11111 -- instruction )
1513 ARM-INSTRUCTION: STSETL64-encode ( 11 111 0 00 0 1 1 Rs 0 011 00 Rn 11111 -- instruction )
1514
1515 ! STSETB, STSETLB: Atomic bit set on byte in memory, without return: an alias of LDSETB, LDSETAB, LDSETALB, LDSETLB.
1516 ! ARMv8.1
1517 ARM-INSTRUCTION: STSETB-encode  ( 00 111 0 00 0 0 1 Rs 0 011 00 Rn 11111 -- instruction )
1518 ARM-INSTRUCTION: STSETLB-encode ( 00 111 0 00 0 1 1 Rs 0 011 00 Rn 11111 -- instruction )
1519
1520 ! STSETH, STSETLH: Atomic bit set on halfword in memory, without return: an alias of LDSETH, LDSETAH, LDSETALH, LDSETLH.
1521 ! ARMv8.1
1522 ARM-INSTRUCTION: STSETH-encode  ( 01 111 0 00 0 0 1 Rs 0 011 00 Rn 11111 -- instruction )
1523 ARM-INSTRUCTION: STSETLH-encode ( 01 111 0 00 0 1 1 Rs 0 011 00 Rn 11111 -- instruction )
1524
1525 ! STSMAX, STSMAXL: Atomic signed maximum on word or doubleword in memory, without return: an alias of LDSMAX, LDSMAXA, LDSMAXAL, LDSMAXL.
1526 ! ARMv8.1
1527 ARM-INSTRUCTION: STSMAX32-encode  ( 10 111 0 00 0 0 1 Rs 0 100 00 Rn 11111 -- instruction )
1528 ARM-INSTRUCTION: STSMAXL32-encode ( 10 111 0 00 0 1 1 Rs 0 100 00 Rn 11111 -- instruction )
1529 ARM-INSTRUCTION: STSMAX64-encode  ( 11 111 0 00 0 0 1 Rs 0 100 00 Rn 11111 -- instruction )
1530 ARM-INSTRUCTION: STSMAXL64-encode ( 11 111 0 00 0 1 1 Rs 0 100 00 Rn 11111 -- instruction )
1531
1532 ! STSMAXB, STSMAXLB: Atomic signed maximum on byte in memory, without return: an alias of LDSMAXB, LDSMAXAB, LDSMAXALB, LDSMAXLB.
1533 ! ARMv8.1
1534 ARM-INSTRUCTION: STSMAXB-encode  ( 00 111 0 00 0 0 1 Rs 0 100 00 Rn 11111 -- instruction )
1535 ARM-INSTRUCTION: STSMAXLB-encode ( 00 111 0 00 0 1 1 Rs 0 100 00 Rn 11111 -- instruction )
1536
1537 ! STSMAXH, STSMAXLH: Atomic signed maximum on halfword in memory, without return: an alias of LDSMAXH, LDSMAXAH, LDSMAXALH, LDSMAXLH
1538 ! ARMv8.1
1539 ARM-INSTRUCTION: STSMAXH-encode  ( 01 111 0 00 0 0 1 Rs 0 100 00 Rn 11111 -- instruction )
1540 ARM-INSTRUCTION: STSMAXLH-encode ( 01 111 0 00 0 1 1 Rs 0 100 00 Rn 11111 -- instruction )
1541
1542 ! STSMIN, STSMINL: Atomic signed minimum on word or doubleword in memory, without return: an alias of LDSMIN, LDSMINA, LDSMINAL, LDSMINL.
1543 ! ARMv8.1
1544 ARM-INSTRUCTION: STSMIN32-encode  ( 10 111 0 00 0 0 1 Rs 0 101 00 Rn 11111 -- instruction )
1545 ARM-INSTRUCTION: STSMINL32-encode ( 10 111 0 00 0 0 1 Rs 0 101 00 Rn 11111 -- instruction )
1546 ARM-INSTRUCTION: STSMIN64-encode  ( 11 111 0 00 0 1 1 Rs 0 101 00 Rn 11111 -- instruction )
1547 ARM-INSTRUCTION: STSMINL64-encode ( 11 111 0 00 0 1 1 Rs 0 101 00 Rn 11111 -- instruction )
1548
1549 ! STSMINB, STSMINLB: Atomic signed minimum on byte in memory, without return: an alias of LDSMINB, LDSMINAB, LDSMINALB, LDSMINLB.
1550 ARM-INSTRUCTION: STSMINB-encode  ( 00 111 0 00 0 0 1 Rs 0 101 00 Rn 11111 -- instruction )
1551 ARM-INSTRUCTION: STSMINLB-encode ( 00 111 0 00 0 1 1 Rs 0 101 00 Rn 11111 -- instruction )
1552
1553 ! STSMINH, STSMINLH: Atomic signed minimum on halfword in memory, without return: an alias of LDSMINH, LDSMINAH, LDSMINALH, LDSMINLH.
1554 ARM-INSTRUCTION: STSMINH-encode  ( 01 111 0 00 0 0 1 Rs 0 101 00 Rn 11111 -- instruction )
1555 ARM-INSTRUCTION: STSMINLH-encode ( 01 111 0 00 0 1 1 Rs 0 101 00 Rn 11111 -- instruction )
1556
1557 ! STTR: Store Register (unprivileged).
1558 ARM-INSTRUCTION: STTR32-encode ( 10 111 0 00 00 0 imm9 10 Rn Rt -- instruction )
1559 ARM-INSTRUCTION: STTR64-encode ( 11 111 0 00 00 0 imm9 10 Rn Rt -- instruction )
1560
1561 ! STTRB: Store Register Byte (unprivileged).
1562 ARM-INSTRUCTION: STTRB-encode ( 00 111 0 00 00 0 imm9 10 Rn Rt -- instruction )
1563
1564 ! STTRH: Store Register Halfword (unprivileged).
1565 ARM-INSTRUCTION: STTRH-encode ( 01 111 0 00 00 0 imm9 10 Rn Rt -- instruction )
1566
1567 ! STUMAX, STUMAXL: Atomic unsigned maximum on word or doubleword in memory, without return: an alias of LDUMAX, LDUMAXA, LDUMAXAL, LDUMAXL.
1568 ! ARMv8.1
1569 ARM-INSTRUCTION: STUMAX32-encode  ( 10 111 0 00 0 0 1 Rs 0 110 00 Rn 11111 -- instruction )
1570 ARM-INSTRUCTION: STUMAXL32-encode ( 10 111 0 00 0 1 1 Rs 0 110 00 Rn 11111 -- instruction )
1571 ARM-INSTRUCTION: STUMAX64-encode  ( 11 111 0 00 0 0 1 Rs 0 110 00 Rn 11111 -- instruction )
1572 ARM-INSTRUCTION: STUMAXL64-encode ( 11 111 0 00 0 1 1 Rs 0 110 00 Rn 11111 -- instruction )
1573
1574 ! STUMAXB, STUMAXLB: Atomic unsigned maximum on byte in memory, without return: an alias of LDUMAXB, LDUMAXAB, LDUMAXALB, LDUMAXLB.
1575 ARM-INSTRUCTION: STUMAXB-encode  ( 00 111 0 00 0 0 1 Rs 0 110 00 Rn 11111 -- instruction )
1576 ARM-INSTRUCTION: STUMAXLB-encode ( 00 111 0 00 0 1 1 Rs 0 110 00 Rn 11111 -- instruction )
1577
1578 ! STUMAXH, STUMAXLH: Atomic unsigned maximum on halfword in memory, without return: an alias of LDUMAXH, LDUMAXAH, LDUMAXALH, LDUMAXLH.
1579 ARM-INSTRUCTION: STUMAXH-encode  ( 01 111 0 00 0 0 1 Rs 0 110 00 Rn 11111 -- instruction )
1580 ARM-INSTRUCTION: STUMAXLH-encode ( 01 111 0 00 0 1 1 Rs 0 110 00 Rn 11111 -- instruction )
1581
1582 ! STUMIN, STUMINL: Atomic unsigned minimum on word or doubleword in memory, without return: an alias of LDUMIN, LDUMINA, LDUMINAL, LDUMINL.
1583 ! ARMv8.1
1584 ARM-INSTRUCTION: STUMIN32-encode   ( 10 111 0 00 0 0 1 Rs 0 111 00 Rn 11111 -- instruction )
1585 ARM-INSTRUCTION: STUMINL32-encode  ( 10 111 0 00 0 1 1 Rs 0 111 00 Rn 11111 -- instruction )
1586 ARM-INSTRUCTION: STUMIN64-encode   ( 11 111 0 00 0 0 1 Rs 0 111 00 Rn 11111 -- instruction )
1587 ARM-INSTRUCTION: STUMINL64-encode  ( 11 111 0 00 0 1 1 Rs 0 111 00 Rn 11111 -- instruction )
1588
1589 ! STUMINB, STUMINLB: Atomic unsigned minimum on byte in memory, without return: an alias of LDUMINB, LDUMINAB, LDUMINALB, LDUMINLB.
1590 ! ARMv8.1
1591 ARM-INSTRUCTION: STUMINB-encode  ( 00 111 0 00 0 0 1 Rs 0 111 00 Rn 11111 -- instruction )
1592 ARM-INSTRUCTION: STUMINLB-encode ( 00 111 0 00 0 1 1 Rs 0 111 00 Rn 11111 -- instruction )
1593
1594 ! STUMINH, STUMINLH: Atomic unsigned minimum on halfword in memory, without return: an alias of LDUMINH, LDUMINAH, LDUMINALH, LDUMINLH.
1595 ARM-INSTRUCTION: STUMINH-encode  ( 01 111 0 00 0 0 1 Rs 0 111 00 Rn 11111 -- instruction )
1596 ARM-INSTRUCTION: STUMINLH-encode ( 01 111 0 00 0 1 1 Rs 0 111 00 Rn 11111 -- instruction )
1597
1598 ! STUR: Store Register (unscaled).
1599 ARM-INSTRUCTION: STUR32-encode ( 10 111 0 00 00 0 imm9 00 Rn Rt -- instruction )
1600 ARM-INSTRUCTION: STUR64-encode ( 11 111 0 00 00 0 imm9 00 Rn Rt -- instruction )
1601
1602 ! STURB: Store Register Byte (unscaled).
1603 ARM-INSTRUCTION: STURB-encode ( 00 111 0 00 00 0 imm9 00 Rn Rt -- instruction )
1604
1605 ! STURH: Store Register Halfword (unscaled).
1606 ARM-INSTRUCTION: STURH-encode ( 01 111 0 00 00 0 imm9 00 Rn Rt -- instruction )
1607
1608 ! STXP: Store Exclusive Pair of registers.
1609 ARM-INSTRUCTION: STXP32-encode ( 1 0 001000 0 0 1 Rs 0 Rt2 Rn Rt -- instruction )
1610 ARM-INSTRUCTION: STXP64-encode ( 1 1 001000 0 0 1 Rs 0 Rt2 Rn Rt -- instruction )
1611
1612 ! STXR: Store Exclusive Register.
1613 ARM-INSTRUCTION: STXR32-encode ( 10 001000 0 0 0 Rs 0 11111 Rn Rt -- instruction )
1614 ARM-INSTRUCTION: STXR64-encode ( 11 001000 0 0 0 Rs 0 11111 Rn Rt -- instruction )
1615
1616 ! STXRB: Store Exclusive Register Byte.
1617 ARM-INSTRUCTION: STXRB-encode ( 00 001000 0 0 0 Rs 0 11111 Rn Rt -- instruction )
1618
1619 ! STXRH: Store Exclusive Register Halfword.
1620 ARM-INSTRUCTION: STXRH-encode ( 01 001000 0 0 0 Rs 0 11111 Rn Rt -- instruction )
1621
1622 ! STZ2G: Store Allocation Tags, Zeroing.
1623 ! ARMv8.5
1624 ARM-INSTRUCTION: STZ2Gpost-encode ( 11011001 1 1 1 imm9 0 1 Xn 11111 -- instruction )
1625 ARM-INSTRUCTION: STZ2Gpre-encode  ( 11011001 1 1 1 imm9 1 1 Xn 11111 -- instruction )
1626 ARM-INSTRUCTION: STZ2Gsoff-encode ( 11011001 1 1 1 imm9 1 0 Xn 11111 -- instruction )
1627
1628 ! STZG: Store Allocation Tag, Zeroing.
1629 ! ARMv8.5
1630 ARM-INSTRUCTION: STZGpost-encode ( 11011001 0 1 1 imm9 0 1 Xn 11111 -- instruction )
1631 ARM-INSTRUCTION: STZGpre-encode  ( 11011001 0 1 1 imm9 1 1 Xn 11111 -- instruction )
1632 ARM-INSTRUCTION: STZGsoff-encode ( 11011001 0 1 1 imm9 1 0 Xn 11111 -- instruction )
1633
1634 ! SUB (extended register): Subtract (extended register).
1635 ARM-INSTRUCTION: SUBer32-encode ( 0 1 0 01011 00 1 Rm option3 imm3 Rn Rd -- instruction )
1636 ARM-INSTRUCTION: SUBer64-encode ( 1 1 0 01011 00 1 Rm option3 imm3 Rn Rd -- instruction )
1637
1638 ! SUB (immediate): Subtract (immediate).
1639 ARM-INSTRUCTION: SUBi32-encode ( 0 1 0 10001 shift2 imm12 Rn Rd -- instruction )
1640 ARM-INSTRUCTION: SUBi64-encode ( 1 1 0 10001 shift2 imm12 Rn Rd -- instruction )
1641
1642 ! SUB (shifted register): Subtract (shifted register).
1643 ARM-INSTRUCTION: SUBsr32-encode ( 0 1 0 01011 shift2 0 Rm imm6 Rn Rd -- instruction )
1644 ARM-INSTRUCTION: SUBsr64-encode ( 1 1 0 01011 shift2 0 Rm imm6 Rn Rd -- instruction )
1645
1646 ! SUBG: Subtract with Tag.
1647 ! ARMv8.5
1648 ARM-INSTRUCTION: SUBG-encode ( 1 1 0 100011 0 uimm6 00 uimm4 Xn Xd -- instruction )
1649
1650 ! SUBP: Subtract Pointer.
1651 ! ARMv8.5
1652 ARM-INSTRUCTION: SUBP-encode ( 1 0 0 11010110 Xm 0 0 0 0 0 0 Xn Xd -- instruction )
1653
1654 ! SUBPS: Subtract Pointer, setting Flags.
1655 ! ARMv8.5
1656 ARM-INSTRUCTION: SUBPS-encode ( 1 0 1 11010110 Xm 0 0 0 0 0 0 Xn Xd -- instruction )
1657
1658 ! SUBS (extended register): Subtract (extended register), setting flags.
1659 ARM-INSTRUCTION: SUBSer32-encode ( 0 1 1 01011 00 1 Rm option3 imm3 Rn Rd -- instruction )
1660 ARM-INSTRUCTION: SUBSer64-encode ( 1 1 1 01011 00 1 Rm option3 imm3 Rn Rd -- instruction )
1661
1662 ! SUBS (immediate): Subtract (immediate), setting flags.
1663 ARM-INSTRUCTION: SUBSimm32-encode ( 0 1 1 10001 shift2 imm12 Rn Rd -- instruction )
1664 ARM-INSTRUCTION: SUBSimm64-encode ( 1 1 1 10001 shift2 imm12 Rn Rd -- instruction )
1665
1666 ! SUBS (shifted register): Subtract (shifted register), setting flags.
1667 ARM-INSTRUCTION: SUBSsr32-encode ( 0 1 1 01011 shift2 0 Rm imm6 Rn Rd -- instruction )
1668 ARM-INSTRUCTION: SUBSsr64-encode ( 1 1 1 01011 shift2 0 Rm imm6 Rn Rd -- instruction )
1669
1670 ! SVC: Supervisor Call.
1671 ARM-INSTRUCTION: SVC-encode ( 11010100 000 imm16 000 01 -- instruction )
1672
1673 ! SWP, SWPA, SWPAL, SWPL: Swap word or doubleword in memory
1674 ! ARMv8.1
1675 ARM-INSTRUCTION: SWP32-encode   ( 10 111 0 00 0 0 1 Rs 1 000 00 Rn Rt -- instruction )
1676 ARM-INSTRUCTION: SWPA32-encode  ( 10 111 0 00 1 0 1 Rs 1 000 00 Rn Rt -- instruction )
1677 ARM-INSTRUCTION: SWPAL32-encode ( 10 111 0 00 1 1 1 Rs 1 000 00 Rn Rt -- instruction )
1678 ARM-INSTRUCTION: SWPL32-encode  ( 10 111 0 00 0 1 1 Rs 1 000 00 Rn Rt -- instruction )
1679 ARM-INSTRUCTION: SWP64-encode   ( 11 111 0 00 0 0 1 Rs 1 000 00 Rn Rt -- instruction )
1680 ARM-INSTRUCTION: SWPA64-encode  ( 11 111 0 00 1 0 1 Rs 1 000 00 Rn Rt -- instruction )
1681 ARM-INSTRUCTION: SWPAL64-encode ( 11 111 0 00 1 1 1 Rs 1 000 00 Rn Rt -- instruction )
1682 ARM-INSTRUCTION: SWPL64-encode  ( 11 111 0 00 0 1 1 Rs 1 000 00 Rn Rt -- instruction )
1683
1684 ! SWPB, SWPAB, SWPALB, SWPLB: Swap byte in memory.
1685 ! ARMv8.1
1686 ARM-INSTRUCTION: SWPAB-encode  ( 00 111 0 00 1 0 1 Rs 1 000 00 Rn Rt -- instruction )
1687 ARM-INSTRUCTION: SWPALB-encode ( 00 111 0 00 1 1 1 Rs 1 000 00 Rn Rt -- instruction )
1688 ARM-INSTRUCTION: SWPB-encode   ( 00 111 0 00 0 0 1 Rs 1 000 00 Rn Rt -- instruction )
1689 ARM-INSTRUCTION: SWPLB-encode  ( 00 111 0 00 0 1 1 Rs 1 000 00 Rn Rt -- instruction )
1690
1691 ! SWPH, SWPAH, SWPALH, SWPLH: Swap halfword in memory.
1692 ARM-INSTRUCTION: SWPAH-encode  ( 01 111 0 00 1 0 1 Rs 1 000 00 Rn Rt -- instruction )
1693 ARM-INSTRUCTION: SWPALH-encode ( 01 111 0 00 1 1 1 Rs 1 000 00 Rn Rt -- instruction )
1694 ARM-INSTRUCTION: SWPH-encode   ( 01 111 0 00 0 0 1 Rs 1 000 00 Rn Rt -- instruction )
1695 ARM-INSTRUCTION: SWPLH-encode  ( 01 111 0 00 0 1 1 Rs 1 000 00 Rn Rt -- instruction )
1696
1697 ! SXTB: Signed Extend Byte: an alias of SBFM.
1698 ARM-INSTRUCTION: SXTB32-encode ( 0 00 100110 0 000000 000111 Rn Rd -- instruction )
1699 ARM-INSTRUCTION: SXTB64-encode ( 1 00 100110 1 000000 000111 Rn Rd -- instruction )
1700
1701 ! SXTH: Sign Extend Halfword: an alias of SBFM.
1702 ARM-INSTRUCTION: SXTH32-encode ( 0 00 100110 0 000000 001111 Rn Rd -- instruction )
1703 ARM-INSTRUCTION: SXTH64-encode ( 1 00 100110 1 000000 001111 Rn Rd -- instruction )
1704
1705 ! SXTW: Sign Extend Word: an alias of SBFM.
1706 ARM-INSTRUCTION: SXTW-encode ( 1 00 100110 1 000000 011111 Rn Rd -- instruction )
1707
1708 ! SYS: System instruction.
1709 ARM-INSTRUCTION: SYS-encode  ( 1101010100 0 01 op3 CRn CRm op3 Rt -- instruction )
1710
1711 ! SYSL: System instruction with result.
1712 ARM-INSTRUCTION: SYSL-encode ( 1101010100 1 01 op3 CRn CRm op3 Rt -- instruction )
1713
1714 ! TBNZ: Test bit and Branch if Nonzero.
1715 ARM-INSTRUCTION: TBNZW-encode ( 0 011011 1 b40 imm14 Rt -- instruction )
1716 ARM-INSTRUCTION: TBNZX-encode ( 1 011011 1 b40 imm14 Rt -- instruction )
1717
1718 ! TBZ: Test bit and Branch if Zero.
1719 ARM-INSTRUCTION: TBHZW-encode ( 0 011011 0 b40 imm14 Rt -- instruction )
1720 ARM-INSTRUCTION: TBHZX-encode ( 1 011011 0 b40 imm14 Rt -- instruction )
1721
1722 ! TLBI: TLB Invalidate operation: an alias of SYS.
1723 ARM-INSTRUCTION: TLBI-encode ( 1101010100 0 01 op3 1000 CRm op3 Rt -- instruction )
1724
1725 ! TSB CSYNC: Trace Synchronization Barrier.
1726 ! ARMv8.4
1727 ARM-INSTRUCTION: TSB-CSYNC-encode ( 1101010100 0 00 011 0010 0010 010 11111 -- instruction )
1728
1729 ! TST (immediate): Test bits (immediate): an alias of ANDS (immediate).
1730 ARM-INSTRUCTION: TSTi32-encode ( 0 11 100100 0 immrimms Rn 11111 -- instruction )
1731 ARM-INSTRUCTION: TSTi64-encode ( 1 11 100100 Nimmrimms Rn 11111 -- instruction )
1732
1733 ! TST (shifted register): Test (shifted register): an alias of ANDS (shifted register).
1734 ARM-INSTRUCTION: TSTsr32-encode ( 0 11 01010 shift2 0 Rm imm6 Rn 11111 -- instruction )
1735 ARM-INSTRUCTION: TSTsr64-encode ( 1 11 01010 shift2 0 Rm imm6 Rn 11111 -- instruction )
1736
1737 ! UBFIZ: Unsigned Bitfield Insert in Zero: an alias of UBFM.
1738 ARM-INSTRUCTION: UBFIZ32-encode ( 0 10 100110 0 immr imms Rn Rd -- instruction )
1739 ARM-INSTRUCTION: UBFIZ64-encode ( 1 10 100110 1 immr imms Rn Rd -- instruction )
1740
1741 ! UBFM: Unsigned Bitfield Move.
1742 ARM-INSTRUCTION: UBFM32-encode ( 0 10 100110 0 immr imms Rn Rd -- instruction )
1743 ARM-INSTRUCTION: UBFM64-encode ( 1 10 100110 1 immr imms Rn Rd -- instruction )
1744
1745 ! UBFX: Unsigned Bitfield Extract: an alias of UBFM.
1746 ARM-INSTRUCTION: UBFX32-encode ( 0 10 100110 0 immr imms Rn Rd -- instruction )
1747 ARM-INSTRUCTION: UBFX64-encode ( 1 10 100110 1 immr imms Rn Rd -- instruction )
1748
1749 ! UDF: Permanently Undefined.
1750 ARM-INSTRUCTION: UDF-encode ( 0000000000000000 imm16 -- instruction )
1751
1752 ! UDIV: Unsigned Divide.
1753 ARM-INSTRUCTION: UDIV32-encode ( 0 0 0 11010110 Rm 00001 0 Rn Rd -- instruction )
1754 ARM-INSTRUCTION: UDIV64-encode ( 1 0 0 11010110 Rm 00001 0 Rn Rd -- instruction )
1755
1756 ! UMADDL: Unsigned Multiply-Add Long.
1757 ARM-INSTRUCTION: UMADDL-encode ( 1 00 11011 1 01 Rm 0 Ra Rn Rd -- instruction )
1758
1759 ! UMNEGL: Unsigned Multiply-Negate Long: an alias of UMSUBL.
1760 ARM-INSTRUCTION: UMNEGL-encode ( 1 00 11011 1 01 Rm 1 11111 Rn Rd -- instruction )
1761
1762 ! UMSUBL: Unsigned Multiply-Subtract Long.
1763 ARM-INSTRUCTION: UMSUBL-encode ( 1 00 11011 1 01 Rm 1 Ra Rn Rd -- instruction )
1764
1765 ! UMULH: Unsigned Multiply High.
1766 ARM-INSTRUCTION: UMULH-encode ( 1 00 11011 1 10 Rm 0 11111 Rn Rd -- instruction )
1767
1768 ! UMULL: Unsigned Multiply Long: an alias of UMADDL.
1769 ARM-INSTRUCTION: UMULL-encode ( 1 00 11011 1 01 Rm 0 11111 Rn Rd -- instruction )
1770
1771 ! UXTB: Unsigned Extend Byte: an alias of UBFM.
1772 ARM-INSTRUCTION: UXTB-encode ( 0 10 100110 0 000000 000111 Rn Rd -- instruction )
1773
1774 ! UXTH: Unsigned Extend Halfword: an alias of UBFM.
1775 ARM-INSTRUCTION: UXTH-encode ( 0 10 100110 0 000000 000111 Rn Rd -- instruction )
1776
1777 ! WFE: Wait For Event.
1778 ARM-INSTRUCTION: WFE-encode ( 1101010100 0 00 011 0010 0000 010 11111 -- instruction )
1779
1780 ! WFI: Wait For Interrupt.
1781 ARM-INSTRUCTION: WFI-encode ( 1101010100 0 00 011 0010 0000 011 11111 -- instruction )
1782
1783 ! XAFlag: Convert floating-point condition flags from external format to ARM format.
1784 ARM-INSTRUCTION: XAFlag-encode ( 1101010100 0 00 000 0100 0000 001 11111 -- instruction )
1785
1786 ! XPACD, XPACI, XPACLRI: Strip Pointer Authentication Code.
1787 ! ARMv8.3
1788 ARM-INSTRUCTION: XPACD-encode ( 1 1 0 11010110 00001 0 1 000 1 11111 Rd -- instruction )
1789 ARM-INSTRUCTION: XPACI-encode ( 1 1 0 11010110 00001 0 1 000 0 11111 Rd -- instruction )
1790 ARM-INSTRUCTION: XPACLRI-encode ( 1101010100 0 00 011 0010 0000 111 11111 -- instruction )
1791
1792 ! YIELD: YIELD.
1793 ARM-INSTRUCTION: YIELD-encode ( 1101010100 0 00 011 0010 0000 001 11111 -- instruction )