OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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 5596 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5607 | 5607 |
5608 | 5608 |
5609 TEST(fcmp) { | 5609 TEST(fcmp) { |
5610 INIT_V8(); | 5610 INIT_V8(); |
5611 SETUP(); | 5611 SETUP(); |
5612 | 5612 |
5613 START(); | 5613 START(); |
5614 | 5614 |
5615 // Some of these tests require a floating-point scratch register assigned to | 5615 // Some of these tests require a floating-point scratch register assigned to |
5616 // the macro assembler, but most do not. | 5616 // the macro assembler, but most do not. |
5617 __ SetFPScratchRegister(NoFPReg); | 5617 { |
| 5618 // We're going to mess around with the available scratch registers in this |
| 5619 // test. A UseScratchRegisterScope will make sure that they are restored to |
| 5620 // the default values once we're finished. |
| 5621 UseScratchRegisterScope temps(&masm); |
| 5622 masm.FPTmpList()->set_list(0); |
5618 | 5623 |
5619 __ Fmov(s8, 0.0); | 5624 __ Fmov(s8, 0.0); |
5620 __ Fmov(s9, 0.5); | 5625 __ Fmov(s9, 0.5); |
5621 __ Mov(w18, 0x7f800001); // Single precision NaN. | 5626 __ Mov(w18, 0x7f800001); // Single precision NaN. |
5622 __ Fmov(s18, w18); | 5627 __ Fmov(s18, w18); |
5623 | 5628 |
5624 __ Fcmp(s8, s8); | 5629 __ Fcmp(s8, s8); |
5625 __ Mrs(x0, NZCV); | 5630 __ Mrs(x0, NZCV); |
5626 __ Fcmp(s8, s9); | 5631 __ Fcmp(s8, s9); |
5627 __ Mrs(x1, NZCV); | 5632 __ Mrs(x1, NZCV); |
5628 __ Fcmp(s9, s8); | 5633 __ Fcmp(s9, s8); |
5629 __ Mrs(x2, NZCV); | 5634 __ Mrs(x2, NZCV); |
5630 __ Fcmp(s8, s18); | 5635 __ Fcmp(s8, s18); |
5631 __ Mrs(x3, NZCV); | 5636 __ Mrs(x3, NZCV); |
5632 __ Fcmp(s18, s18); | 5637 __ Fcmp(s18, s18); |
5633 __ Mrs(x4, NZCV); | 5638 __ Mrs(x4, NZCV); |
5634 __ Fcmp(s8, 0.0); | 5639 __ Fcmp(s8, 0.0); |
5635 __ Mrs(x5, NZCV); | 5640 __ Mrs(x5, NZCV); |
5636 __ SetFPScratchRegister(d0); | 5641 masm.FPTmpList()->set_list(d0.Bit()); |
5637 __ Fcmp(s8, 255.0); | 5642 __ Fcmp(s8, 255.0); |
5638 __ SetFPScratchRegister(NoFPReg); | 5643 masm.FPTmpList()->set_list(0); |
5639 __ Mrs(x6, NZCV); | 5644 __ Mrs(x6, NZCV); |
5640 | 5645 |
5641 __ Fmov(d19, 0.0); | 5646 __ Fmov(d19, 0.0); |
5642 __ Fmov(d20, 0.5); | 5647 __ Fmov(d20, 0.5); |
5643 __ Mov(x21, 0x7ff0000000000001UL); // Double precision NaN. | 5648 __ Mov(x21, 0x7ff0000000000001UL); // Double precision NaN. |
5644 __ Fmov(d21, x21); | 5649 __ Fmov(d21, x21); |
5645 | 5650 |
5646 __ Fcmp(d19, d19); | 5651 __ Fcmp(d19, d19); |
5647 __ Mrs(x10, NZCV); | 5652 __ Mrs(x10, NZCV); |
5648 __ Fcmp(d19, d20); | 5653 __ Fcmp(d19, d20); |
5649 __ Mrs(x11, NZCV); | 5654 __ Mrs(x11, NZCV); |
5650 __ Fcmp(d20, d19); | 5655 __ Fcmp(d20, d19); |
5651 __ Mrs(x12, NZCV); | 5656 __ Mrs(x12, NZCV); |
5652 __ Fcmp(d19, d21); | 5657 __ Fcmp(d19, d21); |
5653 __ Mrs(x13, NZCV); | 5658 __ Mrs(x13, NZCV); |
5654 __ Fcmp(d21, d21); | 5659 __ Fcmp(d21, d21); |
5655 __ Mrs(x14, NZCV); | 5660 __ Mrs(x14, NZCV); |
5656 __ Fcmp(d19, 0.0); | 5661 __ Fcmp(d19, 0.0); |
5657 __ Mrs(x15, NZCV); | 5662 __ Mrs(x15, NZCV); |
5658 __ SetFPScratchRegister(d0); | 5663 masm.FPTmpList()->set_list(d0.Bit()); |
5659 __ Fcmp(d19, 12.3456); | 5664 __ Fcmp(d19, 12.3456); |
5660 __ SetFPScratchRegister(NoFPReg); | 5665 masm.FPTmpList()->set_list(0); |
5661 __ Mrs(x16, NZCV); | 5666 __ Mrs(x16, NZCV); |
| 5667 } |
| 5668 |
5662 END(); | 5669 END(); |
5663 | 5670 |
5664 RUN(); | 5671 RUN(); |
5665 | 5672 |
5666 ASSERT_EQUAL_32(ZCFlag, w0); | 5673 ASSERT_EQUAL_32(ZCFlag, w0); |
5667 ASSERT_EQUAL_32(NFlag, w1); | 5674 ASSERT_EQUAL_32(NFlag, w1); |
5668 ASSERT_EQUAL_32(CFlag, w2); | 5675 ASSERT_EQUAL_32(CFlag, w2); |
5669 ASSERT_EQUAL_32(CVFlag, w3); | 5676 ASSERT_EQUAL_32(CVFlag, w3); |
5670 ASSERT_EQUAL_32(CVFlag, w4); | 5677 ASSERT_EQUAL_32(CVFlag, w4); |
5671 ASSERT_EQUAL_32(ZCFlag, w5); | 5678 ASSERT_EQUAL_32(ZCFlag, w5); |
(...skipping 4344 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10016 AbsHelperX(-42); | 10023 AbsHelperX(-42); |
10017 AbsHelperX(kXMinInt); | 10024 AbsHelperX(kXMinInt); |
10018 AbsHelperX(kXMaxInt); | 10025 AbsHelperX(kXMaxInt); |
10019 | 10026 |
10020 AbsHelperW(0); | 10027 AbsHelperW(0); |
10021 AbsHelperW(42); | 10028 AbsHelperW(42); |
10022 AbsHelperW(-42); | 10029 AbsHelperW(-42); |
10023 AbsHelperW(kWMinInt); | 10030 AbsHelperW(kWMinInt); |
10024 AbsHelperW(kWMaxInt); | 10031 AbsHelperW(kWMaxInt); |
10025 } | 10032 } |
OLD | NEW |