brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.4 KiB · cced57a Raw
67 lines · c
1//=- SystemZTargetMachine.h - Define TargetMachine for SystemZ ----*- 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 SystemZ specific subclass of TargetMachine.10//11//===----------------------------------------------------------------------===//12 13 14#ifndef LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZTARGETMACHINE_H15#define LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZTARGETMACHINE_H16 17#include "SystemZSubtarget.h"18#include "llvm/ADT/StringRef.h"19#include "llvm/Analysis/TargetTransformInfo.h"20#include "llvm/CodeGen/CodeGenTargetMachineImpl.h"21#include "llvm/Support/CodeGen.h"22#include "llvm/Target/TargetMachine.h"23#include <memory>24#include <optional>25 26namespace llvm {27 28class SystemZTargetMachine : public CodeGenTargetMachineImpl {29  std::unique_ptr<TargetLoweringObjectFile> TLOF;30 31  mutable StringMap<std::unique_ptr<SystemZSubtarget>> SubtargetMap;32 33public:34  SystemZTargetMachine(const Target &T, const Triple &TT, StringRef CPU,35                       StringRef FS, const TargetOptions &Options,36                       std::optional<Reloc::Model> RM,37                       std::optional<CodeModel::Model> CM, CodeGenOptLevel OL,38                       bool JIT);39  ~SystemZTargetMachine() override;40 41  const SystemZSubtarget *getSubtargetImpl(const Function &) const override;42  // DO NOT IMPLEMENT: There is no such thing as a valid default subtarget,43  // subtargets are per-function entities based on the target-specific44  // attributes of each function.45  const SystemZSubtarget *getSubtargetImpl() const = delete;46 47  // Override CodeGenTargetMachineImpl48  TargetPassConfig *createPassConfig(PassManagerBase &PM) override;49  TargetTransformInfo getTargetTransformInfo(const Function &F) const override;50 51  TargetLoweringObjectFile *getObjFileLowering() const override {52    return TLOF.get();53  }54 55  MachineFunctionInfo *56  createMachineFunctionInfo(BumpPtrAllocator &Allocator, const Function &F,57                            const TargetSubtargetInfo *STI) const override;58  ScheduleDAGInstrs *59  createPostMachineScheduler(MachineSchedContext *C) const override;60 61  bool targetSchedulesPostRAScheduling() const override { return true; };62};63 64} // end namespace llvm65 66#endif // LLVM_LIB_TARGET_SYSTEMZ_SYSTEMZTARGETMACHINE_H67