• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 
2 #include "nir.h"
3 
4 nir_op
nir_type_conversion_op(nir_alu_type src,nir_alu_type dst,nir_rounding_mode rnd)5 nir_type_conversion_op(nir_alu_type src, nir_alu_type dst, nir_rounding_mode rnd)
6 {
7    nir_alu_type src_base = (nir_alu_type) nir_alu_type_get_base_type(src);
8    nir_alu_type dst_base = (nir_alu_type) nir_alu_type_get_base_type(dst);
9    unsigned src_bit_size = nir_alu_type_get_type_size(src);
10    unsigned dst_bit_size = nir_alu_type_get_type_size(dst);
11 
12    if (src == dst && src_base == nir_type_float) {
13       return nir_op_fmov;
14    } else if ((src_base == nir_type_int || src_base == nir_type_uint) &&
15               (dst_base == nir_type_int || dst_base == nir_type_uint) &&
16               src_bit_size == dst_bit_size) {
17       /* Integer <-> integer conversions with the same bit-size on both
18        * ends are just no-op moves.
19        */
20       return nir_op_imov;
21    }
22 
23    switch (src_base) {
24       case nir_type_int:
25          switch (dst_base) {
26             case nir_type_int:
27             case nir_type_uint:
28 
29                switch (dst_bit_size) {
30                   case 16:
31                      assert(rnd == nir_rounding_mode_undef);
32                      return nir_op_i2i16;
33                   case 32:
34                      assert(rnd == nir_rounding_mode_undef);
35                      return nir_op_i2i32;
36                   case 64:
37                      assert(rnd == nir_rounding_mode_undef);
38                      return nir_op_i2i64;
39                   default:
40                      unreachable("Invalid nir alu bit size");
41                }
42             case nir_type_float:
43                switch (dst_bit_size) {
44                   case 16:
45                      assert(rnd == nir_rounding_mode_undef);
46                      return nir_op_i2f16;
47                   case 32:
48                      assert(rnd == nir_rounding_mode_undef);
49                      return nir_op_i2f32;
50                   case 64:
51                      assert(rnd == nir_rounding_mode_undef);
52                      return nir_op_i2f64;
53                   default:
54                      unreachable("Invalid nir alu bit size");
55                }
56             case nir_type_bool:
57                   return nir_op_i2b;
58             default:
59                unreachable("Invalid nir alu base type");
60          }
61       case nir_type_uint:
62          switch (dst_base) {
63             case nir_type_int:
64             case nir_type_uint:
65 
66                switch (dst_bit_size) {
67                   case 16:
68                      assert(rnd == nir_rounding_mode_undef);
69                      return nir_op_u2u16;
70                   case 32:
71                      assert(rnd == nir_rounding_mode_undef);
72                      return nir_op_u2u32;
73                   case 64:
74                      assert(rnd == nir_rounding_mode_undef);
75                      return nir_op_u2u64;
76                   default:
77                      unreachable("Invalid nir alu bit size");
78                }
79             case nir_type_float:
80                switch (dst_bit_size) {
81                   case 16:
82                      assert(rnd == nir_rounding_mode_undef);
83                      return nir_op_u2f16;
84                   case 32:
85                      assert(rnd == nir_rounding_mode_undef);
86                      return nir_op_u2f32;
87                   case 64:
88                      assert(rnd == nir_rounding_mode_undef);
89                      return nir_op_u2f64;
90                   default:
91                      unreachable("Invalid nir alu bit size");
92                }
93             case nir_type_bool:
94                   return nir_op_i2b;
95             default:
96                unreachable("Invalid nir alu base type");
97          }
98       case nir_type_float:
99          switch (dst_base) {
100             case nir_type_int:
101                switch (dst_bit_size) {
102                   case 16:
103                      assert(rnd == nir_rounding_mode_undef);
104                      return nir_op_f2i16;
105                   case 32:
106                      assert(rnd == nir_rounding_mode_undef);
107                      return nir_op_f2i32;
108                   case 64:
109                      assert(rnd == nir_rounding_mode_undef);
110                      return nir_op_f2i64;
111                   default:
112                      unreachable("Invalid nir alu bit size");
113                }
114             case nir_type_uint:
115                switch (dst_bit_size) {
116                   case 16:
117                      assert(rnd == nir_rounding_mode_undef);
118                      return nir_op_f2u16;
119                   case 32:
120                      assert(rnd == nir_rounding_mode_undef);
121                      return nir_op_f2u32;
122                   case 64:
123                      assert(rnd == nir_rounding_mode_undef);
124                      return nir_op_f2u64;
125                   default:
126                      unreachable("Invalid nir alu bit size");
127                }
128             case nir_type_float:
129                switch (dst_bit_size) {
130                   case 16:
131                      switch(rnd) {
132                         case nir_rounding_mode_rtne:
133                            return nir_op_f2f16_rtne;
134                         case nir_rounding_mode_rtz:
135                            return nir_op_f2f16_rtz;
136                         case nir_rounding_mode_undef:
137                            return nir_op_f2f16_undef;
138                         default:
139                            unreachable("Invalid 16-bit nir rounding mode");
140                      }
141                   case 32:
142                      assert(rnd == nir_rounding_mode_undef);
143                      return nir_op_f2f32;
144                   case 64:
145                      assert(rnd == nir_rounding_mode_undef);
146                      return nir_op_f2f64;
147                   default:
148                      unreachable("Invalid nir alu bit size");
149                }
150             case nir_type_bool:
151                   return nir_op_f2b;
152             default:
153                unreachable("Invalid nir alu base type");
154          }
155       case nir_type_bool:
156          switch (dst_base) {
157             case nir_type_int:
158             case nir_type_uint:
159                return nir_op_b2i;
160             case nir_type_float:
161                return nir_op_b2f;
162             default:
163                unreachable("Invalid nir alu base type");
164          }
165       default:
166          unreachable("Invalid nir alu base type");
167    }
168 }
169 
170 const nir_op_info nir_op_infos[nir_num_opcodes] = {
171 {
172    .name = "b2f",
173    .num_inputs = 1,
174    .output_size = 0,
175    .output_type = nir_type_float,
176    .input_sizes = {
177       0
178    },
179    .input_types = {
180       nir_type_bool32
181    },
182    .algebraic_properties =
183       0
184 },
185 {
186    .name = "b2i",
187    .num_inputs = 1,
188    .output_size = 0,
189    .output_type = nir_type_int,
190    .input_sizes = {
191       0
192    },
193    .input_types = {
194       nir_type_bool32
195    },
196    .algebraic_properties =
197       0
198 },
199 {
200    .name = "ball_fequal2",
201    .num_inputs = 2,
202    .output_size = 1,
203    .output_type = nir_type_bool32,
204    .input_sizes = {
205       2, 2
206    },
207    .input_types = {
208       nir_type_float, nir_type_float
209    },
210    .algebraic_properties =
211       NIR_OP_IS_COMMUTATIVE
212 },
213 {
214    .name = "ball_fequal3",
215    .num_inputs = 2,
216    .output_size = 1,
217    .output_type = nir_type_bool32,
218    .input_sizes = {
219       3, 3
220    },
221    .input_types = {
222       nir_type_float, nir_type_float
223    },
224    .algebraic_properties =
225       NIR_OP_IS_COMMUTATIVE
226 },
227 {
228    .name = "ball_fequal4",
229    .num_inputs = 2,
230    .output_size = 1,
231    .output_type = nir_type_bool32,
232    .input_sizes = {
233       4, 4
234    },
235    .input_types = {
236       nir_type_float, nir_type_float
237    },
238    .algebraic_properties =
239       NIR_OP_IS_COMMUTATIVE
240 },
241 {
242    .name = "ball_iequal2",
243    .num_inputs = 2,
244    .output_size = 1,
245    .output_type = nir_type_bool32,
246    .input_sizes = {
247       2, 2
248    },
249    .input_types = {
250       nir_type_int, nir_type_int
251    },
252    .algebraic_properties =
253       NIR_OP_IS_COMMUTATIVE
254 },
255 {
256    .name = "ball_iequal3",
257    .num_inputs = 2,
258    .output_size = 1,
259    .output_type = nir_type_bool32,
260    .input_sizes = {
261       3, 3
262    },
263    .input_types = {
264       nir_type_int, nir_type_int
265    },
266    .algebraic_properties =
267       NIR_OP_IS_COMMUTATIVE
268 },
269 {
270    .name = "ball_iequal4",
271    .num_inputs = 2,
272    .output_size = 1,
273    .output_type = nir_type_bool32,
274    .input_sizes = {
275       4, 4
276    },
277    .input_types = {
278       nir_type_int, nir_type_int
279    },
280    .algebraic_properties =
281       NIR_OP_IS_COMMUTATIVE
282 },
283 {
284    .name = "bany_fnequal2",
285    .num_inputs = 2,
286    .output_size = 1,
287    .output_type = nir_type_bool32,
288    .input_sizes = {
289       2, 2
290    },
291    .input_types = {
292       nir_type_float, nir_type_float
293    },
294    .algebraic_properties =
295       NIR_OP_IS_COMMUTATIVE
296 },
297 {
298    .name = "bany_fnequal3",
299    .num_inputs = 2,
300    .output_size = 1,
301    .output_type = nir_type_bool32,
302    .input_sizes = {
303       3, 3
304    },
305    .input_types = {
306       nir_type_float, nir_type_float
307    },
308    .algebraic_properties =
309       NIR_OP_IS_COMMUTATIVE
310 },
311 {
312    .name = "bany_fnequal4",
313    .num_inputs = 2,
314    .output_size = 1,
315    .output_type = nir_type_bool32,
316    .input_sizes = {
317       4, 4
318    },
319    .input_types = {
320       nir_type_float, nir_type_float
321    },
322    .algebraic_properties =
323       NIR_OP_IS_COMMUTATIVE
324 },
325 {
326    .name = "bany_inequal2",
327    .num_inputs = 2,
328    .output_size = 1,
329    .output_type = nir_type_bool32,
330    .input_sizes = {
331       2, 2
332    },
333    .input_types = {
334       nir_type_int, nir_type_int
335    },
336    .algebraic_properties =
337       NIR_OP_IS_COMMUTATIVE
338 },
339 {
340    .name = "bany_inequal3",
341    .num_inputs = 2,
342    .output_size = 1,
343    .output_type = nir_type_bool32,
344    .input_sizes = {
345       3, 3
346    },
347    .input_types = {
348       nir_type_int, nir_type_int
349    },
350    .algebraic_properties =
351       NIR_OP_IS_COMMUTATIVE
352 },
353 {
354    .name = "bany_inequal4",
355    .num_inputs = 2,
356    .output_size = 1,
357    .output_type = nir_type_bool32,
358    .input_sizes = {
359       4, 4
360    },
361    .input_types = {
362       nir_type_int, nir_type_int
363    },
364    .algebraic_properties =
365       NIR_OP_IS_COMMUTATIVE
366 },
367 {
368    .name = "bcsel",
369    .num_inputs = 3,
370    .output_size = 0,
371    .output_type = nir_type_uint,
372    .input_sizes = {
373       0, 0, 0
374    },
375    .input_types = {
376       nir_type_bool32, nir_type_uint, nir_type_uint
377    },
378    .algebraic_properties =
379       0
380 },
381 {
382    .name = "bfi",
383    .num_inputs = 3,
384    .output_size = 0,
385    .output_type = nir_type_uint32,
386    .input_sizes = {
387       0, 0, 0
388    },
389    .input_types = {
390       nir_type_uint32, nir_type_uint32, nir_type_uint32
391    },
392    .algebraic_properties =
393       0
394 },
395 {
396    .name = "bfm",
397    .num_inputs = 2,
398    .output_size = 0,
399    .output_type = nir_type_uint32,
400    .input_sizes = {
401       0, 0
402    },
403    .input_types = {
404       nir_type_int32, nir_type_int32
405    },
406    .algebraic_properties =
407       0
408 },
409 {
410    .name = "bit_count",
411    .num_inputs = 1,
412    .output_size = 0,
413    .output_type = nir_type_uint32,
414    .input_sizes = {
415       0
416    },
417    .input_types = {
418       nir_type_uint32
419    },
420    .algebraic_properties =
421       0
422 },
423 {
424    .name = "bitfield_insert",
425    .num_inputs = 4,
426    .output_size = 0,
427    .output_type = nir_type_uint32,
428    .input_sizes = {
429       0, 0, 0, 0
430    },
431    .input_types = {
432       nir_type_uint32, nir_type_uint32, nir_type_int32, nir_type_int32
433    },
434    .algebraic_properties =
435       0
436 },
437 {
438    .name = "bitfield_reverse",
439    .num_inputs = 1,
440    .output_size = 0,
441    .output_type = nir_type_uint32,
442    .input_sizes = {
443       0
444    },
445    .input_types = {
446       nir_type_uint32
447    },
448    .algebraic_properties =
449       0
450 },
451 {
452    .name = "extract_i16",
453    .num_inputs = 2,
454    .output_size = 0,
455    .output_type = nir_type_int,
456    .input_sizes = {
457       0, 0
458    },
459    .input_types = {
460       nir_type_int, nir_type_int
461    },
462    .algebraic_properties =
463       0
464 },
465 {
466    .name = "extract_i8",
467    .num_inputs = 2,
468    .output_size = 0,
469    .output_type = nir_type_int,
470    .input_sizes = {
471       0, 0
472    },
473    .input_types = {
474       nir_type_int, nir_type_int
475    },
476    .algebraic_properties =
477       0
478 },
479 {
480    .name = "extract_u16",
481    .num_inputs = 2,
482    .output_size = 0,
483    .output_type = nir_type_uint,
484    .input_sizes = {
485       0, 0
486    },
487    .input_types = {
488       nir_type_uint, nir_type_uint
489    },
490    .algebraic_properties =
491       0
492 },
493 {
494    .name = "extract_u8",
495    .num_inputs = 2,
496    .output_size = 0,
497    .output_type = nir_type_uint,
498    .input_sizes = {
499       0, 0
500    },
501    .input_types = {
502       nir_type_uint, nir_type_uint
503    },
504    .algebraic_properties =
505       0
506 },
507 {
508    .name = "f2b",
509    .num_inputs = 1,
510    .output_size = 0,
511    .output_type = nir_type_bool32,
512    .input_sizes = {
513       0
514    },
515    .input_types = {
516       nir_type_float
517    },
518    .algebraic_properties =
519       0
520 },
521 {
522    .name = "f2f16_rtne",
523    .num_inputs = 1,
524    .output_size = 0,
525    .output_type = nir_type_float16,
526    .input_sizes = {
527       0
528    },
529    .input_types = {
530       nir_type_float
531    },
532    .algebraic_properties =
533       0
534 },
535 {
536    .name = "f2f16_rtz",
537    .num_inputs = 1,
538    .output_size = 0,
539    .output_type = nir_type_float16,
540    .input_sizes = {
541       0
542    },
543    .input_types = {
544       nir_type_float
545    },
546    .algebraic_properties =
547       0
548 },
549 {
550    .name = "f2f16_undef",
551    .num_inputs = 1,
552    .output_size = 0,
553    .output_type = nir_type_float16,
554    .input_sizes = {
555       0
556    },
557    .input_types = {
558       nir_type_float
559    },
560    .algebraic_properties =
561       0
562 },
563 {
564    .name = "f2f32",
565    .num_inputs = 1,
566    .output_size = 0,
567    .output_type = nir_type_float32,
568    .input_sizes = {
569       0
570    },
571    .input_types = {
572       nir_type_float
573    },
574    .algebraic_properties =
575       0
576 },
577 {
578    .name = "f2f64",
579    .num_inputs = 1,
580    .output_size = 0,
581    .output_type = nir_type_float64,
582    .input_sizes = {
583       0
584    },
585    .input_types = {
586       nir_type_float
587    },
588    .algebraic_properties =
589       0
590 },
591 {
592    .name = "f2i16",
593    .num_inputs = 1,
594    .output_size = 0,
595    .output_type = nir_type_int16,
596    .input_sizes = {
597       0
598    },
599    .input_types = {
600       nir_type_float
601    },
602    .algebraic_properties =
603       0
604 },
605 {
606    .name = "f2i32",
607    .num_inputs = 1,
608    .output_size = 0,
609    .output_type = nir_type_int32,
610    .input_sizes = {
611       0
612    },
613    .input_types = {
614       nir_type_float
615    },
616    .algebraic_properties =
617       0
618 },
619 {
620    .name = "f2i64",
621    .num_inputs = 1,
622    .output_size = 0,
623    .output_type = nir_type_int64,
624    .input_sizes = {
625       0
626    },
627    .input_types = {
628       nir_type_float
629    },
630    .algebraic_properties =
631       0
632 },
633 {
634    .name = "f2i8",
635    .num_inputs = 1,
636    .output_size = 0,
637    .output_type = nir_type_int8,
638    .input_sizes = {
639       0
640    },
641    .input_types = {
642       nir_type_float
643    },
644    .algebraic_properties =
645       0
646 },
647 {
648    .name = "f2u16",
649    .num_inputs = 1,
650    .output_size = 0,
651    .output_type = nir_type_uint16,
652    .input_sizes = {
653       0
654    },
655    .input_types = {
656       nir_type_float
657    },
658    .algebraic_properties =
659       0
660 },
661 {
662    .name = "f2u32",
663    .num_inputs = 1,
664    .output_size = 0,
665    .output_type = nir_type_uint32,
666    .input_sizes = {
667       0
668    },
669    .input_types = {
670       nir_type_float
671    },
672    .algebraic_properties =
673       0
674 },
675 {
676    .name = "f2u64",
677    .num_inputs = 1,
678    .output_size = 0,
679    .output_type = nir_type_uint64,
680    .input_sizes = {
681       0
682    },
683    .input_types = {
684       nir_type_float
685    },
686    .algebraic_properties =
687       0
688 },
689 {
690    .name = "f2u8",
691    .num_inputs = 1,
692    .output_size = 0,
693    .output_type = nir_type_uint8,
694    .input_sizes = {
695       0
696    },
697    .input_types = {
698       nir_type_float
699    },
700    .algebraic_properties =
701       0
702 },
703 {
704    .name = "fabs",
705    .num_inputs = 1,
706    .output_size = 0,
707    .output_type = nir_type_float,
708    .input_sizes = {
709       0
710    },
711    .input_types = {
712       nir_type_float
713    },
714    .algebraic_properties =
715       0
716 },
717 {
718    .name = "fadd",
719    .num_inputs = 2,
720    .output_size = 0,
721    .output_type = nir_type_float,
722    .input_sizes = {
723       0, 0
724    },
725    .input_types = {
726       nir_type_float, nir_type_float
727    },
728    .algebraic_properties =
729       NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
730 },
731 {
732    .name = "fall_equal2",
733    .num_inputs = 2,
734    .output_size = 1,
735    .output_type = nir_type_float32,
736    .input_sizes = {
737       2, 2
738    },
739    .input_types = {
740       nir_type_float32, nir_type_float32
741    },
742    .algebraic_properties =
743       NIR_OP_IS_COMMUTATIVE
744 },
745 {
746    .name = "fall_equal3",
747    .num_inputs = 2,
748    .output_size = 1,
749    .output_type = nir_type_float32,
750    .input_sizes = {
751       3, 3
752    },
753    .input_types = {
754       nir_type_float32, nir_type_float32
755    },
756    .algebraic_properties =
757       NIR_OP_IS_COMMUTATIVE
758 },
759 {
760    .name = "fall_equal4",
761    .num_inputs = 2,
762    .output_size = 1,
763    .output_type = nir_type_float32,
764    .input_sizes = {
765       4, 4
766    },
767    .input_types = {
768       nir_type_float32, nir_type_float32
769    },
770    .algebraic_properties =
771       NIR_OP_IS_COMMUTATIVE
772 },
773 {
774    .name = "fand",
775    .num_inputs = 2,
776    .output_size = 0,
777    .output_type = nir_type_float32,
778    .input_sizes = {
779       0, 0
780    },
781    .input_types = {
782       nir_type_float32, nir_type_float32
783    },
784    .algebraic_properties =
785       NIR_OP_IS_COMMUTATIVE
786 },
787 {
788    .name = "fany_nequal2",
789    .num_inputs = 2,
790    .output_size = 1,
791    .output_type = nir_type_float32,
792    .input_sizes = {
793       2, 2
794    },
795    .input_types = {
796       nir_type_float32, nir_type_float32
797    },
798    .algebraic_properties =
799       NIR_OP_IS_COMMUTATIVE
800 },
801 {
802    .name = "fany_nequal3",
803    .num_inputs = 2,
804    .output_size = 1,
805    .output_type = nir_type_float32,
806    .input_sizes = {
807       3, 3
808    },
809    .input_types = {
810       nir_type_float32, nir_type_float32
811    },
812    .algebraic_properties =
813       NIR_OP_IS_COMMUTATIVE
814 },
815 {
816    .name = "fany_nequal4",
817    .num_inputs = 2,
818    .output_size = 1,
819    .output_type = nir_type_float32,
820    .input_sizes = {
821       4, 4
822    },
823    .input_types = {
824       nir_type_float32, nir_type_float32
825    },
826    .algebraic_properties =
827       NIR_OP_IS_COMMUTATIVE
828 },
829 {
830    .name = "fceil",
831    .num_inputs = 1,
832    .output_size = 0,
833    .output_type = nir_type_float,
834    .input_sizes = {
835       0
836    },
837    .input_types = {
838       nir_type_float
839    },
840    .algebraic_properties =
841       0
842 },
843 {
844    .name = "fcos",
845    .num_inputs = 1,
846    .output_size = 0,
847    .output_type = nir_type_float,
848    .input_sizes = {
849       0
850    },
851    .input_types = {
852       nir_type_float
853    },
854    .algebraic_properties =
855       0
856 },
857 {
858    .name = "fcsel",
859    .num_inputs = 3,
860    .output_size = 0,
861    .output_type = nir_type_float32,
862    .input_sizes = {
863       0, 0, 0
864    },
865    .input_types = {
866       nir_type_float32, nir_type_float32, nir_type_float32
867    },
868    .algebraic_properties =
869       0
870 },
871 {
872    .name = "fddx",
873    .num_inputs = 1,
874    .output_size = 0,
875    .output_type = nir_type_float,
876    .input_sizes = {
877       0
878    },
879    .input_types = {
880       nir_type_float
881    },
882    .algebraic_properties =
883       0
884 },
885 {
886    .name = "fddx_coarse",
887    .num_inputs = 1,
888    .output_size = 0,
889    .output_type = nir_type_float,
890    .input_sizes = {
891       0
892    },
893    .input_types = {
894       nir_type_float
895    },
896    .algebraic_properties =
897       0
898 },
899 {
900    .name = "fddx_fine",
901    .num_inputs = 1,
902    .output_size = 0,
903    .output_type = nir_type_float,
904    .input_sizes = {
905       0
906    },
907    .input_types = {
908       nir_type_float
909    },
910    .algebraic_properties =
911       0
912 },
913 {
914    .name = "fddy",
915    .num_inputs = 1,
916    .output_size = 0,
917    .output_type = nir_type_float,
918    .input_sizes = {
919       0
920    },
921    .input_types = {
922       nir_type_float
923    },
924    .algebraic_properties =
925       0
926 },
927 {
928    .name = "fddy_coarse",
929    .num_inputs = 1,
930    .output_size = 0,
931    .output_type = nir_type_float,
932    .input_sizes = {
933       0
934    },
935    .input_types = {
936       nir_type_float
937    },
938    .algebraic_properties =
939       0
940 },
941 {
942    .name = "fddy_fine",
943    .num_inputs = 1,
944    .output_size = 0,
945    .output_type = nir_type_float,
946    .input_sizes = {
947       0
948    },
949    .input_types = {
950       nir_type_float
951    },
952    .algebraic_properties =
953       0
954 },
955 {
956    .name = "fdiv",
957    .num_inputs = 2,
958    .output_size = 0,
959    .output_type = nir_type_float,
960    .input_sizes = {
961       0, 0
962    },
963    .input_types = {
964       nir_type_float, nir_type_float
965    },
966    .algebraic_properties =
967       0
968 },
969 {
970    .name = "fdot2",
971    .num_inputs = 2,
972    .output_size = 1,
973    .output_type = nir_type_float,
974    .input_sizes = {
975       2, 2
976    },
977    .input_types = {
978       nir_type_float, nir_type_float
979    },
980    .algebraic_properties =
981       NIR_OP_IS_COMMUTATIVE
982 },
983 {
984    .name = "fdot3",
985    .num_inputs = 2,
986    .output_size = 1,
987    .output_type = nir_type_float,
988    .input_sizes = {
989       3, 3
990    },
991    .input_types = {
992       nir_type_float, nir_type_float
993    },
994    .algebraic_properties =
995       NIR_OP_IS_COMMUTATIVE
996 },
997 {
998    .name = "fdot4",
999    .num_inputs = 2,
1000    .output_size = 1,
1001    .output_type = nir_type_float,
1002    .input_sizes = {
1003       4, 4
1004    },
1005    .input_types = {
1006       nir_type_float, nir_type_float
1007    },
1008    .algebraic_properties =
1009       NIR_OP_IS_COMMUTATIVE
1010 },
1011 {
1012    .name = "fdot_replicated2",
1013    .num_inputs = 2,
1014    .output_size = 4,
1015    .output_type = nir_type_float,
1016    .input_sizes = {
1017       2, 2
1018    },
1019    .input_types = {
1020       nir_type_float, nir_type_float
1021    },
1022    .algebraic_properties =
1023       NIR_OP_IS_COMMUTATIVE
1024 },
1025 {
1026    .name = "fdot_replicated3",
1027    .num_inputs = 2,
1028    .output_size = 4,
1029    .output_type = nir_type_float,
1030    .input_sizes = {
1031       3, 3
1032    },
1033    .input_types = {
1034       nir_type_float, nir_type_float
1035    },
1036    .algebraic_properties =
1037       NIR_OP_IS_COMMUTATIVE
1038 },
1039 {
1040    .name = "fdot_replicated4",
1041    .num_inputs = 2,
1042    .output_size = 4,
1043    .output_type = nir_type_float,
1044    .input_sizes = {
1045       4, 4
1046    },
1047    .input_types = {
1048       nir_type_float, nir_type_float
1049    },
1050    .algebraic_properties =
1051       NIR_OP_IS_COMMUTATIVE
1052 },
1053 {
1054    .name = "fdph",
1055    .num_inputs = 2,
1056    .output_size = 1,
1057    .output_type = nir_type_float,
1058    .input_sizes = {
1059       3, 4
1060    },
1061    .input_types = {
1062       nir_type_float, nir_type_float
1063    },
1064    .algebraic_properties =
1065       0
1066 },
1067 {
1068    .name = "fdph_replicated",
1069    .num_inputs = 2,
1070    .output_size = 4,
1071    .output_type = nir_type_float,
1072    .input_sizes = {
1073       3, 4
1074    },
1075    .input_types = {
1076       nir_type_float, nir_type_float
1077    },
1078    .algebraic_properties =
1079       0
1080 },
1081 {
1082    .name = "feq",
1083    .num_inputs = 2,
1084    .output_size = 0,
1085    .output_type = nir_type_bool32,
1086    .input_sizes = {
1087       0, 0
1088    },
1089    .input_types = {
1090       nir_type_float, nir_type_float
1091    },
1092    .algebraic_properties =
1093       NIR_OP_IS_COMMUTATIVE
1094 },
1095 {
1096    .name = "fexp2",
1097    .num_inputs = 1,
1098    .output_size = 0,
1099    .output_type = nir_type_float,
1100    .input_sizes = {
1101       0
1102    },
1103    .input_types = {
1104       nir_type_float
1105    },
1106    .algebraic_properties =
1107       0
1108 },
1109 {
1110    .name = "ffloor",
1111    .num_inputs = 1,
1112    .output_size = 0,
1113    .output_type = nir_type_float,
1114    .input_sizes = {
1115       0
1116    },
1117    .input_types = {
1118       nir_type_float
1119    },
1120    .algebraic_properties =
1121       0
1122 },
1123 {
1124    .name = "ffma",
1125    .num_inputs = 3,
1126    .output_size = 0,
1127    .output_type = nir_type_float,
1128    .input_sizes = {
1129       0, 0, 0
1130    },
1131    .input_types = {
1132       nir_type_float, nir_type_float, nir_type_float
1133    },
1134    .algebraic_properties =
1135       0
1136 },
1137 {
1138    .name = "ffract",
1139    .num_inputs = 1,
1140    .output_size = 0,
1141    .output_type = nir_type_float,
1142    .input_sizes = {
1143       0
1144    },
1145    .input_types = {
1146       nir_type_float
1147    },
1148    .algebraic_properties =
1149       0
1150 },
1151 {
1152    .name = "fge",
1153    .num_inputs = 2,
1154    .output_size = 0,
1155    .output_type = nir_type_bool32,
1156    .input_sizes = {
1157       0, 0
1158    },
1159    .input_types = {
1160       nir_type_float, nir_type_float
1161    },
1162    .algebraic_properties =
1163       0
1164 },
1165 {
1166    .name = "find_lsb",
1167    .num_inputs = 1,
1168    .output_size = 0,
1169    .output_type = nir_type_int32,
1170    .input_sizes = {
1171       0
1172    },
1173    .input_types = {
1174       nir_type_int32
1175    },
1176    .algebraic_properties =
1177       0
1178 },
1179 {
1180    .name = "flog2",
1181    .num_inputs = 1,
1182    .output_size = 0,
1183    .output_type = nir_type_float,
1184    .input_sizes = {
1185       0
1186    },
1187    .input_types = {
1188       nir_type_float
1189    },
1190    .algebraic_properties =
1191       0
1192 },
1193 {
1194    .name = "flrp",
1195    .num_inputs = 3,
1196    .output_size = 0,
1197    .output_type = nir_type_float,
1198    .input_sizes = {
1199       0, 0, 0
1200    },
1201    .input_types = {
1202       nir_type_float, nir_type_float, nir_type_float
1203    },
1204    .algebraic_properties =
1205       0
1206 },
1207 {
1208    .name = "flt",
1209    .num_inputs = 2,
1210    .output_size = 0,
1211    .output_type = nir_type_bool32,
1212    .input_sizes = {
1213       0, 0
1214    },
1215    .input_types = {
1216       nir_type_float, nir_type_float
1217    },
1218    .algebraic_properties =
1219       0
1220 },
1221 {
1222    .name = "fmax",
1223    .num_inputs = 2,
1224    .output_size = 0,
1225    .output_type = nir_type_float,
1226    .input_sizes = {
1227       0, 0
1228    },
1229    .input_types = {
1230       nir_type_float, nir_type_float
1231    },
1232    .algebraic_properties =
1233       0
1234 },
1235 {
1236    .name = "fmin",
1237    .num_inputs = 2,
1238    .output_size = 0,
1239    .output_type = nir_type_float,
1240    .input_sizes = {
1241       0, 0
1242    },
1243    .input_types = {
1244       nir_type_float, nir_type_float
1245    },
1246    .algebraic_properties =
1247       0
1248 },
1249 {
1250    .name = "fmod",
1251    .num_inputs = 2,
1252    .output_size = 0,
1253    .output_type = nir_type_float,
1254    .input_sizes = {
1255       0, 0
1256    },
1257    .input_types = {
1258       nir_type_float, nir_type_float
1259    },
1260    .algebraic_properties =
1261       0
1262 },
1263 {
1264    .name = "fmov",
1265    .num_inputs = 1,
1266    .output_size = 0,
1267    .output_type = nir_type_float,
1268    .input_sizes = {
1269       0
1270    },
1271    .input_types = {
1272       nir_type_float
1273    },
1274    .algebraic_properties =
1275       0
1276 },
1277 {
1278    .name = "fmul",
1279    .num_inputs = 2,
1280    .output_size = 0,
1281    .output_type = nir_type_float,
1282    .input_sizes = {
1283       0, 0
1284    },
1285    .input_types = {
1286       nir_type_float, nir_type_float
1287    },
1288    .algebraic_properties =
1289       NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
1290 },
1291 {
1292    .name = "fne",
1293    .num_inputs = 2,
1294    .output_size = 0,
1295    .output_type = nir_type_bool32,
1296    .input_sizes = {
1297       0, 0
1298    },
1299    .input_types = {
1300       nir_type_float, nir_type_float
1301    },
1302    .algebraic_properties =
1303       NIR_OP_IS_COMMUTATIVE
1304 },
1305 {
1306    .name = "fneg",
1307    .num_inputs = 1,
1308    .output_size = 0,
1309    .output_type = nir_type_float,
1310    .input_sizes = {
1311       0
1312    },
1313    .input_types = {
1314       nir_type_float
1315    },
1316    .algebraic_properties =
1317       0
1318 },
1319 {
1320    .name = "fnoise1_1",
1321    .num_inputs = 1,
1322    .output_size = 1,
1323    .output_type = nir_type_float,
1324    .input_sizes = {
1325       1
1326    },
1327    .input_types = {
1328       nir_type_float
1329    },
1330    .algebraic_properties =
1331       0
1332 },
1333 {
1334    .name = "fnoise1_2",
1335    .num_inputs = 1,
1336    .output_size = 1,
1337    .output_type = nir_type_float,
1338    .input_sizes = {
1339       2
1340    },
1341    .input_types = {
1342       nir_type_float
1343    },
1344    .algebraic_properties =
1345       0
1346 },
1347 {
1348    .name = "fnoise1_3",
1349    .num_inputs = 1,
1350    .output_size = 1,
1351    .output_type = nir_type_float,
1352    .input_sizes = {
1353       3
1354    },
1355    .input_types = {
1356       nir_type_float
1357    },
1358    .algebraic_properties =
1359       0
1360 },
1361 {
1362    .name = "fnoise1_4",
1363    .num_inputs = 1,
1364    .output_size = 1,
1365    .output_type = nir_type_float,
1366    .input_sizes = {
1367       4
1368    },
1369    .input_types = {
1370       nir_type_float
1371    },
1372    .algebraic_properties =
1373       0
1374 },
1375 {
1376    .name = "fnoise2_1",
1377    .num_inputs = 1,
1378    .output_size = 2,
1379    .output_type = nir_type_float,
1380    .input_sizes = {
1381       1
1382    },
1383    .input_types = {
1384       nir_type_float
1385    },
1386    .algebraic_properties =
1387       0
1388 },
1389 {
1390    .name = "fnoise2_2",
1391    .num_inputs = 1,
1392    .output_size = 2,
1393    .output_type = nir_type_float,
1394    .input_sizes = {
1395       2
1396    },
1397    .input_types = {
1398       nir_type_float
1399    },
1400    .algebraic_properties =
1401       0
1402 },
1403 {
1404    .name = "fnoise2_3",
1405    .num_inputs = 1,
1406    .output_size = 2,
1407    .output_type = nir_type_float,
1408    .input_sizes = {
1409       3
1410    },
1411    .input_types = {
1412       nir_type_float
1413    },
1414    .algebraic_properties =
1415       0
1416 },
1417 {
1418    .name = "fnoise2_4",
1419    .num_inputs = 1,
1420    .output_size = 2,
1421    .output_type = nir_type_float,
1422    .input_sizes = {
1423       4
1424    },
1425    .input_types = {
1426       nir_type_float
1427    },
1428    .algebraic_properties =
1429       0
1430 },
1431 {
1432    .name = "fnoise3_1",
1433    .num_inputs = 1,
1434    .output_size = 3,
1435    .output_type = nir_type_float,
1436    .input_sizes = {
1437       1
1438    },
1439    .input_types = {
1440       nir_type_float
1441    },
1442    .algebraic_properties =
1443       0
1444 },
1445 {
1446    .name = "fnoise3_2",
1447    .num_inputs = 1,
1448    .output_size = 3,
1449    .output_type = nir_type_float,
1450    .input_sizes = {
1451       2
1452    },
1453    .input_types = {
1454       nir_type_float
1455    },
1456    .algebraic_properties =
1457       0
1458 },
1459 {
1460    .name = "fnoise3_3",
1461    .num_inputs = 1,
1462    .output_size = 3,
1463    .output_type = nir_type_float,
1464    .input_sizes = {
1465       3
1466    },
1467    .input_types = {
1468       nir_type_float
1469    },
1470    .algebraic_properties =
1471       0
1472 },
1473 {
1474    .name = "fnoise3_4",
1475    .num_inputs = 1,
1476    .output_size = 3,
1477    .output_type = nir_type_float,
1478    .input_sizes = {
1479       4
1480    },
1481    .input_types = {
1482       nir_type_float
1483    },
1484    .algebraic_properties =
1485       0
1486 },
1487 {
1488    .name = "fnoise4_1",
1489    .num_inputs = 1,
1490    .output_size = 4,
1491    .output_type = nir_type_float,
1492    .input_sizes = {
1493       1
1494    },
1495    .input_types = {
1496       nir_type_float
1497    },
1498    .algebraic_properties =
1499       0
1500 },
1501 {
1502    .name = "fnoise4_2",
1503    .num_inputs = 1,
1504    .output_size = 4,
1505    .output_type = nir_type_float,
1506    .input_sizes = {
1507       2
1508    },
1509    .input_types = {
1510       nir_type_float
1511    },
1512    .algebraic_properties =
1513       0
1514 },
1515 {
1516    .name = "fnoise4_3",
1517    .num_inputs = 1,
1518    .output_size = 4,
1519    .output_type = nir_type_float,
1520    .input_sizes = {
1521       3
1522    },
1523    .input_types = {
1524       nir_type_float
1525    },
1526    .algebraic_properties =
1527       0
1528 },
1529 {
1530    .name = "fnoise4_4",
1531    .num_inputs = 1,
1532    .output_size = 4,
1533    .output_type = nir_type_float,
1534    .input_sizes = {
1535       4
1536    },
1537    .input_types = {
1538       nir_type_float
1539    },
1540    .algebraic_properties =
1541       0
1542 },
1543 {
1544    .name = "fnot",
1545    .num_inputs = 1,
1546    .output_size = 0,
1547    .output_type = nir_type_float,
1548    .input_sizes = {
1549       0
1550    },
1551    .input_types = {
1552       nir_type_float
1553    },
1554    .algebraic_properties =
1555       0
1556 },
1557 {
1558    .name = "for",
1559    .num_inputs = 2,
1560    .output_size = 0,
1561    .output_type = nir_type_float32,
1562    .input_sizes = {
1563       0, 0
1564    },
1565    .input_types = {
1566       nir_type_float32, nir_type_float32
1567    },
1568    .algebraic_properties =
1569       NIR_OP_IS_COMMUTATIVE
1570 },
1571 {
1572    .name = "fpow",
1573    .num_inputs = 2,
1574    .output_size = 0,
1575    .output_type = nir_type_float,
1576    .input_sizes = {
1577       0, 0
1578    },
1579    .input_types = {
1580       nir_type_float, nir_type_float
1581    },
1582    .algebraic_properties =
1583       0
1584 },
1585 {
1586    .name = "fquantize2f16",
1587    .num_inputs = 1,
1588    .output_size = 0,
1589    .output_type = nir_type_float,
1590    .input_sizes = {
1591       0
1592    },
1593    .input_types = {
1594       nir_type_float
1595    },
1596    .algebraic_properties =
1597       0
1598 },
1599 {
1600    .name = "frcp",
1601    .num_inputs = 1,
1602    .output_size = 0,
1603    .output_type = nir_type_float,
1604    .input_sizes = {
1605       0
1606    },
1607    .input_types = {
1608       nir_type_float
1609    },
1610    .algebraic_properties =
1611       0
1612 },
1613 {
1614    .name = "frem",
1615    .num_inputs = 2,
1616    .output_size = 0,
1617    .output_type = nir_type_float,
1618    .input_sizes = {
1619       0, 0
1620    },
1621    .input_types = {
1622       nir_type_float, nir_type_float
1623    },
1624    .algebraic_properties =
1625       0
1626 },
1627 {
1628    .name = "fround_even",
1629    .num_inputs = 1,
1630    .output_size = 0,
1631    .output_type = nir_type_float,
1632    .input_sizes = {
1633       0
1634    },
1635    .input_types = {
1636       nir_type_float
1637    },
1638    .algebraic_properties =
1639       0
1640 },
1641 {
1642    .name = "frsq",
1643    .num_inputs = 1,
1644    .output_size = 0,
1645    .output_type = nir_type_float,
1646    .input_sizes = {
1647       0
1648    },
1649    .input_types = {
1650       nir_type_float
1651    },
1652    .algebraic_properties =
1653       0
1654 },
1655 {
1656    .name = "fsat",
1657    .num_inputs = 1,
1658    .output_size = 0,
1659    .output_type = nir_type_float,
1660    .input_sizes = {
1661       0
1662    },
1663    .input_types = {
1664       nir_type_float
1665    },
1666    .algebraic_properties =
1667       0
1668 },
1669 {
1670    .name = "fsign",
1671    .num_inputs = 1,
1672    .output_size = 0,
1673    .output_type = nir_type_float,
1674    .input_sizes = {
1675       0
1676    },
1677    .input_types = {
1678       nir_type_float
1679    },
1680    .algebraic_properties =
1681       0
1682 },
1683 {
1684    .name = "fsin",
1685    .num_inputs = 1,
1686    .output_size = 0,
1687    .output_type = nir_type_float,
1688    .input_sizes = {
1689       0
1690    },
1691    .input_types = {
1692       nir_type_float
1693    },
1694    .algebraic_properties =
1695       0
1696 },
1697 {
1698    .name = "fsqrt",
1699    .num_inputs = 1,
1700    .output_size = 0,
1701    .output_type = nir_type_float,
1702    .input_sizes = {
1703       0
1704    },
1705    .input_types = {
1706       nir_type_float
1707    },
1708    .algebraic_properties =
1709       0
1710 },
1711 {
1712    .name = "fsub",
1713    .num_inputs = 2,
1714    .output_size = 0,
1715    .output_type = nir_type_float,
1716    .input_sizes = {
1717       0, 0
1718    },
1719    .input_types = {
1720       nir_type_float, nir_type_float
1721    },
1722    .algebraic_properties =
1723       0
1724 },
1725 {
1726    .name = "ftrunc",
1727    .num_inputs = 1,
1728    .output_size = 0,
1729    .output_type = nir_type_float,
1730    .input_sizes = {
1731       0
1732    },
1733    .input_types = {
1734       nir_type_float
1735    },
1736    .algebraic_properties =
1737       0
1738 },
1739 {
1740    .name = "fxor",
1741    .num_inputs = 2,
1742    .output_size = 0,
1743    .output_type = nir_type_float32,
1744    .input_sizes = {
1745       0, 0
1746    },
1747    .input_types = {
1748       nir_type_float32, nir_type_float32
1749    },
1750    .algebraic_properties =
1751       NIR_OP_IS_COMMUTATIVE
1752 },
1753 {
1754    .name = "i2b",
1755    .num_inputs = 1,
1756    .output_size = 0,
1757    .output_type = nir_type_bool32,
1758    .input_sizes = {
1759       0
1760    },
1761    .input_types = {
1762       nir_type_int
1763    },
1764    .algebraic_properties =
1765       0
1766 },
1767 {
1768    .name = "i2f16",
1769    .num_inputs = 1,
1770    .output_size = 0,
1771    .output_type = nir_type_float16,
1772    .input_sizes = {
1773       0
1774    },
1775    .input_types = {
1776       nir_type_int
1777    },
1778    .algebraic_properties =
1779       0
1780 },
1781 {
1782    .name = "i2f32",
1783    .num_inputs = 1,
1784    .output_size = 0,
1785    .output_type = nir_type_float32,
1786    .input_sizes = {
1787       0
1788    },
1789    .input_types = {
1790       nir_type_int
1791    },
1792    .algebraic_properties =
1793       0
1794 },
1795 {
1796    .name = "i2f64",
1797    .num_inputs = 1,
1798    .output_size = 0,
1799    .output_type = nir_type_float64,
1800    .input_sizes = {
1801       0
1802    },
1803    .input_types = {
1804       nir_type_int
1805    },
1806    .algebraic_properties =
1807       0
1808 },
1809 {
1810    .name = "i2i16",
1811    .num_inputs = 1,
1812    .output_size = 0,
1813    .output_type = nir_type_int16,
1814    .input_sizes = {
1815       0
1816    },
1817    .input_types = {
1818       nir_type_int
1819    },
1820    .algebraic_properties =
1821       0
1822 },
1823 {
1824    .name = "i2i32",
1825    .num_inputs = 1,
1826    .output_size = 0,
1827    .output_type = nir_type_int32,
1828    .input_sizes = {
1829       0
1830    },
1831    .input_types = {
1832       nir_type_int
1833    },
1834    .algebraic_properties =
1835       0
1836 },
1837 {
1838    .name = "i2i64",
1839    .num_inputs = 1,
1840    .output_size = 0,
1841    .output_type = nir_type_int64,
1842    .input_sizes = {
1843       0
1844    },
1845    .input_types = {
1846       nir_type_int
1847    },
1848    .algebraic_properties =
1849       0
1850 },
1851 {
1852    .name = "i2i8",
1853    .num_inputs = 1,
1854    .output_size = 0,
1855    .output_type = nir_type_int8,
1856    .input_sizes = {
1857       0
1858    },
1859    .input_types = {
1860       nir_type_int
1861    },
1862    .algebraic_properties =
1863       0
1864 },
1865 {
1866    .name = "iabs",
1867    .num_inputs = 1,
1868    .output_size = 0,
1869    .output_type = nir_type_int,
1870    .input_sizes = {
1871       0
1872    },
1873    .input_types = {
1874       nir_type_int
1875    },
1876    .algebraic_properties =
1877       0
1878 },
1879 {
1880    .name = "iadd",
1881    .num_inputs = 2,
1882    .output_size = 0,
1883    .output_type = nir_type_int,
1884    .input_sizes = {
1885       0, 0
1886    },
1887    .input_types = {
1888       nir_type_int, nir_type_int
1889    },
1890    .algebraic_properties =
1891       NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
1892 },
1893 {
1894    .name = "iand",
1895    .num_inputs = 2,
1896    .output_size = 0,
1897    .output_type = nir_type_uint,
1898    .input_sizes = {
1899       0, 0
1900    },
1901    .input_types = {
1902       nir_type_uint, nir_type_uint
1903    },
1904    .algebraic_properties =
1905       NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
1906 },
1907 {
1908    .name = "ibfe",
1909    .num_inputs = 3,
1910    .output_size = 0,
1911    .output_type = nir_type_int32,
1912    .input_sizes = {
1913       0, 0, 0
1914    },
1915    .input_types = {
1916       nir_type_int32, nir_type_int32, nir_type_int32
1917    },
1918    .algebraic_properties =
1919       0
1920 },
1921 {
1922    .name = "ibitfield_extract",
1923    .num_inputs = 3,
1924    .output_size = 0,
1925    .output_type = nir_type_int32,
1926    .input_sizes = {
1927       0, 0, 0
1928    },
1929    .input_types = {
1930       nir_type_int32, nir_type_int32, nir_type_int32
1931    },
1932    .algebraic_properties =
1933       0
1934 },
1935 {
1936    .name = "idiv",
1937    .num_inputs = 2,
1938    .output_size = 0,
1939    .output_type = nir_type_int,
1940    .input_sizes = {
1941       0, 0
1942    },
1943    .input_types = {
1944       nir_type_int, nir_type_int
1945    },
1946    .algebraic_properties =
1947       0
1948 },
1949 {
1950    .name = "ieq",
1951    .num_inputs = 2,
1952    .output_size = 0,
1953    .output_type = nir_type_bool32,
1954    .input_sizes = {
1955       0, 0
1956    },
1957    .input_types = {
1958       nir_type_int, nir_type_int
1959    },
1960    .algebraic_properties =
1961       NIR_OP_IS_COMMUTATIVE
1962 },
1963 {
1964    .name = "ifind_msb",
1965    .num_inputs = 1,
1966    .output_size = 0,
1967    .output_type = nir_type_int32,
1968    .input_sizes = {
1969       0
1970    },
1971    .input_types = {
1972       nir_type_int32
1973    },
1974    .algebraic_properties =
1975       0
1976 },
1977 {
1978    .name = "ige",
1979    .num_inputs = 2,
1980    .output_size = 0,
1981    .output_type = nir_type_bool32,
1982    .input_sizes = {
1983       0, 0
1984    },
1985    .input_types = {
1986       nir_type_int, nir_type_int
1987    },
1988    .algebraic_properties =
1989       0
1990 },
1991 {
1992    .name = "ilt",
1993    .num_inputs = 2,
1994    .output_size = 0,
1995    .output_type = nir_type_bool32,
1996    .input_sizes = {
1997       0, 0
1998    },
1999    .input_types = {
2000       nir_type_int, nir_type_int
2001    },
2002    .algebraic_properties =
2003       0
2004 },
2005 {
2006    .name = "imax",
2007    .num_inputs = 2,
2008    .output_size = 0,
2009    .output_type = nir_type_int,
2010    .input_sizes = {
2011       0, 0
2012    },
2013    .input_types = {
2014       nir_type_int, nir_type_int
2015    },
2016    .algebraic_properties =
2017       NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
2018 },
2019 {
2020    .name = "imin",
2021    .num_inputs = 2,
2022    .output_size = 0,
2023    .output_type = nir_type_int,
2024    .input_sizes = {
2025       0, 0
2026    },
2027    .input_types = {
2028       nir_type_int, nir_type_int
2029    },
2030    .algebraic_properties =
2031       NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
2032 },
2033 {
2034    .name = "imod",
2035    .num_inputs = 2,
2036    .output_size = 0,
2037    .output_type = nir_type_int,
2038    .input_sizes = {
2039       0, 0
2040    },
2041    .input_types = {
2042       nir_type_int, nir_type_int
2043    },
2044    .algebraic_properties =
2045       0
2046 },
2047 {
2048    .name = "imov",
2049    .num_inputs = 1,
2050    .output_size = 0,
2051    .output_type = nir_type_int,
2052    .input_sizes = {
2053       0
2054    },
2055    .input_types = {
2056       nir_type_int
2057    },
2058    .algebraic_properties =
2059       0
2060 },
2061 {
2062    .name = "imul",
2063    .num_inputs = 2,
2064    .output_size = 0,
2065    .output_type = nir_type_int,
2066    .input_sizes = {
2067       0, 0
2068    },
2069    .input_types = {
2070       nir_type_int, nir_type_int
2071    },
2072    .algebraic_properties =
2073       NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
2074 },
2075 {
2076    .name = "imul_high",
2077    .num_inputs = 2,
2078    .output_size = 0,
2079    .output_type = nir_type_int32,
2080    .input_sizes = {
2081       0, 0
2082    },
2083    .input_types = {
2084       nir_type_int32, nir_type_int32
2085    },
2086    .algebraic_properties =
2087       NIR_OP_IS_COMMUTATIVE
2088 },
2089 {
2090    .name = "ine",
2091    .num_inputs = 2,
2092    .output_size = 0,
2093    .output_type = nir_type_bool32,
2094    .input_sizes = {
2095       0, 0
2096    },
2097    .input_types = {
2098       nir_type_int, nir_type_int
2099    },
2100    .algebraic_properties =
2101       NIR_OP_IS_COMMUTATIVE
2102 },
2103 {
2104    .name = "ineg",
2105    .num_inputs = 1,
2106    .output_size = 0,
2107    .output_type = nir_type_int,
2108    .input_sizes = {
2109       0
2110    },
2111    .input_types = {
2112       nir_type_int
2113    },
2114    .algebraic_properties =
2115       0
2116 },
2117 {
2118    .name = "inot",
2119    .num_inputs = 1,
2120    .output_size = 0,
2121    .output_type = nir_type_int,
2122    .input_sizes = {
2123       0
2124    },
2125    .input_types = {
2126       nir_type_int
2127    },
2128    .algebraic_properties =
2129       0
2130 },
2131 {
2132    .name = "ior",
2133    .num_inputs = 2,
2134    .output_size = 0,
2135    .output_type = nir_type_uint,
2136    .input_sizes = {
2137       0, 0
2138    },
2139    .input_types = {
2140       nir_type_uint, nir_type_uint
2141    },
2142    .algebraic_properties =
2143       NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
2144 },
2145 {
2146    .name = "irem",
2147    .num_inputs = 2,
2148    .output_size = 0,
2149    .output_type = nir_type_int,
2150    .input_sizes = {
2151       0, 0
2152    },
2153    .input_types = {
2154       nir_type_int, nir_type_int
2155    },
2156    .algebraic_properties =
2157       0
2158 },
2159 {
2160    .name = "ishl",
2161    .num_inputs = 2,
2162    .output_size = 0,
2163    .output_type = nir_type_int,
2164    .input_sizes = {
2165       0, 0
2166    },
2167    .input_types = {
2168       nir_type_int, nir_type_uint32
2169    },
2170    .algebraic_properties =
2171       0
2172 },
2173 {
2174    .name = "ishr",
2175    .num_inputs = 2,
2176    .output_size = 0,
2177    .output_type = nir_type_int,
2178    .input_sizes = {
2179       0, 0
2180    },
2181    .input_types = {
2182       nir_type_int, nir_type_uint32
2183    },
2184    .algebraic_properties =
2185       0
2186 },
2187 {
2188    .name = "isign",
2189    .num_inputs = 1,
2190    .output_size = 0,
2191    .output_type = nir_type_int,
2192    .input_sizes = {
2193       0
2194    },
2195    .input_types = {
2196       nir_type_int
2197    },
2198    .algebraic_properties =
2199       0
2200 },
2201 {
2202    .name = "isub",
2203    .num_inputs = 2,
2204    .output_size = 0,
2205    .output_type = nir_type_int,
2206    .input_sizes = {
2207       0, 0
2208    },
2209    .input_types = {
2210       nir_type_int, nir_type_int
2211    },
2212    .algebraic_properties =
2213       0
2214 },
2215 {
2216    .name = "ixor",
2217    .num_inputs = 2,
2218    .output_size = 0,
2219    .output_type = nir_type_uint,
2220    .input_sizes = {
2221       0, 0
2222    },
2223    .input_types = {
2224       nir_type_uint, nir_type_uint
2225    },
2226    .algebraic_properties =
2227       NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
2228 },
2229 {
2230    .name = "ldexp",
2231    .num_inputs = 2,
2232    .output_size = 0,
2233    .output_type = nir_type_float,
2234    .input_sizes = {
2235       0, 0
2236    },
2237    .input_types = {
2238       nir_type_float, nir_type_int32
2239    },
2240    .algebraic_properties =
2241       0
2242 },
2243 {
2244    .name = "pack_64_2x32",
2245    .num_inputs = 1,
2246    .output_size = 1,
2247    .output_type = nir_type_uint64,
2248    .input_sizes = {
2249       2
2250    },
2251    .input_types = {
2252       nir_type_uint32
2253    },
2254    .algebraic_properties =
2255       0
2256 },
2257 {
2258    .name = "pack_64_2x32_split",
2259    .num_inputs = 2,
2260    .output_size = 0,
2261    .output_type = nir_type_uint64,
2262    .input_sizes = {
2263       0, 0
2264    },
2265    .input_types = {
2266       nir_type_uint32, nir_type_uint32
2267    },
2268    .algebraic_properties =
2269       0
2270 },
2271 {
2272    .name = "pack_half_2x16",
2273    .num_inputs = 1,
2274    .output_size = 1,
2275    .output_type = nir_type_uint32,
2276    .input_sizes = {
2277       2
2278    },
2279    .input_types = {
2280       nir_type_float32
2281    },
2282    .algebraic_properties =
2283       0
2284 },
2285 {
2286    .name = "pack_half_2x16_split",
2287    .num_inputs = 2,
2288    .output_size = 1,
2289    .output_type = nir_type_uint32,
2290    .input_sizes = {
2291       1, 1
2292    },
2293    .input_types = {
2294       nir_type_float32, nir_type_float32
2295    },
2296    .algebraic_properties =
2297       0
2298 },
2299 {
2300    .name = "pack_snorm_2x16",
2301    .num_inputs = 1,
2302    .output_size = 1,
2303    .output_type = nir_type_uint32,
2304    .input_sizes = {
2305       2
2306    },
2307    .input_types = {
2308       nir_type_float32
2309    },
2310    .algebraic_properties =
2311       0
2312 },
2313 {
2314    .name = "pack_snorm_4x8",
2315    .num_inputs = 1,
2316    .output_size = 1,
2317    .output_type = nir_type_uint32,
2318    .input_sizes = {
2319       4
2320    },
2321    .input_types = {
2322       nir_type_float32
2323    },
2324    .algebraic_properties =
2325       0
2326 },
2327 {
2328    .name = "pack_unorm_2x16",
2329    .num_inputs = 1,
2330    .output_size = 1,
2331    .output_type = nir_type_uint32,
2332    .input_sizes = {
2333       2
2334    },
2335    .input_types = {
2336       nir_type_float32
2337    },
2338    .algebraic_properties =
2339       0
2340 },
2341 {
2342    .name = "pack_unorm_4x8",
2343    .num_inputs = 1,
2344    .output_size = 1,
2345    .output_type = nir_type_uint32,
2346    .input_sizes = {
2347       4
2348    },
2349    .input_types = {
2350       nir_type_float32
2351    },
2352    .algebraic_properties =
2353       0
2354 },
2355 {
2356    .name = "pack_uvec2_to_uint",
2357    .num_inputs = 1,
2358    .output_size = 1,
2359    .output_type = nir_type_uint32,
2360    .input_sizes = {
2361       2
2362    },
2363    .input_types = {
2364       nir_type_uint32
2365    },
2366    .algebraic_properties =
2367       0
2368 },
2369 {
2370    .name = "pack_uvec4_to_uint",
2371    .num_inputs = 1,
2372    .output_size = 1,
2373    .output_type = nir_type_uint32,
2374    .input_sizes = {
2375       4
2376    },
2377    .input_types = {
2378       nir_type_uint32
2379    },
2380    .algebraic_properties =
2381       0
2382 },
2383 {
2384    .name = "seq",
2385    .num_inputs = 2,
2386    .output_size = 0,
2387    .output_type = nir_type_float32,
2388    .input_sizes = {
2389       0, 0
2390    },
2391    .input_types = {
2392       nir_type_float32, nir_type_float32
2393    },
2394    .algebraic_properties =
2395       NIR_OP_IS_COMMUTATIVE
2396 },
2397 {
2398    .name = "sge",
2399    .num_inputs = 2,
2400    .output_size = 0,
2401    .output_type = nir_type_float,
2402    .input_sizes = {
2403       0, 0
2404    },
2405    .input_types = {
2406       nir_type_float, nir_type_float
2407    },
2408    .algebraic_properties =
2409       0
2410 },
2411 {
2412    .name = "slt",
2413    .num_inputs = 2,
2414    .output_size = 0,
2415    .output_type = nir_type_float32,
2416    .input_sizes = {
2417       0, 0
2418    },
2419    .input_types = {
2420       nir_type_float32, nir_type_float32
2421    },
2422    .algebraic_properties =
2423       0
2424 },
2425 {
2426    .name = "sne",
2427    .num_inputs = 2,
2428    .output_size = 0,
2429    .output_type = nir_type_float32,
2430    .input_sizes = {
2431       0, 0
2432    },
2433    .input_types = {
2434       nir_type_float32, nir_type_float32
2435    },
2436    .algebraic_properties =
2437       NIR_OP_IS_COMMUTATIVE
2438 },
2439 {
2440    .name = "u2f16",
2441    .num_inputs = 1,
2442    .output_size = 0,
2443    .output_type = nir_type_float16,
2444    .input_sizes = {
2445       0
2446    },
2447    .input_types = {
2448       nir_type_uint
2449    },
2450    .algebraic_properties =
2451       0
2452 },
2453 {
2454    .name = "u2f32",
2455    .num_inputs = 1,
2456    .output_size = 0,
2457    .output_type = nir_type_float32,
2458    .input_sizes = {
2459       0
2460    },
2461    .input_types = {
2462       nir_type_uint
2463    },
2464    .algebraic_properties =
2465       0
2466 },
2467 {
2468    .name = "u2f64",
2469    .num_inputs = 1,
2470    .output_size = 0,
2471    .output_type = nir_type_float64,
2472    .input_sizes = {
2473       0
2474    },
2475    .input_types = {
2476       nir_type_uint
2477    },
2478    .algebraic_properties =
2479       0
2480 },
2481 {
2482    .name = "u2u16",
2483    .num_inputs = 1,
2484    .output_size = 0,
2485    .output_type = nir_type_uint16,
2486    .input_sizes = {
2487       0
2488    },
2489    .input_types = {
2490       nir_type_uint
2491    },
2492    .algebraic_properties =
2493       0
2494 },
2495 {
2496    .name = "u2u32",
2497    .num_inputs = 1,
2498    .output_size = 0,
2499    .output_type = nir_type_uint32,
2500    .input_sizes = {
2501       0
2502    },
2503    .input_types = {
2504       nir_type_uint
2505    },
2506    .algebraic_properties =
2507       0
2508 },
2509 {
2510    .name = "u2u64",
2511    .num_inputs = 1,
2512    .output_size = 0,
2513    .output_type = nir_type_uint64,
2514    .input_sizes = {
2515       0
2516    },
2517    .input_types = {
2518       nir_type_uint
2519    },
2520    .algebraic_properties =
2521       0
2522 },
2523 {
2524    .name = "u2u8",
2525    .num_inputs = 1,
2526    .output_size = 0,
2527    .output_type = nir_type_uint8,
2528    .input_sizes = {
2529       0
2530    },
2531    .input_types = {
2532       nir_type_uint
2533    },
2534    .algebraic_properties =
2535       0
2536 },
2537 {
2538    .name = "uadd_carry",
2539    .num_inputs = 2,
2540    .output_size = 0,
2541    .output_type = nir_type_uint,
2542    .input_sizes = {
2543       0, 0
2544    },
2545    .input_types = {
2546       nir_type_uint, nir_type_uint
2547    },
2548    .algebraic_properties =
2549       NIR_OP_IS_COMMUTATIVE
2550 },
2551 {
2552    .name = "ubfe",
2553    .num_inputs = 3,
2554    .output_size = 0,
2555    .output_type = nir_type_uint32,
2556    .input_sizes = {
2557       0, 0, 0
2558    },
2559    .input_types = {
2560       nir_type_uint32, nir_type_int32, nir_type_int32
2561    },
2562    .algebraic_properties =
2563       0
2564 },
2565 {
2566    .name = "ubitfield_extract",
2567    .num_inputs = 3,
2568    .output_size = 0,
2569    .output_type = nir_type_uint32,
2570    .input_sizes = {
2571       0, 0, 0
2572    },
2573    .input_types = {
2574       nir_type_uint32, nir_type_int32, nir_type_int32
2575    },
2576    .algebraic_properties =
2577       0
2578 },
2579 {
2580    .name = "udiv",
2581    .num_inputs = 2,
2582    .output_size = 0,
2583    .output_type = nir_type_uint,
2584    .input_sizes = {
2585       0, 0
2586    },
2587    .input_types = {
2588       nir_type_uint, nir_type_uint
2589    },
2590    .algebraic_properties =
2591       0
2592 },
2593 {
2594    .name = "ufind_msb",
2595    .num_inputs = 1,
2596    .output_size = 0,
2597    .output_type = nir_type_int32,
2598    .input_sizes = {
2599       0
2600    },
2601    .input_types = {
2602       nir_type_uint32
2603    },
2604    .algebraic_properties =
2605       0
2606 },
2607 {
2608    .name = "uge",
2609    .num_inputs = 2,
2610    .output_size = 0,
2611    .output_type = nir_type_bool32,
2612    .input_sizes = {
2613       0, 0
2614    },
2615    .input_types = {
2616       nir_type_uint, nir_type_uint
2617    },
2618    .algebraic_properties =
2619       0
2620 },
2621 {
2622    .name = "ult",
2623    .num_inputs = 2,
2624    .output_size = 0,
2625    .output_type = nir_type_bool32,
2626    .input_sizes = {
2627       0, 0
2628    },
2629    .input_types = {
2630       nir_type_uint, nir_type_uint
2631    },
2632    .algebraic_properties =
2633       0
2634 },
2635 {
2636    .name = "umax",
2637    .num_inputs = 2,
2638    .output_size = 0,
2639    .output_type = nir_type_uint,
2640    .input_sizes = {
2641       0, 0
2642    },
2643    .input_types = {
2644       nir_type_uint, nir_type_uint
2645    },
2646    .algebraic_properties =
2647       NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
2648 },
2649 {
2650    .name = "umax_4x8",
2651    .num_inputs = 2,
2652    .output_size = 0,
2653    .output_type = nir_type_int32,
2654    .input_sizes = {
2655       0, 0
2656    },
2657    .input_types = {
2658       nir_type_int32, nir_type_int32
2659    },
2660    .algebraic_properties =
2661       NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
2662 },
2663 {
2664    .name = "umin",
2665    .num_inputs = 2,
2666    .output_size = 0,
2667    .output_type = nir_type_uint,
2668    .input_sizes = {
2669       0, 0
2670    },
2671    .input_types = {
2672       nir_type_uint, nir_type_uint
2673    },
2674    .algebraic_properties =
2675       NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
2676 },
2677 {
2678    .name = "umin_4x8",
2679    .num_inputs = 2,
2680    .output_size = 0,
2681    .output_type = nir_type_int32,
2682    .input_sizes = {
2683       0, 0
2684    },
2685    .input_types = {
2686       nir_type_int32, nir_type_int32
2687    },
2688    .algebraic_properties =
2689       NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
2690 },
2691 {
2692    .name = "umod",
2693    .num_inputs = 2,
2694    .output_size = 0,
2695    .output_type = nir_type_uint,
2696    .input_sizes = {
2697       0, 0
2698    },
2699    .input_types = {
2700       nir_type_uint, nir_type_uint
2701    },
2702    .algebraic_properties =
2703       0
2704 },
2705 {
2706    .name = "umul_high",
2707    .num_inputs = 2,
2708    .output_size = 0,
2709    .output_type = nir_type_uint32,
2710    .input_sizes = {
2711       0, 0
2712    },
2713    .input_types = {
2714       nir_type_uint32, nir_type_uint32
2715    },
2716    .algebraic_properties =
2717       NIR_OP_IS_COMMUTATIVE
2718 },
2719 {
2720    .name = "umul_unorm_4x8",
2721    .num_inputs = 2,
2722    .output_size = 0,
2723    .output_type = nir_type_int32,
2724    .input_sizes = {
2725       0, 0
2726    },
2727    .input_types = {
2728       nir_type_int32, nir_type_int32
2729    },
2730    .algebraic_properties =
2731       NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
2732 },
2733 {
2734    .name = "unpack_64_2x32",
2735    .num_inputs = 1,
2736    .output_size = 2,
2737    .output_type = nir_type_uint32,
2738    .input_sizes = {
2739       1
2740    },
2741    .input_types = {
2742       nir_type_uint64
2743    },
2744    .algebraic_properties =
2745       0
2746 },
2747 {
2748    .name = "unpack_64_2x32_split_x",
2749    .num_inputs = 1,
2750    .output_size = 0,
2751    .output_type = nir_type_uint32,
2752    .input_sizes = {
2753       0
2754    },
2755    .input_types = {
2756       nir_type_uint64
2757    },
2758    .algebraic_properties =
2759       0
2760 },
2761 {
2762    .name = "unpack_64_2x32_split_y",
2763    .num_inputs = 1,
2764    .output_size = 0,
2765    .output_type = nir_type_uint32,
2766    .input_sizes = {
2767       0
2768    },
2769    .input_types = {
2770       nir_type_uint64
2771    },
2772    .algebraic_properties =
2773       0
2774 },
2775 {
2776    .name = "unpack_half_2x16",
2777    .num_inputs = 1,
2778    .output_size = 2,
2779    .output_type = nir_type_float32,
2780    .input_sizes = {
2781       1
2782    },
2783    .input_types = {
2784       nir_type_uint32
2785    },
2786    .algebraic_properties =
2787       0
2788 },
2789 {
2790    .name = "unpack_half_2x16_split_x",
2791    .num_inputs = 1,
2792    .output_size = 1,
2793    .output_type = nir_type_float32,
2794    .input_sizes = {
2795       1
2796    },
2797    .input_types = {
2798       nir_type_uint32
2799    },
2800    .algebraic_properties =
2801       0
2802 },
2803 {
2804    .name = "unpack_half_2x16_split_y",
2805    .num_inputs = 1,
2806    .output_size = 1,
2807    .output_type = nir_type_float32,
2808    .input_sizes = {
2809       1
2810    },
2811    .input_types = {
2812       nir_type_uint32
2813    },
2814    .algebraic_properties =
2815       0
2816 },
2817 {
2818    .name = "unpack_snorm_2x16",
2819    .num_inputs = 1,
2820    .output_size = 2,
2821    .output_type = nir_type_float32,
2822    .input_sizes = {
2823       1
2824    },
2825    .input_types = {
2826       nir_type_uint32
2827    },
2828    .algebraic_properties =
2829       0
2830 },
2831 {
2832    .name = "unpack_snorm_4x8",
2833    .num_inputs = 1,
2834    .output_size = 4,
2835    .output_type = nir_type_float32,
2836    .input_sizes = {
2837       1
2838    },
2839    .input_types = {
2840       nir_type_uint32
2841    },
2842    .algebraic_properties =
2843       0
2844 },
2845 {
2846    .name = "unpack_unorm_2x16",
2847    .num_inputs = 1,
2848    .output_size = 2,
2849    .output_type = nir_type_float32,
2850    .input_sizes = {
2851       1
2852    },
2853    .input_types = {
2854       nir_type_uint32
2855    },
2856    .algebraic_properties =
2857       0
2858 },
2859 {
2860    .name = "unpack_unorm_4x8",
2861    .num_inputs = 1,
2862    .output_size = 4,
2863    .output_type = nir_type_float32,
2864    .input_sizes = {
2865       1
2866    },
2867    .input_types = {
2868       nir_type_uint32
2869    },
2870    .algebraic_properties =
2871       0
2872 },
2873 {
2874    .name = "usadd_4x8",
2875    .num_inputs = 2,
2876    .output_size = 0,
2877    .output_type = nir_type_int32,
2878    .input_sizes = {
2879       0, 0
2880    },
2881    .input_types = {
2882       nir_type_int32, nir_type_int32
2883    },
2884    .algebraic_properties =
2885       NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
2886 },
2887 {
2888    .name = "ushr",
2889    .num_inputs = 2,
2890    .output_size = 0,
2891    .output_type = nir_type_uint,
2892    .input_sizes = {
2893       0, 0
2894    },
2895    .input_types = {
2896       nir_type_uint, nir_type_uint32
2897    },
2898    .algebraic_properties =
2899       0
2900 },
2901 {
2902    .name = "ussub_4x8",
2903    .num_inputs = 2,
2904    .output_size = 0,
2905    .output_type = nir_type_int32,
2906    .input_sizes = {
2907       0, 0
2908    },
2909    .input_types = {
2910       nir_type_int32, nir_type_int32
2911    },
2912    .algebraic_properties =
2913       0
2914 },
2915 {
2916    .name = "usub_borrow",
2917    .num_inputs = 2,
2918    .output_size = 0,
2919    .output_type = nir_type_uint,
2920    .input_sizes = {
2921       0, 0
2922    },
2923    .input_types = {
2924       nir_type_uint, nir_type_uint
2925    },
2926    .algebraic_properties =
2927       0
2928 },
2929 {
2930    .name = "vec2",
2931    .num_inputs = 2,
2932    .output_size = 2,
2933    .output_type = nir_type_uint,
2934    .input_sizes = {
2935       1, 1
2936    },
2937    .input_types = {
2938       nir_type_uint, nir_type_uint
2939    },
2940    .algebraic_properties =
2941       0
2942 },
2943 {
2944    .name = "vec3",
2945    .num_inputs = 3,
2946    .output_size = 3,
2947    .output_type = nir_type_uint,
2948    .input_sizes = {
2949       1, 1, 1
2950    },
2951    .input_types = {
2952       nir_type_uint, nir_type_uint, nir_type_uint
2953    },
2954    .algebraic_properties =
2955       0
2956 },
2957 {
2958    .name = "vec4",
2959    .num_inputs = 4,
2960    .output_size = 4,
2961    .output_type = nir_type_uint,
2962    .input_sizes = {
2963       1, 1, 1, 1
2964    },
2965    .input_types = {
2966       nir_type_uint, nir_type_uint, nir_type_uint, nir_type_uint
2967    },
2968    .algebraic_properties =
2969       0
2970 },
2971 };
2972 
2973