24#define DEBUG_TYPE "R600tti" 
   29      TLI(ST->getTargetLowering()), CommonTTI(TM, 
F) {}
 
 
   36  bool Vec = ClassID == 1;
 
 
   67                                             unsigned AddrSpace)
 const {
 
 
   76                                              unsigned AddrSpace)
 const {
 
 
   82                                               unsigned AddrSpace)
 const {
 
 
   99    return Opcode == Instruction::PHI ? 0 : 1;
 
  103  case Instruction::Br:
 
  104  case Instruction::Ret:
 
 
  115                                                const Value *Op1)
 const {
 
  117  case Instruction::ExtractElement:
 
  118  case Instruction::InsertElement: {
 
  131    return Index == ~0u ? 2 : 0;
 
 
  141  CommonTTI.getUnrollingPreferences(L, SE, UP, ORE);
 
 
  146  CommonTTI.getPeelingPreferences(L, SE, PP);
 
 
The AMDGPU TargetMachine interface definition for hw codegen targets.
 
static cl::opt< OutputCostKind > CostKind("cost-kind", cl::desc("Target cost kind"), cl::init(OutputCostKind::RecipThroughput), cl::values(clEnumValN(OutputCostKind::RecipThroughput, "throughput", "Reciprocal throughput"), clEnumValN(OutputCostKind::Latency, "latency", "Instruction latency"), clEnumValN(OutputCostKind::CodeSize, "code-size", "Code size"), clEnumValN(OutputCostKind::SizeAndLatency, "size-latency", "Code size and latency"), clEnumValN(OutputCostKind::All, "all", "Print all cost kinds")))
 
AMDGPU R600 specific subclass of TargetSubtarget.
 
InstructionCost getVectorInstrCost(unsigned Opcode, Type *Val, TTI::TargetCostKind CostKind, unsigned Index, const Value *Op0, const Value *Op1) const override
 
InstructionCost getCFInstrCost(unsigned Opcode, TTI::TargetCostKind CostKind, const Instruction *I=nullptr) const override
 
constexpr bool isScalar() const
Exactly one element.
 
Represents a single loop in the control flow graph.
 
InstructionCost getVectorInstrCost(unsigned Opcode, Type *ValTy, TTI::TargetCostKind CostKind, unsigned Index, const Value *Op0, const Value *Op1) const override
 
bool isLegalToVectorizeMemChain(unsigned ChainSizeInBytes, Align Alignment, unsigned AddrSpace) const
 
void getUnrollingPreferences(Loop *L, ScalarEvolution &SE, TTI::UnrollingPreferences &UP, OptimizationRemarkEmitter *ORE) const override
 
bool isLegalToVectorizeStoreChain(unsigned ChainSizeInBytes, Align Alignment, unsigned AddrSpace) const override
 
unsigned getMinVectorRegisterBitWidth() const override
 
unsigned getMaxInterleaveFactor(ElementCount VF) const override
 
unsigned getLoadStoreVecRegBitWidth(unsigned AddrSpace) const override
 
R600TTIImpl(const AMDGPUTargetMachine *TM, const Function &F)
 
unsigned getHardwareNumberOfRegisters(bool Vec) const
 
InstructionCost getCFInstrCost(unsigned Opcode, TTI::TargetCostKind CostKind, const Instruction *I=nullptr) const override
 
bool isLegalToVectorizeLoadChain(unsigned ChainSizeInBytes, Align Alignment, unsigned AddrSpace) const override
 
void getPeelingPreferences(Loop *L, ScalarEvolution &SE, TTI::PeelingPreferences &PP) const override
 
TypeSize getRegisterBitWidth(TargetTransformInfo::RegisterKind Vector) const override
 
unsigned getNumberOfRegisters(unsigned ClassID) const override
 
The main scalar evolution driver.
 
static constexpr TypeSize getFixed(ScalarTy ExactSize)
 
The instances of the Type class are immutable: once they are created, they are never changed.
 
LLVM Value Representation.
 
#define llvm_unreachable(msg)
Marks that the current location is not supposed to be reachable.
 
@ PARAM_D_ADDRESS
end Internal address spaces.
 
@ REGION_ADDRESS
Address space for region memory. (GDS)
 
@ LOCAL_ADDRESS
Address space for local memory.
 
@ PARAM_I_ADDRESS
Address space for indirect addressable parameter memory (VTX1).
 
@ CONSTANT_ADDRESS
Address space for constant memory (VTX2).
 
@ GLOBAL_ADDRESS
Address space for global memory (RAT0, VTX0).
 
@ PRIVATE_ADDRESS
Address space for private memory.
 
This is an optimization pass for GlobalISel generic memory operations.
 
decltype(auto) cast(const From &Val)
cast<X> - Return the argument parameter cast to the specified type.
 
This struct is a compact representation of a valid (non-zero power of two) alignment.