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

Side by Side Diff: src/arm/macro-assembler-arm.h

Issue 1255883002: VectorICs: vector [keyed]store ic MISS handling infrastructure. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix nit. Created 5 years, 4 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
« no previous file with comments | « no previous file | src/ic/arm/ic-arm.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef V8_ARM_MACRO_ASSEMBLER_ARM_H_ 5 #ifndef V8_ARM_MACRO_ASSEMBLER_ARM_H_
6 #define V8_ARM_MACRO_ASSEMBLER_ARM_H_ 6 #define V8_ARM_MACRO_ASSEMBLER_ARM_H_
7 7
8 #include "src/assembler.h" 8 #include "src/assembler.h"
9 #include "src/bailout-reason.h" 9 #include "src/bailout-reason.h"
10 #include "src/frames.h" 10 #include "src/frames.h"
(...skipping 307 matching lines...) Expand 10 before | Expand all | Expand 10 after
318 if (src1.code() > src2.code()) { 318 if (src1.code() > src2.code()) {
319 stm(db_w, sp, src1.bit() | src2.bit(), cond); 319 stm(db_w, sp, src1.bit() | src2.bit(), cond);
320 } else { 320 } else {
321 str(src1, MemOperand(sp, 4, NegPreIndex), cond); 321 str(src1, MemOperand(sp, 4, NegPreIndex), cond);
322 str(src2, MemOperand(sp, 4, NegPreIndex), cond); 322 str(src2, MemOperand(sp, 4, NegPreIndex), cond);
323 } 323 }
324 } 324 }
325 325
326 // Push three registers. Pushes leftmost register first (to highest address). 326 // Push three registers. Pushes leftmost register first (to highest address).
327 void Push(Register src1, Register src2, Register src3, Condition cond = al) { 327 void Push(Register src1, Register src2, Register src3, Condition cond = al) {
328 DCHECK(!src1.is(src2)); 328 DCHECK(!AreAliased(src1, src2, src3));
329 DCHECK(!src2.is(src3));
330 DCHECK(!src1.is(src3));
331 if (src1.code() > src2.code()) { 329 if (src1.code() > src2.code()) {
332 if (src2.code() > src3.code()) { 330 if (src2.code() > src3.code()) {
333 stm(db_w, sp, src1.bit() | src2.bit() | src3.bit(), cond); 331 stm(db_w, sp, src1.bit() | src2.bit() | src3.bit(), cond);
334 } else { 332 } else {
335 stm(db_w, sp, src1.bit() | src2.bit(), cond); 333 stm(db_w, sp, src1.bit() | src2.bit(), cond);
336 str(src3, MemOperand(sp, 4, NegPreIndex), cond); 334 str(src3, MemOperand(sp, 4, NegPreIndex), cond);
337 } 335 }
338 } else { 336 } else {
339 str(src1, MemOperand(sp, 4, NegPreIndex), cond); 337 str(src1, MemOperand(sp, 4, NegPreIndex), cond);
340 Push(src2, src3, cond); 338 Push(src2, src3, cond);
341 } 339 }
342 } 340 }
343 341
344 // Push four registers. Pushes leftmost register first (to highest address). 342 // Push four registers. Pushes leftmost register first (to highest address).
345 void Push(Register src1, 343 void Push(Register src1,
346 Register src2, 344 Register src2,
347 Register src3, 345 Register src3,
348 Register src4, 346 Register src4,
349 Condition cond = al) { 347 Condition cond = al) {
350 DCHECK(!src1.is(src2)); 348 DCHECK(!AreAliased(src1, src2, src3, src4));
351 DCHECK(!src2.is(src3));
352 DCHECK(!src1.is(src3));
353 DCHECK(!src1.is(src4));
354 DCHECK(!src2.is(src4));
355 DCHECK(!src3.is(src4));
356 if (src1.code() > src2.code()) { 349 if (src1.code() > src2.code()) {
357 if (src2.code() > src3.code()) { 350 if (src2.code() > src3.code()) {
358 if (src3.code() > src4.code()) { 351 if (src3.code() > src4.code()) {
359 stm(db_w, 352 stm(db_w,
360 sp, 353 sp,
361 src1.bit() | src2.bit() | src3.bit() | src4.bit(), 354 src1.bit() | src2.bit() | src3.bit() | src4.bit(),
362 cond); 355 cond);
363 } else { 356 } else {
364 stm(db_w, sp, src1.bit() | src2.bit() | src3.bit(), cond); 357 stm(db_w, sp, src1.bit() | src2.bit() | src3.bit(), cond);
365 str(src4, MemOperand(sp, 4, NegPreIndex), cond); 358 str(src4, MemOperand(sp, 4, NegPreIndex), cond);
366 } 359 }
367 } else { 360 } else {
368 stm(db_w, sp, src1.bit() | src2.bit(), cond); 361 stm(db_w, sp, src1.bit() | src2.bit(), cond);
369 Push(src3, src4, cond); 362 Push(src3, src4, cond);
370 } 363 }
371 } else { 364 } else {
372 str(src1, MemOperand(sp, 4, NegPreIndex), cond); 365 str(src1, MemOperand(sp, 4, NegPreIndex), cond);
373 Push(src2, src3, src4, cond); 366 Push(src2, src3, src4, cond);
374 } 367 }
375 } 368 }
376 369
370 // Push five registers. Pushes leftmost register first (to highest address).
371 void Push(Register src1, Register src2, Register src3, Register src4,
372 Register src5, Condition cond = al) {
373 DCHECK(!AreAliased(src1, src2, src3, src4, src5));
374 if (src1.code() > src2.code()) {
375 if (src2.code() > src3.code()) {
376 if (src3.code() > src4.code()) {
377 if (src4.code() > src5.code()) {
378 stm(db_w, sp,
379 src1.bit() | src2.bit() | src3.bit() | src4.bit() | src5.bit(),
380 cond);
381 } else {
382 stm(db_w, sp, src1.bit() | src2.bit() | src3.bit() | src4.bit(),
383 cond);
384 str(src5, MemOperand(sp, 4, NegPreIndex), cond);
385 }
386 } else {
387 stm(db_w, sp, src1.bit() | src2.bit() | src3.bit(), cond);
388 Push(src4, src5, cond);
389 }
390 } else {
391 stm(db_w, sp, src1.bit() | src2.bit(), cond);
392 Push(src3, src4, src5, cond);
393 }
394 } else {
395 str(src1, MemOperand(sp, 4, NegPreIndex), cond);
396 Push(src2, src3, src4, src5, cond);
397 }
398 }
399
377 // Pop two registers. Pops rightmost register first (from lower address). 400 // Pop two registers. Pops rightmost register first (from lower address).
378 void Pop(Register src1, Register src2, Condition cond = al) { 401 void Pop(Register src1, Register src2, Condition cond = al) {
379 DCHECK(!src1.is(src2)); 402 DCHECK(!src1.is(src2));
380 if (src1.code() > src2.code()) { 403 if (src1.code() > src2.code()) {
381 ldm(ia_w, sp, src1.bit() | src2.bit(), cond); 404 ldm(ia_w, sp, src1.bit() | src2.bit(), cond);
382 } else { 405 } else {
383 ldr(src2, MemOperand(sp, 4, PostIndex), cond); 406 ldr(src2, MemOperand(sp, 4, PostIndex), cond);
384 ldr(src1, MemOperand(sp, 4, PostIndex), cond); 407 ldr(src1, MemOperand(sp, 4, PostIndex), cond);
385 } 408 }
386 } 409 }
387 410
388 // Pop three registers. Pops rightmost register first (from lower address). 411 // Pop three registers. Pops rightmost register first (from lower address).
389 void Pop(Register src1, Register src2, Register src3, Condition cond = al) { 412 void Pop(Register src1, Register src2, Register src3, Condition cond = al) {
390 DCHECK(!src1.is(src2)); 413 DCHECK(!AreAliased(src1, src2, src3));
391 DCHECK(!src2.is(src3));
392 DCHECK(!src1.is(src3));
393 if (src1.code() > src2.code()) { 414 if (src1.code() > src2.code()) {
394 if (src2.code() > src3.code()) { 415 if (src2.code() > src3.code()) {
395 ldm(ia_w, sp, src1.bit() | src2.bit() | src3.bit(), cond); 416 ldm(ia_w, sp, src1.bit() | src2.bit() | src3.bit(), cond);
396 } else { 417 } else {
397 ldr(src3, MemOperand(sp, 4, PostIndex), cond); 418 ldr(src3, MemOperand(sp, 4, PostIndex), cond);
398 ldm(ia_w, sp, src1.bit() | src2.bit(), cond); 419 ldm(ia_w, sp, src1.bit() | src2.bit(), cond);
399 } 420 }
400 } else { 421 } else {
401 Pop(src2, src3, cond); 422 Pop(src2, src3, cond);
402 ldr(src1, MemOperand(sp, 4, PostIndex), cond); 423 ldr(src1, MemOperand(sp, 4, PostIndex), cond);
403 } 424 }
404 } 425 }
405 426
406 // Pop four registers. Pops rightmost register first (from lower address). 427 // Pop four registers. Pops rightmost register first (from lower address).
407 void Pop(Register src1, 428 void Pop(Register src1,
408 Register src2, 429 Register src2,
409 Register src3, 430 Register src3,
410 Register src4, 431 Register src4,
411 Condition cond = al) { 432 Condition cond = al) {
412 DCHECK(!src1.is(src2)); 433 DCHECK(!AreAliased(src1, src2, src3, src4));
413 DCHECK(!src2.is(src3));
414 DCHECK(!src1.is(src3));
415 DCHECK(!src1.is(src4));
416 DCHECK(!src2.is(src4));
417 DCHECK(!src3.is(src4));
418 if (src1.code() > src2.code()) { 434 if (src1.code() > src2.code()) {
419 if (src2.code() > src3.code()) { 435 if (src2.code() > src3.code()) {
420 if (src3.code() > src4.code()) { 436 if (src3.code() > src4.code()) {
421 ldm(ia_w, 437 ldm(ia_w,
422 sp, 438 sp,
423 src1.bit() | src2.bit() | src3.bit() | src4.bit(), 439 src1.bit() | src2.bit() | src3.bit() | src4.bit(),
424 cond); 440 cond);
425 } else { 441 } else {
426 ldr(src4, MemOperand(sp, 4, PostIndex), cond); 442 ldr(src4, MemOperand(sp, 4, PostIndex), cond);
427 ldm(ia_w, sp, src1.bit() | src2.bit() | src3.bit(), cond); 443 ldm(ia_w, sp, src1.bit() | src2.bit() | src3.bit(), cond);
(...skipping 1120 matching lines...) Expand 10 before | Expand all | Expand 10 after
1548 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) 1564 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__)
1549 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> 1565 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm->
1550 #else 1566 #else
1551 #define ACCESS_MASM(masm) masm-> 1567 #define ACCESS_MASM(masm) masm->
1552 #endif 1568 #endif
1553 1569
1554 1570
1555 } } // namespace v8::internal 1571 } } // namespace v8::internal
1556 1572
1557 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_ 1573 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_
OLDNEW
« no previous file with comments | « no previous file | src/ic/arm/ic-arm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698