5 0x232f2e2f, 0x242c2b2b, 0x252a2e2b, 0x262d2d2a,
6 0x3f343f3e, 0x3e353d3c, 0x363a3c3b, 0x3b373b3a,
7 0x454f4e45, 0x4e464d46, 0x474d474c, 0x4a484a4c
10 unsigned int mem1
[] = {
17 unsigned int mem2
[] = {
18 0x0000e680, 0x00010700, 0x0000e7dc, 0x0000b0d0,
19 0x2ab05fd0, 0x0000b6a0, 0x0000be80, 0x0000de10,
20 0x0000df20, 0x2ab05fe0, 0x0000dfd0, 0x00010300
23 #define TESTINST1(instruction, RTval, offset, RT, RS) \
26 __asm__ __volatile__( \
27 "move $"#RS", %1" "\n\t" \
28 "li $"#RT", "#RTval "\n\t" \
30 "lw %0, "#offset"($"#RS")" "\n\t" \
32 : "r" (mem1), "r" (RTval) \
35 printf("%s :: RTval: 0x%x, out: 0x%x\n", \
36 instruction, RTval, out); \
38 __asm__ __volatile__( \
39 "move $"#RS", %1" "\n\t" \
40 "li $"#RT", " #RTval "\n\t" \
42 "lw %0, "#offset"($"#RS")" "\n\t" \
44 : "r" (mem), "r" (RTval) \
47 printf("%s :: RTval: 0x%x, out: 0x%x\n", \
48 instruction, RTval, out); \
53 #if (__mips_isa_rev < 6)
54 #define TESTINSTsw(RTval, offset, RT, RS) \
57 __asm__ __volatile__( \
58 "move $"#RS", %1" "\n\t" \
59 "daddiu $"#RS", $"#RS", "#offset "\n\t" \
60 "li $"#RT", "#RTval "\n\t" \
61 "swl $t0, 3($t1)" "\n\t" \
62 "swr $t0, 0($t1)" "\n\t" \
63 "lw %0, 0($"#RS")" "\n\t" \
65 : "r" (mem2), "r" (RTval) \
68 printf("swl $t0, 3($t1)\nswr $t0, 0($t1)\n :: RTval: 0x%x, out: 0x%x\n", \
73 void ppMem(unsigned int* m
, int len
)
77 for (i
= 0; i
< len
; i
+= 4) {
78 printf("0x%x, 0x%x, 0x%x, 0x%x\n", m
[i
], m
[i
+1], m
[i
+2], m
[i
+3]);
92 void ppMem1(unsigned int* m
, int len
)
96 for (i
= 0; i
< len
; i
+= 4) {
97 printf("0x%x, 0x%x, 0x%x, 0x%x\n", m
[i
], m
[i
+1], m
[i
+2], m
[i
+3]);
117 void ppMem2(unsigned int* m
, int len
)
121 for (i
= 0; i
< len
; i
=i
+4) {
122 printf("0x%x, 0x%x, 0x%x, 0x%x\n", m
[i
], m
[i
+1], m
[i
+2], m
[i
+3]);
142 TESTINST1("sb $t0, 3($t1)", 0, 3, t0
, t1
);
143 TESTINST1("sb $t0, 5($t1)", 0x31415927, 5, t0
, t1
);
144 TESTINST1("sb $t0, 7($t1)", 0x7fffffff, 7, t0
, t1
);
145 TESTINST1("sb $t0, 1($t1)", 0x80000000, 1, t0
, t1
);
146 TESTINST1("sb $t0, 2($t1)", 0x80000000, 2, t0
, t1
);
147 TESTINST1("sb $t0, 6($t1)", 0x7fffffff, 6, t0
, t1
);
148 TESTINST1("sb $t0, 11($t1)", 0x7fffffff, 11, t0
, t1
);
149 TESTINST1("sb $t0, 8($t1)", -1, 8, t0
, t1
);
150 TESTINST1("sb $t0, 0($t1)", 0x31415927, 0, t0
, t1
);
151 TESTINST1("sb $t0, 0($t1)", 0x0dd00000, 0, t0
, t1
);
152 TESTINST1("sb $t0, 0($t1)", 655, 0, t0
, t1
);
153 TESTINST1("sb $t0, 0($t1)", -655, 0, t0
, t1
);
154 TESTINST1("sb $t0, 0($t1)", 15, 0, t0
, t1
);
155 TESTINST1("sb $t0, 0($t1)", 1, 0, t0
, t1
);
156 TESTINST1("sb $t0, 0($t1)", 53, 0, t0
, t1
);
157 TESTINST1("sb $t0, 2($t1)", 0xffffffff, 2, t0
, t1
);
158 TESTINST1("sb $t0, 2($t1)", 0xffffffff, 2, t0
, t1
);
159 TESTINST1("sb $t0, 31($t1)", 0xffffffff, 31, t0
, t1
);
160 TESTINST1("sb $t0, 35($t1)", 0xffffffff, 35, t0
, t1
);
161 TESTINST1("sb $t0, 41($t1)", 0x31415927, 41, t0
, t1
);
162 TESTINST1("sb $t0, 42($t1)", 0x7fffffff, 42, t0
, t1
);
163 TESTINST1("sb $t0, 45($t1)", 0x80000000, 45, t0
, t1
);
164 TESTINST1("sb $t0, 51($t1)", 655, 51, t0
, t1
);
169 TESTINST1("sh $t0, 1($t1)", 0, 1, t0
, t1
);
170 TESTINST1("sh $t0, 3($t1)", 0x31415927, 3, t0
, t1
);
171 TESTINST1("sh $t0, 5($t1)", 0x7fffffff, 5, t0
, t1
);
172 TESTINST1("sh $t0, 7($t1)", 0x80000000, 7, t0
, t1
);
173 TESTINST1("sh $t0, 9($t1)", 0x80000000, 9, t0
, t1
);
174 TESTINST1("sh $t0, 6($t1)", 0x7fffffff, 6, t0
, t1
);
175 TESTINST1("sh $t0, 11($t1)", 0x7fffffff, 11, t0
, t1
);
176 TESTINST1("sh $t0, 8($t1)", -1, 8, t0
, t1
);
177 TESTINST1("sh $t0, 0($t1)", 0x31415927, 0, t0
, t1
);
178 TESTINST1("sh $t0, 0($t1)", 0x0dd00000, 0, t0
, t1
);
179 TESTINST1("sh $t0, 0($t1)", 655, 0, t0
, t1
);
180 TESTINST1("sh $t0, 0($t1)", -655, 0, t0
, t1
);
181 TESTINST1("sh $t0, 0($t1)", 15, 0, t0
, t1
);
182 TESTINST1("sh $t0, 0($t1)", 1, 0, t0
, t1
);
183 TESTINST1("sh $t0, 0($t1)", 53, 0, t0
, t1
);
184 TESTINST1("sh $t0, 2($t1)", 0xffffffff, 2, t0
, t1
);
185 TESTINST1("sh $t0, 2($t1)", 0xffffffff, 2, t0
, t1
);
186 TESTINST1("sh $t0, 31($t1)", 0xffffffff, 31, t0
, t1
);
187 TESTINST1("sh $t0, 35($t1)", 0xffffffff, 35, t0
, t1
);
188 TESTINST1("sh $t0, 41($t1)", 0x31415927, 41, t0
, t1
);
189 TESTINST1("sh $t0, 47($t1)", 0x7fffffff, 47, t0
, t1
);
190 TESTINST1("sh $t0, 49($t1)", 0x80000000, 49, t0
, t1
);
191 TESTINST1("sh $t0, 51($t1)", 655, 51, t0
, t1
);
196 TESTINST1("sw $t0, 1($t1)", 0, 1, t0
, t1
);
197 TESTINST1("sw $t0, 3($t1)", 0x31415927, 3, t0
, t1
);
198 TESTINST1("sw $t0, 5($t1)", 0x7fffffff, 5, t0
, t1
);
199 TESTINST1("sw $t0, 7($t1)", 0x80000000, 7, t0
, t1
);
200 TESTINST1("sw $t0, 9($t1)", 0x80000000, 9, t0
, t1
);
201 TESTINST1("sw $t0, 6($t1)", 0x7fffffff, 6, t0
, t1
);
202 TESTINST1("sw $t0, 15($t1)", 0x7fffffff, 11, t0
, t1
);
203 TESTINST1("sw $t0, 8($t1)", -1, 8, t0
, t1
);
204 TESTINST1("sw $t0, 0($t1)", 0x31415927, 0, t0
, t1
);
205 TESTINST1("sw $t0, 0($t1)", 0x0dd00000, 0, t0
, t1
);
206 TESTINST1("sw $t0, 0($t1)", 655, 0, t0
, t1
);
207 TESTINST1("sw $t0, 0($t1)", -655, 0, t0
, t1
);
208 TESTINST1("sw $t0, 0($t1)", 15, 0, t0
, t1
);
209 TESTINST1("sw $t0, 0($t1)", 1, 0, t0
, t1
);
210 TESTINST1("sw $t0, 0($t1)", 53, 0, t0
, t1
);
211 TESTINST1("sw $t0, 2($t1)", 0xffffffff, 2, t0
, t1
);
212 TESTINST1("sw $t0, 2($t1)", 0xffffffff, 2, t0
, t1
);
213 TESTINST1("sw $t0, 31($t1)", 0xffffffff, 31, t0
, t1
);
214 TESTINST1("sw $t0, 37($t1)", 0xffffffff, 37, t0
, t1
);
215 TESTINST1("sw $t0, 49($t1)", 0x31415927, 49, t0
, t1
);
216 TESTINST1("sw $t0, 41($t1)", 0x7fffffff, 41, t0
, t1
);
217 TESTINST1("sw $t0, 43($t1)", 0x80000000, 43, t0
, t1
);
218 TESTINST1("sw $t0, 51($t1)", 655, 51, t0
, t1
);
222 #if (__mips_isa_rev < 6)
224 TESTINST1("swl $t0, 1($t1)", 0, 1, t0
, t1
);
225 TESTINST1("swl $t0, 3($t1)", 0x31415927, 3, t0
, t1
);
226 TESTINST1("swl $t0, 5($t1)", 0x7fffffff, 5, t0
, t1
);
227 TESTINST1("swl $t0, 7($t1)", 0x80000000, 7, t0
, t1
);
228 TESTINST1("swl $t0, 9($t1)", 0x80000000, 9, t0
, t1
);
229 TESTINST1("swl $t0, 6($t1)", 0x7fffffff, 6, t0
, t1
);
230 TESTINST1("swl $t0, 11($t1)", 0x7fffffff, 11, t0
, t1
);
231 TESTINST1("swl $t0, 8($t1)", -1, 8, t0
, t1
);
232 TESTINST1("swl $t0, 0($t1)", 0x31415927, 0, t0
, t1
);
233 TESTINST1("swl $t0, 0($t1)", 0x0dd00000, 0, t0
, t1
);
234 TESTINST1("swl $t0, 0($t1)", 655, 0, t0
, t1
);
235 TESTINST1("swl $t0, 0($t1)", -655, 0, t0
, t1
);
236 TESTINST1("swl $t0, 0($t1)", 15, 0, t0
, t1
);
237 TESTINST1("swl $t0, 0($t1)", 1, 0, t0
, t1
);
238 TESTINST1("swl $t0, 0($t1)", 53, 0, t0
, t1
);
239 TESTINST1("swl $t0, 2($t1)", 0xffffffff, 2, t0
, t1
);
240 TESTINST1("swl $t0, 2($t1)", 0xffffffff, 2, t0
, t1
);
241 TESTINST1("swl $t0, 33($t1)", 0xffffffff, 33, t0
, t1
);
242 TESTINST1("swl $t0, 35($t1)", 0xffffffff, 35, t0
, t1
);
243 TESTINST1("swl $t0, 41($t1)", 0x31415927, 41, t0
, t1
);
244 TESTINST1("swl $t0, 45($t1)", 0x7fffffff, 45, t0
, t1
);
245 TESTINST1("swl $t0, 49($t1)", 0x80000000, 49, t0
, t1
);
246 TESTINST1("swl $t0, 51($t1)", 655, 51, t0
, t1
);
251 TESTINST1("swr $t0, 1($t1)", 0, 1, t0
, t1
);
252 TESTINST1("swr $t0, 3($t1)", 0x31415927, 3, t0
, t1
);
253 TESTINST1("swr $t0, 5($t1)", 0x7fffffff, 5, t0
, t1
);
254 TESTINST1("swr $t0, 7($t1)", 0x80000000, 7, t0
, t1
);
255 TESTINST1("swr $t0, 9($t1)", 0x80000000, 9, t0
, t1
);
256 TESTINST1("swr $t0, 6($t1)", 0x7fffffff, 6, t0
, t1
);
257 TESTINST1("swr $t0, 11($t1)", 0x7fffffff, 11, t0
, t1
);
258 TESTINST1("swr $t0, 8($t1)", -1, 8, t0
, t1
);
259 TESTINST1("swr $t0, 0($t1)", 0x31415927, 0, t0
, t1
);
260 TESTINST1("swr $t0, 0($t1)", 0x0dd00000, 0, t0
, t1
);
261 TESTINST1("swr $t0, 0($t1)", 655, 0, t0
, t1
);
262 TESTINST1("swr $t0, 0($t1)", -655, 0, t0
, t1
);
263 TESTINST1("swr $t0, 0($t1)", 15, 0, t0
, t1
);
264 TESTINST1("swr $t0, 0($t1)", 1, 0, t0
, t1
);
265 TESTINST1("swr $t0, 0($t1)", 53, 0, t0
, t1
);
266 TESTINST1("swr $t0, 2($t1)", 0xffffffff, 2, t0
, t1
);
267 TESTINST1("swr $t0, 2($t1)", 0xffffffff, 2, t0
, t1
);
268 TESTINST1("swr $t0, 31($t1)", 0xffffffff, 31, t0
, t1
);
269 TESTINST1("swr $t0, 33($t1)", 0xffffffff, 33, t0
, t1
);
270 TESTINST1("swr $t0, 45($t1)", 0x31415927, 45, t0
, t1
);
271 TESTINST1("swr $t0, 47($t1)", 0x7fffffff, 47, t0
, t1
);
272 TESTINST1("swr $t0, 49($t1)", 0x80000000, 49, t0
, t1
);
273 TESTINST1("swr $t0, 51($t1)", 655, 51, t0
, t1
);
278 TESTINST1("ulw $t0, 0($t1)", 0, 0, t0
, t1
);
279 TESTINST1("ulw $t0, 0($t1)", 0x31415927, 0, t0
, t1
);
280 TESTINST1("ulw $t0, 0($t1)", 0x7fffffff, 0, t0
, t1
);
281 TESTINST1("ulw $t0, 0($t1)", 0x80000000, 0, t0
, t1
);
282 TESTINST1("ulw $t0, 2($t1)", 0x80000000, 2, t0
, t1
);
283 TESTINST1("ulw $t0, 6($t1)", 0x7fffffff, 6, t0
, t1
);
284 TESTINST1("ulw $t0, 10($t1)", 0x7fffffff, 10, t0
, t1
);
285 TESTINST1("ulw $t0, 8($t1)", -1, 8, t0
, t1
);
286 TESTINST1("ulw $t0, 0($t1)", 0x31415927, 0, t0
, t1
);
287 TESTINST1("ulw $t0, 0($t1)", 0x0dd00000, 0, t0
, t1
);
288 TESTINST1("ulw $t0, 0($t1)", 655, 0, t0
, t1
);
289 TESTINST1("ulw $t0, 0($t1)", -655, 0, t0
, t1
);
290 TESTINST1("ulw $t0, 0($t1)", 15, 0, t0
, t1
);
291 TESTINST1("ulw $t0, 0($t1)", 1, 0, t0
, t1
);
292 TESTINST1("ulw $t0, 0($t1)", 53, 0, t0
, t1
);
293 TESTINST1("ulw $t0, 2($t1)", 0xffffffff, 2, t0
, t1
);
294 TESTINST1("ulw $t0, 2($t1)", 0xffffffff, 2, t0
, t1
);
295 TESTINST1("ulw $t0, 32($t1)", 0xffffffff, 32, t0
, t1
);
296 TESTINST1("ulw $t0, 36($t1)", 0xffffffff, 36, t0
, t1
);
297 TESTINST1("ulw $t0, 40($t1)", 0x31415927, 40, t0
, t1
);
298 TESTINST1("ulw $t0, 44($t1)", 0x7fffffff, 44, t0
, t1
);
299 TESTINST1("ulw $t0, 48($t1)", 0x80000000, 48, t0
, t1
);
300 TESTINST1("ulw $t0, 52($t1)", 655, 52, t0
, t1
);
305 TESTINST1("usw $t0, 0($t1)", 0, 0, t0
, t1
);
306 TESTINST1("usw $t0, 0($t1)", 0x31415927, 0, t0
, t1
);
307 TESTINST1("usw $t0, 0($t1)", 0x7fffffff, 0, t0
, t1
);
308 TESTINST1("usw $t0, 0($t1)", 0x80000000, 0, t0
, t1
);
309 TESTINST1("usw $t0, 2($t1)", 0x80000000, 2, t0
, t1
);
310 TESTINST1("usw $t0, 6($t1)", 0x7fffffff, 6, t0
, t1
);
311 TESTINST1("usw $t0, 10($t1)", 0x7fffffff, 10, t0
, t1
);
312 TESTINST1("usw $t0, 8($t1)", -1, 8, t0
, t1
);
313 TESTINST1("usw $t0, 0($t1)", 0x31415927, 0, t0
, t1
);
314 TESTINST1("usw $t0, 0($t1)", 0x0dd00000, 0, t0
, t1
);
315 TESTINST1("usw $t0, 0($t1)", 655, 0, t0
, t1
);
316 TESTINST1("usw $t0, 0($t1)", -655, 0, t0
, t1
);
317 TESTINST1("usw $t0, 0($t1)", 15, 0, t0
, t1
);
318 TESTINST1("usw $t0, 0($t1)", 1, 0, t0
, t1
);
319 TESTINST1("usw $t0, 0($t1)", 53, 0, t0
, t1
);
320 TESTINST1("usw $t0, 2($t1)", 0xffffffff, 2, t0
, t1
);
321 TESTINST1("usw $t0, 2($t1)", 0xffffffff, 2, t0
, t1
);
322 TESTINST1("usw $t0, 32($t1)", 0xffffffff, 32, t0
, t1
);
323 TESTINST1("usw $t0, 36($t1)", 0xffffffff, 36, t0
, t1
);
324 TESTINST1("usw $t0, 40($t1)", 0x31415927, 40, t0
, t1
);
325 TESTINST1("usw $t0, 44($t1)", 0x7fffffff, 44, t0
, t1
);
326 TESTINST1("usw $t0, 48($t1)", 0x80000000, 48, t0
, t1
);
327 TESTINST1("usw $t0, 52($t1)", 655, 52, t0
, t1
);
331 printf("swl $t0, 3($t0)\nswr $t0, 0($t0)\n");
332 TESTINSTsw(0x4853000, 0, t0
, t1
);
334 TESTINSTsw(0x4853000, 4, t0
, t1
);
336 TESTINSTsw(0x4863700, 8, t0
, t1
);
338 TESTINSTsw(0x48aedd0, 12, t0
, t1
);
340 TESTINSTsw(0x2aaee700, 16, t0
, t1
);
342 TESTINSTsw(0x2aaee7ff, 20, t0
, t1
);
344 TESTINSTsw(0x2aaeffff, 24, t0
, t1
);
346 TESTINSTsw(0x4863700, 28, t0
, t1
);
348 TESTINSTsw(0x2aaee700, 32, t0
, t1
);