Lines Matching defs:MI

415 DecodeStatus ARMDisassembler::getInstruction(MCInst &MI, uint64_t &Size,
440 DecodeStatus result = decodeInstruction(DecoderTableARM32, MI, insn,
449 MI.clear();
450 result = decodeInstruction(DecoderTableVFP32, MI, insn, Address, this, STI);
456 MI.clear();
457 result = decodeInstruction(DecoderTableVFPV832, MI, insn, Address, this, STI);
463 MI.clear();
464 result = decodeInstruction(DecoderTableNEONData32, MI, insn, Address,
470 if (!DecodePredicateOperand(MI, 0xE, Address, this))
475 MI.clear();
476 result = decodeInstruction(DecoderTableNEONLoadStore32, MI, insn, Address,
482 if (!DecodePredicateOperand(MI, 0xE, Address, this))
487 MI.clear();
488 result = decodeInstruction(DecoderTableNEONDup32, MI, insn, Address,
494 if (!DecodePredicateOperand(MI, 0xE, Address, this))
499 MI.clear();
500 result = decodeInstruction(DecoderTablev8NEON32, MI, insn, Address,
507 MI.clear();
508 result = decodeInstruction(DecoderTablev8Crypto32, MI, insn, Address,
515 MI.clear();
538 MCInst &MI, const void *Decoder) {
541 return Dis->tryAddingSymbolicOperand(MI, (uint32_t)Value, Address, isBranch,
564 static void AddThumb1SBit(MCInst &MI, bool InITBlock) {
565 const MCOperandInfo *OpInfo = ARMInsts[MI.getOpcode()].OpInfo;
566 unsigned short NumOps = ARMInsts[MI.getOpcode()].NumOperands;
567 MCInst::iterator I = MI.begin();
569 if (I == MI.end()) break;
572 MI.insert(I, MCOperand::CreateReg(InITBlock ? 0 : ARM::CPSR));
577 MI.insert(I, MCOperand::CreateReg(InITBlock ? 0 : ARM::CPSR));
585 ThumbDisassembler::AddThumbPredicate(MCInst &MI) const {
590 switch (MI.getOpcode()) {
630 const MCOperandInfo *OpInfo = ARMInsts[MI.getOpcode()].OpInfo;
631 unsigned short NumOps = ARMInsts[MI.getOpcode()].NumOperands;
632 MCInst::iterator I = MI.begin();
634 if (I == MI.end()) break;
636 I = MI.insert(I, MCOperand::CreateImm(CC));
639 MI.insert(I, MCOperand::CreateReg(0));
641 MI.insert(I, MCOperand::CreateReg(ARM::CPSR));
646 I = MI.insert(I, MCOperand::CreateImm(CC));
649 MI.insert(I, MCOperand::CreateReg(0));
651 MI.insert(I, MCOperand::CreateReg(ARM::CPSR));
661 void ThumbDisassembler::UpdateThumbVFPPredicate(MCInst &MI) const {
667 const MCOperandInfo *OpInfo = ARMInsts[MI.getOpcode()].OpInfo;
668 MCInst::iterator I = MI.begin();
669 unsigned short NumOps = ARMInsts[MI.getOpcode()].NumOperands;
683 DecodeStatus ThumbDisassembler::getInstruction(MCInst &MI, uint64_t &Size,
702 DecodeStatus result = decodeInstruction(DecoderTableThumb16, MI, insn16,
706 Check(result, AddThumbPredicate(MI));
710 MI.clear();
711 result = decodeInstruction(DecoderTableThumbSBit16, MI, insn16,
716 Check(result, AddThumbPredicate(MI));
717 AddThumb1SBit(MI, InITBlock);
721 MI.clear();
722 result = decodeInstruction(DecoderTableThumb216, MI, insn16,
729 if (MI.getOpcode() == ARM::t2IT && ITBlock.instrInITBlock())
732 Check(result, AddThumbPredicate(MI));
737 if (MI.getOpcode() == ARM::t2IT) {
739 unsigned Firstcond = MI.getOperand(0).getImm();
740 unsigned Mask = MI.getOperand(1).getImm();
757 MI.clear();
758 result = decodeInstruction(DecoderTableThumb32, MI, insn32, Address,
763 Check(result, AddThumbPredicate(MI));
764 AddThumb1SBit(MI, InITBlock);
768 MI.clear();
769 result = decodeInstruction(DecoderTableThumb232, MI, insn32, Address,
773 Check(result, AddThumbPredicate(MI));
778 MI.clear();
779 result = decodeInstruction(DecoderTableVFP32, MI, insn32, Address, this, STI);
782 UpdateThumbVFPPredicate(MI);
787 MI.clear();
788 result = decodeInstruction(DecoderTableVFPV832, MI, insn32, Address, this, STI);
795 MI.clear();
796 result = decodeInstruction(DecoderTableNEONDup32, MI, insn32, Address,
800 Check(result, AddThumbPredicate(MI));
806 MI.clear();
810 result = decodeInstruction(DecoderTableNEONLoadStore32, MI, NEONLdStInsn,
814 Check(result, AddThumbPredicate(MI));
820 MI.clear();
825 result = decodeInstruction(DecoderTableNEONData32, MI, NEONDataInsn,
829 Check(result, AddThumbPredicate(MI));
833 MI.clear();
838 result = decodeInstruction(DecoderTablev8Crypto32, MI, NEONCryptoInsn,
845 MI.clear();
848 result = decodeInstruction(DecoderTablev8NEON32, MI, NEONv8Insn, Address,
856 MI.clear();