#include "AArch64MacroFusion.h"
#include "AArch64Subtarget.h"
#include "llvm/CodeGen/MacroFusion.h"
#include "llvm/CodeGen/TargetInstrInfo.h"
usingnamespacellvm;
static bool isArithmeticBccPair(const MachineInstr *FirstMI,
const MachineInstr &SecondMI, bool CmpOnly) { … }
static bool isArithmeticCbzPair(const MachineInstr *FirstMI,
const MachineInstr &SecondMI) { … }
static bool isAESPair(const MachineInstr *FirstMI,
const MachineInstr &SecondMI) { … }
static bool isCryptoEORPair(const MachineInstr *FirstMI,
const MachineInstr &SecondMI) { … }
static bool isAdrpAddPair(const MachineInstr *FirstMI,
const MachineInstr &SecondMI) { … }
static bool isLiteralsPair(const MachineInstr *FirstMI,
const MachineInstr &SecondMI) { … }
static bool isAddressLdStPair(const MachineInstr *FirstMI,
const MachineInstr &SecondMI) { … }
static bool isCCSelectPair(const MachineInstr *FirstMI,
const MachineInstr &SecondMI) { … }
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) { … }
std::unique_ptr<ScheduleDAGMutation>
llvm::createAArch64MacroFusionDAGMutation() { … }