Lines Matching refs:FMA4

3 …own-unknown -mattr=+avx,+fma4,+fma -fp-contract=fast | FileCheck %s --check-prefixes=FMA4,FMA4-INFS
4 …-unknown-unknown -mattr=+avx,+fma4 -fp-contract=fast | FileCheck %s --check-prefixes=FMA4,FMA4-INFS
7 …ma4,+fma -fp-contract=fast -enable-no-infs-fp-math | FileCheck %s --check-prefixes=FMA4,FMA4-NOINFS
8 …vx,+fma4 -fp-contract=fast -enable-no-infs-fp-math | FileCheck %s --check-prefixes=FMA4,FMA4-NOINFS
21 ; FMA4-LABEL: test_f32_fmadd:
22 ; FMA4: # %bb.0:
23 ; FMA4-NEXT: vfmaddss {{.*#+}} xmm0 = (xmm0 * xmm1) + xmm2
24 ; FMA4-NEXT: retq
41 ; FMA4-LABEL: test_4f32_fmadd:
42 ; FMA4: # %bb.0:
43 ; FMA4-NEXT: vfmaddps {{.*#+}} xmm0 = (xmm0 * xmm1) + xmm2
44 ; FMA4-NEXT: retq
61 ; FMA4-LABEL: test_8f32_fmadd:
62 ; FMA4: # %bb.0:
63 ; FMA4-NEXT: vfmaddps {{.*#+}} ymm0 = (ymm0 * ymm1) + ymm2
64 ; FMA4-NEXT: retq
81 ; FMA4-LABEL: test_f64_fmadd:
82 ; FMA4: # %bb.0:
83 ; FMA4-NEXT: vfmaddsd {{.*#+}} xmm0 = (xmm0 * xmm1) + xmm2
84 ; FMA4-NEXT: retq
101 ; FMA4-LABEL: test_2f64_fmadd:
102 ; FMA4: # %bb.0:
103 ; FMA4-NEXT: vfmaddpd {{.*#+}} xmm0 = (xmm0 * xmm1) + xmm2
104 ; FMA4-NEXT: retq
121 ; FMA4-LABEL: test_4f64_fmadd:
122 ; FMA4: # %bb.0:
123 ; FMA4-NEXT: vfmaddpd {{.*#+}} ymm0 = (ymm0 * ymm1) + ymm2
124 ; FMA4-NEXT: retq
145 ; FMA4-LABEL: test_f32_fmsub:
146 ; FMA4: # %bb.0:
147 ; FMA4-NEXT: vfmsubss {{.*#+}} xmm0 = (xmm0 * xmm1) - xmm2
148 ; FMA4-NEXT: retq
165 ; FMA4-LABEL: test_4f32_fmsub:
166 ; FMA4: # %bb.0:
167 ; FMA4-NEXT: vfmsubps {{.*#+}} xmm0 = (xmm0 * xmm1) - xmm2
168 ; FMA4-NEXT: retq
185 ; FMA4-LABEL: test_8f32_fmsub:
186 ; FMA4: # %bb.0:
187 ; FMA4-NEXT: vfmsubps {{.*#+}} ymm0 = (ymm0 * ymm1) - ymm2
188 ; FMA4-NEXT: retq
205 ; FMA4-LABEL: test_f64_fmsub:
206 ; FMA4: # %bb.0:
207 ; FMA4-NEXT: vfmsubsd {{.*#+}} xmm0 = (xmm0 * xmm1) - xmm2
208 ; FMA4-NEXT: retq
225 ; FMA4-LABEL: test_2f64_fmsub:
226 ; FMA4: # %bb.0:
227 ; FMA4-NEXT: vfmsubpd {{.*#+}} xmm0 = (xmm0 * xmm1) - xmm2
228 ; FMA4-NEXT: retq
245 ; FMA4-LABEL: test_4f64_fmsub:
246 ; FMA4: # %bb.0:
247 ; FMA4-NEXT: vfmsubpd {{.*#+}} ymm0 = (ymm0 * ymm1) - ymm2
248 ; FMA4-NEXT: retq
269 ; FMA4-LABEL: test_f32_fnmadd:
270 ; FMA4: # %bb.0:
271 ; FMA4-NEXT: vfnmaddss {{.*#+}} xmm0 = -(xmm0 * xmm1) + xmm2
272 ; FMA4-NEXT: retq
289 ; FMA4-LABEL: test_4f32_fnmadd:
290 ; FMA4: # %bb.0:
291 ; FMA4-NEXT: vfnmaddps {{.*#+}} xmm0 = -(xmm0 * xmm1) + xmm2
292 ; FMA4-NEXT: retq
309 ; FMA4-LABEL: test_8f32_fnmadd:
310 ; FMA4: # %bb.0:
311 ; FMA4-NEXT: vfnmaddps {{.*#+}} ymm0 = -(ymm0 * ymm1) + ymm2
312 ; FMA4-NEXT: retq
329 ; FMA4-LABEL: test_f64_fnmadd:
330 ; FMA4: # %bb.0:
331 ; FMA4-NEXT: vfnmaddsd {{.*#+}} xmm0 = -(xmm0 * xmm1) + xmm2
332 ; FMA4-NEXT: retq
349 ; FMA4-LABEL: test_2f64_fnmadd:
350 ; FMA4: # %bb.0:
351 ; FMA4-NEXT: vfnmaddpd {{.*#+}} xmm0 = -(xmm0 * xmm1) + xmm2
352 ; FMA4-NEXT: retq
369 ; FMA4-LABEL: test_4f64_fnmadd:
370 ; FMA4: # %bb.0:
371 ; FMA4-NEXT: vfnmaddpd {{.*#+}} ymm0 = -(ymm0 * ymm1) + ymm2
372 ; FMA4-NEXT: retq
393 ; FMA4-LABEL: test_f32_fnmsub:
394 ; FMA4: # %bb.0:
395 ; FMA4-NEXT: vfnmsubss {{.*#+}} xmm0 = -(xmm0 * xmm1) - xmm2
396 ; FMA4-NEXT: retq
414 ; FMA4-LABEL: test_4f32_fnmsub:
415 ; FMA4: # %bb.0:
416 ; FMA4-NEXT: vfnmsubps {{.*#+}} xmm0 = -(xmm0 * xmm1) - xmm2
417 ; FMA4-NEXT: retq
435 ; FMA4-LABEL: test_8f32_fnmsub:
436 ; FMA4: # %bb.0:
437 ; FMA4-NEXT: vfnmsubps {{.*#+}} ymm0 = -(ymm0 * ymm1) - ymm2
438 ; FMA4-NEXT: retq
456 ; FMA4-LABEL: test_f64_fnmsub:
457 ; FMA4: # %bb.0:
458 ; FMA4-NEXT: vfnmsubsd {{.*#+}} xmm0 = -(xmm0 * xmm1) - xmm2
459 ; FMA4-NEXT: retq
477 ; FMA4-LABEL: test_2f64_fnmsub:
478 ; FMA4: # %bb.0:
479 ; FMA4-NEXT: vfnmsubpd {{.*#+}} xmm0 = -(xmm0 * xmm1) - xmm2
480 ; FMA4-NEXT: retq
498 ; FMA4-LABEL: test_4f64_fnmsub:
499 ; FMA4: # %bb.0:
500 ; FMA4-NEXT: vfnmsubpd {{.*#+}} ymm0 = -(ymm0 * ymm1) - ymm2
501 ; FMA4-NEXT: retq
523 ; FMA4-LABEL: test_4f32_fmadd_load:
524 ; FMA4: # %bb.0:
525 ; FMA4-NEXT: vfmaddps {{.*#+}} xmm0 = (xmm0 * mem) + xmm1
526 ; FMA4-NEXT: retq
544 ; FMA4-LABEL: test_2f64_fmsub_load:
545 ; FMA4: # %bb.0:
546 ; FMA4-NEXT: vfmsubpd {{.*#+}} xmm0 = (xmm0 * mem) - xmm1
547 ; FMA4-NEXT: retq
570 ; FMA4-INFS-LABEL: test_v4f32_mul_add_x_one_y:
571 ; FMA4-INFS: # %bb.0:
572 ; FMA4-INFS-NEXT: vaddps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
573 ; FMA4-INFS-NEXT: vmulps %xmm1, %xmm0, %xmm0
574 ; FMA4-INFS-NEXT: retq
587 ; FMA4-NOINFS-LABEL: test_v4f32_mul_add_x_one_y:
588 ; FMA4-NOINFS: # %bb.0:
589 ; FMA4-NOINFS-NEXT: vfmaddps {{.*#+}} xmm0 = (xmm0 * xmm1) + xmm1
590 ; FMA4-NOINFS-NEXT: retq
608 ; FMA4-INFS-LABEL: test_v4f32_mul_y_add_x_one:
609 ; FMA4-INFS: # %bb.0:
610 ; FMA4-INFS-NEXT: vaddps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
611 ; FMA4-INFS-NEXT: vmulps %xmm0, %xmm1, %xmm0
612 ; FMA4-INFS-NEXT: retq
625 ; FMA4-NOINFS-LABEL: test_v4f32_mul_y_add_x_one:
626 ; FMA4-NOINFS: # %bb.0:
627 ; FMA4-NOINFS-NEXT: vfmaddps {{.*#+}} xmm0 = (xmm0 * xmm1) + xmm1
628 ; FMA4-NOINFS-NEXT: retq
646 ; FMA4-INFS-LABEL: test_v4f32_mul_y_add_x_one_undefs:
647 ; FMA4-INFS: # %bb.0:
648 ; FMA4-INFS-NEXT: vaddps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
649 ; FMA4-INFS-NEXT: vmulps %xmm0, %xmm1, %xmm0
650 ; FMA4-INFS-NEXT: retq
663 ; FMA4-NOINFS-LABEL: test_v4f32_mul_y_add_x_one_undefs:
664 ; FMA4-NOINFS: # %bb.0:
665 ; FMA4-NOINFS-NEXT: vfmaddps {{.*#+}} xmm0 = (xmm0 * xmm1) + xmm1
666 ; FMA4-NOINFS-NEXT: retq
684 ; FMA4-INFS-LABEL: test_v4f32_mul_add_x_negone_y:
685 ; FMA4-INFS: # %bb.0:
686 ; FMA4-INFS-NEXT: vaddps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
687 ; FMA4-INFS-NEXT: vmulps %xmm1, %xmm0, %xmm0
688 ; FMA4-INFS-NEXT: retq
701 ; FMA4-NOINFS-LABEL: test_v4f32_mul_add_x_negone_y:
702 ; FMA4-NOINFS: # %bb.0:
703 ; FMA4-NOINFS-NEXT: vfmsubps {{.*#+}} xmm0 = (xmm0 * xmm1) - xmm1
704 ; FMA4-NOINFS-NEXT: retq
722 ; FMA4-INFS-LABEL: test_v4f32_mul_y_add_x_negone:
723 ; FMA4-INFS: # %bb.0:
724 ; FMA4-INFS-NEXT: vaddps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
725 ; FMA4-INFS-NEXT: vmulps %xmm0, %xmm1, %xmm0
726 ; FMA4-INFS-NEXT: retq
739 ; FMA4-NOINFS-LABEL: test_v4f32_mul_y_add_x_negone:
740 ; FMA4-NOINFS: # %bb.0:
741 ; FMA4-NOINFS-NEXT: vfmsubps {{.*#+}} xmm0 = (xmm0 * xmm1) - xmm1
742 ; FMA4-NOINFS-NEXT: retq
760 ; FMA4-INFS-LABEL: test_v4f32_mul_y_add_x_negone_undefs:
761 ; FMA4-INFS: # %bb.0:
762 ; FMA4-INFS-NEXT: vaddps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
763 ; FMA4-INFS-NEXT: vmulps %xmm0, %xmm1, %xmm0
764 ; FMA4-INFS-NEXT: retq
777 ; FMA4-NOINFS-LABEL: test_v4f32_mul_y_add_x_negone_undefs:
778 ; FMA4-NOINFS: # %bb.0:
779 ; FMA4-NOINFS-NEXT: vfmsubps {{.*#+}} xmm0 = (xmm0 * xmm1) - xmm1
780 ; FMA4-NOINFS-NEXT: retq
799 ; FMA4-INFS-LABEL: test_v4f32_mul_sub_one_x_y:
800 ; FMA4-INFS: # %bb.0:
801 ; FMA4-INFS-NEXT: vmovaps {{.*#+}} xmm2 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0]
802 ; FMA4-INFS-NEXT: vsubps %xmm0, %xmm2, %xmm0
803 ; FMA4-INFS-NEXT: vmulps %xmm1, %xmm0, %xmm0
804 ; FMA4-INFS-NEXT: retq
818 ; FMA4-NOINFS-LABEL: test_v4f32_mul_sub_one_x_y:
819 ; FMA4-NOINFS: # %bb.0:
820 ; FMA4-NOINFS-NEXT: vfnmaddps {{.*#+}} xmm0 = -(xmm0 * xmm1) + xmm1
821 ; FMA4-NOINFS-NEXT: retq
840 ; FMA4-INFS-LABEL: test_v4f32_mul_y_sub_one_x:
841 ; FMA4-INFS: # %bb.0:
842 ; FMA4-INFS-NEXT: vmovaps {{.*#+}} xmm2 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0]
843 ; FMA4-INFS-NEXT: vsubps %xmm0, %xmm2, %xmm0
844 ; FMA4-INFS-NEXT: vmulps %xmm0, %xmm1, %xmm0
845 ; FMA4-INFS-NEXT: retq
859 ; FMA4-NOINFS-LABEL: test_v4f32_mul_y_sub_one_x:
860 ; FMA4-NOINFS: # %bb.0:
861 ; FMA4-NOINFS-NEXT: vfnmaddps {{.*#+}} xmm0 = -(xmm0 * xmm1) + xmm1
862 ; FMA4-NOINFS-NEXT: retq
881 ; FMA4-INFS-LABEL: test_v4f32_mul_y_sub_one_x_undefs:
882 ; FMA4-INFS: # %bb.0:
883 ; FMA4-INFS-NEXT: vmovaps {{.*#+}} xmm2 = <1.0E+0,u,1.0E+0,1.0E+0>
884 ; FMA4-INFS-NEXT: vsubps %xmm0, %xmm2, %xmm0
885 ; FMA4-INFS-NEXT: vmulps %xmm0, %xmm1, %xmm0
886 ; FMA4-INFS-NEXT: retq
900 ; FMA4-NOINFS-LABEL: test_v4f32_mul_y_sub_one_x_undefs:
901 ; FMA4-NOINFS: # %bb.0:
902 ; FMA4-NOINFS-NEXT: vfnmaddps {{.*#+}} xmm0 = -(xmm0 * xmm1) + xmm1
903 ; FMA4-NOINFS-NEXT: retq
922 ; FMA4-INFS-LABEL: test_v4f32_mul_sub_negone_x_y:
923 ; FMA4-INFS: # %bb.0:
924 ; FMA4-INFS-NEXT: vmovaps {{.*#+}} xmm2 = [-1.0E+0,-1.0E+0,-1.0E+0,-1.0E+0]
925 ; FMA4-INFS-NEXT: vsubps %xmm0, %xmm2, %xmm0
926 ; FMA4-INFS-NEXT: vmulps %xmm1, %xmm0, %xmm0
927 ; FMA4-INFS-NEXT: retq
941 ; FMA4-NOINFS-LABEL: test_v4f32_mul_sub_negone_x_y:
942 ; FMA4-NOINFS: # %bb.0:
943 ; FMA4-NOINFS-NEXT: vfnmsubps {{.*#+}} xmm0 = -(xmm0 * xmm1) - xmm1
944 ; FMA4-NOINFS-NEXT: retq
963 ; FMA4-INFS-LABEL: test_v4f32_mul_y_sub_negone_x:
964 ; FMA4-INFS: # %bb.0:
965 ; FMA4-INFS-NEXT: vmovaps {{.*#+}} xmm2 = [-1.0E+0,-1.0E+0,-1.0E+0,-1.0E+0]
966 ; FMA4-INFS-NEXT: vsubps %xmm0, %xmm2, %xmm0
967 ; FMA4-INFS-NEXT: vmulps %xmm0, %xmm1, %xmm0
968 ; FMA4-INFS-NEXT: retq
982 ; FMA4-NOINFS-LABEL: test_v4f32_mul_y_sub_negone_x:
983 ; FMA4-NOINFS: # %bb.0:
984 ; FMA4-NOINFS-NEXT: vfnmsubps {{.*#+}} xmm0 = -(xmm0 * xmm1) - xmm1
985 ; FMA4-NOINFS-NEXT: retq
1004 ; FMA4-INFS-LABEL: test_v4f32_mul_y_sub_negone_x_undefs:
1005 ; FMA4-INFS: # %bb.0:
1006 ; FMA4-INFS-NEXT: vmovaps {{.*#+}} xmm2 = <-1.0E+0,-1.0E+0,u,-1.0E+0>
1007 ; FMA4-INFS-NEXT: vsubps %xmm0, %xmm2, %xmm0
1008 ; FMA4-INFS-NEXT: vmulps %xmm0, %xmm1, %xmm0
1009 ; FMA4-INFS-NEXT: retq
1023 ; FMA4-NOINFS-LABEL: test_v4f32_mul_y_sub_negone_x_undefs:
1024 ; FMA4-NOINFS: # %bb.0:
1025 ; FMA4-NOINFS-NEXT: vfnmsubps {{.*#+}} xmm0 = -(xmm0 * xmm1) - xmm1
1026 ; FMA4-NOINFS-NEXT: retq
1044 ; FMA4-INFS-LABEL: test_v4f32_mul_sub_x_one_y:
1045 ; FMA4-INFS: # %bb.0:
1046 ; FMA4-INFS-NEXT: vaddps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
1047 ; FMA4-INFS-NEXT: vmulps %xmm1, %xmm0, %xmm0
1048 ; FMA4-INFS-NEXT: retq
1061 ; FMA4-NOINFS-LABEL: test_v4f32_mul_sub_x_one_y:
1062 ; FMA4-NOINFS: # %bb.0:
1063 ; FMA4-NOINFS-NEXT: vfmsubps {{.*#+}} xmm0 = (xmm0 * xmm1) - xmm1
1064 ; FMA4-NOINFS-NEXT: retq
1082 ; FMA4-INFS-LABEL: test_v4f32_mul_y_sub_x_one:
1083 ; FMA4-INFS: # %bb.0:
1084 ; FMA4-INFS-NEXT: vaddps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
1085 ; FMA4-INFS-NEXT: vmulps %xmm0, %xmm1, %xmm0
1086 ; FMA4-INFS-NEXT: retq
1099 ; FMA4-NOINFS-LABEL: test_v4f32_mul_y_sub_x_one:
1100 ; FMA4-NOINFS: # %bb.0:
1101 ; FMA4-NOINFS-NEXT: vfmsubps {{.*#+}} xmm0 = (xmm0 * xmm1) - xmm1
1102 ; FMA4-NOINFS-NEXT: retq
1120 ; FMA4-INFS-LABEL: test_v4f32_mul_y_sub_x_one_undefs:
1121 ; FMA4-INFS: # %bb.0:
1122 ; FMA4-INFS-NEXT: vaddps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
1123 ; FMA4-INFS-NEXT: vmulps %xmm0, %xmm1, %xmm0
1124 ; FMA4-INFS-NEXT: retq
1137 ; FMA4-NOINFS-LABEL: test_v4f32_mul_y_sub_x_one_undefs:
1138 ; FMA4-NOINFS: # %bb.0:
1139 ; FMA4-NOINFS-NEXT: vfmsubps {{.*#+}} xmm0 = (xmm0 * xmm1) - xmm1
1140 ; FMA4-NOINFS-NEXT: retq
1158 ; FMA4-INFS-LABEL: test_v4f32_mul_sub_x_negone_y:
1159 ; FMA4-INFS: # %bb.0:
1160 ; FMA4-INFS-NEXT: vaddps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
1161 ; FMA4-INFS-NEXT: vmulps %xmm1, %xmm0, %xmm0
1162 ; FMA4-INFS-NEXT: retq
1175 ; FMA4-NOINFS-LABEL: test_v4f32_mul_sub_x_negone_y:
1176 ; FMA4-NOINFS: # %bb.0:
1177 ; FMA4-NOINFS-NEXT: vfmaddps {{.*#+}} xmm0 = (xmm0 * xmm1) + xmm1
1178 ; FMA4-NOINFS-NEXT: retq
1196 ; FMA4-INFS-LABEL: test_v4f32_mul_y_sub_x_negone:
1197 ; FMA4-INFS: # %bb.0:
1198 ; FMA4-INFS-NEXT: vaddps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
1199 ; FMA4-INFS-NEXT: vmulps %xmm0, %xmm1, %xmm0
1200 ; FMA4-INFS-NEXT: retq
1213 ; FMA4-NOINFS-LABEL: test_v4f32_mul_y_sub_x_negone:
1214 ; FMA4-NOINFS: # %bb.0:
1215 ; FMA4-NOINFS-NEXT: vfmaddps {{.*#+}} xmm0 = (xmm0 * xmm1) + xmm1
1216 ; FMA4-NOINFS-NEXT: retq
1234 ; FMA4-INFS-LABEL: test_v4f32_mul_y_sub_x_negone_undefs:
1235 ; FMA4-INFS: # %bb.0:
1236 ; FMA4-INFS-NEXT: vaddps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
1237 ; FMA4-INFS-NEXT: vmulps %xmm0, %xmm1, %xmm0
1238 ; FMA4-INFS-NEXT: retq
1251 ; FMA4-NOINFS-LABEL: test_v4f32_mul_y_sub_x_negone_undefs:
1252 ; FMA4-NOINFS: # %bb.0:
1253 ; FMA4-NOINFS-NEXT: vfmaddps {{.*#+}} xmm0 = (xmm0 * xmm1) + xmm1
1254 ; FMA4-NOINFS-NEXT: retq
1278 ; FMA4-INFS-LABEL: test_f32_interp:
1279 ; FMA4-INFS: # %bb.0:
1280 ; FMA4-INFS-NEXT: vmovss {{.*#+}} xmm3 = mem[0],zero,zero,zero
1281 ; FMA4-INFS-NEXT: vsubss %xmm2, %xmm3, %xmm3
1282 ; FMA4-INFS-NEXT: vmulss %xmm3, %xmm1, %xmm1
1283 ; FMA4-INFS-NEXT: vfmaddss {{.*#+}} xmm0 = (xmm0 * xmm2) + xmm1
1284 ; FMA4-INFS-NEXT: retq
1300 ; FMA4-NOINFS-LABEL: test_f32_interp:
1301 ; FMA4-NOINFS: # %bb.0:
1302 ; FMA4-NOINFS-NEXT: vfmsubss {{.*#+}} xmm1 = (xmm2 * xmm1) - xmm1
1303 ; FMA4-NOINFS-NEXT: vfmsubss {{.*#+}} xmm0 = (xmm0 * xmm2) - xmm1
1304 ; FMA4-NOINFS-NEXT: retq
1327 ; FMA4-INFS-LABEL: test_v4f32_interp:
1328 ; FMA4-INFS: # %bb.0:
1329 ; FMA4-INFS-NEXT: vmovaps {{.*#+}} xmm3 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0]
1330 ; FMA4-INFS-NEXT: vsubps %xmm2, %xmm3, %xmm3
1331 ; FMA4-INFS-NEXT: vmulps %xmm3, %xmm1, %xmm1
1332 ; FMA4-INFS-NEXT: vfmaddps {{.*#+}} xmm0 = (xmm0 * xmm2) + xmm1
1333 ; FMA4-INFS-NEXT: retq
1349 ; FMA4-NOINFS-LABEL: test_v4f32_interp:
1350 ; FMA4-NOINFS: # %bb.0:
1351 ; FMA4-NOINFS-NEXT: vfmsubps {{.*#+}} xmm1 = (xmm2 * xmm1) - xmm1
1352 ; FMA4-NOINFS-NEXT: vfmsubps {{.*#+}} xmm0 = (xmm0 * xmm2) - xmm1
1353 ; FMA4-NOINFS-NEXT: retq
1376 ; FMA4-INFS-LABEL: test_v8f32_interp:
1377 ; FMA4-INFS: # %bb.0:
1378 ; FMA4-INFS-NEXT: vmovaps {{.*#+}} ymm3 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E…
1379 ; FMA4-INFS-NEXT: vsubps %ymm2, %ymm3, %ymm3
1380 ; FMA4-INFS-NEXT: vmulps %ymm3, %ymm1, %ymm1
1381 ; FMA4-INFS-NEXT: vfmaddps {{.*#+}} ymm0 = (ymm0 * ymm2) + ymm1
1382 ; FMA4-INFS-NEXT: retq
1398 ; FMA4-NOINFS-LABEL: test_v8f32_interp:
1399 ; FMA4-NOINFS: # %bb.0:
1400 ; FMA4-NOINFS-NEXT: vfmsubps {{.*#+}} ymm1 = (ymm2 * ymm1) - ymm1
1401 ; FMA4-NOINFS-NEXT: vfmsubps {{.*#+}} ymm0 = (ymm0 * ymm2) - ymm1
1402 ; FMA4-NOINFS-NEXT: retq
1425 ; FMA4-INFS-LABEL: test_f64_interp:
1426 ; FMA4-INFS: # %bb.0:
1427 ; FMA4-INFS-NEXT: vmovsd {{.*#+}} xmm3 = mem[0],zero
1428 ; FMA4-INFS-NEXT: vsubsd %xmm2, %xmm3, %xmm3
1429 ; FMA4-INFS-NEXT: vmulsd %xmm3, %xmm1, %xmm1
1430 ; FMA4-INFS-NEXT: vfmaddsd {{.*#+}} xmm0 = (xmm0 * xmm2) + xmm1
1431 ; FMA4-INFS-NEXT: retq
1447 ; FMA4-NOINFS-LABEL: test_f64_interp:
1448 ; FMA4-NOINFS: # %bb.0:
1449 ; FMA4-NOINFS-NEXT: vfmsubsd {{.*#+}} xmm1 = (xmm2 * xmm1) - xmm1
1450 ; FMA4-NOINFS-NEXT: vfmsubsd {{.*#+}} xmm0 = (xmm0 * xmm2) - xmm1
1451 ; FMA4-NOINFS-NEXT: retq
1474 ; FMA4-INFS-LABEL: test_v2f64_interp:
1475 ; FMA4-INFS: # %bb.0:
1476 ; FMA4-INFS-NEXT: vmovapd {{.*#+}} xmm3 = [1.0E+0,1.0E+0]
1477 ; FMA4-INFS-NEXT: vsubpd %xmm2, %xmm3, %xmm3
1478 ; FMA4-INFS-NEXT: vmulpd %xmm3, %xmm1, %xmm1
1479 ; FMA4-INFS-NEXT: vfmaddpd {{.*#+}} xmm0 = (xmm0 * xmm2) + xmm1
1480 ; FMA4-INFS-NEXT: retq
1497 ; FMA4-NOINFS-LABEL: test_v2f64_interp:
1498 ; FMA4-NOINFS: # %bb.0:
1499 ; FMA4-NOINFS-NEXT: vfmsubpd {{.*#+}} xmm1 = (xmm2 * xmm1) - xmm1
1500 ; FMA4-NOINFS-NEXT: vfmsubpd {{.*#+}} xmm0 = (xmm0 * xmm2) - xmm1
1501 ; FMA4-NOINFS-NEXT: retq
1524 ; FMA4-INFS-LABEL: test_v4f64_interp:
1525 ; FMA4-INFS: # %bb.0:
1526 ; FMA4-INFS-NEXT: vmovapd {{.*#+}} ymm3 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0]
1527 ; FMA4-INFS-NEXT: vsubpd %ymm2, %ymm3, %ymm3
1528 ; FMA4-INFS-NEXT: vmulpd %ymm3, %ymm1, %ymm1
1529 ; FMA4-INFS-NEXT: vfmaddpd {{.*#+}} ymm0 = (ymm0 * ymm2) + ymm1
1530 ; FMA4-INFS-NEXT: retq
1546 ; FMA4-NOINFS-LABEL: test_v4f64_interp:
1547 ; FMA4-NOINFS: # %bb.0:
1548 ; FMA4-NOINFS-NEXT: vfmsubpd {{.*#+}} ymm1 = (ymm2 * ymm1) - ymm1
1549 ; FMA4-NOINFS-NEXT: vfmsubpd {{.*#+}} ymm0 = (ymm0 * ymm2) - ymm1
1550 ; FMA4-NOINFS-NEXT: retq
1574 ; FMA4-LABEL: test_v4f32_fneg_fmadd:
1575 ; FMA4: # %bb.0:
1576 ; FMA4-NEXT: vfnmsubps {{.*#+}} xmm0 = -(xmm0 * xmm1) - xmm2
1577 ; FMA4-NEXT: retq
1595 ; FMA4-LABEL: test_v4f64_fneg_fmsub:
1596 ; FMA4: # %bb.0:
1597 ; FMA4-NEXT: vfnmaddpd {{.*#+}} ymm0 = -(ymm0 * ymm1) + ymm2
1598 ; FMA4-NEXT: retq
1616 ; FMA4-LABEL: test_v4f32_fneg_fnmadd:
1617 ; FMA4: # %bb.0:
1618 ; FMA4-NEXT: vfmsubps {{.*#+}} xmm0 = (xmm0 * xmm1) - xmm2
1619 ; FMA4-NEXT: retq
1638 ; FMA4-LABEL: test_v4f64_fneg_fnmsub:
1639 ; FMA4: # %bb.0:
1640 ; FMA4-NEXT: vfmaddpd {{.*#+}} ymm0 = (ymm0 * ymm1) + ymm2
1641 ; FMA4-NEXT: retq
1664 ; FMA4-LABEL: test_v4f32_fma_x_c1_fmul_x_c2:
1665 ; FMA4: # %bb.0:
1666 ; FMA4-NEXT: vmulps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0, %xmm0
1667 ; FMA4-NEXT: retq
1689 ; FMA4-LABEL: test_v4f32_fma_fmul_x_c1_c2_y:
1690 ; FMA4: # %bb.0:
1691 ; FMA4-NEXT: vfmaddps {{.*#+}} xmm0 = (xmm0 * mem) + xmm1
1692 ; FMA4-NEXT: retq
1713 ; FMA4-LABEL: test_f64_fneg_fmul:
1714 ; FMA4: # %bb.0:
1715 ; FMA4-NEXT: vxorpd %xmm2, %xmm2, %xmm2
1716 ; FMA4-NEXT: vfnmsubsd {{.*#+}} xmm0 = -(xmm0 * xmm1) - xmm2
1717 ; FMA4-NEXT: retq
1736 ; FMA4-LABEL: test_v4f32_fneg_fmul:
1737 ; FMA4: # %bb.0:
1738 ; FMA4-NEXT: vxorps %xmm2, %xmm2, %xmm2
1739 ; FMA4-NEXT: vfnmsubps {{.*#+}} xmm0 = -(xmm0 * xmm1) - xmm2
1740 ; FMA4-NEXT: retq
1759 ; FMA4-LABEL: test_v4f64_fneg_fmul:
1760 ; FMA4: # %bb.0:
1761 ; FMA4-NEXT: vxorpd %xmm2, %xmm2, %xmm2
1762 ; FMA4-NEXT: vfnmsubpd {{.*#+}} ymm0 = -(ymm0 * ymm1) - ymm2
1763 ; FMA4-NEXT: retq
1782 ; FMA4-LABEL: test_v4f64_fneg_fmul_no_nsz:
1783 ; FMA4: # %bb.0:
1784 ; FMA4-NEXT: vmulpd %ymm1, %ymm0, %ymm0
1785 ; FMA4-NEXT: vxorpd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %ymm0, %ymm0
1786 ; FMA4-NEXT: retq
1807 ; FMA4-LABEL: fadd_fma_fmul_1:
1808 ; FMA4: # %bb.0:
1809 ; FMA4-NEXT: vfmaddsd {{.*#+}} xmm2 = (xmm2 * xmm3) + xmm4
1810 ; FMA4-NEXT: vfmaddsd {{.*#+}} xmm0 = (xmm0 * xmm1) + xmm2
1811 ; FMA4-NEXT: retq
1836 ; FMA4-LABEL: fadd_fma_fmul_fmf:
1837 ; FMA4: # %bb.0:
1838 ; FMA4-NEXT: vfmaddss {{.*#+}} xmm2 = (xmm2 * xmm3) + xmm4
1839 ; FMA4-NEXT: vfmaddss {{.*#+}} xmm0 = (xmm0 * xmm1) + xmm2
1840 ; FMA4-NEXT: retq
1864 ; FMA4-LABEL: fadd_fma_fmul_2:
1865 ; FMA4: # %bb.0:
1866 ; FMA4-NEXT: vmulss %xmm3, %xmm2, %xmm2
1867 ; FMA4-NEXT: vfmaddss {{.*#+}} xmm0 = (xmm0 * xmm1) + xmm2
1868 ; FMA4-NEXT: vaddss %xmm0, %xmm4, %xmm0
1869 ; FMA4-NEXT: retq
1896 ; FMA4-LABEL: fadd_fma_fmul_3:
1897 ; FMA4: # %bb.0:
1898 ; FMA4-NEXT: vmulpd %xmm3, %xmm2, %xmm2
1899 ; FMA4-NEXT: vfmaddpd {{.*#+}} xmm0 = (xmm0 * xmm1) + xmm2
1900 ; FMA4-NEXT: vfmaddpd {{.*#+}} xmm0 = (xmm6 * xmm7) + xmm0
1901 ; FMA4-NEXT: vfmaddpd {{.*#+}} xmm0 = (xmm4 * xmm5) + xmm0
1902 ; FMA4-NEXT: retq
1933 ; FMA4-LABEL: fadd_fma_fmul_extra_use_1:
1934 ; FMA4: # %bb.0:
1935 ; FMA4-NEXT: vmulss %xmm1, %xmm0, %xmm0
1936 ; FMA4-NEXT: vmovss %xmm0, (%rdi)
1937 ; FMA4-NEXT: vfmaddss {{.*#+}} xmm0 = (xmm2 * xmm3) + xmm0
1938 ; FMA4-NEXT: vaddss %xmm0, %xmm4, %xmm0
1939 ; FMA4-NEXT: retq
1967 ; FMA4-LABEL: fadd_fma_fmul_extra_use_2:
1968 ; FMA4: # %bb.0:
1969 ; FMA4-NEXT: vmulss %xmm3, %xmm2, %xmm2
1970 ; FMA4-NEXT: vmovss %xmm2, (%rdi)
1971 ; FMA4-NEXT: vfmaddss {{.*#+}} xmm0 = (xmm0 * xmm1) + xmm2
1972 ; FMA4-NEXT: vaddss %xmm0, %xmm4, %xmm0
1973 ; FMA4-NEXT: retq
2001 ; FMA4-LABEL: fadd_fma_fmul_extra_use_3:
2002 ; FMA4: # %bb.0:
2003 ; FMA4-NEXT: vmulss %xmm3, %xmm2, %xmm2
2004 ; FMA4-NEXT: vfmaddss {{.*#+}} xmm0 = (xmm0 * xmm1) + xmm2
2005 ; FMA4-NEXT: vmovss %xmm0, (%rdi)
2006 ; FMA4-NEXT: vaddss %xmm0, %xmm4, %xmm0
2007 ; FMA4-NEXT: retq