nir_opcodes.c revision 10e230b6
1
2#include "nir.h"
3
4nir_op
5nir_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 == dst && src_base == nir_type_bool) {
15      return nir_op_imov;
16   } else if ((src_base == nir_type_int || src_base == nir_type_uint) &&
17              (dst_base == nir_type_int || dst_base == nir_type_uint) &&
18              src_bit_size == dst_bit_size) {
19      /* Integer <-> integer conversions with the same bit-size on both
20       * ends are just no-op moves.
21       */
22      return nir_op_imov;
23   }
24
25   switch (src_base) {
26      case nir_type_int:
27         switch (dst_base) {
28            case nir_type_int:
29            case nir_type_uint:
30
31               switch (dst_bit_size) {
32                  case 1:
33                     assert(rnd == nir_rounding_mode_undef);
34                     return nir_op_i2i1;
35                  case 8:
36                     assert(rnd == nir_rounding_mode_undef);
37                     return nir_op_i2i8;
38                  case 16:
39                     assert(rnd == nir_rounding_mode_undef);
40                     return nir_op_i2i16;
41                  case 32:
42                     assert(rnd == nir_rounding_mode_undef);
43                     return nir_op_i2i32;
44                  case 64:
45                     assert(rnd == nir_rounding_mode_undef);
46                     return nir_op_i2i64;
47                  default:
48                     unreachable("Invalid nir alu bit size");
49               }
50            case nir_type_float:
51               switch (dst_bit_size) {
52                  case 16:
53                     assert(rnd == nir_rounding_mode_undef);
54                     return nir_op_i2f16;
55                  case 32:
56                     assert(rnd == nir_rounding_mode_undef);
57                     return nir_op_i2f32;
58                  case 64:
59                     assert(rnd == nir_rounding_mode_undef);
60                     return nir_op_i2f64;
61                  default:
62                     unreachable("Invalid nir alu bit size");
63               }
64            case nir_type_bool:
65               switch (dst_bit_size) {
66                  case 1:
67                     assert(rnd == nir_rounding_mode_undef);
68                     return nir_op_i2b1;
69                  case 32:
70                     assert(rnd == nir_rounding_mode_undef);
71                     return nir_op_i2b32;
72                  default:
73                     unreachable("Invalid nir alu bit size");
74               }
75            default:
76               unreachable("Invalid nir alu base type");
77         }
78      case nir_type_uint:
79         switch (dst_base) {
80            case nir_type_int:
81            case nir_type_uint:
82
83               switch (dst_bit_size) {
84                  case 1:
85                     assert(rnd == nir_rounding_mode_undef);
86                     return nir_op_u2u1;
87                  case 8:
88                     assert(rnd == nir_rounding_mode_undef);
89                     return nir_op_u2u8;
90                  case 16:
91                     assert(rnd == nir_rounding_mode_undef);
92                     return nir_op_u2u16;
93                  case 32:
94                     assert(rnd == nir_rounding_mode_undef);
95                     return nir_op_u2u32;
96                  case 64:
97                     assert(rnd == nir_rounding_mode_undef);
98                     return nir_op_u2u64;
99                  default:
100                     unreachable("Invalid nir alu bit size");
101               }
102            case nir_type_float:
103               switch (dst_bit_size) {
104                  case 16:
105                     assert(rnd == nir_rounding_mode_undef);
106                     return nir_op_u2f16;
107                  case 32:
108                     assert(rnd == nir_rounding_mode_undef);
109                     return nir_op_u2f32;
110                  case 64:
111                     assert(rnd == nir_rounding_mode_undef);
112                     return nir_op_u2f64;
113                  default:
114                     unreachable("Invalid nir alu bit size");
115               }
116            case nir_type_bool:
117
118               switch (dst_bit_size) {
119                  case 1:
120                     assert(rnd == nir_rounding_mode_undef);
121                     return nir_op_i2b1;
122                  case 32:
123                     assert(rnd == nir_rounding_mode_undef);
124                     return nir_op_i2b32;
125                  default:
126                     unreachable("Invalid nir alu bit size");
127               }
128            default:
129               unreachable("Invalid nir alu base type");
130         }
131      case nir_type_float:
132         switch (dst_base) {
133            case nir_type_int:
134               switch (dst_bit_size) {
135                  case 1:
136                     assert(rnd == nir_rounding_mode_undef);
137                     return nir_op_f2i1;
138                  case 8:
139                     assert(rnd == nir_rounding_mode_undef);
140                     return nir_op_f2i8;
141                  case 16:
142                     assert(rnd == nir_rounding_mode_undef);
143                     return nir_op_f2i16;
144                  case 32:
145                     assert(rnd == nir_rounding_mode_undef);
146                     return nir_op_f2i32;
147                  case 64:
148                     assert(rnd == nir_rounding_mode_undef);
149                     return nir_op_f2i64;
150                  default:
151                     unreachable("Invalid nir alu bit size");
152               }
153            case nir_type_uint:
154               switch (dst_bit_size) {
155                  case 1:
156                     assert(rnd == nir_rounding_mode_undef);
157                     return nir_op_f2u1;
158                  case 8:
159                     assert(rnd == nir_rounding_mode_undef);
160                     return nir_op_f2u8;
161                  case 16:
162                     assert(rnd == nir_rounding_mode_undef);
163                     return nir_op_f2u16;
164                  case 32:
165                     assert(rnd == nir_rounding_mode_undef);
166                     return nir_op_f2u32;
167                  case 64:
168                     assert(rnd == nir_rounding_mode_undef);
169                     return nir_op_f2u64;
170                  default:
171                     unreachable("Invalid nir alu bit size");
172               }
173            case nir_type_float:
174               switch (dst_bit_size) {
175                  case 16:
176                     switch(rnd) {
177                        case nir_rounding_mode_rtne:
178                           return nir_op_f2f16_rtne;
179                        case nir_rounding_mode_rtz:
180                           return nir_op_f2f16_rtz;
181                        case nir_rounding_mode_undef:
182                           return nir_op_f2f16;
183                        default:
184                           unreachable("Invalid 16-bit nir rounding mode");
185                     }
186                  case 32:
187                     assert(rnd == nir_rounding_mode_undef);
188                     return nir_op_f2f32;
189                  case 64:
190                     assert(rnd == nir_rounding_mode_undef);
191                     return nir_op_f2f64;
192                  default:
193                     unreachable("Invalid nir alu bit size");
194               }
195            case nir_type_bool:
196               switch (dst_bit_size) {
197                  case 1:
198                     assert(rnd == nir_rounding_mode_undef);
199                     return nir_op_f2b1;
200                  case 32:
201                     assert(rnd == nir_rounding_mode_undef);
202                     return nir_op_f2b32;
203                  default:
204                     unreachable("Invalid nir alu bit size");
205               }
206            default:
207               unreachable("Invalid nir alu base type");
208         }
209      case nir_type_bool:
210         switch (dst_base) {
211            case nir_type_int:
212            case nir_type_uint:
213
214               switch (dst_bit_size) {
215                  case 1:
216                     assert(rnd == nir_rounding_mode_undef);
217                     return nir_op_b2i1;
218                  case 8:
219                     assert(rnd == nir_rounding_mode_undef);
220                     return nir_op_b2i8;
221                  case 16:
222                     assert(rnd == nir_rounding_mode_undef);
223                     return nir_op_b2i16;
224                  case 32:
225                     assert(rnd == nir_rounding_mode_undef);
226                     return nir_op_b2i32;
227                  case 64:
228                     assert(rnd == nir_rounding_mode_undef);
229                     return nir_op_b2i64;
230                  default:
231                     unreachable("Invalid nir alu bit size");
232               }
233            case nir_type_float:
234               switch (dst_bit_size) {
235                  case 16:
236                     assert(rnd == nir_rounding_mode_undef);
237                     return nir_op_b2f16;
238                  case 32:
239                     assert(rnd == nir_rounding_mode_undef);
240                     return nir_op_b2f32;
241                  case 64:
242                     assert(rnd == nir_rounding_mode_undef);
243                     return nir_op_b2f64;
244                  default:
245                     unreachable("Invalid nir alu bit size");
246               }
247            case nir_type_bool:
248
249               switch (dst_bit_size) {
250                  case 1:
251                     assert(rnd == nir_rounding_mode_undef);
252                     return nir_op_b2i1;
253                  case 8:
254                     assert(rnd == nir_rounding_mode_undef);
255                     return nir_op_b2i8;
256                  case 16:
257                     assert(rnd == nir_rounding_mode_undef);
258                     return nir_op_b2i16;
259                  case 32:
260                     assert(rnd == nir_rounding_mode_undef);
261                     return nir_op_b2i32;
262                  case 64:
263                     assert(rnd == nir_rounding_mode_undef);
264                     return nir_op_b2i64;
265                  default:
266                     unreachable("Invalid nir alu bit size");
267               }
268            default:
269               unreachable("Invalid nir alu base type");
270         }
271      default:
272         unreachable("Invalid nir alu base type");
273   }
274}
275
276const nir_op_info nir_op_infos[nir_num_opcodes] = {
277{
278   .name = "b2f16",
279   .num_inputs = 1,
280   .output_size = 0,
281   .output_type = nir_type_float16,
282   .input_sizes = {
283      0
284   },
285   .input_types = {
286      nir_type_bool
287   },
288   .is_conversion = true,
289   .algebraic_properties =
290      0
291},
292{
293   .name = "b2f32",
294   .num_inputs = 1,
295   .output_size = 0,
296   .output_type = nir_type_float32,
297   .input_sizes = {
298      0
299   },
300   .input_types = {
301      nir_type_bool
302   },
303   .is_conversion = true,
304   .algebraic_properties =
305      0
306},
307{
308   .name = "b2f64",
309   .num_inputs = 1,
310   .output_size = 0,
311   .output_type = nir_type_float64,
312   .input_sizes = {
313      0
314   },
315   .input_types = {
316      nir_type_bool
317   },
318   .is_conversion = true,
319   .algebraic_properties =
320      0
321},
322{
323   .name = "b2i1",
324   .num_inputs = 1,
325   .output_size = 0,
326   .output_type = nir_type_int1,
327   .input_sizes = {
328      0
329   },
330   .input_types = {
331      nir_type_bool
332   },
333   .is_conversion = true,
334   .algebraic_properties =
335      0
336},
337{
338   .name = "b2i16",
339   .num_inputs = 1,
340   .output_size = 0,
341   .output_type = nir_type_int16,
342   .input_sizes = {
343      0
344   },
345   .input_types = {
346      nir_type_bool
347   },
348   .is_conversion = true,
349   .algebraic_properties =
350      0
351},
352{
353   .name = "b2i32",
354   .num_inputs = 1,
355   .output_size = 0,
356   .output_type = nir_type_int32,
357   .input_sizes = {
358      0
359   },
360   .input_types = {
361      nir_type_bool
362   },
363   .is_conversion = true,
364   .algebraic_properties =
365      0
366},
367{
368   .name = "b2i64",
369   .num_inputs = 1,
370   .output_size = 0,
371   .output_type = nir_type_int64,
372   .input_sizes = {
373      0
374   },
375   .input_types = {
376      nir_type_bool
377   },
378   .is_conversion = true,
379   .algebraic_properties =
380      0
381},
382{
383   .name = "b2i8",
384   .num_inputs = 1,
385   .output_size = 0,
386   .output_type = nir_type_int8,
387   .input_sizes = {
388      0
389   },
390   .input_types = {
391      nir_type_bool
392   },
393   .is_conversion = true,
394   .algebraic_properties =
395      0
396},
397{
398   .name = "b32all_fequal2",
399   .num_inputs = 2,
400   .output_size = 1,
401   .output_type = nir_type_bool32,
402   .input_sizes = {
403      2, 2
404   },
405   .input_types = {
406      nir_type_float, nir_type_float
407   },
408   .is_conversion = false,
409   .algebraic_properties =
410      NIR_OP_IS_COMMUTATIVE
411},
412{
413   .name = "b32all_fequal3",
414   .num_inputs = 2,
415   .output_size = 1,
416   .output_type = nir_type_bool32,
417   .input_sizes = {
418      3, 3
419   },
420   .input_types = {
421      nir_type_float, nir_type_float
422   },
423   .is_conversion = false,
424   .algebraic_properties =
425      NIR_OP_IS_COMMUTATIVE
426},
427{
428   .name = "b32all_fequal4",
429   .num_inputs = 2,
430   .output_size = 1,
431   .output_type = nir_type_bool32,
432   .input_sizes = {
433      4, 4
434   },
435   .input_types = {
436      nir_type_float, nir_type_float
437   },
438   .is_conversion = false,
439   .algebraic_properties =
440      NIR_OP_IS_COMMUTATIVE
441},
442{
443   .name = "b32all_iequal2",
444   .num_inputs = 2,
445   .output_size = 1,
446   .output_type = nir_type_bool32,
447   .input_sizes = {
448      2, 2
449   },
450   .input_types = {
451      nir_type_int, nir_type_int
452   },
453   .is_conversion = false,
454   .algebraic_properties =
455      NIR_OP_IS_COMMUTATIVE
456},
457{
458   .name = "b32all_iequal3",
459   .num_inputs = 2,
460   .output_size = 1,
461   .output_type = nir_type_bool32,
462   .input_sizes = {
463      3, 3
464   },
465   .input_types = {
466      nir_type_int, nir_type_int
467   },
468   .is_conversion = false,
469   .algebraic_properties =
470      NIR_OP_IS_COMMUTATIVE
471},
472{
473   .name = "b32all_iequal4",
474   .num_inputs = 2,
475   .output_size = 1,
476   .output_type = nir_type_bool32,
477   .input_sizes = {
478      4, 4
479   },
480   .input_types = {
481      nir_type_int, nir_type_int
482   },
483   .is_conversion = false,
484   .algebraic_properties =
485      NIR_OP_IS_COMMUTATIVE
486},
487{
488   .name = "b32any_fnequal2",
489   .num_inputs = 2,
490   .output_size = 1,
491   .output_type = nir_type_bool32,
492   .input_sizes = {
493      2, 2
494   },
495   .input_types = {
496      nir_type_float, nir_type_float
497   },
498   .is_conversion = false,
499   .algebraic_properties =
500      NIR_OP_IS_COMMUTATIVE
501},
502{
503   .name = "b32any_fnequal3",
504   .num_inputs = 2,
505   .output_size = 1,
506   .output_type = nir_type_bool32,
507   .input_sizes = {
508      3, 3
509   },
510   .input_types = {
511      nir_type_float, nir_type_float
512   },
513   .is_conversion = false,
514   .algebraic_properties =
515      NIR_OP_IS_COMMUTATIVE
516},
517{
518   .name = "b32any_fnequal4",
519   .num_inputs = 2,
520   .output_size = 1,
521   .output_type = nir_type_bool32,
522   .input_sizes = {
523      4, 4
524   },
525   .input_types = {
526      nir_type_float, nir_type_float
527   },
528   .is_conversion = false,
529   .algebraic_properties =
530      NIR_OP_IS_COMMUTATIVE
531},
532{
533   .name = "b32any_inequal2",
534   .num_inputs = 2,
535   .output_size = 1,
536   .output_type = nir_type_bool32,
537   .input_sizes = {
538      2, 2
539   },
540   .input_types = {
541      nir_type_int, nir_type_int
542   },
543   .is_conversion = false,
544   .algebraic_properties =
545      NIR_OP_IS_COMMUTATIVE
546},
547{
548   .name = "b32any_inequal3",
549   .num_inputs = 2,
550   .output_size = 1,
551   .output_type = nir_type_bool32,
552   .input_sizes = {
553      3, 3
554   },
555   .input_types = {
556      nir_type_int, nir_type_int
557   },
558   .is_conversion = false,
559   .algebraic_properties =
560      NIR_OP_IS_COMMUTATIVE
561},
562{
563   .name = "b32any_inequal4",
564   .num_inputs = 2,
565   .output_size = 1,
566   .output_type = nir_type_bool32,
567   .input_sizes = {
568      4, 4
569   },
570   .input_types = {
571      nir_type_int, nir_type_int
572   },
573   .is_conversion = false,
574   .algebraic_properties =
575      NIR_OP_IS_COMMUTATIVE
576},
577{
578   .name = "b32csel",
579   .num_inputs = 3,
580   .output_size = 0,
581   .output_type = nir_type_uint,
582   .input_sizes = {
583      0, 0, 0
584   },
585   .input_types = {
586      nir_type_bool32, nir_type_uint, nir_type_uint
587   },
588   .is_conversion = false,
589   .algebraic_properties =
590      0
591},
592{
593   .name = "ball_fequal2",
594   .num_inputs = 2,
595   .output_size = 1,
596   .output_type = nir_type_bool1,
597   .input_sizes = {
598      2, 2
599   },
600   .input_types = {
601      nir_type_float, nir_type_float
602   },
603   .is_conversion = false,
604   .algebraic_properties =
605      NIR_OP_IS_COMMUTATIVE
606},
607{
608   .name = "ball_fequal3",
609   .num_inputs = 2,
610   .output_size = 1,
611   .output_type = nir_type_bool1,
612   .input_sizes = {
613      3, 3
614   },
615   .input_types = {
616      nir_type_float, nir_type_float
617   },
618   .is_conversion = false,
619   .algebraic_properties =
620      NIR_OP_IS_COMMUTATIVE
621},
622{
623   .name = "ball_fequal4",
624   .num_inputs = 2,
625   .output_size = 1,
626   .output_type = nir_type_bool1,
627   .input_sizes = {
628      4, 4
629   },
630   .input_types = {
631      nir_type_float, nir_type_float
632   },
633   .is_conversion = false,
634   .algebraic_properties =
635      NIR_OP_IS_COMMUTATIVE
636},
637{
638   .name = "ball_iequal2",
639   .num_inputs = 2,
640   .output_size = 1,
641   .output_type = nir_type_bool1,
642   .input_sizes = {
643      2, 2
644   },
645   .input_types = {
646      nir_type_int, nir_type_int
647   },
648   .is_conversion = false,
649   .algebraic_properties =
650      NIR_OP_IS_COMMUTATIVE
651},
652{
653   .name = "ball_iequal3",
654   .num_inputs = 2,
655   .output_size = 1,
656   .output_type = nir_type_bool1,
657   .input_sizes = {
658      3, 3
659   },
660   .input_types = {
661      nir_type_int, nir_type_int
662   },
663   .is_conversion = false,
664   .algebraic_properties =
665      NIR_OP_IS_COMMUTATIVE
666},
667{
668   .name = "ball_iequal4",
669   .num_inputs = 2,
670   .output_size = 1,
671   .output_type = nir_type_bool1,
672   .input_sizes = {
673      4, 4
674   },
675   .input_types = {
676      nir_type_int, nir_type_int
677   },
678   .is_conversion = false,
679   .algebraic_properties =
680      NIR_OP_IS_COMMUTATIVE
681},
682{
683   .name = "bany_fnequal2",
684   .num_inputs = 2,
685   .output_size = 1,
686   .output_type = nir_type_bool1,
687   .input_sizes = {
688      2, 2
689   },
690   .input_types = {
691      nir_type_float, nir_type_float
692   },
693   .is_conversion = false,
694   .algebraic_properties =
695      NIR_OP_IS_COMMUTATIVE
696},
697{
698   .name = "bany_fnequal3",
699   .num_inputs = 2,
700   .output_size = 1,
701   .output_type = nir_type_bool1,
702   .input_sizes = {
703      3, 3
704   },
705   .input_types = {
706      nir_type_float, nir_type_float
707   },
708   .is_conversion = false,
709   .algebraic_properties =
710      NIR_OP_IS_COMMUTATIVE
711},
712{
713   .name = "bany_fnequal4",
714   .num_inputs = 2,
715   .output_size = 1,
716   .output_type = nir_type_bool1,
717   .input_sizes = {
718      4, 4
719   },
720   .input_types = {
721      nir_type_float, nir_type_float
722   },
723   .is_conversion = false,
724   .algebraic_properties =
725      NIR_OP_IS_COMMUTATIVE
726},
727{
728   .name = "bany_inequal2",
729   .num_inputs = 2,
730   .output_size = 1,
731   .output_type = nir_type_bool1,
732   .input_sizes = {
733      2, 2
734   },
735   .input_types = {
736      nir_type_int, nir_type_int
737   },
738   .is_conversion = false,
739   .algebraic_properties =
740      NIR_OP_IS_COMMUTATIVE
741},
742{
743   .name = "bany_inequal3",
744   .num_inputs = 2,
745   .output_size = 1,
746   .output_type = nir_type_bool1,
747   .input_sizes = {
748      3, 3
749   },
750   .input_types = {
751      nir_type_int, nir_type_int
752   },
753   .is_conversion = false,
754   .algebraic_properties =
755      NIR_OP_IS_COMMUTATIVE
756},
757{
758   .name = "bany_inequal4",
759   .num_inputs = 2,
760   .output_size = 1,
761   .output_type = nir_type_bool1,
762   .input_sizes = {
763      4, 4
764   },
765   .input_types = {
766      nir_type_int, nir_type_int
767   },
768   .is_conversion = false,
769   .algebraic_properties =
770      NIR_OP_IS_COMMUTATIVE
771},
772{
773   .name = "bcsel",
774   .num_inputs = 3,
775   .output_size = 0,
776   .output_type = nir_type_uint,
777   .input_sizes = {
778      0, 0, 0
779   },
780   .input_types = {
781      nir_type_bool1, nir_type_uint, nir_type_uint
782   },
783   .is_conversion = false,
784   .algebraic_properties =
785      0
786},
787{
788   .name = "bfi",
789   .num_inputs = 3,
790   .output_size = 0,
791   .output_type = nir_type_uint32,
792   .input_sizes = {
793      0, 0, 0
794   },
795   .input_types = {
796      nir_type_uint32, nir_type_uint32, nir_type_uint32
797   },
798   .is_conversion = false,
799   .algebraic_properties =
800      0
801},
802{
803   .name = "bfm",
804   .num_inputs = 2,
805   .output_size = 0,
806   .output_type = nir_type_uint32,
807   .input_sizes = {
808      0, 0
809   },
810   .input_types = {
811      nir_type_int32, nir_type_int32
812   },
813   .is_conversion = false,
814   .algebraic_properties =
815      0
816},
817{
818   .name = "bit_count",
819   .num_inputs = 1,
820   .output_size = 0,
821   .output_type = nir_type_uint32,
822   .input_sizes = {
823      0
824   },
825   .input_types = {
826      nir_type_uint
827   },
828   .is_conversion = false,
829   .algebraic_properties =
830      0
831},
832{
833   .name = "bitfield_insert",
834   .num_inputs = 4,
835   .output_size = 0,
836   .output_type = nir_type_uint32,
837   .input_sizes = {
838      0, 0, 0, 0
839   },
840   .input_types = {
841      nir_type_uint32, nir_type_uint32, nir_type_int32, nir_type_int32
842   },
843   .is_conversion = false,
844   .algebraic_properties =
845      0
846},
847{
848   .name = "bitfield_reverse",
849   .num_inputs = 1,
850   .output_size = 0,
851   .output_type = nir_type_uint32,
852   .input_sizes = {
853      0
854   },
855   .input_types = {
856      nir_type_uint32
857   },
858   .is_conversion = false,
859   .algebraic_properties =
860      0
861},
862{
863   .name = "cube_face_coord",
864   .num_inputs = 1,
865   .output_size = 2,
866   .output_type = nir_type_float32,
867   .input_sizes = {
868      3
869   },
870   .input_types = {
871      nir_type_float32
872   },
873   .is_conversion = false,
874   .algebraic_properties =
875      0
876},
877{
878   .name = "cube_face_index",
879   .num_inputs = 1,
880   .output_size = 1,
881   .output_type = nir_type_float32,
882   .input_sizes = {
883      3
884   },
885   .input_types = {
886      nir_type_float32
887   },
888   .is_conversion = false,
889   .algebraic_properties =
890      0
891},
892{
893   .name = "extract_i16",
894   .num_inputs = 2,
895   .output_size = 0,
896   .output_type = nir_type_int,
897   .input_sizes = {
898      0, 0
899   },
900   .input_types = {
901      nir_type_int, nir_type_int
902   },
903   .is_conversion = false,
904   .algebraic_properties =
905      0
906},
907{
908   .name = "extract_i8",
909   .num_inputs = 2,
910   .output_size = 0,
911   .output_type = nir_type_int,
912   .input_sizes = {
913      0, 0
914   },
915   .input_types = {
916      nir_type_int, nir_type_int
917   },
918   .is_conversion = false,
919   .algebraic_properties =
920      0
921},
922{
923   .name = "extract_u16",
924   .num_inputs = 2,
925   .output_size = 0,
926   .output_type = nir_type_uint,
927   .input_sizes = {
928      0, 0
929   },
930   .input_types = {
931      nir_type_uint, nir_type_uint
932   },
933   .is_conversion = false,
934   .algebraic_properties =
935      0
936},
937{
938   .name = "extract_u8",
939   .num_inputs = 2,
940   .output_size = 0,
941   .output_type = nir_type_uint,
942   .input_sizes = {
943      0, 0
944   },
945   .input_types = {
946      nir_type_uint, nir_type_uint
947   },
948   .is_conversion = false,
949   .algebraic_properties =
950      0
951},
952{
953   .name = "f2b1",
954   .num_inputs = 1,
955   .output_size = 0,
956   .output_type = nir_type_bool1,
957   .input_sizes = {
958      0
959   },
960   .input_types = {
961      nir_type_float
962   },
963   .is_conversion = true,
964   .algebraic_properties =
965      0
966},
967{
968   .name = "f2b32",
969   .num_inputs = 1,
970   .output_size = 0,
971   .output_type = nir_type_bool32,
972   .input_sizes = {
973      0
974   },
975   .input_types = {
976      nir_type_float
977   },
978   .is_conversion = true,
979   .algebraic_properties =
980      0
981},
982{
983   .name = "f2f16",
984   .num_inputs = 1,
985   .output_size = 0,
986   .output_type = nir_type_float16,
987   .input_sizes = {
988      0
989   },
990   .input_types = {
991      nir_type_float
992   },
993   .is_conversion = true,
994   .algebraic_properties =
995      0
996},
997{
998   .name = "f2f16_rtne",
999   .num_inputs = 1,
1000   .output_size = 0,
1001   .output_type = nir_type_float16,
1002   .input_sizes = {
1003      0
1004   },
1005   .input_types = {
1006      nir_type_float
1007   },
1008   .is_conversion = true,
1009   .algebraic_properties =
1010      0
1011},
1012{
1013   .name = "f2f16_rtz",
1014   .num_inputs = 1,
1015   .output_size = 0,
1016   .output_type = nir_type_float16,
1017   .input_sizes = {
1018      0
1019   },
1020   .input_types = {
1021      nir_type_float
1022   },
1023   .is_conversion = true,
1024   .algebraic_properties =
1025      0
1026},
1027{
1028   .name = "f2f32",
1029   .num_inputs = 1,
1030   .output_size = 0,
1031   .output_type = nir_type_float32,
1032   .input_sizes = {
1033      0
1034   },
1035   .input_types = {
1036      nir_type_float
1037   },
1038   .is_conversion = true,
1039   .algebraic_properties =
1040      0
1041},
1042{
1043   .name = "f2f64",
1044   .num_inputs = 1,
1045   .output_size = 0,
1046   .output_type = nir_type_float64,
1047   .input_sizes = {
1048      0
1049   },
1050   .input_types = {
1051      nir_type_float
1052   },
1053   .is_conversion = true,
1054   .algebraic_properties =
1055      0
1056},
1057{
1058   .name = "f2i1",
1059   .num_inputs = 1,
1060   .output_size = 0,
1061   .output_type = nir_type_int1,
1062   .input_sizes = {
1063      0
1064   },
1065   .input_types = {
1066      nir_type_float
1067   },
1068   .is_conversion = true,
1069   .algebraic_properties =
1070      0
1071},
1072{
1073   .name = "f2i16",
1074   .num_inputs = 1,
1075   .output_size = 0,
1076   .output_type = nir_type_int16,
1077   .input_sizes = {
1078      0
1079   },
1080   .input_types = {
1081      nir_type_float
1082   },
1083   .is_conversion = true,
1084   .algebraic_properties =
1085      0
1086},
1087{
1088   .name = "f2i32",
1089   .num_inputs = 1,
1090   .output_size = 0,
1091   .output_type = nir_type_int32,
1092   .input_sizes = {
1093      0
1094   },
1095   .input_types = {
1096      nir_type_float
1097   },
1098   .is_conversion = true,
1099   .algebraic_properties =
1100      0
1101},
1102{
1103   .name = "f2i64",
1104   .num_inputs = 1,
1105   .output_size = 0,
1106   .output_type = nir_type_int64,
1107   .input_sizes = {
1108      0
1109   },
1110   .input_types = {
1111      nir_type_float
1112   },
1113   .is_conversion = true,
1114   .algebraic_properties =
1115      0
1116},
1117{
1118   .name = "f2i8",
1119   .num_inputs = 1,
1120   .output_size = 0,
1121   .output_type = nir_type_int8,
1122   .input_sizes = {
1123      0
1124   },
1125   .input_types = {
1126      nir_type_float
1127   },
1128   .is_conversion = true,
1129   .algebraic_properties =
1130      0
1131},
1132{
1133   .name = "f2u1",
1134   .num_inputs = 1,
1135   .output_size = 0,
1136   .output_type = nir_type_uint1,
1137   .input_sizes = {
1138      0
1139   },
1140   .input_types = {
1141      nir_type_float
1142   },
1143   .is_conversion = true,
1144   .algebraic_properties =
1145      0
1146},
1147{
1148   .name = "f2u16",
1149   .num_inputs = 1,
1150   .output_size = 0,
1151   .output_type = nir_type_uint16,
1152   .input_sizes = {
1153      0
1154   },
1155   .input_types = {
1156      nir_type_float
1157   },
1158   .is_conversion = true,
1159   .algebraic_properties =
1160      0
1161},
1162{
1163   .name = "f2u32",
1164   .num_inputs = 1,
1165   .output_size = 0,
1166   .output_type = nir_type_uint32,
1167   .input_sizes = {
1168      0
1169   },
1170   .input_types = {
1171      nir_type_float
1172   },
1173   .is_conversion = true,
1174   .algebraic_properties =
1175      0
1176},
1177{
1178   .name = "f2u64",
1179   .num_inputs = 1,
1180   .output_size = 0,
1181   .output_type = nir_type_uint64,
1182   .input_sizes = {
1183      0
1184   },
1185   .input_types = {
1186      nir_type_float
1187   },
1188   .is_conversion = true,
1189   .algebraic_properties =
1190      0
1191},
1192{
1193   .name = "f2u8",
1194   .num_inputs = 1,
1195   .output_size = 0,
1196   .output_type = nir_type_uint8,
1197   .input_sizes = {
1198      0
1199   },
1200   .input_types = {
1201      nir_type_float
1202   },
1203   .is_conversion = true,
1204   .algebraic_properties =
1205      0
1206},
1207{
1208   .name = "fabs",
1209   .num_inputs = 1,
1210   .output_size = 0,
1211   .output_type = nir_type_float,
1212   .input_sizes = {
1213      0
1214   },
1215   .input_types = {
1216      nir_type_float
1217   },
1218   .is_conversion = false,
1219   .algebraic_properties =
1220      0
1221},
1222{
1223   .name = "fadd",
1224   .num_inputs = 2,
1225   .output_size = 0,
1226   .output_type = nir_type_float,
1227   .input_sizes = {
1228      0, 0
1229   },
1230   .input_types = {
1231      nir_type_float, nir_type_float
1232   },
1233   .is_conversion = false,
1234   .algebraic_properties =
1235      NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
1236},
1237{
1238   .name = "fall_equal2",
1239   .num_inputs = 2,
1240   .output_size = 1,
1241   .output_type = nir_type_float32,
1242   .input_sizes = {
1243      2, 2
1244   },
1245   .input_types = {
1246      nir_type_float32, nir_type_float32
1247   },
1248   .is_conversion = false,
1249   .algebraic_properties =
1250      NIR_OP_IS_COMMUTATIVE
1251},
1252{
1253   .name = "fall_equal3",
1254   .num_inputs = 2,
1255   .output_size = 1,
1256   .output_type = nir_type_float32,
1257   .input_sizes = {
1258      3, 3
1259   },
1260   .input_types = {
1261      nir_type_float32, nir_type_float32
1262   },
1263   .is_conversion = false,
1264   .algebraic_properties =
1265      NIR_OP_IS_COMMUTATIVE
1266},
1267{
1268   .name = "fall_equal4",
1269   .num_inputs = 2,
1270   .output_size = 1,
1271   .output_type = nir_type_float32,
1272   .input_sizes = {
1273      4, 4
1274   },
1275   .input_types = {
1276      nir_type_float32, nir_type_float32
1277   },
1278   .is_conversion = false,
1279   .algebraic_properties =
1280      NIR_OP_IS_COMMUTATIVE
1281},
1282{
1283   .name = "fand",
1284   .num_inputs = 2,
1285   .output_size = 0,
1286   .output_type = nir_type_float32,
1287   .input_sizes = {
1288      0, 0
1289   },
1290   .input_types = {
1291      nir_type_float32, nir_type_float32
1292   },
1293   .is_conversion = false,
1294   .algebraic_properties =
1295      NIR_OP_IS_COMMUTATIVE
1296},
1297{
1298   .name = "fany_nequal2",
1299   .num_inputs = 2,
1300   .output_size = 1,
1301   .output_type = nir_type_float32,
1302   .input_sizes = {
1303      2, 2
1304   },
1305   .input_types = {
1306      nir_type_float32, nir_type_float32
1307   },
1308   .is_conversion = false,
1309   .algebraic_properties =
1310      NIR_OP_IS_COMMUTATIVE
1311},
1312{
1313   .name = "fany_nequal3",
1314   .num_inputs = 2,
1315   .output_size = 1,
1316   .output_type = nir_type_float32,
1317   .input_sizes = {
1318      3, 3
1319   },
1320   .input_types = {
1321      nir_type_float32, nir_type_float32
1322   },
1323   .is_conversion = false,
1324   .algebraic_properties =
1325      NIR_OP_IS_COMMUTATIVE
1326},
1327{
1328   .name = "fany_nequal4",
1329   .num_inputs = 2,
1330   .output_size = 1,
1331   .output_type = nir_type_float32,
1332   .input_sizes = {
1333      4, 4
1334   },
1335   .input_types = {
1336      nir_type_float32, nir_type_float32
1337   },
1338   .is_conversion = false,
1339   .algebraic_properties =
1340      NIR_OP_IS_COMMUTATIVE
1341},
1342{
1343   .name = "fceil",
1344   .num_inputs = 1,
1345   .output_size = 0,
1346   .output_type = nir_type_float,
1347   .input_sizes = {
1348      0
1349   },
1350   .input_types = {
1351      nir_type_float
1352   },
1353   .is_conversion = false,
1354   .algebraic_properties =
1355      0
1356},
1357{
1358   .name = "fcos",
1359   .num_inputs = 1,
1360   .output_size = 0,
1361   .output_type = nir_type_float,
1362   .input_sizes = {
1363      0
1364   },
1365   .input_types = {
1366      nir_type_float
1367   },
1368   .is_conversion = false,
1369   .algebraic_properties =
1370      0
1371},
1372{
1373   .name = "fcsel",
1374   .num_inputs = 3,
1375   .output_size = 0,
1376   .output_type = nir_type_float32,
1377   .input_sizes = {
1378      0, 0, 0
1379   },
1380   .input_types = {
1381      nir_type_float32, nir_type_float32, nir_type_float32
1382   },
1383   .is_conversion = false,
1384   .algebraic_properties =
1385      0
1386},
1387{
1388   .name = "fddx",
1389   .num_inputs = 1,
1390   .output_size = 0,
1391   .output_type = nir_type_float,
1392   .input_sizes = {
1393      0
1394   },
1395   .input_types = {
1396      nir_type_float
1397   },
1398   .is_conversion = false,
1399   .algebraic_properties =
1400      0
1401},
1402{
1403   .name = "fddx_coarse",
1404   .num_inputs = 1,
1405   .output_size = 0,
1406   .output_type = nir_type_float,
1407   .input_sizes = {
1408      0
1409   },
1410   .input_types = {
1411      nir_type_float
1412   },
1413   .is_conversion = false,
1414   .algebraic_properties =
1415      0
1416},
1417{
1418   .name = "fddx_fine",
1419   .num_inputs = 1,
1420   .output_size = 0,
1421   .output_type = nir_type_float,
1422   .input_sizes = {
1423      0
1424   },
1425   .input_types = {
1426      nir_type_float
1427   },
1428   .is_conversion = false,
1429   .algebraic_properties =
1430      0
1431},
1432{
1433   .name = "fddy",
1434   .num_inputs = 1,
1435   .output_size = 0,
1436   .output_type = nir_type_float,
1437   .input_sizes = {
1438      0
1439   },
1440   .input_types = {
1441      nir_type_float
1442   },
1443   .is_conversion = false,
1444   .algebraic_properties =
1445      0
1446},
1447{
1448   .name = "fddy_coarse",
1449   .num_inputs = 1,
1450   .output_size = 0,
1451   .output_type = nir_type_float,
1452   .input_sizes = {
1453      0
1454   },
1455   .input_types = {
1456      nir_type_float
1457   },
1458   .is_conversion = false,
1459   .algebraic_properties =
1460      0
1461},
1462{
1463   .name = "fddy_fine",
1464   .num_inputs = 1,
1465   .output_size = 0,
1466   .output_type = nir_type_float,
1467   .input_sizes = {
1468      0
1469   },
1470   .input_types = {
1471      nir_type_float
1472   },
1473   .is_conversion = false,
1474   .algebraic_properties =
1475      0
1476},
1477{
1478   .name = "fdiv",
1479   .num_inputs = 2,
1480   .output_size = 0,
1481   .output_type = nir_type_float,
1482   .input_sizes = {
1483      0, 0
1484   },
1485   .input_types = {
1486      nir_type_float, nir_type_float
1487   },
1488   .is_conversion = false,
1489   .algebraic_properties =
1490      0
1491},
1492{
1493   .name = "fdot2",
1494   .num_inputs = 2,
1495   .output_size = 1,
1496   .output_type = nir_type_float,
1497   .input_sizes = {
1498      2, 2
1499   },
1500   .input_types = {
1501      nir_type_float, nir_type_float
1502   },
1503   .is_conversion = false,
1504   .algebraic_properties =
1505      NIR_OP_IS_COMMUTATIVE
1506},
1507{
1508   .name = "fdot3",
1509   .num_inputs = 2,
1510   .output_size = 1,
1511   .output_type = nir_type_float,
1512   .input_sizes = {
1513      3, 3
1514   },
1515   .input_types = {
1516      nir_type_float, nir_type_float
1517   },
1518   .is_conversion = false,
1519   .algebraic_properties =
1520      NIR_OP_IS_COMMUTATIVE
1521},
1522{
1523   .name = "fdot4",
1524   .num_inputs = 2,
1525   .output_size = 1,
1526   .output_type = nir_type_float,
1527   .input_sizes = {
1528      4, 4
1529   },
1530   .input_types = {
1531      nir_type_float, nir_type_float
1532   },
1533   .is_conversion = false,
1534   .algebraic_properties =
1535      NIR_OP_IS_COMMUTATIVE
1536},
1537{
1538   .name = "fdot_replicated2",
1539   .num_inputs = 2,
1540   .output_size = 4,
1541   .output_type = nir_type_float,
1542   .input_sizes = {
1543      2, 2
1544   },
1545   .input_types = {
1546      nir_type_float, nir_type_float
1547   },
1548   .is_conversion = false,
1549   .algebraic_properties =
1550      NIR_OP_IS_COMMUTATIVE
1551},
1552{
1553   .name = "fdot_replicated3",
1554   .num_inputs = 2,
1555   .output_size = 4,
1556   .output_type = nir_type_float,
1557   .input_sizes = {
1558      3, 3
1559   },
1560   .input_types = {
1561      nir_type_float, nir_type_float
1562   },
1563   .is_conversion = false,
1564   .algebraic_properties =
1565      NIR_OP_IS_COMMUTATIVE
1566},
1567{
1568   .name = "fdot_replicated4",
1569   .num_inputs = 2,
1570   .output_size = 4,
1571   .output_type = nir_type_float,
1572   .input_sizes = {
1573      4, 4
1574   },
1575   .input_types = {
1576      nir_type_float, nir_type_float
1577   },
1578   .is_conversion = false,
1579   .algebraic_properties =
1580      NIR_OP_IS_COMMUTATIVE
1581},
1582{
1583   .name = "fdph",
1584   .num_inputs = 2,
1585   .output_size = 1,
1586   .output_type = nir_type_float,
1587   .input_sizes = {
1588      3, 4
1589   },
1590   .input_types = {
1591      nir_type_float, nir_type_float
1592   },
1593   .is_conversion = false,
1594   .algebraic_properties =
1595      0
1596},
1597{
1598   .name = "fdph_replicated",
1599   .num_inputs = 2,
1600   .output_size = 4,
1601   .output_type = nir_type_float,
1602   .input_sizes = {
1603      3, 4
1604   },
1605   .input_types = {
1606      nir_type_float, nir_type_float
1607   },
1608   .is_conversion = false,
1609   .algebraic_properties =
1610      0
1611},
1612{
1613   .name = "feq",
1614   .num_inputs = 2,
1615   .output_size = 0,
1616   .output_type = nir_type_bool1,
1617   .input_sizes = {
1618      0, 0
1619   },
1620   .input_types = {
1621      nir_type_float, nir_type_float
1622   },
1623   .is_conversion = false,
1624   .algebraic_properties =
1625      NIR_OP_IS_COMMUTATIVE
1626},
1627{
1628   .name = "feq32",
1629   .num_inputs = 2,
1630   .output_size = 0,
1631   .output_type = nir_type_bool32,
1632   .input_sizes = {
1633      0, 0
1634   },
1635   .input_types = {
1636      nir_type_float, nir_type_float
1637   },
1638   .is_conversion = false,
1639   .algebraic_properties =
1640      NIR_OP_IS_COMMUTATIVE
1641},
1642{
1643   .name = "fexp2",
1644   .num_inputs = 1,
1645   .output_size = 0,
1646   .output_type = nir_type_float,
1647   .input_sizes = {
1648      0
1649   },
1650   .input_types = {
1651      nir_type_float
1652   },
1653   .is_conversion = false,
1654   .algebraic_properties =
1655      0
1656},
1657{
1658   .name = "ffloor",
1659   .num_inputs = 1,
1660   .output_size = 0,
1661   .output_type = nir_type_float,
1662   .input_sizes = {
1663      0
1664   },
1665   .input_types = {
1666      nir_type_float
1667   },
1668   .is_conversion = false,
1669   .algebraic_properties =
1670      0
1671},
1672{
1673   .name = "ffma",
1674   .num_inputs = 3,
1675   .output_size = 0,
1676   .output_type = nir_type_float,
1677   .input_sizes = {
1678      0, 0, 0
1679   },
1680   .input_types = {
1681      nir_type_float, nir_type_float, nir_type_float
1682   },
1683   .is_conversion = false,
1684   .algebraic_properties =
1685      0
1686},
1687{
1688   .name = "ffract",
1689   .num_inputs = 1,
1690   .output_size = 0,
1691   .output_type = nir_type_float,
1692   .input_sizes = {
1693      0
1694   },
1695   .input_types = {
1696      nir_type_float
1697   },
1698   .is_conversion = false,
1699   .algebraic_properties =
1700      0
1701},
1702{
1703   .name = "fge",
1704   .num_inputs = 2,
1705   .output_size = 0,
1706   .output_type = nir_type_bool1,
1707   .input_sizes = {
1708      0, 0
1709   },
1710   .input_types = {
1711      nir_type_float, nir_type_float
1712   },
1713   .is_conversion = false,
1714   .algebraic_properties =
1715      0
1716},
1717{
1718   .name = "fge32",
1719   .num_inputs = 2,
1720   .output_size = 0,
1721   .output_type = nir_type_bool32,
1722   .input_sizes = {
1723      0, 0
1724   },
1725   .input_types = {
1726      nir_type_float, nir_type_float
1727   },
1728   .is_conversion = false,
1729   .algebraic_properties =
1730      0
1731},
1732{
1733   .name = "find_lsb",
1734   .num_inputs = 1,
1735   .output_size = 0,
1736   .output_type = nir_type_int32,
1737   .input_sizes = {
1738      0
1739   },
1740   .input_types = {
1741      nir_type_int
1742   },
1743   .is_conversion = false,
1744   .algebraic_properties =
1745      0
1746},
1747{
1748   .name = "flog2",
1749   .num_inputs = 1,
1750   .output_size = 0,
1751   .output_type = nir_type_float,
1752   .input_sizes = {
1753      0
1754   },
1755   .input_types = {
1756      nir_type_float
1757   },
1758   .is_conversion = false,
1759   .algebraic_properties =
1760      0
1761},
1762{
1763   .name = "flrp",
1764   .num_inputs = 3,
1765   .output_size = 0,
1766   .output_type = nir_type_float,
1767   .input_sizes = {
1768      0, 0, 0
1769   },
1770   .input_types = {
1771      nir_type_float, nir_type_float, nir_type_float
1772   },
1773   .is_conversion = false,
1774   .algebraic_properties =
1775      0
1776},
1777{
1778   .name = "flt",
1779   .num_inputs = 2,
1780   .output_size = 0,
1781   .output_type = nir_type_bool1,
1782   .input_sizes = {
1783      0, 0
1784   },
1785   .input_types = {
1786      nir_type_float, nir_type_float
1787   },
1788   .is_conversion = false,
1789   .algebraic_properties =
1790      0
1791},
1792{
1793   .name = "flt32",
1794   .num_inputs = 2,
1795   .output_size = 0,
1796   .output_type = nir_type_bool32,
1797   .input_sizes = {
1798      0, 0
1799   },
1800   .input_types = {
1801      nir_type_float, nir_type_float
1802   },
1803   .is_conversion = false,
1804   .algebraic_properties =
1805      0
1806},
1807{
1808   .name = "fmax",
1809   .num_inputs = 2,
1810   .output_size = 0,
1811   .output_type = nir_type_float,
1812   .input_sizes = {
1813      0, 0
1814   },
1815   .input_types = {
1816      nir_type_float, nir_type_float
1817   },
1818   .is_conversion = false,
1819   .algebraic_properties =
1820      0
1821},
1822{
1823   .name = "fmax3",
1824   .num_inputs = 3,
1825   .output_size = 0,
1826   .output_type = nir_type_float,
1827   .input_sizes = {
1828      0, 0, 0
1829   },
1830   .input_types = {
1831      nir_type_float, nir_type_float, nir_type_float
1832   },
1833   .is_conversion = false,
1834   .algebraic_properties =
1835      0
1836},
1837{
1838   .name = "fmed3",
1839   .num_inputs = 3,
1840   .output_size = 0,
1841   .output_type = nir_type_float,
1842   .input_sizes = {
1843      0, 0, 0
1844   },
1845   .input_types = {
1846      nir_type_float, nir_type_float, nir_type_float
1847   },
1848   .is_conversion = false,
1849   .algebraic_properties =
1850      0
1851},
1852{
1853   .name = "fmin",
1854   .num_inputs = 2,
1855   .output_size = 0,
1856   .output_type = nir_type_float,
1857   .input_sizes = {
1858      0, 0
1859   },
1860   .input_types = {
1861      nir_type_float, nir_type_float
1862   },
1863   .is_conversion = false,
1864   .algebraic_properties =
1865      0
1866},
1867{
1868   .name = "fmin3",
1869   .num_inputs = 3,
1870   .output_size = 0,
1871   .output_type = nir_type_float,
1872   .input_sizes = {
1873      0, 0, 0
1874   },
1875   .input_types = {
1876      nir_type_float, nir_type_float, nir_type_float
1877   },
1878   .is_conversion = false,
1879   .algebraic_properties =
1880      0
1881},
1882{
1883   .name = "fmod",
1884   .num_inputs = 2,
1885   .output_size = 0,
1886   .output_type = nir_type_float,
1887   .input_sizes = {
1888      0, 0
1889   },
1890   .input_types = {
1891      nir_type_float, nir_type_float
1892   },
1893   .is_conversion = false,
1894   .algebraic_properties =
1895      0
1896},
1897{
1898   .name = "fmov",
1899   .num_inputs = 1,
1900   .output_size = 0,
1901   .output_type = nir_type_float,
1902   .input_sizes = {
1903      0
1904   },
1905   .input_types = {
1906      nir_type_float
1907   },
1908   .is_conversion = false,
1909   .algebraic_properties =
1910      0
1911},
1912{
1913   .name = "fmul",
1914   .num_inputs = 2,
1915   .output_size = 0,
1916   .output_type = nir_type_float,
1917   .input_sizes = {
1918      0, 0
1919   },
1920   .input_types = {
1921      nir_type_float, nir_type_float
1922   },
1923   .is_conversion = false,
1924   .algebraic_properties =
1925      NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
1926},
1927{
1928   .name = "fne",
1929   .num_inputs = 2,
1930   .output_size = 0,
1931   .output_type = nir_type_bool1,
1932   .input_sizes = {
1933      0, 0
1934   },
1935   .input_types = {
1936      nir_type_float, nir_type_float
1937   },
1938   .is_conversion = false,
1939   .algebraic_properties =
1940      NIR_OP_IS_COMMUTATIVE
1941},
1942{
1943   .name = "fne32",
1944   .num_inputs = 2,
1945   .output_size = 0,
1946   .output_type = nir_type_bool32,
1947   .input_sizes = {
1948      0, 0
1949   },
1950   .input_types = {
1951      nir_type_float, nir_type_float
1952   },
1953   .is_conversion = false,
1954   .algebraic_properties =
1955      NIR_OP_IS_COMMUTATIVE
1956},
1957{
1958   .name = "fneg",
1959   .num_inputs = 1,
1960   .output_size = 0,
1961   .output_type = nir_type_float,
1962   .input_sizes = {
1963      0
1964   },
1965   .input_types = {
1966      nir_type_float
1967   },
1968   .is_conversion = false,
1969   .algebraic_properties =
1970      0
1971},
1972{
1973   .name = "fnoise1_1",
1974   .num_inputs = 1,
1975   .output_size = 1,
1976   .output_type = nir_type_float,
1977   .input_sizes = {
1978      1
1979   },
1980   .input_types = {
1981      nir_type_float
1982   },
1983   .is_conversion = false,
1984   .algebraic_properties =
1985      0
1986},
1987{
1988   .name = "fnoise1_2",
1989   .num_inputs = 1,
1990   .output_size = 1,
1991   .output_type = nir_type_float,
1992   .input_sizes = {
1993      2
1994   },
1995   .input_types = {
1996      nir_type_float
1997   },
1998   .is_conversion = false,
1999   .algebraic_properties =
2000      0
2001},
2002{
2003   .name = "fnoise1_3",
2004   .num_inputs = 1,
2005   .output_size = 1,
2006   .output_type = nir_type_float,
2007   .input_sizes = {
2008      3
2009   },
2010   .input_types = {
2011      nir_type_float
2012   },
2013   .is_conversion = false,
2014   .algebraic_properties =
2015      0
2016},
2017{
2018   .name = "fnoise1_4",
2019   .num_inputs = 1,
2020   .output_size = 1,
2021   .output_type = nir_type_float,
2022   .input_sizes = {
2023      4
2024   },
2025   .input_types = {
2026      nir_type_float
2027   },
2028   .is_conversion = false,
2029   .algebraic_properties =
2030      0
2031},
2032{
2033   .name = "fnoise2_1",
2034   .num_inputs = 1,
2035   .output_size = 2,
2036   .output_type = nir_type_float,
2037   .input_sizes = {
2038      1
2039   },
2040   .input_types = {
2041      nir_type_float
2042   },
2043   .is_conversion = false,
2044   .algebraic_properties =
2045      0
2046},
2047{
2048   .name = "fnoise2_2",
2049   .num_inputs = 1,
2050   .output_size = 2,
2051   .output_type = nir_type_float,
2052   .input_sizes = {
2053      2
2054   },
2055   .input_types = {
2056      nir_type_float
2057   },
2058   .is_conversion = false,
2059   .algebraic_properties =
2060      0
2061},
2062{
2063   .name = "fnoise2_3",
2064   .num_inputs = 1,
2065   .output_size = 2,
2066   .output_type = nir_type_float,
2067   .input_sizes = {
2068      3
2069   },
2070   .input_types = {
2071      nir_type_float
2072   },
2073   .is_conversion = false,
2074   .algebraic_properties =
2075      0
2076},
2077{
2078   .name = "fnoise2_4",
2079   .num_inputs = 1,
2080   .output_size = 2,
2081   .output_type = nir_type_float,
2082   .input_sizes = {
2083      4
2084   },
2085   .input_types = {
2086      nir_type_float
2087   },
2088   .is_conversion = false,
2089   .algebraic_properties =
2090      0
2091},
2092{
2093   .name = "fnoise3_1",
2094   .num_inputs = 1,
2095   .output_size = 3,
2096   .output_type = nir_type_float,
2097   .input_sizes = {
2098      1
2099   },
2100   .input_types = {
2101      nir_type_float
2102   },
2103   .is_conversion = false,
2104   .algebraic_properties =
2105      0
2106},
2107{
2108   .name = "fnoise3_2",
2109   .num_inputs = 1,
2110   .output_size = 3,
2111   .output_type = nir_type_float,
2112   .input_sizes = {
2113      2
2114   },
2115   .input_types = {
2116      nir_type_float
2117   },
2118   .is_conversion = false,
2119   .algebraic_properties =
2120      0
2121},
2122{
2123   .name = "fnoise3_3",
2124   .num_inputs = 1,
2125   .output_size = 3,
2126   .output_type = nir_type_float,
2127   .input_sizes = {
2128      3
2129   },
2130   .input_types = {
2131      nir_type_float
2132   },
2133   .is_conversion = false,
2134   .algebraic_properties =
2135      0
2136},
2137{
2138   .name = "fnoise3_4",
2139   .num_inputs = 1,
2140   .output_size = 3,
2141   .output_type = nir_type_float,
2142   .input_sizes = {
2143      4
2144   },
2145   .input_types = {
2146      nir_type_float
2147   },
2148   .is_conversion = false,
2149   .algebraic_properties =
2150      0
2151},
2152{
2153   .name = "fnoise4_1",
2154   .num_inputs = 1,
2155   .output_size = 4,
2156   .output_type = nir_type_float,
2157   .input_sizes = {
2158      1
2159   },
2160   .input_types = {
2161      nir_type_float
2162   },
2163   .is_conversion = false,
2164   .algebraic_properties =
2165      0
2166},
2167{
2168   .name = "fnoise4_2",
2169   .num_inputs = 1,
2170   .output_size = 4,
2171   .output_type = nir_type_float,
2172   .input_sizes = {
2173      2
2174   },
2175   .input_types = {
2176      nir_type_float
2177   },
2178   .is_conversion = false,
2179   .algebraic_properties =
2180      0
2181},
2182{
2183   .name = "fnoise4_3",
2184   .num_inputs = 1,
2185   .output_size = 4,
2186   .output_type = nir_type_float,
2187   .input_sizes = {
2188      3
2189   },
2190   .input_types = {
2191      nir_type_float
2192   },
2193   .is_conversion = false,
2194   .algebraic_properties =
2195      0
2196},
2197{
2198   .name = "fnoise4_4",
2199   .num_inputs = 1,
2200   .output_size = 4,
2201   .output_type = nir_type_float,
2202   .input_sizes = {
2203      4
2204   },
2205   .input_types = {
2206      nir_type_float
2207   },
2208   .is_conversion = false,
2209   .algebraic_properties =
2210      0
2211},
2212{
2213   .name = "fnot",
2214   .num_inputs = 1,
2215   .output_size = 0,
2216   .output_type = nir_type_float,
2217   .input_sizes = {
2218      0
2219   },
2220   .input_types = {
2221      nir_type_float
2222   },
2223   .is_conversion = false,
2224   .algebraic_properties =
2225      0
2226},
2227{
2228   .name = "for",
2229   .num_inputs = 2,
2230   .output_size = 0,
2231   .output_type = nir_type_float32,
2232   .input_sizes = {
2233      0, 0
2234   },
2235   .input_types = {
2236      nir_type_float32, nir_type_float32
2237   },
2238   .is_conversion = false,
2239   .algebraic_properties =
2240      NIR_OP_IS_COMMUTATIVE
2241},
2242{
2243   .name = "fpow",
2244   .num_inputs = 2,
2245   .output_size = 0,
2246   .output_type = nir_type_float,
2247   .input_sizes = {
2248      0, 0
2249   },
2250   .input_types = {
2251      nir_type_float, nir_type_float
2252   },
2253   .is_conversion = false,
2254   .algebraic_properties =
2255      0
2256},
2257{
2258   .name = "fquantize2f16",
2259   .num_inputs = 1,
2260   .output_size = 0,
2261   .output_type = nir_type_float,
2262   .input_sizes = {
2263      0
2264   },
2265   .input_types = {
2266      nir_type_float
2267   },
2268   .is_conversion = false,
2269   .algebraic_properties =
2270      0
2271},
2272{
2273   .name = "frcp",
2274   .num_inputs = 1,
2275   .output_size = 0,
2276   .output_type = nir_type_float,
2277   .input_sizes = {
2278      0
2279   },
2280   .input_types = {
2281      nir_type_float
2282   },
2283   .is_conversion = false,
2284   .algebraic_properties =
2285      0
2286},
2287{
2288   .name = "frem",
2289   .num_inputs = 2,
2290   .output_size = 0,
2291   .output_type = nir_type_float,
2292   .input_sizes = {
2293      0, 0
2294   },
2295   .input_types = {
2296      nir_type_float, nir_type_float
2297   },
2298   .is_conversion = false,
2299   .algebraic_properties =
2300      0
2301},
2302{
2303   .name = "frexp_exp",
2304   .num_inputs = 1,
2305   .output_size = 0,
2306   .output_type = nir_type_int32,
2307   .input_sizes = {
2308      0
2309   },
2310   .input_types = {
2311      nir_type_float
2312   },
2313   .is_conversion = false,
2314   .algebraic_properties =
2315      0
2316},
2317{
2318   .name = "frexp_sig",
2319   .num_inputs = 1,
2320   .output_size = 0,
2321   .output_type = nir_type_float,
2322   .input_sizes = {
2323      0
2324   },
2325   .input_types = {
2326      nir_type_float
2327   },
2328   .is_conversion = false,
2329   .algebraic_properties =
2330      0
2331},
2332{
2333   .name = "fround_even",
2334   .num_inputs = 1,
2335   .output_size = 0,
2336   .output_type = nir_type_float,
2337   .input_sizes = {
2338      0
2339   },
2340   .input_types = {
2341      nir_type_float
2342   },
2343   .is_conversion = false,
2344   .algebraic_properties =
2345      0
2346},
2347{
2348   .name = "frsq",
2349   .num_inputs = 1,
2350   .output_size = 0,
2351   .output_type = nir_type_float,
2352   .input_sizes = {
2353      0
2354   },
2355   .input_types = {
2356      nir_type_float
2357   },
2358   .is_conversion = false,
2359   .algebraic_properties =
2360      0
2361},
2362{
2363   .name = "fsat",
2364   .num_inputs = 1,
2365   .output_size = 0,
2366   .output_type = nir_type_float,
2367   .input_sizes = {
2368      0
2369   },
2370   .input_types = {
2371      nir_type_float
2372   },
2373   .is_conversion = false,
2374   .algebraic_properties =
2375      0
2376},
2377{
2378   .name = "fsign",
2379   .num_inputs = 1,
2380   .output_size = 0,
2381   .output_type = nir_type_float,
2382   .input_sizes = {
2383      0
2384   },
2385   .input_types = {
2386      nir_type_float
2387   },
2388   .is_conversion = false,
2389   .algebraic_properties =
2390      0
2391},
2392{
2393   .name = "fsin",
2394   .num_inputs = 1,
2395   .output_size = 0,
2396   .output_type = nir_type_float,
2397   .input_sizes = {
2398      0
2399   },
2400   .input_types = {
2401      nir_type_float
2402   },
2403   .is_conversion = false,
2404   .algebraic_properties =
2405      0
2406},
2407{
2408   .name = "fsqrt",
2409   .num_inputs = 1,
2410   .output_size = 0,
2411   .output_type = nir_type_float,
2412   .input_sizes = {
2413      0
2414   },
2415   .input_types = {
2416      nir_type_float
2417   },
2418   .is_conversion = false,
2419   .algebraic_properties =
2420      0
2421},
2422{
2423   .name = "fsub",
2424   .num_inputs = 2,
2425   .output_size = 0,
2426   .output_type = nir_type_float,
2427   .input_sizes = {
2428      0, 0
2429   },
2430   .input_types = {
2431      nir_type_float, nir_type_float
2432   },
2433   .is_conversion = false,
2434   .algebraic_properties =
2435      0
2436},
2437{
2438   .name = "ftrunc",
2439   .num_inputs = 1,
2440   .output_size = 0,
2441   .output_type = nir_type_float,
2442   .input_sizes = {
2443      0
2444   },
2445   .input_types = {
2446      nir_type_float
2447   },
2448   .is_conversion = false,
2449   .algebraic_properties =
2450      0
2451},
2452{
2453   .name = "fxor",
2454   .num_inputs = 2,
2455   .output_size = 0,
2456   .output_type = nir_type_float32,
2457   .input_sizes = {
2458      0, 0
2459   },
2460   .input_types = {
2461      nir_type_float32, nir_type_float32
2462   },
2463   .is_conversion = false,
2464   .algebraic_properties =
2465      NIR_OP_IS_COMMUTATIVE
2466},
2467{
2468   .name = "i2b1",
2469   .num_inputs = 1,
2470   .output_size = 0,
2471   .output_type = nir_type_bool1,
2472   .input_sizes = {
2473      0
2474   },
2475   .input_types = {
2476      nir_type_int
2477   },
2478   .is_conversion = true,
2479   .algebraic_properties =
2480      0
2481},
2482{
2483   .name = "i2b32",
2484   .num_inputs = 1,
2485   .output_size = 0,
2486   .output_type = nir_type_bool32,
2487   .input_sizes = {
2488      0
2489   },
2490   .input_types = {
2491      nir_type_int
2492   },
2493   .is_conversion = true,
2494   .algebraic_properties =
2495      0
2496},
2497{
2498   .name = "i2f16",
2499   .num_inputs = 1,
2500   .output_size = 0,
2501   .output_type = nir_type_float16,
2502   .input_sizes = {
2503      0
2504   },
2505   .input_types = {
2506      nir_type_int
2507   },
2508   .is_conversion = true,
2509   .algebraic_properties =
2510      0
2511},
2512{
2513   .name = "i2f32",
2514   .num_inputs = 1,
2515   .output_size = 0,
2516   .output_type = nir_type_float32,
2517   .input_sizes = {
2518      0
2519   },
2520   .input_types = {
2521      nir_type_int
2522   },
2523   .is_conversion = true,
2524   .algebraic_properties =
2525      0
2526},
2527{
2528   .name = "i2f64",
2529   .num_inputs = 1,
2530   .output_size = 0,
2531   .output_type = nir_type_float64,
2532   .input_sizes = {
2533      0
2534   },
2535   .input_types = {
2536      nir_type_int
2537   },
2538   .is_conversion = true,
2539   .algebraic_properties =
2540      0
2541},
2542{
2543   .name = "i2i1",
2544   .num_inputs = 1,
2545   .output_size = 0,
2546   .output_type = nir_type_int1,
2547   .input_sizes = {
2548      0
2549   },
2550   .input_types = {
2551      nir_type_int
2552   },
2553   .is_conversion = true,
2554   .algebraic_properties =
2555      0
2556},
2557{
2558   .name = "i2i16",
2559   .num_inputs = 1,
2560   .output_size = 0,
2561   .output_type = nir_type_int16,
2562   .input_sizes = {
2563      0
2564   },
2565   .input_types = {
2566      nir_type_int
2567   },
2568   .is_conversion = true,
2569   .algebraic_properties =
2570      0
2571},
2572{
2573   .name = "i2i32",
2574   .num_inputs = 1,
2575   .output_size = 0,
2576   .output_type = nir_type_int32,
2577   .input_sizes = {
2578      0
2579   },
2580   .input_types = {
2581      nir_type_int
2582   },
2583   .is_conversion = true,
2584   .algebraic_properties =
2585      0
2586},
2587{
2588   .name = "i2i64",
2589   .num_inputs = 1,
2590   .output_size = 0,
2591   .output_type = nir_type_int64,
2592   .input_sizes = {
2593      0
2594   },
2595   .input_types = {
2596      nir_type_int
2597   },
2598   .is_conversion = true,
2599   .algebraic_properties =
2600      0
2601},
2602{
2603   .name = "i2i8",
2604   .num_inputs = 1,
2605   .output_size = 0,
2606   .output_type = nir_type_int8,
2607   .input_sizes = {
2608      0
2609   },
2610   .input_types = {
2611      nir_type_int
2612   },
2613   .is_conversion = true,
2614   .algebraic_properties =
2615      0
2616},
2617{
2618   .name = "iabs",
2619   .num_inputs = 1,
2620   .output_size = 0,
2621   .output_type = nir_type_int,
2622   .input_sizes = {
2623      0
2624   },
2625   .input_types = {
2626      nir_type_int
2627   },
2628   .is_conversion = false,
2629   .algebraic_properties =
2630      0
2631},
2632{
2633   .name = "iadd",
2634   .num_inputs = 2,
2635   .output_size = 0,
2636   .output_type = nir_type_int,
2637   .input_sizes = {
2638      0, 0
2639   },
2640   .input_types = {
2641      nir_type_int, nir_type_int
2642   },
2643   .is_conversion = false,
2644   .algebraic_properties =
2645      NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
2646},
2647{
2648   .name = "iadd_sat",
2649   .num_inputs = 2,
2650   .output_size = 0,
2651   .output_type = nir_type_int,
2652   .input_sizes = {
2653      0, 0
2654   },
2655   .input_types = {
2656      nir_type_int, nir_type_int
2657   },
2658   .is_conversion = false,
2659   .algebraic_properties =
2660      NIR_OP_IS_COMMUTATIVE
2661},
2662{
2663   .name = "iand",
2664   .num_inputs = 2,
2665   .output_size = 0,
2666   .output_type = nir_type_uint,
2667   .input_sizes = {
2668      0, 0
2669   },
2670   .input_types = {
2671      nir_type_uint, nir_type_uint
2672   },
2673   .is_conversion = false,
2674   .algebraic_properties =
2675      NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
2676},
2677{
2678   .name = "ibfe",
2679   .num_inputs = 3,
2680   .output_size = 0,
2681   .output_type = nir_type_int32,
2682   .input_sizes = {
2683      0, 0, 0
2684   },
2685   .input_types = {
2686      nir_type_int32, nir_type_int32, nir_type_int32
2687   },
2688   .is_conversion = false,
2689   .algebraic_properties =
2690      0
2691},
2692{
2693   .name = "ibitfield_extract",
2694   .num_inputs = 3,
2695   .output_size = 0,
2696   .output_type = nir_type_int32,
2697   .input_sizes = {
2698      0, 0, 0
2699   },
2700   .input_types = {
2701      nir_type_int32, nir_type_int32, nir_type_int32
2702   },
2703   .is_conversion = false,
2704   .algebraic_properties =
2705      0
2706},
2707{
2708   .name = "idiv",
2709   .num_inputs = 2,
2710   .output_size = 0,
2711   .output_type = nir_type_int,
2712   .input_sizes = {
2713      0, 0
2714   },
2715   .input_types = {
2716      nir_type_int, nir_type_int
2717   },
2718   .is_conversion = false,
2719   .algebraic_properties =
2720      0
2721},
2722{
2723   .name = "ieq",
2724   .num_inputs = 2,
2725   .output_size = 0,
2726   .output_type = nir_type_bool1,
2727   .input_sizes = {
2728      0, 0
2729   },
2730   .input_types = {
2731      nir_type_int, nir_type_int
2732   },
2733   .is_conversion = false,
2734   .algebraic_properties =
2735      NIR_OP_IS_COMMUTATIVE
2736},
2737{
2738   .name = "ieq32",
2739   .num_inputs = 2,
2740   .output_size = 0,
2741   .output_type = nir_type_bool32,
2742   .input_sizes = {
2743      0, 0
2744   },
2745   .input_types = {
2746      nir_type_int, nir_type_int
2747   },
2748   .is_conversion = false,
2749   .algebraic_properties =
2750      NIR_OP_IS_COMMUTATIVE
2751},
2752{
2753   .name = "ifind_msb",
2754   .num_inputs = 1,
2755   .output_size = 0,
2756   .output_type = nir_type_int32,
2757   .input_sizes = {
2758      0
2759   },
2760   .input_types = {
2761      nir_type_int32
2762   },
2763   .is_conversion = false,
2764   .algebraic_properties =
2765      0
2766},
2767{
2768   .name = "ige",
2769   .num_inputs = 2,
2770   .output_size = 0,
2771   .output_type = nir_type_bool1,
2772   .input_sizes = {
2773      0, 0
2774   },
2775   .input_types = {
2776      nir_type_int, nir_type_int
2777   },
2778   .is_conversion = false,
2779   .algebraic_properties =
2780      0
2781},
2782{
2783   .name = "ige32",
2784   .num_inputs = 2,
2785   .output_size = 0,
2786   .output_type = nir_type_bool32,
2787   .input_sizes = {
2788      0, 0
2789   },
2790   .input_types = {
2791      nir_type_int, nir_type_int
2792   },
2793   .is_conversion = false,
2794   .algebraic_properties =
2795      0
2796},
2797{
2798   .name = "ihadd",
2799   .num_inputs = 2,
2800   .output_size = 0,
2801   .output_type = nir_type_int,
2802   .input_sizes = {
2803      0, 0
2804   },
2805   .input_types = {
2806      nir_type_int, nir_type_int
2807   },
2808   .is_conversion = false,
2809   .algebraic_properties =
2810      NIR_OP_IS_COMMUTATIVE
2811},
2812{
2813   .name = "ilt",
2814   .num_inputs = 2,
2815   .output_size = 0,
2816   .output_type = nir_type_bool1,
2817   .input_sizes = {
2818      0, 0
2819   },
2820   .input_types = {
2821      nir_type_int, nir_type_int
2822   },
2823   .is_conversion = false,
2824   .algebraic_properties =
2825      0
2826},
2827{
2828   .name = "ilt32",
2829   .num_inputs = 2,
2830   .output_size = 0,
2831   .output_type = nir_type_bool32,
2832   .input_sizes = {
2833      0, 0
2834   },
2835   .input_types = {
2836      nir_type_int, nir_type_int
2837   },
2838   .is_conversion = false,
2839   .algebraic_properties =
2840      0
2841},
2842{
2843   .name = "imax",
2844   .num_inputs = 2,
2845   .output_size = 0,
2846   .output_type = nir_type_int,
2847   .input_sizes = {
2848      0, 0
2849   },
2850   .input_types = {
2851      nir_type_int, nir_type_int
2852   },
2853   .is_conversion = false,
2854   .algebraic_properties =
2855      NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
2856},
2857{
2858   .name = "imax3",
2859   .num_inputs = 3,
2860   .output_size = 0,
2861   .output_type = nir_type_int,
2862   .input_sizes = {
2863      0, 0, 0
2864   },
2865   .input_types = {
2866      nir_type_int, nir_type_int, nir_type_int
2867   },
2868   .is_conversion = false,
2869   .algebraic_properties =
2870      0
2871},
2872{
2873   .name = "imed3",
2874   .num_inputs = 3,
2875   .output_size = 0,
2876   .output_type = nir_type_int,
2877   .input_sizes = {
2878      0, 0, 0
2879   },
2880   .input_types = {
2881      nir_type_int, nir_type_int, nir_type_int
2882   },
2883   .is_conversion = false,
2884   .algebraic_properties =
2885      0
2886},
2887{
2888   .name = "imin",
2889   .num_inputs = 2,
2890   .output_size = 0,
2891   .output_type = nir_type_int,
2892   .input_sizes = {
2893      0, 0
2894   },
2895   .input_types = {
2896      nir_type_int, nir_type_int
2897   },
2898   .is_conversion = false,
2899   .algebraic_properties =
2900      NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
2901},
2902{
2903   .name = "imin3",
2904   .num_inputs = 3,
2905   .output_size = 0,
2906   .output_type = nir_type_int,
2907   .input_sizes = {
2908      0, 0, 0
2909   },
2910   .input_types = {
2911      nir_type_int, nir_type_int, nir_type_int
2912   },
2913   .is_conversion = false,
2914   .algebraic_properties =
2915      0
2916},
2917{
2918   .name = "imod",
2919   .num_inputs = 2,
2920   .output_size = 0,
2921   .output_type = nir_type_int,
2922   .input_sizes = {
2923      0, 0
2924   },
2925   .input_types = {
2926      nir_type_int, nir_type_int
2927   },
2928   .is_conversion = false,
2929   .algebraic_properties =
2930      0
2931},
2932{
2933   .name = "imov",
2934   .num_inputs = 1,
2935   .output_size = 0,
2936   .output_type = nir_type_int,
2937   .input_sizes = {
2938      0
2939   },
2940   .input_types = {
2941      nir_type_int
2942   },
2943   .is_conversion = false,
2944   .algebraic_properties =
2945      0
2946},
2947{
2948   .name = "imul",
2949   .num_inputs = 2,
2950   .output_size = 0,
2951   .output_type = nir_type_int,
2952   .input_sizes = {
2953      0, 0
2954   },
2955   .input_types = {
2956      nir_type_int, nir_type_int
2957   },
2958   .is_conversion = false,
2959   .algebraic_properties =
2960      NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
2961},
2962{
2963   .name = "imul_2x32_64",
2964   .num_inputs = 2,
2965   .output_size = 0,
2966   .output_type = nir_type_int64,
2967   .input_sizes = {
2968      0, 0
2969   },
2970   .input_types = {
2971      nir_type_int32, nir_type_int32
2972   },
2973   .is_conversion = false,
2974   .algebraic_properties =
2975      NIR_OP_IS_COMMUTATIVE
2976},
2977{
2978   .name = "imul_high",
2979   .num_inputs = 2,
2980   .output_size = 0,
2981   .output_type = nir_type_int,
2982   .input_sizes = {
2983      0, 0
2984   },
2985   .input_types = {
2986      nir_type_int, nir_type_int
2987   },
2988   .is_conversion = false,
2989   .algebraic_properties =
2990      NIR_OP_IS_COMMUTATIVE
2991},
2992{
2993   .name = "ine",
2994   .num_inputs = 2,
2995   .output_size = 0,
2996   .output_type = nir_type_bool1,
2997   .input_sizes = {
2998      0, 0
2999   },
3000   .input_types = {
3001      nir_type_int, nir_type_int
3002   },
3003   .is_conversion = false,
3004   .algebraic_properties =
3005      NIR_OP_IS_COMMUTATIVE
3006},
3007{
3008   .name = "ine32",
3009   .num_inputs = 2,
3010   .output_size = 0,
3011   .output_type = nir_type_bool32,
3012   .input_sizes = {
3013      0, 0
3014   },
3015   .input_types = {
3016      nir_type_int, nir_type_int
3017   },
3018   .is_conversion = false,
3019   .algebraic_properties =
3020      NIR_OP_IS_COMMUTATIVE
3021},
3022{
3023   .name = "ineg",
3024   .num_inputs = 1,
3025   .output_size = 0,
3026   .output_type = nir_type_int,
3027   .input_sizes = {
3028      0
3029   },
3030   .input_types = {
3031      nir_type_int
3032   },
3033   .is_conversion = false,
3034   .algebraic_properties =
3035      0
3036},
3037{
3038   .name = "inot",
3039   .num_inputs = 1,
3040   .output_size = 0,
3041   .output_type = nir_type_int,
3042   .input_sizes = {
3043      0
3044   },
3045   .input_types = {
3046      nir_type_int
3047   },
3048   .is_conversion = false,
3049   .algebraic_properties =
3050      0
3051},
3052{
3053   .name = "ior",
3054   .num_inputs = 2,
3055   .output_size = 0,
3056   .output_type = nir_type_uint,
3057   .input_sizes = {
3058      0, 0
3059   },
3060   .input_types = {
3061      nir_type_uint, nir_type_uint
3062   },
3063   .is_conversion = false,
3064   .algebraic_properties =
3065      NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
3066},
3067{
3068   .name = "irem",
3069   .num_inputs = 2,
3070   .output_size = 0,
3071   .output_type = nir_type_int,
3072   .input_sizes = {
3073      0, 0
3074   },
3075   .input_types = {
3076      nir_type_int, nir_type_int
3077   },
3078   .is_conversion = false,
3079   .algebraic_properties =
3080      0
3081},
3082{
3083   .name = "irhadd",
3084   .num_inputs = 2,
3085   .output_size = 0,
3086   .output_type = nir_type_int,
3087   .input_sizes = {
3088      0, 0
3089   },
3090   .input_types = {
3091      nir_type_int, nir_type_int
3092   },
3093   .is_conversion = false,
3094   .algebraic_properties =
3095      NIR_OP_IS_COMMUTATIVE
3096},
3097{
3098   .name = "ishl",
3099   .num_inputs = 2,
3100   .output_size = 0,
3101   .output_type = nir_type_int,
3102   .input_sizes = {
3103      0, 0
3104   },
3105   .input_types = {
3106      nir_type_int, nir_type_uint32
3107   },
3108   .is_conversion = false,
3109   .algebraic_properties =
3110      0
3111},
3112{
3113   .name = "ishr",
3114   .num_inputs = 2,
3115   .output_size = 0,
3116   .output_type = nir_type_int,
3117   .input_sizes = {
3118      0, 0
3119   },
3120   .input_types = {
3121      nir_type_int, nir_type_uint32
3122   },
3123   .is_conversion = false,
3124   .algebraic_properties =
3125      0
3126},
3127{
3128   .name = "isign",
3129   .num_inputs = 1,
3130   .output_size = 0,
3131   .output_type = nir_type_int,
3132   .input_sizes = {
3133      0
3134   },
3135   .input_types = {
3136      nir_type_int
3137   },
3138   .is_conversion = false,
3139   .algebraic_properties =
3140      0
3141},
3142{
3143   .name = "isub",
3144   .num_inputs = 2,
3145   .output_size = 0,
3146   .output_type = nir_type_int,
3147   .input_sizes = {
3148      0, 0
3149   },
3150   .input_types = {
3151      nir_type_int, nir_type_int
3152   },
3153   .is_conversion = false,
3154   .algebraic_properties =
3155      0
3156},
3157{
3158   .name = "isub_sat",
3159   .num_inputs = 2,
3160   .output_size = 0,
3161   .output_type = nir_type_int,
3162   .input_sizes = {
3163      0, 0
3164   },
3165   .input_types = {
3166      nir_type_int, nir_type_int
3167   },
3168   .is_conversion = false,
3169   .algebraic_properties =
3170      0
3171},
3172{
3173   .name = "ixor",
3174   .num_inputs = 2,
3175   .output_size = 0,
3176   .output_type = nir_type_uint,
3177   .input_sizes = {
3178      0, 0
3179   },
3180   .input_types = {
3181      nir_type_uint, nir_type_uint
3182   },
3183   .is_conversion = false,
3184   .algebraic_properties =
3185      NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
3186},
3187{
3188   .name = "ldexp",
3189   .num_inputs = 2,
3190   .output_size = 0,
3191   .output_type = nir_type_float,
3192   .input_sizes = {
3193      0, 0
3194   },
3195   .input_types = {
3196      nir_type_float, nir_type_int32
3197   },
3198   .is_conversion = false,
3199   .algebraic_properties =
3200      0
3201},
3202{
3203   .name = "pack_32_2x16",
3204   .num_inputs = 1,
3205   .output_size = 1,
3206   .output_type = nir_type_uint32,
3207   .input_sizes = {
3208      2
3209   },
3210   .input_types = {
3211      nir_type_uint16
3212   },
3213   .is_conversion = false,
3214   .algebraic_properties =
3215      0
3216},
3217{
3218   .name = "pack_32_2x16_split",
3219   .num_inputs = 2,
3220   .output_size = 0,
3221   .output_type = nir_type_uint32,
3222   .input_sizes = {
3223      0, 0
3224   },
3225   .input_types = {
3226      nir_type_uint16, nir_type_uint16
3227   },
3228   .is_conversion = false,
3229   .algebraic_properties =
3230      0
3231},
3232{
3233   .name = "pack_64_2x32",
3234   .num_inputs = 1,
3235   .output_size = 1,
3236   .output_type = nir_type_uint64,
3237   .input_sizes = {
3238      2
3239   },
3240   .input_types = {
3241      nir_type_uint32
3242   },
3243   .is_conversion = false,
3244   .algebraic_properties =
3245      0
3246},
3247{
3248   .name = "pack_64_2x32_split",
3249   .num_inputs = 2,
3250   .output_size = 0,
3251   .output_type = nir_type_uint64,
3252   .input_sizes = {
3253      0, 0
3254   },
3255   .input_types = {
3256      nir_type_uint32, nir_type_uint32
3257   },
3258   .is_conversion = false,
3259   .algebraic_properties =
3260      0
3261},
3262{
3263   .name = "pack_64_4x16",
3264   .num_inputs = 1,
3265   .output_size = 1,
3266   .output_type = nir_type_uint64,
3267   .input_sizes = {
3268      4
3269   },
3270   .input_types = {
3271      nir_type_uint16
3272   },
3273   .is_conversion = false,
3274   .algebraic_properties =
3275      0
3276},
3277{
3278   .name = "pack_half_2x16",
3279   .num_inputs = 1,
3280   .output_size = 1,
3281   .output_type = nir_type_uint32,
3282   .input_sizes = {
3283      2
3284   },
3285   .input_types = {
3286      nir_type_float32
3287   },
3288   .is_conversion = false,
3289   .algebraic_properties =
3290      0
3291},
3292{
3293   .name = "pack_half_2x16_split",
3294   .num_inputs = 2,
3295   .output_size = 1,
3296   .output_type = nir_type_uint32,
3297   .input_sizes = {
3298      1, 1
3299   },
3300   .input_types = {
3301      nir_type_float32, nir_type_float32
3302   },
3303   .is_conversion = false,
3304   .algebraic_properties =
3305      0
3306},
3307{
3308   .name = "pack_snorm_2x16",
3309   .num_inputs = 1,
3310   .output_size = 1,
3311   .output_type = nir_type_uint32,
3312   .input_sizes = {
3313      2
3314   },
3315   .input_types = {
3316      nir_type_float32
3317   },
3318   .is_conversion = false,
3319   .algebraic_properties =
3320      0
3321},
3322{
3323   .name = "pack_snorm_4x8",
3324   .num_inputs = 1,
3325   .output_size = 1,
3326   .output_type = nir_type_uint32,
3327   .input_sizes = {
3328      4
3329   },
3330   .input_types = {
3331      nir_type_float32
3332   },
3333   .is_conversion = false,
3334   .algebraic_properties =
3335      0
3336},
3337{
3338   .name = "pack_unorm_2x16",
3339   .num_inputs = 1,
3340   .output_size = 1,
3341   .output_type = nir_type_uint32,
3342   .input_sizes = {
3343      2
3344   },
3345   .input_types = {
3346      nir_type_float32
3347   },
3348   .is_conversion = false,
3349   .algebraic_properties =
3350      0
3351},
3352{
3353   .name = "pack_unorm_4x8",
3354   .num_inputs = 1,
3355   .output_size = 1,
3356   .output_type = nir_type_uint32,
3357   .input_sizes = {
3358      4
3359   },
3360   .input_types = {
3361      nir_type_float32
3362   },
3363   .is_conversion = false,
3364   .algebraic_properties =
3365      0
3366},
3367{
3368   .name = "pack_uvec2_to_uint",
3369   .num_inputs = 1,
3370   .output_size = 1,
3371   .output_type = nir_type_uint32,
3372   .input_sizes = {
3373      2
3374   },
3375   .input_types = {
3376      nir_type_uint32
3377   },
3378   .is_conversion = false,
3379   .algebraic_properties =
3380      0
3381},
3382{
3383   .name = "pack_uvec4_to_uint",
3384   .num_inputs = 1,
3385   .output_size = 1,
3386   .output_type = nir_type_uint32,
3387   .input_sizes = {
3388      4
3389   },
3390   .input_types = {
3391      nir_type_uint32
3392   },
3393   .is_conversion = false,
3394   .algebraic_properties =
3395      0
3396},
3397{
3398   .name = "seq",
3399   .num_inputs = 2,
3400   .output_size = 0,
3401   .output_type = nir_type_float32,
3402   .input_sizes = {
3403      0, 0
3404   },
3405   .input_types = {
3406      nir_type_float32, nir_type_float32
3407   },
3408   .is_conversion = false,
3409   .algebraic_properties =
3410      NIR_OP_IS_COMMUTATIVE
3411},
3412{
3413   .name = "sge",
3414   .num_inputs = 2,
3415   .output_size = 0,
3416   .output_type = nir_type_float,
3417   .input_sizes = {
3418      0, 0
3419   },
3420   .input_types = {
3421      nir_type_float, nir_type_float
3422   },
3423   .is_conversion = false,
3424   .algebraic_properties =
3425      0
3426},
3427{
3428   .name = "slt",
3429   .num_inputs = 2,
3430   .output_size = 0,
3431   .output_type = nir_type_float32,
3432   .input_sizes = {
3433      0, 0
3434   },
3435   .input_types = {
3436      nir_type_float32, nir_type_float32
3437   },
3438   .is_conversion = false,
3439   .algebraic_properties =
3440      0
3441},
3442{
3443   .name = "sne",
3444   .num_inputs = 2,
3445   .output_size = 0,
3446   .output_type = nir_type_float32,
3447   .input_sizes = {
3448      0, 0
3449   },
3450   .input_types = {
3451      nir_type_float32, nir_type_float32
3452   },
3453   .is_conversion = false,
3454   .algebraic_properties =
3455      NIR_OP_IS_COMMUTATIVE
3456},
3457{
3458   .name = "u2f16",
3459   .num_inputs = 1,
3460   .output_size = 0,
3461   .output_type = nir_type_float16,
3462   .input_sizes = {
3463      0
3464   },
3465   .input_types = {
3466      nir_type_uint
3467   },
3468   .is_conversion = true,
3469   .algebraic_properties =
3470      0
3471},
3472{
3473   .name = "u2f32",
3474   .num_inputs = 1,
3475   .output_size = 0,
3476   .output_type = nir_type_float32,
3477   .input_sizes = {
3478      0
3479   },
3480   .input_types = {
3481      nir_type_uint
3482   },
3483   .is_conversion = true,
3484   .algebraic_properties =
3485      0
3486},
3487{
3488   .name = "u2f64",
3489   .num_inputs = 1,
3490   .output_size = 0,
3491   .output_type = nir_type_float64,
3492   .input_sizes = {
3493      0
3494   },
3495   .input_types = {
3496      nir_type_uint
3497   },
3498   .is_conversion = true,
3499   .algebraic_properties =
3500      0
3501},
3502{
3503   .name = "u2u1",
3504   .num_inputs = 1,
3505   .output_size = 0,
3506   .output_type = nir_type_uint1,
3507   .input_sizes = {
3508      0
3509   },
3510   .input_types = {
3511      nir_type_uint
3512   },
3513   .is_conversion = true,
3514   .algebraic_properties =
3515      0
3516},
3517{
3518   .name = "u2u16",
3519   .num_inputs = 1,
3520   .output_size = 0,
3521   .output_type = nir_type_uint16,
3522   .input_sizes = {
3523      0
3524   },
3525   .input_types = {
3526      nir_type_uint
3527   },
3528   .is_conversion = true,
3529   .algebraic_properties =
3530      0
3531},
3532{
3533   .name = "u2u32",
3534   .num_inputs = 1,
3535   .output_size = 0,
3536   .output_type = nir_type_uint32,
3537   .input_sizes = {
3538      0
3539   },
3540   .input_types = {
3541      nir_type_uint
3542   },
3543   .is_conversion = true,
3544   .algebraic_properties =
3545      0
3546},
3547{
3548   .name = "u2u64",
3549   .num_inputs = 1,
3550   .output_size = 0,
3551   .output_type = nir_type_uint64,
3552   .input_sizes = {
3553      0
3554   },
3555   .input_types = {
3556      nir_type_uint
3557   },
3558   .is_conversion = true,
3559   .algebraic_properties =
3560      0
3561},
3562{
3563   .name = "u2u8",
3564   .num_inputs = 1,
3565   .output_size = 0,
3566   .output_type = nir_type_uint8,
3567   .input_sizes = {
3568      0
3569   },
3570   .input_types = {
3571      nir_type_uint
3572   },
3573   .is_conversion = true,
3574   .algebraic_properties =
3575      0
3576},
3577{
3578   .name = "uadd_carry",
3579   .num_inputs = 2,
3580   .output_size = 0,
3581   .output_type = nir_type_uint,
3582   .input_sizes = {
3583      0, 0
3584   },
3585   .input_types = {
3586      nir_type_uint, nir_type_uint
3587   },
3588   .is_conversion = false,
3589   .algebraic_properties =
3590      NIR_OP_IS_COMMUTATIVE
3591},
3592{
3593   .name = "uadd_sat",
3594   .num_inputs = 2,
3595   .output_size = 0,
3596   .output_type = nir_type_uint,
3597   .input_sizes = {
3598      0, 0
3599   },
3600   .input_types = {
3601      nir_type_uint, nir_type_uint
3602   },
3603   .is_conversion = false,
3604   .algebraic_properties =
3605      NIR_OP_IS_COMMUTATIVE
3606},
3607{
3608   .name = "ubfe",
3609   .num_inputs = 3,
3610   .output_size = 0,
3611   .output_type = nir_type_uint32,
3612   .input_sizes = {
3613      0, 0, 0
3614   },
3615   .input_types = {
3616      nir_type_uint32, nir_type_int32, nir_type_int32
3617   },
3618   .is_conversion = false,
3619   .algebraic_properties =
3620      0
3621},
3622{
3623   .name = "ubitfield_extract",
3624   .num_inputs = 3,
3625   .output_size = 0,
3626   .output_type = nir_type_uint32,
3627   .input_sizes = {
3628      0, 0, 0
3629   },
3630   .input_types = {
3631      nir_type_uint32, nir_type_int32, nir_type_int32
3632   },
3633   .is_conversion = false,
3634   .algebraic_properties =
3635      0
3636},
3637{
3638   .name = "udiv",
3639   .num_inputs = 2,
3640   .output_size = 0,
3641   .output_type = nir_type_uint,
3642   .input_sizes = {
3643      0, 0
3644   },
3645   .input_types = {
3646      nir_type_uint, nir_type_uint
3647   },
3648   .is_conversion = false,
3649   .algebraic_properties =
3650      0
3651},
3652{
3653   .name = "ufind_msb",
3654   .num_inputs = 1,
3655   .output_size = 0,
3656   .output_type = nir_type_int32,
3657   .input_sizes = {
3658      0
3659   },
3660   .input_types = {
3661      nir_type_uint
3662   },
3663   .is_conversion = false,
3664   .algebraic_properties =
3665      0
3666},
3667{
3668   .name = "uge",
3669   .num_inputs = 2,
3670   .output_size = 0,
3671   .output_type = nir_type_bool1,
3672   .input_sizes = {
3673      0, 0
3674   },
3675   .input_types = {
3676      nir_type_uint, nir_type_uint
3677   },
3678   .is_conversion = false,
3679   .algebraic_properties =
3680      0
3681},
3682{
3683   .name = "uge32",
3684   .num_inputs = 2,
3685   .output_size = 0,
3686   .output_type = nir_type_bool32,
3687   .input_sizes = {
3688      0, 0
3689   },
3690   .input_types = {
3691      nir_type_uint, nir_type_uint
3692   },
3693   .is_conversion = false,
3694   .algebraic_properties =
3695      0
3696},
3697{
3698   .name = "uhadd",
3699   .num_inputs = 2,
3700   .output_size = 0,
3701   .output_type = nir_type_uint,
3702   .input_sizes = {
3703      0, 0
3704   },
3705   .input_types = {
3706      nir_type_uint, nir_type_uint
3707   },
3708   .is_conversion = false,
3709   .algebraic_properties =
3710      NIR_OP_IS_COMMUTATIVE
3711},
3712{
3713   .name = "ult",
3714   .num_inputs = 2,
3715   .output_size = 0,
3716   .output_type = nir_type_bool1,
3717   .input_sizes = {
3718      0, 0
3719   },
3720   .input_types = {
3721      nir_type_uint, nir_type_uint
3722   },
3723   .is_conversion = false,
3724   .algebraic_properties =
3725      0
3726},
3727{
3728   .name = "ult32",
3729   .num_inputs = 2,
3730   .output_size = 0,
3731   .output_type = nir_type_bool32,
3732   .input_sizes = {
3733      0, 0
3734   },
3735   .input_types = {
3736      nir_type_uint, nir_type_uint
3737   },
3738   .is_conversion = false,
3739   .algebraic_properties =
3740      0
3741},
3742{
3743   .name = "umax",
3744   .num_inputs = 2,
3745   .output_size = 0,
3746   .output_type = nir_type_uint,
3747   .input_sizes = {
3748      0, 0
3749   },
3750   .input_types = {
3751      nir_type_uint, nir_type_uint
3752   },
3753   .is_conversion = false,
3754   .algebraic_properties =
3755      NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
3756},
3757{
3758   .name = "umax3",
3759   .num_inputs = 3,
3760   .output_size = 0,
3761   .output_type = nir_type_uint,
3762   .input_sizes = {
3763      0, 0, 0
3764   },
3765   .input_types = {
3766      nir_type_uint, nir_type_uint, nir_type_uint
3767   },
3768   .is_conversion = false,
3769   .algebraic_properties =
3770      0
3771},
3772{
3773   .name = "umax_4x8",
3774   .num_inputs = 2,
3775   .output_size = 0,
3776   .output_type = nir_type_int32,
3777   .input_sizes = {
3778      0, 0
3779   },
3780   .input_types = {
3781      nir_type_int32, nir_type_int32
3782   },
3783   .is_conversion = false,
3784   .algebraic_properties =
3785      NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
3786},
3787{
3788   .name = "umed3",
3789   .num_inputs = 3,
3790   .output_size = 0,
3791   .output_type = nir_type_uint,
3792   .input_sizes = {
3793      0, 0, 0
3794   },
3795   .input_types = {
3796      nir_type_uint, nir_type_uint, nir_type_uint
3797   },
3798   .is_conversion = false,
3799   .algebraic_properties =
3800      0
3801},
3802{
3803   .name = "umin",
3804   .num_inputs = 2,
3805   .output_size = 0,
3806   .output_type = nir_type_uint,
3807   .input_sizes = {
3808      0, 0
3809   },
3810   .input_types = {
3811      nir_type_uint, nir_type_uint
3812   },
3813   .is_conversion = false,
3814   .algebraic_properties =
3815      NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
3816},
3817{
3818   .name = "umin3",
3819   .num_inputs = 3,
3820   .output_size = 0,
3821   .output_type = nir_type_uint,
3822   .input_sizes = {
3823      0, 0, 0
3824   },
3825   .input_types = {
3826      nir_type_uint, nir_type_uint, nir_type_uint
3827   },
3828   .is_conversion = false,
3829   .algebraic_properties =
3830      0
3831},
3832{
3833   .name = "umin_4x8",
3834   .num_inputs = 2,
3835   .output_size = 0,
3836   .output_type = nir_type_int32,
3837   .input_sizes = {
3838      0, 0
3839   },
3840   .input_types = {
3841      nir_type_int32, nir_type_int32
3842   },
3843   .is_conversion = false,
3844   .algebraic_properties =
3845      NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
3846},
3847{
3848   .name = "umod",
3849   .num_inputs = 2,
3850   .output_size = 0,
3851   .output_type = nir_type_uint,
3852   .input_sizes = {
3853      0, 0
3854   },
3855   .input_types = {
3856      nir_type_uint, nir_type_uint
3857   },
3858   .is_conversion = false,
3859   .algebraic_properties =
3860      0
3861},
3862{
3863   .name = "umul_2x32_64",
3864   .num_inputs = 2,
3865   .output_size = 0,
3866   .output_type = nir_type_uint64,
3867   .input_sizes = {
3868      0, 0
3869   },
3870   .input_types = {
3871      nir_type_uint32, nir_type_uint32
3872   },
3873   .is_conversion = false,
3874   .algebraic_properties =
3875      NIR_OP_IS_COMMUTATIVE
3876},
3877{
3878   .name = "umul_high",
3879   .num_inputs = 2,
3880   .output_size = 0,
3881   .output_type = nir_type_uint,
3882   .input_sizes = {
3883      0, 0
3884   },
3885   .input_types = {
3886      nir_type_uint, nir_type_uint
3887   },
3888   .is_conversion = false,
3889   .algebraic_properties =
3890      NIR_OP_IS_COMMUTATIVE
3891},
3892{
3893   .name = "umul_unorm_4x8",
3894   .num_inputs = 2,
3895   .output_size = 0,
3896   .output_type = nir_type_int32,
3897   .input_sizes = {
3898      0, 0
3899   },
3900   .input_types = {
3901      nir_type_int32, nir_type_int32
3902   },
3903   .is_conversion = false,
3904   .algebraic_properties =
3905      NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
3906},
3907{
3908   .name = "unpack_32_2x16",
3909   .num_inputs = 1,
3910   .output_size = 2,
3911   .output_type = nir_type_uint16,
3912   .input_sizes = {
3913      1
3914   },
3915   .input_types = {
3916      nir_type_uint32
3917   },
3918   .is_conversion = false,
3919   .algebraic_properties =
3920      0
3921},
3922{
3923   .name = "unpack_32_2x16_split_x",
3924   .num_inputs = 1,
3925   .output_size = 0,
3926   .output_type = nir_type_uint16,
3927   .input_sizes = {
3928      0
3929   },
3930   .input_types = {
3931      nir_type_uint32
3932   },
3933   .is_conversion = false,
3934   .algebraic_properties =
3935      0
3936},
3937{
3938   .name = "unpack_32_2x16_split_y",
3939   .num_inputs = 1,
3940   .output_size = 0,
3941   .output_type = nir_type_uint16,
3942   .input_sizes = {
3943      0
3944   },
3945   .input_types = {
3946      nir_type_uint32
3947   },
3948   .is_conversion = false,
3949   .algebraic_properties =
3950      0
3951},
3952{
3953   .name = "unpack_64_2x32",
3954   .num_inputs = 1,
3955   .output_size = 2,
3956   .output_type = nir_type_uint32,
3957   .input_sizes = {
3958      1
3959   },
3960   .input_types = {
3961      nir_type_uint64
3962   },
3963   .is_conversion = false,
3964   .algebraic_properties =
3965      0
3966},
3967{
3968   .name = "unpack_64_2x32_split_x",
3969   .num_inputs = 1,
3970   .output_size = 0,
3971   .output_type = nir_type_uint32,
3972   .input_sizes = {
3973      0
3974   },
3975   .input_types = {
3976      nir_type_uint64
3977   },
3978   .is_conversion = false,
3979   .algebraic_properties =
3980      0
3981},
3982{
3983   .name = "unpack_64_2x32_split_y",
3984   .num_inputs = 1,
3985   .output_size = 0,
3986   .output_type = nir_type_uint32,
3987   .input_sizes = {
3988      0
3989   },
3990   .input_types = {
3991      nir_type_uint64
3992   },
3993   .is_conversion = false,
3994   .algebraic_properties =
3995      0
3996},
3997{
3998   .name = "unpack_64_4x16",
3999   .num_inputs = 1,
4000   .output_size = 4,
4001   .output_type = nir_type_uint16,
4002   .input_sizes = {
4003      1
4004   },
4005   .input_types = {
4006      nir_type_uint64
4007   },
4008   .is_conversion = false,
4009   .algebraic_properties =
4010      0
4011},
4012{
4013   .name = "unpack_half_2x16",
4014   .num_inputs = 1,
4015   .output_size = 2,
4016   .output_type = nir_type_float32,
4017   .input_sizes = {
4018      1
4019   },
4020   .input_types = {
4021      nir_type_uint32
4022   },
4023   .is_conversion = false,
4024   .algebraic_properties =
4025      0
4026},
4027{
4028   .name = "unpack_half_2x16_split_x",
4029   .num_inputs = 1,
4030   .output_size = 0,
4031   .output_type = nir_type_float32,
4032   .input_sizes = {
4033      0
4034   },
4035   .input_types = {
4036      nir_type_uint32
4037   },
4038   .is_conversion = false,
4039   .algebraic_properties =
4040      0
4041},
4042{
4043   .name = "unpack_half_2x16_split_y",
4044   .num_inputs = 1,
4045   .output_size = 0,
4046   .output_type = nir_type_float32,
4047   .input_sizes = {
4048      0
4049   },
4050   .input_types = {
4051      nir_type_uint32
4052   },
4053   .is_conversion = false,
4054   .algebraic_properties =
4055      0
4056},
4057{
4058   .name = "unpack_snorm_2x16",
4059   .num_inputs = 1,
4060   .output_size = 2,
4061   .output_type = nir_type_float32,
4062   .input_sizes = {
4063      1
4064   },
4065   .input_types = {
4066      nir_type_uint32
4067   },
4068   .is_conversion = false,
4069   .algebraic_properties =
4070      0
4071},
4072{
4073   .name = "unpack_snorm_4x8",
4074   .num_inputs = 1,
4075   .output_size = 4,
4076   .output_type = nir_type_float32,
4077   .input_sizes = {
4078      1
4079   },
4080   .input_types = {
4081      nir_type_uint32
4082   },
4083   .is_conversion = false,
4084   .algebraic_properties =
4085      0
4086},
4087{
4088   .name = "unpack_unorm_2x16",
4089   .num_inputs = 1,
4090   .output_size = 2,
4091   .output_type = nir_type_float32,
4092   .input_sizes = {
4093      1
4094   },
4095   .input_types = {
4096      nir_type_uint32
4097   },
4098   .is_conversion = false,
4099   .algebraic_properties =
4100      0
4101},
4102{
4103   .name = "unpack_unorm_4x8",
4104   .num_inputs = 1,
4105   .output_size = 4,
4106   .output_type = nir_type_float32,
4107   .input_sizes = {
4108      1
4109   },
4110   .input_types = {
4111      nir_type_uint32
4112   },
4113   .is_conversion = false,
4114   .algebraic_properties =
4115      0
4116},
4117{
4118   .name = "urhadd",
4119   .num_inputs = 2,
4120   .output_size = 0,
4121   .output_type = nir_type_uint,
4122   .input_sizes = {
4123      0, 0
4124   },
4125   .input_types = {
4126      nir_type_uint, nir_type_uint
4127   },
4128   .is_conversion = false,
4129   .algebraic_properties =
4130      NIR_OP_IS_COMMUTATIVE
4131},
4132{
4133   .name = "usadd_4x8",
4134   .num_inputs = 2,
4135   .output_size = 0,
4136   .output_type = nir_type_int32,
4137   .input_sizes = {
4138      0, 0
4139   },
4140   .input_types = {
4141      nir_type_int32, nir_type_int32
4142   },
4143   .is_conversion = false,
4144   .algebraic_properties =
4145      NIR_OP_IS_COMMUTATIVE | NIR_OP_IS_ASSOCIATIVE
4146},
4147{
4148   .name = "ushr",
4149   .num_inputs = 2,
4150   .output_size = 0,
4151   .output_type = nir_type_uint,
4152   .input_sizes = {
4153      0, 0
4154   },
4155   .input_types = {
4156      nir_type_uint, nir_type_uint32
4157   },
4158   .is_conversion = false,
4159   .algebraic_properties =
4160      0
4161},
4162{
4163   .name = "ussub_4x8",
4164   .num_inputs = 2,
4165   .output_size = 0,
4166   .output_type = nir_type_int32,
4167   .input_sizes = {
4168      0, 0
4169   },
4170   .input_types = {
4171      nir_type_int32, nir_type_int32
4172   },
4173   .is_conversion = false,
4174   .algebraic_properties =
4175      0
4176},
4177{
4178   .name = "usub_borrow",
4179   .num_inputs = 2,
4180   .output_size = 0,
4181   .output_type = nir_type_uint,
4182   .input_sizes = {
4183      0, 0
4184   },
4185   .input_types = {
4186      nir_type_uint, nir_type_uint
4187   },
4188   .is_conversion = false,
4189   .algebraic_properties =
4190      0
4191},
4192{
4193   .name = "usub_sat",
4194   .num_inputs = 2,
4195   .output_size = 0,
4196   .output_type = nir_type_uint,
4197   .input_sizes = {
4198      0, 0
4199   },
4200   .input_types = {
4201      nir_type_uint, nir_type_uint
4202   },
4203   .is_conversion = false,
4204   .algebraic_properties =
4205      0
4206},
4207{
4208   .name = "vec2",
4209   .num_inputs = 2,
4210   .output_size = 2,
4211   .output_type = nir_type_uint,
4212   .input_sizes = {
4213      1, 1
4214   },
4215   .input_types = {
4216      nir_type_uint, nir_type_uint
4217   },
4218   .is_conversion = false,
4219   .algebraic_properties =
4220      0
4221},
4222{
4223   .name = "vec3",
4224   .num_inputs = 3,
4225   .output_size = 3,
4226   .output_type = nir_type_uint,
4227   .input_sizes = {
4228      1, 1, 1
4229   },
4230   .input_types = {
4231      nir_type_uint, nir_type_uint, nir_type_uint
4232   },
4233   .is_conversion = false,
4234   .algebraic_properties =
4235      0
4236},
4237{
4238   .name = "vec4",
4239   .num_inputs = 4,
4240   .output_size = 4,
4241   .output_type = nir_type_uint,
4242   .input_sizes = {
4243      1, 1, 1, 1
4244   },
4245   .input_types = {
4246      nir_type_uint, nir_type_uint, nir_type_uint, nir_type_uint
4247   },
4248   .is_conversion = false,
4249   .algebraic_properties =
4250      0
4251},
4252};
4253
4254