LLVM 19.0.0git
Classes | Public Types | Public Member Functions | Public Attributes | List of all members
llvm::HexagonEvaluator Struct Reference

#include "Target/Hexagon/HexagonBitTracker.h"

Inheritance diagram for llvm::HexagonEvaluator:
Inheritance graph

Public Types

using CellMapType = BitTracker::CellMapType
using RegisterRef = BitTracker::RegisterRef
using RegisterCell = BitTracker::RegisterCell
using BranchTargetList = BitTracker::BranchTargetList

Public Member Functions

 HexagonEvaluator (const HexagonRegisterInfo &tri, MachineRegisterInfo &mri, const HexagonInstrInfo &tii, MachineFunction &mf)
bool evaluate (const MachineInstr &MI, const CellMapType &Inputs, CellMapType &Outputs) const override
bool evaluate (const MachineInstr &BI, const CellMapType &Inputs, BranchTargetList &Targets, bool &FallsThru) const override
BitTracker::BitMask mask (Register Reg, unsigned Sub) const override
uint16_t getPhysRegBitWidth (MCRegister Reg) const override
const TargetRegisterClasscomposeWithSubRegIndex (const TargetRegisterClass &RC, unsigned Idx) const override
- Public Member Functions inherited from llvm::BitTracker::MachineEvaluator
 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 (Register 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 (MCRegister Reg) const

Public Attributes

const HexagonInstrInfoTII
- Public Attributes inherited from llvm::BitTracker::MachineEvaluator
const TargetRegisterInfoTRI

Detailed Description

Definition at line 25 of file HexagonBitTracker.h.

Member Typedef Documentation

◆ BranchTargetList

Definition at line 29 of file HexagonBitTracker.h.

◆ CellMapType

Definition at line 26 of file HexagonBitTracker.h.

◆ RegisterCell

Definition at line 28 of file HexagonBitTracker.h.

◆ RegisterRef

Definition at line 27 of file HexagonBitTracker.h.

Constructor & Destructor Documentation

◆ HexagonEvaluator()

HexagonEvaluator::HexagonEvaluator ( const HexagonRegisterInfo tri,
MachineRegisterInfo mri,
const HexagonInstrInfo tii,
MachineFunction mf 

Member Function Documentation

◆ composeWithSubRegIndex()

const TargetRegisterClass & HexagonEvaluator::composeWithSubRegIndex ( const TargetRegisterClass RC,
unsigned  Idx 
) const

◆ evaluate() [1/2]

bool HexagonEvaluator::evaluate ( const MachineInstr BI,
const CellMapType Inputs,
BranchTargetList Targets,
bool FallsThru 
) const

◆ evaluate() [2/2]

bool HexagonEvaluator::evaluate ( const MachineInstr MI,
const CellMapType Inputs,
CellMapType Outputs 
) const

Reimplemented from llvm::BitTracker::MachineEvaluator.

Definition at line 185 of file HexagonBitTracker.cpp.

References A, assert(), llvm::BitTracker::RegisterCell::cat(), llvm::countr_zero(), llvm::BitTracker::MachineEvaluator::eADD(), llvm::BitTracker::MachineEvaluator::eAND(), llvm::BitTracker::MachineEvaluator::eASL(), llvm::BitTracker::MachineEvaluator::eASR(), llvm::BitTracker::MachineEvaluator::eCLB(), llvm::BitTracker::MachineEvaluator::eCTB(), llvm::BitTracker::MachineEvaluator::eIMM(), llvm::BitTracker::MachineEvaluator::eINS(), llvm::BitTracker::MachineEvaluator::eLSR(), llvm::BitTracker::MachineEvaluator::eMLS(), llvm::BitTracker::MachineEvaluator::eMLU(), llvm::BitTracker::MachineEvaluator::eNOT(), llvm::BitTracker::MachineEvaluator::eORL(), llvm::BitTracker::MachineEvaluator::eSUB(), llvm::BitTracker::MachineEvaluator::eSXT(), llvm::BitTracker::MachineEvaluator::eXOR(), llvm::BitTracker::MachineEvaluator::eXTR(), llvm::BitTracker::MachineEvaluator::eZXT(), F, llvm::BitTracker::RegisterCell::fill(), llvm::MachineFrameInfo::getObjectAlign(), llvm::BitTracker::MachineEvaluator::getRegBitWidth(), llvm::MachineRegisterInfo::getRegClass(), I, im, llvm::BitTracker::RegisterCell::insert(), llvm::BitTracker::BitValue::is(), MFI, MI, llvm::BitTracker::MachineEvaluator::MRI, N, op, llvm::BitTracker::MachineEvaluator::putCell(), R2, rc, llvm::BitTracker::RegisterCell::ref(), llvm::BitTracker::RegisterCell::self(), llvm::shuffle(), llvm::Align::value(), Wd, and llvm::BitTracker::RegisterCell::width().

◆ getPhysRegBitWidth()

uint16_t HexagonEvaluator::getPhysRegBitWidth ( MCRegister  Reg) const

◆ mask()

BT::BitMask HexagonEvaluator::mask ( Register  Reg,
unsigned  Sub 
) const

Member Data Documentation

◆ MF

MachineFunction& llvm::HexagonEvaluator::MF

Definition at line 46 of file HexagonBitTracker.h.

Referenced by getPhysRegBitWidth(), and HexagonEvaluator().


MachineFrameInfo& llvm::HexagonEvaluator::MFI

Definition at line 47 of file HexagonBitTracker.h.

Referenced by evaluate().


const HexagonInstrInfo& llvm::HexagonEvaluator::TII

Definition at line 48 of file HexagonBitTracker.h.

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