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