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