brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.1 KiB · ada42f3 Raw
58 lines · c
1//===-- XtensaTargetMachine.h - Define TargetMachine for Xtensa -*- C++ -*-===//2//3//                     The LLVM Compiler Infrastructure4//5// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.6// See https://llvm.org/LICENSE.txt for license information.7// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception8//9//===----------------------------------------------------------------------===//10//11// This file declares the Xtensa specific subclass of TargetMachine.12//13//===----------------------------------------------------------------------===//14 15#ifndef LLVM_LIB_TARGET_XTENSA_XTENSATARGETMACHINE_H16#define LLVM_LIB_TARGET_XTENSA_XTENSATARGETMACHINE_H17 18#include "XtensaSubtarget.h"19#include "llvm/CodeGen/CodeGenTargetMachineImpl.h"20#include <optional>21 22namespace llvm {23extern Target TheXtensaTarget;24 25class XtensaTargetMachine : public CodeGenTargetMachineImpl {26  std::unique_ptr<TargetLoweringObjectFile> TLOF;27public:28  XtensaTargetMachine(const Target &T, const Triple &TT, StringRef CPU,29                      StringRef FS, const TargetOptions &Options,30                      std::optional<Reloc::Model> RM,31                      std::optional<CodeModel::Model> CM, CodeGenOptLevel OL,32                      bool JIT, bool isLittle);33 34  XtensaTargetMachine(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 40  const XtensaSubtarget *getSubtargetImpl(const Function &F) const override;41 42  TargetPassConfig *createPassConfig(PassManagerBase &PM) override;43 44  TargetLoweringObjectFile *getObjFileLowering() const override {45    return TLOF.get();46  }47 48  MachineFunctionInfo *49  createMachineFunctionInfo(BumpPtrAllocator &Allocator, const Function &F,50                            const TargetSubtargetInfo *STI) const override;51 52protected:53  mutable StringMap<std::unique_ptr<XtensaSubtarget>> SubtargetMap;54};55} // end namespace llvm56 57#endif // LLVM_LIB_TARGET_XTENSA_XTENSATARGETMACHINE_H58