OLD | NEW |
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/v8.h" | 5 #include "src/v8.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/runtime/runtime-utils.h" | 10 #include "src/runtime/runtime-utils.h" |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
148 | 148 |
149 | 149 |
150 RUNTIME_FUNCTION(Runtime_SimdEquals) { | 150 RUNTIME_FUNCTION(Runtime_SimdEquals) { |
151 HandleScope scope(isolate); | 151 HandleScope scope(isolate); |
152 DCHECK(args.length() == 2); | 152 DCHECK(args.length() == 2); |
153 CONVERT_ARG_HANDLE_CHECKED(Simd128Value, a, 0); | 153 CONVERT_ARG_HANDLE_CHECKED(Simd128Value, a, 0); |
154 bool result = false; | 154 bool result = false; |
155 // args[1] is of unknown type. | 155 // args[1] is of unknown type. |
156 if (args[1]->IsSimd128Value()) { | 156 if (args[1]->IsSimd128Value()) { |
157 Simd128Value* b = Simd128Value::cast(args[1]); | 157 Simd128Value* b = Simd128Value::cast(args[1]); |
158 if (a->map()->instance_type() == b->map()->instance_type()) { | 158 if (a->map() == b->map()) { |
159 if (a->IsFloat32x4()) { | 159 if (a->IsFloat32x4()) { |
160 result = Equals(Float32x4::cast(*a), Float32x4::cast(b)); | 160 result = Equals(Float32x4::cast(*a), Float32x4::cast(b)); |
161 } else { | 161 } else { |
162 result = a->BitwiseEquals(b); | 162 result = a->BitwiseEquals(b); |
163 } | 163 } |
164 } | 164 } |
165 } | 165 } |
166 return Smi::FromInt(result ? EQUAL : NOT_EQUAL); | 166 return Smi::FromInt(result ? EQUAL : NOT_EQUAL); |
167 } | 167 } |
168 | 168 |
169 | 169 |
170 RUNTIME_FUNCTION(Runtime_SimdSameValue) { | 170 RUNTIME_FUNCTION(Runtime_SimdSameValue) { |
171 HandleScope scope(isolate); | 171 HandleScope scope(isolate); |
172 DCHECK(args.length() == 2); | 172 DCHECK(args.length() == 2); |
173 CONVERT_ARG_HANDLE_CHECKED(Simd128Value, a, 0); | 173 CONVERT_ARG_HANDLE_CHECKED(Simd128Value, a, 0); |
174 bool result = false; | 174 bool result = false; |
175 // args[1] is of unknown type. | 175 // args[1] is of unknown type. |
176 if (args[1]->IsSimd128Value()) { | 176 if (args[1]->IsSimd128Value()) { |
177 Simd128Value* b = Simd128Value::cast(args[1]); | 177 Simd128Value* b = Simd128Value::cast(args[1]); |
178 if (a->map()->instance_type() == b->map()->instance_type()) { | 178 if (a->map() == b->map()) { |
179 if (a->IsFloat32x4()) { | 179 if (a->IsFloat32x4()) { |
180 result = Float32x4::cast(*a)->SameValue(Float32x4::cast(b)); | 180 result = Float32x4::cast(*a)->SameValue(Float32x4::cast(b)); |
181 } else { | 181 } else { |
182 result = a->BitwiseEquals(b); | 182 result = a->BitwiseEquals(b); |
183 } | 183 } |
184 } | 184 } |
185 } | 185 } |
186 return isolate->heap()->ToBoolean(result); | 186 return isolate->heap()->ToBoolean(result); |
187 } | 187 } |
188 | 188 |
189 | 189 |
190 RUNTIME_FUNCTION(Runtime_SimdSameValueZero) { | 190 RUNTIME_FUNCTION(Runtime_SimdSameValueZero) { |
191 HandleScope scope(isolate); | 191 HandleScope scope(isolate); |
192 DCHECK(args.length() == 2); | 192 DCHECK(args.length() == 2); |
193 CONVERT_ARG_HANDLE_CHECKED(Simd128Value, a, 0); | 193 CONVERT_ARG_HANDLE_CHECKED(Simd128Value, a, 0); |
194 bool result = false; | 194 bool result = false; |
195 // args[1] is of unknown type. | 195 // args[1] is of unknown type. |
196 if (args[1]->IsSimd128Value()) { | 196 if (args[1]->IsSimd128Value()) { |
197 Simd128Value* b = Simd128Value::cast(args[1]); | 197 Simd128Value* b = Simd128Value::cast(args[1]); |
198 if (a->map()->instance_type() == b->map()->instance_type()) { | 198 if (a->map() == b->map()) { |
199 if (a->IsFloat32x4()) { | 199 if (a->IsFloat32x4()) { |
200 result = Float32x4::cast(*a)->SameValueZero(Float32x4::cast(b)); | 200 result = Float32x4::cast(*a)->SameValueZero(Float32x4::cast(b)); |
201 } else { | 201 } else { |
202 result = a->BitwiseEquals(b); | 202 result = a->BitwiseEquals(b); |
203 } | 203 } |
204 } | 204 } |
205 } | 205 } |
206 return isolate->heap()->ToBoolean(result); | 206 return isolate->heap()->ToBoolean(result); |
207 } | 207 } |
208 | 208 |
(...skipping 621 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
830 | 830 |
831 RUNTIME_FUNCTION(Runtime_Int8x16UnsignedExtractLane) { | 831 RUNTIME_FUNCTION(Runtime_Int8x16UnsignedExtractLane) { |
832 HandleScope scope(isolate); | 832 HandleScope scope(isolate); |
833 DCHECK(args.length() == 2); | 833 DCHECK(args.length() == 2); |
834 CONVERT_ARG_HANDLE_CHECKED(Int8x16, a, 0); | 834 CONVERT_ARG_HANDLE_CHECKED(Int8x16, a, 0); |
835 CONVERT_SIMD_LANE_ARG_CHECKED(lane, 1, 16); | 835 CONVERT_SIMD_LANE_ARG_CHECKED(lane, 1, 16); |
836 return *isolate->factory()->NewNumber(bit_cast<uint8_t>(a->get_lane(lane))); | 836 return *isolate->factory()->NewNumber(bit_cast<uint8_t>(a->get_lane(lane))); |
837 } | 837 } |
838 } // namespace internal | 838 } // namespace internal |
839 } // namespace v8 | 839 } // namespace v8 |
OLD | NEW |