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

Side by Side Diff: src/full-codegen/s390/full-codegen-s390.cc

Issue 2761953002: s390: improve floating point and integer convertion (Closed)
Patch Set: Created 3 years, 9 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/s390/lithium-codegen-s390.cc ('k') | src/s390/assembler-s390.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 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 #if V8_TARGET_ARCH_S390 5 #if V8_TARGET_ARCH_S390
6 6
7 #include "src/ast/compile-time-value.h" 7 #include "src/ast/compile-time-value.h"
8 #include "src/ast/scopes.h" 8 #include "src/ast/scopes.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 1579 matching lines...) Expand 10 before | Expand all | Expand 10 after
1590 __ lr(ip, scratch2); // 32 bit load 1590 __ lr(ip, scratch2); // 32 bit load
1591 __ sra(ip, Operand(31)); 1591 __ sra(ip, Operand(31));
1592 __ cr_z(ip, scratch1); // 32 bit compare 1592 __ cr_z(ip, scratch1); // 32 bit compare
1593 __ bne(&stub_call); 1593 __ bne(&stub_call);
1594 #else 1594 #else
1595 __ SmiUntag(ip, right); 1595 __ SmiUntag(ip, right);
1596 __ LoadRR(scratch2, left); // load into low order of reg pair 1596 __ LoadRR(scratch2, left); // load into low order of reg pair
1597 __ mr_z(scratch1, ip); // R4:R5 = R5 * ip 1597 __ mr_z(scratch1, ip); // R4:R5 = R5 * ip
1598 // Check for overflowing the smi range - no overflow if higher 33 bits 1598 // Check for overflowing the smi range - no overflow if higher 33 bits
1599 // of the result are identical. 1599 // of the result are identical.
1600 __ TestIfInt32(scratch1, scratch2, ip); 1600 __ lr(ip, scratch2); // 32 bit load
1601 __ sra(ip, Operand(31));
1602 __ cr_z(ip, scratch1); // 32 bit compare
1601 __ bne(&stub_call); 1603 __ bne(&stub_call);
1602 #endif 1604 #endif
1603 // Go slow on zero result to handle -0. 1605 // Go slow on zero result to handle -0.
1604 __ chi(scratch2, Operand::Zero()); 1606 __ chi(scratch2, Operand::Zero());
1605 __ beq(&mul_zero, Label::kNear); 1607 __ beq(&mul_zero, Label::kNear);
1606 #if V8_TARGET_ARCH_S390X 1608 #if V8_TARGET_ARCH_S390X
1607 __ SmiTag(right, scratch2); 1609 __ SmiTag(right, scratch2);
1608 #else 1610 #else
1609 __ LoadRR(right, scratch2); 1611 __ LoadRR(right, scratch2);
1610 #endif 1612 #endif
(...skipping 1113 matching lines...) Expand 10 before | Expand all | Expand 10 after
2724 USE(kOSRBranchInstruction); 2726 USE(kOSRBranchInstruction);
2725 DCHECK(kOSRBranchInstruction == br_instr); 2727 DCHECK(kOSRBranchInstruction == br_instr);
2726 2728
2727 DCHECK(interrupt_address == 2729 DCHECK(interrupt_address ==
2728 isolate->builtins()->OnStackReplacement()->entry()); 2730 isolate->builtins()->OnStackReplacement()->entry());
2729 return ON_STACK_REPLACEMENT; 2731 return ON_STACK_REPLACEMENT;
2730 } 2732 }
2731 } // namespace internal 2733 } // namespace internal
2732 } // namespace v8 2734 } // namespace v8
2733 #endif // V8_TARGET_ARCH_S390 2735 #endif // V8_TARGET_ARCH_S390
OLDNEW
« no previous file with comments | « src/crankshaft/s390/lithium-codegen-s390.cc ('k') | src/s390/assembler-s390.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698