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