Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(51)

Side by Side Diff: src/harmony-simd.js

Issue 1160443009: Add SIMD.Float32x4 functions. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Tests working. Created 5 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/globals.h ('k') | src/heap-snapshot-generator.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2015 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 var $float32x4ToString;
6
7 (function(global, utils) {
8
9 "use strict";
10
11 %CheckIsBootstrapping();
12
13 // -------------------------------------------------------------------
14 // Imports
15
16 var GlobalSIMD = global.SIMD;
17 var GlobalFloat32x4 = GlobalSIMD.Float32x4;
18
19 //-------------------------------------------------------------------
20
21 function Float32x4Constructor(x, y, z, w) {
22 if (%_IsConstructCall()) throw MakeTypeError(kNotConstructor, "Float32x4");
23 if (!IS_NUMBER(x) || !IS_NUMBER(y) || !IS_NUMBER(z) || !IS_NUMBER(w)) {
24 throw MakeTypeError(kInvalidArgument);
25 }
26 return %CreateFloat32x4(x, y, z, w);
27 }
28
29 function Float32x4SplatConstructor(s) {
30 return %CreateFloat32x4(s, s, s, s);
31 }
32
33 function Float32x4CheckJS(a) {
34 return %Float32x4Check(a);
35 }
36
37 function Float32x4ToString() {
38 if (!(IS_FLOAT32X4(this) || IS_FLOAT32X4_WRAPPER(this))) {
39 throw MakeTypeError(kIncompatibleMethodReceiver,
40 "Float32x4.prototype.toString", this);
41 }
42 var value = %_ValueOf(this);
43 var w = GlobalFloat32x4.extractLane(value, 0),
44 x = GlobalFloat32x4.extractLane(value, 1),
45 y = GlobalFloat32x4.extractLane(value, 2),
46 z = GlobalFloat32x4.extractLane(value, 3);
47 return "Float32x4(" + w + ", " + x + ", " + y + ", " + z + ")";
48 }
49
50 function Float32x4ValueOf() {
51 if (!(IS_FLOAT32X4(this) || IS_FLOAT32X4_WRAPPER(this))) {
52 throw MakeTypeError(kIncompatibleMethodReceiver,
53 "Float32x4.prototype.valueOf", this);
54 }
55 return %_ValueOf(this);
56 }
57
58 //-------------------------------------------------------------------
59
60 function Float32x4ExtractLaneJS(value, lane) {
61 return %Float32x4ExtractLane(value, lane);
62 }
63
64 function Float32x4ReplaceLaneJS(value, lane, replacement) {
65 return %Float32x4ReplaceLane(value, lane, replacement);
66 }
67
68 //-------------------------------------------------------------------
69
70 function Float32x4AbsJS(a) {
71 return %Float32x4Abs(a);
72 }
73
74 function Float32x4NegJS(a) {
75 return %Float32x4Neg(a);
76 }
77
78 function Float32x4SqrtJS(a) {
79 return %Float32x4Sqrt(a);
80 }
81
82 function Float32x4RecipApproxJS(a) {
83 return %Float32x4RecipApprox(a);
84 }
85
86 function Float32x4RecipSqrtApproxJS(a) {
87 return %Float32x4RecipSqrtApprox(a);
88 }
89
90 function Float32x4AddJS(a, b) {
91 return %Float32x4Add(a, b);
92 }
93
94 function Float32x4SubJS(a, b) {
95 return %Float32x4Sub(a, b);
96 }
97
98 function Float32x4MulJS(a, b) {
99 return %Float32x4Mul(a, b);
100 }
101
102 function Float32x4DivJS(a, b) {
103 return %Float32x4Div(a, b);
104 }
105
106 function Float32x4MinJS(a, b) {
107 return %Float32x4Min(a, b);
108 }
109
110 function Float32x4MaxJS(a, b) {
111 return %Float32x4Max(a, b);
112 }
113
114 function Float32x4MinNumJS(a, b) {
115 return %Float32x4MinNum(a, b);
116 }
117
118 function Float32x4MaxNumJS(a, b) {
119 return %Float32x4MaxNum(a, b);
120 }
121
122 function Float32x4SwizzleJS(a, w, x, y, z) {
123 return %Float32x4Swizzle(a, w, x, y, z);
124 }
125
126 function Float32x4ShuffleJS(a, b, w, x, y, z) {
127 return %Float32x4Shuffle(a, b, w, x, y, z);
128 }
129
130 // -------------------------------------------------------------------
131
132 %AddNamedProperty(GlobalSIMD, symbolToStringTag, 'SIMD', READ_ONLY | DONT_ENUM);
133 %AddNamedProperty(GlobalSIMD, 'float32x4', GlobalFloat32x4, DONT_ENUM);
134
135 %SetCode(GlobalFloat32x4, Float32x4Constructor);
136 %FunctionSetPrototype(GlobalFloat32x4, {});
137 %AddNamedProperty(
138 GlobalFloat32x4.prototype, 'constructor', GlobalFloat32x4, DONT_ENUM);
139 %AddNamedProperty(
140 GlobalFloat32x4, symbolToStringTag, 'Float32x4', DONT_ENUM | READ_ONLY);
141
142 utils.InstallFunctions(GlobalFloat32x4.prototype, DONT_ENUM, [
143 'valueOf', Float32x4ValueOf,
144 'toString', Float32x4ToString,
145 ]);
146
147 utils.InstallFunctions(GlobalFloat32x4, DONT_ENUM, [
148 'splat', Float32x4SplatConstructor,
149 'check', Float32x4CheckJS,
150 'extractLane', Float32x4ExtractLaneJS,
151 'replaceLane', Float32x4ReplaceLaneJS,
152 'abs', Float32x4AbsJS,
153 'neg', Float32x4NegJS,
154 'sqrt', Float32x4SqrtJS,
155 'reciprocalApproximation', Float32x4RecipApproxJS,
156 'reciprocalSqrtApproximation', Float32x4RecipSqrtApproxJS,
157 'add', Float32x4AddJS,
158 'sub', Float32x4SubJS,
159 'mul', Float32x4MulJS,
160 'div', Float32x4DivJS,
161 'min', Float32x4MinJS,
162 'max', Float32x4MaxJS,
163 'minNum', Float32x4MinNumJS,
164 'maxNum', Float32x4MaxNumJS,
165 'swizzle', Float32x4SwizzleJS,
166 'shuffle', Float32x4ShuffleJS,
167 ]);
168
169 $float32x4ToString = Float32x4ToString;
170
171 })
OLDNEW
« no previous file with comments | « src/globals.h ('k') | src/heap-snapshot-generator.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698