MimIR
0.1
MimIR is my Intermediate Representation
Loading...
Searching...
No Matches
autogen.h
Go to the documentation of this file.
1
#pragma once
2
3
#include <
mim/axiom.h
>
4
#include <
mim/plugin.h
>
5
6
/// @namespace mim::plug::direct @ref direct
7
namespace
mim
{
8
namespace
plug::direct
{
9
10
static
constexpr
plugin_t
Plugin_Id
= 0x14a4c61150000000;
11
12
/// @name %%direct.cps2ds
13
///@{
14
enum class
cps2ds
:
flags_t
{
15
};
16
17
const
Def
*
normalize_cps2ds
(
const
Def
*,
const
Def
*,
const
Def
*);
18
///@}
19
20
/// @name %%direct.cps2ds_dep
21
///@{
22
enum class
cps2ds_dep
:
flags_t
{
23
};
24
25
///@}
26
27
/// @name %%direct.ds2cps_pass
28
///@{
29
enum class
ds2cps_pass
:
flags_t
{
30
};
31
32
///@}
33
34
/// @name %%direct.cps2ds_pass
35
///@{
36
enum class
cps2ds_pass
:
flags_t
{
37
};
38
39
///@}
40
41
void
register_normalizers
(
Normalizers
& normalizers);
42
43
#define MIM_direct_NORMALIZER_IMPL \
44
void register_normalizers(Normalizers& normalizers) {\
45
normalizers[flags_t(Annex::Base<cps2ds>)] = &normalize_cps2ds; \
46
}
47
}
// namespace plug::direct
48
49
#ifndef DOXYGEN
// don't include in Doxygen documentation
50
51
template
<>
constexpr
flags_t
Annex::Base<plug::direct::cps2ds>
= 0x14a4c61150000000;
52
template
<>
constexpr
size_t
Annex::Num<plug::direct::cps2ds>
= 0;
53
template
<>
constexpr
flags_t
Annex::Base<plug::direct::cps2ds_dep>
= 0x14a4c61150000100;
54
template
<>
constexpr
size_t
Annex::Num<plug::direct::cps2ds_dep>
= 0;
55
template
<>
constexpr
flags_t
Annex::Base<plug::direct::ds2cps_pass>
= 0x14a4c61150000200;
56
template
<>
constexpr
size_t
Annex::Num<plug::direct::ds2cps_pass>
= 0;
57
template
<>
constexpr
flags_t
Annex::Base<plug::direct::cps2ds_pass>
= 0x14a4c61150000300;
58
template
<>
constexpr
size_t
Annex::Num<plug::direct::cps2ds_pass>
= 0;
59
60
template
<>
struct
Axiom::Match
<
plug
::direct::ds2cps_pass> {
using
type
=
Axiom
; };
61
template
<>
struct
Axiom::Match
<
plug
::direct::cps2ds_pass> {
using
type
=
Axiom
; };
62
63
#endif
64
}
// namespace mim
65
66
#ifndef DOXYGEN
// don't include in Doxygen documentation
67
68
69
#endif
axiom.h
mim::Axiom::Match::type
App type
Definition
axiom.h:60
mim::Axiom::Match
Type of Match::def_.
Definition
axiom.h:59
mim::Def
Base class for all Defs.
Definition
def.h:198
mim::plug::direct
The direct style Plugin
Definition
direct.h:7
mim::plug::direct::cps2ds_pass
cps2ds_pass
Definition
autogen.h:36
mim::plug::direct::register_normalizers
void register_normalizers(Normalizers &normalizers)
mim::plug::direct::normalize_cps2ds
const Def * normalize_cps2ds(const Def *, const Def *, const Def *fun)
cps2ds is directly converted to op_cps2ds_dep f in its normalizer.
Definition
normalizers.cpp:8
mim::plug::direct::ds2cps_pass
ds2cps_pass
Definition
autogen.h:29
mim::plug::direct::cps2ds
cps2ds
Definition
autogen.h:14
mim::plug::direct::Plugin_Id
static constexpr plugin_t Plugin_Id
Definition
autogen.h:10
mim::plug::direct::cps2ds_dep
cps2ds_dep
Definition
autogen.h:22
mim::plug
Definition
affine.h:7
mim
Definition
ast.h:14
mim::flags_t
u64 flags_t
Definition
types.h:45
mim::Normalizers
absl::flat_hash_map< flags_t, NormalizeFn > Normalizers
Definition
plugin.h:19
mim::plugin_t
u64 plugin_t
Definition
types.h:46
mim::Node::Axiom
@ Axiom
Definition
def.h:85
plugin.h
mim::Annex::Num
static constexpr size_t Num
Definition
plugin.h:115
mim::Annex::Base
static constexpr flags_t Base
Definition
plugin.h:118
build
include
mim
plug
direct
autogen.h
Generated by
1.13.2