llir-opt  0.0.1
Low-Level Post-Link Optimiser for OCaml and C
ppcemitter.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/PowerPC/PPCSubtarget.h>
8 #include <llvm/Target/PowerPC/PPCTargetMachine.h>
9 
10 #include "emitter/emitter.h"
11 
12 class Func;
13 
14 
15 
19 class PPCEmitter : public Emitter {
20 public:
22  PPCEmitter(
23  const std::string &path,
24  llvm::raw_fd_ostream &os,
25  PPCTarget &target
26  );
28  ~PPCEmitter() 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::PPCTargetMachine> TM_;
60 };
Func
Definition: func.h:30
PPCEmitter::PPCEmitter
PPCEmitter(const std::string &path, llvm::raw_fd_ostream &os, PPCTarget &target)
Creates an x86 emitter.
Definition: ppcemitter.cpp:39
PPCEmitter::~PPCEmitter
~PPCEmitter() override
Destroys the x86 emitter.
Definition: ppcemitter.cpp:72
AnnotPrinter
Definition: annot_printer.h:47
ISel
Definition: isel.h:26
PPCEmitter::GetTargetMachine
llvm::LLVMTargetMachine & GetTargetMachine() override
Returns the generic target machine.
Definition: ppcemitter.h:32
Emitter
Definition: emitter.h:25
Prog
Definition: prog.h:33
PPCTarget
Definition: ppc.h:16
PPCEmitter
Definition: ppcemitter.h:19
PPCEmitter::CreateISelPass
ISel * CreateISelPass(const Prog &prog, llvm::CodeGenOpt::Level opt) override
Creates the LLIR-to-SelectionDAG pass.
Definition: ppcemitter.cpp:77
PPCEmitter::CreateAnnotPass
AnnotPrinter * CreateAnnotPass(llvm::MCContext &mcCtx, llvm::MCStreamer &mcStreamer, const llvm::TargetLoweringObjectFile &objInfo, ISel &isel) override
Creates the annotation generation pass.
Definition: ppcemitter.cpp:92
PPCEmitter::CreateRuntimePass
llvm::ModulePass * CreateRuntimePass(const Prog &prog, llvm::MCContext &mcCtx, llvm::MCStreamer &mcStreamer, const llvm::TargetLoweringObjectFile &objInfo) override
Creates the runtime generation pass.
Definition: ppcemitter.cpp:109