Lines Matching refs:MI

8122 PPCTargetLowering::EmitAtomicBinary(MachineInstr *MI, MachineBasicBlock *BB,
8157 unsigned dest = MI->getOperand(0).getReg();
8158 unsigned ptrA = MI->getOperand(1).getReg();
8159 unsigned ptrB = MI->getOperand(2).getReg();
8160 unsigned incr = MI->getOperand(3).getReg();
8161 DebugLoc dl = MI->getDebugLoc();
8168 std::next(MachineBasicBlock::iterator(MI)), BB->end());
8206 PPCTargetLowering::EmitPartwordAtomicBinary(MachineInstr *MI,
8212 return EmitAtomicBinary(MI, BB, is8bit ? 1 : 2, BinOpcode);
8227 unsigned dest = MI->getOperand(0).getReg();
8228 unsigned ptrA = MI->getOperand(1).getReg();
8229 unsigned ptrB = MI->getOperand(2).getReg();
8230 unsigned incr = MI->getOperand(3).getReg();
8231 DebugLoc dl = MI->getDebugLoc();
8238 std::next(MachineBasicBlock::iterator(MI)), BB->end());
8338 PPCTargetLowering::emitEHSjLjSetJmp(MachineInstr *MI,
8340 DebugLoc DL = MI->getDebugLoc();
8350 MachineInstr::mmo_iterator MMOBegin = MI->memoperands_begin();
8351 MachineInstr::mmo_iterator MMOEnd = MI->memoperands_end();
8353 unsigned DstReg = MI->getOperand(0).getReg();
8388 std::next(MachineBasicBlock::iterator(MI)), MBB->end());
8410 unsigned BufReg = MI->getOperand(1).getReg();
8414 MIB = BuildMI(*thisMBB, MI, DL, TII->get(PPC::STD))
8429 MIB = BuildMI(*thisMBB, MI, DL,
8437 MIB = BuildMI(*thisMBB, MI, DL, TII->get(PPC::BCLalways)).addMBB(mainMBB);
8441 BuildMI(*thisMBB, MI, DL, TII->get(PPC::LI), restoreDstReg).addImm(1);
8443 MIB = BuildMI(*thisMBB, MI, DL, TII->get(PPC::EH_SjLj_Setup))
8445 MIB = BuildMI(*thisMBB, MI, DL, TII->get(PPC::B)).addMBB(sinkMBB);
8480 MI->eraseFromParent();
8485 PPCTargetLowering::emitEHSjLjLongJmp(MachineInstr *MI,
8487 DebugLoc DL = MI->getDebugLoc();
8494 MachineInstr::mmo_iterator MMOBegin = MI->memoperands_begin();
8495 MachineInstr::mmo_iterator MMOEnd = MI->memoperands_end();
8522 unsigned BufReg = MI->getOperand(0).getReg();
8528 MIB = BuildMI(*MBB, MI, DL, TII->get(PPC::LD), FP)
8532 MIB = BuildMI(*MBB, MI, DL, TII->get(PPC::LWZ), FP)
8540 MIB = BuildMI(*MBB, MI, DL, TII->get(PPC::LD), Tmp)
8544 MIB = BuildMI(*MBB, MI, DL, TII->get(PPC::LWZ), Tmp)
8552 MIB = BuildMI(*MBB, MI, DL, TII->get(PPC::LD), SP)
8556 MIB = BuildMI(*MBB, MI, DL, TII->get(PPC::LWZ), SP)
8564 MIB = BuildMI(*MBB, MI, DL, TII->get(PPC::LD), BP)
8568 MIB = BuildMI(*MBB, MI, DL, TII->get(PPC::LWZ), BP)
8577 MIB = BuildMI(*MBB, MI, DL, TII->get(PPC::LD), PPC::X2)
8585 BuildMI(*MBB, MI, DL,
8587 BuildMI(*MBB, MI, DL, TII->get(PVT == MVT::i64 ? PPC::BCTR8 : PPC::BCTR));
8589 MI->eraseFromParent();
8594 PPCTargetLowering::EmitInstrWithCustomInserter(MachineInstr *MI,
8596 if (MI->getOpcode() == TargetOpcode::STACKMAP ||
8597 MI->getOpcode() == TargetOpcode::PATCHPOINT) {
8599 MI->getOpcode() == TargetOpcode::PATCHPOINT) {
8606 MI->addOperand(MachineOperand::CreateReg(PPC::X2, false, true));
8609 return emitPatchPoint(MI, BB);
8612 if (MI->getOpcode() == PPC::EH_SjLj_SetJmp32 ||
8613 MI->getOpcode() == PPC::EH_SjLj_SetJmp64) {
8614 return emitEHSjLjSetJmp(MI, BB);
8615 } else if (MI->getOpcode() == PPC::EH_SjLj_LongJmp32 ||
8616 MI->getOpcode() == PPC::EH_SjLj_LongJmp64) {
8617 return emitEHSjLjLongJmp(MI, BB);
8629 if (Subtarget.hasISEL() && (MI->getOpcode() == PPC::SELECT_CC_I4 ||
8630 MI->getOpcode() == PPC::SELECT_CC_I8 ||
8631 MI->getOpcode() == PPC::SELECT_I4 ||
8632 MI->getOpcode() == PPC::SELECT_I8)) {
8634 if (MI->getOpcode() == PPC::SELECT_CC_I4 ||
8635 MI->getOpcode() == PPC::SELECT_CC_I8)
8636 Cond.push_back(MI->getOperand(4));
8639 Cond.push_back(MI->getOperand(1));
8641 DebugLoc dl = MI->getDebugLoc();
8642 TII->insertSelect(*BB, MI, dl, MI->getOperand(0).getReg(),
8643 Cond, MI->getOperand(2).getReg(),
8644 MI->getOperand(3).getReg());
8645 } else if (MI->getOpcode() == PPC::SELECT_CC_I4 ||
8646 MI->getOpcode() == PPC::SELECT_CC_I8 ||
8647 MI->getOpcode() == PPC::SELECT_CC_F4 ||
8648 MI->getOpcode() == PPC::SELECT_CC_F8 ||
8649 MI->getOpcode() == PPC::SELECT_CC_QFRC ||
8650 MI->getOpcode() == PPC::SELECT_CC_QSRC ||
8651 MI->getOpcode() == PPC::SELECT_CC_QBRC ||
8652 MI->getOpcode() == PPC::SELECT_CC_VRRC ||
8653 MI->getOpcode() == PPC::SELECT_CC_VSFRC ||
8654 MI->getOpcode() == PPC::SELECT_CC_VSSRC ||
8655 MI->getOpcode() == PPC::SELECT_CC_VSRC ||
8656 MI->getOpcode() == PPC::SELECT_I4 ||
8657 MI->getOpcode() == PPC::SELECT_I8 ||
8658 MI->getOpcode() == PPC::SELECT_F4 ||
8659 MI->getOpcode() == PPC::SELECT_F8 ||
8660 MI->getOpcode() == PPC::SELECT_QFRC ||
8661 MI->getOpcode() == PPC::SELECT_QSRC ||
8662 MI->getOpcode() == PPC::SELECT_QBRC ||
8663 MI->getOpcode() == PPC::SELECT_VRRC ||
8664 MI->getOpcode() == PPC::SELECT_VSFRC ||
8665 MI->getOpcode() == PPC::SELECT_VSSRC ||
8666 MI->getOpcode() == PPC::SELECT_VSRC) {
8680 DebugLoc dl = MI->getDebugLoc();
8686 std::next(MachineBasicBlock::iterator(MI)), BB->end());
8693 if (MI->getOpcode() == PPC::SELECT_I4 ||
8694 MI->getOpcode() == PPC::SELECT_I8 ||
8695 MI->getOpcode() == PPC::SELECT_F4 ||
8696 MI->getOpcode() == PPC::SELECT_F8 ||
8697 MI->getOpcode() == PPC::SELECT_QFRC ||
8698 MI->getOpcode() == PPC::SELECT_QSRC ||
8699 MI->getOpcode() == PPC::SELECT_QBRC ||
8700 MI->getOpcode() == PPC::SELECT_VRRC ||
8701 MI->getOpcode() == PPC::SELECT_VSFRC ||
8702 MI->getOpcode() == PPC::SELECT_VSSRC ||
8703 MI->getOpcode() == PPC::SELECT_VSRC) {
8705 .addReg(MI->getOperand(1).getReg()).addMBB(sinkMBB);
8707 unsigned SelectPred = MI->getOperand(4).getImm();
8709 .addImm(SelectPred).addReg(MI->getOperand(1).getReg()).addMBB(sinkMBB);
8725 TII->get(PPC::PHI), MI->getOperand(0).getReg())
8726 .addReg(MI->getOperand(3).getReg()).addMBB(copy0MBB)
8727 .addReg(MI->getOperand(2).getReg()).addMBB(thisMBB);
8728 } else if (MI->getOpcode() == PPC::ReadTB) {
8743 DebugLoc dl = MI->getDebugLoc();
8749 std::next(MachineBasicBlock::iterator(MI)), BB->end());
8757 unsigned LoReg = MI->getOperand(0).getReg();
8758 unsigned HiReg = MI->getOperand(1).getReg();
8774 else if (MI->getOpcode() == PPC::ATOMIC_LOAD_ADD_I8)
8775 BB = EmitPartwordAtomicBinary(MI, BB, true, PPC::ADD4);
8776 else if (MI->getOpcode() == PPC::ATOMIC_LOAD_ADD_I16)
8777 BB = EmitPartwordAtomicBinary(MI, BB, false, PPC::ADD4);
8778 else if (MI->getOpcode() == PPC::ATOMIC_LOAD_ADD_I32)
8779 BB = EmitAtomicBinary(MI, BB, 4, PPC::ADD4);
8780 else if (MI->getOpcode() == PPC::ATOMIC_LOAD_ADD_I64)
8781 BB = EmitAtomicBinary(MI, BB, 8, PPC::ADD8);
8783 else if (MI->getOpcode() == PPC::ATOMIC_LOAD_AND_I8)
8784 BB = EmitPartwordAtomicBinary(MI, BB, true, PPC::AND);
8785 else if (MI->getOpcode() == PPC::ATOMIC_LOAD_AND_I16)
8786 BB = EmitPartwordAtomicBinary(MI, BB, false, PPC::AND);
8787 else if (MI->getOpcode() == PPC::ATOMIC_LOAD_AND_I32)
8788 BB = EmitAtomicBinary(MI, BB, 4, PPC::AND);
8789 else if (MI->getOpcode() == PPC::ATOMIC_LOAD_AND_I64)
8790 BB = EmitAtomicBinary(MI, BB, 8, PPC::AND8);
8792 else if (MI->getOpcode() == PPC::ATOMIC_LOAD_OR_I8)
8793 BB = EmitPartwordAtomicBinary(MI, BB, true, PPC::OR);
8794 else if (MI->getOpcode() == PPC::ATOMIC_LOAD_OR_I16)
8795 BB = EmitPartwordAtomicBinary(MI, BB, false, PPC::OR);
8796 else if (MI->getOpcode() == PPC::ATOMIC_LOAD_OR_I32)
8797 BB = EmitAtomicBinary(MI, BB, 4, PPC::OR);
8798 else if (MI->getOpcode() == PPC::ATOMIC_LOAD_OR_I64)
8799 BB = EmitAtomicBinary(MI, BB, 8, PPC::OR8);
8801 else if (MI->getOpcode() == PPC::ATOMIC_LOAD_XOR_I8)
8802 BB = EmitPartwordAtomicBinary(MI, BB, true, PPC::XOR);
8803 else if (MI->getOpcode() == PPC::ATOMIC_LOAD_XOR_I16)
8804 BB = EmitPartwordAtomicBinary(MI, BB, false, PPC::XOR);
8805 else if (MI->getOpcode() == PPC::ATOMIC_LOAD_XOR_I32)
8806 BB = EmitAtomicBinary(MI, BB, 4, PPC::XOR);
8807 else if (MI->getOpcode() == PPC::ATOMIC_LOAD_XOR_I64)
8808 BB = EmitAtomicBinary(MI, BB, 8, PPC::XOR8);
8810 else if (MI->getOpcode() == PPC::ATOMIC_LOAD_NAND_I8)
8811 BB = EmitPartwordAtomicBinary(MI, BB, true, PPC::NAND);
8812 else if (MI->getOpcode() == PPC::ATOMIC_LOAD_NAND_I16)
8813 BB = EmitPartwordAtomicBinary(MI, BB, false, PPC::NAND);
8814 else if (MI->getOpcode() == PPC::ATOMIC_LOAD_NAND_I32)
8815 BB = EmitAtomicBinary(MI, BB, 4, PPC::NAND);
8816 else if (MI->getOpcode() == PPC::ATOMIC_LOAD_NAND_I64)
8817 BB = EmitAtomicBinary(MI, BB, 8, PPC::NAND8);
8819 else if (MI->getOpcode() == PPC::ATOMIC_LOAD_SUB_I8)
8820 BB = EmitPartwordAtomicBinary(MI, BB, true, PPC::SUBF);
8821 else if (MI->getOpcode() == PPC::ATOMIC_LOAD_SUB_I16)
8822 BB = EmitPartwordAtomicBinary(MI, BB, false, PPC::SUBF);
8823 else if (MI->getOpcode() == PPC::ATOMIC_LOAD_SUB_I32)
8824 BB = EmitAtomicBinary(MI, BB, 4, PPC::SUBF);
8825 else if (MI->getOpcode() == PPC::ATOMIC_LOAD_SUB_I64)
8826 BB = EmitAtomicBinary(MI, BB, 8, PPC::SUBF8);
8828 else if (MI->getOpcode() == PPC::ATOMIC_SWAP_I8)
8829 BB = EmitPartwordAtomicBinary(MI, BB, true, 0);
8830 else if (MI->getOpcode() == PPC::ATOMIC_SWAP_I16)
8831 BB = EmitPartwordAtomicBinary(MI, BB, false, 0);
8832 else if (MI->getOpcode() == PPC::ATOMIC_SWAP_I32)
8833 BB = EmitAtomicBinary(MI, BB, 4, 0);
8834 else if (MI->getOpcode() == PPC::ATOMIC_SWAP_I64)
8835 BB = EmitAtomicBinary(MI, BB, 8, 0);
8837 else if (MI->getOpcode() == PPC::ATOMIC_CMP_SWAP_I32 ||
8838 MI->getOpcode() == PPC::ATOMIC_CMP_SWAP_I64 ||
8840 MI->getOpcode() == PPC::ATOMIC_CMP_SWAP_I8) ||
8842 MI->getOpcode() == PPC::ATOMIC_CMP_SWAP_I16)) {
8843 bool is64bit = MI->getOpcode() == PPC::ATOMIC_CMP_SWAP_I64;
8847 switch(MI->getOpcode()) {
8869 unsigned dest = MI->getOperand(0).getReg();
8870 unsigned ptrA = MI->getOperand(1).getReg();
8871 unsigned ptrB = MI->getOperand(2).getReg();
8872 unsigned oldval = MI->getOperand(3).getReg();
8873 unsigned newval = MI->getOperand(4).getReg();
8874 DebugLoc dl = MI->getDebugLoc();
8885 std::next(MachineBasicBlock::iterator(MI)), BB->end());
8931 } else if (MI->getOpcode() == PPC::ATOMIC_CMP_SWAP_I8 ||
8932 MI->getOpcode() == PPC::ATOMIC_CMP_SWAP_I16) {
8937 bool is8bit = MI->getOpcode() == PPC::ATOMIC_CMP_SWAP_I8;
8939 unsigned dest = MI->getOperand(0).getReg();
8940 unsigned ptrA = MI->getOperand(1).getReg();
8941 unsigned ptrB = MI->getOperand(2).getReg();
8942 unsigned oldval = MI->getOperand(3).getReg();
8943 unsigned newval = MI->getOperand(4).getReg();
8944 DebugLoc dl = MI->getDebugLoc();
8955 std::next(MachineBasicBlock::iterator(MI)), BB->end());
9079 } else if (MI->getOpcode() == PPC::FADDrtz) {
9083 unsigned Dest = MI->getOperand(0).getReg();
9084 unsigned Src1 = MI->getOperand(1).getReg();
9085 unsigned Src2 = MI->getOperand(2).getReg();
9086 DebugLoc dl = MI->getDebugLoc();
9092 BuildMI(*BB, MI, dl, TII->get(PPC::MFFS), MFFSReg);
9095 BuildMI(*BB, MI, dl, TII->get(PPC::MTFSB1)).addImm(31);
9096 BuildMI(*BB, MI, dl, TII->get(PPC::MTFSB0)).addImm(30);
9099 BuildMI(*BB, MI, dl, TII->get(PPC::FADD), Dest).addReg(Src1).addReg(Src2);
9102 BuildMI(*BB, MI, dl, TII->get(PPC::MTFSFb)).addImm(1).addReg(MFFSReg);
9103 } else if (MI->getOpcode() == PPC::ANDIo_1_EQ_BIT ||
9104 MI->getOpcode() == PPC::ANDIo_1_GT_BIT ||
9105 MI->getOpcode() == PPC::ANDIo_1_EQ_BIT8 ||
9106 MI->getOpcode() == PPC::ANDIo_1_GT_BIT8) {
9107 unsigned Opcode = (MI->getOpcode() == PPC::ANDIo_1_EQ_BIT8 ||
9108 MI->getOpcode() == PPC::ANDIo_1_GT_BIT8) ?
9110 bool isEQ = (MI->getOpcode() == PPC::ANDIo_1_EQ_BIT ||
9111 MI->getOpcode() == PPC::ANDIo_1_EQ_BIT8);
9118 DebugLoc dl = MI->getDebugLoc();
9119 BuildMI(*BB, MI, dl, TII->get(Opcode), Dest)
9120 .addReg(MI->getOperand(1).getReg()).addImm(1);
9121 BuildMI(*BB, MI, dl, TII->get(TargetOpcode::COPY),
9122 MI->getOperand(0).getReg())
9124 } else if (MI->getOpcode() == PPC::TCHECK_RET) {
9125 DebugLoc Dl = MI->getDebugLoc();
9128 BuildMI(*BB, MI, Dl, TII->get(PPC::TCHECK), CRReg);
9134 MI->eraseFromParent(); // The pseudo instruction is gone now.