Lines Matching refs:FirstMI
22 static bool isArithmeticBccPair(const MachineInstr *FirstMI, in isArithmeticBccPair() argument
28 if (FirstMI == nullptr) in isArithmeticBccPair()
33 if (CmpOnly && !(FirstMI->getOperand(0).getReg() == AArch64::XZR || in isArithmeticBccPair()
34 FirstMI->getOperand(0).getReg() == AArch64::WZR)) { in isArithmeticBccPair()
38 switch (FirstMI->getOpcode()) { in isArithmeticBccPair()
63 return !AArch64InstrInfo::hasShiftedReg(*FirstMI); in isArithmeticBccPair()
70 static bool isArithmeticCbzPair(const MachineInstr *FirstMI, in isArithmeticCbzPair() argument
79 if (FirstMI == nullptr) in isArithmeticCbzPair()
82 switch (FirstMI->getOpcode()) { in isArithmeticCbzPair()
113 return !AArch64InstrInfo::hasShiftedReg(*FirstMI); in isArithmeticCbzPair()
120 static bool isAESPair(const MachineInstr *FirstMI, in isAESPair() argument
127 return FirstMI == nullptr || FirstMI->getOpcode() == AArch64::AESErr; in isAESPair()
131 return FirstMI == nullptr || FirstMI->getOpcode() == AArch64::AESDrr; in isAESPair()
138 static bool isCryptoEORPair(const MachineInstr *FirstMI, in isCryptoEORPair() argument
144 if (FirstMI == nullptr) in isCryptoEORPair()
147 switch (FirstMI->getOpcode()) { in isCryptoEORPair()
160 static bool isAdrpAddPair(const MachineInstr *FirstMI, in isAdrpAddPair() argument
163 if ((FirstMI == nullptr || FirstMI->getOpcode() == AArch64::ADRP) && in isAdrpAddPair()
170 static bool isLiteralsPair(const MachineInstr *FirstMI, in isLiteralsPair() argument
174 if ((FirstMI == nullptr || FirstMI->getOpcode() == AArch64::MOVZWi) && in isLiteralsPair()
180 if((FirstMI == nullptr || FirstMI->getOpcode() == AArch64::MOVZXi) && in isLiteralsPair()
186 if ((FirstMI == nullptr || in isLiteralsPair()
187 (FirstMI->getOpcode() == AArch64::MOVKXi && in isLiteralsPair()
188 FirstMI->getOperand(3).getImm() == 32)) && in isLiteralsPair()
197 static bool isAddressLdStPair(const MachineInstr *FirstMI, in isAddressLdStPair() argument
224 if (FirstMI == nullptr) in isAddressLdStPair()
227 switch (FirstMI->getOpcode()) { in isAddressLdStPair()
239 static bool isCCSelectPair(const MachineInstr *FirstMI, in isCCSelectPair() argument
244 if (FirstMI == nullptr) in isCCSelectPair()
247 if (FirstMI->definesRegister(AArch64::WZR)) in isCCSelectPair()
248 switch (FirstMI->getOpcode()) { in isCCSelectPair()
250 return !AArch64InstrInfo::hasShiftedReg(*FirstMI); in isCCSelectPair()
252 return !AArch64InstrInfo::hasExtendedReg(*FirstMI); in isCCSelectPair()
262 if (FirstMI == nullptr) in isCCSelectPair()
265 if (FirstMI->definesRegister(AArch64::XZR)) in isCCSelectPair()
266 switch (FirstMI->getOpcode()) { in isCCSelectPair()
268 return !AArch64InstrInfo::hasShiftedReg(*FirstMI); in isCCSelectPair()
271 return !AArch64InstrInfo::hasExtendedReg(*FirstMI); in isCCSelectPair()
282 static bool isArithmeticLogicPair(const MachineInstr *FirstMI, in isArithmeticLogicPair() argument
323 if (FirstMI == nullptr) in isArithmeticLogicPair()
327 switch (FirstMI->getOpcode()) { in isArithmeticLogicPair()
345 return !AArch64InstrInfo::hasShiftedReg(*FirstMI); in isArithmeticLogicPair()
359 if (FirstMI == nullptr) in isArithmeticLogicPair()
363 switch (FirstMI->getOpcode()) { in isArithmeticLogicPair()
373 return !AArch64InstrInfo::hasShiftedReg(*FirstMI); in isArithmeticLogicPair()
386 const MachineInstr *FirstMI, in shouldScheduleAdjacent() argument
394 if (isArithmeticBccPair(FirstMI, SecondMI, CmpOnly)) in shouldScheduleAdjacent()
397 if (ST.hasArithmeticCbzFusion() && isArithmeticCbzPair(FirstMI, SecondMI)) in shouldScheduleAdjacent()
399 if (ST.hasFuseAES() && isAESPair(FirstMI, SecondMI)) in shouldScheduleAdjacent()
401 if (ST.hasFuseCryptoEOR() && isCryptoEORPair(FirstMI, SecondMI)) in shouldScheduleAdjacent()
403 if (ST.hasFuseAdrpAdd() && isAdrpAddPair(FirstMI, SecondMI)) in shouldScheduleAdjacent()
405 if (ST.hasFuseLiterals() && isLiteralsPair(FirstMI, SecondMI)) in shouldScheduleAdjacent()
407 if (ST.hasFuseAddress() && isAddressLdStPair(FirstMI, SecondMI)) in shouldScheduleAdjacent()
409 if (ST.hasFuseCCSelect() && isCCSelectPair(FirstMI, SecondMI)) in shouldScheduleAdjacent()
411 if (ST.hasFuseArithmeticLogic() && isArithmeticLogicPair(FirstMI, SecondMI)) in shouldScheduleAdjacent()