1//===-- DirectXSubtarget.h - Define Subtarget for DirectX -------*- 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 DirectX specific subclass of TargetSubtargetInfo.
10//
11//===----------------------------------------------------------------------===//
12
13#ifndef LLVM_DIRECTX_DIRECTXSUBTARGET_H
14#define LLVM_DIRECTX_DIRECTXSUBTARGET_H
15
16#include "DirectXFrameLowering.h"
17#include "DirectXInstrInfo.h"
18#include "DirectXTargetLowering.h"
19#include "llvm/CodeGen/TargetSubtargetInfo.h"
20#include "llvm/IR/DataLayout.h"
21#include "llvm/Target/TargetMachine.h"
22
23#define GET_SUBTARGETINFO_HEADER
24#include "DirectXGenSubtargetInfo.inc"
25
26namespace llvm {
27
28class DirectXTargetMachine;
29
30class DirectXSubtarget : public DirectXGenSubtargetInfo {
31 DirectXInstrInfo InstrInfo;
32 DirectXFrameLowering FL;
33 DirectXTargetLowering TL;
34
35 virtual void anchor(); // virtual anchor method
36
37public:
38 DirectXSubtarget(const Triple &TT, StringRef CPU, StringRef FS,
39 const DirectXTargetMachine &TM);
40
41 /// Parses a subtarget feature string, setting appropriate options.
42 /// \note Definition of function is auto generated by `tblgen`.
43 void ParseSubtargetFeatures(StringRef CPU, StringRef TuneCPU, StringRef FS);
44
45 const DirectXTargetLowering *getTargetLowering() const override {
46 return &TL;
47 }
48
49 const DirectXFrameLowering *getFrameLowering() const override { return &FL; }
50
51 const DirectXInstrInfo *getInstrInfo() const override { return &InstrInfo; }
52
53 const DirectXRegisterInfo *getRegisterInfo() const override {
54 return &InstrInfo.getRegisterInfo();
55 }
56};
57
58} // end namespace llvm
59
60#endif // LLVM_DIRECTX_DIRECTXSUBTARGET_H
61