//===- 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 namespace llvm { class Function; class DirectXTargetMachine : public LLVMTargetMachine { std::unique_ptr TLOF; std::unique_ptr Subtarget; public: DirectXTargetMachine(const Target &T, const Triple &TT, StringRef CPU, StringRef FS, const TargetOptions &Options, std::optional RM, std::optional CM, CodeGenOptLevel 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, bool PopulateClassToPassNames) override; }; } // namespace llvm #endif // LLVM_DIRECTX_DIRECTXTARGETMACHINE_H