61 lines · c
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-exception6//7//===----------------------------------------------------------------------===//8//9// This file declares the DirectX specific subclass of TargetSubtargetInfo.10//11//===----------------------------------------------------------------------===//12 13#ifndef LLVM_DIRECTX_DIRECTXSUBTARGET_H14#define LLVM_DIRECTX_DIRECTXSUBTARGET_H15 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_HEADER24#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 method36 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 llvm59 60#endif // LLVM_DIRECTX_DIRECTXSUBTARGET_H61