diff options
Diffstat (limited to 'deps/v8/src/execution/s390/simulator-s390.cc')
-rw-r--r-- | deps/v8/src/execution/s390/simulator-s390.cc | 13 |
1 files changed, 10 insertions, 3 deletions
diff --git a/deps/v8/src/execution/s390/simulator-s390.cc b/deps/v8/src/execution/s390/simulator-s390.cc index 42d2000bcb..77b6dd22ba 100644 --- a/deps/v8/src/execution/s390/simulator-s390.cc +++ b/deps/v8/src/execution/s390/simulator-s390.cc @@ -8310,9 +8310,16 @@ EVALUATE(SGR) { } EVALUATE(ALGR) { - UNIMPLEMENTED(); - USE(instr); - return 0; + DCHECK_OPCODE(ALGR); + DECODE_RRE_INSTRUCTION(r1, r2); + // 64-bit Non-clobbering unsigned arithmetics + uint64_t r1_val = get_register(r1); + uint64_t r2_val = get_register(r2); + bool isOF = CheckOverflowForUIntAdd(r1_val, r2_val); + SetS390ConditionCode<uint64_t>(r1_val + r2_val, 0); + SetS390OverflowCode(isOF); + set_register(r1, r1_val + r2_val); + return length; } EVALUATE(SLGR) { |