Lines Matching refs:FirstMI
23 static bool isArithmeticBccPair(const MachineInstr *FirstMI, in isArithmeticBccPair() argument
29 if (FirstMI == nullptr) in isArithmeticBccPair()
32 switch (FirstMI->getOpcode()) { in isArithmeticBccPair()
57 return !AArch64InstrInfo::hasShiftedReg(*FirstMI); in isArithmeticBccPair()
64 static bool isArithmeticCbzPair(const MachineInstr *FirstMI, in isArithmeticCbzPair() argument
73 if (FirstMI == nullptr) in isArithmeticCbzPair()
76 switch (FirstMI->getOpcode()) { in isArithmeticCbzPair()
107 return !AArch64InstrInfo::hasShiftedReg(*FirstMI); in isArithmeticCbzPair()
114 static bool isAESPair(const MachineInstr *FirstMI, in isAESPair() argument
121 return FirstMI == nullptr || FirstMI->getOpcode() == AArch64::AESErr; in isAESPair()
125 return FirstMI == nullptr || FirstMI->getOpcode() == AArch64::AESDrr; in isAESPair()
132 static bool isCryptoEORPair(const MachineInstr *FirstMI, in isCryptoEORPair() argument
138 if (FirstMI == nullptr) in isCryptoEORPair()
141 switch (FirstMI->getOpcode()) { in isCryptoEORPair()
155 static bool isLiteralsPair(const MachineInstr *FirstMI, in isLiteralsPair() argument
160 if ((FirstMI == nullptr || FirstMI->getOpcode() == AArch64::ADRP) && in isLiteralsPair()
165 if ((FirstMI == nullptr || FirstMI->getOpcode() == AArch64::MOVZWi) && in isLiteralsPair()
171 if((FirstMI == nullptr || FirstMI->getOpcode() == AArch64::MOVZXi) && in isLiteralsPair()
177 if ((FirstMI == nullptr || in isLiteralsPair()
178 (FirstMI->getOpcode() == AArch64::MOVKXi && in isLiteralsPair()
179 FirstMI->getOperand(3).getImm() == 32)) && in isLiteralsPair()
188 static bool isAddressLdStPair(const MachineInstr *FirstMI, in isAddressLdStPair() argument
215 if (FirstMI == nullptr) in isAddressLdStPair()
218 switch (FirstMI->getOpcode()) { in isAddressLdStPair()
230 static bool isCCSelectPair(const MachineInstr *FirstMI, in isCCSelectPair() argument
235 if (FirstMI == nullptr) in isCCSelectPair()
238 if (FirstMI->definesRegister(AArch64::WZR)) in isCCSelectPair()
239 switch (FirstMI->getOpcode()) { in isCCSelectPair()
241 return !AArch64InstrInfo::hasShiftedReg(*FirstMI); in isCCSelectPair()
243 return !AArch64InstrInfo::hasExtendedReg(*FirstMI); in isCCSelectPair()
253 if (FirstMI == nullptr) in isCCSelectPair()
256 if (FirstMI->definesRegister(AArch64::XZR)) in isCCSelectPair()
257 switch (FirstMI->getOpcode()) { in isCCSelectPair()
259 return !AArch64InstrInfo::hasShiftedReg(*FirstMI); in isCCSelectPair()
262 return !AArch64InstrInfo::hasExtendedReg(*FirstMI); in isCCSelectPair()
273 static bool isArithmeticLogicPair(const MachineInstr *FirstMI, in isArithmeticLogicPair() argument
314 if (FirstMI == nullptr) in isArithmeticLogicPair()
318 switch (FirstMI->getOpcode()) { in isArithmeticLogicPair()
336 return !AArch64InstrInfo::hasShiftedReg(*FirstMI); in isArithmeticLogicPair()
350 if (FirstMI == nullptr) in isArithmeticLogicPair()
354 switch (FirstMI->getOpcode()) { in isArithmeticLogicPair()
364 return !AArch64InstrInfo::hasShiftedReg(*FirstMI); in isArithmeticLogicPair()
377 const MachineInstr *FirstMI, in shouldScheduleAdjacent() argument
383 if (ST.hasArithmeticBccFusion() && isArithmeticBccPair(FirstMI, SecondMI)) in shouldScheduleAdjacent()
385 if (ST.hasArithmeticCbzFusion() && isArithmeticCbzPair(FirstMI, SecondMI)) in shouldScheduleAdjacent()
387 if (ST.hasFuseAES() && isAESPair(FirstMI, SecondMI)) in shouldScheduleAdjacent()
389 if (ST.hasFuseCryptoEOR() && isCryptoEORPair(FirstMI, SecondMI)) in shouldScheduleAdjacent()
391 if (ST.hasFuseLiterals() && isLiteralsPair(FirstMI, SecondMI)) in shouldScheduleAdjacent()
393 if (ST.hasFuseAddress() && isAddressLdStPair(FirstMI, SecondMI)) in shouldScheduleAdjacent()
395 if (ST.hasFuseCCSelect() && isCCSelectPair(FirstMI, SecondMI)) in shouldScheduleAdjacent()
397 if (ST.hasFuseArithmeticLogic() && isArithmeticLogicPair(FirstMI, SecondMI)) in shouldScheduleAdjacent()