8namespace plug::compile {
270#define MIM_compile_NORMALIZER_IMPL \
271 void register_normalizers(Normalizers& normalizers) {\
272 normalizers[flags_t(Annex::Base<pass_phase>)] = &normalize_pass_phase; \
273 normalizers[flags_t(Annex::Base<combine_pass_list>)] = &normalize_combine_pass_list; \
274 normalizers[flags_t(Annex::Base<single_pass_phase>)] = &normalize_single_pass_phase; \
275 normalizers[flags_t(Annex::Base<combined_phase>)] = &normalize_combined_phase; \
354template<>
struct Axiom::Match<plug::compile::Pass> {
using type =
Axiom; };
355template<>
struct Axiom::Match<plug::compile::Phase> {
using type =
Axiom; };
356template<>
struct Axiom::Match<plug::compile::Pipeline> {
using type =
Axiom; };
357template<>
struct Axiom::Match<plug::compile::PassList> {
using type =
Axiom; };
358template<>
struct Axiom::Match<plug::compile::CombinedPhase> {
using type =
Axiom; };
359template<>
struct Axiom::Match<plug::compile::Plugin> {
using type =
Axiom; };
360template<>
struct Axiom::Match<plug::compile::core_plugin> {
using type =
Axiom; };
361template<>
struct Axiom::Match<plug::compile::mem_plugin> {
using type =
Axiom; };
362template<>
struct Axiom::Match<plug::compile::demo_plugin> {
using type =
Axiom; };
363template<>
struct Axiom::Match<plug::compile::affine_plugin> {
using type =
Axiom; };
364template<>
struct Axiom::Match<plug::compile::autodiff_plugin> {
using type =
Axiom; };
365template<>
struct Axiom::Match<plug::compile::clos_plugin> {
using type =
Axiom; };
366template<>
struct Axiom::Match<plug::compile::direct_plugin> {
using type =
Axiom; };
367template<>
struct Axiom::Match<plug::compile::refly_plugin> {
using type =
Axiom; };
368template<>
struct Axiom::Match<plug::compile::regex_plugin> {
using type =
Axiom; };
369template<>
struct Axiom::Match<plug::compile::matrix_plugin> {
using type =
Axiom; };
370template<>
struct Axiom::Match<plug::compile::beta_red_pass> {
using type =
Axiom; };
371template<>
struct Axiom::Match<plug::compile::eta_red_pass> {
using type =
Axiom; };
372template<>
struct Axiom::Match<plug::compile::lam_spec_pass> {
using type =
Axiom; };
373template<>
struct Axiom::Match<plug::compile::ret_wrap_pass> {
using type =
Axiom; };
374template<>
struct Axiom::Match<plug::compile::nullptr_pass> {
using type =
Axiom; };
375template<>
struct Axiom::Match<plug::compile::internal_cleanup_pass> {
using type =
Axiom; };
Helper class to retrieve Infer::arg if present.
Ref normalize_combined_phase(Ref type, Ref, Ref arg)
combined_phase (phase_list phase1 ... phasen) -> phases_to_phase n (phase1, ..., phasen)
Ref normalize_pass_phase(Ref type, Ref, Ref arg)
void register_normalizers(Normalizers &normalizers)
Ref normalize_single_pass_phase(Ref type, Ref, Ref arg)
single_pass_phase pass -> passes_to_phase 1 pass
Ref normalize_combine_pass_list(Ref type, Ref, Ref arg)
combine_pass_list K (pass_list pass11 ... pass1N) ... (pass_list passK1 ... passKM) = pass_list pass1...
static constexpr plugin_t Plugin_Id
absl::flat_hash_map< flags_t, NormalizeFn > Normalizers
static constexpr size_t Num
static constexpr flags_t Base