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

Side by Side Diff: src/crankshaft/s390/lithium-codegen-s390.cc

Issue 2684313003: Remove SIMD.js from V8. (Closed)
Patch Set: Rebase. Created 3 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/crankshaft/ppc/lithium-codegen-ppc.cc ('k') | src/crankshaft/x64/lithium-codegen-x64.cc » ('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 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // 2 //
3 // Use of this source code is governed by a BSD-style license that can be 3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file. 4 // found in the LICENSE file.
5 5
6 #include "src/crankshaft/s390/lithium-codegen-s390.h" 6 #include "src/crankshaft/s390/lithium-codegen-s390.h"
7 7
8 #include "src/base/bits.h" 8 #include "src/base/bits.h"
9 #include "src/builtins/builtins-constructor.h" 9 #include "src/builtins/builtins-constructor.h"
10 #include "src/code-factory.h" 10 #include "src/code-factory.h"
(...skipping 2175 matching lines...) Expand 10 before | Expand all | Expand 10 after
2186 __ b(instr->FalseLabel(chunk_)); 2186 __ b(instr->FalseLabel(chunk_));
2187 __ bind(&not_string); 2187 __ bind(&not_string);
2188 } 2188 }
2189 2189
2190 if (expected & ToBooleanHint::kSymbol) { 2190 if (expected & ToBooleanHint::kSymbol) {
2191 // Symbol value -> true. 2191 // Symbol value -> true.
2192 __ CompareInstanceType(map, ip, SYMBOL_TYPE); 2192 __ CompareInstanceType(map, ip, SYMBOL_TYPE);
2193 __ beq(instr->TrueLabel(chunk_)); 2193 __ beq(instr->TrueLabel(chunk_));
2194 } 2194 }
2195 2195
2196 if (expected & ToBooleanHint::kSimdValue) {
2197 // SIMD value -> true.
2198 Label not_simd;
2199 __ CompareInstanceType(map, ip, SIMD128_VALUE_TYPE);
2200 __ beq(instr->TrueLabel(chunk_));
2201 }
2202
2203 if (expected & ToBooleanHint::kHeapNumber) { 2196 if (expected & ToBooleanHint::kHeapNumber) {
2204 // heap number -> false iff +0, -0, or NaN. 2197 // heap number -> false iff +0, -0, or NaN.
2205 Label not_heap_number; 2198 Label not_heap_number;
2206 __ CompareRoot(map, Heap::kHeapNumberMapRootIndex); 2199 __ CompareRoot(map, Heap::kHeapNumberMapRootIndex);
2207 __ bne(&not_heap_number, Label::kNear); 2200 __ bne(&not_heap_number, Label::kNear);
2208 __ LoadDouble(dbl_scratch, 2201 __ LoadDouble(dbl_scratch,
2209 FieldMemOperand(reg, HeapNumber::kValueOffset)); 2202 FieldMemOperand(reg, HeapNumber::kValueOffset));
2210 __ lzdr(kDoubleRegZero); 2203 __ lzdr(kDoubleRegZero);
2211 __ cdbr(dbl_scratch, kDoubleRegZero); 2204 __ cdbr(dbl_scratch, kDoubleRegZero);
2212 __ bunordered(instr->FalseLabel(chunk_)); // NaN -> false. 2205 __ bunordered(instr->FalseLabel(chunk_)); // NaN -> false.
(...skipping 3139 matching lines...) Expand 10 before | Expand all | Expand 10 after
5352 STATIC_ASSERT(LAST_JS_RECEIVER_TYPE == LAST_TYPE); 5345 STATIC_ASSERT(LAST_JS_RECEIVER_TYPE == LAST_TYPE);
5353 __ CompareObjectType(input, scratch, ip, FIRST_JS_RECEIVER_TYPE); 5346 __ CompareObjectType(input, scratch, ip, FIRST_JS_RECEIVER_TYPE);
5354 __ blt(false_label); 5347 __ blt(false_label);
5355 // Check for callable or undetectable objects => false. 5348 // Check for callable or undetectable objects => false.
5356 __ LoadlB(scratch, FieldMemOperand(scratch, Map::kBitFieldOffset)); 5349 __ LoadlB(scratch, FieldMemOperand(scratch, Map::kBitFieldOffset));
5357 __ AndP(r0, scratch, 5350 __ AndP(r0, scratch,
5358 Operand((1 << Map::kIsCallable) | (1 << Map::kIsUndetectable))); 5351 Operand((1 << Map::kIsCallable) | (1 << Map::kIsUndetectable)));
5359 __ CmpP(r0, Operand::Zero()); 5352 __ CmpP(r0, Operand::Zero());
5360 final_branch_condition = eq; 5353 final_branch_condition = eq;
5361 5354
5362 // clang-format off
5363 #define SIMD128_TYPE(TYPE, Type, type, lane_count, lane_type) \
5364 } else if (String::Equals(type_name, factory->type##_string())) { \
5365 __ JumpIfSmi(input, false_label); \
5366 __ LoadP(scratch, FieldMemOperand(input, HeapObject::kMapOffset)); \
5367 __ CompareRoot(scratch, Heap::k##Type##MapRootIndex); \
5368 final_branch_condition = eq;
5369 SIMD128_TYPES(SIMD128_TYPE)
5370 #undef SIMD128_TYPE
5371 // clang-format on
5372
5373 } else { 5355 } else {
5374 __ b(false_label); 5356 __ b(false_label);
5375 } 5357 }
5376 5358
5377 return final_branch_condition; 5359 return final_branch_condition;
5378 } 5360 }
5379 5361
5380 void LCodeGen::EnsureSpaceForLazyDeopt(int space_needed) { 5362 void LCodeGen::EnsureSpaceForLazyDeopt(int space_needed) {
5381 if (info()->ShouldEnsureSpaceForLazyDeopt()) { 5363 if (info()->ShouldEnsureSpaceForLazyDeopt()) {
5382 // Ensure that we have enough space after the previous lazy-bailout 5364 // Ensure that we have enough space after the previous lazy-bailout
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
5599 __ LoadP(result, 5581 __ LoadP(result,
5600 FieldMemOperand(scratch, FixedArray::kHeaderSize - kPointerSize)); 5582 FieldMemOperand(scratch, FixedArray::kHeaderSize - kPointerSize));
5601 __ bind(deferred->exit()); 5583 __ bind(deferred->exit());
5602 __ bind(&done); 5584 __ bind(&done);
5603 } 5585 }
5604 5586
5605 #undef __ 5587 #undef __
5606 5588
5607 } // namespace internal 5589 } // namespace internal
5608 } // namespace v8 5590 } // namespace v8
OLDNEW
« no previous file with comments | « src/crankshaft/ppc/lithium-codegen-ppc.cc ('k') | src/crankshaft/x64/lithium-codegen-x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698