re-import all libretro code from it's fork
[picodrive.git] / platform / libretro / psp / draw_amips.s
1 #*
2 #* several drawing related functions for Allegrex MIPS
3 #* (C) notaz, 2007-2008
4 #*
5 #* This work is licensed under the terms of MAME license.
6 #* See COPYING file in the top-level directory.
7 #*
8 #* this is highly specialized, be careful if changing related C code!
9 #*
10
11 .set noreorder # don't reorder any instructions
12 .set noat      # don't use $at
13
14 .text
15 .align 4
16
17 # void amips_clut(unsigned short *dst, unsigned char *src, unsigned short *pal, int count)
18
19 .global amips_clut
20
21 amips_clut:
22     srl     $a3, 2
23 amips_clut_loop:
24     lbu     $t0, 0($a1)           # tried lw here, no improvement noticed
25     lbu     $t1, 1($a1)
26     lbu     $t2, 2($a1)
27     lbu     $t3, 3($a1)
28     sll     $t0, 1
29     sll     $t1, 1
30     sll     $t2, 1
31     sll     $t3, 1
32     addu    $t0, $a2
33     addu    $t1, $a2
34     addu    $t2, $a2
35     addu    $t3, $a2
36     lhu     $t0, 0($t0)
37     lhu     $t1, 0($t1)
38     lhu     $t2, 0($t2)
39     lhu     $t3, 0($t3)
40     ins     $t0, $t1, 16, 16      # ins rt, rs, pos, size - Insert size bits starting
41     ins     $t2, $t3, 16, 16      #  from the LSB of rs into rt starting at position pos
42     sw      $t0, 0($a0)
43     sw      $t2, 4($a0)
44     addiu   $a0, 8
45     addiu   $a3, -1
46     bnez    $a3, amips_clut_loop
47     addiu   $a1, 4
48     jr      $ra
49     nop
50
51
52 .global amips_clut_6bit
53
54 amips_clut_6bit:
55     srl     $a3, 2
56     li      $t4, 0
57     li      $t5, 0
58     li      $t6, 0
59     li      $t7, 0
60 amips_clut_loop6:
61     lbu     $t0, 0($a1)           # tried lw here, no improvement noticed
62     lbu     $t1, 1($a1)
63     lbu     $t2, 2($a1)
64     lbu     $t3, 3($a1)
65     ins     $t4, $t0, 1, 6
66     ins     $t5, $t1, 1, 6
67     ins     $t6, $t2, 1, 6
68     ins     $t7, $t3, 1, 6
69     addu    $t0, $t4, $a2
70     addu    $t1, $t5, $a2
71     addu    $t2, $t6, $a2
72     addu    $t3, $t7, $a2
73     lhu     $t0, 0($t0)
74     lhu     $t1, 0($t1)
75     lhu     $t2, 0($t2)
76     lhu     $t3, 0($t3)
77     ins     $t0, $t1, 16, 16      # ins rt, rs, pos, size - Insert size bits starting
78     ins     $t2, $t3, 16, 16      #  from the LSB of rs into rt starting at position pos
79     sw      $t0, 0($a0)
80     sw      $t2, 4($a0)
81     addiu   $a0, 8
82     addiu   $a3, -1
83     bnez    $a3, amips_clut_loop6
84     addiu   $a1, 4
85     jr      $ra
86     nop
87
88
89 # $a0 - pd, $a1 - tile word, $a2 - pal
90 # ext rt, rs, pos, size  // Extract size bits from position pos in rs and store in rt 
91
92 .macro TilePixelPrep shift dreg offs
93 .if \shift
94     ext     \dreg, $a1, \shift, 4
95 .else
96     andi    \dreg, $a1, 0xf
97 .endif
98 .if \offs
99     sltu    $t8, $0, \dreg
100     ins     $t9, $t8, \offs, 1
101 .else
102     sltu    $t9, $0, \dreg
103 .endif
104 .endm
105
106 .macro TileStartCode
107     sll     $a1, $a1, 1
108     lui     $t1, %hi(Pico+0x10000)
109     addu    $a1, $a1, $t1
110     lw      $a1, %lo(Pico+0x10000)($a1)  # Pico.vram + addr
111     beqz    $a1, TileEmpty
112     rotr    $t1, $a1, 4
113     beq     $t1, $a1, SingleColor
114     and     $v0, $0                      # not empty tile
115 .endm
116
117 .macro TileEndCode
118     xori    $t8, $t9, 0xff
119     beqz    $t8, tile11111111            # common case
120     lui     $v1, %hi(HighCol)
121     lui     $t8, %hi(TileTable)
122     ins     $t8, $t9, 2, 8
123     lw      $t8, %lo(TileTable)($t8)
124     lw      $v1, %lo(HighCol)($v1)
125     jr      $t8
126     addu    $a0, $v1
127 .endm
128
129
130 .global TileNorm
131
132 TileNorm:
133     TileStartCode
134     TilePixelPrep 12, $t0, 0
135     TilePixelPrep  8, $t1, 1
136     TilePixelPrep  4, $t2, 2
137     TilePixelPrep  0, $t3, 3
138     TilePixelPrep 28, $t4, 4
139     TilePixelPrep 24, $t5, 5
140     TilePixelPrep 20, $t6, 6
141     TilePixelPrep 16, $t7, 7
142     TileEndCode
143
144
145 .global TileFlip
146
147 TileFlip:
148     TileStartCode
149     TilePixelPrep 16, $t0, 0
150     TilePixelPrep 20, $t1, 1
151     TilePixelPrep 24, $t2, 2
152     TilePixelPrep 28, $t3, 3
153     TilePixelPrep  0, $t4, 4
154     TilePixelPrep  4, $t5, 5
155     TilePixelPrep  8, $t6, 6
156     TilePixelPrep 12, $t7, 7
157     TileEndCode
158
159
160 SingleColor:
161     lui     $t9, %hi(HighCol)
162     lw      $t9, %lo(HighCol)($t9)
163     andi    $t0, $a1, 0xf
164     or      $t0, $t0, $a2
165     addu    $a0, $t9
166     sb      $t0, 0($a0)
167     sb      $t0, 1($a0)
168     sb      $t0, 2($a0)
169     sb      $t0, 3($a0)
170     sb      $t0, 4($a0)
171     sb      $t0, 5($a0)
172     sb      $t0, 6($a0)
173     jr      $ra
174     sb      $t0, 7($a0)
175
176 TileEmpty:
177     jr      $ra
178     or      $v0, $0, 1                   # empty tile
179
180 tile11111111:
181     lw      $v1, %lo(HighCol)($v1)
182     or      $t0, $t0, $a2
183     addu    $a0, $v1
184     sb      $t0, 0($a0)
185 tile11111110:
186     or      $t1, $t1, $a2
187     sb      $t1, 1($a0)
188 tile11111100:
189     or      $t2, $t2, $a2
190     sb      $t2, 2($a0)
191 tile11111000:
192     or      $t3, $t3, $a2
193     sb      $t3, 3($a0)
194 tile11110000:
195     or      $t4, $t4, $a2
196     sb      $t4, 4($a0)
197 tile11100000:
198     or      $t5, $t5, $a2
199     sb      $t5, 5($a0)
200 tile11000000:
201     or      $t6, $t6, $a2
202     sb      $t6, 6($a0)
203 tile10000000:
204     or      $t7, $t7, $a2
205     jr      $ra
206     sb      $t7, 7($a0)
207 tile11111101:
208     or      $t0, $t0, $a2
209     sb      $t0, 0($a0)
210     or      $t2, $t2, $a2
211     sb      $t2, 2($a0)
212     or      $t3, $t3, $a2
213     sb      $t3, 3($a0)
214     or      $t4, $t4, $a2
215     sb      $t4, 4($a0)
216     or      $t5, $t5, $a2
217     sb      $t5, 5($a0)
218     or      $t6, $t6, $a2
219     sb      $t6, 6($a0)
220     or      $t7, $t7, $a2
221     jr      $ra
222     sb      $t7, 7($a0)
223 tile11111011:
224     or      $t0, $t0, $a2
225     sb      $t0, 0($a0)
226 tile11111010:
227     or      $t1, $t1, $a2
228     sb      $t1, 1($a0)
229     or      $t3, $t3, $a2
230     sb      $t3, 3($a0)
231     or      $t4, $t4, $a2
232     sb      $t4, 4($a0)
233     or      $t5, $t5, $a2
234     sb      $t5, 5($a0)
235     or      $t6, $t6, $a2
236     sb      $t6, 6($a0)
237     or      $t7, $t7, $a2
238     jr      $ra
239     sb      $t7, 7($a0)
240 tile11111001:
241     or      $t0, $t0, $a2
242     sb      $t0, 0($a0)
243     or      $t3, $t3, $a2
244     sb      $t3, 3($a0)
245     or      $t4, $t4, $a2
246     sb      $t4, 4($a0)
247     or      $t5, $t5, $a2
248     sb      $t5, 5($a0)
249     or      $t6, $t6, $a2
250     sb      $t6, 6($a0)
251     or      $t7, $t7, $a2
252     jr      $ra
253     sb      $t7, 7($a0)
254 tile11110111:
255     or      $t0, $t0, $a2
256     sb      $t0, 0($a0)
257 tile11110110:
258     or      $t1, $t1, $a2
259     sb      $t1, 1($a0)
260 tile11110100:
261     or      $t2, $t2, $a2
262     sb      $t2, 2($a0)
263     or      $t4, $t4, $a2
264     sb      $t4, 4($a0)
265     or      $t5, $t5, $a2
266     sb      $t5, 5($a0)
267     or      $t6, $t6, $a2
268     sb      $t6, 6($a0)
269     or      $t7, $t7, $a2
270     jr      $ra
271     sb      $t7, 7($a0)
272 tile11110101:
273     or      $t0, $t0, $a2
274     sb      $t0, 0($a0)
275     or      $t2, $t2, $a2
276     sb      $t2, 2($a0)
277     or      $t4, $t4, $a2
278     sb      $t4, 4($a0)
279     or      $t5, $t5, $a2
280     sb      $t5, 5($a0)
281     or      $t6, $t6, $a2
282     sb      $t6, 6($a0)
283     or      $t7, $t7, $a2
284     jr      $ra
285     sb      $t7, 7($a0)
286 tile11110011:
287     or      $t0, $t0, $a2
288     sb      $t0, 0($a0)
289 tile11110010:
290     or      $t1, $t1, $a2
291     sb      $t1, 1($a0)
292     or      $t4, $t4, $a2
293     sb      $t4, 4($a0)
294     or      $t5, $t5, $a2
295     sb      $t5, 5($a0)
296     or      $t6, $t6, $a2
297     sb      $t6, 6($a0)
298     or      $t7, $t7, $a2
299     jr      $ra
300     sb      $t7, 7($a0)
301 tile11110001:
302     or      $t0, $t0, $a2
303     sb      $t0, 0($a0)
304     or      $t4, $t4, $a2
305     sb      $t4, 4($a0)
306     or      $t5, $t5, $a2
307     sb      $t5, 5($a0)
308     or      $t6, $t6, $a2
309     sb      $t6, 6($a0)
310     or      $t7, $t7, $a2
311     jr      $ra
312     sb      $t7, 7($a0)
313 tile11101111:
314     or      $t0, $t0, $a2
315     sb      $t0, 0($a0)
316 tile11101110:
317     or      $t1, $t1, $a2
318     sb      $t1, 1($a0)
319 tile11101100:
320     or      $t2, $t2, $a2
321     sb      $t2, 2($a0)
322 tile11101000:
323     or      $t3, $t3, $a2
324     sb      $t3, 3($a0)
325     or      $t5, $t5, $a2
326     sb      $t5, 5($a0)
327     or      $t6, $t6, $a2
328     sb      $t6, 6($a0)
329     or      $t7, $t7, $a2
330     jr      $ra
331     sb      $t7, 7($a0)
332 tile11101101:
333     or      $t0, $t0, $a2
334     sb      $t0, 0($a0)
335     or      $t2, $t2, $a2
336     sb      $t2, 2($a0)
337     or      $t3, $t3, $a2
338     sb      $t3, 3($a0)
339     or      $t5, $t5, $a2
340     sb      $t5, 5($a0)
341     or      $t6, $t6, $a2
342     sb      $t6, 6($a0)
343     or      $t7, $t7, $a2
344     jr      $ra
345     sb      $t7, 7($a0)
346 tile11101011:
347     or      $t0, $t0, $a2
348     sb      $t0, 0($a0)
349 tile11101010:
350     or      $t1, $t1, $a2
351     sb      $t1, 1($a0)
352     or      $t3, $t3, $a2
353     sb      $t3, 3($a0)
354     or      $t5, $t5, $a2
355     sb      $t5, 5($a0)
356     or      $t6, $t6, $a2
357     sb      $t6, 6($a0)
358     or      $t7, $t7, $a2
359     jr      $ra
360     sb      $t7, 7($a0)
361 tile11101001:
362     or      $t0, $t0, $a2
363     sb      $t0, 0($a0)
364     or      $t3, $t3, $a2
365     sb      $t3, 3($a0)
366     or      $t5, $t5, $a2
367     sb      $t5, 5($a0)
368     or      $t6, $t6, $a2
369     sb      $t6, 6($a0)
370     or      $t7, $t7, $a2
371     jr      $ra
372     sb      $t7, 7($a0)
373 tile11100111:
374     or      $t0, $t0, $a2
375     sb      $t0, 0($a0)
376 tile11100110:
377     or      $t1, $t1, $a2
378     sb      $t1, 1($a0)
379 tile11100100:
380     or      $t2, $t2, $a2
381     sb      $t2, 2($a0)
382     or      $t5, $t5, $a2
383     sb      $t5, 5($a0)
384     or      $t6, $t6, $a2
385     sb      $t6, 6($a0)
386     or      $t7, $t7, $a2
387     jr      $ra
388     sb      $t7, 7($a0)
389 tile11100101:
390     or      $t0, $t0, $a2
391     sb      $t0, 0($a0)
392     or      $t2, $t2, $a2
393     sb      $t2, 2($a0)
394     or      $t5, $t5, $a2
395     sb      $t5, 5($a0)
396     or      $t6, $t6, $a2
397     sb      $t6, 6($a0)
398     or      $t7, $t7, $a2
399     jr      $ra
400     sb      $t7, 7($a0)
401 tile11100011:
402     or      $t0, $t0, $a2
403     sb      $t0, 0($a0)
404 tile11100010:
405     or      $t1, $t1, $a2
406     sb      $t1, 1($a0)
407     or      $t5, $t5, $a2
408     sb      $t5, 5($a0)
409     or      $t6, $t6, $a2
410     sb      $t6, 6($a0)
411     or      $t7, $t7, $a2
412     jr      $ra
413     sb      $t7, 7($a0)
414 tile11100001:
415     or      $t0, $t0, $a2
416     sb      $t0, 0($a0)
417     or      $t5, $t5, $a2
418     sb      $t5, 5($a0)
419     or      $t6, $t6, $a2
420     sb      $t6, 6($a0)
421     or      $t7, $t7, $a2
422     jr      $ra
423     sb      $t7, 7($a0)
424 tile11011111:
425     or      $t0, $t0, $a2
426     sb      $t0, 0($a0)
427 tile11011110:
428     or      $t1, $t1, $a2
429     sb      $t1, 1($a0)
430 tile11011100:
431     or      $t2, $t2, $a2
432     sb      $t2, 2($a0)
433 tile11011000:
434     or      $t3, $t3, $a2
435     sb      $t3, 3($a0)
436 tile11010000:
437     or      $t4, $t4, $a2
438     sb      $t4, 4($a0)
439     or      $t6, $t6, $a2
440     sb      $t6, 6($a0)
441     or      $t7, $t7, $a2
442     jr      $ra
443     sb      $t7, 7($a0)
444 tile11011101:
445     or      $t0, $t0, $a2
446     sb      $t0, 0($a0)
447     or      $t2, $t2, $a2
448     sb      $t2, 2($a0)
449     or      $t3, $t3, $a2
450     sb      $t3, 3($a0)
451     or      $t4, $t4, $a2
452     sb      $t4, 4($a0)
453     or      $t6, $t6, $a2
454     sb      $t6, 6($a0)
455     or      $t7, $t7, $a2
456     jr      $ra
457     sb      $t7, 7($a0)
458 tile11011011:
459     or      $t0, $t0, $a2
460     sb      $t0, 0($a0)
461 tile11011010:
462     or      $t1, $t1, $a2
463     sb      $t1, 1($a0)
464     or      $t3, $t3, $a2
465     sb      $t3, 3($a0)
466     or      $t4, $t4, $a2
467     sb      $t4, 4($a0)
468     or      $t6, $t6, $a2
469     sb      $t6, 6($a0)
470     or      $t7, $t7, $a2
471     jr      $ra
472     sb      $t7, 7($a0)
473 tile11011001:
474     or      $t0, $t0, $a2
475     sb      $t0, 0($a0)
476     or      $t3, $t3, $a2
477     sb      $t3, 3($a0)
478     or      $t4, $t4, $a2
479     sb      $t4, 4($a0)
480     or      $t6, $t6, $a2
481     sb      $t6, 6($a0)
482     or      $t7, $t7, $a2
483     jr      $ra
484     sb      $t7, 7($a0)
485 tile11010111:
486     or      $t0, $t0, $a2
487     sb      $t0, 0($a0)
488 tile11010110:
489     or      $t1, $t1, $a2
490     sb      $t1, 1($a0)
491 tile11010100:
492     or      $t2, $t2, $a2
493     sb      $t2, 2($a0)
494     or      $t4, $t4, $a2
495     sb      $t4, 4($a0)
496     or      $t6, $t6, $a2
497     sb      $t6, 6($a0)
498     or      $t7, $t7, $a2
499     jr      $ra
500     sb      $t7, 7($a0)
501 tile11010101:
502     or      $t0, $t0, $a2
503     sb      $t0, 0($a0)
504     or      $t2, $t2, $a2
505     sb      $t2, 2($a0)
506     or      $t4, $t4, $a2
507     sb      $t4, 4($a0)
508     or      $t6, $t6, $a2
509     sb      $t6, 6($a0)
510     or      $t7, $t7, $a2
511     jr      $ra
512     sb      $t7, 7($a0)
513 tile11010011:
514     or      $t0, $t0, $a2
515     sb      $t0, 0($a0)
516 tile11010010:
517     or      $t1, $t1, $a2
518     sb      $t1, 1($a0)
519     or      $t4, $t4, $a2
520     sb      $t4, 4($a0)
521     or      $t6, $t6, $a2
522     sb      $t6, 6($a0)
523     or      $t7, $t7, $a2
524     jr      $ra
525     sb      $t7, 7($a0)
526 tile11010001:
527     or      $t0, $t0, $a2
528     sb      $t0, 0($a0)
529     or      $t4, $t4, $a2
530     sb      $t4, 4($a0)
531     or      $t6, $t6, $a2
532     sb      $t6, 6($a0)
533     or      $t7, $t7, $a2
534     jr      $ra
535     sb      $t7, 7($a0)
536 tile11001111:
537     or      $t0, $t0, $a2
538     sb      $t0, 0($a0)
539 tile11001110:
540     or      $t1, $t1, $a2
541     sb      $t1, 1($a0)
542 tile11001100:
543     or      $t2, $t2, $a2
544     sb      $t2, 2($a0)
545 tile11001000:
546     or      $t3, $t3, $a2
547     sb      $t3, 3($a0)
548     or      $t6, $t6, $a2
549     sb      $t6, 6($a0)
550     or      $t7, $t7, $a2
551     jr      $ra
552     sb      $t7, 7($a0)
553 tile11001101:
554     or      $t0, $t0, $a2
555     sb      $t0, 0($a0)
556     or      $t2, $t2, $a2
557     sb      $t2, 2($a0)
558     or      $t3, $t3, $a2
559     sb      $t3, 3($a0)
560     or      $t6, $t6, $a2
561     sb      $t6, 6($a0)
562     or      $t7, $t7, $a2
563     jr      $ra
564     sb      $t7, 7($a0)
565 tile11001011:
566     or      $t0, $t0, $a2
567     sb      $t0, 0($a0)
568 tile11001010:
569     or      $t1, $t1, $a2
570     sb      $t1, 1($a0)
571     or      $t3, $t3, $a2
572     sb      $t3, 3($a0)
573     or      $t6, $t6, $a2
574     sb      $t6, 6($a0)
575     or      $t7, $t7, $a2
576     jr      $ra
577     sb      $t7, 7($a0)
578 tile11001001:
579     or      $t0, $t0, $a2
580     sb      $t0, 0($a0)
581     or      $t3, $t3, $a2
582     sb      $t3, 3($a0)
583     or      $t6, $t6, $a2
584     sb      $t6, 6($a0)
585     or      $t7, $t7, $a2
586     jr      $ra
587     sb      $t7, 7($a0)
588 tile11000111:
589     or      $t0, $t0, $a2
590     sb      $t0, 0($a0)
591 tile11000110:
592     or      $t1, $t1, $a2
593     sb      $t1, 1($a0)
594 tile11000100:
595     or      $t2, $t2, $a2
596     sb      $t2, 2($a0)
597     or      $t6, $t6, $a2
598     sb      $t6, 6($a0)
599     or      $t7, $t7, $a2
600     jr      $ra
601     sb      $t7, 7($a0)
602 tile11000101:
603     or      $t0, $t0, $a2
604     sb      $t0, 0($a0)
605     or      $t2, $t2, $a2
606     sb      $t2, 2($a0)
607     or      $t6, $t6, $a2
608     sb      $t6, 6($a0)
609     or      $t7, $t7, $a2
610     jr      $ra
611     sb      $t7, 7($a0)
612 tile11000011:
613     or      $t0, $t0, $a2
614     sb      $t0, 0($a0)
615 tile11000010:
616     or      $t1, $t1, $a2
617     sb      $t1, 1($a0)
618     or      $t6, $t6, $a2
619     sb      $t6, 6($a0)
620     or      $t7, $t7, $a2
621     jr      $ra
622     sb      $t7, 7($a0)
623 tile11000001:
624     or      $t0, $t0, $a2
625     sb      $t0, 0($a0)
626     or      $t6, $t6, $a2
627     sb      $t6, 6($a0)
628     or      $t7, $t7, $a2
629     jr      $ra
630     sb      $t7, 7($a0)
631 tile10111111:
632     or      $t0, $t0, $a2
633     sb      $t0, 0($a0)
634 tile10111110:
635     or      $t1, $t1, $a2
636     sb      $t1, 1($a0)
637 tile10111100:
638     or      $t2, $t2, $a2
639     sb      $t2, 2($a0)
640 tile10111000:
641     or      $t3, $t3, $a2
642     sb      $t3, 3($a0)
643 tile10110000:
644     or      $t4, $t4, $a2
645     sb      $t4, 4($a0)
646 tile10100000:
647     or      $t5, $t5, $a2
648     sb      $t5, 5($a0)
649     or      $t7, $t7, $a2
650     jr      $ra
651     sb      $t7, 7($a0)
652 tile10111101:
653     or      $t0, $t0, $a2
654     sb      $t0, 0($a0)
655     or      $t2, $t2, $a2
656     sb      $t2, 2($a0)
657     or      $t3, $t3, $a2
658     sb      $t3, 3($a0)
659     or      $t4, $t4, $a2
660     sb      $t4, 4($a0)
661     or      $t5, $t5, $a2
662     sb      $t5, 5($a0)
663     or      $t7, $t7, $a2
664     jr      $ra
665     sb      $t7, 7($a0)
666 tile10111011:
667     or      $t0, $t0, $a2
668     sb      $t0, 0($a0)
669 tile10111010:
670     or      $t1, $t1, $a2
671     sb      $t1, 1($a0)
672     or      $t3, $t3, $a2
673     sb      $t3, 3($a0)
674     or      $t4, $t4, $a2
675     sb      $t4, 4($a0)
676     or      $t5, $t5, $a2
677     sb      $t5, 5($a0)
678     or      $t7, $t7, $a2
679     jr      $ra
680     sb      $t7, 7($a0)
681 tile10111001:
682     or      $t0, $t0, $a2
683     sb      $t0, 0($a0)
684     or      $t3, $t3, $a2
685     sb      $t3, 3($a0)
686     or      $t4, $t4, $a2
687     sb      $t4, 4($a0)
688     or      $t5, $t5, $a2
689     sb      $t5, 5($a0)
690     or      $t7, $t7, $a2
691     jr      $ra
692     sb      $t7, 7($a0)
693 tile10110111:
694     or      $t0, $t0, $a2
695     sb      $t0, 0($a0)
696 tile10110110:
697     or      $t1, $t1, $a2
698     sb      $t1, 1($a0)
699 tile10110100:
700     or      $t2, $t2, $a2
701     sb      $t2, 2($a0)
702     or      $t4, $t4, $a2
703     sb      $t4, 4($a0)
704     or      $t5, $t5, $a2
705     sb      $t5, 5($a0)
706     or      $t7, $t7, $a2
707     jr      $ra
708     sb      $t7, 7($a0)
709 tile10110101:
710     or      $t0, $t0, $a2
711     sb      $t0, 0($a0)
712     or      $t2, $t2, $a2
713     sb      $t2, 2($a0)
714     or      $t4, $t4, $a2
715     sb      $t4, 4($a0)
716     or      $t5, $t5, $a2
717     sb      $t5, 5($a0)
718     or      $t7, $t7, $a2
719     jr      $ra
720     sb      $t7, 7($a0)
721 tile10110011:
722     or      $t0, $t0, $a2
723     sb      $t0, 0($a0)
724 tile10110010:
725     or      $t1, $t1, $a2
726     sb      $t1, 1($a0)
727     or      $t4, $t4, $a2
728     sb      $t4, 4($a0)
729     or      $t5, $t5, $a2
730     sb      $t5, 5($a0)
731     or      $t7, $t7, $a2
732     jr      $ra
733     sb      $t7, 7($a0)
734 tile10110001:
735     or      $t0, $t0, $a2
736     sb      $t0, 0($a0)
737     or      $t4, $t4, $a2
738     sb      $t4, 4($a0)
739     or      $t5, $t5, $a2
740     sb      $t5, 5($a0)
741     or      $t7, $t7, $a2
742     jr      $ra
743     sb      $t7, 7($a0)
744 tile10101111:
745     or      $t0, $t0, $a2
746     sb      $t0, 0($a0)
747 tile10101110:
748     or      $t1, $t1, $a2
749     sb      $t1, 1($a0)
750 tile10101100:
751     or      $t2, $t2, $a2
752     sb      $t2, 2($a0)
753 tile10101000:
754     or      $t3, $t3, $a2
755     sb      $t3, 3($a0)
756     or      $t5, $t5, $a2
757     sb      $t5, 5($a0)
758     or      $t7, $t7, $a2
759     jr      $ra
760     sb      $t7, 7($a0)
761 tile10101101:
762     or      $t0, $t0, $a2
763     sb      $t0, 0($a0)
764     or      $t2, $t2, $a2
765     sb      $t2, 2($a0)
766     or      $t3, $t3, $a2
767     sb      $t3, 3($a0)
768     or      $t5, $t5, $a2
769     sb      $t5, 5($a0)
770     or      $t7, $t7, $a2
771     jr      $ra
772     sb      $t7, 7($a0)
773 tile10101011:
774     or      $t0, $t0, $a2
775     sb      $t0, 0($a0)
776 tile10101010:
777     or      $t1, $t1, $a2
778     sb      $t1, 1($a0)
779     or      $t3, $t3, $a2
780     sb      $t3, 3($a0)
781     or      $t5, $t5, $a2
782     sb      $t5, 5($a0)
783     or      $t7, $t7, $a2
784     jr      $ra
785     sb      $t7, 7($a0)
786 tile10101001:
787     or      $t0, $t0, $a2
788     sb      $t0, 0($a0)
789     or      $t3, $t3, $a2
790     sb      $t3, 3($a0)
791     or      $t5, $t5, $a2
792     sb      $t5, 5($a0)
793     or      $t7, $t7, $a2
794     jr      $ra
795     sb      $t7, 7($a0)
796 tile10100111:
797     or      $t0, $t0, $a2
798     sb      $t0, 0($a0)
799 tile10100110:
800     or      $t1, $t1, $a2
801     sb      $t1, 1($a0)
802 tile10100100:
803     or      $t2, $t2, $a2
804     sb      $t2, 2($a0)
805     or      $t5, $t5, $a2
806     sb      $t5, 5($a0)
807     or      $t7, $t7, $a2
808     jr      $ra
809     sb      $t7, 7($a0)
810 tile10100101:
811     or      $t0, $t0, $a2
812     sb      $t0, 0($a0)
813     or      $t2, $t2, $a2
814     sb      $t2, 2($a0)
815     or      $t5, $t5, $a2
816     sb      $t5, 5($a0)
817     or      $t7, $t7, $a2
818     jr      $ra
819     sb      $t7, 7($a0)
820 tile10100011:
821     or      $t0, $t0, $a2
822     sb      $t0, 0($a0)
823 tile10100010:
824     or      $t1, $t1, $a2
825     sb      $t1, 1($a0)
826     or      $t5, $t5, $a2
827     sb      $t5, 5($a0)
828     or      $t7, $t7, $a2
829     jr      $ra
830     sb      $t7, 7($a0)
831 tile10100001:
832     or      $t0, $t0, $a2
833     sb      $t0, 0($a0)
834     or      $t5, $t5, $a2
835     sb      $t5, 5($a0)
836     or      $t7, $t7, $a2
837     jr      $ra
838     sb      $t7, 7($a0)
839 tile10011111:
840     or      $t0, $t0, $a2
841     sb      $t0, 0($a0)
842 tile10011110:
843     or      $t1, $t1, $a2
844     sb      $t1, 1($a0)
845 tile10011100:
846     or      $t2, $t2, $a2
847     sb      $t2, 2($a0)
848 tile10011000:
849     or      $t3, $t3, $a2
850     sb      $t3, 3($a0)
851 tile10010000:
852     or      $t4, $t4, $a2
853     sb      $t4, 4($a0)
854     or      $t7, $t7, $a2
855     jr      $ra
856     sb      $t7, 7($a0)
857 tile10011101:
858     or      $t0, $t0, $a2
859     sb      $t0, 0($a0)
860     or      $t2, $t2, $a2
861     sb      $t2, 2($a0)
862     or      $t3, $t3, $a2
863     sb      $t3, 3($a0)
864     or      $t4, $t4, $a2
865     sb      $t4, 4($a0)
866     or      $t7, $t7, $a2
867     jr      $ra
868     sb      $t7, 7($a0)
869 tile10011011:
870     or      $t0, $t0, $a2
871     sb      $t0, 0($a0)
872 tile10011010:
873     or      $t1, $t1, $a2
874     sb      $t1, 1($a0)
875     or      $t3, $t3, $a2
876     sb      $t3, 3($a0)
877     or      $t4, $t4, $a2
878     sb      $t4, 4($a0)
879     or      $t7, $t7, $a2
880     jr      $ra
881     sb      $t7, 7($a0)
882 tile10011001:
883     or      $t0, $t0, $a2
884     sb      $t0, 0($a0)
885     or      $t3, $t3, $a2
886     sb      $t3, 3($a0)
887     or      $t4, $t4, $a2
888     sb      $t4, 4($a0)
889     or      $t7, $t7, $a2
890     jr      $ra
891     sb      $t7, 7($a0)
892 tile10010111:
893     or      $t0, $t0, $a2
894     sb      $t0, 0($a0)
895 tile10010110:
896     or      $t1, $t1, $a2
897     sb      $t1, 1($a0)
898 tile10010100:
899     or      $t2, $t2, $a2
900     sb      $t2, 2($a0)
901     or      $t4, $t4, $a2
902     sb      $t4, 4($a0)
903     or      $t7, $t7, $a2
904     jr      $ra
905     sb      $t7, 7($a0)
906 tile10010101:
907     or      $t0, $t0, $a2
908     sb      $t0, 0($a0)
909     or      $t2, $t2, $a2
910     sb      $t2, 2($a0)
911     or      $t4, $t4, $a2
912     sb      $t4, 4($a0)
913     or      $t7, $t7, $a2
914     jr      $ra
915     sb      $t7, 7($a0)
916 tile10010011:
917     or      $t0, $t0, $a2
918     sb      $t0, 0($a0)
919 tile10010010:
920     or      $t1, $t1, $a2
921     sb      $t1, 1($a0)
922     or      $t4, $t4, $a2
923     sb      $t4, 4($a0)
924     or      $t7, $t7, $a2
925     jr      $ra
926     sb      $t7, 7($a0)
927 tile10010001:
928     or      $t0, $t0, $a2
929     sb      $t0, 0($a0)
930     or      $t4, $t4, $a2
931     sb      $t4, 4($a0)
932     or      $t7, $t7, $a2
933     jr      $ra
934     sb      $t7, 7($a0)
935 tile10001111:
936     or      $t0, $t0, $a2
937     sb      $t0, 0($a0)
938 tile10001110:
939     or      $t1, $t1, $a2
940     sb      $t1, 1($a0)
941 tile10001100:
942     or      $t2, $t2, $a2
943     sb      $t2, 2($a0)
944 tile10001000:
945     or      $t3, $t3, $a2
946     sb      $t3, 3($a0)
947     or      $t7, $t7, $a2
948     jr      $ra
949     sb      $t7, 7($a0)
950 tile10001101:
951     or      $t0, $t0, $a2
952     sb      $t0, 0($a0)
953     or      $t2, $t2, $a2
954     sb      $t2, 2($a0)
955     or      $t3, $t3, $a2
956     sb      $t3, 3($a0)
957     or      $t7, $t7, $a2
958     jr      $ra
959     sb      $t7, 7($a0)
960 tile10001011:
961     or      $t0, $t0, $a2
962     sb      $t0, 0($a0)
963 tile10001010:
964     or      $t1, $t1, $a2
965     sb      $t1, 1($a0)
966     or      $t3, $t3, $a2
967     sb      $t3, 3($a0)
968     or      $t7, $t7, $a2
969     jr      $ra
970     sb      $t7, 7($a0)
971 tile10001001:
972     or      $t0, $t0, $a2
973     sb      $t0, 0($a0)
974     or      $t3, $t3, $a2
975     sb      $t3, 3($a0)
976     or      $t7, $t7, $a2
977     jr      $ra
978     sb      $t7, 7($a0)
979 tile10000111:
980     or      $t0, $t0, $a2
981     sb      $t0, 0($a0)
982 tile10000110:
983     or      $t1, $t1, $a2
984     sb      $t1, 1($a0)
985 tile10000100:
986     or      $t2, $t2, $a2
987     sb      $t2, 2($a0)
988     or      $t7, $t7, $a2
989     jr      $ra
990     sb      $t7, 7($a0)
991 tile10000101:
992     or      $t0, $t0, $a2
993     sb      $t0, 0($a0)
994     or      $t2, $t2, $a2
995     sb      $t2, 2($a0)
996     or      $t7, $t7, $a2
997     jr      $ra
998     sb      $t7, 7($a0)
999 tile10000011:
1000     or      $t0, $t0, $a2
1001     sb      $t0, 0($a0)
1002 tile10000010:
1003     or      $t1, $t1, $a2
1004     sb      $t1, 1($a0)
1005     or      $t7, $t7, $a2
1006     jr      $ra
1007     sb      $t7, 7($a0)
1008 tile10000001:
1009     or      $t0, $t0, $a2
1010     sb      $t0, 0($a0)
1011     or      $t7, $t7, $a2
1012     jr      $ra
1013     sb      $t7, 7($a0)
1014 tile01111111:
1015     or      $t0, $t0, $a2
1016     sb      $t0, 0($a0)
1017 tile01111110:
1018     or      $t1, $t1, $a2
1019     sb      $t1, 1($a0)
1020 tile01111100:
1021     or      $t2, $t2, $a2
1022     sb      $t2, 2($a0)
1023 tile01111000:
1024     or      $t3, $t3, $a2
1025     sb      $t3, 3($a0)
1026 tile01110000:
1027     or      $t4, $t4, $a2
1028     sb      $t4, 4($a0)
1029 tile01100000:
1030     or      $t5, $t5, $a2
1031     sb      $t5, 5($a0)
1032 tile01000000:
1033     or      $t6, $t6, $a2
1034     jr      $ra
1035     sb      $t6, 6($a0)
1036 tile00000000:
1037 tile01111101:
1038     or      $t0, $t0, $a2
1039     sb      $t0, 0($a0)
1040     or      $t2, $t2, $a2
1041     sb      $t2, 2($a0)
1042     or      $t3, $t3, $a2
1043     sb      $t3, 3($a0)
1044     or      $t4, $t4, $a2
1045     sb      $t4, 4($a0)
1046     or      $t5, $t5, $a2
1047     sb      $t5, 5($a0)
1048     or      $t6, $t6, $a2
1049     jr      $ra
1050     sb      $t6, 6($a0)
1051 tile01111011:
1052     or      $t0, $t0, $a2
1053     sb      $t0, 0($a0)
1054 tile01111010:
1055     or      $t1, $t1, $a2
1056     sb      $t1, 1($a0)
1057     or      $t3, $t3, $a2
1058     sb      $t3, 3($a0)
1059     or      $t4, $t4, $a2
1060     sb      $t4, 4($a0)
1061     or      $t5, $t5, $a2
1062     sb      $t5, 5($a0)
1063     or      $t6, $t6, $a2
1064     jr      $ra
1065     sb      $t6, 6($a0)
1066 tile01111001:
1067     or      $t0, $t0, $a2
1068     sb      $t0, 0($a0)
1069     or      $t3, $t3, $a2
1070     sb      $t3, 3($a0)
1071     or      $t4, $t4, $a2
1072     sb      $t4, 4($a0)
1073     or      $t5, $t5, $a2
1074     sb      $t5, 5($a0)
1075     or      $t6, $t6, $a2
1076     jr      $ra
1077     sb      $t6, 6($a0)
1078 tile01110111:
1079     or      $t0, $t0, $a2
1080     sb      $t0, 0($a0)
1081 tile01110110:
1082     or      $t1, $t1, $a2
1083     sb      $t1, 1($a0)
1084 tile01110100:
1085     or      $t2, $t2, $a2
1086     sb      $t2, 2($a0)
1087     or      $t4, $t4, $a2
1088     sb      $t4, 4($a0)
1089     or      $t5, $t5, $a2
1090     sb      $t5, 5($a0)
1091     or      $t6, $t6, $a2
1092     jr      $ra
1093     sb      $t6, 6($a0)
1094 tile01110101:
1095     or      $t0, $t0, $a2
1096     sb      $t0, 0($a0)
1097     or      $t2, $t2, $a2
1098     sb      $t2, 2($a0)
1099     or      $t4, $t4, $a2
1100     sb      $t4, 4($a0)
1101     or      $t5, $t5, $a2
1102     sb      $t5, 5($a0)
1103     or      $t6, $t6, $a2
1104     jr      $ra
1105     sb      $t6, 6($a0)
1106 tile01110011:
1107     or      $t0, $t0, $a2
1108     sb      $t0, 0($a0)
1109 tile01110010:
1110     or      $t1, $t1, $a2
1111     sb      $t1, 1($a0)
1112     or      $t4, $t4, $a2
1113     sb      $t4, 4($a0)
1114     or      $t5, $t5, $a2
1115     sb      $t5, 5($a0)
1116     or      $t6, $t6, $a2
1117     jr      $ra
1118     sb      $t6, 6($a0)
1119 tile01110001:
1120     or      $t0, $t0, $a2
1121     sb      $t0, 0($a0)
1122     or      $t4, $t4, $a2
1123     sb      $t4, 4($a0)
1124     or      $t5, $t5, $a2
1125     sb      $t5, 5($a0)
1126     or      $t6, $t6, $a2
1127     jr      $ra
1128     sb      $t6, 6($a0)
1129 tile01101111:
1130     or      $t0, $t0, $a2
1131     sb      $t0, 0($a0)
1132 tile01101110:
1133     or      $t1, $t1, $a2
1134     sb      $t1, 1($a0)
1135 tile01101100:
1136     or      $t2, $t2, $a2
1137     sb      $t2, 2($a0)
1138 tile01101000:
1139     or      $t3, $t3, $a2
1140     sb      $t3, 3($a0)
1141     or      $t5, $t5, $a2
1142     sb      $t5, 5($a0)
1143     or      $t6, $t6, $a2
1144     jr      $ra
1145     sb      $t6, 6($a0)
1146 tile01101101:
1147     or      $t0, $t0, $a2
1148     sb      $t0, 0($a0)
1149     or      $t2, $t2, $a2
1150     sb      $t2, 2($a0)
1151     or      $t3, $t3, $a2
1152     sb      $t3, 3($a0)
1153     or      $t5, $t5, $a2
1154     sb      $t5, 5($a0)
1155     or      $t6, $t6, $a2
1156     jr      $ra
1157     sb      $t6, 6($a0)
1158 tile01101011:
1159     or      $t0, $t0, $a2
1160     sb      $t0, 0($a0)
1161 tile01101010:
1162     or      $t1, $t1, $a2
1163     sb      $t1, 1($a0)
1164     or      $t3, $t3, $a2
1165     sb      $t3, 3($a0)
1166     or      $t5, $t5, $a2
1167     sb      $t5, 5($a0)
1168     or      $t6, $t6, $a2
1169     jr      $ra
1170     sb      $t6, 6($a0)
1171 tile01101001:
1172     or      $t0, $t0, $a2
1173     sb      $t0, 0($a0)
1174     or      $t3, $t3, $a2
1175     sb      $t3, 3($a0)
1176     or      $t5, $t5, $a2
1177     sb      $t5, 5($a0)
1178     or      $t6, $t6, $a2
1179     jr      $ra
1180     sb      $t6, 6($a0)
1181 tile01100111:
1182     or      $t0, $t0, $a2
1183     sb      $t0, 0($a0)
1184 tile01100110:
1185     or      $t1, $t1, $a2
1186     sb      $t1, 1($a0)
1187 tile01100100:
1188     or      $t2, $t2, $a2
1189     sb      $t2, 2($a0)
1190     or      $t5, $t5, $a2
1191     sb      $t5, 5($a0)
1192     or      $t6, $t6, $a2
1193     jr      $ra
1194     sb      $t6, 6($a0)
1195 tile01100101:
1196     or      $t0, $t0, $a2
1197     sb      $t0, 0($a0)
1198     or      $t2, $t2, $a2
1199     sb      $t2, 2($a0)
1200     or      $t5, $t5, $a2
1201     sb      $t5, 5($a0)
1202     or      $t6, $t6, $a2
1203     jr      $ra
1204     sb      $t6, 6($a0)
1205 tile01100011:
1206     or      $t0, $t0, $a2
1207     sb      $t0, 0($a0)
1208 tile01100010:
1209     or      $t1, $t1, $a2
1210     sb      $t1, 1($a0)
1211     or      $t5, $t5, $a2
1212     sb      $t5, 5($a0)
1213     or      $t6, $t6, $a2
1214     jr      $ra
1215     sb      $t6, 6($a0)
1216 tile01100001:
1217     or      $t0, $t0, $a2
1218     sb      $t0, 0($a0)
1219     or      $t5, $t5, $a2
1220     sb      $t5, 5($a0)
1221     or      $t6, $t6, $a2
1222     jr      $ra
1223     sb      $t6, 6($a0)
1224 tile01011111:
1225     or      $t0, $t0, $a2
1226     sb      $t0, 0($a0)
1227 tile01011110:
1228     or      $t1, $t1, $a2
1229     sb      $t1, 1($a0)
1230 tile01011100:
1231     or      $t2, $t2, $a2
1232     sb      $t2, 2($a0)
1233 tile01011000:
1234     or      $t3, $t3, $a2
1235     sb      $t3, 3($a0)
1236 tile01010000:
1237     or      $t4, $t4, $a2
1238     sb      $t4, 4($a0)
1239     or      $t6, $t6, $a2
1240     jr      $ra
1241     sb      $t6, 6($a0)
1242 tile01011101:
1243     or      $t0, $t0, $a2
1244     sb      $t0, 0($a0)
1245     or      $t2, $t2, $a2
1246     sb      $t2, 2($a0)
1247     or      $t3, $t3, $a2
1248     sb      $t3, 3($a0)
1249     or      $t4, $t4, $a2
1250     sb      $t4, 4($a0)
1251     or      $t6, $t6, $a2
1252     jr      $ra
1253     sb      $t6, 6($a0)
1254 tile01011011:
1255     or      $t0, $t0, $a2
1256     sb      $t0, 0($a0)
1257 tile01011010:
1258     or      $t1, $t1, $a2
1259     sb      $t1, 1($a0)
1260     or      $t3, $t3, $a2
1261     sb      $t3, 3($a0)
1262     or      $t4, $t4, $a2
1263     sb      $t4, 4($a0)
1264     or      $t6, $t6, $a2
1265     jr      $ra
1266     sb      $t6, 6($a0)
1267 tile01011001:
1268     or      $t0, $t0, $a2
1269     sb      $t0, 0($a0)
1270     or      $t3, $t3, $a2
1271     sb      $t3, 3($a0)
1272     or      $t4, $t4, $a2
1273     sb      $t4, 4($a0)
1274     or      $t6, $t6, $a2
1275     jr      $ra
1276     sb      $t6, 6($a0)
1277 tile01010111:
1278     or      $t0, $t0, $a2
1279     sb      $t0, 0($a0)
1280 tile01010110:
1281     or      $t1, $t1, $a2
1282     sb      $t1, 1($a0)
1283 tile01010100:
1284     or      $t2, $t2, $a2
1285     sb      $t2, 2($a0)
1286     or      $t4, $t4, $a2
1287     sb      $t4, 4($a0)
1288     or      $t6, $t6, $a2
1289     jr      $ra
1290     sb      $t6, 6($a0)
1291 tile01010101:
1292     or      $t0, $t0, $a2
1293     sb      $t0, 0($a0)
1294     or      $t2, $t2, $a2
1295     sb      $t2, 2($a0)
1296     or      $t4, $t4, $a2
1297     sb      $t4, 4($a0)
1298     or      $t6, $t6, $a2
1299     jr      $ra
1300     sb      $t6, 6($a0)
1301 tile01010011:
1302     or      $t0, $t0, $a2
1303     sb      $t0, 0($a0)
1304 tile01010010:
1305     or      $t1, $t1, $a2
1306     sb      $t1, 1($a0)
1307     or      $t4, $t4, $a2
1308     sb      $t4, 4($a0)
1309     or      $t6, $t6, $a2
1310     jr      $ra
1311     sb      $t6, 6($a0)
1312 tile01010001:
1313     or      $t0, $t0, $a2
1314     sb      $t0, 0($a0)
1315     or      $t4, $t4, $a2
1316     sb      $t4, 4($a0)
1317     or      $t6, $t6, $a2
1318     jr      $ra
1319     sb      $t6, 6($a0)
1320 tile01001111:
1321     or      $t0, $t0, $a2
1322     sb      $t0, 0($a0)
1323 tile01001110:
1324     or      $t1, $t1, $a2
1325     sb      $t1, 1($a0)
1326 tile01001100:
1327     or      $t2, $t2, $a2
1328     sb      $t2, 2($a0)
1329 tile01001000:
1330     or      $t3, $t3, $a2
1331     sb      $t3, 3($a0)
1332     or      $t6, $t6, $a2
1333     jr      $ra
1334     sb      $t6, 6($a0)
1335 tile01001101:
1336     or      $t0, $t0, $a2
1337     sb      $t0, 0($a0)
1338     or      $t2, $t2, $a2
1339     sb      $t2, 2($a0)
1340     or      $t3, $t3, $a2
1341     sb      $t3, 3($a0)
1342     or      $t6, $t6, $a2
1343     jr      $ra
1344     sb      $t6, 6($a0)
1345 tile01001011:
1346     or      $t0, $t0, $a2
1347     sb      $t0, 0($a0)
1348 tile01001010:
1349     or      $t1, $t1, $a2
1350     sb      $t1, 1($a0)
1351     or      $t3, $t3, $a2
1352     sb      $t3, 3($a0)
1353     or      $t6, $t6, $a2
1354     jr      $ra
1355     sb      $t6, 6($a0)
1356 tile01001001:
1357     or      $t0, $t0, $a2
1358     sb      $t0, 0($a0)
1359     or      $t3, $t3, $a2
1360     sb      $t3, 3($a0)
1361     or      $t6, $t6, $a2
1362     jr      $ra
1363     sb      $t6, 6($a0)
1364 tile01000111:
1365     or      $t0, $t0, $a2
1366     sb      $t0, 0($a0)
1367 tile01000110:
1368     or      $t1, $t1, $a2
1369     sb      $t1, 1($a0)
1370 tile01000100:
1371     or      $t2, $t2, $a2
1372     sb      $t2, 2($a0)
1373     or      $t6, $t6, $a2
1374     jr      $ra
1375     sb      $t6, 6($a0)
1376 tile01000101:
1377     or      $t0, $t0, $a2
1378     sb      $t0, 0($a0)
1379     or      $t2, $t2, $a2
1380     sb      $t2, 2($a0)
1381     or      $t6, $t6, $a2
1382     jr      $ra
1383     sb      $t6, 6($a0)
1384 tile01000011:
1385     or      $t0, $t0, $a2
1386     sb      $t0, 0($a0)
1387 tile01000010:
1388     or      $t1, $t1, $a2
1389     sb      $t1, 1($a0)
1390     or      $t6, $t6, $a2
1391     jr      $ra
1392     sb      $t6, 6($a0)
1393 tile01000001:
1394     or      $t0, $t0, $a2
1395     sb      $t0, 0($a0)
1396     or      $t6, $t6, $a2
1397     jr      $ra
1398     sb      $t6, 6($a0)
1399 tile00111111:
1400     or      $t0, $t0, $a2
1401     sb      $t0, 0($a0)
1402 tile00111110:
1403     or      $t1, $t1, $a2
1404     sb      $t1, 1($a0)
1405 tile00111100:
1406     or      $t2, $t2, $a2
1407     sb      $t2, 2($a0)
1408 tile00111000:
1409     or      $t3, $t3, $a2
1410     sb      $t3, 3($a0)
1411 tile00110000:
1412     or      $t4, $t4, $a2
1413     sb      $t4, 4($a0)
1414 tile00100000:
1415     or      $t5, $t5, $a2
1416     jr      $ra
1417     sb      $t5, 5($a0)
1418 tile00111101:
1419     or      $t0, $t0, $a2
1420     sb      $t0, 0($a0)
1421     or      $t2, $t2, $a2
1422     sb      $t2, 2($a0)
1423     or      $t3, $t3, $a2
1424     sb      $t3, 3($a0)
1425     or      $t4, $t4, $a2
1426     sb      $t4, 4($a0)
1427     or      $t5, $t5, $a2
1428     jr      $ra
1429     sb      $t5, 5($a0)
1430 tile00111011:
1431     or      $t0, $t0, $a2
1432     sb      $t0, 0($a0)
1433 tile00111010:
1434     or      $t1, $t1, $a2
1435     sb      $t1, 1($a0)
1436     or      $t3, $t3, $a2
1437     sb      $t3, 3($a0)
1438     or      $t4, $t4, $a2
1439     sb      $t4, 4($a0)
1440     or      $t5, $t5, $a2
1441     jr      $ra
1442     sb      $t5, 5($a0)
1443 tile00111001:
1444     or      $t0, $t0, $a2
1445     sb      $t0, 0($a0)
1446     or      $t3, $t3, $a2
1447     sb      $t3, 3($a0)
1448     or      $t4, $t4, $a2
1449     sb      $t4, 4($a0)
1450     or      $t5, $t5, $a2
1451     jr      $ra
1452     sb      $t5, 5($a0)
1453 tile00110111:
1454     or      $t0, $t0, $a2
1455     sb      $t0, 0($a0)
1456 tile00110110:
1457     or      $t1, $t1, $a2
1458     sb      $t1, 1($a0)
1459 tile00110100:
1460     or      $t2, $t2, $a2
1461     sb      $t2, 2($a0)
1462     or      $t4, $t4, $a2
1463     sb      $t4, 4($a0)
1464     or      $t5, $t5, $a2
1465     jr      $ra
1466     sb      $t5, 5($a0)
1467 tile00110101:
1468     or      $t0, $t0, $a2
1469     sb      $t0, 0($a0)
1470     or      $t2, $t2, $a2
1471     sb      $t2, 2($a0)
1472     or      $t4, $t4, $a2
1473     sb      $t4, 4($a0)
1474     or      $t5, $t5, $a2
1475     jr      $ra
1476     sb      $t5, 5($a0)
1477 tile00110011:
1478     or      $t0, $t0, $a2
1479     sb      $t0, 0($a0)
1480 tile00110010:
1481     or      $t1, $t1, $a2
1482     sb      $t1, 1($a0)
1483     or      $t4, $t4, $a2
1484     sb      $t4, 4($a0)
1485     or      $t5, $t5, $a2
1486     jr      $ra
1487     sb      $t5, 5($a0)
1488 tile00110001:
1489     or      $t0, $t0, $a2
1490     sb      $t0, 0($a0)
1491     or      $t4, $t4, $a2
1492     sb      $t4, 4($a0)
1493     or      $t5, $t5, $a2
1494     jr      $ra
1495     sb      $t5, 5($a0)
1496 tile00101111:
1497     or      $t0, $t0, $a2
1498     sb      $t0, 0($a0)
1499 tile00101110:
1500     or      $t1, $t1, $a2
1501     sb      $t1, 1($a0)
1502 tile00101100:
1503     or      $t2, $t2, $a2
1504     sb      $t2, 2($a0)
1505 tile00101000:
1506     or      $t3, $t3, $a2
1507     sb      $t3, 3($a0)
1508     or      $t5, $t5, $a2
1509     jr      $ra
1510     sb      $t5, 5($a0)
1511 tile00101101:
1512     or      $t0, $t0, $a2
1513     sb      $t0, 0($a0)
1514     or      $t2, $t2, $a2
1515     sb      $t2, 2($a0)
1516     or      $t3, $t3, $a2
1517     sb      $t3, 3($a0)
1518     or      $t5, $t5, $a2
1519     jr      $ra
1520     sb      $t5, 5($a0)
1521 tile00101011:
1522     or      $t0, $t0, $a2
1523     sb      $t0, 0($a0)
1524 tile00101010:
1525     or      $t1, $t1, $a2
1526     sb      $t1, 1($a0)
1527     or      $t3, $t3, $a2
1528     sb      $t3, 3($a0)
1529     or      $t5, $t5, $a2
1530     jr      $ra
1531     sb      $t5, 5($a0)
1532 tile00101001:
1533     or      $t0, $t0, $a2
1534     sb      $t0, 0($a0)
1535     or      $t3, $t3, $a2
1536     sb      $t3, 3($a0)
1537     or      $t5, $t5, $a2
1538     jr      $ra
1539     sb      $t5, 5($a0)
1540 tile00100111:
1541     or      $t0, $t0, $a2
1542     sb      $t0, 0($a0)
1543 tile00100110:
1544     or      $t1, $t1, $a2
1545     sb      $t1, 1($a0)
1546 tile00100100:
1547     or      $t2, $t2, $a2
1548     sb      $t2, 2($a0)
1549     or      $t5, $t5, $a2
1550     jr      $ra
1551     sb      $t5, 5($a0)
1552 tile00100101:
1553     or      $t0, $t0, $a2
1554     sb      $t0, 0($a0)
1555     or      $t2, $t2, $a2
1556     sb      $t2, 2($a0)
1557     or      $t5, $t5, $a2
1558     jr      $ra
1559     sb      $t5, 5($a0)
1560 tile00100011:
1561     or      $t0, $t0, $a2
1562     sb      $t0, 0($a0)
1563 tile00100010:
1564     or      $t1, $t1, $a2
1565     sb      $t1, 1($a0)
1566     or      $t5, $t5, $a2
1567     jr      $ra
1568     sb      $t5, 5($a0)
1569 tile00100001:
1570     or      $t0, $t0, $a2
1571     sb      $t0, 0($a0)
1572     or      $t5, $t5, $a2
1573     jr      $ra
1574     sb      $t5, 5($a0)
1575 tile00011111:
1576     or      $t0, $t0, $a2
1577     sb      $t0, 0($a0)
1578 tile00011110:
1579     or      $t1, $t1, $a2
1580     sb      $t1, 1($a0)
1581 tile00011100:
1582     or      $t2, $t2, $a2
1583     sb      $t2, 2($a0)
1584 tile00011000:
1585     or      $t3, $t3, $a2
1586     sb      $t3, 3($a0)
1587 tile00010000:
1588     or      $t4, $t4, $a2
1589     jr      $ra
1590     sb      $t4, 4($a0)
1591 tile00011101:
1592     or      $t0, $t0, $a2
1593     sb      $t0, 0($a0)
1594     or      $t2, $t2, $a2
1595     sb      $t2, 2($a0)
1596     or      $t3, $t3, $a2
1597     sb      $t3, 3($a0)
1598     or      $t4, $t4, $a2
1599     jr      $ra
1600     sb      $t4, 4($a0)
1601 tile00011011:
1602     or      $t0, $t0, $a2
1603     sb      $t0, 0($a0)
1604 tile00011010:
1605     or      $t1, $t1, $a2
1606     sb      $t1, 1($a0)
1607     or      $t3, $t3, $a2
1608     sb      $t3, 3($a0)
1609     or      $t4, $t4, $a2
1610     jr      $ra
1611     sb      $t4, 4($a0)
1612 tile00011001:
1613     or      $t0, $t0, $a2
1614     sb      $t0, 0($a0)
1615     or      $t3, $t3, $a2
1616     sb      $t3, 3($a0)
1617     or      $t4, $t4, $a2
1618     jr      $ra
1619     sb      $t4, 4($a0)
1620 tile00010111:
1621     or      $t0, $t0, $a2
1622     sb      $t0, 0($a0)
1623 tile00010110:
1624     or      $t1, $t1, $a2
1625     sb      $t1, 1($a0)
1626 tile00010100:
1627     or      $t2, $t2, $a2
1628     sb      $t2, 2($a0)
1629     or      $t4, $t4, $a2
1630     jr      $ra
1631     sb      $t4, 4($a0)
1632 tile00010101:
1633     or      $t0, $t0, $a2
1634     sb      $t0, 0($a0)
1635     or      $t2, $t2, $a2
1636     sb      $t2, 2($a0)
1637     or      $t4, $t4, $a2
1638     jr      $ra
1639     sb      $t4, 4($a0)
1640 tile00010011:
1641     or      $t0, $t0, $a2
1642     sb      $t0, 0($a0)
1643 tile00010010:
1644     or      $t1, $t1, $a2
1645     sb      $t1, 1($a0)
1646     or      $t4, $t4, $a2
1647     jr      $ra
1648     sb      $t4, 4($a0)
1649 tile00010001:
1650     or      $t0, $t0, $a2
1651     sb      $t0, 0($a0)
1652     or      $t4, $t4, $a2
1653     jr      $ra
1654     sb      $t4, 4($a0)
1655 tile00001111:
1656     or      $t0, $t0, $a2
1657     sb      $t0, 0($a0)
1658 tile00001110:
1659     or      $t1, $t1, $a2
1660     sb      $t1, 1($a0)
1661 tile00001100:
1662     or      $t2, $t2, $a2
1663     sb      $t2, 2($a0)
1664 tile00001000:
1665     or      $t3, $t3, $a2
1666     jr      $ra
1667     sb      $t3, 3($a0)
1668 tile00001101:
1669     or      $t0, $t0, $a2
1670     sb      $t0, 0($a0)
1671     or      $t2, $t2, $a2
1672     sb      $t2, 2($a0)
1673     or      $t3, $t3, $a2
1674     jr      $ra
1675     sb      $t3, 3($a0)
1676 tile00001011:
1677     or      $t0, $t0, $a2
1678     sb      $t0, 0($a0)
1679 tile00001010:
1680     or      $t1, $t1, $a2
1681     sb      $t1, 1($a0)
1682     or      $t3, $t3, $a2
1683     jr      $ra
1684     sb      $t3, 3($a0)
1685 tile00001001:
1686     or      $t0, $t0, $a2
1687     sb      $t0, 0($a0)
1688     or      $t3, $t3, $a2
1689     jr      $ra
1690     sb      $t3, 3($a0)
1691 tile00000111:
1692     or      $t0, $t0, $a2
1693     sb      $t0, 0($a0)
1694 tile00000110:
1695     or      $t1, $t1, $a2
1696     sb      $t1, 1($a0)
1697 tile00000100:
1698     or      $t2, $t2, $a2
1699     jr      $ra
1700     sb      $t2, 2($a0)
1701 tile00000101:
1702     or      $t0, $t0, $a2
1703     sb      $t0, 0($a0)
1704     or      $t2, $t2, $a2
1705     jr      $ra
1706     sb      $t2, 2($a0)
1707 tile00000011:
1708     or      $t0, $t0, $a2
1709     sb      $t0, 0($a0)
1710 tile00000010:
1711     or      $t1, $t1, $a2
1712     jr      $ra
1713     sb      $t1, 1($a0)
1714 tile00000001:
1715     or      $t0, $t0, $a2
1716     jr      $ra
1717     sb      $t0, 0($a0)
1718
1719 .data
1720 .align 4
1721
1722 TileTable:
1723   .long 000000000000, tile00000001, tile00000010, tile00000011, tile00000100, tile00000101, tile00000110, tile00000111
1724   .long tile00001000, tile00001001, tile00001010, tile00001011, tile00001100, tile00001101, tile00001110, tile00001111
1725   .long tile00010000, tile00010001, tile00010010, tile00010011, tile00010100, tile00010101, tile00010110, tile00010111
1726   .long tile00011000, tile00011001, tile00011010, tile00011011, tile00011100, tile00011101, tile00011110, tile00011111
1727   .long tile00100000, tile00100001, tile00100010, tile00100011, tile00100100, tile00100101, tile00100110, tile00100111
1728   .long tile00101000, tile00101001, tile00101010, tile00101011, tile00101100, tile00101101, tile00101110, tile00101111
1729   .long tile00110000, tile00110001, tile00110010, tile00110011, tile00110100, tile00110101, tile00110110, tile00110111
1730   .long tile00111000, tile00111001, tile00111010, tile00111011, tile00111100, tile00111101, tile00111110, tile00111111
1731   .long tile01000000, tile01000001, tile01000010, tile01000011, tile01000100, tile01000101, tile01000110, tile01000111
1732   .long tile01001000, tile01001001, tile01001010, tile01001011, tile01001100, tile01001101, tile01001110, tile01001111
1733   .long tile01010000, tile01010001, tile01010010, tile01010011, tile01010100, tile01010101, tile01010110, tile01010111
1734   .long tile01011000, tile01011001, tile01011010, tile01011011, tile01011100, tile01011101, tile01011110, tile01011111
1735   .long tile01100000, tile01100001, tile01100010, tile01100011, tile01100100, tile01100101, tile01100110, tile01100111
1736   .long tile01101000, tile01101001, tile01101010, tile01101011, tile01101100, tile01101101, tile01101110, tile01101111
1737   .long tile01110000, tile01110001, tile01110010, tile01110011, tile01110100, tile01110101, tile01110110, tile01110111
1738   .long tile01111000, tile01111001, tile01111010, tile01111011, tile01111100, tile01111101, tile01111110, tile01111111
1739   .long tile10000000, tile10000001, tile10000010, tile10000011, tile10000100, tile10000101, tile10000110, tile10000111
1740   .long tile10001000, tile10001001, tile10001010, tile10001011, tile10001100, tile10001101, tile10001110, tile10001111
1741   .long tile10010000, tile10010001, tile10010010, tile10010011, tile10010100, tile10010101, tile10010110, tile10010111
1742   .long tile10011000, tile10011001, tile10011010, tile10011011, tile10011100, tile10011101, tile10011110, tile10011111
1743   .long tile10100000, tile10100001, tile10100010, tile10100011, tile10100100, tile10100101, tile10100110, tile10100111
1744   .long tile10101000, tile10101001, tile10101010, tile10101011, tile10101100, tile10101101, tile10101110, tile10101111
1745   .long tile10110000, tile10110001, tile10110010, tile10110011, tile10110100, tile10110101, tile10110110, tile10110111
1746   .long tile10111000, tile10111001, tile10111010, tile10111011, tile10111100, tile10111101, tile10111110, tile10111111
1747   .long tile11000000, tile11000001, tile11000010, tile11000011, tile11000100, tile11000101, tile11000110, tile11000111
1748   .long tile11001000, tile11001001, tile11001010, tile11001011, tile11001100, tile11001101, tile11001110, tile11001111
1749   .long tile11010000, tile11010001, tile11010010, tile11010011, tile11010100, tile11010101, tile11010110, tile11010111
1750   .long tile11011000, tile11011001, tile11011010, tile11011011, tile11011100, tile11011101, tile11011110, tile11011111
1751   .long tile11100000, tile11100001, tile11100010, tile11100011, tile11100100, tile11100101, tile11100110, tile11100111
1752   .long tile11101000, tile11101001, tile11101010, tile11101011, tile11101100, tile11101101, tile11101110, tile11101111
1753   .long tile11110000, tile11110001, tile11110010, tile11110011, tile11110100, tile11110101, tile11110110, tile11110111
1754   .long tile11111000, tile11111001, tile11111010, tile11111011, tile11111100, tile11111101, tile11111110, tile11111111
1755
1756 # vim:filetype=mips