Lines Matching +full:tri +full:- +full:state

1 //===---------------------- ProcessImplicitDefs.cpp -----------------------===//
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
7 //===----------------------------------------------------------------------===//
31 const TargetRegisterInfo *TRI = nullptr; member in __anonb70e92d00111::ProcessImplicitDefs
70 if (!MI->isCopyLike() && in canTurnIntoImplicitDef()
71 !MI->isInsertSubreg() && in canTurnIntoImplicitDef()
72 !MI->isRegSequence() && in canTurnIntoImplicitDef()
73 !MI->isPHI()) in canTurnIntoImplicitDef()
75 for (const MachineOperand &MO : MI->all_uses()) in canTurnIntoImplicitDef()
83 Register Reg = MI->getOperand(0).getReg(); in processImplicitDef()
87 // implicit-def when possible. in processImplicitDef()
88 for (MachineOperand &MO : MRI->use_nodbg_operands(Reg)) { in processImplicitDef()
94 UserMI->setDesc(TII->get(TargetOpcode::IMPLICIT_DEF)); in processImplicitDef()
97 MI->eraseFromParent(); in processImplicitDef()
101 // This is a physreg implicit-def. in processImplicitDef()
103 MachineBasicBlock::instr_iterator UserMI = MI->getIterator(); in processImplicitDef()
104 MachineBasicBlock::instr_iterator UserE = MI->getParent()->instr_end(); in processImplicitDef()
107 for (MachineOperand &MO : UserMI->operands()) { in processImplicitDef()
111 if (!UserReg.isPhysical() || !TRI->regsOverlap(Reg, UserReg)) in processImplicitDef()
125 MI->eraseFromParent(); in processImplicitDef()
131 for (unsigned i = MI->getNumOperands() - 1; i; --i) in processImplicitDef()
132 MI->removeOperand(i); in processImplicitDef()
136 /// processImplicitDefs - Process IMPLICIT_DEF instructions and turn them into
146 TRI = MF.getSubtarget().getRegisterInfo(); in runOnMachineFunction()
148 assert(WorkList.empty() && "Inconsistent worklist state"); in runOnMachineFunction()