| Index: src/s390/simulator-s390.cc
|
| diff --git a/src/s390/simulator-s390.cc b/src/s390/simulator-s390.cc
|
| index fe3d96d00f922863ac81f4c67ff5d0e0ea161181..dcdee92d1f456e0ac697c1b0ccf9827e005b2a8e 100644
|
| --- a/src/s390/simulator-s390.cc
|
| +++ b/src/s390/simulator-s390.cc
|
| @@ -1848,6 +1848,11 @@ double Simulator::ReadDouble(intptr_t addr) {
|
| return *ptr;
|
| }
|
|
|
| +float Simulator::ReadFloat(intptr_t addr) {
|
| + float* ptr = reinterpret_cast<float*>(addr);
|
| + return *ptr;
|
| +}
|
| +
|
| // Returns the limit of the stack area to enable checking for stack overflows.
|
| uintptr_t Simulator::StackLimit(uintptr_t c_limit) const {
|
| // The simulator uses a separate JS stack. If we have exhausted the C stack,
|
| @@ -12511,9 +12516,16 @@ EVALUATE(KEB) {
|
| }
|
|
|
| EVALUATE(CEB) {
|
| - UNIMPLEMENTED();
|
| - USE(instr);
|
| - return 0;
|
| + DCHECK_OPCODE(CEB);
|
| +
|
| + DECODE_RXE_INSTRUCTION(r1, b2, x2, d2);
|
| + int64_t b2_val = (b2 == 0) ? 0 : get_register(b2);
|
| + int64_t x2_val = (x2 == 0) ? 0 : get_register(x2);
|
| + intptr_t d2_val = d2;
|
| + float r1_val = get_float32_from_d_register(r1);
|
| + float fval = ReadFloat(b2_val + x2_val + d2_val);
|
| + SetS390ConditionCode<float>(r1_val, fval);
|
| + return length;
|
| }
|
|
|
| EVALUATE(AEB) {
|
|
|