Path: blob/main/contrib/llvm-project/llvm/lib/Target/CSKY/CSKYSubtarget.cpp
35266 views
//===-- CSKYSubtarget.h - Define Subtarget for the CSKY----------*- C++ -*-===//1//2// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3// See https://llvm.org/LICENSE.txt for license information.4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5//6//===----------------------------------------------------------------------===//7//8// This file declares the CSKY specific subclass of TargetSubtargetInfo.9//10//===----------------------------------------------------------------------===//1112#include "CSKYSubtarget.h"13#include "llvm/CodeGen/MachineFrameInfo.h"1415using namespace llvm;1617#define DEBUG_TYPE "csky-subtarget"18#define GET_SUBTARGETINFO_TARGET_DESC19#define GET_SUBTARGETINFO_CTOR20#include "CSKYGenSubtargetInfo.inc"2122void CSKYSubtarget::anchor() {}2324CSKYSubtarget &CSKYSubtarget::initializeSubtargetDependencies(25const Triple &TT, StringRef CPUName, StringRef TuneCPUName, StringRef FS) {2627if (CPUName.empty())28CPUName = "generic";29if (TuneCPUName.empty())30TuneCPUName = CPUName;3132UseHardFloat = false;33UseHardFloatABI = false;34HasFPUv2SingleFloat = false;35HasFPUv2DoubleFloat = false;36HasFPUv3HalfWord = false;37HasFPUv3HalfFloat = false;38HasFPUv3SingleFloat = false;39HasFPUv3DoubleFloat = false;40HasFdivdu = false;41HasFLOATE1 = false;42HasFLOAT1E2 = false;43HasFLOAT1E3 = false;44HasFLOAT3E4 = false;45HasFLOAT7E60 = false;46HasExtendLrw = false;47HasBTST16 = false;48HasTrust = false;49HasJAVA = false;50HasCache = false;51HasNVIC = false;52HasDSP = false;53HasDSP1E2 = false;54HasDSPE60 = false;55HasDSPV2 = false;56HasDSP_Silan = false;57HasDoloop = false;58HasHardwareDivide = false;59HasHighRegisters = false;60HasVDSPV2 = false;61HasVDSP2E3 = false;62HasVDSP2E60F = false;63ReadTPHard = false;64HasVDSPV1_128 = false;65UseCCRT = false;66DumpConstPool = false;67EnableInterruptAttribute = false;68HasPushPop = false;69HasSTM = false;70SmartMode = false;71EnableStackSize = false;7273HasE1 = false;74HasE2 = false;75Has2E3 = false;76HasMP = false;77Has3E3r1 = false;78Has3r1E3r2 = false;79Has3r2E3r3 = false;80Has3E7 = false;81HasMP1E2 = false;82Has7E10 = false;83Has10E60 = false;8485ParseSubtargetFeatures(CPUName, TuneCPUName, FS);86return *this;87}8889CSKYSubtarget::CSKYSubtarget(const Triple &TT, StringRef CPU, StringRef TuneCPU,90StringRef FS, const TargetMachine &TM)91: CSKYGenSubtargetInfo(TT, CPU, TuneCPU, FS),92FrameLowering(initializeSubtargetDependencies(TT, CPU, TuneCPU, FS)),93InstrInfo(*this), RegInfo(), TLInfo(TM, *this) {}9495bool CSKYSubtarget::useHardFloatABI() const {96auto FloatABI = getTargetLowering()->getTargetMachine().Options.FloatABIType;9798if (FloatABI == FloatABI::Default)99return UseHardFloatABI;100else101return FloatABI == FloatABI::Hard;102}103104105