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

Side by Side Diff: src/runtime/runtime-simd.cc

Issue 1695743003: [builtins] Support SameValue and SameValueZero via runtime functions. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Address bug in SameValue and SameValueZero for SIMD types. Created 4 years, 10 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/runtime/runtime-object.cc ('k') | test/mjsunit/harmony/simd.js » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 the V8 project authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/runtime/runtime-utils.h" 5 #include "src/runtime/runtime-utils.h"
6 6
7 #include "src/arguments.h" 7 #include "src/arguments.h"
8 #include "src/base/macros.h" 8 #include "src/base/macros.h"
9 #include "src/conversions.h" 9 #include "src/conversions.h"
10 #include "src/factory.h" 10 #include "src/factory.h"
(...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after
157 157
158 // SIMD helper functions. 158 // SIMD helper functions.
159 159
160 RUNTIME_FUNCTION(Runtime_IsSimdValue) { 160 RUNTIME_FUNCTION(Runtime_IsSimdValue) {
161 HandleScope scope(isolate); 161 HandleScope scope(isolate);
162 DCHECK(args.length() == 1); 162 DCHECK(args.length() == 1);
163 return isolate->heap()->ToBoolean(args[0]->IsSimd128Value()); 163 return isolate->heap()->ToBoolean(args[0]->IsSimd128Value());
164 } 164 }
165 165
166 166
167 RUNTIME_FUNCTION(Runtime_SimdSameValue) {
168 HandleScope scope(isolate);
169 DCHECK(args.length() == 2);
170 CONVERT_ARG_HANDLE_CHECKED(Simd128Value, a, 0);
171 bool result = false;
172 // args[1] is of unknown type.
173 if (args[1]->IsSimd128Value()) {
174 Simd128Value* b = Simd128Value::cast(args[1]);
175 if (a->map() == b->map()) {
176 if (a->IsFloat32x4()) {
177 result = Float32x4::cast(*a)->SameValue(Float32x4::cast(b));
178 } else {
179 result = a->BitwiseEquals(b);
180 }
181 }
182 }
183 return isolate->heap()->ToBoolean(result);
184 }
185
186
187 RUNTIME_FUNCTION(Runtime_SimdSameValueZero) {
188 HandleScope scope(isolate);
189 DCHECK(args.length() == 2);
190 CONVERT_ARG_HANDLE_CHECKED(Simd128Value, a, 0);
191 bool result = false;
192 // args[1] is of unknown type.
193 if (args[1]->IsSimd128Value()) {
194 Simd128Value* b = Simd128Value::cast(args[1]);
195 if (a->map() == b->map()) {
196 if (a->IsFloat32x4()) {
197 result = Float32x4::cast(*a)->SameValueZero(Float32x4::cast(b));
198 } else {
199 result = a->BitwiseEquals(b);
200 }
201 }
202 }
203 return isolate->heap()->ToBoolean(result);
204 }
205
206
207 //------------------------------------------------------------------- 167 //-------------------------------------------------------------------
208 168
209 // Utility macros. 169 // Utility macros.
210 170
211 #define CONVERT_SIMD_LANE_ARG_CHECKED(name, index, lanes) \ 171 #define CONVERT_SIMD_LANE_ARG_CHECKED(name, index, lanes) \
212 CONVERT_INT32_ARG_CHECKED(name, index); \ 172 CONVERT_INT32_ARG_CHECKED(name, index); \
213 RUNTIME_ASSERT(name >= 0 && name < lanes); 173 RUNTIME_ASSERT(name >= 0 && name < lanes);
214 174
215 #define CONVERT_SIMD_ARG_HANDLE_THROW(Type, name, index) \ 175 #define CONVERT_SIMD_ARG_HANDLE_THROW(Type, name, index) \
216 Handle<Type> name; \ 176 Handle<Type> name; \
(...skipping 798 matching lines...) Expand 10 before | Expand all | Expand 10 after
1015 SIMD_LOADN_STOREN_TYPES(SIMD_LOAD3_FUNCTION) 975 SIMD_LOADN_STOREN_TYPES(SIMD_LOAD3_FUNCTION)
1016 SIMD_NUMERIC_TYPES(SIMD_STORE_FUNCTION) 976 SIMD_NUMERIC_TYPES(SIMD_STORE_FUNCTION)
1017 SIMD_LOADN_STOREN_TYPES(SIMD_STORE1_FUNCTION) 977 SIMD_LOADN_STOREN_TYPES(SIMD_STORE1_FUNCTION)
1018 SIMD_LOADN_STOREN_TYPES(SIMD_STORE2_FUNCTION) 978 SIMD_LOADN_STOREN_TYPES(SIMD_STORE2_FUNCTION)
1019 SIMD_LOADN_STOREN_TYPES(SIMD_STORE3_FUNCTION) 979 SIMD_LOADN_STOREN_TYPES(SIMD_STORE3_FUNCTION)
1020 980
1021 //------------------------------------------------------------------- 981 //-------------------------------------------------------------------
1022 982
1023 } // namespace internal 983 } // namespace internal
1024 } // namespace v8 984 } // namespace v8
OLDNEW
« no previous file with comments | « src/runtime/runtime-object.cc ('k') | test/mjsunit/harmony/simd.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698