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