LLVM  6.0.0svn
Public Member Functions | Public Attributes | List of all members
llvm::BitTracker::MachineEvaluator Struct Referenceabstract

#include "Target/Hexagon/BitTracker.h"

Inheritance diagram for llvm::BitTracker::MachineEvaluator:
Inheritance graph
[legend]
Collaboration diagram for llvm::BitTracker::MachineEvaluator:
Collaboration graph
[legend]

Public Member Functions

 MachineEvaluator (const TargetRegisterInfo &T, MachineRegisterInfo &M)
 
virtual ~MachineEvaluator ()=default
 
uint16_t getRegBitWidth (const RegisterRef &RR) const
 
RegisterCell getCell (const RegisterRef &RR, const CellMapType &M) const
 
void putCell (const RegisterRef &RR, RegisterCell RC, CellMapType &M) const
 
RegisterCell getRef (const RegisterRef &RR, const CellMapType &M) const
 
bool isInt (const RegisterCell &A) const
 
uint64_t toInt (const RegisterCell &A) const
 
RegisterCell eIMM (int64_t V, uint16_t W) const
 
RegisterCell eIMM (const ConstantInt *CI) const
 
RegisterCell eADD (const RegisterCell &A1, const RegisterCell &A2) const
 
RegisterCell eSUB (const RegisterCell &A1, const RegisterCell &A2) const
 
RegisterCell eMLS (const RegisterCell &A1, const RegisterCell &A2) const
 
RegisterCell eMLU (const RegisterCell &A1, const RegisterCell &A2) const
 
RegisterCell eASL (const RegisterCell &A1, uint16_t Sh) const
 
RegisterCell eLSR (const RegisterCell &A1, uint16_t Sh) const
 
RegisterCell eASR (const RegisterCell &A1, uint16_t Sh) const
 
RegisterCell eAND (const RegisterCell &A1, const RegisterCell &A2) const
 
RegisterCell eORL (const RegisterCell &A1, const RegisterCell &A2) const
 
RegisterCell eXOR (const RegisterCell &A1, const RegisterCell &A2) const
 
RegisterCell eNOT (const RegisterCell &A1) const
 
RegisterCell eSET (const RegisterCell &A1, uint16_t BitN) const
 
RegisterCell eCLR (const RegisterCell &A1, uint16_t BitN) const
 
RegisterCell eCLB (const RegisterCell &A1, bool B, uint16_t W) const
 
RegisterCell eCTB (const RegisterCell &A1, bool B, uint16_t W) const
 
RegisterCell eSXT (const RegisterCell &A1, uint16_t FromN) const
 
RegisterCell eZXT (const RegisterCell &A1, uint16_t FromN) const
 
RegisterCell eXTR (const RegisterCell &A1, uint16_t B, uint16_t E) const
 
RegisterCell eINS (const RegisterCell &A1, const RegisterCell &A2, uint16_t AtN) const
 
virtual BitMask mask (unsigned Reg, unsigned Sub) const
 
virtual bool track (const TargetRegisterClass *RC) const
 
virtual bool evaluate (const MachineInstr &MI, const CellMapType &Inputs, CellMapType &Outputs) const
 
virtual bool evaluate (const MachineInstr &BI, const CellMapType &Inputs, BranchTargetList &Targets, bool &FallsThru) const =0
 
virtual const TargetRegisterClasscomposeWithSubRegIndex (const TargetRegisterClass &RC, unsigned Idx) const
 
virtual uint16_t getPhysRegBitWidth (unsigned Reg) const
 

Public Attributes

const TargetRegisterInfoTRI
 
MachineRegisterInfoMRI
 

Detailed Description

Definition at line 351 of file BitTracker.h.

Constructor & Destructor Documentation

◆ MachineEvaluator()

llvm::BitTracker::MachineEvaluator::MachineEvaluator ( const TargetRegisterInfo T,
MachineRegisterInfo M 
)
inline

Definition at line 352 of file BitTracker.h.

References llvm::AMDGPU::getRegBitWidth(), and MRI.

◆ ~MachineEvaluator()

virtual llvm::BitTracker::MachineEvaluator::~MachineEvaluator ( )
virtualdefault

