llir-opt  0.0.1
Low-Level Post-Link Optimiser for OCaml and C
riscvemitter.h
1 // This file if part of the llir-opt project.
2 // Licensing information can be found in the LICENSE file.
3 // (C) 2018 Nandor Licker. All rights reserved.
4 
5 #pragma once
6 
7 #include <llvm/Target/RISCV/RISCVSubtarget.h>
8 #include <llvm/Target/RISCV/RISCVTargetMachine.h>
9 
10 #include "emitter/emitter.h"
11 
12 class Func;
13 
14 
15 
19 class RISCVEmitter : public Emitter {
20 public:
23  const std::string &path,
24  llvm::raw_fd_ostream &os,
25  RISCVTarget &target
26  );
28  ~RISCVEmitter() override;
29 
30 protected:
32  llvm::LLVMTargetMachine &GetTargetMachine() override { return *TM_; }
35  const Prog &prog,
36  llvm::CodeGenOpt::Level opt
37  ) override;
40  llvm::MCContext &mcCtx,
41  llvm::MCStreamer &mcStreamer,
42  const llvm::TargetLoweringObjectFile &objInfo,
43  ISel &isel
44  ) override;
46  llvm::ModulePass *CreateRuntimePass(
47  const Prog &prog,
48  llvm::MCContext &mcCtx,
49  llvm::MCStreamer &mcStreamer,
50  const llvm::TargetLoweringObjectFile &objInfo
51  ) override;
52 
53 private:
55  llvm::TargetLibraryInfoImpl TLII_;
57  llvm::TargetLibraryInfo LibInfo_;
59  std::unique_ptr<llvm::RISCVTargetMachine> TM_;
60 };
Func
Definition: func.h:30
RISCVEmitter
Definition: riscvemitter.h:19
AnnotPrinter
Definition: annot_printer.h:47
RISCVEmitter::CreateISelPass
ISel * CreateISelPass(const Prog &prog, llvm::CodeGenOpt::Level opt) override
Creates the LLIR-to-SelectionDAG pass.
Definition: riscvemitter.cpp:69
ISel
Definition: isel.h:26
RISCVEmitter::~RISCVEmitter
~RISCVEmitter() override
Destroys the x86 emitter.
Definition: riscvemitter.cpp:64
RISCVEmitter::CreateRuntimePass
llvm::ModulePass * CreateRuntimePass(const Prog &prog, llvm::MCContext &mcCtx, llvm::MCStreamer &mcStreamer, const llvm::TargetLoweringObjectFile &objInfo) override
Creates the runtime generation pass.
Definition: riscvemitter.cpp:101
Emitter
Definition: emitter.h:25
Prog
Definition: prog.h:33
RISCVEmitter::GetTargetMachine
llvm::LLVMTargetMachine & GetTargetMachine() override
Returns the generic target machine.
Definition: riscvemitter.h:32
RISCVEmitter::CreateAnnotPass
AnnotPrinter * CreateAnnotPass(llvm::MCContext &mcCtx, llvm::MCStreamer &mcStreamer, const llvm::TargetLoweringObjectFile &objInfo, ISel &isel) override
Creates the annotation generation pass.
Definition: riscvemitter.cpp:84
RISCVEmitter::RISCVEmitter
RISCVEmitter(const std::string &path, llvm::raw_fd_ostream &os, RISCVTarget &target)
Creates an x86 emitter.
Definition: riscvemitter.cpp:29
RISCVTarget
Definition: riscv.h:16