144a14a6aSChris Bieneman //===-- DirectXSubtarget.h - Define Subtarget for DirectX -------*- C++ -*-===// 244a14a6aSChris Bieneman // 344a14a6aSChris Bieneman // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 444a14a6aSChris Bieneman // See https://llvm.org/LICENSE.txt for license information. 544a14a6aSChris Bieneman // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 644a14a6aSChris Bieneman // 744a14a6aSChris Bieneman //===----------------------------------------------------------------------===// 844a14a6aSChris Bieneman // 944a14a6aSChris Bieneman // This file declares the DirectX specific subclass of TargetSubtargetInfo. 1044a14a6aSChris Bieneman // 1144a14a6aSChris Bieneman //===----------------------------------------------------------------------===// 1244a14a6aSChris Bieneman 1344a14a6aSChris Bieneman #ifndef LLVM_DIRECTX_DIRECTXSUBTARGET_H 1444a14a6aSChris Bieneman #define LLVM_DIRECTX_DIRECTXSUBTARGET_H 1544a14a6aSChris Bieneman 16*2af61e62SChris Bieneman #include "DirectXFrameLowering.h" 17*2af61e62SChris Bieneman #include "DirectXInstrInfo.h" 1844a14a6aSChris Bieneman #include "DirectXTargetLowering.h" 1944a14a6aSChris Bieneman #include "llvm/CodeGen/TargetSubtargetInfo.h" 2044a14a6aSChris Bieneman #include "llvm/IR/DataLayout.h" 2144a14a6aSChris Bieneman #include "llvm/Target/TargetMachine.h" 2244a14a6aSChris Bieneman 2344a14a6aSChris Bieneman #define GET_SUBTARGETINFO_HEADER 2444a14a6aSChris Bieneman #include "DirectXGenSubtargetInfo.inc" 2544a14a6aSChris Bieneman 2644a14a6aSChris Bieneman namespace llvm { 2744a14a6aSChris Bieneman 2844a14a6aSChris Bieneman class DirectXTargetMachine; 2944a14a6aSChris Bieneman 3044a14a6aSChris Bieneman class DirectXSubtarget : public DirectXGenSubtargetInfo { 31*2af61e62SChris Bieneman DirectXFrameLowering FL; 3244a14a6aSChris Bieneman DirectXTargetLowering TL; 33*2af61e62SChris Bieneman DirectXInstrInfo InstrInfo; 34*2af61e62SChris Bieneman 35*2af61e62SChris Bieneman virtual void anchor(); // virtual anchor method 3644a14a6aSChris Bieneman 3744a14a6aSChris Bieneman public: 3844a14a6aSChris Bieneman DirectXSubtarget(const Triple &TT, StringRef CPU, StringRef FS, 3944a14a6aSChris Bieneman const DirectXTargetMachine &TM); 4044a14a6aSChris Bieneman 4144a14a6aSChris Bieneman /// Parses a subtarget feature string, setting appropriate options. 4244a14a6aSChris Bieneman /// \note Definition of function is auto generated by `tblgen`. 4344a14a6aSChris Bieneman void ParseSubtargetFeatures(StringRef CPU, StringRef TuneCPU, StringRef FS); 4444a14a6aSChris Bieneman getTargetLowering()4544a14a6aSChris Bieneman const DirectXTargetLowering *getTargetLowering() const override { 4644a14a6aSChris Bieneman return &TL; 4744a14a6aSChris Bieneman } 48*2af61e62SChris Bieneman getFrameLowering()49*2af61e62SChris Bieneman const DirectXFrameLowering *getFrameLowering() const override { return &FL; } 50*2af61e62SChris Bieneman getInstrInfo()51*2af61e62SChris Bieneman const DirectXInstrInfo *getInstrInfo() const override { return &InstrInfo; } 5244a14a6aSChris Bieneman }; 5344a14a6aSChris Bieneman 5444a14a6aSChris Bieneman } // end namespace llvm 5544a14a6aSChris Bieneman 5644a14a6aSChris Bieneman #endif // LLVM_DIRECTX_DIRECTXSUBTARGET_H 57