Member Function Documentation

◆ composeWithSubRegIndex()

virtual const TargetRegisterClass& llvm::BitTracker::MachineEvaluator::composeWithSubRegIndex ( const TargetRegisterClass RC,
unsigned  Idx 
) const
inlinevirtual

Reimplemented in llvm::HexagonEvaluator.

Definition at line 441 of file BitTracker.h.

References llvm_unreachable.

Referenced by getRegBitWidth().

◆ eADD()

BT::RegisterCell BT::MachineEvaluator::eADD ( const RegisterCell A1,
const RegisterCell A2 
) const

◆ eAND()

BT::RegisterCell BT::MachineEvaluator::eAND ( const RegisterCell A1,
const RegisterCell A2 
) const

◆ eASL()

BT::RegisterCell BT::MachineEvaluator::eASL ( const RegisterCell A1,
uint16_t  Sh 
) const

◆ eASR()

BT::RegisterCell BT::MachineEvaluator::eASR ( const RegisterCell A1,
uint16_t  Sh 
) const

◆ eCLB()

BT::RegisterCell BT::MachineEvaluator::eCLB ( const RegisterCell A1,
bool  B,
uint16_t  W 
) const

◆ eCLR()

BT::RegisterCell BT::MachineEvaluator::eCLR ( const RegisterCell A1,
uint16_t  BitN 
) const

◆ eCTB()

BT::RegisterCell BT::MachineEvaluator::eCTB ( const RegisterCell A1,
bool  B,
uint16_t  W 
) const

◆ eIMM() [1/2]

BT::RegisterCell BT::MachineEvaluator::eIMM ( int64_t  V,
uint16_t  W 
) const

Definition at line 411 of file BitTracker.cpp.

References llvm::RISCVFenceField::W.

Referenced by eCLB(), eCTB(), and llvm::HexagonEvaluator::evaluate().

◆ eIMM() [2/2]

BT::RegisterCell BT::MachineEvaluator::eIMM ( const ConstantInt CI) const

◆ eINS()

BT::RegisterCell BT::MachineEvaluator::eINS ( const RegisterCell A1,
const RegisterCell A2,
uint16_t  AtN 
) const

◆ eLSR()

BT::RegisterCell BT::MachineEvaluator::eLSR ( const RegisterCell A1,
uint16_t  Sh 
) const

◆ eMLS()

BT::RegisterCell BT::MachineEvaluator::eMLS ( const RegisterCell A1,
const RegisterCell A2 
) const

◆ eMLU()

BT::RegisterCell BT::MachineEvaluator::eMLU ( const RegisterCell A1,
const RegisterCell A2 
) const

◆ eNOT()

BT::RegisterCell BT::MachineEvaluator::eNOT ( const RegisterCell A1) const

◆ eORL()

BT::RegisterCell BT::MachineEvaluator::eORL ( const RegisterCell A1,
const RegisterCell A2 
) const

◆ eSET()

BT::RegisterCell BT::MachineEvaluator::eSET ( const RegisterCell A1,
uint16_t  BitN 
) const

◆ eSUB()

BT::RegisterCell BT::MachineEvaluator::eSUB ( const RegisterCell A1,
const RegisterCell A2 
) const

◆ eSXT()

BT::RegisterCell BT::MachineEvaluator::eSXT ( const RegisterCell A1,
uint16_t  FromN 
) const

◆ evaluate() [1/2]

bool BT::MachineEvaluator::evaluate ( const MachineInstr MI,
const CellMapType Inputs,
CellMapType Outputs 
) const
virtual

Reimplemented in llvm::HexagonEvaluator.

Definition at line 719 of file BitTracker.cpp.

