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::tensor @ref tensor
7namespace mim {
8namespace plug::tensor {
9
10static constexpr plugin_t Plugin_Id = 0x5463d44130000000;
11
12/// @name %%tensor.generate
13///@{
14enum class generate : flags_t {
15};
16
17///@}
18
19/// @name %%tensor.splat
20///@{
21enum class splat : flags_t {
22};
23
24///@}
25
26/// @name %%tensor.get
27///@{
28enum class get : flags_t {
29};
30
31const Def* normalize_get(const Def*, const Def*, const Def*);
32///@}
33
34/// @name %%tensor.set
35///@{
36enum class set : flags_t {
37};
38
39const Def* normalize_set(const Def*, const Def*, const Def*);
40///@}
41
42/// @name %%tensor.shape
43///@{
44enum class shape : flags_t {
45};
46
47const Def* normalize_shape(const Def*, const Def*, const Def*);
48///@}
49
50/// @name %%tensor.id
51///@{
52enum class id : flags_t {
53};
54
55///@}
56
57/// @name %%tensor.map_reduce_post
58///@{
60};
61
62///@}
63
64/// @name %%tensor.map_reduce
65///@{
66enum class map_reduce : flags_t {
67};
68
69///@}
70
71/// @name %%tensor.broadcast
72///@{
73enum class broadcast : flags_t {
74};
75
76const Def* normalize_broadcast(const Def*, const Def*, const Def*);
77///@}
78
79/// @name %%tensor.broadcast_in_dim
80///@{
82};
83
84const Def* normalize_broadcast_in_dim(const Def*, const Def*, const Def*);
85///@}
86
87/// @name %%tensor.concat
88///@{
89enum class concat : flags_t {
90};
91
92const Def* normalize_concat(const Def*, const Def*, const Def*);
93///@}
94
95/// @name %%tensor.flip
96///@{
97enum class flip : flags_t {
98};
99
100const Def* normalize_flip(const Def*, const Def*, const Def*);
101///@}
102
103/// @name %%tensor.pad
104///@{
105enum class pad : flags_t {
106};
107
108const Def* normalize_pad(const Def*, const Def*, const Def*);
109///@}
110
111/// @name %%tensor.repeat
112///@{
113enum class repeat : flags_t {
114};
115
116const Def* normalize_repeat(const Def*, const Def*, const Def*);
117///@}
118
119/// @name %%tensor.reshape
120///@{
121enum class reshape : flags_t {
122};
123
124const Def* normalize_reshape(const Def*, const Def*, const Def*);
125///@}
126
127/// @name %%tensor.slice
128///@{
129enum class slice : flags_t {
130};
131
132const Def* normalize_slice(const Def*, const Def*, const Def*);
133///@}
134
135/// @name %%tensor.transpose
136///@{
137enum class transpose : flags_t {
138};
139
140///@}
141
142/// @name %%tensor.transpose_2d
143///@{
144enum class transpose_2d : flags_t {
145};
146
147///@}
148
149/// @name %%tensor.binary
150///@{
151enum class binary : flags_t {
152};
153
154///@}
155
156/// @name %%tensor.map
157///@{
158enum class map : flags_t {
159};
160
161///@}
162
163/// @name %%tensor.select
164///@{
165enum class select : flags_t {
166};
167
168///@}
169
170/// @name %%tensor.unary
171///@{
172enum class unary : flags_t {
173};
174
175///@}
176
177/// @name %%tensor.bmm
178///@{
179enum class bmm : flags_t {
180};
181
182///@}
183
184/// @name %%tensor.conv
185///@{
186enum class conv : flags_t {
187};
188
189///@}
190
191/// @name %%tensor.dot_product
192///@{
193enum class dot_product : flags_t {
194};
195
196///@}
197
198/// @name %%tensor.pool
199///@{
200enum class pool : flags_t {
201};
202
203///@}
204
205/// @name %%tensor.product_2d
206///@{
207enum class product_2d : flags_t {
208};
209
210///@}
211
212/// @name %%tensor.gather
213///@{
214enum class gather : flags_t {
215};
216
217///@}
218
219/// @name %%tensor.scatter
220///@{
221enum class scatter : flags_t {
222};
223
224///@}
225
226/// @name %%tensor.fastest_axis
227///@{
228enum class fastest_axis : flags_t {
229};
230
231const Def* normalize_fastest_axis(const Def*, const Def*, const Def*);
232///@}
233
234/// @name %%tensor.if_static
235///@{
236enum class if_static : flags_t {
237};
238
239const Def* normalize_if_static(const Def*, const Def*, const Def*);
240///@}
241
242/// @name %%tensor.interchange
243///@{
244enum class interchange : flags_t {
245};
246
247///@}
248
249/// @name %%tensor.materialize
250///@{
251enum class materialize : flags_t {
252};
253
254///@}
255
256/// @name %%tensor.mr_tileable
257///@{
258enum class mr_tileable : flags_t {
259};
260
261///@}
262
263/// @name %%tensor.strip_mine_par
264///@{
266};
267
268///@}
269
270/// @name %%tensor.strip_mine_red
271///@{
273};
274
275///@}
276
277/// @name %%tensor.broadcast_in_dim_impl
278///@{
280};
281
282///@}
283
284/// @name %%tensor.flip_impl
285///@{
286enum class flip_impl : flags_t {
287};
288
289///@}
290
291/// @name %%tensor.gather_pointwise_elem_impl
292///@{
295
296///@}
297
298/// @name %%tensor.map_impl
299///@{
300enum class map_impl : flags_t {
301};
302
303///@}
304
305/// @name %%tensor.pool_impl
306///@{
307enum class pool_impl : flags_t {
308};
309
310///@}
311
312/// @name %%tensor.repeat_impl
313///@{
314enum class repeat_impl : flags_t {
315};
316
317///@}
318
319/// @name %%tensor.reshape_map
320///@{
321enum class reshape_map : flags_t {
322};
323
324///@}
325
326/// @name %%tensor.reshape_impl
327///@{
328enum class reshape_impl : flags_t {
329};
330
331///@}
332
333/// @name %%tensor.conv_impl
334///@{
335enum class conv_impl : flags_t {
336};
337
338///@}
339
340/// @name %%tensor.dot_product_impl
341///@{
343};
344
345///@}
346
347/// @name %%tensor.bmm_impl
348///@{
349enum class bmm_impl : flags_t {
350};
351
352///@}
353
354/// @name %%tensor.product_2d_impl
355///@{
357};
358
359///@}
360
361/// @name %%tensor.scatter_step_impl
362///@{
364};
365
366///@}
367
368/// @name %%tensor.slice_impl
369///@{
370enum class slice_impl : flags_t {
371};
372
373///@}
374
375/// @name %%tensor.transpose_impl
376///@{
378};
379
380///@}
381
382/// @name %%tensor.transpose_2d_impl
383///@{
385};
386
387///@}
388
389/// @name %%tensor.binary_impl
390///@{
391enum class binary_impl : flags_t {
392};
393
394///@}
395
396/// @name %%tensor.select_impl
397///@{
398enum class select_impl : flags_t {
399};
400
401///@}
402
403/// @name %%tensor.unary_impl
404///@{
405enum class unary_impl : flags_t {
406};
407
408///@}
409
410/// @name %%tensor.reassoc
411///@{
412enum class reassoc : flags_t {
413};
414
415///@}
416
417/// @name %%tensor.lower_tensor
418///@{
419enum class lower_tensor : flags_t {
420};
421
422///@}
423
424/// @name %%tensor.lower_map_reduce
425///@{
427};
428
429///@}
430
431/// @name %%tensor.lower_get_set
432///@{
433enum class lower_get_set : flags_t {
434};
435
436///@}
437
438/// @name %%tensor.fuse_tensor
439///@{
440enum class fuse_tensor : flags_t {
441};
442
443///@}
444
445/// @name %%tensor.lower_to_mem
446///@{
447enum class lower_to_mem : flags_t {
448};
449
450///@}
451
453
454#define MIM_tensor_NORMALIZER_IMPL \
455 void register_normalizers(Normalizers& normalizers) {\
456 normalizers[flags_t(Annex::Base<get>)] = &normalize_get; \
457 normalizers[flags_t(Annex::Base<set>)] = &normalize_set; \
458 normalizers[flags_t(Annex::Base<shape>)] = &normalize_shape; \
459 normalizers[flags_t(Annex::Base<broadcast>)] = &normalize_broadcast; \
460 normalizers[flags_t(Annex::Base<broadcast_in_dim>)] = &normalize_broadcast_in_dim; \
461 normalizers[flags_t(Annex::Base<concat>)] = &normalize_concat; \
462 normalizers[flags_t(Annex::Base<flip>)] = &normalize_flip; \
463 normalizers[flags_t(Annex::Base<pad>)] = &normalize_pad; \
464 normalizers[flags_t(Annex::Base<repeat>)] = &normalize_repeat; \
465 normalizers[flags_t(Annex::Base<reshape>)] = &normalize_reshape; \
466 normalizers[flags_t(Annex::Base<slice>)] = &normalize_slice; \
467 normalizers[flags_t(Annex::Base<fastest_axis>)] = &normalize_fastest_axis; \
468 normalizers[flags_t(Annex::Base<if_static>)] = &normalize_if_static; \
469 }
470} // namespace plug::tensor
471
472#ifndef DOXYGEN // don't include in Doxygen documentation
473
474template<> constexpr flags_t Annex::Base<plug::tensor::generate> = 0x5463d44130000000;
475template<> constexpr size_t Annex::Num<plug::tensor::generate> = 0;
476template<> constexpr flags_t Annex::Base<plug::tensor::splat> = 0x5463d44130000100;
477template<> constexpr size_t Annex::Num<plug::tensor::splat> = 0;
478template<> constexpr flags_t Annex::Base<plug::tensor::get> = 0x5463d44130000200;
479template<> constexpr size_t Annex::Num<plug::tensor::get> = 0;
480template<> constexpr flags_t Annex::Base<plug::tensor::set> = 0x5463d44130000300;
481template<> constexpr size_t Annex::Num<plug::tensor::set> = 0;
482template<> constexpr flags_t Annex::Base<plug::tensor::shape> = 0x5463d44130000400;
483template<> constexpr size_t Annex::Num<plug::tensor::shape> = 0;
484template<> constexpr flags_t Annex::Base<plug::tensor::id> = 0x5463d44130000500;
485template<> constexpr size_t Annex::Num<plug::tensor::id> = 0;
486template<> constexpr flags_t Annex::Base<plug::tensor::map_reduce_post> = 0x5463d44130000600;
487template<> constexpr size_t Annex::Num<plug::tensor::map_reduce_post> = 0;
488template<> constexpr flags_t Annex::Base<plug::tensor::map_reduce> = 0x5463d44130000700;
489template<> constexpr size_t Annex::Num<plug::tensor::map_reduce> = 0;
490template<> constexpr flags_t Annex::Base<plug::tensor::broadcast> = 0x5463d44130000800;
491template<> constexpr size_t Annex::Num<plug::tensor::broadcast> = 0;
492template<> constexpr flags_t Annex::Base<plug::tensor::broadcast_in_dim> = 0x5463d44130000900;
493template<> constexpr size_t Annex::Num<plug::tensor::broadcast_in_dim> = 0;
494template<> constexpr flags_t Annex::Base<plug::tensor::concat> = 0x5463d44130000a00;
495template<> constexpr size_t Annex::Num<plug::tensor::concat> = 0;
496template<> constexpr flags_t Annex::Base<plug::tensor::flip> = 0x5463d44130000b00;
497template<> constexpr size_t Annex::Num<plug::tensor::flip> = 0;
498template<> constexpr flags_t Annex::Base<plug::tensor::pad> = 0x5463d44130000c00;
499template<> constexpr size_t Annex::Num<plug::tensor::pad> = 0;
500template<> constexpr flags_t Annex::Base<plug::tensor::repeat> = 0x5463d44130000d00;
501template<> constexpr size_t Annex::Num<plug::tensor::repeat> = 0;
502template<> constexpr flags_t Annex::Base<plug::tensor::reshape> = 0x5463d44130000e00;
503template<> constexpr size_t Annex::Num<plug::tensor::reshape> = 0;
504template<> constexpr flags_t Annex::Base<plug::tensor::slice> = 0x5463d44130000f00;
505template<> constexpr size_t Annex::Num<plug::tensor::slice> = 0;
506template<> constexpr flags_t Annex::Base<plug::tensor::transpose> = 0x5463d44130001000;
507template<> constexpr size_t Annex::Num<plug::tensor::transpose> = 0;
508template<> constexpr flags_t Annex::Base<plug::tensor::transpose_2d> = 0x5463d44130001100;
509template<> constexpr size_t Annex::Num<plug::tensor::transpose_2d> = 0;
510template<> constexpr flags_t Annex::Base<plug::tensor::binary> = 0x5463d44130001200;
511template<> constexpr size_t Annex::Num<plug::tensor::binary> = 0;
512template<> constexpr flags_t Annex::Base<plug::tensor::map> = 0x5463d44130001300;
513template<> constexpr size_t Annex::Num<plug::tensor::map> = 0;
514template<> constexpr flags_t Annex::Base<plug::tensor::select> = 0x5463d44130001400;
515template<> constexpr size_t Annex::Num<plug::tensor::select> = 0;
516template<> constexpr flags_t Annex::Base<plug::tensor::unary> = 0x5463d44130001500;
517template<> constexpr size_t Annex::Num<plug::tensor::unary> = 0;
518template<> constexpr flags_t Annex::Base<plug::tensor::bmm> = 0x5463d44130001600;
519template<> constexpr size_t Annex::Num<plug::tensor::bmm> = 0;
520template<> constexpr flags_t Annex::Base<plug::tensor::conv> = 0x5463d44130001700;
521template<> constexpr size_t Annex::Num<plug::tensor::conv> = 0;
522template<> constexpr flags_t Annex::Base<plug::tensor::dot_product> = 0x5463d44130001800;
523template<> constexpr size_t Annex::Num<plug::tensor::dot_product> = 0;
524template<> constexpr flags_t Annex::Base<plug::tensor::pool> = 0x5463d44130001900;
525template<> constexpr size_t Annex::Num<plug::tensor::pool> = 0;
526template<> constexpr flags_t Annex::Base<plug::tensor::product_2d> = 0x5463d44130001a00;
527template<> constexpr size_t Annex::Num<plug::tensor::product_2d> = 0;
528template<> constexpr flags_t Annex::Base<plug::tensor::gather> = 0x5463d44130001b00;
529template<> constexpr size_t Annex::Num<plug::tensor::gather> = 0;
530template<> constexpr flags_t Annex::Base<plug::tensor::scatter> = 0x5463d44130001c00;
531template<> constexpr size_t Annex::Num<plug::tensor::scatter> = 0;
532template<> constexpr flags_t Annex::Base<plug::tensor::fastest_axis> = 0x5463d44130001d00;
533template<> constexpr size_t Annex::Num<plug::tensor::fastest_axis> = 0;
534template<> constexpr flags_t Annex::Base<plug::tensor::if_static> = 0x5463d44130001e00;
535template<> constexpr size_t Annex::Num<plug::tensor::if_static> = 0;
536template<> constexpr flags_t Annex::Base<plug::tensor::interchange> = 0x5463d44130001f00;
537template<> constexpr size_t Annex::Num<plug::tensor::interchange> = 0;
538template<> constexpr flags_t Annex::Base<plug::tensor::materialize> = 0x5463d44130002000;
539template<> constexpr size_t Annex::Num<plug::tensor::materialize> = 0;
540template<> constexpr flags_t Annex::Base<plug::tensor::mr_tileable> = 0x5463d44130002100;
541template<> constexpr size_t Annex::Num<plug::tensor::mr_tileable> = 0;
542template<> constexpr flags_t Annex::Base<plug::tensor::strip_mine_par> = 0x5463d44130002200;
543template<> constexpr size_t Annex::Num<plug::tensor::strip_mine_par> = 0;
544template<> constexpr flags_t Annex::Base<plug::tensor::strip_mine_red> = 0x5463d44130002300;
545template<> constexpr size_t Annex::Num<plug::tensor::strip_mine_red> = 0;
546template<> constexpr flags_t Annex::Base<plug::tensor::broadcast_in_dim_impl> = 0x5463d44130002400;
547template<> constexpr size_t Annex::Num<plug::tensor::broadcast_in_dim_impl> = 0;
548template<> constexpr flags_t Annex::Base<plug::tensor::flip_impl> = 0x5463d44130002500;
549template<> constexpr size_t Annex::Num<plug::tensor::flip_impl> = 0;
550template<> constexpr flags_t Annex::Base<plug::tensor::gather_pointwise_elem_impl> = 0x5463d44130002600;
551template<> constexpr size_t Annex::Num<plug::tensor::gather_pointwise_elem_impl> = 0;
552template<> constexpr flags_t Annex::Base<plug::tensor::map_impl> = 0x5463d44130002700;
553template<> constexpr size_t Annex::Num<plug::tensor::map_impl> = 0;
554template<> constexpr flags_t Annex::Base<plug::tensor::pool_impl> = 0x5463d44130002800;
555template<> constexpr size_t Annex::Num<plug::tensor::pool_impl> = 0;
556template<> constexpr flags_t Annex::Base<plug::tensor::repeat_impl> = 0x5463d44130002900;
557template<> constexpr size_t Annex::Num<plug::tensor::repeat_impl> = 0;
558template<> constexpr flags_t Annex::Base<plug::tensor::reshape_map> = 0x5463d44130002a00;
559template<> constexpr size_t Annex::Num<plug::tensor::reshape_map> = 0;
560template<> constexpr flags_t Annex::Base<plug::tensor::reshape_impl> = 0x5463d44130002b00;
561template<> constexpr size_t Annex::Num<plug::tensor::reshape_impl> = 0;
562template<> constexpr flags_t Annex::Base<plug::tensor::conv_impl> = 0x5463d44130002c00;
563template<> constexpr size_t Annex::Num<plug::tensor::conv_impl> = 0;
564template<> constexpr flags_t Annex::Base<plug::tensor::dot_product_impl> = 0x5463d44130002d00;
565template<> constexpr size_t Annex::Num<plug::tensor::dot_product_impl> = 0;
566template<> constexpr flags_t Annex::Base<plug::tensor::bmm_impl> = 0x5463d44130002e00;
567template<> constexpr size_t Annex::Num<plug::tensor::bmm_impl> = 0;
568template<> constexpr flags_t Annex::Base<plug::tensor::product_2d_impl> = 0x5463d44130002f00;
569template<> constexpr size_t Annex::Num<plug::tensor::product_2d_impl> = 0;
570template<> constexpr flags_t Annex::Base<plug::tensor::scatter_step_impl> = 0x5463d44130003000;
571template<> constexpr size_t Annex::Num<plug::tensor::scatter_step_impl> = 0;
572template<> constexpr flags_t Annex::Base<plug::tensor::slice_impl> = 0x5463d44130003100;
573template<> constexpr size_t Annex::Num<plug::tensor::slice_impl> = 0;
574template<> constexpr flags_t Annex::Base<plug::tensor::transpose_impl> = 0x5463d44130003200;
575template<> constexpr size_t Annex::Num<plug::tensor::transpose_impl> = 0;
576template<> constexpr flags_t Annex::Base<plug::tensor::transpose_2d_impl> = 0x5463d44130003300;
577template<> constexpr size_t Annex::Num<plug::tensor::transpose_2d_impl> = 0;
578template<> constexpr flags_t Annex::Base<plug::tensor::binary_impl> = 0x5463d44130003400;
579template<> constexpr size_t Annex::Num<plug::tensor::binary_impl> = 0;
580template<> constexpr flags_t Annex::Base<plug::tensor::select_impl> = 0x5463d44130003500;
581template<> constexpr size_t Annex::Num<plug::tensor::select_impl> = 0;
582template<> constexpr flags_t Annex::Base<plug::tensor::unary_impl> = 0x5463d44130003600;
583template<> constexpr size_t Annex::Num<plug::tensor::unary_impl> = 0;
584template<> constexpr flags_t Annex::Base<plug::tensor::reassoc> = 0x5463d44130003700;
585template<> constexpr size_t Annex::Num<plug::tensor::reassoc> = 0;
586template<> constexpr flags_t Annex::Base<plug::tensor::lower_tensor> = 0x5463d44130003800;
587template<> constexpr size_t Annex::Num<plug::tensor::lower_tensor> = 0;
588template<> constexpr flags_t Annex::Base<plug::tensor::lower_map_reduce> = 0x5463d44130003900;
589template<> constexpr size_t Annex::Num<plug::tensor::lower_map_reduce> = 0;
590template<> constexpr flags_t Annex::Base<plug::tensor::lower_get_set> = 0x5463d44130003a00;
591template<> constexpr size_t Annex::Num<plug::tensor::lower_get_set> = 0;
592template<> constexpr flags_t Annex::Base<plug::tensor::fuse_tensor> = 0x5463d44130003b00;
593template<> constexpr size_t Annex::Num<plug::tensor::fuse_tensor> = 0;
594template<> constexpr flags_t Annex::Base<plug::tensor::lower_to_mem> = 0x5463d44130003c00;
595template<> constexpr size_t Annex::Num<plug::tensor::lower_to_mem> = 0;
596
597template<> struct Axm::IsANode<plug::tensor::id> { using type = Axm; };
598template<> struct Axm::IsANode<plug::tensor::map_reduce> { using type = Axm; };
599template<> struct Axm::IsANode<plug::tensor::interchange> { using type = Axm; };
600template<> struct Axm::IsANode<plug::tensor::materialize> { using type = Axm; };
601template<> struct Axm::IsANode<plug::tensor::mr_tileable> { using type = Axm; };
602template<> struct Axm::IsANode<plug::tensor::strip_mine_par> { using type = Axm; };
603template<> struct Axm::IsANode<plug::tensor::strip_mine_red> { using type = Axm; };
604template<> struct Axm::IsANode<plug::tensor::broadcast_in_dim_impl> { using type = Axm; };
605template<> struct Axm::IsANode<plug::tensor::flip_impl> { using type = Axm; };
606template<> struct Axm::IsANode<plug::tensor::gather_pointwise_elem_impl> { using type = Axm; };
607template<> struct Axm::IsANode<plug::tensor::map_impl> { using type = Axm; };
608template<> struct Axm::IsANode<plug::tensor::pool_impl> { using type = Axm; };
609template<> struct Axm::IsANode<plug::tensor::repeat_impl> { using type = Axm; };
610template<> struct Axm::IsANode<plug::tensor::reshape_map> { using type = Axm; };
611template<> struct Axm::IsANode<plug::tensor::reshape_impl> { using type = Axm; };
612template<> struct Axm::IsANode<plug::tensor::conv_impl> { using type = Axm; };
613template<> struct Axm::IsANode<plug::tensor::dot_product_impl> { using type = Axm; };
614template<> struct Axm::IsANode<plug::tensor::bmm_impl> { using type = Axm; };
615template<> struct Axm::IsANode<plug::tensor::product_2d_impl> { using type = Axm; };
616template<> struct Axm::IsANode<plug::tensor::scatter_step_impl> { using type = Axm; };
617template<> struct Axm::IsANode<plug::tensor::slice_impl> { using type = Axm; };
618template<> struct Axm::IsANode<plug::tensor::transpose_impl> { using type = Axm; };
619template<> struct Axm::IsANode<plug::tensor::transpose_2d_impl> { using type = Axm; };
620template<> struct Axm::IsANode<plug::tensor::binary_impl> { using type = Axm; };
621template<> struct Axm::IsANode<plug::tensor::select_impl> { using type = Axm; };
622template<> struct Axm::IsANode<plug::tensor::unary_impl> { using type = Axm; };
623template<> struct Axm::IsANode<plug::tensor::reassoc> { using type = Axm; };
624template<> struct Axm::IsANode<plug::tensor::lower_tensor> { using type = Axm; };
625template<> struct Axm::IsANode<plug::tensor::lower_map_reduce> { using type = Axm; };
626template<> struct Axm::IsANode<plug::tensor::lower_get_set> { using type = Axm; };
627template<> struct Axm::IsANode<plug::tensor::fuse_tensor> { using type = Axm; };
628template<> struct Axm::IsANode<plug::tensor::lower_to_mem> { using type = Axm; };
629
630#endif
631} // namespace mim
632
633#ifndef DOXYGEN // don't include in Doxygen documentation
634
635
636#endif
Base class for all Defs.
Definition def.h:273
The tensor Plugin
Definition constraints.h:5
const Def * normalize_broadcast(const Def *, const Def *c, const Def *arg)
const Def * normalize_if_static(const Def *, const Def *, const Def *arg)
const Def * normalize_slice(const Def *, const Def *c, const Def *arg)
const Def * normalize_repeat(const Def *, const Def *c, const Def *arg)
const Def * normalize_pad(const Def *, const Def *c, const Def *arg)
const Def * normalize_get(const Def *, const Def *c, const Def *arg)
const Def * normalize_broadcast_in_dim(const Def *, const Def *, const Def *)
const Def * normalize_set(const Def *, const Def *c, const Def *arg)
const Def * normalize_concat(const Def *, const Def *, const Def *)
const Def * normalize_fastest_axis(const Def *, const Def *, const Def *arg)
const Def * normalize_reshape(const Def *, const Def *c, const Def *arg)
const Def * normalize_shape(const Def *, const Def *c, const Def *arg)
static constexpr plugin_t Plugin_Id
Definition autogen.h:10
void register_normalizers(Normalizers &normalizers)
const Def * normalize_flip(const Def *, const Def *, const Def *)
Definition ast.h:16
u64 flags_t
Definition types.h:39
absl::flat_hash_map< flags_t, NormalizeFn > Normalizers
Definition plugin.h:27
u64 plugin_t
Definition types.h:40
@ Axm
Definition def.h:122
static constexpr size_t Num
Number of Axm::subtags.
Definition plugin.h:247
static constexpr flags_t Base
Definition plugin.h:248