| //===- DirectXTargetMachine.h - DirectX Target Implementation ---*- C++ -*-===// | 
 | // | 
 | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | 
 | // See https://llvm.org/LICENSE.txt for license information. | 
 | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | 
 | // | 
 | //===----------------------------------------------------------------------===// | 
 | /// | 
 | //===----------------------------------------------------------------------===// | 
 |  | 
 | #ifndef LLVM_DIRECTX_DIRECTXTARGETMACHINE_H | 
 | #define LLVM_DIRECTX_DIRECTXTARGETMACHINE_H | 
 |  | 
 | #include "DirectXSubtarget.h" | 
 | #include "llvm/Target/TargetMachine.h" | 
 | #include <optional> | 
 |  | 
 | namespace llvm { | 
 | class Function; | 
 | class DirectXTargetMachine : public LLVMTargetMachine { | 
 |   std::unique_ptr<TargetLoweringObjectFile> TLOF; | 
 |   std::unique_ptr<DirectXSubtarget> Subtarget; | 
 |  | 
 | public: | 
 |   DirectXTargetMachine(const Target &T, const Triple &TT, StringRef CPU, | 
 |                        StringRef FS, const TargetOptions &Options, | 
 |                        std::optional<Reloc::Model> RM, | 
 |                        std::optional<CodeModel::Model> CM, CodeGenOpt::Level OL, | 
 |                        bool JIT); | 
 |  | 
 |   ~DirectXTargetMachine() override; | 
 |  | 
 |   bool addPassesToEmitFile(PassManagerBase &PM, raw_pwrite_stream &Out, | 
 |                            raw_pwrite_stream *DwoOut, CodeGenFileType FileType, | 
 |                            bool DisableVerify, | 
 |                            MachineModuleInfoWrapperPass *MMIWP) override; | 
 |  | 
 |   bool addPassesToEmitMC(PassManagerBase &PM, MCContext *&Ctx, | 
 |                          raw_pwrite_stream &Out, bool DisableVerify) override; | 
 |  | 
 |   const DirectXSubtarget *getSubtargetImpl(const Function &) const override; | 
 |  | 
 |   TargetPassConfig *createPassConfig(PassManagerBase &PM) override; | 
 |  | 
 |   TargetLoweringObjectFile *getObjFileLowering() const override { | 
 |     return TLOF.get(); | 
 |   } | 
 |  | 
 |   TargetTransformInfo getTargetTransformInfo(const Function &F) const override; | 
 |   void registerPassBuilderCallbacks(PassBuilder &PB) override; | 
 | }; | 
 | } // namespace llvm | 
 |  | 
 | #endif // LLVM_DIRECTX_DIRECTXTARGETMACHINE_H |