Now only DXILTranslateMetadata uses DXILResources, so DXILResourceWrapper is only used by DXILTranslateMetadata. Once we add lower for createHandle, DXILResourceWrapper will be used in more passes. Also we can add resource index allocation in DXILResourceWrapper. Reviewed By: beanz Differential Revision: https://reviews.llvm.org/D135190
53 lines
1.9 KiB
C++
53 lines
1.9 KiB
C++
//===- 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"
|
|
|
|
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,
|
|
Optional<Reloc::Model> RM, 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
|