| 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 10364 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10375 ASSERT_EQUAL_FP32(qn_proc, s15); | 10375 ASSERT_EQUAL_FP32(qn_proc, s15); |
| 10376 ASSERT_EQUAL_FP32(qn_proc, s16); | 10376 ASSERT_EQUAL_FP32(qn_proc, s16); |
| 10377 ASSERT_EQUAL_FP32(qn_proc, s17); | 10377 ASSERT_EQUAL_FP32(qn_proc, s17); |
| 10378 | 10378 |
| 10379 TEARDOWN(); | 10379 TEARDOWN(); |
| 10380 } | 10380 } |
| 10381 | 10381 |
| 10382 | 10382 |
| 10383 static void ProcessNaNsHelper(double n, double m, double expected) { | 10383 static void ProcessNaNsHelper(double n, double m, double expected) { |
| 10384 ASSERT(std::isnan(n) || std::isnan(m)); | 10384 ASSERT(std::isnan(n) || std::isnan(m)); |
| 10385 ASSERT(isnan(expected)); | 10385 ASSERT(std::isnan(expected)); |
| 10386 | 10386 |
| 10387 SETUP(); | 10387 SETUP(); |
| 10388 START(); | 10388 START(); |
| 10389 | 10389 |
| 10390 // Execute a number of instructions which all use ProcessNaNs, and check that | 10390 // Execute a number of instructions which all use ProcessNaNs, and check that |
| 10391 // they all propagate NaNs correctly. | 10391 // they all propagate NaNs correctly. |
| 10392 __ Fmov(d0, n); | 10392 __ Fmov(d0, n); |
| 10393 __ Fmov(d1, m); | 10393 __ Fmov(d1, m); |
| 10394 | 10394 |
| 10395 __ Fadd(d2, d0, d1); | 10395 __ Fadd(d2, d0, d1); |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10447 | 10447 |
| 10448 // Signalling NaNs take precedence over quiet NaNs. | 10448 // Signalling NaNs take precedence over quiet NaNs. |
| 10449 ProcessNaNsHelper(sn, qm, sn_proc); | 10449 ProcessNaNsHelper(sn, qm, sn_proc); |
| 10450 ProcessNaNsHelper(qn, sm, sm_proc); | 10450 ProcessNaNsHelper(qn, sm, sm_proc); |
| 10451 ProcessNaNsHelper(sn, sm, sn_proc); | 10451 ProcessNaNsHelper(sn, sm, sn_proc); |
| 10452 } | 10452 } |
| 10453 | 10453 |
| 10454 | 10454 |
| 10455 static void ProcessNaNsHelper(float n, float m, float expected) { | 10455 static void ProcessNaNsHelper(float n, float m, float expected) { |
| 10456 ASSERT(std::isnan(n) || std::isnan(m)); | 10456 ASSERT(std::isnan(n) || std::isnan(m)); |
| 10457 ASSERT(isnan(expected)); | 10457 ASSERT(std::isnan(expected)); |
| 10458 | 10458 |
| 10459 SETUP(); | 10459 SETUP(); |
| 10460 START(); | 10460 START(); |
| 10461 | 10461 |
| 10462 // Execute a number of instructions which all use ProcessNaNs, and check that | 10462 // Execute a number of instructions which all use ProcessNaNs, and check that |
| 10463 // they all propagate NaNs correctly. | 10463 // they all propagate NaNs correctly. |
| 10464 __ Fmov(s0, n); | 10464 __ Fmov(s0, n); |
| 10465 __ Fmov(s1, m); | 10465 __ Fmov(s1, m); |
| 10466 | 10466 |
| 10467 __ Fadd(s2, s0, s1); | 10467 __ Fadd(s2, s0, s1); |
| (...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10518 ProcessNaNsHelper(sn, sm, sn_proc); | 10518 ProcessNaNsHelper(sn, sm, sn_proc); |
| 10519 | 10519 |
| 10520 // Signalling NaNs take precedence over quiet NaNs. | 10520 // Signalling NaNs take precedence over quiet NaNs. |
| 10521 ProcessNaNsHelper(sn, qm, sn_proc); | 10521 ProcessNaNsHelper(sn, qm, sn_proc); |
| 10522 ProcessNaNsHelper(qn, sm, sm_proc); | 10522 ProcessNaNsHelper(qn, sm, sm_proc); |
| 10523 ProcessNaNsHelper(sn, sm, sn_proc); | 10523 ProcessNaNsHelper(sn, sm, sn_proc); |
| 10524 } | 10524 } |
| 10525 | 10525 |
| 10526 | 10526 |
| 10527 static void DefaultNaNHelper(float n, float m, float a) { | 10527 static void DefaultNaNHelper(float n, float m, float a) { |
| 10528 ASSERT(std::isnan(n) || std::isnan(m) || isnan(a)); | 10528 ASSERT(std::isnan(n) || std::isnan(m) || std::isnan(a)); |
| 10529 | 10529 |
| 10530 bool test_1op = std::isnan(n); | 10530 bool test_1op = std::isnan(n); |
| 10531 bool test_2op = std::isnan(n) || std::isnan(m); | 10531 bool test_2op = std::isnan(n) || std::isnan(m); |
| 10532 | 10532 |
| 10533 SETUP(); | 10533 SETUP(); |
| 10534 START(); | 10534 START(); |
| 10535 | 10535 |
| 10536 // Enable Default-NaN mode in the FPCR. | 10536 // Enable Default-NaN mode in the FPCR. |
| 10537 __ Mrs(x0, FPCR); | 10537 __ Mrs(x0, FPCR); |
| 10538 __ Orr(x1, x0, DN_mask); | 10538 __ Orr(x1, x0, DN_mask); |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10646 DefaultNaNHelper(sn, qm, sa); | 10646 DefaultNaNHelper(sn, qm, sa); |
| 10647 DefaultNaNHelper(sn, sm, qa); | 10647 DefaultNaNHelper(sn, sm, qa); |
| 10648 DefaultNaNHelper(qn, qm, sa); | 10648 DefaultNaNHelper(qn, qm, sa); |
| 10649 DefaultNaNHelper(sn, qm, qa); | 10649 DefaultNaNHelper(sn, qm, qa); |
| 10650 DefaultNaNHelper(qn, sm, qa); | 10650 DefaultNaNHelper(qn, sm, qa); |
| 10651 DefaultNaNHelper(qn, qm, qa); | 10651 DefaultNaNHelper(qn, qm, qa); |
| 10652 } | 10652 } |
| 10653 | 10653 |
| 10654 | 10654 |
| 10655 static void DefaultNaNHelper(double n, double m, double a) { | 10655 static void DefaultNaNHelper(double n, double m, double a) { |
| 10656 ASSERT(std::isnan(n) || std::isnan(m) || isnan(a)); | 10656 ASSERT(std::isnan(n) || std::isnan(m) || std::isnan(a)); |
| 10657 | 10657 |
| 10658 bool test_1op = std::isnan(n); | 10658 bool test_1op = std::isnan(n); |
| 10659 bool test_2op = std::isnan(n) || std::isnan(m); | 10659 bool test_2op = std::isnan(n) || std::isnan(m); |
| 10660 | 10660 |
| 10661 SETUP(); | 10661 SETUP(); |
| 10662 START(); | 10662 START(); |
| 10663 | 10663 |
| 10664 // Enable Default-NaN mode in the FPCR. | 10664 // Enable Default-NaN mode in the FPCR. |
| 10665 __ Mrs(x0, FPCR); | 10665 __ Mrs(x0, FPCR); |
| 10666 __ Orr(x1, x0, DN_mask); | 10666 __ Orr(x1, x0, DN_mask); |
| (...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10995 if (RelocInfo::IsVeneerPool(info->rmode())) { | 10995 if (RelocInfo::IsVeneerPool(info->rmode())) { |
| 10996 ASSERT(info->data() == veneer_pool_size); | 10996 ASSERT(info->data() == veneer_pool_size); |
| 10997 ++pool_count; | 10997 ++pool_count; |
| 10998 } | 10998 } |
| 10999 } | 10999 } |
| 11000 | 11000 |
| 11001 ASSERT(pool_count == 2); | 11001 ASSERT(pool_count == 2); |
| 11002 | 11002 |
| 11003 TEARDOWN(); | 11003 TEARDOWN(); |
| 11004 } | 11004 } |
| OLD | NEW |