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; }
118 bool hasFP64()
const override {
return HasFP64; }
Base class for AMDGPU specific classes of TargetSubtarget.
R600 DAG Lowering interface definition.
Interface definition for R600InstrInfo.
AMDGPUSubtarget(const Triple &TT)
Itinerary data supplied by a subtarget to be used by a target.
bool hasMadMacF32Insts() const override
bool hasVertexCache() const
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.