diff options
Diffstat (limited to 'lib/Target/AMDGPU/AMDGPUInstrInfo.h')
-rw-r--r-- | lib/Target/AMDGPU/AMDGPUInstrInfo.h | 48 |
1 files changed, 27 insertions, 21 deletions
diff --git a/lib/Target/AMDGPU/AMDGPUInstrInfo.h b/lib/Target/AMDGPU/AMDGPUInstrInfo.h index a9fcd4834638..2f8166da0d33 100644 --- a/lib/Target/AMDGPU/AMDGPUInstrInfo.h +++ b/lib/Target/AMDGPU/AMDGPUInstrInfo.h @@ -8,7 +8,7 @@ //===----------------------------------------------------------------------===// // /// \file -/// \brief Contains the definition of a TargetInstrInfo class that is common +/// Contains the definition of a TargetInstrInfo class that is common /// to all AMD GPUs. // //===----------------------------------------------------------------------===// @@ -20,37 +20,43 @@ #include "Utils/AMDGPUBaseInfo.h" #include "llvm/CodeGen/TargetInstrInfo.h" -#define GET_INSTRINFO_HEADER -#include "AMDGPUGenInstrInfo.inc" -#undef GET_INSTRINFO_HEADER - namespace llvm { -class AMDGPUSubtarget; +class GCNSubtarget; class MachineFunction; class MachineInstr; class MachineInstrBuilder; -class AMDGPUInstrInfo : public AMDGPUGenInstrInfo { -private: - const AMDGPUSubtarget &ST; +class AMDGPUInstrInfo { +public: + explicit AMDGPUInstrInfo(const GCNSubtarget &st); - virtual void anchor(); -protected: - AMDGPUAS AMDGPUASI; + static bool isUniformMMO(const MachineMemOperand *MMO); +}; -public: - explicit AMDGPUInstrInfo(const AMDGPUSubtarget &st); +namespace AMDGPU { - bool shouldScheduleLoadsNear(SDNode *Load1, SDNode *Load2, - int64_t Offset1, int64_t Offset2, - unsigned NumLoads) const override; +struct RsrcIntrinsic { + unsigned Intr; + uint8_t RsrcArg; + bool IsImage; +}; +const RsrcIntrinsic *lookupRsrcIntrinsic(unsigned Intr); + +struct D16ImageDimIntrinsic { + unsigned Intr; + unsigned D16HelperIntr; +}; +const D16ImageDimIntrinsic *lookupD16ImageDimIntrinsic(unsigned Intr); - /// \brief Return a target-specific opcode if Opcode is a pseudo instruction. - /// Return -1 if the target-specific opcode for the pseudo instruction does - /// not exist. If Opcode is not a pseudo instruction, this is identity. - int pseudoToMCOpcode(int Opcode) const; +struct ImageDimIntrinsicInfo { + unsigned Intr; + unsigned BaseOpcode; + MIMGDim Dim; }; +const ImageDimIntrinsicInfo *getImageDimIntrinsicInfo(unsigned Intr); + +} // end AMDGPU namespace } // End llvm namespace #endif |