blob: 7672863128bb6f1b693519376182bde3d3b67688 [file] [log] [blame]
Alex Bradbury6b2cca72016-11-01 23:47:30 +00001//===-- RISCVMCTargetDesc.h - RISCV Target Descriptions ---------*- C++ -*-===//
2//
Chandler Carruth2946cd72019-01-19 08:50:56 +00003// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
Alex Bradbury6b2cca72016-11-01 23:47:30 +00006//
7//===----------------------------------------------------------------------===//
8//
9// This file provides RISCV specific target descriptions.
10//
11//===----------------------------------------------------------------------===//
12
13#ifndef LLVM_LIB_TARGET_RISCV_MCTARGETDESC_RISCVMCTARGETDESC_H
14#define LLVM_LIB_TARGET_RISCV_MCTARGETDESC_RISCVMCTARGETDESC_H
15
Chandler Carruth6bda14b2017-06-06 11:49:48 +000016#include "llvm/Config/config.h"
Alex Bradbury6b2cca72016-11-01 23:47:30 +000017#include "llvm/MC/MCTargetOptions.h"
18#include "llvm/Support/DataTypes.h"
Alex Bradbury5c1eef42017-10-11 12:09:06 +000019#include <memory>
Alex Bradbury6b2cca72016-11-01 23:47:30 +000020
21namespace llvm {
22class MCAsmBackend;
23class MCCodeEmitter;
24class MCContext;
25class MCInstrInfo;
Peter Collingbournedcd7d6c2018-05-21 19:20:29 +000026class MCObjectTargetWriter;
Alex Bradbury6b2cca72016-11-01 23:47:30 +000027class MCRegisterInfo;
28class MCSubtargetInfo;
29class StringRef;
30class Target;
31class Triple;
32class raw_ostream;
33class raw_pwrite_stream;
34
35Target &getTheRISCV32Target();
36Target &getTheRISCV64Target();
37
38MCCodeEmitter *createRISCVMCCodeEmitter(const MCInstrInfo &MCII,
39 const MCRegisterInfo &MRI,
40 MCContext &Ctx);
41
Alex Bradburyb22f7512018-01-03 08:53:05 +000042MCAsmBackend *createRISCVAsmBackend(const Target &T, const MCSubtargetInfo &STI,
43 const MCRegisterInfo &MRI,
Alex Bradbury6b2cca72016-11-01 23:47:30 +000044 const MCTargetOptions &Options);
45
Peter Collingbournedcd7d6c2018-05-21 19:20:29 +000046std::unique_ptr<MCObjectTargetWriter> createRISCVELFObjectWriter(uint8_t OSABI,
47 bool Is64Bit);
Alex Bradbury6b2cca72016-11-01 23:47:30 +000048}
49
50// Defines symbolic names for RISC-V registers.
51#define GET_REGINFO_ENUM
52#include "RISCVGenRegisterInfo.inc"
53
54// Defines symbolic names for RISC-V instructions.
55#define GET_INSTRINFO_ENUM
56#include "RISCVGenInstrInfo.inc"
57
Alex Bradbury8ab4a962017-09-17 14:36:28 +000058#define GET_SUBTARGETINFO_ENUM
59#include "RISCVGenSubtargetInfo.inc"
60
Alex Bradbury6b2cca72016-11-01 23:47:30 +000061#endif