brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.0 KiB · 7ba80d2 Raw
55 lines · c
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-exception6//7//===----------------------------------------------------------------------===//8///9//===----------------------------------------------------------------------===//10 11#ifndef LLVM_DIRECTX_DIRECTXTARGETMACHINE_H12#define LLVM_DIRECTX_DIRECTXTARGETMACHINE_H13 14#include "DirectXSubtarget.h"15#include "llvm/CodeGen/CodeGenTargetMachineImpl.h"16#include <optional>17 18namespace llvm {19class Function;20class DirectXTargetMachine : public CodeGenTargetMachineImpl {21  std::unique_ptr<TargetLoweringObjectFile> TLOF;22  std::unique_ptr<DirectXSubtarget> Subtarget;23 24public:25  DirectXTargetMachine(const Target &T, const Triple &TT, StringRef CPU,26                       StringRef FS, const TargetOptions &Options,27                       std::optional<Reloc::Model> RM,28                       std::optional<CodeModel::Model> CM, CodeGenOptLevel OL,29                       bool JIT);30 31  ~DirectXTargetMachine() override;32 33  bool addPassesToEmitFile(PassManagerBase &PM, raw_pwrite_stream &Out,34                           raw_pwrite_stream *DwoOut, CodeGenFileType FileType,35                           bool DisableVerify,36                           MachineModuleInfoWrapperPass *MMIWP) override;37 38  bool addPassesToEmitMC(PassManagerBase &PM, MCContext *&Ctx,39                         raw_pwrite_stream &Out, bool DisableVerify) override;40 41  const DirectXSubtarget *getSubtargetImpl(const Function &) const override;42 43  TargetPassConfig *createPassConfig(PassManagerBase &PM) override;44 45  TargetLoweringObjectFile *getObjFileLowering() const override {46    return TLOF.get();47  }48 49  TargetTransformInfo getTargetTransformInfo(const Function &F) const override;50  void registerPassBuilderCallbacks(PassBuilder &PB) override;51};52} // namespace llvm53 54#endif // LLVM_DIRECTX_DIRECTXTARGETMACHINE_H55