aboutsummaryrefslogtreecommitdiff
path: root/target/rx/insns.decode
blob: 232a61fc8edc0a37dedc2febf35d222f97cf4ed9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
#
# Renesas RX instruction decode definitions.
#
# Copyright (c) 2019 Richard Henderson <richard.henderson@linaro.org>
# Copyright (c) 2019 Yoshinori Sato <ysato@users.sourceforge.jp>
#
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation; either
# version 2 of the License, or (at your option) any later version.
#
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, see <http://www.gnu.org/licenses/>.
#

&bcnd		cd dsp sz
&jdsp		dsp sz
&jreg		rs
&rr		rd rs
&ri		rd imm
&rrr		rd rs rs2
&rri		rd imm rs2
&rm		rd rs ld mi
&mi		rs ld mi imm
&mr		rs ld mi rs2
&mcnd		ld sz rd cd
########
%b1_bdsp	24:3 !function=bdsp_s

@b1_bcnd_s	.... cd:1 ...			&bcnd dsp=%b1_bdsp sz=1
@b1_bra_s	.... ....			&jdsp dsp=%b1_bdsp sz=1

%b2_r_0		16:4
%b2_li_2	18:2 !function=li
%b2_li_8	24:2 !function=li
%b2_dsp5_3	23:4 19:1

@b2_rds		.... .... .... rd:4		&rr rs=%b2_r_0
@b2_rds_li	.... .... .... rd:4		&rri rs2=%b2_r_0 imm=%b2_li_8
@b2_rds_uimm4	.... .... imm:4 rd:4		&rri rs2=%b2_r_0
@b2_rs2_uimm4	.... .... imm:4 rs2:4		&rri rd=0
@b2_rds_imm5	.... ... imm:5 rd:4		&rri rs2=%b2_r_0
@b2_rd_rs_li	.... .... rs2:4 rd:4		&rri imm=%b2_li_8
@b2_rd_ld_ub	.... .. ld:2 rs:4 rd:4		&rm mi=4
@b2_ld_imm3	.... .. ld:2 rs:4 . imm:3	&mi mi=4
@b2_bcnd_b	.... cd:4 dsp:s8		&bcnd sz=2
@b2_bra_b	.... .... dsp:s8		&jdsp sz=2

########

%b3_r_0		8:4
%b3_li_10	18:2 !function=li
%b3_dsp5_8	23:1 16:4
%b3_bdsp	8:s8 16:8

@b3_rd_rs	.... .... .... .... rs:4 rd:4		&rr
@b3_rs_rd	.... .... .... .... rd:4 rs:4		&rr
@b3_rd_li	.... .... .... .... .... rd:4 \
		&rri rs2=%b3_r_0 imm=%b3_li_10
@b3_rd_ld	.... .... mi:2 .... ld:2 rs:4 rd:4	&rm
@b3_rd_ld_ub	.... .... .... .. ld:2 rs:4 rd:4	&rm mi=4
@b3_rd_ld_ul	.... .... .... .. ld:2 rs:4 rd:4	&rm mi=2
@b3_rd_rs_rs2	.... .... .... rd:4 rs:4 rs2:4		&rrr
@b3_rds_imm5	.... .... ....... imm:5 rd:4		&rri rs2=%b3_r_0
@b3_rd_rs_imm5	.... .... ... imm:5 rs2:4 rd:4		&rri
@b3_bcnd_w	.... ... cd:1 .... .... .... ....	&bcnd dsp=%b3_bdsp sz=3
@b3_bra_w	.... .... .... .... .... ....		&jdsp dsp=%b3_bdsp sz=3
@b3_ld_rd_rs	.... .... .... .. ld:2 rs:4 rd:4	&rm mi=0
@b3_sz_ld_rd_cd	.... .... .... sz:2 ld:2 rd:4 cd:4	&mcnd

########

%b4_li_18	18:2 !function=li
%b4_dsp_16	0:s8 8:8
%b4_bdsp	0:s8 8:8 16:8

@b4_rd_ldmi	.... .... mi:2 .... ld:2 .... .... rs:4 rd:4	&rm
@b4_bra_a	.... .... .... .... .... .... .... ....	\
		&jdsp dsp=%b4_bdsp sz=4
########
# ABS rd
ABS_rr		0111 1110 0010 ....			@b2_rds
# ABS rs, rd
ABS_rr		1111 1100 0000 1111 .... ....		@b3_rd_rs

# ADC #imm, rd
ADC_ir		1111 1101 0111 ..00 0010 ....		@b3_rd_li
# ADC rs, rd
ADC_rr		1111 1100 0000 1011 .... ....		@b3_rd_rs
# ADC dsp[rs].l, rd
# Note only mi==2 allowed.
ADC_mr		0000 0110 ..10 00.. 0000 0010 .... ....	@b4_rd_ldmi

# ADD #uimm4, rd
ADD_irr		0110 0010 .... ....			@b2_rds_uimm4
# ADD #imm, rs, rd
ADD_irr		0111 00.. .... ....			@b2_rd_rs_li
# ADD dsp[rs].ub, rd
# ADD rs, rd
ADD_mr		0100 10.. .... ....			@b2_rd_ld_ub
# ADD dsp[rs], rd
ADD_mr		0000 0110 ..00 10.. .... ....		@b3_rd_ld
# ADD rs, rs2, rd
ADD_rrr		1111 1111 0010 .... .... ....		@b3_rd_rs_rs2

# AND #uimm4, rd
AND_ir		0110 0100 .... ....			@b2_rds_uimm4
# AND #imm, rd
AND_ir		0111 01.. 0010 ....			@b2_rds_li
# AND dsp[rs].ub, rd
# AND rs, rd
AND_mr		0101 00.. .... ....			@b2_rd_ld_ub
# AND dsp[rs], rd
AND_mr		0000 0110 ..01 00.. .... ....		@b3_rd_ld
# AND rs, rs2, rd
AND_rrr		1111 1111 0100 .... .... ....		@b3_rd_rs_rs2

# BCLR #imm, dsp[rd]
BCLR_im		1111 00.. .... 1...			@b2_ld_imm3
# BCLR #imm, rs
BCLR_ir		0111 101. .... ....			@b2_rds_imm5
# BCLR rs, rd
# BCLR rs, dsp[rd]
{
  BCLR_rr	1111 1100 0110 0111 .... ....		@b3_rs_rd
  BCLR_rm	1111 1100 0110 01.. .... ....		@b3_rd_ld_ub
}

# BCnd.s dsp
BCnd		0001 ....				@b1_bcnd_s
# BRA.b dsp
# BCnd.b dsp
{
  BRA		0010 1110 .... ....			@b2_bra_b
  BCnd		0010 .... .... ....			@b2_bcnd_b
}

# BCnd.w dsp
BCnd		0011 101 . .... .... .... ....		@b3_bcnd_w

# BNOT #imm, dsp[rd]
# BMCnd #imm, dsp[rd]
{
  BNOT_im	1111 1100 111 imm:3 ld:2 rs:4 1111
  BMCnd_im	1111 1100 111 imm:3 ld:2 rd:4 cd:4
}

# BNOT #imm, rd
# BMCnd #imm, rd
{
  BNOT_ir	1111 1101 111 imm:5 1111 rd:4
  BMCnd_ir	1111 1101 111 imm:5 cd:4 rd:4
}

# BNOT rs, rd
# BNOT rs, dsp[rd]
{
  BNOT_rr	1111 1100 0110 1111 .... ....		@b3_rs_rd
  BNOT_rm	1111 1100 0110 11.. .... ....		@b3_rd_ld_ub
}

# BRA.s dsp
BRA		0000 1 ...				@b1_bra_s
# BRA.w dsp
BRA		0011 1000 .... .... .... ....		@b3_bra_w
# BRA.a dsp
BRA		0000 0100 .... .... .... .... .... ....		@b4_bra_a
# BRA.l rs
BRA_l		0111 1111 0100 rd:4

BRK		0000 0000

