| Index: src/arm64/decoder-arm64-inl.h
|
| diff --git a/src/arm64/decoder-arm64-inl.h b/src/arm64/decoder-arm64-inl.h
|
| index e00105e7bc1b49165c3a5853520e86bd943255fd..2405f8783000751dbc5f030772d36ff7486bfe6f 100644
|
| --- a/src/arm64/decoder-arm64-inl.h
|
| +++ b/src/arm64/decoder-arm64-inl.h
|
| @@ -217,8 +217,15 @@ void Decoder<V>::DecodeLoadStore(Instruction* instr) {
|
| if (instr->Bit(28) == 0) {
|
| if (instr->Bit(29) == 0) {
|
| if (instr->Bit(26) == 0) {
|
| - // TODO(all): VisitLoadStoreExclusive.
|
| - V::VisitUnimplemented(instr);
|
| + if (instr->Mask(0xA08000) == 0x800000 ||
|
| + instr->Mask(0xA00000) == 0xA00000) {
|
| + V::VisitUnallocated(instr);
|
| + } else if (instr->Mask(0x808000) == 0) {
|
| + // Load/Store exclusive without acquire/release are unimplemented.
|
| + V::VisitUnimplemented(instr);
|
| + } else {
|
| + V::VisitLoadStoreAcquireRelease(instr);
|
| + }
|
| } else {
|
| DecodeAdvSIMDLoadStore(instr);
|
| }
|
|
|