1	.macro RegReg insn
2	\insn	r31, r0, r0
3	\insn	r0, r31, r0
4	\insn	r0, r0, r31
5	\insn	r1, r2, r3
6	.endm
7
8	.macro RegImm insn
9	\insn	r0, r0, 0
10	\insn	r0, r0, -32768
11	\insn	r0, r0, 32767
12	\insn	r0, r31, 0
13	\insn 	r0, r31, -32768
14	\insn	r0, r31, 32767
15	\insn	r31, r0, 0
16	\insn	r31, r0, -32768
17	\insn	r31, r0, 32767
18	.endm
19
20	.macro RegUImm insn
21	\insn	r0, r0, 0
22	\insn	r0, r0, 65535
23	\insn	r0, r31, 0
24	\insn	r0, r31, 65535
25	\insn	r31, r0, 0
26	\insn	r31, r0, 65535
27	.endm
28
29	RegReg 	add
30	RegImm 	addi
31	RegReg 	and
32	RegUImm andi
33	RegUImm	andhi
34
35	andhi	r0, r0, hi(0x0000ffff)
36	andhi	r0, r0, hi(0xffff0000)
37
38	bi	label
39	b	r0
40	b	r31
41
42	be	r0, r0, label
43	be	r1, r2, label
44	bg	r0, r0, label
45	bg	r1, r2, label
46	bge	r0, r0, label
47	bge	r1, r2, label
48	bgeu	r0, r0, label
49	bgeu	r1, r2, label
50	bgu	r0, r0, label
51	bgu	r1, r2, label
52	bne	r0, r0, label
53	bne	r1, r2, label
54
55	calli	label
56	call	r0
57	call	r31
58
59	RegReg	cmpe
60	RegImm	cmpei
61	RegReg	cmpg
62	RegImm	cmpgi
63	RegReg	cmpge
64	RegImm	cmpgei
65	RegReg	cmpgeu
66	RegUImm	cmpgeui
67	RegReg	cmpgu
68	RegUImm	cmpgui
69	RegReg	cmpne
70	RegImm	cmpnei
71
72	RegReg	divu
73	RegReg	modu
74	RegReg	mul
75	RegImm	muli
76
77	RegReg	nor
78	RegUImm	nori
79	RegReg	or
80	RegUImm	ori
81	ori	r0, r0, lo(0xffff0000)
82	ori	r0, r0, lo(0x0000ffff)
83	RegUImm	orhi
84	orhi	r0, r0, hi(0x0000ffff)
85	orhi	r0, r0, hi(0xffff0000)
86
87	RegReg	sl
88	RegReg	sr
89	RegReg	sru
90
91	sli	r0, r0, 0
92	sli	r0, r0, 31
93	sri	r0, r0, 0
94	sri	r0, r0, 31
95	srui	r0, r0, 0
96	srui	r0, r0, 31
97
98	RegReg	sub
99
100	RegReg	xnor
101	RegUImm	xnori
102	RegReg	xor
103	RegUImm	xori
104
105        sextb   r0, r0
106        sextb   r31, r0
107        sextb   r0, r31
108        sextb   r2, r1
109        sexth   r0, r0
110        sexth   r31, r0
111        sexth   r0, r31
112        sexth   r2, r1
113
114	lb	r0, (r0+0)
115	lb	r1, (r2+3)
116	lbu	r0, (r0+0)
117 	lbu 	r1, (r2+3)
118	lh	r0, (r0+0)
119	lh	r1, (r2+3)
120	lhu	r0, (r0+0)
121	lhu 	r1, (r2+3)
122	lw	r0, (r0+0)
123	lw	r1, (r2+3)
124	sb	(r0+0), r0
125	sb	(r1+2), r3
126	sh	(r0+0), r0
127	sh	(r1+2), r3
128	sw	(r0+0), r0
129	sw	(r1+2), r3
130
131	break
132        scall
133
134	eret
135 	bret
136
137	ret
138 	mvi	r0, 0
139	mv	r0, r0
140	mvhi   r0, 0
141	mvhi   r0, hi(0)
142	not	r0, r0
143