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

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: Fix Vldm/Vstm; pass more tests 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
523 COMPARE(vmov(d0, 0, r0),
524 "ee000b10 vmov.32 d0[0], r0");
525 COMPARE(vmov(d0, 1, r0),
526 "ee200b10 vmov.32 d0[1], r0");
527 COMPARE(vmov(d31, 0, r7),
528 "ee0f7b90 vmov.32 d31[0], r7");
529 COMPARE(vmov(d31, 1, r7),
530 "ee2f7b90 vmov.32 d31[1], r7");
531
486 COMPARE(vldr(s0, r0, 0), 532 COMPARE(vldr(s0, r0, 0),
487 "ed900a00 vldr s0, [r0 + 4*0]"); 533 "ed900a00 vldr s0, [r0 + 4*0]");
488 COMPARE(vldr(s1, r1, 4), 534 COMPARE(vldr(s1, r1, 4),
489 "edd10a01 vldr s1, [r1 + 4*1]"); 535 "edd10a01 vldr s1, [r1 + 4*1]");
490 COMPARE(vldr(s15, r4, 16), 536 COMPARE(vldr(s15, r4, 16),
491 "edd47a04 vldr s15, [r4 + 4*4]"); 537 "edd47a04 vldr s15, [r4 + 4*4]");
492 COMPARE(vldr(s16, r5, 20), 538 COMPARE(vldr(s16, r5, 20),
493 "ed958a05 vldr s16, [r5 + 4*5]"); 539 "ed958a05 vldr s16, [r5 + 4*5]");
494 COMPARE(vldr(s31, r10, 1020), 540 COMPARE(vldr(s31, r10, 1020),
495 "eddafaff vldr s31, [r10 + 4*255]"); 541 "eddafaff vldr s31, [r10 + 4*255]");
496 542
497 COMPARE(vstr(s0, r0, 0), 543 COMPARE(vstr(s0, r0, 0),
498 "ed800a00 vstr s0, [r0 + 4*0]"); 544 "ed800a00 vstr s0, [r0 + 4*0]");
499 COMPARE(vstr(s1, r1, 4), 545 COMPARE(vstr(s1, r1, 4),
500 "edc10a01 vstr s1, [r1 + 4*1]"); 546 "edc10a01 vstr s1, [r1 + 4*1]");
501 COMPARE(vstr(s15, r8, 8), 547 COMPARE(vstr(s15, r8, 8),
502 "edc87a02 vstr s15, [r8 + 4*2]"); 548 "edc87a02 vstr s15, [r8 + 4*2]");
503 COMPARE(vstr(s16, r9, 12), 549 COMPARE(vstr(s16, r9, 12),
504 "ed898a03 vstr s16, [r9 + 4*3]"); 550 "ed898a03 vstr s16, [r9 + 4*3]");
505 COMPARE(vstr(s31, r10, 1020), 551 COMPARE(vstr(s31, r10, 1020),
506 "edcafaff vstr s31, [r10 + 4*255]"); 552 "edcafaff vstr s31, [r10 + 4*255]");
507 553
508 COMPARE(vldr(d0, r0, 0), 554 COMPARE(vldr(d0, r0, 0),
509 "ed900b00 vldr d0, [r0 + 4*0]"); 555 "ed900b00 vldr d0, [r0 + 4*0]");
510 COMPARE(vldr(d1, r1, 4), 556 COMPARE(vldr(d1, r1, 4),
511 "ed911b01 vldr d1, [r1 + 4*1]"); 557 "ed911b01 vldr d1, [r1 + 4*1]");
512 COMPARE(vldr(d15, r10, 1020), 558 COMPARE(vldr(d15, r10, 1020),
513 "ed9afbff vldr d15, [r10 + 4*255]"); 559 "ed9afbff vldr d15, [r10 + 4*255]");
560 COMPARE(vldr(d25, r0, 0),
561 "edd09b00 vldr d25, [r0 + 4*0]");
562 COMPARE(vldr(d26, r1, 4),
563 "edd1ab01 vldr d26, [r1 + 4*1]");
564 COMPARE(vldr(d31, r10, 1020),
565 "eddafbff vldr d31, [r10 + 4*255]");
514 COMPARE(vstr(d0, r0, 0), 566 COMPARE(vstr(d0, r0, 0),
515 "ed800b00 vstr d0, [r0 + 4*0]"); 567 "ed800b00 vstr d0, [r0 + 4*0]");
516 COMPARE(vstr(d1, r1, 4), 568 COMPARE(vstr(d1, r1, 4),
517 "ed811b01 vstr d1, [r1 + 4*1]"); 569 "ed811b01 vstr d1, [r1 + 4*1]");
518 COMPARE(vstr(d15, r10, 1020), 570 COMPARE(vstr(d15, r10, 1020),
519 "ed8afbff vstr d15, [r10 + 4*255]"); 571 "ed8afbff vstr d15, [r10 + 4*255]");
572 COMPARE(vstr(d16, r0, 0),
573 "edc00b00 vstr d16, [r0 + 4*0]");
574 COMPARE(vstr(d17, r1, 4),
575 "edc11b01 vstr d17, [r1 + 4*1]");
576 COMPARE(vstr(d31, r10, 1020),
577 "edcafbff vstr d31, [r10 + 4*255]");
520 578
521 COMPARE(vmsr(r5), 579 COMPARE(vmsr(r5),
522 "eee15a10 vmsr FPSCR, r5"); 580 "eee15a10 vmsr FPSCR, r5");
523 COMPARE(vmsr(r10, pl), 581 COMPARE(vmsr(r10, pl),
524 "5ee1aa10 vmsrpl FPSCR, r10"); 582 "5ee1aa10 vmsrpl FPSCR, r10");
525 COMPARE(vmsr(pc), 583 COMPARE(vmsr(pc),
526 "eee1fa10 vmsr FPSCR, APSR"); 584 "eee1fa10 vmsr FPSCR, APSR");
527 COMPARE(vmrs(r5), 585 COMPARE(vmrs(r5),
528 "eef15a10 vmrs r5, FPSCR"); 586 "eef15a10 vmrs r5, FPSCR");
529 COMPARE(vmrs(r10, ge), 587 COMPARE(vmrs(r10, ge),
530 "aef1aa10 vmrsge r10, FPSCR"); 588 "aef1aa10 vmrsge r10, FPSCR");
531 COMPARE(vmrs(pc), 589 COMPARE(vmrs(pc),
532 "eef1fa10 vmrs APSR, FPSCR"); 590 "eef1fa10 vmrs APSR, FPSCR");
533 591
534 COMPARE(vstm(ia, r0, d1, d3), 592 COMPARE(vstm(ia, r0, d1, d3),
535 "ec801b06 vstmia r0, {d1-d3}"); 593 "ec801b06 vstmia r0, {d1-d3}");
536 COMPARE(vldm(ia, r1, d2, d5), 594 COMPARE(vldm(ia, r1, d2, d5),
537 "ec912b08 vldmia r1, {d2-d5}"); 595 "ec912b08 vldmia r1, {d2-d5}");
538 COMPARE(vstm(ia, r2, d0, d15), 596 COMPARE(vstm(ia, r2, d0, d15),
539 "ec820b20 vstmia r2, {d0-d15}"); 597 "ec820b20 vstmia r2, {d0-d15}");
540 COMPARE(vldm(ia, r3, d0, d15), 598 COMPARE(vldm(ia, r3, d0, d15),
541 "ec930b20 vldmia r3, {d0-d15}"); 599 "ec930b20 vldmia r3, {d0-d15}");
600 COMPARE(vstm(ia, r0, d16, d31),
601 "ecc00b20 vstmia r0, {d16-d31}");
602 COMPARE(vldm(ia, r3, d16, d31),
603 "ecd30b20 vldmia r3, {d16-d31}");
604 COMPARE(vstm(ia, r0, d23, d27),
605 "ecc07b0a vstmia r0, {d23-d27}");
606 COMPARE(vldm(ia, r3, d23, d27),
607 "ecd37b0a vldmia r3, {d23-d27}");
542 COMPARE(vstm(ia, r4, s1, s3), 608 COMPARE(vstm(ia, r4, s1, s3),
543 "ecc40a03 vstmia r4, {s1-s3}"); 609 "ecc40a03 vstmia r4, {s1-s3}");
544 COMPARE(vldm(ia, r5, s2, s5), 610 COMPARE(vldm(ia, r5, s2, s5),
545 "ec951a04 vldmia r5, {s2-s5}"); 611 "ec951a04 vldmia r5, {s2-s5}");
546 COMPARE(vstm(ia, r6, s0, s31), 612 COMPARE(vstm(ia, r6, s0, s31),
547 "ec860a20 vstmia r6, {s0-s31}"); 613 "ec860a20 vstmia r6, {s0-s31}");
548 COMPARE(vldm(ia, r7, s0, s31), 614 COMPARE(vldm(ia, r7, s0, s31),
549 "ec970a20 vldmia r7, {s0-s31}"); 615 "ec970a20 vldmia r7, {s0-s31}");
550 616
551 COMPARE(vmla(d2, d1, d0), 617 COMPARE(vmla(d2, d1, d0),
552 "ee012b00 vmla.f64 d2, d1, d0"); 618 "ee012b00 vmla.f64 d2, d1, d0");
619 COMPARE(vmla(d16, d17, d18),
620 "ee410ba2 vmla.f64 d16, d17, d18");
553 COMPARE(vmla(d6, d4, d5, cc), 621 COMPARE(vmla(d6, d4, d5, cc),
554 "3e046b05 vmla.f64cc d6, d4, d5"); 622 "3e046b05 vmla.f64cc d6, d4, d5");
623
624 COMPARE(vcvt_u32_f64(s0, d0),
625 "eebc0bc0 vcvt.u32.f64 s0, d0");
626 COMPARE(vcvt_u32_f64(s0, d16),
627 "eebc0be0 vcvt.u32.f64 s0, d16");
628 COMPARE(vcvt_s32_f64(s0, d0),
629 "eebd0bc0 vcvt.s32.f64 s0, d0");
630 COMPARE(vcvt_s32_f64(s0, d16),
631 "eebd0be0 vcvt.s32.f64 s0, d16");
632 COMPARE(vcvt_f64_u32(d0, s1),
633 "eeb80b60 vcvt.f64.u32 d0, s1");
634 COMPARE(vcvt_f64_u32(d16, s1),
635 "eef80b60 vcvt.f64.u32 d16, s1");
636 COMPARE(vcvt_f64_s32(d0, s1),
637 "eeb80be0 vcvt.f64.s32 d0, s1");
638 COMPARE(vcvt_f32_s32(s0, s2),
639 "eeb80ac1 vcvt.f32.s32 s0, s2");
555 } 640 }
556 641
557 VERIFY_RUN(); 642 VERIFY_RUN();
558 } 643 }
559 644
560 645
561 TEST(LoadStore) { 646 TEST(LoadStore) {
562 SET_UP(); 647 SET_UP();
563 648
564 COMPARE(ldrb(r0, MemOperand(r1)), 649 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)), 836 COMPARE(strd(r8, r9, MemOperand(r9, -127, PostIndex)),
752 "e04987ff strd r8, [r9], #-127"); 837 "e04987ff strd r8, [r9], #-127");
753 COMPARE(strd(r10, fp, MemOperand(fp, 127, PreIndex)), 838 COMPARE(strd(r10, fp, MemOperand(fp, 127, PreIndex)),
754 "e1eba7ff strd r10, [fp, #+127]!"); 839 "e1eba7ff strd r10, [fp, #+127]!");
755 COMPARE(strd(ip, sp, MemOperand(sp, -127, PreIndex)), 840 COMPARE(strd(ip, sp, MemOperand(sp, -127, PreIndex)),
756 "e16dc7ff strd ip, [sp, #-127]!"); 841 "e16dc7ff strd ip, [sp, #-127]!");
757 } 842 }
758 843
759 VERIFY_RUN(); 844 VERIFY_RUN();
760 } 845 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698