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