| OLD | NEW |
| 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 10099 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10110 return 0; | 10110 return 0; |
| 10111 } | 10111 } |
| 10112 | 10112 |
| 10113 EVALUATE(SLGFR) { | 10113 EVALUATE(SLGFR) { |
| 10114 UNIMPLEMENTED(); | 10114 UNIMPLEMENTED(); |
| 10115 USE(instr); | 10115 USE(instr); |
| 10116 return 0; | 10116 return 0; |
| 10117 } | 10117 } |
| 10118 | 10118 |
| 10119 EVALUATE(MSGFR) { | 10119 EVALUATE(MSGFR) { |
| 10120 UNIMPLEMENTED(); | 10120 DCHECK_OPCODE(MSGFR); |
| 10121 USE(instr); | 10121 DECODE_RRE_INSTRUCTION(r1, r2); |
| 10122 return 0; | 10122 int64_t r1_val = get_register(r1); |
| 10123 int64_t r2_val = static_cast<int64_t>(get_low_register<int32_t>(r2)); |
| 10124 int64_t product = r1_val * r2_val; |
| 10125 set_register(r1, product); |
| 10126 return length; |
| 10123 } | 10127 } |
| 10124 | 10128 |
| 10125 EVALUATE(DSGFR) { | 10129 EVALUATE(DSGFR) { |
| 10126 UNIMPLEMENTED(); | 10130 DCHECK_OPCODE(DSGFR); |
| 10127 USE(instr); | 10131 DECODE_RRE_INSTRUCTION(r1, r2); |
| 10128 return 0; | 10132 DCHECK(r1 % 2 == 0); |
| 10133 int64_t r1_val = get_register(r1 + 1); |
| 10134 int64_t r2_val = static_cast<int64_t>(get_low_register<int32_t>(r2)); |
| 10135 int64_t quotient = r1_val / r2_val; |
| 10136 int64_t remainder = r1_val % r2_val; |
| 10137 set_register(r1, remainder); |
| 10138 set_register(r1 + 1, quotient); |
| 10139 return length; |
| 10129 } | 10140 } |
| 10130 | 10141 |
| 10131 EVALUATE(KMAC) { | 10142 EVALUATE(KMAC) { |
| 10132 UNIMPLEMENTED(); | 10143 UNIMPLEMENTED(); |
| 10133 USE(instr); | 10144 USE(instr); |
| 10134 return 0; | 10145 return 0; |
| 10135 } | 10146 } |
| 10136 | 10147 |
| 10137 EVALUATE(LRVR) { | 10148 EVALUATE(LRVR) { |
| 10138 DCHECK_OPCODE(LRVR); | 10149 DCHECK_OPCODE(LRVR); |
| (...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 10194 return 0; | 10205 return 0; |
| 10195 } | 10206 } |
| 10196 | 10207 |
| 10197 EVALUATE(KMC) { | 10208 EVALUATE(KMC) { |
| 10198 UNIMPLEMENTED(); | 10209 UNIMPLEMENTED(); |
| 10199 USE(instr); | 10210 USE(instr); |
| 10200 return 0; | 10211 return 0; |
| 10201 } | 10212 } |
| 10202 | 10213 |
| 10203 EVALUATE(CGFR) { | 10214 EVALUATE(CGFR) { |
| 10204 UNIMPLEMENTED(); | 10215 DCHECK_OPCODE(CGFR); |
| 10205 USE(instr); | 10216 DECODE_RRE_INSTRUCTION(r1, r2); |
| 10206 return 0; | 10217 // Compare (64) |
| 10218 int64_t r1_val = get_register(r1); |
| 10219 int64_t r2_val = static_cast<int64_t>(get_low_register<int32_t>(r2)); |
| 10220 SetS390ConditionCode<int64_t>(r1_val, r2_val); |
| 10221 return length; |
| 10207 } | 10222 } |
| 10208 | 10223 |
| 10209 EVALUATE(KIMD) { | 10224 EVALUATE(KIMD) { |
| 10210 UNIMPLEMENTED(); | 10225 UNIMPLEMENTED(); |
| 10211 USE(instr); | 10226 USE(instr); |
| 10212 return 0; | 10227 return 0; |
| 10213 } | 10228 } |
| 10214 | 10229 |
| 10215 EVALUATE(KLMD) { | 10230 EVALUATE(KLMD) { |
| 10216 UNIMPLEMENTED(); | 10231 UNIMPLEMENTED(); |
| (...skipping 807 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11024 return 0; | 11039 return 0; |
| 11025 } | 11040 } |
| 11026 | 11041 |
| 11027 EVALUATE(SLGF) { | 11042 EVALUATE(SLGF) { |
| 11028 UNIMPLEMENTED(); | 11043 UNIMPLEMENTED(); |
| 11029 USE(instr); | 11044 USE(instr); |
| 11030 return 0; | 11045 return 0; |
| 11031 } | 11046 } |
| 11032 | 11047 |
| 11033 EVALUATE(MSGF) { | 11048 EVALUATE(MSGF) { |
| 11034 UNIMPLEMENTED(); | 11049 DCHECK_OPCODE(MSGF); |
| 11035 USE(instr); | 11050 DECODE_RXY_A_INSTRUCTION(r1, x2, b2, d2); |
| 11036 return 0; | 11051 int64_t b2_val = (b2 == 0) ? 0 : get_register(b2); |
| 11052 int64_t x2_val = (x2 == 0) ? 0 : get_register(x2); |
| 11053 intptr_t d2_val = d2; |
| 11054 int64_t mem_val = |
| 11055 static_cast<int64_t>(ReadW(b2_val + d2_val + x2_val, instr)); |
| 11056 int64_t r1_val = get_register(r1); |
| 11057 int64_t product = r1_val * mem_val; |
| 11058 set_register(r1, product); |
| 11059 return length; |
| 11037 } | 11060 } |
| 11038 | 11061 |
| 11039 EVALUATE(DSGF) { | 11062 EVALUATE(DSGF) { |
| 11040 UNIMPLEMENTED(); | 11063 DCHECK_OPCODE(DSGF); |
| 11041 USE(instr); | 11064 DECODE_RXY_A_INSTRUCTION(r1, x2, b2, d2); |
| 11042 return 0; | 11065 DCHECK(r1 % 2 == 0); |
| 11066 int64_t b2_val = (b2 == 0) ? 0 : get_register(b2); |
| 11067 int64_t x2_val = (x2 == 0) ? 0 : get_register(x2); |
| 11068 intptr_t d2_val = d2; |
| 11069 int64_t mem_val = |
| 11070 static_cast<int64_t>(ReadW(b2_val + d2_val + x2_val, instr)); |
| 11071 int64_t r1_val = get_register(r1 + 1); |
| 11072 int64_t quotient = r1_val / mem_val; |
| 11073 int64_t remainder = r1_val % mem_val; |
| 11074 set_register(r1, remainder); |
| 11075 set_register(r1 + 1, quotient); |
| 11076 return length; |
| 11043 } | 11077 } |
| 11044 | 11078 |
| 11045 EVALUATE(LRVG) { | 11079 EVALUATE(LRVG) { |
| 11046 DCHECK_OPCODE(LRVG); | 11080 DCHECK_OPCODE(LRVG); |
| 11047 DECODE_RXY_A_INSTRUCTION(r1, x2, b2, d2); | 11081 DECODE_RXY_A_INSTRUCTION(r1, x2, b2, d2); |
| 11048 int64_t x2_val = (x2 == 0) ? 0 : get_register(x2); | 11082 int64_t x2_val = (x2 == 0) ? 0 : get_register(x2); |
| 11049 int64_t b2_val = (b2 == 0) ? 0 : get_register(b2); | 11083 int64_t b2_val = (b2 == 0) ? 0 : get_register(b2); |
| 11050 intptr_t mem_addr = b2_val + x2_val + d2; | 11084 intptr_t mem_addr = b2_val + x2_val + d2; |
| 11051 int64_t mem_val = ReadW64(mem_addr, instr); | 11085 int64_t mem_val = ReadW64(mem_addr, instr); |
| 11052 set_register(r1, ByteReverse(mem_val)); | 11086 set_register(r1, ByteReverse(mem_val)); |
| (...skipping 538 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 11591 static_cast<uint64_t>(r1_val) * static_cast<uint64_t>(mem_val); | 11625 static_cast<uint64_t>(r1_val) * static_cast<uint64_t>(mem_val); |
| 11592 uint32_t high_bits = product >> 32; | 11626 uint32_t high_bits = product >> 32; |
| 11593 r1_val = high_bits; | 11627 r1_val = high_bits; |
| 11594 uint32_t low_bits = product & 0x00000000FFFFFFFF; | 11628 uint32_t low_bits = product & 0x00000000FFFFFFFF; |
| 11595 set_low_register(r1, high_bits); | 11629 set_low_register(r1, high_bits); |
| 11596 set_low_register(r1 + 1, low_bits); | 11630 set_low_register(r1 + 1, low_bits); |
| 11597 return length; | 11631 return length; |
| 11598 } | 11632 } |
| 11599 | 11633 |
| 11600 EVALUATE(DL) { | 11634 EVALUATE(DL) { |
| 11601 UNIMPLEMENTED(); | 11635 DCHECK_OPCODE(ML); |
| 11602 USE(instr); | 11636 DECODE_RXY_A_INSTRUCTION(r1, x2, b2, d2); |
| 11603 return 0; | 11637 int64_t x2_val = (x2 == 0) ? 0 : get_register(x2); |
| 11638 int64_t b2_val = (b2 == 0) ? 0 : get_register(b2); |
| 11639 DCHECK(r1 % 2 == 0); |
| 11640 uint32_t mem_val = ReadWU(b2_val + x2_val + d2, instr); |
| 11641 uint32_t r1_val = get_low_register<uint32_t>(r1 + 1); |
| 11642 uint64_t quotient = |
| 11643 static_cast<uint64_t>(r1_val) / static_cast<uint64_t>(mem_val); |
| 11644 uint64_t remainder = |
| 11645 static_cast<uint64_t>(r1_val) % static_cast<uint64_t>(mem_val); |
| 11646 set_low_register(r1, remainder); |
| 11647 set_low_register(r1 + 1, quotient); |
| 11648 return length; |
| 11604 } | 11649 } |
| 11605 | 11650 |
| 11606 EVALUATE(ALC) { | 11651 EVALUATE(ALC) { |
| 11607 UNIMPLEMENTED(); | 11652 UNIMPLEMENTED(); |
| 11608 USE(instr); | 11653 USE(instr); |
| 11609 return 0; | 11654 return 0; |
| 11610 } | 11655 } |
| 11611 | 11656 |
| 11612 EVALUATE(SLB) { | 11657 EVALUATE(SLB) { |
| 11613 UNIMPLEMENTED(); | 11658 UNIMPLEMENTED(); |
| (...skipping 1148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 12762 return 0; | 12807 return 0; |
| 12763 } | 12808 } |
| 12764 | 12809 |
| 12765 #undef EVALUATE | 12810 #undef EVALUATE |
| 12766 | 12811 |
| 12767 } // namespace internal | 12812 } // namespace internal |
| 12768 } // namespace v8 | 12813 } // namespace v8 |
| 12769 | 12814 |
| 12770 #endif // USE_SIMULATOR | 12815 #endif // USE_SIMULATOR |
| 12771 #endif // V8_TARGET_ARCH_S390 | 12816 #endif // V8_TARGET_ARCH_S390 |
| OLD | NEW |