Changeset View
Changeset View
Standalone View
Standalone View
llvm/lib/Target/Xtensa/MCTargetDesc/XtensaMCTargetDesc.cpp
//===-- XtensaMCTargetDesc.cpp - Xtebsa target descriptions ---------------===// | //===-- XtensaMCTargetDesc.cpp - Xtebsa target descriptions ---------------===// | ||||
// | // | ||||
// The LLVM Compiler Infrastructure | // The LLVM Compiler Infrastructure | ||||
// | // | ||||
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||||
// See https://llvm.org/LICENSE.txt for license information. | // See https://llvm.org/LICENSE.txt for license information. | ||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||||
// | // | ||||
//===----------------------------------------------------------------------===// | //===----------------------------------------------------------------------===// | ||||
#include "XtensaMCTargetDesc.h" | #include "XtensaMCTargetDesc.h" | ||||
#include "XtensaInstPrinter.h" | |||||
#include "XtensaMCAsmInfo.h" | #include "XtensaMCAsmInfo.h" | ||||
#include "llvm/ADT/STLExtras.h" | #include "llvm/ADT/STLExtras.h" | ||||
#include "llvm/MC/MCAsmInfo.h" | #include "llvm/MC/MCAsmInfo.h" | ||||
#include "llvm/MC/MCInstrInfo.h" | #include "llvm/MC/MCInstrInfo.h" | ||||
#include "llvm/MC/MCRegisterInfo.h" | #include "llvm/MC/MCRegisterInfo.h" | ||||
#include "llvm/MC/MCStreamer.h" | #include "llvm/MC/MCStreamer.h" | ||||
#include "llvm/MC/MCSubtargetInfo.h" | #include "llvm/MC/MCSubtargetInfo.h" | ||||
#include "llvm/Support/ErrorHandling.h" | #include "llvm/Support/ErrorHandling.h" | ||||
#include "llvm/Support/TargetRegistry.h" | #include "llvm/Support/TargetRegistry.h" | ||||
#define GET_INSTRINFO_MC_DESC | #define GET_INSTRINFO_MC_DESC | ||||
#include "XtensaGenInstrInfo.inc" | #include "XtensaGenInstrInfo.inc" | ||||
#define GET_REGINFO_MC_DESC | #define GET_REGINFO_MC_DESC | ||||
#include "XtensaGenRegisterInfo.inc" | #include "XtensaGenRegisterInfo.inc" | ||||
#define GET_SUBTARGETINFO_MC_DESC | |||||
#include "XtensaGenSubtargetInfo.inc" | |||||
using namespace llvm; | using namespace llvm; | ||||
static MCAsmInfo *createXtensaMCAsmInfo(const MCRegisterInfo &MRI, | static MCAsmInfo *createXtensaMCAsmInfo(const MCRegisterInfo &MRI, | ||||
const Triple &TT, | const Triple &TT, | ||||
const MCTargetOptions &Options) { | const MCTargetOptions &Options) { | ||||
MCAsmInfo *MAI = new XtensaMCAsmInfo(TT); | MCAsmInfo *MAI = new XtensaMCAsmInfo(TT); | ||||
return MAI; | return MAI; | ||||
} | } | ||||
static MCInstrInfo *createXtensaMCInstrInfo() { | static MCInstrInfo *createXtensaMCInstrInfo() { | ||||
MCInstrInfo *X = new MCInstrInfo(); | MCInstrInfo *X = new MCInstrInfo(); | ||||
InitXtensaMCInstrInfo(X); | InitXtensaMCInstrInfo(X); | ||||
return X; | return X; | ||||
} | } | ||||
static MCInstPrinter *createXtensaMCInstPrinter(const Triple &TT, | |||||
unsigned SyntaxVariant, | |||||
const MCAsmInfo &MAI, | |||||
const MCInstrInfo &MII, | |||||
const MCRegisterInfo &MRI) { | |||||
return new XtensaInstPrinter(MAI, MII, MRI); | |||||
} | |||||
static MCRegisterInfo *createXtensaMCRegisterInfo(const Triple &TT) { | static MCRegisterInfo *createXtensaMCRegisterInfo(const Triple &TT) { | ||||
MCRegisterInfo *X = new MCRegisterInfo(); | MCRegisterInfo *X = new MCRegisterInfo(); | ||||
InitXtensaMCRegisterInfo(X, Xtensa::SP); | InitXtensaMCRegisterInfo(X, Xtensa::SP); | ||||
return X; | return X; | ||||
} | } | ||||
static MCSubtargetInfo * | |||||
createXtensaMCSubtargetInfo(const Triple &TT, StringRef CPU, StringRef FS) { | |||||
return createXtensaMCSubtargetInfoImpl(TT, CPU, CPU, FS); | |||||
} | |||||
extern "C" void LLVMInitializeXtensaTargetMC() { | extern "C" void LLVMInitializeXtensaTargetMC() { | ||||
// Register the MCAsmInfo. | // Register the MCAsmInfo. | ||||
TargetRegistry::RegisterMCAsmInfo(TheXtensaTarget, createXtensaMCAsmInfo); | TargetRegistry::RegisterMCAsmInfo(TheXtensaTarget, createXtensaMCAsmInfo); | ||||
// Register the MCCodeEmitter. | // Register the MCCodeEmitter. | ||||
TargetRegistry::RegisterMCCodeEmitter(TheXtensaTarget, | TargetRegistry::RegisterMCCodeEmitter(TheXtensaTarget, | ||||
createXtensaMCCodeEmitter); | createXtensaMCCodeEmitter); | ||||
// Register the MCInstrInfo. | // Register the MCInstrInfo. | ||||
TargetRegistry::RegisterMCInstrInfo(TheXtensaTarget, createXtensaMCInstrInfo); | TargetRegistry::RegisterMCInstrInfo(TheXtensaTarget, createXtensaMCInstrInfo); | ||||
// Register the MCInstPrinter. | |||||
TargetRegistry::RegisterMCInstPrinter(TheXtensaTarget, | |||||
createXtensaMCInstPrinter); | |||||
// Register the MCRegisterInfo. | // Register the MCRegisterInfo. | ||||
TargetRegistry::RegisterMCRegInfo(TheXtensaTarget, | TargetRegistry::RegisterMCRegInfo(TheXtensaTarget, | ||||
createXtensaMCRegisterInfo); | createXtensaMCRegisterInfo); | ||||
// Register the MCSubtargetInfo. | |||||
TargetRegistry::RegisterMCSubtargetInfo(TheXtensaTarget, | |||||
createXtensaMCSubtargetInfo); | |||||
// Register the MCAsmBackend. | // Register the MCAsmBackend. | ||||
TargetRegistry::RegisterMCAsmBackend(TheXtensaTarget, | TargetRegistry::RegisterMCAsmBackend(TheXtensaTarget, | ||||
createXtensaMCAsmBackend); | createXtensaMCAsmBackend); | ||||
} | } |