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 26 namespace llvm { 27 28 class DirectXTargetMachine; 29 30 class DirectXSubtarget : public DirectXGenSubtargetInfo { 31 DirectXFrameLowering FL; 32 DirectXTargetLowering TL; 33 DirectXInstrInfo InstrInfo; 34 35 virtual void anchor(); // virtual anchor method 36 37 public: 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 getTargetLowering()45 const DirectXTargetLowering *getTargetLowering() const override { 46 return &TL; 47 } 48 getFrameLowering()49 const DirectXFrameLowering *getFrameLowering() const override { return &FL; } 50 getInstrInfo()51 const DirectXInstrInfo *getInstrInfo() const override { return &InstrInfo; } 52 }; 53 54 } // end namespace llvm 55 56 #endif // LLVM_DIRECTX_DIRECTXSUBTARGET_H 57