1 // autogenerated from gen/AMD64.rules: do not edit!
2 // generated with: cd gen; go run *.go
7 var _ = math.MinInt8 // in case not otherwise used
8 func rewriteValueAMD64(v *Value, config *Config) bool {
12 // match: (ADDB x (MOVBconst [c]))
14 // result: (ADDBconst [c] x)
17 if v.Args[1].Op != OpAMD64MOVBconst {
18 goto endab690db69bfd8192eea57a2f9f76bf84
21 v.Op = OpAMD64ADDBconst
29 goto endab690db69bfd8192eea57a2f9f76bf84
30 endab690db69bfd8192eea57a2f9f76bf84:
32 // match: (ADDB (MOVBconst [c]) x)
34 // result: (ADDBconst [c] x)
36 if v.Args[0].Op != OpAMD64MOVBconst {
37 goto end28aa1a4abe7e1abcdd64135e9967d39d
41 v.Op = OpAMD64ADDBconst
49 goto end28aa1a4abe7e1abcdd64135e9967d39d
50 end28aa1a4abe7e1abcdd64135e9967d39d:
52 // match: (ADDB x (NEGB y))
57 if v.Args[1].Op != OpAMD64NEGB {
58 goto end9464509b8874ffb00b43b843da01f0bc
60 y := v.Args[1].Args[0]
69 goto end9464509b8874ffb00b43b843da01f0bc
70 end9464509b8874ffb00b43b843da01f0bc:
72 case OpAMD64ADDBconst:
73 // match: (ADDBconst [c] (MOVBconst [d]))
75 // result: (MOVBconst [c+d])
78 if v.Args[0].Op != OpAMD64MOVBconst {
79 goto enda9b1e9e31ccdf0af5f4fe57bf4b1343f
82 v.Op = OpAMD64MOVBconst
89 goto enda9b1e9e31ccdf0af5f4fe57bf4b1343f
90 enda9b1e9e31ccdf0af5f4fe57bf4b1343f:
92 // match: (ADDBconst [c] (ADDBconst [d] x))
94 // result: (ADDBconst [c+d] x)
97 if v.Args[0].Op != OpAMD64ADDBconst {
98 goto end9b1e6890adbf9d9e447d591b4148cbd0
100 d := v.Args[0].AuxInt
101 x := v.Args[0].Args[0]
102 v.Op = OpAMD64ADDBconst
110 goto end9b1e6890adbf9d9e447d591b4148cbd0
111 end9b1e6890adbf9d9e447d591b4148cbd0:
114 // match: (ADDL x (MOVLconst [c]))
116 // result: (ADDLconst [c] x)
119 if v.Args[1].Op != OpAMD64MOVLconst {
120 goto end8d6d3b99a7be8da6b7a254b7e709cc95
122 c := v.Args[1].AuxInt
123 v.Op = OpAMD64ADDLconst
131 goto end8d6d3b99a7be8da6b7a254b7e709cc95
132 end8d6d3b99a7be8da6b7a254b7e709cc95:
134 // match: (ADDL (MOVLconst [c]) x)
136 // result: (ADDLconst [c] x)
138 if v.Args[0].Op != OpAMD64MOVLconst {
139 goto end739561e08a561e26ce3634dc0d5ec733
141 c := v.Args[0].AuxInt
143 v.Op = OpAMD64ADDLconst
151 goto end739561e08a561e26ce3634dc0d5ec733
152 end739561e08a561e26ce3634dc0d5ec733:
154 // match: (ADDL x (NEGL y))
156 // result: (SUBL x y)
159 if v.Args[1].Op != OpAMD64NEGL {
160 goto end9596df31f2685a49df67c6fb912a521d
162 y := v.Args[1].Args[0]
171 goto end9596df31f2685a49df67c6fb912a521d
172 end9596df31f2685a49df67c6fb912a521d:
174 case OpAMD64ADDLconst:
175 // match: (ADDLconst [c] (MOVLconst [d]))
177 // result: (MOVLconst [c+d])
180 if v.Args[0].Op != OpAMD64MOVLconst {
181 goto ende04850e987890abf1d66199042a19c23
183 d := v.Args[0].AuxInt
184 v.Op = OpAMD64MOVLconst
191 goto ende04850e987890abf1d66199042a19c23
192 ende04850e987890abf1d66199042a19c23:
194 // match: (ADDLconst [c] (ADDLconst [d] x))
196 // result: (ADDLconst [c+d] x)
199 if v.Args[0].Op != OpAMD64ADDLconst {
200 goto endf1dd8673b2fef4950aec87aa7523a236
202 d := v.Args[0].AuxInt
203 x := v.Args[0].Args[0]
204 v.Op = OpAMD64ADDLconst
212 goto endf1dd8673b2fef4950aec87aa7523a236
213 endf1dd8673b2fef4950aec87aa7523a236:
216 // match: (ADDQ x (MOVQconst [c]))
218 // result: (ADDQconst [c] x)
221 if v.Args[1].Op != OpAMD64MOVQconst {
222 goto end1de8aeb1d043e0dadcffd169a99ce5c0
224 c := v.Args[1].AuxInt
226 goto end1de8aeb1d043e0dadcffd169a99ce5c0
228 v.Op = OpAMD64ADDQconst
236 goto end1de8aeb1d043e0dadcffd169a99ce5c0
237 end1de8aeb1d043e0dadcffd169a99ce5c0:
239 // match: (ADDQ (MOVQconst [c]) x)
241 // result: (ADDQconst [c] x)
243 if v.Args[0].Op != OpAMD64MOVQconst {
244 goto endca635e3bdecd9e3aeb892f841021dfaa
246 c := v.Args[0].AuxInt
249 goto endca635e3bdecd9e3aeb892f841021dfaa
251 v.Op = OpAMD64ADDQconst
259 goto endca635e3bdecd9e3aeb892f841021dfaa
260 endca635e3bdecd9e3aeb892f841021dfaa:
262 // match: (ADDQ x (SHLQconst [3] y))
264 // result: (LEAQ8 x y)
267 if v.Args[1].Op != OpAMD64SHLQconst {
268 goto endc02313d35a0525d1d680cd58992e820d
270 if v.Args[1].AuxInt != 3 {
271 goto endc02313d35a0525d1d680cd58992e820d
273 y := v.Args[1].Args[0]
282 goto endc02313d35a0525d1d680cd58992e820d
283 endc02313d35a0525d1d680cd58992e820d:
285 // match: (ADDQ x (NEGQ y))
287 // result: (SUBQ x y)
290 if v.Args[1].Op != OpAMD64NEGQ {
291 goto endec8f899c6e175a0147a90750f9bfe0a2
293 y := v.Args[1].Args[0]
302 goto endec8f899c6e175a0147a90750f9bfe0a2
303 endec8f899c6e175a0147a90750f9bfe0a2:
305 case OpAMD64ADDQconst:
306 // match: (ADDQconst [c] (LEAQ8 [d] x y))
308 // result: (LEAQ8 [addOff(c, d)] x y)
311 if v.Args[0].Op != OpAMD64LEAQ8 {
312 goto ende2cc681c9abf9913288803fb1b39e639
314 d := v.Args[0].AuxInt
315 x := v.Args[0].Args[0]
316 y := v.Args[0].Args[1]
321 v.AuxInt = addOff(c, d)
326 goto ende2cc681c9abf9913288803fb1b39e639
327 ende2cc681c9abf9913288803fb1b39e639:
329 // match: (ADDQconst [0] x)
334 goto end03d9f5a3e153048b0afa781401e2a849
345 goto end03d9f5a3e153048b0afa781401e2a849
346 end03d9f5a3e153048b0afa781401e2a849:
348 // match: (ADDQconst [c] (MOVQconst [d]))
350 // result: (MOVQconst [c+d])
353 if v.Args[0].Op != OpAMD64MOVQconst {
354 goto end09dc54395b4e96e8332cf8e4e7481c52
356 d := v.Args[0].AuxInt
357 v.Op = OpAMD64MOVQconst
364 goto end09dc54395b4e96e8332cf8e4e7481c52
365 end09dc54395b4e96e8332cf8e4e7481c52:
367 // match: (ADDQconst [c] (ADDQconst [d] x))
369 // result: (ADDQconst [c+d] x)
372 if v.Args[0].Op != OpAMD64ADDQconst {
373 goto endd4cb539641f0dc40bfd0cb7fbb9b0405
375 d := v.Args[0].AuxInt
376 x := v.Args[0].Args[0]
377 v.Op = OpAMD64ADDQconst
385 goto endd4cb539641f0dc40bfd0cb7fbb9b0405
386 endd4cb539641f0dc40bfd0cb7fbb9b0405:
389 // match: (ADDW x (MOVWconst [c]))
391 // result: (ADDWconst [c] x)
394 if v.Args[1].Op != OpAMD64MOVWconst {
395 goto end1aabd2317de77c7dfc4876fd7e4c5011
397 c := v.Args[1].AuxInt
398 v.Op = OpAMD64ADDWconst
406 goto end1aabd2317de77c7dfc4876fd7e4c5011
407 end1aabd2317de77c7dfc4876fd7e4c5011:
409 // match: (ADDW (MOVWconst [c]) x)
411 // result: (ADDWconst [c] x)
413 if v.Args[0].Op != OpAMD64MOVWconst {
414 goto ende3aede99966f388afc624f9e86676fd2
416 c := v.Args[0].AuxInt
418 v.Op = OpAMD64ADDWconst
426 goto ende3aede99966f388afc624f9e86676fd2
427 ende3aede99966f388afc624f9e86676fd2:
429 // match: (ADDW x (NEGW y))
431 // result: (SUBW x y)
434 if v.Args[1].Op != OpAMD64NEGW {
435 goto end55cf2af0d75f3ec413528eeb799e94d5
437 y := v.Args[1].Args[0]
446 goto end55cf2af0d75f3ec413528eeb799e94d5
447 end55cf2af0d75f3ec413528eeb799e94d5:
449 case OpAMD64ADDWconst:
450 // match: (ADDWconst [c] (MOVWconst [d]))
452 // result: (MOVWconst [c+d])
455 if v.Args[0].Op != OpAMD64MOVWconst {
456 goto end32541920f2f5a920dfae41d8ebbef00f
458 d := v.Args[0].AuxInt
459 v.Op = OpAMD64MOVWconst
466 goto end32541920f2f5a920dfae41d8ebbef00f
467 end32541920f2f5a920dfae41d8ebbef00f:
469 // match: (ADDWconst [c] (ADDWconst [d] x))
471 // result: (ADDWconst [c+d] x)
474 if v.Args[0].Op != OpAMD64ADDWconst {
475 goto end73944f6ddda7e4c050f11d17484ff9a5
477 d := v.Args[0].AuxInt
478 x := v.Args[0].Args[0]
479 v.Op = OpAMD64ADDWconst
487 goto end73944f6ddda7e4c050f11d17484ff9a5
488 end73944f6ddda7e4c050f11d17484ff9a5:
491 // match: (ANDB x (MOVLconst [c]))
493 // result: (ANDBconst [c] x)
496 if v.Args[1].Op != OpAMD64MOVLconst {
497 goto end01100cd255396e29bfdb130f4fbc9bbc
499 c := v.Args[1].AuxInt
500 v.Op = OpAMD64ANDBconst
508 goto end01100cd255396e29bfdb130f4fbc9bbc
509 end01100cd255396e29bfdb130f4fbc9bbc:
511 // match: (ANDB (MOVLconst [c]) x)
513 // result: (ANDBconst [c] x)
515 if v.Args[0].Op != OpAMD64MOVLconst {
516 goto end70830ce2834dc5f8d786fa6789460926
518 c := v.Args[0].AuxInt
520 v.Op = OpAMD64ANDBconst
528 goto end70830ce2834dc5f8d786fa6789460926
529 end70830ce2834dc5f8d786fa6789460926:
531 // match: (ANDB x (MOVBconst [c]))
533 // result: (ANDBconst [c] x)
536 if v.Args[1].Op != OpAMD64MOVBconst {
537 goto endd275ec2e73768cb3d201478fc934e06c
539 c := v.Args[1].AuxInt
540 v.Op = OpAMD64ANDBconst
548 goto endd275ec2e73768cb3d201478fc934e06c
549 endd275ec2e73768cb3d201478fc934e06c:
551 // match: (ANDB (MOVBconst [c]) x)
553 // result: (ANDBconst [c] x)
555 if v.Args[0].Op != OpAMD64MOVBconst {
556 goto end4068edac2ae0f354cf581db210288b98
558 c := v.Args[0].AuxInt
560 v.Op = OpAMD64ANDBconst
568 goto end4068edac2ae0f354cf581db210288b98
569 end4068edac2ae0f354cf581db210288b98:
577 goto endb8ff272a1456513da708603abe37541c
587 goto endb8ff272a1456513da708603abe37541c
588 endb8ff272a1456513da708603abe37541c:
590 case OpAMD64ANDBconst:
591 // match: (ANDBconst [c] _)
593 // result: (MOVBconst [0])
597 goto end2106d410c949da14d7c00041f40eca76
599 v.Op = OpAMD64MOVBconst
606 goto end2106d410c949da14d7c00041f40eca76
607 end2106d410c949da14d7c00041f40eca76:
609 // match: (ANDBconst [c] x)
615 if !(int8(c) == -1) {
616 goto enda0b78503c204c8225de1433949a71fe4
626 goto enda0b78503c204c8225de1433949a71fe4
627 enda0b78503c204c8225de1433949a71fe4:
629 // match: (ANDBconst [c] (MOVBconst [d]))
631 // result: (MOVBconst [c&d])
634 if v.Args[0].Op != OpAMD64MOVBconst {
635 goto end946312b1f216933da86febe293eb956f
637 d := v.Args[0].AuxInt
638 v.Op = OpAMD64MOVBconst
645 goto end946312b1f216933da86febe293eb956f
646 end946312b1f216933da86febe293eb956f:
649 // match: (ANDL x (MOVLconst [c]))
651 // result: (ANDLconst [c] x)
654 if v.Args[1].Op != OpAMD64MOVLconst {
655 goto end0a4c49d9a26759c0fd21369dafcd7abb
657 c := v.Args[1].AuxInt
658 v.Op = OpAMD64ANDLconst
666 goto end0a4c49d9a26759c0fd21369dafcd7abb
667 end0a4c49d9a26759c0fd21369dafcd7abb:
669 // match: (ANDL (MOVLconst [c]) x)
671 // result: (ANDLconst [c] x)
673 if v.Args[0].Op != OpAMD64MOVLconst {
674 goto end0529ba323d9b6f15c41add401ef67959
676 c := v.Args[0].AuxInt
678 v.Op = OpAMD64ANDLconst
686 goto end0529ba323d9b6f15c41add401ef67959
687 end0529ba323d9b6f15c41add401ef67959:
695 goto enddfb08a0d0c262854db3905cb323388c7
705 goto enddfb08a0d0c262854db3905cb323388c7
706 enddfb08a0d0c262854db3905cb323388c7:
708 case OpAMD64ANDLconst:
709 // match: (ANDLconst [c] _)
711 // result: (MOVLconst [0])
714 if !(int32(c) == 0) {
715 goto end5efb241208aef28c950b7bcf8d85d5de
717 v.Op = OpAMD64MOVLconst
724 goto end5efb241208aef28c950b7bcf8d85d5de
725 end5efb241208aef28c950b7bcf8d85d5de:
727 // match: (ANDLconst [c] x)
728 // cond: int32(c)==-1
733 if !(int32(c) == -1) {
734 goto end0e852ae30bb8289d6ffee0c9267e3e0c
744 goto end0e852ae30bb8289d6ffee0c9267e3e0c
745 end0e852ae30bb8289d6ffee0c9267e3e0c:
747 // match: (ANDLconst [c] (MOVLconst [d]))
749 // result: (MOVLconst [c&d])
752 if v.Args[0].Op != OpAMD64MOVLconst {
753 goto end7bfd24059369753eadd235f07e2dd7b8
755 d := v.Args[0].AuxInt
756 v.Op = OpAMD64MOVLconst
763 goto end7bfd24059369753eadd235f07e2dd7b8
764 end7bfd24059369753eadd235f07e2dd7b8:
767 // match: (ANDQ x (MOVQconst [c]))
769 // result: (ANDQconst [c] x)
772 if v.Args[1].Op != OpAMD64MOVQconst {
773 goto end048fadc69e81103480015b84b9cafff7
775 c := v.Args[1].AuxInt
777 goto end048fadc69e81103480015b84b9cafff7
779 v.Op = OpAMD64ANDQconst
787 goto end048fadc69e81103480015b84b9cafff7
788 end048fadc69e81103480015b84b9cafff7:
790 // match: (ANDQ (MOVQconst [c]) x)
792 // result: (ANDQconst [c] x)
794 if v.Args[0].Op != OpAMD64MOVQconst {
795 goto end3035a3bf650b708705fd27dd857ab0a4
797 c := v.Args[0].AuxInt
800 goto end3035a3bf650b708705fd27dd857ab0a4
802 v.Op = OpAMD64ANDQconst
810 goto end3035a3bf650b708705fd27dd857ab0a4
811 end3035a3bf650b708705fd27dd857ab0a4:
819 goto end06b5ec19efdd4e79f03a5e4a2c3c3427
829 goto end06b5ec19efdd4e79f03a5e4a2c3c3427
830 end06b5ec19efdd4e79f03a5e4a2c3c3427:
832 case OpAMD64ANDQconst:
833 // match: (ANDQconst [0] _)
835 // result: (MOVQconst [0])
838 goto end57018c1d0f54fd721521095b4832bab2
840 v.Op = OpAMD64MOVQconst
847 goto end57018c1d0f54fd721521095b4832bab2
848 end57018c1d0f54fd721521095b4832bab2:
850 // match: (ANDQconst [-1] x)
855 goto endb542c4b42ab94a7bedb32dec8f610d67
866 goto endb542c4b42ab94a7bedb32dec8f610d67
867 endb542c4b42ab94a7bedb32dec8f610d67:
869 // match: (ANDQconst [c] (MOVQconst [d]))
871 // result: (MOVQconst [c&d])
874 if v.Args[0].Op != OpAMD64MOVQconst {
875 goto end67ca66494705b0345a5f22c710225292
877 d := v.Args[0].AuxInt
878 v.Op = OpAMD64MOVQconst
885 goto end67ca66494705b0345a5f22c710225292
886 end67ca66494705b0345a5f22c710225292:
889 // match: (ANDW x (MOVLconst [c]))
891 // result: (ANDWconst [c] x)
894 if v.Args[1].Op != OpAMD64MOVLconst {
895 goto endce6f557823ee2fdd7a8f47b6f925fc7c
897 c := v.Args[1].AuxInt
898 v.Op = OpAMD64ANDWconst
906 goto endce6f557823ee2fdd7a8f47b6f925fc7c
907 endce6f557823ee2fdd7a8f47b6f925fc7c:
909 // match: (ANDW (MOVLconst [c]) x)
911 // result: (ANDWconst [c] x)
913 if v.Args[0].Op != OpAMD64MOVLconst {
914 goto endc46af0d9265c08b09f1f1fba24feda80
916 c := v.Args[0].AuxInt
918 v.Op = OpAMD64ANDWconst
926 goto endc46af0d9265c08b09f1f1fba24feda80
927 endc46af0d9265c08b09f1f1fba24feda80:
929 // match: (ANDW x (MOVWconst [c]))
931 // result: (ANDWconst [c] x)
934 if v.Args[1].Op != OpAMD64MOVWconst {
935 goto enda77a39f65a5eb3436a5842eab69a3103
937 c := v.Args[1].AuxInt
938 v.Op = OpAMD64ANDWconst
946 goto enda77a39f65a5eb3436a5842eab69a3103
947 enda77a39f65a5eb3436a5842eab69a3103:
949 // match: (ANDW (MOVWconst [c]) x)
951 // result: (ANDWconst [c] x)
953 if v.Args[0].Op != OpAMD64MOVWconst {
954 goto endea2a25eb525a5dbf6d5132d84ea4e7a5
956 c := v.Args[0].AuxInt
958 v.Op = OpAMD64ANDWconst
966 goto endea2a25eb525a5dbf6d5132d84ea4e7a5
967 endea2a25eb525a5dbf6d5132d84ea4e7a5:
975 goto end3a26cf52dd1b77f07cc9e005760dbb11
985 goto end3a26cf52dd1b77f07cc9e005760dbb11
986 end3a26cf52dd1b77f07cc9e005760dbb11:
988 case OpAMD64ANDWconst:
989 // match: (ANDWconst [c] _)
991 // result: (MOVWconst [0])
994 if !(int16(c) == 0) {
995 goto end336ece33b4f0fb44dfe1f24981df7b74
997 v.Op = OpAMD64MOVWconst
1004 goto end336ece33b4f0fb44dfe1f24981df7b74
1005 end336ece33b4f0fb44dfe1f24981df7b74:
1007 // match: (ANDWconst [c] x)
1008 // cond: int16(c)==-1
1013 if !(int16(c) == -1) {
1014 goto endfb111c3afa8c5c4040fa6000fadee810
1024 goto endfb111c3afa8c5c4040fa6000fadee810
1025 endfb111c3afa8c5c4040fa6000fadee810:
1027 // match: (ANDWconst [c] (MOVWconst [d]))
1029 // result: (MOVWconst [c&d])
1032 if v.Args[0].Op != OpAMD64MOVWconst {
1033 goto end250eb27fcac10bf6c0d96ce66a21726e
1035 d := v.Args[0].AuxInt
1036 v.Op = OpAMD64MOVWconst
1043 goto end250eb27fcac10bf6c0d96ce66a21726e
1044 end250eb27fcac10bf6c0d96ce66a21726e:
1047 // match: (Add16 x y)
1049 // result: (ADDW x y)
1061 goto ende604481c6de9fe4574cb2954ba2ddc67
1062 ende604481c6de9fe4574cb2954ba2ddc67:
1065 // match: (Add32 x y)
1067 // result: (ADDL x y)
1079 goto endc445ea2a65385445676cd684ae9a42b5
1080 endc445ea2a65385445676cd684ae9a42b5:
1083 // match: (Add32F x y)
1085 // result: (ADDSS x y)
1097 goto end5d82e1c10823774894c036b7c5b8fed4
1098 end5d82e1c10823774894c036b7c5b8fed4:
1101 // match: (Add64 x y)
1103 // result: (ADDQ x y)
1115 goto endd88f18b3f39e3ccc201477a616f0abc0
1116 endd88f18b3f39e3ccc201477a616f0abc0:
1119 // match: (Add64F x y)
1121 // result: (ADDSD x y)
1133 goto end62f2de6c70abd214e6987ee37976653a
1134 end62f2de6c70abd214e6987ee37976653a:
1137 // match: (Add8 x y)
1139 // result: (ADDB x y)
1151 goto end6117c84a6b75c1b816b3fb095bc5f656
1152 end6117c84a6b75c1b816b3fb095bc5f656:
1155 // match: (AddPtr x y)
1157 // result: (ADDQ x y)
1169 goto enda1d5640788c7157996f9d4af602dec1c
1170 enda1d5640788c7157996f9d4af602dec1c:
1173 // match: (Addr {sym} base)
1175 // result: (LEAQ {sym} base)
1187 goto end53cad0c3c9daa5575680e77c14e05e72
1188 end53cad0c3c9daa5575680e77c14e05e72:
1191 // match: (And16 x y)
1193 // result: (ANDW x y)
1205 goto end1c01f04a173d86ce1a6d1ef59e753014
1206 end1c01f04a173d86ce1a6d1ef59e753014:
1209 // match: (And32 x y)
1211 // result: (ANDL x y)
1223 goto end6b9eb9375b3a859028a6ba6bf6b8ec88
1224 end6b9eb9375b3a859028a6ba6bf6b8ec88:
1227 // match: (And64 x y)
1229 // result: (ANDQ x y)
1241 goto enda0bde5853819d05fa2b7d3b723629552
1242 enda0bde5853819d05fa2b7d3b723629552:
1245 // match: (And8 x y)
1247 // result: (ANDB x y)
1259 goto end0f53bee6291f1229b43aa1b5f977b4f2
1260 end0f53bee6291f1229b43aa1b5f977b4f2:
1263 // match: (CMPB x (MOVBconst [c]))
1265 // result: (CMPBconst x [c])
1268 if v.Args[1].Op != OpAMD64MOVBconst {
1269 goto end52190c0b8759133aa6c540944965c4c0
1271 c := v.Args[1].AuxInt
1272 v.Op = OpAMD64CMPBconst
1280 goto end52190c0b8759133aa6c540944965c4c0
1281 end52190c0b8759133aa6c540944965c4c0:
1283 // match: (CMPB (MOVBconst [c]) x)
1285 // result: (InvertFlags (CMPBconst x [c]))
1287 if v.Args[0].Op != OpAMD64MOVBconst {
1288 goto end25ab646f9eb8749ea58c8fbbb4bf6bcd
1290 c := v.Args[0].AuxInt
1292 v.Op = OpAMD64InvertFlags
1296 v0 := b.NewValue0(v.Line, OpAMD64CMPBconst, TypeInvalid)
1303 goto end25ab646f9eb8749ea58c8fbbb4bf6bcd
1304 end25ab646f9eb8749ea58c8fbbb4bf6bcd:
1307 // match: (CMPL x (MOVLconst [c]))
1309 // result: (CMPLconst x [c])
1312 if v.Args[1].Op != OpAMD64MOVLconst {
1313 goto end49ff4559c4bdecb2aef0c905e2d9a6cf
1315 c := v.Args[1].AuxInt
1316 v.Op = OpAMD64CMPLconst
1324 goto end49ff4559c4bdecb2aef0c905e2d9a6cf
1325 end49ff4559c4bdecb2aef0c905e2d9a6cf:
1327 // match: (CMPL (MOVLconst [c]) x)
1329 // result: (InvertFlags (CMPLconst x [c]))
1331 if v.Args[0].Op != OpAMD64MOVLconst {
1332 goto end7d89230086678ab4ed5cc96a3ae358d6
1334 c := v.Args[0].AuxInt
1336 v.Op = OpAMD64InvertFlags
1340 v0 := b.NewValue0(v.Line, OpAMD64CMPLconst, TypeInvalid)
1347 goto end7d89230086678ab4ed5cc96a3ae358d6
1348 end7d89230086678ab4ed5cc96a3ae358d6:
1351 // match: (CMPQ x (MOVQconst [c]))
1353 // result: (CMPQconst x [c])
1356 if v.Args[1].Op != OpAMD64MOVQconst {
1357 goto end3bbb2c6caa57853a7561738ce3c0c630
1359 c := v.Args[1].AuxInt
1361 goto end3bbb2c6caa57853a7561738ce3c0c630
1363 v.Op = OpAMD64CMPQconst
1371 goto end3bbb2c6caa57853a7561738ce3c0c630
1372 end3bbb2c6caa57853a7561738ce3c0c630:
1374 // match: (CMPQ (MOVQconst [c]) x)
1376 // result: (InvertFlags (CMPQconst x [c]))
1378 if v.Args[0].Op != OpAMD64MOVQconst {
1379 goto end153e951c4d9890ee40bf6f189ff6280e
1381 c := v.Args[0].AuxInt
1384 goto end153e951c4d9890ee40bf6f189ff6280e
1386 v.Op = OpAMD64InvertFlags
1390 v0 := b.NewValue0(v.Line, OpAMD64CMPQconst, TypeInvalid)
1397 goto end153e951c4d9890ee40bf6f189ff6280e
1398 end153e951c4d9890ee40bf6f189ff6280e:
1401 // match: (CMPW x (MOVWconst [c]))
1403 // result: (CMPWconst x [c])
1406 if v.Args[1].Op != OpAMD64MOVWconst {
1407 goto end310a9ba58ac35c97587e08c63fe8a46c
1409 c := v.Args[1].AuxInt
1410 v.Op = OpAMD64CMPWconst
1418 goto end310a9ba58ac35c97587e08c63fe8a46c
1419 end310a9ba58ac35c97587e08c63fe8a46c:
1421 // match: (CMPW (MOVWconst [c]) x)
1423 // result: (InvertFlags (CMPWconst x [c]))
1425 if v.Args[0].Op != OpAMD64MOVWconst {
1426 goto end3c52d0ae6e3d186bf131b41276c21889
1428 c := v.Args[0].AuxInt
1430 v.Op = OpAMD64InvertFlags
1434 v0 := b.NewValue0(v.Line, OpAMD64CMPWconst, TypeInvalid)
1441 goto end3c52d0ae6e3d186bf131b41276c21889
1442 end3c52d0ae6e3d186bf131b41276c21889:
1445 // match: (ClosureCall [argwid] entry closure mem)
1447 // result: (CALLclosure [argwid] entry closure mem)
1451 closure := v.Args[1]
1453 v.Op = OpAMD64CALLclosure
1463 goto endfd75d26316012d86cb71d0dd1214259b
1464 endfd75d26316012d86cb71d0dd1214259b:
1479 goto end1b14ba8d7d7aa585ec0a211827f280ae
1480 end1b14ba8d7d7aa585ec0a211827f280ae:
1495 goto end6eb124ba3bdb3fd6031414370852feb6
1496 end6eb124ba3bdb3fd6031414370852feb6:
1511 goto endf5f3b355a87779c347e305719dddda05
1512 endf5f3b355a87779c347e305719dddda05:
1527 goto end1c7c5c055d663ccf1f05fbc4883030c6
1528 end1c7c5c055d663ccf1f05fbc4883030c6:
1531 // match: (Const16 [val])
1533 // result: (MOVWconst [val])
1536 v.Op = OpAMD64MOVWconst
1543 goto end2c6c92f297873b8ac12bd035d56d001e
1544 end2c6c92f297873b8ac12bd035d56d001e:
1547 // match: (Const32 [val])
1549 // result: (MOVLconst [val])
1552 v.Op = OpAMD64MOVLconst
1559 goto enddae5807662af67143a3ac3ad9c63bae5
1560 enddae5807662af67143a3ac3ad9c63bae5:
1563 // match: (Const32F [val])
1565 // result: (MOVSSconst [val])
1568 v.Op = OpAMD64MOVSSconst
1575 goto endfabcef2d57a8f36eaa6041de6f112b89
1576 endfabcef2d57a8f36eaa6041de6f112b89:
1579 // match: (Const64 [val])
1581 // result: (MOVQconst [val])
1584 v.Op = OpAMD64MOVQconst
1591 goto endc630434ae7f143ab69d5f482a9b52b5f
1592 endc630434ae7f143ab69d5f482a9b52b5f:
1595 // match: (Const64F [val])
1597 // result: (MOVSDconst [val])
1600 v.Op = OpAMD64MOVSDconst
1607 goto endae6cf7189e464bbde17b98635a20f0ff
1608 endae6cf7189e464bbde17b98635a20f0ff:
1611 // match: (Const8 [val])
1613 // result: (MOVBconst [val])
1616 v.Op = OpAMD64MOVBconst
1623 goto end200524c722ed14ca935ba47f8f30327d
1624 end200524c722ed14ca935ba47f8f30327d:
1627 // match: (ConstBool [b])
1629 // result: (MOVBconst [b])
1632 v.Op = OpAMD64MOVBconst
1639 goto end6d919011283330dcbcb3826f0adc6793
1640 end6d919011283330dcbcb3826f0adc6793:
1643 // match: (ConstNil)
1645 // result: (MOVQconst [0])
1647 v.Op = OpAMD64MOVQconst
1654 goto endea557d921056c25b945a49649e4b9b91
1655 endea557d921056c25b945a49649e4b9b91:
1658 // match: (ConstPtr [val])
1660 // result: (MOVQconst [val])
1663 v.Op = OpAMD64MOVQconst
1670 goto endc395c0a53eeccf597e225a07b53047d1
1671 endc395c0a53eeccf597e225a07b53047d1:
1674 // match: (Cvt32Fto32 x)
1676 // result: (CVTTSS2SL x)
1679 v.Op = OpAMD64CVTTSS2SL
1686 goto enda410209d31804e1bce7bdc235fc62342
1687 enda410209d31804e1bce7bdc235fc62342:
1690 // match: (Cvt32Fto64 x)
1692 // result: (CVTTSS2SQ x)
1695 v.Op = OpAMD64CVTTSS2SQ
1702 goto enddb02fa4f3230a14d557d6c90cdadd523
1703 enddb02fa4f3230a14d557d6c90cdadd523:
1706 // match: (Cvt32Fto64F x)
1708 // result: (CVTSS2SD x)
1711 v.Op = OpAMD64CVTSS2SD
1718 goto end0bf5d6f8d182ee2b3ab7d7c2f8ff7790
1719 end0bf5d6f8d182ee2b3ab7d7c2f8ff7790:
1722 // match: (Cvt32to32F x)
1724 // result: (CVTSL2SS x)
1727 v.Op = OpAMD64CVTSL2SS
1734 goto ende0bdea2b21aecdb8399d6fd80ddc97d6
1735 ende0bdea2b21aecdb8399d6fd80ddc97d6:
1738 // match: (Cvt32to64F x)
1740 // result: (CVTSL2SD x)
1743 v.Op = OpAMD64CVTSL2SD
1750 goto ende06cbe745112bcf0e6612788ef71c958
1751 ende06cbe745112bcf0e6612788ef71c958:
1754 // match: (Cvt64Fto32 x)
1756 // result: (CVTTSD2SL x)
1759 v.Op = OpAMD64CVTTSD2SL
1766 goto endc213dd690dfe568607dec717b2c385b7
1767 endc213dd690dfe568607dec717b2c385b7:
1770 // match: (Cvt64Fto32F x)
1772 // result: (CVTSD2SS x)
1775 v.Op = OpAMD64CVTSD2SS
1782 goto endfd70158a96824ced99712d606c607d94
1783 endfd70158a96824ced99712d606c607d94:
1786 // match: (Cvt64Fto64 x)
1788 // result: (CVTTSD2SQ x)
1791 v.Op = OpAMD64CVTTSD2SQ
1798 goto end0bf3e4468047fd20714266ff05797454
1799 end0bf3e4468047fd20714266ff05797454:
1802 // match: (Cvt64to32F x)
1804 // result: (CVTSQ2SS x)
1807 v.Op = OpAMD64CVTSQ2SS
1814 goto endfecc08b8a8cbd2bf3be21a077c4d0d40
1815 endfecc08b8a8cbd2bf3be21a077c4d0d40:
1818 // match: (Cvt64to64F x)
1820 // result: (CVTSQ2SD x)
1823 v.Op = OpAMD64CVTSQ2SD
1830 goto endf74ce5df659f385f75c61187b515a5d0
1831 endf74ce5df659f385f75c61187b515a5d0:
1834 // match: (DeferCall [argwid] mem)
1836 // result: (CALLdefer [argwid] mem)
1840 v.Op = OpAMD64CALLdefer
1848 goto end1c408581037450df959dd1fb7554a022
1849 end1c408581037450df959dd1fb7554a022:
1852 // match: (Div16 x y)
1854 // result: (DIVW x y)
1866 goto endb60a86e606726640c84d3e1e5a5ce890
1867 endb60a86e606726640c84d3e1e5a5ce890:
1870 // match: (Div16u x y)
1872 // result: (DIVWU x y)
1884 goto end6af9e212a865593e506bfdf7db67c9ec
1885 end6af9e212a865593e506bfdf7db67c9ec:
1888 // match: (Div32 x y)
1890 // result: (DIVL x y)
1902 goto endf20ac71407e57c2904684d3cc33cf697
1903 endf20ac71407e57c2904684d3cc33cf697:
1906 // match: (Div32F x y)
1908 // result: (DIVSS x y)
1920 goto enddca0462c7b176c4138854d7d5627ab5b
1921 enddca0462c7b176c4138854d7d5627ab5b:
1924 // match: (Div32u x y)
1926 // result: (DIVLU x y)
1938 goto enda22604d23eeb1298008c97b817f60bbd
1939 enda22604d23eeb1298008c97b817f60bbd:
1942 // match: (Div64 x y)
1944 // result: (DIVQ x y)
1956 goto end86490d9b337333dfc09a413e1e0120a9
1957 end86490d9b337333dfc09a413e1e0120a9:
1960 // match: (Div64F x y)
1962 // result: (DIVSD x y)
1974 goto end12299d76db5144a60f564d34ba97eb43
1975 end12299d76db5144a60f564d34ba97eb43:
1978 // match: (Div64u x y)
1980 // result: (DIVQU x y)
1992 goto endf871d8b397e5fad6a5b500cc0c759a8d
1993 endf871d8b397e5fad6a5b500cc0c759a8d:
1996 // match: (Div8 x y)
1998 // result: (DIVW (SignExt8to16 x) (SignExt8to16 y))
2006 v0 := b.NewValue0(v.Line, OpSignExt8to16, TypeInvalid)
2008 v0.Type = config.fe.TypeInt16()
2010 v1 := b.NewValue0(v.Line, OpSignExt8to16, TypeInvalid)
2012 v1.Type = config.fe.TypeInt16()
2016 goto endeee2bc780a73ec2ccb1a66c527816ee0
2017 endeee2bc780a73ec2ccb1a66c527816ee0:
2020 // match: (Div8u x y)
2022 // result: (DIVWU (ZeroExt8to16 x) (ZeroExt8to16 y))
2030 v0 := b.NewValue0(v.Line, OpZeroExt8to16, TypeInvalid)
2032 v0.Type = config.fe.TypeUInt16()
2034 v1 := b.NewValue0(v.Line, OpZeroExt8to16, TypeInvalid)
2036 v1.Type = config.fe.TypeUInt16()
2040 goto end39da6664d6434d844303f6924cc875dd
2041 end39da6664d6434d844303f6924cc875dd:
2044 // match: (Eq16 x y)
2046 // result: (SETEQ (CMPW x y))
2054 v0 := b.NewValue0(v.Line, OpAMD64CMPW, TypeInvalid)
2061 goto endd7f668b1d23603b0949953ee8dec8107
2062 endd7f668b1d23603b0949953ee8dec8107:
2065 // match: (Eq32 x y)
2067 // result: (SETEQ (CMPL x y))
2075 v0 := b.NewValue0(v.Line, OpAMD64CMPL, TypeInvalid)
2082 goto endf28041ae0c73fb341cc0d2f4903fb2fb
2083 endf28041ae0c73fb341cc0d2f4903fb2fb:
2086 // match: (Eq32F x y)
2088 // result: (SETEQF (UCOMISS x y))
2092 v.Op = OpAMD64SETEQF
2096 v0 := b.NewValue0(v.Line, OpAMD64UCOMISS, TypeInvalid)
2103 goto endb2c12933769e5faa8fc238048e113dee
2104 endb2c12933769e5faa8fc238048e113dee:
2107 // match: (Eq64 x y)
2109 // result: (SETEQ (CMPQ x y))
2117 v0 := b.NewValue0(v.Line, OpAMD64CMPQ, TypeInvalid)
2124 goto ende07a380487b710b51bcd5aa6d3144b8c
2125 ende07a380487b710b51bcd5aa6d3144b8c:
2128 // match: (Eq64F x y)
2130 // result: (SETEQF (UCOMISD x y))
2134 v.Op = OpAMD64SETEQF
2138 v0 := b.NewValue0(v.Line, OpAMD64UCOMISD, TypeInvalid)
2145 goto end68e20c0c1b3ee62fbd17af07ac100704
2146 end68e20c0c1b3ee62fbd17af07ac100704:
2151 // result: (SETEQ (CMPB x y))
2159 v0 := b.NewValue0(v.Line, OpAMD64CMPB, TypeInvalid)
2166 goto end359e5a51d2ab928a455f0ae5adb42ab0
2167 end359e5a51d2ab928a455f0ae5adb42ab0:
2170 // match: (EqPtr x y)
2172 // result: (SETEQ (CMPQ x y))
2180 v0 := b.NewValue0(v.Line, OpAMD64CMPQ, TypeInvalid)
2187 goto endf19bd3c0eb99d15718bef4066d62560c
2188 endf19bd3c0eb99d15718bef4066d62560c:
2191 // match: (Geq16 x y)
2193 // result: (SETGE (CMPW x y))
2201 v0 := b.NewValue0(v.Line, OpAMD64CMPW, TypeInvalid)
2208 goto end0a3f723d5c0b877c473b0043d814867b
2209 end0a3f723d5c0b877c473b0043d814867b:
2212 // match: (Geq16U x y)
2214 // result: (SETAE (CMPW x y))
2222 v0 := b.NewValue0(v.Line, OpAMD64CMPW, TypeInvalid)
2229 goto end79d754a28ee34eff95140635b26f0248
2230 end79d754a28ee34eff95140635b26f0248:
2233 // match: (Geq32 x y)
2235 // result: (SETGE (CMPL x y))
2243 v0 := b.NewValue0(v.Line, OpAMD64CMPL, TypeInvalid)
2250 goto endfb1f6286a1b153b2a3f5b8548a782c8c
2251 endfb1f6286a1b153b2a3f5b8548a782c8c:
2254 // match: (Geq32F x y)
2256 // result: (SETGEF (UCOMISS x y))
2260 v.Op = OpAMD64SETGEF
2264 v0 := b.NewValue0(v.Line, OpAMD64UCOMISS, TypeInvalid)
2271 goto end7a8d6107a945410e64db06669a61da97
2272 end7a8d6107a945410e64db06669a61da97:
2275 // match: (Geq32U x y)
2277 // result: (SETAE (CMPL x y))
2285 v0 := b.NewValue0(v.Line, OpAMD64CMPL, TypeInvalid)
2292 goto endc5d3478a626df01ede063564f4cb80d0
2293 endc5d3478a626df01ede063564f4cb80d0:
2296 // match: (Geq64 x y)
2298 // result: (SETGE (CMPQ x y))
2306 v0 := b.NewValue0(v.Line, OpAMD64CMPQ, TypeInvalid)
2313 goto end74bddb7905ab865de5b041e7e4789911
2314 end74bddb7905ab865de5b041e7e4789911:
2317 // match: (Geq64F x y)
2319 // result: (SETGEF (UCOMISD x y))
2323 v.Op = OpAMD64SETGEF
2327 v0 := b.NewValue0(v.Line, OpAMD64UCOMISD, TypeInvalid)
2334 goto end9fac9bd98ef58b7fbbe1a31f84bdcccf
2335 end9fac9bd98ef58b7fbbe1a31f84bdcccf:
2338 // match: (Geq64U x y)
2340 // result: (SETAE (CMPQ x y))
2348 v0 := b.NewValue0(v.Line, OpAMD64CMPQ, TypeInvalid)
2355 goto end95101721fc8f5be9969e50e364143e7f
2356 end95101721fc8f5be9969e50e364143e7f:
2359 // match: (Geq8 x y)
2361 // result: (SETGE (CMPB x y))
2369 v0 := b.NewValue0(v.Line, OpAMD64CMPB, TypeInvalid)
2376 goto end983070a3db317bdb64b5a0fb104d267c
2377 end983070a3db317bdb64b5a0fb104d267c:
2380 // match: (Geq8U x y)
2382 // result: (SETAE (CMPB x y))
2390 v0 := b.NewValue0(v.Line, OpAMD64CMPB, TypeInvalid)
2397 goto enda617119faaccc0f0c2d23548116cf331
2398 enda617119faaccc0f0c2d23548116cf331:
2400 case OpGetClosurePtr:
2401 // match: (GetClosurePtr)
2403 // result: (LoweredGetClosurePtr)
2405 v.Op = OpAMD64LoweredGetClosurePtr
2411 goto end6fd0b53f0acb4d35e7d7fa78d2ca1392
2412 end6fd0b53f0acb4d35e7d7fa78d2ca1392:
2415 // match: (GetG mem)
2417 // result: (LoweredGetG mem)
2420 v.Op = OpAMD64LoweredGetG
2427 goto endf543eaaf68c4bef1d4cdc8ba19683723
2428 endf543eaaf68c4bef1d4cdc8ba19683723:
2431 // match: (GoCall [argwid] mem)
2433 // result: (CALLgo [argwid] mem)
2437 v.Op = OpAMD64CALLgo
2445 goto end1cef0f92c46e6aaa2c7abdf5f2794baf
2446 end1cef0f92c46e6aaa2c7abdf5f2794baf:
2449 // match: (Greater16 x y)
2451 // result: (SETG (CMPW x y))
2459 v0 := b.NewValue0(v.Line, OpAMD64CMPW, TypeInvalid)
2466 goto end4e4a1307c61240af9a86d8fe4f834ee8
2467 end4e4a1307c61240af9a86d8fe4f834ee8:
2470 // match: (Greater16U x y)
2472 // result: (SETA (CMPW x y))
2480 v0 := b.NewValue0(v.Line, OpAMD64CMPW, TypeInvalid)
2487 goto end7c66c75f4b8ec1db593f3e60cfba9592
2488 end7c66c75f4b8ec1db593f3e60cfba9592:
2491 // match: (Greater32 x y)
2493 // result: (SETG (CMPL x y))
2501 v0 := b.NewValue0(v.Line, OpAMD64CMPL, TypeInvalid)
2508 goto end6fb0eae4a0e0e81b4afb085d398d873b
2509 end6fb0eae4a0e0e81b4afb085d398d873b:
2512 // match: (Greater32F x y)
2514 // result: (SETGF (UCOMISS x y))
2522 v0 := b.NewValue0(v.Line, OpAMD64UCOMISS, TypeInvalid)
2529 goto end94df0bd5cedad8ce8021df1b24da40c6
2530 end94df0bd5cedad8ce8021df1b24da40c6:
2533 // match: (Greater32U x y)
2535 // result: (SETA (CMPL x y))
2543 v0 := b.NewValue0(v.Line, OpAMD64CMPL, TypeInvalid)
2550 goto end18da022a28eae8bd0771e0c948aadaf8
2551 end18da022a28eae8bd0771e0c948aadaf8:
2554 // match: (Greater64 x y)
2556 // result: (SETG (CMPQ x y))
2564 v0 := b.NewValue0(v.Line, OpAMD64CMPQ, TypeInvalid)
2571 goto endc025c908708f939780fba0da0c1148b4
2572 endc025c908708f939780fba0da0c1148b4:
2575 // match: (Greater64F x y)
2577 // result: (SETGF (UCOMISD x y))
2585 v0 := b.NewValue0(v.Line, OpAMD64UCOMISD, TypeInvalid)
2592 goto end033ca5181b18376e7215c02812ef5a6b
2593 end033ca5181b18376e7215c02812ef5a6b:
2596 // match: (Greater64U x y)
2598 // result: (SETA (CMPQ x y))
2606 v0 := b.NewValue0(v.Line, OpAMD64CMPQ, TypeInvalid)
2613 goto endb3e25347041760a04d3fc8321c3f3d00
2614 endb3e25347041760a04d3fc8321c3f3d00:
2617 // match: (Greater8 x y)
2619 // result: (SETG (CMPB x y))
2627 v0 := b.NewValue0(v.Line, OpAMD64CMPB, TypeInvalid)
2634 goto enda3eeb5da2e69cb54a1515601d4b360d4
2635 enda3eeb5da2e69cb54a1515601d4b360d4:
2638 // match: (Greater8U x y)
2640 // result: (SETA (CMPB x y))
2648 v0 := b.NewValue0(v.Line, OpAMD64CMPB, TypeInvalid)
2655 goto endd2027f3b6471262f42b90c8cc0413667
2656 endd2027f3b6471262f42b90c8cc0413667:
2659 // match: (Hmul16 x y)
2661 // result: (HMULW x y)
2673 goto end1b9ff394bb3b06fc109637656b6875f5
2674 end1b9ff394bb3b06fc109637656b6875f5:
2677 // match: (Hmul16u x y)
2679 // result: (HMULWU x y)
2683 v.Op = OpAMD64HMULWU
2691 goto endee9089e794a43f2ce1619a6ef61670f4
2692 endee9089e794a43f2ce1619a6ef61670f4:
2695 // match: (Hmul32 x y)
2697 // result: (HMULL x y)
2709 goto end7c83c91ef2634f0b1da4f49350b437b1
2710 end7c83c91ef2634f0b1da4f49350b437b1:
2713 // match: (Hmul32u x y)
2715 // result: (HMULLU x y)
2719 v.Op = OpAMD64HMULLU
2727 goto end3c4f36611dc8815aa2a63d4ec0eaa06d
2728 end3c4f36611dc8815aa2a63d4ec0eaa06d:
2731 // match: (Hmul8 x y)
2733 // result: (HMULB x y)
2745 goto end51b2cc9f1ed15314e68fc81024f281a7
2746 end51b2cc9f1ed15314e68fc81024f281a7:
2749 // match: (Hmul8u x y)
2751 // result: (HMULBU x y)
2755 v.Op = OpAMD64HMULBU
2763 goto ende68d7b3a3c774cedc3522af9d635c39d
2764 ende68d7b3a3c774cedc3522af9d635c39d:
2767 // match: (ITab (Load ptr mem))
2769 // result: (MOVQload ptr mem)
2771 if v.Args[0].Op != OpLoad {
2772 goto enda49fcae3630a097c78aa58189c90a97a
2774 ptr := v.Args[0].Args[0]
2775 mem := v.Args[0].Args[1]
2776 v.Op = OpAMD64MOVQload
2784 goto enda49fcae3630a097c78aa58189c90a97a
2785 enda49fcae3630a097c78aa58189c90a97a:
2788 // match: (InterCall [argwid] entry mem)
2790 // result: (CALLinter [argwid] entry mem)
2795 v.Op = OpAMD64CALLinter
2804 goto endc04351e492ed362efc6aa75121bca305
2805 endc04351e492ed362efc6aa75121bca305:
2808 // match: (IsInBounds idx len)
2810 // result: (SETB (CMPQ idx len))
2818 v0 := b.NewValue0(v.Line, OpAMD64CMPQ, TypeInvalid)
2825 goto endfff988d5f1912886d73be3bb563c37d9
2826 endfff988d5f1912886d73be3bb563c37d9:
2829 // match: (IsNonNil p)
2831 // result: (SETNE (TESTQ p p))
2838 v0 := b.NewValue0(v.Line, OpAMD64TESTQ, TypeInvalid)
2845 goto end0af5ec868ede9ea73fb0602d54b863e9
2846 end0af5ec868ede9ea73fb0602d54b863e9:
2848 case OpIsSliceInBounds:
2849 // match: (IsSliceInBounds idx len)
2851 // result: (SETBE (CMPQ idx len))
2859 v0 := b.NewValue0(v.Line, OpAMD64CMPQ, TypeInvalid)
2866 goto end02799ad95fe7fb5ce3c2c8ab313b737c
2867 end02799ad95fe7fb5ce3c2c8ab313b737c:
2870 // match: (Leq16 x y)
2872 // result: (SETLE (CMPW x y))
2880 v0 := b.NewValue0(v.Line, OpAMD64CMPW, TypeInvalid)
2887 goto end586c647ca6bb8ec725eea917c743d1ea
2888 end586c647ca6bb8ec725eea917c743d1ea:
2891 // match: (Leq16U x y)
2893 // result: (SETBE (CMPW x y))
2901 v0 := b.NewValue0(v.Line, OpAMD64CMPW, TypeInvalid)
2908 goto end9c24a81bc6a4a92267bd6638362dfbfc
2909 end9c24a81bc6a4a92267bd6638362dfbfc:
2912 // match: (Leq32 x y)
2914 // result: (SETLE (CMPL x y))
2922 v0 := b.NewValue0(v.Line, OpAMD64CMPL, TypeInvalid)
2929 goto end595ee99a9fc3460b2748b9129b139f88
2930 end595ee99a9fc3460b2748b9129b139f88:
2933 // match: (Leq32F x y)
2935 // result: (SETGEF (UCOMISS y x))
2939 v.Op = OpAMD64SETGEF
2943 v0 := b.NewValue0(v.Line, OpAMD64UCOMISS, TypeInvalid)
2950 goto endfee4b989a80cc43328b24f7017e80a17
2951 endfee4b989a80cc43328b24f7017e80a17:
2954 // match: (Leq32U x y)
2956 // result: (SETBE (CMPL x y))
2964 v0 := b.NewValue0(v.Line, OpAMD64CMPL, TypeInvalid)
2971 goto end1a59850aad6cb17c295d0dc359013420
2972 end1a59850aad6cb17c295d0dc359013420:
2975 // match: (Leq64 x y)
2977 // result: (SETLE (CMPQ x y))
2985 v0 := b.NewValue0(v.Line, OpAMD64CMPQ, TypeInvalid)
2992 goto end406def83fcbf29cd8fa306170b512de2
2993 end406def83fcbf29cd8fa306170b512de2:
2996 // match: (Leq64F x y)
2998 // result: (SETGEF (UCOMISD y x))
3002 v.Op = OpAMD64SETGEF
3006 v0 := b.NewValue0(v.Line, OpAMD64UCOMISD, TypeInvalid)
3013 goto end6e3de6d4b5668f673e3822d5947edbd0
3014 end6e3de6d4b5668f673e3822d5947edbd0:
3017 // match: (Leq64U x y)
3019 // result: (SETBE (CMPQ x y))
3027 v0 := b.NewValue0(v.Line, OpAMD64CMPQ, TypeInvalid)
3034 goto end52f23c145b80639c8d60420ad4057bc7
3035 end52f23c145b80639c8d60420ad4057bc7:
3038 // match: (Leq8 x y)
3040 // result: (SETLE (CMPB x y))
3048 v0 := b.NewValue0(v.Line, OpAMD64CMPB, TypeInvalid)
3055 goto end72ecba6f2a7062cb266923dfec811f79
3056 end72ecba6f2a7062cb266923dfec811f79:
3059 // match: (Leq8U x y)
3061 // result: (SETBE (CMPB x y))
3069 v0 := b.NewValue0(v.Line, OpAMD64CMPB, TypeInvalid)
3076 goto endb043b338cced4f15400d8d6e584ebea7
3077 endb043b338cced4f15400d8d6e584ebea7:
3080 // match: (Less16 x y)
3082 // result: (SETL (CMPW x y))
3090 v0 := b.NewValue0(v.Line, OpAMD64CMPW, TypeInvalid)
3097 goto end2f6c6ba80eda8d68e77a58cba13d3f16
3098 end2f6c6ba80eda8d68e77a58cba13d3f16:
3101 // match: (Less16U x y)
3103 // result: (SETB (CMPW x y))
3111 v0 := b.NewValue0(v.Line, OpAMD64CMPW, TypeInvalid)
3118 goto end9f65eefe7b83a3c436b5c16664c93703
3119 end9f65eefe7b83a3c436b5c16664c93703:
3122 // match: (Less32 x y)
3124 // result: (SETL (CMPL x y))
3132 v0 := b.NewValue0(v.Line, OpAMD64CMPL, TypeInvalid)
3139 goto end6632ff4ee994eb5b14cdf60c99ac3798
3140 end6632ff4ee994eb5b14cdf60c99ac3798:
3143 // match: (Less32F x y)
3145 // result: (SETGF (UCOMISS y x))
3153 v0 := b.NewValue0(v.Line, OpAMD64UCOMISS, TypeInvalid)
3160 goto end5b3b0c96a7fc2ede81bc89c9abaac9d0
3161 end5b3b0c96a7fc2ede81bc89c9abaac9d0:
3164 // match: (Less32U x y)
3166 // result: (SETB (CMPL x y))
3174 v0 := b.NewValue0(v.Line, OpAMD64CMPL, TypeInvalid)
3181 goto end39e5a513c7fb0a42817a6cf9c6143b60
3182 end39e5a513c7fb0a42817a6cf9c6143b60:
3185 // match: (Less64 x y)
3187 // result: (SETL (CMPQ x y))
3195 v0 := b.NewValue0(v.Line, OpAMD64CMPQ, TypeInvalid)
3202 goto enddce827d3e922e8487b61a88c2b1510f2
3203 enddce827d3e922e8487b61a88c2b1510f2:
3206 // match: (Less64F x y)
3208 // result: (SETGF (UCOMISD y x))
3216 v0 := b.NewValue0(v.Line, OpAMD64UCOMISD, TypeInvalid)
3223 goto endf2be3d2dcb6543d2159e7fff5ccbbb55
3224 endf2be3d2dcb6543d2159e7fff5ccbbb55:
3227 // match: (Less64U x y)
3229 // result: (SETB (CMPQ x y))
3237 v0 := b.NewValue0(v.Line, OpAMD64CMPQ, TypeInvalid)
3244 goto endb76d7768f175a44baf6d63d12ab6e81d
3245 endb76d7768f175a44baf6d63d12ab6e81d:
3248 // match: (Less8 x y)
3250 // result: (SETL (CMPB x y))
3258 v0 := b.NewValue0(v.Line, OpAMD64CMPB, TypeInvalid)
3265 goto end314fbffe99f3bd4b07857a80c0b914cd
3266 end314fbffe99f3bd4b07857a80c0b914cd:
3269 // match: (Less8U x y)
3271 // result: (SETB (CMPB x y))
3279 v0 := b.NewValue0(v.Line, OpAMD64CMPB, TypeInvalid)
3286 goto endadccc5d80fd053a33004ed0759f64d93
3287 endadccc5d80fd053a33004ed0759f64d93:
3290 // match: (Load <t> ptr mem)
3291 // cond: (is64BitInt(t) || isPtr(t))
3292 // result: (MOVQload ptr mem)
3297 if !(is64BitInt(t) || isPtr(t)) {
3298 goto end7c4c53acf57ebc5f03273652ba1d5934
3300 v.Op = OpAMD64MOVQload
3308 goto end7c4c53acf57ebc5f03273652ba1d5934
3309 end7c4c53acf57ebc5f03273652ba1d5934:
3311 // match: (Load <t> ptr mem)
3312 // cond: is32BitInt(t)
3313 // result: (MOVLload ptr mem)
3318 if !(is32BitInt(t)) {
3319 goto ende1cfcb15bfbcfd448ce303d0882a4057
3321 v.Op = OpAMD64MOVLload
3329 goto ende1cfcb15bfbcfd448ce303d0882a4057
3330 ende1cfcb15bfbcfd448ce303d0882a4057:
3332 // match: (Load <t> ptr mem)
3333 // cond: is16BitInt(t)
3334 // result: (MOVWload ptr mem)
3339 if !(is16BitInt(t)) {
3340 goto end2d0a1304501ed9f4e9e2d288505a9c7c
3342 v.Op = OpAMD64MOVWload
3350 goto end2d0a1304501ed9f4e9e2d288505a9c7c
3351 end2d0a1304501ed9f4e9e2d288505a9c7c:
3353 // match: (Load <t> ptr mem)
3354 // cond: (t.IsBoolean() || is8BitInt(t))
3355 // result: (MOVBload ptr mem)
3360 if !(t.IsBoolean() || is8BitInt(t)) {
3361 goto end8f83bf72293670e75b22d6627bd13f0b
3363 v.Op = OpAMD64MOVBload
3371 goto end8f83bf72293670e75b22d6627bd13f0b
3372 end8f83bf72293670e75b22d6627bd13f0b:
3374 // match: (Load <t> ptr mem)
3375 // cond: is32BitFloat(t)
3376 // result: (MOVSSload ptr mem)
3381 if !(is32BitFloat(t)) {
3382 goto end63383c4895805881aabceebea3c4c533
3384 v.Op = OpAMD64MOVSSload
3392 goto end63383c4895805881aabceebea3c4c533
3393 end63383c4895805881aabceebea3c4c533:
3395 // match: (Load <t> ptr mem)
3396 // cond: is64BitFloat(t)
3397 // result: (MOVSDload ptr mem)
3402 if !(is64BitFloat(t)) {
3403 goto end99d0858c0a5bb72f0fe4decc748da812
3405 v.Op = OpAMD64MOVSDload
3413 goto end99d0858c0a5bb72f0fe4decc748da812
3414 end99d0858c0a5bb72f0fe4decc748da812:
3417 // match: (Lrot16 <t> x [c])
3419 // result: (ROLWconst <t> [c&15] x)
3424 v.Op = OpAMD64ROLWconst
3433 goto endb23dfa24c619d0068f925899d53ee7fd
3434 endb23dfa24c619d0068f925899d53ee7fd:
3437 // match: (Lrot32 <t> x [c])
3439 // result: (ROLLconst <t> [c&31] x)
3444 v.Op = OpAMD64ROLLconst
3453 goto end38b2215c011896c36845f72ecb72b1b0
3454 end38b2215c011896c36845f72ecb72b1b0:
3457 // match: (Lrot64 <t> x [c])
3459 // result: (ROLQconst <t> [c&63] x)
3464 v.Op = OpAMD64ROLQconst
3473 goto end5cb355e4f3ca387f252ef4f6a55f9f68
3474 end5cb355e4f3ca387f252ef4f6a55f9f68:
3477 // match: (Lrot8 <t> x [c])
3479 // result: (ROLBconst <t> [c&7] x)
3484 v.Op = OpAMD64ROLBconst
3493 goto end26bfb3dd5b537cf13ac9f2978d94ed71
3494 end26bfb3dd5b537cf13ac9f2978d94ed71:
3497 // match: (Lsh16x16 <t> x y)
3499 // result: (ANDW (SHLW <t> x y) (SBBLcarrymask <t> (CMPWconst [16] y)))
3508 v0 := b.NewValue0(v.Line, OpAMD64SHLW, TypeInvalid)
3513 v1 := b.NewValue0(v.Line, OpAMD64SBBLcarrymask, TypeInvalid)
3515 v2 := b.NewValue0(v.Line, OpAMD64CMPWconst, TypeInvalid)
3523 goto end7ffc4f31c526f7fcb2283215b458f589
3524 end7ffc4f31c526f7fcb2283215b458f589:
3527 // match: (Lsh16x32 <t> x y)
3529 // result: (ANDW (SHLW <t> x y) (SBBLcarrymask <t> (CMPLconst [16] y)))
3538 v0 := b.NewValue0(v.Line, OpAMD64SHLW, TypeInvalid)
3543 v1 := b.NewValue0(v.Line, OpAMD64SBBLcarrymask, TypeInvalid)
3545 v2 := b.NewValue0(v.Line, OpAMD64CMPLconst, TypeInvalid)
3553 goto enddcc0e751d315967423c99518c0cc065e
3554 enddcc0e751d315967423c99518c0cc065e:
3557 // match: (Lsh16x64 <t> x y)
3559 // result: (ANDW (SHLW <t> x y) (SBBLcarrymask <t> (CMPQconst [16] y)))
3568 v0 := b.NewValue0(v.Line, OpAMD64SHLW, TypeInvalid)
3573 v1 := b.NewValue0(v.Line, OpAMD64SBBLcarrymask, TypeInvalid)
3575 v2 := b.NewValue0(v.Line, OpAMD64CMPQconst, TypeInvalid)
3583 goto endf6368b59d046ca83050cd75fbe8715d2
3584 endf6368b59d046ca83050cd75fbe8715d2:
3587 // match: (Lsh16x8 <t> x y)
3589 // result: (ANDW (SHLW <t> x y) (SBBLcarrymask <t> (CMPBconst [16] y)))
3598 v0 := b.NewValue0(v.Line, OpAMD64SHLW, TypeInvalid)
3603 v1 := b.NewValue0(v.Line, OpAMD64SBBLcarrymask, TypeInvalid)
3605 v2 := b.NewValue0(v.Line, OpAMD64CMPBconst, TypeInvalid)
3613 goto end8730d944c8fb358001ba2d165755bdc4
3614 end8730d944c8fb358001ba2d165755bdc4:
3617 // match: (Lsh32x16 <t> x y)
3619 // result: (ANDL (SHLL <t> x y) (SBBLcarrymask <t> (CMPWconst [32] y)))
3628 v0 := b.NewValue0(v.Line, OpAMD64SHLL, TypeInvalid)
3633 v1 := b.NewValue0(v.Line, OpAMD64SBBLcarrymask, TypeInvalid)
3635 v2 := b.NewValue0(v.Line, OpAMD64CMPWconst, TypeInvalid)
3643 goto end5a43b7e9b0780e62f622bac0a68524d2
3644 end5a43b7e9b0780e62f622bac0a68524d2:
3647 // match: (Lsh32x32 <t> x y)
3649 // result: (ANDL (SHLL <t> x y) (SBBLcarrymask <t> (CMPLconst [32] y)))
3658 v0 := b.NewValue0(v.Line, OpAMD64SHLL, TypeInvalid)
3663 v1 := b.NewValue0(v.Line, OpAMD64SBBLcarrymask, TypeInvalid)
3665 v2 := b.NewValue0(v.Line, OpAMD64CMPLconst, TypeInvalid)
3673 goto end9ce0ab6f9095c24ea46ca8fe2d7e5507
3674 end9ce0ab6f9095c24ea46ca8fe2d7e5507:
3677 // match: (Lsh32x64 <t> x y)
3679 // result: (ANDL (SHLL <t> x y) (SBBLcarrymask <t> (CMPQconst [32] y)))
3688 v0 := b.NewValue0(v.Line, OpAMD64SHLL, TypeInvalid)
3693 v1 := b.NewValue0(v.Line, OpAMD64SBBLcarrymask, TypeInvalid)
3695 v2 := b.NewValue0(v.Line, OpAMD64CMPQconst, TypeInvalid)
3703 goto end646b5471b709d5ea6c21f49a2815236f
3704 end646b5471b709d5ea6c21f49a2815236f:
3707 // match: (Lsh32x8 <t> x y)
3709 // result: (ANDL (SHLL <t> x y) (SBBLcarrymask <t> (CMPBconst [32] y)))
3718 v0 := b.NewValue0(v.Line, OpAMD64SHLL, TypeInvalid)
3723 v1 := b.NewValue0(v.Line, OpAMD64SBBLcarrymask, TypeInvalid)
3725 v2 := b.NewValue0(v.Line, OpAMD64CMPBconst, TypeInvalid)
3733 goto end96a677c71370e7c9179125f92cbdfda8
3734 end96a677c71370e7c9179125f92cbdfda8:
3737 // match: (Lsh64x16 <t> x y)
3739 // result: (ANDQ (SHLQ <t> x y) (SBBQcarrymask <t> (CMPWconst [64] y)))
3748 v0 := b.NewValue0(v.Line, OpAMD64SHLQ, TypeInvalid)
3753 v1 := b.NewValue0(v.Line, OpAMD64SBBQcarrymask, TypeInvalid)
3755 v2 := b.NewValue0(v.Line, OpAMD64CMPWconst, TypeInvalid)
3763 goto end5f88f241d68d38954222d81559cd7f9f
3764 end5f88f241d68d38954222d81559cd7f9f:
3767 // match: (Lsh64x32 <t> x y)
3769 // result: (ANDQ (SHLQ <t> x y) (SBBQcarrymask <t> (CMPLconst [64] y)))
3778 v0 := b.NewValue0(v.Line, OpAMD64SHLQ, TypeInvalid)
3783 v1 := b.NewValue0(v.Line, OpAMD64SBBQcarrymask, TypeInvalid)
3785 v2 := b.NewValue0(v.Line, OpAMD64CMPLconst, TypeInvalid)
3793 goto endae1705f03ed3d6f43cd63b53496a910a
3794 endae1705f03ed3d6f43cd63b53496a910a:
3797 // match: (Lsh64x64 <t> x y)
3799 // result: (ANDQ (SHLQ <t> x y) (SBBQcarrymask <t> (CMPQconst [64] y)))
3808 v0 := b.NewValue0(v.Line, OpAMD64SHLQ, TypeInvalid)
3813 v1 := b.NewValue0(v.Line, OpAMD64SBBQcarrymask, TypeInvalid)
3815 v2 := b.NewValue0(v.Line, OpAMD64CMPQconst, TypeInvalid)
3823 goto end1f6f5f510c5c68e4ce4a78643e6d85a1
3824 end1f6f5f510c5c68e4ce4a78643e6d85a1:
3827 // match: (Lsh64x8 <t> x y)
3829 // result: (ANDQ (SHLQ <t> x y) (SBBQcarrymask <t> (CMPBconst [64] y)))
3838 v0 := b.NewValue0(v.Line, OpAMD64SHLQ, TypeInvalid)
3843 v1 := b.NewValue0(v.Line, OpAMD64SBBQcarrymask, TypeInvalid)
3845 v2 := b.NewValue0(v.Line, OpAMD64CMPBconst, TypeInvalid)
3853 goto endd14f5c89e3496b0e425aa1ae366f4b53
3854 endd14f5c89e3496b0e425aa1ae366f4b53:
3857 // match: (Lsh8x16 <t> x y)
3859 // result: (ANDB (SHLB <t> x y) (SBBLcarrymask <t> (CMPWconst [8] y)))
3868 v0 := b.NewValue0(v.Line, OpAMD64SHLB, TypeInvalid)
3873 v1 := b.NewValue0(v.Line, OpAMD64SBBLcarrymask, TypeInvalid)
3875 v2 := b.NewValue0(v.Line, OpAMD64CMPWconst, TypeInvalid)
3883 goto end0926c3d8b9a0776ba5058946f6e1a4b7
3884 end0926c3d8b9a0776ba5058946f6e1a4b7:
3887 // match: (Lsh8x32 <t> x y)
3889 // result: (ANDB (SHLB <t> x y) (SBBLcarrymask <t> (CMPLconst [8] y)))
3898 v0 := b.NewValue0(v.Line, OpAMD64SHLB, TypeInvalid)
3903 v1 := b.NewValue0(v.Line, OpAMD64SBBLcarrymask, TypeInvalid)
3905 v2 := b.NewValue0(v.Line, OpAMD64CMPLconst, TypeInvalid)
3913 goto end5987682d77f197ef0fd95251f413535a
3914 end5987682d77f197ef0fd95251f413535a:
3917 // match: (Lsh8x64 <t> x y)
3919 // result: (ANDB (SHLB <t> x y) (SBBLcarrymask <t> (CMPQconst [8] y)))
3928 v0 := b.NewValue0(v.Line, OpAMD64SHLB, TypeInvalid)
3933 v1 := b.NewValue0(v.Line, OpAMD64SBBLcarrymask, TypeInvalid)
3935 v2 := b.NewValue0(v.Line, OpAMD64CMPQconst, TypeInvalid)
3943 goto end9ffe6731d7d6514b8c0482f1645eee18
3944 end9ffe6731d7d6514b8c0482f1645eee18:
3947 // match: (Lsh8x8 <t> x y)
3949 // result: (ANDB (SHLB <t> x y) (SBBLcarrymask <t> (CMPBconst [8] y)))
3958 v0 := b.NewValue0(v.Line, OpAMD64SHLB, TypeInvalid)
3963 v1 := b.NewValue0(v.Line, OpAMD64SBBLcarrymask, TypeInvalid)
3965 v2 := b.NewValue0(v.Line, OpAMD64CMPBconst, TypeInvalid)
3973 goto end2b75242a31c3713ffbfdd8f0288b1c12
3974 end2b75242a31c3713ffbfdd8f0288b1c12:
3976 case OpAMD64MOVBQSX:
3977 // match: (MOVBQSX (MOVBload [off] {sym} ptr mem))
3979 // result: @v.Args[0].Block (MOVBQSXload <v.Type> [off] {sym} ptr mem)
3981 if v.Args[0].Op != OpAMD64MOVBload {
3982 goto end19c38f3a1a37dca50637c917fa26e4f7
3984 off := v.Args[0].AuxInt
3985 sym := v.Args[0].Aux
3986 ptr := v.Args[0].Args[0]
3987 mem := v.Args[0].Args[1]
3988 v0 := v.Args[0].Block.NewValue0(v.Line, OpAMD64MOVBQSXload, TypeInvalid)
4001 goto end19c38f3a1a37dca50637c917fa26e4f7
4002 end19c38f3a1a37dca50637c917fa26e4f7:
4004 case OpAMD64MOVBQZX:
4005 // match: (MOVBQZX (MOVBload [off] {sym} ptr mem))
4007 // result: @v.Args[0].Block (MOVBQZXload <v.Type> [off] {sym} ptr mem)
4009 if v.Args[0].Op != OpAMD64MOVBload {
4010 goto end1169bcf3d56fa24321b002eaebd5a62d
4012 off := v.Args[0].AuxInt
4013 sym := v.Args[0].Aux
4014 ptr := v.Args[0].Args[0]
4015 mem := v.Args[0].Args[1]
4016 v0 := v.Args[0].Block.NewValue0(v.Line, OpAMD64MOVBQZXload, TypeInvalid)
4029 goto end1169bcf3d56fa24321b002eaebd5a62d
4030 end1169bcf3d56fa24321b002eaebd5a62d:
4032 case OpAMD64MOVBload:
4033 // match: (MOVBload [off1] {sym} (ADDQconst [off2] ptr) mem)
4035 // result: (MOVBload [addOff(off1, off2)] {sym} ptr mem)
4039 if v.Args[0].Op != OpAMD64ADDQconst {
4040 goto end7ec9147ab863c1bd59190fed81f894b6
4042 off2 := v.Args[0].AuxInt
4043 ptr := v.Args[0].Args[0]
4045 v.Op = OpAMD64MOVBload
4049 v.AuxInt = addOff(off1, off2)
4055 goto end7ec9147ab863c1bd59190fed81f894b6
4056 end7ec9147ab863c1bd59190fed81f894b6:
4058 // match: (MOVBload [off1] {sym1} (LEAQ [off2] {sym2} base) mem)
4059 // cond: canMergeSym(sym1, sym2)
4060 // result: (MOVBload [addOff(off1,off2)] {mergeSym(sym1,sym2)} base mem)
4064 if v.Args[0].Op != OpAMD64LEAQ {
4065 goto end3771a59cf66b0df99120d76f4c358fab
4067 off2 := v.Args[0].AuxInt
4068 sym2 := v.Args[0].Aux
4069 base := v.Args[0].Args[0]
4071 if !(canMergeSym(sym1, sym2)) {
4072 goto end3771a59cf66b0df99120d76f4c358fab
4074 v.Op = OpAMD64MOVBload
4078 v.AuxInt = addOff(off1, off2)
4079 v.Aux = mergeSym(sym1, sym2)
4084 goto end3771a59cf66b0df99120d76f4c358fab
4085 end3771a59cf66b0df99120d76f4c358fab:
4087 case OpAMD64MOVBstore:
4088 // match: (MOVBstore [off] {sym} ptr (MOVBQSX x) mem)
4090 // result: (MOVBstore [off] {sym} ptr x mem)
4095 if v.Args[1].Op != OpAMD64MOVBQSX {
4096 goto end5b3f41f0770d566ff1647dea1d4a40e8
4098 x := v.Args[1].Args[0]
4100 v.Op = OpAMD64MOVBstore
4111 goto end5b3f41f0770d566ff1647dea1d4a40e8
4112 end5b3f41f0770d566ff1647dea1d4a40e8:
4114 // match: (MOVBstore [off] {sym} ptr (MOVBQZX x) mem)
4116 // result: (MOVBstore [off] {sym} ptr x mem)
4121 if v.Args[1].Op != OpAMD64MOVBQZX {
4122 goto end3a2e55db7e03920700c4875f6a55de3b
4124 x := v.Args[1].Args[0]
4126 v.Op = OpAMD64MOVBstore
4137 goto end3a2e55db7e03920700c4875f6a55de3b
4138 end3a2e55db7e03920700c4875f6a55de3b:
4140 // match: (MOVBstore [off1] {sym} (ADDQconst [off2] ptr) val mem)
4142 // result: (MOVBstore [addOff(off1, off2)] {sym} ptr val mem)
4146 if v.Args[0].Op != OpAMD64ADDQconst {
4147 goto ende6347ac19d0469ee59d2e7f2e18d1070
4149 off2 := v.Args[0].AuxInt
4150 ptr := v.Args[0].Args[0]
4153 v.Op = OpAMD64MOVBstore
4157 v.AuxInt = addOff(off1, off2)
4164 goto ende6347ac19d0469ee59d2e7f2e18d1070
4165 ende6347ac19d0469ee59d2e7f2e18d1070:
4167 // match: (MOVBstore [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
4168 // cond: canMergeSym(sym1, sym2)
4169 // result: (MOVBstore [addOff(off1,off2)] {mergeSym(sym1,sym2)} base val mem)
4173 if v.Args[0].Op != OpAMD64LEAQ {
4174 goto enda7086cf7f6b8cf81972e2c3d4b12f3fc
4176 off2 := v.Args[0].AuxInt
4177 sym2 := v.Args[0].Aux
4178 base := v.Args[0].Args[0]
4181 if !(canMergeSym(sym1, sym2)) {
4182 goto enda7086cf7f6b8cf81972e2c3d4b12f3fc
4184 v.Op = OpAMD64MOVBstore
4188 v.AuxInt = addOff(off1, off2)
4189 v.Aux = mergeSym(sym1, sym2)
4195 goto enda7086cf7f6b8cf81972e2c3d4b12f3fc
4196 enda7086cf7f6b8cf81972e2c3d4b12f3fc:
4198 case OpAMD64MOVLload:
4199 // match: (MOVLload [off1] {sym} (ADDQconst [off2] ptr) mem)
4201 // result: (MOVLload [addOff(off1, off2)] {sym} ptr mem)
4205 if v.Args[0].Op != OpAMD64ADDQconst {
4206 goto end0c8b8a40360c5c581d92723eca04d340
4208 off2 := v.Args[0].AuxInt
4209 ptr := v.Args[0].Args[0]
4211 v.Op = OpAMD64MOVLload
4215 v.AuxInt = addOff(off1, off2)
4221 goto end0c8b8a40360c5c581d92723eca04d340
4222 end0c8b8a40360c5c581d92723eca04d340:
4224 // match: (MOVLload [off1] {sym1} (LEAQ [off2] {sym2} base) mem)
4225 // cond: canMergeSym(sym1, sym2)
4226 // result: (MOVLload [addOff(off1,off2)] {mergeSym(sym1,sym2)} base mem)
4230 if v.Args[0].Op != OpAMD64LEAQ {
4231 goto enddb9e59335876d8a565c425731438a1b3
4233 off2 := v.Args[0].AuxInt
4234 sym2 := v.Args[0].Aux
4235 base := v.Args[0].Args[0]
4237 if !(canMergeSym(sym1, sym2)) {
4238 goto enddb9e59335876d8a565c425731438a1b3
4240 v.Op = OpAMD64MOVLload
4244 v.AuxInt = addOff(off1, off2)
4245 v.Aux = mergeSym(sym1, sym2)
4250 goto enddb9e59335876d8a565c425731438a1b3
4251 enddb9e59335876d8a565c425731438a1b3:
4253 case OpAMD64MOVLstore:
4254 // match: (MOVLstore [off] {sym} ptr (MOVLQSX x) mem)
4256 // result: (MOVLstore [off] {sym} ptr x mem)
4261 if v.Args[1].Op != OpAMD64MOVLQSX {
4262 goto end1fb7b2ae707c76d30927c21f85d77472
4264 x := v.Args[1].Args[0]
4266 v.Op = OpAMD64MOVLstore
4277 goto end1fb7b2ae707c76d30927c21f85d77472
4278 end1fb7b2ae707c76d30927c21f85d77472:
4280 // match: (MOVLstore [off] {sym} ptr (MOVLQZX x) mem)
4282 // result: (MOVLstore [off] {sym} ptr x mem)
4287 if v.Args[1].Op != OpAMD64MOVLQZX {
4288 goto end199e8c23a5e7e99728a43d6a83b2c2cf
4290 x := v.Args[1].Args[0]
4292 v.Op = OpAMD64MOVLstore
4303 goto end199e8c23a5e7e99728a43d6a83b2c2cf
4304 end199e8c23a5e7e99728a43d6a83b2c2cf:
4306 // match: (MOVLstore [off1] {sym} (ADDQconst [off2] ptr) val mem)
4308 // result: (MOVLstore [addOff(off1, off2)] {sym} ptr val mem)
4312 if v.Args[0].Op != OpAMD64ADDQconst {
4313 goto end43bffdb8d9c1fc85a95778d4911955f1
4315 off2 := v.Args[0].AuxInt
4316 ptr := v.Args[0].Args[0]
4319 v.Op = OpAMD64MOVLstore
4323 v.AuxInt = addOff(off1, off2)
4330 goto end43bffdb8d9c1fc85a95778d4911955f1
4331 end43bffdb8d9c1fc85a95778d4911955f1:
4333 // match: (MOVLstore [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
4334 // cond: canMergeSym(sym1, sym2)
4335 // result: (MOVLstore [addOff(off1,off2)] {mergeSym(sym1,sym2)} base val mem)
4339 if v.Args[0].Op != OpAMD64LEAQ {
4340 goto endd57b1e4313fc7a3331340a9af00ba116
4342 off2 := v.Args[0].AuxInt
4343 sym2 := v.Args[0].Aux
4344 base := v.Args[0].Args[0]
4347 if !(canMergeSym(sym1, sym2)) {
4348 goto endd57b1e4313fc7a3331340a9af00ba116
4350 v.Op = OpAMD64MOVLstore
4354 v.AuxInt = addOff(off1, off2)
4355 v.Aux = mergeSym(sym1, sym2)
4361 goto endd57b1e4313fc7a3331340a9af00ba116
4362 endd57b1e4313fc7a3331340a9af00ba116:
4364 case OpAMD64MOVQload:
4365 // match: (MOVQload [off1] {sym} (ADDQconst [off2] ptr) mem)
4367 // result: (MOVQload [addOff(off1, off2)] {sym} ptr mem)
4371 if v.Args[0].Op != OpAMD64ADDQconst {
4372 goto end0b8c50dd7faefb7d046f9a27e054df77
4374 off2 := v.Args[0].AuxInt
4375 ptr := v.Args[0].Args[0]
4377 v.Op = OpAMD64MOVQload
4381 v.AuxInt = addOff(off1, off2)
4387 goto end0b8c50dd7faefb7d046f9a27e054df77
4388 end0b8c50dd7faefb7d046f9a27e054df77:
4390 // match: (MOVQload [off1] {sym1} (LEAQ [off2] {sym2} base) mem)
4391 // cond: canMergeSym(sym1, sym2)
4392 // result: (MOVQload [addOff(off1,off2)] {mergeSym(sym1,sym2)} base mem)
4396 if v.Args[0].Op != OpAMD64LEAQ {
4397 goto endd0c093adc4f05f2037005734c77d3cc4
4399 off2 := v.Args[0].AuxInt
4400 sym2 := v.Args[0].Aux
4401 base := v.Args[0].Args[0]
4403 if !(canMergeSym(sym1, sym2)) {
4404 goto endd0c093adc4f05f2037005734c77d3cc4
4406 v.Op = OpAMD64MOVQload
4410 v.AuxInt = addOff(off1, off2)
4411 v.Aux = mergeSym(sym1, sym2)
4416 goto endd0c093adc4f05f2037005734c77d3cc4
4417 endd0c093adc4f05f2037005734c77d3cc4:
4419 // match: (MOVQload [off1] {sym1} (LEAQ8 [off2] {sym2} ptr idx) mem)
4420 // cond: canMergeSym(sym1, sym2)
4421 // result: (MOVQloadidx8 [addOff(off1, off2)] {mergeSym(sym1,sym2)} ptr idx mem)
4425 if v.Args[0].Op != OpAMD64LEAQ8 {
4426 goto end74a50d810fb3945e809f608cd094a59c
4428 off2 := v.Args[0].AuxInt
4429 sym2 := v.Args[0].Aux
4430 ptr := v.Args[0].Args[0]
4431 idx := v.Args[0].Args[1]
4433 if !(canMergeSym(sym1, sym2)) {
4434 goto end74a50d810fb3945e809f608cd094a59c
4436 v.Op = OpAMD64MOVQloadidx8
4440 v.AuxInt = addOff(off1, off2)
4441 v.Aux = mergeSym(sym1, sym2)
4447 goto end74a50d810fb3945e809f608cd094a59c
4448 end74a50d810fb3945e809f608cd094a59c:
4450 case OpAMD64MOVQloadidx8:
4451 // match: (MOVQloadidx8 [off1] {sym} (ADDQconst [off2] ptr) idx mem)
4453 // result: (MOVQloadidx8 [addOff(off1, off2)] {sym} ptr idx mem)
4457 if v.Args[0].Op != OpAMD64ADDQconst {
4458 goto endb138bf9b0b33ec824bf0aff619f8bafa
4460 off2 := v.Args[0].AuxInt
4461 ptr := v.Args[0].Args[0]
4464 v.Op = OpAMD64MOVQloadidx8
4468 v.AuxInt = addOff(off1, off2)
4475 goto endb138bf9b0b33ec824bf0aff619f8bafa
4476 endb138bf9b0b33ec824bf0aff619f8bafa:
4478 case OpAMD64MOVQstore:
4479 // match: (MOVQstore [off1] {sym} (ADDQconst [off2] ptr) val mem)
4481 // result: (MOVQstore [addOff(off1, off2)] {sym} ptr val mem)
4485 if v.Args[0].Op != OpAMD64ADDQconst {
4486 goto end0a110b5e42a4576c32fda50590092848
4488 off2 := v.Args[0].AuxInt
4489 ptr := v.Args[0].Args[0]
4492 v.Op = OpAMD64MOVQstore
4496 v.AuxInt = addOff(off1, off2)
4503 goto end0a110b5e42a4576c32fda50590092848
4504 end0a110b5e42a4576c32fda50590092848:
4506 // match: (MOVQstore [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
4507 // cond: canMergeSym(sym1, sym2)
4508 // result: (MOVQstore [addOff(off1,off2)] {mergeSym(sym1,sym2)} base val mem)
4512 if v.Args[0].Op != OpAMD64LEAQ {
4513 goto end9a0cfe20b3b0f587e252760907c1b5c0
4515 off2 := v.Args[0].AuxInt
4516 sym2 := v.Args[0].Aux
4517 base := v.Args[0].Args[0]
4520 if !(canMergeSym(sym1, sym2)) {
4521 goto end9a0cfe20b3b0f587e252760907c1b5c0
4523 v.Op = OpAMD64MOVQstore
4527 v.AuxInt = addOff(off1, off2)
4528 v.Aux = mergeSym(sym1, sym2)
4534 goto end9a0cfe20b3b0f587e252760907c1b5c0
4535 end9a0cfe20b3b0f587e252760907c1b5c0:
4537 // match: (MOVQstore [off1] {sym1} (LEAQ8 [off2] {sym2} ptr idx) val mem)
4538 // cond: canMergeSym(sym1, sym2)
4539 // result: (MOVQstoreidx8 [addOff(off1, off2)] {mergeSym(sym1,sym2)} ptr idx val mem)
4543 if v.Args[0].Op != OpAMD64LEAQ8 {
4544 goto end442c322e6719e280b6be1c12858e49d7
4546 off2 := v.Args[0].AuxInt
4547 sym2 := v.Args[0].Aux
4548 ptr := v.Args[0].Args[0]
4549 idx := v.Args[0].Args[1]
4552 if !(canMergeSym(sym1, sym2)) {
4553 goto end442c322e6719e280b6be1c12858e49d7
4555 v.Op = OpAMD64MOVQstoreidx8
4559 v.AuxInt = addOff(off1, off2)
4560 v.Aux = mergeSym(sym1, sym2)
4567 goto end442c322e6719e280b6be1c12858e49d7
4568 end442c322e6719e280b6be1c12858e49d7:
4570 case OpAMD64MOVQstoreidx8:
4571 // match: (MOVQstoreidx8 [off1] {sym} (ADDQconst [off2] ptr) idx val mem)
4573 // result: (MOVQstoreidx8 [addOff(off1, off2)] {sym} ptr idx val mem)
4577 if v.Args[0].Op != OpAMD64ADDQconst {
4578 goto end50671766fdab364c1edbd2072fb8e525
4580 off2 := v.Args[0].AuxInt
4581 ptr := v.Args[0].Args[0]
4585 v.Op = OpAMD64MOVQstoreidx8
4589 v.AuxInt = addOff(off1, off2)
4597 goto end50671766fdab364c1edbd2072fb8e525
4598 end50671766fdab364c1edbd2072fb8e525:
4600 case OpAMD64MOVSDload:
4601 // match: (MOVSDload [off1] {sym} (ADDQconst [off2] ptr) mem)
4603 // result: (MOVSDload [addOff(off1, off2)] {sym} ptr mem)
4607 if v.Args[0].Op != OpAMD64ADDQconst {
4608 goto end6dad9bf78e7368bb095eb2dfba7e244a
4610 off2 := v.Args[0].AuxInt
4611 ptr := v.Args[0].Args[0]
4613 v.Op = OpAMD64MOVSDload
4617 v.AuxInt = addOff(off1, off2)
4623 goto end6dad9bf78e7368bb095eb2dfba7e244a
4624 end6dad9bf78e7368bb095eb2dfba7e244a:
4626 // match: (MOVSDload [off1] {sym1} (LEAQ [off2] {sym2} base) mem)
4627 // cond: canMergeSym(sym1, sym2)
4628 // result: (MOVSDload [addOff(off1,off2)] {mergeSym(sym1,sym2)} base mem)
4632 if v.Args[0].Op != OpAMD64LEAQ {
4633 goto end96fa9c439e31050aa91582bc2a9f2c20
4635 off2 := v.Args[0].AuxInt
4636 sym2 := v.Args[0].Aux
4637 base := v.Args[0].Args[0]
4639 if !(canMergeSym(sym1, sym2)) {
4640 goto end96fa9c439e31050aa91582bc2a9f2c20
4642 v.Op = OpAMD64MOVSDload
4646 v.AuxInt = addOff(off1, off2)
4647 v.Aux = mergeSym(sym1, sym2)
4652 goto end96fa9c439e31050aa91582bc2a9f2c20
4653 end96fa9c439e31050aa91582bc2a9f2c20:
4655 // match: (MOVSDload [off1] {sym1} (LEAQ8 [off2] {sym2} ptr idx) mem)
4656 // cond: canMergeSym(sym1, sym2)
4657 // result: (MOVSDloadidx8 [addOff(off1, off2)] {mergeSym(sym1,sym2)} ptr idx mem)
4661 if v.Args[0].Op != OpAMD64LEAQ8 {
4662 goto endbcb2ce441824d0e3a4b501018cfa7f60
4664 off2 := v.Args[0].AuxInt
4665 sym2 := v.Args[0].Aux
4666 ptr := v.Args[0].Args[0]
4667 idx := v.Args[0].Args[1]
4669 if !(canMergeSym(sym1, sym2)) {
4670 goto endbcb2ce441824d0e3a4b501018cfa7f60
4672 v.Op = OpAMD64MOVSDloadidx8
4676 v.AuxInt = addOff(off1, off2)
4677 v.Aux = mergeSym(sym1, sym2)
4683 goto endbcb2ce441824d0e3a4b501018cfa7f60
4684 endbcb2ce441824d0e3a4b501018cfa7f60:
4686 case OpAMD64MOVSDloadidx8:
4687 // match: (MOVSDloadidx8 [off1] {sym} (ADDQconst [off2] {sym} ptr) idx mem)
4689 // result: (MOVSDloadidx8 [addOff(off1, off2)] {sym} ptr idx mem)
4693 if v.Args[0].Op != OpAMD64ADDQconst {
4694 goto end84f0f457e271104a92343e3b1d2804c6
4696 off2 := v.Args[0].AuxInt
4697 if v.Args[0].Aux != v.Aux {
4698 goto end84f0f457e271104a92343e3b1d2804c6
4700 ptr := v.Args[0].Args[0]
4703 v.Op = OpAMD64MOVSDloadidx8
4707 v.AuxInt = addOff(off1, off2)
4714 goto end84f0f457e271104a92343e3b1d2804c6
4715 end84f0f457e271104a92343e3b1d2804c6:
4717 case OpAMD64MOVSDstore:
4718 // match: (MOVSDstore [off1] {sym} (ADDQconst [off2] ptr) val mem)
4720 // result: (MOVSDstore [addOff(off1, off2)] {sym} ptr val mem)
4724 if v.Args[0].Op != OpAMD64ADDQconst {
4725 goto end6c6160664143cc66e63e67b9aa43a7ef
4727 off2 := v.Args[0].AuxInt
4728 ptr := v.Args[0].Args[0]
4731 v.Op = OpAMD64MOVSDstore
4735 v.AuxInt = addOff(off1, off2)
4742 goto end6c6160664143cc66e63e67b9aa43a7ef
4743 end6c6160664143cc66e63e67b9aa43a7ef:
4745 // match: (MOVSDstore [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
4746 // cond: canMergeSym(sym1, sym2)
4747 // result: (MOVSDstore [addOff(off1,off2)] {mergeSym(sym1,sym2)} base val mem)
4751 if v.Args[0].Op != OpAMD64LEAQ {
4752 goto end415dde14f3400bec1b2756174a5d7179
4754 off2 := v.Args[0].AuxInt
4755 sym2 := v.Args[0].Aux
4756 base := v.Args[0].Args[0]
4759 if !(canMergeSym(sym1, sym2)) {
4760 goto end415dde14f3400bec1b2756174a5d7179
4762 v.Op = OpAMD64MOVSDstore
4766 v.AuxInt = addOff(off1, off2)
4767 v.Aux = mergeSym(sym1, sym2)
4773 goto end415dde14f3400bec1b2756174a5d7179
4774 end415dde14f3400bec1b2756174a5d7179:
4776 // match: (MOVSDstore [off1] {sym1} (LEAQ8 [off2] {sym2} ptr idx) val mem)
4777 // cond: canMergeSym(sym1, sym2)
4778 // result: (MOVSDstoreidx8 [addOff(off1, off2)] {mergeSym(sym1,sym2)} ptr idx val mem)
4782 if v.Args[0].Op != OpAMD64LEAQ8 {
4783 goto end1ad6fc0c5b59610dabf7f9595a48a230
4785 off2 := v.Args[0].AuxInt
4786 sym2 := v.Args[0].Aux
4787 ptr := v.Args[0].Args[0]
4788 idx := v.Args[0].Args[1]
4791 if !(canMergeSym(sym1, sym2)) {
4792 goto end1ad6fc0c5b59610dabf7f9595a48a230
4794 v.Op = OpAMD64MOVSDstoreidx8
4798 v.AuxInt = addOff(off1, off2)
4799 v.Aux = mergeSym(sym1, sym2)
4806 goto end1ad6fc0c5b59610dabf7f9595a48a230
4807 end1ad6fc0c5b59610dabf7f9595a48a230:
4809 case OpAMD64MOVSDstoreidx8:
4810 // match: (MOVSDstoreidx8 [off1] {sym} (ADDQconst [off2] {sym} ptr) idx val mem)
4812 // result: (MOVSDstoreidx8 [addOff(off1, off2)] {sym} ptr idx val mem)
4816 if v.Args[0].Op != OpAMD64ADDQconst {
4817 goto endc0e28f57697cb6038d5d09eafe26c947
4819 off2 := v.Args[0].AuxInt
4820 if v.Args[0].Aux != v.Aux {
4821 goto endc0e28f57697cb6038d5d09eafe26c947
4823 ptr := v.Args[0].Args[0]
4827 v.Op = OpAMD64MOVSDstoreidx8
4831 v.AuxInt = addOff(off1, off2)
4839 goto endc0e28f57697cb6038d5d09eafe26c947
4840 endc0e28f57697cb6038d5d09eafe26c947:
4842 case OpAMD64MOVSSload:
4843 // match: (MOVSSload [off1] {sym} (ADDQconst [off2] ptr) mem)
4845 // result: (MOVSSload [addOff(off1, off2)] {sym} ptr mem)
4849 if v.Args[0].Op != OpAMD64ADDQconst {
4850 goto end96d63dbb64b0adfa944684c9e939c972
4852 off2 := v.Args[0].AuxInt
4853 ptr := v.Args[0].Args[0]
4855 v.Op = OpAMD64MOVSSload
4859 v.AuxInt = addOff(off1, off2)
4865 goto end96d63dbb64b0adfa944684c9e939c972
4866 end96d63dbb64b0adfa944684c9e939c972:
4868 // match: (MOVSSload [off1] {sym1} (LEAQ [off2] {sym2} base) mem)
4869 // cond: canMergeSym(sym1, sym2)
4870 // result: (MOVSSload [addOff(off1,off2)] {mergeSym(sym1,sym2)} base mem)
4874 if v.Args[0].Op != OpAMD64LEAQ {
4875 goto end15f2583bd72ad7fc077b3952634a1c85
4877 off2 := v.Args[0].AuxInt
4878 sym2 := v.Args[0].Aux
4879 base := v.Args[0].Args[0]
4881 if !(canMergeSym(sym1, sym2)) {
4882 goto end15f2583bd72ad7fc077b3952634a1c85
4884 v.Op = OpAMD64MOVSSload
4888 v.AuxInt = addOff(off1, off2)
4889 v.Aux = mergeSym(sym1, sym2)
4894 goto end15f2583bd72ad7fc077b3952634a1c85
4895 end15f2583bd72ad7fc077b3952634a1c85:
4897 // match: (MOVSSload [off1] {sym1} (LEAQ4 [off2] {sym2} ptr idx) mem)
4898 // cond: canMergeSym(sym1, sym2)
4899 // result: (MOVSSloadidx4 [addOff(off1, off2)] {mergeSym(sym1,sym2)} ptr idx mem)
4903 if v.Args[0].Op != OpAMD64LEAQ4 {
4904 goto end49722f4a0adba31bb143601ce1d2aae0
4906 off2 := v.Args[0].AuxInt
4907 sym2 := v.Args[0].Aux
4908 ptr := v.Args[0].Args[0]
4909 idx := v.Args[0].Args[1]
4911 if !(canMergeSym(sym1, sym2)) {
4912 goto end49722f4a0adba31bb143601ce1d2aae0
4914 v.Op = OpAMD64MOVSSloadidx4
4918 v.AuxInt = addOff(off1, off2)
4919 v.Aux = mergeSym(sym1, sym2)
4925 goto end49722f4a0adba31bb143601ce1d2aae0
4926 end49722f4a0adba31bb143601ce1d2aae0:
4928 case OpAMD64MOVSSloadidx4:
4929 // match: (MOVSSloadidx4 [off1] {sym} (ADDQconst [off2] {sym} ptr) idx mem)
4931 // result: (MOVSSloadidx4 [addOff(off1, off2)] {sym} ptr idx mem)
4935 if v.Args[0].Op != OpAMD64ADDQconst {
4936 goto end7eb5a1ab1e2508683d879ec25286754b
4938 off2 := v.Args[0].AuxInt
4939 if v.Args[0].Aux != v.Aux {
4940 goto end7eb5a1ab1e2508683d879ec25286754b
4942 ptr := v.Args[0].Args[0]
4945 v.Op = OpAMD64MOVSSloadidx4
4949 v.AuxInt = addOff(off1, off2)
4956 goto end7eb5a1ab1e2508683d879ec25286754b
4957 end7eb5a1ab1e2508683d879ec25286754b:
4959 case OpAMD64MOVSSstore:
4960 // match: (MOVSSstore [off1] {sym} (ADDQconst [off2] ptr) val mem)
4962 // result: (MOVSSstore [addOff(off1, off2)] {sym} ptr val mem)
4966 if v.Args[0].Op != OpAMD64ADDQconst {
4967 goto endf711aa4081a9b2924b55387d4f70cfd6
4969 off2 := v.Args[0].AuxInt
4970 ptr := v.Args[0].Args[0]
4973 v.Op = OpAMD64MOVSSstore
4977 v.AuxInt = addOff(off1, off2)
4984 goto endf711aa4081a9b2924b55387d4f70cfd6
4985 endf711aa4081a9b2924b55387d4f70cfd6:
4987 // match: (MOVSSstore [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
4988 // cond: canMergeSym(sym1, sym2)
4989 // result: (MOVSSstore [addOff(off1,off2)] {mergeSym(sym1,sym2)} base val mem)
4993 if v.Args[0].Op != OpAMD64LEAQ {
4994 goto end70ebc170131920e515e3f416a6b952c5
4996 off2 := v.Args[0].AuxInt
4997 sym2 := v.Args[0].Aux
4998 base := v.Args[0].Args[0]
5001 if !(canMergeSym(sym1, sym2)) {
5002 goto end70ebc170131920e515e3f416a6b952c5
5004 v.Op = OpAMD64MOVSSstore
5008 v.AuxInt = addOff(off1, off2)
5009 v.Aux = mergeSym(sym1, sym2)
5015 goto end70ebc170131920e515e3f416a6b952c5
5016 end70ebc170131920e515e3f416a6b952c5:
5018 // match: (MOVSSstore [off1] {sym1} (LEAQ4 [off2] {sym2} ptr idx) val mem)
5019 // cond: canMergeSym(sym1, sym2)
5020 // result: (MOVSSstoreidx4 [addOff(off1, off2)] {mergeSym(sym1,sym2)} ptr idx val mem)
5024 if v.Args[0].Op != OpAMD64LEAQ4 {
5025 goto end1622dc435e45833eda4d29d44df7cc34
5027 off2 := v.Args[0].AuxInt
5028 sym2 := v.Args[0].Aux
5029 ptr := v.Args[0].Args[0]
5030 idx := v.Args[0].Args[1]
5033 if !(canMergeSym(sym1, sym2)) {
5034 goto end1622dc435e45833eda4d29d44df7cc34
5036 v.Op = OpAMD64MOVSSstoreidx4
5040 v.AuxInt = addOff(off1, off2)
5041 v.Aux = mergeSym(sym1, sym2)
5048 goto end1622dc435e45833eda4d29d44df7cc34
5049 end1622dc435e45833eda4d29d44df7cc34:
5051 case OpAMD64MOVSSstoreidx4:
5052 // match: (MOVSSstoreidx4 [off1] {sym} (ADDQconst [off2] {sym} ptr) idx val mem)
5054 // result: (MOVSSstoreidx4 [addOff(off1, off2)] {sym} ptr idx val mem)
5058 if v.Args[0].Op != OpAMD64ADDQconst {
5059 goto end66e4853026306cd46f414c22d281254f
5061 off2 := v.Args[0].AuxInt
5062 if v.Args[0].Aux != v.Aux {
5063 goto end66e4853026306cd46f414c22d281254f
5065 ptr := v.Args[0].Args[0]
5069 v.Op = OpAMD64MOVSSstoreidx4
5073 v.AuxInt = addOff(off1, off2)
5081 goto end66e4853026306cd46f414c22d281254f
5082 end66e4853026306cd46f414c22d281254f:
5084 case OpAMD64MOVWload:
5085 // match: (MOVWload [off1] {sym} (ADDQconst [off2] ptr) mem)
5087 // result: (MOVWload [addOff(off1, off2)] {sym} ptr mem)
5091 if v.Args[0].Op != OpAMD64ADDQconst {
5092 goto endfcb0ce76f96e8b0c2eb19a9b827c1b73
5094 off2 := v.Args[0].AuxInt
5095 ptr := v.Args[0].Args[0]
5097 v.Op = OpAMD64MOVWload
5101 v.AuxInt = addOff(off1, off2)
5107 goto endfcb0ce76f96e8b0c2eb19a9b827c1b73
5108 endfcb0ce76f96e8b0c2eb19a9b827c1b73:
5110 // match: (MOVWload [off1] {sym1} (LEAQ [off2] {sym2} base) mem)
5111 // cond: canMergeSym(sym1, sym2)
5112 // result: (MOVWload [addOff(off1,off2)] {mergeSym(sym1,sym2)} base mem)
5116 if v.Args[0].Op != OpAMD64LEAQ {
5117 goto end7a79314cb49bf53d79c38c3077d87457
5119 off2 := v.Args[0].AuxInt
5120 sym2 := v.Args[0].Aux
5121 base := v.Args[0].Args[0]
5123 if !(canMergeSym(sym1, sym2)) {
5124 goto end7a79314cb49bf53d79c38c3077d87457
5126 v.Op = OpAMD64MOVWload
5130 v.AuxInt = addOff(off1, off2)
5131 v.Aux = mergeSym(sym1, sym2)
5136 goto end7a79314cb49bf53d79c38c3077d87457
5137 end7a79314cb49bf53d79c38c3077d87457:
5139 case OpAMD64MOVWstore:
5140 // match: (MOVWstore [off] {sym} ptr (MOVWQSX x) mem)
5142 // result: (MOVWstore [off] {sym} ptr x mem)
5147 if v.Args[1].Op != OpAMD64MOVWQSX {
5148 goto endca90c534e75c7f5cb803504d119a853f
5150 x := v.Args[1].Args[0]
5152 v.Op = OpAMD64MOVWstore
5163 goto endca90c534e75c7f5cb803504d119a853f
5164 endca90c534e75c7f5cb803504d119a853f:
5166 // match: (MOVWstore [off] {sym} ptr (MOVWQZX x) mem)
5168 // result: (MOVWstore [off] {sym} ptr x mem)
5173 if v.Args[1].Op != OpAMD64MOVWQZX {
5174 goto end187fe73dfaf9cf5f4c349283b4dfd9d1
5176 x := v.Args[1].Args[0]
5178 v.Op = OpAMD64MOVWstore
5189 goto end187fe73dfaf9cf5f4c349283b4dfd9d1
5190 end187fe73dfaf9cf5f4c349283b4dfd9d1:
5192 // match: (MOVWstore [off1] {sym} (ADDQconst [off2] ptr) val mem)
5194 // result: (MOVWstore [addOff(off1, off2)] {sym} ptr val mem)
5198 if v.Args[0].Op != OpAMD64ADDQconst {
5199 goto endda15fdd59aa956ded0440188f38de1aa
5201 off2 := v.Args[0].AuxInt
5202 ptr := v.Args[0].Args[0]
5205 v.Op = OpAMD64MOVWstore
5209 v.AuxInt = addOff(off1, off2)
5216 goto endda15fdd59aa956ded0440188f38de1aa
5217 endda15fdd59aa956ded0440188f38de1aa:
5219 // match: (MOVWstore [off1] {sym1} (LEAQ [off2] {sym2} base) val mem)
5220 // cond: canMergeSym(sym1, sym2)
5221 // result: (MOVWstore [addOff(off1,off2)] {mergeSym(sym1,sym2)} base val mem)
5225 if v.Args[0].Op != OpAMD64LEAQ {
5226 goto end4cc466ede8e64e415c899ccac81c0f27
5228 off2 := v.Args[0].AuxInt
5229 sym2 := v.Args[0].Aux
5230 base := v.Args[0].Args[0]
5233 if !(canMergeSym(sym1, sym2)) {
5234 goto end4cc466ede8e64e415c899ccac81c0f27
5236 v.Op = OpAMD64MOVWstore
5240 v.AuxInt = addOff(off1, off2)
5241 v.Aux = mergeSym(sym1, sym2)
5247 goto end4cc466ede8e64e415c899ccac81c0f27
5248 end4cc466ede8e64e415c899ccac81c0f27:
5251 // match: (MULB x (MOVBconst [c]))
5253 // result: (MULBconst [c] x)
5256 if v.Args[1].Op != OpAMD64MOVBconst {
5257 goto end66c6419213ddeb52b1c53fb589a70e5f
5259 c := v.Args[1].AuxInt
5260 v.Op = OpAMD64MULBconst
5268 goto end66c6419213ddeb52b1c53fb589a70e5f
5269 end66c6419213ddeb52b1c53fb589a70e5f:
5271 // match: (MULB (MOVBconst [c]) x)
5273 // result: (MULBconst [c] x)
5275 if v.Args[0].Op != OpAMD64MOVBconst {
5276 goto end7e82c8dbbba265b78035ca7df394bb06
5278 c := v.Args[0].AuxInt
5280 v.Op = OpAMD64MULBconst
5288 goto end7e82c8dbbba265b78035ca7df394bb06
5289 end7e82c8dbbba265b78035ca7df394bb06:
5291 case OpAMD64MULBconst:
5292 // match: (MULBconst [c] (MOVBconst [d]))
5294 // result: (MOVBconst [c*d])
5297 if v.Args[0].Op != OpAMD64MOVBconst {
5298 goto endf2db9f96016085f8cb4082b4af01b2aa
5300 d := v.Args[0].AuxInt
5301 v.Op = OpAMD64MOVBconst
5308 goto endf2db9f96016085f8cb4082b4af01b2aa
5309 endf2db9f96016085f8cb4082b4af01b2aa:
5312 // match: (MULL x (MOVLconst [c]))
5314 // result: (MULLconst [c] x)
5317 if v.Args[1].Op != OpAMD64MOVLconst {
5318 goto end893477a261bcad6c2821b77c83075c6c
5320 c := v.Args[1].AuxInt
5321 v.Op = OpAMD64MULLconst
5329 goto end893477a261bcad6c2821b77c83075c6c
5330 end893477a261bcad6c2821b77c83075c6c:
5332 // match: (MULL (MOVLconst [c]) x)
5334 // result: (MULLconst [c] x)
5336 if v.Args[0].Op != OpAMD64MOVLconst {
5337 goto end8a0f957c528a54eecb0dbfc5d96e017a
5339 c := v.Args[0].AuxInt
5341 v.Op = OpAMD64MULLconst
5349 goto end8a0f957c528a54eecb0dbfc5d96e017a
5350 end8a0f957c528a54eecb0dbfc5d96e017a:
5352 case OpAMD64MULLconst:
5353 // match: (MULLconst [c] (MOVLconst [d]))
5355 // result: (MOVLconst [c*d])
5358 if v.Args[0].Op != OpAMD64MOVLconst {
5359 goto endd5732835ed1276ef8b728bcfc1289f73
5361 d := v.Args[0].AuxInt
5362 v.Op = OpAMD64MOVLconst
5369 goto endd5732835ed1276ef8b728bcfc1289f73
5370 endd5732835ed1276ef8b728bcfc1289f73:
5373 // match: (MULQ x (MOVQconst [c]))
5375 // result: (MULQconst [c] x)
5378 if v.Args[1].Op != OpAMD64MOVQconst {
5379 goto endb38c6e3e0ddfa25ba0ef9684ac1528c0
5381 c := v.Args[1].AuxInt
5383 goto endb38c6e3e0ddfa25ba0ef9684ac1528c0
5385 v.Op = OpAMD64MULQconst
5393 goto endb38c6e3e0ddfa25ba0ef9684ac1528c0
5394 endb38c6e3e0ddfa25ba0ef9684ac1528c0:
5396 // match: (MULQ (MOVQconst [c]) x)
5398 // result: (MULQconst [c] x)
5400 if v.Args[0].Op != OpAMD64MOVQconst {
5401 goto end9cb4f29b0bd7141639416735dcbb3b87
5403 c := v.Args[0].AuxInt
5406 goto end9cb4f29b0bd7141639416735dcbb3b87
5408 v.Op = OpAMD64MULQconst
5416 goto end9cb4f29b0bd7141639416735dcbb3b87
5417 end9cb4f29b0bd7141639416735dcbb3b87:
5419 case OpAMD64MULQconst:
5420 // match: (MULQconst [-1] x)
5425 goto end82501cca6b5fb121a7f8b197e55f2fec
5435 goto end82501cca6b5fb121a7f8b197e55f2fec
5436 end82501cca6b5fb121a7f8b197e55f2fec:
5438 // match: (MULQconst [0] _)
5440 // result: (MOVQconst [0])
5443 goto endcb9faa068e3558ff44daaf1d47d091b5
5445 v.Op = OpAMD64MOVQconst
5452 goto endcb9faa068e3558ff44daaf1d47d091b5
5453 endcb9faa068e3558ff44daaf1d47d091b5:
5455 // match: (MULQconst [1] x)
5460 goto end0b527e71db2b288b2841a1f757aa580d
5471 goto end0b527e71db2b288b2841a1f757aa580d
5472 end0b527e71db2b288b2841a1f757aa580d:
5474 // match: (MULQconst [3] x)
5476 // result: (LEAQ2 x x)
5479 goto end34a86f261671b5852bec6c57155fe0da
5490 goto end34a86f261671b5852bec6c57155fe0da
5491 end34a86f261671b5852bec6c57155fe0da:
5493 // match: (MULQconst [5] x)
5495 // result: (LEAQ4 x x)
5498 goto end534601906c45a9171a9fec3e4b82b189
5509 goto end534601906c45a9171a9fec3e4b82b189
5510 end534601906c45a9171a9fec3e4b82b189:
5512 // match: (MULQconst [9] x)
5514 // result: (LEAQ8 x x)
5517 goto end48a2280b6459821289c56073b8354997
5528 goto end48a2280b6459821289c56073b8354997
5529 end48a2280b6459821289c56073b8354997:
5531 // match: (MULQconst [c] x)
5532 // cond: isPowerOfTwo(c)
5533 // result: (SHLQconst [log2(c)] x)
5537 if !(isPowerOfTwo(c)) {
5538 goto end75076953dbfe022526a153eda99b39b2
5540 v.Op = OpAMD64SHLQconst
5548 goto end75076953dbfe022526a153eda99b39b2
5549 end75076953dbfe022526a153eda99b39b2:
5551 // match: (MULQconst [c] (MOVQconst [d]))
5553 // result: (MOVQconst [c*d])
5556 if v.Args[0].Op != OpAMD64MOVQconst {
5557 goto end55c38c5c405101e610d7ba7fc702ddc0
5559 d := v.Args[0].AuxInt
5560 v.Op = OpAMD64MOVQconst
5567 goto end55c38c5c405101e610d7ba7fc702ddc0
5568 end55c38c5c405101e610d7ba7fc702ddc0:
5571 // match: (MULW x (MOVWconst [c]))
5573 // result: (MULWconst [c] x)
5576 if v.Args[1].Op != OpAMD64MOVWconst {
5577 goto end542112cc08217d4bdffc1a645d290ffb
5579 c := v.Args[1].AuxInt
5580 v.Op = OpAMD64MULWconst
5588 goto end542112cc08217d4bdffc1a645d290ffb
5589 end542112cc08217d4bdffc1a645d290ffb:
5591 // match: (MULW (MOVWconst [c]) x)
5593 // result: (MULWconst [c] x)
5595 if v.Args[0].Op != OpAMD64MOVWconst {
5596 goto endd97b4245ced2b3d27d8c555b06281de4
5598 c := v.Args[0].AuxInt
5600 v.Op = OpAMD64MULWconst
5608 goto endd97b4245ced2b3d27d8c555b06281de4
5609 endd97b4245ced2b3d27d8c555b06281de4:
5611 case OpAMD64MULWconst:
5612 // match: (MULWconst [c] (MOVWconst [d]))
5614 // result: (MOVWconst [c*d])
5617 if v.Args[0].Op != OpAMD64MOVWconst {
5618 goto end61dbc9d9e93dd6946a20a1f475b3f74b
5620 d := v.Args[0].AuxInt
5621 v.Op = OpAMD64MOVWconst
5628 goto end61dbc9d9e93dd6946a20a1f475b3f74b
5629 end61dbc9d9e93dd6946a20a1f475b3f74b:
5632 // match: (Mod16 x y)
5634 // result: (MODW x y)
5646 goto end036bac694be9fe0d6b00b86c2e625990
5647 end036bac694be9fe0d6b00b86c2e625990:
5650 // match: (Mod16u x y)
5652 // result: (MODWU x y)
5664 goto enda75d900097f1510ca1c6df786bef0c24
5665 enda75d900097f1510ca1c6df786bef0c24:
5668 // match: (Mod32 x y)
5670 // result: (MODL x y)
5682 goto end12c8c0ecf3296810b8217cd4e40f7707
5683 end12c8c0ecf3296810b8217cd4e40f7707:
5686 // match: (Mod32u x y)
5688 // result: (MODLU x y)
5700 goto end1f0892076cfd58733a08d3ab175a3c1c
5701 end1f0892076cfd58733a08d3ab175a3c1c:
5704 // match: (Mod64 x y)
5706 // result: (MODQ x y)
5718 goto endaae75f449baf5dc108be4e0439af97f2
5719 endaae75f449baf5dc108be4e0439af97f2:
5722 // match: (Mod64u x y)
5724 // result: (MODQU x y)
5736 goto end0d4c8b9df77e59289fb14e2496559d1d
5737 end0d4c8b9df77e59289fb14e2496559d1d:
5740 // match: (Mod8 x y)
5742 // result: (MODW (SignExt8to16 x) (SignExt8to16 y))
5750 v0 := b.NewValue0(v.Line, OpSignExt8to16, TypeInvalid)
5752 v0.Type = config.fe.TypeInt16()
5754 v1 := b.NewValue0(v.Line, OpSignExt8to16, TypeInvalid)
5756 v1.Type = config.fe.TypeInt16()
5760 goto endf959fc16e72bc6dc47ab7c9ee3778901
5761 endf959fc16e72bc6dc47ab7c9ee3778901:
5764 // match: (Mod8u x y)
5766 // result: (MODWU (ZeroExt8to16 x) (ZeroExt8to16 y))
5774 v0 := b.NewValue0(v.Line, OpZeroExt8to16, TypeInvalid)
5776 v0.Type = config.fe.TypeUInt16()
5778 v1 := b.NewValue0(v.Line, OpZeroExt8to16, TypeInvalid)
5780 v1.Type = config.fe.TypeUInt16()
5784 goto end9b3274d9dd7f1e91c75ce5e7b548fe97
5785 end9b3274d9dd7f1e91c75ce5e7b548fe97:
5788 // match: (Move [size] dst src mem)
5790 // result: (REPMOVSB dst src (MOVQconst <config.Frontend().TypeUInt64()> [size]) mem)
5796 v.Op = OpAMD64REPMOVSB
5802 v0 := b.NewValue0(v.Line, OpAMD64MOVQconst, TypeInvalid)
5803 v0.Type = config.Frontend().TypeUInt64()
5809 goto end4dd156b33beb9981378c91e46f055a56
5810 end4dd156b33beb9981378c91e46f055a56:
5813 // match: (Mul16 x y)
5815 // result: (MULW x y)
5827 goto end1addf5ea2c885aa1729b8f944859d00c
5828 end1addf5ea2c885aa1729b8f944859d00c:
5831 // match: (Mul32 x y)
5833 // result: (MULL x y)
5845 goto ende144381f85808e5144782804768e2859
5846 ende144381f85808e5144782804768e2859:
5849 // match: (Mul32F x y)
5851 // result: (MULSS x y)
5863 goto end32105a3bfe0237b799b69d83b3f171ca
5864 end32105a3bfe0237b799b69d83b3f171ca:
5867 // match: (Mul64 x y)
5869 // result: (MULQ x y)
5881 goto end38da21e77ac329eb643b20e7d97d5853
5882 end38da21e77ac329eb643b20e7d97d5853:
5885 // match: (Mul64F x y)
5887 // result: (MULSD x y)
5899 goto end0ff6e1919fb0a3e549eb82b43edf1f52
5900 end0ff6e1919fb0a3e549eb82b43edf1f52:
5903 // match: (Mul8 x y)
5905 // result: (MULB x y)
5917 goto endd876d6bc42a2285b801f42dadbd8757c
5918 endd876d6bc42a2285b801f42dadbd8757c:
5921 // match: (MulPtr x y)
5923 // result: (MULQ x y)
5935 goto endbbedad106c011a93243e2062afdcc75f
5936 endbbedad106c011a93243e2062afdcc75f:
5939 // match: (NEGB (MOVBconst [c]))
5941 // result: (MOVBconst [-c])
5943 if v.Args[0].Op != OpAMD64MOVBconst {
5944 goto end36d0300ba9eab8c9da86246ff653ca96
5946 c := v.Args[0].AuxInt
5947 v.Op = OpAMD64MOVBconst
5954 goto end36d0300ba9eab8c9da86246ff653ca96
5955 end36d0300ba9eab8c9da86246ff653ca96:
5958 // match: (NEGL (MOVLconst [c]))
5960 // result: (MOVLconst [-c])
5962 if v.Args[0].Op != OpAMD64MOVLconst {
5963 goto end7a245ec67e56bd51911e5ba2d0aa0a16
5965 c := v.Args[0].AuxInt
5966 v.Op = OpAMD64MOVLconst
5973 goto end7a245ec67e56bd51911e5ba2d0aa0a16
5974 end7a245ec67e56bd51911e5ba2d0aa0a16:
5977 // match: (NEGQ (MOVQconst [c]))
5979 // result: (MOVQconst [-c])
5981 if v.Args[0].Op != OpAMD64MOVQconst {
5982 goto end04ddd98bc6724ecb85c80c2a4e2bca5a
5984 c := v.Args[0].AuxInt
5985 v.Op = OpAMD64MOVQconst
5992 goto end04ddd98bc6724ecb85c80c2a4e2bca5a
5993 end04ddd98bc6724ecb85c80c2a4e2bca5a:
5996 // match: (NEGW (MOVWconst [c]))
5998 // result: (MOVWconst [-c])
6000 if v.Args[0].Op != OpAMD64MOVWconst {
6001 goto end1db6636f0a51848d8a34f6561ecfe7ae
6003 c := v.Args[0].AuxInt
6004 v.Op = OpAMD64MOVWconst
6011 goto end1db6636f0a51848d8a34f6561ecfe7ae
6012 end1db6636f0a51848d8a34f6561ecfe7ae:
6015 // match: (NOTB (MOVBconst [c]))
6017 // result: (MOVBconst [^c])
6019 if v.Args[0].Op != OpAMD64MOVBconst {
6020 goto end9e383a9ceb29a9e2bf890ec6a67212a8
6022 c := v.Args[0].AuxInt
6023 v.Op = OpAMD64MOVBconst
6030 goto end9e383a9ceb29a9e2bf890ec6a67212a8
6031 end9e383a9ceb29a9e2bf890ec6a67212a8:
6034 // match: (NOTL (MOVLconst [c]))
6036 // result: (MOVLconst [^c])
6038 if v.Args[0].Op != OpAMD64MOVLconst {
6039 goto endcc73972c088d5e652a1370a96e56502d
6041 c := v.Args[0].AuxInt
6042 v.Op = OpAMD64MOVLconst
6049 goto endcc73972c088d5e652a1370a96e56502d
6050 endcc73972c088d5e652a1370a96e56502d:
6053 // match: (NOTQ (MOVQconst [c]))
6055 // result: (MOVQconst [^c])
6057 if v.Args[0].Op != OpAMD64MOVQconst {
6058 goto endb39ddb6bf7339d46f74114baad4333b6
6060 c := v.Args[0].AuxInt
6061 v.Op = OpAMD64MOVQconst
6068 goto endb39ddb6bf7339d46f74114baad4333b6
6069 endb39ddb6bf7339d46f74114baad4333b6:
6072 // match: (NOTW (MOVWconst [c]))
6074 // result: (MOVWconst [^c])
6076 if v.Args[0].Op != OpAMD64MOVWconst {
6077 goto end35848095ebcf894c6957ad3be5f82c43
6079 c := v.Args[0].AuxInt
6080 v.Op = OpAMD64MOVWconst
6087 goto end35848095ebcf894c6957ad3be5f82c43
6088 end35848095ebcf894c6957ad3be5f82c43:
6103 goto end7a8c652f4ffeb49656119af69512edb2
6104 end7a8c652f4ffeb49656119af69512edb2:
6119 goto endce1f7e17fc193f6c076e47d5e401e126
6120 endce1f7e17fc193f6c076e47d5e401e126:
6123 // match: (Neg32F x)
6125 // result: (PXOR x (MOVSSconst <config.Frontend().TypeFloat32()> [f2i(math.Copysign(0, -1))]))
6133 v0 := b.NewValue0(v.Line, OpAMD64MOVSSconst, TypeInvalid)
6134 v0.Type = config.Frontend().TypeFloat32()
6135 v0.AuxInt = f2i(math.Copysign(0, -1))
6139 goto end685a5fc899e195b9091afbe2a7146051
6140 end685a5fc899e195b9091afbe2a7146051:
6155 goto enda06c5b1718f2b96aba10bf5a5c437c6c
6156 enda06c5b1718f2b96aba10bf5a5c437c6c:
6159 // match: (Neg64F x)
6161 // result: (PXOR x (MOVSDconst <config.Frontend().TypeFloat64()> [f2i(math.Copysign(0, -1))]))
6169 v0 := b.NewValue0(v.Line, OpAMD64MOVSDconst, TypeInvalid)
6170 v0.Type = config.Frontend().TypeFloat64()
6171 v0.AuxInt = f2i(math.Copysign(0, -1))
6175 goto ende85ae82b7a51e75000eb9158d584acb2
6176 ende85ae82b7a51e75000eb9158d584acb2:
6191 goto end1e5f495a2ac6cdea47b1ae5ba62aa95d
6192 end1e5f495a2ac6cdea47b1ae5ba62aa95d:
6195 // match: (Neq16 x y)
6197 // result: (SETNE (CMPW x y))
6205 v0 := b.NewValue0(v.Line, OpAMD64CMPW, TypeInvalid)
6212 goto end6413ee42d523a005cce9e3372ff2c8e9
6213 end6413ee42d523a005cce9e3372ff2c8e9:
6216 // match: (Neq32 x y)
6218 // result: (SETNE (CMPL x y))
6226 v0 := b.NewValue0(v.Line, OpAMD64CMPL, TypeInvalid)
6233 goto endb1a3ad499a09d8262952e6cbc47a23a8
6234 endb1a3ad499a09d8262952e6cbc47a23a8:
6237 // match: (Neq32F x y)
6239 // result: (SETNEF (UCOMISS x y))
6243 v.Op = OpAMD64SETNEF
6247 v0 := b.NewValue0(v.Line, OpAMD64UCOMISS, TypeInvalid)
6254 goto end2a001b2774f58aaf8c1e9efce6ae59e7
6255 end2a001b2774f58aaf8c1e9efce6ae59e7:
6258 // match: (Neq64 x y)
6260 // result: (SETNE (CMPQ x y))
6268 v0 := b.NewValue0(v.Line, OpAMD64CMPQ, TypeInvalid)
6275 goto end092b9159bce08d2ef7896f7d3da5a595
6276 end092b9159bce08d2ef7896f7d3da5a595:
6279 // match: (Neq64F x y)
6281 // result: (SETNEF (UCOMISD x y))
6285 v.Op = OpAMD64SETNEF
6289 v0 := b.NewValue0(v.Line, OpAMD64UCOMISD, TypeInvalid)
6296 goto endb9c010023c38bd2fee7800fbefc85d98
6297 endb9c010023c38bd2fee7800fbefc85d98:
6300 // match: (Neq8 x y)
6302 // result: (SETNE (CMPB x y))
6310 v0 := b.NewValue0(v.Line, OpAMD64CMPB, TypeInvalid)
6317 goto end89e59f45e068c89458cc4db1692bf3bb
6318 end89e59f45e068c89458cc4db1692bf3bb:
6321 // match: (NeqPtr x y)
6323 // result: (SETNE (CMPQ x y))
6331 v0 := b.NewValue0(v.Line, OpAMD64CMPQ, TypeInvalid)
6338 goto end3b8bb3b4952011d1d40f993d8717cf16
6339 end3b8bb3b4952011d1d40f993d8717cf16:
6344 // result: (XORBconst [1] x)
6347 v.Op = OpAMD64XORBconst
6355 goto end73973101aad60079c62fa64624e21db1
6356 end73973101aad60079c62fa64624e21db1:
6359 // match: (ORB x (MOVBconst [c]))
6361 // result: (ORBconst [c] x)
6364 if v.Args[1].Op != OpAMD64MOVBconst {
6365 goto end7b63870decde2515cb77ec4f8f76817c
6367 c := v.Args[1].AuxInt
6368 v.Op = OpAMD64ORBconst
6376 goto end7b63870decde2515cb77ec4f8f76817c
6377 end7b63870decde2515cb77ec4f8f76817c:
6379 // match: (ORB (MOVBconst [c]) x)
6381 // result: (ORBconst [c] x)
6383 if v.Args[0].Op != OpAMD64MOVBconst {
6384 goto end70b43d531e2097a4f6293f66256a642e
6386 c := v.Args[0].AuxInt
6388 v.Op = OpAMD64ORBconst
6396 goto end70b43d531e2097a4f6293f66256a642e
6397 end70b43d531e2097a4f6293f66256a642e:
6405 goto enddca5ce800a9eca157f243cb2fdb1408a
6415 goto enddca5ce800a9eca157f243cb2fdb1408a
6416 enddca5ce800a9eca157f243cb2fdb1408a:
6418 case OpAMD64ORBconst:
6419 // match: (ORBconst [c] x)
6425 if !(int8(c) == 0) {
6426 goto end565f78e3a843dc73943b59227b39a1b3
6436 goto end565f78e3a843dc73943b59227b39a1b3
6437 end565f78e3a843dc73943b59227b39a1b3:
6439 // match: (ORBconst [c] _)
6440 // cond: int8(c)==-1
6441 // result: (MOVBconst [-1])
6444 if !(int8(c) == -1) {
6445 goto end6033c7910d8cd536b31446e179e4610d
6447 v.Op = OpAMD64MOVBconst
6454 goto end6033c7910d8cd536b31446e179e4610d
6455 end6033c7910d8cd536b31446e179e4610d:
6457 // match: (ORBconst [c] (MOVBconst [d]))
6459 // result: (MOVBconst [c|d])
6462 if v.Args[0].Op != OpAMD64MOVBconst {
6463 goto endbe5263f022dc10a5cf53c118937d79dd
6465 d := v.Args[0].AuxInt
6466 v.Op = OpAMD64MOVBconst
6473 goto endbe5263f022dc10a5cf53c118937d79dd
6474 endbe5263f022dc10a5cf53c118937d79dd:
6477 // match: (ORL x (MOVLconst [c]))
6479 // result: (ORLconst [c] x)
6482 if v.Args[1].Op != OpAMD64MOVLconst {
6483 goto end1b883e30d860b6fac14ae98462c4f61a
6485 c := v.Args[1].AuxInt
6486 v.Op = OpAMD64ORLconst
6494 goto end1b883e30d860b6fac14ae98462c4f61a
6495 end1b883e30d860b6fac14ae98462c4f61a:
6497 // match: (ORL (MOVLconst [c]) x)
6499 // result: (ORLconst [c] x)
6501 if v.Args[0].Op != OpAMD64MOVLconst {
6502 goto enda5bc49524a0cbd2241f792837d0a48a8
6504 c := v.Args[0].AuxInt
6506 v.Op = OpAMD64ORLconst
6514 goto enda5bc49524a0cbd2241f792837d0a48a8
6515 enda5bc49524a0cbd2241f792837d0a48a8:
6523 goto end2dd719b68f4938777ef0d820aab93659
6533 goto end2dd719b68f4938777ef0d820aab93659
6534 end2dd719b68f4938777ef0d820aab93659:
6536 case OpAMD64ORLconst:
6537 // match: (ORLconst [c] x)
6538 // cond: int32(c)==0
6543 if !(int32(c) == 0) {
6544 goto end5b52623a724e8a7167c71289fb7192f1
6554 goto end5b52623a724e8a7167c71289fb7192f1
6555 end5b52623a724e8a7167c71289fb7192f1:
6557 // match: (ORLconst [c] _)
6558 // cond: int32(c)==-1
6559 // result: (MOVLconst [-1])
6562 if !(int32(c) == -1) {
6563 goto end345a8ea439ef2ef54bd84fc8a0f73e97
6565 v.Op = OpAMD64MOVLconst
6572 goto end345a8ea439ef2ef54bd84fc8a0f73e97
6573 end345a8ea439ef2ef54bd84fc8a0f73e97:
6575 // match: (ORLconst [c] (MOVLconst [d]))
6577 // result: (MOVLconst [c|d])
6580 if v.Args[0].Op != OpAMD64MOVLconst {
6581 goto ende9ca05024248f782c88084715f81d727
6583 d := v.Args[0].AuxInt
6584 v.Op = OpAMD64MOVLconst
6591 goto ende9ca05024248f782c88084715f81d727
6592 ende9ca05024248f782c88084715f81d727:
6595 // match: (ORQ x (MOVQconst [c]))
6597 // result: (ORQconst [c] x)
6600 if v.Args[1].Op != OpAMD64MOVQconst {
6601 goto end601f2bb3ccda102e484ff60adeaf6d26
6603 c := v.Args[1].AuxInt
6605 goto end601f2bb3ccda102e484ff60adeaf6d26
6607 v.Op = OpAMD64ORQconst
6615 goto end601f2bb3ccda102e484ff60adeaf6d26
6616 end601f2bb3ccda102e484ff60adeaf6d26:
6618 // match: (ORQ (MOVQconst [c]) x)
6620 // result: (ORQconst [c] x)
6622 if v.Args[0].Op != OpAMD64MOVQconst {
6623 goto end010afbebcd314e288509d79a16a6d5cc
6625 c := v.Args[0].AuxInt
6628 goto end010afbebcd314e288509d79a16a6d5cc
6630 v.Op = OpAMD64ORQconst
6638 goto end010afbebcd314e288509d79a16a6d5cc
6639 end010afbebcd314e288509d79a16a6d5cc:
6647 goto end47a27d30b82db576978c5a3a57b520fb
6657 goto end47a27d30b82db576978c5a3a57b520fb
6658 end47a27d30b82db576978c5a3a57b520fb:
6660 case OpAMD64ORQconst:
6661 // match: (ORQconst [0] x)
6666 goto end44534da6b9ce98d33fad7e20f0be1fbd
6677 goto end44534da6b9ce98d33fad7e20f0be1fbd
6678 end44534da6b9ce98d33fad7e20f0be1fbd:
6680 // match: (ORQconst [-1] _)
6682 // result: (MOVQconst [-1])
6685 goto endcde9b9d7c4527eaa5d50b252f50b43c1
6687 v.Op = OpAMD64MOVQconst
6694 goto endcde9b9d7c4527eaa5d50b252f50b43c1
6695 endcde9b9d7c4527eaa5d50b252f50b43c1:
6697 // match: (ORQconst [c] (MOVQconst [d]))
6699 // result: (MOVQconst [c|d])
6702 if v.Args[0].Op != OpAMD64MOVQconst {
6703 goto enda2488509b71db9abcb06a5115c4ddc2c
6705 d := v.Args[0].AuxInt
6706 v.Op = OpAMD64MOVQconst
6713 goto enda2488509b71db9abcb06a5115c4ddc2c
6714 enda2488509b71db9abcb06a5115c4ddc2c:
6717 // match: (ORW x (MOVWconst [c]))
6719 // result: (ORWconst [c] x)
6722 if v.Args[1].Op != OpAMD64MOVWconst {
6723 goto end9f98df10892dbf170b49aace86ee0d7f
6725 c := v.Args[1].AuxInt
6726 v.Op = OpAMD64ORWconst
6734 goto end9f98df10892dbf170b49aace86ee0d7f
6735 end9f98df10892dbf170b49aace86ee0d7f:
6737 // match: (ORW (MOVWconst [c]) x)
6739 // result: (ORWconst [c] x)
6741 if v.Args[0].Op != OpAMD64MOVWconst {
6742 goto end96405942c9ceb5fcb0ddb85a8709d015
6744 c := v.Args[0].AuxInt
6746 v.Op = OpAMD64ORWconst
6754 goto end96405942c9ceb5fcb0ddb85a8709d015
6755 end96405942c9ceb5fcb0ddb85a8709d015:
6763 goto endc6a23b64e541dc9cfc6a90fd7028e8c1
6773 goto endc6a23b64e541dc9cfc6a90fd7028e8c1
6774 endc6a23b64e541dc9cfc6a90fd7028e8c1:
6776 case OpAMD64ORWconst:
6777 // match: (ORWconst [c] x)
6778 // cond: int16(c)==0
6783 if !(int16(c) == 0) {
6784 goto endbbbdec9091c8b4c58e587eac8a43402d
6794 goto endbbbdec9091c8b4c58e587eac8a43402d
6795 endbbbdec9091c8b4c58e587eac8a43402d:
6797 // match: (ORWconst [c] _)
6798 // cond: int16(c)==-1
6799 // result: (MOVWconst [-1])
6802 if !(int16(c) == -1) {
6803 goto ended87a5775f5e04b2d2a117a63d82dd9b
6805 v.Op = OpAMD64MOVWconst
6812 goto ended87a5775f5e04b2d2a117a63d82dd9b
6813 ended87a5775f5e04b2d2a117a63d82dd9b:
6815 // match: (ORWconst [c] (MOVWconst [d]))
6817 // result: (MOVWconst [c|d])
6820 if v.Args[0].Op != OpAMD64MOVWconst {
6821 goto endba9221a8462b5c62e8d7c686f64c2778
6823 d := v.Args[0].AuxInt
6824 v.Op = OpAMD64MOVWconst
6831 goto endba9221a8462b5c62e8d7c686f64c2778
6832 endba9221a8462b5c62e8d7c686f64c2778:
6835 // match: (OffPtr [off] ptr)
6837 // result: (ADDQconst [off] ptr)
6841 v.Op = OpAMD64ADDQconst
6849 goto end0429f947ee7ac49ff45a243e461a5290
6850 end0429f947ee7ac49ff45a243e461a5290:
6853 // match: (Or16 x y)
6855 // result: (ORW x y)
6867 goto end8fedf2c79d5607b7056b0ff015199cbd
6868 end8fedf2c79d5607b7056b0ff015199cbd:
6871 // match: (Or32 x y)
6873 // result: (ORL x y)
6885 goto endea45bed9ca97d2995b68b53e6012d384
6886 endea45bed9ca97d2995b68b53e6012d384:
6889 // match: (Or64 x y)
6891 // result: (ORQ x y)
6903 goto end3a446becaf2461f4f1a41faeef313f41
6904 end3a446becaf2461f4f1a41faeef313f41:
6909 // result: (ORB x y)
6921 goto end6f8a8c559a167d1f0a5901d09a1fb248
6922 end6f8a8c559a167d1f0a5901d09a1fb248:
6924 case OpPanicNilCheck:
6925 // match: (PanicNilCheck ptr mem)
6927 // result: (LoweredPanicNilCheck ptr mem)
6931 v.Op = OpAMD64LoweredPanicNilCheck
6939 goto enda02b1ad5a6f929b782190145f2c8628b
6940 enda02b1ad5a6f929b782190145f2c8628b:
6943 // match: (Rsh16Ux16 <t> x y)
6945 // result: (ANDW (SHRW <t> x y) (SBBLcarrymask <t> (CMPWconst [16] y)))
6954 v0 := b.NewValue0(v.Line, OpAMD64SHRW, TypeInvalid)
6959 v1 := b.NewValue0(v.Line, OpAMD64SBBLcarrymask, TypeInvalid)
6961 v2 := b.NewValue0(v.Line, OpAMD64CMPWconst, TypeInvalid)
6969 goto end4d5e000764dcea396f2d86472c2af6eb
6970 end4d5e000764dcea396f2d86472c2af6eb:
6973 // match: (Rsh16Ux32 <t> x y)
6975 // result: (ANDW (SHRW <t> x y) (SBBLcarrymask <t> (CMPLconst [16] y)))
6984 v0 := b.NewValue0(v.Line, OpAMD64SHRW, TypeInvalid)
6989 v1 := b.NewValue0(v.Line, OpAMD64SBBLcarrymask, TypeInvalid)
6991 v2 := b.NewValue0(v.Line, OpAMD64CMPLconst, TypeInvalid)
6999 goto end9ef4fe2ea4565865cd4b3aa9c7596c00
7000 end9ef4fe2ea4565865cd4b3aa9c7596c00:
7003 // match: (Rsh16Ux64 <t> x y)
7005 // result: (ANDW (SHRW <t> x y) (SBBLcarrymask <t> (CMPQconst [16] y)))
7014 v0 := b.NewValue0(v.Line, OpAMD64SHRW, TypeInvalid)
7019 v1 := b.NewValue0(v.Line, OpAMD64SBBLcarrymask, TypeInvalid)
7021 v2 := b.NewValue0(v.Line, OpAMD64CMPQconst, TypeInvalid)
7029 goto end48bc94b9a68aad454eaabc42b2e1d646
7030 end48bc94b9a68aad454eaabc42b2e1d646:
7033 // match: (Rsh16Ux8 <t> x y)
7035 // result: (ANDW (SHRW <t> x y) (SBBLcarrymask <t> (CMPBconst [16] y)))
7044 v0 := b.NewValue0(v.Line, OpAMD64SHRW, TypeInvalid)
7049 v1 := b.NewValue0(v.Line, OpAMD64SBBLcarrymask, TypeInvalid)
7051 v2 := b.NewValue0(v.Line, OpAMD64CMPBconst, TypeInvalid)
7059 goto ende98f618fa53b1f1d5d3f79781d5cb2cc
7060 ende98f618fa53b1f1d5d3f79781d5cb2cc:
7063 // match: (Rsh16x16 <t> x y)
7065 // result: (SARW <t> x (ORW <y.Type> y (NOTL <y.Type> (SBBLcarrymask <y.Type> (CMPWconst [16] y)))))
7076 v0 := b.NewValue0(v.Line, OpAMD64ORW, TypeInvalid)
7079 v1 := b.NewValue0(v.Line, OpAMD64NOTL, TypeInvalid)
7081 v2 := b.NewValue0(v.Line, OpAMD64SBBLcarrymask, TypeInvalid)
7083 v3 := b.NewValue0(v.Line, OpAMD64CMPWconst, TypeInvalid)
7093 goto end1de548dcf8d7c7222c7a739809597526
7094 end1de548dcf8d7c7222c7a739809597526:
7097 // match: (Rsh16x32 <t> x y)
7099 // result: (SARW <t> x (ORL <y.Type> y (NOTL <y.Type> (SBBLcarrymask <y.Type> (CMPLconst [16] y)))))
7110 v0 := b.NewValue0(v.Line, OpAMD64ORL, TypeInvalid)
7113 v1 := b.NewValue0(v.Line, OpAMD64NOTL, TypeInvalid)
7115 v2 := b.NewValue0(v.Line, OpAMD64SBBLcarrymask, TypeInvalid)
7117 v3 := b.NewValue0(v.Line, OpAMD64CMPLconst, TypeInvalid)
7127 goto end74419e1036ea7e0c3a09d05b1eabad22
7128 end74419e1036ea7e0c3a09d05b1eabad22:
7131 // match: (Rsh16x64 <t> x y)
7133 // result: (SARW <t> x (ORQ <y.Type> y (NOTQ <y.Type> (SBBQcarrymask <y.Type> (CMPQconst [16] y)))))
7144 v0 := b.NewValue0(v.Line, OpAMD64ORQ, TypeInvalid)
7147 v1 := b.NewValue0(v.Line, OpAMD64NOTQ, TypeInvalid)
7149 v2 := b.NewValue0(v.Line, OpAMD64SBBQcarrymask, TypeInvalid)
7151 v3 := b.NewValue0(v.Line, OpAMD64CMPQconst, TypeInvalid)
7161 goto ende35d1c2918196fae04fca22e80936bab
7162 ende35d1c2918196fae04fca22e80936bab:
7165 // match: (Rsh16x8 <t> x y)
7167 // result: (SARW <t> x (ORB <y.Type> y (NOTL <y.Type> (SBBLcarrymask <y.Type> (CMPBconst [16] y)))))
7178 v0 := b.NewValue0(v.Line, OpAMD64ORB, TypeInvalid)
7181 v1 := b.NewValue0(v.Line, OpAMD64NOTL, TypeInvalid)
7183 v2 := b.NewValue0(v.Line, OpAMD64SBBLcarrymask, TypeInvalid)
7185 v3 := b.NewValue0(v.Line, OpAMD64CMPBconst, TypeInvalid)
7195 goto endaa6a45afc4c6552c1a90a13160578fba
7196 endaa6a45afc4c6552c1a90a13160578fba:
7199 // match: (Rsh32Ux16 <t> x y)
7201 // result: (ANDL (SHRL <t> x y) (SBBLcarrymask <t> (CMPWconst [32] y)))
7210 v0 := b.NewValue0(v.Line, OpAMD64SHRL, TypeInvalid)
7215 v1 := b.NewValue0(v.Line, OpAMD64SBBLcarrymask, TypeInvalid)
7217 v2 := b.NewValue0(v.Line, OpAMD64CMPWconst, TypeInvalid)
7225 goto end74495683df77023ed619b4ecee98d94a
7226 end74495683df77023ed619b4ecee98d94a:
7229 // match: (Rsh32Ux32 <t> x y)
7231 // result: (ANDL (SHRL <t> x y) (SBBLcarrymask <t> (CMPLconst [32] y)))
7240 v0 := b.NewValue0(v.Line, OpAMD64SHRL, TypeInvalid)
7245 v1 := b.NewValue0(v.Line, OpAMD64SBBLcarrymask, TypeInvalid)
7247 v2 := b.NewValue0(v.Line, OpAMD64CMPLconst, TypeInvalid)
7255 goto enda7d6c92ab2d7467102db447d6b431b28
7256 enda7d6c92ab2d7467102db447d6b431b28:
7259 // match: (Rsh32Ux64 <t> x y)
7261 // result: (ANDL (SHRL <t> x y) (SBBLcarrymask <t> (CMPQconst [32] y)))
7270 v0 := b.NewValue0(v.Line, OpAMD64SHRL, TypeInvalid)
7275 v1 := b.NewValue0(v.Line, OpAMD64SBBLcarrymask, TypeInvalid)
7277 v2 := b.NewValue0(v.Line, OpAMD64CMPQconst, TypeInvalid)
7285 goto end7c0829166a6219a15de2c0aa688a9bb3
7286 end7c0829166a6219a15de2c0aa688a9bb3:
7289 // match: (Rsh32Ux8 <t> x y)
7291 // result: (ANDL (SHRL <t> x y) (SBBLcarrymask <t> (CMPBconst [32] y)))
7300 v0 := b.NewValue0(v.Line, OpAMD64SHRL, TypeInvalid)
7305 v1 := b.NewValue0(v.Line, OpAMD64SBBLcarrymask, TypeInvalid)
7307 v2 := b.NewValue0(v.Line, OpAMD64CMPBconst, TypeInvalid)
7315 goto end221315aa8a09c9d8d2f243bf445446ea
7316 end221315aa8a09c9d8d2f243bf445446ea:
7319 // match: (Rsh32x16 <t> x y)
7321 // result: (SARL <t> x (ORW <y.Type> y (NOTL <y.Type> (SBBLcarrymask <y.Type> (CMPWconst [32] y)))))
7332 v0 := b.NewValue0(v.Line, OpAMD64ORW, TypeInvalid)
7335 v1 := b.NewValue0(v.Line, OpAMD64NOTL, TypeInvalid)
7337 v2 := b.NewValue0(v.Line, OpAMD64SBBLcarrymask, TypeInvalid)
7339 v3 := b.NewValue0(v.Line, OpAMD64CMPWconst, TypeInvalid)
7349 goto end521b60d91648f07fe1be359f1cdbde29
7350 end521b60d91648f07fe1be359f1cdbde29:
7353 // match: (Rsh32x32 <t> x y)
7355 // result: (SARL <t> x (ORL <y.Type> y (NOTL <y.Type> (SBBLcarrymask <y.Type> (CMPLconst [32] y)))))
7366 v0 := b.NewValue0(v.Line, OpAMD64ORL, TypeInvalid)
7369 v1 := b.NewValue0(v.Line, OpAMD64NOTL, TypeInvalid)
7371 v2 := b.NewValue0(v.Line, OpAMD64SBBLcarrymask, TypeInvalid)
7373 v3 := b.NewValue0(v.Line, OpAMD64CMPLconst, TypeInvalid)
7383 goto end0fc03188975afbca2139e28c38b7cd17
7384 end0fc03188975afbca2139e28c38b7cd17:
7387 // match: (Rsh32x64 <t> x y)
7389 // result: (SARL <t> x (ORQ <y.Type> y (NOTQ <y.Type> (SBBQcarrymask <y.Type> (CMPQconst [32] y)))))
7400 v0 := b.NewValue0(v.Line, OpAMD64ORQ, TypeInvalid)
7403 v1 := b.NewValue0(v.Line, OpAMD64NOTQ, TypeInvalid)
7405 v2 := b.NewValue0(v.Line, OpAMD64SBBQcarrymask, TypeInvalid)
7407 v3 := b.NewValue0(v.Line, OpAMD64CMPQconst, TypeInvalid)
7417 goto endf36790cc7ba330d448b403a450a7c1d4
7418 endf36790cc7ba330d448b403a450a7c1d4:
7421 // match: (Rsh32x8 <t> x y)
7423 // result: (SARL <t> x (ORB <y.Type> y (NOTL <y.Type> (SBBLcarrymask <y.Type> (CMPBconst [32] y)))))
7434 v0 := b.NewValue0(v.Line, OpAMD64ORB, TypeInvalid)
7437 v1 := b.NewValue0(v.Line, OpAMD64NOTL, TypeInvalid)
7439 v2 := b.NewValue0(v.Line, OpAMD64SBBLcarrymask, TypeInvalid)
7441 v3 := b.NewValue0(v.Line, OpAMD64CMPBconst, TypeInvalid)
7451 goto end1242709228488be2f2505ead8eabb871
7452 end1242709228488be2f2505ead8eabb871:
7455 // match: (Rsh64Ux16 <t> x y)
7457 // result: (ANDQ (SHRQ <t> x y) (SBBQcarrymask <t> (CMPWconst [64] y)))
7466 v0 := b.NewValue0(v.Line, OpAMD64SHRQ, TypeInvalid)
7471 v1 := b.NewValue0(v.Line, OpAMD64SBBQcarrymask, TypeInvalid)
7473 v2 := b.NewValue0(v.Line, OpAMD64CMPWconst, TypeInvalid)
7481 goto end0bc6c36a57ebaf0b90fc418f976fe210
7482 end0bc6c36a57ebaf0b90fc418f976fe210:
7485 // match: (Rsh64Ux32 <t> x y)
7487 // result: (ANDQ (SHRQ <t> x y) (SBBQcarrymask <t> (CMPLconst [64] y)))
7496 v0 := b.NewValue0(v.Line, OpAMD64SHRQ, TypeInvalid)
7501 v1 := b.NewValue0(v.Line, OpAMD64SBBQcarrymask, TypeInvalid)
7503 v2 := b.NewValue0(v.Line, OpAMD64CMPLconst, TypeInvalid)
7511 goto ende3f52062f53bc3b5aa0461a644e38a1b
7512 ende3f52062f53bc3b5aa0461a644e38a1b:
7515 // match: (Rsh64Ux64 <t> x y)
7517 // result: (ANDQ (SHRQ <t> x y) (SBBQcarrymask <t> (CMPQconst [64] y)))
7526 v0 := b.NewValue0(v.Line, OpAMD64SHRQ, TypeInvalid)
7531 v1 := b.NewValue0(v.Line, OpAMD64SBBQcarrymask, TypeInvalid)
7533 v2 := b.NewValue0(v.Line, OpAMD64CMPQconst, TypeInvalid)
7541 goto endaec410d0544f817303c79bad739c50fd
7542 endaec410d0544f817303c79bad739c50fd:
7545 // match: (Rsh64Ux8 <t> x y)
7547 // result: (ANDQ (SHRQ <t> x y) (SBBQcarrymask <t> (CMPBconst [64] y)))
7556 v0 := b.NewValue0(v.Line, OpAMD64SHRQ, TypeInvalid)
7561 v1 := b.NewValue0(v.Line, OpAMD64SBBQcarrymask, TypeInvalid)
7563 v2 := b.NewValue0(v.Line, OpAMD64CMPBconst, TypeInvalid)
7571 goto end0318851ecb02e4ad8a2669034adf7862
7572 end0318851ecb02e4ad8a2669034adf7862:
7575 // match: (Rsh64x16 <t> x y)
7577 // result: (SARQ <t> x (ORW <y.Type> y (NOTL <y.Type> (SBBLcarrymask <y.Type> (CMPWconst [64] y)))))
7588 v0 := b.NewValue0(v.Line, OpAMD64ORW, TypeInvalid)
7591 v1 := b.NewValue0(v.Line, OpAMD64NOTL, TypeInvalid)
7593 v2 := b.NewValue0(v.Line, OpAMD64SBBLcarrymask, TypeInvalid)
7595 v3 := b.NewValue0(v.Line, OpAMD64CMPWconst, TypeInvalid)
7605 goto endcf8bbca9a7a848fbebaaaa8b699cd086
7606 endcf8bbca9a7a848fbebaaaa8b699cd086:
7609 // match: (Rsh64x32 <t> x y)
7611 // result: (SARQ <t> x (ORL <y.Type> y (NOTL <y.Type> (SBBLcarrymask <y.Type> (CMPLconst [64] y)))))
7622 v0 := b.NewValue0(v.Line, OpAMD64ORL, TypeInvalid)
7625 v1 := b.NewValue0(v.Line, OpAMD64NOTL, TypeInvalid)
7627 v2 := b.NewValue0(v.Line, OpAMD64SBBLcarrymask, TypeInvalid)
7629 v3 := b.NewValue0(v.Line, OpAMD64CMPLconst, TypeInvalid)
7639 goto end7604d45b06ee69bf2feddf88b2f33cb6
7640 end7604d45b06ee69bf2feddf88b2f33cb6:
7643 // match: (Rsh64x64 <t> x y)
7645 // result: (SARQ <t> x (ORQ <y.Type> y (NOTQ <y.Type> (SBBQcarrymask <y.Type> (CMPQconst [64] y)))))
7656 v0 := b.NewValue0(v.Line, OpAMD64ORQ, TypeInvalid)
7659 v1 := b.NewValue0(v.Line, OpAMD64NOTQ, TypeInvalid)
7661 v2 := b.NewValue0(v.Line, OpAMD64SBBQcarrymask, TypeInvalid)
7663 v3 := b.NewValue0(v.Line, OpAMD64CMPQconst, TypeInvalid)
7673 goto end12a3b44af604b515ad5530502336486f
7674 end12a3b44af604b515ad5530502336486f:
7677 // match: (Rsh64x8 <t> x y)
7679 // result: (SARQ <t> x (ORB <y.Type> y (NOTL <y.Type> (SBBLcarrymask <y.Type> (CMPBconst [64] y)))))
7690 v0 := b.NewValue0(v.Line, OpAMD64ORB, TypeInvalid)
7693 v1 := b.NewValue0(v.Line, OpAMD64NOTL, TypeInvalid)
7695 v2 := b.NewValue0(v.Line, OpAMD64SBBLcarrymask, TypeInvalid)
7697 v3 := b.NewValue0(v.Line, OpAMD64CMPBconst, TypeInvalid)
7707 goto end4e2a83809914aad301a2f74d3c38fbbb
7708 end4e2a83809914aad301a2f74d3c38fbbb:
7711 // match: (Rsh8Ux16 <t> x y)
7713 // result: (ANDB (SHRB <t> x y) (SBBLcarrymask <t> (CMPWconst [8] y)))
7722 v0 := b.NewValue0(v.Line, OpAMD64SHRB, TypeInvalid)
7727 v1 := b.NewValue0(v.Line, OpAMD64SBBLcarrymask, TypeInvalid)
7729 v2 := b.NewValue0(v.Line, OpAMD64CMPWconst, TypeInvalid)
7737 goto end724175a51b6efac60c6bb9d83d81215a
7738 end724175a51b6efac60c6bb9d83d81215a:
7741 // match: (Rsh8Ux32 <t> x y)
7743 // result: (ANDB (SHRB <t> x y) (SBBLcarrymask <t> (CMPLconst [8] y)))
7752 v0 := b.NewValue0(v.Line, OpAMD64SHRB, TypeInvalid)
7757 v1 := b.NewValue0(v.Line, OpAMD64SBBLcarrymask, TypeInvalid)
7759 v2 := b.NewValue0(v.Line, OpAMD64CMPLconst, TypeInvalid)
7767 goto end9d973431bed6682c1d557a535cf440ed
7768 end9d973431bed6682c1d557a535cf440ed:
7771 // match: (Rsh8Ux64 <t> x y)
7773 // result: (ANDB (SHRB <t> x y) (SBBLcarrymask <t> (CMPQconst [8] y)))
7782 v0 := b.NewValue0(v.Line, OpAMD64SHRB, TypeInvalid)
7787 v1 := b.NewValue0(v.Line, OpAMD64SBBLcarrymask, TypeInvalid)
7789 v2 := b.NewValue0(v.Line, OpAMD64CMPQconst, TypeInvalid)
7797 goto end9586937cdeb7946c337d46cd30cb9a11
7798 end9586937cdeb7946c337d46cd30cb9a11:
7801 // match: (Rsh8Ux8 <t> x y)
7803 // result: (ANDB (SHRB <t> x y) (SBBLcarrymask <t> (CMPBconst [8] y)))
7812 v0 := b.NewValue0(v.Line, OpAMD64SHRB, TypeInvalid)
7817 v1 := b.NewValue0(v.Line, OpAMD64SBBLcarrymask, TypeInvalid)
7819 v2 := b.NewValue0(v.Line, OpAMD64CMPBconst, TypeInvalid)
7827 goto endc5a55ef63d86e6b8d4d366a947bf563d
7828 endc5a55ef63d86e6b8d4d366a947bf563d:
7831 // match: (Rsh8x16 <t> x y)
7833 // result: (SARB <t> x (ORW <y.Type> y (NOTL <y.Type> (SBBLcarrymask <y.Type> (CMPWconst [8] y)))))
7844 v0 := b.NewValue0(v.Line, OpAMD64ORW, TypeInvalid)
7847 v1 := b.NewValue0(v.Line, OpAMD64NOTL, TypeInvalid)
7849 v2 := b.NewValue0(v.Line, OpAMD64SBBLcarrymask, TypeInvalid)
7851 v3 := b.NewValue0(v.Line, OpAMD64CMPWconst, TypeInvalid)
7861 goto endfa967d6583c1bb9644514c2013b919f8
7862 endfa967d6583c1bb9644514c2013b919f8:
7865 // match: (Rsh8x32 <t> x y)
7867 // result: (SARB <t> x (ORL <y.Type> y (NOTL <y.Type> (SBBLcarrymask <y.Type> (CMPLconst [8] y)))))
7878 v0 := b.NewValue0(v.Line, OpAMD64ORL, TypeInvalid)
7881 v1 := b.NewValue0(v.Line, OpAMD64NOTL, TypeInvalid)
7883 v2 := b.NewValue0(v.Line, OpAMD64SBBLcarrymask, TypeInvalid)
7885 v3 := b.NewValue0(v.Line, OpAMD64CMPLconst, TypeInvalid)
7895 goto ende5a630810624a1bd3677618c2cbc8619
7896 ende5a630810624a1bd3677618c2cbc8619:
7899 // match: (Rsh8x64 <t> x y)
7901 // result: (SARB <t> x (ORQ <y.Type> y (NOTQ <y.Type> (SBBQcarrymask <y.Type> (CMPQconst [8] y)))))
7912 v0 := b.NewValue0(v.Line, OpAMD64ORQ, TypeInvalid)
7915 v1 := b.NewValue0(v.Line, OpAMD64NOTQ, TypeInvalid)
7917 v2 := b.NewValue0(v.Line, OpAMD64SBBQcarrymask, TypeInvalid)
7919 v3 := b.NewValue0(v.Line, OpAMD64CMPQconst, TypeInvalid)
7929 goto end23c55e49d8bc44afc680b2a4eade5af6
7930 end23c55e49d8bc44afc680b2a4eade5af6:
7933 // match: (Rsh8x8 <t> x y)
7935 // result: (SARB <t> x (ORB <y.Type> y (NOTL <y.Type> (SBBLcarrymask <y.Type> (CMPBconst [8] y)))))
7946 v0 := b.NewValue0(v.Line, OpAMD64ORB, TypeInvalid)
7949 v1 := b.NewValue0(v.Line, OpAMD64NOTL, TypeInvalid)
7951 v2 := b.NewValue0(v.Line, OpAMD64SBBLcarrymask, TypeInvalid)
7953 v3 := b.NewValue0(v.Line, OpAMD64CMPBconst, TypeInvalid)
7963 goto enddab0c33c56e2e9434b880e1718621979
7964 enddab0c33c56e2e9434b880e1718621979:
7967 // match: (SARB x (MOVBconst [c]))
7969 // result: (SARBconst [c&31] x)
7972 if v.Args[1].Op != OpAMD64MOVBconst {
7973 goto end3bf3d17717aa6c04462e56d1c87902ce
7975 c := v.Args[1].AuxInt
7976 v.Op = OpAMD64SARBconst
7984 goto end3bf3d17717aa6c04462e56d1c87902ce
7985 end3bf3d17717aa6c04462e56d1c87902ce:
7987 case OpAMD64SARBconst:
7988 // match: (SARBconst [c] (MOVQconst [d]))
7990 // result: (MOVQconst [d>>uint64(c)])
7993 if v.Args[0].Op != OpAMD64MOVQconst {
7994 goto end06e0e38775f0650ed672427d19cd8fff
7996 d := v.Args[0].AuxInt
7997 v.Op = OpAMD64MOVQconst
8001 v.AuxInt = d >> uint64(c)
8004 goto end06e0e38775f0650ed672427d19cd8fff
8005 end06e0e38775f0650ed672427d19cd8fff:
8008 // match: (SARL x (MOVLconst [c]))
8010 // result: (SARLconst [c&31] x)
8013 if v.Args[1].Op != OpAMD64MOVLconst {
8014 goto ende586a72c1b232ee0b63e37c71eeb8470
8016 c := v.Args[1].AuxInt
8017 v.Op = OpAMD64SARLconst
8025 goto ende586a72c1b232ee0b63e37c71eeb8470
8026 ende586a72c1b232ee0b63e37c71eeb8470:
8028 case OpAMD64SARLconst:
8029 // match: (SARLconst [c] (MOVQconst [d]))
8031 // result: (MOVQconst [d>>uint64(c)])
8034 if v.Args[0].Op != OpAMD64MOVQconst {
8035 goto end8f34dc94323303e75b7bcc8e731cf1db
8037 d := v.Args[0].AuxInt
8038 v.Op = OpAMD64MOVQconst
8042 v.AuxInt = d >> uint64(c)
8045 goto end8f34dc94323303e75b7bcc8e731cf1db
8046 end8f34dc94323303e75b7bcc8e731cf1db:
8049 // match: (SARQ x (MOVQconst [c]))
8051 // result: (SARQconst [c&63] x)
8054 if v.Args[1].Op != OpAMD64MOVQconst {
8055 goto end25e720ab203be2745dded5550e6d8a7c
8057 c := v.Args[1].AuxInt
8058 v.Op = OpAMD64SARQconst
8066 goto end25e720ab203be2745dded5550e6d8a7c
8067 end25e720ab203be2745dded5550e6d8a7c:
8069 case OpAMD64SARQconst:
8070 // match: (SARQconst [c] (MOVQconst [d]))
8072 // result: (MOVQconst [d>>uint64(c)])
8075 if v.Args[0].Op != OpAMD64MOVQconst {
8076 goto endd949ba69a1ff71ba62c49b39c68f269e
8078 d := v.Args[0].AuxInt
8079 v.Op = OpAMD64MOVQconst
8083 v.AuxInt = d >> uint64(c)
8086 goto endd949ba69a1ff71ba62c49b39c68f269e
8087 endd949ba69a1ff71ba62c49b39c68f269e:
8090 // match: (SARW x (MOVWconst [c]))
8092 // result: (SARWconst [c&31] x)
8095 if v.Args[1].Op != OpAMD64MOVWconst {
8096 goto endc46e3f211f94238f9a0aec3c498af490
8098 c := v.Args[1].AuxInt
8099 v.Op = OpAMD64SARWconst
8107 goto endc46e3f211f94238f9a0aec3c498af490
8108 endc46e3f211f94238f9a0aec3c498af490:
8110 case OpAMD64SARWconst:
8111 // match: (SARWconst [c] (MOVQconst [d]))
8113 // result: (MOVQconst [d>>uint64(c)])
8116 if v.Args[0].Op != OpAMD64MOVQconst {
8117 goto endca23e80dba22ab574f843c7a4cef24ab
8119 d := v.Args[0].AuxInt
8120 v.Op = OpAMD64MOVQconst
8124 v.AuxInt = d >> uint64(c)
8127 goto endca23e80dba22ab574f843c7a4cef24ab
8128 endca23e80dba22ab574f843c7a4cef24ab:
8130 case OpAMD64SBBLcarrymask:
8131 // match: (SBBLcarrymask (CMPQconst [c] (MOVQconst [d])))
8132 // cond: inBounds64(d, c)
8133 // result: (MOVLconst [-1])
8135 if v.Args[0].Op != OpAMD64CMPQconst {
8136 goto end490c8a7039bab41e90e564fbb8500233
8138 c := v.Args[0].AuxInt
8139 if v.Args[0].Args[0].Op != OpAMD64MOVQconst {
8140 goto end490c8a7039bab41e90e564fbb8500233
8142 d := v.Args[0].Args[0].AuxInt
8143 if !(inBounds64(d, c)) {
8144 goto end490c8a7039bab41e90e564fbb8500233
8146 v.Op = OpAMD64MOVLconst
8153 goto end490c8a7039bab41e90e564fbb8500233
8154 end490c8a7039bab41e90e564fbb8500233:
8156 // match: (SBBLcarrymask (CMPQconst [c] (MOVQconst [d])))
8157 // cond: !inBounds64(d, c)
8158 // result: (MOVLconst [0])
8160 if v.Args[0].Op != OpAMD64CMPQconst {
8161 goto end95e703eabe71d831b7a3d2f9fabe7de9
8163 c := v.Args[0].AuxInt
8164 if v.Args[0].Args[0].Op != OpAMD64MOVQconst {
8165 goto end95e703eabe71d831b7a3d2f9fabe7de9
8167 d := v.Args[0].Args[0].AuxInt
8168 if !(!inBounds64(d, c)) {
8169 goto end95e703eabe71d831b7a3d2f9fabe7de9
8171 v.Op = OpAMD64MOVLconst
8178 goto end95e703eabe71d831b7a3d2f9fabe7de9
8179 end95e703eabe71d831b7a3d2f9fabe7de9:
8181 // match: (SBBLcarrymask (CMPLconst [c] (MOVLconst [d])))
8182 // cond: inBounds32(d, c)
8183 // result: (MOVLconst [-1])
8185 if v.Args[0].Op != OpAMD64CMPLconst {
8186 goto end00c0a561340b0172c9a21f63648b86e2
8188 c := v.Args[0].AuxInt
8189 if v.Args[0].Args[0].Op != OpAMD64MOVLconst {
8190 goto end00c0a561340b0172c9a21f63648b86e2
8192 d := v.Args[0].Args[0].AuxInt
8193 if !(inBounds32(d, c)) {
8194 goto end00c0a561340b0172c9a21f63648b86e2
8196 v.Op = OpAMD64MOVLconst
8203 goto end00c0a561340b0172c9a21f63648b86e2
8204 end00c0a561340b0172c9a21f63648b86e2:
8206 // match: (SBBLcarrymask (CMPLconst [c] (MOVLconst [d])))
8207 // cond: !inBounds32(d, c)
8208 // result: (MOVLconst [0])
8210 if v.Args[0].Op != OpAMD64CMPLconst {
8211 goto enda73c8bf14f7b45dd97c6a006e317b0b8
8213 c := v.Args[0].AuxInt
8214 if v.Args[0].Args[0].Op != OpAMD64MOVLconst {
8215 goto enda73c8bf14f7b45dd97c6a006e317b0b8
8217 d := v.Args[0].Args[0].AuxInt
8218 if !(!inBounds32(d, c)) {
8219 goto enda73c8bf14f7b45dd97c6a006e317b0b8
8221 v.Op = OpAMD64MOVLconst
8228 goto enda73c8bf14f7b45dd97c6a006e317b0b8
8229 enda73c8bf14f7b45dd97c6a006e317b0b8:
8231 // match: (SBBLcarrymask (CMPWconst [c] (MOVWconst [d])))
8232 // cond: inBounds16(d, c)
8233 // result: (MOVLconst [-1])
8235 if v.Args[0].Op != OpAMD64CMPWconst {
8236 goto endb94dc44cd77f66ed3bf3742874b666fc
8238 c := v.Args[0].AuxInt
8239 if v.Args[0].Args[0].Op != OpAMD64MOVWconst {
8240 goto endb94dc44cd77f66ed3bf3742874b666fc
8242 d := v.Args[0].Args[0].AuxInt
8243 if !(inBounds16(d, c)) {
8244 goto endb94dc44cd77f66ed3bf3742874b666fc
8246 v.Op = OpAMD64MOVLconst
8253 goto endb94dc44cd77f66ed3bf3742874b666fc
8254 endb94dc44cd77f66ed3bf3742874b666fc:
8256 // match: (SBBLcarrymask (CMPWconst [c] (MOVWconst [d])))
8257 // cond: !inBounds16(d, c)
8258 // result: (MOVLconst [0])
8260 if v.Args[0].Op != OpAMD64CMPWconst {
8261 goto end7a02def6194822f7ab937d78088504d2
8263 c := v.Args[0].AuxInt
8264 if v.Args[0].Args[0].Op != OpAMD64MOVWconst {
8265 goto end7a02def6194822f7ab937d78088504d2
8267 d := v.Args[0].Args[0].AuxInt
8268 if !(!inBounds16(d, c)) {
8269 goto end7a02def6194822f7ab937d78088504d2
8271 v.Op = OpAMD64MOVLconst
8278 goto end7a02def6194822f7ab937d78088504d2
8279 end7a02def6194822f7ab937d78088504d2:
8281 // match: (SBBLcarrymask (CMPBconst [c] (MOVBconst [d])))
8282 // cond: inBounds8(d, c)
8283 // result: (MOVLconst [-1])
8285 if v.Args[0].Op != OpAMD64CMPBconst {
8286 goto end79c8e4a20761df731521e6cd956c4245
8288 c := v.Args[0].AuxInt
8289 if v.Args[0].Args[0].Op != OpAMD64MOVBconst {
8290 goto end79c8e4a20761df731521e6cd956c4245
8292 d := v.Args[0].Args[0].AuxInt
8293 if !(inBounds8(d, c)) {
8294 goto end79c8e4a20761df731521e6cd956c4245
8296 v.Op = OpAMD64MOVLconst
8303 goto end79c8e4a20761df731521e6cd956c4245
8304 end79c8e4a20761df731521e6cd956c4245:
8306 // match: (SBBLcarrymask (CMPBconst [c] (MOVBconst [d])))
8307 // cond: !inBounds8(d, c)
8308 // result: (MOVLconst [0])
8310 if v.Args[0].Op != OpAMD64CMPBconst {
8311 goto end95b5b21dd7756ae41575759a1eff2bea
8313 c := v.Args[0].AuxInt
8314 if v.Args[0].Args[0].Op != OpAMD64MOVBconst {
8315 goto end95b5b21dd7756ae41575759a1eff2bea
8317 d := v.Args[0].Args[0].AuxInt
8318 if !(!inBounds8(d, c)) {
8319 goto end95b5b21dd7756ae41575759a1eff2bea
8321 v.Op = OpAMD64MOVLconst
8328 goto end95b5b21dd7756ae41575759a1eff2bea
8329 end95b5b21dd7756ae41575759a1eff2bea:
8331 case OpAMD64SBBQcarrymask:
8332 // match: (SBBQcarrymask (CMPQconst [c] (MOVQconst [d])))
8333 // cond: inBounds64(d, c)
8334 // result: (MOVQconst [-1])
8336 if v.Args[0].Op != OpAMD64CMPQconst {
8337 goto end0c26df98feb38f149eca12f33c15de1b
8339 c := v.Args[0].AuxInt
8340 if v.Args[0].Args[0].Op != OpAMD64MOVQconst {
8341 goto end0c26df98feb38f149eca12f33c15de1b
8343 d := v.Args[0].Args[0].AuxInt
8344 if !(inBounds64(d, c)) {
8345 goto end0c26df98feb38f149eca12f33c15de1b
8347 v.Op = OpAMD64MOVQconst
8354 goto end0c26df98feb38f149eca12f33c15de1b
8355 end0c26df98feb38f149eca12f33c15de1b:
8357 // match: (SBBQcarrymask (CMPQconst [c] (MOVQconst [d])))
8358 // cond: !inBounds64(d, c)
8359 // result: (MOVQconst [0])
8361 if v.Args[0].Op != OpAMD64CMPQconst {
8362 goto end8965aa1e1153e5ecd123bbb31a618570
8364 c := v.Args[0].AuxInt
8365 if v.Args[0].Args[0].Op != OpAMD64MOVQconst {
8366 goto end8965aa1e1153e5ecd123bbb31a618570
8368 d := v.Args[0].Args[0].AuxInt
8369 if !(!inBounds64(d, c)) {
8370 goto end8965aa1e1153e5ecd123bbb31a618570
8372 v.Op = OpAMD64MOVQconst
8379 goto end8965aa1e1153e5ecd123bbb31a618570
8380 end8965aa1e1153e5ecd123bbb31a618570:
8382 // match: (SBBQcarrymask (CMPLconst [c] (MOVLconst [d])))
8383 // cond: inBounds32(d, c)
8384 // result: (MOVQconst [-1])
8386 if v.Args[0].Op != OpAMD64CMPLconst {
8387 goto end8772ede6098981a61af0f478841d7d54
8389 c := v.Args[0].AuxInt
8390 if v.Args[0].Args[0].Op != OpAMD64MOVLconst {
8391 goto end8772ede6098981a61af0f478841d7d54
8393 d := v.Args[0].Args[0].AuxInt
8394 if !(inBounds32(d, c)) {
8395 goto end8772ede6098981a61af0f478841d7d54
8397 v.Op = OpAMD64MOVQconst
8404 goto end8772ede6098981a61af0f478841d7d54
8405 end8772ede6098981a61af0f478841d7d54:
8407 // match: (SBBQcarrymask (CMPLconst [c] (MOVLconst [d])))
8408 // cond: !inBounds32(d, c)
8409 // result: (MOVQconst [0])
8411 if v.Args[0].Op != OpAMD64CMPLconst {
8412 goto end2d535e90075ee777fc616e6b9847a384
8414 c := v.Args[0].AuxInt
8415 if v.Args[0].Args[0].Op != OpAMD64MOVLconst {
8416 goto end2d535e90075ee777fc616e6b9847a384
8418 d := v.Args[0].Args[0].AuxInt
8419 if !(!inBounds32(d, c)) {
8420 goto end2d535e90075ee777fc616e6b9847a384
8422 v.Op = OpAMD64MOVQconst
8429 goto end2d535e90075ee777fc616e6b9847a384
8430 end2d535e90075ee777fc616e6b9847a384:
8432 // match: (SBBQcarrymask (CMPWconst [c] (MOVWconst [d])))
8433 // cond: inBounds16(d, c)
8434 // result: (MOVQconst [-1])
8436 if v.Args[0].Op != OpAMD64CMPWconst {
8437 goto end3103c51e14b4fc894b4170f16f37eebc
8439 c := v.Args[0].AuxInt
8440 if v.Args[0].Args[0].Op != OpAMD64MOVWconst {
8441 goto end3103c51e14b4fc894b4170f16f37eebc
8443 d := v.Args[0].Args[0].AuxInt
8444 if !(inBounds16(d, c)) {
8445 goto end3103c51e14b4fc894b4170f16f37eebc
8447 v.Op = OpAMD64MOVQconst
8454 goto end3103c51e14b4fc894b4170f16f37eebc
8455 end3103c51e14b4fc894b4170f16f37eebc:
8457 // match: (SBBQcarrymask (CMPWconst [c] (MOVWconst [d])))
8458 // cond: !inBounds16(d, c)
8459 // result: (MOVQconst [0])
8461 if v.Args[0].Op != OpAMD64CMPWconst {
8462 goto enddae2191a59cfef5efb04ebab9354745c
8464 c := v.Args[0].AuxInt
8465 if v.Args[0].Args[0].Op != OpAMD64MOVWconst {
8466 goto enddae2191a59cfef5efb04ebab9354745c
8468 d := v.Args[0].Args[0].AuxInt
8469 if !(!inBounds16(d, c)) {
8470 goto enddae2191a59cfef5efb04ebab9354745c
8472 v.Op = OpAMD64MOVQconst
8479 goto enddae2191a59cfef5efb04ebab9354745c
8480 enddae2191a59cfef5efb04ebab9354745c:
8482 // match: (SBBQcarrymask (CMPBconst [c] (MOVBconst [d])))
8483 // cond: inBounds8(d, c)
8484 // result: (MOVQconst [-1])
8486 if v.Args[0].Op != OpAMD64CMPBconst {
8487 goto end72e088325ca005b0251b1ee82da3c5d9
8489 c := v.Args[0].AuxInt
8490 if v.Args[0].Args[0].Op != OpAMD64MOVBconst {
8491 goto end72e088325ca005b0251b1ee82da3c5d9
8493 d := v.Args[0].Args[0].AuxInt
8494 if !(inBounds8(d, c)) {
8495 goto end72e088325ca005b0251b1ee82da3c5d9
8497 v.Op = OpAMD64MOVQconst
8504 goto end72e088325ca005b0251b1ee82da3c5d9
8505 end72e088325ca005b0251b1ee82da3c5d9:
8507 // match: (SBBQcarrymask (CMPBconst [c] (MOVBconst [d])))
8508 // cond: !inBounds8(d, c)
8509 // result: (MOVQconst [0])
8511 if v.Args[0].Op != OpAMD64CMPBconst {
8512 goto endcb388100f5b933aa94095096d2bb425e
8514 c := v.Args[0].AuxInt
8515 if v.Args[0].Args[0].Op != OpAMD64MOVBconst {
8516 goto endcb388100f5b933aa94095096d2bb425e
8518 d := v.Args[0].Args[0].AuxInt
8519 if !(!inBounds8(d, c)) {
8520 goto endcb388100f5b933aa94095096d2bb425e
8522 v.Op = OpAMD64MOVQconst
8529 goto endcb388100f5b933aa94095096d2bb425e
8530 endcb388100f5b933aa94095096d2bb425e:
8533 // match: (SETA (InvertFlags x))
8537 if v.Args[0].Op != OpAMD64InvertFlags {
8538 goto enda4ac36e94fc279d762b5a6c7c6cc665d
8540 x := v.Args[0].Args[0]
8548 goto enda4ac36e94fc279d762b5a6c7c6cc665d
8549 enda4ac36e94fc279d762b5a6c7c6cc665d:
8552 // match: (SETAE (InvertFlags x))
8554 // result: (SETBE x)
8556 if v.Args[0].Op != OpAMD64InvertFlags {
8557 goto end0468f5be6caf682fdea6b91d6648991e
8559 x := v.Args[0].Args[0]
8567 goto end0468f5be6caf682fdea6b91d6648991e
8568 end0468f5be6caf682fdea6b91d6648991e:
8571 // match: (SETB (InvertFlags x))
8575 if v.Args[0].Op != OpAMD64InvertFlags {
8576 goto endc9eba7aa1e54a228570d2f5cc96f3565
8578 x := v.Args[0].Args[0]
8586 goto endc9eba7aa1e54a228570d2f5cc96f3565
8587 endc9eba7aa1e54a228570d2f5cc96f3565:
8590 // match: (SETBE (InvertFlags x))
8592 // result: (SETAE x)
8594 if v.Args[0].Op != OpAMD64InvertFlags {
8595 goto end9d9031643469798b14b8cad1f5a7a1ba
8597 x := v.Args[0].Args[0]
8605 goto end9d9031643469798b14b8cad1f5a7a1ba
8606 end9d9031643469798b14b8cad1f5a7a1ba:
8609 // match: (SETEQ (InvertFlags x))
8611 // result: (SETEQ x)
8613 if v.Args[0].Op != OpAMD64InvertFlags {
8614 goto end5d2039c9368d8c0cfba23b5a85b459e1
8616 x := v.Args[0].Args[0]
8624 goto end5d2039c9368d8c0cfba23b5a85b459e1
8625 end5d2039c9368d8c0cfba23b5a85b459e1:
8628 // match: (SETG (InvertFlags x))
8632 if v.Args[0].Op != OpAMD64InvertFlags {
8633 goto endf7586738694c9cd0b74ae28bbadb649f
8635 x := v.Args[0].Args[0]
8643 goto endf7586738694c9cd0b74ae28bbadb649f
8644 endf7586738694c9cd0b74ae28bbadb649f:
8647 // match: (SETGE (InvertFlags x))
8649 // result: (SETLE x)
8651 if v.Args[0].Op != OpAMD64InvertFlags {
8652 goto end82c11eff6f842159f564f2dad3d2eedc
8654 x := v.Args[0].Args[0]
8662 goto end82c11eff6f842159f564f2dad3d2eedc
8663 end82c11eff6f842159f564f2dad3d2eedc:
8666 // match: (SETL (InvertFlags x))
8670 if v.Args[0].Op != OpAMD64InvertFlags {
8671 goto ende33160cd86b9d4d3b77e02fb4658d5d3
8673 x := v.Args[0].Args[0]
8681 goto ende33160cd86b9d4d3b77e02fb4658d5d3
8682 ende33160cd86b9d4d3b77e02fb4658d5d3:
8685 // match: (SETLE (InvertFlags x))
8687 // result: (SETGE x)
8689 if v.Args[0].Op != OpAMD64InvertFlags {
8690 goto end9307d96753efbeb888d1c98a6aba7a29
8692 x := v.Args[0].Args[0]
8700 goto end9307d96753efbeb888d1c98a6aba7a29
8701 end9307d96753efbeb888d1c98a6aba7a29:
8704 // match: (SETNE (InvertFlags x))
8706 // result: (SETNE x)
8708 if v.Args[0].Op != OpAMD64InvertFlags {
8709 goto endbc71811b789475308014550f638026eb
8711 x := v.Args[0].Args[0]
8719 goto endbc71811b789475308014550f638026eb
8720 endbc71811b789475308014550f638026eb:
8723 // match: (SHLB x (MOVBconst [c]))
8725 // result: (SHLBconst [c&31] x)
8728 if v.Args[1].Op != OpAMD64MOVBconst {
8729 goto end2d0d0111d831d8a575b5627284a6337a
8731 c := v.Args[1].AuxInt
8732 v.Op = OpAMD64SHLBconst
8740 goto end2d0d0111d831d8a575b5627284a6337a
8741 end2d0d0111d831d8a575b5627284a6337a:
8744 // match: (SHLL x (MOVLconst [c]))
8746 // result: (SHLLconst [c&31] x)
8749 if v.Args[1].Op != OpAMD64MOVLconst {
8750 goto end633f9ddcfbb63374c895a5f78da75d25
8752 c := v.Args[1].AuxInt
8753 v.Op = OpAMD64SHLLconst
8761 goto end633f9ddcfbb63374c895a5f78da75d25
8762 end633f9ddcfbb63374c895a5f78da75d25:
8765 // match: (SHLQ x (MOVQconst [c]))
8767 // result: (SHLQconst [c&63] x)
8770 if v.Args[1].Op != OpAMD64MOVQconst {
8771 goto end4d7e3a945cacdd6b6c8c0de6f465d4ae
8773 c := v.Args[1].AuxInt
8774 v.Op = OpAMD64SHLQconst
8782 goto end4d7e3a945cacdd6b6c8c0de6f465d4ae
8783 end4d7e3a945cacdd6b6c8c0de6f465d4ae:
8786 // match: (SHLW x (MOVWconst [c]))
8788 // result: (SHLWconst [c&31] x)
8791 if v.Args[1].Op != OpAMD64MOVWconst {
8792 goto endba96a52aa58d28b3357828051e0e695c
8794 c := v.Args[1].AuxInt
8795 v.Op = OpAMD64SHLWconst
8803 goto endba96a52aa58d28b3357828051e0e695c
8804 endba96a52aa58d28b3357828051e0e695c:
8807 // match: (SHRB x (MOVBconst [c]))
8809 // result: (SHRBconst [c&31] x)
8812 if v.Args[1].Op != OpAMD64MOVBconst {
8813 goto enddb1cd5aaa826d43fa4f6d1b2b8795e58
8815 c := v.Args[1].AuxInt
8816 v.Op = OpAMD64SHRBconst
8824 goto enddb1cd5aaa826d43fa4f6d1b2b8795e58
8825 enddb1cd5aaa826d43fa4f6d1b2b8795e58:
8828 // match: (SHRL x (MOVLconst [c]))
8830 // result: (SHRLconst [c&31] x)
8833 if v.Args[1].Op != OpAMD64MOVLconst {
8834 goto end344b8b9202e1925e8d0561f1c21412fc
8836 c := v.Args[1].AuxInt
8837 v.Op = OpAMD64SHRLconst
8845 goto end344b8b9202e1925e8d0561f1c21412fc
8846 end344b8b9202e1925e8d0561f1c21412fc:
8849 // match: (SHRQ x (MOVQconst [c]))
8851 // result: (SHRQconst [c&63] x)
8854 if v.Args[1].Op != OpAMD64MOVQconst {
8855 goto end699d35e2d5cfa08b8a3b1c8a183ddcf3
8857 c := v.Args[1].AuxInt
8858 v.Op = OpAMD64SHRQconst
8866 goto end699d35e2d5cfa08b8a3b1c8a183ddcf3
8867 end699d35e2d5cfa08b8a3b1c8a183ddcf3:
8870 // match: (SHRW x (MOVWconst [c]))
8872 // result: (SHRWconst [c&31] x)
8875 if v.Args[1].Op != OpAMD64MOVWconst {
8876 goto endd75ff1f9b3e9ec9c942a39b6179da1b3
8878 c := v.Args[1].AuxInt
8879 v.Op = OpAMD64SHRWconst
8887 goto endd75ff1f9b3e9ec9c942a39b6179da1b3
8888 endd75ff1f9b3e9ec9c942a39b6179da1b3:
8891 // match: (SUBB x (MOVBconst [c]))
8893 // result: (SUBBconst x [c])
8896 if v.Args[1].Op != OpAMD64MOVBconst {
8897 goto end9ca5d2a70e2df1a5a3ed6786bce1f7b2
8899 c := v.Args[1].AuxInt
8900 v.Op = OpAMD64SUBBconst
8908 goto end9ca5d2a70e2df1a5a3ed6786bce1f7b2
8909 end9ca5d2a70e2df1a5a3ed6786bce1f7b2:
8911 // match: (SUBB (MOVBconst [c]) x)
8913 // result: (NEGB (SUBBconst <v.Type> x [c]))
8915 if v.Args[0].Op != OpAMD64MOVBconst {
8916 goto endc288755d69b04d24a6aac32a73956411
8918 c := v.Args[0].AuxInt
8924 v0 := b.NewValue0(v.Line, OpAMD64SUBBconst, TypeInvalid)
8931 goto endc288755d69b04d24a6aac32a73956411
8932 endc288755d69b04d24a6aac32a73956411:
8934 // match: (SUBB x x)
8936 // result: (MOVBconst [0])
8940 goto ende8904403d937d95b0d6133d3ec92bb45
8942 v.Op = OpAMD64MOVBconst
8949 goto ende8904403d937d95b0d6133d3ec92bb45
8950 ende8904403d937d95b0d6133d3ec92bb45:
8952 case OpAMD64SUBBconst:
8953 // match: (SUBBconst [c] (MOVBconst [d]))
8955 // result: (MOVBconst [d-c])
8958 if v.Args[0].Op != OpAMD64MOVBconst {
8959 goto enddc5383558e2f3eae507afcb94eada964
8961 d := v.Args[0].AuxInt
8962 v.Op = OpAMD64MOVBconst
8969 goto enddc5383558e2f3eae507afcb94eada964
8970 enddc5383558e2f3eae507afcb94eada964:
8972 // match: (SUBBconst [c] (SUBBconst [d] x))
8974 // result: (ADDBconst [-c-d] x)
8977 if v.Args[0].Op != OpAMD64SUBBconst {
8978 goto end035c57413a46eb347ecb3736d1510915
8980 d := v.Args[0].AuxInt
8981 x := v.Args[0].Args[0]
8982 v.Op = OpAMD64ADDBconst
8990 goto end035c57413a46eb347ecb3736d1510915
8991 end035c57413a46eb347ecb3736d1510915:
8994 // match: (SUBL x (MOVLconst [c]))
8996 // result: (SUBLconst x [c])
8999 if v.Args[1].Op != OpAMD64MOVLconst {
9000 goto end178c1d6c86f9c16f6497586c2f7d8625
9002 c := v.Args[1].AuxInt
9003 v.Op = OpAMD64SUBLconst
9011 goto end178c1d6c86f9c16f6497586c2f7d8625
9012 end178c1d6c86f9c16f6497586c2f7d8625:
9014 // match: (SUBL (MOVLconst [c]) x)
9016 // result: (NEGL (SUBLconst <v.Type> x [c]))
9018 if v.Args[0].Op != OpAMD64MOVLconst {
9019 goto endb0efe6e15ec20486b849534a00483ae2
9021 c := v.Args[0].AuxInt
9027 v0 := b.NewValue0(v.Line, OpAMD64SUBLconst, TypeInvalid)
9034 goto endb0efe6e15ec20486b849534a00483ae2
9035 endb0efe6e15ec20486b849534a00483ae2:
9037 // match: (SUBL x x)
9039 // result: (MOVLconst [0])
9043 goto end332f1f641f875c69bea7289191e69133
9045 v.Op = OpAMD64MOVLconst
9052 goto end332f1f641f875c69bea7289191e69133
9053 end332f1f641f875c69bea7289191e69133:
9055 case OpAMD64SUBLconst:
9056 // match: (SUBLconst [c] (MOVLconst [d]))
9058 // result: (MOVLconst [d-c])
9061 if v.Args[0].Op != OpAMD64MOVLconst {
9062 goto end6c5c6d58d4bdd0a5c2f7bf10b343b41e
9064 d := v.Args[0].AuxInt
9065 v.Op = OpAMD64MOVLconst
9072 goto end6c5c6d58d4bdd0a5c2f7bf10b343b41e
9073 end6c5c6d58d4bdd0a5c2f7bf10b343b41e:
9075 // match: (SUBLconst [c] (SUBLconst [d] x))
9077 // result: (ADDLconst [-c-d] x)
9080 if v.Args[0].Op != OpAMD64SUBLconst {
9081 goto end0c9ffb11e8a56ced1b14dbf6bf9a6737
9083 d := v.Args[0].AuxInt
9084 x := v.Args[0].Args[0]
9085 v.Op = OpAMD64ADDLconst
9093 goto end0c9ffb11e8a56ced1b14dbf6bf9a6737
9094 end0c9ffb11e8a56ced1b14dbf6bf9a6737:
9097 // match: (SUBQ x (MOVQconst [c]))
9099 // result: (SUBQconst x [c])
9102 if v.Args[1].Op != OpAMD64MOVQconst {
9103 goto end9bbb7b20824a498752c605942fad89c2
9105 c := v.Args[1].AuxInt
9107 goto end9bbb7b20824a498752c605942fad89c2
9109 v.Op = OpAMD64SUBQconst
9117 goto end9bbb7b20824a498752c605942fad89c2
9118 end9bbb7b20824a498752c605942fad89c2:
9120 // match: (SUBQ (MOVQconst [c]) x)
9122 // result: (NEGQ (SUBQconst <v.Type> x [c]))
9124 if v.Args[0].Op != OpAMD64MOVQconst {
9125 goto end8beb96de3efee9206d1bd4b7d777d2cb
9127 c := v.Args[0].AuxInt
9130 goto end8beb96de3efee9206d1bd4b7d777d2cb
9136 v0 := b.NewValue0(v.Line, OpAMD64SUBQconst, TypeInvalid)
9143 goto end8beb96de3efee9206d1bd4b7d777d2cb
9144 end8beb96de3efee9206d1bd4b7d777d2cb:
9146 // match: (SUBQ x x)
9148 // result: (MOVQconst [0])
9152 goto endd87d1d839d2dc54d9c90fa4f73383480
9154 v.Op = OpAMD64MOVQconst
9161 goto endd87d1d839d2dc54d9c90fa4f73383480
9162 endd87d1d839d2dc54d9c90fa4f73383480:
9164 case OpAMD64SUBQconst:
9165 // match: (SUBQconst [c] (MOVQconst [d]))
9167 // result: (MOVQconst [d-c])
9170 if v.Args[0].Op != OpAMD64MOVQconst {
9171 goto endb0daebe6831cf381377c3e4248070f25
9173 d := v.Args[0].AuxInt
9174 v.Op = OpAMD64MOVQconst
9181 goto endb0daebe6831cf381377c3e4248070f25
9182 endb0daebe6831cf381377c3e4248070f25:
9184 // match: (SUBQconst [c] (SUBQconst [d] x))
9186 // result: (ADDQconst [-c-d] x)
9189 if v.Args[0].Op != OpAMD64SUBQconst {
9190 goto end2d40ddb5ae9e90679456254c61858d9d
9192 d := v.Args[0].AuxInt
9193 x := v.Args[0].Args[0]
9194 v.Op = OpAMD64ADDQconst
9202 goto end2d40ddb5ae9e90679456254c61858d9d
9203 end2d40ddb5ae9e90679456254c61858d9d:
9206 // match: (SUBW x (MOVWconst [c]))
9208 // result: (SUBWconst x [c])
9211 if v.Args[1].Op != OpAMD64MOVWconst {
9212 goto end135aa9100b2f61d58b37cede37b63731
9214 c := v.Args[1].AuxInt
9215 v.Op = OpAMD64SUBWconst
9223 goto end135aa9100b2f61d58b37cede37b63731
9224 end135aa9100b2f61d58b37cede37b63731:
9226 // match: (SUBW (MOVWconst [c]) x)
9228 // result: (NEGW (SUBWconst <v.Type> x [c]))
9230 if v.Args[0].Op != OpAMD64MOVWconst {
9231 goto end44d23f7e65a4b1c42d0e6463f8e493b6
9233 c := v.Args[0].AuxInt
9239 v0 := b.NewValue0(v.Line, OpAMD64SUBWconst, TypeInvalid)
9246 goto end44d23f7e65a4b1c42d0e6463f8e493b6
9247 end44d23f7e65a4b1c42d0e6463f8e493b6:
9249 // match: (SUBW x x)
9251 // result: (MOVWconst [0])
9255 goto endb970e7c318d04a1afe1dfe08a7ca0d9c
9257 v.Op = OpAMD64MOVWconst
9264 goto endb970e7c318d04a1afe1dfe08a7ca0d9c
9265 endb970e7c318d04a1afe1dfe08a7ca0d9c:
9267 case OpAMD64SUBWconst:
9268 // match: (SUBWconst [c] (MOVWconst [d]))
9270 // result: (MOVWconst [d-c])
9273 if v.Args[0].Op != OpAMD64MOVWconst {
9274 goto endae629a229c399eaed7dbb95b1b0e6f8a
9276 d := v.Args[0].AuxInt
9277 v.Op = OpAMD64MOVWconst
9284 goto endae629a229c399eaed7dbb95b1b0e6f8a
9285 endae629a229c399eaed7dbb95b1b0e6f8a:
9287 // match: (SUBWconst [c] (SUBWconst [d] x))
9289 // result: (ADDWconst [-c-d] x)
9292 if v.Args[0].Op != OpAMD64SUBWconst {
9293 goto enda59f08d12aa08717b0443b7bb1b71374
9295 d := v.Args[0].AuxInt
9296 x := v.Args[0].Args[0]
9297 v.Op = OpAMD64ADDWconst
9305 goto enda59f08d12aa08717b0443b7bb1b71374
9306 enda59f08d12aa08717b0443b7bb1b71374:
9308 case OpSignExt16to32:
9309 // match: (SignExt16to32 x)
9311 // result: (MOVWQSX x)
9314 v.Op = OpAMD64MOVWQSX
9321 goto end21e4271c2b48a5aa3561ccfa8fa67cd9
9322 end21e4271c2b48a5aa3561ccfa8fa67cd9:
9324 case OpSignExt16to64:
9325 // match: (SignExt16to64 x)
9327 // result: (MOVWQSX x)
9330 v.Op = OpAMD64MOVWQSX
9337 goto endc6d242ee3a3e195ef0f9e8dae47ada75
9338 endc6d242ee3a3e195ef0f9e8dae47ada75:
9340 case OpSignExt32to64:
9341 // match: (SignExt32to64 x)
9343 // result: (MOVLQSX x)
9346 v.Op = OpAMD64MOVLQSX
9353 goto endb9f1a8b2d01eee44964a71a01bca165c
9354 endb9f1a8b2d01eee44964a71a01bca165c:
9356 case OpSignExt8to16:
9357 // match: (SignExt8to16 x)
9359 // result: (MOVBQSX x)
9362 v.Op = OpAMD64MOVBQSX
9369 goto end372869f08e147404b80634e5f83fd506
9370 end372869f08e147404b80634e5f83fd506:
9372 case OpSignExt8to32:
9373 // match: (SignExt8to32 x)
9375 // result: (MOVBQSX x)
9378 v.Op = OpAMD64MOVBQSX
9385 goto end913e3575e5b4cf7f60585c108db40464
9386 end913e3575e5b4cf7f60585c108db40464:
9388 case OpSignExt8to64:
9389 // match: (SignExt8to64 x)
9391 // result: (MOVBQSX x)
9394 v.Op = OpAMD64MOVBQSX
9401 goto endcef6d6001d3f25cf5dacee11a46e5c8c
9402 endcef6d6001d3f25cf5dacee11a46e5c8c:
9407 // result: (SQRTSD x)
9410 v.Op = OpAMD64SQRTSD
9417 goto end72f79ca9ec139e15856aaa03338cf543
9418 end72f79ca9ec139e15856aaa03338cf543:
9421 // match: (StaticCall [argwid] {target} mem)
9423 // result: (CALLstatic [argwid] {target} mem)
9428 v.Op = OpAMD64CALLstatic
9437 goto end32c5cbec813d1c2ae94fc9b1090e4b2a
9438 end32c5cbec813d1c2ae94fc9b1090e4b2a:
9441 // match: (Store [8] ptr val mem)
9442 // cond: is64BitFloat(val.Type)
9443 // result: (MOVSDstore ptr val mem)
9446 goto endaeec4f61bc8e67dbf3fa2f79fe4c2b9e
9451 if !(is64BitFloat(val.Type)) {
9452 goto endaeec4f61bc8e67dbf3fa2f79fe4c2b9e
9454 v.Op = OpAMD64MOVSDstore
9463 goto endaeec4f61bc8e67dbf3fa2f79fe4c2b9e
9464 endaeec4f61bc8e67dbf3fa2f79fe4c2b9e:
9466 // match: (Store [4] ptr val mem)
9467 // cond: is32BitFloat(val.Type)
9468 // result: (MOVSSstore ptr val mem)
9471 goto endf638ca0a75871b5062da15324d0e0384
9476 if !(is32BitFloat(val.Type)) {
9477 goto endf638ca0a75871b5062da15324d0e0384
9479 v.Op = OpAMD64MOVSSstore
9488 goto endf638ca0a75871b5062da15324d0e0384
9489 endf638ca0a75871b5062da15324d0e0384:
9491 // match: (Store [8] ptr val mem)
9493 // result: (MOVQstore ptr val mem)
9496 goto endd1eb7c3ea0c806e7a53ff3be86186eb7
9501 v.Op = OpAMD64MOVQstore
9510 goto endd1eb7c3ea0c806e7a53ff3be86186eb7
9511 endd1eb7c3ea0c806e7a53ff3be86186eb7:
9513 // match: (Store [4] ptr val mem)
9515 // result: (MOVLstore ptr val mem)
9518 goto end44e3b22360da76ecd59be9a8c2dd1347
9523 v.Op = OpAMD64MOVLstore
9532 goto end44e3b22360da76ecd59be9a8c2dd1347
9533 end44e3b22360da76ecd59be9a8c2dd1347:
9535 // match: (Store [2] ptr val mem)
9537 // result: (MOVWstore ptr val mem)
9540 goto endd0342b7fd3d0713f3e26922660047c71
9545 v.Op = OpAMD64MOVWstore
9554 goto endd0342b7fd3d0713f3e26922660047c71
9555 endd0342b7fd3d0713f3e26922660047c71:
9557 // match: (Store [1] ptr val mem)
9559 // result: (MOVBstore ptr val mem)
9562 goto end8e76e20031197ca875889d2b4d0eb1d1
9567 v.Op = OpAMD64MOVBstore
9576 goto end8e76e20031197ca875889d2b4d0eb1d1
9577 end8e76e20031197ca875889d2b4d0eb1d1:
9580 // match: (Sub16 x y)
9582 // result: (SUBW x y)
9594 goto end54adc5de883c0460ca71c6ee464d4244
9595 end54adc5de883c0460ca71c6ee464d4244:
9598 // match: (Sub32 x y)
9600 // result: (SUBL x y)
9612 goto enddc3a2a488bda8c5856f93343e5ffe5f8
9613 enddc3a2a488bda8c5856f93343e5ffe5f8:
9616 // match: (Sub32F x y)
9618 // result: (SUBSS x y)
9630 goto end20193c1804b0e707702a884fb8abd60d
9631 end20193c1804b0e707702a884fb8abd60d:
9634 // match: (Sub64 x y)
9636 // result: (SUBQ x y)
9648 goto endd88d5646309fd9174584888ecc8aca2c
9649 endd88d5646309fd9174584888ecc8aca2c:
9652 // match: (Sub64F x y)
9654 // result: (SUBSD x y)
9666 goto end5d5af7b8a3326bf9151f00a0013b73d7
9667 end5d5af7b8a3326bf9151f00a0013b73d7:
9670 // match: (Sub8 x y)
9672 // result: (SUBB x y)
9684 goto end7d33bf9bdfa505f96b930563eca7955f
9685 end7d33bf9bdfa505f96b930563eca7955f:
9688 // match: (SubPtr x y)
9690 // result: (SUBQ x y)
9702 goto end748f63f755afe0b97a8f3cf7e4d9cbfe
9703 end748f63f755afe0b97a8f3cf7e4d9cbfe:
9706 // match: (Trunc16to8 x)
9719 goto end8e2f5e0a6e3a06423c077747de6c2bdd
9720 end8e2f5e0a6e3a06423c077747de6c2bdd:
9723 // match: (Trunc32to16 x)
9736 goto end5bed0e3a3c1c6374d86beb5a4397708c
9737 end5bed0e3a3c1c6374d86beb5a4397708c:
9740 // match: (Trunc32to8 x)
9753 goto endef0b8032ce91979ce6cd0004260c04ee
9754 endef0b8032ce91979ce6cd0004260c04ee:
9757 // match: (Trunc64to16 x)
9770 goto endd32fd6e0ce970c212835e6f71c3dcbfd
9771 endd32fd6e0ce970c212835e6f71c3dcbfd:
9774 // match: (Trunc64to32 x)
9787 goto end1212c4e84153210aff7fd630fb3e1883
9788 end1212c4e84153210aff7fd630fb3e1883:
9791 // match: (Trunc64to8 x)
9804 goto end734f017d4b2810ca2288f7037365824c
9805 end734f017d4b2810ca2288f7037365824c:
9808 // match: (XORB x (MOVBconst [c]))
9810 // result: (XORBconst [c] x)
9813 if v.Args[1].Op != OpAMD64MOVBconst {
9814 goto enda9ed9fdd115ffdffa8127c007c34d7b7
9816 c := v.Args[1].AuxInt
9817 v.Op = OpAMD64XORBconst
9825 goto enda9ed9fdd115ffdffa8127c007c34d7b7
9826 enda9ed9fdd115ffdffa8127c007c34d7b7:
9828 // match: (XORB (MOVBconst [c]) x)
9830 // result: (XORBconst [c] x)
9832 if v.Args[0].Op != OpAMD64MOVBconst {
9833 goto endb02a07d9dc7b802c59f013116e952f3f
9835 c := v.Args[0].AuxInt
9837 v.Op = OpAMD64XORBconst
9845 goto endb02a07d9dc7b802c59f013116e952f3f
9846 endb02a07d9dc7b802c59f013116e952f3f:
9848 // match: (XORB x x)
9850 // result: (MOVBconst [0])
9854 goto end2afddc39503d04d572a3a07878f6c9c9
9856 v.Op = OpAMD64MOVBconst
9863 goto end2afddc39503d04d572a3a07878f6c9c9
9864 end2afddc39503d04d572a3a07878f6c9c9:
9866 case OpAMD64XORBconst:
9867 // match: (XORBconst [c] (MOVBconst [d]))
9869 // result: (MOVBconst [c^d])
9872 if v.Args[0].Op != OpAMD64MOVBconst {
9873 goto end6d8d1b612af9d253605c8bc69b822903
9875 d := v.Args[0].AuxInt
9876 v.Op = OpAMD64MOVBconst
9883 goto end6d8d1b612af9d253605c8bc69b822903
9884 end6d8d1b612af9d253605c8bc69b822903:
9887 // match: (XORL x (MOVLconst [c]))
9889 // result: (XORLconst [c] x)
9892 if v.Args[1].Op != OpAMD64MOVLconst {
9893 goto enda9459d509d3416da67d13a22dd074a9c
9895 c := v.Args[1].AuxInt
9896 v.Op = OpAMD64XORLconst
9904 goto enda9459d509d3416da67d13a22dd074a9c
9905 enda9459d509d3416da67d13a22dd074a9c:
9907 // match: (XORL (MOVLconst [c]) x)
9909 // result: (XORLconst [c] x)
9911 if v.Args[0].Op != OpAMD64MOVLconst {
9912 goto end9c1a0af00eeadd8aa325e55f1f3fb89c
9914 c := v.Args[0].AuxInt
9916 v.Op = OpAMD64XORLconst
9924 goto end9c1a0af00eeadd8aa325e55f1f3fb89c
9925 end9c1a0af00eeadd8aa325e55f1f3fb89c:
9927 // match: (XORL x x)
9929 // result: (MOVLconst [0])
9933 goto end7bcf9cfeb69a0d7647389124eb53ce2a
9935 v.Op = OpAMD64MOVLconst
9942 goto end7bcf9cfeb69a0d7647389124eb53ce2a
9943 end7bcf9cfeb69a0d7647389124eb53ce2a:
9945 case OpAMD64XORLconst:
9946 // match: (XORLconst [c] (MOVLconst [d]))
9948 // result: (MOVLconst [c^d])
9951 if v.Args[0].Op != OpAMD64MOVLconst {
9952 goto end71238075b10b68a226903cc453c4715c
9954 d := v.Args[0].AuxInt
9955 v.Op = OpAMD64MOVLconst
9962 goto end71238075b10b68a226903cc453c4715c
9963 end71238075b10b68a226903cc453c4715c:
9966 // match: (XORQ x (MOVQconst [c]))
9968 // result: (XORQconst [c] x)
9971 if v.Args[1].Op != OpAMD64MOVQconst {
9972 goto end452341f950062e0483f16438fb9ec500
9974 c := v.Args[1].AuxInt
9976 goto end452341f950062e0483f16438fb9ec500
9978 v.Op = OpAMD64XORQconst
9986 goto end452341f950062e0483f16438fb9ec500
9987 end452341f950062e0483f16438fb9ec500:
9989 // match: (XORQ (MOVQconst [c]) x)
9991 // result: (XORQconst [c] x)
9993 if v.Args[0].Op != OpAMD64MOVQconst {
9994 goto endd221a7e3daaaaa29ee385ad36e061b57
9996 c := v.Args[0].AuxInt
9999 goto endd221a7e3daaaaa29ee385ad36e061b57
10001 v.Op = OpAMD64XORQconst
10009 goto endd221a7e3daaaaa29ee385ad36e061b57
10010 endd221a7e3daaaaa29ee385ad36e061b57:
10012 // match: (XORQ x x)
10014 // result: (MOVQconst [0])
10017 if v.Args[1] != x {
10018 goto end10575a5d711cf14e6d4dffbb0e8dfaeb
10020 v.Op = OpAMD64MOVQconst
10027 goto end10575a5d711cf14e6d4dffbb0e8dfaeb
10028 end10575a5d711cf14e6d4dffbb0e8dfaeb:
10030 case OpAMD64XORQconst:
10031 // match: (XORQconst [c] (MOVQconst [d]))
10033 // result: (MOVQconst [c^d])
10036 if v.Args[0].Op != OpAMD64MOVQconst {
10037 goto end3f404d4f07362319fbad2e1ba0827a9f
10039 d := v.Args[0].AuxInt
10040 v.Op = OpAMD64MOVQconst
10047 goto end3f404d4f07362319fbad2e1ba0827a9f
10048 end3f404d4f07362319fbad2e1ba0827a9f:
10051 // match: (XORW x (MOVWconst [c]))
10053 // result: (XORWconst [c] x)
10056 if v.Args[1].Op != OpAMD64MOVWconst {
10057 goto end2ca109efd66c221a5691a4da95ec6c67
10059 c := v.Args[1].AuxInt
10060 v.Op = OpAMD64XORWconst
10068 goto end2ca109efd66c221a5691a4da95ec6c67
10069 end2ca109efd66c221a5691a4da95ec6c67:
10071 // match: (XORW (MOVWconst [c]) x)
10073 // result: (XORWconst [c] x)
10075 if v.Args[0].Op != OpAMD64MOVWconst {
10076 goto end51ee62a06d4301e5a4aed7a6639b1d53
10078 c := v.Args[0].AuxInt
10080 v.Op = OpAMD64XORWconst
10088 goto end51ee62a06d4301e5a4aed7a6639b1d53
10089 end51ee62a06d4301e5a4aed7a6639b1d53:
10091 // match: (XORW x x)
10093 // result: (MOVWconst [0])
10096 if v.Args[1] != x {
10097 goto end07f332e857be0c2707797ed480a2faf4
10099 v.Op = OpAMD64MOVWconst
10106 goto end07f332e857be0c2707797ed480a2faf4
10107 end07f332e857be0c2707797ed480a2faf4:
10109 case OpAMD64XORWconst:
10110 // match: (XORWconst [c] (MOVWconst [d]))
10112 // result: (MOVWconst [c^d])
10115 if v.Args[0].Op != OpAMD64MOVWconst {
10116 goto ende24881ccdfa8486c4593fd9aa5df1ed6
10118 d := v.Args[0].AuxInt
10119 v.Op = OpAMD64MOVWconst
10126 goto ende24881ccdfa8486c4593fd9aa5df1ed6
10127 ende24881ccdfa8486c4593fd9aa5df1ed6:
10130 // match: (Xor16 x y)
10132 // result: (XORW x y)
10144 goto end20efdd5dfd5130abf818de5546a991a0
10145 end20efdd5dfd5130abf818de5546a991a0:
10148 // match: (Xor32 x y)
10150 // result: (XORL x y)
10162 goto end9da6bce98b437e2609488346116a75d8
10163 end9da6bce98b437e2609488346116a75d8:
10166 // match: (Xor64 x y)
10168 // result: (XORQ x y)
10180 goto endc88cd189c2a6f07ecff324ed94809f8f
10181 endc88cd189c2a6f07ecff324ed94809f8f:
10184 // match: (Xor8 x y)
10186 // result: (XORB x y)
10198 goto end50f4434ef96916d3e65ad3cc236d1723
10199 end50f4434ef96916d3e65ad3cc236d1723:
10202 // match: (Zero [0] _ mem)
10207 goto endc9a38a60f0322f93682daa824611272c
10218 goto endc9a38a60f0322f93682daa824611272c
10219 endc9a38a60f0322f93682daa824611272c:
10221 // match: (Zero [1] destptr mem)
10223 // result: (MOVBstore destptr (MOVBconst [0]) mem)
10226 goto endf7c8ca6a444f19e1142977e2ac42ab24
10228 destptr := v.Args[0]
10230 v.Op = OpAMD64MOVBstore
10235 v0 := b.NewValue0(v.Line, OpAMD64MOVBconst, TypeInvalid)
10237 v0.Type = config.fe.TypeUInt8()
10242 goto endf7c8ca6a444f19e1142977e2ac42ab24
10243 endf7c8ca6a444f19e1142977e2ac42ab24:
10245 // match: (Zero [2] destptr mem)
10247 // result: (MOVWstore destptr (MOVWconst [0]) mem)
10250 goto end7609a67450ab21eba86f456886fc8496
10252 destptr := v.Args[0]
10254 v.Op = OpAMD64MOVWstore
10259 v0 := b.NewValue0(v.Line, OpAMD64MOVWconst, TypeInvalid)
10261 v0.Type = config.fe.TypeUInt16()
10266 goto end7609a67450ab21eba86f456886fc8496
10267 end7609a67450ab21eba86f456886fc8496:
10269 // match: (Zero [4] destptr mem)
10271 // result: (MOVLstore destptr (MOVLconst [0]) mem)
10274 goto enda8e1cf1298794cc3cb79cab108e33007
10276 destptr := v.Args[0]
10278 v.Op = OpAMD64MOVLstore
10283 v0 := b.NewValue0(v.Line, OpAMD64MOVLconst, TypeInvalid)
10285 v0.Type = config.fe.TypeUInt32()
10290 goto enda8e1cf1298794cc3cb79cab108e33007
10291 enda8e1cf1298794cc3cb79cab108e33007:
10293 // match: (Zero [8] destptr mem)
10295 // result: (MOVQstore destptr (MOVQconst [0]) mem)
10298 goto end1791556f0b03ea065d38a3267fbe01c6
10300 destptr := v.Args[0]
10302 v.Op = OpAMD64MOVQstore
10307 v0 := b.NewValue0(v.Line, OpAMD64MOVQconst, TypeInvalid)
10309 v0.Type = config.fe.TypeUInt64()
10314 goto end1791556f0b03ea065d38a3267fbe01c6
10315 end1791556f0b03ea065d38a3267fbe01c6:
10317 // match: (Zero [3] destptr mem)
10319 // result: (MOVBstore (ADDQconst [2] destptr) (MOVBconst [0]) (MOVWstore destptr (MOVWconst [0]) mem))
10322 goto end7f8f5c8214f8b81a73fdde78b03ce53c
10324 destptr := v.Args[0]
10326 v.Op = OpAMD64MOVBstore
10330 v0 := b.NewValue0(v.Line, OpAMD64ADDQconst, TypeInvalid)
10333 v0.Type = config.fe.TypeUInt64()
10335 v1 := b.NewValue0(v.Line, OpAMD64MOVBconst, TypeInvalid)
10337 v1.Type = config.fe.TypeUInt8()
10339 v2 := b.NewValue0(v.Line, OpAMD64MOVWstore, TypeInvalid)
10341 v3 := b.NewValue0(v.Line, OpAMD64MOVWconst, TypeInvalid)
10343 v3.Type = config.fe.TypeUInt16()
10350 goto end7f8f5c8214f8b81a73fdde78b03ce53c
10351 end7f8f5c8214f8b81a73fdde78b03ce53c:
10353 // match: (Zero [5] destptr mem)
10355 // result: (MOVBstore (ADDQconst [4] destptr) (MOVBconst [0]) (MOVLstore destptr (MOVLconst [0]) mem))
10358 goto end54466baa4eac09020bee720efbb82d0f
10360 destptr := v.Args[0]
10362 v.Op = OpAMD64MOVBstore
10366 v0 := b.NewValue0(v.Line, OpAMD64ADDQconst, TypeInvalid)
10369 v0.Type = config.fe.TypeUInt64()
10371 v1 := b.NewValue0(v.Line, OpAMD64MOVBconst, TypeInvalid)
10373 v1.Type = config.fe.TypeUInt8()
10375 v2 := b.NewValue0(v.Line, OpAMD64MOVLstore, TypeInvalid)
10377 v3 := b.NewValue0(v.Line, OpAMD64MOVLconst, TypeInvalid)
10379 v3.Type = config.fe.TypeUInt32()
10386 goto end54466baa4eac09020bee720efbb82d0f
10387 end54466baa4eac09020bee720efbb82d0f:
10389 // match: (Zero [6] destptr mem)
10391 // result: (MOVWstore (ADDQconst [4] destptr) (MOVWconst [0]) (MOVLstore destptr (MOVLconst [0]) mem))
10394 goto end3a37ae6095ddc37646d6ad6eeda986e2
10396 destptr := v.Args[0]
10398 v.Op = OpAMD64MOVWstore
10402 v0 := b.NewValue0(v.Line, OpAMD64ADDQconst, TypeInvalid)
10405 v0.Type = config.fe.TypeUInt64()
10407 v1 := b.NewValue0(v.Line, OpAMD64MOVWconst, TypeInvalid)
10409 v1.Type = config.fe.TypeUInt16()
10411 v2 := b.NewValue0(v.Line, OpAMD64MOVLstore, TypeInvalid)
10413 v3 := b.NewValue0(v.Line, OpAMD64MOVLconst, TypeInvalid)
10415 v3.Type = config.fe.TypeUInt32()
10422 goto end3a37ae6095ddc37646d6ad6eeda986e2
10423 end3a37ae6095ddc37646d6ad6eeda986e2:
10425 // match: (Zero [7] destptr mem)
10427 // result: (MOVLstore (ADDQconst [3] destptr) (MOVLconst [0]) (MOVLstore destptr (MOVLconst [0]) mem))
10430 goto endd53a750fa01c5a5a238ba8fcabb416b2
10432 destptr := v.Args[0]
10434 v.Op = OpAMD64MOVLstore
10438 v0 := b.NewValue0(v.Line, OpAMD64ADDQconst, TypeInvalid)
10441 v0.Type = config.fe.TypeUInt64()
10443 v1 := b.NewValue0(v.Line, OpAMD64MOVLconst, TypeInvalid)
10445 v1.Type = config.fe.TypeUInt32()
10447 v2 := b.NewValue0(v.Line, OpAMD64MOVLstore, TypeInvalid)
10449 v3 := b.NewValue0(v.Line, OpAMD64MOVLconst, TypeInvalid)
10451 v3.Type = config.fe.TypeUInt32()
10458 goto endd53a750fa01c5a5a238ba8fcabb416b2
10459 endd53a750fa01c5a5a238ba8fcabb416b2:
10461 // match: (Zero [size] destptr mem)
10462 // cond: size%8 != 0 && size > 8
10463 // result: (Zero [size-size%8] (ADDQconst destptr [size%8]) (MOVQstore destptr (MOVQconst [0]) mem))
10466 destptr := v.Args[0]
10468 if !(size%8 != 0 && size > 8) {
10469 goto end5efefe1d9cca07e7ad6f4832f774b938
10475 v.AuxInt = size - size%8
10476 v0 := b.NewValue0(v.Line, OpAMD64ADDQconst, TypeInvalid)
10478 v0.AuxInt = size % 8
10479 v0.Type = config.fe.TypeUInt64()
10481 v1 := b.NewValue0(v.Line, OpAMD64MOVQstore, TypeInvalid)
10483 v2 := b.NewValue0(v.Line, OpAMD64MOVQconst, TypeInvalid)
10485 v2.Type = config.fe.TypeUInt64()
10492 goto end5efefe1d9cca07e7ad6f4832f774b938
10493 end5efefe1d9cca07e7ad6f4832f774b938:
10495 // match: (Zero [16] destptr mem)
10497 // result: (MOVQstore (ADDQconst [8] destptr) (MOVQconst [0]) (MOVQstore destptr (MOVQconst [0]) mem))
10499 if v.AuxInt != 16 {
10500 goto endad489c16378959a764292e8b1cb72ba2
10502 destptr := v.Args[0]
10504 v.Op = OpAMD64MOVQstore
10508 v0 := b.NewValue0(v.Line, OpAMD64ADDQconst, TypeInvalid)
10511 v0.Type = config.fe.TypeUInt64()
10513 v1 := b.NewValue0(v.Line, OpAMD64MOVQconst, TypeInvalid)
10515 v1.Type = config.fe.TypeUInt64()
10517 v2 := b.NewValue0(v.Line, OpAMD64MOVQstore, TypeInvalid)
10519 v3 := b.NewValue0(v.Line, OpAMD64MOVQconst, TypeInvalid)
10521 v3.Type = config.fe.TypeUInt64()
10528 goto endad489c16378959a764292e8b1cb72ba2
10529 endad489c16378959a764292e8b1cb72ba2:
10531 // match: (Zero [24] destptr mem)
10533 // result: (MOVQstore (ADDQconst [16] destptr) (MOVQconst [0]) (MOVQstore (ADDQconst [8] destptr) (MOVQconst [0]) (MOVQstore destptr (MOVQconst [0]) mem)))
10535 if v.AuxInt != 24 {
10536 goto enddc443320a1be0b3c2e213bd6778197dd
10538 destptr := v.Args[0]
10540 v.Op = OpAMD64MOVQstore
10544 v0 := b.NewValue0(v.Line, OpAMD64ADDQconst, TypeInvalid)
10547 v0.Type = config.fe.TypeUInt64()
10549 v1 := b.NewValue0(v.Line, OpAMD64MOVQconst, TypeInvalid)
10551 v1.Type = config.fe.TypeUInt64()
10553 v2 := b.NewValue0(v.Line, OpAMD64MOVQstore, TypeInvalid)
10554 v3 := b.NewValue0(v.Line, OpAMD64ADDQconst, TypeInvalid)
10557 v3.Type = config.fe.TypeUInt64()
10559 v4 := b.NewValue0(v.Line, OpAMD64MOVQconst, TypeInvalid)
10561 v4.Type = config.fe.TypeUInt64()
10563 v5 := b.NewValue0(v.Line, OpAMD64MOVQstore, TypeInvalid)
10565 v6 := b.NewValue0(v.Line, OpAMD64MOVQconst, TypeInvalid)
10567 v6.Type = config.fe.TypeUInt64()
10576 goto enddc443320a1be0b3c2e213bd6778197dd
10577 enddc443320a1be0b3c2e213bd6778197dd:
10579 // match: (Zero [32] destptr mem)
10581 // result: (MOVQstore (ADDQconst [24] destptr) (MOVQconst [0]) (MOVQstore (ADDQconst [16] destptr) (MOVQconst [0]) (MOVQstore (ADDQconst [8] destptr) (MOVQconst [0]) (MOVQstore destptr (MOVQconst [0]) mem))))
10583 if v.AuxInt != 32 {
10584 goto end282b5e36693f06e2cd1ac563e0d419b5
10586 destptr := v.Args[0]
10588 v.Op = OpAMD64MOVQstore
10592 v0 := b.NewValue0(v.Line, OpAMD64ADDQconst, TypeInvalid)
10595 v0.Type = config.fe.TypeUInt64()
10597 v1 := b.NewValue0(v.Line, OpAMD64MOVQconst, TypeInvalid)
10599 v1.Type = config.fe.TypeUInt64()
10601 v2 := b.NewValue0(v.Line, OpAMD64MOVQstore, TypeInvalid)
10602 v3 := b.NewValue0(v.Line, OpAMD64ADDQconst, TypeInvalid)
10605 v3.Type = config.fe.TypeUInt64()
10607 v4 := b.NewValue0(v.Line, OpAMD64MOVQconst, TypeInvalid)
10609 v4.Type = config.fe.TypeUInt64()
10611 v5 := b.NewValue0(v.Line, OpAMD64MOVQstore, TypeInvalid)
10612 v6 := b.NewValue0(v.Line, OpAMD64ADDQconst, TypeInvalid)
10615 v6.Type = config.fe.TypeUInt64()
10617 v7 := b.NewValue0(v.Line, OpAMD64MOVQconst, TypeInvalid)
10619 v7.Type = config.fe.TypeUInt64()
10621 v8 := b.NewValue0(v.Line, OpAMD64MOVQstore, TypeInvalid)
10623 v9 := b.NewValue0(v.Line, OpAMD64MOVQconst, TypeInvalid)
10625 v9.Type = config.fe.TypeUInt64()
10636 goto end282b5e36693f06e2cd1ac563e0d419b5
10637 end282b5e36693f06e2cd1ac563e0d419b5:
10639 // match: (Zero [size] destptr mem)
10640 // cond: size <= 1024 && size%8 == 0 && size%16 != 0
10641 // result: (Zero [size-8] (ADDQconst [8] destptr) (MOVQstore destptr (MOVQconst [0]) mem))
10644 destptr := v.Args[0]
10646 if !(size <= 1024 && size%8 == 0 && size%16 != 0) {
10647 goto end240266449c3e493db1c3b38a78682ff0
10653 v.AuxInt = size - 8
10654 v0 := b.NewValue0(v.Line, OpAMD64ADDQconst, TypeInvalid)
10657 v0.Type = config.fe.TypeUInt64()
10659 v1 := b.NewValue0(v.Line, OpAMD64MOVQstore, TypeInvalid)
10661 v2 := b.NewValue0(v.Line, OpAMD64MOVQconst, TypeInvalid)
10663 v2.Type = config.fe.TypeUInt64()
10670 goto end240266449c3e493db1c3b38a78682ff0
10671 end240266449c3e493db1c3b38a78682ff0:
10673 // match: (Zero [size] destptr mem)
10674 // cond: size <= 1024 && size%16 == 0
10675 // result: (DUFFZERO [duffStart(size)] (ADDQconst [duffAdj(size)] destptr) (MOVOconst [0]) mem)
10678 destptr := v.Args[0]
10680 if !(size <= 1024 && size%16 == 0) {
10681 goto endf508bb887eee9119069b22c23dbca138
10683 v.Op = OpAMD64DUFFZERO
10687 v.AuxInt = duffStart(size)
10688 v0 := b.NewValue0(v.Line, OpAMD64ADDQconst, TypeInvalid)
10689 v0.AuxInt = duffAdj(size)
10691 v0.Type = config.fe.TypeUInt64()
10693 v1 := b.NewValue0(v.Line, OpAMD64MOVOconst, TypeInvalid)
10695 v1.Type = config.fe.TypeFloat64()
10700 goto endf508bb887eee9119069b22c23dbca138
10701 endf508bb887eee9119069b22c23dbca138:
10703 // match: (Zero [size] destptr mem)
10704 // cond: size > 1024 && size%8 == 0
10705 // result: (REPSTOSQ destptr (MOVQconst [size/8]) (MOVQconst [0]) mem)
10708 destptr := v.Args[0]
10710 if !(size > 1024 && size%8 == 0) {
10711 goto endb9d55d4ba0e70ed918e3ac757727441b
10713 v.Op = OpAMD64REPSTOSQ
10718 v0 := b.NewValue0(v.Line, OpAMD64MOVQconst, TypeInvalid)
10719 v0.AuxInt = size / 8
10720 v0.Type = config.fe.TypeUInt64()
10722 v1 := b.NewValue0(v.Line, OpAMD64MOVQconst, TypeInvalid)
10724 v1.Type = config.fe.TypeUInt64()
10729 goto endb9d55d4ba0e70ed918e3ac757727441b
10730 endb9d55d4ba0e70ed918e3ac757727441b:
10732 case OpZeroExt16to32:
10733 // match: (ZeroExt16to32 x)
10735 // result: (MOVWQZX x)
10738 v.Op = OpAMD64MOVWQZX
10745 goto endbfff79412a2cc96095069c66812844b4
10746 endbfff79412a2cc96095069c66812844b4:
10748 case OpZeroExt16to64:
10749 // match: (ZeroExt16to64 x)
10751 // result: (MOVWQZX x)
10754 v.Op = OpAMD64MOVWQZX
10761 goto end7a40262c5c856101058d2bd518ed0910
10762 end7a40262c5c856101058d2bd518ed0910:
10764 case OpZeroExt32to64:
10765 // match: (ZeroExt32to64 x)
10767 // result: (MOVLQZX x)
10770 v.Op = OpAMD64MOVLQZX
10777 goto enddf83bdc8cc6c5673a9ef7aca7affe45a
10778 enddf83bdc8cc6c5673a9ef7aca7affe45a:
10780 case OpZeroExt8to16:
10781 // match: (ZeroExt8to16 x)
10783 // result: (MOVBQZX x)
10786 v.Op = OpAMD64MOVBQZX
10793 goto endd03d53d2a585727e4107ae1a3cc55479
10794 endd03d53d2a585727e4107ae1a3cc55479:
10796 case OpZeroExt8to32:
10797 // match: (ZeroExt8to32 x)
10799 // result: (MOVBQZX x)
10802 v.Op = OpAMD64MOVBQZX
10809 goto endcbd33e965b3dab14fced5ae93d8949de
10810 endcbd33e965b3dab14fced5ae93d8949de:
10812 case OpZeroExt8to64:
10813 // match: (ZeroExt8to64 x)
10815 // result: (MOVBQZX x)
10818 v.Op = OpAMD64MOVBQZX
10825 goto end63ae7cc15db9d15189b2f1342604b2cb
10826 end63ae7cc15db9d15189b2f1342604b2cb:
10830 func rewriteBlockAMD64(b *Block) bool {
10833 // match: (EQ (InvertFlags cmp) yes no)
10835 // result: (EQ cmp yes no)
10838 if v.Op != OpAMD64InvertFlags {
10839 goto end6b8e9afc73b1c4d528f31a60d2575fae
10844 b.Kind = BlockAMD64EQ
10850 goto end6b8e9afc73b1c4d528f31a60d2575fae
10851 end6b8e9afc73b1c4d528f31a60d2575fae:
10854 // match: (GE (InvertFlags cmp) yes no)
10856 // result: (LE cmp yes no)
10859 if v.Op != OpAMD64InvertFlags {
10860 goto end0610f000a6988ee8310307ec2ea138f8
10865 b.Kind = BlockAMD64LE
10871 goto end0610f000a6988ee8310307ec2ea138f8
10872 end0610f000a6988ee8310307ec2ea138f8:
10875 // match: (GT (InvertFlags cmp) yes no)
10877 // result: (LT cmp yes no)
10880 if v.Op != OpAMD64InvertFlags {
10881 goto endf60c0660b6a8aa9565c97fc87f04eb34
10886 b.Kind = BlockAMD64LT
10892 goto endf60c0660b6a8aa9565c97fc87f04eb34
10893 endf60c0660b6a8aa9565c97fc87f04eb34:
10896 // match: (If (SETL cmp) yes no)
10898 // result: (LT cmp yes no)
10901 if v.Op != OpAMD64SETL {
10902 goto end94277282f4b83f0c035b23711a075801
10907 b.Kind = BlockAMD64LT
10913 goto end94277282f4b83f0c035b23711a075801
10914 end94277282f4b83f0c035b23711a075801:
10916 // match: (If (SETLE cmp) yes no)
10918 // result: (LE cmp yes no)
10921 if v.Op != OpAMD64SETLE {
10922 goto enda84798dd797927b54a9a2987421b2ba2
10927 b.Kind = BlockAMD64LE
10933 goto enda84798dd797927b54a9a2987421b2ba2
10934 enda84798dd797927b54a9a2987421b2ba2:
10936 // match: (If (SETG cmp) yes no)
10938 // result: (GT cmp yes no)
10941 if v.Op != OpAMD64SETG {
10942 goto end3434ef985979cbf394455ab5b559567c
10947 b.Kind = BlockAMD64GT
10953 goto end3434ef985979cbf394455ab5b559567c
10954 end3434ef985979cbf394455ab5b559567c:
10956 // match: (If (SETGE cmp) yes no)
10958 // result: (GE cmp yes no)
10961 if v.Op != OpAMD64SETGE {
10962 goto endee147d81d8620a5e23cb92bd9f13cf8d
10967 b.Kind = BlockAMD64GE
10973 goto endee147d81d8620a5e23cb92bd9f13cf8d
10974 endee147d81d8620a5e23cb92bd9f13cf8d:
10976 // match: (If (SETEQ cmp) yes no)
10978 // result: (EQ cmp yes no)
10981 if v.Op != OpAMD64SETEQ {
10982 goto ende7d85ccc850fc3963c50a91df096de17
10987 b.Kind = BlockAMD64EQ
10993 goto ende7d85ccc850fc3963c50a91df096de17
10994 ende7d85ccc850fc3963c50a91df096de17:
10996 // match: (If (SETNE cmp) yes no)
10998 // result: (NE cmp yes no)
11001 if v.Op != OpAMD64SETNE {
11002 goto endba4b54260ecda1b5731b129c0eb493d0
11007 b.Kind = BlockAMD64NE
11013 goto endba4b54260ecda1b5731b129c0eb493d0
11014 endba4b54260ecda1b5731b129c0eb493d0:
11016 // match: (If (SETB cmp) yes no)
11018 // result: (ULT cmp yes no)
11021 if v.Op != OpAMD64SETB {
11022 goto endf84eedfcd3f18f5c9c3f3d1045a24330
11027 b.Kind = BlockAMD64ULT
11033 goto endf84eedfcd3f18f5c9c3f3d1045a24330
11034 endf84eedfcd3f18f5c9c3f3d1045a24330:
11036 // match: (If (SETBE cmp) yes no)
11038 // result: (ULE cmp yes no)
11041 if v.Op != OpAMD64SETBE {
11042 goto endfe0178f6f4406945ca8966817d04be60
11047 b.Kind = BlockAMD64ULE
11053 goto endfe0178f6f4406945ca8966817d04be60
11054 endfe0178f6f4406945ca8966817d04be60:
11056 // match: (If (SETA cmp) yes no)
11058 // result: (UGT cmp yes no)
11061 if v.Op != OpAMD64SETA {
11062 goto end2b5a2d7756bdba01a732bf54d9acdb73
11067 b.Kind = BlockAMD64UGT
11073 goto end2b5a2d7756bdba01a732bf54d9acdb73
11074 end2b5a2d7756bdba01a732bf54d9acdb73:
11076 // match: (If (SETAE cmp) yes no)
11078 // result: (UGE cmp yes no)
11081 if v.Op != OpAMD64SETAE {
11082 goto end9bea9963c3c5dfb97249a5feb8287f94
11087 b.Kind = BlockAMD64UGE
11093 goto end9bea9963c3c5dfb97249a5feb8287f94
11094 end9bea9963c3c5dfb97249a5feb8287f94:
11096 // match: (If (SETGF cmp) yes no)
11098 // result: (UGT cmp yes no)
11101 if v.Op != OpAMD64SETGF {
11102 goto enda72d68674cfa26b5982a43756bca6767
11107 b.Kind = BlockAMD64UGT
11113 goto enda72d68674cfa26b5982a43756bca6767
11114 enda72d68674cfa26b5982a43756bca6767:
11116 // match: (If (SETGEF cmp) yes no)
11118 // result: (UGE cmp yes no)
11121 if v.Op != OpAMD64SETGEF {
11122 goto endccc171c1d66dd60ac0275d1f78259315
11127 b.Kind = BlockAMD64UGE
11133 goto endccc171c1d66dd60ac0275d1f78259315
11134 endccc171c1d66dd60ac0275d1f78259315:
11136 // match: (If (SETEQF cmp) yes no)
11138 // result: (EQF cmp yes no)
11141 if v.Op != OpAMD64SETEQF {
11142 goto end58cb74d05266a79003ebdd733afb66fa
11147 b.Kind = BlockAMD64EQF
11153 goto end58cb74d05266a79003ebdd733afb66fa
11154 end58cb74d05266a79003ebdd733afb66fa:
11156 // match: (If (SETNEF cmp) yes no)
11158 // result: (EQF cmp yes no)
11161 if v.Op != OpAMD64SETNEF {
11162 goto endfe25939ca97349543bc2d2ce4f97ba41
11167 b.Kind = BlockAMD64EQF
11173 goto endfe25939ca97349543bc2d2ce4f97ba41
11174 endfe25939ca97349543bc2d2ce4f97ba41:
11176 // match: (If cond yes no)
11178 // result: (NE (TESTB cond cond) yes no)
11184 b.Kind = BlockAMD64NE
11185 v0 := b.NewValue0(v.Line, OpAMD64TESTB, TypeInvalid)
11188 v0.Type = TypeFlags
11194 goto end5bdbb8d5ea62ff2a76dccf3f9e89d94d
11195 end5bdbb8d5ea62ff2a76dccf3f9e89d94d:
11198 // match: (LE (InvertFlags cmp) yes no)
11200 // result: (GE cmp yes no)
11203 if v.Op != OpAMD64InvertFlags {
11204 goto end0d49d7d087fe7578e8015cf13dae37e3
11209 b.Kind = BlockAMD64GE
11215 goto end0d49d7d087fe7578e8015cf13dae37e3
11216 end0d49d7d087fe7578e8015cf13dae37e3:
11219 // match: (LT (InvertFlags cmp) yes no)
11221 // result: (GT cmp yes no)
11224 if v.Op != OpAMD64InvertFlags {
11225 goto end6a408cde0fee0ae7b7da0443c8d902bf
11230 b.Kind = BlockAMD64GT
11236 goto end6a408cde0fee0ae7b7da0443c8d902bf
11237 end6a408cde0fee0ae7b7da0443c8d902bf:
11240 // match: (NE (TESTB (SETL cmp)) yes no)
11242 // result: (LT cmp yes no)
11245 if v.Op != OpAMD64TESTB {
11246 goto end0b9ca165d6b395de676eebef94bc62f7
11248 if v.Args[0].Op != OpAMD64SETL {
11249 goto end0b9ca165d6b395de676eebef94bc62f7
11251 cmp := v.Args[0].Args[0]
11254 b.Kind = BlockAMD64LT
11260 goto end0b9ca165d6b395de676eebef94bc62f7
11261 end0b9ca165d6b395de676eebef94bc62f7:
11263 // match: (NE (TESTB (SETLE cmp)) yes no)
11265 // result: (LE cmp yes no)
11268 if v.Op != OpAMD64TESTB {
11269 goto endaaba0ee4d0ff8c66a1c3107d2a14c4bc
11271 if v.Args[0].Op != OpAMD64SETLE {
11272 goto endaaba0ee4d0ff8c66a1c3107d2a14c4bc
11274 cmp := v.Args[0].Args[0]
11277 b.Kind = BlockAMD64LE
11283 goto endaaba0ee4d0ff8c66a1c3107d2a14c4bc
11284 endaaba0ee4d0ff8c66a1c3107d2a14c4bc:
11286 // match: (NE (TESTB (SETG cmp)) yes no)
11288 // result: (GT cmp yes no)
11291 if v.Op != OpAMD64TESTB {
11292 goto end1b689463137526b36ba9ceed1e76e512
11294 if v.Args[0].Op != OpAMD64SETG {
11295 goto end1b689463137526b36ba9ceed1e76e512
11297 cmp := v.Args[0].Args[0]
11300 b.Kind = BlockAMD64GT
11306 goto end1b689463137526b36ba9ceed1e76e512
11307 end1b689463137526b36ba9ceed1e76e512:
11309 // match: (NE (TESTB (SETGE cmp)) yes no)
11311 // result: (GE cmp yes no)
11314 if v.Op != OpAMD64TESTB {
11315 goto end99eefee595c658b997f41577ed853c2e
11317 if v.Args[0].Op != OpAMD64SETGE {
11318 goto end99eefee595c658b997f41577ed853c2e
11320 cmp := v.Args[0].Args[0]
11323 b.Kind = BlockAMD64GE
11329 goto end99eefee595c658b997f41577ed853c2e
11330 end99eefee595c658b997f41577ed853c2e:
11332 // match: (NE (TESTB (SETEQ cmp)) yes no)
11334 // result: (EQ cmp yes no)
11337 if v.Op != OpAMD64TESTB {
11338 goto end371b67d3d63e9b92d848b09c3324e8b9
11340 if v.Args[0].Op != OpAMD64SETEQ {
11341 goto end371b67d3d63e9b92d848b09c3324e8b9
11343 cmp := v.Args[0].Args[0]
11346 b.Kind = BlockAMD64EQ
11352 goto end371b67d3d63e9b92d848b09c3324e8b9
11353 end371b67d3d63e9b92d848b09c3324e8b9:
11355 // match: (NE (TESTB (SETNE cmp)) yes no)
11357 // result: (NE cmp yes no)
11360 if v.Op != OpAMD64TESTB {
11361 goto endd245f2aac2191d32e57cd2e321daa453
11363 if v.Args[0].Op != OpAMD64SETNE {
11364 goto endd245f2aac2191d32e57cd2e321daa453
11366 cmp := v.Args[0].Args[0]
11369 b.Kind = BlockAMD64NE
11375 goto endd245f2aac2191d32e57cd2e321daa453
11376 endd245f2aac2191d32e57cd2e321daa453:
11378 // match: (NE (TESTB (SETB cmp)) yes no)
11380 // result: (ULT cmp yes no)
11383 if v.Op != OpAMD64TESTB {
11384 goto end90c4bec851e734d37457d611b1a5ff28
11386 if v.Args[0].Op != OpAMD64SETB {
11387 goto end90c4bec851e734d37457d611b1a5ff28
11389 cmp := v.Args[0].Args[0]
11392 b.Kind = BlockAMD64ULT
11398 goto end90c4bec851e734d37457d611b1a5ff28
11399 end90c4bec851e734d37457d611b1a5ff28:
11401 // match: (NE (TESTB (SETBE cmp)) yes no)
11403 // result: (ULE cmp yes no)
11406 if v.Op != OpAMD64TESTB {
11407 goto end3a68a28114e9b89ee0708823386bc1ee
11409 if v.Args[0].Op != OpAMD64SETBE {
11410 goto end3a68a28114e9b89ee0708823386bc1ee
11412 cmp := v.Args[0].Args[0]
11415 b.Kind = BlockAMD64ULE
11421 goto end3a68a28114e9b89ee0708823386bc1ee
11422 end3a68a28114e9b89ee0708823386bc1ee:
11424 // match: (NE (TESTB (SETA cmp)) yes no)
11426 // result: (UGT cmp yes no)
11429 if v.Op != OpAMD64TESTB {
11430 goto end16496f57185756e960d536b057c776c0
11432 if v.Args[0].Op != OpAMD64SETA {
11433 goto end16496f57185756e960d536b057c776c0
11435 cmp := v.Args[0].Args[0]
11438 b.Kind = BlockAMD64UGT
11444 goto end16496f57185756e960d536b057c776c0
11445 end16496f57185756e960d536b057c776c0:
11447 // match: (NE (TESTB (SETAE cmp)) yes no)
11449 // result: (UGE cmp yes no)
11452 if v.Op != OpAMD64TESTB {
11453 goto endbd122fd599aeb9e60881a0fa735e2fde
11455 if v.Args[0].Op != OpAMD64SETAE {
11456 goto endbd122fd599aeb9e60881a0fa735e2fde
11458 cmp := v.Args[0].Args[0]
11461 b.Kind = BlockAMD64UGE
11467 goto endbd122fd599aeb9e60881a0fa735e2fde
11468 endbd122fd599aeb9e60881a0fa735e2fde:
11470 // match: (NE (TESTB (SETGF cmp)) yes no)
11472 // result: (UGT cmp yes no)
11475 if v.Op != OpAMD64TESTB {
11476 goto endb2499521f7f351e24757f8c918c3598e
11478 if v.Args[0].Op != OpAMD64SETGF {
11479 goto endb2499521f7f351e24757f8c918c3598e
11481 cmp := v.Args[0].Args[0]
11484 b.Kind = BlockAMD64UGT
11490 goto endb2499521f7f351e24757f8c918c3598e
11491 endb2499521f7f351e24757f8c918c3598e:
11493 // match: (NE (TESTB (SETGEF cmp)) yes no)
11495 // result: (UGE cmp yes no)
11498 if v.Op != OpAMD64TESTB {
11499 goto end20461774babea665c4ca7c4f790a7209
11501 if v.Args[0].Op != OpAMD64SETGEF {
11502 goto end20461774babea665c4ca7c4f790a7209
11504 cmp := v.Args[0].Args[0]
11507 b.Kind = BlockAMD64UGE
11513 goto end20461774babea665c4ca7c4f790a7209
11514 end20461774babea665c4ca7c4f790a7209:
11516 // match: (NE (TESTB (SETEQF cmp)) yes no)
11518 // result: (EQF cmp yes no)
11521 if v.Op != OpAMD64TESTB {
11522 goto end236616ef13d489b78736cda7bcc1d168
11524 if v.Args[0].Op != OpAMD64SETEQF {
11525 goto end236616ef13d489b78736cda7bcc1d168
11527 cmp := v.Args[0].Args[0]
11530 b.Kind = BlockAMD64EQF
11536 goto end236616ef13d489b78736cda7bcc1d168
11537 end236616ef13d489b78736cda7bcc1d168:
11539 // match: (NE (TESTB (SETNEF cmp)) yes no)
11541 // result: (NEF cmp yes no)
11544 if v.Op != OpAMD64TESTB {
11545 goto endc992f3c266b16cb5f6aa98faa8f55600
11547 if v.Args[0].Op != OpAMD64SETNEF {
11548 goto endc992f3c266b16cb5f6aa98faa8f55600
11550 cmp := v.Args[0].Args[0]
11553 b.Kind = BlockAMD64NEF
11559 goto endc992f3c266b16cb5f6aa98faa8f55600
11560 endc992f3c266b16cb5f6aa98faa8f55600:
11562 // match: (NE (InvertFlags cmp) yes no)
11564 // result: (NE cmp yes no)
11567 if v.Op != OpAMD64InvertFlags {
11568 goto end713001aba794e50b582fbff930e110af
11573 b.Kind = BlockAMD64NE
11579 goto end713001aba794e50b582fbff930e110af
11580 end713001aba794e50b582fbff930e110af:
11582 case BlockAMD64UGE:
11583 // match: (UGE (InvertFlags cmp) yes no)
11585 // result: (ULE cmp yes no)
11588 if v.Op != OpAMD64InvertFlags {
11589 goto ende3e4ddc183ca1a46598b11c2d0d13966
11594 b.Kind = BlockAMD64ULE
11600 goto ende3e4ddc183ca1a46598b11c2d0d13966
11601 ende3e4ddc183ca1a46598b11c2d0d13966:
11603 case BlockAMD64UGT:
11604 // match: (UGT (InvertFlags cmp) yes no)
11606 // result: (ULT cmp yes no)
11609 if v.Op != OpAMD64InvertFlags {
11610 goto end49818853af2e5251175d06c62768cae7
11615 b.Kind = BlockAMD64ULT
11621 goto end49818853af2e5251175d06c62768cae7
11622 end49818853af2e5251175d06c62768cae7:
11624 case BlockAMD64ULE:
11625 // match: (ULE (InvertFlags cmp) yes no)
11627 // result: (UGE cmp yes no)
11630 if v.Op != OpAMD64InvertFlags {
11631 goto endd6698aac0d67261293b558c95ea17b4f
11636 b.Kind = BlockAMD64UGE
11642 goto endd6698aac0d67261293b558c95ea17b4f
11643 endd6698aac0d67261293b558c95ea17b4f:
11645 case BlockAMD64ULT:
11646 // match: (ULT (InvertFlags cmp) yes no)
11648 // result: (UGT cmp yes no)
11651 if v.Op != OpAMD64InvertFlags {
11652 goto end35105dbc9646f02577167e45ae2f2fd2
11657 b.Kind = BlockAMD64UGT
11663 goto end35105dbc9646f02577167e45ae2f2fd2
11664 end35105dbc9646f02577167e45ae2f2fd2: