52 lines · cpp
1//===- XtensaSubtarget.cpp - Xtensa Subtarget Information -----------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8//9// This file implements the Xtensa specific subclass of TargetSubtargetInfo.10//11//===----------------------------------------------------------------------===//12 13#include "XtensaSubtarget.h"14#include "XtensaSelectionDAGInfo.h"15#include "llvm/IR/GlobalValue.h"16#include "llvm/Support/Debug.h"17 18#define DEBUG_TYPE "xtensa-subtarget"19 20#define GET_SUBTARGETINFO_TARGET_DESC21#define GET_SUBTARGETINFO_CTOR22#include "XtensaGenSubtargetInfo.inc"23 24using namespace llvm;25 26XtensaSubtarget &27XtensaSubtarget::initializeSubtargetDependencies(StringRef CPU, StringRef FS) {28 StringRef CPUName = CPU;29 if (CPUName.empty()) {30 // set default cpu name31 CPUName = "generic";32 }33 34 // Parse features string.35 ParseSubtargetFeatures(CPUName, CPUName, FS);36 return *this;37}38 39XtensaSubtarget::XtensaSubtarget(const Triple &TT, StringRef CPU, StringRef FS,40 const TargetMachine &TM)41 : XtensaGenSubtargetInfo(TT, CPU, /*TuneCPU=*/CPU, FS), TargetTriple(TT),42 InstrInfo(initializeSubtargetDependencies(CPU, FS)), TLInfo(TM, *this),43 FrameLowering(*this) {44 TSInfo = std::make_unique<SelectionDAGTargetInfo>();45}46 47XtensaSubtarget::~XtensaSubtarget() = default;48 49const SelectionDAGTargetInfo *XtensaSubtarget::getSelectionDAGInfo() const {50 return TSInfo.get();51}52