OLD | NEW |
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 Loading... |
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"); |
430 COMPARE(vmov(d3, d3, eq), | 434 COMPARE(vmov(d3, d3, eq), |
431 "0eb03b43 vmov.f64eq d3, d3"); | 435 "0eb03b43 vmov.f64eq d3, d3"); |
432 | 436 |
433 COMPARE(vmov(s0, s31), | 437 COMPARE(vmov(s0, s31), |
434 "eeb00a6f vmov.f32 s0, s31"); | 438 "eeb00a6f vmov.f32 s0, s31"); |
435 COMPARE(vmov(s31, s0), | 439 COMPARE(vmov(s31, s0), |
436 "eef0fa40 vmov.f32 s31, s0"); | 440 "eef0fa40 vmov.f32 s31, s0"); |
437 COMPARE(vmov(r0, s0), | 441 COMPARE(vmov(r0, s0), |
(...skipping 28 matching lines...) Expand all Loading... |
466 COMPARE(vmul(d2, d1, d0), | 470 COMPARE(vmul(d2, d1, d0), |
467 "ee212b00 vmul.f64 d2, d1, d0"); | 471 "ee212b00 vmul.f64 d2, d1, d0"); |
468 COMPARE(vmul(d6, d4, d5, cc), | 472 COMPARE(vmul(d6, d4, d5, cc), |
469 "3e246b05 vmul.f64cc d6, d4, d5"); | 473 "3e246b05 vmul.f64cc d6, d4, d5"); |
470 | 474 |
471 COMPARE(vdiv(d2, d2, d2), | 475 COMPARE(vdiv(d2, d2, d2), |
472 "ee822b02 vdiv.f64 d2, d2, d2"); | 476 "ee822b02 vdiv.f64 d2, d2, d2"); |
473 COMPARE(vdiv(d6, d7, d7, hi), | 477 COMPARE(vdiv(d6, d7, d7, hi), |
474 "8e876b07 vdiv.f64hi d6, d7, d7"); | 478 "8e876b07 vdiv.f64hi d6, d7, d7"); |
475 | 479 |
| 480 COMPARE(vcmp(d0, d1), |
| 481 "eeb40b41 vcmp.f64 d0, d1"); |
| 482 COMPARE(vcmp(d0, 0.0), |
| 483 "eeb50b40 vcmp.f64 d0, #0.0"); |
| 484 |
476 COMPARE(vsqrt(d0, d0), | 485 COMPARE(vsqrt(d0, d0), |
477 "eeb10bc0 vsqrt.f64 d0, d0"); | 486 "eeb10bc0 vsqrt.f64 d0, d0"); |
478 COMPARE(vsqrt(d2, d3, ne), | 487 COMPARE(vsqrt(d2, d3, ne), |
479 "1eb12bc3 vsqrt.f64ne d2, d3"); | 488 "1eb12bc3 vsqrt.f64ne d2, d3"); |
480 | 489 |
481 COMPARE(vmov(d0, 1.0), | 490 COMPARE(vmov(d0, 1.0), |
482 "eeb70b00 vmov.f64 d0, #1"); | 491 "eeb70b00 vmov.f64 d0, #1"); |
483 COMPARE(vmov(d2, -13.0), | 492 COMPARE(vmov(d2, -13.0), |
484 "eeba2b0a vmov.f64 d2, #-13"); | 493 "eeba2b0a vmov.f64 d2, #-13"); |
485 | 494 |
| 495 COMPARE(vmov(d0, 0, r0), |
| 496 "ee000b10 vmov.32 d0[0], r0"); |
| 497 COMPARE(vmov(d0, 1, r0), |
| 498 "ee200b10 vmov.32 d0[1], r0"); |
| 499 |
486 COMPARE(vldr(s0, r0, 0), | 500 COMPARE(vldr(s0, r0, 0), |
487 "ed900a00 vldr s0, [r0 + 4*0]"); | 501 "ed900a00 vldr s0, [r0 + 4*0]"); |
488 COMPARE(vldr(s1, r1, 4), | 502 COMPARE(vldr(s1, r1, 4), |
489 "edd10a01 vldr s1, [r1 + 4*1]"); | 503 "edd10a01 vldr s1, [r1 + 4*1]"); |
490 COMPARE(vldr(s15, r4, 16), | 504 COMPARE(vldr(s15, r4, 16), |
491 "edd47a04 vldr s15, [r4 + 4*4]"); | 505 "edd47a04 vldr s15, [r4 + 4*4]"); |
492 COMPARE(vldr(s16, r5, 20), | 506 COMPARE(vldr(s16, r5, 20), |
493 "ed958a05 vldr s16, [r5 + 4*5]"); | 507 "ed958a05 vldr s16, [r5 + 4*5]"); |
494 COMPARE(vldr(s31, r10, 1020), | 508 COMPARE(vldr(s31, r10, 1020), |
495 "eddafaff vldr s31, [r10 + 4*255]"); | 509 "eddafaff vldr s31, [r10 + 4*255]"); |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
545 "ec951a04 vldmia r5, {s2-s5}"); | 559 "ec951a04 vldmia r5, {s2-s5}"); |
546 COMPARE(vstm(ia, r6, s0, s31), | 560 COMPARE(vstm(ia, r6, s0, s31), |
547 "ec860a20 vstmia r6, {s0-s31}"); | 561 "ec860a20 vstmia r6, {s0-s31}"); |
548 COMPARE(vldm(ia, r7, s0, s31), | 562 COMPARE(vldm(ia, r7, s0, s31), |
549 "ec970a20 vldmia r7, {s0-s31}"); | 563 "ec970a20 vldmia r7, {s0-s31}"); |
550 | 564 |
551 COMPARE(vmla(d2, d1, d0), | 565 COMPARE(vmla(d2, d1, d0), |
552 "ee012b00 vmla.f64 d2, d1, d0"); | 566 "ee012b00 vmla.f64 d2, d1, d0"); |
553 COMPARE(vmla(d6, d4, d5, cc), | 567 COMPARE(vmla(d6, d4, d5, cc), |
554 "3e046b05 vmla.f64cc d6, d4, d5"); | 568 "3e046b05 vmla.f64cc d6, d4, d5"); |
| 569 |
| 570 COMPARE(vcvt_u32_f64(s0, d0), |
| 571 "eebc0bc0 vcvt.u32.f64 s0, d0"); |
| 572 COMPARE(vcvt_s32_f64(s0, d0), |
| 573 "eebd0bc0 vcvt.s32.f64 s0, d0"); |
| 574 COMPARE(vcvt_f64_u32(d0, s1), |
| 575 "eeb80b60 vcvt.f64.u32 d0, s1"); |
| 576 COMPARE(vcvt_f64_s32(d0, s1), |
| 577 "eeb80be0 vcvt.f64.s32 d0, s1"); |
| 578 COMPARE(vcvt_f32_s32(s0, s2), |
| 579 "eeb80ac1 vcvt.f32.s32 s0, s2"); |
| 580 |
| 581 if (CpuFeatures::IsSupported(VFP32DREGS)) { |
| 582 COMPARE(vmov(d3, d27), |
| 583 "eeb03b6b vmov.f64 d3, d27"); |
| 584 COMPARE(vmov(d18, d7), |
| 585 "eef02b47 vmov.f64 d18, d7"); |
| 586 COMPARE(vmov(d18, r2, r3), |
| 587 "ec432b32 vmov d18, r2, r3"); |
| 588 COMPARE(vmov(r2, r3, d18), |
| 589 "ec532b32 vmov r2, r3, d18"); |
| 590 COMPARE(vmov(d20, d31), |
| 591 "eef04b6f vmov.f64 d20, d31"); |
| 592 |
| 593 COMPARE(vabs(d16, d31), |
| 594 "eef00bef vabs.f64 d16, d31"); |
| 595 |
| 596 COMPARE(vneg(d16, d31), |
| 597 "eef10b6f vneg.f64 d16, d31"); |
| 598 |
| 599 COMPARE(vadd(d16, d17, d18), |
| 600 "ee710ba2 vadd.f64 d16, d17, d18"); |
| 601 |
| 602 COMPARE(vsub(d16, d17, d18), |
| 603 "ee710be2 vsub.f64 d16, d17, d18"); |
| 604 |
| 605 COMPARE(vmul(d16, d17, d18), |
| 606 "ee610ba2 vmul.f64 d16, d17, d18"); |
| 607 |
| 608 COMPARE(vdiv(d16, d17, d18), |
| 609 "eec10ba2 vdiv.f64 d16, d17, d18"); |
| 610 |
| 611 COMPARE(vcmp(d16, d17), |
| 612 "eef40b61 vcmp.f64 d16, d17"); |
| 613 COMPARE(vcmp(d16, 0.0), |
| 614 "eef50b40 vcmp.f64 d16, #0.0"); |
| 615 |
| 616 COMPARE(vsqrt(d16, d17), |
| 617 "eef10be1 vsqrt.f64 d16, d17"); |
| 618 |
| 619 COMPARE(vmov(d30, 16.0), |
| 620 "eef3eb00 vmov.f64 d30, #16"); |
| 621 |
| 622 COMPARE(vmov(d31, 0, r7), |
| 623 "ee0f7b90 vmov.32 d31[0], r7"); |
| 624 COMPARE(vmov(d31, 1, r7), |
| 625 "ee2f7b90 vmov.32 d31[1], r7"); |
| 626 |
| 627 COMPARE(vldr(d25, r0, 0), |
| 628 "edd09b00 vldr d25, [r0 + 4*0]"); |
| 629 COMPARE(vldr(d26, r1, 4), |
| 630 "edd1ab01 vldr d26, [r1 + 4*1]"); |
| 631 COMPARE(vldr(d31, r10, 1020), |
| 632 "eddafbff vldr d31, [r10 + 4*255]"); |
| 633 |
| 634 COMPARE(vstr(d16, r0, 0), |
| 635 "edc00b00 vstr d16, [r0 + 4*0]"); |
| 636 COMPARE(vstr(d17, r1, 4), |
| 637 "edc11b01 vstr d17, [r1 + 4*1]"); |
| 638 COMPARE(vstr(d31, r10, 1020), |
| 639 "edcafbff vstr d31, [r10 + 4*255]"); |
| 640 |
| 641 COMPARE(vstm(ia, r0, d16, d31), |
| 642 "ecc00b20 vstmia r0, {d16-d31}"); |
| 643 COMPARE(vldm(ia, r3, d16, d31), |
| 644 "ecd30b20 vldmia r3, {d16-d31}"); |
| 645 COMPARE(vstm(ia, r0, d23, d27), |
| 646 "ecc07b0a vstmia r0, {d23-d27}"); |
| 647 COMPARE(vldm(ia, r3, d23, d27), |
| 648 "ecd37b0a vldmia r3, {d23-d27}"); |
| 649 |
| 650 COMPARE(vmla(d16, d17, d18), |
| 651 "ee410ba2 vmla.f64 d16, d17, d18"); |
| 652 |
| 653 COMPARE(vcvt_u32_f64(s0, d16), |
| 654 "eebc0be0 vcvt.u32.f64 s0, d16"); |
| 655 COMPARE(vcvt_s32_f64(s0, d16), |
| 656 "eebd0be0 vcvt.s32.f64 s0, d16"); |
| 657 COMPARE(vcvt_f64_u32(d16, s1), |
| 658 "eef80b60 vcvt.f64.u32 d16, s1"); |
| 659 } |
555 } | 660 } |
556 | 661 |
557 VERIFY_RUN(); | 662 VERIFY_RUN(); |
558 } | 663 } |
559 | 664 |
560 | 665 |
561 TEST(LoadStore) { | 666 TEST(LoadStore) { |
562 SET_UP(); | 667 SET_UP(); |
563 | 668 |
564 COMPARE(ldrb(r0, MemOperand(r1)), | 669 COMPARE(ldrb(r0, MemOperand(r1)), |
(...skipping 186 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
751 COMPARE(strd(r8, r9, MemOperand(r9, -127, PostIndex)), | 856 COMPARE(strd(r8, r9, MemOperand(r9, -127, PostIndex)), |
752 "e04987ff strd r8, [r9], #-127"); | 857 "e04987ff strd r8, [r9], #-127"); |
753 COMPARE(strd(r10, fp, MemOperand(fp, 127, PreIndex)), | 858 COMPARE(strd(r10, fp, MemOperand(fp, 127, PreIndex)), |
754 "e1eba7ff strd r10, [fp, #+127]!"); | 859 "e1eba7ff strd r10, [fp, #+127]!"); |
755 COMPARE(strd(ip, sp, MemOperand(sp, -127, PreIndex)), | 860 COMPARE(strd(ip, sp, MemOperand(sp, -127, PreIndex)), |
756 "e16dc7ff strd ip, [sp, #-127]!"); | 861 "e16dc7ff strd ip, [sp, #-127]!"); |
757 } | 862 } |
758 | 863 |
759 VERIFY_RUN(); | 864 VERIFY_RUN(); |
760 } | 865 } |
OLD | NEW |