mini-llvm
0.1.0
Toggle main menu visibility
Loading...
Searching...
No Matches
Register.h
Go to the documentation of this file.
1
// SPDX-License-Identifier: MIT
2
3
#pragma once
4
5
#include <concepts>
6
#include <format>
7
#include <memory>
8
#include <string>
9
10
#include "
mini-llvm/utils/Compiler.h
"
11
12
namespace
mini_llvm::mir
{
13
14
class
MINI_LLVM_EXPORT
Register
:
public
std::enable_shared_from_this<Register> {
15
public
:
16
virtual
~Register
() =
default
;
17
18
Register
() =
default
;
19
20
Register
(
const
Register
&) =
delete
;
21
Register
&
operator=
(
const
Register
&) =
delete
;
22
23
Register
(
Register
&&) =
delete
;
24
Register
&
operator=
(
Register
&&) =
delete
;
25
26
virtual
int
width
()
const
= 0;
27
virtual
std::string
format
()
const
= 0;
28
};
29
30
}
// namespace mini_llvm::mir
31
32
template
<
typename
RegisterT>
33
requires
std::derived_from<RegisterT, mini_llvm::mir::Register>
34
struct
std::formatter<RegisterT> {
35
constexpr
auto
parse
(std::format_parse_context &ctx) {
36
return
ctx.begin();
37
}
38
39
template
<
typename
FormatContext>
40
auto
format
(
const
RegisterT &I, FormatContext &ctx)
const
{
41
return
std::format_to(ctx.out(),
"{}"
, I.format());
42
}
43
};
Compiler.h
MINI_LLVM_EXPORT
#define MINI_LLVM_EXPORT
Definition
Compiler.h:17
mini_llvm::mir::Register::width
virtual int width() const =0
mini_llvm::mir::Register::~Register
virtual ~Register()=default
mini_llvm::mir::Register::Register
Register(const Register &)=delete
mini_llvm::mir::Register::Register
Register(Register &&)=delete
mini_llvm::mir::Register::operator=
Register & operator=(Register &&)=delete
mini_llvm::mir::Register::operator=
Register & operator=(const Register &)=delete
mini_llvm::mir::Register::format
virtual std::string format() const =0
mini_llvm::mir::Register::Register
Register()=default
mini_llvm::mir
Definition
BasicBlock.h:22
std::formatter< RegisterT >::format
auto format(const RegisterT &I, FormatContext &ctx) const
Definition
Register.h:40
std::formatter< RegisterT >::parse
constexpr auto parse(std::format_parse_context &ctx)
Definition
Register.h:35
include
mini-llvm
mir
Register.h
Generated by
1.17.0