# BSET #imm, dsp[rd]
BSET_im		1111 00.. .... 0...			@b2_ld_imm3
# BSET #imm, rd
BSET_ir		0111 100. .... ....			@b2_rds_imm5
# BSET rs, rd
# BSET rs, dsp[rd]
{
  BSET_rr	1111 1100 0110 0011 .... ....		@b3_rs_rd
  BSET_rm	1111 1100 0110 00.. .... ....		@b3_rd_ld_ub
}

# BSR.w dsp
BSR		0011 1001 .... .... .... ....		@b3_bra_w
# BSR.a dsp
BSR		0000 0101 .... .... .... .... .... ....		@b4_bra_a
# BSR.l rs
BSR_l		0111 1111 0101 rd:4

# BSET #imm, dsp[rd]
BTST_im		1111 01.. .... 0...			@b2_ld_imm3
# BSET #imm, rd
BTST_ir		0111 110. .... ....			@b2_rds_imm5
# BSET rs, rd
# BSET rs, dsp[rd]
{
  BTST_rr	1111 1100 0110 1011 .... ....		@b3_rs_rd
  BTST_rm	1111 1100 0110 10.. .... ....		@b3_rd_ld_ub
}

# CLRSPW psw
CLRPSW		0111 1111 1011 cb:4

# CMP #uimm4, rs2
CMP_ir		0110 0001 .... ....			@b2_rs2_uimm4
# CMP #uimm8, rs2
CMP_ir		0111 0101 0101 rs2:4 imm:8		&rri rd=0
# CMP #imm, rs2
CMP_ir		0111 01.. 0000 rs2:4			&rri imm=%b2_li_8 rd=0
# CMP dsp[rs].ub, rs2
# CMP rs, rs2
CMP_mr		0100 01.. .... ....			@b2_rd_ld_ub
# CMP dsp[rs], rs2
CMP_mr		0000 0110 ..00 01.. .... ....		@b3_rd_ld

# DIV #imm, rd
DIV_ir		1111 1101 0111 ..00 1000 ....		@b3_rd_li
# DIV dsp[rs].ub, rd
# DIV rs, rd
DIV_mr		1111 1100 0010 00.. .... ....		@b3_rd_ld_ub
# DIV dsp[rs], rd
DIV_mr		0000 0110 ..10 00.. 0000 1000 .... ....	@b4_rd_ldmi

# DIVU #imm, rd
DIVU_ir		1111 1101 0111 ..00 1001 ....		@b3_rd_li
# DIVU dsp[rs].ub, rd
# DIVU rs, rd
DIVU_mr		1111 1100 0010 01.. .... ....		@b3_rd_ld_ub
# DIVU dsp[rs], rd
DIVU_mr		0000 0110 ..10 00.. 0000 1001 .... ....	@b4_rd_ldmi

# EMUL #imm, rd
EMUL_ir		1111 1101 0111 ..00 0110 ....		@b3_rd_li
# EMUL dsp[rs].ub, rd
# EMUL rs, rd
EMUL_mr		1111 1100 0001 10.. .... ....		@b3_rd_ld_ub
# EMUL dsp[rs], rd
EMUL_mr		0000 0110 ..10 00.. 0000 0110 .... ....	@b4_rd_ldmi

# EMULU #imm, rd
EMULU_ir	1111 1101 0111 ..00 0111 ....		@b3_rd_li
# EMULU dsp[rs].ub, rd
# EMULU rs, rd
EMULU_mr	1111 1100 0001 11.. .... ....		@b3_rd_ld_ub
# EMULU dsp[rs], rd
EMULU_mr	0000 0110 ..10 00.. 0000 0111 .... ....	@b4_rd_ldmi

# FADD #imm, rd
FADD_ir		1111 1101 0111 0010 0010 rd:4
# FADD rs, rd
# FADD dsp[rs], rd
FADD_mr		1111 1100 1000 10.. .... ....		@b3_rd_ld_ul

# FCMP #imm, rd
FCMP_ir		1111 1101 0111 0010 0001 rd:4
# FCMP rs, rd
# FCMP dsp[rs], rd
FCMP_mr		1111 1100 1000 01.. .... ....		@b3_rd_ld_ul

