|
LLVM
4.0.0
|
Analysis that tracks defined/used subregister lanes across COPY instructions and instructions that get lowered to a COPY (PHI, REG_SEQUENCE, INSERT_SUBREG, EXTRACT_SUBREG). More...
#include <deque>#include <vector>#include "llvm/ADT/BitVector.h"#include "llvm/ADT/SetVector.h"#include "llvm/CodeGen/MachineFunctionPass.h"#include "llvm/CodeGen/MachineRegisterInfo.h"#include "llvm/CodeGen/Passes.h"#include "llvm/InitializePasses.h"#include "llvm/Pass.h"#include "llvm/PassRegistry.h"#include "llvm/Support/Debug.h"#include "llvm/Support/raw_ostream.h"#include "llvm/Target/TargetInstrInfo.h"#include "llvm/Target/TargetRegisterInfo.h"#include "llvm/Target/TargetSubtargetInfo.h"Go to the source code of this file.
Macros | |
| #define | DEBUG_TYPE "detect-dead-lanes" |
Functions | |
| INITIALIZE_PASS (DetectDeadLanes,"detect-dead-lanes","Detect Dead Lanes", false, false) static bool lowersToCopies(const MachineInstr &MI) | |
Returns true if MI will get lowered to a series of COPY instructions. More... | |
| static bool | isCrossCopy (const MachineRegisterInfo &MRI, const MachineInstr &MI, const TargetRegisterClass *DstRC, const MachineOperand &MO) |
Analysis that tracks defined/used subregister lanes across COPY instructions and instructions that get lowered to a COPY (PHI, REG_SEQUENCE, INSERT_SUBREG, EXTRACT_SUBREG).
The information is used to detect dead definitions and the usage of (completely) undefined values and mark the operands as such. This pass is necessary because the dead/undef status is not obvious anymore when subregisters are involved.
Example: vreg0 = some definition vreg1 = IMPLICIT_DEF vreg2 = REG_SEQUENCE vreg0, sub0, vreg1, sub1 vreg3 = EXTRACT_SUBREG vreg2, sub1 = use vreg3 The vreg0 definition is dead and vreg3 contains an undefined value.
Definition in file DetectDeadLanes.cpp.
| #define DEBUG_TYPE "detect-dead-lanes" |
Definition at line 48 of file DetectDeadLanes.cpp.
| INITIALIZE_PASS | ( | DetectDeadLanes | , |
| "detect-dead-lanes" | , | ||
| "Detect Dead Lanes" | , | ||
| false | , | ||
| false | |||
| ) | const |
Returns true if MI will get lowered to a series of COPY instructions.
We call this a COPY-like instruction.
Definition at line 135 of file DetectDeadLanes.cpp.
|
static |
Definition at line 155 of file DetectDeadLanes.cpp.
References assert(), llvm::TargetRegisterInfo::composeSubRegIndices(), llvm::TargetRegisterInfo::getCommonSubClass(), llvm::TargetRegisterInfo::getCommonSuperRegClass(), llvm::MachineOperand::getImm(), llvm::TargetRegisterInfo::getMatchingSuperRegClass(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::MachineInstr::getOperandNo(), llvm::MachineOperand::getReg(), llvm::MachineRegisterInfo::getRegClass(), llvm::MachineOperand::getSubReg(), llvm::MachineRegisterInfo::getTargetRegisterInfo(), and SubReg.
1.8.6