13#ifndef LLVM_LIB_TARGET_CSKY_CSKYSUBTARGET_H
14#define LLVM_LIB_TARGET_CSKY_CSKYSUBTARGET_H
24#define GET_SUBTARGETINFO_HEADER
25#include "CSKYGenSubtargetInfo.inc"
31 virtual void anchor();
39 enum CSKYProcFamilyEnum {
56 CSKYProcFamilyEnum CSKYProcFamily = Others;
60 bool HasFPUv2SingleFloat;
61 bool HasFPUv2DoubleFloat;
62 bool HasFPUv3HalfWord;
63 bool HasFPUv3HalfFloat;
64 bool HasFPUv3SingleFloat;
65 bool HasFPUv3DoubleFloat;
84 bool HasHardwareDivide;
85 bool HasHighRegisters;
93 bool EnableInterruptAttribute;
116 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
const SelectionDAGTargetInfo * getSelectionDAGInfo() const override
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
const CSKYTargetLowering * getTargetLowering() const override
bool hasFPUv3HalfFloat() const
bool enableStackSize() const
bool hasFPUv3DoubleFloat() const
const CSKYInstrInfo * getInstrInfo() const override
bool hasVDSPV2_FLOAT() const
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.