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