summaryrefslogtreecommitdiff
path: root/deps/v8/src/execution/s390/simulator-s390.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/src/execution/s390/simulator-s390.cc')
-rw-r--r--deps/v8/src/execution/s390/simulator-s390.cc13
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) {