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

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

Issue 20369003: Implements far branch targets for MIPS. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 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
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/os.h" 9 #include "vm/os.h"
10 #include "vm/unit_test.h" 10 #include "vm/unit_test.h"
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 46
47 47
48 ASSEMBLER_TEST_RUN(Addiu_overflow, test) { 48 ASSEMBLER_TEST_RUN(Addiu_overflow, test) {
49 typedef int (*SimpleCode)(); 49 typedef int (*SimpleCode)();
50 EXPECT_EQ(static_cast<int32_t>(0x80000000), 50 EXPECT_EQ(static_cast<int32_t>(0x80000000),
51 EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 51 EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
52 } 52 }
53 53
54 54
55 ASSEMBLER_TEST_GENERATE(Addu, assembler) { 55 ASSEMBLER_TEST_GENERATE(Addu, assembler) {
56 __ addiu(R2, ZR, Immediate(21)); 56 __ addiu(T2, ZR, Immediate(21));
57 __ addiu(R3, ZR, Immediate(21)); 57 __ addiu(T3, ZR, Immediate(21));
58 __ addu(V0, R2, R3); 58 __ addu(V0, T2, T3);
59 __ jr(RA); 59 __ jr(RA);
60 } 60 }
61 61
62 62
63 ASSEMBLER_TEST_RUN(Addu, test) { 63 ASSEMBLER_TEST_RUN(Addu, test) {
64 typedef int (*SimpleCode)(); 64 typedef int (*SimpleCode)();
65 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 65 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
66 } 66 }
67 67
68 68
69 ASSEMBLER_TEST_GENERATE(Addu_overflow, assembler) { 69 ASSEMBLER_TEST_GENERATE(Addu_overflow, assembler) {
70 __ LoadImmediate(R2, 0x7fffffff); 70 __ LoadImmediate(T2, 0x7fffffff);
71 __ addiu(R3, R0, Immediate(1)); 71 __ addiu(T3, R0, Immediate(1));
72 __ addu(V0, R2, R3); 72 __ addu(V0, T2, T3);
73 __ jr(RA); 73 __ jr(RA);
74 } 74 }
75 75
76 76
77 ASSEMBLER_TEST_RUN(Addu_overflow, test) { 77 ASSEMBLER_TEST_RUN(Addu_overflow, test) {
78 typedef int (*SimpleCode)(); 78 typedef int (*SimpleCode)();
79 EXPECT_EQ(static_cast<int32_t>(0x80000000), 79 EXPECT_EQ(static_cast<int32_t>(0x80000000),
80 EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 80 EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
81 } 81 }
82 82
83 83
84 ASSEMBLER_TEST_GENERATE(And, assembler) { 84 ASSEMBLER_TEST_GENERATE(And, assembler) {
85 __ addiu(R2, ZR, Immediate(42)); 85 __ addiu(T2, ZR, Immediate(42));
86 __ addiu(R3, ZR, Immediate(2)); 86 __ addiu(T3, ZR, Immediate(2));
87 __ and_(V0, R2, R3); 87 __ and_(V0, T2, T3);
88 __ jr(RA); 88 __ jr(RA);
89 } 89 }
90 90
91 91
92 ASSEMBLER_TEST_RUN(And, test) { 92 ASSEMBLER_TEST_RUN(And, test) {
93 typedef int (*SimpleCode)(); 93 typedef int (*SimpleCode)();
94 EXPECT_EQ(2, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 94 EXPECT_EQ(2, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
95 } 95 }
96 96
97 97
98 ASSEMBLER_TEST_GENERATE(Andi, assembler) { 98 ASSEMBLER_TEST_GENERATE(Andi, assembler) {
99 __ addiu(R1, ZR, Immediate(42)); 99 __ addiu(T1, ZR, Immediate(42));
100 __ andi(V0, R1, Immediate(2)); 100 __ andi(V0, T1, Immediate(2));
101 __ jr(RA); 101 __ jr(RA);
102 } 102 }
103 103
104 104
105 ASSEMBLER_TEST_RUN(Andi, test) { 105 ASSEMBLER_TEST_RUN(Andi, test) {
106 typedef int (*SimpleCode)(); 106 typedef int (*SimpleCode)();
107 EXPECT_EQ(2, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 107 EXPECT_EQ(2, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
108 } 108 }
109 109
110 110
111 ASSEMBLER_TEST_GENERATE(Clo, assembler) { 111 ASSEMBLER_TEST_GENERATE(Clo, assembler) {
112 __ addiu(R1, ZR, Immediate(-1)); 112 __ addiu(T1, ZR, Immediate(-1));
113 __ clo(V0, R1); 113 __ clo(V0, T1);
114 __ jr(RA); 114 __ jr(RA);
115 } 115 }
116 116
117 117
118 ASSEMBLER_TEST_RUN(Clo, test) { 118 ASSEMBLER_TEST_RUN(Clo, test) {
119 typedef int (*SimpleCode)(); 119 typedef int (*SimpleCode)();
120 EXPECT_EQ(32, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 120 EXPECT_EQ(32, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
121 } 121 }
122 122
123 123
124 ASSEMBLER_TEST_GENERATE(Clz, assembler) { 124 ASSEMBLER_TEST_GENERATE(Clz, assembler) {
125 __ addiu(R1, ZR, Immediate(0x7fff)); 125 __ addiu(T1, ZR, Immediate(0x7fff));
126 __ clz(V0, R1); 126 __ clz(V0, T1);
127 __ jr(RA); 127 __ jr(RA);
128 } 128 }
129 129
130 130
131 ASSEMBLER_TEST_RUN(Clz, test) { 131 ASSEMBLER_TEST_RUN(Clz, test) {
132 typedef int (*SimpleCode)(); 132 typedef int (*SimpleCode)();
133 EXPECT_EQ(17, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 133 EXPECT_EQ(17, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
134 } 134 }
135 135
136 136
(...skipping 19 matching lines...) Expand all
156 } 156 }
157 157
158 158
159 ASSEMBLER_TEST_RUN(MthiMfhi, test) { 159 ASSEMBLER_TEST_RUN(MthiMfhi, test) {
160 typedef int (*SimpleCode)(); 160 typedef int (*SimpleCode)();
161 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 161 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
162 } 162 }
163 163
164 164
165 ASSEMBLER_TEST_GENERATE(Divu, assembler) { 165 ASSEMBLER_TEST_GENERATE(Divu, assembler) {
166 __ addiu(R1, ZR, Immediate(27)); 166 __ addiu(T1, ZR, Immediate(27));
167 __ addiu(R2, ZR, Immediate(9)); 167 __ addiu(T2, ZR, Immediate(9));
168 __ divu(R1, R2); 168 __ divu(T1, T2);
169 __ mflo(V0); 169 __ mflo(V0);
170 __ jr(RA); 170 __ jr(RA);
171 } 171 }
172 172
173 173
174 ASSEMBLER_TEST_RUN(Divu, test) { 174 ASSEMBLER_TEST_RUN(Divu, test) {
175 typedef int (*SimpleCode)(); 175 typedef int (*SimpleCode)();
176 EXPECT_EQ(3, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 176 EXPECT_EQ(3, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
177 } 177 }
178 178
179 179
180 ASSEMBLER_TEST_GENERATE(Div, assembler) { 180 ASSEMBLER_TEST_GENERATE(Div, assembler) {
181 __ addiu(R1, ZR, Immediate(27)); 181 __ addiu(T1, ZR, Immediate(27));
182 __ addiu(R2, ZR, Immediate(9)); 182 __ addiu(T2, ZR, Immediate(9));
183 __ div(R1, R2); 183 __ div(T1, T2);
184 __ mflo(V0); 184 __ mflo(V0);
185 __ jr(RA); 185 __ jr(RA);
186 } 186 }
187 187
188 188
189 ASSEMBLER_TEST_RUN(Div, test) { 189 ASSEMBLER_TEST_RUN(Div, test) {
190 typedef int (*SimpleCode)(); 190 typedef int (*SimpleCode)();
191 EXPECT_EQ(3, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 191 EXPECT_EQ(3, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
192 } 192 }
193 193
194 194
195 ASSEMBLER_TEST_GENERATE(Divu_corner, assembler) { 195 ASSEMBLER_TEST_GENERATE(Divu_corner, assembler) {
196 __ LoadImmediate(R1, 0x80000000); 196 __ LoadImmediate(T1, 0x80000000);
197 __ LoadImmediate(R2, 0xffffffff); 197 __ LoadImmediate(T2, 0xffffffff);
198 __ divu(R1, R2); 198 __ divu(T1, T2);
199 __ mflo(V0); 199 __ mflo(V0);
200 __ jr(RA); 200 __ jr(RA);
201 } 201 }
202 202
203 203
204 ASSEMBLER_TEST_RUN(Divu_corner, test) { 204 ASSEMBLER_TEST_RUN(Divu_corner, test) {
205 typedef int (*SimpleCode)(); 205 typedef int (*SimpleCode)();
206 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 206 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
207 } 207 }
208 208
209 209
210 ASSEMBLER_TEST_GENERATE(Div_corner, assembler) { 210 ASSEMBLER_TEST_GENERATE(Div_corner, assembler) {
211 __ LoadImmediate(R1, 0x80000000); 211 __ LoadImmediate(T1, 0x80000000);
212 __ LoadImmediate(R2, 0xffffffff); 212 __ LoadImmediate(T2, 0xffffffff);
213 __ div(R1, R2); 213 __ div(T1, T2);
214 __ mflo(V0); 214 __ mflo(V0);
215 __ jr(RA); 215 __ jr(RA);
216 } 216 }
217 217
218 218
219 ASSEMBLER_TEST_RUN(Div_corner, test) { 219 ASSEMBLER_TEST_RUN(Div_corner, test) {
220 typedef int (*SimpleCode)(); 220 typedef int (*SimpleCode)();
221 EXPECT_EQ(static_cast<int32_t>(0x80000000), 221 EXPECT_EQ(static_cast<int32_t>(0x80000000),
222 EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 222 EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
223 } 223 }
224 224
225 225
226 ASSEMBLER_TEST_GENERATE(Lb, assembler) { 226 ASSEMBLER_TEST_GENERATE(Lb, assembler) {
227 __ addiu(SP, SP, Immediate(-kWordSize * 30)); 227 __ addiu(SP, SP, Immediate(-kWordSize * 30));
228 __ LoadImmediate(R1, 0xff); 228 __ LoadImmediate(T1, 0xff);
229 __ sb(R1, Address(SP)); 229 __ sb(T1, Address(SP));
230 __ lb(V0, Address(SP)); 230 __ lb(V0, Address(SP));
231 __ addiu(SP, SP, Immediate(kWordSize * 30)); 231 __ addiu(SP, SP, Immediate(kWordSize * 30));
232 __ jr(RA); 232 __ jr(RA);
233 } 233 }
234 234
235 235
236 ASSEMBLER_TEST_RUN(Lb, test) { 236 ASSEMBLER_TEST_RUN(Lb, test) {
237 typedef int (*SimpleCode)(); 237 typedef int (*SimpleCode)();
238 EXPECT_EQ(-1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 238 EXPECT_EQ(-1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
239 } 239 }
240 240
241 241
242 ASSEMBLER_TEST_GENERATE(Lb_offset, assembler) { 242 ASSEMBLER_TEST_GENERATE(Lb_offset, assembler) {
243 __ addiu(SP, SP, Immediate(-kWordSize * 30)); 243 __ addiu(SP, SP, Immediate(-kWordSize * 30));
244 __ LoadImmediate(R1, 0xff); 244 __ LoadImmediate(T1, 0xff);
245 __ sb(R1, Address(SP, 1)); 245 __ sb(T1, Address(SP, 1));
246 __ lb(V0, Address(SP, 1)); 246 __ lb(V0, Address(SP, 1));
247 __ addiu(SP, SP, Immediate(kWordSize * 30)); 247 __ addiu(SP, SP, Immediate(kWordSize * 30));
248 __ jr(RA); 248 __ jr(RA);
249 } 249 }
250 250
251 251
252 ASSEMBLER_TEST_RUN(Lb_offset, test) { 252 ASSEMBLER_TEST_RUN(Lb_offset, test) {
253 typedef int (*SimpleCode)(); 253 typedef int (*SimpleCode)();
254 EXPECT_EQ(-1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 254 EXPECT_EQ(-1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
255 } 255 }
256 256
257 257
258 ASSEMBLER_TEST_GENERATE(Lbu, assembler) { 258 ASSEMBLER_TEST_GENERATE(Lbu, assembler) {
259 __ addiu(SP, SP, Immediate(-kWordSize * 30)); 259 __ addiu(SP, SP, Immediate(-kWordSize * 30));
260 __ LoadImmediate(R1, 0xff); 260 __ LoadImmediate(T1, 0xff);
261 __ sb(R1, Address(SP)); 261 __ sb(T1, Address(SP));
262 __ lbu(V0, Address(SP)); 262 __ lbu(V0, Address(SP));
263 __ addiu(SP, SP, Immediate(kWordSize * 30)); 263 __ addiu(SP, SP, Immediate(kWordSize * 30));
264 __ jr(RA); 264 __ jr(RA);
265 } 265 }
266 266
267 267
268 ASSEMBLER_TEST_RUN(Lbu, test) { 268 ASSEMBLER_TEST_RUN(Lbu, test) {
269 typedef int (*SimpleCode)(); 269 typedef int (*SimpleCode)();
270 EXPECT_EQ(255, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 270 EXPECT_EQ(255, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
271 } 271 }
272 272
273 273
274 ASSEMBLER_TEST_GENERATE(Lh, assembler) { 274 ASSEMBLER_TEST_GENERATE(Lh, assembler) {
275 __ addiu(SP, SP, Immediate(-kWordSize * 30)); 275 __ addiu(SP, SP, Immediate(-kWordSize * 30));
276 __ LoadImmediate(R1, 0xffff); 276 __ LoadImmediate(T1, 0xffff);
277 __ sh(R1, Address(SP)); 277 __ sh(T1, Address(SP));
278 __ lh(V0, Address(SP)); 278 __ lh(V0, Address(SP));
279 __ addiu(SP, SP, Immediate(kWordSize * 30)); 279 __ addiu(SP, SP, Immediate(kWordSize * 30));
280 __ jr(RA); 280 __ jr(RA);
281 } 281 }
282 282
283 283
284 ASSEMBLER_TEST_RUN(Lh, test) { 284 ASSEMBLER_TEST_RUN(Lh, test) {
285 typedef int (*SimpleCode)(); 285 typedef int (*SimpleCode)();
286 EXPECT_EQ(-1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 286 EXPECT_EQ(-1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
287 } 287 }
288 288
289 289
290 ASSEMBLER_TEST_GENERATE(Lhu, assembler) { 290 ASSEMBLER_TEST_GENERATE(Lhu, assembler) {
291 __ addiu(SP, SP, Immediate(-kWordSize * 30)); 291 __ addiu(SP, SP, Immediate(-kWordSize * 30));
292 __ LoadImmediate(R1, 0xffff); 292 __ LoadImmediate(T1, 0xffff);
293 __ sh(R1, Address(SP)); 293 __ sh(T1, Address(SP));
294 __ lhu(V0, Address(SP)); 294 __ lhu(V0, Address(SP));
295 __ addiu(SP, SP, Immediate(kWordSize * 30)); 295 __ addiu(SP, SP, Immediate(kWordSize * 30));
296 __ jr(RA); 296 __ jr(RA);
297 } 297 }
298 298
299 299
300 ASSEMBLER_TEST_RUN(Lhu, test) { 300 ASSEMBLER_TEST_RUN(Lhu, test) {
301 typedef int (*SimpleCode)(); 301 typedef int (*SimpleCode)();
302 EXPECT_EQ(65535, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 302 EXPECT_EQ(65535, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
303 } 303 }
304 304
305 305
306 ASSEMBLER_TEST_GENERATE(Lw, assembler) { 306 ASSEMBLER_TEST_GENERATE(Lw, assembler) {
307 __ addiu(SP, SP, Immediate(-kWordSize * 30)); 307 __ addiu(SP, SP, Immediate(-kWordSize * 30));
308 __ LoadImmediate(R1, -1); 308 __ LoadImmediate(T1, -1);
309 __ sw(R1, Address(SP)); 309 __ sw(T1, Address(SP));
310 __ lw(V0, Address(SP)); 310 __ lw(V0, Address(SP));
311 __ addiu(SP, SP, Immediate(kWordSize * 30)); 311 __ addiu(SP, SP, Immediate(kWordSize * 30));
312 __ jr(RA); 312 __ jr(RA);
313 } 313 }
314 314
315 315
316 ASSEMBLER_TEST_RUN(Lw, test) { 316 ASSEMBLER_TEST_RUN(Lw, test) {
317 typedef int (*SimpleCode)(); 317 typedef int (*SimpleCode)();
318 EXPECT_EQ(-1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 318 EXPECT_EQ(-1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
319 } 319 }
320 320
321 321
322 ASSEMBLER_TEST_GENERATE(Lui, assembler) { 322 ASSEMBLER_TEST_GENERATE(Lui, assembler) {
323 __ lui(V0, Immediate(42)); 323 __ lui(V0, Immediate(42));
324 __ jr(RA); 324 __ jr(RA);
325 } 325 }
326 326
327 327
328 ASSEMBLER_TEST_RUN(Lui, test) { 328 ASSEMBLER_TEST_RUN(Lui, test) {
329 typedef int (*SimpleCode)(); 329 typedef int (*SimpleCode)();
330 EXPECT_EQ(42 << 16, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 330 EXPECT_EQ(42 << 16, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
331 } 331 }
332 332
333 333
334 ASSEMBLER_TEST_GENERATE(Sll, assembler) { 334 ASSEMBLER_TEST_GENERATE(Sll, assembler) {
335 __ LoadImmediate(R1, 21); 335 __ LoadImmediate(T1, 21);
336 __ sll(V0, R1, 1); 336 __ sll(V0, T1, 1);
337 __ jr(RA); 337 __ jr(RA);
338 } 338 }
339 339
340 340
341 ASSEMBLER_TEST_RUN(Sll, test) { 341 ASSEMBLER_TEST_RUN(Sll, test) {
342 typedef int (*SimpleCode)(); 342 typedef int (*SimpleCode)();
343 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 343 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
344 } 344 }
345 345
346 346
347 ASSEMBLER_TEST_GENERATE(Srl, assembler) { 347 ASSEMBLER_TEST_GENERATE(Srl, assembler) {
348 __ LoadImmediate(R1, 84); 348 __ LoadImmediate(T1, 84);
349 __ srl(V0, R1, 1); 349 __ srl(V0, T1, 1);
350 __ jr(RA); 350 __ jr(RA);
351 } 351 }
352 352
353 353
354 ASSEMBLER_TEST_RUN(Srl, test) { 354 ASSEMBLER_TEST_RUN(Srl, test) {
355 typedef int (*SimpleCode)(); 355 typedef int (*SimpleCode)();
356 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 356 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
357 } 357 }
358 358
359 359
360 ASSEMBLER_TEST_GENERATE(LShifting, assembler) { 360 ASSEMBLER_TEST_GENERATE(LShifting, assembler) {
361 __ LoadImmediate(R1, 1); 361 __ LoadImmediate(T1, 1);
362 __ sll(R1, R1, 31); 362 __ sll(T1, T1, 31);
363 __ srl(V0, R1, 31); 363 __ srl(V0, T1, 31);
364 __ jr(RA); 364 __ jr(RA);
365 } 365 }
366 366
367 367
368 ASSEMBLER_TEST_RUN(LShifting, test) { 368 ASSEMBLER_TEST_RUN(LShifting, test) {
369 typedef int (*SimpleCode)(); 369 typedef int (*SimpleCode)();
370 EXPECT_EQ(1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 370 EXPECT_EQ(1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
371 } 371 }
372 372
373 373
374 ASSEMBLER_TEST_GENERATE(RShifting, assembler) { 374 ASSEMBLER_TEST_GENERATE(RShifting, assembler) {
375 __ LoadImmediate(R1, 1); 375 __ LoadImmediate(T1, 1);
376 __ sll(R1, R1, 31); 376 __ sll(T1, T1, 31);
377 __ sra(V0, R1, 31); 377 __ sra(V0, T1, 31);
378 __ jr(RA); 378 __ jr(RA);
379 } 379 }
380 380
381 381
382 ASSEMBLER_TEST_RUN(RShifting, test) { 382 ASSEMBLER_TEST_RUN(RShifting, test) {
383 typedef int (*SimpleCode)(); 383 typedef int (*SimpleCode)();
384 EXPECT_EQ(-1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 384 EXPECT_EQ(-1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
385 } 385 }
386 386
387 387
388 ASSEMBLER_TEST_GENERATE(Sllv, assembler) { 388 ASSEMBLER_TEST_GENERATE(Sllv, assembler) {
389 __ LoadImmediate(R1, 21); 389 __ LoadImmediate(T1, 21);
390 __ LoadImmediate(R2, 1); 390 __ LoadImmediate(T2, 1);
391 __ sllv(V0, R1, R2); 391 __ sllv(V0, T1, T2);
392 __ jr(RA); 392 __ jr(RA);
393 } 393 }
394 394
395 395
396 ASSEMBLER_TEST_RUN(Sllv, test) { 396 ASSEMBLER_TEST_RUN(Sllv, test) {
397 typedef int (*SimpleCode)(); 397 typedef int (*SimpleCode)();
398 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 398 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
399 } 399 }
400 400
401 401
402 ASSEMBLER_TEST_GENERATE(Srlv, assembler) { 402 ASSEMBLER_TEST_GENERATE(Srlv, assembler) {
403 __ LoadImmediate(R1, 84); 403 __ LoadImmediate(T1, 84);
404 __ LoadImmediate(R2, 1); 404 __ LoadImmediate(T2, 1);
405 __ srlv(V0, R1, R2); 405 __ srlv(V0, T1, T2);
406 __ jr(RA); 406 __ jr(RA);
407 } 407 }
408 408
409 409
410 ASSEMBLER_TEST_RUN(Srlv, test) { 410 ASSEMBLER_TEST_RUN(Srlv, test) {
411 typedef int (*SimpleCode)(); 411 typedef int (*SimpleCode)();
412 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 412 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
413 } 413 }
414 414
415 415
416 ASSEMBLER_TEST_GENERATE(LShiftingV, assembler) { 416 ASSEMBLER_TEST_GENERATE(LShiftingV, assembler) {
417 __ LoadImmediate(R1, 1); 417 __ LoadImmediate(T1, 1);
418 __ LoadImmediate(R2, 31); 418 __ LoadImmediate(T2, 31);
419 __ sllv(R1, R1, R2); 419 __ sllv(T1, T1, T2);
420 __ srlv(V0, R1, R2); 420 __ srlv(V0, T1, T2);
421 __ jr(RA); 421 __ jr(RA);
422 } 422 }
423 423
424 424
425 ASSEMBLER_TEST_RUN(LShiftingV, test) { 425 ASSEMBLER_TEST_RUN(LShiftingV, test) {
426 typedef int (*SimpleCode)(); 426 typedef int (*SimpleCode)();
427 EXPECT_EQ(1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 427 EXPECT_EQ(1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
428 } 428 }
429 429
430 430
431 ASSEMBLER_TEST_GENERATE(RShiftingV, assembler) { 431 ASSEMBLER_TEST_GENERATE(RShiftingV, assembler) {
432 __ LoadImmediate(R1, 1); 432 __ LoadImmediate(T1, 1);
433 __ LoadImmediate(R2, 31); 433 __ LoadImmediate(T2, 31);
434 __ sllv(R1, R1, R2); 434 __ sllv(T1, T1, T2);
435 __ srav(V0, R1, R2); 435 __ srav(V0, T1, T2);
436 __ jr(RA); 436 __ jr(RA);
437 } 437 }
438 438
439 439
440 ASSEMBLER_TEST_RUN(RShiftingV, test) { 440 ASSEMBLER_TEST_RUN(RShiftingV, test) {
441 typedef int (*SimpleCode)(); 441 typedef int (*SimpleCode)();
442 EXPECT_EQ(-1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 442 EXPECT_EQ(-1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
443 } 443 }
444 444
445 445
446 ASSEMBLER_TEST_GENERATE(Mult_pos, assembler) { 446 ASSEMBLER_TEST_GENERATE(Mult_pos, assembler) {
447 __ LoadImmediate(R1, 6); 447 __ LoadImmediate(T1, 6);
448 __ LoadImmediate(R2, 7); 448 __ LoadImmediate(T2, 7);
449 __ mult(R1, R2); 449 __ mult(T1, T2);
450 __ mflo(V0); 450 __ mflo(V0);
451 __ jr(RA); 451 __ jr(RA);
452 } 452 }
453 453
454 454
455 ASSEMBLER_TEST_RUN(Mult_pos, test) { 455 ASSEMBLER_TEST_RUN(Mult_pos, test) {
456 typedef int (*SimpleCode)(); 456 typedef int (*SimpleCode)();
457 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 457 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
458 } 458 }
459 459
460 460
461 ASSEMBLER_TEST_GENERATE(Mult_neg, assembler) { 461 ASSEMBLER_TEST_GENERATE(Mult_neg, assembler) {
462 __ LoadImmediate(R1, -6); 462 __ LoadImmediate(T1, -6);
463 __ LoadImmediate(R2, 7); 463 __ LoadImmediate(T2, 7);
464 __ mult(R1, R2); 464 __ mult(T1, T2);
465 __ mflo(V0); 465 __ mflo(V0);
466 __ jr(RA); 466 __ jr(RA);
467 } 467 }
468 468
469 469
470 ASSEMBLER_TEST_RUN(Mult_neg, test) { 470 ASSEMBLER_TEST_RUN(Mult_neg, test) {
471 typedef int (*SimpleCode)(); 471 typedef int (*SimpleCode)();
472 EXPECT_EQ(-42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 472 EXPECT_EQ(-42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
473 } 473 }
474 474
475 475
476 ASSEMBLER_TEST_GENERATE(Mult_neg_hi, assembler) { 476 ASSEMBLER_TEST_GENERATE(Mult_neg_hi, assembler) {
477 __ LoadImmediate(R1, -6); 477 __ LoadImmediate(T1, -6);
478 __ LoadImmediate(R2, 7); 478 __ LoadImmediate(T2, 7);
479 __ mult(R1, R2); 479 __ mult(T1, T2);
480 __ mfhi(V0); 480 __ mfhi(V0);
481 __ jr(RA); 481 __ jr(RA);
482 } 482 }
483 483
484 484
485 ASSEMBLER_TEST_RUN(Mult_neg_hi, test) { 485 ASSEMBLER_TEST_RUN(Mult_neg_hi, test) {
486 typedef int (*SimpleCode)(); 486 typedef int (*SimpleCode)();
487 EXPECT_EQ(-1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 487 EXPECT_EQ(-1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
488 } 488 }
489 489
490 490
491 ASSEMBLER_TEST_GENERATE(Multu_lo, assembler) { 491 ASSEMBLER_TEST_GENERATE(Multu_lo, assembler) {
492 __ LoadImmediate(R1, 6); 492 __ LoadImmediate(T1, 6);
493 __ LoadImmediate(R2, 7); 493 __ LoadImmediate(T2, 7);
494 __ multu(R1, R2); 494 __ multu(T1, T2);
495 __ mflo(V0); 495 __ mflo(V0);
496 __ jr(RA); 496 __ jr(RA);
497 } 497 }
498 498
499 499
500 ASSEMBLER_TEST_RUN(Multu_lo, test) { 500 ASSEMBLER_TEST_RUN(Multu_lo, test) {
501 typedef int (*SimpleCode)(); 501 typedef int (*SimpleCode)();
502 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 502 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
503 } 503 }
504 504
505 505
506 ASSEMBLER_TEST_GENERATE(Multu_hi, assembler) { 506 ASSEMBLER_TEST_GENERATE(Multu_hi, assembler) {
507 __ LoadImmediate(R1, 65536); 507 __ LoadImmediate(T1, 65536);
508 __ LoadImmediate(R2, 65536); 508 __ LoadImmediate(T2, 65536);
509 __ multu(R1, R2); 509 __ multu(T1, T2);
510 __ mfhi(V0); 510 __ mfhi(V0);
511 __ jr(RA); 511 __ jr(RA);
512 } 512 }
513 513
514 514
515 ASSEMBLER_TEST_RUN(Multu_hi, test) { 515 ASSEMBLER_TEST_RUN(Multu_hi, test) {
516 typedef int (*SimpleCode)(); 516 typedef int (*SimpleCode)();
517 EXPECT_EQ(1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 517 EXPECT_EQ(1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
518 } 518 }
519 519
520 520
521 ASSEMBLER_TEST_GENERATE(Madd_neg, assembler) { 521 ASSEMBLER_TEST_GENERATE(Madd_neg, assembler) {
522 __ LoadImmediate(R1, -6); 522 __ LoadImmediate(T1, -6);
523 __ LoadImmediate(R2, 7); 523 __ LoadImmediate(T2, 7);
524 __ mult(R1, R2); 524 __ mult(T1, T2);
525 __ madd(R1, R2); 525 __ madd(T1, T2);
526 __ mflo(V0); 526 __ mflo(V0);
527 __ mfhi(V1); 527 __ mfhi(V1);
528 __ jr(RA); 528 __ jr(RA);
529 } 529 }
530 530
531 531
532 ASSEMBLER_TEST_RUN(Madd_neg, test) { 532 ASSEMBLER_TEST_RUN(Madd_neg, test) {
533 typedef int (*SimpleCode)(); 533 typedef int (*SimpleCode)();
534 EXPECT_EQ(-84, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 534 EXPECT_EQ(-84, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
535 } 535 }
536 536
537 537
538 ASSEMBLER_TEST_GENERATE(Subu, assembler) { 538 ASSEMBLER_TEST_GENERATE(Subu, assembler) {
539 __ LoadImmediate(R1, 737); 539 __ LoadImmediate(T1, 737);
540 __ LoadImmediate(R2, 695); 540 __ LoadImmediate(T2, 695);
541 __ subu(V0, R1, R2); 541 __ subu(V0, T1, T2);
542 __ jr(RA); 542 __ jr(RA);
543 } 543 }
544 544
545 545
546 ASSEMBLER_TEST_RUN(Subu, test) { 546 ASSEMBLER_TEST_RUN(Subu, test) {
547 typedef int (*SimpleCode)(); 547 typedef int (*SimpleCode)();
548 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 548 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
549 } 549 }
550 550
551 551
552 ASSEMBLER_TEST_GENERATE(Or, assembler) { 552 ASSEMBLER_TEST_GENERATE(Or, assembler) {
553 __ LoadImmediate(R1, 34); 553 __ LoadImmediate(T1, 34);
554 __ LoadImmediate(R2, 8); 554 __ LoadImmediate(T2, 8);
555 __ or_(V0, R1, R2); 555 __ or_(V0, T1, T2);
556 __ jr(RA); 556 __ jr(RA);
557 } 557 }
558 558
559 559
560 ASSEMBLER_TEST_RUN(Or, test) { 560 ASSEMBLER_TEST_RUN(Or, test) {
561 typedef int (*SimpleCode)(); 561 typedef int (*SimpleCode)();
562 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 562 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
563 } 563 }
564 564
565 565
566 ASSEMBLER_TEST_GENERATE(Nor, assembler) { 566 ASSEMBLER_TEST_GENERATE(Nor, assembler) {
567 __ LoadImmediate(R1, -47); 567 __ LoadImmediate(T1, -47);
568 __ LoadImmediate(R2, -60); 568 __ LoadImmediate(T2, -60);
569 __ nor(V0, R1, R2); 569 __ nor(V0, T1, T2);
570 __ jr(RA); 570 __ jr(RA);
571 } 571 }
572 572
573 573
574 ASSEMBLER_TEST_RUN(Nor, test) { 574 ASSEMBLER_TEST_RUN(Nor, test) {
575 typedef int (*SimpleCode)(); 575 typedef int (*SimpleCode)();
576 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 576 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
577 } 577 }
578 578
579 579
580 ASSEMBLER_TEST_GENERATE(Xor, assembler) { 580 ASSEMBLER_TEST_GENERATE(Xor, assembler) {
581 __ LoadImmediate(R1, 51); 581 __ LoadImmediate(T1, 51);
582 __ LoadImmediate(R2, 25); 582 __ LoadImmediate(T2, 25);
583 __ xor_(V0, R1, R2); 583 __ xor_(V0, T1, T2);
584 __ jr(RA); 584 __ jr(RA);
585 } 585 }
586 586
587 587
588 ASSEMBLER_TEST_RUN(Xor, test) { 588 ASSEMBLER_TEST_RUN(Xor, test) {
589 typedef int (*SimpleCode)(); 589 typedef int (*SimpleCode)();
590 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 590 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
591 } 591 }
592 592
593 593
594 ASSEMBLER_TEST_GENERATE(Xori, assembler) { 594 ASSEMBLER_TEST_GENERATE(Xori, assembler) {
595 __ LoadImmediate(T0, 51); 595 __ LoadImmediate(T0, 51);
596 __ xori(V0, T0, Immediate(25)); 596 __ xori(V0, T0, Immediate(25));
597 __ jr(RA); 597 __ jr(RA);
598 } 598 }
599 599
600 600
601 ASSEMBLER_TEST_RUN(Xori, test) { 601 ASSEMBLER_TEST_RUN(Xori, test) {
602 typedef int (*SimpleCode)(); 602 typedef int (*SimpleCode)();
603 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 603 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
604 } 604 }
605 605
606 606
607 ASSEMBLER_TEST_GENERATE(Slt, assembler) { 607 ASSEMBLER_TEST_GENERATE(Slt, assembler) {
608 __ LoadImmediate(R1, -1); 608 __ LoadImmediate(T1, -1);
609 __ LoadImmediate(R2, 0); 609 __ LoadImmediate(T2, 0);
610 __ slt(V0, R1, R2); 610 __ slt(V0, T1, T2);
611 __ jr(RA); 611 __ jr(RA);
612 } 612 }
613 613
614 614
615 ASSEMBLER_TEST_RUN(Slt, test) { 615 ASSEMBLER_TEST_RUN(Slt, test) {
616 typedef int (*SimpleCode)(); 616 typedef int (*SimpleCode)();
617 EXPECT_EQ(1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 617 EXPECT_EQ(1, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
618 } 618 }
619 619
620 620
621 ASSEMBLER_TEST_GENERATE(Sltu, assembler) { 621 ASSEMBLER_TEST_GENERATE(Sltu, assembler) {
622 __ LoadImmediate(R1, -1); 622 __ LoadImmediate(T1, -1);
623 __ LoadImmediate(R2, 0); 623 __ LoadImmediate(T2, 0);
624 __ sltu(V0, R1, R2); 624 __ sltu(V0, T1, T2);
625 __ jr(RA); 625 __ jr(RA);
626 } 626 }
627 627
628 628
629 ASSEMBLER_TEST_RUN(Sltu, test) { 629 ASSEMBLER_TEST_RUN(Sltu, test) {
630 typedef int (*SimpleCode)(); 630 typedef int (*SimpleCode)();
631 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 631 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
632 } 632 }
633 633
634 634
635 ASSEMBLER_TEST_GENERATE(Movz, assembler) { 635 ASSEMBLER_TEST_GENERATE(Movz, assembler) {
636 __ LoadImmediate(R1, 42); 636 __ LoadImmediate(T1, 42);
637 __ LoadImmediate(R2, 23); 637 __ LoadImmediate(T2, 23);
638 __ slt(R3, R1, R2); 638 __ slt(T3, T1, T2);
639 __ movz(V0, R1, R3); 639 __ movz(V0, T1, T3);
640 __ jr(RA); 640 __ jr(RA);
641 } 641 }
642 642
643 643
644 ASSEMBLER_TEST_RUN(Movz, test) { 644 ASSEMBLER_TEST_RUN(Movz, test) {
645 typedef int (*SimpleCode)(); 645 typedef int (*SimpleCode)();
646 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 646 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
647 } 647 }
648 648
649 649
650 ASSEMBLER_TEST_GENERATE(Movn, assembler) { 650 ASSEMBLER_TEST_GENERATE(Movn, assembler) {
651 __ LoadImmediate(R1, 42); 651 __ LoadImmediate(T1, 42);
652 __ LoadImmediate(R2, 23); 652 __ LoadImmediate(T2, 23);
653 __ slt(R3, R2, R1); 653 __ slt(T3, T2, T1);
654 __ movn(V0, R1, R3); 654 __ movn(V0, T1, T3);
655 __ jr(RA); 655 __ jr(RA);
656 } 656 }
657 657
658 658
659 ASSEMBLER_TEST_RUN(Movn, test) { 659 ASSEMBLER_TEST_RUN(Movn, test) {
660 typedef int (*SimpleCode)(); 660 typedef int (*SimpleCode)();
661 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 661 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
662 } 662 }
663 663
664 664
665 ASSEMBLER_TEST_GENERATE(Jr_delay, assembler) { 665 ASSEMBLER_TEST_GENERATE(Jr_delay, assembler) {
666 __ jr(RA); 666 __ jr(RA);
667 __ delay_slot()->ori(V0, ZR, Immediate(42)); 667 __ delay_slot()->ori(V0, ZR, Immediate(42));
668 } 668 }
669 669
670 670
671 ASSEMBLER_TEST_RUN(Jr_delay, test) { 671 ASSEMBLER_TEST_RUN(Jr_delay, test) {
672 typedef int (*SimpleCode)(); 672 typedef int (*SimpleCode)();
673 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 673 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
674 } 674 }
675 675
676 676
677 ASSEMBLER_TEST_GENERATE(Beq_backward, assembler) { 677 ASSEMBLER_TEST_GENERATE(Beq_backward, assembler) {
678 Label l; 678 Label l;
679 679
680 __ LoadImmediate(R1, 0); 680 __ LoadImmediate(T1, 0);
681 __ LoadImmediate(R2, 1); 681 __ LoadImmediate(T2, 1);
682 __ Bind(&l); 682 __ Bind(&l);
683 __ addiu(R1, R1, Immediate(1)); 683 __ addiu(T1, T1, Immediate(1));
684 __ beq(R1, R2, &l); 684 __ beq(T1, T2, &l);
685 __ ori(V0, R1, Immediate(0)); 685 __ ori(V0, T1, Immediate(0));
686 __ jr(RA); 686 __ jr(RA);
687 } 687 }
688 688
689 689
690 ASSEMBLER_TEST_RUN(Beq_backward, test) { 690 ASSEMBLER_TEST_RUN(Beq_backward, test) {
691 typedef int (*SimpleCode)(); 691 typedef int (*SimpleCode)();
692 EXPECT_EQ(2, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 692 EXPECT_EQ(2, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
693 } 693 }
694 694
695 695
696 ASSEMBLER_TEST_GENERATE(Beq_backward_delay, assembler) { 696 ASSEMBLER_TEST_GENERATE(Beq_backward_delay, assembler) {
697 Label l; 697 Label l;
698 698
699 __ LoadImmediate(R1, 0); 699 __ LoadImmediate(T1, 0);
700 __ LoadImmediate(R2, 1); 700 __ LoadImmediate(T2, 1);
701 __ Bind(&l); 701 __ Bind(&l);
702 __ addiu(R1, R1, Immediate(1)); 702 __ addiu(T1, T1, Immediate(1));
703 __ beq(R1, R2, &l); 703 __ beq(T1, T2, &l);
704 __ delay_slot()->addiu(R1, R1, Immediate(1)); 704 __ delay_slot()->addiu(T1, T1, Immediate(1));
705 __ ori(V0, R1, Immediate(0)); 705 __ ori(V0, T1, Immediate(0));
706 __ jr(RA); 706 __ jr(RA);
707 } 707 }
708 708
709 709
710 ASSEMBLER_TEST_RUN(Beq_backward_delay, test) { 710 ASSEMBLER_TEST_RUN(Beq_backward_delay, test) {
711 typedef int (*SimpleCode)(); 711 typedef int (*SimpleCode)();
712 EXPECT_EQ(4, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 712 EXPECT_EQ(4, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
713 } 713 }
714 714
715 715
(...skipping 335 matching lines...) Expand 10 before | Expand all | Expand 10 after
1051 } 1051 }
1052 1052
1053 1053
1054 ASSEMBLER_TEST_RUN(Label_link2, test) { 1054 ASSEMBLER_TEST_RUN(Label_link2, test) {
1055 typedef int (*SimpleCode)(); 1055 typedef int (*SimpleCode)();
1056 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 1056 EXPECT_EQ(0, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
1057 } 1057 }
1058 1058
1059 1059
1060 ASSEMBLER_TEST_GENERATE(Jalr_delay, assembler) { 1060 ASSEMBLER_TEST_GENERATE(Jalr_delay, assembler) {
1061 __ mov(R2, RA); 1061 __ mov(T2, RA);
1062 __ jalr(R2, RA); 1062 __ jalr(T2, RA);
1063 __ delay_slot()->ori(V0, ZR, Immediate(42)); 1063 __ delay_slot()->ori(V0, ZR, Immediate(42));
1064 } 1064 }
1065 1065
1066 1066
1067 ASSEMBLER_TEST_RUN(Jalr_delay, test) { 1067 ASSEMBLER_TEST_RUN(Jalr_delay, test) {
1068 typedef int (*SimpleCode)(); 1068 typedef int (*SimpleCode)();
1069 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry())); 1069 EXPECT_EQ(42, EXECUTE_TEST_CODE_INT32(SimpleCode, test->entry()));
1070 } 1070 }
1071 1071
1072 1072
(...skipping 608 matching lines...) Expand 10 before | Expand all | Expand 10 after
1681 A1); 1681 A1);
1682 __ lw(RA, Address(SP, 0 * kWordSize)); 1682 __ lw(RA, Address(SP, 0 * kWordSize));
1683 __ lw(CTX, Address(SP, 1 * kWordSize)); 1683 __ lw(CTX, Address(SP, 1 * kWordSize));
1684 __ addiu(SP, SP, Immediate(2 * kWordSize)); 1684 __ addiu(SP, SP, Immediate(2 * kWordSize));
1685 __ Ret(); 1685 __ Ret();
1686 } 1686 }
1687 1687
1688 } // namespace dart 1688 } // namespace dart
1689 1689
1690 #endif // defined TARGET_ARCH_MIPS 1690 #endif // defined TARGET_ARCH_MIPS
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698