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_____oror____(GVN & gvn,const TIType & in0,const TIType & in1)22 TIType Checkers::check_____oror____(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::BOOLEAN :
31                 {
32                     return TIType(gvn, TIType::BOOLEAN, 1, 1);
33                 }
34                 case TIType::COMPLEX :
35                 {
36                     return TIType(gvn, TIType::BOOLEAN, 1, 1);
37                 }
38                 case TIType::DOUBLE :
39                 {
40                     return TIType(gvn, TIType::BOOLEAN, 1, 1);
41                 }
42                 default :
43                     return TIType(gvn);
44             }
45         }
46         case TIType::BOOLEAN :
47         {
48             switch (in1.type)
49             {
50                 case TIType::EMPTY :
51                 {
52                     return TIType(gvn, TIType::BOOLEAN, 1, 1);
53                 }
54                 case TIType::BOOLEAN :
55                 {
56                     if (in0.rows == 1 && in0.cols == 1)
57                     {
58                         return in1;
59                     }
60                     if (in1.rows == 1 && in1.cols == 1)
61                     {
62                         return in0;
63                     }
64                     if (in1.rows == in0.rows && in1.cols == in0.cols)
65                     {
66                         return in0;
67                     }
68                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
69                 }
70                 case TIType::COMPLEX :
71                 {
72                     if (in0.rows == 1 && in0.cols == 1)
73                     {
74                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
75                     }
76                     if (in1.rows == 1 && in1.cols == 1)
77                     {
78                         return in0;
79                     }
80                     if (in1.rows == in0.rows && in1.cols == in0.cols)
81                     {
82                         return in0;
83                     }
84                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
85                 }
86                 case TIType::DOUBLE :
87                 {
88                     if (in0.rows == 1 && in0.cols == 1)
89                     {
90                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
91                     }
92                     if (in1.rows == 1 && in1.cols == 1)
93                     {
94                         return in0;
95                     }
96                     if (in1.rows == in0.rows && in1.cols == in0.cols)
97                     {
98                         return in0;
99                     }
100                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
101                 }
102                 default :
103                     return TIType(gvn);
104             }
105         }
106         case TIType::COMPLEX :
107         {
108             switch (in1.type)
109             {
110                 case TIType::EMPTY :
111                 {
112                     return TIType(gvn, TIType::BOOLEAN, 1, 1);
113                 }
114                 case TIType::BOOLEAN :
115                 {
116                     if (in0.rows == 1 && in0.cols == 1)
117                     {
118                         return in1;
119                     }
120                     if (in1.rows == 1 && in1.cols == 1)
121                     {
122                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
123                     }
124                     if (in1.rows == in0.rows && in1.cols == in0.cols)
125                     {
126                         return in1;
127                     }
128                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
129                 }
130                 case TIType::COMPLEX :
131                 {
132                     if (in0.rows == 1 && in0.cols == 1)
133                     {
134                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
135                     }
136                     if (in1.rows == 1 && in1.cols == 1)
137                     {
138                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
139                     }
140                     if (in1.rows == in0.rows && in1.cols == in0.cols)
141                     {
142                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
143                     }
144                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
145                 }
146                 case TIType::DOUBLE :
147                 {
148                     if (in0.rows == 1 && in0.cols == 1)
149                     {
150                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
151                     }
152                     if (in1.rows == 1 && in1.cols == 1)
153                     {
154                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
155                     }
156                     if (in1.rows == in0.rows && in1.cols == in0.cols)
157                     {
158                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
159                     }
160                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
161                 }
162                 default :
163                     return TIType(gvn);
164             }
165         }
166         case TIType::DOUBLE :
167         {
168             switch (in1.type)
169             {
170                 case TIType::EMPTY :
171                 {
172                     return TIType(gvn, TIType::BOOLEAN, 1, 1);
173                 }
174                 case TIType::BOOLEAN :
175                 {
176                     if (in0.rows == 1 && in0.cols == 1)
177                     {
178                         return in1;
179                     }
180                     if (in1.rows == 1 && in1.cols == 1)
181                     {
182                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
183                     }
184                     if (in1.rows == in0.rows && in1.cols == in0.cols)
185                     {
186                         return in1;
187                     }
188                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
189                 }
190                 case TIType::COMPLEX :
191                 {
192                     if (in0.rows == 1 && in0.cols == 1)
193                     {
194                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
195                     }
196                     if (in1.rows == 1 && in1.cols == 1)
197                     {
198                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
199                     }
200                     if (in1.rows == in0.rows && in1.cols == in0.cols)
201                     {
202                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
203                     }
204                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
205                 }
206                 case TIType::DOUBLE :
207                 {
208                     if (in0.rows == 1 && in0.cols == 1)
209                     {
210                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
211                     }
212                     if (in1.rows == 1 && in1.cols == 1)
213                     {
214                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
215                     }
216                     if (in1.rows == in0.rows && in1.cols == in0.cols)
217                     {
218                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
219                     }
220                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
221                 }
222                 default :
223                     return TIType(gvn);
224             }
225         }
226         case TIType::INT16 :
227         {
228             switch (in1.type)
229             {
230                 case TIType::INT16 :
231                 {
232                     if (in0.rows == 1 && in0.cols == 1)
233                     {
234                         return in1;
235                     }
236                     if (in1.rows == 1 && in1.cols == 1)
237                     {
238                         return in0;
239                     }
240                     if (in1.rows == in0.rows && in1.cols == in0.cols)
241                     {
242                         return in0;
243                     }
244                     return TIType(gvn, TIType::INT16, -2, -2);
245                 }
246                 case TIType::INT32 :
247                 {
248                     if (in0.rows == 1 && in0.cols == 1)
249                     {
250                         return in1;
251                     }
252                     if (in1.rows == 1 && in1.cols == 1)
253                     {
254                         return TIType(gvn, TIType::INT32, in0.rows, in0.cols);
255                     }
256                     if (in1.rows == in0.rows && in1.cols == in0.cols)
257                     {
258                         return in1;
259                     }
260                     return TIType(gvn, TIType::INT32, -2, -2);
261                 }
262                 case TIType::INT64 :
263                 {
264                     if (in0.rows == 1 && in0.cols == 1)
265                     {
266                         return in1;
267                     }
268                     if (in1.rows == 1 && in1.cols == 1)
269                     {
270                         return TIType(gvn, TIType::INT64, in0.rows, in0.cols);
271                     }
272                     if (in1.rows == in0.rows && in1.cols == in0.cols)
273                     {
274                         return in1;
275                     }
276                     return TIType(gvn, TIType::INT64, -2, -2);
277                 }
278                 case TIType::INT8 :
279                 {
280                     if (in0.rows == 1 && in0.cols == 1)
281                     {
282                         return TIType(gvn, TIType::INT16, 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::INT16, -2, -2);
293                 }
294                 case TIType::UINT16 :
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 TIType(gvn, TIType::UINT16, in0.rows, in0.cols);
303                     }
304                     if (in1.rows == in0.rows && in1.cols == in0.cols)
305                     {
306                         return in1;
307                     }
308                     return TIType(gvn, TIType::UINT16, -2, -2);
309                 }
310                 case TIType::UINT32 :
311                 {
312                     if (in0.rows == 1 && in0.cols == 1)
313                     {
314                         return in1;
315                     }
316                     if (in1.rows == 1 && in1.cols == 1)
317                     {
318                         return TIType(gvn, TIType::UINT32, in0.rows, in0.cols);
319                     }
320                     if (in1.rows == in0.rows && in1.cols == in0.cols)
321                     {
322                         return in1;
323                     }
324                     return TIType(gvn, TIType::UINT32, -2, -2);
325                 }
326                 case TIType::UINT64 :
327                 {
328                     if (in0.rows == 1 && in0.cols == 1)
329                     {
330                         return in1;
331                     }
332                     if (in1.rows == 1 && in1.cols == 1)
333                     {
334                         return TIType(gvn, TIType::UINT64, in0.rows, in0.cols);
335                     }
336                     if (in1.rows == in0.rows && in1.cols == in0.cols)
337                     {
338                         return in1;
339                     }
340                     return TIType(gvn, TIType::UINT64, -2, -2);
341                 }
342                 case TIType::UINT8 :
343                 {
344                     if (in0.rows == 1 && in0.cols == 1)
345                     {
346                         return TIType(gvn, TIType::UINT16, in1.rows, in1.cols);
347                     }
348                     if (in1.rows == 1 && in1.cols == 1)
349                     {
350                         return TIType(gvn, TIType::UINT16, in0.rows, in0.cols);
351                     }
352                     if (in1.rows == in0.rows && in1.cols == in0.cols)
353                     {
354                         return TIType(gvn, TIType::UINT16, in0.rows, in0.cols);
355                     }
356                     return TIType(gvn, TIType::UINT16, -2, -2);
357                 }
358                 default :
359                     return TIType(gvn);
360             }
361         }
362         case TIType::INT32 :
363         {
364             switch (in1.type)
365             {
366                 case TIType::INT16 :
367                 {
368                     if (in0.rows == 1 && in0.cols == 1)
369                     {
370                         return TIType(gvn, TIType::INT32, in1.rows, in1.cols);
371                     }
372                     if (in1.rows == 1 && in1.cols == 1)
373                     {
374                         return in0;
375                     }
376                     if (in1.rows == in0.rows && in1.cols == in0.cols)
377                     {
378                         return in0;
379                     }
380                     return TIType(gvn, TIType::INT32, -2, -2);
381                 }
382                 case TIType::INT32 :
383                 {
384                     if (in0.rows == 1 && in0.cols == 1)
385                     {
386                         return in1;
387                     }
388                     if (in1.rows == 1 && in1.cols == 1)
389                     {
390                         return in0;
391                     }
392                     if (in1.rows == in0.rows && in1.cols == in0.cols)
393                     {
394                         return in0;
395                     }
396                     return TIType(gvn, TIType::INT32, -2, -2);
397                 }
398                 case TIType::INT64 :
399                 {
400                     if (in0.rows == 1 && in0.cols == 1)
401                     {
402                         return in1;
403                     }
404                     if (in1.rows == 1 && in1.cols == 1)
405                     {
406                         return TIType(gvn, TIType::INT64, in0.rows, in0.cols);
407                     }
408                     if (in1.rows == in0.rows && in1.cols == in0.cols)
409                     {
410                         return in1;
411                     }
412                     return TIType(gvn, TIType::INT64, -2, -2);
413                 }
414                 case TIType::INT8 :
415                 {
416                     if (in0.rows == 1 && in0.cols == 1)
417                     {
418                         return TIType(gvn, TIType::INT32, in1.rows, in1.cols);
419                     }
420                     if (in1.rows == 1 && in1.cols == 1)
421                     {
422                         return in0;
423                     }
424                     if (in1.rows == in0.rows && in1.cols == in0.cols)
425                     {
426                         return in0;
427                     }
428                     return TIType(gvn, TIType::INT32, -2, -2);
429                 }
430                 case TIType::UINT16 :
431                 {
432                     if (in0.rows == 1 && in0.cols == 1)
433                     {
434                         return TIType(gvn, TIType::UINT32, in1.rows, in1.cols);
435                     }
436                     if (in1.rows == 1 && in1.cols == 1)
437                     {
438                         return TIType(gvn, TIType::UINT32, in0.rows, in0.cols);
439                     }
440                     if (in1.rows == in0.rows && in1.cols == in0.cols)
441                     {
442                         return TIType(gvn, TIType::UINT32, in0.rows, in0.cols);
443                     }
444                     return TIType(gvn, TIType::UINT32, -2, -2);
445                 }
446                 case TIType::UINT32 :
447                 {
448                     if (in0.rows == 1 && in0.cols == 1)
449                     {
450                         return in1;
451                     }
452                     if (in1.rows == 1 && in1.cols == 1)
453                     {
454                         return TIType(gvn, TIType::UINT32, in0.rows, in0.cols);
455                     }
456                     if (in1.rows == in0.rows && in1.cols == in0.cols)
457                     {
458                         return in1;
459                     }
460                     return TIType(gvn, TIType::UINT32, -2, -2);
461                 }
462                 case TIType::UINT64 :
463                 {
464                     if (in0.rows == 1 && in0.cols == 1)
465                     {
466                         return in1;
467                     }
468                     if (in1.rows == 1 && in1.cols == 1)
469                     {
470                         return TIType(gvn, TIType::UINT64, in0.rows, in0.cols);
471                     }
472                     if (in1.rows == in0.rows && in1.cols == in0.cols)
473                     {
474                         return in1;
475                     }
476                     return TIType(gvn, TIType::UINT64, -2, -2);
477                 }
478                 case TIType::UINT8 :
479                 {
480                     if (in0.rows == 1 && in0.cols == 1)
481                     {
482                         return TIType(gvn, TIType::UINT32, in1.rows, in1.cols);
483                     }
484                     if (in1.rows == 1 && in1.cols == 1)
485                     {
486                         return TIType(gvn, TIType::UINT32, in0.rows, in0.cols);
487                     }
488                     if (in1.rows == in0.rows && in1.cols == in0.cols)
489                     {
490                         return TIType(gvn, TIType::UINT32, in0.rows, in0.cols);
491                     }
492                     return TIType(gvn, TIType::UINT32, -2, -2);
493                 }
494                 default :
495                     return TIType(gvn);
496             }
497         }
498         case TIType::INT64 :
499         {
500             switch (in1.type)
501             {
502                 case TIType::INT16 :
503                 {
504                     if (in0.rows == 1 && in0.cols == 1)
505                     {
506                         return TIType(gvn, TIType::INT64, in1.rows, in1.cols);
507                     }
508                     if (in1.rows == 1 && in1.cols == 1)
509                     {
510                         return in0;
511                     }
512                     if (in1.rows == in0.rows && in1.cols == in0.cols)
513                     {
514                         return in0;
515                     }
516                     return TIType(gvn, TIType::INT64, -2, -2);
517                 }
518                 case TIType::INT32 :
519                 {
520                     if (in0.rows == 1 && in0.cols == 1)
521                     {
522                         return TIType(gvn, TIType::INT64, in1.rows, in1.cols);
523                     }
524                     if (in1.rows == 1 && in1.cols == 1)
525                     {
526                         return in0;
527                     }
528                     if (in1.rows == in0.rows && in1.cols == in0.cols)
529                     {
530                         return in0;
531                     }
532                     return TIType(gvn, TIType::INT64, -2, -2);
533                 }
534                 case TIType::INT64 :
535                 {
536                     if (in0.rows == 1 && in0.cols == 1)
537                     {
538                         return in1;
539                     }
540                     if (in1.rows == 1 && in1.cols == 1)
541                     {
542                         return in0;
543                     }
544                     if (in1.rows == in0.rows && in1.cols == in0.cols)
545                     {
546                         return in0;
547                     }
548                     return TIType(gvn, TIType::INT64, -2, -2);
549                 }
550                 case TIType::INT8 :
551                 {
552                     if (in0.rows == 1 && in0.cols == 1)
553                     {
554                         return TIType(gvn, TIType::INT64, in1.rows, in1.cols);
555                     }
556                     if (in1.rows == 1 && in1.cols == 1)
557                     {
558                         return in0;
559                     }
560                     if (in1.rows == in0.rows && in1.cols == in0.cols)
561                     {
562                         return in0;
563                     }
564                     return TIType(gvn, TIType::INT64, -2, -2);
565                 }
566                 case TIType::UINT16 :
567                 {
568                     if (in0.rows == 1 && in0.cols == 1)
569                     {
570                         return TIType(gvn, TIType::UINT64, in1.rows, in1.cols);
571                     }
572                     if (in1.rows == 1 && in1.cols == 1)
573                     {
574                         return TIType(gvn, TIType::UINT64, in0.rows, in0.cols);
575                     }
576                     if (in1.rows == in0.rows && in1.cols == in0.cols)
577                     {
578                         return TIType(gvn, TIType::UINT64, in0.rows, in0.cols);
579                     }
580                     return TIType(gvn, TIType::UINT64, -2, -2);
581                 }
582                 case TIType::UINT32 :
583                 {
584                     if (in0.rows == 1 && in0.cols == 1)
585                     {
586                         return TIType(gvn, TIType::UINT64, in1.rows, in1.cols);
587                     }
588                     if (in1.rows == 1 && in1.cols == 1)
589                     {
590                         return TIType(gvn, TIType::UINT64, in0.rows, in0.cols);
591                     }
592                     if (in1.rows == in0.rows && in1.cols == in0.cols)
593                     {
594                         return TIType(gvn, TIType::UINT64, in0.rows, in0.cols);
595                     }
596                     return TIType(gvn, TIType::UINT64, -2, -2);
597                 }
598                 case TIType::UINT64 :
599                 {
600                     if (in0.rows == 1 && in0.cols == 1)
601                     {
602                         return in1;
603                     }
604                     if (in1.rows == 1 && in1.cols == 1)
605                     {
606                         return TIType(gvn, TIType::UINT64, in0.rows, in0.cols);
607                     }
608                     if (in1.rows == in0.rows && in1.cols == in0.cols)
609                     {
610                         return in1;
611                     }
612                     return TIType(gvn, TIType::UINT64, -2, -2);
613                 }
614                 case TIType::UINT8 :
615                 {
616                     if (in0.rows == 1 && in0.cols == 1)
617                     {
618                         return TIType(gvn, TIType::UINT64, in1.rows, in1.cols);
619                     }
620                     if (in1.rows == 1 && in1.cols == 1)
621                     {
622                         return TIType(gvn, TIType::UINT64, in0.rows, in0.cols);
623                     }
624                     if (in1.rows == in0.rows && in1.cols == in0.cols)
625                     {
626                         return TIType(gvn, TIType::UINT64, in0.rows, in0.cols);
627                     }
628                     return TIType(gvn, TIType::UINT64, -2, -2);
629                 }
630                 default :
631                     return TIType(gvn);
632             }
633         }
634         case TIType::INT8 :
635         {
636             switch (in1.type)
637             {
638                 case TIType::INT16 :
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::INT16, 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::INT16, -2, -2);
653                 }
654                 case TIType::INT32 :
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::INT32, 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::INT32, -2, -2);
669                 }
670                 case TIType::INT64 :
671                 {
672                     if (in0.rows == 1 && in0.cols == 1)
673                     {
674                         return in1;
675                     }
676                     if (in1.rows == 1 && in1.cols == 1)
677                     {
678                         return TIType(gvn, TIType::INT64, in0.rows, in0.cols);
679                     }
680                     if (in1.rows == in0.rows && in1.cols == in0.cols)
681                     {
682                         return in1;
683                     }
684                     return TIType(gvn, TIType::INT64, -2, -2);
685                 }
686                 case TIType::INT8 :
687                 {
688                     if (in0.rows == 1 && in0.cols == 1)
689                     {
690                         return in1;
691                     }
692                     if (in1.rows == 1 && in1.cols == 1)
693                     {
694                         return in0;
695                     }
696                     if (in1.rows == in0.rows && in1.cols == in0.cols)
697                     {
698                         return in0;
699                     }
700                     return TIType(gvn, TIType::INT8, -2, -2);
701                 }
702                 case TIType::UINT16 :
703                 {
704                     if (in0.rows == 1 && in0.cols == 1)
705                     {
706                         return in1;
707                     }
708                     if (in1.rows == 1 && in1.cols == 1)
709                     {
710                         return TIType(gvn, TIType::UINT16, in0.rows, in0.cols);
711                     }
712                     if (in1.rows == in0.rows && in1.cols == in0.cols)
713                     {
714                         return in1;
715                     }
716                     return TIType(gvn, TIType::UINT16, -2, -2);
717                 }
718                 case TIType::UINT32 :
719                 {
720                     if (in0.rows == 1 && in0.cols == 1)
721                     {
722                         return in1;
723                     }
724                     if (in1.rows == 1 && in1.cols == 1)
725                     {
726                         return TIType(gvn, TIType::UINT32, in0.rows, in0.cols);
727                     }
728                     if (in1.rows == in0.rows && in1.cols == in0.cols)
729                     {
730                         return in1;
731                     }
732                     return TIType(gvn, TIType::UINT32, -2, -2);
733                 }
734                 case TIType::UINT64 :
735                 {
736                     if (in0.rows == 1 && in0.cols == 1)
737                     {
738                         return in1;
739                     }
740                     if (in1.rows == 1 && in1.cols == 1)
741                     {
742                         return TIType(gvn, TIType::UINT64, in0.rows, in0.cols);
743                     }
744                     if (in1.rows == in0.rows && in1.cols == in0.cols)
745                     {
746                         return in1;
747                     }
748                     return TIType(gvn, TIType::UINT64, -2, -2);
749                 }
750                 case TIType::UINT8 :
751                 {
752                     if (in0.rows == 1 && in0.cols == 1)
753                     {
754                         return in1;
755                     }
756                     if (in1.rows == 1 && in1.cols == 1)
757                     {
758                         return TIType(gvn, TIType::UINT8, in0.rows, in0.cols);
759                     }
760                     if (in1.rows == in0.rows && in1.cols == in0.cols)
761                     {
762                         return in1;
763                     }
764                     return TIType(gvn, TIType::UINT8, -2, -2);
765                 }
766                 default :
767                     return TIType(gvn);
768             }
769         }
770         case TIType::UINT16 :
771         {
772             switch (in1.type)
773             {
774                 case TIType::INT16 :
775                 {
776                     if (in0.rows == 1 && in0.cols == 1)
777                     {
778                         return TIType(gvn, TIType::UINT16, in1.rows, in1.cols);
779                     }
780                     if (in1.rows == 1 && in1.cols == 1)
781                     {
782                         return in0;
783                     }
784                     if (in1.rows == in0.rows && in1.cols == in0.cols)
785                     {
786                         return in0;
787                     }
788                     return TIType(gvn, TIType::UINT16, -2, -2);
789                 }
790                 case TIType::INT32 :
791                 {
792                     if (in0.rows == 1 && in0.cols == 1)
793                     {
794                         return TIType(gvn, TIType::UINT32, in1.rows, in1.cols);
795                     }
796                     if (in1.rows == 1 && in1.cols == 1)
797                     {
798                         return TIType(gvn, TIType::UINT32, in0.rows, in0.cols);
799                     }
800                     if (in1.rows == in0.rows && in1.cols == in0.cols)
801                     {
802                         return TIType(gvn, TIType::UINT32, in0.rows, in0.cols);
803                     }
804                     return TIType(gvn, TIType::UINT32, -2, -2);
805                 }
806                 case TIType::INT64 :
807                 {
808                     if (in0.rows == 1 && in0.cols == 1)
809                     {
810                         return TIType(gvn, TIType::UINT64, in1.rows, in1.cols);
811                     }
812                     if (in1.rows == 1 && in1.cols == 1)
813                     {
814                         return TIType(gvn, TIType::UINT64, in0.rows, in0.cols);
815                     }
816                     if (in1.rows == in0.rows && in1.cols == in0.cols)
817                     {
818                         return TIType(gvn, TIType::UINT64, in0.rows, in0.cols);
819                     }
820                     return TIType(gvn, TIType::UINT64, -2, -2);
821                 }
822                 case TIType::INT8 :
823                 {
824                     if (in0.rows == 1 && in0.cols == 1)
825                     {
826                         return TIType(gvn, TIType::UINT16, in1.rows, in1.cols);
827                     }
828                     if (in1.rows == 1 && in1.cols == 1)
829                     {
830                         return in0;
831                     }
832                     if (in1.rows == in0.rows && in1.cols == in0.cols)
833                     {
834                         return in0;
835                     }
836                     return TIType(gvn, TIType::UINT16, -2, -2);
837                 }
838                 case TIType::UINT16 :
839                 {
840                     if (in0.rows == 1 && in0.cols == 1)
841                     {
842                         return in1;
843                     }
844                     if (in1.rows == 1 && in1.cols == 1)
845                     {
846                         return in0;
847                     }
848                     if (in1.rows == in0.rows && in1.cols == in0.cols)
849                     {
850                         return in0;
851                     }
852                     return TIType(gvn, TIType::UINT16, -2, -2);
853                 }
854                 case TIType::UINT32 :
855                 {
856                     if (in0.rows == 1 && in0.cols == 1)
857                     {
858                         return in1;
859                     }
860                     if (in1.rows == 1 && in1.cols == 1)
861                     {
862                         return TIType(gvn, TIType::UINT32, in0.rows, in0.cols);
863                     }
864                     if (in1.rows == in0.rows && in1.cols == in0.cols)
865                     {
866                         return in1;
867                     }
868                     return TIType(gvn, TIType::UINT32, -2, -2);
869                 }
870                 case TIType::UINT64 :
871                 {
872                     if (in0.rows == 1 && in0.cols == 1)
873                     {
874                         return in1;
875                     }
876                     if (in1.rows == 1 && in1.cols == 1)
877                     {
878                         return TIType(gvn, TIType::UINT64, in0.rows, in0.cols);
879                     }
880                     if (in1.rows == in0.rows && in1.cols == in0.cols)
881                     {
882                         return in1;
883                     }
884                     return TIType(gvn, TIType::UINT64, -2, -2);
885                 }
886                 case TIType::UINT8 :
887                 {
888                     if (in0.rows == 1 && in0.cols == 1)
889                     {
890                         return TIType(gvn, TIType::UINT16, 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::UINT16, -2, -2);
901                 }
902                 default :
903                     return TIType(gvn);
904             }
905         }
906         case TIType::UINT32 :
907         {
908             switch (in1.type)
909             {
910                 case TIType::INT16 :
911                 {
912                     if (in0.rows == 1 && in0.cols == 1)
913                     {
914                         return TIType(gvn, TIType::UINT32, in1.rows, in1.cols);
915                     }
916                     if (in1.rows == 1 && in1.cols == 1)
917                     {
918                         return in0;
919                     }
920                     if (in1.rows == in0.rows && in1.cols == in0.cols)
921                     {
922                         return in0;
923                     }
924                     return TIType(gvn, TIType::UINT32, -2, -2);
925                 }
926                 case TIType::INT32 :
927                 {
928                     if (in0.rows == 1 && in0.cols == 1)
929                     {
930                         return TIType(gvn, TIType::UINT32, in1.rows, in1.cols);
931                     }
932                     if (in1.rows == 1 && in1.cols == 1)
933                     {
934                         return in0;
935                     }
936                     if (in1.rows == in0.rows && in1.cols == in0.cols)
937                     {
938                         return in0;
939                     }
940                     return TIType(gvn, TIType::UINT32, -2, -2);
941                 }
942                 case TIType::INT64 :
943                 {
944                     if (in0.rows == 1 && in0.cols == 1)
945                     {
946                         return TIType(gvn, TIType::UINT64, in1.rows, in1.cols);
947                     }
948                     if (in1.rows == 1 && in1.cols == 1)
949                     {
950                         return TIType(gvn, TIType::UINT64, in0.rows, in0.cols);
951                     }
952                     if (in1.rows == in0.rows && in1.cols == in0.cols)
953                     {
954                         return TIType(gvn, TIType::UINT64, in0.rows, in0.cols);
955                     }
956                     return TIType(gvn, TIType::UINT64, -2, -2);
957                 }
958                 case TIType::INT8 :
959                 {
960                     if (in0.rows == 1 && in0.cols == 1)
961                     {
962                         return TIType(gvn, TIType::UINT32, in1.rows, in1.cols);
963                     }
964                     if (in1.rows == 1 && in1.cols == 1)
965                     {
966                         return in0;
967                     }
968                     if (in1.rows == in0.rows && in1.cols == in0.cols)
969                     {
970                         return in0;
971                     }
972                     return TIType(gvn, TIType::UINT32, -2, -2);
973                 }
974                 case TIType::UINT16 :
975                 {
976                     if (in0.rows == 1 && in0.cols == 1)
977                     {
978                         return TIType(gvn, TIType::UINT32, in1.rows, in1.cols);
979                     }
980                     if (in1.rows == 1 && in1.cols == 1)
981                     {
982                         return in0;
983                     }
984                     if (in1.rows == in0.rows && in1.cols == in0.cols)
985                     {
986                         return in0;
987                     }
988                     return TIType(gvn, TIType::UINT32, -2, -2);
989                 }
990                 case TIType::UINT32 :
991                 {
992                     if (in0.rows == 1 && in0.cols == 1)
993                     {
994                         return in1;
995                     }
996                     if (in1.rows == 1 && in1.cols == 1)
997                     {
998                         return in0;
999                     }
1000                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1001                     {
1002                         return in0;
1003                     }
1004                     return TIType(gvn, TIType::UINT32, -2, -2);
1005                 }
1006                 case TIType::UINT64 :
1007                 {
1008                     if (in0.rows == 1 && in0.cols == 1)
1009                     {
1010                         return in1;
1011                     }
1012                     if (in1.rows == 1 && in1.cols == 1)
1013                     {
1014                         return TIType(gvn, TIType::UINT64, in0.rows, in0.cols);
1015                     }
1016                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1017                     {
1018                         return in1;
1019                     }
1020                     return TIType(gvn, TIType::UINT64, -2, -2);
1021                 }
1022                 case TIType::UINT8 :
1023                 {
1024                     if (in0.rows == 1 && in0.cols == 1)
1025                     {
1026                         return TIType(gvn, TIType::UINT32, in1.rows, in1.cols);
1027                     }
1028                     if (in1.rows == 1 && in1.cols == 1)
1029                     {
1030                         return in0;
1031                     }
1032                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1033                     {
1034                         return in0;
1035                     }
1036                     return TIType(gvn, TIType::UINT32, -2, -2);
1037                 }
1038                 default :
1039                     return TIType(gvn);
1040             }
1041         }
1042         case TIType::UINT64 :
1043         {
1044             switch (in1.type)
1045             {
1046                 case TIType::INT16 :
1047                 {
1048                     if (in0.rows == 1 && in0.cols == 1)
1049                     {
1050                         return TIType(gvn, TIType::UINT64, in1.rows, in1.cols);
1051                     }
1052                     if (in1.rows == 1 && in1.cols == 1)
1053                     {
1054                         return in0;
1055                     }
1056                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1057                     {
1058                         return in0;
1059                     }
1060                     return TIType(gvn, TIType::UINT64, -2, -2);
1061                 }
1062                 case TIType::INT32 :
1063                 {
1064                     if (in0.rows == 1 && in0.cols == 1)
1065                     {
1066                         return TIType(gvn, TIType::UINT64, in1.rows, in1.cols);
1067                     }
1068                     if (in1.rows == 1 && in1.cols == 1)
1069                     {
1070                         return in0;
1071                     }
1072                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1073                     {
1074                         return in0;
1075                     }
1076                     return TIType(gvn, TIType::UINT64, -2, -2);
1077                 }
1078                 case TIType::INT64 :
1079                 {
1080                     if (in0.rows == 1 && in0.cols == 1)
1081                     {
1082                         return TIType(gvn, TIType::UINT64, in1.rows, in1.cols);
1083                     }
1084                     if (in1.rows == 1 && in1.cols == 1)
1085                     {
1086                         return in0;
1087                     }
1088                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1089                     {
1090                         return in0;
1091                     }
1092                     return TIType(gvn, TIType::UINT64, -2, -2);
1093                 }
1094                 case TIType::INT8 :
1095                 {
1096                     if (in0.rows == 1 && in0.cols == 1)
1097                     {
1098                         return TIType(gvn, TIType::UINT64, in1.rows, in1.cols);
1099                     }
1100                     if (in1.rows == 1 && in1.cols == 1)
1101                     {
1102                         return in0;
1103                     }
1104                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1105                     {
1106                         return in0;
1107                     }
1108                     return TIType(gvn, TIType::UINT64, -2, -2);
1109                 }
1110                 case TIType::UINT16 :
1111                 {
1112                     if (in0.rows == 1 && in0.cols == 1)
1113                     {
1114                         return TIType(gvn, TIType::UINT64, in1.rows, in1.cols);
1115                     }
1116                     if (in1.rows == 1 && in1.cols == 1)
1117                     {
1118                         return in0;
1119                     }
1120                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1121                     {
1122                         return in0;
1123                     }
1124                     return TIType(gvn, TIType::UINT64, -2, -2);
1125                 }
1126                 case TIType::UINT32 :
1127                 {
1128                     if (in0.rows == 1 && in0.cols == 1)
1129                     {
1130                         return TIType(gvn, TIType::UINT64, in1.rows, in1.cols);
1131                     }
1132                     if (in1.rows == 1 && in1.cols == 1)
1133                     {
1134                         return in0;
1135                     }
1136                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1137                     {
1138                         return in0;
1139                     }
1140                     return TIType(gvn, TIType::UINT64, -2, -2);
1141                 }
1142                 case TIType::UINT64 :
1143                 {
1144                     if (in0.rows == 1 && in0.cols == 1)
1145                     {
1146                         return in1;
1147                     }
1148                     if (in1.rows == 1 && in1.cols == 1)
1149                     {
1150                         return in0;
1151                     }
1152                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1153                     {
1154                         return in0;
1155                     }
1156                     return TIType(gvn, TIType::UINT64, -2, -2);
1157                 }
1158                 case TIType::UINT8 :
1159                 {
1160                     if (in0.rows == 1 && in0.cols == 1)
1161                     {
1162                         return TIType(gvn, TIType::UINT64, in1.rows, in1.cols);
1163                     }
1164                     if (in1.rows == 1 && in1.cols == 1)
1165                     {
1166                         return in0;
1167                     }
1168                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1169                     {
1170                         return in0;
1171                     }
1172                     return TIType(gvn, TIType::UINT64, -2, -2);
1173                 }
1174                 default :
1175                     return TIType(gvn);
1176             }
1177         }
1178         case TIType::UINT8 :
1179         {
1180             switch (in1.type)
1181             {
1182                 case TIType::INT16 :
1183                 {
1184                     if (in0.rows == 1 && in0.cols == 1)
1185                     {
1186                         return TIType(gvn, TIType::UINT16, in1.rows, in1.cols);
1187                     }
1188                     if (in1.rows == 1 && in1.cols == 1)
1189                     {
1190                         return TIType(gvn, TIType::UINT16, in0.rows, in0.cols);
1191                     }
1192                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1193                     {
1194                         return TIType(gvn, TIType::UINT16, in0.rows, in0.cols);
1195                     }
1196                     return TIType(gvn, TIType::UINT16, -2, -2);
1197                 }
1198                 case TIType::INT32 :
1199                 {
1200                     if (in0.rows == 1 && in0.cols == 1)
1201                     {
1202                         return TIType(gvn, TIType::UINT32, in1.rows, in1.cols);
1203                     }
1204                     if (in1.rows == 1 && in1.cols == 1)
1205                     {
1206                         return TIType(gvn, TIType::UINT32, in0.rows, in0.cols);
1207                     }
1208                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1209                     {
1210                         return TIType(gvn, TIType::UINT32, in0.rows, in0.cols);
1211                     }
1212                     return TIType(gvn, TIType::UINT32, -2, -2);
1213                 }
1214                 case TIType::INT64 :
1215                 {
1216                     if (in0.rows == 1 && in0.cols == 1)
1217                     {
1218                         return TIType(gvn, TIType::UINT64, in1.rows, in1.cols);
1219                     }
1220                     if (in1.rows == 1 && in1.cols == 1)
1221                     {
1222                         return TIType(gvn, TIType::UINT64, in0.rows, in0.cols);
1223                     }
1224                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1225                     {
1226                         return TIType(gvn, TIType::UINT64, in0.rows, in0.cols);
1227                     }
1228                     return TIType(gvn, TIType::UINT64, -2, -2);
1229                 }
1230                 case TIType::INT8 :
1231                 {
1232                     if (in0.rows == 1 && in0.cols == 1)
1233                     {
1234                         return TIType(gvn, TIType::UINT8, 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::UINT8, -2, -2);
1245                 }
1246                 case TIType::UINT16 :
1247                 {
1248                     if (in0.rows == 1 && in0.cols == 1)
1249                     {
1250                         return in1;
1251                     }
1252                     if (in1.rows == 1 && in1.cols == 1)
1253                     {
1254                         return TIType(gvn, TIType::UINT16, in0.rows, in0.cols);
1255                     }
1256                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1257                     {
1258                         return in1;
1259                     }
1260                     return TIType(gvn, TIType::UINT16, -2, -2);
1261                 }
1262                 case TIType::UINT32 :
1263                 {
1264                     if (in0.rows == 1 && in0.cols == 1)
1265                     {
1266                         return in1;
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 in1;
1275                     }
1276                     return TIType(gvn, TIType::UINT32, -2, -2);
1277                 }
1278                 case TIType::UINT64 :
1279                 {
1280                     if (in0.rows == 1 && in0.cols == 1)
1281                     {
1282                         return in1;
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 in1;
1291                     }
1292                     return TIType(gvn, TIType::UINT64, -2, -2);
1293                 }
1294                 case TIType::UINT8 :
1295                 {
1296                     if (in0.rows == 1 && in0.cols == 1)
1297                     {
1298                         return in1;
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::UINT8, -2, -2);
1309                 }
1310                 default :
1311                     return TIType(gvn);
1312             }
1313         }
1314         default :
1315             return TIType(gvn);
1316     }
1317 }
1318 
1319 } // namespace analysis