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 |