References assert(), B, llvm::SetVector< T, Vector, Set >::begin(), llvm::SetVector< T, Vector, Set >::clear(), llvm::dbgs(), llvm::SetVector< T, Vector, Set >::end(), llvm::WebAssembly::End, llvm::MachineBasicBlock::end(), llvm::BitTracker::RegisterCell::fill(), getCell(), llvm::MachineOperand::getImm(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::MachineBasicBlock::getNumber(), llvm::MachineInstr::getNumOperands(), llvm::MachineInstr::getOpcode(), llvm::MachineInstr::getOperand(), llvm::MachineInstr::getParent(), getRegBitWidth(), llvm::MachineOperand::getSubReg(), llvm::SetVector< T, Vector, Set >::insert(), llvm::BitTracker::RegisterCell::insert(), llvm::MachineInstr::isBranch(), llvm::MachineInstr::isDebugValue(), llvm::MachineOperand::isReg(), llvm::MachineOperand::isUse(), llvm::TargetRegisterInfo::isVirtualRegister(), mask(), llvm::BitTracker::RegisterCell::meet(), MI, MRI, llvm::MachineInstr::operands(), P, llvm::PrintReg(), putCell(), llvm::BitTracker::BitValue::Ref, llvm::BitTracker::RegisterCell::ref(), llvm::BitTracker::BitValue::RefI, llvm::BitTracker::BitRef::Reg, llvm::BitTracker::RegisterRef::Reg, llvm::BitTracker::RegisterCell::self(), llvm::SetVector< T, Vector, Set >::size(), llvm::ARM_MB::ST, llvm::BitTracker::RegisterRef::Sub, llvm::MachineBasicBlock::successors(), llvm::X86II::TB, llvm::BitTracker::BitValue::Type, llvm::MachineRegisterInfo::use_nodbg_instructions(), llvm::RISCVFenceField::W, llvm::BitTracker::RegisterCell::width(), and llvm::BitTracker::BitValue::Zero.

◆ evaluate() [2/2]

virtual bool llvm::BitTracker::MachineEvaluator::evaluate ( const MachineInstr BI,
const CellMapType Inputs,
BranchTargetList Targets,
bool FallsThru 
) const
pure virtual

Implemented in llvm::HexagonEvaluator.

◆ eXOR()

BT::RegisterCell BT::MachineEvaluator::eXOR ( const RegisterCell A1,
const RegisterCell A2 
) const

◆ eXTR()

BT::RegisterCell BT::MachineEvaluator::eXTR ( const RegisterCell A1,
uint16_t  B,
uint16_t  E 
) const

◆ eZXT()

BT::RegisterCell BT::MachineEvaluator::eZXT ( const RegisterCell A1,
uint16_t  FromN 
) const

◆ getCell()

BT::RegisterCell BT::MachineEvaluator::getCell ( const RegisterRef RR,
const CellMapType M 
) const

◆ getPhysRegBitWidth()

uint16_t BT::MachineEvaluator::getPhysRegBitWidth ( unsigned  Reg) const
virtual

◆ getRef()

RegisterCell llvm::BitTracker::MachineEvaluator::getRef ( const RegisterRef RR,
const CellMapType M 
) const
inline

◆ getRegBitWidth()

uint16_t BT::MachineEvaluator::getRegBitWidth ( const RegisterRef RR) const

◆ isInt()

bool BT::MachineEvaluator::isInt ( const RegisterCell A) const

Definition at line 387 of file BitTracker.cpp.

References llvm::RISCVFenceField::W, and llvm::BitTracker::RegisterCell::width().

Referenced by toInt().

◆ mask()

BT::BitMask BT::MachineEvaluator::mask ( unsigned  Reg,
unsigned  Sub 
) const
virtual

Reimplemented in llvm::HexagonEvaluator.

Definition at line 706 of file BitTracker.cpp.

References assert(), getRegBitWidth(), and llvm::RISCVFenceField::W.

Referenced by evaluate(), and getCell().

◆ putCell()

void BT::MachineEvaluator::putCell ( const RegisterRef RR,
RegisterCell  RC,
CellMapType M 
) const

◆ toInt()

uint64_t BT::MachineEvaluator::toInt ( const RegisterCell A) const

◆ track()

virtual bool llvm::BitTracker::MachineEvaluator::track ( const TargetRegisterClass RC) const
inlinevirtual

Definition at line 426 of file BitTracker.h.

References MI.

Referenced by getCell().

Member Data Documentation

◆ MRI

MachineRegisterInfo& llvm::BitTracker::MachineEvaluator::MRI

◆ TRI

const TargetRegisterInfo& llvm::BitTracker::MachineEvaluator::TRI

The documentation for this struct was generated from the following files: