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_____neq____(GVN & gvn,const TIType & in0,const TIType & in1)22 TIType Checkers::check_____neq____(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::BOOLEAN :
35 {
36 if (in1.rows == 1 && in1.cols == 1)
37 {
38 return in1;
39 }
40 return TIType(gvn);
41 }
42 case TIType::COMPLEX :
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::DOUBLE :
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::INT16 :
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::INT32 :
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::INT64 :
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::INT8 :
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::STRING :
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::UINT16 :
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 case TIType::UINT32 :
107 {
108 if (in1.rows == 1 && in1.cols == 1)
109 {
110 return TIType(gvn, TIType::BOOLEAN, 1, 1);
111 }
112 return TIType(gvn);
113 }
114 case TIType::UINT64 :
115 {
116 if (in1.rows == 1 && in1.cols == 1)
117 {
118 return TIType(gvn, TIType::BOOLEAN, 1, 1);
119 }
120 return TIType(gvn);
121 }
122 case TIType::UINT8 :
123 {
124 if (in1.rows == 1 && in1.cols == 1)
125 {
126 return TIType(gvn, TIType::BOOLEAN, 1, 1);
127 }
128 return TIType(gvn);
129 }
130 default :
131 return TIType(gvn);
132 }
133 }
134 case TIType::BOOLEAN :
135 {
136 switch (in1.type)
137 {
138 case TIType::EMPTY :
139 {
140 if (in0.rows == 1 && in0.cols == 1)
141 {
142 return in0;
143 }
144 return TIType(gvn);
145 }
146 case TIType::BOOLEAN :
147 {
148 if (in0.rows == 1 && in0.cols == 1)
149 {
150 return in1;
151 }
152 if (in1.rows == 1 && in1.cols == 1)
153 {
154 return in0;
155 }
156 if (in1.rows == in0.rows && in1.cols == in0.cols)
157 {
158 return in0;
159 }
160 return TIType(gvn, TIType::BOOLEAN, -2, -2);
161 }
162 case TIType::COMPLEX :
163 {
164 if (in0.rows == 1 && in0.cols == 1)
165 {
166 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
167 }
168 if (in1.rows == 1 && in1.cols == 1)
169 {
170 return in0;
171 }
172 if (in1.rows == in0.rows && in1.cols == in0.cols)
173 {
174 return in0;
175 }
176 return TIType(gvn, TIType::BOOLEAN, -2, -2);
177 }
178 case TIType::DOUBLE :
179 {
180 if (in0.rows == 1 && in0.cols == 1)
181 {
182 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
183 }
184 if (in1.rows == 1 && in1.cols == 1)
185 {
186 return in0;
187 }
188 if (in1.rows == in0.rows && in1.cols == in0.cols)
189 {
190 return in0;
191 }
192 return TIType(gvn, TIType::BOOLEAN, -2, -2);
193 }
194 case TIType::INT16 :
195 {
196 if (in0.rows == 1 && in0.cols == 1)
197 {
198 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
199 }
200 if (in1.rows == 1 && in1.cols == 1)
201 {
202 return in0;
203 }
204 if (in1.rows == in0.rows && in1.cols == in0.cols)
205 {
206 return in0;
207 }
208 return TIType(gvn, TIType::BOOLEAN, -2, -2);
209 }
210 case TIType::INT32 :
211 {
212 if (in0.rows == 1 && in0.cols == 1)
213 {
214 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
215 }
216 if (in1.rows == 1 && in1.cols == 1)
217 {
218 return in0;
219 }
220 if (in1.rows == in0.rows && in1.cols == in0.cols)
221 {
222 return in0;
223 }
224 return TIType(gvn, TIType::BOOLEAN, -2, -2);
225 }
226 case TIType::INT64 :
227 {
228 if (in0.rows == 1 && in0.cols == 1)
229 {
230 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
231 }
232 if (in1.rows == 1 && in1.cols == 1)
233 {
234 return in0;
235 }
236 if (in1.rows == in0.rows && in1.cols == in0.cols)
237 {
238 return in0;
239 }
240 return TIType(gvn, TIType::BOOLEAN, -2, -2);
241 }
242 case TIType::INT8 :
243 {
244 if (in0.rows == 1 && in0.cols == 1)
245 {
246 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
247 }
248 if (in1.rows == 1 && in1.cols == 1)
249 {
250 return in0;
251 }
252 if (in1.rows == in0.rows && in1.cols == in0.cols)
253 {
254 return in0;
255 }
256 return TIType(gvn, TIType::BOOLEAN, -2, -2);
257 }
258 case TIType::STRING :
259 {
260 if (in0.rows == 1 && in0.cols == 1)
261 {
262 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
263 }
264 if (in1.rows == 1 && in1.cols == 1)
265 {
266 return in0;
267 }
268 if (in1.rows == in0.rows && in1.cols == in0.cols)
269 {
270 return in0;
271 }
272 return TIType(gvn, TIType::BOOLEAN, -2, -2);
273 }
274 case TIType::UINT16 :
275 {
276 if (in0.rows == 1 && in0.cols == 1)
277 {
278 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
279 }
280 if (in1.rows == 1 && in1.cols == 1)
281 {
282 return in0;
283 }
284 if (in1.rows == in0.rows && in1.cols == in0.cols)
285 {
286 return in0;
287 }
288 return TIType(gvn, TIType::BOOLEAN, -2, -2);
289 }
290 case TIType::UINT32 :
291 {
292 if (in0.rows == 1 && in0.cols == 1)
293 {
294 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
295 }
296 if (in1.rows == 1 && in1.cols == 1)
297 {
298 return in0;
299 }
300 if (in1.rows == in0.rows && in1.cols == in0.cols)
301 {
302 return in0;
303 }
304 return TIType(gvn, TIType::BOOLEAN, -2, -2);
305 }
306 case TIType::UINT64 :
307 {
308 if (in0.rows == 1 && in0.cols == 1)
309 {
310 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
311 }
312 if (in1.rows == 1 && in1.cols == 1)
313 {
314 return in0;
315 }
316 if (in1.rows == in0.rows && in1.cols == in0.cols)
317 {
318 return in0;
319 }
320 return TIType(gvn, TIType::BOOLEAN, -2, -2);
321 }
322 case TIType::UINT8 :
323 {
324 if (in0.rows == 1 && in0.cols == 1)
325 {
326 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
327 }
328 if (in1.rows == 1 && in1.cols == 1)
329 {
330 return in0;
331 }
332 if (in1.rows == in0.rows && in1.cols == in0.cols)
333 {
334 return in0;
335 }
336 return TIType(gvn, TIType::BOOLEAN, -2, -2);
337 }
338 default :
339 return TIType(gvn);
340 }
341 }
342 case TIType::COMPLEX :
343 {
344 switch (in1.type)
345 {
346 case TIType::EMPTY :
347 {
348 if (in0.rows == 1 && in0.cols == 1)
349 {
350 return TIType(gvn, TIType::BOOLEAN, 1, 1);
351 }
352 return TIType(gvn);
353 }
354 case TIType::BOOLEAN :
355 {
356 if (in0.rows == 1 && in0.cols == 1)
357 {
358 return in1;
359 }
360 if (in1.rows == 1 && in1.cols == 1)
361 {
362 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
363 }
364 if (in1.rows == in0.rows && in1.cols == in0.cols)
365 {
366 return in1;
367 }
368 return TIType(gvn, TIType::BOOLEAN, -2, -2);
369 }
370 case TIType::COMPLEX :
371 {
372 if (in0.rows == 1 && in0.cols == 1)
373 {
374 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
375 }
376 if (in1.rows == 1 && in1.cols == 1)
377 {
378 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
379 }
380 if (in1.rows == in0.rows && in1.cols == in0.cols)
381 {
382 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
383 }
384 return TIType(gvn, TIType::BOOLEAN, -2, -2);
385 }
386 case TIType::DOUBLE :
387 {
388 if (in0.rows == 1 && in0.cols == 1)
389 {
390 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
391 }
392 if (in1.rows == 1 && in1.cols == 1)
393 {
394 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
395 }
396 if (in1.rows == in0.rows && in1.cols == in0.cols)
397 {
398 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
399 }
400 return TIType(gvn, TIType::BOOLEAN, -2, -2);
401 }
402 case TIType::INT16 :
403 {
404 if (in0.rows == 1 && in0.cols == 1)
405 {
406 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
407 }
408 if (in1.rows == 1 && in1.cols == 1)
409 {
410 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
411 }
412 if (in1.rows == in0.rows && in1.cols == in0.cols)
413 {
414 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
415 }
416 return TIType(gvn, TIType::BOOLEAN, -2, -2);
417 }
418 case TIType::INT32 :
419 {
420 if (in0.rows == 1 && in0.cols == 1)
421 {
422 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
423 }
424 if (in1.rows == 1 && in1.cols == 1)
425 {
426 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
427 }
428 if (in1.rows == in0.rows && in1.cols == in0.cols)
429 {
430 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
431 }
432 return TIType(gvn, TIType::BOOLEAN, -2, -2);
433 }
434 case TIType::INT64 :
435 {
436 if (in0.rows == 1 && in0.cols == 1)
437 {
438 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
439 }
440 if (in1.rows == 1 && in1.cols == 1)
441 {
442 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
443 }
444 if (in1.rows == in0.rows && in1.cols == in0.cols)
445 {
446 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
447 }
448 return TIType(gvn, TIType::BOOLEAN, -2, -2);
449 }
450 case TIType::INT8 :
451 {
452 if (in0.rows == 1 && in0.cols == 1)
453 {
454 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
455 }
456 if (in1.rows == 1 && in1.cols == 1)
457 {
458 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
459 }
460 if (in1.rows == in0.rows && in1.cols == in0.cols)
461 {
462 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
463 }
464 return TIType(gvn, TIType::BOOLEAN, -2, -2);
465 }
466 case TIType::STRING :
467 {
468 if (in0.rows == 1 && in0.cols == 1)
469 {
470 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
471 }
472 if (in1.rows == 1 && in1.cols == 1)
473 {
474 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
475 }
476 if (in1.rows == in0.rows && in1.cols == in0.cols)
477 {
478 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
479 }
480 return TIType(gvn, TIType::BOOLEAN, -2, -2);
481 }
482 case TIType::UINT16 :
483 {
484 if (in0.rows == 1 && in0.cols == 1)
485 {
486 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
487 }
488 if (in1.rows == 1 && in1.cols == 1)
489 {
490 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
491 }
492 if (in1.rows == in0.rows && in1.cols == in0.cols)
493 {
494 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
495 }
496 return TIType(gvn, TIType::BOOLEAN, -2, -2);
497 }
498 case TIType::UINT32 :
499 {
500 if (in0.rows == 1 && in0.cols == 1)
501 {
502 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
503 }
504 if (in1.rows == 1 && in1.cols == 1)
505 {
506 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
507 }
508 if (in1.rows == in0.rows && in1.cols == in0.cols)
509 {
510 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
511 }
512 return TIType(gvn, TIType::BOOLEAN, -2, -2);
513 }
514 case TIType::UINT64 :
515 {
516 if (in0.rows == 1 && in0.cols == 1)
517 {
518 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
519 }
520 if (in1.rows == 1 && in1.cols == 1)
521 {
522 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
523 }
524 if (in1.rows == in0.rows && in1.cols == in0.cols)
525 {
526 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
527 }
528 return TIType(gvn, TIType::BOOLEAN, -2, -2);
529 }
530 case TIType::UINT8 :
531 {
532 if (in0.rows == 1 && in0.cols == 1)
533 {
534 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
535 }
536 if (in1.rows == 1 && in1.cols == 1)
537 {
538 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
539 }
540 if (in1.rows == in0.rows && in1.cols == in0.cols)
541 {
542 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
543 }
544 return TIType(gvn, TIType::BOOLEAN, -2, -2);
545 }
546 default :
547 return TIType(gvn);
548 }
549 }
550 case TIType::DOUBLE :
551 {
552 switch (in1.type)
553 {
554 case TIType::EMPTY :
555 {
556 if (in0.rows == 1 && in0.cols == 1)
557 {
558 return TIType(gvn, TIType::BOOLEAN, 1, 1);
559 }
560 return TIType(gvn);
561 }
562 case TIType::BOOLEAN :
563 {
564 if (in0.rows == 1 && in0.cols == 1)
565 {
566 return in1;
567 }
568 if (in1.rows == 1 && in1.cols == 1)
569 {
570 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
571 }
572 if (in1.rows == in0.rows && in1.cols == in0.cols)
573 {
574 return in1;
575 }
576 return TIType(gvn, TIType::BOOLEAN, -2, -2);
577 }
578 case TIType::COMPLEX :
579 {
580 if (in0.rows == 1 && in0.cols == 1)
581 {
582 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
583 }
584 if (in1.rows == 1 && in1.cols == 1)
585 {
586 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
587 }
588 if (in1.rows == in0.rows && in1.cols == in0.cols)
589 {
590 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
591 }
592 return TIType(gvn, TIType::BOOLEAN, -2, -2);
593 }
594 case TIType::DOUBLE :
595 {
596 if (in0.rows == 1 && in0.cols == 1)
597 {
598 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
599 }
600 if (in1.rows == 1 && in1.cols == 1)
601 {
602 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
603 }
604 if (in1.rows == in0.rows && in1.cols == in0.cols)
605 {
606 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
607 }
608 return TIType(gvn, TIType::BOOLEAN, -2, -2);
609 }
610 case TIType::INT16 :
611 {
612 if (in0.rows == 1 && in0.cols == 1)
613 {
614 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
615 }
616 if (in1.rows == 1 && in1.cols == 1)
617 {
618 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
619 }
620 if (in1.rows == in0.rows && in1.cols == in0.cols)
621 {
622 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
623 }
624 return TIType(gvn, TIType::BOOLEAN, -2, -2);
625 }
626 case TIType::INT32 :
627 {
628 if (in0.rows == 1 && in0.cols == 1)
629 {
630 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
631 }
632 if (in1.rows == 1 && in1.cols == 1)
633 {
634 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
635 }
636 if (in1.rows == in0.rows && in1.cols == in0.cols)
637 {
638 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
639 }
640 return TIType(gvn, TIType::BOOLEAN, -2, -2);
641 }
642 case TIType::INT64 :
643 {
644 if (in0.rows == 1 && in0.cols == 1)
645 {
646 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
647 }
648 if (in1.rows == 1 && in1.cols == 1)
649 {
650 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
651 }
652 if (in1.rows == in0.rows && in1.cols == in0.cols)
653 {
654 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
655 }
656 return TIType(gvn, TIType::BOOLEAN, -2, -2);
657 }
658 case TIType::INT8 :
659 {
660 if (in0.rows == 1 && in0.cols == 1)
661 {
662 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
663 }
664 if (in1.rows == 1 && in1.cols == 1)
665 {
666 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
667 }
668 if (in1.rows == in0.rows && in1.cols == in0.cols)
669 {
670 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
671 }
672 return TIType(gvn, TIType::BOOLEAN, -2, -2);
673 }
674 case TIType::STRING :
675 {
676 if (in0.rows == 1 && in0.cols == 1)
677 {
678 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
679 }
680 if (in1.rows == 1 && in1.cols == 1)
681 {
682 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
683 }
684 if (in1.rows == in0.rows && in1.cols == in0.cols)
685 {
686 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
687 }
688 return TIType(gvn, TIType::BOOLEAN, -2, -2);
689 }
690 case TIType::UINT16 :
691 {
692 if (in0.rows == 1 && in0.cols == 1)
693 {
694 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
695 }
696 if (in1.rows == 1 && in1.cols == 1)
697 {
698 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
699 }
700 if (in1.rows == in0.rows && in1.cols == in0.cols)
701 {
702 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
703 }
704 return TIType(gvn, TIType::BOOLEAN, -2, -2);
705 }
706 case TIType::UINT32 :
707 {
708 if (in0.rows == 1 && in0.cols == 1)
709 {
710 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
711 }
712 if (in1.rows == 1 && in1.cols == 1)
713 {
714 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
715 }
716 if (in1.rows == in0.rows && in1.cols == in0.cols)
717 {
718 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
719 }
720 return TIType(gvn, TIType::BOOLEAN, -2, -2);
721 }
722 case TIType::UINT64 :
723 {
724 if (in0.rows == 1 && in0.cols == 1)
725 {
726 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
727 }
728 if (in1.rows == 1 && in1.cols == 1)
729 {
730 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
731 }
732 if (in1.rows == in0.rows && in1.cols == in0.cols)
733 {
734 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
735 }
736 return TIType(gvn, TIType::BOOLEAN, -2, -2);
737 }
738 case TIType::UINT8 :
739 {
740 if (in0.rows == 1 && in0.cols == 1)
741 {
742 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
743 }
744 if (in1.rows == 1 && in1.cols == 1)
745 {
746 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
747 }
748 if (in1.rows == in0.rows && in1.cols == in0.cols)
749 {
750 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
751 }
752 return TIType(gvn, TIType::BOOLEAN, -2, -2);
753 }
754 default :
755 return TIType(gvn);
756 }
757 }
758 case TIType::INT16 :
759 {
760 switch (in1.type)
761 {
762 case TIType::EMPTY :
763 {
764 if (in0.rows == 1 && in0.cols == 1)
765 {
766 return TIType(gvn, TIType::BOOLEAN, 1, 1);
767 }
768 return TIType(gvn);
769 }
770 case TIType::BOOLEAN :
771 {
772 if (in0.rows == 1 && in0.cols == 1)
773 {
774 return in1;
775 }
776 if (in1.rows == 1 && in1.cols == 1)
777 {
778 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
779 }
780 if (in1.rows == in0.rows && in1.cols == in0.cols)
781 {
782 return in1;
783 }
784 return TIType(gvn, TIType::BOOLEAN, -2, -2);
785 }
786 case TIType::COMPLEX :
787 {
788 if (in0.rows == 1 && in0.cols == 1)
789 {
790 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
791 }
792 if (in1.rows == 1 && in1.cols == 1)
793 {
794 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
795 }
796 if (in1.rows == in0.rows && in1.cols == in0.cols)
797 {
798 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
799 }
800 return TIType(gvn, TIType::BOOLEAN, -2, -2);
801 }
802 case TIType::DOUBLE :
803 {
804 if (in0.rows == 1 && in0.cols == 1)
805 {
806 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
807 }
808 if (in1.rows == 1 && in1.cols == 1)
809 {
810 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
811 }
812 if (in1.rows == in0.rows && in1.cols == in0.cols)
813 {
814 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
815 }
816 return TIType(gvn, TIType::BOOLEAN, -2, -2);
817 }
818 case TIType::INT16 :
819 {
820 if (in0.rows == 1 && in0.cols == 1)
821 {
822 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
823 }
824 if (in1.rows == 1 && in1.cols == 1)
825 {
826 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
827 }
828 if (in1.rows == in0.rows && in1.cols == in0.cols)
829 {
830 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
831 }
832 return TIType(gvn, TIType::BOOLEAN, -2, -2);
833 }
834 case TIType::INT32 :
835 {
836 if (in0.rows == 1 && in0.cols == 1)
837 {
838 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
839 }
840 if (in1.rows == 1 && in1.cols == 1)
841 {
842 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
843 }
844 if (in1.rows == in0.rows && in1.cols == in0.cols)
845 {
846 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
847 }
848 return TIType(gvn, TIType::BOOLEAN, -2, -2);
849 }
850 case TIType::INT64 :
851 {
852 if (in0.rows == 1 && in0.cols == 1)
853 {
854 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
855 }
856 if (in1.rows == 1 && in1.cols == 1)
857 {
858 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
859 }
860 if (in1.rows == in0.rows && in1.cols == in0.cols)
861 {
862 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
863 }
864 return TIType(gvn, TIType::BOOLEAN, -2, -2);
865 }
866 case TIType::INT8 :
867 {
868 if (in0.rows == 1 && in0.cols == 1)
869 {
870 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
871 }
872 if (in1.rows == 1 && in1.cols == 1)
873 {
874 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
875 }
876 if (in1.rows == in0.rows && in1.cols == in0.cols)
877 {
878 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
879 }
880 return TIType(gvn, TIType::BOOLEAN, -2, -2);
881 }
882 case TIType::STRING :
883 {
884 if (in0.rows == 1 && in0.cols == 1)
885 {
886 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
887 }
888 if (in1.rows == 1 && in1.cols == 1)
889 {
890 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
891 }
892 if (in1.rows == in0.rows && in1.cols == in0.cols)
893 {
894 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
895 }
896 return TIType(gvn, TIType::BOOLEAN, -2, -2);
897 }
898 case TIType::UINT16 :
899 {
900 if (in0.rows == 1 && in0.cols == 1)
901 {
902 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
903 }
904 if (in1.rows == 1 && in1.cols == 1)
905 {
906 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
907 }
908 if (in1.rows == in0.rows && in1.cols == in0.cols)
909 {
910 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
911 }
912 return TIType(gvn, TIType::BOOLEAN, -2, -2);
913 }
914 case TIType::UINT32 :
915 {
916 if (in0.rows == 1 && in0.cols == 1)
917 {
918 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
919 }
920 if (in1.rows == 1 && in1.cols == 1)
921 {
922 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
923 }
924 if (in1.rows == in0.rows && in1.cols == in0.cols)
925 {
926 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
927 }
928 return TIType(gvn, TIType::BOOLEAN, -2, -2);
929 }
930 case TIType::UINT64 :
931 {
932 if (in0.rows == 1 && in0.cols == 1)
933 {
934 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
935 }
936 if (in1.rows == 1 && in1.cols == 1)
937 {
938 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
939 }
940 if (in1.rows == in0.rows && in1.cols == in0.cols)
941 {
942 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
943 }
944 return TIType(gvn, TIType::BOOLEAN, -2, -2);
945 }
946 case TIType::UINT8 :
947 {
948 if (in0.rows == 1 && in0.cols == 1)
949 {
950 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
951 }
952 if (in1.rows == 1 && in1.cols == 1)
953 {
954 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
955 }
956 if (in1.rows == in0.rows && in1.cols == in0.cols)
957 {
958 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
959 }
960 return TIType(gvn, TIType::BOOLEAN, -2, -2);
961 }
962 default :
963 return TIType(gvn);
964 }
965 }
966 case TIType::INT32 :
967 {
968 switch (in1.type)
969 {
970 case TIType::EMPTY :
971 {
972 if (in0.rows == 1 && in0.cols == 1)
973 {
974 return TIType(gvn, TIType::BOOLEAN, 1, 1);
975 }
976 return TIType(gvn);
977 }
978 case TIType::BOOLEAN :
979 {
980 if (in0.rows == 1 && in0.cols == 1)
981 {
982 return in1;
983 }
984 if (in1.rows == 1 && in1.cols == 1)
985 {
986 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
987 }
988 if (in1.rows == in0.rows && in1.cols == in0.cols)
989 {
990 return in1;
991 }
992 return TIType(gvn, TIType::BOOLEAN, -2, -2);
993 }
994 case TIType::COMPLEX :
995 {
996 if (in0.rows == 1 && in0.cols == 1)
997 {
998 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
999 }
1000 if (in1.rows == 1 && in1.cols == 1)
1001 {
1002 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1003 }
1004 if (in1.rows == in0.rows && in1.cols == in0.cols)
1005 {
1006 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1007 }
1008 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1009 }
1010 case TIType::DOUBLE :
1011 {
1012 if (in0.rows == 1 && in0.cols == 1)
1013 {
1014 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1015 }
1016 if (in1.rows == 1 && in1.cols == 1)
1017 {
1018 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1019 }
1020 if (in1.rows == in0.rows && in1.cols == in0.cols)
1021 {
1022 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1023 }
1024 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1025 }
1026 case TIType::INT16 :
1027 {
1028 if (in0.rows == 1 && in0.cols == 1)
1029 {
1030 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1031 }
1032 if (in1.rows == 1 && in1.cols == 1)
1033 {
1034 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1035 }
1036 if (in1.rows == in0.rows && in1.cols == in0.cols)
1037 {
1038 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1039 }
1040 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1041 }
1042 case TIType::INT32 :
1043 {
1044 if (in0.rows == 1 && in0.cols == 1)
1045 {
1046 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1047 }
1048 if (in1.rows == 1 && in1.cols == 1)
1049 {
1050 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1051 }
1052 if (in1.rows == in0.rows && in1.cols == in0.cols)
1053 {
1054 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1055 }
1056 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1057 }
1058 case TIType::INT64 :
1059 {
1060 if (in0.rows == 1 && in0.cols == 1)
1061 {
1062 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1063 }
1064 if (in1.rows == 1 && in1.cols == 1)
1065 {
1066 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1067 }
1068 if (in1.rows == in0.rows && in1.cols == in0.cols)
1069 {
1070 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1071 }
1072 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1073 }
1074 case TIType::INT8 :
1075 {
1076 if (in0.rows == 1 && in0.cols == 1)
1077 {
1078 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1079 }
1080 if (in1.rows == 1 && in1.cols == 1)
1081 {
1082 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1083 }
1084 if (in1.rows == in0.rows && in1.cols == in0.cols)
1085 {
1086 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1087 }
1088 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1089 }
1090 case TIType::STRING :
1091 {
1092 if (in0.rows == 1 && in0.cols == 1)
1093 {
1094 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1095 }
1096 if (in1.rows == 1 && in1.cols == 1)
1097 {
1098 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1099 }
1100 if (in1.rows == in0.rows && in1.cols == in0.cols)
1101 {
1102 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1103 }
1104 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1105 }
1106 case TIType::UINT16 :
1107 {
1108 if (in0.rows == 1 && in0.cols == 1)
1109 {
1110 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1111 }
1112 if (in1.rows == 1 && in1.cols == 1)
1113 {
1114 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1115 }
1116 if (in1.rows == in0.rows && in1.cols == in0.cols)
1117 {
1118 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1119 }
1120 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1121 }
1122 case TIType::UINT32 :
1123 {
1124 if (in0.rows == 1 && in0.cols == 1)
1125 {
1126 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1127 }
1128 if (in1.rows == 1 && in1.cols == 1)
1129 {
1130 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1131 }
1132 if (in1.rows == in0.rows && in1.cols == in0.cols)
1133 {
1134 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1135 }
1136 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1137 }
1138 case TIType::UINT64 :
1139 {
1140 if (in0.rows == 1 && in0.cols == 1)
1141 {
1142 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1143 }
1144 if (in1.rows == 1 && in1.cols == 1)
1145 {
1146 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1147 }
1148 if (in1.rows == in0.rows && in1.cols == in0.cols)
1149 {
1150 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1151 }
1152 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1153 }
1154 case TIType::UINT8 :
1155 {
1156 if (in0.rows == 1 && in0.cols == 1)
1157 {
1158 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1159 }
1160 if (in1.rows == 1 && in1.cols == 1)
1161 {
1162 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1163 }
1164 if (in1.rows == in0.rows && in1.cols == in0.cols)
1165 {
1166 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1167 }
1168 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1169 }
1170 default :
1171 return TIType(gvn);
1172 }
1173 }
1174 case TIType::INT64 :
1175 {
1176 switch (in1.type)
1177 {
1178 case TIType::EMPTY :
1179 {
1180 if (in0.rows == 1 && in0.cols == 1)
1181 {
1182 return TIType(gvn, TIType::BOOLEAN, 1, 1);
1183 }
1184 return TIType(gvn);
1185 }
1186 case TIType::BOOLEAN :
1187 {
1188 if (in0.rows == 1 && in0.cols == 1)
1189 {
1190 return in1;
1191 }
1192 if (in1.rows == 1 && in1.cols == 1)
1193 {
1194 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1195 }
1196 if (in1.rows == in0.rows && in1.cols == in0.cols)
1197 {
1198 return in1;
1199 }
1200 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1201 }
1202 case TIType::COMPLEX :
1203 {
1204 if (in0.rows == 1 && in0.cols == 1)
1205 {
1206 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1207 }
1208 if (in1.rows == 1 && in1.cols == 1)
1209 {
1210 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1211 }
1212 if (in1.rows == in0.rows && in1.cols == in0.cols)
1213 {
1214 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1215 }
1216 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1217 }
1218 case TIType::DOUBLE :
1219 {
1220 if (in0.rows == 1 && in0.cols == 1)
1221 {
1222 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1223 }
1224 if (in1.rows == 1 && in1.cols == 1)
1225 {
1226 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1227 }
1228 if (in1.rows == in0.rows && in1.cols == in0.cols)
1229 {
1230 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1231 }
1232 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1233 }
1234 case TIType::INT16 :
1235 {
1236 if (in0.rows == 1 && in0.cols == 1)
1237 {
1238 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1239 }
1240 if (in1.rows == 1 && in1.cols == 1)
1241 {
1242 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1243 }
1244 if (in1.rows == in0.rows && in1.cols == in0.cols)
1245 {
1246 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1247 }
1248 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1249 }
1250 case TIType::INT32 :
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::INT64 :
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::INT8 :
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::STRING :
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::UINT16 :
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::UINT32 :
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::UINT64 :
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::UINT8 :
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 default :
1379 return TIType(gvn);
1380 }
1381 }
1382 case TIType::INT8 :
1383 {
1384 switch (in1.type)
1385 {
1386 case TIType::EMPTY :
1387 {
1388 if (in0.rows == 1 && in0.cols == 1)
1389 {
1390 return TIType(gvn, TIType::BOOLEAN, 1, 1);
1391 }
1392 return TIType(gvn);
1393 }
1394 case TIType::BOOLEAN :
1395 {
1396 if (in0.rows == 1 && in0.cols == 1)
1397 {
1398 return in1;
1399 }
1400 if (in1.rows == 1 && in1.cols == 1)
1401 {
1402 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1403 }
1404 if (in1.rows == in0.rows && in1.cols == in0.cols)
1405 {
1406 return in1;
1407 }
1408 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1409 }
1410 case TIType::COMPLEX :
1411 {
1412 if (in0.rows == 1 && in0.cols == 1)
1413 {
1414 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1415 }
1416 if (in1.rows == 1 && in1.cols == 1)
1417 {
1418 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1419 }
1420 if (in1.rows == in0.rows && in1.cols == in0.cols)
1421 {
1422 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1423 }
1424 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1425 }
1426 case TIType::DOUBLE :
1427 {
1428 if (in0.rows == 1 && in0.cols == 1)
1429 {
1430 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1431 }
1432 if (in1.rows == 1 && in1.cols == 1)
1433 {
1434 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1435 }
1436 if (in1.rows == in0.rows && in1.cols == in0.cols)
1437 {
1438 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1439 }
1440 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1441 }
1442 case TIType::INT16 :
1443 {
1444 if (in0.rows == 1 && in0.cols == 1)
1445 {
1446 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1447 }
1448 if (in1.rows == 1 && in1.cols == 1)
1449 {
1450 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1451 }
1452 if (in1.rows == in0.rows && in1.cols == in0.cols)
1453 {
1454 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1455 }
1456 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1457 }
1458 case TIType::INT32 :
1459 {
1460 if (in0.rows == 1 && in0.cols == 1)
1461 {
1462 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1463 }
1464 if (in1.rows == 1 && in1.cols == 1)
1465 {
1466 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1467 }
1468 if (in1.rows == in0.rows && in1.cols == in0.cols)
1469 {
1470 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1471 }
1472 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1473 }
1474 case TIType::INT64 :
1475 {
1476 if (in0.rows == 1 && in0.cols == 1)
1477 {
1478 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1479 }
1480 if (in1.rows == 1 && in1.cols == 1)
1481 {
1482 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1483 }
1484 if (in1.rows == in0.rows && in1.cols == in0.cols)
1485 {
1486 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1487 }
1488 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1489 }
1490 case TIType::INT8 :
1491 {
1492 if (in0.rows == 1 && in0.cols == 1)
1493 {
1494 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1495 }
1496 if (in1.rows == 1 && in1.cols == 1)
1497 {
1498 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1499 }
1500 if (in1.rows == in0.rows && in1.cols == in0.cols)
1501 {
1502 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1503 }
1504 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1505 }
1506 case TIType::STRING :
1507 {
1508 if (in0.rows == 1 && in0.cols == 1)
1509 {
1510 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1511 }
1512 if (in1.rows == 1 && in1.cols == 1)
1513 {
1514 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1515 }
1516 if (in1.rows == in0.rows && in1.cols == in0.cols)
1517 {
1518 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1519 }
1520 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1521 }
1522 case TIType::UINT16 :
1523 {
1524 if (in0.rows == 1 && in0.cols == 1)
1525 {
1526 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1527 }
1528 if (in1.rows == 1 && in1.cols == 1)
1529 {
1530 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1531 }
1532 if (in1.rows == in0.rows && in1.cols == in0.cols)
1533 {
1534 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1535 }
1536 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1537 }
1538 case TIType::UINT32 :
1539 {
1540 if (in0.rows == 1 && in0.cols == 1)
1541 {
1542 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1543 }
1544 if (in1.rows == 1 && in1.cols == 1)
1545 {
1546 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1547 }
1548 if (in1.rows == in0.rows && in1.cols == in0.cols)
1549 {
1550 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1551 }
1552 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1553 }
1554 case TIType::UINT64 :
1555 {
1556 if (in0.rows == 1 && in0.cols == 1)
1557 {
1558 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1559 }
1560 if (in1.rows == 1 && in1.cols == 1)
1561 {
1562 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1563 }
1564 if (in1.rows == in0.rows && in1.cols == in0.cols)
1565 {
1566 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1567 }
1568 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1569 }
1570 case TIType::UINT8 :
1571 {
1572 if (in0.rows == 1 && in0.cols == 1)
1573 {
1574 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1575 }
1576 if (in1.rows == 1 && in1.cols == 1)
1577 {
1578 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1579 }
1580 if (in1.rows == in0.rows && in1.cols == in0.cols)
1581 {
1582 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1583 }
1584 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1585 }
1586 default :
1587 return TIType(gvn);
1588 }
1589 }
1590 case TIType::STRING :
1591 {
1592 switch (in1.type)
1593 {
1594 case TIType::EMPTY :
1595 {
1596 if (in0.rows == 1 && in0.cols == 1)
1597 {
1598 return TIType(gvn, TIType::BOOLEAN, 1, 1);
1599 }
1600 return TIType(gvn);
1601 }
1602 case TIType::BOOLEAN :
1603 {
1604 if (in0.rows == 1 && in0.cols == 1)
1605 {
1606 return in1;
1607 }
1608 if (in1.rows == 1 && in1.cols == 1)
1609 {
1610 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1611 }
1612 if (in1.rows == in0.rows && in1.cols == in0.cols)
1613 {
1614 return in1;
1615 }
1616 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1617 }
1618 case TIType::COMPLEX :
1619 {
1620 if (in0.rows == 1 && in0.cols == 1)
1621 {
1622 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1623 }
1624 if (in1.rows == 1 && in1.cols == 1)
1625 {
1626 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1627 }
1628 if (in1.rows == in0.rows && in1.cols == in0.cols)
1629 {
1630 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1631 }
1632 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1633 }
1634 case TIType::DOUBLE :
1635 {
1636 if (in0.rows == 1 && in0.cols == 1)
1637 {
1638 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1639 }
1640 if (in1.rows == 1 && in1.cols == 1)
1641 {
1642 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1643 }
1644 if (in1.rows == in0.rows && in1.cols == in0.cols)
1645 {
1646 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1647 }
1648 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1649 }
1650 case TIType::INT16 :
1651 {
1652 if (in0.rows == 1 && in0.cols == 1)
1653 {
1654 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1655 }
1656 if (in1.rows == 1 && in1.cols == 1)
1657 {
1658 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1659 }
1660 if (in1.rows == in0.rows && in1.cols == in0.cols)
1661 {
1662 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1663 }
1664 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1665 }
1666 case TIType::INT32 :
1667 {
1668 if (in0.rows == 1 && in0.cols == 1)
1669 {
1670 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1671 }
1672 if (in1.rows == 1 && in1.cols == 1)
1673 {
1674 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1675 }
1676 if (in1.rows == in0.rows && in1.cols == in0.cols)
1677 {
1678 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1679 }
1680 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1681 }
1682 case TIType::INT64 :
1683 {
1684 if (in0.rows == 1 && in0.cols == 1)
1685 {
1686 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1687 }
1688 if (in1.rows == 1 && in1.cols == 1)
1689 {
1690 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1691 }
1692 if (in1.rows == in0.rows && in1.cols == in0.cols)
1693 {
1694 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1695 }
1696 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1697 }
1698 case TIType::INT8 :
1699 {
1700 if (in0.rows == 1 && in0.cols == 1)
1701 {
1702 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1703 }
1704 if (in1.rows == 1 && in1.cols == 1)
1705 {
1706 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1707 }
1708 if (in1.rows == in0.rows && in1.cols == in0.cols)
1709 {
1710 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1711 }
1712 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1713 }
1714 case TIType::STRING :
1715 {
1716 if (in0.rows == 1 && in0.cols == 1)
1717 {
1718 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1719 }
1720 if (in1.rows == 1 && in1.cols == 1)
1721 {
1722 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1723 }
1724 if (in1.rows == in0.rows && in1.cols == in0.cols)
1725 {
1726 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1727 }
1728 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1729 }
1730 case TIType::UINT16 :
1731 {
1732 if (in0.rows == 1 && in0.cols == 1)
1733 {
1734 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1735 }
1736 if (in1.rows == 1 && in1.cols == 1)
1737 {
1738 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1739 }
1740 if (in1.rows == in0.rows && in1.cols == in0.cols)
1741 {
1742 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1743 }
1744 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1745 }
1746 case TIType::UINT32 :
1747 {
1748 if (in0.rows == 1 && in0.cols == 1)
1749 {
1750 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1751 }
1752 if (in1.rows == 1 && in1.cols == 1)
1753 {
1754 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1755 }
1756 if (in1.rows == in0.rows && in1.cols == in0.cols)
1757 {
1758 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1759 }
1760 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1761 }
1762 case TIType::UINT64 :
1763 {
1764 if (in0.rows == 1 && in0.cols == 1)
1765 {
1766 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1767 }
1768 if (in1.rows == 1 && in1.cols == 1)
1769 {
1770 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1771 }
1772 if (in1.rows == in0.rows && in1.cols == in0.cols)
1773 {
1774 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1775 }
1776 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1777 }
1778 case TIType::UINT8 :
1779 {
1780 if (in0.rows == 1 && in0.cols == 1)
1781 {
1782 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1783 }
1784 if (in1.rows == 1 && in1.cols == 1)
1785 {
1786 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1787 }
1788 if (in1.rows == in0.rows && in1.cols == in0.cols)
1789 {
1790 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1791 }
1792 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1793 }
1794 default :
1795 return TIType(gvn);
1796 }
1797 }
1798 case TIType::UINT16 :
1799 {
1800 switch (in1.type)
1801 {
1802 case TIType::EMPTY :
1803 {
1804 if (in0.rows == 1 && in0.cols == 1)
1805 {
1806 return TIType(gvn, TIType::BOOLEAN, 1, 1);
1807 }
1808 return TIType(gvn);
1809 }
1810 case TIType::BOOLEAN :
1811 {
1812 if (in0.rows == 1 && in0.cols == 1)
1813 {
1814 return in1;
1815 }
1816 if (in1.rows == 1 && in1.cols == 1)
1817 {
1818 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1819 }
1820 if (in1.rows == in0.rows && in1.cols == in0.cols)
1821 {
1822 return in1;
1823 }
1824 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1825 }
1826 case TIType::COMPLEX :
1827 {
1828 if (in0.rows == 1 && in0.cols == 1)
1829 {
1830 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1831 }
1832 if (in1.rows == 1 && in1.cols == 1)
1833 {
1834 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1835 }
1836 if (in1.rows == in0.rows && in1.cols == in0.cols)
1837 {
1838 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1839 }
1840 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1841 }
1842 case TIType::DOUBLE :
1843 {
1844 if (in0.rows == 1 && in0.cols == 1)
1845 {
1846 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1847 }
1848 if (in1.rows == 1 && in1.cols == 1)
1849 {
1850 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1851 }
1852 if (in1.rows == in0.rows && in1.cols == in0.cols)
1853 {
1854 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1855 }
1856 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1857 }
1858 case TIType::INT16 :
1859 {
1860 if (in0.rows == 1 && in0.cols == 1)
1861 {
1862 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1863 }
1864 if (in1.rows == 1 && in1.cols == 1)
1865 {
1866 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1867 }
1868 if (in1.rows == in0.rows && in1.cols == in0.cols)
1869 {
1870 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1871 }
1872 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1873 }
1874 case TIType::INT32 :
1875 {
1876 if (in0.rows == 1 && in0.cols == 1)
1877 {
1878 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1879 }
1880 if (in1.rows == 1 && in1.cols == 1)
1881 {
1882 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1883 }
1884 if (in1.rows == in0.rows && in1.cols == in0.cols)
1885 {
1886 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1887 }
1888 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1889 }
1890 case TIType::INT64 :
1891 {
1892 if (in0.rows == 1 && in0.cols == 1)
1893 {
1894 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1895 }
1896 if (in1.rows == 1 && in1.cols == 1)
1897 {
1898 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1899 }
1900 if (in1.rows == in0.rows && in1.cols == in0.cols)
1901 {
1902 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1903 }
1904 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1905 }
1906 case TIType::INT8 :
1907 {
1908 if (in0.rows == 1 && in0.cols == 1)
1909 {
1910 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1911 }
1912 if (in1.rows == 1 && in1.cols == 1)
1913 {
1914 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1915 }
1916 if (in1.rows == in0.rows && in1.cols == in0.cols)
1917 {
1918 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1919 }
1920 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1921 }
1922 case TIType::STRING :
1923 {
1924 if (in0.rows == 1 && in0.cols == 1)
1925 {
1926 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1927 }
1928 if (in1.rows == 1 && in1.cols == 1)
1929 {
1930 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1931 }
1932 if (in1.rows == in0.rows && in1.cols == in0.cols)
1933 {
1934 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1935 }
1936 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1937 }
1938 case TIType::UINT16 :
1939 {
1940 if (in0.rows == 1 && in0.cols == 1)
1941 {
1942 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1943 }
1944 if (in1.rows == 1 && in1.cols == 1)
1945 {
1946 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1947 }
1948 if (in1.rows == in0.rows && in1.cols == in0.cols)
1949 {
1950 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1951 }
1952 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1953 }
1954 case TIType::UINT32 :
1955 {
1956 if (in0.rows == 1 && in0.cols == 1)
1957 {
1958 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1959 }
1960 if (in1.rows == 1 && in1.cols == 1)
1961 {
1962 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1963 }
1964 if (in1.rows == in0.rows && in1.cols == in0.cols)
1965 {
1966 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1967 }
1968 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1969 }
1970 case TIType::UINT64 :
1971 {
1972 if (in0.rows == 1 && in0.cols == 1)
1973 {
1974 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1975 }
1976 if (in1.rows == 1 && in1.cols == 1)
1977 {
1978 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1979 }
1980 if (in1.rows == in0.rows && in1.cols == in0.cols)
1981 {
1982 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1983 }
1984 return TIType(gvn, TIType::BOOLEAN, -2, -2);
1985 }
1986 case TIType::UINT8 :
1987 {
1988 if (in0.rows == 1 && in0.cols == 1)
1989 {
1990 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
1991 }
1992 if (in1.rows == 1 && in1.cols == 1)
1993 {
1994 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1995 }
1996 if (in1.rows == in0.rows && in1.cols == in0.cols)
1997 {
1998 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
1999 }
2000 return TIType(gvn, TIType::BOOLEAN, -2, -2);
2001 }
2002 default :
2003 return TIType(gvn);
2004 }
2005 }
2006 case TIType::UINT32 :
2007 {
2008 switch (in1.type)
2009 {
2010 case TIType::EMPTY :
2011 {
2012 if (in0.rows == 1 && in0.cols == 1)
2013 {
2014 return TIType(gvn, TIType::BOOLEAN, 1, 1);
2015 }
2016 return TIType(gvn);
2017 }
2018 case TIType::BOOLEAN :
2019 {
2020 if (in0.rows == 1 && in0.cols == 1)
2021 {
2022 return in1;
2023 }
2024 if (in1.rows == 1 && in1.cols == 1)
2025 {
2026 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2027 }
2028 if (in1.rows == in0.rows && in1.cols == in0.cols)
2029 {
2030 return in1;
2031 }
2032 return TIType(gvn, TIType::BOOLEAN, -2, -2);
2033 }
2034 case TIType::COMPLEX :
2035 {
2036 if (in0.rows == 1 && in0.cols == 1)
2037 {
2038 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
2039 }
2040 if (in1.rows == 1 && in1.cols == 1)
2041 {
2042 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2043 }
2044 if (in1.rows == in0.rows && in1.cols == in0.cols)
2045 {
2046 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2047 }
2048 return TIType(gvn, TIType::BOOLEAN, -2, -2);
2049 }
2050 case TIType::DOUBLE :
2051 {
2052 if (in0.rows == 1 && in0.cols == 1)
2053 {
2054 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
2055 }
2056 if (in1.rows == 1 && in1.cols == 1)
2057 {
2058 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2059 }
2060 if (in1.rows == in0.rows && in1.cols == in0.cols)
2061 {
2062 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2063 }
2064 return TIType(gvn, TIType::BOOLEAN, -2, -2);
2065 }
2066 case TIType::INT16 :
2067 {
2068 if (in0.rows == 1 && in0.cols == 1)
2069 {
2070 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
2071 }
2072 if (in1.rows == 1 && in1.cols == 1)
2073 {
2074 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2075 }
2076 if (in1.rows == in0.rows && in1.cols == in0.cols)
2077 {
2078 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2079 }
2080 return TIType(gvn, TIType::BOOLEAN, -2, -2);
2081 }
2082 case TIType::INT32 :
2083 {
2084 if (in0.rows == 1 && in0.cols == 1)
2085 {
2086 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
2087 }
2088 if (in1.rows == 1 && in1.cols == 1)
2089 {
2090 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2091 }
2092 if (in1.rows == in0.rows && in1.cols == in0.cols)
2093 {
2094 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2095 }
2096 return TIType(gvn, TIType::BOOLEAN, -2, -2);
2097 }
2098 case TIType::INT64 :
2099 {
2100 if (in0.rows == 1 && in0.cols == 1)
2101 {
2102 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
2103 }
2104 if (in1.rows == 1 && in1.cols == 1)
2105 {
2106 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2107 }
2108 if (in1.rows == in0.rows && in1.cols == in0.cols)
2109 {
2110 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2111 }
2112 return TIType(gvn, TIType::BOOLEAN, -2, -2);
2113 }
2114 case TIType::INT8 :
2115 {
2116 if (in0.rows == 1 && in0.cols == 1)
2117 {
2118 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
2119 }
2120 if (in1.rows == 1 && in1.cols == 1)
2121 {
2122 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2123 }
2124 if (in1.rows == in0.rows && in1.cols == in0.cols)
2125 {
2126 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2127 }
2128 return TIType(gvn, TIType::BOOLEAN, -2, -2);
2129 }
2130 case TIType::STRING :
2131 {
2132 if (in0.rows == 1 && in0.cols == 1)
2133 {
2134 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
2135 }
2136 if (in1.rows == 1 && in1.cols == 1)
2137 {
2138 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2139 }
2140 if (in1.rows == in0.rows && in1.cols == in0.cols)
2141 {
2142 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2143 }
2144 return TIType(gvn, TIType::BOOLEAN, -2, -2);
2145 }
2146 case TIType::UINT16 :
2147 {
2148 if (in0.rows == 1 && in0.cols == 1)
2149 {
2150 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
2151 }
2152 if (in1.rows == 1 && in1.cols == 1)
2153 {
2154 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2155 }
2156 if (in1.rows == in0.rows && in1.cols == in0.cols)
2157 {
2158 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2159 }
2160 return TIType(gvn, TIType::BOOLEAN, -2, -2);
2161 }
2162 case TIType::UINT32 :
2163 {
2164 if (in0.rows == 1 && in0.cols == 1)
2165 {
2166 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
2167 }
2168 if (in1.rows == 1 && in1.cols == 1)
2169 {
2170 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2171 }
2172 if (in1.rows == in0.rows && in1.cols == in0.cols)
2173 {
2174 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2175 }
2176 return TIType(gvn, TIType::BOOLEAN, -2, -2);
2177 }
2178 case TIType::UINT64 :
2179 {
2180 if (in0.rows == 1 && in0.cols == 1)
2181 {
2182 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
2183 }
2184 if (in1.rows == 1 && in1.cols == 1)
2185 {
2186 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2187 }
2188 if (in1.rows == in0.rows && in1.cols == in0.cols)
2189 {
2190 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2191 }
2192 return TIType(gvn, TIType::BOOLEAN, -2, -2);
2193 }
2194 case TIType::UINT8 :
2195 {
2196 if (in0.rows == 1 && in0.cols == 1)
2197 {
2198 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
2199 }
2200 if (in1.rows == 1 && in1.cols == 1)
2201 {
2202 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2203 }
2204 if (in1.rows == in0.rows && in1.cols == in0.cols)
2205 {
2206 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2207 }
2208 return TIType(gvn, TIType::BOOLEAN, -2, -2);
2209 }
2210 default :
2211 return TIType(gvn);
2212 }
2213 }
2214 case TIType::UINT64 :
2215 {
2216 switch (in1.type)
2217 {
2218 case TIType::EMPTY :
2219 {
2220 if (in0.rows == 1 && in0.cols == 1)
2221 {
2222 return TIType(gvn, TIType::BOOLEAN, 1, 1);
2223 }
2224 return TIType(gvn);
2225 }
2226 case TIType::BOOLEAN :
2227 {
2228 if (in0.rows == 1 && in0.cols == 1)
2229 {
2230 return in1;
2231 }
2232 if (in1.rows == 1 && in1.cols == 1)
2233 {
2234 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2235 }
2236 if (in1.rows == in0.rows && in1.cols == in0.cols)
2237 {
2238 return in1;
2239 }
2240 return TIType(gvn, TIType::BOOLEAN, -2, -2);
2241 }
2242 case TIType::COMPLEX :
2243 {
2244 if (in0.rows == 1 && in0.cols == 1)
2245 {
2246 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
2247 }
2248 if (in1.rows == 1 && in1.cols == 1)
2249 {
2250 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2251 }
2252 if (in1.rows == in0.rows && in1.cols == in0.cols)
2253 {
2254 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2255 }
2256 return TIType(gvn, TIType::BOOLEAN, -2, -2);
2257 }
2258 case TIType::DOUBLE :
2259 {
2260 if (in0.rows == 1 && in0.cols == 1)
2261 {
2262 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
2263 }
2264 if (in1.rows == 1 && in1.cols == 1)
2265 {
2266 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2267 }
2268 if (in1.rows == in0.rows && in1.cols == in0.cols)
2269 {
2270 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2271 }
2272 return TIType(gvn, TIType::BOOLEAN, -2, -2);
2273 }
2274 case TIType::INT16 :
2275 {
2276 if (in0.rows == 1 && in0.cols == 1)
2277 {
2278 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
2279 }
2280 if (in1.rows == 1 && in1.cols == 1)
2281 {
2282 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2283 }
2284 if (in1.rows == in0.rows && in1.cols == in0.cols)
2285 {
2286 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2287 }
2288 return TIType(gvn, TIType::BOOLEAN, -2, -2);
2289 }
2290 case TIType::INT32 :
2291 {
2292 if (in0.rows == 1 && in0.cols == 1)
2293 {
2294 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
2295 }
2296 if (in1.rows == 1 && in1.cols == 1)
2297 {
2298 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2299 }
2300 if (in1.rows == in0.rows && in1.cols == in0.cols)
2301 {
2302 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2303 }
2304 return TIType(gvn, TIType::BOOLEAN, -2, -2);
2305 }
2306 case TIType::INT64 :
2307 {
2308 if (in0.rows == 1 && in0.cols == 1)
2309 {
2310 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
2311 }
2312 if (in1.rows == 1 && in1.cols == 1)
2313 {
2314 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2315 }
2316 if (in1.rows == in0.rows && in1.cols == in0.cols)
2317 {
2318 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2319 }
2320 return TIType(gvn, TIType::BOOLEAN, -2, -2);
2321 }
2322 case TIType::INT8 :
2323 {
2324 if (in0.rows == 1 && in0.cols == 1)
2325 {
2326 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
2327 }
2328 if (in1.rows == 1 && in1.cols == 1)
2329 {
2330 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2331 }
2332 if (in1.rows == in0.rows && in1.cols == in0.cols)
2333 {
2334 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2335 }
2336 return TIType(gvn, TIType::BOOLEAN, -2, -2);
2337 }
2338 case TIType::STRING :
2339 {
2340 if (in0.rows == 1 && in0.cols == 1)
2341 {
2342 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
2343 }
2344 if (in1.rows == 1 && in1.cols == 1)
2345 {
2346 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2347 }
2348 if (in1.rows == in0.rows && in1.cols == in0.cols)
2349 {
2350 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2351 }
2352 return TIType(gvn, TIType::BOOLEAN, -2, -2);
2353 }
2354 case TIType::UINT16 :
2355 {
2356 if (in0.rows == 1 && in0.cols == 1)
2357 {
2358 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
2359 }
2360 if (in1.rows == 1 && in1.cols == 1)
2361 {
2362 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2363 }
2364 if (in1.rows == in0.rows && in1.cols == in0.cols)
2365 {
2366 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2367 }
2368 return TIType(gvn, TIType::BOOLEAN, -2, -2);
2369 }
2370 case TIType::UINT32 :
2371 {
2372 if (in0.rows == 1 && in0.cols == 1)
2373 {
2374 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
2375 }
2376 if (in1.rows == 1 && in1.cols == 1)
2377 {
2378 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2379 }
2380 if (in1.rows == in0.rows && in1.cols == in0.cols)
2381 {
2382 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2383 }
2384 return TIType(gvn, TIType::BOOLEAN, -2, -2);
2385 }
2386 case TIType::UINT64 :
2387 {
2388 if (in0.rows == 1 && in0.cols == 1)
2389 {
2390 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
2391 }
2392 if (in1.rows == 1 && in1.cols == 1)
2393 {
2394 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2395 }
2396 if (in1.rows == in0.rows && in1.cols == in0.cols)
2397 {
2398 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2399 }
2400 return TIType(gvn, TIType::BOOLEAN, -2, -2);
2401 }
2402 case TIType::UINT8 :
2403 {
2404 if (in0.rows == 1 && in0.cols == 1)
2405 {
2406 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
2407 }
2408 if (in1.rows == 1 && in1.cols == 1)
2409 {
2410 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2411 }
2412 if (in1.rows == in0.rows && in1.cols == in0.cols)
2413 {
2414 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2415 }
2416 return TIType(gvn, TIType::BOOLEAN, -2, -2);
2417 }
2418 default :
2419 return TIType(gvn);
2420 }
2421 }
2422 case TIType::UINT8 :
2423 {
2424 switch (in1.type)
2425 {
2426 case TIType::EMPTY :
2427 {
2428 if (in0.rows == 1 && in0.cols == 1)
2429 {
2430 return TIType(gvn, TIType::BOOLEAN, 1, 1);
2431 }
2432 return TIType(gvn);
2433 }
2434 case TIType::BOOLEAN :
2435 {
2436 if (in0.rows == 1 && in0.cols == 1)
2437 {
2438 return in1;
2439 }
2440 if (in1.rows == 1 && in1.cols == 1)
2441 {
2442 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2443 }
2444 if (in1.rows == in0.rows && in1.cols == in0.cols)
2445 {
2446 return in1;
2447 }
2448 return TIType(gvn, TIType::BOOLEAN, -2, -2);
2449 }
2450 case TIType::COMPLEX :
2451 {
2452 if (in0.rows == 1 && in0.cols == 1)
2453 {
2454 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
2455 }
2456 if (in1.rows == 1 && in1.cols == 1)
2457 {
2458 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2459 }
2460 if (in1.rows == in0.rows && in1.cols == in0.cols)
2461 {
2462 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2463 }
2464 return TIType(gvn, TIType::BOOLEAN, -2, -2);
2465 }
2466 case TIType::DOUBLE :
2467 {
2468 if (in0.rows == 1 && in0.cols == 1)
2469 {
2470 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
2471 }
2472 if (in1.rows == 1 && in1.cols == 1)
2473 {
2474 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2475 }
2476 if (in1.rows == in0.rows && in1.cols == in0.cols)
2477 {
2478 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2479 }
2480 return TIType(gvn, TIType::BOOLEAN, -2, -2);
2481 }
2482 case TIType::INT16 :
2483 {
2484 if (in0.rows == 1 && in0.cols == 1)
2485 {
2486 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
2487 }
2488 if (in1.rows == 1 && in1.cols == 1)
2489 {
2490 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2491 }
2492 if (in1.rows == in0.rows && in1.cols == in0.cols)
2493 {
2494 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2495 }
2496 return TIType(gvn, TIType::BOOLEAN, -2, -2);
2497 }
2498 case TIType::INT32 :
2499 {
2500 if (in0.rows == 1 && in0.cols == 1)
2501 {
2502 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
2503 }
2504 if (in1.rows == 1 && in1.cols == 1)
2505 {
2506 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2507 }
2508 if (in1.rows == in0.rows && in1.cols == in0.cols)
2509 {
2510 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2511 }
2512 return TIType(gvn, TIType::BOOLEAN, -2, -2);
2513 }
2514 case TIType::INT64 :
2515 {
2516 if (in0.rows == 1 && in0.cols == 1)
2517 {
2518 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
2519 }
2520 if (in1.rows == 1 && in1.cols == 1)
2521 {
2522 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2523 }
2524 if (in1.rows == in0.rows && in1.cols == in0.cols)
2525 {
2526 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2527 }
2528 return TIType(gvn, TIType::BOOLEAN, -2, -2);
2529 }
2530 case TIType::INT8 :
2531 {
2532 if (in0.rows == 1 && in0.cols == 1)
2533 {
2534 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
2535 }
2536 if (in1.rows == 1 && in1.cols == 1)
2537 {
2538 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2539 }
2540 if (in1.rows == in0.rows && in1.cols == in0.cols)
2541 {
2542 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2543 }
2544 return TIType(gvn, TIType::BOOLEAN, -2, -2);
2545 }
2546 case TIType::STRING :
2547 {
2548 if (in0.rows == 1 && in0.cols == 1)
2549 {
2550 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
2551 }
2552 if (in1.rows == 1 && in1.cols == 1)
2553 {
2554 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2555 }
2556 if (in1.rows == in0.rows && in1.cols == in0.cols)
2557 {
2558 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2559 }
2560 return TIType(gvn, TIType::BOOLEAN, -2, -2);
2561 }
2562 case TIType::UINT16 :
2563 {
2564 if (in0.rows == 1 && in0.cols == 1)
2565 {
2566 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
2567 }
2568 if (in1.rows == 1 && in1.cols == 1)
2569 {
2570 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2571 }
2572 if (in1.rows == in0.rows && in1.cols == in0.cols)
2573 {
2574 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2575 }
2576 return TIType(gvn, TIType::BOOLEAN, -2, -2);
2577 }
2578 case TIType::UINT32 :
2579 {
2580 if (in0.rows == 1 && in0.cols == 1)
2581 {
2582 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
2583 }
2584 if (in1.rows == 1 && in1.cols == 1)
2585 {
2586 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2587 }
2588 if (in1.rows == in0.rows && in1.cols == in0.cols)
2589 {
2590 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2591 }
2592 return TIType(gvn, TIType::BOOLEAN, -2, -2);
2593 }
2594 case TIType::UINT64 :
2595 {
2596 if (in0.rows == 1 && in0.cols == 1)
2597 {
2598 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
2599 }
2600 if (in1.rows == 1 && in1.cols == 1)
2601 {
2602 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2603 }
2604 if (in1.rows == in0.rows && in1.cols == in0.cols)
2605 {
2606 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2607 }
2608 return TIType(gvn, TIType::BOOLEAN, -2, -2);
2609 }
2610 case TIType::UINT8 :
2611 {
2612 if (in0.rows == 1 && in0.cols == 1)
2613 {
2614 return TIType(gvn, TIType::BOOLEAN, in1.rows, in1.cols);
2615 }
2616 if (in1.rows == 1 && in1.cols == 1)
2617 {
2618 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2619 }
2620 if (in1.rows == in0.rows && in1.cols == in0.cols)
2621 {
2622 return TIType(gvn, TIType::BOOLEAN, in0.rows, in0.cols);
2623 }
2624 return TIType(gvn, TIType::BOOLEAN, -2, -2);
2625 }
2626 default :
2627 return TIType(gvn);
2628 }
2629 }
2630 default :
2631 return TIType(gvn);
2632 }
2633 }
2634
2635 } // namespace analysis