Thorin 1.9.0
The Higher ORder INtermediate representation
Loading...
Searching...
No Matches
autogen.h
Go to the documentation of this file.
1#pragma once
2
3#include <thorin/axiom.h>
4#include <thorin/plugin.h>
5
6/// @namespace thorin::plug::direct @ref direct
7namespace thorin {
8namespace plug::direct {
9
10static constexpr plugin_t Plugin_Id = 0x14a4c61150000000;
11
12/// @name %%direct.cps2ds
13///@{
14#ifdef DOXYGEN // see https://github.com/doxygen/doxygen/issues/9668
16#else
17enum class cps2ds : flags_t {
18#endif
19};
20
22///@}
23
24/// @name %%direct.cps2ds_dep
25///@{
26#ifdef DOXYGEN // see https://github.com/doxygen/doxygen/issues/9668
28#else
29enum class cps2ds_dep : flags_t {
30#endif
31};
32
33///@}
34
35/// @name %%direct.ds2cps_pass
36///@{
37#ifdef DOXYGEN // see https://github.com/doxygen/doxygen/issues/9668
39#else
40enum class ds2cps_pass : flags_t {
41#endif
42};
43
44///@}
45
46/// @name %%direct.cps2ds_pass
47///@{
48#ifdef DOXYGEN // see https://github.com/doxygen/doxygen/issues/9668
50#else
51enum class cps2ds_pass : flags_t {
52#endif
53};
54
55///@}
56
58
59#define THORIN_direct_NORMALIZER_IMPL \
60 void register_normalizers(Normalizers& normalizers) {\
61 normalizers[flags_t(Annex::Base<cps2ds>)] = &normalize_cps2ds; \
62 }
63} // namespace plug::direct
64
65#ifndef DOXYGEN // don't include in Doxygen documentation
66template<> constexpr flags_t Annex::Base<plug::direct::cps2ds> = 0x14a4c61150000000;
67template<> constexpr size_t Annex::Num<plug::direct::cps2ds> = 0;
68template<> constexpr flags_t Annex::Base<plug::direct::cps2ds_dep> = 0x14a4c61150000100;
69template<> constexpr size_t Annex::Num<plug::direct::cps2ds_dep> = 0;
70template<> constexpr flags_t Annex::Base<plug::direct::ds2cps_pass> = 0x14a4c61150000200;
71template<> constexpr size_t Annex::Num<plug::direct::ds2cps_pass> = 0;
72template<> constexpr flags_t Annex::Base<plug::direct::cps2ds_pass> = 0x14a4c61150000300;
73template<> constexpr size_t Annex::Num<plug::direct::cps2ds_pass> = 0;
74
75template<> struct Axiom::Match<plug::direct::ds2cps_pass> { using type = Axiom; };
76template<> struct Axiom::Match<plug::direct::cps2ds_pass> { using type = Axiom; };
77#endif
78} // namespace thorin
Helper class to retrieve Infer::arg if present.
Definition def.h:85
@ Axiom
Definition def.h:39
void register_normalizers(Normalizers &normalizers)
static constexpr plugin_t Plugin_Id
Definition autogen.h:10
Ref normalize_cps2ds(Ref, Ref, Ref fun)
cps2ds is directly converted to op_cps2ds_dep f in its normalizer.
Definition cfg.h:11
absl::flat_hash_map< flags_t, NormalizeFn > Normalizers
Definition plugin.h:19
u64 plugin_t
Definition types.h:47
u64 flags_t
Definition types.h:46
static constexpr flags_t Base
Definition plugin.h:121