LLVM API Documentation
#include "AArch64.h"
#include "AArch64InstrInfo.h"
#include "AArch64RegisterInfo.h"
#include "AArch64Subtarget.h"
#include "llvm/ADT/Statistic.h"
#include "llvm/CodeGen/MachineFunction.h"
#include "llvm/CodeGen/MachineFunctionPass.h"
#include "llvm/CodeGen/MachineInstr.h"
#include "llvm/CodeGen/MachineInstrBuilder.h"
#include "llvm/CodeGen/MachineRegisterInfo.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/raw_ostream.h"
Go to the source code of this file.
Defines | |
#define | DEBUG_TYPE "aarch64-simd-scalar" |
Functions | |
STATISTIC (NumScalarInsnsUsed,"Number of scalar instructions used") | |
STATISTIC (NumCopiesDeleted,"Number of cross-class copies deleted") | |
STATISTIC (NumCopiesInserted,"Number of cross-class copies inserted") | |
static bool | isGPR64 (unsigned Reg, unsigned SubReg, const MachineRegisterInfo *MRI) |
static bool | isFPR64 (unsigned Reg, unsigned SubReg, const MachineRegisterInfo *MRI) |
static unsigned | getSrcFromCopy (const MachineInstr *MI, const MachineRegisterInfo *MRI, unsigned &SubReg) |
static int | getTransformOpcode (unsigned Opc) |
static bool | isTransformable (const MachineInstr *MI) |
static MachineInstr * | insertCopy (const AArch64InstrInfo *TII, MachineInstr *MI, unsigned Dst, unsigned Src, bool IsKill) |
Variables | |
static cl::opt< bool > | TransformAll ("aarch64-simd-scalar-force-all", cl::desc("Force use of AdvSIMD scalar instructions everywhere"), cl::init(false), cl::Hidden) |
#define DEBUG_TYPE "aarch64-simd-scalar" |
Definition at line 51 of file AArch64AdvSIMDScalarPass.cpp.
static unsigned getSrcFromCopy | ( | const MachineInstr * | MI, |
const MachineRegisterInfo * | MRI, | ||
unsigned & | SubReg | ||
) | [static] |
Definition at line 124 of file AArch64AdvSIMDScalarPass.cpp.
References llvm::TargetOpcode::COPY, llvm::MachineOperand::getImm(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::MachineOperand::getReg(), llvm::MachineOperand::getSubReg(), isFPR64(), and isGPR64().
static int getTransformOpcode | ( | unsigned | Opc | ) | [static] |
Definition at line 161 of file AArch64AdvSIMDScalarPass.cpp.
Referenced by isTransformable().
static MachineInstr* insertCopy | ( | const AArch64InstrInfo * | TII, |
MachineInstr * | MI, | ||
unsigned | Dst, | ||
unsigned | Src, | ||
bool | IsKill | ||
) | [static] |
Definition at line 271 of file AArch64AdvSIMDScalarPass.cpp.
References llvm::BuildMI(), llvm::TargetOpcode::COPY, llvm::dbgs(), DEBUG, llvm::MachineInstr::getDebugLoc(), llvm::getKillRegState(), llvm::MachineInstr::getParent(), and llvm::AArch64CC::MI.
Definition at line 110 of file AArch64AdvSIMDScalarPass.cpp.
References contains(), llvm::MachineRegisterInfo::getRegClass(), llvm::TargetRegisterClass::hasSuperClassEq(), and llvm::TargetRegisterInfo::isVirtualRegister().
Referenced by getSrcFromCopy().
Definition at line 101 of file AArch64AdvSIMDScalarPass.cpp.
References llvm::MachineRegisterInfo::getRegClass(), llvm::TargetRegisterClass::hasSuperClassEq(), and llvm::TargetRegisterInfo::isVirtualRegister().
Referenced by getSrcFromCopy().
static bool isTransformable | ( | const MachineInstr * | MI | ) | [static] |
Definition at line 181 of file AArch64AdvSIMDScalarPass.cpp.
References llvm::MachineInstr::getOpcode(), and getTransformOpcode().
STATISTIC | ( | NumScalarInsnsUsed | , |
"Number of scalar instructions used" | |||
) |
STATISTIC | ( | NumCopiesDeleted | , |
"Number of cross-class copies deleted" | |||
) |
STATISTIC | ( | NumCopiesInserted | , |
"Number of cross-class copies inserted" | |||
) |
cl::opt<bool> TransformAll("aarch64-simd-scalar-force-all", cl::desc("Force use of AdvSIMD scalar instructions everywhere"), cl::init(false), cl::Hidden) [static] |