# FDIV #imm, rd
FDIV_ir		1111 1101 0111 0010 0100 rd:4
# FDIV rs, rd
# FDIV dsp[rs], rd
FDIV_mr		1111 1100 1001 00.. .... ....		@b3_rd_ld_ul

# FMUL #imm, rd
FMUL_ir		1111 1101 0111 0010 0011 rd:4
# FMUL rs, rd
# FMUL dsp[rs], rd
FMUL_mr		1111 1100 1000 11.. .... ....		@b3_rd_ld_ul

# FSUB #imm, rd
FSUB_ir		1111 1101 0111 0010 0000 rd:4
# FSUB rs, rd
# FSUB dsp[rs], rd
FSUB_mr		1111 1100 1000 00.. .... ....		@b3_rd_ld_ul

# FTOI rs, rd
# FTOI dsp[rs], rd
FTOI		1111 1100 1001 01.. .... ....		@b3_rd_ld_ul

# INT #uimm8
INT		0111 0101 0110 0000 imm:8

# ITOF dsp[rs].ub, rd
# ITOF rs, rd
ITOF		1111 1100 0100 01.. .... ....		@b3_rd_ld_ub
# ITOF dsp[rs], rd
ITOF		0000 0110 ..10 00.. 0001 0001 .... ....	@b4_rd_ldmi

# JMP rs
JMP		0111 1111 0000 rs:4			&jreg
# JSR rs
JSR		0111 1111 0001 rs:4			&jreg

# MACHI rs, rs2
MACHI		1111 1101 0000 0100 rs:4 rs2:4
# MACLO rs, rs2
MACLO		1111 1101 0000 0101 rs:4 rs2:4

# MAX #imm, rd
MAX_ir		1111 1101 0111 ..00 0100 ....		@b3_rd_li
# MAX dsp[rs].ub, rd
# MAX rs, rd
MAX_mr		1111 1100 0001 00.. .... ....		@b3_rd_ld_ub
# MAX dsp[rs], rd
MAX_mr		0000 0110 ..10 00.. 0000 0100 .... ....	@b4_rd_ldmi

# MIN #imm, rd
MIN_ir		1111 1101 0111 ..00 0101 ....		@b3_rd_li
# MIN dsp[rs].ub, rd
# MIN rs, rd
MIN_mr		1111 1100 0001 01.. .... ....		@b3_rd_ld_ub
# MIN dsp[rs], rd
MIN_mr		0000 0110 ..10 00.. 0000 0101 .... ....	@b4_rd_ldmi

# MOV.b rs, dsp5[rd]
MOV_rm		1000 0 .... rd:3 . rs:3			dsp=%b2_dsp5_3 sz=0
# MOV.w rs, dsp5[rd]
MOV_rm		1001 0 .... rd:3 . rs:3			dsp=%b2_dsp5_3 sz=1
# MOV.l rs, dsp5[rd]
MOV_rm		1010 0 .... rd:3 . rs:3			dsp=%b2_dsp5_3 sz=2
# MOV.b dsp5[rs], rd
MOV_mr		1000 1 .... rs:3 . rd:3			dsp=%b2_dsp5_3 sz=0
# MOV.w dsp5[rs], rd
MOV_mr		1001 1 .... rs:3 . rd:3			dsp=%b2_dsp5_3 sz=1
# MOV.l dsp5[rs], rd
MOV_mr		1010 1 .... rs:3 . rd:3			dsp=%b2_dsp5_3 sz=2
# MOV.l #uimm4, rd
MOV_ir		0110 0110 imm:4 rd:4
# MOV.b #imm8, dsp5[rd]
MOV_im		0011 1100 . rd:3 .... imm:8		sz=0 dsp=%b3_dsp5_8
# MOV.w #imm8, dsp5[rd]
MOV_im		0011 1101 . rd:3 .... imm:8		sz=1 dsp=%b3_dsp5_8
# MOV.l #imm8, dsp5[rd]
MOV_im		0011 1110 . rd:3 .... imm:8		sz=2 dsp=%b3_dsp5_8
# MOV.l #imm8, rd
MOV_ir		0111 0101 0100 rd:4 imm:8
# MOV.l #mm8, rd
MOV_ir		1111 1011 rd:4 .. 10			imm=%b2_li_2
# MOV.<bwl> #imm, [rd]
MOV_im		1111 1000 rd:4 .. sz:2			dsp=0 imm=%b2_li_2
# MOV.<bwl> #imm, dsp8[rd]
MOV_im		1111 1001 rd:4 .. sz:2 dsp:8		imm=%b3_li_10
# MOV.<bwl> #imm, dsp16[rd]
MOV_im		1111 1010 rd:4 .. sz:2 .... .... .... .... \
		imm=%b4_li_18 dsp=%b4_dsp_16
