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