LLVM 20.0.0git
|
#include "AArch64MacroFusion.h"
#include "AArch64Subtarget.h"
#include "llvm/CodeGen/MacroFusion.h"
#include "llvm/CodeGen/TargetInstrInfo.h"
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 | isCCSelectPair (const MachineInstr *FirstMI, const MachineInstr &SecondMI) |
Compare and conditional select. | |
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. | |
|
static |
Fuse address generation and loads or stores.
Definition at line 198 of file AArch64MacroFusion.cpp.
References llvm::MachineOperand::getImm(), llvm::MachineInstr::getOpcode(), and llvm::MachineInstr::getOperand().
Referenced by shouldScheduleAdjacent().
|
static |
Definition at line 383 of file AArch64MacroFusion.cpp.
References llvm::MachineOperand::getImm(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), and llvm::MachineOperand::isImm().
Referenced by shouldScheduleAdjacent().
|
static |
Definition at line 161 of file AArch64MacroFusion.cpp.
References llvm::MachineInstr::getOpcode().
Referenced by shouldScheduleAdjacent().
|
static |
AES crypto encoding or decoding.
Definition at line 121 of file AArch64MacroFusion.cpp.
References llvm::MachineInstr::getOpcode().
Referenced by shouldScheduleAdjacent().
|
static |
CMN, CMP, TST followed by Bcc.
Definition at line 22 of file AArch64MacroFusion.cpp.
References llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), and llvm::MachineOperand::isReg().
Referenced by shouldScheduleAdjacent().
|
static |
ALU operations followed by CBZ/CBNZ.
Definition at line 71 of file AArch64MacroFusion.cpp.
References llvm::MachineInstr::getOpcode().
Referenced by shouldScheduleAdjacent().
|
static |
Definition at line 283 of file AArch64MacroFusion.cpp.
References llvm::MachineInstr::getOpcode().
Referenced by shouldScheduleAdjacent().
|
static |
Compare and conditional select.
Definition at line 240 of file AArch64MacroFusion.cpp.
References llvm::MachineInstr::definesRegister(), and llvm::MachineInstr::getOpcode().
Referenced by shouldScheduleAdjacent().
|
static |
AESE/AESD/PMULL + EOR.
Definition at line 139 of file AArch64MacroFusion.cpp.
References llvm::MachineInstr::getOpcode().
Referenced by shouldScheduleAdjacent().
|
static |
Literal generation.
Definition at line 171 of file AArch64MacroFusion.cpp.
References llvm::MachineOperand::getImm(), llvm::MachineInstr::getOpcode(), and llvm::MachineInstr::getOperand().
Referenced by shouldScheduleAdjacent().
|
static |
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 443 of file AArch64MacroFusion.cpp.
References isAddressLdStPair(), isAddSub2RegAndConstOnePair(), isAdrpAddPair(), isAESPair(), isArithmeticBccPair(), isArithmeticCbzPair(), isArithmeticLogicPair(), isCCSelectPair(), isCryptoEORPair(), and isLiteralsPair().
Referenced by llvm::createAArch64MacroFusionDAGMutation().