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.lower_for_phase
63///@{
65};
66
67///@}
68
69/// @name %%affine.lower_index_phase
70///@{
72};
73
74///@}
75
76} // namespace plug::affine
77
78#ifndef DOXYGEN // don't include in Doxygen documentation
79
80template<> constexpr flags_t Annex::Base<plug::affine::For> = 0x871ca3c60000000;
81template<> constexpr size_t Annex::Num<plug::affine::For> = 0;
82template<> constexpr flags_t Annex::Base<plug::affine::index> = 0x871ca3c60000100;
83template<> constexpr size_t Annex::Num<plug::affine::index> = 0;
84template<> constexpr flags_t Annex::Base<plug::affine::constant> = 0x871ca3c60000200;
85template<> constexpr size_t Annex::Num<plug::affine::constant> = 0;
86template<> constexpr flags_t Annex::Base<plug::affine::op> = 0x871ca3c60000300;
87template<> constexpr size_t Annex::Num<plug::affine::op> = 4;
88template<> constexpr flags_t Annex::Base<plug::affine::semiop> = 0x871ca3c60000400;
89template<> constexpr size_t Annex::Num<plug::affine::semiop> = 4;
90template<> constexpr flags_t Annex::Base<plug::affine::map> = 0x871ca3c60000500;
91template<> constexpr size_t Annex::Num<plug::affine::map> = 0;
92template<> constexpr flags_t Annex::Base<plug::affine::lower_for_phase> = 0x871ca3c60000600;
93template<> constexpr size_t Annex::Num<plug::affine::lower_for_phase> = 0;
94template<> constexpr flags_t Annex::Base<plug::affine::lower_index_phase> = 0x871ca3c60000700;
95template<> constexpr size_t Annex::Num<plug::affine::lower_index_phase> = 0;
96
97template<> struct Axm::IsANode<plug::affine::index> { using type = Axm; };
98template<> struct Axm::IsANode<plug::affine::lower_for_phase> { using type = Axm; };
99template<> struct Axm::IsANode<plug::affine::lower_index_phase> { using type = Axm; };
100
101#endif
102} // namespace mim
103
104#ifndef DOXYGEN // don't include in Doxygen documentation
105
106template<> struct fe::is_bit_enum<mim::plug::affine::op> : std::true_type {};
107template<> struct fe::is_bit_enum<mim::plug::affine::semiop> : std::true_type {};
108
109#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