| 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 5229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5240 double q1_proc = q1; | 5240 double q1_proc = q1; |
| 5241 double q2_proc = q2; | 5241 double q2_proc = q2; |
| 5242 double qa_proc = qa; | 5242 double qa_proc = qa; |
| 5243 ASSERT(IsQuietNaN(s1_proc)); | 5243 ASSERT(IsQuietNaN(s1_proc)); |
| 5244 ASSERT(IsQuietNaN(s2_proc)); | 5244 ASSERT(IsQuietNaN(s2_proc)); |
| 5245 ASSERT(IsQuietNaN(sa_proc)); | 5245 ASSERT(IsQuietNaN(sa_proc)); |
| 5246 ASSERT(IsQuietNaN(q1_proc)); | 5246 ASSERT(IsQuietNaN(q1_proc)); |
| 5247 ASSERT(IsQuietNaN(q2_proc)); | 5247 ASSERT(IsQuietNaN(q2_proc)); |
| 5248 ASSERT(IsQuietNaN(qa_proc)); | 5248 ASSERT(IsQuietNaN(qa_proc)); |
| 5249 | 5249 |
| 5250 // Negated NaNs as it would be done on ARMv8 hardware. |
| 5251 double s1_proc_neg = rawbits_to_double(0xfffd555511111111); |
| 5252 double sa_proc_neg = rawbits_to_double(0xfffd5555aaaaaaaa); |
| 5253 double q1_proc_neg = rawbits_to_double(0xfffaaaaa11111111); |
| 5254 double qa_proc_neg = rawbits_to_double(0xfffaaaaaaaaaaaaa); |
| 5255 ASSERT(IsQuietNaN(s1_proc_neg)); |
| 5256 ASSERT(IsQuietNaN(sa_proc_neg)); |
| 5257 ASSERT(IsQuietNaN(q1_proc_neg)); |
| 5258 ASSERT(IsQuietNaN(qa_proc_neg)); |
| 5259 |
| 5250 // Quiet NaNs are propagated. | 5260 // Quiet NaNs are propagated. |
| 5251 FmaddFmsubHelper(q1, 0, 0, q1_proc, -q1_proc, -q1_proc, q1_proc); | 5261 FmaddFmsubHelper(q1, 0, 0, q1_proc, q1_proc_neg, q1_proc_neg, q1_proc); |
| 5252 FmaddFmsubHelper(0, q2, 0, q2_proc, q2_proc, q2_proc, q2_proc); | 5262 FmaddFmsubHelper(0, q2, 0, q2_proc, q2_proc, q2_proc, q2_proc); |
| 5253 FmaddFmsubHelper(0, 0, qa, qa_proc, qa_proc, -qa_proc, -qa_proc); | 5263 FmaddFmsubHelper(0, 0, qa, qa_proc, qa_proc, qa_proc_neg, qa_proc_neg); |
| 5254 FmaddFmsubHelper(q1, q2, 0, q1_proc, -q1_proc, -q1_proc, q1_proc); | 5264 FmaddFmsubHelper(q1, q2, 0, q1_proc, q1_proc_neg, q1_proc_neg, q1_proc); |
| 5255 FmaddFmsubHelper(0, q2, qa, qa_proc, qa_proc, -qa_proc, -qa_proc); | 5265 FmaddFmsubHelper(0, q2, qa, qa_proc, qa_proc, qa_proc_neg, qa_proc_neg); |
| 5256 FmaddFmsubHelper(q1, 0, qa, qa_proc, qa_proc, -qa_proc, -qa_proc); | 5266 FmaddFmsubHelper(q1, 0, qa, qa_proc, qa_proc, qa_proc_neg, qa_proc_neg); |
| 5257 FmaddFmsubHelper(q1, q2, qa, qa_proc, qa_proc, -qa_proc, -qa_proc); | 5267 FmaddFmsubHelper(q1, q2, qa, qa_proc, qa_proc, qa_proc_neg, qa_proc_neg); |
| 5258 | 5268 |
| 5259 // Signalling NaNs are propagated, and made quiet. | 5269 // Signalling NaNs are propagated, and made quiet. |
| 5260 FmaddFmsubHelper(s1, 0, 0, s1_proc, -s1_proc, -s1_proc, s1_proc); | 5270 FmaddFmsubHelper(s1, 0, 0, s1_proc, s1_proc_neg, s1_proc_neg, s1_proc); |
| 5261 FmaddFmsubHelper(0, s2, 0, s2_proc, s2_proc, s2_proc, s2_proc); | 5271 FmaddFmsubHelper(0, s2, 0, s2_proc, s2_proc, s2_proc, s2_proc); |
| 5262 FmaddFmsubHelper(0, 0, sa, sa_proc, sa_proc, -sa_proc, -sa_proc); | 5272 FmaddFmsubHelper(0, 0, sa, sa_proc, sa_proc, sa_proc_neg, sa_proc_neg); |
| 5263 FmaddFmsubHelper(s1, s2, 0, s1_proc, -s1_proc, -s1_proc, s1_proc); | 5273 FmaddFmsubHelper(s1, s2, 0, s1_proc, s1_proc_neg, s1_proc_neg, s1_proc); |
| 5264 FmaddFmsubHelper(0, s2, sa, sa_proc, sa_proc, -sa_proc, -sa_proc); | 5274 FmaddFmsubHelper(0, s2, sa, sa_proc, sa_proc, sa_proc_neg, sa_proc_neg); |
| 5265 FmaddFmsubHelper(s1, 0, sa, sa_proc, sa_proc, -sa_proc, -sa_proc); | 5275 FmaddFmsubHelper(s1, 0, sa, sa_proc, sa_proc, sa_proc_neg, sa_proc_neg); |
| 5266 FmaddFmsubHelper(s1, s2, sa, sa_proc, sa_proc, -sa_proc, -sa_proc); | 5276 FmaddFmsubHelper(s1, s2, sa, sa_proc, sa_proc, sa_proc_neg, sa_proc_neg); |
| 5267 | 5277 |
| 5268 // Signalling NaNs take precedence over quiet NaNs. | 5278 // Signalling NaNs take precedence over quiet NaNs. |
| 5269 FmaddFmsubHelper(s1, q2, qa, s1_proc, -s1_proc, -s1_proc, s1_proc); | 5279 FmaddFmsubHelper(s1, q2, qa, s1_proc, s1_proc_neg, s1_proc_neg, s1_proc); |
| 5270 FmaddFmsubHelper(q1, s2, qa, s2_proc, s2_proc, s2_proc, s2_proc); | 5280 FmaddFmsubHelper(q1, s2, qa, s2_proc, s2_proc, s2_proc, s2_proc); |
| 5271 FmaddFmsubHelper(q1, q2, sa, sa_proc, sa_proc, -sa_proc, -sa_proc); | 5281 FmaddFmsubHelper(q1, q2, sa, sa_proc, sa_proc, sa_proc_neg, sa_proc_neg); |
| 5272 FmaddFmsubHelper(s1, s2, qa, s1_proc, -s1_proc, -s1_proc, s1_proc); | 5282 FmaddFmsubHelper(s1, s2, qa, s1_proc, s1_proc_neg, s1_proc_neg, s1_proc); |
| 5273 FmaddFmsubHelper(q1, s2, sa, sa_proc, sa_proc, -sa_proc, -sa_proc); | 5283 FmaddFmsubHelper(q1, s2, sa, sa_proc, sa_proc, sa_proc_neg, sa_proc_neg); |
| 5274 FmaddFmsubHelper(s1, q2, sa, sa_proc, sa_proc, -sa_proc, -sa_proc); | 5284 FmaddFmsubHelper(s1, q2, sa, sa_proc, sa_proc, sa_proc_neg, sa_proc_neg); |
| 5275 FmaddFmsubHelper(s1, s2, sa, sa_proc, sa_proc, -sa_proc, -sa_proc); | 5285 FmaddFmsubHelper(s1, s2, sa, sa_proc, sa_proc, sa_proc_neg, sa_proc_neg); |
| 5276 | 5286 |
| 5277 // A NaN generated by the intermediate op1 * op2 overrides a quiet NaN in a. | 5287 // A NaN generated by the intermediate op1 * op2 overrides a quiet NaN in a. |
| 5278 FmaddFmsubHelper(0, kFP64PositiveInfinity, qa, | 5288 FmaddFmsubHelper(0, kFP64PositiveInfinity, qa, |
| 5279 kFP64DefaultNaN, kFP64DefaultNaN, | 5289 kFP64DefaultNaN, kFP64DefaultNaN, |
| 5280 kFP64DefaultNaN, kFP64DefaultNaN); | 5290 kFP64DefaultNaN, kFP64DefaultNaN); |
| 5281 FmaddFmsubHelper(kFP64PositiveInfinity, 0, qa, | 5291 FmaddFmsubHelper(kFP64PositiveInfinity, 0, qa, |
| 5282 kFP64DefaultNaN, kFP64DefaultNaN, | 5292 kFP64DefaultNaN, kFP64DefaultNaN, |
| 5283 kFP64DefaultNaN, kFP64DefaultNaN); | 5293 kFP64DefaultNaN, kFP64DefaultNaN); |
| 5284 FmaddFmsubHelper(0, kFP64NegativeInfinity, qa, | 5294 FmaddFmsubHelper(0, kFP64NegativeInfinity, qa, |
| 5285 kFP64DefaultNaN, kFP64DefaultNaN, | 5295 kFP64DefaultNaN, kFP64DefaultNaN, |
| (...skipping 27 matching lines...) Expand all Loading... |
| 5313 float q1_proc = q1; | 5323 float q1_proc = q1; |
| 5314 float q2_proc = q2; | 5324 float q2_proc = q2; |
| 5315 float qa_proc = qa; | 5325 float qa_proc = qa; |
| 5316 ASSERT(IsQuietNaN(s1_proc)); | 5326 ASSERT(IsQuietNaN(s1_proc)); |
| 5317 ASSERT(IsQuietNaN(s2_proc)); | 5327 ASSERT(IsQuietNaN(s2_proc)); |
| 5318 ASSERT(IsQuietNaN(sa_proc)); | 5328 ASSERT(IsQuietNaN(sa_proc)); |
| 5319 ASSERT(IsQuietNaN(q1_proc)); | 5329 ASSERT(IsQuietNaN(q1_proc)); |
| 5320 ASSERT(IsQuietNaN(q2_proc)); | 5330 ASSERT(IsQuietNaN(q2_proc)); |
| 5321 ASSERT(IsQuietNaN(qa_proc)); | 5331 ASSERT(IsQuietNaN(qa_proc)); |
| 5322 | 5332 |
| 5333 // Negated NaNs as it would be done on ARMv8 hardware. |
| 5334 float s1_proc_neg = rawbits_to_float(0xffd51111); |
| 5335 float sa_proc_neg = rawbits_to_float(0xffd5aaaa); |
| 5336 float q1_proc_neg = rawbits_to_float(0xffea1111); |
| 5337 float qa_proc_neg = rawbits_to_float(0xffeaaaaa); |
| 5338 ASSERT(IsQuietNaN(s1_proc_neg)); |
| 5339 ASSERT(IsQuietNaN(sa_proc_neg)); |
| 5340 ASSERT(IsQuietNaN(q1_proc_neg)); |
| 5341 ASSERT(IsQuietNaN(qa_proc_neg)); |
| 5342 |
| 5323 // Quiet NaNs are propagated. | 5343 // Quiet NaNs are propagated. |
| 5324 FmaddFmsubHelper(q1, 0, 0, q1_proc, -q1_proc, -q1_proc, q1_proc); | 5344 FmaddFmsubHelper(q1, 0, 0, q1_proc, q1_proc_neg, q1_proc_neg, q1_proc); |
| 5325 FmaddFmsubHelper(0, q2, 0, q2_proc, q2_proc, q2_proc, q2_proc); | 5345 FmaddFmsubHelper(0, q2, 0, q2_proc, q2_proc, q2_proc, q2_proc); |
| 5326 FmaddFmsubHelper(0, 0, qa, qa_proc, qa_proc, -qa_proc, -qa_proc); | 5346 FmaddFmsubHelper(0, 0, qa, qa_proc, qa_proc, qa_proc_neg, qa_proc_neg); |
| 5327 FmaddFmsubHelper(q1, q2, 0, q1_proc, -q1_proc, -q1_proc, q1_proc); | 5347 FmaddFmsubHelper(q1, q2, 0, q1_proc, q1_proc_neg, q1_proc_neg, q1_proc); |
| 5328 FmaddFmsubHelper(0, q2, qa, qa_proc, qa_proc, -qa_proc, -qa_proc); | 5348 FmaddFmsubHelper(0, q2, qa, qa_proc, qa_proc, qa_proc_neg, qa_proc_neg); |
| 5329 FmaddFmsubHelper(q1, 0, qa, qa_proc, qa_proc, -qa_proc, -qa_proc); | 5349 FmaddFmsubHelper(q1, 0, qa, qa_proc, qa_proc, qa_proc_neg, qa_proc_neg); |
| 5330 FmaddFmsubHelper(q1, q2, qa, qa_proc, qa_proc, -qa_proc, -qa_proc); | 5350 FmaddFmsubHelper(q1, q2, qa, qa_proc, qa_proc, qa_proc_neg, qa_proc_neg); |
| 5331 | 5351 |
| 5332 // Signalling NaNs are propagated, and made quiet. | 5352 // Signalling NaNs are propagated, and made quiet. |
| 5333 FmaddFmsubHelper(s1, 0, 0, s1_proc, -s1_proc, -s1_proc, s1_proc); | 5353 FmaddFmsubHelper(s1, 0, 0, s1_proc, s1_proc_neg, s1_proc_neg, s1_proc); |
| 5334 FmaddFmsubHelper(0, s2, 0, s2_proc, s2_proc, s2_proc, s2_proc); | 5354 FmaddFmsubHelper(0, s2, 0, s2_proc, s2_proc, s2_proc, s2_proc); |
| 5335 FmaddFmsubHelper(0, 0, sa, sa_proc, sa_proc, -sa_proc, -sa_proc); | 5355 FmaddFmsubHelper(0, 0, sa, sa_proc, sa_proc, sa_proc_neg, sa_proc_neg); |
| 5336 FmaddFmsubHelper(s1, s2, 0, s1_proc, -s1_proc, -s1_proc, s1_proc); | 5356 FmaddFmsubHelper(s1, s2, 0, s1_proc, s1_proc_neg, s1_proc_neg, s1_proc); |
| 5337 FmaddFmsubHelper(0, s2, sa, sa_proc, sa_proc, -sa_proc, -sa_proc); | 5357 FmaddFmsubHelper(0, s2, sa, sa_proc, sa_proc, sa_proc_neg, sa_proc_neg); |
| 5338 FmaddFmsubHelper(s1, 0, sa, sa_proc, sa_proc, -sa_proc, -sa_proc); | 5358 FmaddFmsubHelper(s1, 0, sa, sa_proc, sa_proc, sa_proc_neg, sa_proc_neg); |
| 5339 FmaddFmsubHelper(s1, s2, sa, sa_proc, sa_proc, -sa_proc, -sa_proc); | 5359 FmaddFmsubHelper(s1, s2, sa, sa_proc, sa_proc, sa_proc_neg, sa_proc_neg); |
| 5340 | 5360 |
| 5341 // Signalling NaNs take precedence over quiet NaNs. | 5361 // Signalling NaNs take precedence over quiet NaNs. |
| 5342 FmaddFmsubHelper(s1, q2, qa, s1_proc, -s1_proc, -s1_proc, s1_proc); | 5362 FmaddFmsubHelper(s1, q2, qa, s1_proc, s1_proc_neg, s1_proc_neg, s1_proc); |
| 5343 FmaddFmsubHelper(q1, s2, qa, s2_proc, s2_proc, s2_proc, s2_proc); | 5363 FmaddFmsubHelper(q1, s2, qa, s2_proc, s2_proc, s2_proc, s2_proc); |
| 5344 FmaddFmsubHelper(q1, q2, sa, sa_proc, sa_proc, -sa_proc, -sa_proc); | 5364 FmaddFmsubHelper(q1, q2, sa, sa_proc, sa_proc, sa_proc_neg, sa_proc_neg); |
| 5345 FmaddFmsubHelper(s1, s2, qa, s1_proc, -s1_proc, -s1_proc, s1_proc); | 5365 FmaddFmsubHelper(s1, s2, qa, s1_proc, s1_proc_neg, s1_proc_neg, s1_proc); |
| 5346 FmaddFmsubHelper(q1, s2, sa, sa_proc, sa_proc, -sa_proc, -sa_proc); | 5366 FmaddFmsubHelper(q1, s2, sa, sa_proc, sa_proc, sa_proc_neg, sa_proc_neg); |
| 5347 FmaddFmsubHelper(s1, q2, sa, sa_proc, sa_proc, -sa_proc, -sa_proc); | 5367 FmaddFmsubHelper(s1, q2, sa, sa_proc, sa_proc, sa_proc_neg, sa_proc_neg); |
| 5348 FmaddFmsubHelper(s1, s2, sa, sa_proc, sa_proc, -sa_proc, -sa_proc); | 5368 FmaddFmsubHelper(s1, s2, sa, sa_proc, sa_proc, sa_proc_neg, sa_proc_neg); |
| 5349 | 5369 |
| 5350 // A NaN generated by the intermediate op1 * op2 overrides a quiet NaN in a. | 5370 // A NaN generated by the intermediate op1 * op2 overrides a quiet NaN in a. |
| 5351 FmaddFmsubHelper(0, kFP32PositiveInfinity, qa, | 5371 FmaddFmsubHelper(0, kFP32PositiveInfinity, qa, |
| 5352 kFP32DefaultNaN, kFP32DefaultNaN, | 5372 kFP32DefaultNaN, kFP32DefaultNaN, |
| 5353 kFP32DefaultNaN, kFP32DefaultNaN); | 5373 kFP32DefaultNaN, kFP32DefaultNaN); |
| 5354 FmaddFmsubHelper(kFP32PositiveInfinity, 0, qa, | 5374 FmaddFmsubHelper(kFP32PositiveInfinity, 0, qa, |
| 5355 kFP32DefaultNaN, kFP32DefaultNaN, | 5375 kFP32DefaultNaN, kFP32DefaultNaN, |
| 5356 kFP32DefaultNaN, kFP32DefaultNaN); | 5376 kFP32DefaultNaN, kFP32DefaultNaN); |
| 5357 FmaddFmsubHelper(0, kFP32NegativeInfinity, qa, | 5377 FmaddFmsubHelper(0, kFP32NegativeInfinity, qa, |
| 5358 kFP32DefaultNaN, kFP32DefaultNaN, | 5378 kFP32DefaultNaN, kFP32DefaultNaN, |
| (...skipping 5413 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10772 if (RelocInfo::IsVeneerPool(info->rmode())) { | 10792 if (RelocInfo::IsVeneerPool(info->rmode())) { |
| 10773 ASSERT(info->data() == veneer_pool_size); | 10793 ASSERT(info->data() == veneer_pool_size); |
| 10774 ++pool_count; | 10794 ++pool_count; |
| 10775 } | 10795 } |
| 10776 } | 10796 } |
| 10777 | 10797 |
| 10778 ASSERT(pool_count == 2); | 10798 ASSERT(pool_count == 2); |
| 10779 | 10799 |
| 10780 TEARDOWN(); | 10800 TEARDOWN(); |
| 10781 } | 10801 } |
| OLD | NEW |