1*bdd1243dSDimitry Andric //===-- XtensaTargetMachine.h - Define TargetMachine for Xtensa -*- C++ -*-===// 2*bdd1243dSDimitry Andric // 3*bdd1243dSDimitry Andric // The LLVM Compiler Infrastructure 4*bdd1243dSDimitry Andric // 5*bdd1243dSDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 6*bdd1243dSDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 7*bdd1243dSDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 8*bdd1243dSDimitry Andric // 9*bdd1243dSDimitry Andric //===----------------------------------------------------------------------===// 10*bdd1243dSDimitry Andric // 11*bdd1243dSDimitry Andric // This file declares the Xtensa specific subclass of TargetMachine. 12*bdd1243dSDimitry Andric // 13*bdd1243dSDimitry Andric //===----------------------------------------------------------------------===// 14*bdd1243dSDimitry Andric 15*bdd1243dSDimitry Andric #ifndef LLVM_LIB_TARGET_XTENSA_XTENSATARGETMACHINE_H 16*bdd1243dSDimitry Andric #define LLVM_LIB_TARGET_XTENSA_XTENSATARGETMACHINE_H 17*bdd1243dSDimitry Andric 18*bdd1243dSDimitry Andric #include "llvm/Target/TargetMachine.h" 19*bdd1243dSDimitry Andric #include <optional> 20*bdd1243dSDimitry Andric 21*bdd1243dSDimitry Andric namespace llvm { 22*bdd1243dSDimitry Andric extern Target TheXtensaTarget; 23*bdd1243dSDimitry Andric 24*bdd1243dSDimitry Andric class XtensaTargetMachine : public LLVMTargetMachine { 25*bdd1243dSDimitry Andric std::unique_ptr<TargetLoweringObjectFile> TLOF; 26*bdd1243dSDimitry Andric public: 27*bdd1243dSDimitry Andric XtensaTargetMachine(const Target &T, const Triple &TT, StringRef CPU, 28*bdd1243dSDimitry Andric StringRef FS, const TargetOptions &Options, 29*bdd1243dSDimitry Andric std::optional<Reloc::Model> RM, 30*bdd1243dSDimitry Andric std::optional<CodeModel::Model> CM, CodeGenOpt::Level OL, 31*bdd1243dSDimitry Andric bool JIT, bool isLittle); 32*bdd1243dSDimitry Andric 33*bdd1243dSDimitry Andric XtensaTargetMachine(const Target &T, const Triple &TT, StringRef CPU, 34*bdd1243dSDimitry Andric StringRef FS, const TargetOptions &Options, 35*bdd1243dSDimitry Andric std::optional<Reloc::Model> RM, 36*bdd1243dSDimitry Andric std::optional<CodeModel::Model> CM, CodeGenOpt::Level OL, 37*bdd1243dSDimitry Andric bool JIT); 38*bdd1243dSDimitry Andric 39*bdd1243dSDimitry Andric TargetPassConfig *createPassConfig(PassManagerBase &PM) override; 40*bdd1243dSDimitry Andric TargetLoweringObjectFile *getObjFileLowering() const override { 41*bdd1243dSDimitry Andric return TLOF.get(); 42*bdd1243dSDimitry Andric } 43*bdd1243dSDimitry Andric }; 44*bdd1243dSDimitry Andric } // end namespace llvm 45*bdd1243dSDimitry Andric 46*bdd1243dSDimitry Andric #endif // LLVM_LIB_TARGET_XTENSA_XTENSATARGETMACHINE_H 47