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 |