blob: 97a7eef41277185206a1341da76b616355e3624d (
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
|
# format of a line in this file:
# <instruction name> <opcode> <args>
#
# <opcode> is given by specifying one or more range/value pairs:
# highbit..lowbit=value (e.g. 31..25=0x45 14..12=0x0)
#
# <args> is one of ra, rb, rc, rd, imm, imm20, imm27, shamt, shamtw
unimp 31..0=0
j 31..27=0x18 imm27 # opcodes 0x60-0x64
jal 31..27=0x19 imm27 # opcodes 0x64-0x68
lui 31..25=0x71 ra imm20
beq 31..25=0x73 14..12=0 ra rb imm
bne 31..25=0x73 14..12=1 ra rb imm
blt 31..25=0x73 14..12=2 ra rb imm
bltu 31..25=0x73 14..12=3 ra rb imm
ble 31..25=0x73 14..12=4 ra rb imm
bleu 31..25=0x73 14..12=5 ra rb imm
addi 31..25=0x74 14..12=0 ra rb imm
addiw 31..25=0x74 14..12=1 ra rb imm
slei 31..25=0x74 14..12=2 ra rb imm
sleiu 31..25=0x74 14..12=3 ra rb imm
andi 31..25=0x74 14..12=4 ra rb imm
ori 31..25=0x74 14..12=5 ra rb imm
xori 31..25=0x74 14..12=6 ra rb imm
add 31..25=0x75 14..12=0 11..5=0 rc rb ra
sub 31..25=0x75 14..12=0 11..5=1 rc rb ra
slt 31..25=0x75 14..12=0 11..5=2 rc rb ra
sltu 31..25=0x75 14..12=0 11..5=3 rc rb ra
and 31..25=0x75 14..12=0 11..5=4 rc rb ra
or 31..25=0x75 14..12=0 11..5=5 rc rb ra
xor 31..25=0x75 14..12=0 11..5=6 rc rb ra
nor 31..25=0x75 14..12=0 11..5=7 rc rb ra
mul 31..25=0x75 14..12=1 11..5=0 rc rb ra
mulh 31..25=0x75 14..12=1 11..5=2 rc rb ra
mulhu 31..25=0x75 14..12=1 11..5=3 rc rb ra
div 31..25=0x75 14..12=1 11..5=4 rc rb ra
divu 31..25=0x75 14..12=1 11..5=5 rc rb ra
rem 31..25=0x75 14..12=1 11..5=6 rc rb ra
remu 31..25=0x75 14..12=1 11..5=7 rc rb ra
sllv 31..25=0x75 14..12=4 11..5=1 rc rb ra
srlv 31..25=0x75 14..12=4 11..5=2 rc rb ra
srav 31..25=0x75 14..12=4 11..5=3 rc rb ra
sll 31..25=0x75 14..12=5 11=0 24..20=0 rc rb shamt
srl 31..25=0x75 14..12=6 11=0 24..20=0 rc rb shamt
sra 31..25=0x75 14..12=7 11=0 24..20=0 rc rb shamt
addw 31..25=0x76 14..12=0 11..5=0 rc rb ra
subw 31..25=0x76 14..12=0 11..5=1 rc rb ra
mulw 31..25=0x76 14..12=1 11..5=0 rc rb ra
mulhw 31..25=0x76 14..12=1 11..5=2 rc rb ra
mulhuw 31..25=0x76 14..12=1 11..5=3 rc rb ra
divw 31..25=0x76 14..12=1 11..5=4 rc rb ra
divuw 31..25=0x76 14..12=1 11..5=5 rc rb ra
remw 31..25=0x76 14..12=1 11..5=6 rc rb ra
remuw 31..25=0x76 14..12=1 11..5=7 rc rb ra
sllvw 31..25=0x76 14..12=4 11..5=1 rc rb ra
srlvw 31..25=0x76 14..12=4 11..5=2 rc rb ra
sravw 31..25=0x76 14..12=4 11..5=3 rc rb ra
sllw 31..25=0x76 14..12=5 11..10=0 24..20=0 rc rb shamtw
srlw 31..25=0x76 14..12=6 11..10=0 24..20=0 rc rb shamtw
sraw 31..25=0x76 14..12=7 11..10=0 24..20=0 rc rb shamtw
lb 31..25=0x78 14..12=0 rb ra imm
lh 31..25=0x78 14..12=1 rb ra imm
lw 31..25=0x78 14..12=2 rb ra imm
ld 31..25=0x78 14..12=3 rb ra imm
lbu 31..25=0x78 14..12=4 rb ra imm
lhu 31..25=0x78 14..12=5 rb ra imm
lwu 31..25=0x78 14..12=6 rb ra imm
synci 31..25=0x78 14..12=7 24..20=0 rb imm
sb 31..25=0x79 14..12=0 rb ra imm
sh 31..25=0x79 14..12=1 rb ra imm
sw 31..25=0x79 14..12=2 rb ra imm
sd 31..25=0x79 14..12=3 rb ra imm
amow.add 31..25=0x7A 14..12=2 11..5=0 rc rb ra
amow.swap 31..25=0x7A 14..12=2 11..5=1 rc rb ra
amow.and 31..25=0x7A 14..12=2 11..5=2 rc rb ra
amow.or 31..25=0x7A 14..12=2 11..5=3 rc rb ra
amow.min 31..25=0x7A 14..12=2 11..5=4 rc rb ra
amow.max 31..25=0x7A 14..12=2 11..5=5 rc rb ra
amow.minu 31..25=0x7A 14..12=2 11..5=6 rc rb ra
amow.maxu 31..25=0x7A 14..12=2 11..5=7 rc rb ra
amo.add 31..25=0x7A 14..12=3 11..5=0 rc rb ra
amo.swap 31..25=0x7A 14..12=3 11..5=1 rc rb ra
amo.and 31..25=0x7A 14..12=3 11..5=2 rc rb ra
amo.or 31..25=0x7A 14..12=3 11..5=3 rc rb ra
amo.min 31..25=0x7A 14..12=3 11..5=4 rc rb ra
amo.max 31..25=0x7A 14..12=3 11..5=5 rc rb ra
amo.minu 31..25=0x7A 14..12=3 11..5=6 rc rb ra
amo.maxu 31..25=0x7A 14..12=3 11..5=7 rc rb ra
jalr.c 31..25=0x7B 19..15=0 14..12=0 11..5=0 ra rc
jalr.r 31..25=0x7B 19..15=0 14..12=0 11..5=1 ra rc
jalr.j 31..25=0x7B 19..15=0 14..12=0 11..5=2 ra rc
rdpc 31..25=0x7B 24..15=0 14..12=1 11..5=0 rc
mfcr 31..25=0x7B 24..20=0 14..12=2 11..5=0 rc rb
mtcr 31..25=0x7B 14..12=3 11..0=0 ra rb
sync 31..25=0x7B 24..15=0 14..12=4 11..0=0
syscall 31..25=0x7B 24..15=0 14..12=5 11..0=0
break 31..25=0x7B 24..15=0 14..12=6 11..0=0
ei 31..25=0x7E 14..12=0 24..15=0 11..5=0 rc
di 31..25=0x7E 14..12=1 24..15=0 11..5=0 rc
eret 31..25=0x7E 14..12=2 24..15=0 11..0=0
mfpcr 31..25=0x7E 14..12=4 24..20=0 11..5=0 rc rb
mtpcr 31..25=0x7E 14..12=5 11..0=0 ra rb
# 0x7F is reserved for 64-bit-long instructions
add.s 31..25=0x68 14..12=0 11..10=0 9..5=0 rc rb ra
sub.s 31..25=0x68 14..12=0 11..10=0 9..5=1 rc rb ra
mul.s 31..25=0x68 14..12=0 11..10=0 9..5=2 rc rb ra
div.s 31..25=0x68 14..12=0 11..10=0 9..5=3 rc rb ra
sqrt.s 31..25=0x68 14..12=0 11..10=0 9..5=4 19..15=0 rc ra
sgninj.s 31..25=0x68 14..12=0 11..10=0 9..5=5 rc rb ra
sgninjn.s 31..25=0x68 14..12=0 11..10=0 9..5=6 rc rb ra
sgnmul.s 31..25=0x68 14..12=0 11..10=0 9..5=7 rc rb ra
add.d 31..25=0x68 14..12=0 11..10=3 9..5=0 rc rb ra
sub.d 31..25=0x68 14..12=0 11..10=3 9..5=1 rc rb ra
mul.d 31..25=0x68 14..12=0 11..10=3 9..5=2 rc rb ra
div.d 31..25=0x68 14..12=0 11..10=3 9..5=3 rc rb ra
sqrt.d 31..25=0x68 14..12=0 11..10=3 9..5=4 19..15=0 rc ra
sgninj.d 31..25=0x68 14..12=0 11..10=3 9..5=5 rc rb ra
sgninjn.d 31..25=0x68 14..12=0 11..10=3 9..5=6 rc rb ra
sgnmul.d 31..25=0x68 14..12=0 11..10=3 9..5=7 rc rb ra
trunc.l.s 31..25=0x68 14..12=1 11..10=0 9..5=0 19..15=0 rc ra
truncu.l.s 31..25=0x68 14..12=1 11..10=0 9..5=1 19..15=0 rc ra
trunc.w.s 31..25=0x68 14..12=1 11..10=0 9..5=2 19..15=0 rc ra
truncu.w.s 31..25=0x68 14..12=1 11..10=0 9..5=3 19..15=0 rc ra
trunc.l.d 31..25=0x68 14..12=1 11..10=3 9..5=0 19..15=0 rc ra
truncu.l.d 31..25=0x68 14..12=1 11..10=3 9..5=1 19..15=0 rc ra
trunc.w.d 31..25=0x68 14..12=1 11..10=3 9..5=2 19..15=0 rc ra
truncu.w.d 31..25=0x68 14..12=1 11..10=3 9..5=3 19..15=0 rc ra
cvt.s.l 31..25=0x68 14..12=1 11..10=0 9..5=4 19..15=0 rc ra
cvtu.s.l 31..25=0x68 14..12=1 11..10=0 9..5=5 19..15=0 rc ra
cvt.s.w 31..25=0x68 14..12=1 11..10=0 9..5=6 19..15=0 rc ra
cvtu.s.w 31..25=0x68 14..12=1 11..10=0 9..5=7 19..15=0 rc ra
cvt.d.l 31..25=0x68 14..12=1 11..10=3 9..5=4 19..15=0 rc ra
cvtu.d.l 31..25=0x68 14..12=1 11..10=3 9..5=5 19..15=0 rc ra
cvt.d.w 31..25=0x68 14..12=1 11..10=3 9..5=6 19..15=0 rc ra
cvtu.d.w 31..25=0x68 14..12=1 11..10=3 9..5=7 19..15=0 rc ra
cvt.s.d 31..25=0x68 14..12=1 11..10=0 9..5=0x13 19..15=0 rc ra
cvt.d.s 31..25=0x68 14..12=1 11..10=3 9..5=0x10 19..15=0 rc ra
c.eq.s 31..25=0x68 14..12=2 11..10=0 9..5=1 rc ra rb
c.lt.s 31..25=0x68 14..12=2 11..10=0 9..5=2 rc ra rb
c.le.s 31..25=0x68 14..12=2 11..10=0 9..5=3 rc ra rb
c.eq.d 31..25=0x68 14..12=2 11..10=3 9..5=1 rc ra rb
c.lt.d 31..25=0x68 14..12=2 11..10=3 9..5=2 rc ra rb
c.le.d 31..25=0x68 14..12=2 11..10=3 9..5=3 rc ra rb
madd.s 31..25=0x68 14..12=4 11..10=0 rc rb ra rd
msub.s 31..25=0x68 14..12=5 11..10=0 rc rb ra rd
nmadd.s 31..25=0x68 14..12=6 11..10=0 rc rb ra rd
nmsub.s 31..25=0x68 14..12=7 11..10=0 rc rb ra rd
madd.d 31..25=0x68 14..12=4 11..10=3 rc rb ra rd
msub.d 31..25=0x68 14..12=5 11..10=3 rc rb ra rd
nmadd.d 31..25=0x68 14..12=6 11..10=3 rc rb ra rd
nmsub.d 31..25=0x68 14..12=7 11..10=3 rc rb ra rd
l.s 31..25=0x69 14..12=2 rb ra imm
l.d 31..25=0x69 14..12=3 rb ra imm
s.s 31..25=0x69 14..12=6 rb ra imm
s.d 31..25=0x69 14..12=7 rb ra imm
mff.s 31..25=0x6A 19..15=0 14..12=0 11..5=0 ra rc
mff.d 31..25=0x6A 19..15=0 14..12=1 11..5=0 ra rc
mtf.s 31..25=0x6A 19..15=0 14..12=4 11..5=0 ra rc
mtf.d 31..25=0x6A 19..15=0 14..12=5 11..5=0 ra rc
|