MimIR
0.3-dev
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/axm.h
>
4
#include <
mim/plugin.h
>
5
6
/// @namespace mim::plug::affine @ref affine
7
namespace
mim
{
8
namespace
plug::affine
{
9
10
static
constexpr
plugin_t
Plugin_Id
= 0x871ca3c60000000;
11
12
/// @name %%affine.For
13
///@{
14
enum class
For
:
flags_t
{
15
};
16
17
///@}
18
19
/// @name %%affine.index
20
///@{
21
enum class
index
:
flags_t
{
22
};
23
24
///@}
25
26
/// @name %%affine.constant
27
///@{
28
enum class
constant
:
flags_t
{
29
};
30
31
///@}
32
33
/// @name %%affine.op
34
///@{
35
enum class
op
:
flags_t
{
36
add
= 0x871ca3c60000300,
37
sub
= 0x871ca3c60000301,
38
neg
= 0x871ca3c60000302,
39
mul
= 0x871ca3c60000303,
40
};
41
42
///@}
43
44
/// @name %%affine.semiop
45
///@{
46
enum class
semiop
:
flags_t
{
47
mul
= 0x871ca3c60000400,
48
ceildiv
= 0x871ca3c60000401,
49
floordiv
= 0x871ca3c60000402,
50
mod
= 0x871ca3c60000403,
51
};
52
53
///@}
54
55
/// @name %%affine.map
56
///@{
57
enum class
map
:
flags_t
{
58
};
59
60
///@}
61
62
/// @name %%affine.id
63
///@{
64
enum class
id
:
flags_t
{
65
};
66
67
///@}
68
69
/// @name %%affine.linearize
70
///@{
71
enum class
linearize
:
flags_t
{
72
};
73
74
///@}
75
76
/// @name %%affine.delinearize
77
///@{
78
enum class
delinearize
:
flags_t
{
79
};
80
81
///@}
82
83
/// @name %%affine.lower_for
84
///@{
85
enum class
lower_for
:
flags_t
{
86
};
87
88
///@}
89
90
/// @name %%affine.lower_index
91
///@{
92
enum class
lower_index
:
flags_t
{
93
};
94
95
///@}
96
97
}
// namespace plug::affine
98
99
#ifndef DOXYGEN
// don't include in Doxygen documentation
100
101
template
<>
constexpr
flags_t
Annex::Base<plug::affine::For>
= 0x871ca3c60000000;
102
template
<>
constexpr
size_t
Annex::Num<plug::affine::For>
= 0;
103
template
<>
constexpr
flags_t
Annex::Base<plug::affine::index>
= 0x871ca3c60000100;
104
template
<>
constexpr
size_t
Annex::Num<plug::affine::index>
= 0;
105
template
<>
constexpr
flags_t
Annex::Base<plug::affine::constant>
= 0x871ca3c60000200;
106
template
<>
constexpr
size_t
Annex::Num<plug::affine::constant>
= 0;
107
template
<>
constexpr
flags_t
Annex::Base<plug::affine::op>
= 0x871ca3c60000300;
108
template
<>
constexpr
size_t
Annex::Num<plug::affine::op>
= 4;
109
template
<>
constexpr
flags_t
Annex::Base<plug::affine::semiop>
= 0x871ca3c60000400;
110
template
<>
constexpr
size_t
Annex::Num<plug::affine::semiop>
= 4;
111
template
<>
constexpr
flags_t
Annex::Base<plug::affine::map>
= 0x871ca3c60000500;
112
template
<>
constexpr
size_t
Annex::Num<plug::affine::map>
= 0;
113
template
<>
constexpr
flags_t
Annex::Base<plug::affine::id>
= 0x871ca3c60000600;
114
template
<>
constexpr
size_t
Annex::Num<plug::affine::id>
= 0;
115
template
<>
constexpr
flags_t
Annex::Base<plug::affine::linearize>
= 0x871ca3c60000700;
116
template
<>
constexpr
size_t
Annex::Num<plug::affine::linearize>
= 0;
117
template
<>
constexpr
flags_t
Annex::Base<plug::affine::delinearize>
= 0x871ca3c60000800;
118
template
<>
constexpr
size_t
Annex::Num<plug::affine::delinearize>
= 0;
119
template
<>
constexpr
flags_t
Annex::Base<plug::affine::lower_for>
= 0x871ca3c60000900;
120
template
<>
constexpr
size_t
Annex::Num<plug::affine::lower_for>
= 0;
121
template
<>
constexpr
flags_t
Annex::Base<plug::affine::lower_index>
= 0x871ca3c60000a00;
122
template
<>
constexpr
size_t
Annex::Num<plug::affine::lower_index>
= 0;
123
124
template
<>
struct
Axm::IsANode
<
plug
::affine::index> {
using
type
=
Axm
; };
125
template
<>
struct
Axm::IsANode<plug::affine::id> {
using
type
= Axm; };
126
template
<>
struct
Axm::IsANode
<
plug
::affine::lower_for> {
using
type
=
Axm
; };
127
template
<>
struct
Axm::IsANode
<
plug
::affine::lower_index> {
using
type
=
Axm
; };
128
129
#endif
130
}
// namespace mim
131
132
#ifndef DOXYGEN
// don't include in Doxygen documentation
133
134
template
<>
struct
fe::is_bit_enum<
mim
::plug::affine::op> : std::true_type {};
135
template
<>
struct
fe::is_bit_enum<
mim
::plug::affine::semiop> : std::true_type {};
136
137
#endif
axm.h
mim::Axm
Definition
axm.h:9
mim::Axm::IsANode::type
App type
Definition
axm.h:65
mim::Axm::IsANode
Definition
axm.h:64
mim::plug::affine
The affine Plugin
Definition
lower_for.h:5
mim::plug::affine::linearize
linearize
Definition
autogen.h:71
mim::plug::affine::op
op
Definition
autogen.h:35
mim::plug::affine::op::add
@ add
Definition
autogen.h:36
mim::plug::affine::op::mul
@ mul
Definition
autogen.h:39
mim::plug::affine::op::sub
@ sub
Definition
autogen.h:37
mim::plug::affine::op::neg
@ neg
Definition
autogen.h:38
mim::plug::affine::delinearize
delinearize
Definition
autogen.h:78
mim::plug::affine::id
id
Definition
autogen.h:64
mim::plug::affine::lower_for
lower_for
Definition
autogen.h:85
mim::plug::affine::semiop
semiop
Definition
autogen.h:46
mim::plug::affine::semiop::ceildiv
@ ceildiv
Definition
autogen.h:48
mim::plug::affine::semiop::mod
@ mod
Definition
autogen.h:50
mim::plug::affine::semiop::floordiv
@ floordiv
Definition
autogen.h:49
mim::plug::affine::map
map
Definition
autogen.h:57
mim::plug::affine::constant
constant
Definition
autogen.h:28
mim::plug::affine::For
For
Definition
autogen.h:14
mim::plug::affine::index
index
Definition
autogen.h:21
mim::plug::affine::Plugin_Id
static constexpr plugin_t Plugin_Id
Definition
autogen.h:10
mim::plug::affine::lower_index
lower_index
Definition
autogen.h:92
mim::plug
Definition
lower_for.h:5
mim
Definition
ast.h:14
mim::flags_t
u64 flags_t
Definition
types.h:39
mim::plugin_t
u64 plugin_t
Definition
types.h:40
mim::Node::Axm
@ Axm
Definition
def.h:109
plugin.h
mim::Annex::Num
static constexpr size_t Num
Number of Axm::subtags.
Definition
plugin.h:147
mim::Annex::Base
static constexpr flags_t Base
Definition
plugin.h:148
build
include
mim
plug
affine
autogen.h
Generated by
1.16.1