LLVM: lib/Target/AArch64/AArch64MacroFusion.cpp File Reference (original) (raw)

Go to the source code of this file.

Functions
static bool isArithmeticBccPair (const MachineInstr *FirstMI, const MachineInstr &SecondMI, bool CmpOnly)
CMN, CMP, TST followed by Bcc.
static bool isArithmeticCbzPair (const MachineInstr *FirstMI, const MachineInstr &SecondMI)
ALU operations followed by CBZ/CBNZ.
static bool isAESPair (const MachineInstr *FirstMI, const MachineInstr &SecondMI)
AES crypto encoding or decoding.
static bool isCryptoEORPair (const MachineInstr *FirstMI, const MachineInstr &SecondMI)
AESE/AESD/PMULL + EOR.
static bool isAdrpAddPair (const MachineInstr *FirstMI, const MachineInstr &SecondMI)
static bool isLiteralsPair (const MachineInstr *FirstMI, const MachineInstr &SecondMI)
Literal generation.
static bool isAddressLdStPair (const MachineInstr *FirstMI, const MachineInstr &SecondMI)
Fuse address generation and loads or stores.
static bool isCmpCSelPair (const MachineInstr *FirstMI, const MachineInstr &SecondMI)
Compare and conditional select.
static bool isCmpCSetPair (const MachineInstr *FirstMI, const MachineInstr &SecondMI)
Compare and cset.
static bool isArithmeticLogicPair (const MachineInstr *FirstMI, const MachineInstr &SecondMI)
static bool isAddSub2RegAndConstOnePair (const MachineInstr *FirstMI, const MachineInstr &SecondMI)
static bool shouldScheduleAdjacent (const TargetInstrInfo &TII, const TargetSubtargetInfo &TSI, const MachineInstr *FirstMI, const MachineInstr &SecondMI)
Check if the instr pair, FirstMI and SecondMI, should be fused together.

isAddressLdStPair()

isAddSub2RegAndConstOnePair()

isAdrpAddPair()

isAESPair()

isArithmeticBccPair()

isArithmeticCbzPair()

isArithmeticLogicPair()

isCmpCSelPair()

isCmpCSetPair()

isCryptoEORPair()

isLiteralsPair()

shouldScheduleAdjacent()

Check if the instr pair, FirstMI and SecondMI, should be fused together.

Given SecondMI, when FirstMI is unspecified, then check if SecondMI may be part of a fused pair at all.

Definition at line 477 of file AArch64MacroFusion.cpp.

References isAddressLdStPair(), isAddSub2RegAndConstOnePair(), isAdrpAddPair(), isAESPair(), isArithmeticBccPair(), isArithmeticCbzPair(), isArithmeticLogicPair(), isCmpCSelPair(), isCmpCSetPair(), isCryptoEORPair(), isLiteralsPair(), and TII.