Chromium Code Reviews| Index: src/harmony-simd.js |
| diff --git a/src/harmony-simd.js b/src/harmony-simd.js |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..59b6fe39afeeebbe7976844ae462d44cd71b795d |
| --- /dev/null |
| +++ b/src/harmony-simd.js |
| @@ -0,0 +1,146 @@ |
| +// Copyright 2015 the V8 project authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +(function(global, utils) { |
| + |
| +"use strict"; |
| + |
| +%CheckIsBootstrapping(); |
| + |
| +// ------------------------------------------------------------------- |
| +// Imports |
| + |
| +var GlobalObject = global.Object; |
| +var GlobalFloat32x4 = global.Float32x4; |
| + |
| +//------------------------------------------------------------------- |
| + |
| +function Float32x4Constructor(x, y, z, w) { |
| + return %CreateFloat32x4(x, y, z, w); |
| +} |
| + |
| +function Float32x4SplatConstructor(s) { |
| + return %CreateFloat32x4(s, s, s, s); |
| +} |
| + |
| +function Float32x4CheckJS(a) { |
| + return %Float32x4Check(a); |
| +} |
| + |
| +//------------------------------------------------------------------- |
| + |
| +function Float32x4ExtractLaneJS(value, lane) { |
| + return %Float32x4ExtractLane(value, lane); |
| +} |
| + |
| +function Float32x4ReplaceLaneJS(value, lane, replacement) { |
| + return %Float32x4ReplaceLane(value, lane, replacement); |
| +} |
| + |
| +//------------------------------------------------------------------- |
| + |
| +function Float32x4AbsJS(a) { |
| + return %Float32x4Abs(a); |
| +} |
| + |
| +function Float32x4NegJS(a) { |
| + return %Float32x4Neg(a); |
| +} |
| + |
| +function Float32x4SqrtJS(a) { |
| + return %Float32x4Sqrt(a); |
| +} |
| + |
| +function Float32x4RecipApproxJS(a) { |
| + return %Float32x4RecipApprox(a); |
| +} |
| + |
| +function Float32x4RecipSqrtApproxJS(a) { |
| + return %Float32x4RecipSqrtApprox(a); |
| +} |
| + |
| +function Float32x4AddJS(a, b) { |
| + return %Float32x4Add(a, b); |
| +} |
| + |
| +function Float32x4SubJS(a, b) { |
| + return %Float32x4Sub(a, b); |
| +} |
| + |
| +function Float32x4MulJS(a, b) { |
| + return %Float32x4Mul(a, b); |
| +} |
| + |
| +function Float32x4DivJS(a, b) { |
| + return %Float32x4Div(a, b); |
| +} |
| + |
| +function Float32x4MinJS(a, b) { |
| + return %Float32x4Min(a, b); |
| +} |
| + |
| +function Float32x4MaxJS(a, b) { |
| + return %Float32x4Max(a, b); |
| +} |
| + |
| +function Float32x4MinNumJS(a, b) { |
| + return %Float32x4MinNum(a, b); |
| +} |
| + |
| +function Float32x4MaxNumJS(a, b) { |
| + return %Float32x4MaxNum(a, b); |
| +} |
| + |
| +function Float32x4SwizzleJS(a, w, x, y, z) { |
| + return %Float32x4Swizzle(a, w, x, y, z); |
| +} |
| + |
| +function Float32x4ShuffleJS(a, b, w, x, y, z) { |
| + return %Float32x4Shuffle(a, b, w, x, y, z); |
| +} |
| + |
| +// ------------------------------------------------------------------- |
| + |
| +function SIMDConstructor() {} |
| +var GlobalSIMD = new SIMDConstructor(); |
| + |
| +%InternalSetPrototype(GlobalSIMD, GlobalObject.prototype); |
| +%AddNamedProperty(global, 'SIMD', GlobalSIMD, DONT_ENUM); |
| +%FunctionSetInstanceClassName(SIMDConstructor, 'SIMD'); |
| +%AddNamedProperty(GlobalSIMD, symbolToStringTag, 'SIMD', READ_ONLY | DONT_ENUM); |
| + |
| +%FunctionSetPrototype(GlobalFloat32x4, new GlobalObject()); |
|
rossberg
2015/06/12 11:48:03
Nit: s/new GlobalObject()/{}/
|
| +%AddNamedProperty( |
| + GlobalFloat32x4.prototype, 'constructor', Float32x4Constructor, DONT_ENUM); |
| + |
| +%AddNamedProperty(GlobalSIMD, 'float32x4', GlobalFloat32x4, DONT_ENUM); |
| +%FunctionSetInstanceClassName(GlobalFloat32x4, 'float32x4'); |
| +%AddNamedProperty(GlobalFloat32x4, symbolToStringTag, 'float32x4', READ_ONLY | DONT_ENUM); |
|
rossberg
2015/06/12 11:48:03
It seems inconsistent that the tag is lower-case,
|
| + |
| +%SetCode(GlobalFloat32x4, Float32x4Constructor); |
| +%FunctionSetPrototype(GlobalFloat32x4, new GlobalObject()); |
| + |
| +utils.InstallFunctions(GlobalFloat32x4, DONT_ENUM, [ |
| + 'splat', Float32x4SplatConstructor, |
| + 'check', Float32x4CheckJS, |
| + 'extractLane', Float32x4ExtractLaneJS, |
| + 'replaceLane', Float32x4ReplaceLaneJS, |
| + 'abs', Float32x4AbsJS, |
| + 'neg', Float32x4NegJS, |
| + 'sqrt', Float32x4SqrtJS, |
| + 'reciprocalApproximation', Float32x4RecipApproxJS, |
| + 'reciprocalSqrtApproximation', Float32x4RecipSqrtApproxJS, |
| + 'add', Float32x4AddJS, |
| + 'sub', Float32x4SubJS, |
| + 'mul', Float32x4MulJS, |
| + 'div', Float32x4DivJS, |
| + 'min', Float32x4MinJS, |
| + 'max', Float32x4MaxJS, |
| + 'minNum', Float32x4MinNumJS, |
| + 'maxNum', Float32x4MaxNumJS, |
| + 'swizzle', Float32x4SwizzleJS, |
| + 'shuffle', Float32x4ShuffleJS, |
| +]); |
| + |
| +}) |