@@ -659,57 +659,57 @@ define <9 x double> @test_mul3x3_f64(<9 x double> %a0, <9 x double> %a1) nounwin
659659; AVX2: # %bb.0: # %entry
660660; AVX2-NEXT: movq %rdi, %rax
661661; AVX2-NEXT: vmovsd {{.*#+}} xmm8 = mem[0],zero
662- ; AVX2-NEXT: vunpcklpd {{.*#+}} xmm1 = xmm0[0],xmm1[0]
662+ ; AVX2-NEXT: vunpcklpd {{.*#+}} xmm0 = xmm0[0],xmm1[0]
663663; AVX2-NEXT: vmovddup {{.*#+}} xmm9 = mem[0,0]
664- ; AVX2-NEXT: vmulpd %xmm1 , %xmm9, %xmm0
665- ; AVX2-NEXT: vunpcklpd {{.*#+}} xmm3 = xmm3[0],xmm4[0]
666- ; AVX2-NEXT: vmovddup {{.*#+}} xmm4 = mem[0,0]
667- ; AVX2-NEXT: vmulpd %xmm4 , %xmm3 , %xmm10
668- ; AVX2-NEXT: vaddpd %xmm0 , %xmm10, %xmm0
664+ ; AVX2-NEXT: vmulpd %xmm0 , %xmm9, %xmm10
665+ ; AVX2-NEXT: vunpcklpd {{.*#+}} xmm1 = xmm3[0],xmm4[0]
666+ ; AVX2-NEXT: vmovddup {{.*#+}} xmm3 = mem[0,0]
667+ ; AVX2-NEXT: vmulpd %xmm3 , %xmm1 , %xmm4
668+ ; AVX2-NEXT: vaddpd %xmm4 , %xmm10, %xmm4
669669; AVX2-NEXT: vunpcklpd {{.*#+}} xmm6 = xmm6[0],xmm7[0]
670670; AVX2-NEXT: vmovddup {{.*#+}} xmm7 = mem[0,0]
671671; AVX2-NEXT: vmulpd %xmm7, %xmm6, %xmm10
672- ; AVX2-NEXT: vaddpd %xmm0 , %xmm10, %xmm0
672+ ; AVX2-NEXT: vaddpd %xmm4 , %xmm10, %xmm4
673673; AVX2-NEXT: vmulsd %xmm2, %xmm9, %xmm9
674- ; AVX2-NEXT: vmulsd %xmm4 , %xmm5, %xmm4
675- ; AVX2-NEXT: vaddsd %xmm4 , %xmm9, %xmm4
674+ ; AVX2-NEXT: vmulsd %xmm3 , %xmm5, %xmm3
675+ ; AVX2-NEXT: vaddsd %xmm3 , %xmm9, %xmm3
676676; AVX2-NEXT: vmulsd %xmm7, %xmm8, %xmm7
677- ; AVX2-NEXT: vaddsd %xmm7, %xmm4, %xmm4
678- ; AVX2-NEXT: vinsertf128 $1, %xmm4, %ymm0, %ymm4
679- ; AVX2-NEXT: vmovddup {{.*#+}} xmm7 = mem[0,0]
680- ; AVX2-NEXT: vmulpd %xmm7, %xmm1, %xmm9
677+ ; AVX2-NEXT: vaddsd %xmm7, %xmm3, %xmm3
678+ ; AVX2-NEXT: vinsertf128 $1, %xmm3, %ymm4, %ymm3
679+ ; AVX2-NEXT: vmovddup {{.*#+}} xmm4 = mem[0,0]
680+ ; AVX2-NEXT: vmulpd %xmm4, %xmm0, %xmm7
681+ ; AVX2-NEXT: vmovddup {{.*#+}} xmm9 = mem[0,0]
682+ ; AVX2-NEXT: vmulpd %xmm1, %xmm9, %xmm10
683+ ; AVX2-NEXT: vaddpd %xmm7, %xmm10, %xmm7
681684; AVX2-NEXT: vmovddup {{.*#+}} xmm10 = mem[0,0]
682- ; AVX2-NEXT: vmulpd %xmm3, %xmm10, %xmm11
683- ; AVX2-NEXT: vaddpd %xmm11, %xmm9, %xmm9
684- ; AVX2-NEXT: vmovddup {{.*#+}} xmm11 = mem[0,0]
685- ; AVX2-NEXT: vmulpd %xmm6, %xmm11, %xmm12
686- ; AVX2-NEXT: vaddpd %xmm12, %xmm9, %xmm9
687- ; AVX2-NEXT: vmulsd %xmm7, %xmm2, %xmm7
688- ; AVX2-NEXT: vmulsd %xmm5, %xmm10, %xmm10
689- ; AVX2-NEXT: vaddsd %xmm7, %xmm10, %xmm7
690- ; AVX2-NEXT: vmulsd %xmm11, %xmm8, %xmm10
691- ; AVX2-NEXT: vaddsd %xmm7, %xmm10, %xmm7
685+ ; AVX2-NEXT: vmulpd %xmm6, %xmm10, %xmm11
686+ ; AVX2-NEXT: vaddpd %xmm7, %xmm11, %xmm7
687+ ; AVX2-NEXT: vmulsd %xmm4, %xmm2, %xmm4
688+ ; AVX2-NEXT: vmulsd %xmm5, %xmm9, %xmm9
689+ ; AVX2-NEXT: vaddsd %xmm4, %xmm9, %xmm4
690+ ; AVX2-NEXT: vmulsd %xmm10, %xmm8, %xmm9
691+ ; AVX2-NEXT: vaddsd %xmm4, %xmm9, %xmm4
692+ ; AVX2-NEXT: vmovddup {{.*#+}} xmm9 = mem[0,0]
693+ ; AVX2-NEXT: vmulpd %xmm0, %xmm9, %xmm0
692694; AVX2-NEXT: vmovddup {{.*#+}} xmm10 = mem[0,0]
693695; AVX2-NEXT: vmulpd %xmm1, %xmm10, %xmm1
694- ; AVX2-NEXT: vmovddup {{.*#+}} xmm11 = mem[0,0]
695- ; AVX2-NEXT: vmulpd %xmm3, %xmm11, %xmm3
696- ; AVX2-NEXT: vaddpd %xmm3, %xmm1, %xmm1
697- ; AVX2-NEXT: vmovddup {{.*#+}} xmm3 = mem[0,0]
698- ; AVX2-NEXT: vmulpd %xmm3, %xmm6, %xmm6
699- ; AVX2-NEXT: vaddpd %xmm6, %xmm1, %xmm1
700- ; AVX2-NEXT: vmulsd %xmm2, %xmm10, %xmm2
701- ; AVX2-NEXT: vmulsd %xmm5, %xmm11, %xmm5
696+ ; AVX2-NEXT: vaddpd %xmm1, %xmm0, %xmm0
697+ ; AVX2-NEXT: vmovddup {{.*#+}} xmm1 = mem[0,0]
698+ ; AVX2-NEXT: vmulpd %xmm1, %xmm6, %xmm6
699+ ; AVX2-NEXT: vaddpd %xmm6, %xmm0, %xmm0
700+ ; AVX2-NEXT: vmulsd %xmm2, %xmm9, %xmm2
701+ ; AVX2-NEXT: vmulsd %xmm5, %xmm10, %xmm5
702702; AVX2-NEXT: vaddsd %xmm5, %xmm2, %xmm2
703- ; AVX2-NEXT: vmulsd %xmm3 , %xmm8, %xmm3
704- ; AVX2-NEXT: vaddsd %xmm3 , %xmm2, %xmm2
705- ; AVX2-NEXT: vinsertf128 $1, %xmm9 , %ymm0, %ymm0
706- ; AVX2-NEXT: vshufpd {{.*#+}} ymm0 = ymm4[0],ymm0[1],ymm4[ 2],ymm0[2 ]
707- ; AVX2-NEXT: vinsertf128 $1, %xmm1 , %ymm7 , %ymm3
708- ; AVX2-NEXT: vinsertf128 $1, %xmm1 , %ymm9 , %ymm1
709- ; AVX2-NEXT: vshufpd {{.*#+}} ymm1 = ymm1 [1],ymm3[0],ymm1 [2],ymm3[3]
710- ; AVX2-NEXT: vmovsd %xmm2 , 64(%rdi)
711- ; AVX2-NEXT: vmovapd %ymm1 , 32(%rdi)
712- ; AVX2-NEXT: vmovapd %ymm0 , (%rdi)
703+ ; AVX2-NEXT: vmulsd %xmm1 , %xmm8, %xmm1
704+ ; AVX2-NEXT: vaddsd %xmm1 , %xmm2, %xmm1
705+ ; AVX2-NEXT: vbroadcastsd %xmm7 , %ymm2
706+ ; AVX2-NEXT: vblendpd {{.*#+}} ymm2 = ymm3[0,1, 2],ymm2[3 ]
707+ ; AVX2-NEXT: vinsertf128 $1, %xmm0 , %ymm4 , %ymm3
708+ ; AVX2-NEXT: vinsertf128 $1, %xmm0 , %ymm7 , %ymm0
709+ ; AVX2-NEXT: vshufpd {{.*#+}} ymm0 = ymm0 [1],ymm3[0],ymm0 [2],ymm3[3]
710+ ; AVX2-NEXT: vmovsd %xmm1 , 64(%rdi)
711+ ; AVX2-NEXT: vmovapd %ymm0 , 32(%rdi)
712+ ; AVX2-NEXT: vmovapd %ymm2 , (%rdi)
713713; AVX2-NEXT: vzeroupper
714714; AVX2-NEXT: retq
715715;
0 commit comments