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_____lt____(GVN & gvn,const TIType & in0,const TIType & in1)22 TIType Checkers::check_____lt____(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 TIType(gvn, TIType::BOOLEAN, 1, 1);
33                 }
34                 case TIType::DOUBLE :
35                 {
36                     if (in1.rows == 1 && in1.cols == 1)
37                     {
38                         return TIType(gvn, TIType::BOOLEAN, 1, 1);
39                     }
40                     return TIType(gvn);
41                 }
42                 case TIType::INT16 :
43                 {
44                     if (in1.rows == 1 && in1.cols == 1)
45                     {
46                         return TIType(gvn, TIType::BOOLEAN, 1, 1);
47                     }
48                     return TIType(gvn);
49                 }
50                 case TIType::INT32 :
51                 {
52                     if (in1.rows == 1 && in1.cols == 1)
53                     {
54                         return TIType(gvn, TIType::BOOLEAN, 1, 1);
55                     }
56                     return TIType(gvn);
57                 }
58                 case TIType::INT64 :
59                 {
60                     if (in1.rows == 1 && in1.cols == 1)
61                     {
62                         return TIType(gvn, TIType::BOOLEAN, 1, 1);
63                     }
64                     return TIType(gvn);
65                 }
66                 case TIType::INT8 :
67                 {
68                     if (in1.rows == 1 && in1.cols == 1)
69                     {
70                         return TIType(gvn, TIType::BOOLEAN, 1, 1);
71                     }
72                     return TIType(gvn);
73                 }
74                 case TIType::UINT16 :
75                 {
76                     if (in1.rows == 1 && in1.cols == 1)
77                     {
78                         return TIType(gvn, TIType::BOOLEAN, 1, 1);
79                     }
80                     return TIType(gvn);
81                 }
82                 case TIType::UINT32 :
83                 {
84                     if (in1.rows == 1 && in1.cols == 1)
85                     {
86                         return TIType(gvn, TIType::BOOLEAN, 1, 1);
87                     }
88                     return TIType(gvn);
89                 }
90                 case TIType::UINT64 :
91                 {
92                     if (in1.rows == 1 && in1.cols == 1)
93                     {
94                         return TIType(gvn, TIType::BOOLEAN, 1, 1);
95                     }
96                     return TIType(gvn);
97                 }
98                 case TIType::UINT8 :
99                 {
100                     if (in1.rows == 1 && in1.cols == 1)
101                     {
102                         return TIType(gvn, TIType::BOOLEAN, 1, 1);
103                     }
104                     return TIType(gvn);
105                 }
106                 default :
107                     return TIType(gvn);
108             }
109         }
110         case TIType::DOUBLE :
111         {
112             switch (in1.type)
113             {
114                 case TIType::EMPTY :
115                 {
116                     if (in0.rows == 1 && in0.cols == 1)
117                     {
118                         return TIType(gvn, TIType::BOOLEAN, 1, 1);
119                     }
120                     return TIType(gvn);
121                 }
122                 case TIType::DOUBLE :
123                 {
124                     if (in0.rows == 1 && in0.cols == 1)
125                     {
126                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
127                     }
128                     if (in1.rows == 1 && in1.cols == 1)
129                     {
130                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
131                     }
132                     if (in1.rows == in0.rows && in1.cols == in0.cols)
133                     {
134                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
135                     }
136                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
137                 }
138                 case TIType::INT16 :
139                 {
140                     if (in0.rows == 1 && in0.cols == 1)
141                     {
142                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
143                     }
144                     if (in1.rows == 1 && in1.cols == 1)
145                     {
146                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
147                     }
148                     if (in1.rows == in0.rows && in1.cols == in0.cols)
149                     {
150                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
151                     }
152                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
153                 }
154                 case TIType::INT32 :
155                 {
156                     if (in0.rows == 1 && in0.cols == 1)
157                     {
158                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
159                     }
160                     if (in1.rows == 1 && in1.cols == 1)
161                     {
162                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
163                     }
164                     if (in1.rows == in0.rows && in1.cols == in0.cols)
165                     {
166                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
167                     }
168                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
169                 }
170                 case TIType::INT64 :
171                 {
172                     if (in0.rows == 1 && in0.cols == 1)
173                     {
174                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
175                     }
176                     if (in1.rows == 1 && in1.cols == 1)
177                     {
178                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
179                     }
180                     if (in1.rows == in0.rows && in1.cols == in0.cols)
181                     {
182                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
183                     }
184                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
185                 }
186                 case TIType::INT8 :
187                 {
188                     if (in0.rows == 1 && in0.cols == 1)
189                     {
190                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
191                     }
192                     if (in1.rows == 1 && in1.cols == 1)
193                     {
194                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
195                     }
196                     if (in1.rows == in0.rows && in1.cols == in0.cols)
197                     {
198                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
199                     }
200                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
201                 }
202                 case TIType::UINT16 :
203                 {
204                     if (in0.rows == 1 && in0.cols == 1)
205                     {
206                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
207                     }
208                     if (in1.rows == 1 && in1.cols == 1)
209                     {
210                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
211                     }
212                     if (in1.rows == in0.rows && in1.cols == in0.cols)
213                     {
214                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
215                     }
216                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
217                 }
218                 case TIType::UINT32 :
219                 {
220                     if (in0.rows == 1 && in0.cols == 1)
221                     {
222                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
223                     }
224                     if (in1.rows == 1 && in1.cols == 1)
225                     {
226                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
227                     }
228                     if (in1.rows == in0.rows && in1.cols == in0.cols)
229                     {
230                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
231                     }
232                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
233                 }
234                 case TIType::UINT64 :
235                 {
236                     if (in0.rows == 1 && in0.cols == 1)
237                     {
238                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
239                     }
240                     if (in1.rows == 1 && in1.cols == 1)
241                     {
242                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
243                     }
244                     if (in1.rows == in0.rows && in1.cols == in0.cols)
245                     {
246                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
247                     }
248                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
249                 }
250                 case TIType::UINT8 :
251                 {
252                     if (in0.rows == 1 && in0.cols == 1)
253                     {
254                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
255                     }
256                     if (in1.rows == 1 && in1.cols == 1)
257                     {
258                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
259                     }
260                     if (in1.rows == in0.rows && in1.cols == in0.cols)
261                     {
262                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
263                     }
264                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
265                 }
266                 default :
267                     return TIType(gvn);
268             }
269         }
270         case TIType::INT16 :
271         {
272             switch (in1.type)
273             {
274                 case TIType::EMPTY :
275                 {
276                     if (in0.rows == 1 && in0.cols == 1)
277                     {
278                         return TIType(gvn, TIType::BOOLEAN, 1, 1);
279                     }
280                     return TIType(gvn);
281                 }
282                 case TIType::DOUBLE :
283                 {
284                     if (in0.rows == 1 && in0.cols == 1)
285                     {
286                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
287                     }
288                     if (in1.rows == 1 && in1.cols == 1)
289                     {
290                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
291                     }
292                     if (in1.rows == in0.rows && in1.cols == in0.cols)
293                     {
294                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
295                     }
296                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
297                 }
298                 case TIType::INT16 :
299                 {
300                     if (in0.rows == 1 && in0.cols == 1)
301                     {
302                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
303                     }
304                     if (in1.rows == 1 && in1.cols == 1)
305                     {
306                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
307                     }
308                     if (in1.rows == in0.rows && in1.cols == in0.cols)
309                     {
310                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
311                     }
312                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
313                 }
314                 case TIType::INT32 :
315                 {
316                     if (in0.rows == 1 && in0.cols == 1)
317                     {
318                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
319                     }
320                     if (in1.rows == 1 && in1.cols == 1)
321                     {
322                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
323                     }
324                     if (in1.rows == in0.rows && in1.cols == in0.cols)
325                     {
326                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
327                     }
328                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
329                 }
330                 case TIType::INT64 :
331                 {
332                     if (in0.rows == 1 && in0.cols == 1)
333                     {
334                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
335                     }
336                     if (in1.rows == 1 && in1.cols == 1)
337                     {
338                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
339                     }
340                     if (in1.rows == in0.rows && in1.cols == in0.cols)
341                     {
342                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
343                     }
344                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
345                 }
346                 case TIType::INT8 :
347                 {
348                     if (in0.rows == 1 && in0.cols == 1)
349                     {
350                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
351                     }
352                     if (in1.rows == 1 && in1.cols == 1)
353                     {
354                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
355                     }
356                     if (in1.rows == in0.rows && in1.cols == in0.cols)
357                     {
358                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
359                     }
360                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
361                 }
362                 case TIType::UINT16 :
363                 {
364                     if (in0.rows == 1 && in0.cols == 1)
365                     {
366                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
367                     }
368                     if (in1.rows == 1 && in1.cols == 1)
369                     {
370                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
371                     }
372                     if (in1.rows == in0.rows && in1.cols == in0.cols)
373                     {
374                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
375                     }
376                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
377                 }
378                 case TIType::UINT32 :
379                 {
380                     if (in0.rows == 1 && in0.cols == 1)
381                     {
382                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
383                     }
384                     if (in1.rows == 1 && in1.cols == 1)
385                     {
386                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
387                     }
388                     if (in1.rows == in0.rows && in1.cols == in0.cols)
389                     {
390                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
391                     }
392                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
393                 }
394                 case TIType::UINT64 :
395                 {
396                     if (in0.rows == 1 && in0.cols == 1)
397                     {
398                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
399                     }
400                     if (in1.rows == 1 && in1.cols == 1)
401                     {
402                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
403                     }
404                     if (in1.rows == in0.rows && in1.cols == in0.cols)
405                     {
406                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
407                     }
408                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
409                 }
410                 case TIType::UINT8 :
411                 {
412                     if (in0.rows == 1 && in0.cols == 1)
413                     {
414                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
415                     }
416                     if (in1.rows == 1 && in1.cols == 1)
417                     {
418                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
419                     }
420                     if (in1.rows == in0.rows && in1.cols == in0.cols)
421                     {
422                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
423                     }
424                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
425                 }
426                 default :
427                     return TIType(gvn);
428             }
429         }
430         case TIType::INT32 :
431         {
432             switch (in1.type)
433             {
434                 case TIType::EMPTY :
435                 {
436                     if (in0.rows == 1 && in0.cols == 1)
437                     {
438                         return TIType(gvn, TIType::BOOLEAN, 1, 1);
439                     }
440                     return TIType(gvn);
441                 }
442                 case TIType::DOUBLE :
443                 {
444                     if (in0.rows == 1 && in0.cols == 1)
445                     {
446                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
447                     }
448                     if (in1.rows == 1 && in1.cols == 1)
449                     {
450                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
451                     }
452                     if (in1.rows == in0.rows && in1.cols == in0.cols)
453                     {
454                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
455                     }
456                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
457                 }
458                 case TIType::INT16 :
459                 {
460                     if (in0.rows == 1 && in0.cols == 1)
461                     {
462                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
463                     }
464                     if (in1.rows == 1 && in1.cols == 1)
465                     {
466                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
467                     }
468                     if (in1.rows == in0.rows && in1.cols == in0.cols)
469                     {
470                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
471                     }
472                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
473                 }
474                 case TIType::INT32 :
475                 {
476                     if (in0.rows == 1 && in0.cols == 1)
477                     {
478                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
479                     }
480                     if (in1.rows == 1 && in1.cols == 1)
481                     {
482                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
483                     }
484                     if (in1.rows == in0.rows && in1.cols == in0.cols)
485                     {
486                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
487                     }
488                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
489                 }
490                 case TIType::INT64 :
491                 {
492                     if (in0.rows == 1 && in0.cols == 1)
493                     {
494                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
495                     }
496                     if (in1.rows == 1 && in1.cols == 1)
497                     {
498                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
499                     }
500                     if (in1.rows == in0.rows && in1.cols == in0.cols)
501                     {
502                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
503                     }
504                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
505                 }
506                 case TIType::INT8 :
507                 {
508                     if (in0.rows == 1 && in0.cols == 1)
509                     {
510                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
511                     }
512                     if (in1.rows == 1 && in1.cols == 1)
513                     {
514                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
515                     }
516                     if (in1.rows == in0.rows && in1.cols == in0.cols)
517                     {
518                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
519                     }
520                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
521                 }
522                 case TIType::UINT16 :
523                 {
524                     if (in0.rows == 1 && in0.cols == 1)
525                     {
526                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
527                     }
528                     if (in1.rows == 1 && in1.cols == 1)
529                     {
530                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
531                     }
532                     if (in1.rows == in0.rows && in1.cols == in0.cols)
533                     {
534                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
535                     }
536                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
537                 }
538                 case TIType::UINT32 :
539                 {
540                     if (in0.rows == 1 && in0.cols == 1)
541                     {
542                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
543                     }
544                     if (in1.rows == 1 && in1.cols == 1)
545                     {
546                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
547                     }
548                     if (in1.rows == in0.rows && in1.cols == in0.cols)
549                     {
550                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
551                     }
552                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
553                 }
554                 case TIType::UINT64 :
555                 {
556                     if (in0.rows == 1 && in0.cols == 1)
557                     {
558                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
559                     }
560                     if (in1.rows == 1 && in1.cols == 1)
561                     {
562                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
563                     }
564                     if (in1.rows == in0.rows && in1.cols == in0.cols)
565                     {
566                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
567                     }
568                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
569                 }
570                 case TIType::UINT8 :
571                 {
572                     if (in0.rows == 1 && in0.cols == 1)
573                     {
574                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
575                     }
576                     if (in1.rows == 1 && in1.cols == 1)
577                     {
578                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
579                     }
580                     if (in1.rows == in0.rows && in1.cols == in0.cols)
581                     {
582                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
583                     }
584                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
585                 }
586                 default :
587                     return TIType(gvn);
588             }
589         }
590         case TIType::INT64 :
591         {
592             switch (in1.type)
593             {
594                 case TIType::EMPTY :
595                 {
596                     if (in0.rows == 1 && in0.cols == 1)
597                     {
598                         return TIType(gvn, TIType::BOOLEAN, 1, 1);
599                     }
600                     return TIType(gvn);
601                 }
602                 case TIType::DOUBLE :
603                 {
604                     if (in0.rows == 1 && in0.cols == 1)
605                     {
606                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
607                     }
608                     if (in1.rows == 1 && in1.cols == 1)
609                     {
610                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
611                     }
612                     if (in1.rows == in0.rows && in1.cols == in0.cols)
613                     {
614                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
615                     }
616                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
617                 }
618                 case TIType::INT16 :
619                 {
620                     if (in0.rows == 1 && in0.cols == 1)
621                     {
622                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
623                     }
624                     if (in1.rows == 1 && in1.cols == 1)
625                     {
626                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
627                     }
628                     if (in1.rows == in0.rows && in1.cols == in0.cols)
629                     {
630                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
631                     }
632                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
633                 }
634                 case TIType::INT32 :
635                 {
636                     if (in0.rows == 1 && in0.cols == 1)
637                     {
638                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
639                     }
640                     if (in1.rows == 1 && in1.cols == 1)
641                     {
642                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
643                     }
644                     if (in1.rows == in0.rows && in1.cols == in0.cols)
645                     {
646                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
647                     }
648                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
649                 }
650                 case TIType::INT64 :
651                 {
652                     if (in0.rows == 1 && in0.cols == 1)
653                     {
654                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
655                     }
656                     if (in1.rows == 1 && in1.cols == 1)
657                     {
658                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
659                     }
660                     if (in1.rows == in0.rows && in1.cols == in0.cols)
661                     {
662                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
663                     }
664                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
665                 }
666                 case TIType::INT8 :
667                 {
668                     if (in0.rows == 1 && in0.cols == 1)
669                     {
670                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
671                     }
672                     if (in1.rows == 1 && in1.cols == 1)
673                     {
674                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
675                     }
676                     if (in1.rows == in0.rows && in1.cols == in0.cols)
677                     {
678                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
679                     }
680                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
681                 }
682                 case TIType::UINT16 :
683                 {
684                     if (in0.rows == 1 && in0.cols == 1)
685                     {
686                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
687                     }
688                     if (in1.rows == 1 && in1.cols == 1)
689                     {
690                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
691                     }
692                     if (in1.rows == in0.rows && in1.cols == in0.cols)
693                     {
694                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
695                     }
696                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
697                 }
698                 case TIType::UINT32 :
699                 {
700                     if (in0.rows == 1 && in0.cols == 1)
701                     {
702                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
703                     }
704                     if (in1.rows == 1 && in1.cols == 1)
705                     {
706                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
707                     }
708                     if (in1.rows == in0.rows && in1.cols == in0.cols)
709                     {
710                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
711                     }
712                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
713                 }
714                 case TIType::UINT64 :
715                 {
716                     if (in0.rows == 1 && in0.cols == 1)
717                     {
718                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
719                     }
720                     if (in1.rows == 1 && in1.cols == 1)
721                     {
722                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
723                     }
724                     if (in1.rows == in0.rows && in1.cols == in0.cols)
725                     {
726                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
727                     }
728                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
729                 }
730                 case TIType::UINT8 :
731                 {
732                     if (in0.rows == 1 && in0.cols == 1)
733                     {
734                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
735                     }
736                     if (in1.rows == 1 && in1.cols == 1)
737                     {
738                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
739                     }
740                     if (in1.rows == in0.rows && in1.cols == in0.cols)
741                     {
742                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
743                     }
744                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
745                 }
746                 default :
747                     return TIType(gvn);
748             }
749         }
750         case TIType::INT8 :
751         {
752             switch (in1.type)
753             {
754                 case TIType::EMPTY :
755                 {
756                     if (in0.rows == 1 && in0.cols == 1)
757                     {
758                         return TIType(gvn, TIType::BOOLEAN, 1, 1);
759                     }
760                     return TIType(gvn);
761                 }
762                 case TIType::DOUBLE :
763                 {
764                     if (in0.rows == 1 && in0.cols == 1)
765                     {
766                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
767                     }
768                     if (in1.rows == 1 && in1.cols == 1)
769                     {
770                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
771                     }
772                     if (in1.rows == in0.rows && in1.cols == in0.cols)
773                     {
774                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
775                     }
776                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
777                 }
778                 case TIType::INT16 :
779                 {
780                     if (in0.rows == 1 && in0.cols == 1)
781                     {
782                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
783                     }
784                     if (in1.rows == 1 && in1.cols == 1)
785                     {
786                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
787                     }
788                     if (in1.rows == in0.rows && in1.cols == in0.cols)
789                     {
790                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
791                     }
792                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
793                 }
794                 case TIType::INT32 :
795                 {
796                     if (in0.rows == 1 && in0.cols == 1)
797                     {
798                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
799                     }
800                     if (in1.rows == 1 && in1.cols == 1)
801                     {
802                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
803                     }
804                     if (in1.rows == in0.rows && in1.cols == in0.cols)
805                     {
806                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
807                     }
808                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
809                 }
810                 case TIType::INT64 :
811                 {
812                     if (in0.rows == 1 && in0.cols == 1)
813                     {
814                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
815                     }
816                     if (in1.rows == 1 && in1.cols == 1)
817                     {
818                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
819                     }
820                     if (in1.rows == in0.rows && in1.cols == in0.cols)
821                     {
822                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
823                     }
824                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
825                 }
826                 case TIType::INT8 :
827                 {
828                     if (in0.rows == 1 && in0.cols == 1)
829                     {
830                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
831                     }
832                     if (in1.rows == 1 && in1.cols == 1)
833                     {
834                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
835                     }
836                     if (in1.rows == in0.rows && in1.cols == in0.cols)
837                     {
838                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
839                     }
840                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
841                 }
842                 case TIType::UINT16 :
843                 {
844                     if (in0.rows == 1 && in0.cols == 1)
845                     {
846                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
847                     }
848                     if (in1.rows == 1 && in1.cols == 1)
849                     {
850                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
851                     }
852                     if (in1.rows == in0.rows && in1.cols == in0.cols)
853                     {
854                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
855                     }
856                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
857                 }
858                 case TIType::UINT32 :
859                 {
860                     if (in0.rows == 1 && in0.cols == 1)
861                     {
862                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
863                     }
864                     if (in1.rows == 1 && in1.cols == 1)
865                     {
866                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
867                     }
868                     if (in1.rows == in0.rows && in1.cols == in0.cols)
869                     {
870                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
871                     }
872                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
873                 }
874                 case TIType::UINT64 :
875                 {
876                     if (in0.rows == 1 && in0.cols == 1)
877                     {
878                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
879                     }
880                     if (in1.rows == 1 && in1.cols == 1)
881                     {
882                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
883                     }
884                     if (in1.rows == in0.rows && in1.cols == in0.cols)
885                     {
886                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
887                     }
888                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
889                 }
890                 case TIType::UINT8 :
891                 {
892                     if (in0.rows == 1 && in0.cols == 1)
893                     {
894                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
895                     }
896                     if (in1.rows == 1 && in1.cols == 1)
897                     {
898                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
899                     }
900                     if (in1.rows == in0.rows && in1.cols == in0.cols)
901                     {
902                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
903                     }
904                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
905                 }
906                 default :
907                     return TIType(gvn);
908             }
909         }
910         case TIType::UINT16 :
911         {
912             switch (in1.type)
913             {
914                 case TIType::EMPTY :
915                 {
916                     if (in0.rows == 1 && in0.cols == 1)
917                     {
918                         return TIType(gvn, TIType::BOOLEAN, 1, 1);
919                     }
920                     return TIType(gvn);
921                 }
922                 case TIType::DOUBLE :
923                 {
924                     if (in0.rows == 1 && in0.cols == 1)
925                     {
926                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
927                     }
928                     if (in1.rows == 1 && in1.cols == 1)
929                     {
930                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
931                     }
932                     if (in1.rows == in0.rows && in1.cols == in0.cols)
933                     {
934                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
935                     }
936                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
937                 }
938                 case TIType::INT16 :
939                 {
940                     if (in0.rows == 1 && in0.cols == 1)
941                     {
942                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
943                     }
944                     if (in1.rows == 1 && in1.cols == 1)
945                     {
946                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
947                     }
948                     if (in1.rows == in0.rows && in1.cols == in0.cols)
949                     {
950                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
951                     }
952                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
953                 }
954                 case TIType::INT32 :
955                 {
956                     if (in0.rows == 1 && in0.cols == 1)
957                     {
958                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
959                     }
960                     if (in1.rows == 1 && in1.cols == 1)
961                     {
962                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
963                     }
964                     if (in1.rows == in0.rows && in1.cols == in0.cols)
965                     {
966                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
967                     }
968                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
969                 }
970                 case TIType::INT64 :
971                 {
972                     if (in0.rows == 1 && in0.cols == 1)
973                     {
974                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
975                     }
976                     if (in1.rows == 1 && in1.cols == 1)
977                     {
978                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
979                     }
980                     if (in1.rows == in0.rows && in1.cols == in0.cols)
981                     {
982                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
983                     }
984                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
985                 }
986                 case TIType::INT8 :
987                 {
988                     if (in0.rows == 1 && in0.cols == 1)
989                     {
990                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
991                     }
992                     if (in1.rows == 1 && in1.cols == 1)
993                     {
994                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
995                     }
996                     if (in1.rows == in0.rows && in1.cols == in0.cols)
997                     {
998                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
999                     }
1000                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
1001                 }
1002                 case TIType::UINT16 :
1003                 {
1004                     if (in0.rows == 1 && in0.cols == 1)
1005                     {
1006                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1007                     }
1008                     if (in1.rows == 1 && in1.cols == 1)
1009                     {
1010                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1011                     }
1012                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1013                     {
1014                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1015                     }
1016                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
1017                 }
1018                 case TIType::UINT32 :
1019                 {
1020                     if (in0.rows == 1 && in0.cols == 1)
1021                     {
1022                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1023                     }
1024                     if (in1.rows == 1 && in1.cols == 1)
1025                     {
1026                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1027                     }
1028                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1029                     {
1030                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1031                     }
1032                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
1033                 }
1034                 case TIType::UINT64 :
1035                 {
1036                     if (in0.rows == 1 && in0.cols == 1)
1037                     {
1038                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1039                     }
1040                     if (in1.rows == 1 && in1.cols == 1)
1041                     {
1042                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1043                     }
1044                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1045                     {
1046                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1047                     }
1048                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
1049                 }
1050                 case TIType::UINT8 :
1051                 {
1052                     if (in0.rows == 1 && in0.cols == 1)
1053                     {
1054                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1055                     }
1056                     if (in1.rows == 1 && in1.cols == 1)
1057                     {
1058                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1059                     }
1060                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1061                     {
1062                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1063                     }
1064                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
1065                 }
1066                 default :
1067                     return TIType(gvn);
1068             }
1069         }
1070         case TIType::UINT32 :
1071         {
1072             switch (in1.type)
1073             {
1074                 case TIType::EMPTY :
1075                 {
1076                     if (in0.rows == 1 && in0.cols == 1)
1077                     {
1078                         return TIType(gvn, TIType::BOOLEAN, 1, 1);
1079                     }
1080                     return TIType(gvn);
1081                 }
1082                 case TIType::DOUBLE :
1083                 {
1084                     if (in0.rows == 1 && in0.cols == 1)
1085                     {
1086                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1087                     }
1088                     if (in1.rows == 1 && in1.cols == 1)
1089                     {
1090                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1091                     }
1092                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1093                     {
1094                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1095                     }
1096                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
1097                 }
1098                 case TIType::INT16 :
1099                 {
1100                     if (in0.rows == 1 && in0.cols == 1)
1101                     {
1102                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1103                     }
1104                     if (in1.rows == 1 && in1.cols == 1)
1105                     {
1106                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1107                     }
1108                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1109                     {
1110                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1111                     }
1112                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
1113                 }
1114                 case TIType::INT32 :
1115                 {
1116                     if (in0.rows == 1 && in0.cols == 1)
1117                     {
1118                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1119                     }
1120                     if (in1.rows == 1 && in1.cols == 1)
1121                     {
1122                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1123                     }
1124                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1125                     {
1126                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1127                     }
1128                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
1129                 }
1130                 case TIType::INT64 :
1131                 {
1132                     if (in0.rows == 1 && in0.cols == 1)
1133                     {
1134                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1135                     }
1136                     if (in1.rows == 1 && in1.cols == 1)
1137                     {
1138                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1139                     }
1140                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1141                     {
1142                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1143                     }
1144                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
1145                 }
1146                 case TIType::INT8 :
1147                 {
1148                     if (in0.rows == 1 && in0.cols == 1)
1149                     {
1150                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1151                     }
1152                     if (in1.rows == 1 && in1.cols == 1)
1153                     {
1154                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1155                     }
1156                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1157                     {
1158                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1159                     }
1160                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
1161                 }
1162                 case TIType::UINT16 :
1163                 {
1164                     if (in0.rows == 1 && in0.cols == 1)
1165                     {
1166                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1167                     }
1168                     if (in1.rows == 1 && in1.cols == 1)
1169                     {
1170                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1171                     }
1172                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1173                     {
1174                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1175                     }
1176                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
1177                 }
1178                 case TIType::UINT32 :
1179                 {
1180                     if (in0.rows == 1 && in0.cols == 1)
1181                     {
1182                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1183                     }
1184                     if (in1.rows == 1 && in1.cols == 1)
1185                     {
1186                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1187                     }
1188                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1189                     {
1190                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1191                     }
1192                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
1193                 }
1194                 case TIType::UINT64 :
1195                 {
1196                     if (in0.rows == 1 && in0.cols == 1)
1197                     {
1198                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1199                     }
1200                     if (in1.rows == 1 && in1.cols == 1)
1201                     {
1202                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1203                     }
1204                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1205                     {
1206                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1207                     }
1208                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
1209                 }
1210                 case TIType::UINT8 :
1211                 {
1212                     if (in0.rows == 1 && in0.cols == 1)
1213                     {
1214                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1215                     }
1216                     if (in1.rows == 1 && in1.cols == 1)
1217                     {
1218                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1219                     }
1220                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1221                     {
1222                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1223                     }
1224                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
1225                 }
1226                 default :
1227                     return TIType(gvn);
1228             }
1229         }
1230         case TIType::UINT64 :
1231         {
1232             switch (in1.type)
1233             {
1234                 case TIType::EMPTY :
1235                 {
1236                     if (in0.rows == 1 && in0.cols == 1)
1237                     {
1238                         return TIType(gvn, TIType::BOOLEAN, 1, 1);
1239                     }
1240                     return TIType(gvn);
1241                 }
1242                 case TIType::DOUBLE :
1243                 {
1244                     if (in0.rows == 1 && in0.cols == 1)
1245                     {
1246                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1247                     }
1248                     if (in1.rows == 1 && in1.cols == 1)
1249                     {
1250                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1251                     }
1252                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1253                     {
1254                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1255                     }
1256                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
1257                 }
1258                 case TIType::INT16 :
1259                 {
1260                     if (in0.rows == 1 && in0.cols == 1)
1261                     {
1262                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1263                     }
1264                     if (in1.rows == 1 && in1.cols == 1)
1265                     {
1266                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1267                     }
1268                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1269                     {
1270                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1271                     }
1272                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
1273                 }
1274                 case TIType::INT32 :
1275                 {
1276                     if (in0.rows == 1 && in0.cols == 1)
1277                     {
1278                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1279                     }
1280                     if (in1.rows == 1 && in1.cols == 1)
1281                     {
1282                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1283                     }
1284                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1285                     {
1286                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1287                     }
1288                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
1289                 }
1290                 case TIType::INT64 :
1291                 {
1292                     if (in0.rows == 1 && in0.cols == 1)
1293                     {
1294                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1295                     }
1296                     if (in1.rows == 1 && in1.cols == 1)
1297                     {
1298                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1299                     }
1300                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1301                     {
1302                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1303                     }
1304                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
1305                 }
1306                 case TIType::INT8 :
1307                 {
1308                     if (in0.rows == 1 && in0.cols == 1)
1309                     {
1310                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1311                     }
1312                     if (in1.rows == 1 && in1.cols == 1)
1313                     {
1314                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1315                     }
1316                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1317                     {
1318                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1319                     }
1320                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
1321                 }
1322                 case TIType::UINT16 :
1323                 {
1324                     if (in0.rows == 1 && in0.cols == 1)
1325                     {
1326                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1327                     }
1328                     if (in1.rows == 1 && in1.cols == 1)
1329                     {
1330                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1331                     }
1332                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1333                     {
1334                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1335                     }
1336                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
1337                 }
1338                 case TIType::UINT32 :
1339                 {
1340                     if (in0.rows == 1 && in0.cols == 1)
1341                     {
1342                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1343                     }
1344                     if (in1.rows == 1 && in1.cols == 1)
1345                     {
1346                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1347                     }
1348                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1349                     {
1350                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1351                     }
1352                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
1353                 }
1354                 case TIType::UINT64 :
1355                 {
1356                     if (in0.rows == 1 && in0.cols == 1)
1357                     {
1358                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1359                     }
1360                     if (in1.rows == 1 && in1.cols == 1)
1361                     {
1362                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1363                     }
1364                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1365                     {
1366                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1367                     }
1368                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
1369                 }
1370                 case TIType::UINT8 :
1371                 {
1372                     if (in0.rows == 1 && in0.cols == 1)
1373                     {
1374                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1375                     }
1376                     if (in1.rows == 1 && in1.cols == 1)
1377                     {
1378                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1379                     }
1380                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1381                     {
1382                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1383                     }
1384                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
1385                 }
1386                 default :
1387                     return TIType(gvn);
1388             }
1389         }
1390         case TIType::UINT8 :
1391         {
1392             switch (in1.type)
1393             {
1394                 case TIType::EMPTY :
1395                 {
1396                     if (in0.rows == 1 && in0.cols == 1)
1397                     {
1398                         return TIType(gvn, TIType::BOOLEAN, 1, 1);
1399                     }
1400                     return TIType(gvn);
1401                 }
1402                 case TIType::DOUBLE :
1403                 {
1404                     if (in0.rows == 1 && in0.cols == 1)
1405                     {
1406                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1407                     }
1408                     if (in1.rows == 1 && in1.cols == 1)
1409                     {
1410                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1411                     }
1412                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1413                     {
1414                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1415                     }
1416                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
1417                 }
1418                 case TIType::INT16 :
1419                 {
1420                     if (in0.rows == 1 && in0.cols == 1)
1421                     {
1422                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1423                     }
1424                     if (in1.rows == 1 && in1.cols == 1)
1425                     {
1426                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1427                     }
1428                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1429                     {
1430                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1431                     }
1432                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
1433                 }
1434                 case TIType::INT32 :
1435                 {
1436                     if (in0.rows == 1 && in0.cols == 1)
1437                     {
1438                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1439                     }
1440                     if (in1.rows == 1 && in1.cols == 1)
1441                     {
1442                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1443                     }
1444                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1445                     {
1446                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1447                     }
1448                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
1449                 }
1450                 case TIType::INT64 :
1451                 {
1452                     if (in0.rows == 1 && in0.cols == 1)
1453                     {
1454                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1455                     }
1456                     if (in1.rows == 1 && in1.cols == 1)
1457                     {
1458                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1459                     }
1460                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1461                     {
1462                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1463                     }
1464                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
1465                 }
1466                 case TIType::INT8 :
1467                 {
1468                     if (in0.rows == 1 && in0.cols == 1)
1469                     {
1470                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1471                     }
1472                     if (in1.rows == 1 && in1.cols == 1)
1473                     {
1474                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1475                     }
1476                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1477                     {
1478                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1479                     }
1480                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
1481                 }
1482                 case TIType::UINT16 :
1483                 {
1484                     if (in0.rows == 1 && in0.cols == 1)
1485                     {
1486                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1487                     }
1488                     if (in1.rows == 1 && in1.cols == 1)
1489                     {
1490                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1491                     }
1492                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1493                     {
1494                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1495                     }
1496                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
1497                 }
1498                 case TIType::UINT32 :
1499                 {
1500                     if (in0.rows == 1 && in0.cols == 1)
1501                     {
1502                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1503                     }
1504                     if (in1.rows == 1 && in1.cols == 1)
1505                     {
1506                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1507                     }
1508                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1509                     {
1510                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1511                     }
1512                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
1513                 }
1514                 case TIType::UINT64 :
1515                 {
1516                     if (in0.rows == 1 && in0.cols == 1)
1517                     {
1518                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1519                     }
1520                     if (in1.rows == 1 && in1.cols == 1)
1521                     {
1522                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1523                     }
1524                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1525                     {
1526                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1527                     }
1528                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
1529                 }
1530                 case TIType::UINT8 :
1531                 {
1532                     if (in0.rows == 1 && in0.cols == 1)
1533                     {
1534                         return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1535                     }
1536                     if (in1.rows == 1 && in1.cols == 1)
1537                     {
1538                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1539                     }
1540                     if (in1.rows == in0.rows && in1.cols == in0.cols)
1541                     {
1542                         return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1543                     }
1544                     return TIType(gvn, TIType::BOOLEAN, -2, -2);
1545                 }
1546                 default :
1547                     return TIType(gvn);
1548             }
1549         }
1550         default :
1551             return TIType(gvn);
1552     }
1553 }
1554 
1555 } // namespace analysis