| 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 |