# MOV.<bwl> [ri,rb], rd
MOV_ar		1111 1110 01 sz:2 ri:4 rb:4 rd:4
# MOV.<bwl> rs, [ri,rb]
MOV_ra		1111 1110 00 sz:2 ri:4 rb:4 rs:4
# Note ldd=3 and lds=3 indicate register src or dst
# MOV.b rs, rd
# MOV.b rs, dsp[rd]
# MOV.b dsp[rs], rd
# MOV.b dsp[rs], dsp[rd]
MOV_mm		1100 ldd:2 lds:2 rs:4 rd:4		sz=0
# MOV.w rs, rd
# MOV.w rs, dsp[rd]
# MOV.w dsp[rs], rd
# MOV.w dsp[rs], dsp[rd]
MOV_mm		1101 ldd:2 lds:2 rs:4 rd:4		sz=1
# MOV.l rs, rd
# MOV.l rs, dsp[rd]
# MOV.l dsp[rs], rd
# MOV.l dsp[rs], dsp[rd]
MOV_mm		1110 ldd:2 lds:2 rs:4 rd:4		sz=2
# MOV.l rs, [rd+]
# MOV.l rs, [-rd]
MOV_rp		1111 1101 0010 0 ad:1 sz:2 rd:4 rs:4
# MOV.l [rs+], rd
# MOV.l [-rs], rd
MOV_pr		1111 1101 0010 1 ad:1 sz:2 rd:4 rs:4

# MOVU.<bw> dsp5[rs], rd
MOVU_mr		1011 sz:1 ... . rs:3 . rd:3		dsp=%b2_dsp5_3
# MOVU.<bw> [rs], rd
MOVU_mr		0101 1 sz:1 00 rs:4 rd:4		dsp=0
# MOVU.<bw> dsp8[rs], rd
MOVU_mr		0101 1 sz:1 01 rs:4 rd:4 dsp:8
# MOVU.<bw> dsp16[rs], rd
MOVU_mr		0101 1 sz:1 10 rs:4 rd:4 .... .... .... .... dsp=%b4_dsp_16
# MOVU.<bw> rs, rd
MOVU_rr		0101 1 sz:1 11 rs:4 rd:4
# MOVU.<bw> [ri, rb], rd
MOVU_ar		1111 1110 110 sz:1 ri:4 rb:4 rd:4
# MOVU.<bw> [rs+], rd
MOVU_pr		1111 1101 0011 1 ad:1 0 sz:1 rd:4 rs:4

# MUL #uimm4, rd
MUL_ir		0110 0011 .... ....			@b2_rds_uimm4
# MUL #imm4, rd
MUL_ir		0111 01.. 0001 ....			@b2_rds_li
# MUL dsp[rs].ub, rd
# MUL rs, rd
MUL_mr		0100 11.. .... ....			@b2_rd_ld_ub
# MUL dsp[rs], rd
MUL_mr		0000 0110 ..00 11.. .... ....		@b3_rd_ld
# MOV rs, rs2, rd
MUL_rrr		1111 1111 0011 .... .... ....		@b3_rd_rs_rs2

# MULHI rs, rs2
MULHI		1111 1101 0000 0000 rs:4 rs2:4
# MULLO rs, rs2
MULLO		1111 1101 0000 0001 rs:4 rs2:4

