#
# 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
