New test.
[mono.git] / mono / arch / mips / test.c
1 #include "mips-codegen.h"
2 #include <stdlib.h>
3
4 int main () {
5         unsigned int *code, * p;
6
7         code = p = malloc (sizeof (int) * 1024);
8         
9         mips_add (p, 3, 4, 5);
10         mips_addi (p, 3, 4, 5);
11         mips_addu (p, 3, 4, 5);
12         mips_addiu (p, 3, 4, 5);
13         mips_sub (p, 3, 4, 5);
14         mips_subu (p, 3, 4, 5);
15         mips_dadd (p, 3, 4, 5);
16         mips_daddi (p, 3, 4, 5);
17         mips_daddu (p, 3, 4, 5);
18         mips_daddiu (p, 3, 4, 5);
19         mips_dsub (p, 3, 4, 5);
20         mips_dsubu (p, 3, 4, 5);
21
22         mips_mult (p, 6, 7);
23         mips_multu (p, 6, 7);
24         mips_div (p, 6, 7);
25         mips_divu (p, 6, 7);
26         mips_dmult (p, 6, 7);
27         mips_dmultu (p, 6, 7);
28         mips_ddiv (p, 6, 7);
29         mips_ddivu (p, 6, 7);
30
31         mips_sll (p, 3, 4, 5);
32         mips_sllv (p, 3, 4, 5);
33         mips_sra (p, 3, 4, 5);
34         mips_srav (p, 3, 4, 5);
35         mips_srl (p, 3, 4, 5);
36         mips_srlv (p, 3, 4, 5);
37         mips_dsll (p, 3, 4, 5);
38         mips_dsll32 (p, 3, 4, 5);
39         mips_dsllv (p, 3, 4, 5);
40         mips_dsra (p, 3, 4, 5);
41         mips_dsra32 (p, 3, 4, 5);
42         mips_dsrav (p, 3, 4, 5);
43         mips_dsrl (p, 3, 4, 5);
44         mips_dsrl32 (p, 3, 4, 5);
45         mips_dsrlv (p, 3, 4, 5);
46
47         mips_and (p, 8, 9, 10);
48         mips_andi (p, 8, 9, 10);
49         mips_nor (p, 8, 9, 10);
50         mips_or (p, 8, 9, 10);
51         mips_ori (p, 8, 9, 10);
52         mips_xor (p, 8, 9, 10);
53         mips_xori (p, 8, 9, 10);
54
55         mips_slt (p, 8, 9, 10);
56         mips_slti (p, 8, 9, 10);
57         mips_sltu (p, 8, 9, 10);
58         mips_sltiu (p, 8, 9, 10);
59
60         mips_beq (p, 8, 9, 0xff1f);
61         mips_beql (p, 8, 9, 0xff1f);
62         mips_bne (p, 8, 9, 0xff1f);
63         mips_bnel (p, 8, 9, 0xff1f);
64         mips_bgez (p, 11, 0xff1f);
65         mips_bgezal (p, 11, 0xff1f);
66         mips_bgezall (p, 11, 0xff1f);
67         mips_bgezl (p, 11, 0xff1f);
68         mips_bgtz (p, 11, 0xff1f);
69         mips_bgtzl (p, 11, 0xff1f);
70         mips_blez (p, 11, 0xff1f);
71         mips_blezl (p, 11, 0xff1f);
72         mips_bltz (p, 11, 0xff1f);
73         mips_bltzal (p, 11, 0xff1f);
74         mips_bltzall (p, 11, 0xff1f);
75         mips_bltzl (p, 11, 0xff1f);
76
77         mips_jump (p, 0xff1f);
78         mips_jumpl (p, 0xff1f);
79         mips_jalr (p, 12, mips_ra);
80         mips_jr (p, 12);
81
82         mips_lb (p, 13, 14, 128);
83         mips_lbu (p, 13, 14, 128);
84         mips_ld (p, 13, 14, 128);
85         mips_ldl (p, 13, 14, 128);
86         mips_ldr (p, 13, 14, 128);
87         mips_lh (p, 13, 14, 128);
88         mips_lhu (p, 13, 14, 128);
89         mips_ll (p, 13, 14, 128);
90         mips_lld (p, 13, 14, 128);
91         mips_lui (p, 13, 14, 128);
92         mips_lw (p, 13, 14, 128);
93         mips_lwl (p, 13, 14, 128);
94         mips_lwr (p, 13, 14, 128);
95         mips_lwu (p, 13, 14, 128);
96         mips_sb (p, 13, 14, 128);
97         mips_sc (p, 13, 14, 128);
98         mips_scd (p, 13, 14, 128);
99         mips_sd (p, 13, 14, 128);
100         mips_sdl (p, 13, 14, 128);
101         mips_sdr (p, 13, 14, 128);
102         mips_sh (p, 13, 14, 128);
103         mips_sw (p, 13, 14, 128);
104         mips_swl (p, 13, 14, 128);
105         mips_swr (p, 13, 14, 128);
106
107         mips_move (p, 15, 16);
108         mips_nop (p);
109         mips_break (p, 0);
110         mips_sync (p, 0);
111         mips_mfhi (p, 17);
112         mips_mflo (p, 17);
113         mips_mthi (p, 17);
114         mips_mtlo (p, 17);
115
116         mips_fabsd (p, 16, 18);
117         mips_fnegd (p, 16, 18);
118         mips_fsqrtd (p, 16, 18);
119         mips_faddd (p, 16, 18, 20);
120         mips_fdivd (p, 16, 18, 20);
121         mips_fmuld (p, 16, 18, 20);
122         mips_fsubd (p, 16, 18, 20);
123
124         mips_fcmpd (p, MIPS_FPU_EQ, 18, 20);
125         mips_fbfalse (p, 0xff1f);
126         mips_fbfalsel (p, 0xff1f);
127         mips_fbtrue (p, 0xff1f);
128         mips_fbtruel (p, 0xff1f);
129
130         mips_ceilwd (p, 20, 22);
131         mips_ceilld (p, 20, 22);
132         mips_floorwd (p, 20, 22);
133         mips_floorld (p, 20, 22);
134         mips_roundwd (p, 20, 22);
135         mips_roundld (p, 20, 22);
136         mips_truncwd (p, 20, 22);
137         mips_truncld (p, 20, 22);
138         mips_cvtdw (p, 20, 22);
139         mips_cvtds (p, 20, 22);
140         mips_cvtdl (p, 20, 22);
141         mips_cvtld (p, 20, 22);
142         mips_cvtsd (p, 20, 22);
143         mips_cvtwd (p, 20, 22);
144
145         mips_fmovd (p, 20, 22);
146         printf ("size: %d\n", p - code);
147
148         return 0;
149 }