Project

General

Profile

Instruction Set Architecture » History » Version 12

Alexander Protsenko, 03/16/2023 05:50 PM

1 1 Alexander Protsenko
h1. Instruction Set Architecture
2
3 12 Alexander Protsenko
4
5 3 Alexander Protsenko
h2. Data processing - immediate
6
7 1 Alexander Protsenko
h3. Arithmetic (immediate)
8
9
### ADD (immediate). Add.
10
Specification: add, add_32
11
### SUB (immediate). Subtract.
12
Specification: sub, sub_32
13
### ADDS (immediate). Add and set flags.
14
Specification: adds, adds_32
15
### SUBS (immediate). Subtract and set flags.
16
Specification: subs, subs_32
17
### CMP (immediate). Compare.
18
Specification: cmp, cmp_32
19
### CMN (immediate). Compare negative.
20
Specification: cmn, cmn_32
21
22 12 Alexander Protsenko
+Total:+ 12.
23
24 1 Alexander Protsenko
h3. Logical (immediate)
25
26
### AND (immediate). Bitwise AND
27
Specification: and_bitmask, and_bitmask_32
28
### ANDS (immediate). Bitwise AND and set flags
29
Specification: ands_bitmask, ands_bitmask_32
30
### EOR (immediate). Bitwise exclusive OR
31
Specification: eor_bitmask, eor_bitmask_32
32
### ORR (immediate). Bitwise inclusive OR
33
Specification: orr_bitmask, orr_bitmask_32
34
### TST (immediate). TST Test bits
35
Specification: tst_bitmask, tst_bitmask_32
36
37 12 Alexander Protsenko
+Total:+ 10.
38
39 1 Alexander Protsenko
h3. Move (wide immediate)
40
41
### MOVZ. Move wide with zero
42
Specification: movz, movz_32
43
### MOVN. Move wide with NOT
44
Specification: movn, movn_32
45
### MOVK. Move wide with keep
46
Specification: movk, movk_32
47
48 12 Alexander Protsenko
+Total:+ 6.
49
50 1 Alexander Protsenko
h3. Move (immediate)
51
52
### MOV (wide immediate). Move (wide immediate)
53
Specification: mov_wide_imm, mov_wide_imm_32
54
### MOV (inverted wide immediate). Move (inverted wide immediate)
55
Specification: mov_inv_wide_imm, mov_inv_wide_imm_32
56 2 Alexander Protsenko
### MOV (bitmask immediate). Move (bitmask immediate)
57 1 Alexander Protsenko
Specification: mov_bitmask, mov_bitmask_32
58
59 12 Alexander Protsenko
+Total:+ 6.
60
61 3 Alexander Protsenko
h3. PC-relative address calculation
62
63
### ADRP. Compute address of 4KB page at a PC-relative offset
64
Specification: adrp
65
### ADR. Compute address of label at a PC-relative offset.
66
Specification: adr
67
68 12 Alexander Protsenko
+Total:+ 2.
69
70 3 Alexander Protsenko
h3. Extract register
71
72
### EXTR. Extract register from pair
73
Specification: extr, extr_32
74
75 12 Alexander Protsenko
+Total:+ 2.
76
77 3 Alexander Protsenko
h2. Data processing - register
78
79
h3. Arithmetic (shifted register)
80
81
### ADD (shifted register). Add
82
Specification: add_sh_reg, add_sh_reg_32
83
### ADDS (shifted register). Add and set flags
84
Specification: adds_sh_reg, adds_sh_reg_32
85
### SUB (shifted register). Subtract
86
Specification: sub_sh_reg, sub_sh_reg_32
87
### SUBS (shifted register). Subtract and set flags
88
Specification: subs_sh_reg, subs_sh_reg_32
89
### CMN (shifted register). Compare negative
90
Specification: cmn_sh_reg, cmn_sh_reg_32
91
### CMP (shifted register). Compare
92
Specification: cmp_sh_reg, cmp_sh_reg_32
93
94 12 Alexander Protsenko
+Total:+ 12.
95
96 3 Alexander Protsenko
h3. Arithmetic (extending register)
97
98
### ADD (extended register). Add
99
Specification: add_ex_reg, add_ex_reg_32
100
### ADDS (extended register). Add and set flags
101
Specification: adds_ex_reg, adds_ex_reg_32
102
### SUB (extended register). Subtract
103
Specification: sub_ex_reg, sub_ex_reg_32
104
### SUBS (extended register). Subtract and set flags
105
Specification: subs_ex_reg, subs_ex_reg_32
106
### CMN (extended register). Compare negative
107
Specification: cmn_ex_reg, cmn_ex_reg_32
108
### CMP (extended register). Compare
109
Specification: cmp_ex_reg, cmp_ex_reg_32
110 1 Alexander Protsenko
111 12 Alexander Protsenko
+Total:+ 12.
112
113 1 Alexander Protsenko
h3. Logical (shifted register)
114
115 4 Alexander Protsenko
### AND (shifted register). Bitwise AND
116
Specification: and_bitwise, and_bitwise_32
117
### ANDS (shifted register). Bitwise AND and set flags
118
Specification: ands_bitwise, ands_bitwise_32
119
### BIC (shifted register). Bitwise bit clear
120
Specification: bic_bitwise, bic_bitwise_32
121
### BICS (shifted register). Bitwise bit clear and set flags
122
Specification: bics_bitwise, bics_bitwise_32
123
### EON (shifted register). Bitwise exclusive OR NOT
124
Specification: eon_bitwise, eon_bitwise_32
125
### EOR (shifted register). Bitwise exclusive OR
126
Specification: eor_bitwise, eor_bitwise_32
127
### ORR (shifted register). Bitwise inclusive OR
128
Specification: orr_bitwise, orr_bitwise_32
129
### MVN. Bitwise NOT
130
Specification: mvn_bitwise, mvn_bitwise_32
131
### ORN (shifted register). Bitwise inclusive OR NOT
132
Specification: orn_bitwise, orn_bitwise_32
133
### TST (shifted register). Test bits
134
Specification: tst_bitwise, tst_bitwise_32
135
136 12 Alexander Protsenko
+Total:+ 20.
137
138 4 Alexander Protsenko
h3. Move (register)
139
140
###  MOV (register). Move register
141
Specification: mov_reg, mov_reg_32
142
### MOV (to/from SP). Move register to SP or move SP to register
143
Specification: mov_sp, mov_sp_32
144 3 Alexander Protsenko
145 12 Alexander Protsenko
+Total:+ 4.
146
147 5 Alexander Protsenko
h3. Multiply and divide
148
149 6 Alexander Protsenko
###  MADD. Multiply-add
150 5 Alexander Protsenko
Specification: madd, madd_32
151 6 Alexander Protsenko
###  MSUB. Multiply-subtract
152 5 Alexander Protsenko
Specification: msub, msub_32
153 6 Alexander Protsenko
###  MNEG. Multiply-negate
154 5 Alexander Protsenko
Specification: mneg, mneg_32
155 6 Alexander Protsenko
###  MUL. Multiply
156 5 Alexander Protsenko
Specification: mul, mul_32
157 6 Alexander Protsenko
###  SMADDL. Signed multiply-add long
158 5 Alexander Protsenko
Specification: smaddl
159 6 Alexander Protsenko
###  SMSUBL. Signed multiply-subtract long
160 5 Alexander Protsenko
Specification: smsubl
161 6 Alexander Protsenko
###  SMNEGL. Signed multiply-negate long
162 5 Alexander Protsenko
Specification: smnegl
163 6 Alexander Protsenko
###  SMULL. Signed multiply long
164 5 Alexander Protsenko
Specification: smull
165 6 Alexander Protsenko
###  SMULH. Signed multiply high
166 5 Alexander Protsenko
Specification: smulh
167 6 Alexander Protsenko
###  UMADDL. Unsigned multiply-add long
168 5 Alexander Protsenko
Specification: umaddl
169 6 Alexander Protsenko
###  UMSUBL. Unsigned multiply-subtract long
170 5 Alexander Protsenko
Specification: umsubl
171 6 Alexander Protsenko
###  UMNEGL. Unsigned multiply-negate long
172 5 Alexander Protsenko
Specification: umnegl
173 6 Alexander Protsenko
###  UMULL. Unsigned multiply long
174 5 Alexander Protsenko
Specification: umull
175 6 Alexander Protsenko
###  UMULH. Unsigned multiply high
176 5 Alexander Protsenko
Specification: umulh
177
178 12 Alexander Protsenko
+Total:+ 18.
179
180 5 Alexander Protsenko
h3. Divide
181
182 6 Alexander Protsenko
###  SDIV. Signed divide
183 5 Alexander Protsenko
Specification: sdiv, sdiv_32
184
###  UDIV. Unsigned divide
185
Specification: udiv, udiv_32
186
187 12 Alexander Protsenko
+Total:+ 4.
188
189 7 Alexander Protsenko
h2. Branches, Exception generating, and System instructions
190 1 Alexander Protsenko
191 7 Alexander Protsenko
h3. Conditional Branch
192
193
###  B.cond. Branch conditionally
194
Specification: b
195
### CBNZ. Compare and branch if nonzero
196
Specification: cbnz, cbnz_32
197
### CBZ. Compare and branch if zero
198
Specification: cbz, cbz_32
199
### TBNZ. Test bit and branch if nonzero
200
Specification: tbnz
201
### TBZ. Test bit and branch if zero
202
Specification: tbz
203
204 12 Alexander Protsenko
+Total:+ 7.
205
206 7 Alexander Protsenko
h3. Unconditional branch (immediate)
207
208
### B. Branch unconditionally
209
Specification: b_imm
210
### BL. Branch with link
211
Specification: bl
212
213 12 Alexander Protsenko
+Total:+ 2.
214
215 7 Alexander Protsenko
h3. Unconditional branch (register)
216
217
### BLR. Branch with link to register
218
Specification: blr
219
### BR. Branch to register
220
Specification: br
221
### RET. Return from subroutine
222
Specification: ret
223
224 12 Alexander Protsenko
+Total:+ 3.
225
226 7 Alexander Protsenko
h3. Exception generation and return
227
228 8 Alexander Protsenko
*Exception generating*
229
230 7 Alexander Protsenko
### BRK. Breakpoint Instruction
231
Specification: brk
232
### HLT. Halt Instruction HLT
233
Specification: hlt
234
### HVC. Generate exception targeting Exception level 2 HVC
235
Specification: hvc
236
### SMC. Generate exception targeting Exception level 3 SMC
237
Specification: smc
238
### SVC. Generate exception targeting Exception level 1
239
Specification: svc
240 8 Alexander Protsenko
241 12 Alexander Protsenko
+Total:+ 5.
242
243 8 Alexander Protsenko
*Exception return*
244
245 1 Alexander Protsenko
### ERET. Exception return using current ELR and SPSR
246
Specification: eret
247
248 12 Alexander Protsenko
+Total:+ 1.
249
250 8 Alexander Protsenko
*Debug state*
251 1 Alexander Protsenko
252 8 Alexander Protsenko
### DCPS1. Debug switch to Exception level 1 DCPS1
253
Specification: dcps1
254
### DCPS2. Debug switch to Exception level 2 DCPS2
255
Specification: dcps2
256
### DCPS3. Debug switch to Exception level 3 DCPS3
257
Specification: dcps3
258
### DRPS. Debug restore PE state
259
Specification: drps
260
261 12 Alexander Protsenko
+Total:+ 4.
262
263 8 Alexander Protsenko
h3. System register instructions
264
265
### MRS. Move System register to general-purpose register MRS
266
Specification: msr
267
### MSR. Move general-purpose register to System register MSR (register)
268
Specification: mrs
269
### MSR. Move immediate to PE state field MSR (immediate)
270
Specification: msr_dc, msr_ds, msr_ss, msr_uao
271
272 12 Alexander Protsenko
+Total:+ 6.
273
274 8 Alexander Protsenko
h3. System instructions
275
276
### SYS. System instruction
277
Specification: sys
278
### SYSL. System instruction with result
279
Specification: sysl
280
### IC. Instruction cache maintenance
281
Specification: ic, ic_reg
282
### DC. Data cache maintenance
283
Specification: dc
284
### AT. Address translation
285
Specification: at
286
### TLBI. TLB Invalidate
287
Specification: tlbi, tlbi_reg
288
289 12 Alexander Protsenko
+Total:+ 8.
290
291 8 Alexander Protsenko
h3. Hint instructions
292
293
### NOP. No operation
294 9 Alexander Protsenko
Specification: nop
295 1 Alexander Protsenko
### YIELD. Yield hint
296 9 Alexander Protsenko
Specification: yield_op
297 1 Alexander Protsenko
### WFE. Wait for event
298 9 Alexander Protsenko
Specification: wfe
299 1 Alexander Protsenko
### WFI. Wait for interrupt
300 9 Alexander Protsenko
Specification: wfi
301 1 Alexander Protsenko
### SEV. Send event
302 9 Alexander Protsenko
Specification: sev
303 1 Alexander Protsenko
### SEVL. Send event local
304 9 Alexander Protsenko
Specification: sevl
305 1 Alexander Protsenko
### HINT. Unallocated hint
306 9 Alexander Protsenko
Specification: hint
307 8 Alexander Protsenko
308 12 Alexander Protsenko
+Total:+ 7.
309
310 9 Alexander Protsenko
h3. Barriers and CLREX instructions
311 7 Alexander Protsenko
312 9 Alexander Protsenko
### CLREX. Clear Exclusives monitor
313
Specification: clrex
314
### DMB. Data memory barrier
315
Specification: dmb
316
### DSB. Data synchronization barrier
317
Specification: dsb
318
### ISB. Instruction synchronization barrier
319
Specification: isb
320
321 12 Alexander Protsenko
+Total:+ 4.
322
323 9 Alexander Protsenko
h2. Loads and stores
324
325
h3. Load/store register
326 1 Alexander Protsenko
327 11 Alexander Protsenko
### LDR. Load register (immediate offset)
328
Specification: ldr_postindex
329
### STR. Store register (immediate offset)
330
Specification: str_postindex
331
332 12 Alexander Protsenko
+Total:+ 2.
333
334 11 Alexander Protsenko
h3. Load-Exclusive/Store-Exclusive
335
336
### LDXR. Load Exclusive register
337
Specification: ldxr, ldxr_32
338
### LDXRB. Load Exclusive byte
339
Specification: ldxrb_32
340
### LDXRH. Load Exclusive halfword
341
Specification: ldxrh_32
342
### LDXP. Load Exclusive pair
343
Specification: ldxp, ldxp_32
344
### STXR. Store Exclusive register
345
Specification: stxr, stxr_32
346
### STXRB. Store Exclusive byte
347
Specification: stxrb_32
348
### STXRH. Store Exclusive halfword
349
Specification: stxrh_32
350
### STXP. Store Exclusive pair
351
Specification: stxp, stxp_32
352
353 12 Alexander Protsenko
+Total:+ 12.
354
355 11 Alexander Protsenko
h3. Load-Acquire/Store-Release
356
357
*Non-exclusive Load-Acquire and Store-Release instructions*
358
359
### LDAR. Load-Acquire Register
360
Specification: ldar, ldar_32
361
### LDARB. Load-Acquire Byte
362
Specification: ldarb
363
### LDARH. Load-Acquire Halfword
364
Specification: ldarh
365
### STLR. Store-Release Register
366
Specification: stlr, stlr_32
367
### STLRB. Store-Release Byte
368
Specification: stlrb
369
### STLRH. Store-Release Halfword
370
Specification: stlrh
371
372 12 Alexander Protsenko
+Total:+ 8.
373
374 11 Alexander Protsenko
*Exclusive Load-Acquire and Store-Release instructions*
375
376
### LDAXR. Load-Acquire Exclusive register
377
Specification: ldaxr, ldaxr_32
378
### LDAXRB. Load-Acquire Exclusive byte
379
Specification: ldaxrb_32
380
### LDAXRH. Load-Acquire Exclusive halfword
381
Specification: ldaxrh_32
382
### LDAXP. Load-Acquire Exclusive pair
383
Specification: ldaxp, ldaxp_32
384
### STLXR. Store-Release Exclusive register
385
Specification: stlxr, stlxr_32
386
### STLXRB. Store-Release Exclusive byte
387
Specification: stlxrb_32
388
### STLXRH. Store-Release Exclusive halfword
389
Specification: stlxrh_32
390
### STLXP. Store-Release Exclusive pair
391
Specification: stlxp, stlxp_32
392
393
+Total:+ 12.
394 1 Alexander Protsenko
395 10 Alexander Protsenko
h2. Pseudo instructions
396 1 Alexander Protsenko
397 10 Alexander Protsenko
psldr, psldr32
398 12 Alexander Protsenko
399
+Total:+ 2.