LLVM 20.0.0git
Classes | Namespaces
DetectDeadLanes.h File Reference

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 "llvm/ADT/BitVector.h"
#include "llvm/MC/LaneBitmask.h"
#include <deque>

Go to the source code of this file.

Classes

class  llvm::DeadLaneDetector
 
struct  llvm::DeadLaneDetector::VRegInfo
 Contains a bitmask of which lanes of a given virtual register are defined and which ones are actually used. More...
 

Namespaces

namespace  llvm
 This is an optimization pass for GlobalISel generic memory operations.
 

Detailed Description

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: %0 = some definition %1 = IMPLICIT_DEF %2 = REG_SEQUENCE %0, sub0, %1, sub1 %3 = EXTRACT_SUBREG %2, sub1 = use %3 The %0 definition is dead and %3 contains an undefined value.

Definition in file DetectDeadLanes.h.