Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 #include "vm/bootstrap_natives.h" | 5 #include "vm/bootstrap_natives.h" |
| 6 | 6 |
| 7 #include "vm/exceptions.h" | 7 #include "vm/exceptions.h" |
| 8 #include "vm/native_entry.h" | 8 #include "vm/native_entry.h" |
| 9 #include "vm/object.h" | 9 #include "vm/object.h" |
| 10 #include "vm/symbols.h" | 10 #include "vm/symbols.h" |
| (...skipping 24 matching lines...) Expand all Loading... | |
| 35 } | 35 } |
| 36 | 36 |
| 37 | 37 |
| 38 DEFINE_NATIVE_ENTRY(Float32x4_zero, 1) { | 38 DEFINE_NATIVE_ENTRY(Float32x4_zero, 1) { |
| 39 ASSERT(AbstractTypeArguments::CheckedHandle( | 39 ASSERT(AbstractTypeArguments::CheckedHandle( |
| 40 arguments->NativeArgAt(0)).IsNull()); | 40 arguments->NativeArgAt(0)).IsNull()); |
| 41 return Float32x4::New(0.0f, 0.0f, 0.0f, 0.0f); | 41 return Float32x4::New(0.0f, 0.0f, 0.0f, 0.0f); |
| 42 } | 42 } |
| 43 | 43 |
| 44 | 44 |
| 45 DEFINE_NATIVE_ENTRY(Float32x4_fromUint32x4bits, 2) { | |
|
zra
2013/09/24 00:29:09
Float32x4_fromUint32x4Bits with a large B.
Cutch
2013/09/24 16:00:05
Done.
| |
| 46 GET_NON_NULL_NATIVE_ARGUMENT(Uint32x4, v, arguments->NativeArgAt(1)); | |
| 47 return Float32x4::New(v.value()); | |
| 48 } | |
| 49 | |
| 50 | |
| 45 DEFINE_NATIVE_ENTRY(Float32x4_add, 2) { | 51 DEFINE_NATIVE_ENTRY(Float32x4_add, 2) { |
| 46 GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, self, arguments->NativeArgAt(0)); | 52 GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, self, arguments->NativeArgAt(0)); |
| 47 GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, other, arguments->NativeArgAt(1)); | 53 GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, other, arguments->NativeArgAt(1)); |
| 48 float _x = self.x() + other.x(); | 54 float _x = self.x() + other.x(); |
| 49 float _y = self.y() + other.y(); | 55 float _y = self.y() + other.y(); |
| 50 float _z = self.z() + other.z(); | 56 float _z = self.z() + other.z(); |
| 51 float _w = self.w() + other.w(); | 57 float _w = self.w() + other.w(); |
| 52 return Float32x4::New(_x, _y, _z, _w); | 58 return Float32x4::New(_x, _y, _z, _w); |
| 53 } | 59 } |
| 54 | 60 |
| (...skipping 363 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 418 DEFINE_NATIVE_ENTRY(Float32x4_reciprocalSqrt, 1) { | 424 DEFINE_NATIVE_ENTRY(Float32x4_reciprocalSqrt, 1) { |
| 419 GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, self, arguments->NativeArgAt(0)); | 425 GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, self, arguments->NativeArgAt(0)); |
| 420 float _x = sqrtf(1.0f / self.x()); | 426 float _x = sqrtf(1.0f / self.x()); |
| 421 float _y = sqrtf(1.0f / self.y()); | 427 float _y = sqrtf(1.0f / self.y()); |
| 422 float _z = sqrtf(1.0f / self.z()); | 428 float _z = sqrtf(1.0f / self.z()); |
| 423 float _w = sqrtf(1.0f / self.w()); | 429 float _w = sqrtf(1.0f / self.w()); |
| 424 return Float32x4::New(_x, _y, _z, _w); | 430 return Float32x4::New(_x, _y, _z, _w); |
| 425 } | 431 } |
| 426 | 432 |
| 427 | 433 |
| 428 DEFINE_NATIVE_ENTRY(Float32x4_toUint32x4, 1) { | |
| 429 GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, v, arguments->NativeArgAt(0)); | |
| 430 return Uint32x4::New(v.value()); | |
| 431 } | |
| 432 | |
| 433 | |
| 434 DEFINE_NATIVE_ENTRY(Uint32x4_fromInts, 5) { | 434 DEFINE_NATIVE_ENTRY(Uint32x4_fromInts, 5) { |
| 435 ASSERT(AbstractTypeArguments::CheckedHandle( | 435 ASSERT(AbstractTypeArguments::CheckedHandle( |
| 436 arguments->NativeArgAt(0)).IsNull()); | 436 arguments->NativeArgAt(0)).IsNull()); |
| 437 GET_NON_NULL_NATIVE_ARGUMENT(Integer, x, arguments->NativeArgAt(1)); | 437 GET_NON_NULL_NATIVE_ARGUMENT(Integer, x, arguments->NativeArgAt(1)); |
| 438 GET_NON_NULL_NATIVE_ARGUMENT(Integer, y, arguments->NativeArgAt(2)); | 438 GET_NON_NULL_NATIVE_ARGUMENT(Integer, y, arguments->NativeArgAt(2)); |
| 439 GET_NON_NULL_NATIVE_ARGUMENT(Integer, z, arguments->NativeArgAt(3)); | 439 GET_NON_NULL_NATIVE_ARGUMENT(Integer, z, arguments->NativeArgAt(3)); |
| 440 GET_NON_NULL_NATIVE_ARGUMENT(Integer, w, arguments->NativeArgAt(4)); | 440 GET_NON_NULL_NATIVE_ARGUMENT(Integer, w, arguments->NativeArgAt(4)); |
| 441 uint32_t _x = static_cast<uint32_t>(x.AsInt64Value() & 0xFFFFFFFF); | 441 uint32_t _x = static_cast<uint32_t>(x.AsInt64Value() & 0xFFFFFFFF); |
| 442 uint32_t _y = static_cast<uint32_t>(y.AsInt64Value() & 0xFFFFFFFF); | 442 uint32_t _y = static_cast<uint32_t>(y.AsInt64Value() & 0xFFFFFFFF); |
| 443 uint32_t _z = static_cast<uint32_t>(z.AsInt64Value() & 0xFFFFFFFF); | 443 uint32_t _z = static_cast<uint32_t>(z.AsInt64Value() & 0xFFFFFFFF); |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 454 GET_NON_NULL_NATIVE_ARGUMENT(Bool, z, arguments->NativeArgAt(3)); | 454 GET_NON_NULL_NATIVE_ARGUMENT(Bool, z, arguments->NativeArgAt(3)); |
| 455 GET_NON_NULL_NATIVE_ARGUMENT(Bool, w, arguments->NativeArgAt(4)); | 455 GET_NON_NULL_NATIVE_ARGUMENT(Bool, w, arguments->NativeArgAt(4)); |
| 456 uint32_t _x = x.value() ? 0xFFFFFFFF : 0x0; | 456 uint32_t _x = x.value() ? 0xFFFFFFFF : 0x0; |
| 457 uint32_t _y = y.value() ? 0xFFFFFFFF : 0x0; | 457 uint32_t _y = y.value() ? 0xFFFFFFFF : 0x0; |
| 458 uint32_t _z = z.value() ? 0xFFFFFFFF : 0x0; | 458 uint32_t _z = z.value() ? 0xFFFFFFFF : 0x0; |
| 459 uint32_t _w = w.value() ? 0xFFFFFFFF : 0x0; | 459 uint32_t _w = w.value() ? 0xFFFFFFFF : 0x0; |
| 460 return Uint32x4::New(_x, _y, _z, _w); | 460 return Uint32x4::New(_x, _y, _z, _w); |
| 461 } | 461 } |
| 462 | 462 |
| 463 | 463 |
| 464 DEFINE_NATIVE_ENTRY(Uint32x4_fromFloat32x4Bits, 2) { | |
| 465 GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, v, arguments->NativeArgAt(1)); | |
| 466 return Uint32x4::New(v.value()); | |
| 467 } | |
| 468 | |
| 469 | |
| 464 DEFINE_NATIVE_ENTRY(Uint32x4_or, 2) { | 470 DEFINE_NATIVE_ENTRY(Uint32x4_or, 2) { |
| 465 GET_NON_NULL_NATIVE_ARGUMENT(Uint32x4, self, arguments->NativeArgAt(0)); | 471 GET_NON_NULL_NATIVE_ARGUMENT(Uint32x4, self, arguments->NativeArgAt(0)); |
| 466 GET_NON_NULL_NATIVE_ARGUMENT(Uint32x4, other, arguments->NativeArgAt(1)); | 472 GET_NON_NULL_NATIVE_ARGUMENT(Uint32x4, other, arguments->NativeArgAt(1)); |
| 467 uint32_t _x = self.x() | other.x(); | 473 uint32_t _x = self.x() | other.x(); |
| 468 uint32_t _y = self.y() | other.y(); | 474 uint32_t _y = self.y() | other.y(); |
| 469 uint32_t _z = self.z() | other.z(); | 475 uint32_t _z = self.z() | other.z(); |
| 470 uint32_t _w = self.w() | other.w(); | 476 uint32_t _w = self.w() | other.w(); |
| 471 return Uint32x4::New(_x, _y, _z, _w); | 477 return Uint32x4::New(_x, _y, _z, _w); |
| 472 } | 478 } |
| 473 | 479 |
| (...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 697 float32_uint32 fvw(fv.w()); | 703 float32_uint32 fvw(fv.w()); |
| 698 // Perform select. | 704 // Perform select. |
| 699 float32_uint32 tempX((_maskX & tvx.u) | (~_maskX & fvx.u)); | 705 float32_uint32 tempX((_maskX & tvx.u) | (~_maskX & fvx.u)); |
| 700 float32_uint32 tempY((_maskY & tvy.u) | (~_maskY & fvy.u)); | 706 float32_uint32 tempY((_maskY & tvy.u) | (~_maskY & fvy.u)); |
| 701 float32_uint32 tempZ((_maskZ & tvz.u) | (~_maskZ & fvz.u)); | 707 float32_uint32 tempZ((_maskZ & tvz.u) | (~_maskZ & fvz.u)); |
| 702 float32_uint32 tempW((_maskW & tvw.u) | (~_maskW & fvw.u)); | 708 float32_uint32 tempW((_maskW & tvw.u) | (~_maskW & fvw.u)); |
| 703 return Float32x4::New(tempX.f, tempY.f, tempZ.f, tempW.f); | 709 return Float32x4::New(tempX.f, tempY.f, tempZ.f, tempW.f); |
| 704 } | 710 } |
| 705 | 711 |
| 706 | 712 |
| 707 DEFINE_NATIVE_ENTRY(Uint32x4_toFloat32x4, 1) { | |
| 708 GET_NON_NULL_NATIVE_ARGUMENT(Uint32x4, v, arguments->NativeArgAt(0)); | |
| 709 return Float32x4::New(v.value()); | |
| 710 } | |
| 711 | |
| 712 | |
| 713 } // namespace dart | 713 } // namespace dart |
| OLD | NEW |