# MVFACHI rd
MVFACHI		1111 1101 0001 1111 0000 rd:4
# MVFACMI rd
MVFACMI		1111 1101 0001 1111 0010 rd:4

# MVFC cr, rd
MVFC		1111 1101 0110 1010 cr:4 rd:4

# MVTACHI rs
MVTACHI		1111 1101 0001 0111 0000 rs:4
# MVTACLO rs
MVTACLO		1111 1101 0001 0111 0001 rs:4

# MVTC #imm, cr
MVTC_i		1111 1101 0111 ..11 0000 cr:4		imm=%b3_li_10
# MVTC rs, cr
MVTC_r		1111 1101 0110 1000 rs:4 cr:4

# MVTIPL #imm
MVTIPL		0111 0101 0111 0000 0000 imm:4

# NEG rd
NEG_rr		0111 1110 0001 ....			@b2_rds
# NEG rs, rd
NEG_rr		1111 1100 0000 0111 .... ....		@b3_rd_rs

NOP		0000 0011

# NOT rd
NOT_rr		0111 1110 0000 ....			@b2_rds
# NOT rs, rd
NOT_rr		1111 1100 0011 1011 .... ....		@b3_rd_rs

# OR #uimm4, rd
OR_ir		0110 0101 .... ....			@b2_rds_uimm4
# OR #imm, rd
OR_ir		0111 01.. 0011 ....			@b2_rds_li
# OR dsp[rs].ub, rd
# OR rs, rd
OR_mr		0101 01.. .... ....			@b2_rd_ld_ub
# OR dsp[rs], rd
OR_mr		0000 0110 .. 0101 .. .... ....		@b3_rd_ld
# OR rs, rs2, rd
OR_rrr		1111 1111 0101 .... .... ....		@b3_rd_rs_rs2

# POP cr
POPC		0111 1110 1110 cr:4
# POP rd-rd2
POPM		0110 1111 rd:4 rd2:4

# POP rd
# PUSH.<bwl> rs
{
  POP		0111 1110 1011 rd:4
  PUSH_r	0111 1110 10 sz:2 rs:4
}
# PUSH.<bwl> dsp[rs]
PUSH_m		1111 01 ld:2 rs:4 10 sz:2
# PUSH cr
PUSHC		0111 1110 1100 cr:4
# PUSHM rs-rs2
PUSHM		0110 1110 rs:4 rs2:4

# RACW #imm
RACW		1111 1101 0001 1000 000 imm:1 0000

# REVL rs,rd
REVL		1111 1101 0110 0111 .... ....		@b3_rd_rs
# REVW rs,rd
REVW		1111 1101 0110 0101 .... ....		@b3_rd_rs

# SMOVF
# RPMA.<bwl>
{
  SMOVF		0111 1111 1000 1111
  RMPA		0111 1111 1000 11 sz:2
}

# ROLC rd
ROLC		0111 1110 0101 ....			@b2_rds
# RORC rd
RORC		0111 1110 0100 ....			@b2_rds

# ROTL #imm, rd
ROTL_ir		1111 1101 0110 111. .... ....		@b3_rds_imm5
# ROTL rs, rd
ROTL_rr		1111 1101 0110 0110 .... ....		@b3_rd_rs

# ROTR #imm, rd
ROTR_ir		1111 1101 0110 110. .... ....		@b3_rds_imm5
# ROTR #imm, rd
ROTR_rr		1111 1101 0110 0100 .... ....		@b3_rd_rs

# ROUND rs,rd
# ROUND dsp[rs],rd
ROUND		1111 1100 1001 10 .. .... ....		@b3_ld_rd_rs

RTE		0111 1111 1001 0101

RTFI		0111 1111 1001 0100

RTS		0000 0010

# RTSD #imm
RTSD_i		0110 0111 imm:8
# RTSD #imm, rd-rd2
RTSD_irr	0011 1111 rd:4 rd2:4 imm:8

# SAT rd
SAT		0111 1110 0011 ....			@b2_rds
# SATR
SATR		0111 1111 1001 0011

