Lines Matching defs:TfrI
235 bool predicate(MachineInstr &TfrI, bool Cond, std::set<Register> &UpdRegs);
959 bool HexagonExpandCondsets::predicate(MachineInstr &TfrI, bool Cond,
961 // TfrI - A2_tfr[tf] Instruction (not A2_tfrsi).
962 unsigned Opc = TfrI.getOpcode();
966 << ": " << TfrI);
968 MachineOperand &MD = TfrI.getOperand(0);
969 MachineOperand &MP = TfrI.getOperand(1);
970 MachineOperand &MS = TfrI.getOperand(2);
983 MachineInstr *DefI = getReachingDefForPred(RT, TfrI, PredR, Cond);
990 // DefI and the TfrI.
993 MachineBasicBlock::iterator DefIt = DefI, TfrIt = TfrI;
995 // Check if the predicate register is valid between DefI and TfrI.
1010 // as TfrI (Exec_Then), and also on the opposite one (Exec_Else).
1045 // RD = TfrI ..., RT
1048 // DefI and TfrI, we may not be able proceed with this transformation.
1049 // We can ignore a def that will not execute together with TfrI, and a
1051 // TfrI), we will not be able to move DefI down. If there is a use that
1052 // executed if TfrI's condition is false, then RT must be available
1058 // If the predicate register is defined between DefI and TfrI, the only
1059 // potential thing to do would be to move the DefI down to TfrI, and then
1061 // of the TfrI.
1062 // If the target register of the TfrI (RD) is not used or defined between
1063 // DefI and TfrI, consider moving TfrI up to DefI.
1064 bool CanUp = canMoveOver(TfrI, Defs, Uses);
1066 // The TfrI does not access memory, but DefI could. Check if it's safe
1067 // to move DefI down to TfrI.
1069 if (!canMoveMemTo(*DefI, TfrI, true))
1088 removeInstr(TfrI);