Path: blob/main/contrib/llvm-project/llvm/lib/Target/DirectX/DirectXTargetMachine.h
35269 views
//===- DirectXTargetMachine.h - DirectX Target Implementation ---*- C++ -*-===//1//2// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3// See https://llvm.org/LICENSE.txt for license information.4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5//6//===----------------------------------------------------------------------===//7///8//===----------------------------------------------------------------------===//910#ifndef LLVM_DIRECTX_DIRECTXTARGETMACHINE_H11#define LLVM_DIRECTX_DIRECTXTARGETMACHINE_H1213#include "DirectXSubtarget.h"14#include "llvm/Target/TargetMachine.h"15#include <optional>1617namespace llvm {18class Function;19class DirectXTargetMachine : public LLVMTargetMachine {20std::unique_ptr<TargetLoweringObjectFile> TLOF;21std::unique_ptr<DirectXSubtarget> Subtarget;2223public:24DirectXTargetMachine(const Target &T, const Triple &TT, StringRef CPU,25StringRef FS, const TargetOptions &Options,26std::optional<Reloc::Model> RM,27std::optional<CodeModel::Model> CM, CodeGenOptLevel OL,28bool JIT);2930~DirectXTargetMachine() override;3132bool addPassesToEmitFile(PassManagerBase &PM, raw_pwrite_stream &Out,33raw_pwrite_stream *DwoOut, CodeGenFileType FileType,34bool DisableVerify,35MachineModuleInfoWrapperPass *MMIWP) override;3637bool addPassesToEmitMC(PassManagerBase &PM, MCContext *&Ctx,38raw_pwrite_stream &Out, bool DisableVerify) override;3940const DirectXSubtarget *getSubtargetImpl(const Function &) const override;4142TargetPassConfig *createPassConfig(PassManagerBase &PM) override;4344TargetLoweringObjectFile *getObjFileLowering() const override {45return TLOF.get();46}4748TargetTransformInfo getTargetTransformInfo(const Function &F) const override;49void registerPassBuilderCallbacks(PassBuilder &PB) override;50};51} // namespace llvm5253#endif // LLVM_DIRECTX_DIRECTXTARGETMACHINE_H545556