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