Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/contrib/llvm-project/llvm/lib/Target/ARC/ARCSubtarget.h
35266 views
1
//===- ARCSubtarget.h - Define Subtarget for the ARC ------------*- C++ -*-===//
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-exception
6
//
7
//===----------------------------------------------------------------------===//
8
//
9
// This file declares the ARC specific subclass of TargetSubtargetInfo.
10
//
11
//===----------------------------------------------------------------------===//
12
13
#ifndef LLVM_LIB_TARGET_ARC_ARCSUBTARGET_H
14
#define LLVM_LIB_TARGET_ARC_ARCSUBTARGET_H
15
16
#include "ARCFrameLowering.h"
17
#include "ARCISelLowering.h"
18
#include "ARCInstrInfo.h"
19
#include "llvm/CodeGen/SelectionDAGTargetInfo.h"
20
#include "llvm/CodeGen/TargetSubtargetInfo.h"
21
#include <string>
22
23
#define GET_SUBTARGETINFO_HEADER
24
#include "ARCGenSubtargetInfo.inc"
25
26
namespace llvm {
27
28
class StringRef;
29
class TargetMachine;
30
31
class ARCSubtarget : public ARCGenSubtargetInfo {
32
virtual void anchor();
33
ARCInstrInfo InstrInfo;
34
ARCFrameLowering FrameLowering;
35
ARCTargetLowering TLInfo;
36
SelectionDAGTargetInfo TSInfo;
37
38
// ARC processor extensions
39
bool Xnorm = false;
40
41
public:
42
/// This constructor initializes the data members to match that
43
/// of the specified triple.
44
ARCSubtarget(const Triple &TT, const std::string &CPU, const std::string &FS,
45
const TargetMachine &TM);
46
47
/// Parses features string setting specified subtarget options.
48
/// Definition of function is auto generated by tblgen.
49
void ParseSubtargetFeatures(StringRef CPU, StringRef TuneCPU, StringRef FS);
50
51
const ARCInstrInfo *getInstrInfo() const override { return &InstrInfo; }
52
const ARCFrameLowering *getFrameLowering() const override {
53
return &FrameLowering;
54
}
55
const ARCTargetLowering *getTargetLowering() const override {
56
return &TLInfo;
57
}
58
const ARCRegisterInfo *getRegisterInfo() const override {
59
return &InstrInfo.getRegisterInfo();
60
}
61
const SelectionDAGTargetInfo *getSelectionDAGInfo() const override {
62
return &TSInfo;
63
}
64
65
bool hasNorm() const { return Xnorm; }
66
};
67
68
} // end namespace llvm
69
70
#endif // LLVM_LIB_TARGET_ARC_ARCSUBTARGET_H
71
72