LLVM 22.0.0git
DirectXTargetMachine.h
Go to the documentation of this file.
1//===- DirectXTargetMachine.h - DirectX Target Implementation ---*- 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//===----------------------------------------------------------------------===//
10
11#ifndef LLVM_DIRECTX_DIRECTXTARGETMACHINE_H
12#define LLVM_DIRECTX_DIRECTXTARGETMACHINE_H
13
14#include "DirectXSubtarget.h"
16#include <optional>
17
18namespace llvm {
19class Function;
21 std::unique_ptr<TargetLoweringObjectFile> TLOF;
22 std::unique_ptr<DirectXSubtarget> Subtarget;
23
24public:
25 DirectXTargetMachine(const Target &T, const Triple &TT, StringRef CPU,
27 std::optional<Reloc::Model> RM,
28 std::optional<CodeModel::Model> CM, CodeGenOptLevel OL,
29 bool JIT);
30
31 ~DirectXTargetMachine() override;
32
34 raw_pwrite_stream *DwoOut, CodeGenFileType FileType,
35 bool DisableVerify,
36 MachineModuleInfoWrapperPass *MMIWP) override;
37
39 raw_pwrite_stream &Out, bool DisableVerify) override;
40
41 const DirectXSubtarget *getSubtargetImpl(const Function &) const override;
42
44
46 return TLOF.get();
47 }
48
51};
52} // namespace llvm
53
54#endif // LLVM_DIRECTX_DIRECTXTARGETMACHINE_H
#define F(x, y, z)
Definition MD5.cpp:55
#define T
PassBuilder PB(Machine, PassOpts->PTO, std::nullopt, &PIC)
CodeGenTargetMachineImpl(const Target &T, StringRef DataLayoutString, const Triple &TT, StringRef CPU, StringRef FS, const TargetOptions &Options, Reloc::Model RM, CodeModel::Model CM, CodeGenOptLevel OL)
TargetPassConfig * createPassConfig(PassManagerBase &PM) override
Create a pass configuration object to be used by addPassToEmitX methods for generating a pipeline of ...
TargetTransformInfo getTargetTransformInfo(const Function &F) const override
Get a TargetTransformInfo implementation for the target.
DirectXTargetMachine(const Target &T, const Triple &TT, StringRef CPU, StringRef FS, const TargetOptions &Options, std::optional< Reloc::Model > RM, std::optional< CodeModel::Model > CM, CodeGenOptLevel OL, bool JIT)
TargetLoweringObjectFile * getObjFileLowering() const override
const DirectXSubtarget * getSubtargetImpl(const Function &) const override
Virtual method implemented by subclasses that returns a reference to that target's TargetSubtargetInf...
bool addPassesToEmitFile(PassManagerBase &PM, raw_pwrite_stream &Out, raw_pwrite_stream *DwoOut, CodeGenFileType FileType, bool DisableVerify, MachineModuleInfoWrapperPass *MMIWP) override
Add passes to the specified pass manager to get the specified file emitted.
bool addPassesToEmitMC(PassManagerBase &PM, MCContext *&Ctx, raw_pwrite_stream &Out, bool DisableVerify) override
Add passes to the specified pass manager to get machine code emitted with the MCJIT.
void registerPassBuilderCallbacks(PassBuilder &PB) override
Allow the target to modify the pass pipeline.
Context object for machine code objects.
Definition MCContext.h:83
This class provides access to building LLVM's passes.
StringRef - Represent a constant reference to a string, i.e.
Definition StringRef.h:55
TargetOptions Options
Target-Independent Code Generator Pass Configuration Options.
This pass provides access to the codegen interfaces that are needed for IR-level transformations.
Target - Wrapper for Target specific information.
Triple - Helper class for working with autoconf configuration names.
Definition Triple.h:47
PassManagerBase - An abstract interface to allow code to add passes to a pass manager without having ...
An abstract base class for streams implementations that also support a pwrite operation.
This is an optimization pass for GlobalISel generic memory operations.
CodeGenFileType
These enums are meant to be passed into addPassesToEmitFile to indicate what type of file to emit,...
Definition CodeGen.h:111
CodeGenOptLevel
Code generation optimization level.
Definition CodeGen.h:82