ATM, there are two kind of problems with thumb instructions (both cause assertion in InstrBuilder)
- Incorrect detection of variadic ops
Some thumb instructions (like tMOVSr) have less number of operands in their MCInstrDesc than MCInst.getNumOperands(). This makes llvm-mca beleive those are variadic, while they're not.
- Detcting more explicit defs than there actually are.
This happens because Thumb target defines CPSR (s_cc_out) as output operand (ARM target defines it as input),