//===-- CSKYSubtarget.h - Define Subtarget for the CSKY----------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // This file declares the CSKY specific subclass of TargetSubtargetInfo. // //===----------------------------------------------------------------------===// #include "CSKYSubtarget.h" #include "llvm/CodeGen/MachineFrameInfo.h" using namespace llvm; #define DEBUG_TYPE "csky-subtarget" #define GET_SUBTARGETINFO_TARGET_DESC #define GET_SUBTARGETINFO_CTOR #include "CSKYGenSubtargetInfo.inc" void CSKYSubtarget::anchor() {} CSKYSubtarget &CSKYSubtarget::initializeSubtargetDependencies( const Triple &TT, StringRef CPUName, StringRef TuneCPUName, StringRef FS) { if (CPUName.empty()) CPUName = "generic"; if (TuneCPUName.empty()) TuneCPUName = CPUName; UseHardFloat = false; UseHardFloatABI = false; HasFPUv2SingleFloat = false; HasFPUv2DoubleFloat = false; HasFPUv3HalfWord = false; HasFPUv3HalfFloat = false; HasFPUv3SingleFloat = false; HasFPUv3DoubleFloat = false; HasFdivdu = false; HasFLOATE1 = false; HasFLOAT1E2 = false; HasFLOAT1E3 = false; HasFLOAT3E4 = false; HasFLOAT7E60 = false; HasExtendLrw = false; HasBTST16 = false; HasTrust = false; HasJAVA = false; HasCache = false; HasNVIC = false; HasDSP = false; HasDSP1E2 = false; HasDSPE60 = false; HasDSPV2 = false; HasDSP_Silan = false; HasDoloop = false; HasHardwareDivide = false; HasHighRegisters = false; HasVDSPV2 = false; HasVDSP2E3 = false; HasVDSP2E60F = false; ReadTPHard = false; HasVDSPV1_128 = false; UseCCRT = false; DumpConstPool = false; EnableInterruptAttribute = false; HasPushPop = false; HasSTM = false; SmartMode = false; EnableStackSize = false; HasE1 = false; HasE2 = false; Has2E3 = false; HasMP = false; Has3E3r1 = false; Has3r1E3r2 = false; Has3r2E3r3 = false; Has3E7 = false; HasMP1E2 = false; Has7E10 = false; Has10E60 = false; ParseSubtargetFeatures(CPUName, TuneCPUName, FS); return *this; } CSKYSubtarget::CSKYSubtarget(const Triple &TT, StringRef CPU, StringRef TuneCPU, StringRef FS, const TargetMachine &TM) : CSKYGenSubtargetInfo(TT, CPU, TuneCPU, FS), FrameLowering(initializeSubtargetDependencies(TT, CPU, TuneCPU, FS)), InstrInfo(*this), RegInfo(), TLInfo(TM, *this) {} bool CSKYSubtarget::useHardFloatABI() const { auto FloatABI = getTargetLowering()->getTargetMachine().Options.FloatABIType; if (FloatABI == FloatABI::Default) return UseHardFloatABI; else return FloatABI == FloatABI::Hard; }