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] |