#include "MCInstrDescView.h"
#include <iterator>
#include <tuple>
#include "llvm/ADT/STLExtras.h"
namespace llvm {
namespace exegesis {
unsigned Variable::getIndex() const { … }
unsigned Variable::getPrimaryOperandIndex() const { … }
bool Variable::hasTiedOperands() const { … }
unsigned Operand::getIndex() const { … }
bool Operand::isExplicit() const { … }
bool Operand::isImplicit() const { … }
bool Operand::isImplicitReg() const { … }
bool Operand::isDef() const { … }
bool Operand::isUse() const { … }
bool Operand::isReg() const { … }
bool Operand::isTied() const { … }
bool Operand::isVariable() const { … }
bool Operand::isMemory() const { … }
bool Operand::isImmediate() const { … }
unsigned Operand::getTiedToIndex() const { … }
unsigned Operand::getVariableIndex() const { … }
unsigned Operand::getImplicitReg() const { … }
const RegisterAliasingTracker &Operand::getRegisterAliasing() const { … }
const MCOperandInfo &Operand::getExplicitOperandInfo() const { … }
const BitVector *BitVectorCache::getUnique(BitVector &&BV) const { … }
Instruction::Instruction(const MCInstrDesc *Description, StringRef Name,
SmallVector<Operand, 8> Operands,
SmallVector<Variable, 4> Variables,
const BitVector *ImplDefRegs,
const BitVector *ImplUseRegs,
const BitVector *AllDefRegs,
const BitVector *AllUseRegs)
: … { … }
std::unique_ptr<Instruction>
Instruction::create(const MCInstrInfo &InstrInfo,
const RegisterAliasingTrackerCache &RATC,
const BitVectorCache &BVC, unsigned Opcode) { … }
const Operand &Instruction::getPrimaryOperand(const Variable &Var) const { … }
bool Instruction::hasMemoryOperands() const { … }
bool Instruction::hasAliasingImplicitRegisters() const { … }
static bool anyCommonExcludingForbidden(const BitVector &A, const BitVector &B,
const BitVector &Forbidden) { … }
bool Instruction::hasAliasingRegistersThrough(
const Instruction &OtherInstr, const BitVector &ForbiddenRegisters) const { … }
bool Instruction::hasTiedRegisters() const { … }
bool Instruction::hasAliasingRegisters(
const BitVector &ForbiddenRegisters) const { … }
bool Instruction::hasOneUseOrOneDef() const { … }
void Instruction::dump(const MCRegisterInfo &RegInfo,
const RegisterAliasingTrackerCache &RATC,
raw_ostream &Stream) const { … }
InstructionsCache::InstructionsCache(const MCInstrInfo &InstrInfo,
const RegisterAliasingTrackerCache &RATC)
: … { … }
const Instruction &InstructionsCache::getInstr(unsigned Opcode) const { … }
bool RegisterOperandAssignment::
operator==(const RegisterOperandAssignment &Other) const { … }
bool AliasingRegisterOperands::
operator==(const AliasingRegisterOperands &Other) const { … }
static void
addOperandIfAlias(const MCPhysReg Reg, bool SelectDef,
ArrayRef<Operand> Operands,
SmallVectorImpl<RegisterOperandAssignment> &OperandValues) { … }
bool AliasingRegisterOperands::hasImplicitAliasing() const { … }
bool AliasingConfigurations::empty() const { … }
bool AliasingConfigurations::hasImplicitAliasing() const { … }
AliasingConfigurations::AliasingConfigurations(
const Instruction &DefInstruction, const Instruction &UseInstruction,
const BitVector &ForbiddenRegisters) { … }
void DumpMCOperand(const MCRegisterInfo &MCRegisterInfo, const MCOperand &Op,
raw_ostream &OS) { … }
void DumpMCInst(const MCRegisterInfo &MCRegisterInfo,
const MCInstrInfo &MCInstrInfo, const MCInst &MCInst,
raw_ostream &OS) { … }
}
}