# SBB rs, rd
SBB_rr		1111 1100 0000 0011 .... ....		@b3_rd_rs
# SBB dsp[rs].l, rd
# Note only mi==2 allowed.
SBB_mr		0000 0110 ..10 00.. 0000 0000 .... ....	@b4_rd_ldmi

# SCCnd dsp[rd]
# SCCnd rd
SCCnd		1111 1100 1101 .... .... ....		@b3_sz_ld_rd_cd

# SETPSW psw
SETPSW		0111 1111 1010 cb:4

# SHAR #imm, rd
SHAR_irr	0110 101. .... ....			@b2_rds_imm5
# SHAR #imm, rs, rd
SHAR_irr	1111 1101 101. .... .... ....		@b3_rd_rs_imm5
# SHAR rs, rd
SHAR_rr		1111 1101 0110 0001 .... ....		@b3_rd_rs

# SHLL #imm, rd
SHLL_irr	0110 110. .... ....			@b2_rds_imm5
# SHLL #imm, rs, rd
SHLL_irr	1111 1101 110. .... .... ....		@b3_rd_rs_imm5
# SHLL rs, rd
SHLL_rr		1111 1101 0110 0010 .... ....		@b3_rd_rs

# SHLR #imm, rd
SHLR_irr	0110 100. .... ....			@b2_rds_imm5
# SHLR #imm, rs, rd
SHLR_irr	1111 1101 100. .... .... ....		@b3_rd_rs_imm5
# SHLR rs, rd
SHLR_rr		1111 1101 0110 0000 .... ....		@b3_rd_rs

# SMOVB
# SSTR.<bwl>
{
  SMOVB		0111 1111 1000 1011
  SSTR		0111 1111 1000 10 sz:2
}

# STNZ #imm, rd
STNZ		1111 1101 0111 ..00 1111 ....		@b3_rd_li
# STZ #imm, rd
STZ		1111 1101 0111 ..00 1110 ....		@b3_rd_li

# SUB #uimm4, rd
SUB_ir		0110 0000 .... ....			@b2_rds_uimm4
# SUB dsp[rs].ub, rd
# SUB rs, rd
SUB_mr		0100 00.. .... ....			@b2_rd_ld_ub
# SUB dsp[rs], rd
SUB_mr		0000 0110 ..00 00.. .... ....		@b3_rd_ld
# SUB rs, rs2, rd
SUB_rrr		1111 1111 0000 .... .... ....		@b3_rd_rs_rs2

# SCMPU
# SUNTIL.<bwl>
{
  SCMPU		0111 1111 1000 0011
  SUNTIL	0111 1111 1000 00 sz:2
}

# SMOVU
# SWHILE.<bwl>
{
  SMOVU		0111 1111 1000 0111
  SWHILE	0111 1111 1000 01 sz:2
}

# TST #imm, rd
TST_ir		1111 1101 0111 ..00 1100 ....		@b3_rd_li
# TST dsp[rs].ub, rd
# TST rs, rd
TST_mr		1111 1100 0011 00.. .... ....		@b3_rd_ld_ub
# TST dsp[rs], rd
TST_mr		0000 0110 ..10 00.. 0000 1100 .... .... @b4_rd_ldmi

WAIT		0111 1111 1001 0110

# XCHG rs, rd
# XCHG dsp[rs].ub, rd
{
  XCHG_rr		1111 1100 0100 0011 .... ....		@b3_rd_rs
  XCHG_mr		1111 1100 0100 00.. .... ....		@b3_rd_ld_ub
}
# XCHG dsp[rs], rd
XCHG_mr		0000 0110 ..10 00.. 0001 0000 .... ....	@b4_rd_ldmi

# XOR #imm, rd
XOR_ir		1111 1101 0111 ..00 1101 ....		@b3_rd_li
# XOR dsp[rs].ub, rd
# XOR rs, rd
XOR_mr		1111 1100 0011 01.. .... ....		@b3_rd_ld_ub
# XOR dsp[rs], rd
XOR_mr		0000 0110 ..10 00.. 0000 1101 .... ....	@b4_rd_ldmi