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

Side by Side Diff: src/s390/simulator-s390.cc

Issue 2591643005: S390 [Crankshaft]: Use LoadPositive for MathAbs (Closed)
Patch Set: Fix for John's comment Created 3 years, 12 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
OLDNEW
1 // Copyright 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 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 <stdarg.h> 5 #include <stdarg.h>
6 #include <stdlib.h> 6 #include <stdlib.h>
7 #include <cmath> 7 #include <cmath>
8 8
9 #if V8_TARGET_ARCH_S390 9 #if V8_TARGET_ARCH_S390
10 10
(...skipping 6548 matching lines...) Expand 10 before | Expand all | Expand 10 after
6559 return 0; 6559 return 0;
6560 } 6560 }
6561 6561
6562 EVALUATE(CLCL) { 6562 EVALUATE(CLCL) {
6563 UNIMPLEMENTED(); 6563 UNIMPLEMENTED();
6564 USE(instr); 6564 USE(instr);
6565 return 0; 6565 return 0;
6566 } 6566 }
6567 6567
6568 EVALUATE(LPR) { 6568 EVALUATE(LPR) {
6569 UNIMPLEMENTED(); 6569 DCHECK_OPCODE(LPR);
6570 USE(instr); 6570 // Load Positive (32)
6571 return 0; 6571 DECODE_RR_INSTRUCTION(r1, r2);
6572 int32_t r2_val = get_low_register<int32_t>(r2);
6573 // If negative, then negate it.
6574 r2_val = (r2_val < 0) ? -r2_val : r2_val;
6575 set_low_register(r1, r2_val);
6576 SetS390ConditionCode<int32_t>(r2_val, 0);
6577 if (r2_val == (static_cast<int32_t>(1) << 31)) {
6578 SetS390OverflowCode(true);
6579 }
6580 return length;
6572 } 6581 }
6573 6582
6574 EVALUATE(LNR) { 6583 EVALUATE(LNR) {
6575 DCHECK_OPCODE(LNR); 6584 DCHECK_OPCODE(LNR);
6576 // Load Negative (32) 6585 // Load Negative (32)
6577 DECODE_RR_INSTRUCTION(r1, r2); 6586 DECODE_RR_INSTRUCTION(r1, r2);
6578 int32_t r2_val = get_low_register<int32_t>(r2); 6587 int32_t r2_val = get_low_register<int32_t>(r2);
6579 r2_val = (r2_val >= 0) ? -r2_val : r2_val; // If pos, then negate it. 6588 r2_val = (r2_val >= 0) ? -r2_val : r2_val; // If pos, then negate it.
6580 set_low_register(r1, r2_val); 6589 set_low_register(r1, r2_val);
6581 condition_reg_ = (r2_val == 0) ? CC_EQ : CC_LT; // CC0 - result is zero 6590 condition_reg_ = (r2_val == 0) ? CC_EQ : CC_LT; // CC0 - result is zero
(...skipping 3303 matching lines...) Expand 10 before | Expand all | Expand 10 after
9885 return 0; 9894 return 0;
9886 } 9895 }
9887 9896
9888 EVALUATE(RRXTR) { 9897 EVALUATE(RRXTR) {
9889 UNIMPLEMENTED(); 9898 UNIMPLEMENTED();
9890 USE(instr); 9899 USE(instr);
9891 return 0; 9900 return 0;
9892 } 9901 }
9893 9902
9894 EVALUATE(LPGR) { 9903 EVALUATE(LPGR) {
9895 UNIMPLEMENTED(); 9904 DCHECK_OPCODE(LPGR);
9896 USE(instr); 9905 // Load Positive (32)
9897 return 0; 9906 DECODE_RRE_INSTRUCTION(r1, r2);
9907 int64_t r2_val = get_register(r2);
9908 r2_val = (r2_val < 0) ? -r2_val : r2_val; // If negative, then negate it.
9909 set_register(r1, r2_val);
9910 SetS390ConditionCode<int64_t>(r2_val, 0);
9911 if (r2_val == (static_cast<int64_t>(1) << 63)) {
9912 SetS390OverflowCode(true);
9913 }
9914 return length;
9898 } 9915 }
9899 9916
9900 EVALUATE(LNGR) { 9917 EVALUATE(LNGR) {
9901 DCHECK_OPCODE(LNGR); 9918 DCHECK_OPCODE(LNGR);
9902 // Load Negative (64) 9919 // Load Negative (64)
9903 DECODE_RRE_INSTRUCTION(r1, r2); 9920 DECODE_RRE_INSTRUCTION(r1, r2);
9904 int64_t r2_val = get_register(r2); 9921 int64_t r2_val = get_register(r2);
9905 r2_val = (r2_val >= 0) ? -r2_val : r2_val; // If pos, then negate it. 9922 r2_val = (r2_val >= 0) ? -r2_val : r2_val; // If pos, then negate it.
9906 set_register(r1, r2_val); 9923 set_register(r1, r2_val);
9907 condition_reg_ = (r2_val == 0) ? CC_EQ : CC_LT; // CC0 - result is zero 9924 condition_reg_ = (r2_val == 0) ? CC_EQ : CC_LT; // CC0 - result is zero
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
9986 DCHECK_OPCODE(LRVGR); 10003 DCHECK_OPCODE(LRVGR);
9987 DECODE_RRE_INSTRUCTION(r1, r2); 10004 DECODE_RRE_INSTRUCTION(r1, r2);
9988 int64_t r2_val = get_register(r2); 10005 int64_t r2_val = get_register(r2);
9989 int64_t r1_val = ByteReverse(r2_val); 10006 int64_t r1_val = ByteReverse(r2_val);
9990 10007
9991 set_register(r1, r1_val); 10008 set_register(r1, r1_val);
9992 return length; 10009 return length;
9993 } 10010 }
9994 10011
9995 EVALUATE(LPGFR) { 10012 EVALUATE(LPGFR) {
9996 UNIMPLEMENTED(); 10013 DCHECK_OPCODE(LPGFR);
9997 USE(instr); 10014 // Load Positive (32)
9998 return 0; 10015 DECODE_RRE_INSTRUCTION(r1, r2);
10016 int32_t r2_val = get_low_register<int32_t>(r2);
10017 // If negative, then negate it.
10018 int64_t r1_val = static_cast<int64_t>((r2_val < 0) ? -r2_val : r2_val);
10019 set_register(r1, r1_val);
10020 SetS390ConditionCode<int64_t>(r1_val, 0);
10021 return length;
9999 } 10022 }
10000 10023
10001 EVALUATE(LNGFR) { 10024 EVALUATE(LNGFR) {
10002 UNIMPLEMENTED(); 10025 UNIMPLEMENTED();
10003 USE(instr); 10026 USE(instr);
10004 return 0; 10027 return 0;
10005 } 10028 }
10006 10029
10007 EVALUATE(LTGFR) { 10030 EVALUATE(LTGFR) {
10008 DCHECK_OPCODE(LTGFR); 10031 DCHECK_OPCODE(LTGFR);
(...skipping 2720 matching lines...) Expand 10 before | Expand all | Expand 10 after
12729 return 0; 12752 return 0;
12730 } 12753 }
12731 12754
12732 #undef EVALUATE 12755 #undef EVALUATE
12733 12756
12734 } // namespace internal 12757 } // namespace internal
12735 } // namespace v8 12758 } // namespace v8
12736 12759
12737 #endif // USE_SIMULATOR 12760 #endif // USE_SIMULATOR
12738 #endif // V8_TARGET_ARCH_S390 12761 #endif // V8_TARGET_ARCH_S390
OLDNEW
« src/crankshaft/s390/lithium-codegen-s390.cc ('K') | « src/s390/macro-assembler-s390.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698