Chromium Code Reviews| Index: src/arm/simulator-arm.cc |
| diff --git a/src/arm/simulator-arm.cc b/src/arm/simulator-arm.cc |
| index 839b2be4a52b65a096bfffa4bcb357467a949941..fae282207aac85f6133cb6d517d9c671cbfb0f9d 100644 |
| --- a/src/arm/simulator-arm.cc |
| +++ b/src/arm/simulator-arm.cc |
| @@ -3983,6 +3983,21 @@ void Simulator::DecodeSpecialCondition(Instruction* instr) { |
| break; |
| } |
| set_q_register(Vd, src1); |
| + } else if (instr->Bits(21, 20) == 0 && instr->Bits(11, 8) == 0xe && |
| + instr->Bit(4) == 0) { |
| + int Vd = instr->VFPDRegValue(kSimd128Precision); |
| + int Vm = instr->VFPMRegValue(kSimd128Precision); |
| + int Vn = instr->VFPNRegValue(kSimd128Precision); |
| + uint32_t src1[4], src2[4]; |
| + get_q_register(Vn, src1); |
| + get_q_register(Vm, src2); |
| + for (int i = 0; i < 4; i++) { |
| + src1[i] = bit_cast<float>(src1[i]) == bit_cast<float>(src2[i]) |
| + ? 0xFFFFFFFF |
| + : 0; |
| + } |
| + set_q_register(Vd, src1); |
| + |
| } else { |
| UNIMPLEMENTED(); |
| } |
| @@ -4495,6 +4510,8 @@ void Simulator::DecodeSpecialCondition(Instruction* instr) { |
| } else { |
| UNIMPLEMENTED(); |
| } |
| + } else { |
| + UNIMPLEMENTED(); |
|
bbudge
2016/12/20 01:16:57
We need this in case no case 5 matches occur.
|
| } |
| break; |
| case 8: |