OLD | NEW |
1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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 |
11 // with the distribution. | 11 // with the distribution. |
(...skipping 623 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
635 float f; | 635 float f; |
636 float g; | 636 float g; |
637 float h; | 637 float h; |
638 } F; | 638 } F; |
639 F f; | 639 F f; |
640 | 640 |
641 // Create a function that uses vldm/vstm to move some double and | 641 // Create a function that uses vldm/vstm to move some double and |
642 // single precision values around in memory. | 642 // single precision values around in memory. |
643 Assembler assm(Isolate::Current(), NULL, 0); | 643 Assembler assm(Isolate::Current(), NULL, 0); |
644 | 644 |
645 if (CpuFeatures::IsSupported(VFP3)) { | 645 if (CpuFeatures::IsSupported(VFP2)) { |
646 CpuFeatures::Scope scope(VFP3); | 646 CpuFeatures::Scope scope(VFP2); |
647 | 647 |
648 __ mov(ip, Operand(sp)); | 648 __ mov(ip, Operand(sp)); |
649 __ stm(db_w, sp, r4.bit() | fp.bit() | lr.bit()); | 649 __ stm(db_w, sp, r4.bit() | fp.bit() | lr.bit()); |
650 __ sub(fp, ip, Operand(4)); | 650 __ sub(fp, ip, Operand(4)); |
651 | 651 |
652 __ add(r4, r0, Operand(OFFSET_OF(D, a))); | 652 __ add(r4, r0, Operand(OFFSET_OF(D, a))); |
653 __ vldm(ia_w, r4, d0, d3); | 653 __ vldm(ia_w, r4, d0, d3); |
654 __ vldm(ia_w, r4, d4, d7); | 654 __ vldm(ia_w, r4, d4, d7); |
655 | 655 |
656 __ add(r4, r0, Operand(OFFSET_OF(D, a))); | 656 __ add(r4, r0, Operand(OFFSET_OF(D, a))); |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
746 float f; | 746 float f; |
747 float g; | 747 float g; |
748 float h; | 748 float h; |
749 } F; | 749 } F; |
750 F f; | 750 F f; |
751 | 751 |
752 // Create a function that uses vldm/vstm to move some double and | 752 // Create a function that uses vldm/vstm to move some double and |
753 // single precision values around in memory. | 753 // single precision values around in memory. |
754 Assembler assm(Isolate::Current(), NULL, 0); | 754 Assembler assm(Isolate::Current(), NULL, 0); |
755 | 755 |
756 if (CpuFeatures::IsSupported(VFP3)) { | 756 if (CpuFeatures::IsSupported(VFP2)) { |
757 CpuFeatures::Scope scope(VFP3); | 757 CpuFeatures::Scope scope(VFP2); |
758 | 758 |
759 __ mov(ip, Operand(sp)); | 759 __ mov(ip, Operand(sp)); |
760 __ stm(db_w, sp, r4.bit() | fp.bit() | lr.bit()); | 760 __ stm(db_w, sp, r4.bit() | fp.bit() | lr.bit()); |
761 __ sub(fp, ip, Operand(4)); | 761 __ sub(fp, ip, Operand(4)); |
762 | 762 |
763 __ add(r4, r0, Operand(OFFSET_OF(D, a))); | 763 __ add(r4, r0, Operand(OFFSET_OF(D, a))); |
764 __ vldm(ia, r4, d0, d3); | 764 __ vldm(ia, r4, d0, d3); |
765 __ add(r4, r4, Operand(4 * 8)); | 765 __ add(r4, r4, Operand(4 * 8)); |
766 __ vldm(ia, r4, d4, d7); | 766 __ vldm(ia, r4, d4, d7); |
767 | 767 |
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
861 float f; | 861 float f; |
862 float g; | 862 float g; |
863 float h; | 863 float h; |
864 } F; | 864 } F; |
865 F f; | 865 F f; |
866 | 866 |
867 // Create a function that uses vldm/vstm to move some double and | 867 // Create a function that uses vldm/vstm to move some double and |
868 // single precision values around in memory. | 868 // single precision values around in memory. |
869 Assembler assm(Isolate::Current(), NULL, 0); | 869 Assembler assm(Isolate::Current(), NULL, 0); |
870 | 870 |
871 if (CpuFeatures::IsSupported(VFP3)) { | 871 if (CpuFeatures::IsSupported(VFP2)) { |
872 CpuFeatures::Scope scope(VFP3); | 872 CpuFeatures::Scope scope(VFP2); |
873 | 873 |
874 __ mov(ip, Operand(sp)); | 874 __ mov(ip, Operand(sp)); |
875 __ stm(db_w, sp, r4.bit() | fp.bit() | lr.bit()); | 875 __ stm(db_w, sp, r4.bit() | fp.bit() | lr.bit()); |
876 __ sub(fp, ip, Operand(4)); | 876 __ sub(fp, ip, Operand(4)); |
877 | 877 |
878 __ add(r4, r0, Operand(OFFSET_OF(D, h) + 8)); | 878 __ add(r4, r0, Operand(OFFSET_OF(D, h) + 8)); |
879 __ vldm(db_w, r4, d4, d7); | 879 __ vldm(db_w, r4, d4, d7); |
880 __ vldm(db_w, r4, d0, d3); | 880 __ vldm(db_w, r4, d0, d3); |
881 | 881 |
882 __ add(r4, r0, Operand(OFFSET_OF(D, h) + 8)); | 882 __ add(r4, r0, Operand(OFFSET_OF(D, h) + 8)); |
(...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1018 Assembler assm(Isolate::Current(), NULL, 0); | 1018 Assembler assm(Isolate::Current(), NULL, 0); |
1019 | 1019 |
1020 Label target; | 1020 Label target; |
1021 __ b(eq, &target); | 1021 __ b(eq, &target); |
1022 __ b(ne, &target); | 1022 __ b(ne, &target); |
1023 __ bind(&target); | 1023 __ bind(&target); |
1024 __ nop(); | 1024 __ nop(); |
1025 } | 1025 } |
1026 | 1026 |
1027 #undef __ | 1027 #undef __ |
OLD | NEW |