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 DirectXFrameLowering FL;
32 DirectXTargetLowering TL;
33 DirectXInstrInfo InstrInfo;
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
54} // end namespace llvm
55
56#endif // LLVM_DIRECTX_DIRECTXSUBTARGET_H
57

source code of llvm/lib/Target/DirectX/DirectXSubtarget.h