enum MCDisassembler::DecodeStatus

Description

Ternary decode status. Most backends will just use Fail and Success, however some have a concept of an instruction with understandable semantics but which is architecturally incorrect. An example of this is ARM UNPREDICTABLE instructions which are disassemblable but cause undefined behaviour. Because it makes sense to disassemble these instructions, there is a "soft fail" failure mode that indicates the MCInst & is valid but architecturally incorrect. The enum numbers are deliberately chosen such that reduction from Success->SoftFail ->Fail can be done with a simple bitwise-AND: LEFT & TOP = | Success Unpredictable Fail --------------+----------------------------------- Success | Success Unpredictable Fail Unpredictable | Unpredictable Unpredictable Fail Fail | Fail Fail Fail An easy way of encoding this is as 0b11, 0b01, 0b00 for Success, SoftFail, Fail respectively.

Declared at: llvm/include/llvm/MC/MCDisassembler/MCDisassembler.h:109

Enumerators

NameValueComment
Fail0
SoftFail1
Success3