| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,59 @@ | ||
| //===-- 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); | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,58 @@ | ||
| //===-- RISCVMCTargetDesc.h - RISCV Target Descriptions ---------*- C++ -*-===// | ||
| // | ||
| // 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. | ||
| // | ||
| //===----------------------------------------------------------------------===// | ||
|
|
||
| #ifndef LLVM_LIB_TARGET_RISCV_MCTARGETDESC_RISCVMCTARGETDESC_H | ||
| #define LLVM_LIB_TARGET_RISCV_MCTARGETDESC_RISCVMCTARGETDESC_H | ||
|
|
||
| #include "llvm/MC/MCTargetOptions.h" | ||
| #include "llvm/Support/DataTypes.h" | ||
| #include "llvm/Config/config.h" | ||
|
|
||
| namespace llvm { | ||
| class MCAsmBackend; | ||
| class MCCodeEmitter; | ||
| class MCContext; | ||
| class MCInstrInfo; | ||
| class MCObjectWriter; | ||
| class MCRegisterInfo; | ||
| class MCSubtargetInfo; | ||
| class StringRef; | ||
| class Target; | ||
| class Triple; | ||
| class raw_ostream; | ||
| class raw_pwrite_stream; | ||
|
|
||
| Target &getTheRISCV32Target(); | ||
| Target &getTheRISCV64Target(); | ||
|
|
||
| MCCodeEmitter *createRISCVMCCodeEmitter(const MCInstrInfo &MCII, | ||
| const MCRegisterInfo &MRI, | ||
| MCContext &Ctx); | ||
|
|
||
| MCAsmBackend *createRISCVAsmBackend(const Target &T, const MCRegisterInfo &MRI, | ||
| const Triple &TT, StringRef CPU, | ||
| const MCTargetOptions &Options); | ||
|
|
||
| MCObjectWriter *createRISCVELFObjectWriter(raw_pwrite_stream &OS, uint8_t OSABI, | ||
| bool Is64Bit); | ||
| } | ||
|
|
||
| // Defines symbolic names for RISC-V registers. | ||
| #define GET_REGINFO_ENUM | ||
| #include "RISCVGenRegisterInfo.inc" | ||
|
|
||
| // Defines symbolic names for RISC-V instructions. | ||
| #define GET_INSTRINFO_ENUM | ||
| #include "RISCVGenInstrInfo.inc" | ||
|
|
||
| #endif |