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