brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.0 KiB · b844e7e Raw
60 lines · c
1//===-- XCoreTargetMachine.h - Define TargetMachine for XCore ---*- 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 XCore specific subclass of TargetMachine.10//11//===----------------------------------------------------------------------===//12 13#ifndef LLVM_LIB_TARGET_XCORE_XCORETARGETMACHINE_H14#define LLVM_LIB_TARGET_XCORE_XCORETARGETMACHINE_H15 16#include "XCoreSubtarget.h"17#include "llvm/Analysis/TargetTransformInfo.h"18#include "llvm/CodeGen/CodeGenTargetMachineImpl.h"19#include "llvm/Support/CodeGen.h"20#include <memory>21#include <optional>22 23namespace llvm {24class StringRef;25 26class XCoreTargetMachine : public CodeGenTargetMachineImpl {27  std::unique_ptr<TargetLoweringObjectFile> TLOF;28  XCoreSubtarget Subtarget;29 30public:31  XCoreTargetMachine(const Target &T, const Triple &TT, StringRef CPU,32                     StringRef FS, const TargetOptions &Options,33                     std::optional<Reloc::Model> RM,34                     std::optional<CodeModel::Model> CM, CodeGenOptLevel OL,35                     bool JIT);36  ~XCoreTargetMachine() override;37 38  const XCoreSubtarget *getSubtargetImpl() const { return &Subtarget; }39  const XCoreSubtarget *getSubtargetImpl(const Function &) const override {40    return &Subtarget;41  }42 43  // Pass Pipeline Configuration44  TargetPassConfig *createPassConfig(PassManagerBase &PM) override;45 46  TargetTransformInfo getTargetTransformInfo(const Function &F) const override;47 48  TargetLoweringObjectFile *getObjFileLowering() const override {49    return TLOF.get();50  }51 52  MachineFunctionInfo *53  createMachineFunctionInfo(BumpPtrAllocator &Allocator, const Function &F,54                            const TargetSubtargetInfo *STI) const override;55};56 57} // end namespace llvm58 59#endif // LLVM_LIB_TARGET_XCORE_XCORETARGETMACHINE_H60