10b57cec5SDimitry Andric //===- TargetSubtargetInfo.cpp - General Target Information ----------------==//
20b57cec5SDimitry Andric //
30b57cec5SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
40b57cec5SDimitry Andric // See https://llvm.org/LICENSE.txt for license information.
50b57cec5SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
60b57cec5SDimitry Andric //
70b57cec5SDimitry Andric //===----------------------------------------------------------------------===//
80b57cec5SDimitry Andric //
90b57cec5SDimitry Andric /// \file This file describes the general parts of a Subtarget.
100b57cec5SDimitry Andric //
110b57cec5SDimitry Andric //===----------------------------------------------------------------------===//
120b57cec5SDimitry Andric
130b57cec5SDimitry Andric #include "llvm/CodeGen/TargetSubtargetInfo.h"
140b57cec5SDimitry Andric
150b57cec5SDimitry Andric using namespace llvm;
160b57cec5SDimitry Andric
TargetSubtargetInfo(const Triple & TT,StringRef CPU,StringRef TuneCPU,StringRef FS,ArrayRef<SubtargetFeatureKV> PF,ArrayRef<SubtargetSubTypeKV> PD,const MCWriteProcResEntry * WPR,const MCWriteLatencyEntry * WL,const MCReadAdvanceEntry * RA,const InstrStage * IS,const unsigned * OC,const unsigned * FP)170b57cec5SDimitry Andric TargetSubtargetInfo::TargetSubtargetInfo(
18e8d8bef9SDimitry Andric const Triple &TT, StringRef CPU, StringRef TuneCPU, StringRef FS,
190b57cec5SDimitry Andric ArrayRef<SubtargetFeatureKV> PF, ArrayRef<SubtargetSubTypeKV> PD,
20e8d8bef9SDimitry Andric const MCWriteProcResEntry *WPR, const MCWriteLatencyEntry *WL,
21e8d8bef9SDimitry Andric const MCReadAdvanceEntry *RA, const InstrStage *IS, const unsigned *OC,
22e8d8bef9SDimitry Andric const unsigned *FP)
23e8d8bef9SDimitry Andric : MCSubtargetInfo(TT, CPU, TuneCPU, FS, PF, PD, WPR, WL, RA, IS, OC, FP) {}
240b57cec5SDimitry Andric
250b57cec5SDimitry Andric TargetSubtargetInfo::~TargetSubtargetInfo() = default;
260b57cec5SDimitry Andric
enableAtomicExpand() const270b57cec5SDimitry Andric bool TargetSubtargetInfo::enableAtomicExpand() const {
280b57cec5SDimitry Andric return true;
290b57cec5SDimitry Andric }
300b57cec5SDimitry Andric
enableIndirectBrExpand() const310b57cec5SDimitry Andric bool TargetSubtargetInfo::enableIndirectBrExpand() const {
320b57cec5SDimitry Andric return false;
330b57cec5SDimitry Andric }
340b57cec5SDimitry Andric
enableMachineScheduler() const350b57cec5SDimitry Andric bool TargetSubtargetInfo::enableMachineScheduler() const {
360b57cec5SDimitry Andric return false;
370b57cec5SDimitry Andric }
380b57cec5SDimitry Andric
enableJoinGlobalCopies() const390b57cec5SDimitry Andric bool TargetSubtargetInfo::enableJoinGlobalCopies() const {
400b57cec5SDimitry Andric return enableMachineScheduler();
410b57cec5SDimitry Andric }
420b57cec5SDimitry Andric
enableRALocalReassignment(CodeGenOptLevel OptLevel) const430b57cec5SDimitry Andric bool TargetSubtargetInfo::enableRALocalReassignment(
44*5f757f3fSDimitry Andric CodeGenOptLevel OptLevel) const {
450b57cec5SDimitry Andric return true;
460b57cec5SDimitry Andric }
470b57cec5SDimitry Andric
enablePostRAScheduler() const480b57cec5SDimitry Andric bool TargetSubtargetInfo::enablePostRAScheduler() const {
490b57cec5SDimitry Andric return getSchedModel().PostRAScheduler;
500b57cec5SDimitry Andric }
510b57cec5SDimitry Andric
enablePostRAMachineScheduler() const52480093f4SDimitry Andric bool TargetSubtargetInfo::enablePostRAMachineScheduler() const {
53480093f4SDimitry Andric return enableMachineScheduler() && enablePostRAScheduler();
54480093f4SDimitry Andric }
55480093f4SDimitry Andric
useAA() const560b57cec5SDimitry Andric bool TargetSubtargetInfo::useAA() const {
570b57cec5SDimitry Andric return false;
580b57cec5SDimitry Andric }
590b57cec5SDimitry Andric
mirFileLoaded(MachineFunction & MF) const600b57cec5SDimitry Andric void TargetSubtargetInfo::mirFileLoaded(MachineFunction &MF) const { }
61