MimIR
0.5-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::btensor @ref btensor
7
namespace
mim
{
8
namespace
plug::btensor
{
9
10
static
constexpr
plugin_t
Plugin_Id
= 0xd518f5104c00000;
11
12
/// @name `btensor.Ring`
13
///@{
14
enum class
Ring
:
flags_t
{
15
};
16
17
/// The fields of `btensor.Ring`, by index.
18
struct
Ring_field
{ enum :
nat_t
{
T
= 0,
_0
= 1,
add
= 2,
mul
= 3, }; };
19
20
///@}
21
22
/// @name `btensor.id`
23
///@{
24
enum class
id
:
flags_t
{
25
};
26
27
///@}
28
29
/// @name `btensor.map_reduce`
30
///@{
31
enum class
map_reduce
:
flags_t
{
32
};
33
34
const
Def
*
normalize_map_reduce
(
const
Def
*,
const
Def
*,
const
Def
*);
35
///@}
36
37
/// @name `btensor.map_reduce_post`
38
///@{
39
enum class
map_reduce_post
:
flags_t
{
40
};
41
42
///@}
43
44
/// @name `btensor.Sched`
45
///@{
46
enum class
Sched
:
flags_t
{
47
};
48
49
/// The fields of `btensor.Sched`, by index.
50
struct
Sched_field
{ enum :
nat_t
{
vdim
= 0,
unroll
= 1, }; };
51
52
///@}
53
54
/// @name `btensor.SchedT`
55
///@{
56
enum class
SchedT
:
flags_t
{
57
};
58
59
///@}
60
61
/// @name `btensor.mk_sched`
62
///@{
63
enum class
mk_sched
:
flags_t
{
64
};
65
66
///@}
67
68
/// @name `btensor.proj_map`
69
///@{
70
enum class
proj_map
:
flags_t
{
71
};
72
73
///@}
74
75
/// @name `btensor.broadcast`
76
///@{
77
enum class
broadcast
:
flags_t
{
78
};
79
80
///@}
81
82
/// @name `btensor.concat`
83
///@{
84
enum class
concat
:
flags_t
{
85
};
86
87
///@}
88
89
/// @name `btensor.pad`
90
///@{
91
enum class
pad
:
flags_t
{
92
};
93
94
///@}
95
96
/// @name `btensor.gather`
97
///@{
98
enum class
gather
:
flags_t
{
99
};
100
101
///@}
102
103
/// @name `btensor.scatter`
104
///@{
105
enum class
scatter
:
flags_t
{
106
};
107
108
///@}
109
110
/// @name `btensor.NestT`
111
///@{
112
enum class
NestT
:
flags_t
{
113
};
114
115
///@}
116
117
/// @name `btensor.mr_nest`
118
///@{
119
enum class
mr_nest
:
flags_t
{
120
};
121
122
///@}
123
124
/// @name `btensor.map_reduce_post_impl`
125
///@{
126
enum class
map_reduce_post_impl
:
flags_t
{
127
};
128
129
///@}
130
131
/// @name `btensor.lower_map_reduce`
132
///@{
133
enum class
lower_map_reduce
:
flags_t
{
134
};
135
136
///@}
137
138
void
register_normalizers
(
Normalizers
& normalizers);
139
140
#define MIM_btensor_NORMALIZER_IMPL \
141
void register_normalizers(Normalizers& normalizers) {\
142
normalizers[flags_t(Annex::Base<map_reduce>)] = &normalize_map_reduce; \
143
}
144
}
// namespace plug::btensor
145
146
#ifndef DOXYGEN
// don't include in Doxygen documentation
147
148
template
<>
constexpr
flags_t
Annex::Base<plug::btensor::Ring>
= 0xd518f5104c00000;
149
template
<>
constexpr
size_t
Annex::Num<plug::btensor::Ring>
= 0;
150
template
<>
constexpr
flags_t
Annex::Base<plug::btensor::id>
= 0xd518f5104c00100;
151
template
<>
constexpr
size_t
Annex::Num<plug::btensor::id>
= 0;
152
template
<>
constexpr
flags_t
Annex::Base<plug::btensor::map_reduce>
= 0xd518f5104c00200;
153
template
<>
constexpr
size_t
Annex::Num<plug::btensor::map_reduce>
= 0;
154
template
<>
constexpr
flags_t
Annex::Base<plug::btensor::map_reduce_post>
= 0xd518f5104c00300;
155
template
<>
constexpr
size_t
Annex::Num<plug::btensor::map_reduce_post>
= 0;
156
template
<>
constexpr
flags_t
Annex::Base<plug::btensor::Sched>
= 0xd518f5104c00400;
157
template
<>
constexpr
size_t
Annex::Num<plug::btensor::Sched>
= 0;
158
template
<>
constexpr
flags_t
Annex::Base<plug::btensor::SchedT>
= 0xd518f5104c00500;
159
template
<>
constexpr
size_t
Annex::Num<plug::btensor::SchedT>
= 0;
160
template
<>
constexpr
flags_t
Annex::Base<plug::btensor::mk_sched>
= 0xd518f5104c00600;
161
template
<>
constexpr
size_t
Annex::Num<plug::btensor::mk_sched>
= 0;
162
template
<>
constexpr
flags_t
Annex::Base<plug::btensor::proj_map>
= 0xd518f5104c00700;
163
template
<>
constexpr
size_t
Annex::Num<plug::btensor::proj_map>
= 0;
164
template
<>
constexpr
flags_t
Annex::Base<plug::btensor::broadcast>
= 0xd518f5104c00800;
165
template
<>
constexpr
size_t
Annex::Num<plug::btensor::broadcast>
= 0;
166
template
<>
constexpr
flags_t
Annex::Base<plug::btensor::concat>
= 0xd518f5104c00900;
167
template
<>
constexpr
size_t
Annex::Num<plug::btensor::concat>
= 0;
168
template
<>
constexpr
flags_t
Annex::Base<plug::btensor::pad>
= 0xd518f5104c00a00;
169
template
<>
constexpr
size_t
Annex::Num<plug::btensor::pad>
= 0;
170
template
<>
constexpr
flags_t
Annex::Base<plug::btensor::gather>
= 0xd518f5104c00b00;
171
template
<>
constexpr
size_t
Annex::Num<plug::btensor::gather>
= 0;
172
template
<>
constexpr
flags_t
Annex::Base<plug::btensor::scatter>
= 0xd518f5104c00c00;
173
template
<>
constexpr
size_t
Annex::Num<plug::btensor::scatter>
= 0;
174
template
<>
constexpr
flags_t
Annex::Base<plug::btensor::NestT>
= 0xd518f5104c00d00;
175
template
<>
constexpr
size_t
Annex::Num<plug::btensor::NestT>
= 0;
176
template
<>
constexpr
flags_t
Annex::Base<plug::btensor::mr_nest>
= 0xd518f5104c00e00;
177
template
<>
constexpr
size_t
Annex::Num<plug::btensor::mr_nest>
= 0;
178
template
<>
constexpr
flags_t
Annex::Base<plug::btensor::map_reduce_post_impl>
= 0xd518f5104c00f00;
179
template
<>
constexpr
size_t
Annex::Num<plug::btensor::map_reduce_post_impl>
= 0;
180
template
<>
constexpr
flags_t
Annex::Base<plug::btensor::lower_map_reduce>
= 0xd518f5104c01000;
181
template
<>
constexpr
size_t
Annex::Num<plug::btensor::lower_map_reduce>
= 0;
182
183
template
<>
struct
Axm::IsANode
<
plug
::btensor::Ring> {
using
type
=
Axm
; };
184
template
<>
struct
Axm::IsANode
<
plug
::btensor::id> {
using
type
=
Axm
; };
185
template
<>
struct
Axm::IsANode
<
plug
::btensor::Sched> {
using
type
=
Axm
; };
186
template
<>
struct
Axm::IsANode
<
plug
::btensor::SchedT> {
using
type
=
Axm
; };
187
template
<>
struct
Axm::IsANode
<
plug
::btensor::mk_sched> {
using
type
=
Axm
; };
188
template
<>
struct
Axm::IsANode
<
plug
::btensor::proj_map> {
using
type
=
Axm
; };
189
template
<>
struct
Axm::IsANode
<
plug
::btensor::NestT> {
using
type
=
Axm
; };
190
template
<>
struct
Axm::IsANode
<
plug
::btensor::mr_nest> {
using
type
=
Axm
; };
191
template
<>
struct
Axm::IsANode
<
plug
::btensor::map_reduce_post_impl> {
using
type
=
Axm
; };
192
template
<>
struct
Axm::IsANode
<
plug
::btensor::lower_map_reduce> {
using
type
=
Axm
; };
193
194
#endif
195
}
// namespace mim
196
197
#ifndef DOXYGEN
// don't include in Doxygen documentation
198
199
200
#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:289
mim::plug::btensor
The btensor Plugin
Definition
btensor.h:17
mim::plug::btensor::map_reduce
map_reduce
Definition
autogen.h:31
mim::plug::btensor::mr_nest
mr_nest
Definition
autogen.h:119
mim::plug::btensor::pad
pad
Definition
autogen.h:91
mim::plug::btensor::id
id
Definition
autogen.h:24
mim::plug::btensor::Ring
Ring
Definition
autogen.h:14
mim::plug::btensor::broadcast
broadcast
Definition
autogen.h:77
mim::plug::btensor::gather
gather
Definition
autogen.h:98
mim::plug::btensor::map_reduce_post
map_reduce_post
Definition
autogen.h:39
mim::plug::btensor::map_reduce_post_impl
map_reduce_post_impl
Definition
autogen.h:126
mim::plug::btensor::SchedT
SchedT
Definition
autogen.h:56
mim::plug::btensor::mk_sched
mk_sched
Definition
autogen.h:63
mim::plug::btensor::normalize_map_reduce
const Def * normalize_map_reduce(const Def *, const Def *c, const Def *arg)
btensor.map_reduce is btensor.map_reduce_post without the epilogue and with the neutral schedule: del...
Definition
normalizers.cpp:14
mim::plug::btensor::scatter
scatter
Definition
autogen.h:105
mim::plug::btensor::Plugin_Id
static constexpr plugin_t Plugin_Id
Definition
autogen.h:10
mim::plug::btensor::lower_map_reduce
lower_map_reduce
Definition
autogen.h:133
mim::plug::btensor::NestT
NestT
Definition
autogen.h:112
mim::plug::btensor::Sched
Sched
Definition
autogen.h:46
mim::plug::btensor::proj_map
proj_map
Definition
autogen.h:70
mim::plug::btensor::concat
concat
Definition
autogen.h:84
mim::plug::btensor::register_normalizers
void register_normalizers(Normalizers &normalizers)
mim::plug
Definition
affine.h:10
mim
Definition
ast.h:16
mim::nat_t
u64 nat_t
Definition
types.h:37
mim::flags_t
u64 flags_t
Definition
types.h:39
mim::Normalizers
ankerl::unordered_dense::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:125
plugin.h
mim::Annex::Num
static constexpr size_t Num
Number of Axm::subtags.
Definition
plugin.h:273
mim::Annex::Base
static constexpr flags_t Base
Definition
plugin.h:274
mim::plug::btensor::Ring_field
The fields of btensor.Ring, by index.
Definition
autogen.h:18
mim::plug::btensor::Ring_field::_0
@ _0
Definition
autogen.h:18
mim::plug::btensor::Ring_field::add
@ add
Definition
autogen.h:18
mim::plug::btensor::Ring_field::mul
@ mul
Definition
autogen.h:18
mim::plug::btensor::Ring_field::T
@ T
Definition
autogen.h:18
mim::plug::btensor::Sched_field
The fields of btensor.Sched, by index.
Definition
autogen.h:50
mim::plug::btensor::Sched_field::unroll
@ unroll
Definition
autogen.h:50
mim::plug::btensor::Sched_field::vdim
@ vdim
Definition
autogen.h:50
build
include
mim
plug
btensor
autogen.h
Generated by
1.18.0