13#ifndef LLVM_LIB_TARGET_CSKY_CSKYSUBTARGET_H 
   14#define LLVM_LIB_TARGET_CSKY_CSKYSUBTARGET_H 
   23#define GET_SUBTARGETINFO_HEADER 
   24#include "CSKYGenSubtargetInfo.inc" 
   30  virtual void anchor();
 
   36  std::unique_ptr<const SelectionDAGTargetInfo> TSInfo;
 
   38  enum CSKYProcFamilyEnum {
 
   55  CSKYProcFamilyEnum CSKYProcFamily = Others;
 
   59  bool HasFPUv2SingleFloat;
 
   60  bool HasFPUv2DoubleFloat;
 
   61  bool HasFPUv3HalfWord;
 
   62  bool HasFPUv3HalfFloat;
 
   63  bool HasFPUv3SingleFloat;
 
   64  bool HasFPUv3DoubleFloat;
 
   83  bool HasHardwareDivide;
 
   84  bool HasHighRegisters;
 
   92  bool EnableInterruptAttribute;
 
  117    return &FrameLowering;
 
 
  141  bool hasFPUv2()
 const { 
return HasFPUv2SingleFloat || HasFPUv2DoubleFloat; }
 
  147    return HasFPUv3HalfFloat || HasFPUv3SingleFloat || HasFPUv3DoubleFloat;
 
 
  172    return HasVDSPV2 && UseHardFloat && HasFPUv3HalfFloat;
 
 
  186  bool hasE1()
 const { 
return HasE1; }
 
  187  bool hasE2()
 const { 
return HasE2; }
 
  193  bool hasMP()
 const { 
return HasMP; }
 
  198  bool isCK801()
 const { 
return CSKYProcFamily == CK801; }
 
  199  bool isCK802()
 const { 
return CSKYProcFamily == CK802; }
 
  200  bool isCK803()
 const { 
return CSKYProcFamily == CK803; }
 
  201  bool isCK803S()
 const { 
return CSKYProcFamily == CK803S; }
 
  202  bool isCK804()
 const { 
return CSKYProcFamily == CK804; }
 
  203  bool isCK805()
 const { 
return CSKYProcFamily == CK805; }
 
  204  bool isCK807()
 const { 
return CSKYProcFamily == CK807; }
 
  205  bool isCK810()
 const { 
return CSKYProcFamily == CK810; }
 
  206  bool isCK810V()
 const { 
return CSKYProcFamily == CK810V; }
 
  207  bool isCK860()
 const { 
return CSKYProcFamily == CK860; }
 
  208  bool isCK860V()
 const { 
return CSKYProcFamily == CK860V; }
 
 
bool hasHighRegisters() const
 
bool hasFPUv2SingleFloat() const
 
const CSKYFrameLowering * getFrameLowering() const override
 
bool hasVDSPV2_HALF() const
 
bool hasFPUv3SingleFloat() const
 
CSKYSubtarget & initializeSubtargetDependencies(const Triple &TT, StringRef CPU, StringRef TuneCPU, StringRef FS)
Initializes using the passed in CPU and feature strings so that we can use initializer lists for subt...
 
void ParseSubtargetFeatures(StringRef CPU, StringRef TuneCPU, StringRef FS)
 
const CSKYRegisterInfo * getRegisterInfo() const override
 
bool dumpConstPool() const
 
bool hasFLOAT7E60() const
 
bool enableInterruptAttribute() const
 
bool hasFPUv2DoubleFloat() const
 
bool hasAnyFloatExt() const
 
bool hasDSP_Silan() const
 
bool hasVDSPV1_128() const
 
bool hasExtendLrw() const
 
bool hasFPUv3HalfWord() const
 
bool useHardFloatABI() const
 
bool useHardFloat() const
 
bool hasVDSP2E60F() const
 
CSKYSubtarget(const Triple &TT, StringRef CPU, StringRef TuneCPU, StringRef FS, const TargetMachine &TM)
 
~CSKYSubtarget() override
 
const CSKYTargetLowering * getTargetLowering() const override
 
bool hasFPUv3HalfFloat() const
 
bool enableStackSize() const
 
bool hasFPUv3DoubleFloat() const
 
const CSKYInstrInfo * getInstrInfo() const override
 
bool hasVDSPV2_FLOAT() const
 
const SelectionDAGTargetInfo * getSelectionDAGInfo() 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.
 
Primary interface to the complete machine description for the target machine.
 
Triple - Helper class for working with autoconf configuration names.
 
This is an optimization pass for GlobalISel generic memory operations.