brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · 9c59d02 Raw
52 lines · c
1//===-- SPIRVTargetMachine.h - Define TargetMachine for SPIR-V -*- 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// This file declares the SPIR-V specific subclass of TargetMachine.10//11//===----------------------------------------------------------------------===//12 13#ifndef LLVM_LIB_TARGET_SPIRV_SPIRVTARGETMACHINE_H14#define LLVM_LIB_TARGET_SPIRV_SPIRVTARGETMACHINE_H15 16#include "SPIRVSubtarget.h"17#include "llvm/CodeGen/CodeGenTargetMachineImpl.h"18#include <optional>19 20namespace llvm {21class SPIRVTargetMachine : public CodeGenTargetMachineImpl {22  std::unique_ptr<TargetLoweringObjectFile> TLOF;23  SPIRVSubtarget Subtarget;24 25public:26  SPIRVTargetMachine(const Target &T, const Triple &TT, StringRef CPU,27                     StringRef FS, const TargetOptions &Options,28                     std::optional<Reloc::Model> RM,29                     std::optional<CodeModel::Model> CM, CodeGenOptLevel OL,30                     bool JIT);31 32  const SPIRVSubtarget *getSubtargetImpl() const { return &Subtarget; }33 34  const SPIRVSubtarget *getSubtargetImpl(const Function &) const override {35    return &Subtarget;36  }37 38  TargetTransformInfo getTargetTransformInfo(const Function &F) const override;39 40  TargetPassConfig *createPassConfig(PassManagerBase &PM) override;41  bool usesPhysRegsForValues() const override { return false; }42 43  TargetLoweringObjectFile *getObjFileLowering() const override {44    return TLOF.get();45  }46 47  void registerPassBuilderCallbacks(PassBuilder &PB) override;48};49} // namespace llvm50 51#endif // LLVM_LIB_TARGET_SPIRV_SPIRVTARGETMACHINE_H52