]> git.proxmox.com Git - rustc.git/blob - src/binaryen/test/passes/optimize-instructions.txt
New upstream version 1.23.0+dfsg1
[rustc.git] / src / binaryen / test / passes / optimize-instructions.txt
1 (module
2 (type $0 (func (param i32 i64)))
3 (type $1 (func))
4 (type $2 (func (result i32)))
5 (type $3 (func (param i32) (result i32)))
6 (type $4 (func (param i32 i32)))
7 (type $5 (func (param i32)))
8 (type $6 (func (param i32 i32) (result i32)))
9 (type $7 (func (param i64) (result i64)))
10 (type $8 (func (result i64)))
11 (memory $0 0)
12 (export "load-off-2" (func $load-off-2))
13 (func $f (; 0 ;) (type $0) (param $i1 i32) (param $i2 i64)
14 (if
15 (i32.eqz
16 (get_local $i1)
17 )
18 (drop
19 (i32.const 10)
20 )
21 )
22 (if
23 (get_local $i1)
24 (drop
25 (i32.const 12)
26 )
27 (drop
28 (i32.const 11)
29 )
30 )
31 (if
32 (i64.eqz
33 (get_local $i2)
34 )
35 (drop
36 (i32.const 11)
37 )
38 (drop
39 (i32.const 12)
40 )
41 )
42 (drop
43 (i32.le_s
44 (i32.const 1)
45 (i32.const 2)
46 )
47 )
48 (drop
49 (i32.lt_s
50 (i32.const 1)
51 (i32.const 2)
52 )
53 )
54 (drop
55 (i32.ge_s
56 (i32.const 1)
57 (i32.const 2)
58 )
59 )
60 (drop
61 (i32.gt_s
62 (i32.const 1)
63 (i32.const 2)
64 )
65 )
66 (drop
67 (i32.le_u
68 (i32.const 1)
69 (i32.const 2)
70 )
71 )
72 (drop
73 (i32.lt_u
74 (i32.const 1)
75 (i32.const 2)
76 )
77 )
78 (drop
79 (i32.ge_u
80 (i32.const 1)
81 (i32.const 2)
82 )
83 )
84 (drop
85 (i32.gt_u
86 (i32.const 1)
87 (i32.const 2)
88 )
89 )
90 (drop
91 (i32.eqz
92 (f32.gt
93 (f32.const 1)
94 (f32.const 2)
95 )
96 )
97 )
98 (drop
99 (i32.eqz
100 (f32.ge
101 (f32.const 1)
102 (f32.const 2)
103 )
104 )
105 )
106 (drop
107 (i32.eqz
108 (f32.lt
109 (f32.const 1)
110 (f32.const 2)
111 )
112 )
113 )
114 (drop
115 (i32.eqz
116 (f32.le
117 (f32.const 1)
118 (f32.const 2)
119 )
120 )
121 )
122 (drop
123 (i32.eqz
124 (f64.gt
125 (f64.const 1)
126 (f64.const 2)
127 )
128 )
129 )
130 (drop
131 (i32.eqz
132 (f64.ge
133 (f64.const 1)
134 (f64.const 2)
135 )
136 )
137 )
138 (drop
139 (i32.eqz
140 (f64.lt
141 (f64.const 1)
142 (f64.const 2)
143 )
144 )
145 )
146 (drop
147 (i32.eqz
148 (f64.le
149 (f64.const 1)
150 (f64.const 2)
151 )
152 )
153 )
154 (drop
155 (f32.ne
156 (f32.const 1)
157 (f32.const 2)
158 )
159 )
160 (drop
161 (f32.eq
162 (f32.const 1)
163 (f32.const 2)
164 )
165 )
166 (drop
167 (f64.ne
168 (f64.const 1)
169 (f64.const 2)
170 )
171 )
172 (drop
173 (f64.eq
174 (f64.const 1)
175 (f64.const 2)
176 )
177 )
178 (drop
179 (i32.eqz
180 (i32.const 100)
181 )
182 )
183 (drop
184 (i32.eq
185 (i32.const 0)
186 (i32.const 100)
187 )
188 )
189 (drop
190 (i32.eqz
191 (i32.const 0)
192 )
193 )
194 (if
195 (i32.const 123)
196 (nop)
197 )
198 (drop
199 (select
200 (i32.const 102)
201 (i32.const 101)
202 (get_local $i1)
203 )
204 )
205 (drop
206 (select
207 (tee_local $i1
208 (i32.const 103)
209 )
210 (tee_local $i1
211 (i32.const 104)
212 )
213 (i32.eqz
214 (get_local $i1)
215 )
216 )
217 )
218 (drop
219 (select
220 (i32.const 0)
221 (i32.const 1)
222 (i32.const 2)
223 )
224 )
225 )
226 (func $load-store (; 1 ;) (type $1)
227 (drop
228 (i32.load8_u
229 (i32.const 0)
230 )
231 )
232 (drop
233 (i32.load8_u
234 (i32.const 1)
235 )
236 )
237 (drop
238 (i32.and
239 (i32.load8_s
240 (i32.const 2)
241 )
242 (i32.const 254)
243 )
244 )
245 (drop
246 (i32.and
247 (i32.load8_u
248 (i32.const 3)
249 )
250 (i32.const 1)
251 )
252 )
253 (drop
254 (i32.load16_u
255 (i32.const 4)
256 )
257 )
258 (drop
259 (i32.load16_u
260 (i32.const 5)
261 )
262 )
263 (drop
264 (i32.and
265 (i32.load16_s
266 (i32.const 6)
267 )
268 (i32.const 65534)
269 )
270 )
271 (drop
272 (i32.and
273 (i32.load16_u
274 (i32.const 7)
275 )
276 (i32.const 1)
277 )
278 )
279 (i32.store8
280 (i32.const 8)
281 (i32.const -1)
282 )
283 (i32.store8
284 (i32.const 9)
285 (i32.and
286 (i32.const -2)
287 (i32.const 254)
288 )
289 )
290 (i32.store16
291 (i32.const 10)
292 (i32.const -3)
293 )
294 (i32.store16
295 (i32.const 11)
296 (i32.and
297 (i32.const -4)
298 (i32.const 65534)
299 )
300 )
301 (i64.store8
302 (i32.const 11)
303 (i64.const 1)
304 )
305 (i64.store16
306 (i32.const 11)
307 (i64.const 2)
308 )
309 (i64.store32
310 (i32.const 11)
311 (i64.const 3)
312 )
313 )
314 (func $and-neg1 (; 2 ;) (type $1)
315 (drop
316 (i32.const 100)
317 )
318 (drop
319 (i32.and
320 (i32.const 100)
321 (i32.const 1)
322 )
323 )
324 )
325 (func $and-pos1 (; 3 ;) (type $1)
326 (drop
327 (i32.eqz
328 (i32.const 1000)
329 )
330 )
331 (drop
332 (i32.eqz
333 (i32.const 1000)
334 )
335 )
336 (drop
337 (i32.and
338 (i32.const 100)
339 (i32.const 1)
340 )
341 )
342 (drop
343 (i32.lt_s
344 (i32.const 2000)
345 (i32.const 3000)
346 )
347 )
348 )
349 (func $canonicalize-binary (; 4 ;) (type $1)
350 (drop
351 (i32.and
352 (unreachable)
353 (i32.const 1)
354 )
355 )
356 (drop
357 (i32.and
358 (i32.const 1)
359 (unreachable)
360 )
361 )
362 (drop
363 (i32.div_s
364 (unreachable)
365 (i32.const 1)
366 )
367 )
368 (drop
369 (i32.div_s
370 (i32.const 1)
371 (unreachable)
372 )
373 )
374 )
375 (func $ne0 (; 5 ;) (type $2) (result i32)
376 (if
377 (call $ne0)
378 (nop)
379 )
380 (if
381 (call $ne0)
382 (nop)
383 )
384 (if
385 (i32.or
386 (call $ne0)
387 (call $ne0)
388 )
389 (nop)
390 )
391 (if
392 (i32.and
393 (i32.ne
394 (call $ne0)
395 (i32.const 0)
396 )
397 (i32.ne
398 (call $ne0)
399 (i32.const 0)
400 )
401 )
402 (nop)
403 )
404 (i32.const 1)
405 )
406 (func $recurse-bool (; 6 ;) (type $1)
407 (if
408 (if (result i32)
409 (i32.const 1)
410 (call $ne0)
411 (call $ne1)
412 )
413 (nop)
414 )
415 (if
416 (block $block (result i32)
417 (nop)
418 (call $ne0)
419 )
420 (nop)
421 )
422 )
423 (func $ne1 (; 7 ;) (type $2) (result i32)
424 (unreachable)
425 )
426 (func $load-off-2 (; 8 ;) (type $3) (param $0 i32) (result i32)
427 (i32.store
428 (i32.const 6)
429 (get_local $0)
430 )
431 (i32.store
432 (i32.const 6)
433 (get_local $0)
434 )
435 (i32.store offset=2
436 (i32.add
437 (get_local $0)
438 (i32.const 5)
439 )
440 (get_local $0)
441 )
442 (i32.store offset=2
443 (i32.add
444 (get_local $0)
445 (i32.const 7)
446 )
447 (get_local $0)
448 )
449 (i32.store offset=2
450 (i32.add
451 (get_local $0)
452 (i32.const -11)
453 )
454 (get_local $0)
455 )
456 (i32.store offset=2
457 (i32.add
458 (get_local $0)
459 (i32.const -13)
460 )
461 (get_local $0)
462 )
463 (i32.store
464 (i32.const 4)
465 (get_local $0)
466 )
467 (i32.store offset=2
468 (i32.const -2)
469 (get_local $0)
470 )
471 (i32.store
472 (i32.const 25)
473 (get_local $0)
474 )
475 (i32.store offset=2
476 (i32.const -25)
477 (get_local $0)
478 )
479 (drop
480 (i32.load
481 (i32.const 8)
482 )
483 )
484 (drop
485 (i32.load
486 (i32.const 8)
487 )
488 )
489 (drop
490 (i32.load offset=2
491 (i32.add
492 (get_local $0)
493 (i32.const 6)
494 )
495 )
496 )
497 (drop
498 (i32.load
499 (i32.const 10)
500 )
501 )
502 (i32.load offset=2
503 (i32.add
504 (get_local $0)
505 (i32.const 10)
506 )
507 )
508 )
509 (func $sign-ext (; 9 ;) (type $4) (param $0 i32) (param $1 i32)
510 (drop
511 (i32.eqz
512 (i32.and
513 (get_local $0)
514 (i32.const 255)
515 )
516 )
517 )
518 (drop
519 (i32.eqz
520 (i32.and
521 (get_local $0)
522 (i32.const 65535)
523 )
524 )
525 )
526 (drop
527 (i32.eqz
528 (i32.and
529 (get_local $0)
530 (i32.const 134217727)
531 )
532 )
533 )
534 (drop
535 (i32.eq
536 (i32.and
537 (get_local $0)
538 (i32.const 255)
539 )
540 (i32.const 100)
541 )
542 )
543 (drop
544 (i32.eq
545 (i32.and
546 (get_local $0)
547 (i32.const 255)
548 )
549 (i32.const -2147483648)
550 )
551 )
552 (drop
553 (i32.eq
554 (i32.and
555 (get_local $0)
556 (i32.const 255)
557 )
558 (i32.const 107)
559 )
560 )
561 (drop
562 (i32.eq
563 (i32.and
564 (get_local $0)
565 (i32.const 255)
566 )
567 (i32.and
568 (get_local $1)
569 (i32.const 255)
570 )
571 )
572 )
573 (drop
574 (i32.eq
575 (i32.and
576 (get_local $0)
577 (i32.const 65535)
578 )
579 (i32.and
580 (get_local $1)
581 (i32.const 65535)
582 )
583 )
584 )
585 (drop
586 (i32.eqz
587 (i32.shr_s
588 (i32.shl
589 (get_local $0)
590 (i32.const 24)
591 )
592 (i32.const 23)
593 )
594 )
595 )
596 (drop
597 (i32.eqz
598 (i32.shr_u
599 (i32.shl
600 (get_local $0)
601 (i32.const 24)
602 )
603 (i32.const 24)
604 )
605 )
606 )
607 (drop
608 (i32.lt_s
609 (i32.shr_s
610 (i32.shl
611 (get_local $0)
612 (i32.const 24)
613 )
614 (i32.const 24)
615 )
616 (i32.const 0)
617 )
618 )
619 )
620 (func $sign-ext-input (; 10 ;) (type $4) (param $0 i32) (param $1 i32)
621 (drop
622 (i32.const 100)
623 )
624 (drop
625 (i32.const 127)
626 )
627 (drop
628 (i32.shr_s
629 (i32.shl
630 (i32.const 128)
631 (i32.const 24)
632 )
633 (i32.const 24)
634 )
635 )
636 (drop
637 (i32.shr_s
638 (i32.shl
639 (get_local $0)
640 (i32.const 24)
641 )
642 (i32.const 24)
643 )
644 )
645 (drop
646 (i32.shr_s
647 (i32.shl
648 (unreachable)
649 (i32.const 24)
650 )
651 (i32.const 24)
652 )
653 )
654 (drop
655 (i32.shr_s
656 (i32.shl
657 (i32.div_s
658 (i32.const 1)
659 (i32.const 2)
660 )
661 (i32.const 24)
662 )
663 (i32.const 24)
664 )
665 )
666 (drop
667 (i32.and
668 (i32.const 127)
669 (i32.const 128)
670 )
671 )
672 (drop
673 (i32.shr_s
674 (i32.shl
675 (i32.and
676 (i32.const 128)
677 (i32.const 129)
678 )
679 (i32.const 24)
680 )
681 (i32.const 24)
682 )
683 )
684 (drop
685 (i32.xor
686 (i32.const 127)
687 (i32.const 126)
688 )
689 )
690 (drop
691 (i32.shr_s
692 (i32.shl
693 (i32.xor
694 (i32.const 127)
695 (i32.const 128)
696 )
697 (i32.const 24)
698 )
699 (i32.const 24)
700 )
701 )
702 (drop
703 (i32.or
704 (i32.const 127)
705 (i32.const 126)
706 )
707 )
708 (drop
709 (i32.shr_s
710 (i32.shl
711 (i32.or
712 (i32.const 127)
713 (i32.const 128)
714 )
715 (i32.const 24)
716 )
717 (i32.const 24)
718 )
719 )
720 (drop
721 (i32.shr_s
722 (i32.shl
723 (i32.const 32)
724 (i32.const 26)
725 )
726 (i32.const 24)
727 )
728 )
729 (drop
730 (i32.shl
731 (i32.const 32)
732 (i32.const 1)
733 )
734 )
735 (drop
736 (i32.shr_s
737 (i32.shl
738 (i32.const 32)
739 (i32.const 27)
740 )
741 (i32.const 24)
742 )
743 )
744 (drop
745 (i32.shr_s
746 (i32.shl
747 (i32.shr_u
748 (i32.const 256)
749 (i32.const 1)
750 )
751 (i32.const 24)
752 )
753 (i32.const 24)
754 )
755 )
756 (drop
757 (i32.shr_u
758 (i32.const 256)
759 (i32.const 2)
760 )
761 )
762 (drop
763 (i32.shr_u
764 (i32.const 128)
765 (i32.const 35)
766 )
767 )
768 (drop
769 (i32.shr_s
770 (i32.shl
771 (i32.shr_s
772 (i32.const 256)
773 (i32.const 1)
774 )
775 (i32.const 24)
776 )
777 (i32.const 24)
778 )
779 )
780 (drop
781 (i32.shr_s
782 (i32.const 256)
783 (i32.const 2)
784 )
785 )
786 (drop
787 (i32.shr_s
788 (i32.const 128)
789 (i32.const 35)
790 )
791 )
792 (drop
793 (i32.shr_s
794 (i32.shl
795 (i32.shr_s
796 (i32.const -1)
797 (i32.const 32)
798 )
799 (i32.const 24)
800 )
801 (i32.const 24)
802 )
803 )
804 (drop
805 (i32.shr_s
806 (i32.and
807 (i32.const -1)
808 (i32.const 2147483647)
809 )
810 (i32.const 31)
811 )
812 )
813 (drop
814 (i32.ne
815 (i32.const -1)
816 (i32.const -1)
817 )
818 )
819 (drop
820 (f32.le
821 (f32.const -1)
822 (f32.const -1)
823 )
824 )
825 (drop
826 (i32.clz
827 (i32.const 0)
828 )
829 )
830 (drop
831 (i32.shr_s
832 (i32.shl
833 (i32.clz
834 (i32.const 0)
835 )
836 (i32.const 26)
837 )
838 (i32.const 24)
839 )
840 )
841 (drop
842 (i32.shr_s
843 (i32.shl
844 (i32.clz
845 (i32.const 0)
846 )
847 (i32.const 27)
848 )
849 (i32.const 24)
850 )
851 )
852 (drop
853 (i32.wrap/i64
854 (i64.clz
855 (i64.const 0)
856 )
857 )
858 )
859 (drop
860 (i32.shr_s
861 (i32.shl
862 (i32.wrap/i64
863 (i64.clz
864 (i64.const 0)
865 )
866 )
867 (i32.const 25)
868 )
869 (i32.const 24)
870 )
871 )
872 (drop
873 (i32.shr_s
874 (i32.shl
875 (i32.wrap/i64
876 (i64.clz
877 (i64.const 0)
878 )
879 )
880 (i32.const 26)
881 )
882 (i32.const 24)
883 )
884 )
885 (drop
886 (i32.eqz
887 (i32.const -1)
888 )
889 )
890 (drop
891 (i32.shr_s
892 (i32.shl
893 (i32.shr_u
894 (i32.wrap/i64
895 (i64.const -1)
896 )
897 (i32.const 24)
898 )
899 (i32.const 24)
900 )
901 (i32.const 24)
902 )
903 )
904 (drop
905 (i32.shr_u
906 (i32.wrap/i64
907 (i64.const -1)
908 )
909 (i32.const 25)
910 )
911 )
912 (drop
913 (i32.shr_s
914 (i32.shl
915 (i32.shr_u
916 (i32.wrap/i64
917 (i64.extend_s/i32
918 (i32.const -1)
919 )
920 )
921 (i32.const 24)
922 )
923 (i32.const 24)
924 )
925 (i32.const 24)
926 )
927 )
928 (drop
929 (i32.shr_u
930 (i32.wrap/i64
931 (i64.extend_s/i32
932 (i32.const -1)
933 )
934 )
935 (i32.const 25)
936 )
937 )
938 (drop
939 (i32.shr_s
940 (i32.shl
941 (i32.xor
942 (i32.le_u
943 (get_local $0)
944 (i32.const 2)
945 )
946 (get_local $0)
947 )
948 (i32.const 24)
949 )
950 (i32.const 24)
951 )
952 )
953 )
954 (func $linear-sums (; 11 ;) (type $4) (param $0 i32) (param $1 i32)
955 (drop
956 (i32.add
957 (get_local $1)
958 (i32.shl
959 (get_local $0)
960 (i32.const 4)
961 )
962 )
963 )
964 (drop
965 (i32.add
966 (i32.add
967 (get_local $1)
968 (i32.shl
969 (get_local $0)
970 (i32.const 3)
971 )
972 )
973 (i32.const 12)
974 )
975 )
976 (drop
977 (i32.const 4)
978 )
979 (drop
980 (i32.const 18)
981 )
982 (drop
983 (i32.const 6)
984 )
985 (drop
986 (i32.const -4)
987 )
988 (drop
989 (i32.const 2)
990 )
991 (drop
992 (i32.const 1)
993 )
994 (drop
995 (i32.const 26)
996 )
997 (drop
998 (i32.const -20)
999 )
1000 (drop
1001 (i32.const 22)
1002 )
1003 (drop
1004 (i32.add
1005 (i32.shl
1006 (i32.const 1)
1007 (get_local $0)
1008 )
1009 (i32.const 14)
1010 )
1011 )
1012 (drop
1013 (i32.add
1014 (i32.shl
1015 (get_local $1)
1016 (i32.const 3)
1017 )
1018 (i32.const -66)
1019 )
1020 )
1021 (drop
1022 (i32.const 44)
1023 )
1024 (drop
1025 (i32.add
1026 (i32.mul
1027 (get_local $0)
1028 (i32.const 10)
1029 )
1030 (i32.const 14)
1031 )
1032 )
1033 (drop
1034 (i32.add
1035 (i32.mul
1036 (get_local $0)
1037 (i32.const 2)
1038 )
1039 (i32.const 34)
1040 )
1041 )
1042 (drop
1043 (get_local $0)
1044 )
1045 )
1046 (func $almost-sign-ext (; 12 ;) (type $4) (param $0 i32) (param $0 i32)
1047 (drop
1048 (i32.shr_s
1049 (i32.shl
1050 (i32.const 100)
1051 (i32.const 25)
1052 )
1053 (i32.const 24)
1054 )
1055 )
1056 (drop
1057 (i32.shl
1058 (i32.const 50)
1059 (i32.const 1)
1060 )
1061 )
1062 )
1063 (func $squaring (; 13 ;) (type $4) (param $0 i32) (param $1 i32)
1064 (drop
1065 (i32.and
1066 (get_local $0)
1067 (i32.const 8)
1068 )
1069 )
1070 (drop
1071 (i32.and
1072 (i32.and
1073 (get_local $0)
1074 (i32.const 11)
1075 )
1076 (get_local $0)
1077 )
1078 )
1079 (drop
1080 (i32.and
1081 (get_local $0)
1082 (i32.const 8)
1083 )
1084 )
1085 (drop
1086 (i32.or
1087 (get_local $0)
1088 (i32.const 203)
1089 )
1090 )
1091 (drop
1092 (i32.shl
1093 (get_local $0)
1094 (i32.const 19)
1095 )
1096 )
1097 (drop
1098 (i32.shr_s
1099 (get_local $0)
1100 (i32.const 19)
1101 )
1102 )
1103 (drop
1104 (i32.shr_u
1105 (get_local $0)
1106 (i32.const 19)
1107 )
1108 )
1109 (drop
1110 (i32.shr_u
1111 (i32.shr_s
1112 (get_local $0)
1113 (i32.const 11)
1114 )
1115 (i32.const 200)
1116 )
1117 )
1118 )
1119 (func $sign-ext-ne (; 14 ;) (type $4) (param $0 i32) (param $1 i32)
1120 (drop
1121 (i32.ne
1122 (i32.and
1123 (get_local $0)
1124 (i32.const 255)
1125 )
1126 (i32.const -2147483648)
1127 )
1128 )
1129 (drop
1130 (i32.ne
1131 (i32.and
1132 (get_local $0)
1133 (i32.const 255)
1134 )
1135 (i32.const -2147483648)
1136 )
1137 )
1138 (drop
1139 (i32.ne
1140 (i32.and
1141 (get_local $0)
1142 (i32.const 255)
1143 )
1144 (i32.const 107)
1145 )
1146 )
1147 (drop
1148 (i32.ne
1149 (i32.and
1150 (get_local $0)
1151 (i32.const 255)
1152 )
1153 (i32.const 111)
1154 )
1155 )
1156 (drop
1157 (i32.ne
1158 (i32.and
1159 (get_local $0)
1160 (i32.const 255)
1161 )
1162 (i32.and
1163 (get_local $1)
1164 (i32.const 255)
1165 )
1166 )
1167 )
1168 )
1169 (func $sign-ext-eqz (; 15 ;) (type $4) (param $0 i32) (param $1 i32)
1170 (drop
1171 (i32.eqz
1172 (i32.and
1173 (get_local $0)
1174 (i32.const 255)
1175 )
1176 )
1177 )
1178 )
1179 (func $sign-ext-boolean (; 16 ;) (type $4) (param $0 i32) (param $1 i32)
1180 (drop
1181 (if (result i32)
1182 (i32.and
1183 (get_local $0)
1184 (i32.const 255)
1185 )
1186 (i32.const 100)
1187 (i32.const 200)
1188 )
1189 )
1190 )
1191 (func $add-sub-zero (; 17 ;) (type $4) (param $0 i32) (param $1 i32)
1192 (drop
1193 (get_local $0)
1194 )
1195 (drop
1196 (get_local $0)
1197 )
1198 )
1199 (func $store-signext (; 18 ;) (type $5) (param $0 i32)
1200 (i32.store8
1201 (i32.const 8)
1202 (get_local $0)
1203 )
1204 (i32.store8
1205 (i32.const 8)
1206 (i32.shr_s
1207 (i32.shl
1208 (get_local $0)
1209 (i32.const 25)
1210 )
1211 (i32.const 25)
1212 )
1213 )
1214 (i32.store8
1215 (i32.const 8)
1216 (get_local $0)
1217 )
1218 (i32.store16
1219 (i32.const 8)
1220 (get_local $0)
1221 )
1222 (i32.store16
1223 (i32.const 8)
1224 (i32.shr_s
1225 (i32.shl
1226 (get_local $0)
1227 (i32.const 17)
1228 )
1229 (i32.const 17)
1230 )
1231 )
1232 (i32.store16
1233 (i32.const 8)
1234 (get_local $0)
1235 )
1236 (i32.store
1237 (i32.const 8)
1238 (i32.shr_s
1239 (i32.shl
1240 (get_local $0)
1241 (i32.const 16)
1242 )
1243 (i32.const 16)
1244 )
1245 )
1246 (i32.store
1247 (i32.const 8)
1248 (i32.shr_s
1249 (i32.shl
1250 (get_local $0)
1251 (i32.const 8)
1252 )
1253 (i32.const 8)
1254 )
1255 )
1256 )
1257 (func $sign-ext-tee (; 19 ;) (type $4) (param $0 i32) (param $1 i32)
1258 (drop
1259 (i32.shr_s
1260 (i32.shl
1261 (tee_local $0
1262 (i32.const 128)
1263 )
1264 (i32.const 24)
1265 )
1266 (i32.const 24)
1267 )
1268 )
1269 (drop
1270 (tee_local $0
1271 (i32.const 127)
1272 )
1273 )
1274 )
1275 (func $sign-ext-load (; 20 ;) (type $4) (param $0 i32) (param $1 i32)
1276 (drop
1277 (i32.load8_s
1278 (i32.const 256)
1279 )
1280 )
1281 (drop
1282 (i32.shr_s
1283 (i32.shl
1284 (i32.shr_u
1285 (i32.load8_s
1286 (i32.const 256)
1287 )
1288 (i32.const 1)
1289 )
1290 (i32.const 24)
1291 )
1292 (i32.const 24)
1293 )
1294 )
1295 (drop
1296 (i32.shr_u
1297 (i32.load8_u
1298 (i32.const 256)
1299 )
1300 (i32.const 1)
1301 )
1302 )
1303 (drop
1304 (i32.load16_s
1305 (i32.const 256)
1306 )
1307 )
1308 (drop
1309 (tee_local $1
1310 (i32.load8_s
1311 (i32.const 1)
1312 )
1313 )
1314 )
1315 (drop
1316 (i32.shr_s
1317 (i32.shl
1318 (tee_local $1
1319 (i32.load8_u
1320 (i32.const 1)
1321 )
1322 )
1323 (i32.const 24)
1324 )
1325 (i32.const 24)
1326 )
1327 )
1328 (drop
1329 (i32.and
1330 (tee_local $1
1331 (i32.load8_s
1332 (i32.const 1)
1333 )
1334 )
1335 (i32.const 255)
1336 )
1337 )
1338 (drop
1339 (tee_local $1
1340 (i32.load8_u
1341 (i32.const 1)
1342 )
1343 )
1344 )
1345 )
1346 (func $mask-bits (; 21 ;) (type $4) (param $0 i32) (param $1 i32)
1347 (drop
1348 (tee_local $0
1349 (i32.const 127)
1350 )
1351 )
1352 (drop
1353 (tee_local $0
1354 (i32.const 128)
1355 )
1356 )
1357 (drop
1358 (i32.and
1359 (tee_local $0
1360 (i32.const 128)
1361 )
1362 (i32.const 254)
1363 )
1364 )
1365 (drop
1366 (i32.and
1367 (tee_local $0
1368 (i32.const 128)
1369 )
1370 (i32.const 1279)
1371 )
1372 )
1373 (drop
1374 (i32.and
1375 (tee_local $0
1376 (i32.const 128)
1377 )
1378 (i32.const 1290)
1379 )
1380 )
1381 (drop
1382 (tee_local $0
1383 (i32.const 128)
1384 )
1385 )
1386 (drop
1387 (tee_local $0
1388 (i32.const 128)
1389 )
1390 )
1391 (drop
1392 (i32.and
1393 (tee_local $0
1394 (i32.const 128)
1395 )
1396 (i32.const 127)
1397 )
1398 )
1399 )
1400 (func $local-info-zero-ext (; 22 ;) (type $4) (param $0 i32) (param $1 i32)
1401 (local $x i32)
1402 (local $y i32)
1403 (local $z i32)
1404 (local $w i32)
1405 (set_local $x
1406 (i32.const 212)
1407 )
1408 (drop
1409 (get_local $x)
1410 )
1411 (set_local $y
1412 (i32.const 500)
1413 )
1414 (drop
1415 (i32.and
1416 (get_local $y)
1417 (i32.const 255)
1418 )
1419 )
1420 (set_local $0
1421 (i32.const 212)
1422 )
1423 (drop
1424 (i32.and
1425 (get_local $0)
1426 (i32.const 255)
1427 )
1428 )
1429 (set_local $z
1430 (i32.const 212)
1431 )
1432 (set_local $z
1433 (i32.const 220)
1434 )
1435 (drop
1436 (get_local $z)
1437 )
1438 (set_local $w
1439 (i32.const 212)
1440 )
1441 (set_local $w
1442 (i32.const 1000)
1443 )
1444 (drop
1445 (i32.and
1446 (get_local $w)
1447 (i32.const 255)
1448 )
1449 )
1450 )
1451 (func $local-info-sign-ext-bitsize (; 23 ;) (type $4) (param $0 i32) (param $1 i32)
1452 (local $x i32)
1453 (local $y i32)
1454 (local $z i32)
1455 (local $w i32)
1456 (set_local $x
1457 (i32.const 127)
1458 )
1459 (drop
1460 (get_local $x)
1461 )
1462 (set_local $y
1463 (i32.const 128)
1464 )
1465 (drop
1466 (i32.shr_s
1467 (i32.shl
1468 (get_local $y)
1469 (i32.const 24)
1470 )
1471 (i32.const 24)
1472 )
1473 )
1474 (set_local $0
1475 (i32.const 127)
1476 )
1477 (drop
1478 (i32.shr_s
1479 (i32.shl
1480 (get_local $0)
1481 (i32.const 24)
1482 )
1483 (i32.const 24)
1484 )
1485 )
1486 (set_local $z
1487 (i32.const 127)
1488 )
1489 (set_local $z
1490 (i32.const 100)
1491 )
1492 (drop
1493 (get_local $z)
1494 )
1495 (set_local $w
1496 (i32.const 127)
1497 )
1498 (set_local $w
1499 (i32.const 150)
1500 )
1501 (drop
1502 (i32.shr_s
1503 (i32.shl
1504 (get_local $w)
1505 (i32.const 24)
1506 )
1507 (i32.const 24)
1508 )
1509 )
1510 )
1511 (func $local-info-sign-ext-already-exted (; 24 ;) (type $4) (param $0 i32) (param $1 i32)
1512 (local $x i32)
1513 (local $y i32)
1514 (local $z i32)
1515 (local $w i32)
1516 (set_local $x
1517 (i32.shr_s
1518 (i32.shl
1519 (get_local $0)
1520 (i32.const 24)
1521 )
1522 (i32.const 24)
1523 )
1524 )
1525 (drop
1526 (get_local $x)
1527 )
1528 (set_local $y
1529 (i32.shr_s
1530 (i32.shl
1531 (get_local $0)
1532 (i32.const 16)
1533 )
1534 (i32.const 16)
1535 )
1536 )
1537 (drop
1538 (i32.shr_s
1539 (i32.shl
1540 (get_local $y)
1541 (i32.const 24)
1542 )
1543 (i32.const 24)
1544 )
1545 )
1546 (set_local $0
1547 (i32.shr_s
1548 (i32.shl
1549 (get_local $0)
1550 (i32.const 24)
1551 )
1552 (i32.const 24)
1553 )
1554 )
1555 (drop
1556 (i32.shr_s
1557 (i32.shl
1558 (get_local $0)
1559 (i32.const 24)
1560 )
1561 (i32.const 24)
1562 )
1563 )
1564 (set_local $z
1565 (i32.shr_s
1566 (i32.shl
1567 (get_local $0)
1568 (i32.const 24)
1569 )
1570 (i32.const 24)
1571 )
1572 )
1573 (set_local $z
1574 (i32.shr_s
1575 (i32.shl
1576 (get_local $1)
1577 (i32.const 24)
1578 )
1579 (i32.const 24)
1580 )
1581 )
1582 (drop
1583 (get_local $z)
1584 )
1585 (set_local $w
1586 (i32.shr_s
1587 (i32.shl
1588 (get_local $0)
1589 (i32.const 24)
1590 )
1591 (i32.const 24)
1592 )
1593 )
1594 (set_local $w
1595 (i32.shr_s
1596 (i32.shl
1597 (get_local $0)
1598 (i32.const 23)
1599 )
1600 (i32.const 24)
1601 )
1602 )
1603 (drop
1604 (i32.shr_s
1605 (i32.shl
1606 (get_local $w)
1607 (i32.const 24)
1608 )
1609 (i32.const 24)
1610 )
1611 )
1612 (drop
1613 (i32.shr_s
1614 (i32.shl
1615 (get_local $0)
1616 (i32.const 24)
1617 )
1618 (i32.const 23)
1619 )
1620 )
1621 )
1622 (func $signed-loads-fill-the-bits (; 25 ;) (type $3) (param $$e i32) (result i32)
1623 (local $$0 i32)
1624 (local $$conv i32)
1625 (set_local $$0
1626 (i32.load8_s
1627 (i32.const 1024)
1628 )
1629 )
1630 (set_local $$conv
1631 (i32.and
1632 (get_local $$0)
1633 (i32.const 255)
1634 )
1635 )
1636 (return
1637 (i32.eq
1638 (get_local $$conv)
1639 (get_local $$e)
1640 )
1641 )
1642 )
1643 (func $local-info-sign-ext-already-exted-by-load (; 26 ;) (type $4) (param $0 i32) (param $1 i32)
1644 (local $x i32)
1645 (local $y i32)
1646 (local $z i32)
1647 (local $w i32)
1648 (set_local $x
1649 (i32.load8_s
1650 (i32.const 1024)
1651 )
1652 )
1653 (drop
1654 (get_local $x)
1655 )
1656 (set_local $y
1657 (i32.load8_u
1658 (i32.const 1024)
1659 )
1660 )
1661 (drop
1662 (i32.shr_s
1663 (i32.shl
1664 (get_local $y)
1665 (i32.const 24)
1666 )
1667 (i32.const 24)
1668 )
1669 )
1670 (set_local $z
1671 (i32.load16_s
1672 (i32.const 1024)
1673 )
1674 )
1675 (drop
1676 (i32.shr_s
1677 (i32.shl
1678 (get_local $z)
1679 (i32.const 24)
1680 )
1681 (i32.const 24)
1682 )
1683 )
1684 )
1685 (func $compare-load-s-sign-extend (; 27 ;) (type $4) (param $0 i32) (param $1 i32)
1686 (drop
1687 (i32.eq
1688 (i32.load8_u
1689 (get_local $0)
1690 )
1691 (i32.and
1692 (get_local $1)
1693 (i32.const 255)
1694 )
1695 )
1696 )
1697 (drop
1698 (i32.eq
1699 (i32.and
1700 (get_local $1)
1701 (i32.const 255)
1702 )
1703 (i32.load8_u
1704 (get_local $0)
1705 )
1706 )
1707 )
1708 (drop
1709 (i32.eq
1710 (i32.load8_u
1711 (get_local $0)
1712 )
1713 (i32.shr_s
1714 (i32.shl
1715 (get_local $1)
1716 (i32.const 24)
1717 )
1718 (i32.const 24)
1719 )
1720 )
1721 )
1722 (drop
1723 (i32.eq
1724 (i32.load8_s
1725 (get_local $0)
1726 )
1727 (i32.shr_s
1728 (i32.shl
1729 (get_local $1)
1730 (i32.const 16)
1731 )
1732 (i32.const 16)
1733 )
1734 )
1735 )
1736 (drop
1737 (i32.eq
1738 (i32.shr_s
1739 (i32.shl
1740 (get_local $1)
1741 (i32.const 24)
1742 )
1743 (i32.const 24)
1744 )
1745 (i32.load8_u
1746 (get_local $0)
1747 )
1748 )
1749 )
1750 (drop
1751 (i32.eq
1752 (i32.shr_s
1753 (i32.shl
1754 (get_local $1)
1755 (i32.const 16)
1756 )
1757 (i32.const 16)
1758 )
1759 (i32.load8_s
1760 (get_local $0)
1761 )
1762 )
1763 )
1764 )
1765 (func $unsign-diff-sizes (; 28 ;) (type $6) (param $x i32) (param $y i32) (result i32)
1766 (i32.ne
1767 (i32.shr_s
1768 (i32.shl
1769 (call $unsign-diff-sizes
1770 (i32.const -1)
1771 (i32.const 5)
1772 )
1773 (i32.const 24)
1774 )
1775 (i32.const 24)
1776 )
1777 (i32.shr_s
1778 (i32.shl
1779 (call $unsign-diff-sizes
1780 (i32.const 1)
1781 (i32.const 2006)
1782 )
1783 (i32.const 16)
1784 )
1785 (i32.const 16)
1786 )
1787 )
1788 )
1789 (func $unsign-same-sizes (; 29 ;) (type $6) (param $x i32) (param $y i32) (result i32)
1790 (i32.ne
1791 (i32.and
1792 (call $unsign-same-sizes
1793 (i32.const -1)
1794 (i32.const 5)
1795 )
1796 (i32.const 255)
1797 )
1798 (i32.and
1799 (call $unsign-same-sizes
1800 (i32.const 1)
1801 (i32.const 2006)
1802 )
1803 (i32.const 255)
1804 )
1805 )
1806 )
1807 (func $fuzz-almost-sign-ext (; 30 ;) (type $1)
1808 (drop
1809 (i32.shr_s
1810 (i32.shl
1811 (i32.load16_u
1812 (i32.const 2278)
1813 )
1814 (i32.const 17)
1815 )
1816 (i32.const 16)
1817 )
1818 )
1819 (drop
1820 (i32.shr_s
1821 (i32.shl
1822 (i32.load16_u
1823 (i32.const 2278)
1824 )
1825 (i32.const 17)
1826 )
1827 (i32.const 16)
1828 )
1829 )
1830 )
1831 (func $fuzz-comp-impossible (; 31 ;) (type $5) (param $x i32)
1832 (drop
1833 (i32.eq
1834 (i32.and
1835 (get_local $x)
1836 (i32.const 65535)
1837 )
1838 (i32.const -2147483648)
1839 )
1840 )
1841 (drop
1842 (i32.eq
1843 (i32.and
1844 (get_local $x)
1845 (i32.const 255)
1846 )
1847 (i32.const -2147483648)
1848 )
1849 )
1850 (drop
1851 (i32.eq
1852 (i32.and
1853 (get_local $x)
1854 (i32.const 255)
1855 )
1856 (i32.const 127)
1857 )
1858 )
1859 (drop
1860 (i32.eq
1861 (i32.and
1862 (get_local $x)
1863 (i32.const 255)
1864 )
1865 (i32.const -2147483648)
1866 )
1867 )
1868 (drop
1869 (i32.eq
1870 (i32.and
1871 (get_local $x)
1872 (i32.const 255)
1873 )
1874 (i32.const -2147483648)
1875 )
1876 )
1877 (drop
1878 (i32.eq
1879 (i32.and
1880 (get_local $x)
1881 (i32.const 255)
1882 )
1883 (i32.const -2147483648)
1884 )
1885 )
1886 (drop
1887 (i32.eq
1888 (i32.and
1889 (get_local $x)
1890 (i32.const 255)
1891 )
1892 (i32.const 252)
1893 )
1894 )
1895 )
1896 (func $if-parallel (; 32 ;) (type $4) (param $0 i32) (param $1 i32)
1897 (drop
1898 (i32.add
1899 (get_local $1)
1900 (i32.const 1)
1901 )
1902 )
1903 (drop
1904 (block (result i32)
1905 (drop
1906 (tee_local $0
1907 (get_local $1)
1908 )
1909 )
1910 (i32.add
1911 (get_local $1)
1912 (i32.const 1)
1913 )
1914 )
1915 )
1916 (drop
1917 (block (result i32)
1918 (i32.add
1919 (get_local $1)
1920 (unreachable)
1921 )
1922 )
1923 )
1924 (drop
1925 (block (result i32)
1926 (drop
1927 (tee_local $0
1928 (get_local $1)
1929 )
1930 )
1931 (i32.add
1932 (get_local $1)
1933 (unreachable)
1934 )
1935 )
1936 )
1937 (drop
1938 (if (result i32)
1939 (unreachable)
1940 (i32.add
1941 (get_local $1)
1942 (unreachable)
1943 )
1944 (i32.add
1945 (get_local $1)
1946 (unreachable)
1947 )
1948 )
1949 )
1950 )
1951 (func $select-parallel (; 33 ;) (type $4) (param $0 i32) (param $1 i32)
1952 (drop
1953 (i32.add
1954 (get_local $1)
1955 (i32.const 1)
1956 )
1957 )
1958 (drop
1959 (select
1960 (tee_local $0
1961 (get_local $1)
1962 )
1963 (tee_local $0
1964 (get_local $1)
1965 )
1966 (get_local $0)
1967 )
1968 )
1969 (drop
1970 (block (result i32)
1971 (drop
1972 (tee_local $0
1973 (get_local $1)
1974 )
1975 )
1976 (i32.add
1977 (get_local $1)
1978 (i32.const 1)
1979 )
1980 )
1981 )
1982 (drop
1983 (select
1984 (tee_local $0
1985 (get_local $1)
1986 )
1987 (tee_local $0
1988 (get_local $1)
1989 )
1990 (tee_local $0
1991 (get_local $1)
1992 )
1993 )
1994 )
1995 (drop
1996 (select
1997 (tee_local $0
1998 (get_local $1)
1999 )
2000 (tee_local $0
2001 (get_local $1)
2002 )
2003 (unreachable)
2004 )
2005 )
2006 )
2007 (func $zero-shifts-is-not-sign-ext (; 34 ;) (type $1)
2008 (drop
2009 (i32.eq
2010 (i32.load16_s align=1
2011 (i32.const 790656516)
2012 )
2013 (i32.const -5431187)
2014 )
2015 )
2016 (drop
2017 (i32.eq
2018 (i32.shl
2019 (i32.load16_s align=1
2020 (i32.const 790656516)
2021 )
2022 (i32.const 1)
2023 )
2024 (i32.const -5431187)
2025 )
2026 )
2027 )
2028 (func $zero-ops (; 35 ;) (type $2) (result i32)
2029 (return
2030 (i32.eq
2031 (i32.load16_s align=1
2032 (i32.const 790656516)
2033 )
2034 (i32.const -1337)
2035 )
2036 )
2037 )
2038 (func $sign-ext-1-and-ne (; 36 ;) (type $2) (result i32)
2039 (select
2040 (i32.ne
2041 (i32.and
2042 (call $sign-ext-1-and-ne)
2043 (i32.const 2147483647)
2044 )
2045 (i32.const -2147483648)
2046 )
2047 (i32.const 2)
2048 (i32.const 1)
2049 )
2050 )
2051 (func $neg-shifts-and-255 (; 37 ;) (type $2) (result i32)
2052 (i32.and
2053 (i32.shr_u
2054 (i32.const -99)
2055 (i32.const -32)
2056 )
2057 (i32.const 255)
2058 )
2059 )
2060 (func $neg-shifts-and-255-b (; 38 ;) (type $2) (result i32)
2061 (i32.and
2062 (i32.shl
2063 (i32.const -2349025)
2064 (i32.const -32)
2065 )
2066 (i32.const 255)
2067 )
2068 )
2069 (func $shifts-square-overflow (; 39 ;) (type $3) (param $x i32) (result i32)
2070 (i32.shr_u
2071 (i32.shr_u
2072 (get_local $x)
2073 (i32.const 65535)
2074 )
2075 (i32.const 32767)
2076 )
2077 )
2078 (func $shifts-square-no-overflow-small (; 40 ;) (type $3) (param $x i32) (result i32)
2079 (i32.shr_u
2080 (get_local $x)
2081 (i32.const 9)
2082 )
2083 )
2084 (func $shifts-square-overflow-64 (; 41 ;) (type $7) (param $x i64) (result i64)
2085 (i64.shr_u
2086 (i64.shr_u
2087 (get_local $x)
2088 (i64.const 65535)
2089 )
2090 (i64.const 64767)
2091 )
2092 )
2093 (func $shifts-square-no-overflow-small-64 (; 42 ;) (type $7) (param $x i64) (result i64)
2094 (i64.shr_u
2095 (get_local $x)
2096 (i64.const 9)
2097 )
2098 )
2099 (func $shifts-square-unreachable (; 43 ;) (type $3) (param $x i32) (result i32)
2100 (i32.shr_u
2101 (i32.shr_u
2102 (unreachable)
2103 (i32.const 1031)
2104 )
2105 (i32.const 4098)
2106 )
2107 )
2108 (func $mix-shifts (; 44 ;) (type $2) (result i32)
2109 (i32.shr_s
2110 (i32.shl
2111 (i32.const 23)
2112 (i32.const -61)
2113 )
2114 (i32.const 168)
2115 )
2116 )
2117 (func $actually-no-shifts (; 45 ;) (type $2) (result i32)
2118 (i32.const 33)
2119 )
2120 (func $less-shifts-than-it-seems (; 46 ;) (type $3) (param $x i32) (result i32)
2121 (i32.const 4800)
2122 )
2123 (func $and-popcount32 (; 47 ;) (type $2) (result i32)
2124 (i32.and
2125 (i32.popcnt
2126 (i32.const -1)
2127 )
2128 (i32.const 31)
2129 )
2130 )
2131 (func $and-popcount32-big (; 48 ;) (type $2) (result i32)
2132 (i32.popcnt
2133 (i32.const -1)
2134 )
2135 )
2136 (func $and-popcount64 (; 49 ;) (type $8) (result i64)
2137 (i64.and
2138 (i64.popcnt
2139 (i64.const -1)
2140 )
2141 (i64.const 63)
2142 )
2143 )
2144 (func $and-popcount64-big (; 50 ;) (type $8) (result i64)
2145 (i64.and
2146 (i64.popcnt
2147 (i64.const -1)
2148 )
2149 (i64.const 127)
2150 )
2151 )
2152 (func $and-popcount64-bigger (; 51 ;) (type $8) (result i64)
2153 (i64.and
2154 (i64.popcnt
2155 (i64.const -1)
2156 )
2157 (i64.const 255)
2158 )
2159 )
2160 (func $optimizeAddedConstants-filters-through-nonzero (; 52 ;) (type $2) (result i32)
2161 (i32.add
2162 (i32.shl
2163 (i32.const -536870912)
2164 (i32.wrap/i64
2165 (i64.const 0)
2166 )
2167 )
2168 (i32.const -31744)
2169 )
2170 )
2171 (func $optimizeAddedConstants-filters-through-nonzero-b (; 53 ;) (type $2) (result i32)
2172 (i32.add
2173 (i32.shl
2174 (i32.const -536870912)
2175 (i32.wrap/i64
2176 (i64.const -1)
2177 )
2178 )
2179 (i32.const -31744)
2180 )
2181 )
2182 (func $return-proper-value-from-shift-left-by-zero (; 54 ;) (type $2) (result i32)
2183 (if (result i32)
2184 (i32.add
2185 (loop $label$0 (result i32)
2186 (block $label$1
2187 (br_if $label$1
2188 (i32.load
2189 (i32.const 0)
2190 )
2191 )
2192 )
2193 (i32.const -62)
2194 )
2195 (i32.const 40)
2196 )
2197 (i32.const 1)
2198 (i32.const 0)
2199 )
2200 )
2201 )
2202 (module
2203 (type $0 (func))
2204 (import "env" "memory" (memory $0 (shared 256 256)))
2205 (func $x (; 0 ;) (type $0)
2206 (drop
2207 (i32.shr_s
2208 (i32.shl
2209 (i32.atomic.load8_u
2210 (i32.const 100)
2211 )
2212 (i32.const 24)
2213 )
2214 (i32.const 24)
2215 )
2216 )
2217 )
2218 )