brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.0 KiB · dc59c33 Raw
62 lines · c
1//===-- LanaiTargetMachine.h - Define TargetMachine for Lanai --- 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 Lanai specific subclass of TargetMachine.10//11//===----------------------------------------------------------------------===//12 13#ifndef LLVM_LIB_TARGET_LANAI_LANAITARGETMACHINE_H14#define LLVM_LIB_TARGET_LANAI_LANAITARGETMACHINE_H15 16#include "LanaiISelLowering.h"17#include "LanaiInstrInfo.h"18#include "LanaiSelectionDAGInfo.h"19#include "LanaiSubtarget.h"20#include "llvm/CodeGen/CodeGenTargetMachineImpl.h"21#include <optional>22 23namespace llvm {24 25class LanaiTargetMachine : public CodeGenTargetMachineImpl {26  LanaiSubtarget Subtarget;27  std::unique_ptr<TargetLoweringObjectFile> TLOF;28 29public:30  LanaiTargetMachine(const Target &TheTarget, const Triple &TargetTriple,31                     StringRef Cpu, StringRef FeatureString,32                     const TargetOptions &Options,33                     std::optional<Reloc::Model> RM,34                     std::optional<CodeModel::Model> CodeModel,35                     CodeGenOptLevel OptLevel, bool JIT);36 37  const LanaiSubtarget *38  getSubtargetImpl(const llvm::Function & /*Fn*/) const override {39    return &Subtarget;40  }41 42  TargetTransformInfo getTargetTransformInfo(const Function &F) const override;43 44  // Pass Pipeline Configuration45  TargetPassConfig *createPassConfig(PassManagerBase &pass_manager) override;46 47  TargetLoweringObjectFile *getObjFileLowering() const override {48    return TLOF.get();49  }50 51  MachineFunctionInfo *52  createMachineFunctionInfo(BumpPtrAllocator &Allocator, const Function &F,53                            const TargetSubtargetInfo *STI) const override;54 55  bool isMachineVerifierClean() const override {56    return false;57  }58};59} // namespace llvm60 61#endif // LLVM_LIB_TARGET_LANAI_LANAITARGETMACHINE_H62