14#ifndef LLVM_LIB_TARGET_AMDGPU_R600SUBTARGET_H
15#define LLVM_LIB_TARGET_AMDGPU_R600SUBTARGET_H
23#define GET_SUBTARGETINFO_HEADER
24#include "R600GenSubtargetInfo.inc"
31#define GET_SUBTARGETINFO_MACRO(ATTRIBUTE, DEFAULT, GETTER) \
32 bool ATTRIBUTE = DEFAULT;
33#include "R600GenSubtargetInfo.inc"
36 R600InstrInfo InstrInfo;
37 R600FrameLowering FrameLowering;
38 short TexVTXClauseSize = 0;
39 Generation Gen =
R600;
40 R600TargetLowering TLInfo;
41 InstrItineraryData InstrItins;
42 std::unique_ptr<const SelectionDAGTargetInfo> TSInfo;
46 const TargetMachine &TM);
53 return &FrameLowering;
61 return &InstrInfo.getRegisterInfo();
114 bool hasFMA()
const override {
return HasFMA; }
120 bool hasFP64()
const override {
return HasFP64; }
Base class for AMDGPU specific classes of TargetSubtarget.
R600 DAG Lowering interface definition.
Interface definition for R600InstrInfo.
AMDGPUSubtarget(Triple TT)
Itinerary data supplied by a subtarget to be used by a target.
bool hasMadMacF32Insts() const override
bool hasVertexCache() const
bool enablePromoteAlloca() const override
unsigned getMinFlatWorkGroupSize() const override
unsigned getMaxWorkGroupsPerCU(unsigned FlatWorkGroupSize) const override
bool hasFP64() const override
short getTexVTXClauseSize() const
unsigned getMaxFlatWorkGroupSize() const override
R600Subtarget(const Triple &TT, StringRef CPU, StringRef FS, const TargetMachine &TM)
unsigned getWavesPerEUForWorkGroup(unsigned FlatWorkGroupSize) const override
const R600FrameLowering * getFrameLowering() const override
bool hasCaymanISA() const
bool requiresDisjointEarlyClobberAndUndef() const override
unsigned getMinWavesPerEU() const override
const R600TargetLowering * getTargetLowering() const override
const R600RegisterInfo * getRegisterInfo() const override
bool hasFMA() const override
~R600Subtarget() override
const R600InstrInfo * getInstrInfo() const override
const SelectionDAGTargetInfo * getSelectionDAGInfo() const override
bool enableSubRegLiveness() const override
R600Subtarget & initializeSubtargetDependencies(const Triple &TT, StringRef GPU, StringRef FS)
bool hasBCNT(unsigned Size) const
Align getStackAlignment() const
Generation getGeneration() const
void ParseSubtargetFeatures(StringRef CPU, StringRef TuneCPU, StringRef FS)
const InstrItineraryData * getInstrItineraryData() const override
bool enableMachineScheduler() const override
Targets can subclass this to parameterize the SelectionDAG lowering and instruction selection process...
StringRef - Represent a constant reference to a string, i.e.
Triple - Helper class for working with autoconf configuration names.
unsigned getWavesPerEUForWorkGroup(const MCSubtargetInfo *STI, unsigned FlatWorkGroupSize)
unsigned getMaxWorkGroupsPerCU(const MCSubtargetInfo *STI, unsigned FlatWorkGroupSize)
unsigned getMaxFlatWorkGroupSize(const MCSubtargetInfo *STI)
unsigned getMinFlatWorkGroupSize(const MCSubtargetInfo *STI)
unsigned getMinWavesPerEU(const MCSubtargetInfo *STI)
This is an optimization pass for GlobalISel generic memory operations.
This struct is a compact representation of a valid (non-zero power of two) alignment.