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

Side by Side Diff: test/cctest/test-disasm-arm.cc

Issue 11428137: ARM: Make use of d16-d31 when available. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Address Rodolph's comments Created 8 years 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 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 407 matching lines...) Expand 10 before | Expand all | Expand 10 after
418 VERIFY_RUN(); 418 VERIFY_RUN();
419 } 419 }
420 420
421 421
422 422
423 TEST(Vfp) { 423 TEST(Vfp) {
424 SET_UP(); 424 SET_UP();
425 425
426 if (CpuFeatures::IsSupported(VFP3)) { 426 if (CpuFeatures::IsSupported(VFP3)) {
427 CpuFeatures::Scope scope(VFP3); 427 CpuFeatures::Scope scope(VFP3);
428 COMPARE(vmov(d0, r2, r3),
429 "ec432b10 vmov d0, r2, r3");
430 COMPARE(vmov(r2, r3, d0),
431 "ec532b10 vmov r2, r3, d0");
428 COMPARE(vmov(d0, d1), 432 COMPARE(vmov(d0, d1),
429 "eeb00b41 vmov.f64 d0, d1"); 433 "eeb00b41 vmov.f64 d0, d1");
434 COMPARE(vmov(d3, d27),
435 "eeb03b6b vmov.f64 d3, d27");
436 COMPARE(vmov(d18, d7),
437 "eef02b47 vmov.f64 d18, d7");
438 COMPARE(vmov(d18, r2, r3),
439 "ec432b32 vmov d18, r2, r3");
440 COMPARE(vmov(r2, r3, d18),
441 "ec532b32 vmov r2, r3, d18");
442 COMPARE(vmov(d20, d31),
443 "eef04b6f vmov.f64 d20, d31");
430 COMPARE(vmov(d3, d3, eq), 444 COMPARE(vmov(d3, d3, eq),
431 "0eb03b43 vmov.f64eq d3, d3"); 445 "0eb03b43 vmov.f64eq d3, d3");
432 446
433 COMPARE(vmov(s0, s31), 447 COMPARE(vmov(s0, s31),
434 "eeb00a6f vmov.f32 s0, s31"); 448 "eeb00a6f vmov.f32 s0, s31");
435 COMPARE(vmov(s31, s0), 449 COMPARE(vmov(s31, s0),
436 "eef0fa40 vmov.f32 s31, s0"); 450 "eef0fa40 vmov.f32 s31, s0");
437 COMPARE(vmov(r0, s0), 451 COMPARE(vmov(r0, s0),
438 "ee100a10 vmov r0, s0"); 452 "ee100a10 vmov r0, s0");
439 COMPARE(vmov(r10, s31), 453 COMPARE(vmov(r10, s31),
440 "ee1faa90 vmov r10, s31"); 454 "ee1faa90 vmov r10, s31");
441 COMPARE(vmov(s0, r0), 455 COMPARE(vmov(s0, r0),
442 "ee000a10 vmov s0, r0"); 456 "ee000a10 vmov s0, r0");
443 COMPARE(vmov(s31, r10), 457 COMPARE(vmov(s31, r10),
444 "ee0faa90 vmov s31, r10"); 458 "ee0faa90 vmov s31, r10");
445 459
446 COMPARE(vabs(d0, d1), 460 COMPARE(vabs(d0, d1),
447 "eeb00bc1 vabs.f64 d0, d1"); 461 "eeb00bc1 vabs.f64 d0, d1");
462 COMPARE(vabs(d16, d31),
463 "eef00bef vabs.f64 d16, d31");
448 COMPARE(vabs(d3, d4, mi), 464 COMPARE(vabs(d3, d4, mi),
449 "4eb03bc4 vabs.f64mi d3, d4"); 465 "4eb03bc4 vabs.f64mi d3, d4");
450 466
451 COMPARE(vneg(d0, d1), 467 COMPARE(vneg(d0, d1),
452 "eeb10b41 vneg.f64 d0, d1"); 468 "eeb10b41 vneg.f64 d0, d1");
469 COMPARE(vneg(d16, d31),
470 "eef10b6f vneg.f64 d16, d31");
453 COMPARE(vneg(d3, d4, mi), 471 COMPARE(vneg(d3, d4, mi),
454 "4eb13b44 vneg.f64mi d3, d4"); 472 "4eb13b44 vneg.f64mi d3, d4");
455 473
456 COMPARE(vadd(d0, d1, d2), 474 COMPARE(vadd(d0, d1, d2),
457 "ee310b02 vadd.f64 d0, d1, d2"); 475 "ee310b02 vadd.f64 d0, d1, d2");
476 COMPARE(vadd(d16, d17, d18),
477 "ee710ba2 vadd.f64 d16, d17, d18");
458 COMPARE(vadd(d3, d4, d5, mi), 478 COMPARE(vadd(d3, d4, d5, mi),
459 "4e343b05 vadd.f64mi d3, d4, d5"); 479 "4e343b05 vadd.f64mi d3, d4, d5");
460 480
461 COMPARE(vsub(d0, d1, d2), 481 COMPARE(vsub(d0, d1, d2),
462 "ee310b42 vsub.f64 d0, d1, d2"); 482 "ee310b42 vsub.f64 d0, d1, d2");
483 COMPARE(vsub(d16, d17, d18),
484 "ee710be2 vsub.f64 d16, d17, d18");
463 COMPARE(vsub(d3, d4, d5, ne), 485 COMPARE(vsub(d3, d4, d5, ne),
464 "1e343b45 vsub.f64ne d3, d4, d5"); 486 "1e343b45 vsub.f64ne d3, d4, d5");
465 487
466 COMPARE(vmul(d2, d1, d0), 488 COMPARE(vmul(d2, d1, d0),
467 "ee212b00 vmul.f64 d2, d1, d0"); 489 "ee212b00 vmul.f64 d2, d1, d0");
490 COMPARE(vmul(d16, d17, d18),
491 "ee610ba2 vmul.f64 d16, d17, d18");
468 COMPARE(vmul(d6, d4, d5, cc), 492 COMPARE(vmul(d6, d4, d5, cc),
469 "3e246b05 vmul.f64cc d6, d4, d5"); 493 "3e246b05 vmul.f64cc d6, d4, d5");
470 494
471 COMPARE(vdiv(d2, d2, d2), 495 COMPARE(vdiv(d2, d2, d2),
472 "ee822b02 vdiv.f64 d2, d2, d2"); 496 "ee822b02 vdiv.f64 d2, d2, d2");
497 COMPARE(vdiv(d16, d17, d18),
498 "eec10ba2 vdiv.f64 d16, d17, d18");
473 COMPARE(vdiv(d6, d7, d7, hi), 499 COMPARE(vdiv(d6, d7, d7, hi),
474 "8e876b07 vdiv.f64hi d6, d7, d7"); 500 "8e876b07 vdiv.f64hi d6, d7, d7");
475 501
502 COMPARE(vcmp(d0, d1),
503 "eeb40b41 vcmp.f64 d0, d1");
504 COMPARE(vcmp(d16, d17),
505 "eef40b61 vcmp.f64 d16, d17");
506 COMPARE(vcmp(d0, 0.0),
507 "eeb50b40 vcmp.f64 d0, #0.0");
508 COMPARE(vcmp(d16, 0.0),
509 "eef50b40 vcmp.f64 d16, #0.0");
510
476 COMPARE(vsqrt(d0, d0), 511 COMPARE(vsqrt(d0, d0),
477 "eeb10bc0 vsqrt.f64 d0, d0"); 512 "eeb10bc0 vsqrt.f64 d0, d0");
513 COMPARE(vsqrt(d16, d17),
514 "eef10be1 vsqrt.f64 d16, d17");
478 COMPARE(vsqrt(d2, d3, ne), 515 COMPARE(vsqrt(d2, d3, ne),
479 "1eb12bc3 vsqrt.f64ne d2, d3"); 516 "1eb12bc3 vsqrt.f64ne d2, d3");
480 517
481 COMPARE(vmov(d0, 1.0), 518 COMPARE(vmov(d0, 1.0),
482 "eeb70b00 vmov.f64 d0, #1"); 519 "eeb70b00 vmov.f64 d0, #1");
483 COMPARE(vmov(d2, -13.0), 520 COMPARE(vmov(d2, -13.0),
484 "eeba2b0a vmov.f64 d2, #-13"); 521 "eeba2b0a vmov.f64 d2, #-13");
485 522
486 COMPARE(vldr(s0, r0, 0), 523 COMPARE(vldr(s0, r0, 0),
487 "ed900a00 vldr s0, [r0 + 4*0]"); 524 "ed900a00 vldr s0, [r0 + 4*0]");
(...skipping 16 matching lines...) Expand all
504 "ed898a03 vstr s16, [r9 + 4*3]"); 541 "ed898a03 vstr s16, [r9 + 4*3]");
505 COMPARE(vstr(s31, r10, 1020), 542 COMPARE(vstr(s31, r10, 1020),
506 "edcafaff vstr s31, [r10 + 4*255]"); 543 "edcafaff vstr s31, [r10 + 4*255]");
507 544
508 COMPARE(vldr(d0, r0, 0), 545 COMPARE(vldr(d0, r0, 0),
509 "ed900b00 vldr d0, [r0 + 4*0]"); 546 "ed900b00 vldr d0, [r0 + 4*0]");
510 COMPARE(vldr(d1, r1, 4), 547 COMPARE(vldr(d1, r1, 4),
511 "ed911b01 vldr d1, [r1 + 4*1]"); 548 "ed911b01 vldr d1, [r1 + 4*1]");
512 COMPARE(vldr(d15, r10, 1020), 549 COMPARE(vldr(d15, r10, 1020),
513 "ed9afbff vldr d15, [r10 + 4*255]"); 550 "ed9afbff vldr d15, [r10 + 4*255]");
551 COMPARE(vldr(d25, r0, 0),
552 "edd09b00 vldr d25, [r0 + 4*0]");
553 COMPARE(vldr(d26, r1, 4),
554 "edd1ab01 vldr d26, [r1 + 4*1]");
555 COMPARE(vldr(d31, r10, 1020),
556 "eddafbff vldr d31, [r10 + 4*255]");
514 COMPARE(vstr(d0, r0, 0), 557 COMPARE(vstr(d0, r0, 0),
515 "ed800b00 vstr d0, [r0 + 4*0]"); 558 "ed800b00 vstr d0, [r0 + 4*0]");
516 COMPARE(vstr(d1, r1, 4), 559 COMPARE(vstr(d1, r1, 4),
517 "ed811b01 vstr d1, [r1 + 4*1]"); 560 "ed811b01 vstr d1, [r1 + 4*1]");
518 COMPARE(vstr(d15, r10, 1020), 561 COMPARE(vstr(d15, r10, 1020),
519 "ed8afbff vstr d15, [r10 + 4*255]"); 562 "ed8afbff vstr d15, [r10 + 4*255]");
563 COMPARE(vstr(d16, r0, 0),
564 "edc00b00 vstr d16, [r0 + 4*0]");
565 COMPARE(vstr(d17, r1, 4),
566 "edc11b01 vstr d17, [r1 + 4*1]");
567 COMPARE(vstr(d31, r10, 1020),
568 "edcafbff vstr d31, [r10 + 4*255]");
520 569
521 COMPARE(vmsr(r5), 570 COMPARE(vmsr(r5),
522 "eee15a10 vmsr FPSCR, r5"); 571 "eee15a10 vmsr FPSCR, r5");
523 COMPARE(vmsr(r10, pl), 572 COMPARE(vmsr(r10, pl),
524 "5ee1aa10 vmsrpl FPSCR, r10"); 573 "5ee1aa10 vmsrpl FPSCR, r10");
525 COMPARE(vmsr(pc), 574 COMPARE(vmsr(pc),
526 "eee1fa10 vmsr FPSCR, APSR"); 575 "eee1fa10 vmsr FPSCR, APSR");
527 COMPARE(vmrs(r5), 576 COMPARE(vmrs(r5),
528 "eef15a10 vmrs r5, FPSCR"); 577 "eef15a10 vmrs r5, FPSCR");
529 COMPARE(vmrs(r10, ge), 578 COMPARE(vmrs(r10, ge),
530 "aef1aa10 vmrsge r10, FPSCR"); 579 "aef1aa10 vmrsge r10, FPSCR");
531 COMPARE(vmrs(pc), 580 COMPARE(vmrs(pc),
532 "eef1fa10 vmrs APSR, FPSCR"); 581 "eef1fa10 vmrs APSR, FPSCR");
533 582
534 COMPARE(vstm(ia, r0, d1, d3), 583 COMPARE(vstm(ia, r0, d1, d3),
535 "ec801b06 vstmia r0, {d1-d3}"); 584 "ec801b06 vstmia r0, {d1-d3}");
536 COMPARE(vldm(ia, r1, d2, d5), 585 COMPARE(vldm(ia, r1, d2, d5),
537 "ec912b08 vldmia r1, {d2-d5}"); 586 "ec912b08 vldmia r1, {d2-d5}");
538 COMPARE(vstm(ia, r2, d0, d15), 587 COMPARE(vstm(ia, r2, d0, d15),
539 "ec820b20 vstmia r2, {d0-d15}"); 588 "ec820b20 vstmia r2, {d0-d15}");
540 COMPARE(vldm(ia, r3, d0, d15), 589 COMPARE(vldm(ia, r3, d0, d15),
541 "ec930b20 vldmia r3, {d0-d15}"); 590 "ec930b20 vldmia r3, {d0-d15}");
591 COMPARE(vstm(ia, r0, d16, d31),
592 "ecc00b20 vstmia r0, {d16-d31}");
593 COMPARE(vldm(ia, r3, d16, d31),
594 "ecd30b20 vldmia r3, {d16-d31}");
595 COMPARE(vstm(ia, r0, d23, d27),
596 "ecc07b0a vstmia r0, {d23-d27}");
597 COMPARE(vldm(ia, r3, d23, d27),
598 "ecd37b0a vldmia r3, {d23-d27}");
542 COMPARE(vstm(ia, r4, s1, s3), 599 COMPARE(vstm(ia, r4, s1, s3),
543 "ecc40a03 vstmia r4, {s1-s3}"); 600 "ecc40a03 vstmia r4, {s1-s3}");
544 COMPARE(vldm(ia, r5, s2, s5), 601 COMPARE(vldm(ia, r5, s2, s5),
545 "ec951a04 vldmia r5, {s2-s5}"); 602 "ec951a04 vldmia r5, {s2-s5}");
546 COMPARE(vstm(ia, r6, s0, s31), 603 COMPARE(vstm(ia, r6, s0, s31),
547 "ec860a20 vstmia r6, {s0-s31}"); 604 "ec860a20 vstmia r6, {s0-s31}");
548 COMPARE(vldm(ia, r7, s0, s31), 605 COMPARE(vldm(ia, r7, s0, s31),
549 "ec970a20 vldmia r7, {s0-s31}"); 606 "ec970a20 vldmia r7, {s0-s31}");
550 607
551 COMPARE(vmla(d2, d1, d0), 608 COMPARE(vmla(d2, d1, d0),
552 "ee012b00 vmla.f64 d2, d1, d0"); 609 "ee012b00 vmla.f64 d2, d1, d0");
610 COMPARE(vmla(d16, d17, d18),
611 "ee410ba2 vmla.f64 d16, d17, d18");
553 COMPARE(vmla(d6, d4, d5, cc), 612 COMPARE(vmla(d6, d4, d5, cc),
554 "3e046b05 vmla.f64cc d6, d4, d5"); 613 "3e046b05 vmla.f64cc d6, d4, d5");
614
615 COMPARE(vcvt_u32_f64(s0, d0),
616 "eebc0bc0 vcvt.u32.f64 s0, d0");
617 COMPARE(vcvt_u32_f64(s0, d16),
618 "eebc0be0 vcvt.u32.f64 s0, d16");
619 COMPARE(vcvt_s32_f64(s0, d0),
620 "eebd0bc0 vcvt.s32.f64 s0, d0");
621 COMPARE(vcvt_s32_f64(s0, d16),
622 "eebd0be0 vcvt.s32.f64 s0, d16");
623 COMPARE(vcvt_f64_u32(d0, s1),
624 "eeb80b60 vcvt.f64.u32 d0, s1");
625 COMPARE(vcvt_f64_u32(d16, s1),
626 "eef80b60 vcvt.f64.u32 d16, s1");
627 COMPARE(vcvt_f64_s32(d0, s1),
628 "eeb80be0 vcvt.f64.s32 d0, s1");
629 COMPARE(vcvt_f32_s32(s0, s2),
630 "eeb80ac1 vcvt.f32.s32 s0, s2");
555 } 631 }
556 632
557 VERIFY_RUN(); 633 VERIFY_RUN();
558 } 634 }
559 635
560 636
561 TEST(LoadStore) { 637 TEST(LoadStore) {
562 SET_UP(); 638 SET_UP();
563 639
564 COMPARE(ldrb(r0, MemOperand(r1)), 640 COMPARE(ldrb(r0, MemOperand(r1)),
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after
751 COMPARE(strd(r8, r9, MemOperand(r9, -127, PostIndex)), 827 COMPARE(strd(r8, r9, MemOperand(r9, -127, PostIndex)),
752 "e04987ff strd r8, [r9], #-127"); 828 "e04987ff strd r8, [r9], #-127");
753 COMPARE(strd(r10, fp, MemOperand(fp, 127, PreIndex)), 829 COMPARE(strd(r10, fp, MemOperand(fp, 127, PreIndex)),
754 "e1eba7ff strd r10, [fp, #+127]!"); 830 "e1eba7ff strd r10, [fp, #+127]!");
755 COMPARE(strd(ip, sp, MemOperand(sp, -127, PreIndex)), 831 COMPARE(strd(ip, sp, MemOperand(sp, -127, PreIndex)),
756 "e16dc7ff strd ip, [sp, #-127]!"); 832 "e16dc7ff strd ip, [sp, #-127]!");
757 } 833 }
758 834
759 VERIFY_RUN(); 835 VERIFY_RUN();
760 } 836 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698