Path: blob/main/contrib/llvm-project/llvm/lib/Target/M68k/M68kTargetMachine.h
35266 views
//===-- M68kTargetMachine.h - Define TargetMachine for M68k -----*- C++ -*-===//1//2// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.3// See https://llvm.org/LICENSE.txt for license information.4// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception5//6//===----------------------------------------------------------------------===//7///8/// \file9/// This file declares the M68k specific subclass of TargetMachine.10///11//===----------------------------------------------------------------------===//1213#ifndef LLVM_LIB_TARGET_M68K_M68KTARGETMACHINE_H14#define LLVM_LIB_TARGET_M68K_M68KTARGETMACHINE_H1516#include "M68kSubtarget.h"17#include "MCTargetDesc/M68kMCTargetDesc.h"1819#include "llvm/CodeGen/Passes.h"20#include "llvm/CodeGen/SelectionDAGISel.h"21#include "llvm/CodeGen/TargetFrameLowering.h"22#include "llvm/Target/TargetMachine.h"2324#include <optional>2526namespace llvm {27class formatted_raw_ostream;28class M68kRegisterInfo;2930class M68kTargetMachine : public LLVMTargetMachine {31std::unique_ptr<TargetLoweringObjectFile> TLOF;32M68kSubtarget Subtarget;3334mutable StringMap<std::unique_ptr<M68kSubtarget>> SubtargetMap;3536public:37M68kTargetMachine(const Target &T, const Triple &TT, StringRef CPU,38StringRef FS, const TargetOptions &Options,39std::optional<Reloc::Model> RM,40std::optional<CodeModel::Model> CM, CodeGenOptLevel OL,41bool JIT);4243~M68kTargetMachine() override;4445const M68kSubtarget *getSubtargetImpl() const { return &Subtarget; }4647const M68kSubtarget *getSubtargetImpl(const Function &F) const override;4849MachineFunctionInfo *50createMachineFunctionInfo(BumpPtrAllocator &Allocator, const Function &F,51const TargetSubtargetInfo *STI) const override;5253// Pass Pipeline Configuration54TargetPassConfig *createPassConfig(PassManagerBase &PM) override;5556TargetLoweringObjectFile *getObjFileLowering() const override {57return TLOF.get();58}59};60} // namespace llvm6162#endif // LLVM_LIB_TARGET_M68K_M68KTARGETMACHINE_H636465