1 /*
2 * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 * Copyright (C) 2014-2015 - Scilab Enterprises - Calixte DENIZET
4 *
5 * Copyright (C) 2012 - 2016 - Scilab Enterprises
6 *
7 * This file is hereby licensed under the terms of the GNU GPL v2.0,
8 * pursuant to article 5.3.4 of the CeCILL v.2.1.
9 * This file was originally licensed under the terms of the CeCILL v2.1,
10 * and continues to be available under such terms.
11 * For more information, see the COPYING file which you should have received
12 * along with this program.
13 *
14 */
15
16 // This file has been generated, so don't modify it by hand !!
17
18 #include "checkers/Checkers.hxx"
19
20 namespace analysis
21 {
check_____dottimes____(GVN & gvn,const TIType & in0,const TIType & in1)22 TIType Checkers::check_____dottimes____(GVN & gvn, const TIType & in0, const TIType & in1)
23 {
24 switch (in0.type)
25 {
26 case TIType::EMPTY :
27 {
28 switch (in1.type)
29 {
30 case TIType::EMPTY :
31 {
32 return in0;
33 }
34 case TIType::BOOLEAN :
35 {
36 return in1;
37 }
38 case TIType::COMPLEX :
39 {
40 return in1;
41 }
42 case TIType::DOUBLE :
43 {
44 return in1;
45 }
46 case TIType::INT16 :
47 {
48 return in1;
49 }
50 case TIType::INT32 :
51 {
52 return in1;
53 }
54 case TIType::INT64 :
55 {
56 return in1;
57 }
58 case TIType::INT8 :
59 {
60 return in1;
61 }
62 case TIType::UINT16 :
63 {
64 return in1;
65 }
66 case TIType::UINT32 :
67 {
68 return in1;
69 }
70 case TIType::UINT64 :
71 {
72 return in1;
73 }
74 case TIType::UINT8 :
75 {
76 return in1;
77 }
78 default :
79 return TIType(gvn);
80 }
81 }
82 case TIType::BOOLEAN :
83 {
84 switch (in1.type)
85 {
86 case TIType::EMPTY :
87 {
88 return in0;
89 }
90 case TIType::BOOLEAN :
91 {
92 if (in0.rows == 1 && in0.cols == 1)
93 {
94 return TIType(gvn, TIType::DOUBLE, in1.rows, in1.cols);
95 }
96 if (in1.rows == 1 && in1.cols == 1)
97 {
98 return TIType(gvn, TIType::DOUBLE, in0.rows, in0.cols);
99 }
100 if (in1.rows == in0.rows && in1.cols == in0.cols)
101 {
102 return TIType(gvn, TIType::DOUBLE, in0.rows, in0.cols);
103 }
104 return TIType(gvn, TIType::DOUBLE, -2, -2);
105 }
106 case TIType::COMPLEX :
107 {
108 if (in0.rows == 1 && in0.cols == 1)
109 {
110 return in1;
111 }
112 if (in1.rows == 1 && in1.cols == 1)
113 {
114 return TIType(gvn, TIType::COMPLEX, in0.rows, in0.cols);
115 }
116 if (in1.rows == in0.rows && in1.cols == in0.cols)
117 {
118 return in1;
119 }
120 return TIType(gvn, TIType::COMPLEX, -2, -2);
121 }
122 case TIType::DOUBLE :
123 {
124 if (in0.rows == 1 && in0.cols == 1)
125 {
126 return in1;
127 }
128 if (in1.rows == 1 && in1.cols == 1)
129 {
130 return TIType(gvn, TIType::DOUBLE, in0.rows, in0.cols);
131 }
132 if (in1.rows == in0.rows && in1.cols == in0.cols)
133 {
134 return in1;
135 }
136 return TIType(gvn, TIType::DOUBLE, -2, -2);
137 }
138 case TIType::INT16 :
139 {
140 if (in0.rows == 1 && in0.cols == 1)
141 {
142 return in1;
143 }
144 if (in1.rows == 1 && in1.cols == 1)
145 {
146 return TIType(gvn, TIType::INT16, in0.rows, in0.cols);
147 }
148 if (in1.rows == in0.rows && in1.cols == in0.cols)
149 {
150 return in1;
151 }
152 return TIType(gvn, TIType::INT16, -2, -2);
153 }
154 case TIType::INT32 :
155 {
156 if (in0.rows == 1 && in0.cols == 1)
157 {
158 return in1;
159 }
160 if (in1.rows == 1 && in1.cols == 1)
161 {
162 return TIType(gvn, TIType::INT32, in0.rows, in0.cols);
163 }
164 if (in1.rows == in0.rows && in1.cols == in0.cols)
165 {
166 return in1;
167 }
168 return TIType(gvn, TIType::INT32, -2, -2);
169 }
170 case TIType::INT64 :
171 {
172 if (in0.rows == 1 && in0.cols == 1)
173 {
174 return in1;
175 }
176 if (in1.rows == 1 && in1.cols == 1)
177 {
178 return TIType(gvn, TIType::INT64, in0.rows, in0.cols);
179 }
180 if (in1.rows == in0.rows && in1.cols == in0.cols)
181 {
182 return in1;
183 }
184 return TIType(gvn, TIType::INT64, -2, -2);
185 }
186 case TIType::INT8 :
187 {
188 if (in0.rows == 1 && in0.cols == 1)
189 {
190 return in1;
191 }
192 if (in1.rows == 1 && in1.cols == 1)
193 {
194 return TIType(gvn, TIType::INT8, in0.rows, in0.cols);
195 }
196 if (in1.rows == in0.rows && in1.cols == in0.cols)
197 {
198 return in1;
199 }
200 return TIType(gvn, TIType::INT8, -2, -2);
201 }
202 case TIType::UINT16 :
203 {
204 if (in0.rows == 1 && in0.cols == 1)
205 {
206 return in1;
207 }
208 if (in1.rows == 1 && in1.cols == 1)
209 {
210 return TIType(gvn, TIType::UINT16, in0.rows, in0.cols);
211 }
212 if (in1.rows == in0.rows && in1.cols == in0.cols)
213 {
214 return in1;
215 }
216 return TIType(gvn, TIType::UINT16, -2, -2);
217 }
218 case TIType::UINT32 :
219 {
220 if (in0.rows == 1 && in0.cols == 1)
221 {
222 return in1;
223 }
224 if (in1.rows == 1 && in1.cols == 1)
225 {
226 return TIType(gvn, TIType::UINT32, in0.rows, in0.cols);
227 }
228 if (in1.rows == in0.rows && in1.cols == in0.cols)
229 {
230 return in1;
231 }
232 return TIType(gvn, TIType::UINT32, -2, -2);
233 }
234 case TIType::UINT64 :
235 {
236 if (in0.rows == 1 && in0.cols == 1)
237 {
238 return in1;
239 }
240 if (in1.rows == 1 && in1.cols == 1)
241 {
242 return TIType(gvn, TIType::UINT64, in0.rows, in0.cols);
243 }
244 if (in1.rows == in0.rows && in1.cols == in0.cols)
245 {
246 return in1;
247 }
248 return TIType(gvn, TIType::UINT64, -2, -2);
249 }
250 case TIType::UINT8 :
251 {
252 if (in0.rows == 1 && in0.cols == 1)
253 {
254 return in1;
255 }
256 if (in1.rows == 1 && in1.cols == 1)
257 {
258 return TIType(gvn, TIType::UINT8, in0.rows, in0.cols);
259 }
260 if (in1.rows == in0.rows && in1.cols == in0.cols)
261 {
262 return in1;
263 }
264 return TIType(gvn, TIType::UINT8, -2, -2);
265 }
266 default :
267 return TIType(gvn);
268 }
269 }
270 case TIType::COMPLEX :
271 {
272 switch (in1.type)
273 {
274 case TIType::EMPTY :
275 {
276 return in0;
277 }
278 case TIType::BOOLEAN :
279 {
280 if (in0.rows == 1 && in0.cols == 1)
281 {
282 return TIType(gvn, TIType::COMPLEX, in1.rows, in1.cols);
283 }
284 if (in1.rows == 1 && in1.cols == 1)
285 {
286 return in0;
287 }
288 if (in1.rows == in0.rows && in1.cols == in0.cols)
289 {
290 return in0;
291 }
292 return TIType(gvn, TIType::COMPLEX, -2, -2);
293 }
294 case TIType::COMPLEX :
295 {
296 if (in0.rows == 1 && in0.cols == 1)
297 {
298 return in1;
299 }
300 if (in1.rows == 1 && in1.cols == 1)
301 {
302 return in0;
303 }
304 if (in1.rows == in0.rows && in1.cols == in0.cols)
305 {
306 return in0;
307 }
308 return TIType(gvn, TIType::COMPLEX, -2, -2);
309 }
310 case TIType::DOUBLE :
311 {
312 if (in0.rows == 1 && in0.cols == 1)
313 {
314 return TIType(gvn, TIType::COMPLEX, in1.rows, in1.cols);
315 }
316 if (in1.rows == 1 && in1.cols == 1)
317 {
318 return in0;
319 }
320 if (in1.rows == in0.rows && in1.cols == in0.cols)
321 {
322 return in0;
323 }
324 return TIType(gvn, TIType::COMPLEX, -2, -2);
325 }
326 default :
327 return TIType(gvn);
328 }
329 }
330 case TIType::DOUBLE :
331 {
332 switch (in1.type)
333 {
334 case TIType::EMPTY :
335 {
336 return in0;
337 }
338 case TIType::BOOLEAN :
339 {
340 if (in0.rows == 1 && in0.cols == 1)
341 {
342 return TIType(gvn, TIType::DOUBLE, in1.rows, in1.cols);
343 }
344 if (in1.rows == 1 && in1.cols == 1)
345 {
346 return in0;
347 }
348 if (in1.rows == in0.rows && in1.cols == in0.cols)
349 {
350 return in0;
351 }
352 return TIType(gvn, TIType::DOUBLE, -2, -2);
353 }
354 case TIType::COMPLEX :
355 {
356 if (in0.rows == 1 && in0.cols == 1)
357 {
358 return in1;
359 }
360 if (in1.rows == 1 && in1.cols == 1)
361 {
362 return TIType(gvn, TIType::COMPLEX, in0.rows, in0.cols);
363 }
364 if (in1.rows == in0.rows && in1.cols == in0.cols)
365 {
366 return in1;
367 }
368 return TIType(gvn, TIType::COMPLEX, -2, -2);
369 }
370 case TIType::DOUBLE :
371 {
372 if (in0.rows == 1 && in0.cols == 1)
373 {
374 return in1;
375 }
376 if (in1.rows == 1 && in1.cols == 1)
377 {
378 return in0;
379 }
380 if (in1.rows == in0.rows && in1.cols == in0.cols)
381 {
382 return in0;
383 }
384 return TIType(gvn, TIType::DOUBLE, -2, -2);
385 }
386 case TIType::INT16 :
387 {
388 if (in0.rows == 1 && in0.cols == 1)
389 {
390 return in1;
391 }
392 if (in1.rows == 1 && in1.cols == 1)
393 {
394 return TIType(gvn, TIType::INT16, in0.rows, in0.cols);
395 }
396 if (in1.rows == in0.rows && in1.cols == in0.cols)
397 {
398 return in1;
399 }
400 return TIType(gvn, TIType::INT16, -2, -2);
401 }
402 case TIType::INT32 :
403 {
404 if (in0.rows == 1 && in0.cols == 1)
405 {
406 return in1;
407 }
408 if (in1.rows == 1 && in1.cols == 1)
409 {
410 return TIType(gvn, TIType::INT32, in0.rows, in0.cols);
411 }
412 if (in1.rows == in0.rows && in1.cols == in0.cols)
413 {
414 return in1;
415 }
416 return TIType(gvn, TIType::INT32, -2, -2);
417 }
418 case TIType::INT64 :
419 {
420 if (in0.rows == 1 && in0.cols == 1)
421 {
422 return in1;
423 }
424 if (in1.rows == 1 && in1.cols == 1)
425 {
426 return TIType(gvn, TIType::INT64, in0.rows, in0.cols);
427 }
428 if (in1.rows == in0.rows && in1.cols == in0.cols)
429 {
430 return in1;
431 }
432 return TIType(gvn, TIType::INT64, -2, -2);
433 }
434 case TIType::INT8 :
435 {
436 if (in0.rows == 1 && in0.cols == 1)
437 {
438 return in1;
439 }
440 if (in1.rows == 1 && in1.cols == 1)
441 {
442 return TIType(gvn, TIType::INT8, in0.rows, in0.cols);
443 }
444 if (in1.rows == in0.rows && in1.cols == in0.cols)
445 {
446 return in1;
447 }
448 return TIType(gvn, TIType::INT8, -2, -2);
449 }
450 case TIType::UINT16 :
451 {
452 if (in0.rows == 1 && in0.cols == 1)
453 {
454 return in1;
455 }
456 if (in1.rows == 1 && in1.cols == 1)
457 {
458 return TIType(gvn, TIType::UINT16, in0.rows, in0.cols);
459 }
460 if (in1.rows == in0.rows && in1.cols == in0.cols)
461 {
462 return in1;
463 }
464 return TIType(gvn, TIType::UINT16, -2, -2);
465 }
466 case TIType::UINT32 :
467 {
468 if (in0.rows == 1 && in0.cols == 1)
469 {
470 return in1;
471 }
472 if (in1.rows == 1 && in1.cols == 1)
473 {
474 return TIType(gvn, TIType::UINT32, in0.rows, in0.cols);
475 }
476 if (in1.rows == in0.rows && in1.cols == in0.cols)
477 {
478 return in1;
479 }
480 return TIType(gvn, TIType::UINT32, -2, -2);
481 }
482 case TIType::UINT64 :
483 {
484 if (in0.rows == 1 && in0.cols == 1)
485 {
486 return in1;
487 }
488 if (in1.rows == 1 && in1.cols == 1)
489 {
490 return TIType(gvn, TIType::UINT64, in0.rows, in0.cols);
491 }
492 if (in1.rows == in0.rows && in1.cols == in0.cols)
493 {
494 return in1;
495 }
496 return TIType(gvn, TIType::UINT64, -2, -2);
497 }
498 case TIType::UINT8 :
499 {
500 if (in0.rows == 1 && in0.cols == 1)
501 {
502 return in1;
503 }
504 if (in1.rows == 1 && in1.cols == 1)
505 {
506 return TIType(gvn, TIType::UINT8, in0.rows, in0.cols);
507 }
508 if (in1.rows == in0.rows && in1.cols == in0.cols)
509 {
510 return in1;
511 }
512 return TIType(gvn, TIType::UINT8, -2, -2);
513 }
514 default :
515 return TIType(gvn);
516 }
517 }
518 case TIType::INT16 :
519 {
520 switch (in1.type)
521 {
522 case TIType::EMPTY :
523 {
524 return in0;
525 }
526 case TIType::BOOLEAN :
527 {
528 if (in0.rows == 1 && in0.cols == 1)
529 {
530 return TIType(gvn, TIType::INT16, in1.rows, in1.cols);
531 }
532 if (in1.rows == 1 && in1.cols == 1)
533 {
534 return in0;
535 }
536 if (in1.rows == in0.rows && in1.cols == in0.cols)
537 {
538 return in0;
539 }
540 return TIType(gvn, TIType::INT16, -2, -2);
541 }
542 case TIType::DOUBLE :
543 {
544 if (in0.rows == 1 && in0.cols == 1)
545 {
546 return TIType(gvn, TIType::INT16, in1.rows, in1.cols);
547 }
548 if (in1.rows == 1 && in1.cols == 1)
549 {
550 return in0;
551 }
552 if (in1.rows == in0.rows && in1.cols == in0.cols)
553 {
554 return in0;
555 }
556 return TIType(gvn, TIType::INT16, -2, -2);
557 }
558 case TIType::INT16 :
559 {
560 if (in0.rows == 1 && in0.cols == 1)
561 {
562 return in1;
563 }
564 if (in1.rows == 1 && in1.cols == 1)
565 {
566 return in0;
567 }
568 if (in1.rows == in0.rows && in1.cols == in0.cols)
569 {
570 return in0;
571 }
572 return TIType(gvn, TIType::INT16, -2, -2);
573 }
574 case TIType::INT32 :
575 {
576 if (in0.rows == 1 && in0.cols == 1)
577 {
578 return in1;
579 }
580 if (in1.rows == 1 && in1.cols == 1)
581 {
582 return TIType(gvn, TIType::INT32, in0.rows, in0.cols);
583 }
584 if (in1.rows == in0.rows && in1.cols == in0.cols)
585 {
586 return in1;
587 }
588 return TIType(gvn, TIType::INT32, -2, -2);
589 }
590 case TIType::INT64 :
591 {
592 if (in0.rows == 1 && in0.cols == 1)
593 {
594 return in1;
595 }
596 if (in1.rows == 1 && in1.cols == 1)
597 {
598 return TIType(gvn, TIType::INT64, in0.rows, in0.cols);
599 }
600 if (in1.rows == in0.rows && in1.cols == in0.cols)
601 {
602 return in1;
603 }
604 return TIType(gvn, TIType::INT64, -2, -2);
605 }
606 case TIType::INT8 :
607 {
608 if (in0.rows == 1 && in0.cols == 1)
609 {
610 return TIType(gvn, TIType::INT16, in1.rows, in1.cols);
611 }
612 if (in1.rows == 1 && in1.cols == 1)
613 {
614 return in0;
615 }
616 if (in1.rows == in0.rows && in1.cols == in0.cols)
617 {
618 return in0;
619 }
620 return TIType(gvn, TIType::INT16, -2, -2);
621 }
622 case TIType::UINT16 :
623 {
624 if (in0.rows == 1 && in0.cols == 1)
625 {
626 return in1;
627 }
628 if (in1.rows == 1 && in1.cols == 1)
629 {
630 return TIType(gvn, TIType::UINT16, in0.rows, in0.cols);
631 }
632 if (in1.rows == in0.rows && in1.cols == in0.cols)
633 {
634 return in1;
635 }
636 return TIType(gvn, TIType::UINT16, -2, -2);
637 }
638 case TIType::UINT32 :
639 {
640 if (in0.rows == 1 && in0.cols == 1)
641 {
642 return in1;
643 }
644 if (in1.rows == 1 && in1.cols == 1)
645 {
646 return TIType(gvn, TIType::UINT32, in0.rows, in0.cols);
647 }
648 if (in1.rows == in0.rows && in1.cols == in0.cols)
649 {
650 return in1;
651 }
652 return TIType(gvn, TIType::UINT32, -2, -2);
653 }
654 case TIType::UINT64 :
655 {
656 if (in0.rows == 1 && in0.cols == 1)
657 {
658 return in1;
659 }
660 if (in1.rows == 1 && in1.cols == 1)
661 {
662 return TIType(gvn, TIType::UINT64, in0.rows, in0.cols);
663 }
664 if (in1.rows == in0.rows && in1.cols == in0.cols)
665 {
666 return in1;
667 }
668 return TIType(gvn, TIType::UINT64, -2, -2);
669 }
670 case TIType::UINT8 :
671 {
672 if (in0.rows == 1 && in0.cols == 1)
673 {
674 return TIType(gvn, TIType::UINT16, in1.rows, in1.cols);
675 }
676 if (in1.rows == 1 && in1.cols == 1)
677 {
678 return TIType(gvn, TIType::UINT16, in0.rows, in0.cols);
679 }
680 if (in1.rows == in0.rows && in1.cols == in0.cols)
681 {
682 return TIType(gvn, TIType::UINT16, in0.rows, in0.cols);
683 }
684 return TIType(gvn, TIType::UINT16, -2, -2);
685 }
686 default :
687 return TIType(gvn);
688 }
689 }
690 case TIType::INT32 :
691 {
692 switch (in1.type)
693 {
694 case TIType::EMPTY :
695 {
696 return in0;
697 }
698 case TIType::BOOLEAN :
699 {
700 if (in0.rows == 1 && in0.cols == 1)
701 {
702 return TIType(gvn, TIType::INT32, in1.rows, in1.cols);
703 }
704 if (in1.rows == 1 && in1.cols == 1)
705 {
706 return in0;
707 }
708 if (in1.rows == in0.rows && in1.cols == in0.cols)
709 {
710 return in0;
711 }
712 return TIType(gvn, TIType::INT32, -2, -2);
713 }
714 case TIType::DOUBLE :
715 {
716 if (in0.rows == 1 && in0.cols == 1)
717 {
718 return TIType(gvn, TIType::INT32, in1.rows, in1.cols);
719 }
720 if (in1.rows == 1 && in1.cols == 1)
721 {
722 return in0;
723 }
724 if (in1.rows == in0.rows && in1.cols == in0.cols)
725 {
726 return in0;
727 }
728 return TIType(gvn, TIType::INT32, -2, -2);
729 }
730 case TIType::INT16 :
731 {
732 if (in0.rows == 1 && in0.cols == 1)
733 {
734 return TIType(gvn, TIType::INT32, in1.rows, in1.cols);
735 }
736 if (in1.rows == 1 && in1.cols == 1)
737 {
738 return in0;
739 }
740 if (in1.rows == in0.rows && in1.cols == in0.cols)
741 {
742 return in0;
743 }
744 return TIType(gvn, TIType::INT32, -2, -2);
745 }
746 case TIType::INT32 :
747 {
748 if (in0.rows == 1 && in0.cols == 1)
749 {
750 return in1;
751 }
752 if (in1.rows == 1 && in1.cols == 1)
753 {
754 return in0;
755 }
756 if (in1.rows == in0.rows && in1.cols == in0.cols)
757 {
758 return in0;
759 }
760 return TIType(gvn, TIType::INT32, -2, -2);
761 }
762 case TIType::INT64 :
763 {
764 if (in0.rows == 1 && in0.cols == 1)
765 {
766 return in1;
767 }
768 if (in1.rows == 1 && in1.cols == 1)
769 {
770 return TIType(gvn, TIType::INT64, in0.rows, in0.cols);
771 }
772 if (in1.rows == in0.rows && in1.cols == in0.cols)
773 {
774 return in1;
775 }
776 return TIType(gvn, TIType::INT64, -2, -2);
777 }
778 case TIType::INT8 :
779 {
780 if (in0.rows == 1 && in0.cols == 1)
781 {
782 return TIType(gvn, TIType::INT32, in1.rows, in1.cols);
783 }
784 if (in1.rows == 1 && in1.cols == 1)
785 {
786 return in0;
787 }
788 if (in1.rows == in0.rows && in1.cols == in0.cols)
789 {
790 return in0;
791 }
792 return TIType(gvn, TIType::INT32, -2, -2);
793 }
794 case TIType::UINT16 :
795 {
796 if (in0.rows == 1 && in0.cols == 1)
797 {
798 return TIType(gvn, TIType::UINT32, in1.rows, in1.cols);
799 }
800 if (in1.rows == 1 && in1.cols == 1)
801 {
802 return TIType(gvn, TIType::UINT32, in0.rows, in0.cols);
803 }
804 if (in1.rows == in0.rows && in1.cols == in0.cols)
805 {
806 return TIType(gvn, TIType::UINT32, in0.rows, in0.cols);
807 }
808 return TIType(gvn, TIType::UINT32, -2, -2);
809 }
810 case TIType::UINT32 :
811 {
812 if (in0.rows == 1 && in0.cols == 1)
813 {
814 return in1;
815 }
816 if (in1.rows == 1 && in1.cols == 1)
817 {
818 return TIType(gvn, TIType::UINT32, in0.rows, in0.cols);
819 }
820 if (in1.rows == in0.rows && in1.cols == in0.cols)
821 {
822 return in1;
823 }
824 return TIType(gvn, TIType::UINT32, -2, -2);
825 }
826 case TIType::UINT64 :
827 {
828 if (in0.rows == 1 && in0.cols == 1)
829 {
830 return in1;
831 }
832 if (in1.rows == 1 && in1.cols == 1)
833 {
834 return TIType(gvn, TIType::UINT64, in0.rows, in0.cols);
835 }
836 if (in1.rows == in0.rows && in1.cols == in0.cols)
837 {
838 return in1;
839 }
840 return TIType(gvn, TIType::UINT64, -2, -2);
841 }
842 case TIType::UINT8 :
843 {
844 if (in0.rows == 1 && in0.cols == 1)
845 {
846 return TIType(gvn, TIType::UINT32, in1.rows, in1.cols);
847 }
848 if (in1.rows == 1 && in1.cols == 1)
849 {
850 return TIType(gvn, TIType::UINT32, in0.rows, in0.cols);
851 }
852 if (in1.rows == in0.rows && in1.cols == in0.cols)
853 {
854 return TIType(gvn, TIType::UINT32, in0.rows, in0.cols);
855 }
856 return TIType(gvn, TIType::UINT32, -2, -2);
857 }
858 default :
859 return TIType(gvn);
860 }
861 }
862 case TIType::INT64 :
863 {
864 switch (in1.type)
865 {
866 case TIType::EMPTY :
867 {
868 return in0;
869 }
870 case TIType::BOOLEAN :
871 {
872 if (in0.rows == 1 && in0.cols == 1)
873 {
874 return TIType(gvn, TIType::INT64, in1.rows, in1.cols);
875 }
876 if (in1.rows == 1 && in1.cols == 1)
877 {
878 return in0;
879 }
880 if (in1.rows == in0.rows && in1.cols == in0.cols)
881 {
882 return in0;
883 }
884 return TIType(gvn, TIType::INT64, -2, -2);
885 }
886 case TIType::DOUBLE :
887 {
888 if (in0.rows == 1 && in0.cols == 1)
889 {
890 return TIType(gvn, TIType::INT64, in1.rows, in1.cols);
891 }
892 if (in1.rows == 1 && in1.cols == 1)
893 {
894 return in0;
895 }
896 if (in1.rows == in0.rows && in1.cols == in0.cols)
897 {
898 return in0;
899 }
900 return TIType(gvn, TIType::INT64, -2, -2);
901 }
902 case TIType::INT16 :
903 {
904 if (in0.rows == 1 && in0.cols == 1)
905 {
906 return TIType(gvn, TIType::INT64, in1.rows, in1.cols);
907 }
908 if (in1.rows == 1 && in1.cols == 1)
909 {
910 return in0;
911 }
912 if (in1.rows == in0.rows && in1.cols == in0.cols)
913 {
914 return in0;
915 }
916 return TIType(gvn, TIType::INT64, -2, -2);
917 }
918 case TIType::INT32 :
919 {
920 if (in0.rows == 1 && in0.cols == 1)
921 {
922 return TIType(gvn, TIType::INT64, in1.rows, in1.cols);
923 }
924 if (in1.rows == 1 && in1.cols == 1)
925 {
926 return in0;
927 }
928 if (in1.rows == in0.rows && in1.cols == in0.cols)
929 {
930 return in0;
931 }
932 return TIType(gvn, TIType::INT64, -2, -2);
933 }
934 case TIType::INT64 :
935 {
936 if (in0.rows == 1 && in0.cols == 1)
937 {
938 return in1;
939 }
940 if (in1.rows == 1 && in1.cols == 1)
941 {
942 return in0;
943 }
944 if (in1.rows == in0.rows && in1.cols == in0.cols)
945 {
946 return in0;
947 }
948 return TIType(gvn, TIType::INT64, -2, -2);
949 }
950 case TIType::INT8 :
951 {
952 if (in0.rows == 1 && in0.cols == 1)
953 {
954 return TIType(gvn, TIType::INT64, in1.rows, in1.cols);
955 }
956 if (in1.rows == 1 && in1.cols == 1)
957 {
958 return in0;
959 }
960 if (in1.rows == in0.rows && in1.cols == in0.cols)
961 {
962 return in0;
963 }
964 return TIType(gvn, TIType::INT64, -2, -2);
965 }
966 case TIType::UINT16 :
967 {
968 if (in0.rows == 1 && in0.cols == 1)
969 {
970 return TIType(gvn, TIType::UINT64, in1.rows, in1.cols);
971 }
972 if (in1.rows == 1 && in1.cols == 1)
973 {
974 return TIType(gvn, TIType::UINT64, in0.rows, in0.cols);
975 }
976 if (in1.rows == in0.rows && in1.cols == in0.cols)
977 {
978 return TIType(gvn, TIType::UINT64, in0.rows, in0.cols);
979 }
980 return TIType(gvn, TIType::UINT64, -2, -2);
981 }
982 case TIType::UINT32 :
983 {
984 if (in0.rows == 1 && in0.cols == 1)
985 {
986 return TIType(gvn, TIType::UINT64, in1.rows, in1.cols);
987 }
988 if (in1.rows == 1 && in1.cols == 1)
989 {
990 return TIType(gvn, TIType::UINT64, in0.rows, in0.cols);
991 }
992 if (in1.rows == in0.rows && in1.cols == in0.cols)
993 {
994 return TIType(gvn, TIType::UINT64, in0.rows, in0.cols);
995 }
996 return TIType(gvn, TIType::UINT64, -2, -2);
997 }
998 case TIType::UINT64 :
999 {
1000 if (in0.rows == 1 && in0.cols == 1)
1001 {
1002 return in1;
1003 }
1004 if (in1.rows == 1 && in1.cols == 1)
1005 {
1006 return TIType(gvn, TIType::UINT64, in0.rows, in0.cols);
1007 }
1008 if (in1.rows == in0.rows && in1.cols == in0.cols)
1009 {
1010 return in1;
1011 }
1012 return TIType(gvn, TIType::UINT64, -2, -2);
1013 }
1014 case TIType::UINT8 :
1015 {
1016 if (in0.rows == 1 && in0.cols == 1)
1017 {
1018 return TIType(gvn, TIType::UINT64, in1.rows, in1.cols);
1019 }
1020 if (in1.rows == 1 && in1.cols == 1)
1021 {
1022 return TIType(gvn, TIType::UINT64, in0.rows, in0.cols);
1023 }
1024 if (in1.rows == in0.rows && in1.cols == in0.cols)
1025 {
1026 return TIType(gvn, TIType::UINT64, in0.rows, in0.cols);
1027 }
1028 return TIType(gvn, TIType::UINT64, -2, -2);
1029 }
1030 default :
1031 return TIType(gvn);
1032 }
1033 }
1034 case TIType::INT8 :
1035 {
1036 switch (in1.type)
1037 {
1038 case TIType::EMPTY :
1039 {
1040 return in0;
1041 }
1042 case TIType::BOOLEAN :
1043 {
1044 if (in0.rows == 1 && in0.cols == 1)
1045 {
1046 return TIType(gvn, TIType::INT8, in1.rows, in1.cols);
1047 }
1048 if (in1.rows == 1 && in1.cols == 1)
1049 {
1050 return in0;
1051 }
1052 if (in1.rows == in0.rows && in1.cols == in0.cols)
1053 {
1054 return in0;
1055 }
1056 return TIType(gvn, TIType::INT8, -2, -2);
1057 }
1058 case TIType::DOUBLE :
1059 {
1060 if (in0.rows == 1 && in0.cols == 1)
1061 {
1062 return TIType(gvn, TIType::INT8, in1.rows, in1.cols);
1063 }
1064 if (in1.rows == 1 && in1.cols == 1)
1065 {
1066 return in0;
1067 }
1068 if (in1.rows == in0.rows && in1.cols == in0.cols)
1069 {
1070 return in0;
1071 }
1072 return TIType(gvn, TIType::INT8, -2, -2);
1073 }
1074 case TIType::INT16 :
1075 {
1076 if (in0.rows == 1 && in0.cols == 1)
1077 {
1078 return in1;
1079 }
1080 if (in1.rows == 1 && in1.cols == 1)
1081 {
1082 return TIType(gvn, TIType::INT16, in0.rows, in0.cols);
1083 }
1084 if (in1.rows == in0.rows && in1.cols == in0.cols)
1085 {
1086 return in1;
1087 }
1088 return TIType(gvn, TIType::INT16, -2, -2);
1089 }
1090 case TIType::INT32 :
1091 {
1092 if (in0.rows == 1 && in0.cols == 1)
1093 {
1094 return in1;
1095 }
1096 if (in1.rows == 1 && in1.cols == 1)
1097 {
1098 return TIType(gvn, TIType::INT32, in0.rows, in0.cols);
1099 }
1100 if (in1.rows == in0.rows && in1.cols == in0.cols)
1101 {
1102 return in1;
1103 }
1104 return TIType(gvn, TIType::INT32, -2, -2);
1105 }
1106 case TIType::INT64 :
1107 {
1108 if (in0.rows == 1 && in0.cols == 1)
1109 {
1110 return in1;
1111 }
1112 if (in1.rows == 1 && in1.cols == 1)
1113 {
1114 return TIType(gvn, TIType::INT64, in0.rows, in0.cols);
1115 }
1116 if (in1.rows == in0.rows && in1.cols == in0.cols)
1117 {
1118 return in1;
1119 }
1120 return TIType(gvn, TIType::INT64, -2, -2);
1121 }
1122 case TIType::INT8 :
1123 {
1124 if (in0.rows == 1 && in0.cols == 1)
1125 {
1126 return in1;
1127 }
1128 if (in1.rows == 1 && in1.cols == 1)
1129 {
1130 return in0;
1131 }
1132 if (in1.rows == in0.rows && in1.cols == in0.cols)
1133 {
1134 return in0;
1135 }
1136 return TIType(gvn, TIType::INT8, -2, -2);
1137 }
1138 case TIType::UINT16 :
1139 {
1140 if (in0.rows == 1 && in0.cols == 1)
1141 {
1142 return in1;
1143 }
1144 if (in1.rows == 1 && in1.cols == 1)
1145 {
1146 return TIType(gvn, TIType::UINT16, in0.rows, in0.cols);
1147 }
1148 if (in1.rows == in0.rows && in1.cols == in0.cols)
1149 {
1150 return in1;
1151 }
1152 return TIType(gvn, TIType::UINT16, -2, -2);
1153 }
1154 case TIType::UINT32 :
1155 {
1156 if (in0.rows == 1 && in0.cols == 1)
1157 {
1158 return in1;
1159 }
1160 if (in1.rows == 1 && in1.cols == 1)
1161 {
1162 return TIType(gvn, TIType::UINT32, in0.rows, in0.cols);
1163 }
1164 if (in1.rows == in0.rows && in1.cols == in0.cols)
1165 {
1166 return in1;
1167 }
1168 return TIType(gvn, TIType::UINT32, -2, -2);
1169 }
1170 case TIType::UINT64 :
1171 {
1172 if (in0.rows == 1 && in0.cols == 1)
1173 {
1174 return in1;
1175 }
1176 if (in1.rows == 1 && in1.cols == 1)
1177 {
1178 return TIType(gvn, TIType::UINT64, in0.rows, in0.cols);
1179 }
1180 if (in1.rows == in0.rows && in1.cols == in0.cols)
1181 {
1182 return in1;
1183 }
1184 return TIType(gvn, TIType::UINT64, -2, -2);
1185 }
1186 case TIType::UINT8 :
1187 {
1188 if (in0.rows == 1 && in0.cols == 1)
1189 {
1190 return in1;
1191 }
1192 if (in1.rows == 1 && in1.cols == 1)
1193 {
1194 return TIType(gvn, TIType::UINT8, in0.rows, in0.cols);
1195 }
1196 if (in1.rows == in0.rows && in1.cols == in0.cols)
1197 {
1198 return in1;
1199 }
1200 return TIType(gvn, TIType::UINT8, -2, -2);
1201 }
1202 default :
1203 return TIType(gvn);
1204 }
1205 }
1206 case TIType::UINT16 :
1207 {
1208 switch (in1.type)
1209 {
1210 case TIType::EMPTY :
1211 {
1212 return in0;
1213 }
1214 case TIType::BOOLEAN :
1215 {
1216 if (in0.rows == 1 && in0.cols == 1)
1217 {
1218 return TIType(gvn, TIType::UINT16, in1.rows, in1.cols);
1219 }
1220 if (in1.rows == 1 && in1.cols == 1)
1221 {
1222 return in0;
1223 }
1224 if (in1.rows == in0.rows && in1.cols == in0.cols)
1225 {
1226 return in0;
1227 }
1228 return TIType(gvn, TIType::UINT16, -2, -2);
1229 }
1230 case TIType::DOUBLE :
1231 {
1232 if (in0.rows == 1 && in0.cols == 1)
1233 {
1234 return TIType(gvn, TIType::UINT16, in1.rows, in1.cols);
1235 }
1236 if (in1.rows == 1 && in1.cols == 1)
1237 {
1238 return in0;
1239 }
1240 if (in1.rows == in0.rows && in1.cols == in0.cols)
1241 {
1242 return in0;
1243 }
1244 return TIType(gvn, TIType::UINT16, -2, -2);
1245 }
1246 case TIType::INT16 :
1247 {
1248 if (in0.rows == 1 && in0.cols == 1)
1249 {
1250 return TIType(gvn, TIType::UINT16, in1.rows, in1.cols);
1251 }
1252 if (in1.rows == 1 && in1.cols == 1)
1253 {
1254 return in0;
1255 }
1256 if (in1.rows == in0.rows && in1.cols == in0.cols)
1257 {
1258 return in0;
1259 }
1260 return TIType(gvn, TIType::UINT16, -2, -2);
1261 }
1262 case TIType::INT32 :
1263 {
1264 if (in0.rows == 1 && in0.cols == 1)
1265 {
1266 return TIType(gvn, TIType::UINT32, in1.rows, in1.cols);
1267 }
1268 if (in1.rows == 1 && in1.cols == 1)
1269 {
1270 return TIType(gvn, TIType::UINT32, in0.rows, in0.cols);
1271 }
1272 if (in1.rows == in0.rows && in1.cols == in0.cols)
1273 {
1274 return TIType(gvn, TIType::UINT32, in0.rows, in0.cols);
1275 }
1276 return TIType(gvn, TIType::UINT32, -2, -2);
1277 }
1278 case TIType::INT64 :
1279 {
1280 if (in0.rows == 1 && in0.cols == 1)
1281 {
1282 return TIType(gvn, TIType::UINT64, in1.rows, in1.cols);
1283 }
1284 if (in1.rows == 1 && in1.cols == 1)
1285 {
1286 return TIType(gvn, TIType::UINT64, in0.rows, in0.cols);
1287 }
1288 if (in1.rows == in0.rows && in1.cols == in0.cols)
1289 {
1290 return TIType(gvn, TIType::UINT64, in0.rows, in0.cols);
1291 }
1292 return TIType(gvn, TIType::UINT64, -2, -2);
1293 }
1294 case TIType::INT8 :
1295 {
1296 if (in0.rows == 1 && in0.cols == 1)
1297 {
1298 return TIType(gvn, TIType::UINT16, in1.rows, in1.cols);
1299 }
1300 if (in1.rows == 1 && in1.cols == 1)
1301 {
1302 return in0;
1303 }
1304 if (in1.rows == in0.rows && in1.cols == in0.cols)
1305 {
1306 return in0;
1307 }
1308 return TIType(gvn, TIType::UINT16, -2, -2);
1309 }
1310 case TIType::UINT16 :
1311 {
1312 if (in0.rows == 1 && in0.cols == 1)
1313 {
1314 return in1;
1315 }
1316 if (in1.rows == 1 && in1.cols == 1)
1317 {
1318 return in0;
1319 }
1320 if (in1.rows == in0.rows && in1.cols == in0.cols)
1321 {
1322 return in0;
1323 }
1324 return TIType(gvn, TIType::UINT16, -2, -2);
1325 }
1326 case TIType::UINT32 :
1327 {
1328 if (in0.rows == 1 && in0.cols == 1)
1329 {
1330 return in1;
1331 }
1332 if (in1.rows == 1 && in1.cols == 1)
1333 {
1334 return TIType(gvn, TIType::UINT32, in0.rows, in0.cols);
1335 }
1336 if (in1.rows == in0.rows && in1.cols == in0.cols)
1337 {
1338 return in1;
1339 }
1340 return TIType(gvn, TIType::UINT32, -2, -2);
1341 }
1342 case TIType::UINT64 :
1343 {
1344 if (in0.rows == 1 && in0.cols == 1)
1345 {
1346 return in1;
1347 }
1348 if (in1.rows == 1 && in1.cols == 1)
1349 {
1350 return TIType(gvn, TIType::UINT64, in0.rows, in0.cols);
1351 }
1352 if (in1.rows == in0.rows && in1.cols == in0.cols)
1353 {
1354 return in1;
1355 }
1356 return TIType(gvn, TIType::UINT64, -2, -2);
1357 }
1358 case TIType::UINT8 :
1359 {
1360 if (in0.rows == 1 && in0.cols == 1)
1361 {
1362 return TIType(gvn, TIType::UINT16, in1.rows, in1.cols);
1363 }
1364 if (in1.rows == 1 && in1.cols == 1)
1365 {
1366 return in0;
1367 }
1368 if (in1.rows == in0.rows && in1.cols == in0.cols)
1369 {
1370 return in0;
1371 }
1372 return TIType(gvn, TIType::UINT16, -2, -2);
1373 }
1374 default :
1375 return TIType(gvn);
1376 }
1377 }
1378 case TIType::UINT32 :
1379 {
1380 switch (in1.type)
1381 {
1382 case TIType::EMPTY :
1383 {
1384 return in0;
1385 }
1386 case TIType::BOOLEAN :
1387 {
1388 if (in0.rows == 1 && in0.cols == 1)
1389 {
1390 return TIType(gvn, TIType::UINT32, in1.rows, in1.cols);
1391 }
1392 if (in1.rows == 1 && in1.cols == 1)
1393 {
1394 return in0;
1395 }
1396 if (in1.rows == in0.rows && in1.cols == in0.cols)
1397 {
1398 return in0;
1399 }
1400 return TIType(gvn, TIType::UINT32, -2, -2);
1401 }
1402 case TIType::DOUBLE :
1403 {
1404 if (in0.rows == 1 && in0.cols == 1)
1405 {
1406 return TIType(gvn, TIType::UINT32, in1.rows, in1.cols);
1407 }
1408 if (in1.rows == 1 && in1.cols == 1)
1409 {
1410 return in0;
1411 }
1412 if (in1.rows == in0.rows && in1.cols == in0.cols)
1413 {
1414 return in0;
1415 }
1416 return TIType(gvn, TIType::UINT32, -2, -2);
1417 }
1418 case TIType::INT16 :
1419 {
1420 if (in0.rows == 1 && in0.cols == 1)
1421 {
1422 return TIType(gvn, TIType::UINT32, in1.rows, in1.cols);
1423 }
1424 if (in1.rows == 1 && in1.cols == 1)
1425 {
1426 return in0;
1427 }
1428 if (in1.rows == in0.rows && in1.cols == in0.cols)
1429 {
1430 return in0;
1431 }
1432 return TIType(gvn, TIType::UINT32, -2, -2);
1433 }
1434 case TIType::INT32 :
1435 {
1436 if (in0.rows == 1 && in0.cols == 1)
1437 {
1438 return TIType(gvn, TIType::UINT32, in1.rows, in1.cols);
1439 }
1440 if (in1.rows == 1 && in1.cols == 1)
1441 {
1442 return in0;
1443 }
1444 if (in1.rows == in0.rows && in1.cols == in0.cols)
1445 {
1446 return in0;
1447 }
1448 return TIType(gvn, TIType::UINT32, -2, -2);
1449 }
1450 case TIType::INT64 :
1451 {
1452 if (in0.rows == 1 && in0.cols == 1)
1453 {
1454 return TIType(gvn, TIType::UINT64, in1.rows, in1.cols);
1455 }
1456 if (in1.rows == 1 && in1.cols == 1)
1457 {
1458 return TIType(gvn, TIType::UINT64, in0.rows, in0.cols);
1459 }
1460 if (in1.rows == in0.rows && in1.cols == in0.cols)
1461 {
1462 return TIType(gvn, TIType::UINT64, in0.rows, in0.cols);
1463 }
1464 return TIType(gvn, TIType::UINT64, -2, -2);
1465 }
1466 case TIType::INT8 :
1467 {
1468 if (in0.rows == 1 && in0.cols == 1)
1469 {
1470 return TIType(gvn, TIType::UINT32, in1.rows, in1.cols);
1471 }
1472 if (in1.rows == 1 && in1.cols == 1)
1473 {
1474 return in0;
1475 }
1476 if (in1.rows == in0.rows && in1.cols == in0.cols)
1477 {
1478 return in0;
1479 }
1480 return TIType(gvn, TIType::UINT32, -2, -2);
1481 }
1482 case TIType::UINT16 :
1483 {
1484 if (in0.rows == 1 && in0.cols == 1)
1485 {
1486 return TIType(gvn, TIType::UINT32, in1.rows, in1.cols);
1487 }
1488 if (in1.rows == 1 && in1.cols == 1)
1489 {
1490 return in0;
1491 }
1492 if (in1.rows == in0.rows && in1.cols == in0.cols)
1493 {
1494 return in0;
1495 }
1496 return TIType(gvn, TIType::UINT32, -2, -2);
1497 }
1498 case TIType::UINT32 :
1499 {
1500 if (in0.rows == 1 && in0.cols == 1)
1501 {
1502 return in1;
1503 }
1504 if (in1.rows == 1 && in1.cols == 1)
1505 {
1506 return in0;
1507 }
1508 if (in1.rows == in0.rows && in1.cols == in0.cols)
1509 {
1510 return in0;
1511 }
1512 return TIType(gvn, TIType::UINT32, -2, -2);
1513 }
1514 case TIType::UINT64 :
1515 {
1516 if (in0.rows == 1 && in0.cols == 1)
1517 {
1518 return in1;
1519 }
1520 if (in1.rows == 1 && in1.cols == 1)
1521 {
1522 return TIType(gvn, TIType::UINT64, in0.rows, in0.cols);
1523 }
1524 if (in1.rows == in0.rows && in1.cols == in0.cols)
1525 {
1526 return in1;
1527 }
1528 return TIType(gvn, TIType::UINT64, -2, -2);
1529 }
1530 case TIType::UINT8 :
1531 {
1532 if (in0.rows == 1 && in0.cols == 1)
1533 {
1534 return TIType(gvn, TIType::UINT32, in1.rows, in1.cols);
1535 }
1536 if (in1.rows == 1 && in1.cols == 1)
1537 {
1538 return in0;
1539 }
1540 if (in1.rows == in0.rows && in1.cols == in0.cols)
1541 {
1542 return in0;
1543 }
1544 return TIType(gvn, TIType::UINT32, -2, -2);
1545 }
1546 default :
1547 return TIType(gvn);
1548 }
1549 }
1550 case TIType::UINT64 :
1551 {
1552 switch (in1.type)
1553 {
1554 case TIType::EMPTY :
1555 {
1556 return in0;
1557 }
1558 case TIType::BOOLEAN :
1559 {
1560 if (in0.rows == 1 && in0.cols == 1)
1561 {
1562 return TIType(gvn, TIType::UINT64, in1.rows, in1.cols);
1563 }
1564 if (in1.rows == 1 && in1.cols == 1)
1565 {
1566 return in0;
1567 }
1568 if (in1.rows == in0.rows && in1.cols == in0.cols)
1569 {
1570 return in0;
1571 }
1572 return TIType(gvn, TIType::UINT64, -2, -2);
1573 }
1574 case TIType::DOUBLE :
1575 {
1576 if (in0.rows == 1 && in0.cols == 1)
1577 {
1578 return TIType(gvn, TIType::UINT64, in1.rows, in1.cols);
1579 }
1580 if (in1.rows == 1 && in1.cols == 1)
1581 {
1582 return in0;
1583 }
1584 if (in1.rows == in0.rows && in1.cols == in0.cols)
1585 {
1586 return in0;
1587 }
1588 return TIType(gvn, TIType::UINT64, -2, -2);
1589 }
1590 case TIType::INT16 :
1591 {
1592 if (in0.rows == 1 && in0.cols == 1)
1593 {
1594 return TIType(gvn, TIType::UINT64, in1.rows, in1.cols);
1595 }
1596 if (in1.rows == 1 && in1.cols == 1)
1597 {
1598 return in0;
1599 }
1600 if (in1.rows == in0.rows && in1.cols == in0.cols)
1601 {
1602 return in0;
1603 }
1604 return TIType(gvn, TIType::UINT64, -2, -2);
1605 }
1606 case TIType::INT32 :
1607 {
1608 if (in0.rows == 1 && in0.cols == 1)
1609 {
1610 return TIType(gvn, TIType::UINT64, in1.rows, in1.cols);
1611 }
1612 if (in1.rows == 1 && in1.cols == 1)
1613 {
1614 return in0;
1615 }
1616 if (in1.rows == in0.rows && in1.cols == in0.cols)
1617 {
1618 return in0;
1619 }
1620 return TIType(gvn, TIType::UINT64, -2, -2);
1621 }
1622 case TIType::INT64 :
1623 {
1624 if (in0.rows == 1 && in0.cols == 1)
1625 {
1626 return TIType(gvn, TIType::UINT64, in1.rows, in1.cols);
1627 }
1628 if (in1.rows == 1 && in1.cols == 1)
1629 {
1630 return in0;
1631 }
1632 if (in1.rows == in0.rows && in1.cols == in0.cols)
1633 {
1634 return in0;
1635 }
1636 return TIType(gvn, TIType::UINT64, -2, -2);
1637 }
1638 case TIType::INT8 :
1639 {
1640 if (in0.rows == 1 && in0.cols == 1)
1641 {
1642 return TIType(gvn, TIType::UINT64, in1.rows, in1.cols);
1643 }
1644 if (in1.rows == 1 && in1.cols == 1)
1645 {
1646 return in0;
1647 }
1648 if (in1.rows == in0.rows && in1.cols == in0.cols)
1649 {
1650 return in0;
1651 }
1652 return TIType(gvn, TIType::UINT64, -2, -2);
1653 }
1654 case TIType::UINT16 :
1655 {
1656 if (in0.rows == 1 && in0.cols == 1)
1657 {
1658 return TIType(gvn, TIType::UINT64, in1.rows, in1.cols);
1659 }
1660 if (in1.rows == 1 && in1.cols == 1)
1661 {
1662 return in0;
1663 }
1664 if (in1.rows == in0.rows && in1.cols == in0.cols)
1665 {
1666 return in0;
1667 }
1668 return TIType(gvn, TIType::UINT64, -2, -2);
1669 }
1670 case TIType::UINT32 :
1671 {
1672 if (in0.rows == 1 && in0.cols == 1)
1673 {
1674 return TIType(gvn, TIType::UINT64, in1.rows, in1.cols);
1675 }
1676 if (in1.rows == 1 && in1.cols == 1)
1677 {
1678 return in0;
1679 }
1680 if (in1.rows == in0.rows && in1.cols == in0.cols)
1681 {
1682 return in0;
1683 }
1684 return TIType(gvn, TIType::UINT64, -2, -2);
1685 }
1686 case TIType::UINT64 :
1687 {
1688 if (in0.rows == 1 && in0.cols == 1)
1689 {
1690 return in1;
1691 }
1692 if (in1.rows == 1 && in1.cols == 1)
1693 {
1694 return in0;
1695 }
1696 if (in1.rows == in0.rows && in1.cols == in0.cols)
1697 {
1698 return in0;
1699 }
1700 return TIType(gvn, TIType::UINT64, -2, -2);
1701 }
1702 case TIType::UINT8 :
1703 {
1704 if (in0.rows == 1 && in0.cols == 1)
1705 {
1706 return TIType(gvn, TIType::UINT64, in1.rows, in1.cols);
1707 }
1708 if (in1.rows == 1 && in1.cols == 1)
1709 {
1710 return in0;
1711 }
1712 if (in1.rows == in0.rows && in1.cols == in0.cols)
1713 {
1714 return in0;
1715 }
1716 return TIType(gvn, TIType::UINT64, -2, -2);
1717 }
1718 default :
1719 return TIType(gvn);
1720 }
1721 }
1722 case TIType::UINT8 :
1723 {
1724 switch (in1.type)
1725 {
1726 case TIType::EMPTY :
1727 {
1728 return in0;
1729 }
1730 case TIType::BOOLEAN :
1731 {
1732 if (in0.rows == 1 && in0.cols == 1)
1733 {
1734 return TIType(gvn, TIType::UINT8, in1.rows, in1.cols);
1735 }
1736 if (in1.rows == 1 && in1.cols == 1)
1737 {
1738 return in0;
1739 }
1740 if (in1.rows == in0.rows && in1.cols == in0.cols)
1741 {
1742 return in0;
1743 }
1744 return TIType(gvn, TIType::UINT8, -2, -2);
1745 }
1746 case TIType::DOUBLE :
1747 {
1748 if (in0.rows == 1 && in0.cols == 1)
1749 {
1750 return TIType(gvn, TIType::UINT8, in1.rows, in1.cols);
1751 }
1752 if (in1.rows == 1 && in1.cols == 1)
1753 {
1754 return in0;
1755 }
1756 if (in1.rows == in0.rows && in1.cols == in0.cols)
1757 {
1758 return in0;
1759 }
1760 return TIType(gvn, TIType::UINT8, -2, -2);
1761 }
1762 case TIType::INT16 :
1763 {
1764 if (in0.rows == 1 && in0.cols == 1)
1765 {
1766 return TIType(gvn, TIType::UINT16, in1.rows, in1.cols);
1767 }
1768 if (in1.rows == 1 && in1.cols == 1)
1769 {
1770 return TIType(gvn, TIType::UINT16, in0.rows, in0.cols);
1771 }
1772 if (in1.rows == in0.rows && in1.cols == in0.cols)
1773 {
1774 return TIType(gvn, TIType::UINT16, in0.rows, in0.cols);
1775 }
1776 return TIType(gvn, TIType::UINT16, -2, -2);
1777 }
1778 case TIType::INT32 :
1779 {
1780 if (in0.rows == 1 && in0.cols == 1)
1781 {
1782 return TIType(gvn, TIType::UINT32, in1.rows, in1.cols);
1783 }
1784 if (in1.rows == 1 && in1.cols == 1)
1785 {
1786 return TIType(gvn, TIType::UINT32, in0.rows, in0.cols);
1787 }
1788 if (in1.rows == in0.rows && in1.cols == in0.cols)
1789 {
1790 return TIType(gvn, TIType::UINT32, in0.rows, in0.cols);
1791 }
1792 return TIType(gvn, TIType::UINT32, -2, -2);
1793 }
1794 case TIType::INT64 :
1795 {
1796 if (in0.rows == 1 && in0.cols == 1)
1797 {
1798 return TIType(gvn, TIType::UINT64, in1.rows, in1.cols);
1799 }
1800 if (in1.rows == 1 && in1.cols == 1)
1801 {
1802 return TIType(gvn, TIType::UINT64, in0.rows, in0.cols);
1803 }
1804 if (in1.rows == in0.rows && in1.cols == in0.cols)
1805 {
1806 return TIType(gvn, TIType::UINT64, in0.rows, in0.cols);
1807 }
1808 return TIType(gvn, TIType::UINT64, -2, -2);
1809 }
1810 case TIType::INT8 :
1811 {
1812 if (in0.rows == 1 && in0.cols == 1)
1813 {
1814 return TIType(gvn, TIType::UINT8, in1.rows, in1.cols);
1815 }
1816 if (in1.rows == 1 && in1.cols == 1)
1817 {
1818 return in0;
1819 }
1820 if (in1.rows == in0.rows && in1.cols == in0.cols)
1821 {
1822 return in0;
1823 }
1824 return TIType(gvn, TIType::UINT8, -2, -2);
1825 }
1826 case TIType::UINT16 :
1827 {
1828 if (in0.rows == 1 && in0.cols == 1)
1829 {
1830 return in1;
1831 }
1832 if (in1.rows == 1 && in1.cols == 1)
1833 {
1834 return TIType(gvn, TIType::UINT16, in0.rows, in0.cols);
1835 }
1836 if (in1.rows == in0.rows && in1.cols == in0.cols)
1837 {
1838 return in1;
1839 }
1840 return TIType(gvn, TIType::UINT16, -2, -2);
1841 }
1842 case TIType::UINT32 :
1843 {
1844 if (in0.rows == 1 && in0.cols == 1)
1845 {
1846 return in1;
1847 }
1848 if (in1.rows == 1 && in1.cols == 1)
1849 {
1850 return TIType(gvn, TIType::UINT32, in0.rows, in0.cols);
1851 }
1852 if (in1.rows == in0.rows && in1.cols == in0.cols)
1853 {
1854 return in1;
1855 }
1856 return TIType(gvn, TIType::UINT32, -2, -2);
1857 }
1858 case TIType::UINT64 :
1859 {
1860 if (in0.rows == 1 && in0.cols == 1)
1861 {
1862 return in1;
1863 }
1864 if (in1.rows == 1 && in1.cols == 1)
1865 {
1866 return TIType(gvn, TIType::UINT64, in0.rows, in0.cols);
1867 }
1868 if (in1.rows == in0.rows && in1.cols == in0.cols)
1869 {
1870 return in1;
1871 }
1872 return TIType(gvn, TIType::UINT64, -2, -2);
1873 }
1874 case TIType::UINT8 :
1875 {
1876 if (in0.rows == 1 && in0.cols == 1)
1877 {
1878 return in1;
1879 }
1880 if (in1.rows == 1 && in1.cols == 1)
1881 {
1882 return in0;
1883 }
1884 if (in1.rows == in0.rows && in1.cols == in0.cols)
1885 {
1886 return in0;
1887 }
1888 return TIType(gvn, TIType::UINT8, -2, -2);
1889 }
1890 default :
1891 return TIType(gvn);
1892 }
1893 }
1894 default :
1895 return TIType(gvn);
1896 }
1897 }
1898
1899 } // namespace analysis