Fix condition detection in EmulateInstructionARM

The condition detection code is calculating the result of the condition
based on the first 3 bit of the condition and then negate it if the LSB
of the condition is set. It works for the normal conditions but 0b1110
and 0b1111 are special as both of them should evaluate to true
independently the value of CPSR. This CL removes the negating logic from
those cases.

Differential revision: http://reviews.llvm.org/D9219

llvm-svn: 235715
This commit is contained in:
Tamas Berghammer 2015-04-24 12:13:44 +00:00
parent 0da3ee1ef3
commit 224dfbf3ae
1 changed files with 1 additions and 2 deletions

View File

@ -13036,8 +13036,7 @@ EmulateInstructionARM::ConditionPassed (const uint32_t opcode, bool *is_conditio
// opcodes different meanings, but always means execution happens.
if (is_conditional)
*is_conditional = false;
result = true;
break;
return true;
}
if (cond & 1)