MimIR
0.4-dev
MimIR is my Intermediate Representation
Toggle main menu visibility
Loading...
Searching...
No Matches
autogen.h
Go to the documentation of this file.
1
#pragma once
2
3
#include <
mim/axm.h
>
4
#include <
mim/plugin.h
>
5
6
/// @namespace mim::plug::clos @ref clos
7
namespace
mim
{
8
namespace
plug::clos
{
9
10
static
constexpr
plugin_t
Plugin_Id
= 0x10d4140000000000;
11
12
/// @name %%clos.BufPtr
13
///@{
14
enum class
BufPtr
:
flags_t
{
15
};
16
17
///@}
18
19
/// @name %%clos.alloc_jmpbuf
20
///@{
21
enum class
alloc_jmpbuf
:
flags_t
{
22
};
23
24
///@}
25
26
/// @name %%clos.setjmp
27
///@{
28
enum class
setjmp
:
flags_t
{
29
};
30
31
///@}
32
33
/// @name %%clos.longjmp
34
///@{
35
enum class
longjmp
:
flags_t
{
36
};
37
38
///@}
39
40
/// @name %%clos.attr
41
///@{
42
enum class
attr
:
flags_t
{
43
returning
= 0x10d4140000000400,
44
free_bb
= 0x10d4140000000401,
45
fstclass_bb
= 0x10d4140000000402,
46
esc
= 0x10d4140000000403,
47
bottom
= 0x10d4140000000404,
48
};
49
50
template
<attr>
51
const
Def
*
normalize_clos
(
const
Def
*,
const
Def
*,
const
Def
*);
52
53
///@}
54
55
/// @name %%clos.clos_conv_prep
56
///@{
57
enum class
clos_conv_prep
:
flags_t
{
58
};
59
60
///@}
61
62
/// @name %%clos.clos_conv
63
///@{
64
enum class
clos_conv
:
flags_t
{
65
};
66
67
///@}
68
69
/// @name %%clos.branch_clos
70
///@{
71
enum class
branch_clos
:
flags_t
{
72
};
73
74
///@}
75
76
/// @name %%clos.lower_typed_clos_prep
77
///@{
78
enum class
lower_typed_clos_prep
:
flags_t
{
79
};
80
81
///@}
82
83
/// @name %%clos.clos2sjlj
84
///@{
85
enum class
clos2sjlj
:
flags_t
{
86
};
87
88
///@}
89
90
/// @name %%clos.lower_typed_clos
91
///@{
92
enum class
lower_typed_clos
:
flags_t
{
93
};
94
95
///@}
96
97
void
register_normalizers
(
Normalizers
& normalizers);
98
99
#define MIM_clos_NORMALIZER_IMPL \
100
void register_normalizers(Normalizers& normalizers) {\
101
normalizers[flags_t(attr::returning)] = &normalize_clos<attr::returning>; \
102
normalizers[flags_t(attr::free_bb)] = &normalize_clos<attr::free_bb>; \
103
normalizers[flags_t(attr::fstclass_bb)] = &normalize_clos<attr::fstclass_bb>; \
104
normalizers[flags_t(attr::esc)] = &normalize_clos<attr::esc>; \
105
normalizers[flags_t(attr::bottom)] = &normalize_clos<attr::bottom>; \
106
}
107
}
// namespace plug::clos
108
109
#ifndef DOXYGEN
// don't include in Doxygen documentation
110
111
template
<>
constexpr
flags_t
Annex::Base<plug::clos::BufPtr>
= 0x10d4140000000000;
112
template
<>
constexpr
size_t
Annex::Num<plug::clos::BufPtr>
= 0;
113
template
<>
constexpr
flags_t
Annex::Base<plug::clos::alloc_jmpbuf>
= 0x10d4140000000100;
114
template
<>
constexpr
size_t
Annex::Num<plug::clos::alloc_jmpbuf>
= 0;
115
template
<>
constexpr
flags_t
Annex::Base<plug::clos::setjmp>
= 0x10d4140000000200;
116
template
<>
constexpr
size_t
Annex::Num<plug::clos::setjmp>
= 0;
117
template
<>
constexpr
flags_t
Annex::Base<plug::clos::longjmp>
= 0x10d4140000000300;
118
template
<>
constexpr
size_t
Annex::Num<plug::clos::longjmp>
= 0;
119
template
<>
constexpr
flags_t
Annex::Base<plug::clos::attr>
= 0x10d4140000000400;
120
template
<>
constexpr
size_t
Annex::Num<plug::clos::attr>
= 5;
121
template
<>
constexpr
flags_t
Annex::Base<plug::clos::clos_conv_prep>
= 0x10d4140000000500;
122
template
<>
constexpr
size_t
Annex::Num<plug::clos::clos_conv_prep>
= 0;
123
template
<>
constexpr
flags_t
Annex::Base<plug::clos::clos_conv>
= 0x10d4140000000600;
124
template
<>
constexpr
size_t
Annex::Num<plug::clos::clos_conv>
= 0;
125
template
<>
constexpr
flags_t
Annex::Base<plug::clos::branch_clos>
= 0x10d4140000000700;
126
template
<>
constexpr
size_t
Annex::Num<plug::clos::branch_clos>
= 0;
127
template
<>
constexpr
flags_t
Annex::Base<plug::clos::lower_typed_clos_prep>
= 0x10d4140000000800;
128
template
<>
constexpr
size_t
Annex::Num<plug::clos::lower_typed_clos_prep>
= 0;
129
template
<>
constexpr
flags_t
Annex::Base<plug::clos::clos2sjlj>
= 0x10d4140000000900;
130
template
<>
constexpr
size_t
Annex::Num<plug::clos::clos2sjlj>
= 0;
131
template
<>
constexpr
flags_t
Annex::Base<plug::clos::lower_typed_clos>
= 0x10d4140000000a00;
132
template
<>
constexpr
size_t
Annex::Num<plug::clos::lower_typed_clos>
= 0;
133
134
template
<>
struct
Axm::IsANode
<
plug
::clos::BufPtr> {
using
type
=
Axm
; };
135
template
<>
struct
Axm::IsANode
<
plug
::clos::clos_conv_prep> {
using
type
=
Axm
; };
136
template
<>
struct
Axm::IsANode
<
plug
::clos::clos_conv> {
using
type
=
Axm
; };
137
template
<>
struct
Axm::IsANode
<
plug
::clos::branch_clos> {
using
type
=
Axm
; };
138
template
<>
struct
Axm::IsANode
<
plug
::clos::lower_typed_clos_prep> {
using
type
=
Axm
; };
139
template
<>
struct
Axm::IsANode
<
plug
::clos::clos2sjlj> {
using
type
=
Axm
; };
140
template
<>
struct
Axm::IsANode
<
plug
::clos::lower_typed_clos> {
using
type
=
Axm
; };
141
142
#endif
143
}
// namespace mim
144
145
#ifndef DOXYGEN
// don't include in Doxygen documentation
146
147
template
<>
struct
fe::is_bit_enum<
mim
::plug::clos::attr> : std::true_type {};
148
149
#endif
axm.h
mim::Axm::IsANode::type
App type
Definition
axm.h:70
mim::Axm::IsANode
Definition
axm.h:69
mim::Def
Base class for all Defs.
Definition
def.h:273
mim::plug::clos
The clos Plugin
Definition
clos.h:9
mim::plug::clos::register_normalizers
void register_normalizers(Normalizers &normalizers)
mim::plug::clos::clos_conv_prep
clos_conv_prep
Definition
autogen.h:57
mim::plug::clos::branch_clos
branch_clos
Definition
autogen.h:71
mim::plug::clos::clos_conv
clos_conv
Definition
autogen.h:64
mim::plug::clos::normalize_clos
const Def * normalize_clos(const Def *, const Def *, const Def *arg)
Definition
normalizers.cpp:6
mim::plug::clos::setjmp
setjmp
Definition
autogen.h:28
mim::plug::clos::alloc_jmpbuf
alloc_jmpbuf
Definition
autogen.h:21
mim::plug::clos::lower_typed_clos
lower_typed_clos
Definition
autogen.h:92
mim::plug::clos::longjmp
longjmp
Definition
autogen.h:35
mim::plug::clos::attr
attr
Definition
autogen.h:42
mim::plug::clos::attr::returning
@ returning
Definition
autogen.h:43
mim::plug::clos::attr::esc
@ esc
Definition
autogen.h:46
mim::plug::clos::attr::bottom
@ bottom
Definition
autogen.h:47
mim::plug::clos::attr::fstclass_bb
@ fstclass_bb
Definition
autogen.h:45
mim::plug::clos::attr::free_bb
@ free_bb
Definition
autogen.h:44
mim::plug::clos::clos2sjlj
clos2sjlj
Definition
autogen.h:85
mim::plug::clos::BufPtr
BufPtr
Definition
autogen.h:14
mim::plug::clos::lower_typed_clos_prep
lower_typed_clos_prep
Definition
autogen.h:78
mim::plug::clos::Plugin_Id
static constexpr plugin_t Plugin_Id
Definition
autogen.h:10
mim::plug
Definition
lower_for.h:5
mim
Definition
ast.h:16
mim::flags_t
u64 flags_t
Definition
types.h:39
mim::Normalizers
absl::flat_hash_map< flags_t, NormalizeFn > Normalizers
Definition
plugin.h:27
mim::plugin_t
u64 plugin_t
Definition
types.h:40
mim::Node::Axm
@ Axm
Definition
def.h:122
plugin.h
mim::Annex::Num
static constexpr size_t Num
Number of Axm::subtags.
Definition
plugin.h:247
mim::Annex::Base
static constexpr flags_t Base
Definition
plugin.h:248
build
include
mim
plug
clos
autogen.h
Generated by
1.18.0