Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1156)

Side by Side Diff: runtime/vm/assembler_mips_test.cc

Issue 356233003: Satisfy new -Wunused-local-typedefs in gcc 4.8 in the simulators. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « runtime/vm/assembler_arm_test.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #include "vm/globals.h" 5 #include "vm/globals.h"
6 #if defined(TARGET_ARCH_MIPS) 6 #if defined(TARGET_ARCH_MIPS)
7 7
8 #include "vm/assembler.h" 8 #include "vm/assembler.h"
9 #include "vm/cpu.h" 9 #include "vm/cpu.h"
10 #include "vm/os.h" 10 #include "vm/os.h"
11 #include "vm/unit_test.h" 11 #include "vm/unit_test.h"
12 #include "vm/virtual_memory.h" 12 #include "vm/virtual_memory.h"
13 13
14 namespace dart { 14 namespace dart {
15 15
16 #define __ assembler-> 16 #define __ assembler->
17 17
18 ASSEMBLER_TEST_GENERATE(Simple, assembler) { 18 ASSEMBLER_TEST_GENERATE(Simple, assembler) {
19 __ LoadImmediate(V0, 42); 19 __ LoadImmediate(V0, 42);
20 __ jr(RA); 20 __ jr(RA);
21 } 21 }
22 22
23 23
24 ASSEMBLER_TEST_RUN(Simple, test) { 24 ASSEMBLER_TEST_RUN(Simple, test) {
25 typedef int (*SimpleCode)(); 25 typedef int (*SimpleCode)() DART_UNUSED;
26 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 26 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
27 } 27 }
28 28
29 29
30 ASSEMBLER_TEST_GENERATE(Addiu, assembler) { 30 ASSEMBLER_TEST_GENERATE(Addiu, assembler) {
31 __ addiu(V0, ZR, Immediate(42)); 31 __ addiu(V0, ZR, Immediate(42));
32 __ jr(RA); 32 __ jr(RA);
33 } 33 }
34 34
35 35
36 ASSEMBLER_TEST_RUN(Addiu, test) { 36 ASSEMBLER_TEST_RUN(Addiu, test) {
37 typedef int (*SimpleCode)(); 37 typedef int (*SimpleCode)() DART_UNUSED;
38 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 38 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
39 } 39 }
40 40
41 41
42 ASSEMBLER_TEST_GENERATE(Addiu_overflow, assembler) { 42 ASSEMBLER_TEST_GENERATE(Addiu_overflow, assembler) {
43 __ LoadImmediate(V0, 0x7fffffff); 43 __ LoadImmediate(V0, 0x7fffffff);
44 __ addiu(V0, V0, Immediate(1)); // V0 is modified on overflow. 44 __ addiu(V0, V0, Immediate(1)); // V0 is modified on overflow.
45 __ jr(RA); 45 __ jr(RA);
46 } 46 }
47 47
48 48
49 ASSEMBLER_TEST_RUN(Addiu_overflow, test) { 49 ASSEMBLER_TEST_RUN(Addiu_overflow, test) {
50 typedef int (*SimpleCode)(); 50 typedef int (*SimpleCode)() DART_UNUSED;
51 EXPECT_EQ(static_cast<int32_t>(0x80000000), 51 EXPECT_EQ(static_cast<int32_t>(0x80000000),
52 EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 52 EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
53 } 53 }
54 54
55 55
56 ASSEMBLER_TEST_GENERATE(Addu, assembler) { 56 ASSEMBLER_TEST_GENERATE(Addu, assembler) {
57 __ addiu(T2, ZR, Immediate(21)); 57 __ addiu(T2, ZR, Immediate(21));
58 __ addiu(T3, ZR, Immediate(21)); 58 __ addiu(T3, ZR, Immediate(21));
59 __ addu(V0, T2, T3); 59 __ addu(V0, T2, T3);
60 __ jr(RA); 60 __ jr(RA);
61 } 61 }
62 62
63 63
64 ASSEMBLER_TEST_RUN(Addu, test) { 64 ASSEMBLER_TEST_RUN(Addu, test) {
65 typedef int (*SimpleCode)(); 65 typedef int (*SimpleCode)() DART_UNUSED;
66 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 66 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
67 } 67 }
68 68
69 69
70 ASSEMBLER_TEST_GENERATE(Addu_overflow, assembler) { 70 ASSEMBLER_TEST_GENERATE(Addu_overflow, assembler) {
71 __ LoadImmediate(T2, 0x7fffffff); 71 __ LoadImmediate(T2, 0x7fffffff);
72 __ addiu(T3, R0, Immediate(1)); 72 __ addiu(T3, R0, Immediate(1));
73 __ addu(V0, T2, T3); 73 __ addu(V0, T2, T3);
74 __ jr(RA); 74 __ jr(RA);
75 } 75 }
76 76
77 77
78 ASSEMBLER_TEST_RUN(Addu_overflow, test) { 78 ASSEMBLER_TEST_RUN(Addu_overflow, test) {
79 typedef int (*SimpleCode)(); 79 typedef int (*SimpleCode)() DART_UNUSED;
80 EXPECT_EQ(static_cast<int32_t>(0x80000000), 80 EXPECT_EQ(static_cast<int32_t>(0x80000000),
81 EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 81 EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
82 } 82 }
83 83
84 84
85 ASSEMBLER_TEST_GENERATE(And, assembler) { 85 ASSEMBLER_TEST_GENERATE(And, assembler) {
86 __ addiu(T2, ZR, Immediate(42)); 86 __ addiu(T2, ZR, Immediate(42));
87 __ addiu(T3, ZR, Immediate(2)); 87 __ addiu(T3, ZR, Immediate(2));
88 __ and_(V0, T2, T3); 88 __ and_(V0, T2, T3);
89 __ jr(RA); 89 __ jr(RA);
90 } 90 }
91 91
92 92
93 ASSEMBLER_TEST_RUN(And, test) { 93 ASSEMBLER_TEST_RUN(And, test) {
94 typedef int (*SimpleCode)(); 94 typedef int (*SimpleCode)() DART_UNUSED;
95 EXPECT_EQ(2, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 95 EXPECT_EQ(2, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
96 } 96 }
97 97
98 98
99 ASSEMBLER_TEST_GENERATE(Andi, assembler) { 99 ASSEMBLER_TEST_GENERATE(Andi, assembler) {
100 __ addiu(T1, ZR, Immediate(42)); 100 __ addiu(T1, ZR, Immediate(42));
101 __ andi(V0, T1, Immediate(2)); 101 __ andi(V0, T1, Immediate(2));
102 __ jr(RA); 102 __ jr(RA);
103 } 103 }
104 104
105 105
106 ASSEMBLER_TEST_RUN(Andi, test) { 106 ASSEMBLER_TEST_RUN(Andi, test) {
107 typedef int (*SimpleCode)(); 107 typedef int (*SimpleCode)() DART_UNUSED;
108 EXPECT_EQ(2, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 108 EXPECT_EQ(2, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
109 } 109 }
110 110
111 111
112 ASSEMBLER_TEST_GENERATE(Clo, assembler) { 112 ASSEMBLER_TEST_GENERATE(Clo, assembler) {
113 __ addiu(T1, ZR, Immediate(-1)); 113 __ addiu(T1, ZR, Immediate(-1));
114 __ clo(V0, T1); 114 __ clo(V0, T1);
115 __ jr(RA); 115 __ jr(RA);
116 } 116 }
117 117
118 118
119 ASSEMBLER_TEST_RUN(Clo, test) { 119 ASSEMBLER_TEST_RUN(Clo, test) {
120 typedef int (*SimpleCode)(); 120 typedef int (*SimpleCode)() DART_UNUSED;
121 EXPECT_EQ(32, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 121 EXPECT_EQ(32, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
122 } 122 }
123 123
124 124
125 ASSEMBLER_TEST_GENERATE(Clz, assembler) { 125 ASSEMBLER_TEST_GENERATE(Clz, assembler) {
126 __ addiu(T1, ZR, Immediate(0x7fff)); 126 __ addiu(T1, ZR, Immediate(0x7fff));
127 __ clz(V0, T1); 127 __ clz(V0, T1);
128 __ jr(RA); 128 __ jr(RA);
129 } 129 }
130 130
131 131
132 ASSEMBLER_TEST_RUN(Clz, test) { 132 ASSEMBLER_TEST_RUN(Clz, test) {
133 typedef int (*SimpleCode)(); 133 typedef int (*SimpleCode)() DART_UNUSED;
134 EXPECT_EQ(17, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 134 EXPECT_EQ(17, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
135 } 135 }
136 136
137 137
138 ASSEMBLER_TEST_GENERATE(MtloMflo, assembler) { 138 ASSEMBLER_TEST_GENERATE(MtloMflo, assembler) {
139 __ LoadImmediate(T0, 42); 139 __ LoadImmediate(T0, 42);
140 __ mtlo(T0); 140 __ mtlo(T0);
141 __ mflo(V0); 141 __ mflo(V0);
142 __ jr(RA); 142 __ jr(RA);
143 } 143 }
144 144
145 145
146 ASSEMBLER_TEST_RUN(MtloMflo, test) { 146 ASSEMBLER_TEST_RUN(MtloMflo, test) {
147 typedef int (*SimpleCode)(); 147 typedef int (*SimpleCode)() DART_UNUSED;
148 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 148 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
149 } 149 }
150 150
151 151
152 ASSEMBLER_TEST_GENERATE(MthiMfhi, assembler) { 152 ASSEMBLER_TEST_GENERATE(MthiMfhi, assembler) {
153 __ LoadImmediate(T0, 42); 153 __ LoadImmediate(T0, 42);
154 __ mthi(T0); 154 __ mthi(T0);
155 __ mfhi(V0); 155 __ mfhi(V0);
156 __ jr(RA); 156 __ jr(RA);
157 } 157 }
158 158
159 159
160 ASSEMBLER_TEST_RUN(MthiMfhi, test) { 160 ASSEMBLER_TEST_RUN(MthiMfhi, test) {
161 typedef int (*SimpleCode)(); 161 typedef int (*SimpleCode)() DART_UNUSED;
162 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 162 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
163 } 163 }
164 164
165 165
166 ASSEMBLER_TEST_GENERATE(Divu, assembler) { 166 ASSEMBLER_TEST_GENERATE(Divu, assembler) {
167 __ addiu(T1, ZR, Immediate(27)); 167 __ addiu(T1, ZR, Immediate(27));
168 __ addiu(T2, ZR, Immediate(9)); 168 __ addiu(T2, ZR, Immediate(9));
169 __ divu(T1, T2); 169 __ divu(T1, T2);
170 __ mflo(V0); 170 __ mflo(V0);
171 __ jr(RA); 171 __ jr(RA);
172 } 172 }
173 173
174 174
175 ASSEMBLER_TEST_RUN(Divu, test) { 175 ASSEMBLER_TEST_RUN(Divu, test) {
176 typedef int (*SimpleCode)(); 176 typedef int (*SimpleCode)() DART_UNUSED;
177 EXPECT_EQ(3, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 177 EXPECT_EQ(3, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
178 } 178 }
179 179
180 180
181 ASSEMBLER_TEST_GENERATE(Div, assembler) { 181 ASSEMBLER_TEST_GENERATE(Div, assembler) {
182 __ addiu(T1, ZR, Immediate(27)); 182 __ addiu(T1, ZR, Immediate(27));
183 __ addiu(T2, ZR, Immediate(9)); 183 __ addiu(T2, ZR, Immediate(9));
184 __ div(T1, T2); 184 __ div(T1, T2);
185 __ mflo(V0); 185 __ mflo(V0);
186 __ jr(RA); 186 __ jr(RA);
187 } 187 }
188 188
189 189
190 ASSEMBLER_TEST_RUN(Div, test) { 190 ASSEMBLER_TEST_RUN(Div, test) {
191 typedef int (*SimpleCode)(); 191 typedef int (*SimpleCode)() DART_UNUSED;
192 EXPECT_EQ(3, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 192 EXPECT_EQ(3, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
193 } 193 }
194 194
195 195
196 ASSEMBLER_TEST_GENERATE(Divu_corner, assembler) { 196 ASSEMBLER_TEST_GENERATE(Divu_corner, assembler) {
197 __ LoadImmediate(T1, 0x80000000); 197 __ LoadImmediate(T1, 0x80000000);
198 __ LoadImmediate(T2, 0xffffffff); 198 __ LoadImmediate(T2, 0xffffffff);
199 __ divu(T1, T2); 199 __ divu(T1, T2);
200 __ mflo(V0); 200 __ mflo(V0);
201 __ jr(RA); 201 __ jr(RA);
202 } 202 }
203 203
204 204
205 ASSEMBLER_TEST_RUN(Divu_corner, test) { 205 ASSEMBLER_TEST_RUN(Divu_corner, test) {
206 typedef int (*SimpleCode)(); 206 typedef int (*SimpleCode)() DART_UNUSED;
207 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 207 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
208 } 208 }
209 209
210 210
211 ASSEMBLER_TEST_GENERATE(Div_corner, assembler) { 211 ASSEMBLER_TEST_GENERATE(Div_corner, assembler) {
212 __ LoadImmediate(T1, 0x80000000); 212 __ LoadImmediate(T1, 0x80000000);
213 __ LoadImmediate(T2, 0xffffffff); 213 __ LoadImmediate(T2, 0xffffffff);
214 __ div(T1, T2); 214 __ div(T1, T2);
215 __ mflo(V0); 215 __ mflo(V0);
216 __ jr(RA); 216 __ jr(RA);
217 } 217 }
218 218
219 219
220 ASSEMBLER_TEST_RUN(Div_corner, test) { 220 ASSEMBLER_TEST_RUN(Div_corner, test) {
221 typedef int (*SimpleCode)(); 221 typedef int (*SimpleCode)() DART_UNUSED;
222 EXPECT_EQ(static_cast<int32_t>(0x80000000), 222 EXPECT_EQ(static_cast<int32_t>(0x80000000),
223 EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 223 EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
224 } 224 }
225 225
226 226
227 ASSEMBLER_TEST_GENERATE(Lb, assembler) { 227 ASSEMBLER_TEST_GENERATE(Lb, assembler) {
228 __ addiu(SP, SP, Immediate(-kWordSize * 30)); 228 __ addiu(SP, SP, Immediate(-kWordSize * 30));
229 __ LoadImmediate(T1, 0xff); 229 __ LoadImmediate(T1, 0xff);
230 __ sb(T1, Address(SP)); 230 __ sb(T1, Address(SP));
231 __ lb(V0, Address(SP)); 231 __ lb(V0, Address(SP));
232 __ addiu(SP, SP, Immediate(kWordSize * 30)); 232 __ addiu(SP, SP, Immediate(kWordSize * 30));
233 __ jr(RA); 233 __ jr(RA);
234 } 234 }
235 235
236 236
237 ASSEMBLER_TEST_RUN(Lb, test) { 237 ASSEMBLER_TEST_RUN(Lb, test) {
238 typedef int (*SimpleCode)(); 238 typedef int (*SimpleCode)() DART_UNUSED;
239 EXPECT_EQ(-1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 239 EXPECT_EQ(-1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
240 } 240 }
241 241
242 242
243 ASSEMBLER_TEST_GENERATE(Lb_offset, assembler) { 243 ASSEMBLER_TEST_GENERATE(Lb_offset, assembler) {
244 __ addiu(SP, SP, Immediate(-kWordSize * 30)); 244 __ addiu(SP, SP, Immediate(-kWordSize * 30));
245 __ LoadImmediate(T1, 0xff); 245 __ LoadImmediate(T1, 0xff);
246 __ sb(T1, Address(SP, 1)); 246 __ sb(T1, Address(SP, 1));
247 __ lb(V0, Address(SP, 1)); 247 __ lb(V0, Address(SP, 1));
248 __ addiu(SP, SP, Immediate(kWordSize * 30)); 248 __ addiu(SP, SP, Immediate(kWordSize * 30));
249 __ jr(RA); 249 __ jr(RA);
250 } 250 }
251 251
252 252
253 ASSEMBLER_TEST_RUN(Lb_offset, test) { 253 ASSEMBLER_TEST_RUN(Lb_offset, test) {
254 typedef int (*SimpleCode)(); 254 typedef int (*SimpleCode)() DART_UNUSED;
255 EXPECT_EQ(-1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 255 EXPECT_EQ(-1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
256 } 256 }
257 257
258 258
259 ASSEMBLER_TEST_GENERATE(Lbu, assembler) { 259 ASSEMBLER_TEST_GENERATE(Lbu, assembler) {
260 __ addiu(SP, SP, Immediate(-kWordSize * 30)); 260 __ addiu(SP, SP, Immediate(-kWordSize * 30));
261 __ LoadImmediate(T1, 0xff); 261 __ LoadImmediate(T1, 0xff);
262 __ sb(T1, Address(SP)); 262 __ sb(T1, Address(SP));
263 __ lbu(V0, Address(SP)); 263 __ lbu(V0, Address(SP));
264 __ addiu(SP, SP, Immediate(kWordSize * 30)); 264 __ addiu(SP, SP, Immediate(kWordSize * 30));
265 __ jr(RA); 265 __ jr(RA);
266 } 266 }
267 267
268 268
269 ASSEMBLER_TEST_RUN(Lbu, test) { 269 ASSEMBLER_TEST_RUN(Lbu, test) {
270 typedef int (*SimpleCode)(); 270 typedef int (*SimpleCode)() DART_UNUSED;
271 EXPECT_EQ(255, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 271 EXPECT_EQ(255, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
272 } 272 }
273 273
274 274
275 ASSEMBLER_TEST_GENERATE(Lh, assembler) { 275 ASSEMBLER_TEST_GENERATE(Lh, assembler) {
276 __ addiu(SP, SP, Immediate(-kWordSize * 30)); 276 __ addiu(SP, SP, Immediate(-kWordSize * 30));
277 __ LoadImmediate(T1, 0xffff); 277 __ LoadImmediate(T1, 0xffff);
278 __ sh(T1, Address(SP)); 278 __ sh(T1, Address(SP));
279 __ lh(V0, Address(SP)); 279 __ lh(V0, Address(SP));
280 __ addiu(SP, SP, Immediate(kWordSize * 30)); 280 __ addiu(SP, SP, Immediate(kWordSize * 30));
281 __ jr(RA); 281 __ jr(RA);
282 } 282 }
283 283
284 284
285 ASSEMBLER_TEST_RUN(Lh, test) { 285 ASSEMBLER_TEST_RUN(Lh, test) {
286 typedef int (*SimpleCode)(); 286 typedef int (*SimpleCode)() DART_UNUSED;
287 EXPECT_EQ(-1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 287 EXPECT_EQ(-1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
288 } 288 }
289 289
290 290
291 ASSEMBLER_TEST_GENERATE(Lhu, assembler) { 291 ASSEMBLER_TEST_GENERATE(Lhu, assembler) {
292 __ addiu(SP, SP, Immediate(-kWordSize * 30)); 292 __ addiu(SP, SP, Immediate(-kWordSize * 30));
293 __ LoadImmediate(T1, 0xffff); 293 __ LoadImmediate(T1, 0xffff);
294 __ sh(T1, Address(SP)); 294 __ sh(T1, Address(SP));
295 __ lhu(V0, Address(SP)); 295 __ lhu(V0, Address(SP));
296 __ addiu(SP, SP, Immediate(kWordSize * 30)); 296 __ addiu(SP, SP, Immediate(kWordSize * 30));
297 __ jr(RA); 297 __ jr(RA);
298 } 298 }
299 299
300 300
301 ASSEMBLER_TEST_RUN(Lhu, test) { 301 ASSEMBLER_TEST_RUN(Lhu, test) {
302 typedef int (*SimpleCode)(); 302 typedef int (*SimpleCode)() DART_UNUSED;
303 EXPECT_EQ(65535, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 303 EXPECT_EQ(65535, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
304 } 304 }
305 305
306 306
307 ASSEMBLER_TEST_GENERATE(Lw, assembler) { 307 ASSEMBLER_TEST_GENERATE(Lw, assembler) {
308 __ addiu(SP, SP, Immediate(-kWordSize * 30)); 308 __ addiu(SP, SP, Immediate(-kWordSize * 30));
309 __ LoadImmediate(T1, -1); 309 __ LoadImmediate(T1, -1);
310 __ sw(T1, Address(SP)); 310 __ sw(T1, Address(SP));
311 __ lw(V0, Address(SP)); 311 __ lw(V0, Address(SP));
312 __ addiu(SP, SP, Immediate(kWordSize * 30)); 312 __ addiu(SP, SP, Immediate(kWordSize * 30));
313 __ jr(RA); 313 __ jr(RA);
314 } 314 }
315 315
316 316
317 ASSEMBLER_TEST_RUN(Lw, test) { 317 ASSEMBLER_TEST_RUN(Lw, test) {
318 typedef int (*SimpleCode)(); 318 typedef int (*SimpleCode)() DART_UNUSED;
319 EXPECT_EQ(-1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 319 EXPECT_EQ(-1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
320 } 320 }
321 321
322 322
323 ASSEMBLER_TEST_GENERATE(Lui, assembler) { 323 ASSEMBLER_TEST_GENERATE(Lui, assembler) {
324 __ lui(V0, Immediate(42)); 324 __ lui(V0, Immediate(42));
325 __ jr(RA); 325 __ jr(RA);
326 } 326 }
327 327
328 328
329 ASSEMBLER_TEST_RUN(Lui, test) { 329 ASSEMBLER_TEST_RUN(Lui, test) {
330 typedef int (*SimpleCode)(); 330 typedef int (*SimpleCode)() DART_UNUSED;
331 EXPECT_EQ(42 << 16, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 331 EXPECT_EQ(42 << 16, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
332 } 332 }
333 333
334 334
335 ASSEMBLER_TEST_GENERATE(Sll, assembler) { 335 ASSEMBLER_TEST_GENERATE(Sll, assembler) {
336 __ LoadImmediate(T1, 21); 336 __ LoadImmediate(T1, 21);
337 __ sll(V0, T1, 1); 337 __ sll(V0, T1, 1);
338 __ jr(RA); 338 __ jr(RA);
339 } 339 }
340 340
341 341
342 ASSEMBLER_TEST_RUN(Sll, test) { 342 ASSEMBLER_TEST_RUN(Sll, test) {
343 typedef int (*SimpleCode)(); 343 typedef int (*SimpleCode)() DART_UNUSED;
344 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 344 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
345 } 345 }
346 346
347 347
348 ASSEMBLER_TEST_GENERATE(Srl, assembler) { 348 ASSEMBLER_TEST_GENERATE(Srl, assembler) {
349 __ LoadImmediate(T1, 84); 349 __ LoadImmediate(T1, 84);
350 __ srl(V0, T1, 1); 350 __ srl(V0, T1, 1);
351 __ jr(RA); 351 __ jr(RA);
352 } 352 }
353 353
354 354
355 ASSEMBLER_TEST_RUN(Srl, test) { 355 ASSEMBLER_TEST_RUN(Srl, test) {
356 typedef int (*SimpleCode)(); 356 typedef int (*SimpleCode)() DART_UNUSED;
357 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 357 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
358 } 358 }
359 359
360 360
361 ASSEMBLER_TEST_GENERATE(LShifting, assembler) { 361 ASSEMBLER_TEST_GENERATE(LShifting, assembler) {
362 __ LoadImmediate(T1, 1); 362 __ LoadImmediate(T1, 1);
363 __ sll(T1, T1, 31); 363 __ sll(T1, T1, 31);
364 __ srl(V0, T1, 31); 364 __ srl(V0, T1, 31);
365 __ jr(RA); 365 __ jr(RA);
366 } 366 }
367 367
368 368
369 ASSEMBLER_TEST_RUN(LShifting, test) { 369 ASSEMBLER_TEST_RUN(LShifting, test) {
370 typedef int (*SimpleCode)(); 370 typedef int (*SimpleCode)() DART_UNUSED;
371 EXPECT_EQ(1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 371 EXPECT_EQ(1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
372 } 372 }
373 373
374 374
375 ASSEMBLER_TEST_GENERATE(RShifting, assembler) { 375 ASSEMBLER_TEST_GENERATE(RShifting, assembler) {
376 __ LoadImmediate(T1, 1); 376 __ LoadImmediate(T1, 1);
377 __ sll(T1, T1, 31); 377 __ sll(T1, T1, 31);
378 __ sra(V0, T1, 31); 378 __ sra(V0, T1, 31);
379 __ jr(RA); 379 __ jr(RA);
380 } 380 }
381 381
382 382
383 ASSEMBLER_TEST_RUN(RShifting, test) { 383 ASSEMBLER_TEST_RUN(RShifting, test) {
384 typedef int (*SimpleCode)(); 384 typedef int (*SimpleCode)() DART_UNUSED;
385 EXPECT_EQ(-1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 385 EXPECT_EQ(-1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
386 } 386 }
387 387
388 388
389 ASSEMBLER_TEST_GENERATE(Sllv, assembler) { 389 ASSEMBLER_TEST_GENERATE(Sllv, assembler) {
390 __ LoadImmediate(T1, 21); 390 __ LoadImmediate(T1, 21);
391 __ LoadImmediate(T2, 1); 391 __ LoadImmediate(T2, 1);
392 __ sllv(V0, T1, T2); 392 __ sllv(V0, T1, T2);
393 __ jr(RA); 393 __ jr(RA);
394 } 394 }
395 395
396 396
397 ASSEMBLER_TEST_RUN(Sllv, test) { 397 ASSEMBLER_TEST_RUN(Sllv, test) {
398 typedef int (*SimpleCode)(); 398 typedef int (*SimpleCode)() DART_UNUSED;
399 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 399 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
400 } 400 }
401 401
402 402
403 ASSEMBLER_TEST_GENERATE(Srlv, assembler) { 403 ASSEMBLER_TEST_GENERATE(Srlv, assembler) {
404 __ LoadImmediate(T1, 84); 404 __ LoadImmediate(T1, 84);
405 __ LoadImmediate(T2, 1); 405 __ LoadImmediate(T2, 1);
406 __ srlv(V0, T1, T2); 406 __ srlv(V0, T1, T2);
407 __ jr(RA); 407 __ jr(RA);
408 } 408 }
409 409
410 410
411 ASSEMBLER_TEST_RUN(Srlv, test) { 411 ASSEMBLER_TEST_RUN(Srlv, test) {
412 typedef int (*SimpleCode)(); 412 typedef int (*SimpleCode)() DART_UNUSED;
413 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 413 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
414 } 414 }
415 415
416 416
417 ASSEMBLER_TEST_GENERATE(LShiftingV, assembler) { 417 ASSEMBLER_TEST_GENERATE(LShiftingV, assembler) {
418 __ LoadImmediate(T1, 1); 418 __ LoadImmediate(T1, 1);
419 __ LoadImmediate(T2, 31); 419 __ LoadImmediate(T2, 31);
420 __ sllv(T1, T1, T2); 420 __ sllv(T1, T1, T2);
421 __ srlv(V0, T1, T2); 421 __ srlv(V0, T1, T2);
422 __ jr(RA); 422 __ jr(RA);
423 } 423 }
424 424
425 425
426 ASSEMBLER_TEST_RUN(LShiftingV, test) { 426 ASSEMBLER_TEST_RUN(LShiftingV, test) {
427 typedef int (*SimpleCode)(); 427 typedef int (*SimpleCode)() DART_UNUSED;
428 EXPECT_EQ(1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 428 EXPECT_EQ(1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
429 } 429 }
430 430
431 431
432 ASSEMBLER_TEST_GENERATE(RShiftingV, assembler) { 432 ASSEMBLER_TEST_GENERATE(RShiftingV, assembler) {
433 __ LoadImmediate(T1, 1); 433 __ LoadImmediate(T1, 1);
434 __ LoadImmediate(T2, 31); 434 __ LoadImmediate(T2, 31);
435 __ sllv(T1, T1, T2); 435 __ sllv(T1, T1, T2);
436 __ srav(V0, T1, T2); 436 __ srav(V0, T1, T2);
437 __ jr(RA); 437 __ jr(RA);
438 } 438 }
439 439
440 440
441 ASSEMBLER_TEST_RUN(RShiftingV, test) { 441 ASSEMBLER_TEST_RUN(RShiftingV, test) {
442 typedef int (*SimpleCode)(); 442 typedef int (*SimpleCode)() DART_UNUSED;
443 EXPECT_EQ(-1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 443 EXPECT_EQ(-1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
444 } 444 }
445 445
446 446
447 ASSEMBLER_TEST_GENERATE(Mult_pos, assembler) { 447 ASSEMBLER_TEST_GENERATE(Mult_pos, assembler) {
448 __ LoadImmediate(T1, 6); 448 __ LoadImmediate(T1, 6);
449 __ LoadImmediate(T2, 7); 449 __ LoadImmediate(T2, 7);
450 __ mult(T1, T2); 450 __ mult(T1, T2);
451 __ mflo(V0); 451 __ mflo(V0);
452 __ jr(RA); 452 __ jr(RA);
453 } 453 }
454 454
455 455
456 ASSEMBLER_TEST_RUN(Mult_pos, test) { 456 ASSEMBLER_TEST_RUN(Mult_pos, test) {
457 typedef int (*SimpleCode)(); 457 typedef int (*SimpleCode)() DART_UNUSED;
458 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 458 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
459 } 459 }
460 460
461 461
462 ASSEMBLER_TEST_GENERATE(Mult_neg, assembler) { 462 ASSEMBLER_TEST_GENERATE(Mult_neg, assembler) {
463 __ LoadImmediate(T1, -6); 463 __ LoadImmediate(T1, -6);
464 __ LoadImmediate(T2, 7); 464 __ LoadImmediate(T2, 7);
465 __ mult(T1, T2); 465 __ mult(T1, T2);
466 __ mflo(V0); 466 __ mflo(V0);
467 __ jr(RA); 467 __ jr(RA);
468 } 468 }
469 469
470 470
471 ASSEMBLER_TEST_RUN(Mult_neg, test) { 471 ASSEMBLER_TEST_RUN(Mult_neg, test) {
472 typedef int (*SimpleCode)(); 472 typedef int (*SimpleCode)() DART_UNUSED;
473 EXPECT_EQ(-42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 473 EXPECT_EQ(-42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
474 } 474 }
475 475
476 476
477 ASSEMBLER_TEST_GENERATE(Mult_neg_hi, assembler) { 477 ASSEMBLER_TEST_GENERATE(Mult_neg_hi, assembler) {
478 __ LoadImmediate(T1, -6); 478 __ LoadImmediate(T1, -6);
479 __ LoadImmediate(T2, 7); 479 __ LoadImmediate(T2, 7);
480 __ mult(T1, T2); 480 __ mult(T1, T2);
481 __ mfhi(V0); 481 __ mfhi(V0);
482 __ jr(RA); 482 __ jr(RA);
483 } 483 }
484 484
485 485
486 ASSEMBLER_TEST_RUN(Mult_neg_hi, test) { 486 ASSEMBLER_TEST_RUN(Mult_neg_hi, test) {
487 typedef int (*SimpleCode)(); 487 typedef int (*SimpleCode)() DART_UNUSED;
488 EXPECT_EQ(-1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 488 EXPECT_EQ(-1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
489 } 489 }
490 490
491 491
492 ASSEMBLER_TEST_GENERATE(Multu_lo, assembler) { 492 ASSEMBLER_TEST_GENERATE(Multu_lo, assembler) {
493 __ LoadImmediate(T1, 6); 493 __ LoadImmediate(T1, 6);
494 __ LoadImmediate(T2, 7); 494 __ LoadImmediate(T2, 7);
495 __ multu(T1, T2); 495 __ multu(T1, T2);
496 __ mflo(V0); 496 __ mflo(V0);
497 __ jr(RA); 497 __ jr(RA);
498 } 498 }
499 499
500 500
501 ASSEMBLER_TEST_RUN(Multu_lo, test) { 501 ASSEMBLER_TEST_RUN(Multu_lo, test) {
502 typedef int (*SimpleCode)(); 502 typedef int (*SimpleCode)() DART_UNUSED;
503 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 503 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
504 } 504 }
505 505
506 506
507 ASSEMBLER_TEST_GENERATE(Multu_hi, assembler) { 507 ASSEMBLER_TEST_GENERATE(Multu_hi, assembler) {
508 __ LoadImmediate(T1, 65536); 508 __ LoadImmediate(T1, 65536);
509 __ LoadImmediate(T2, 65536); 509 __ LoadImmediate(T2, 65536);
510 __ multu(T1, T2); 510 __ multu(T1, T2);
511 __ mfhi(V0); 511 __ mfhi(V0);
512 __ jr(RA); 512 __ jr(RA);
513 } 513 }
514 514
515 515
516 ASSEMBLER_TEST_RUN(Multu_hi, test) { 516 ASSEMBLER_TEST_RUN(Multu_hi, test) {
517 typedef int (*SimpleCode)(); 517 typedef int (*SimpleCode)() DART_UNUSED;
518 EXPECT_EQ(1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 518 EXPECT_EQ(1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
519 } 519 }
520 520
521 521
522 ASSEMBLER_TEST_GENERATE(Madd_neg, assembler) { 522 ASSEMBLER_TEST_GENERATE(Madd_neg, assembler) {
523 __ LoadImmediate(T1, -6); 523 __ LoadImmediate(T1, -6);
524 __ LoadImmediate(T2, 7); 524 __ LoadImmediate(T2, 7);
525 __ mult(T1, T2); 525 __ mult(T1, T2);
526 __ madd(T1, T2); 526 __ madd(T1, T2);
527 __ mflo(V0); 527 __ mflo(V0);
528 __ mfhi(V1); 528 __ mfhi(V1);
529 __ jr(RA); 529 __ jr(RA);
530 } 530 }
531 531
532 532
533 ASSEMBLER_TEST_RUN(Madd_neg, test) { 533 ASSEMBLER_TEST_RUN(Madd_neg, test) {
534 typedef int (*SimpleCode)(); 534 typedef int (*SimpleCode)() DART_UNUSED;
535 EXPECT_EQ(-84, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 535 EXPECT_EQ(-84, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
536 } 536 }
537 537
538 538
539 ASSEMBLER_TEST_GENERATE(Subu, assembler) { 539 ASSEMBLER_TEST_GENERATE(Subu, assembler) {
540 __ LoadImmediate(T1, 737); 540 __ LoadImmediate(T1, 737);
541 __ LoadImmediate(T2, 695); 541 __ LoadImmediate(T2, 695);
542 __ subu(V0, T1, T2); 542 __ subu(V0, T1, T2);
543 __ jr(RA); 543 __ jr(RA);
544 } 544 }
545 545
546 546
547 ASSEMBLER_TEST_RUN(Subu, test) { 547 ASSEMBLER_TEST_RUN(Subu, test) {
548 typedef int (*SimpleCode)(); 548 typedef int (*SimpleCode)() DART_UNUSED;
549 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 549 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
550 } 550 }
551 551
552 552
553 ASSEMBLER_TEST_GENERATE(Or, assembler) { 553 ASSEMBLER_TEST_GENERATE(Or, assembler) {
554 __ LoadImmediate(T1, 34); 554 __ LoadImmediate(T1, 34);
555 __ LoadImmediate(T2, 8); 555 __ LoadImmediate(T2, 8);
556 __ or_(V0, T1, T2); 556 __ or_(V0, T1, T2);
557 __ jr(RA); 557 __ jr(RA);
558 } 558 }
559 559
560 560
561 ASSEMBLER_TEST_RUN(Or, test) { 561 ASSEMBLER_TEST_RUN(Or, test) {
562 typedef int (*SimpleCode)(); 562 typedef int (*SimpleCode)() DART_UNUSED;
563 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 563 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
564 } 564 }
565 565
566 566
567 ASSEMBLER_TEST_GENERATE(Nor, assembler) { 567 ASSEMBLER_TEST_GENERATE(Nor, assembler) {
568 __ LoadImmediate(T1, -47); 568 __ LoadImmediate(T1, -47);
569 __ LoadImmediate(T2, -60); 569 __ LoadImmediate(T2, -60);
570 __ nor(V0, T1, T2); 570 __ nor(V0, T1, T2);
571 __ jr(RA); 571 __ jr(RA);
572 } 572 }
573 573
574 574
575 ASSEMBLER_TEST_RUN(Nor, test) { 575 ASSEMBLER_TEST_RUN(Nor, test) {
576 typedef int (*SimpleCode)(); 576 typedef int (*SimpleCode)() DART_UNUSED;
577 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 577 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
578 } 578 }
579 579
580 580
581 ASSEMBLER_TEST_GENERATE(Xor, assembler) { 581 ASSEMBLER_TEST_GENERATE(Xor, assembler) {
582 __ LoadImmediate(T1, 51); 582 __ LoadImmediate(T1, 51);
583 __ LoadImmediate(T2, 25); 583 __ LoadImmediate(T2, 25);
584 __ xor_(V0, T1, T2); 584 __ xor_(V0, T1, T2);
585 __ jr(RA); 585 __ jr(RA);
586 } 586 }
587 587
588 588
589 ASSEMBLER_TEST_RUN(Xor, test) { 589 ASSEMBLER_TEST_RUN(Xor, test) {
590 typedef int (*SimpleCode)(); 590 typedef int (*SimpleCode)() DART_UNUSED;
591 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 591 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
592 } 592 }
593 593
594 594
595 ASSEMBLER_TEST_GENERATE(Xori, assembler) { 595 ASSEMBLER_TEST_GENERATE(Xori, assembler) {
596 __ LoadImmediate(T0, 51); 596 __ LoadImmediate(T0, 51);
597 __ xori(V0, T0, Immediate(25)); 597 __ xori(V0, T0, Immediate(25));
598 __ jr(RA); 598 __ jr(RA);
599 } 599 }
600 600
601 601
602 ASSEMBLER_TEST_RUN(Xori, test) { 602 ASSEMBLER_TEST_RUN(Xori, test) {
603 typedef int (*SimpleCode)(); 603 typedef int (*SimpleCode)() DART_UNUSED;
604 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 604 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
605 } 605 }
606 606
607 607
608 ASSEMBLER_TEST_GENERATE(Slt, assembler) { 608 ASSEMBLER_TEST_GENERATE(Slt, assembler) {
609 __ LoadImmediate(T1, -1); 609 __ LoadImmediate(T1, -1);
610 __ LoadImmediate(T2, 0); 610 __ LoadImmediate(T2, 0);
611 __ slt(V0, T1, T2); 611 __ slt(V0, T1, T2);
612 __ jr(RA); 612 __ jr(RA);
613 } 613 }
614 614
615 615
616 ASSEMBLER_TEST_RUN(Slt, test) { 616 ASSEMBLER_TEST_RUN(Slt, test) {
617 typedef int (*SimpleCode)(); 617 typedef int (*SimpleCode)() DART_UNUSED;
618 EXPECT_EQ(1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 618 EXPECT_EQ(1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
619 } 619 }
620 620
621 621
622 ASSEMBLER_TEST_GENERATE(Sltu, assembler) { 622 ASSEMBLER_TEST_GENERATE(Sltu, assembler) {
623 __ LoadImmediate(T1, -1); 623 __ LoadImmediate(T1, -1);
624 __ LoadImmediate(T2, 0); 624 __ LoadImmediate(T2, 0);
625 __ sltu(V0, T1, T2); 625 __ sltu(V0, T1, T2);
626 __ jr(RA); 626 __ jr(RA);
627 } 627 }
628 628
629 629
630 ASSEMBLER_TEST_RUN(Sltu, test) { 630 ASSEMBLER_TEST_RUN(Sltu, test) {
631 typedef int (*SimpleCode)(); 631 typedef int (*SimpleCode)() DART_UNUSED;
632 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 632 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
633 } 633 }
634 634
635 635
636 ASSEMBLER_TEST_GENERATE(Movz, assembler) { 636 ASSEMBLER_TEST_GENERATE(Movz, assembler) {
637 __ LoadImmediate(T1, 42); 637 __ LoadImmediate(T1, 42);
638 __ LoadImmediate(T2, 23); 638 __ LoadImmediate(T2, 23);
639 __ slt(T3, T1, T2); 639 __ slt(T3, T1, T2);
640 __ movz(V0, T1, T3); 640 __ movz(V0, T1, T3);
641 __ jr(RA); 641 __ jr(RA);
642 } 642 }
643 643
644 644
645 ASSEMBLER_TEST_RUN(Movz, test) { 645 ASSEMBLER_TEST_RUN(Movz, test) {
646 typedef int (*SimpleCode)(); 646 typedef int (*SimpleCode)() DART_UNUSED;
647 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 647 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
648 } 648 }
649 649
650 650
651 ASSEMBLER_TEST_GENERATE(Movn, assembler) { 651 ASSEMBLER_TEST_GENERATE(Movn, assembler) {
652 __ LoadImmediate(T1, 42); 652 __ LoadImmediate(T1, 42);
653 __ LoadImmediate(T2, 23); 653 __ LoadImmediate(T2, 23);
654 __ slt(T3, T2, T1); 654 __ slt(T3, T2, T1);
655 __ movn(V0, T1, T3); 655 __ movn(V0, T1, T3);
656 __ jr(RA); 656 __ jr(RA);
657 } 657 }
658 658
659 659
660 ASSEMBLER_TEST_RUN(Movn, test) { 660 ASSEMBLER_TEST_RUN(Movn, test) {
661 typedef int (*SimpleCode)(); 661 typedef int (*SimpleCode)() DART_UNUSED;
662 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 662 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
663 } 663 }
664 664
665 665
666 ASSEMBLER_TEST_GENERATE(Jr_delay, assembler) { 666 ASSEMBLER_TEST_GENERATE(Jr_delay, assembler) {
667 __ jr(RA); 667 __ jr(RA);
668 __ delay_slot()->ori(V0, ZR, Immediate(42)); 668 __ delay_slot()->ori(V0, ZR, Immediate(42));
669 } 669 }
670 670
671 671
672 ASSEMBLER_TEST_RUN(Jr_delay, test) { 672 ASSEMBLER_TEST_RUN(Jr_delay, test) {
673 typedef int (*SimpleCode)(); 673 typedef int (*SimpleCode)() DART_UNUSED;
674 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 674 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
675 } 675 }
676 676
677 677
678 ASSEMBLER_TEST_GENERATE(Beq_backward, assembler) { 678 ASSEMBLER_TEST_GENERATE(Beq_backward, assembler) {
679 Label l; 679 Label l;
680 680
681 __ LoadImmediate(T1, 0); 681 __ LoadImmediate(T1, 0);
682 __ LoadImmediate(T2, 1); 682 __ LoadImmediate(T2, 1);
683 __ Bind(&l); 683 __ Bind(&l);
684 __ addiu(T1, T1, Immediate(1)); 684 __ addiu(T1, T1, Immediate(1));
685 __ beq(T1, T2, &l); 685 __ beq(T1, T2, &l);
686 __ ori(V0, T1, Immediate(0)); 686 __ ori(V0, T1, Immediate(0));
687 __ jr(RA); 687 __ jr(RA);
688 } 688 }
689 689
690 690
691 ASSEMBLER_TEST_RUN(Beq_backward, test) { 691 ASSEMBLER_TEST_RUN(Beq_backward, test) {
692 typedef int (*SimpleCode)(); 692 typedef int (*SimpleCode)() DART_UNUSED;
693 EXPECT_EQ(2, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 693 EXPECT_EQ(2, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
694 } 694 }
695 695
696 696
697 ASSEMBLER_TEST_GENERATE(Beq_backward_far, assembler) { 697 ASSEMBLER_TEST_GENERATE(Beq_backward_far, assembler) {
698 Label l; 698 Label l;
699 699
700 __ set_use_far_branches(true); 700 __ set_use_far_branches(true);
701 701
702 __ LoadImmediate(T1, 0); 702 __ LoadImmediate(T1, 0);
703 __ LoadImmediate(T2, 1); 703 __ LoadImmediate(T2, 1);
704 __ Bind(&l); 704 __ Bind(&l);
705 __ addiu(T1, T1, Immediate(1)); 705 __ addiu(T1, T1, Immediate(1));
706 __ beq(T1, T2, &l); 706 __ beq(T1, T2, &l);
707 __ ori(V0, T1, Immediate(0)); 707 __ ori(V0, T1, Immediate(0));
708 __ jr(RA); 708 __ jr(RA);
709 } 709 }
710 710
711 711
712 ASSEMBLER_TEST_RUN(Beq_backward_far, test) { 712 ASSEMBLER_TEST_RUN(Beq_backward_far, test) {
713 typedef int (*SimpleCode)(); 713 typedef int (*SimpleCode)() DART_UNUSED;
714 EXPECT_EQ(2, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 714 EXPECT_EQ(2, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
715 } 715 }
716 716
717 717
718 ASSEMBLER_TEST_GENERATE(Beq_backward_delay, assembler) { 718 ASSEMBLER_TEST_GENERATE(Beq_backward_delay, assembler) {
719 Label l; 719 Label l;
720 720
721 __ LoadImmediate(T1, 0); 721 __ LoadImmediate(T1, 0);
722 __ LoadImmediate(T2, 1); 722 __ LoadImmediate(T2, 1);
723 __ Bind(&l); 723 __ Bind(&l);
724 __ addiu(T1, T1, Immediate(1)); 724 __ addiu(T1, T1, Immediate(1));
725 __ beq(T1, T2, &l); 725 __ beq(T1, T2, &l);
726 __ delay_slot()->addiu(T1, T1, Immediate(1)); 726 __ delay_slot()->addiu(T1, T1, Immediate(1));
727 __ ori(V0, T1, Immediate(0)); 727 __ ori(V0, T1, Immediate(0));
728 __ jr(RA); 728 __ jr(RA);
729 } 729 }
730 730
731 731
732 ASSEMBLER_TEST_RUN(Beq_backward_delay, test) { 732 ASSEMBLER_TEST_RUN(Beq_backward_delay, test) {
733 typedef int (*SimpleCode)(); 733 typedef int (*SimpleCode)() DART_UNUSED;
734 EXPECT_EQ(4, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 734 EXPECT_EQ(4, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
735 } 735 }
736 736
737 737
738 ASSEMBLER_TEST_GENERATE(Beq_forward_taken, assembler) { 738 ASSEMBLER_TEST_GENERATE(Beq_forward_taken, assembler) {
739 Label l; 739 Label l;
740 740
741 __ LoadImmediate(T5, 1); 741 __ LoadImmediate(T5, 1);
742 __ LoadImmediate(T6, 1); 742 __ LoadImmediate(T6, 1);
743 743
744 __ LoadImmediate(V0, 42); 744 __ LoadImmediate(V0, 42);
745 __ beq(T5, T6, &l); 745 __ beq(T5, T6, &l);
746 __ LoadImmediate(V0, 0); 746 __ LoadImmediate(V0, 0);
747 __ Bind(&l); 747 __ Bind(&l);
748 __ jr(RA); 748 __ jr(RA);
749 } 749 }
750 750
751 751
752 ASSEMBLER_TEST_RUN(Beq_forward_taken, test) { 752 ASSEMBLER_TEST_RUN(Beq_forward_taken, test) {
753 typedef int (*SimpleCode)(); 753 typedef int (*SimpleCode)() DART_UNUSED;
754 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 754 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
755 } 755 }
756 756
757 757
758 ASSEMBLER_TEST_GENERATE(Beq_forward_taken_far, assembler) { 758 ASSEMBLER_TEST_GENERATE(Beq_forward_taken_far, assembler) {
759 Label l; 759 Label l;
760 760
761 __ set_use_far_branches(true); 761 __ set_use_far_branches(true);
762 762
763 __ LoadImmediate(T5, 1); 763 __ LoadImmediate(T5, 1);
764 __ LoadImmediate(T6, 1); 764 __ LoadImmediate(T6, 1);
765 765
766 __ LoadImmediate(V0, 42); 766 __ LoadImmediate(V0, 42);
767 __ beq(T5, T6, &l); 767 __ beq(T5, T6, &l);
768 __ LoadImmediate(V0, 0); 768 __ LoadImmediate(V0, 0);
769 __ Bind(&l); 769 __ Bind(&l);
770 __ jr(RA); 770 __ jr(RA);
771 } 771 }
772 772
773 773
774 ASSEMBLER_TEST_RUN(Beq_forward_taken_far, test) { 774 ASSEMBLER_TEST_RUN(Beq_forward_taken_far, test) {
775 typedef int (*SimpleCode)(); 775 typedef int (*SimpleCode)() DART_UNUSED;
776 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 776 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
777 } 777 }
778 778
779 779
780 ASSEMBLER_TEST_GENERATE(Beq_forward_not_taken, assembler) { 780 ASSEMBLER_TEST_GENERATE(Beq_forward_not_taken, assembler) {
781 Label l; 781 Label l;
782 782
783 __ LoadImmediate(T5, 0); 783 __ LoadImmediate(T5, 0);
784 __ LoadImmediate(T6, 1); 784 __ LoadImmediate(T6, 1);
785 785
786 __ LoadImmediate(V0, 42); 786 __ LoadImmediate(V0, 42);
787 __ beq(T5, T6, &l); 787 __ beq(T5, T6, &l);
788 __ nop(); 788 __ nop();
789 __ LoadImmediate(V0, 0); 789 __ LoadImmediate(V0, 0);
790 __ Bind(&l); 790 __ Bind(&l);
791 __ jr(RA); 791 __ jr(RA);
792 } 792 }
793 793
794 794
795 ASSEMBLER_TEST_RUN(Beq_forward_not_taken, test) { 795 ASSEMBLER_TEST_RUN(Beq_forward_not_taken, test) {
796 typedef int (*SimpleCode)(); 796 typedef int (*SimpleCode)() DART_UNUSED;
797 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 797 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
798 } 798 }
799 799
800 800
801 ASSEMBLER_TEST_GENERATE(Beq_forward_not_taken_far, assembler) { 801 ASSEMBLER_TEST_GENERATE(Beq_forward_not_taken_far, assembler) {
802 Label l; 802 Label l;
803 803
804 __ set_use_far_branches(true); 804 __ set_use_far_branches(true);
805 805
806 __ LoadImmediate(T5, 0); 806 __ LoadImmediate(T5, 0);
807 __ LoadImmediate(T6, 1); 807 __ LoadImmediate(T6, 1);
808 808
809 __ LoadImmediate(V0, 42); 809 __ LoadImmediate(V0, 42);
810 __ beq(T5, T6, &l); 810 __ beq(T5, T6, &l);
811 __ nop(); 811 __ nop();
812 __ LoadImmediate(V0, 0); 812 __ LoadImmediate(V0, 0);
813 __ Bind(&l); 813 __ Bind(&l);
814 __ jr(RA); 814 __ jr(RA);
815 } 815 }
816 816
817 817
818 ASSEMBLER_TEST_RUN(Beq_forward_not_taken_far, test) { 818 ASSEMBLER_TEST_RUN(Beq_forward_not_taken_far, test) {
819 typedef int (*SimpleCode)(); 819 typedef int (*SimpleCode)() DART_UNUSED;
820 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 820 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
821 } 821 }
822 822
823 823
824 ASSEMBLER_TEST_GENERATE(Beq_forward_not_taken_far2, assembler) { 824 ASSEMBLER_TEST_GENERATE(Beq_forward_not_taken_far2, assembler) {
825 Label l; 825 Label l;
826 826
827 __ set_use_far_branches(true); 827 __ set_use_far_branches(true);
828 828
829 __ LoadImmediate(T5, 0); 829 __ LoadImmediate(T5, 0);
830 __ LoadImmediate(T6, 1); 830 __ LoadImmediate(T6, 1);
831 831
832 __ LoadImmediate(V0, 42); 832 __ LoadImmediate(V0, 42);
833 __ beq(T5, T6, &l); 833 __ beq(T5, T6, &l);
834 __ nop(); 834 __ nop();
835 for (int i = 0; i < (1 << 15); i++) { 835 for (int i = 0; i < (1 << 15); i++) {
836 __ nop(); 836 __ nop();
837 } 837 }
838 __ LoadImmediate(V0, 0); 838 __ LoadImmediate(V0, 0);
839 __ Bind(&l); 839 __ Bind(&l);
840 __ jr(RA); 840 __ jr(RA);
841 } 841 }
842 842
843 843
844 ASSEMBLER_TEST_RUN(Beq_forward_not_taken_far2, test) { 844 ASSEMBLER_TEST_RUN(Beq_forward_not_taken_far2, test) {
845 typedef int (*SimpleCode)(); 845 typedef int (*SimpleCode)() DART_UNUSED;
846 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 846 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
847 } 847 }
848 848
849 849
850 ASSEMBLER_TEST_GENERATE(Beq_forward_taken2, assembler) { 850 ASSEMBLER_TEST_GENERATE(Beq_forward_taken2, assembler) {
851 Label l; 851 Label l;
852 852
853 __ LoadImmediate(T5, 1); 853 __ LoadImmediate(T5, 1);
854 __ LoadImmediate(T6, 1); 854 __ LoadImmediate(T6, 1);
855 855
856 __ LoadImmediate(V0, 42); 856 __ LoadImmediate(V0, 42);
857 __ beq(T5, T6, &l); 857 __ beq(T5, T6, &l);
858 __ nop(); 858 __ nop();
859 __ nop(); 859 __ nop();
860 __ LoadImmediate(V0, 0); 860 __ LoadImmediate(V0, 0);
861 __ Bind(&l); 861 __ Bind(&l);
862 __ jr(RA); 862 __ jr(RA);
863 } 863 }
864 864
865 865
866 ASSEMBLER_TEST_RUN(Beq_forward_taken2, test) { 866 ASSEMBLER_TEST_RUN(Beq_forward_taken2, test) {
867 typedef int (*SimpleCode)(); 867 typedef int (*SimpleCode)() DART_UNUSED;
868 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 868 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
869 } 869 }
870 870
871 871
872 ASSEMBLER_TEST_GENERATE(Beq_forward_taken_far2, assembler) { 872 ASSEMBLER_TEST_GENERATE(Beq_forward_taken_far2, assembler) {
873 Label l; 873 Label l;
874 874
875 __ set_use_far_branches(true); 875 __ set_use_far_branches(true);
876 876
877 __ LoadImmediate(T5, 1); 877 __ LoadImmediate(T5, 1);
878 __ LoadImmediate(T6, 1); 878 __ LoadImmediate(T6, 1);
879 879
880 __ LoadImmediate(V0, 42); 880 __ LoadImmediate(V0, 42);
881 __ beq(T5, T6, &l); 881 __ beq(T5, T6, &l);
882 __ nop(); 882 __ nop();
883 __ nop(); 883 __ nop();
884 __ LoadImmediate(V0, 0); 884 __ LoadImmediate(V0, 0);
885 __ Bind(&l); 885 __ Bind(&l);
886 __ jr(RA); 886 __ jr(RA);
887 } 887 }
888 888
889 889
890 ASSEMBLER_TEST_RUN(Beq_forward_taken_far2, test) { 890 ASSEMBLER_TEST_RUN(Beq_forward_taken_far2, test) {
891 typedef int (*SimpleCode)(); 891 typedef int (*SimpleCode)() DART_UNUSED;
892 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 892 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
893 } 893 }
894 894
895 895
896 ASSEMBLER_TEST_GENERATE(Beq_forward_taken_far3, assembler) { 896 ASSEMBLER_TEST_GENERATE(Beq_forward_taken_far3, assembler) {
897 Label l; 897 Label l;
898 898
899 __ set_use_far_branches(true); 899 __ set_use_far_branches(true);
900 900
901 __ LoadImmediate(T5, 1); 901 __ LoadImmediate(T5, 1);
902 __ LoadImmediate(T6, 1); 902 __ LoadImmediate(T6, 1);
903 903
904 __ LoadImmediate(V0, 42); 904 __ LoadImmediate(V0, 42);
905 __ beq(T5, T6, &l); 905 __ beq(T5, T6, &l);
906 __ nop(); 906 __ nop();
907 for (int i = 0; i < (1 << 15); i++) { 907 for (int i = 0; i < (1 << 15); i++) {
908 __ nop(); 908 __ nop();
909 } 909 }
910 __ nop(); 910 __ nop();
911 __ LoadImmediate(V0, 0); 911 __ LoadImmediate(V0, 0);
912 __ Bind(&l); 912 __ Bind(&l);
913 __ jr(RA); 913 __ jr(RA);
914 } 914 }
915 915
916 916
917 ASSEMBLER_TEST_RUN(Beq_forward_taken_far3, test) { 917 ASSEMBLER_TEST_RUN(Beq_forward_taken_far3, test) {
918 typedef int (*SimpleCode)(); 918 typedef int (*SimpleCode)() DART_UNUSED;
919 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 919 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
920 } 920 }
921 921
922 922
923 ASSEMBLER_TEST_GENERATE(Beq_forward_taken_delay, assembler) { 923 ASSEMBLER_TEST_GENERATE(Beq_forward_taken_delay, assembler) {
924 Label l; 924 Label l;
925 925
926 __ LoadImmediate(T5, 1); 926 __ LoadImmediate(T5, 1);
927 __ LoadImmediate(T6, 1); 927 __ LoadImmediate(T6, 1);
928 928
929 __ LoadImmediate(V0, 42); 929 __ LoadImmediate(V0, 42);
930 __ beq(T5, T6, &l); 930 __ beq(T5, T6, &l);
931 __ delay_slot()->ori(V0, V0, Immediate(1)); 931 __ delay_slot()->ori(V0, V0, Immediate(1));
932 __ LoadImmediate(V0, 0); 932 __ LoadImmediate(V0, 0);
933 __ Bind(&l); 933 __ Bind(&l);
934 __ jr(RA); 934 __ jr(RA);
935 } 935 }
936 936
937 937
938 ASSEMBLER_TEST_RUN(Beq_forward_taken_delay, test) { 938 ASSEMBLER_TEST_RUN(Beq_forward_taken_delay, test) {
939 typedef int (*SimpleCode)(); 939 typedef int (*SimpleCode)() DART_UNUSED;
940 EXPECT_EQ(43, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 940 EXPECT_EQ(43, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
941 } 941 }
942 942
943 943
944 ASSEMBLER_TEST_GENERATE(Beq_forward_not_taken_delay, assembler) { 944 ASSEMBLER_TEST_GENERATE(Beq_forward_not_taken_delay, assembler) {
945 Label l; 945 Label l;
946 946
947 __ LoadImmediate(T5, 0); 947 __ LoadImmediate(T5, 0);
948 __ LoadImmediate(T6, 1); 948 __ LoadImmediate(T6, 1);
949 949
950 __ LoadImmediate(V0, 42); 950 __ LoadImmediate(V0, 42);
951 __ beq(T5, T6, &l); 951 __ beq(T5, T6, &l);
952 __ delay_slot()->ori(V0, V0, Immediate(1)); 952 __ delay_slot()->ori(V0, V0, Immediate(1));
953 __ addiu(V0, V0, Immediate(1)); 953 __ addiu(V0, V0, Immediate(1));
954 __ Bind(&l); 954 __ Bind(&l);
955 __ jr(RA); 955 __ jr(RA);
956 } 956 }
957 957
958 958
959 ASSEMBLER_TEST_RUN(Beq_forward_not_taken_delay, test) { 959 ASSEMBLER_TEST_RUN(Beq_forward_not_taken_delay, test) {
960 typedef int (*SimpleCode)(); 960 typedef int (*SimpleCode)() DART_UNUSED;
961 EXPECT_EQ(44, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 961 EXPECT_EQ(44, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
962 } 962 }
963 963
964 964
965 ASSEMBLER_TEST_GENERATE(Beql_backward_delay, assembler) { 965 ASSEMBLER_TEST_GENERATE(Beql_backward_delay, assembler) {
966 Label l; 966 Label l;
967 967
968 __ LoadImmediate(T5, 0); 968 __ LoadImmediate(T5, 0);
969 __ LoadImmediate(T6, 1); 969 __ LoadImmediate(T6, 1);
970 __ Bind(&l); 970 __ Bind(&l);
971 __ addiu(T5, T5, Immediate(1)); 971 __ addiu(T5, T5, Immediate(1));
972 __ beql(T5, T6, &l); 972 __ beql(T5, T6, &l);
973 __ delay_slot()->addiu(T5, T5, Immediate(1)); 973 __ delay_slot()->addiu(T5, T5, Immediate(1));
974 __ ori(V0, T5, Immediate(0)); 974 __ ori(V0, T5, Immediate(0));
975 __ jr(RA); 975 __ jr(RA);
976 } 976 }
977 977
978 978
979 ASSEMBLER_TEST_RUN(Beql_backward_delay, test) { 979 ASSEMBLER_TEST_RUN(Beql_backward_delay, test) {
980 typedef int (*SimpleCode)(); 980 typedef int (*SimpleCode)() DART_UNUSED;
981 EXPECT_EQ(3, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 981 EXPECT_EQ(3, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
982 } 982 }
983 983
984 984
985 ASSEMBLER_TEST_GENERATE(Bgez, assembler) { 985 ASSEMBLER_TEST_GENERATE(Bgez, assembler) {
986 Label l; 986 Label l;
987 987
988 __ LoadImmediate(T5, 3); 988 __ LoadImmediate(T5, 3);
989 __ Bind(&l); 989 __ Bind(&l);
990 __ bgez(T5, &l); 990 __ bgez(T5, &l);
991 __ delay_slot()->addiu(T5, T5, Immediate(-1)); 991 __ delay_slot()->addiu(T5, T5, Immediate(-1));
992 __ ori(V0, T5, Immediate(0)); 992 __ ori(V0, T5, Immediate(0));
993 __ jr(RA); 993 __ jr(RA);
994 } 994 }
995 995
996 996
997 ASSEMBLER_TEST_RUN(Bgez, test) { 997 ASSEMBLER_TEST_RUN(Bgez, test) {
998 typedef int (*SimpleCode)(); 998 typedef int (*SimpleCode)() DART_UNUSED;
999 EXPECT_EQ(-2, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 999 EXPECT_EQ(-2, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
1000 } 1000 }
1001 1001
1002 1002
1003 ASSEMBLER_TEST_GENERATE(Bgez_far, assembler) { 1003 ASSEMBLER_TEST_GENERATE(Bgez_far, assembler) {
1004 Label l; 1004 Label l;
1005 1005
1006 __ set_use_far_branches(true); 1006 __ set_use_far_branches(true);
1007 1007
1008 __ LoadImmediate(T5, 3); 1008 __ LoadImmediate(T5, 3);
1009 __ Bind(&l); 1009 __ Bind(&l);
1010 __ bgez(T5, &l); 1010 __ bgez(T5, &l);
1011 __ delay_slot()->addiu(T5, T5, Immediate(-1)); 1011 __ delay_slot()->addiu(T5, T5, Immediate(-1));
1012 __ ori(V0, T5, Immediate(0)); 1012 __ ori(V0, T5, Immediate(0));
1013 __ jr(RA); 1013 __ jr(RA);
1014 } 1014 }
1015 1015
1016 1016
1017 ASSEMBLER_TEST_RUN(Bgez_far, test) { 1017 ASSEMBLER_TEST_RUN(Bgez_far, test) {
1018 typedef int (*SimpleCode)(); 1018 typedef int (*SimpleCode)() DART_UNUSED;
1019 EXPECT_EQ(-2, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 1019 EXPECT_EQ(-2, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
1020 } 1020 }
1021 1021
1022 1022
1023 ASSEMBLER_TEST_GENERATE(Bgez_far2, assembler) { 1023 ASSEMBLER_TEST_GENERATE(Bgez_far2, assembler) {
1024 Label l; 1024 Label l;
1025 1025
1026 __ set_use_far_branches(true); 1026 __ set_use_far_branches(true);
1027 1027
1028 __ LoadImmediate(T5, 3); 1028 __ LoadImmediate(T5, 3);
1029 __ Bind(&l); 1029 __ Bind(&l);
1030 for (int i = 0; i < (1 << 15); i++) { 1030 for (int i = 0; i < (1 << 15); i++) {
1031 __ nop(); 1031 __ nop();
1032 } 1032 }
1033 __ bgez(T5, &l); 1033 __ bgez(T5, &l);
1034 __ delay_slot()->addiu(T5, T5, Immediate(-1)); 1034 __ delay_slot()->addiu(T5, T5, Immediate(-1));
1035 __ ori(V0, T5, Immediate(0)); 1035 __ ori(V0, T5, Immediate(0));
1036 __ jr(RA); 1036 __ jr(RA);
1037 } 1037 }
1038 1038
1039 1039
1040 ASSEMBLER_TEST_RUN(Bgez_far2, test) { 1040 ASSEMBLER_TEST_RUN(Bgez_far2, test) {
1041 typedef int (*SimpleCode)(); 1041 typedef int (*SimpleCode)() DART_UNUSED;
1042 EXPECT_EQ(-2, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 1042 EXPECT_EQ(-2, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
1043 } 1043 }
1044 1044
1045 1045
1046 ASSEMBLER_TEST_GENERATE(Bgez_taken_forward_far, assembler) { 1046 ASSEMBLER_TEST_GENERATE(Bgez_taken_forward_far, assembler) {
1047 Label l; 1047 Label l;
1048 1048
1049 __ set_use_far_branches(true); 1049 __ set_use_far_branches(true);
1050 1050
1051 __ LoadImmediate(T5, 1); 1051 __ LoadImmediate(T5, 1);
1052 1052
1053 __ LoadImmediate(V0, 42); 1053 __ LoadImmediate(V0, 42);
1054 __ bgez(T5, &l); 1054 __ bgez(T5, &l);
1055 __ nop(); 1055 __ nop();
1056 __ nop(); 1056 __ nop();
1057 __ LoadImmediate(V0, 0); 1057 __ LoadImmediate(V0, 0);
1058 __ Bind(&l); 1058 __ Bind(&l);
1059 __ jr(RA); 1059 __ jr(RA);
1060 } 1060 }
1061 1061
1062 1062
1063 ASSEMBLER_TEST_RUN(Bgez_taken_forward_far, test) { 1063 ASSEMBLER_TEST_RUN(Bgez_taken_forward_far, test) {
1064 typedef int (*SimpleCode)(); 1064 typedef int (*SimpleCode)() DART_UNUSED;
1065 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 1065 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
1066 } 1066 }
1067 1067
1068 1068
1069 ASSEMBLER_TEST_GENERATE(Bgez_taken_forward_far2, assembler) { 1069 ASSEMBLER_TEST_GENERATE(Bgez_taken_forward_far2, assembler) {
1070 Label l; 1070 Label l;
1071 1071
1072 __ set_use_far_branches(true); 1072 __ set_use_far_branches(true);
1073 1073
1074 __ LoadImmediate(T5, 1); 1074 __ LoadImmediate(T5, 1);
1075 1075
1076 __ LoadImmediate(V0, 42); 1076 __ LoadImmediate(V0, 42);
1077 __ bgez(T5, &l); 1077 __ bgez(T5, &l);
1078 __ nop(); 1078 __ nop();
1079 for (int i = 0; i < (1 << 15); i++) { 1079 for (int i = 0; i < (1 << 15); i++) {
1080 __ nop(); 1080 __ nop();
1081 } 1081 }
1082 __ LoadImmediate(V0, 0); 1082 __ LoadImmediate(V0, 0);
1083 __ Bind(&l); 1083 __ Bind(&l);
1084 __ jr(RA); 1084 __ jr(RA);
1085 } 1085 }
1086 1086
1087 1087
1088 ASSEMBLER_TEST_RUN(Bgez_taken_forward_far2, test) { 1088 ASSEMBLER_TEST_RUN(Bgez_taken_forward_far2, test) {
1089 typedef int (*SimpleCode)(); 1089 typedef int (*SimpleCode)() DART_UNUSED;
1090 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 1090 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
1091 } 1091 }
1092 1092
1093 1093
1094 ASSEMBLER_TEST_GENERATE(Bgez_not_taken_forward_far, assembler) { 1094 ASSEMBLER_TEST_GENERATE(Bgez_not_taken_forward_far, assembler) {
1095 Label l; 1095 Label l;
1096 1096
1097 __ set_use_far_branches(true); 1097 __ set_use_far_branches(true);
1098 1098
1099 __ LoadImmediate(T5, -1); 1099 __ LoadImmediate(T5, -1);
1100 1100
1101 __ LoadImmediate(V0, 42); 1101 __ LoadImmediate(V0, 42);
1102 __ bgez(T5, &l); 1102 __ bgez(T5, &l);
1103 __ nop(); 1103 __ nop();
1104 __ nop(); 1104 __ nop();
1105 __ LoadImmediate(V0, 0); 1105 __ LoadImmediate(V0, 0);
1106 __ Bind(&l); 1106 __ Bind(&l);
1107 __ jr(RA); 1107 __ jr(RA);
1108 } 1108 }
1109 1109
1110 1110
1111 ASSEMBLER_TEST_RUN(Bgez_not_taken_forward_far, test) { 1111 ASSEMBLER_TEST_RUN(Bgez_not_taken_forward_far, test) {
1112 typedef int (*SimpleCode)(); 1112 typedef int (*SimpleCode)() DART_UNUSED;
1113 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 1113 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
1114 } 1114 }
1115 1115
1116 1116
1117 ASSEMBLER_TEST_GENERATE(Bgez_not_taken_forward_far2, assembler) { 1117 ASSEMBLER_TEST_GENERATE(Bgez_not_taken_forward_far2, assembler) {
1118 Label l; 1118 Label l;
1119 1119
1120 __ set_use_far_branches(true); 1120 __ set_use_far_branches(true);
1121 1121
1122 __ LoadImmediate(T5, -1); 1122 __ LoadImmediate(T5, -1);
1123 1123
1124 __ LoadImmediate(V0, 42); 1124 __ LoadImmediate(V0, 42);
1125 __ bgez(T5, &l); 1125 __ bgez(T5, &l);
1126 __ nop(); 1126 __ nop();
1127 for (int i = 0; i < (1 << 15); i++) { 1127 for (int i = 0; i < (1 << 15); i++) {
1128 __ nop(); 1128 __ nop();
1129 } 1129 }
1130 __ LoadImmediate(V0, 0); 1130 __ LoadImmediate(V0, 0);
1131 __ Bind(&l); 1131 __ Bind(&l);
1132 __ jr(RA); 1132 __ jr(RA);
1133 } 1133 }
1134 1134
1135 1135
1136 ASSEMBLER_TEST_RUN(Bgez_not_taken_forward_far2, test) { 1136 ASSEMBLER_TEST_RUN(Bgez_not_taken_forward_far2, test) {
1137 typedef int (*SimpleCode)(); 1137 typedef int (*SimpleCode)() DART_UNUSED;
1138 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 1138 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
1139 } 1139 }
1140 1140
1141 1141
1142 ASSEMBLER_TEST_GENERATE(Bgezl, assembler) { 1142 ASSEMBLER_TEST_GENERATE(Bgezl, assembler) {
1143 Label l; 1143 Label l;
1144 1144
1145 __ LoadImmediate(T5, 3); 1145 __ LoadImmediate(T5, 3);
1146 __ Bind(&l); 1146 __ Bind(&l);
1147 __ bgezl(T5, &l); 1147 __ bgezl(T5, &l);
1148 __ delay_slot()->addiu(T5, T5, Immediate(-1)); 1148 __ delay_slot()->addiu(T5, T5, Immediate(-1));
1149 __ ori(V0, T5, Immediate(0)); 1149 __ ori(V0, T5, Immediate(0));
1150 __ jr(RA); 1150 __ jr(RA);
1151 } 1151 }
1152 1152
1153 1153
1154 ASSEMBLER_TEST_RUN(Bgezl, test) { 1154 ASSEMBLER_TEST_RUN(Bgezl, test) {
1155 typedef int (*SimpleCode)(); 1155 typedef int (*SimpleCode)() DART_UNUSED;
1156 EXPECT_EQ(-1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 1156 EXPECT_EQ(-1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
1157 } 1157 }
1158 1158
1159 1159
1160 ASSEMBLER_TEST_GENERATE(Blez, assembler) { 1160 ASSEMBLER_TEST_GENERATE(Blez, assembler) {
1161 Label l; 1161 Label l;
1162 1162
1163 __ LoadImmediate(T5, -3); 1163 __ LoadImmediate(T5, -3);
1164 __ Bind(&l); 1164 __ Bind(&l);
1165 __ blez(T5, &l); 1165 __ blez(T5, &l);
1166 __ delay_slot()->addiu(T5, T5, Immediate(1)); 1166 __ delay_slot()->addiu(T5, T5, Immediate(1));
1167 __ ori(V0, T5, Immediate(0)); 1167 __ ori(V0, T5, Immediate(0));
1168 __ jr(RA); 1168 __ jr(RA);
1169 } 1169 }
1170 1170
1171 1171
1172 ASSEMBLER_TEST_RUN(Blez, test) { 1172 ASSEMBLER_TEST_RUN(Blez, test) {
1173 typedef int (*SimpleCode)(); 1173 typedef int (*SimpleCode)() DART_UNUSED;
1174 EXPECT_EQ(2, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 1174 EXPECT_EQ(2, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
1175 } 1175 }
1176 1176
1177 1177
1178 ASSEMBLER_TEST_GENERATE(Blez_far, assembler) { 1178 ASSEMBLER_TEST_GENERATE(Blez_far, assembler) {
1179 Label l; 1179 Label l;
1180 1180
1181 __ set_use_far_branches(true); 1181 __ set_use_far_branches(true);
1182 1182
1183 __ LoadImmediate(T5, -3); 1183 __ LoadImmediate(T5, -3);
1184 __ Bind(&l); 1184 __ Bind(&l);
1185 __ blez(T5, &l); 1185 __ blez(T5, &l);
1186 __ delay_slot()->addiu(T5, T5, Immediate(1)); 1186 __ delay_slot()->addiu(T5, T5, Immediate(1));
1187 __ ori(V0, T5, Immediate(0)); 1187 __ ori(V0, T5, Immediate(0));
1188 __ jr(RA); 1188 __ jr(RA);
1189 } 1189 }
1190 1190
1191 1191
1192 ASSEMBLER_TEST_RUN(Blez_far, test) { 1192 ASSEMBLER_TEST_RUN(Blez_far, test) {
1193 typedef int (*SimpleCode)(); 1193 typedef int (*SimpleCode)() DART_UNUSED;
1194 EXPECT_EQ(2, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 1194 EXPECT_EQ(2, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
1195 } 1195 }
1196 1196
1197 1197
1198 ASSEMBLER_TEST_GENERATE(Blez_far2, assembler) { 1198 ASSEMBLER_TEST_GENERATE(Blez_far2, assembler) {
1199 Label l; 1199 Label l;
1200 1200
1201 __ set_use_far_branches(true); 1201 __ set_use_far_branches(true);
1202 1202
1203 __ LoadImmediate(T5, -3); 1203 __ LoadImmediate(T5, -3);
1204 __ Bind(&l); 1204 __ Bind(&l);
1205 for (int i = 0; i < (1 << 15); i++) { 1205 for (int i = 0; i < (1 << 15); i++) {
1206 __ nop(); 1206 __ nop();
1207 } 1207 }
1208 __ blez(T5, &l); 1208 __ blez(T5, &l);
1209 __ delay_slot()->addiu(T5, T5, Immediate(1)); 1209 __ delay_slot()->addiu(T5, T5, Immediate(1));
1210 __ ori(V0, T5, Immediate(0)); 1210 __ ori(V0, T5, Immediate(0));
1211 __ jr(RA); 1211 __ jr(RA);
1212 } 1212 }
1213 1213
1214 1214
1215 ASSEMBLER_TEST_RUN(Blez_far2, test) { 1215 ASSEMBLER_TEST_RUN(Blez_far2, test) {
1216 typedef int (*SimpleCode)(); 1216 typedef int (*SimpleCode)() DART_UNUSED;
1217 EXPECT_EQ(2, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 1217 EXPECT_EQ(2, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
1218 } 1218 }
1219 1219
1220 1220
1221 ASSEMBLER_TEST_GENERATE(Blez_taken_forward_far, assembler) { 1221 ASSEMBLER_TEST_GENERATE(Blez_taken_forward_far, assembler) {
1222 Label l; 1222 Label l;
1223 1223
1224 __ set_use_far_branches(true); 1224 __ set_use_far_branches(true);
1225 1225
1226 __ LoadImmediate(T5, -1); 1226 __ LoadImmediate(T5, -1);
1227 1227
1228 __ LoadImmediate(V0, 42); 1228 __ LoadImmediate(V0, 42);
1229 __ blez(T5, &l); 1229 __ blez(T5, &l);
1230 __ nop(); 1230 __ nop();
1231 __ nop(); 1231 __ nop();
1232 __ LoadImmediate(V0, 0); 1232 __ LoadImmediate(V0, 0);
1233 __ Bind(&l); 1233 __ Bind(&l);
1234 __ jr(RA); 1234 __ jr(RA);
1235 } 1235 }
1236 1236
1237 1237
1238 ASSEMBLER_TEST_RUN(Blez_taken_forward_far, test) { 1238 ASSEMBLER_TEST_RUN(Blez_taken_forward_far, test) {
1239 typedef int (*SimpleCode)(); 1239 typedef int (*SimpleCode)() DART_UNUSED;
1240 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 1240 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
1241 } 1241 }
1242 1242
1243 1243
1244 ASSEMBLER_TEST_GENERATE(Blez_not_taken_forward_far, assembler) { 1244 ASSEMBLER_TEST_GENERATE(Blez_not_taken_forward_far, assembler) {
1245 Label l; 1245 Label l;
1246 1246
1247 __ set_use_far_branches(true); 1247 __ set_use_far_branches(true);
1248 1248
1249 __ LoadImmediate(T5, 1); 1249 __ LoadImmediate(T5, 1);
1250 1250
1251 __ LoadImmediate(V0, 42); 1251 __ LoadImmediate(V0, 42);
1252 __ blez(T5, &l); 1252 __ blez(T5, &l);
1253 __ nop(); 1253 __ nop();
1254 __ nop(); 1254 __ nop();
1255 __ LoadImmediate(V0, 0); 1255 __ LoadImmediate(V0, 0);
1256 __ Bind(&l); 1256 __ Bind(&l);
1257 __ jr(RA); 1257 __ jr(RA);
1258 } 1258 }
1259 1259
1260 1260
1261 ASSEMBLER_TEST_RUN(Blez_not_taken_forward_far, test) { 1261 ASSEMBLER_TEST_RUN(Blez_not_taken_forward_far, test) {
1262 typedef int (*SimpleCode)(); 1262 typedef int (*SimpleCode)() DART_UNUSED;
1263 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 1263 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
1264 } 1264 }
1265 1265
1266 1266
1267 ASSEMBLER_TEST_GENERATE(Blezl, assembler) { 1267 ASSEMBLER_TEST_GENERATE(Blezl, assembler) {
1268 Label l; 1268 Label l;
1269 1269
1270 __ LoadImmediate(T5, -3); 1270 __ LoadImmediate(T5, -3);
1271 __ Bind(&l); 1271 __ Bind(&l);
1272 __ blezl(T5, &l); 1272 __ blezl(T5, &l);
1273 __ delay_slot()->addiu(T5, T5, Immediate(1)); 1273 __ delay_slot()->addiu(T5, T5, Immediate(1));
1274 __ ori(V0, T5, Immediate(0)); 1274 __ ori(V0, T5, Immediate(0));
1275 __ jr(RA); 1275 __ jr(RA);
1276 } 1276 }
1277 1277
1278 1278
1279 ASSEMBLER_TEST_RUN(Blezl, test) { 1279 ASSEMBLER_TEST_RUN(Blezl, test) {
1280 typedef int (*SimpleCode)(); 1280 typedef int (*SimpleCode)() DART_UNUSED;
1281 EXPECT_EQ(1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 1281 EXPECT_EQ(1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
1282 } 1282 }
1283 1283
1284 1284
1285 ASSEMBLER_TEST_GENERATE(Bgtz, assembler) { 1285 ASSEMBLER_TEST_GENERATE(Bgtz, assembler) {
1286 Label l; 1286 Label l;
1287 1287
1288 __ LoadImmediate(T5, 3); 1288 __ LoadImmediate(T5, 3);
1289 __ Bind(&l); 1289 __ Bind(&l);
1290 __ bgtz(T5, &l); 1290 __ bgtz(T5, &l);
1291 __ delay_slot()->addiu(T5, T5, Immediate(-1)); 1291 __ delay_slot()->addiu(T5, T5, Immediate(-1));
1292 __ ori(V0, T5, Immediate(0)); 1292 __ ori(V0, T5, Immediate(0));
1293 __ jr(RA); 1293 __ jr(RA);
1294 } 1294 }
1295 1295
1296 1296
1297 ASSEMBLER_TEST_RUN(Bgtz, test) { 1297 ASSEMBLER_TEST_RUN(Bgtz, test) {
1298 typedef int (*SimpleCode)(); 1298 typedef int (*SimpleCode)() DART_UNUSED;
1299 EXPECT_EQ(-1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 1299 EXPECT_EQ(-1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
1300 } 1300 }
1301 1301
1302 1302
1303 ASSEMBLER_TEST_GENERATE(Bgtzl, assembler) { 1303 ASSEMBLER_TEST_GENERATE(Bgtzl, assembler) {
1304 Label l; 1304 Label l;
1305 1305
1306 __ LoadImmediate(T5, 3); 1306 __ LoadImmediate(T5, 3);
1307 __ Bind(&l); 1307 __ Bind(&l);
1308 __ bgtzl(T5, &l); 1308 __ bgtzl(T5, &l);
1309 __ delay_slot()->addiu(T5, T5, Immediate(-1)); 1309 __ delay_slot()->addiu(T5, T5, Immediate(-1));
1310 __ ori(V0, T5, Immediate(0)); 1310 __ ori(V0, T5, Immediate(0));
1311 __ jr(RA); 1311 __ jr(RA);
1312 } 1312 }
1313 1313
1314 1314
1315 ASSEMBLER_TEST_RUN(Bgtzl, test) { 1315 ASSEMBLER_TEST_RUN(Bgtzl, test) {
1316 typedef int (*SimpleCode)(); 1316 typedef int (*SimpleCode)() DART_UNUSED;
1317 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 1317 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
1318 } 1318 }
1319 1319
1320 1320
1321 ASSEMBLER_TEST_GENERATE(Bltz, assembler) { 1321 ASSEMBLER_TEST_GENERATE(Bltz, assembler) {
1322 Label l; 1322 Label l;
1323 1323
1324 __ LoadImmediate(T5, -3); 1324 __ LoadImmediate(T5, -3);
1325 __ Bind(&l); 1325 __ Bind(&l);
1326 __ bltz(T5, &l); 1326 __ bltz(T5, &l);
1327 __ delay_slot()->addiu(T5, T5, Immediate(1)); 1327 __ delay_slot()->addiu(T5, T5, Immediate(1));
1328 __ ori(V0, T5, Immediate(0)); 1328 __ ori(V0, T5, Immediate(0));
1329 __ jr(RA); 1329 __ jr(RA);
1330 } 1330 }
1331 1331
1332 1332
1333 ASSEMBLER_TEST_RUN(Bltz, test) { 1333 ASSEMBLER_TEST_RUN(Bltz, test) {
1334 typedef int (*SimpleCode)(); 1334 typedef int (*SimpleCode)() DART_UNUSED;
1335 EXPECT_EQ(1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 1335 EXPECT_EQ(1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
1336 } 1336 }
1337 1337
1338 1338
1339 ASSEMBLER_TEST_GENERATE(Bltzl, assembler) { 1339 ASSEMBLER_TEST_GENERATE(Bltzl, assembler) {
1340 Label l; 1340 Label l;
1341 1341
1342 __ LoadImmediate(T5, -3); 1342 __ LoadImmediate(T5, -3);
1343 __ Bind(&l); 1343 __ Bind(&l);
1344 __ bltzl(T5, &l); 1344 __ bltzl(T5, &l);
1345 __ delay_slot()->addiu(T5, T5, Immediate(1)); 1345 __ delay_slot()->addiu(T5, T5, Immediate(1));
1346 __ ori(V0, T5, Immediate(0)); 1346 __ ori(V0, T5, Immediate(0));
1347 __ jr(RA); 1347 __ jr(RA);
1348 } 1348 }
1349 1349
1350 1350
1351 ASSEMBLER_TEST_RUN(Bltzl, test) { 1351 ASSEMBLER_TEST_RUN(Bltzl, test) {
1352 typedef int (*SimpleCode)(); 1352 typedef int (*SimpleCode)() DART_UNUSED;
1353 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 1353 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
1354 } 1354 }
1355 1355
1356 1356
1357 ASSEMBLER_TEST_GENERATE(Bne, assembler) { 1357 ASSEMBLER_TEST_GENERATE(Bne, assembler) {
1358 Label l; 1358 Label l;
1359 1359
1360 __ LoadImmediate(T5, 3); 1360 __ LoadImmediate(T5, 3);
1361 __ Bind(&l); 1361 __ Bind(&l);
1362 __ bne(T5, R0, &l); 1362 __ bne(T5, R0, &l);
1363 __ delay_slot()->addiu(T5, T5, Immediate(-1)); 1363 __ delay_slot()->addiu(T5, T5, Immediate(-1));
1364 __ ori(V0, T5, Immediate(0)); 1364 __ ori(V0, T5, Immediate(0));
1365 __ jr(RA); 1365 __ jr(RA);
1366 } 1366 }
1367 1367
1368 1368
1369 ASSEMBLER_TEST_RUN(Bne, test) { 1369 ASSEMBLER_TEST_RUN(Bne, test) {
1370 typedef int (*SimpleCode)(); 1370 typedef int (*SimpleCode)() DART_UNUSED;
1371 EXPECT_EQ(-1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 1371 EXPECT_EQ(-1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
1372 } 1372 }
1373 1373
1374 1374
1375 ASSEMBLER_TEST_GENERATE(Bnel, assembler) { 1375 ASSEMBLER_TEST_GENERATE(Bnel, assembler) {
1376 Label l; 1376 Label l;
1377 1377
1378 __ LoadImmediate(T5, 3); 1378 __ LoadImmediate(T5, 3);
1379 __ Bind(&l); 1379 __ Bind(&l);
1380 __ bnel(T5, R0, &l); 1380 __ bnel(T5, R0, &l);
1381 __ delay_slot()->addiu(T5, T5, Immediate(-1)); 1381 __ delay_slot()->addiu(T5, T5, Immediate(-1));
1382 __ ori(V0, T5, Immediate(0)); 1382 __ ori(V0, T5, Immediate(0));
1383 __ jr(RA); 1383 __ jr(RA);
1384 } 1384 }
1385 1385
1386 1386
1387 ASSEMBLER_TEST_RUN(Bnel, test) { 1387 ASSEMBLER_TEST_RUN(Bnel, test) {
1388 typedef int (*SimpleCode)(); 1388 typedef int (*SimpleCode)() DART_UNUSED;
1389 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 1389 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
1390 } 1390 }
1391 1391
1392 1392
1393 ASSEMBLER_TEST_GENERATE(Label_link1, assembler) { 1393 ASSEMBLER_TEST_GENERATE(Label_link1, assembler) {
1394 Label l; 1394 Label l;
1395 1395
1396 __ bgez(ZR, &l); 1396 __ bgez(ZR, &l);
1397 __ bgez(ZR, &l); 1397 __ bgez(ZR, &l);
1398 __ bgez(ZR, &l); 1398 __ bgez(ZR, &l);
1399 1399
1400 __ LoadImmediate(V0, 1); 1400 __ LoadImmediate(V0, 1);
1401 __ Bind(&l); 1401 __ Bind(&l);
1402 __ mov(V0, ZR); 1402 __ mov(V0, ZR);
1403 __ jr(RA); 1403 __ jr(RA);
1404 } 1404 }
1405 1405
1406 1406
1407 ASSEMBLER_TEST_RUN(Label_link1, test) { 1407 ASSEMBLER_TEST_RUN(Label_link1, test) {
1408 typedef int (*SimpleCode)(); 1408 typedef int (*SimpleCode)() DART_UNUSED;
1409 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 1409 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
1410 } 1410 }
1411 1411
1412 1412
1413 ASSEMBLER_TEST_GENERATE(Label_link2, assembler) { 1413 ASSEMBLER_TEST_GENERATE(Label_link2, assembler) {
1414 Label l; 1414 Label l;
1415 1415
1416 __ beq(ZR, ZR, &l); 1416 __ beq(ZR, ZR, &l);
1417 __ beq(ZR, ZR, &l); 1417 __ beq(ZR, ZR, &l);
1418 __ beq(ZR, ZR, &l); 1418 __ beq(ZR, ZR, &l);
1419 1419
1420 __ LoadImmediate(V0, 1); 1420 __ LoadImmediate(V0, 1);
1421 __ Bind(&l); 1421 __ Bind(&l);
1422 __ mov(V0, ZR); 1422 __ mov(V0, ZR);
1423 __ jr(RA); 1423 __ jr(RA);
1424 } 1424 }
1425 1425
1426 1426
1427 ASSEMBLER_TEST_RUN(Label_link2, test) { 1427 ASSEMBLER_TEST_RUN(Label_link2, test) {
1428 typedef int (*SimpleCode)(); 1428 typedef int (*SimpleCode)() DART_UNUSED;
1429 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 1429 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
1430 } 1430 }
1431 1431
1432 1432
1433 ASSEMBLER_TEST_GENERATE(Jalr_delay, assembler) { 1433 ASSEMBLER_TEST_GENERATE(Jalr_delay, assembler) {
1434 __ mov(T2, RA); 1434 __ mov(T2, RA);
1435 __ jalr(T2, RA); 1435 __ jalr(T2, RA);
1436 __ delay_slot()->ori(V0, ZR, Immediate(42)); 1436 __ delay_slot()->ori(V0, ZR, Immediate(42));
1437 } 1437 }
1438 1438
1439 1439
1440 ASSEMBLER_TEST_RUN(Jalr_delay, test) { 1440 ASSEMBLER_TEST_RUN(Jalr_delay, test) {
1441 typedef int (*SimpleCode)(); 1441 typedef int (*SimpleCode)() DART_UNUSED;
1442 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 1442 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
1443 } 1443 }
1444 1444
1445 1445
1446 ASSEMBLER_TEST_GENERATE(AddOverflow_detect, assembler) { 1446 ASSEMBLER_TEST_GENERATE(AddOverflow_detect, assembler) {
1447 Register left = T0; 1447 Register left = T0;
1448 Register right = T1; 1448 Register right = T1;
1449 Register result = T2; 1449 Register result = T2;
1450 Register overflow = T3; 1450 Register overflow = T3;
1451 Register scratch = T4; 1451 Register scratch = T4;
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
1498 1498
1499 __ b(&done); 1499 __ b(&done);
1500 __ Bind(&error); 1500 __ Bind(&error);
1501 __ mov(V0, ZR); 1501 __ mov(V0, ZR);
1502 __ Bind(&done); 1502 __ Bind(&done);
1503 __ Ret(); 1503 __ Ret();
1504 } 1504 }
1505 1505
1506 1506
1507 ASSEMBLER_TEST_RUN(AddOverflow_detect, test) { 1507 ASSEMBLER_TEST_RUN(AddOverflow_detect, test) {
1508 typedef int (*SimpleCode)(); 1508 typedef int (*SimpleCode)() DART_UNUSED;
1509 EXPECT_EQ(1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 1509 EXPECT_EQ(1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
1510 } 1510 }
1511 1511
1512 1512
1513 ASSEMBLER_TEST_GENERATE(SubOverflow_detect, assembler) { 1513 ASSEMBLER_TEST_GENERATE(SubOverflow_detect, assembler) {
1514 Register left = T0; 1514 Register left = T0;
1515 Register right = T1; 1515 Register right = T1;
1516 Register result = T2; 1516 Register result = T2;
1517 Register overflow = T3; 1517 Register overflow = T3;
1518 Label error, done; 1518 Label error, done;
(...skipping 27 matching lines...) Expand all
1546 1546
1547 __ b(&done); 1547 __ b(&done);
1548 __ Bind(&error); 1548 __ Bind(&error);
1549 __ mov(V0, ZR); 1549 __ mov(V0, ZR);
1550 __ Bind(&done); 1550 __ Bind(&done);
1551 __ Ret(); 1551 __ Ret();
1552 } 1552 }
1553 1553
1554 1554
1555 ASSEMBLER_TEST_RUN(SubOverflow_detect, test) { 1555 ASSEMBLER_TEST_RUN(SubOverflow_detect, test) {
1556 typedef int (*SimpleCode)(); 1556 typedef int (*SimpleCode)() DART_UNUSED;
1557 EXPECT_EQ(1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 1557 EXPECT_EQ(1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
1558 } 1558 }
1559 1559
1560 1560
1561 ASSEMBLER_TEST_GENERATE(Mtc1Mfc1, assembler) { 1561 ASSEMBLER_TEST_GENERATE(Mtc1Mfc1, assembler) {
1562 __ mtc1(ZR, F0); 1562 __ mtc1(ZR, F0);
1563 __ mtc1(ZR, F1); 1563 __ mtc1(ZR, F1);
1564 __ mfc1(V0, F0); 1564 __ mfc1(V0, F0);
1565 __ mfc1(V1, F1); 1565 __ mfc1(V1, F1);
1566 __ Ret(); 1566 __ Ret();
1567 } 1567 }
1568 1568
1569 1569
1570 ASSEMBLER_TEST_RUN(Mtc1Mfc1, test) { 1570 ASSEMBLER_TEST_RUN(Mtc1Mfc1, test) {
1571 typedef int (*SimpleCode)(); 1571 typedef int (*SimpleCode)() DART_UNUSED;
1572 EXPECT(test != NULL); 1572 EXPECT(test != NULL);
1573 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 1573 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
1574 } 1574 }
1575 1575
1576 1576
1577 ASSEMBLER_TEST_GENERATE(Addd, assembler) { 1577 ASSEMBLER_TEST_GENERATE(Addd, assembler) {
1578 __ LoadImmediate(D0, 1.0); 1578 __ LoadImmediate(D0, 1.0);
1579 __ LoadImmediate(D1, 2.0); 1579 __ LoadImmediate(D1, 2.0);
1580 __ addd(D0, D0, D1); 1580 __ addd(D0, D0, D1);
1581 __ Ret(); 1581 __ Ret();
1582 } 1582 }
1583 1583
1584 1584
1585 ASSEMBLER_TEST_RUN(Addd, test) { 1585 ASSEMBLER_TEST_RUN(Addd, test) {
1586 typedef double (*SimpleCode)(); 1586 typedef double (*SimpleCode)() DART_UNUSED;
1587 EXPECT(test != NULL); 1587 EXPECT(test != NULL);
1588 double res = EXECUTE_TEST_CODE_DOUBLE(SimpleCode, test->entry()); 1588 double res = EXECUTE_TEST_CODE_DOUBLE(SimpleCode, test->entry());
1589 EXPECT_FLOAT_EQ(3.0, res, 0.001); 1589 EXPECT_FLOAT_EQ(3.0, res, 0.001);
1590 } 1590 }
1591 1591
1592 1592
1593 ASSEMBLER_TEST_GENERATE(Movd, assembler) { 1593 ASSEMBLER_TEST_GENERATE(Movd, assembler) {
1594 __ LoadImmediate(D1, 1.0); 1594 __ LoadImmediate(D1, 1.0);
1595 __ movd(D0, D1); 1595 __ movd(D0, D1);
1596 __ Ret(); 1596 __ Ret();
1597 } 1597 }
1598 1598
1599 1599
1600 ASSEMBLER_TEST_RUN(Movd, test) { 1600 ASSEMBLER_TEST_RUN(Movd, test) {
1601 typedef double (*SimpleCode)(); 1601 typedef double (*SimpleCode)() DART_UNUSED;
1602 EXPECT(test != NULL); 1602 EXPECT(test != NULL);
1603 double res = EXECUTE_TEST_CODE_DOUBLE(SimpleCode, test->entry()); 1603 double res = EXECUTE_TEST_CODE_DOUBLE(SimpleCode, test->entry());
1604 EXPECT_FLOAT_EQ(1.0, res, 0.001); 1604 EXPECT_FLOAT_EQ(1.0, res, 0.001);
1605 } 1605 }
1606 1606
1607 1607
1608 ASSEMBLER_TEST_GENERATE(Sdc1Ldc1, assembler) { 1608 ASSEMBLER_TEST_GENERATE(Sdc1Ldc1, assembler) {
1609 __ AddImmediate(SP, -8 * kWordSize); 1609 __ AddImmediate(SP, -8 * kWordSize);
1610 __ LoadImmediate(T1, ~(8 - 1)); 1610 __ LoadImmediate(T1, ~(8 - 1));
1611 __ and_(T0, SP, T1); // Need 8 byte alignment. 1611 __ and_(T0, SP, T1); // Need 8 byte alignment.
1612 __ LoadImmediate(D1, 1.0); 1612 __ LoadImmediate(D1, 1.0);
1613 __ sdc1(D1, Address(T0)); 1613 __ sdc1(D1, Address(T0));
1614 __ ldc1(D0, Address(T0)); 1614 __ ldc1(D0, Address(T0));
1615 __ Ret(); 1615 __ Ret();
1616 } 1616 }
1617 1617
1618 1618
1619 ASSEMBLER_TEST_RUN(Sdc1Ldc1, test) { 1619 ASSEMBLER_TEST_RUN(Sdc1Ldc1, test) {
1620 typedef double (*SimpleCode)(); 1620 typedef double (*SimpleCode)() DART_UNUSED;
1621 EXPECT(test != NULL); 1621 EXPECT(test != NULL);
1622 double res = EXECUTE_TEST_CODE_DOUBLE(SimpleCode, test->entry()); 1622 double res = EXECUTE_TEST_CODE_DOUBLE(SimpleCode, test->entry());
1623 EXPECT_FLOAT_EQ(1.0, res, 0.001); 1623 EXPECT_FLOAT_EQ(1.0, res, 0.001);
1624 } 1624 }
1625 1625
1626 1626
1627 ASSEMBLER_TEST_GENERATE(Addd_NaN, assembler) { 1627 ASSEMBLER_TEST_GENERATE(Addd_NaN, assembler) {
1628 __ LoadImmediate(D0, 1.0); 1628 __ LoadImmediate(D0, 1.0);
1629 // Double non-signaling NaN is 0x7FF8000000000000. 1629 // Double non-signaling NaN is 0x7FF8000000000000.
1630 __ LoadImmediate(T0, 0x7FF80000); 1630 __ LoadImmediate(T0, 0x7FF80000);
1631 __ mtc1(ZR, F2); // Load upper bits of NaN. 1631 __ mtc1(ZR, F2); // Load upper bits of NaN.
1632 __ mtc1(T0, F3); // Load lower bits of NaN. 1632 __ mtc1(T0, F3); // Load lower bits of NaN.
1633 __ addd(D0, D0, D1); 1633 __ addd(D0, D0, D1);
1634 __ Ret(); 1634 __ Ret();
1635 } 1635 }
1636 1636
1637 1637
1638 ASSEMBLER_TEST_RUN(Addd_NaN, test) { 1638 ASSEMBLER_TEST_RUN(Addd_NaN, test) {
1639 typedef double (*SimpleCode)(); 1639 typedef double (*SimpleCode)() DART_UNUSED;
1640 EXPECT(test != NULL); 1640 EXPECT(test != NULL);
1641 double res = EXECUTE_TEST_CODE_DOUBLE(SimpleCode, test->entry()); 1641 double res = EXECUTE_TEST_CODE_DOUBLE(SimpleCode, test->entry());
1642 EXPECT_EQ(isnan(res), true); 1642 EXPECT_EQ(isnan(res), true);
1643 } 1643 }
1644 1644
1645 1645
1646 ASSEMBLER_TEST_GENERATE(Addd_Inf, assembler) { 1646 ASSEMBLER_TEST_GENERATE(Addd_Inf, assembler) {
1647 __ LoadImmediate(D0, 1.0); 1647 __ LoadImmediate(D0, 1.0);
1648 __ LoadImmediate(T0, 0x7FF00000); // +inf 1648 __ LoadImmediate(T0, 0x7FF00000); // +inf
1649 __ mtc1(ZR, F2); 1649 __ mtc1(ZR, F2);
1650 __ mtc1(T0, F3); 1650 __ mtc1(T0, F3);
1651 __ addd(D0, D0, D1); 1651 __ addd(D0, D0, D1);
1652 __ Ret(); 1652 __ Ret();
1653 } 1653 }
1654 1654
1655 1655
1656 ASSEMBLER_TEST_RUN(Addd_Inf, test) { 1656 ASSEMBLER_TEST_RUN(Addd_Inf, test) {
1657 typedef double (*SimpleCode)(); 1657 typedef double (*SimpleCode)() DART_UNUSED;
1658 EXPECT(test != NULL); 1658 EXPECT(test != NULL);
1659 double res = EXECUTE_TEST_CODE_DOUBLE(SimpleCode, test->entry()); 1659 double res = EXECUTE_TEST_CODE_DOUBLE(SimpleCode, test->entry());
1660 EXPECT_EQ(isfinite(res), false); 1660 EXPECT_EQ(isfinite(res), false);
1661 } 1661 }
1662 1662
1663 1663
1664 ASSEMBLER_TEST_GENERATE(Subd, assembler) { 1664 ASSEMBLER_TEST_GENERATE(Subd, assembler) {
1665 __ LoadImmediate(D0, 2.5); 1665 __ LoadImmediate(D0, 2.5);
1666 __ LoadImmediate(D1, 1.5); 1666 __ LoadImmediate(D1, 1.5);
1667 __ subd(D0, D0, D1); 1667 __ subd(D0, D0, D1);
1668 __ Ret(); 1668 __ Ret();
1669 } 1669 }
1670 1670
1671 1671
1672 ASSEMBLER_TEST_RUN(Subd, test) { 1672 ASSEMBLER_TEST_RUN(Subd, test) {
1673 typedef double (*SimpleCode)(); 1673 typedef double (*SimpleCode)() DART_UNUSED;
1674 EXPECT(test != NULL); 1674 EXPECT(test != NULL);
1675 double res = EXECUTE_TEST_CODE_DOUBLE(SimpleCode, test->entry()); 1675 double res = EXECUTE_TEST_CODE_DOUBLE(SimpleCode, test->entry());
1676 EXPECT_FLOAT_EQ(1.0, res, 0.001); 1676 EXPECT_FLOAT_EQ(1.0, res, 0.001);
1677 } 1677 }
1678 1678
1679 1679
1680 ASSEMBLER_TEST_GENERATE(Muld, assembler) { 1680 ASSEMBLER_TEST_GENERATE(Muld, assembler) {
1681 __ LoadImmediate(D0, 6.0); 1681 __ LoadImmediate(D0, 6.0);
1682 __ LoadImmediate(D1, 7.0); 1682 __ LoadImmediate(D1, 7.0);
1683 __ muld(D0, D0, D1); 1683 __ muld(D0, D0, D1);
1684 __ Ret(); 1684 __ Ret();
1685 } 1685 }
1686 1686
1687 1687
1688 ASSEMBLER_TEST_RUN(Muld, test) { 1688 ASSEMBLER_TEST_RUN(Muld, test) {
1689 typedef double (*SimpleCode)(); 1689 typedef double (*SimpleCode)() DART_UNUSED;
1690 EXPECT(test != NULL); 1690 EXPECT(test != NULL);
1691 double res = EXECUTE_TEST_CODE_DOUBLE(SimpleCode, test->entry()); 1691 double res = EXECUTE_TEST_CODE_DOUBLE(SimpleCode, test->entry());
1692 EXPECT_FLOAT_EQ(42.0, res, 0.001); 1692 EXPECT_FLOAT_EQ(42.0, res, 0.001);
1693 } 1693 }
1694 1694
1695 1695
1696 ASSEMBLER_TEST_GENERATE(Divd, assembler) { 1696 ASSEMBLER_TEST_GENERATE(Divd, assembler) {
1697 __ LoadImmediate(D0, 42.0); 1697 __ LoadImmediate(D0, 42.0);
1698 __ LoadImmediate(D1, 7.0); 1698 __ LoadImmediate(D1, 7.0);
1699 __ divd(D0, D0, D1); 1699 __ divd(D0, D0, D1);
1700 __ Ret(); 1700 __ Ret();
1701 } 1701 }
1702 1702
1703 1703
1704 ASSEMBLER_TEST_RUN(Divd, test) { 1704 ASSEMBLER_TEST_RUN(Divd, test) {
1705 typedef double (*SimpleCode)(); 1705 typedef double (*SimpleCode)() DART_UNUSED;
1706 EXPECT(test != NULL); 1706 EXPECT(test != NULL);
1707 double res = EXECUTE_TEST_CODE_DOUBLE(SimpleCode, test->entry()); 1707 double res = EXECUTE_TEST_CODE_DOUBLE(SimpleCode, test->entry());
1708 EXPECT_FLOAT_EQ(6.0, res, 0.001); 1708 EXPECT_FLOAT_EQ(6.0, res, 0.001);
1709 } 1709 }
1710 1710
1711 1711
1712 ASSEMBLER_TEST_GENERATE(Sqrtd, assembler) { 1712 ASSEMBLER_TEST_GENERATE(Sqrtd, assembler) {
1713 __ LoadImmediate(D1, 36.0); 1713 __ LoadImmediate(D1, 36.0);
1714 __ sqrtd(D0, D1); 1714 __ sqrtd(D0, D1);
1715 __ Ret(); 1715 __ Ret();
1716 } 1716 }
1717 1717
1718 1718
1719 ASSEMBLER_TEST_RUN(Sqrtd, test) { 1719 ASSEMBLER_TEST_RUN(Sqrtd, test) {
1720 typedef double (*SimpleCode)(); 1720 typedef double (*SimpleCode)() DART_UNUSED;
1721 EXPECT(test != NULL); 1721 EXPECT(test != NULL);
1722 double res = EXECUTE_TEST_CODE_DOUBLE(SimpleCode, test->entry()); 1722 double res = EXECUTE_TEST_CODE_DOUBLE(SimpleCode, test->entry());
1723 EXPECT_FLOAT_EQ(6.0, res, 0.001); 1723 EXPECT_FLOAT_EQ(6.0, res, 0.001);
1724 } 1724 }
1725 1725
1726 1726
1727 ASSEMBLER_TEST_GENERATE(Cop1CUN, assembler) { 1727 ASSEMBLER_TEST_GENERATE(Cop1CUN, assembler) {
1728 Label is_true; 1728 Label is_true;
1729 1729
1730 __ LoadImmediate(D0, 42.0); 1730 __ LoadImmediate(D0, 42.0);
1731 __ LoadImmediate(T0, 0x7FF80000); 1731 __ LoadImmediate(T0, 0x7FF80000);
1732 __ mtc1(ZR, F2); 1732 __ mtc1(ZR, F2);
1733 __ mtc1(T0, F3); 1733 __ mtc1(T0, F3);
1734 __ LoadImmediate(V0, 42); 1734 __ LoadImmediate(V0, 42);
1735 __ cund(D0, D1); 1735 __ cund(D0, D1);
1736 __ bc1t(&is_true); 1736 __ bc1t(&is_true);
1737 __ mov(V0, ZR); 1737 __ mov(V0, ZR);
1738 __ Bind(&is_true); 1738 __ Bind(&is_true);
1739 __ Ret(); 1739 __ Ret();
1740 } 1740 }
1741 1741
1742 1742
1743 ASSEMBLER_TEST_RUN(Cop1CUN, test) { 1743 ASSEMBLER_TEST_RUN(Cop1CUN, test) {
1744 typedef int (*SimpleCode)(); 1744 typedef int (*SimpleCode)() DART_UNUSED;
1745 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 1745 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
1746 } 1746 }
1747 1747
1748 1748
1749 ASSEMBLER_TEST_GENERATE(Cop1CUN_not_taken, assembler) { 1749 ASSEMBLER_TEST_GENERATE(Cop1CUN_not_taken, assembler) {
1750 Label is_true; 1750 Label is_true;
1751 1751
1752 __ LoadImmediate(D0, 42.0); 1752 __ LoadImmediate(D0, 42.0);
1753 __ LoadImmediate(D1, 42.0); 1753 __ LoadImmediate(D1, 42.0);
1754 __ LoadImmediate(V0, 42); 1754 __ LoadImmediate(V0, 42);
1755 __ cund(D0, D1); 1755 __ cund(D0, D1);
1756 __ bc1t(&is_true); 1756 __ bc1t(&is_true);
1757 __ mov(V0, ZR); 1757 __ mov(V0, ZR);
1758 __ Bind(&is_true); 1758 __ Bind(&is_true);
1759 __ Ret(); 1759 __ Ret();
1760 } 1760 }
1761 1761
1762 1762
1763 ASSEMBLER_TEST_RUN(Cop1CUN_not_taken, test) { 1763 ASSEMBLER_TEST_RUN(Cop1CUN_not_taken, test) {
1764 typedef int (*SimpleCode)(); 1764 typedef int (*SimpleCode)() DART_UNUSED;
1765 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 1765 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
1766 } 1766 }
1767 1767
1768 1768
1769 ASSEMBLER_TEST_GENERATE(Cop1CEq, assembler) { 1769 ASSEMBLER_TEST_GENERATE(Cop1CEq, assembler) {
1770 Label is_true; 1770 Label is_true;
1771 1771
1772 __ LoadImmediate(D0, 42.5); 1772 __ LoadImmediate(D0, 42.5);
1773 __ LoadImmediate(D1, 42.5); 1773 __ LoadImmediate(D1, 42.5);
1774 __ LoadImmediate(V0, 42); 1774 __ LoadImmediate(V0, 42);
1775 __ ceqd(D0, D1); 1775 __ ceqd(D0, D1);
1776 __ bc1t(&is_true); 1776 __ bc1t(&is_true);
1777 __ mov(V0, ZR); 1777 __ mov(V0, ZR);
1778 __ Bind(&is_true); 1778 __ Bind(&is_true);
1779 __ Ret(); 1779 __ Ret();
1780 } 1780 }
1781 1781
1782 1782
1783 ASSEMBLER_TEST_RUN(Cop1CEq, test) { 1783 ASSEMBLER_TEST_RUN(Cop1CEq, test) {
1784 typedef int (*SimpleCode)(); 1784 typedef int (*SimpleCode)() DART_UNUSED;
1785 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 1785 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
1786 } 1786 }
1787 1787
1788 1788
1789 ASSEMBLER_TEST_GENERATE(Cop1CEq_not_taken, assembler) { 1789 ASSEMBLER_TEST_GENERATE(Cop1CEq_not_taken, assembler) {
1790 Label is_true; 1790 Label is_true;
1791 1791
1792 __ LoadImmediate(D0, 42.0); 1792 __ LoadImmediate(D0, 42.0);
1793 __ LoadImmediate(D1, 42.5); 1793 __ LoadImmediate(D1, 42.5);
1794 __ LoadImmediate(V0, 42); 1794 __ LoadImmediate(V0, 42);
1795 __ ceqd(D0, D1); 1795 __ ceqd(D0, D1);
1796 __ bc1t(&is_true); 1796 __ bc1t(&is_true);
1797 __ mov(V0, ZR); 1797 __ mov(V0, ZR);
1798 __ Bind(&is_true); 1798 __ Bind(&is_true);
1799 __ Ret(); 1799 __ Ret();
1800 } 1800 }
1801 1801
1802 1802
1803 ASSEMBLER_TEST_RUN(Cop1CEq_not_taken, test) { 1803 ASSEMBLER_TEST_RUN(Cop1CEq_not_taken, test) {
1804 typedef int (*SimpleCode)(); 1804 typedef int (*SimpleCode)() DART_UNUSED;
1805 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 1805 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
1806 } 1806 }
1807 1807
1808 1808
1809 ASSEMBLER_TEST_GENERATE(Cop1CEq_false, assembler) { 1809 ASSEMBLER_TEST_GENERATE(Cop1CEq_false, assembler) {
1810 Label is_true; 1810 Label is_true;
1811 1811
1812 __ LoadImmediate(D0, 42.0); 1812 __ LoadImmediate(D0, 42.0);
1813 __ LoadImmediate(D1, 42.5); 1813 __ LoadImmediate(D1, 42.5);
1814 __ LoadImmediate(V0, 42); 1814 __ LoadImmediate(V0, 42);
1815 __ ceqd(D0, D1); 1815 __ ceqd(D0, D1);
1816 __ bc1f(&is_true); 1816 __ bc1f(&is_true);
1817 __ mov(V0, ZR); 1817 __ mov(V0, ZR);
1818 __ Bind(&is_true); 1818 __ Bind(&is_true);
1819 __ Ret(); 1819 __ Ret();
1820 } 1820 }
1821 1821
1822 1822
1823 ASSEMBLER_TEST_RUN(Cop1CEq_false, test) { 1823 ASSEMBLER_TEST_RUN(Cop1CEq_false, test) {
1824 typedef int (*SimpleCode)(); 1824 typedef int (*SimpleCode)() DART_UNUSED;
1825 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 1825 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
1826 } 1826 }
1827 1827
1828 1828
1829 ASSEMBLER_TEST_GENERATE(Cop1CEq_false_not_taken, assembler) { 1829 ASSEMBLER_TEST_GENERATE(Cop1CEq_false_not_taken, assembler) {
1830 Label is_true; 1830 Label is_true;
1831 1831
1832 __ LoadImmediate(D0, 42.5); 1832 __ LoadImmediate(D0, 42.5);
1833 __ LoadImmediate(D1, 42.5); 1833 __ LoadImmediate(D1, 42.5);
1834 __ LoadImmediate(V0, 42); 1834 __ LoadImmediate(V0, 42);
1835 __ ceqd(D0, D1); 1835 __ ceqd(D0, D1);
1836 __ bc1f(&is_true); 1836 __ bc1f(&is_true);
1837 __ mov(V0, ZR); 1837 __ mov(V0, ZR);
1838 __ Bind(&is_true); 1838 __ Bind(&is_true);
1839 __ Ret(); 1839 __ Ret();
1840 } 1840 }
1841 1841
1842 1842
1843 ASSEMBLER_TEST_RUN(Cop1CEq_false_not_taken, test) { 1843 ASSEMBLER_TEST_RUN(Cop1CEq_false_not_taken, test) {
1844 typedef int (*SimpleCode)(); 1844 typedef int (*SimpleCode)() DART_UNUSED;
1845 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 1845 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
1846 } 1846 }
1847 1847
1848 1848
1849 ASSEMBLER_TEST_GENERATE(Cop1COLT, assembler) { 1849 ASSEMBLER_TEST_GENERATE(Cop1COLT, assembler) {
1850 Label is_true; 1850 Label is_true;
1851 1851
1852 __ LoadImmediate(D0, 42.0); 1852 __ LoadImmediate(D0, 42.0);
1853 __ LoadImmediate(D1, 42.5); 1853 __ LoadImmediate(D1, 42.5);
1854 __ LoadImmediate(V0, 42); 1854 __ LoadImmediate(V0, 42);
1855 __ coltd(D0, D1); 1855 __ coltd(D0, D1);
1856 __ bc1t(&is_true); 1856 __ bc1t(&is_true);
1857 __ mov(V0, ZR); 1857 __ mov(V0, ZR);
1858 __ Bind(&is_true); 1858 __ Bind(&is_true);
1859 __ Ret(); 1859 __ Ret();
1860 } 1860 }
1861 1861
1862 1862
1863 ASSEMBLER_TEST_RUN(Cop1COLT, test) { 1863 ASSEMBLER_TEST_RUN(Cop1COLT, test) {
1864 typedef int (*SimpleCode)(); 1864 typedef int (*SimpleCode)() DART_UNUSED;
1865 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 1865 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
1866 } 1866 }
1867 1867
1868 1868
1869 ASSEMBLER_TEST_GENERATE(Cop1COLT_not_taken, assembler) { 1869 ASSEMBLER_TEST_GENERATE(Cop1COLT_not_taken, assembler) {
1870 Label is_true; 1870 Label is_true;
1871 1871
1872 __ LoadImmediate(D0, 42.5); 1872 __ LoadImmediate(D0, 42.5);
1873 __ LoadImmediate(D1, 42.0); 1873 __ LoadImmediate(D1, 42.0);
1874 __ LoadImmediate(V0, 42); 1874 __ LoadImmediate(V0, 42);
1875 __ coltd(D0, D1); 1875 __ coltd(D0, D1);
1876 __ bc1t(&is_true); 1876 __ bc1t(&is_true);
1877 __ mov(V0, ZR); 1877 __ mov(V0, ZR);
1878 __ Bind(&is_true); 1878 __ Bind(&is_true);
1879 __ Ret(); 1879 __ Ret();
1880 } 1880 }
1881 1881
1882 1882
1883 ASSEMBLER_TEST_RUN(Cop1COLT_not_taken, test) { 1883 ASSEMBLER_TEST_RUN(Cop1COLT_not_taken, test) {
1884 typedef int (*SimpleCode)(); 1884 typedef int (*SimpleCode)() DART_UNUSED;
1885 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 1885 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
1886 } 1886 }
1887 1887
1888 1888
1889 ASSEMBLER_TEST_GENERATE(Cop1COLE, assembler) { 1889 ASSEMBLER_TEST_GENERATE(Cop1COLE, assembler) {
1890 Label is_true; 1890 Label is_true;
1891 1891
1892 __ LoadImmediate(D0, 42.0); 1892 __ LoadImmediate(D0, 42.0);
1893 __ LoadImmediate(D1, 42.0); 1893 __ LoadImmediate(D1, 42.0);
1894 __ LoadImmediate(V0, 42); 1894 __ LoadImmediate(V0, 42);
1895 __ coled(D0, D1); 1895 __ coled(D0, D1);
1896 __ bc1t(&is_true); 1896 __ bc1t(&is_true);
1897 __ mov(V0, ZR); 1897 __ mov(V0, ZR);
1898 __ Bind(&is_true); 1898 __ Bind(&is_true);
1899 __ Ret(); 1899 __ Ret();
1900 } 1900 }
1901 1901
1902 1902
1903 ASSEMBLER_TEST_RUN(Cop1COLE, test) { 1903 ASSEMBLER_TEST_RUN(Cop1COLE, test) {
1904 typedef int (*SimpleCode)(); 1904 typedef int (*SimpleCode)() DART_UNUSED;
1905 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 1905 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
1906 } 1906 }
1907 1907
1908 1908
1909 ASSEMBLER_TEST_GENERATE(Cop1COLE_not_taken, assembler) { 1909 ASSEMBLER_TEST_GENERATE(Cop1COLE_not_taken, assembler) {
1910 Label is_true; 1910 Label is_true;
1911 1911
1912 __ LoadImmediate(D0, 42.5); 1912 __ LoadImmediate(D0, 42.5);
1913 __ LoadImmediate(D1, 42.0); 1913 __ LoadImmediate(D1, 42.0);
1914 __ LoadImmediate(V0, 42); 1914 __ LoadImmediate(V0, 42);
1915 __ coled(D0, D1); 1915 __ coled(D0, D1);
1916 __ bc1t(&is_true); 1916 __ bc1t(&is_true);
1917 __ mov(V0, ZR); 1917 __ mov(V0, ZR);
1918 __ Bind(&is_true); 1918 __ Bind(&is_true);
1919 __ Ret(); 1919 __ Ret();
1920 } 1920 }
1921 1921
1922 1922
1923 ASSEMBLER_TEST_RUN(Cop1COLE_not_taken, test) { 1923 ASSEMBLER_TEST_RUN(Cop1COLE_not_taken, test) {
1924 typedef int (*SimpleCode)(); 1924 typedef int (*SimpleCode)() DART_UNUSED;
1925 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 1925 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
1926 } 1926 }
1927 1927
1928 1928
1929 ASSEMBLER_TEST_GENERATE(Cop1CvtDW, assembler) { 1929 ASSEMBLER_TEST_GENERATE(Cop1CvtDW, assembler) {
1930 __ LoadImmediate(T0, 42); 1930 __ LoadImmediate(T0, 42);
1931 __ mtc1(T0, F2); 1931 __ mtc1(T0, F2);
1932 __ cvtdw(D0, F2); 1932 __ cvtdw(D0, F2);
1933 __ Ret(); 1933 __ Ret();
1934 } 1934 }
1935 1935
1936 1936
1937 ASSEMBLER_TEST_RUN(Cop1CvtDW, test) { 1937 ASSEMBLER_TEST_RUN(Cop1CvtDW, test) {
1938 typedef double (*SimpleCode)(); 1938 typedef double (*SimpleCode)() DART_UNUSED;
1939 EXPECT(test != NULL); 1939 EXPECT(test != NULL);
1940 double res = EXECUTE_TEST_CODE_DOUBLE(SimpleCode, test->entry()); 1940 double res = EXECUTE_TEST_CODE_DOUBLE(SimpleCode, test->entry());
1941 EXPECT_FLOAT_EQ(42.0, res, 0.001); 1941 EXPECT_FLOAT_EQ(42.0, res, 0.001);
1942 } 1942 }
1943 1943
1944 1944
1945 ASSEMBLER_TEST_GENERATE(Cop1CvtDW_neg, assembler) { 1945 ASSEMBLER_TEST_GENERATE(Cop1CvtDW_neg, assembler) {
1946 __ LoadImmediate(T0, -42); 1946 __ LoadImmediate(T0, -42);
1947 __ mtc1(T0, F2); 1947 __ mtc1(T0, F2);
1948 __ cvtdw(D0, F2); 1948 __ cvtdw(D0, F2);
1949 __ Ret(); 1949 __ Ret();
1950 } 1950 }
1951 1951
1952 1952
1953 ASSEMBLER_TEST_RUN(Cop1CvtDW_neg, test) { 1953 ASSEMBLER_TEST_RUN(Cop1CvtDW_neg, test) {
1954 typedef double (*SimpleCode)(); 1954 typedef double (*SimpleCode)() DART_UNUSED;
1955 EXPECT(test != NULL); 1955 EXPECT(test != NULL);
1956 double res = EXECUTE_TEST_CODE_DOUBLE(SimpleCode, test->entry()); 1956 double res = EXECUTE_TEST_CODE_DOUBLE(SimpleCode, test->entry());
1957 EXPECT_FLOAT_EQ(-42.0, res, 0.001); 1957 EXPECT_FLOAT_EQ(-42.0, res, 0.001);
1958 } 1958 }
1959 1959
1960 1960
1961 ASSEMBLER_TEST_GENERATE(Cop1CvtDL, assembler) { 1961 ASSEMBLER_TEST_GENERATE(Cop1CvtDL, assembler) {
1962 if (TargetCPUFeatures::mips_version() == MIPS32r2) { 1962 if (TargetCPUFeatures::mips_version() == MIPS32r2) {
1963 __ LoadImmediate(T0, 0x1); 1963 __ LoadImmediate(T0, 0x1);
1964 __ mtc1(ZR, F2); 1964 __ mtc1(ZR, F2);
1965 __ mtc1(T0, F3); // D0 <- 0x100000000 = 4294967296 1965 __ mtc1(T0, F3); // D0 <- 0x100000000 = 4294967296
1966 __ cvtdl(D0, D1); 1966 __ cvtdl(D0, D1);
1967 } else { 1967 } else {
1968 __ LoadImmediate(D0, 4294967296.0); 1968 __ LoadImmediate(D0, 4294967296.0);
1969 } 1969 }
1970 __ Ret(); 1970 __ Ret();
1971 } 1971 }
1972 1972
1973 1973
1974 ASSEMBLER_TEST_RUN(Cop1CvtDL, test) { 1974 ASSEMBLER_TEST_RUN(Cop1CvtDL, test) {
1975 typedef double (*SimpleCode)(); 1975 typedef double (*SimpleCode)() DART_UNUSED;
1976 EXPECT(test != NULL); 1976 EXPECT(test != NULL);
1977 double res = EXECUTE_TEST_CODE_DOUBLE(SimpleCode, test->entry()); 1977 double res = EXECUTE_TEST_CODE_DOUBLE(SimpleCode, test->entry());
1978 EXPECT_FLOAT_EQ(4294967296.0, res, 0.001); 1978 EXPECT_FLOAT_EQ(4294967296.0, res, 0.001);
1979 } 1979 }
1980 1980
1981 1981
1982 ASSEMBLER_TEST_GENERATE(Cop1CvtDL_neg, assembler) { 1982 ASSEMBLER_TEST_GENERATE(Cop1CvtDL_neg, assembler) {
1983 if (TargetCPUFeatures::mips_version() == MIPS32r2) { 1983 if (TargetCPUFeatures::mips_version() == MIPS32r2) {
1984 __ LoadImmediate(T0, 0xffffffff); 1984 __ LoadImmediate(T0, 0xffffffff);
1985 __ mtc1(T0, F2); 1985 __ mtc1(T0, F2);
1986 __ mtc1(T0, F3); // D0 <- 0xffffffffffffffff = -1 1986 __ mtc1(T0, F3); // D0 <- 0xffffffffffffffff = -1
1987 __ cvtdl(D0, D1); 1987 __ cvtdl(D0, D1);
1988 } else { 1988 } else {
1989 __ LoadImmediate(D0, -1.0); 1989 __ LoadImmediate(D0, -1.0);
1990 } 1990 }
1991 __ Ret(); 1991 __ Ret();
1992 } 1992 }
1993 1993
1994 1994
1995 ASSEMBLER_TEST_RUN(Cop1CvtDL_neg, test) { 1995 ASSEMBLER_TEST_RUN(Cop1CvtDL_neg, test) {
1996 typedef double (*SimpleCode)(); 1996 typedef double (*SimpleCode)() DART_UNUSED;
1997 EXPECT(test != NULL); 1997 EXPECT(test != NULL);
1998 double res = EXECUTE_TEST_CODE_DOUBLE(SimpleCode, test->entry()); 1998 double res = EXECUTE_TEST_CODE_DOUBLE(SimpleCode, test->entry());
1999 EXPECT_FLOAT_EQ(-1.0, res, 0.001); 1999 EXPECT_FLOAT_EQ(-1.0, res, 0.001);
2000 } 2000 }
2001 2001
2002 2002
2003 ASSEMBLER_TEST_GENERATE(Cop1CvtWD, assembler) { 2003 ASSEMBLER_TEST_GENERATE(Cop1CvtWD, assembler) {
2004 __ LoadImmediate(D1, 42.0); 2004 __ LoadImmediate(D1, 42.0);
2005 __ cvtwd(F0, D1); 2005 __ cvtwd(F0, D1);
2006 __ mfc1(V0, F0); 2006 __ mfc1(V0, F0);
2007 __ Ret(); 2007 __ Ret();
2008 } 2008 }
2009 2009
2010 2010
2011 ASSEMBLER_TEST_RUN(Cop1CvtWD, test) { 2011 ASSEMBLER_TEST_RUN(Cop1CvtWD, test) {
2012 typedef int (*SimpleCode)(); 2012 typedef int (*SimpleCode)() DART_UNUSED;
2013 EXPECT(test != NULL); 2013 EXPECT(test != NULL);
2014 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 2014 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
2015 } 2015 }
2016 2016
2017 2017
2018 ASSEMBLER_TEST_GENERATE(Cop1CvtWD_neg, assembler) { 2018 ASSEMBLER_TEST_GENERATE(Cop1CvtWD_neg, assembler) {
2019 __ LoadImmediate(D1, -42.0); 2019 __ LoadImmediate(D1, -42.0);
2020 __ cvtwd(F0, D1); 2020 __ cvtwd(F0, D1);
2021 __ mfc1(V0, F0); 2021 __ mfc1(V0, F0);
2022 __ Ret(); 2022 __ Ret();
2023 } 2023 }
2024 2024
2025 2025
2026 ASSEMBLER_TEST_RUN(Cop1CvtWD_neg, test) { 2026 ASSEMBLER_TEST_RUN(Cop1CvtWD_neg, test) {
2027 typedef int (*SimpleCode)(); 2027 typedef int (*SimpleCode)() DART_UNUSED;
2028 EXPECT(test != NULL); 2028 EXPECT(test != NULL);
2029 EXPECT_EQ(-42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 2029 EXPECT_EQ(-42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
2030 } 2030 }
2031 2031
2032 2032
2033 ASSEMBLER_TEST_GENERATE(Cop1CvtSD, assembler) { 2033 ASSEMBLER_TEST_GENERATE(Cop1CvtSD, assembler) {
2034 __ LoadImmediate(D2, -42.42); 2034 __ LoadImmediate(D2, -42.42);
2035 __ cvtsd(F2, D2); 2035 __ cvtsd(F2, D2);
2036 __ cvtds(D0, F2); 2036 __ cvtds(D0, F2);
2037 __ Ret(); 2037 __ Ret();
2038 } 2038 }
2039 2039
2040 2040
2041 ASSEMBLER_TEST_RUN(Cop1CvtSD, test) { 2041 ASSEMBLER_TEST_RUN(Cop1CvtSD, test) {
2042 typedef double (*SimpleCode)(); 2042 typedef double (*SimpleCode)() DART_UNUSED;
2043 EXPECT(test != NULL); 2043 EXPECT(test != NULL);
2044 double res = EXECUTE_TEST_CODE_DOUBLE(SimpleCode, test->entry()); 2044 double res = EXECUTE_TEST_CODE_DOUBLE(SimpleCode, test->entry());
2045 EXPECT_FLOAT_EQ(-42.42, res, 0.001); 2045 EXPECT_FLOAT_EQ(-42.42, res, 0.001);
2046 } 2046 }
2047 2047
2048 2048
2049 // Called from assembler_test.cc. 2049 // Called from assembler_test.cc.
2050 // RA: return address. 2050 // RA: return address.
2051 // A0: context. 2051 // A0: context.
2052 // A1: value. 2052 // A1: value.
2053 // A2: growable array. 2053 // A2: growable array.
2054 ASSEMBLER_TEST_GENERATE(StoreIntoObject, assembler) { 2054 ASSEMBLER_TEST_GENERATE(StoreIntoObject, assembler) {
2055 __ addiu(SP, SP, Immediate(-2 * kWordSize)); 2055 __ addiu(SP, SP, Immediate(-2 * kWordSize));
2056 __ sw(CTX, Address(SP, 1 * kWordSize)); 2056 __ sw(CTX, Address(SP, 1 * kWordSize));
2057 __ sw(RA, Address(SP, 0 * kWordSize)); 2057 __ sw(RA, Address(SP, 0 * kWordSize));
2058 2058
2059 __ mov(CTX, A0); 2059 __ mov(CTX, A0);
2060 __ StoreIntoObject(A2, 2060 __ StoreIntoObject(A2,
2061 FieldAddress(A2, GrowableObjectArray::data_offset()), 2061 FieldAddress(A2, GrowableObjectArray::data_offset()),
2062 A1); 2062 A1);
2063 __ lw(RA, Address(SP, 0 * kWordSize)); 2063 __ lw(RA, Address(SP, 0 * kWordSize));
2064 __ lw(CTX, Address(SP, 1 * kWordSize)); 2064 __ lw(CTX, Address(SP, 1 * kWordSize));
2065 __ addiu(SP, SP, Immediate(2 * kWordSize)); 2065 __ addiu(SP, SP, Immediate(2 * kWordSize));
2066 __ Ret(); 2066 __ Ret();
2067 } 2067 }
2068 2068
2069 } // namespace dart 2069 } // namespace dart
2070 2070
2071 #endif // defined TARGET_ARCH_MIPS 2071 #endif // defined TARGET_ARCH_MIPS
OLDNEW
« no previous file with comments | « runtime/vm/assembler_arm_test.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698