
This is enough to compile and link but doesn't yet do anything particularly useful. Once an ASM parser and printer are added in the next two patches, the whole thing can be usefully tested. Differential Revision: https://reviews.llvm.org/D23562 llvm-svn: 285770
60 lines
1.9 KiB
C++
60 lines
1.9 KiB
C++
//===-- RISCVMCTargetDesc.cpp - RISCV Target Descriptions -----------------===//
|
|
//
|
|
// The LLVM Compiler Infrastructure
|
|
//
|
|
// This file is distributed under the University of Illinois Open Source
|
|
// License. See LICENSE.TXT for details.
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
///
|
|
/// This file provides RISCV-specific target descriptions.
|
|
///
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "RISCVMCTargetDesc.h"
|
|
#include "RISCVMCAsmInfo.h"
|
|
#include "llvm/ADT/STLExtras.h"
|
|
#include "llvm/MC/MCAsmInfo.h"
|
|
#include "llvm/MC/MCInstrInfo.h"
|
|
#include "llvm/MC/MCRegisterInfo.h"
|
|
#include "llvm/MC/MCStreamer.h"
|
|
#include "llvm/MC/MCSubtargetInfo.h"
|
|
#include "llvm/Support/ErrorHandling.h"
|
|
#include "llvm/Support/TargetRegistry.h"
|
|
|
|
#define GET_INSTRINFO_MC_DESC
|
|
#include "RISCVGenInstrInfo.inc"
|
|
|
|
#define GET_REGINFO_MC_DESC
|
|
#include "RISCVGenRegisterInfo.inc"
|
|
|
|
using namespace llvm;
|
|
|
|
static MCInstrInfo *createRISCVMCInstrInfo() {
|
|
MCInstrInfo *X = new MCInstrInfo();
|
|
InitRISCVMCInstrInfo(X);
|
|
return X;
|
|
}
|
|
|
|
static MCRegisterInfo *createRISCVMCRegisterInfo(const Triple &TT) {
|
|
MCRegisterInfo *X = new MCRegisterInfo();
|
|
InitRISCVMCRegisterInfo(X, RISCV::X1_32);
|
|
return X;
|
|
}
|
|
|
|
static MCAsmInfo *createRISCVMCAsmInfo(const MCRegisterInfo &MRI,
|
|
const Triple &TT) {
|
|
MCAsmInfo *MAI = new RISCVMCAsmInfo(TT);
|
|
return MAI;
|
|
}
|
|
|
|
extern "C" void LLVMInitializeRISCVTargetMC() {
|
|
for (Target *T : {&getTheRISCV32Target(), &getTheRISCV64Target()}) {
|
|
RegisterMCAsmInfoFn X(*T, createRISCVMCAsmInfo);
|
|
TargetRegistry::RegisterMCInstrInfo(*T, createRISCVMCInstrInfo);
|
|
TargetRegistry::RegisterMCRegInfo(*T, createRISCVMCRegisterInfo);
|
|
TargetRegistry::RegisterMCAsmBackend(*T, createRISCVAsmBackend);
|
|
TargetRegistry::RegisterMCCodeEmitter(*T, createRISCVMCCodeEmitter);
|
|
}
|
|
}
|