[llvm] f8cf007 - [X86] matrix-multiply.ll - add common AVX1+2 check prefix

Simon Pilgrim via llvm-commits llvm-commits at lists.llvm.org
Fri Mar 7 03:39:00 PST 2025


Author: Simon Pilgrim
Date: 2025-03-07T11:38:51Z
New Revision: f8cf007b4cdc975e44c94c2a3276023b7816cd74

URL: https://github.com/llvm/llvm-project/commit/f8cf007b4cdc975e44c94c2a3276023b7816cd74
DIFF: https://github.com/llvm/llvm-project/commit/f8cf007b4cdc975e44c94c2a3276023b7816cd74.diff

LOG: [X86] matrix-multiply.ll - add common AVX1+2 check prefix

Added: 
    

Modified: 
    llvm/test/CodeGen/X86/matrix-multiply.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/CodeGen/X86/matrix-multiply.ll b/llvm/test/CodeGen/X86/matrix-multiply.ll
index bb7ab4a666859..7a5819c2978ae 100644
--- a/llvm/test/CodeGen/X86/matrix-multiply.ll
+++ b/llvm/test/CodeGen/X86/matrix-multiply.ll
@@ -1,7 +1,7 @@
 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
 ; RUN: llc < %s -disable-peephole -mtriple=x86_64-unknown-unknown | FileCheck %s --check-prefixes=SSE
-; RUN: llc < %s -disable-peephole -mtriple=x86_64-unknown-unknown -mattr=+avx | FileCheck %s --check-prefixes=AVX,AVX1
-; RUN: llc < %s -disable-peephole -mtriple=x86_64-unknown-unknown -mattr=+avx2 | FileCheck %s --check-prefixes=AVX,AVX2
+; RUN: llc < %s -disable-peephole -mtriple=x86_64-unknown-unknown -mattr=+avx | FileCheck %s --check-prefixes=AVX,AVX1OR2,AVX1
+; RUN: llc < %s -disable-peephole -mtriple=x86_64-unknown-unknown -mattr=+avx2 | FileCheck %s --check-prefixes=AVX,AVX1OR2,AVX2
 ; RUN: llc < %s -disable-peephole -mtriple=x86_64-unknown-unknown -mattr=+avx512f | FileCheck %s --check-prefixes=AVX,AVX512,AVX512F
 ; RUN: llc < %s -disable-peephole -mtriple=x86_64-unknown-unknown -mattr=+avx512vl | FileCheck %s --check-prefixes=AVX,AVX512,AVX512VL
 
@@ -2146,413 +2146,209 @@ define <64 x float> @test_mul8x8_f32(<64 x float> %a0, <64 x float> %a1) nounwin
 ; SSE-NEXT:    addq $120, %rsp
 ; SSE-NEXT:    retq
 ;
-; AVX1-LABEL: test_mul8x8_f32:
-; AVX1:       # %bb.0: # %entry
-; AVX1-NEXT:    pushq %rbp
-; AVX1-NEXT:    movq %rsp, %rbp
-; AVX1-NEXT:    andq $-32, %rsp
-; AVX1-NEXT:    subq $32, %rsp
-; AVX1-NEXT:    movq %rdi, %rax
-; AVX1-NEXT:    vbroadcastss 16(%rbp), %ymm8
-; AVX1-NEXT:    vmulps %ymm0, %ymm8, %ymm8
-; AVX1-NEXT:    vbroadcastss 20(%rbp), %ymm9
-; AVX1-NEXT:    vmulps %ymm1, %ymm9, %ymm9
-; AVX1-NEXT:    vaddps %ymm9, %ymm8, %ymm8
-; AVX1-NEXT:    vbroadcastss 24(%rbp), %ymm9
-; AVX1-NEXT:    vmulps %ymm2, %ymm9, %ymm9
-; AVX1-NEXT:    vaddps %ymm9, %ymm8, %ymm8
-; AVX1-NEXT:    vbroadcastss 28(%rbp), %ymm9
-; AVX1-NEXT:    vmulps %ymm3, %ymm9, %ymm9
-; AVX1-NEXT:    vaddps %ymm9, %ymm8, %ymm8
-; AVX1-NEXT:    vbroadcastss 32(%rbp), %ymm9
-; AVX1-NEXT:    vmulps %ymm4, %ymm9, %ymm9
-; AVX1-NEXT:    vaddps %ymm9, %ymm8, %ymm8
-; AVX1-NEXT:    vbroadcastss 36(%rbp), %ymm9
-; AVX1-NEXT:    vmulps %ymm5, %ymm9, %ymm9
-; AVX1-NEXT:    vaddps %ymm9, %ymm8, %ymm8
-; AVX1-NEXT:    vbroadcastss 40(%rbp), %ymm9
-; AVX1-NEXT:    vmulps %ymm6, %ymm9, %ymm9
-; AVX1-NEXT:    vaddps %ymm9, %ymm8, %ymm8
-; AVX1-NEXT:    vbroadcastss 44(%rbp), %ymm9
-; AVX1-NEXT:    vmulps %ymm7, %ymm9, %ymm9
-; AVX1-NEXT:    vaddps %ymm9, %ymm8, %ymm8
-; AVX1-NEXT:    vbroadcastss 48(%rbp), %ymm9
-; AVX1-NEXT:    vmulps %ymm0, %ymm9, %ymm9
-; AVX1-NEXT:    vbroadcastss 52(%rbp), %ymm10
-; AVX1-NEXT:    vmulps %ymm1, %ymm10, %ymm10
-; AVX1-NEXT:    vaddps %ymm10, %ymm9, %ymm9
-; AVX1-NEXT:    vbroadcastss 56(%rbp), %ymm10
-; AVX1-NEXT:    vmulps %ymm2, %ymm10, %ymm10
-; AVX1-NEXT:    vaddps %ymm10, %ymm9, %ymm9
-; AVX1-NEXT:    vbroadcastss 60(%rbp), %ymm10
-; AVX1-NEXT:    vmulps %ymm3, %ymm10, %ymm10
-; AVX1-NEXT:    vaddps %ymm10, %ymm9, %ymm9
-; AVX1-NEXT:    vbroadcastss 64(%rbp), %ymm10
-; AVX1-NEXT:    vmulps %ymm4, %ymm10, %ymm10
-; AVX1-NEXT:    vaddps %ymm10, %ymm9, %ymm9
-; AVX1-NEXT:    vbroadcastss 68(%rbp), %ymm10
-; AVX1-NEXT:    vmulps %ymm5, %ymm10, %ymm10
-; AVX1-NEXT:    vaddps %ymm10, %ymm9, %ymm9
-; AVX1-NEXT:    vbroadcastss 72(%rbp), %ymm10
-; AVX1-NEXT:    vmulps %ymm6, %ymm10, %ymm10
-; AVX1-NEXT:    vaddps %ymm10, %ymm9, %ymm9
-; AVX1-NEXT:    vbroadcastss 76(%rbp), %ymm10
-; AVX1-NEXT:    vmulps %ymm7, %ymm10, %ymm10
-; AVX1-NEXT:    vaddps %ymm10, %ymm9, %ymm9
-; AVX1-NEXT:    vbroadcastss 80(%rbp), %ymm10
-; AVX1-NEXT:    vmulps %ymm0, %ymm10, %ymm10
-; AVX1-NEXT:    vbroadcastss 84(%rbp), %ymm11
-; AVX1-NEXT:    vmulps %ymm1, %ymm11, %ymm11
-; AVX1-NEXT:    vaddps %ymm11, %ymm10, %ymm10
-; AVX1-NEXT:    vbroadcastss 88(%rbp), %ymm11
-; AVX1-NEXT:    vmulps %ymm2, %ymm11, %ymm11
-; AVX1-NEXT:    vaddps %ymm11, %ymm10, %ymm10
-; AVX1-NEXT:    vbroadcastss 92(%rbp), %ymm11
-; AVX1-NEXT:    vmulps %ymm3, %ymm11, %ymm11
-; AVX1-NEXT:    vaddps %ymm11, %ymm10, %ymm10
-; AVX1-NEXT:    vbroadcastss 96(%rbp), %ymm11
-; AVX1-NEXT:    vmulps %ymm4, %ymm11, %ymm11
-; AVX1-NEXT:    vaddps %ymm11, %ymm10, %ymm10
-; AVX1-NEXT:    vbroadcastss 100(%rbp), %ymm11
-; AVX1-NEXT:    vmulps %ymm5, %ymm11, %ymm11
-; AVX1-NEXT:    vaddps %ymm11, %ymm10, %ymm10
-; AVX1-NEXT:    vbroadcastss 104(%rbp), %ymm11
-; AVX1-NEXT:    vmulps %ymm6, %ymm11, %ymm11
-; AVX1-NEXT:    vaddps %ymm11, %ymm10, %ymm10
-; AVX1-NEXT:    vbroadcastss 108(%rbp), %ymm11
-; AVX1-NEXT:    vmulps %ymm7, %ymm11, %ymm11
-; AVX1-NEXT:    vaddps %ymm11, %ymm10, %ymm10
-; AVX1-NEXT:    vbroadcastss 112(%rbp), %ymm11
-; AVX1-NEXT:    vmulps %ymm0, %ymm11, %ymm11
-; AVX1-NEXT:    vbroadcastss 116(%rbp), %ymm12
-; AVX1-NEXT:    vmulps %ymm1, %ymm12, %ymm12
-; AVX1-NEXT:    vaddps %ymm12, %ymm11, %ymm11
-; AVX1-NEXT:    vbroadcastss 120(%rbp), %ymm12
-; AVX1-NEXT:    vmulps %ymm2, %ymm12, %ymm12
-; AVX1-NEXT:    vaddps %ymm12, %ymm11, %ymm11
-; AVX1-NEXT:    vbroadcastss 124(%rbp), %ymm12
-; AVX1-NEXT:    vmulps %ymm3, %ymm12, %ymm12
-; AVX1-NEXT:    vaddps %ymm12, %ymm11, %ymm11
-; AVX1-NEXT:    vbroadcastss 128(%rbp), %ymm12
-; AVX1-NEXT:    vmulps %ymm4, %ymm12, %ymm12
-; AVX1-NEXT:    vaddps %ymm12, %ymm11, %ymm11
-; AVX1-NEXT:    vbroadcastss 132(%rbp), %ymm12
-; AVX1-NEXT:    vmulps %ymm5, %ymm12, %ymm12
-; AVX1-NEXT:    vaddps %ymm12, %ymm11, %ymm11
-; AVX1-NEXT:    vbroadcastss 136(%rbp), %ymm12
-; AVX1-NEXT:    vmulps %ymm6, %ymm12, %ymm12
-; AVX1-NEXT:    vaddps %ymm12, %ymm11, %ymm11
-; AVX1-NEXT:    vbroadcastss 140(%rbp), %ymm12
-; AVX1-NEXT:    vmulps %ymm7, %ymm12, %ymm12
-; AVX1-NEXT:    vaddps %ymm12, %ymm11, %ymm11
-; AVX1-NEXT:    vbroadcastss 144(%rbp), %ymm12
-; AVX1-NEXT:    vmulps %ymm0, %ymm12, %ymm12
-; AVX1-NEXT:    vbroadcastss 148(%rbp), %ymm13
-; AVX1-NEXT:    vmulps %ymm1, %ymm13, %ymm13
-; AVX1-NEXT:    vaddps %ymm13, %ymm12, %ymm12
-; AVX1-NEXT:    vbroadcastss 152(%rbp), %ymm13
-; AVX1-NEXT:    vmulps %ymm2, %ymm13, %ymm13
-; AVX1-NEXT:    vaddps %ymm13, %ymm12, %ymm12
-; AVX1-NEXT:    vbroadcastss 156(%rbp), %ymm13
-; AVX1-NEXT:    vmulps %ymm3, %ymm13, %ymm13
-; AVX1-NEXT:    vaddps %ymm13, %ymm12, %ymm12
-; AVX1-NEXT:    vbroadcastss 160(%rbp), %ymm13
-; AVX1-NEXT:    vmulps %ymm4, %ymm13, %ymm13
-; AVX1-NEXT:    vaddps %ymm13, %ymm12, %ymm12
-; AVX1-NEXT:    vbroadcastss 164(%rbp), %ymm13
-; AVX1-NEXT:    vmulps %ymm5, %ymm13, %ymm13
-; AVX1-NEXT:    vaddps %ymm13, %ymm12, %ymm12
-; AVX1-NEXT:    vbroadcastss 168(%rbp), %ymm13
-; AVX1-NEXT:    vmulps %ymm6, %ymm13, %ymm13
-; AVX1-NEXT:    vaddps %ymm13, %ymm12, %ymm12
-; AVX1-NEXT:    vbroadcastss 172(%rbp), %ymm13
-; AVX1-NEXT:    vmulps %ymm7, %ymm13, %ymm13
-; AVX1-NEXT:    vaddps %ymm13, %ymm12, %ymm12
-; AVX1-NEXT:    vbroadcastss 176(%rbp), %ymm13
-; AVX1-NEXT:    vmulps %ymm0, %ymm13, %ymm13
-; AVX1-NEXT:    vbroadcastss 180(%rbp), %ymm14
-; AVX1-NEXT:    vmulps %ymm1, %ymm14, %ymm14
-; AVX1-NEXT:    vaddps %ymm14, %ymm13, %ymm13
-; AVX1-NEXT:    vbroadcastss 184(%rbp), %ymm14
-; AVX1-NEXT:    vmulps %ymm2, %ymm14, %ymm14
-; AVX1-NEXT:    vaddps %ymm14, %ymm13, %ymm13
-; AVX1-NEXT:    vbroadcastss 188(%rbp), %ymm14
-; AVX1-NEXT:    vmulps %ymm3, %ymm14, %ymm14
-; AVX1-NEXT:    vaddps %ymm14, %ymm13, %ymm13
-; AVX1-NEXT:    vbroadcastss 192(%rbp), %ymm14
-; AVX1-NEXT:    vmulps %ymm4, %ymm14, %ymm14
-; AVX1-NEXT:    vaddps %ymm14, %ymm13, %ymm13
-; AVX1-NEXT:    vbroadcastss 196(%rbp), %ymm14
-; AVX1-NEXT:    vmulps %ymm5, %ymm14, %ymm14
-; AVX1-NEXT:    vaddps %ymm14, %ymm13, %ymm13
-; AVX1-NEXT:    vbroadcastss 200(%rbp), %ymm14
-; AVX1-NEXT:    vmulps %ymm6, %ymm14, %ymm14
-; AVX1-NEXT:    vaddps %ymm14, %ymm13, %ymm13
-; AVX1-NEXT:    vbroadcastss 204(%rbp), %ymm14
-; AVX1-NEXT:    vmulps %ymm7, %ymm14, %ymm14
-; AVX1-NEXT:    vaddps %ymm14, %ymm13, %ymm13
-; AVX1-NEXT:    vbroadcastss 208(%rbp), %ymm14
-; AVX1-NEXT:    vmulps %ymm0, %ymm14, %ymm14
-; AVX1-NEXT:    vbroadcastss 212(%rbp), %ymm15
-; AVX1-NEXT:    vmulps %ymm1, %ymm15, %ymm15
-; AVX1-NEXT:    vaddps %ymm15, %ymm14, %ymm14
-; AVX1-NEXT:    vbroadcastss 216(%rbp), %ymm15
-; AVX1-NEXT:    vmulps %ymm2, %ymm15, %ymm15
-; AVX1-NEXT:    vaddps %ymm15, %ymm14, %ymm14
-; AVX1-NEXT:    vbroadcastss 220(%rbp), %ymm15
-; AVX1-NEXT:    vmulps %ymm3, %ymm15, %ymm15
-; AVX1-NEXT:    vaddps %ymm15, %ymm14, %ymm14
-; AVX1-NEXT:    vbroadcastss 224(%rbp), %ymm15
-; AVX1-NEXT:    vmulps %ymm4, %ymm15, %ymm15
-; AVX1-NEXT:    vaddps %ymm15, %ymm14, %ymm14
-; AVX1-NEXT:    vbroadcastss 228(%rbp), %ymm15
-; AVX1-NEXT:    vmulps %ymm5, %ymm15, %ymm15
-; AVX1-NEXT:    vaddps %ymm15, %ymm14, %ymm14
-; AVX1-NEXT:    vbroadcastss 232(%rbp), %ymm15
-; AVX1-NEXT:    vmulps %ymm6, %ymm15, %ymm15
-; AVX1-NEXT:    vaddps %ymm15, %ymm14, %ymm14
-; AVX1-NEXT:    vbroadcastss 236(%rbp), %ymm15
-; AVX1-NEXT:    vmulps %ymm7, %ymm15, %ymm15
-; AVX1-NEXT:    vaddps %ymm15, %ymm14, %ymm14
-; AVX1-NEXT:    vbroadcastss 240(%rbp), %ymm15
-; AVX1-NEXT:    vmulps %ymm0, %ymm15, %ymm0
-; AVX1-NEXT:    vbroadcastss 244(%rbp), %ymm15
-; AVX1-NEXT:    vmulps %ymm1, %ymm15, %ymm1
-; AVX1-NEXT:    vaddps %ymm1, %ymm0, %ymm0
-; AVX1-NEXT:    vbroadcastss 248(%rbp), %ymm1
-; AVX1-NEXT:    vmulps %ymm1, %ymm2, %ymm1
-; AVX1-NEXT:    vaddps %ymm1, %ymm0, %ymm0
-; AVX1-NEXT:    vbroadcastss 252(%rbp), %ymm1
-; AVX1-NEXT:    vmulps %ymm1, %ymm3, %ymm1
-; AVX1-NEXT:    vaddps %ymm1, %ymm0, %ymm0
-; AVX1-NEXT:    vbroadcastss 256(%rbp), %ymm1
-; AVX1-NEXT:    vmulps %ymm1, %ymm4, %ymm1
-; AVX1-NEXT:    vaddps %ymm1, %ymm0, %ymm0
-; AVX1-NEXT:    vbroadcastss 260(%rbp), %ymm1
-; AVX1-NEXT:    vmulps %ymm1, %ymm5, %ymm1
-; AVX1-NEXT:    vaddps %ymm1, %ymm0, %ymm0
-; AVX1-NEXT:    vbroadcastss 264(%rbp), %ymm1
-; AVX1-NEXT:    vmulps %ymm1, %ymm6, %ymm1
-; AVX1-NEXT:    vaddps %ymm1, %ymm0, %ymm0
-; AVX1-NEXT:    vbroadcastss 268(%rbp), %ymm1
-; AVX1-NEXT:    vmulps %ymm1, %ymm7, %ymm1
-; AVX1-NEXT:    vaddps %ymm1, %ymm0, %ymm0
-; AVX1-NEXT:    vmovaps %ymm0, 224(%rdi)
-; AVX1-NEXT:    vmovaps %ymm14, 192(%rdi)
-; AVX1-NEXT:    vmovaps %ymm13, 160(%rdi)
-; AVX1-NEXT:    vmovaps %ymm12, 128(%rdi)
-; AVX1-NEXT:    vmovaps %ymm11, 96(%rdi)
-; AVX1-NEXT:    vmovaps %ymm10, 64(%rdi)
-; AVX1-NEXT:    vmovaps %ymm9, 32(%rdi)
-; AVX1-NEXT:    vmovaps %ymm8, (%rdi)
-; AVX1-NEXT:    movq %rbp, %rsp
-; AVX1-NEXT:    popq %rbp
-; AVX1-NEXT:    vzeroupper
-; AVX1-NEXT:    retq
-;
-; AVX2-LABEL: test_mul8x8_f32:
-; AVX2:       # %bb.0: # %entry
-; AVX2-NEXT:    pushq %rbp
-; AVX2-NEXT:    movq %rsp, %rbp
-; AVX2-NEXT:    andq $-32, %rsp
-; AVX2-NEXT:    subq $32, %rsp
-; AVX2-NEXT:    movq %rdi, %rax
-; AVX2-NEXT:    vbroadcastss 16(%rbp), %ymm8
-; AVX2-NEXT:    vmulps %ymm0, %ymm8, %ymm8
-; AVX2-NEXT:    vbroadcastss 20(%rbp), %ymm9
-; AVX2-NEXT:    vmulps %ymm1, %ymm9, %ymm9
-; AVX2-NEXT:    vaddps %ymm9, %ymm8, %ymm8
-; AVX2-NEXT:    vbroadcastss 24(%rbp), %ymm9
-; AVX2-NEXT:    vmulps %ymm2, %ymm9, %ymm9
-; AVX2-NEXT:    vaddps %ymm9, %ymm8, %ymm8
-; AVX2-NEXT:    vbroadcastss 28(%rbp), %ymm9
-; AVX2-NEXT:    vmulps %ymm3, %ymm9, %ymm9
-; AVX2-NEXT:    vaddps %ymm9, %ymm8, %ymm8
-; AVX2-NEXT:    vbroadcastss 32(%rbp), %ymm9
-; AVX2-NEXT:    vmulps %ymm4, %ymm9, %ymm9
-; AVX2-NEXT:    vaddps %ymm9, %ymm8, %ymm8
-; AVX2-NEXT:    vbroadcastss 36(%rbp), %ymm9
-; AVX2-NEXT:    vmulps %ymm5, %ymm9, %ymm9
-; AVX2-NEXT:    vaddps %ymm9, %ymm8, %ymm8
-; AVX2-NEXT:    vbroadcastss 40(%rbp), %ymm9
-; AVX2-NEXT:    vmulps %ymm6, %ymm9, %ymm9
-; AVX2-NEXT:    vaddps %ymm9, %ymm8, %ymm8
-; AVX2-NEXT:    vbroadcastss 44(%rbp), %ymm9
-; AVX2-NEXT:    vmulps %ymm7, %ymm9, %ymm9
-; AVX2-NEXT:    vaddps %ymm9, %ymm8, %ymm8
-; AVX2-NEXT:    vbroadcastss 48(%rbp), %ymm9
-; AVX2-NEXT:    vmulps %ymm0, %ymm9, %ymm9
-; AVX2-NEXT:    vbroadcastss 52(%rbp), %ymm10
-; AVX2-NEXT:    vmulps %ymm1, %ymm10, %ymm10
-; AVX2-NEXT:    vaddps %ymm10, %ymm9, %ymm9
-; AVX2-NEXT:    vbroadcastss 56(%rbp), %ymm10
-; AVX2-NEXT:    vmulps %ymm2, %ymm10, %ymm10
-; AVX2-NEXT:    vaddps %ymm10, %ymm9, %ymm9
-; AVX2-NEXT:    vbroadcastss 60(%rbp), %ymm10
-; AVX2-NEXT:    vmulps %ymm3, %ymm10, %ymm10
-; AVX2-NEXT:    vaddps %ymm10, %ymm9, %ymm9
-; AVX2-NEXT:    vbroadcastss 64(%rbp), %ymm10
-; AVX2-NEXT:    vmulps %ymm4, %ymm10, %ymm10
-; AVX2-NEXT:    vaddps %ymm10, %ymm9, %ymm9
-; AVX2-NEXT:    vbroadcastss 68(%rbp), %ymm10
-; AVX2-NEXT:    vmulps %ymm5, %ymm10, %ymm10
-; AVX2-NEXT:    vaddps %ymm10, %ymm9, %ymm9
-; AVX2-NEXT:    vbroadcastss 72(%rbp), %ymm10
-; AVX2-NEXT:    vmulps %ymm6, %ymm10, %ymm10
-; AVX2-NEXT:    vaddps %ymm10, %ymm9, %ymm9
-; AVX2-NEXT:    vbroadcastss 76(%rbp), %ymm10
-; AVX2-NEXT:    vmulps %ymm7, %ymm10, %ymm10
-; AVX2-NEXT:    vaddps %ymm10, %ymm9, %ymm9
-; AVX2-NEXT:    vbroadcastss 80(%rbp), %ymm10
-; AVX2-NEXT:    vmulps %ymm0, %ymm10, %ymm10
-; AVX2-NEXT:    vbroadcastss 84(%rbp), %ymm11
-; AVX2-NEXT:    vmulps %ymm1, %ymm11, %ymm11
-; AVX2-NEXT:    vaddps %ymm11, %ymm10, %ymm10
-; AVX2-NEXT:    vbroadcastss 88(%rbp), %ymm11
-; AVX2-NEXT:    vmulps %ymm2, %ymm11, %ymm11
-; AVX2-NEXT:    vaddps %ymm11, %ymm10, %ymm10
-; AVX2-NEXT:    vbroadcastss 92(%rbp), %ymm11
-; AVX2-NEXT:    vmulps %ymm3, %ymm11, %ymm11
-; AVX2-NEXT:    vaddps %ymm11, %ymm10, %ymm10
-; AVX2-NEXT:    vbroadcastss 96(%rbp), %ymm11
-; AVX2-NEXT:    vmulps %ymm4, %ymm11, %ymm11
-; AVX2-NEXT:    vaddps %ymm11, %ymm10, %ymm10
-; AVX2-NEXT:    vbroadcastss 100(%rbp), %ymm11
-; AVX2-NEXT:    vmulps %ymm5, %ymm11, %ymm11
-; AVX2-NEXT:    vaddps %ymm11, %ymm10, %ymm10
-; AVX2-NEXT:    vbroadcastss 104(%rbp), %ymm11
-; AVX2-NEXT:    vmulps %ymm6, %ymm11, %ymm11
-; AVX2-NEXT:    vaddps %ymm11, %ymm10, %ymm10
-; AVX2-NEXT:    vbroadcastss 108(%rbp), %ymm11
-; AVX2-NEXT:    vmulps %ymm7, %ymm11, %ymm11
-; AVX2-NEXT:    vaddps %ymm11, %ymm10, %ymm10
-; AVX2-NEXT:    vbroadcastss 112(%rbp), %ymm11
-; AVX2-NEXT:    vmulps %ymm0, %ymm11, %ymm11
-; AVX2-NEXT:    vbroadcastss 116(%rbp), %ymm12
-; AVX2-NEXT:    vmulps %ymm1, %ymm12, %ymm12
-; AVX2-NEXT:    vaddps %ymm12, %ymm11, %ymm11
-; AVX2-NEXT:    vbroadcastss 120(%rbp), %ymm12
-; AVX2-NEXT:    vmulps %ymm2, %ymm12, %ymm12
-; AVX2-NEXT:    vaddps %ymm12, %ymm11, %ymm11
-; AVX2-NEXT:    vbroadcastss 124(%rbp), %ymm12
-; AVX2-NEXT:    vmulps %ymm3, %ymm12, %ymm12
-; AVX2-NEXT:    vaddps %ymm12, %ymm11, %ymm11
-; AVX2-NEXT:    vbroadcastss 128(%rbp), %ymm12
-; AVX2-NEXT:    vmulps %ymm4, %ymm12, %ymm12
-; AVX2-NEXT:    vaddps %ymm12, %ymm11, %ymm11
-; AVX2-NEXT:    vbroadcastss 132(%rbp), %ymm12
-; AVX2-NEXT:    vmulps %ymm5, %ymm12, %ymm12
-; AVX2-NEXT:    vaddps %ymm12, %ymm11, %ymm11
-; AVX2-NEXT:    vbroadcastss 136(%rbp), %ymm12
-; AVX2-NEXT:    vmulps %ymm6, %ymm12, %ymm12
-; AVX2-NEXT:    vaddps %ymm12, %ymm11, %ymm11
-; AVX2-NEXT:    vbroadcastss 140(%rbp), %ymm12
-; AVX2-NEXT:    vmulps %ymm7, %ymm12, %ymm12
-; AVX2-NEXT:    vaddps %ymm12, %ymm11, %ymm11
-; AVX2-NEXT:    vbroadcastss 144(%rbp), %ymm12
-; AVX2-NEXT:    vmulps %ymm0, %ymm12, %ymm12
-; AVX2-NEXT:    vbroadcastss 148(%rbp), %ymm13
-; AVX2-NEXT:    vmulps %ymm1, %ymm13, %ymm13
-; AVX2-NEXT:    vaddps %ymm13, %ymm12, %ymm12
-; AVX2-NEXT:    vbroadcastss 152(%rbp), %ymm13
-; AVX2-NEXT:    vmulps %ymm2, %ymm13, %ymm13
-; AVX2-NEXT:    vaddps %ymm13, %ymm12, %ymm12
-; AVX2-NEXT:    vbroadcastss 156(%rbp), %ymm13
-; AVX2-NEXT:    vmulps %ymm3, %ymm13, %ymm13
-; AVX2-NEXT:    vaddps %ymm13, %ymm12, %ymm12
-; AVX2-NEXT:    vbroadcastss 160(%rbp), %ymm13
-; AVX2-NEXT:    vmulps %ymm4, %ymm13, %ymm13
-; AVX2-NEXT:    vaddps %ymm13, %ymm12, %ymm12
-; AVX2-NEXT:    vbroadcastss 164(%rbp), %ymm13
-; AVX2-NEXT:    vmulps %ymm5, %ymm13, %ymm13
-; AVX2-NEXT:    vaddps %ymm13, %ymm12, %ymm12
-; AVX2-NEXT:    vbroadcastss 168(%rbp), %ymm13
-; AVX2-NEXT:    vmulps %ymm6, %ymm13, %ymm13
-; AVX2-NEXT:    vaddps %ymm13, %ymm12, %ymm12
-; AVX2-NEXT:    vbroadcastss 172(%rbp), %ymm13
-; AVX2-NEXT:    vmulps %ymm7, %ymm13, %ymm13
-; AVX2-NEXT:    vaddps %ymm13, %ymm12, %ymm12
-; AVX2-NEXT:    vbroadcastss 176(%rbp), %ymm13
-; AVX2-NEXT:    vmulps %ymm0, %ymm13, %ymm13
-; AVX2-NEXT:    vbroadcastss 180(%rbp), %ymm14
-; AVX2-NEXT:    vmulps %ymm1, %ymm14, %ymm14
-; AVX2-NEXT:    vaddps %ymm14, %ymm13, %ymm13
-; AVX2-NEXT:    vbroadcastss 184(%rbp), %ymm14
-; AVX2-NEXT:    vmulps %ymm2, %ymm14, %ymm14
-; AVX2-NEXT:    vaddps %ymm14, %ymm13, %ymm13
-; AVX2-NEXT:    vbroadcastss 188(%rbp), %ymm14
-; AVX2-NEXT:    vmulps %ymm3, %ymm14, %ymm14
-; AVX2-NEXT:    vaddps %ymm14, %ymm13, %ymm13
-; AVX2-NEXT:    vbroadcastss 192(%rbp), %ymm14
-; AVX2-NEXT:    vmulps %ymm4, %ymm14, %ymm14
-; AVX2-NEXT:    vaddps %ymm14, %ymm13, %ymm13
-; AVX2-NEXT:    vbroadcastss 196(%rbp), %ymm14
-; AVX2-NEXT:    vmulps %ymm5, %ymm14, %ymm14
-; AVX2-NEXT:    vaddps %ymm14, %ymm13, %ymm13
-; AVX2-NEXT:    vbroadcastss 200(%rbp), %ymm14
-; AVX2-NEXT:    vmulps %ymm6, %ymm14, %ymm14
-; AVX2-NEXT:    vaddps %ymm14, %ymm13, %ymm13
-; AVX2-NEXT:    vbroadcastss 204(%rbp), %ymm14
-; AVX2-NEXT:    vmulps %ymm7, %ymm14, %ymm14
-; AVX2-NEXT:    vaddps %ymm14, %ymm13, %ymm13
-; AVX2-NEXT:    vbroadcastss 208(%rbp), %ymm14
-; AVX2-NEXT:    vmulps %ymm0, %ymm14, %ymm14
-; AVX2-NEXT:    vbroadcastss 212(%rbp), %ymm15
-; AVX2-NEXT:    vmulps %ymm1, %ymm15, %ymm15
-; AVX2-NEXT:    vaddps %ymm15, %ymm14, %ymm14
-; AVX2-NEXT:    vbroadcastss 216(%rbp), %ymm15
-; AVX2-NEXT:    vmulps %ymm2, %ymm15, %ymm15
-; AVX2-NEXT:    vaddps %ymm15, %ymm14, %ymm14
-; AVX2-NEXT:    vbroadcastss 220(%rbp), %ymm15
-; AVX2-NEXT:    vmulps %ymm3, %ymm15, %ymm15
-; AVX2-NEXT:    vaddps %ymm15, %ymm14, %ymm14
-; AVX2-NEXT:    vbroadcastss 224(%rbp), %ymm15
-; AVX2-NEXT:    vmulps %ymm4, %ymm15, %ymm15
-; AVX2-NEXT:    vaddps %ymm15, %ymm14, %ymm14
-; AVX2-NEXT:    vbroadcastss 228(%rbp), %ymm15
-; AVX2-NEXT:    vmulps %ymm5, %ymm15, %ymm15
-; AVX2-NEXT:    vaddps %ymm15, %ymm14, %ymm14
-; AVX2-NEXT:    vbroadcastss 232(%rbp), %ymm15
-; AVX2-NEXT:    vmulps %ymm6, %ymm15, %ymm15
-; AVX2-NEXT:    vaddps %ymm15, %ymm14, %ymm14
-; AVX2-NEXT:    vbroadcastss 236(%rbp), %ymm15
-; AVX2-NEXT:    vmulps %ymm7, %ymm15, %ymm15
-; AVX2-NEXT:    vaddps %ymm15, %ymm14, %ymm14
-; AVX2-NEXT:    vbroadcastss 240(%rbp), %ymm15
-; AVX2-NEXT:    vmulps %ymm0, %ymm15, %ymm0
-; AVX2-NEXT:    vbroadcastss 244(%rbp), %ymm15
-; AVX2-NEXT:    vmulps %ymm1, %ymm15, %ymm1
-; AVX2-NEXT:    vaddps %ymm1, %ymm0, %ymm0
-; AVX2-NEXT:    vbroadcastss 248(%rbp), %ymm1
-; AVX2-NEXT:    vmulps %ymm1, %ymm2, %ymm1
-; AVX2-NEXT:    vaddps %ymm1, %ymm0, %ymm0
-; AVX2-NEXT:    vbroadcastss 252(%rbp), %ymm1
-; AVX2-NEXT:    vmulps %ymm1, %ymm3, %ymm1
-; AVX2-NEXT:    vaddps %ymm1, %ymm0, %ymm0
-; AVX2-NEXT:    vbroadcastss 256(%rbp), %ymm1
-; AVX2-NEXT:    vmulps %ymm1, %ymm4, %ymm1
-; AVX2-NEXT:    vaddps %ymm1, %ymm0, %ymm0
-; AVX2-NEXT:    vbroadcastss 260(%rbp), %ymm1
-; AVX2-NEXT:    vmulps %ymm1, %ymm5, %ymm1
-; AVX2-NEXT:    vaddps %ymm1, %ymm0, %ymm0
-; AVX2-NEXT:    vbroadcastss 264(%rbp), %ymm1
-; AVX2-NEXT:    vmulps %ymm1, %ymm6, %ymm1
-; AVX2-NEXT:    vaddps %ymm1, %ymm0, %ymm0
-; AVX2-NEXT:    vbroadcastss 268(%rbp), %ymm1
-; AVX2-NEXT:    vmulps %ymm1, %ymm7, %ymm1
-; AVX2-NEXT:    vaddps %ymm1, %ymm0, %ymm0
-; AVX2-NEXT:    vmovaps %ymm0, 224(%rdi)
-; AVX2-NEXT:    vmovaps %ymm14, 192(%rdi)
-; AVX2-NEXT:    vmovaps %ymm13, 160(%rdi)
-; AVX2-NEXT:    vmovaps %ymm12, 128(%rdi)
-; AVX2-NEXT:    vmovaps %ymm11, 96(%rdi)
-; AVX2-NEXT:    vmovaps %ymm10, 64(%rdi)
-; AVX2-NEXT:    vmovaps %ymm9, 32(%rdi)
-; AVX2-NEXT:    vmovaps %ymm8, (%rdi)
-; AVX2-NEXT:    movq %rbp, %rsp
-; AVX2-NEXT:    popq %rbp
-; AVX2-NEXT:    vzeroupper
-; AVX2-NEXT:    retq
+; AVX1OR2-LABEL: test_mul8x8_f32:
+; AVX1OR2:       # %bb.0: # %entry
+; AVX1OR2-NEXT:    pushq %rbp
+; AVX1OR2-NEXT:    movq %rsp, %rbp
+; AVX1OR2-NEXT:    andq $-32, %rsp
+; AVX1OR2-NEXT:    subq $32, %rsp
+; AVX1OR2-NEXT:    movq %rdi, %rax
+; AVX1OR2-NEXT:    vbroadcastss 16(%rbp), %ymm8
+; AVX1OR2-NEXT:    vmulps %ymm0, %ymm8, %ymm8
+; AVX1OR2-NEXT:    vbroadcastss 20(%rbp), %ymm9
+; AVX1OR2-NEXT:    vmulps %ymm1, %ymm9, %ymm9
+; AVX1OR2-NEXT:    vaddps %ymm9, %ymm8, %ymm8
+; AVX1OR2-NEXT:    vbroadcastss 24(%rbp), %ymm9
+; AVX1OR2-NEXT:    vmulps %ymm2, %ymm9, %ymm9
+; AVX1OR2-NEXT:    vaddps %ymm9, %ymm8, %ymm8
+; AVX1OR2-NEXT:    vbroadcastss 28(%rbp), %ymm9
+; AVX1OR2-NEXT:    vmulps %ymm3, %ymm9, %ymm9
+; AVX1OR2-NEXT:    vaddps %ymm9, %ymm8, %ymm8
+; AVX1OR2-NEXT:    vbroadcastss 32(%rbp), %ymm9
+; AVX1OR2-NEXT:    vmulps %ymm4, %ymm9, %ymm9
+; AVX1OR2-NEXT:    vaddps %ymm9, %ymm8, %ymm8
+; AVX1OR2-NEXT:    vbroadcastss 36(%rbp), %ymm9
+; AVX1OR2-NEXT:    vmulps %ymm5, %ymm9, %ymm9
+; AVX1OR2-NEXT:    vaddps %ymm9, %ymm8, %ymm8
+; AVX1OR2-NEXT:    vbroadcastss 40(%rbp), %ymm9
+; AVX1OR2-NEXT:    vmulps %ymm6, %ymm9, %ymm9
+; AVX1OR2-NEXT:    vaddps %ymm9, %ymm8, %ymm8
+; AVX1OR2-NEXT:    vbroadcastss 44(%rbp), %ymm9
+; AVX1OR2-NEXT:    vmulps %ymm7, %ymm9, %ymm9
+; AVX1OR2-NEXT:    vaddps %ymm9, %ymm8, %ymm8
+; AVX1OR2-NEXT:    vbroadcastss 48(%rbp), %ymm9
+; AVX1OR2-NEXT:    vmulps %ymm0, %ymm9, %ymm9
+; AVX1OR2-NEXT:    vbroadcastss 52(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmulps %ymm1, %ymm10, %ymm10
+; AVX1OR2-NEXT:    vaddps %ymm10, %ymm9, %ymm9
+; AVX1OR2-NEXT:    vbroadcastss 56(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmulps %ymm2, %ymm10, %ymm10
+; AVX1OR2-NEXT:    vaddps %ymm10, %ymm9, %ymm9
+; AVX1OR2-NEXT:    vbroadcastss 60(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmulps %ymm3, %ymm10, %ymm10
+; AVX1OR2-NEXT:    vaddps %ymm10, %ymm9, %ymm9
+; AVX1OR2-NEXT:    vbroadcastss 64(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmulps %ymm4, %ymm10, %ymm10
+; AVX1OR2-NEXT:    vaddps %ymm10, %ymm9, %ymm9
+; AVX1OR2-NEXT:    vbroadcastss 68(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmulps %ymm5, %ymm10, %ymm10
+; AVX1OR2-NEXT:    vaddps %ymm10, %ymm9, %ymm9
+; AVX1OR2-NEXT:    vbroadcastss 72(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmulps %ymm6, %ymm10, %ymm10
+; AVX1OR2-NEXT:    vaddps %ymm10, %ymm9, %ymm9
+; AVX1OR2-NEXT:    vbroadcastss 76(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmulps %ymm7, %ymm10, %ymm10
+; AVX1OR2-NEXT:    vaddps %ymm10, %ymm9, %ymm9
+; AVX1OR2-NEXT:    vbroadcastss 80(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmulps %ymm0, %ymm10, %ymm10
+; AVX1OR2-NEXT:    vbroadcastss 84(%rbp), %ymm11
+; AVX1OR2-NEXT:    vmulps %ymm1, %ymm11, %ymm11
+; AVX1OR2-NEXT:    vaddps %ymm11, %ymm10, %ymm10
+; AVX1OR2-NEXT:    vbroadcastss 88(%rbp), %ymm11
+; AVX1OR2-NEXT:    vmulps %ymm2, %ymm11, %ymm11
+; AVX1OR2-NEXT:    vaddps %ymm11, %ymm10, %ymm10
+; AVX1OR2-NEXT:    vbroadcastss 92(%rbp), %ymm11
+; AVX1OR2-NEXT:    vmulps %ymm3, %ymm11, %ymm11
+; AVX1OR2-NEXT:    vaddps %ymm11, %ymm10, %ymm10
+; AVX1OR2-NEXT:    vbroadcastss 96(%rbp), %ymm11
+; AVX1OR2-NEXT:    vmulps %ymm4, %ymm11, %ymm11
+; AVX1OR2-NEXT:    vaddps %ymm11, %ymm10, %ymm10
+; AVX1OR2-NEXT:    vbroadcastss 100(%rbp), %ymm11
+; AVX1OR2-NEXT:    vmulps %ymm5, %ymm11, %ymm11
+; AVX1OR2-NEXT:    vaddps %ymm11, %ymm10, %ymm10
+; AVX1OR2-NEXT:    vbroadcastss 104(%rbp), %ymm11
+; AVX1OR2-NEXT:    vmulps %ymm6, %ymm11, %ymm11
+; AVX1OR2-NEXT:    vaddps %ymm11, %ymm10, %ymm10
+; AVX1OR2-NEXT:    vbroadcastss 108(%rbp), %ymm11
+; AVX1OR2-NEXT:    vmulps %ymm7, %ymm11, %ymm11
+; AVX1OR2-NEXT:    vaddps %ymm11, %ymm10, %ymm10
+; AVX1OR2-NEXT:    vbroadcastss 112(%rbp), %ymm11
+; AVX1OR2-NEXT:    vmulps %ymm0, %ymm11, %ymm11
+; AVX1OR2-NEXT:    vbroadcastss 116(%rbp), %ymm12
+; AVX1OR2-NEXT:    vmulps %ymm1, %ymm12, %ymm12
+; AVX1OR2-NEXT:    vaddps %ymm12, %ymm11, %ymm11
+; AVX1OR2-NEXT:    vbroadcastss 120(%rbp), %ymm12
+; AVX1OR2-NEXT:    vmulps %ymm2, %ymm12, %ymm12
+; AVX1OR2-NEXT:    vaddps %ymm12, %ymm11, %ymm11
+; AVX1OR2-NEXT:    vbroadcastss 124(%rbp), %ymm12
+; AVX1OR2-NEXT:    vmulps %ymm3, %ymm12, %ymm12
+; AVX1OR2-NEXT:    vaddps %ymm12, %ymm11, %ymm11
+; AVX1OR2-NEXT:    vbroadcastss 128(%rbp), %ymm12
+; AVX1OR2-NEXT:    vmulps %ymm4, %ymm12, %ymm12
+; AVX1OR2-NEXT:    vaddps %ymm12, %ymm11, %ymm11
+; AVX1OR2-NEXT:    vbroadcastss 132(%rbp), %ymm12
+; AVX1OR2-NEXT:    vmulps %ymm5, %ymm12, %ymm12
+; AVX1OR2-NEXT:    vaddps %ymm12, %ymm11, %ymm11
+; AVX1OR2-NEXT:    vbroadcastss 136(%rbp), %ymm12
+; AVX1OR2-NEXT:    vmulps %ymm6, %ymm12, %ymm12
+; AVX1OR2-NEXT:    vaddps %ymm12, %ymm11, %ymm11
+; AVX1OR2-NEXT:    vbroadcastss 140(%rbp), %ymm12
+; AVX1OR2-NEXT:    vmulps %ymm7, %ymm12, %ymm12
+; AVX1OR2-NEXT:    vaddps %ymm12, %ymm11, %ymm11
+; AVX1OR2-NEXT:    vbroadcastss 144(%rbp), %ymm12
+; AVX1OR2-NEXT:    vmulps %ymm0, %ymm12, %ymm12
+; AVX1OR2-NEXT:    vbroadcastss 148(%rbp), %ymm13
+; AVX1OR2-NEXT:    vmulps %ymm1, %ymm13, %ymm13
+; AVX1OR2-NEXT:    vaddps %ymm13, %ymm12, %ymm12
+; AVX1OR2-NEXT:    vbroadcastss 152(%rbp), %ymm13
+; AVX1OR2-NEXT:    vmulps %ymm2, %ymm13, %ymm13
+; AVX1OR2-NEXT:    vaddps %ymm13, %ymm12, %ymm12
+; AVX1OR2-NEXT:    vbroadcastss 156(%rbp), %ymm13
+; AVX1OR2-NEXT:    vmulps %ymm3, %ymm13, %ymm13
+; AVX1OR2-NEXT:    vaddps %ymm13, %ymm12, %ymm12
+; AVX1OR2-NEXT:    vbroadcastss 160(%rbp), %ymm13
+; AVX1OR2-NEXT:    vmulps %ymm4, %ymm13, %ymm13
+; AVX1OR2-NEXT:    vaddps %ymm13, %ymm12, %ymm12
+; AVX1OR2-NEXT:    vbroadcastss 164(%rbp), %ymm13
+; AVX1OR2-NEXT:    vmulps %ymm5, %ymm13, %ymm13
+; AVX1OR2-NEXT:    vaddps %ymm13, %ymm12, %ymm12
+; AVX1OR2-NEXT:    vbroadcastss 168(%rbp), %ymm13
+; AVX1OR2-NEXT:    vmulps %ymm6, %ymm13, %ymm13
+; AVX1OR2-NEXT:    vaddps %ymm13, %ymm12, %ymm12
+; AVX1OR2-NEXT:    vbroadcastss 172(%rbp), %ymm13
+; AVX1OR2-NEXT:    vmulps %ymm7, %ymm13, %ymm13
+; AVX1OR2-NEXT:    vaddps %ymm13, %ymm12, %ymm12
+; AVX1OR2-NEXT:    vbroadcastss 176(%rbp), %ymm13
+; AVX1OR2-NEXT:    vmulps %ymm0, %ymm13, %ymm13
+; AVX1OR2-NEXT:    vbroadcastss 180(%rbp), %ymm14
+; AVX1OR2-NEXT:    vmulps %ymm1, %ymm14, %ymm14
+; AVX1OR2-NEXT:    vaddps %ymm14, %ymm13, %ymm13
+; AVX1OR2-NEXT:    vbroadcastss 184(%rbp), %ymm14
+; AVX1OR2-NEXT:    vmulps %ymm2, %ymm14, %ymm14
+; AVX1OR2-NEXT:    vaddps %ymm14, %ymm13, %ymm13
+; AVX1OR2-NEXT:    vbroadcastss 188(%rbp), %ymm14
+; AVX1OR2-NEXT:    vmulps %ymm3, %ymm14, %ymm14
+; AVX1OR2-NEXT:    vaddps %ymm14, %ymm13, %ymm13
+; AVX1OR2-NEXT:    vbroadcastss 192(%rbp), %ymm14
+; AVX1OR2-NEXT:    vmulps %ymm4, %ymm14, %ymm14
+; AVX1OR2-NEXT:    vaddps %ymm14, %ymm13, %ymm13
+; AVX1OR2-NEXT:    vbroadcastss 196(%rbp), %ymm14
+; AVX1OR2-NEXT:    vmulps %ymm5, %ymm14, %ymm14
+; AVX1OR2-NEXT:    vaddps %ymm14, %ymm13, %ymm13
+; AVX1OR2-NEXT:    vbroadcastss 200(%rbp), %ymm14
+; AVX1OR2-NEXT:    vmulps %ymm6, %ymm14, %ymm14
+; AVX1OR2-NEXT:    vaddps %ymm14, %ymm13, %ymm13
+; AVX1OR2-NEXT:    vbroadcastss 204(%rbp), %ymm14
+; AVX1OR2-NEXT:    vmulps %ymm7, %ymm14, %ymm14
+; AVX1OR2-NEXT:    vaddps %ymm14, %ymm13, %ymm13
+; AVX1OR2-NEXT:    vbroadcastss 208(%rbp), %ymm14
+; AVX1OR2-NEXT:    vmulps %ymm0, %ymm14, %ymm14
+; AVX1OR2-NEXT:    vbroadcastss 212(%rbp), %ymm15
+; AVX1OR2-NEXT:    vmulps %ymm1, %ymm15, %ymm15
+; AVX1OR2-NEXT:    vaddps %ymm15, %ymm14, %ymm14
+; AVX1OR2-NEXT:    vbroadcastss 216(%rbp), %ymm15
+; AVX1OR2-NEXT:    vmulps %ymm2, %ymm15, %ymm15
+; AVX1OR2-NEXT:    vaddps %ymm15, %ymm14, %ymm14
+; AVX1OR2-NEXT:    vbroadcastss 220(%rbp), %ymm15
+; AVX1OR2-NEXT:    vmulps %ymm3, %ymm15, %ymm15
+; AVX1OR2-NEXT:    vaddps %ymm15, %ymm14, %ymm14
+; AVX1OR2-NEXT:    vbroadcastss 224(%rbp), %ymm15
+; AVX1OR2-NEXT:    vmulps %ymm4, %ymm15, %ymm15
+; AVX1OR2-NEXT:    vaddps %ymm15, %ymm14, %ymm14
+; AVX1OR2-NEXT:    vbroadcastss 228(%rbp), %ymm15
+; AVX1OR2-NEXT:    vmulps %ymm5, %ymm15, %ymm15
+; AVX1OR2-NEXT:    vaddps %ymm15, %ymm14, %ymm14
+; AVX1OR2-NEXT:    vbroadcastss 232(%rbp), %ymm15
+; AVX1OR2-NEXT:    vmulps %ymm6, %ymm15, %ymm15
+; AVX1OR2-NEXT:    vaddps %ymm15, %ymm14, %ymm14
+; AVX1OR2-NEXT:    vbroadcastss 236(%rbp), %ymm15
+; AVX1OR2-NEXT:    vmulps %ymm7, %ymm15, %ymm15
+; AVX1OR2-NEXT:    vaddps %ymm15, %ymm14, %ymm14
+; AVX1OR2-NEXT:    vbroadcastss 240(%rbp), %ymm15
+; AVX1OR2-NEXT:    vmulps %ymm0, %ymm15, %ymm0
+; AVX1OR2-NEXT:    vbroadcastss 244(%rbp), %ymm15
+; AVX1OR2-NEXT:    vmulps %ymm1, %ymm15, %ymm1
+; AVX1OR2-NEXT:    vaddps %ymm1, %ymm0, %ymm0
+; AVX1OR2-NEXT:    vbroadcastss 248(%rbp), %ymm1
+; AVX1OR2-NEXT:    vmulps %ymm1, %ymm2, %ymm1
+; AVX1OR2-NEXT:    vaddps %ymm1, %ymm0, %ymm0
+; AVX1OR2-NEXT:    vbroadcastss 252(%rbp), %ymm1
+; AVX1OR2-NEXT:    vmulps %ymm1, %ymm3, %ymm1
+; AVX1OR2-NEXT:    vaddps %ymm1, %ymm0, %ymm0
+; AVX1OR2-NEXT:    vbroadcastss 256(%rbp), %ymm1
+; AVX1OR2-NEXT:    vmulps %ymm1, %ymm4, %ymm1
+; AVX1OR2-NEXT:    vaddps %ymm1, %ymm0, %ymm0
+; AVX1OR2-NEXT:    vbroadcastss 260(%rbp), %ymm1
+; AVX1OR2-NEXT:    vmulps %ymm1, %ymm5, %ymm1
+; AVX1OR2-NEXT:    vaddps %ymm1, %ymm0, %ymm0
+; AVX1OR2-NEXT:    vbroadcastss 264(%rbp), %ymm1
+; AVX1OR2-NEXT:    vmulps %ymm1, %ymm6, %ymm1
+; AVX1OR2-NEXT:    vaddps %ymm1, %ymm0, %ymm0
+; AVX1OR2-NEXT:    vbroadcastss 268(%rbp), %ymm1
+; AVX1OR2-NEXT:    vmulps %ymm1, %ymm7, %ymm1
+; AVX1OR2-NEXT:    vaddps %ymm1, %ymm0, %ymm0
+; AVX1OR2-NEXT:    vmovaps %ymm0, 224(%rdi)
+; AVX1OR2-NEXT:    vmovaps %ymm14, 192(%rdi)
+; AVX1OR2-NEXT:    vmovaps %ymm13, 160(%rdi)
+; AVX1OR2-NEXT:    vmovaps %ymm12, 128(%rdi)
+; AVX1OR2-NEXT:    vmovaps %ymm11, 96(%rdi)
+; AVX1OR2-NEXT:    vmovaps %ymm10, 64(%rdi)
+; AVX1OR2-NEXT:    vmovaps %ymm9, 32(%rdi)
+; AVX1OR2-NEXT:    vmovaps %ymm8, (%rdi)
+; AVX1OR2-NEXT:    movq %rbp, %rsp
+; AVX1OR2-NEXT:    popq %rbp
+; AVX1OR2-NEXT:    vzeroupper
+; AVX1OR2-NEXT:    retq
 ;
 ; AVX512F-LABEL: test_mul8x8_f32:
 ; AVX512F:       # %bb.0: # %entry
@@ -4226,803 +4022,404 @@ define <64 x double> @test_mul8x8_f64(<64 x double> %a0, <64 x double> %a1) noun
 ; SSE-NEXT:    addq $328, %rsp # imm = 0x148
 ; SSE-NEXT:    retq
 ;
-; AVX1-LABEL: test_mul8x8_f64:
-; AVX1:       # %bb.0: # %entry
-; AVX1-NEXT:    pushq %rbp
-; AVX1-NEXT:    movq %rsp, %rbp
-; AVX1-NEXT:    andq $-32, %rsp
-; AVX1-NEXT:    subq $448, %rsp # imm = 0x1C0
-; AVX1-NEXT:    vmovapd %ymm2, %ymm12
-; AVX1-NEXT:    vmovapd %ymm0, (%rsp) # 32-byte Spill
-; AVX1-NEXT:    movq %rdi, %rax
-; AVX1-NEXT:    vmovapd 144(%rbp), %ymm13
-; AVX1-NEXT:    vmovapd 112(%rbp), %ymm14
-; AVX1-NEXT:    vbroadcastsd 272(%rbp), %ymm10
-; AVX1-NEXT:    vmulpd %ymm1, %ymm10, %ymm8
-; AVX1-NEXT:    vmovapd %ymm1, %ymm9
-; AVX1-NEXT:    vmulpd %ymm0, %ymm10, %ymm0
-; AVX1-NEXT:    vbroadcastsd 280(%rbp), %ymm10
-; AVX1-NEXT:    vmulpd %ymm3, %ymm10, %ymm11
-; AVX1-NEXT:    vaddpd %ymm11, %ymm8, %ymm1
-; AVX1-NEXT:    vmulpd %ymm2, %ymm10, %ymm10
-; AVX1-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
-; AVX1-NEXT:    vbroadcastsd 288(%rbp), %ymm10
-; AVX1-NEXT:    vmulpd %ymm4, %ymm10, %ymm11
-; AVX1-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
-; AVX1-NEXT:    vmulpd %ymm5, %ymm10, %ymm10
-; AVX1-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
-; AVX1-NEXT:    vbroadcastsd 296(%rbp), %ymm10
-; AVX1-NEXT:    vmulpd %ymm7, %ymm10, %ymm11
-; AVX1-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX1-NEXT:    vmulpd %ymm6, %ymm10, %ymm10
-; AVX1-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
-; AVX1-NEXT:    vbroadcastsd 304(%rbp), %ymm10
-; AVX1-NEXT:    vmulpd 16(%rbp), %ymm10, %ymm11
-; AVX1-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
-; AVX1-NEXT:    vmulpd 48(%rbp), %ymm10, %ymm10
-; AVX1-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
-; AVX1-NEXT:    vbroadcastsd 312(%rbp), %ymm10
-; AVX1-NEXT:    vmulpd %ymm10, %ymm14, %ymm11
-; AVX1-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX1-NEXT:    vmulpd 80(%rbp), %ymm10, %ymm10
-; AVX1-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
-; AVX1-NEXT:    vbroadcastsd 320(%rbp), %ymm10
-; AVX1-NEXT:    vmulpd %ymm10, %ymm13, %ymm11
-; AVX1-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
-; AVX1-NEXT:    vmulpd 176(%rbp), %ymm10, %ymm10
-; AVX1-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
-; AVX1-NEXT:    vbroadcastsd 328(%rbp), %ymm10
-; AVX1-NEXT:    vmulpd 240(%rbp), %ymm10, %ymm11
-; AVX1-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX1-NEXT:    vmovapd %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
-; AVX1-NEXT:    vmulpd 208(%rbp), %ymm10, %ymm1
-; AVX1-NEXT:    vaddpd %ymm1, %ymm0, %ymm0
-; AVX1-NEXT:    vmovapd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
-; AVX1-NEXT:    vbroadcastsd 336(%rbp), %ymm0
-; AVX1-NEXT:    vmulpd %ymm0, %ymm9, %ymm1
-; AVX1-NEXT:    vbroadcastsd 344(%rbp), %ymm10
-; AVX1-NEXT:    vmulpd %ymm3, %ymm10, %ymm11
-; AVX1-NEXT:    vmovapd %ymm3, %ymm8
-; AVX1-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX1-NEXT:    vmovapd (%rsp), %ymm15 # 32-byte Reload
-; AVX1-NEXT:    vmulpd %ymm0, %ymm15, %ymm0
-; AVX1-NEXT:    vmulpd %ymm2, %ymm10, %ymm10
-; AVX1-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
-; AVX1-NEXT:    vbroadcastsd 352(%rbp), %ymm10
-; AVX1-NEXT:    vmulpd %ymm4, %ymm10, %ymm11
-; AVX1-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
-; AVX1-NEXT:    vmulpd %ymm5, %ymm10, %ymm10
-; AVX1-NEXT:    vmovapd %ymm5, %ymm3
-; AVX1-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
-; AVX1-NEXT:    vbroadcastsd 360(%rbp), %ymm10
-; AVX1-NEXT:    vmulpd %ymm7, %ymm10, %ymm11
-; AVX1-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX1-NEXT:    vmulpd %ymm6, %ymm10, %ymm10
-; AVX1-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
-; AVX1-NEXT:    vbroadcastsd 368(%rbp), %ymm10
-; AVX1-NEXT:    vmovapd 16(%rbp), %ymm2
-; AVX1-NEXT:    vmulpd %ymm2, %ymm10, %ymm11
-; AVX1-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
-; AVX1-NEXT:    vmulpd 48(%rbp), %ymm10, %ymm10
-; AVX1-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
-; AVX1-NEXT:    vbroadcastsd 376(%rbp), %ymm10
-; AVX1-NEXT:    vmulpd %ymm10, %ymm14, %ymm11
-; AVX1-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX1-NEXT:    vmovapd 80(%rbp), %ymm2
-; AVX1-NEXT:    vmulpd %ymm2, %ymm10, %ymm10
-; AVX1-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
-; AVX1-NEXT:    vbroadcastsd 384(%rbp), %ymm10
-; AVX1-NEXT:    vmulpd %ymm10, %ymm13, %ymm11
-; AVX1-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
-; AVX1-NEXT:    vmovapd 176(%rbp), %ymm14
-; AVX1-NEXT:    vmulpd %ymm10, %ymm14, %ymm10
-; AVX1-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
-; AVX1-NEXT:    vbroadcastsd 392(%rbp), %ymm10
-; AVX1-NEXT:    vmovapd 240(%rbp), %ymm2
-; AVX1-NEXT:    vmulpd %ymm2, %ymm10, %ymm11
-; AVX1-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX1-NEXT:    vmovapd %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
-; AVX1-NEXT:    vmulpd 208(%rbp), %ymm10, %ymm1
-; AVX1-NEXT:    vaddpd %ymm1, %ymm0, %ymm0
-; AVX1-NEXT:    vmovapd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
-; AVX1-NEXT:    vbroadcastsd 400(%rbp), %ymm0
-; AVX1-NEXT:    vmulpd %ymm0, %ymm9, %ymm1
-; AVX1-NEXT:    vbroadcastsd 408(%rbp), %ymm10
-; AVX1-NEXT:    vmovapd %ymm8, %ymm5
-; AVX1-NEXT:    vmulpd %ymm10, %ymm8, %ymm11
-; AVX1-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX1-NEXT:    vmulpd %ymm0, %ymm15, %ymm0
-; AVX1-NEXT:    vmulpd %ymm10, %ymm12, %ymm10
-; AVX1-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
-; AVX1-NEXT:    vbroadcastsd 416(%rbp), %ymm10
-; AVX1-NEXT:    vmulpd %ymm4, %ymm10, %ymm11
-; AVX1-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
-; AVX1-NEXT:    vmulpd %ymm3, %ymm10, %ymm10
-; AVX1-NEXT:    vmovapd %ymm3, %ymm2
-; AVX1-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
-; AVX1-NEXT:    vbroadcastsd 424(%rbp), %ymm10
-; AVX1-NEXT:    vmulpd %ymm7, %ymm10, %ymm11
-; AVX1-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX1-NEXT:    vmulpd %ymm6, %ymm10, %ymm10
-; AVX1-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
-; AVX1-NEXT:    vbroadcastsd 432(%rbp), %ymm10
-; AVX1-NEXT:    vmulpd 16(%rbp), %ymm10, %ymm11
-; AVX1-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
-; AVX1-NEXT:    vmulpd 48(%rbp), %ymm10, %ymm10
-; AVX1-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
-; AVX1-NEXT:    vbroadcastsd 440(%rbp), %ymm10
-; AVX1-NEXT:    vmulpd 112(%rbp), %ymm10, %ymm11
-; AVX1-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX1-NEXT:    vmulpd 80(%rbp), %ymm10, %ymm10
-; AVX1-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
-; AVX1-NEXT:    vbroadcastsd 448(%rbp), %ymm10
-; AVX1-NEXT:    vmulpd %ymm10, %ymm13, %ymm11
-; AVX1-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
-; AVX1-NEXT:    vmulpd %ymm10, %ymm14, %ymm10
-; AVX1-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
-; AVX1-NEXT:    vbroadcastsd 456(%rbp), %ymm10
-; AVX1-NEXT:    vmulpd 240(%rbp), %ymm10, %ymm11
-; AVX1-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX1-NEXT:    vmovapd %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
-; AVX1-NEXT:    vmulpd 208(%rbp), %ymm10, %ymm1
-; AVX1-NEXT:    vaddpd %ymm1, %ymm0, %ymm0
-; AVX1-NEXT:    vmovapd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
-; AVX1-NEXT:    vbroadcastsd 464(%rbp), %ymm0
-; AVX1-NEXT:    vmulpd %ymm0, %ymm9, %ymm1
-; AVX1-NEXT:    vmovapd %ymm9, %ymm13
-; AVX1-NEXT:    vbroadcastsd 472(%rbp), %ymm10
-; AVX1-NEXT:    vmulpd %ymm10, %ymm8, %ymm11
-; AVX1-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX1-NEXT:    vmulpd %ymm0, %ymm15, %ymm0
-; AVX1-NEXT:    vmovapd %ymm15, %ymm9
-; AVX1-NEXT:    vmulpd %ymm10, %ymm12, %ymm10
-; AVX1-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
-; AVX1-NEXT:    vbroadcastsd 480(%rbp), %ymm10
-; AVX1-NEXT:    vmulpd %ymm4, %ymm10, %ymm11
-; AVX1-NEXT:    vmovapd %ymm4, %ymm3
-; AVX1-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
-; AVX1-NEXT:    vmovapd %ymm2, %ymm15
-; AVX1-NEXT:    vmulpd %ymm2, %ymm10, %ymm10
-; AVX1-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
-; AVX1-NEXT:    vbroadcastsd 488(%rbp), %ymm10
-; AVX1-NEXT:    vmovapd %ymm7, %ymm8
-; AVX1-NEXT:    vmulpd %ymm7, %ymm10, %ymm11
-; AVX1-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX1-NEXT:    vmovapd %ymm6, %ymm7
-; AVX1-NEXT:    vmulpd %ymm6, %ymm10, %ymm10
-; AVX1-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
-; AVX1-NEXT:    vbroadcastsd 496(%rbp), %ymm10
-; AVX1-NEXT:    vmulpd 16(%rbp), %ymm10, %ymm11
-; AVX1-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
-; AVX1-NEXT:    vmovapd 48(%rbp), %ymm4
-; AVX1-NEXT:    vmulpd %ymm4, %ymm10, %ymm10
-; AVX1-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
-; AVX1-NEXT:    vbroadcastsd 504(%rbp), %ymm10
-; AVX1-NEXT:    vmovapd 112(%rbp), %ymm2
-; AVX1-NEXT:    vmulpd %ymm2, %ymm10, %ymm11
-; AVX1-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX1-NEXT:    vmovapd 80(%rbp), %ymm14
-; AVX1-NEXT:    vmulpd %ymm10, %ymm14, %ymm10
-; AVX1-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
-; AVX1-NEXT:    vbroadcastsd 512(%rbp), %ymm10
-; AVX1-NEXT:    vmulpd 144(%rbp), %ymm10, %ymm11
-; AVX1-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
-; AVX1-NEXT:    vmovapd 176(%rbp), %ymm2
-; AVX1-NEXT:    vmulpd %ymm2, %ymm10, %ymm10
-; AVX1-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
-; AVX1-NEXT:    vbroadcastsd 520(%rbp), %ymm10
-; AVX1-NEXT:    vmulpd 240(%rbp), %ymm10, %ymm11
-; AVX1-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX1-NEXT:    vmovapd %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
-; AVX1-NEXT:    vmulpd 208(%rbp), %ymm10, %ymm1
-; AVX1-NEXT:    vaddpd %ymm1, %ymm0, %ymm0
-; AVX1-NEXT:    vmovapd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
-; AVX1-NEXT:    vbroadcastsd 528(%rbp), %ymm0
-; AVX1-NEXT:    vmulpd %ymm0, %ymm13, %ymm1
-; AVX1-NEXT:    vbroadcastsd 536(%rbp), %ymm10
-; AVX1-NEXT:    vmulpd %ymm5, %ymm10, %ymm11
-; AVX1-NEXT:    vmovapd %ymm5, %ymm6
-; AVX1-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX1-NEXT:    vmulpd %ymm0, %ymm9, %ymm0
-; AVX1-NEXT:    vmulpd %ymm10, %ymm12, %ymm10
-; AVX1-NEXT:    vmovapd %ymm12, %ymm5
-; AVX1-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
-; AVX1-NEXT:    vbroadcastsd 544(%rbp), %ymm10
-; AVX1-NEXT:    vmulpd %ymm3, %ymm10, %ymm11
-; AVX1-NEXT:    vmovapd %ymm3, %ymm12
-; AVX1-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
-; AVX1-NEXT:    vmulpd %ymm10, %ymm15, %ymm10
-; AVX1-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
-; AVX1-NEXT:    vbroadcastsd 552(%rbp), %ymm10
-; AVX1-NEXT:    vmulpd %ymm10, %ymm8, %ymm11
-; AVX1-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX1-NEXT:    vmulpd %ymm7, %ymm10, %ymm10
-; AVX1-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
-; AVX1-NEXT:    vbroadcastsd 560(%rbp), %ymm10
-; AVX1-NEXT:    vmulpd 16(%rbp), %ymm10, %ymm11
-; AVX1-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
-; AVX1-NEXT:    vmulpd %ymm4, %ymm10, %ymm10
-; AVX1-NEXT:    vmovapd %ymm4, %ymm3
-; AVX1-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
-; AVX1-NEXT:    vbroadcastsd 568(%rbp), %ymm10
-; AVX1-NEXT:    vmulpd 112(%rbp), %ymm10, %ymm11
-; AVX1-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX1-NEXT:    vmulpd %ymm10, %ymm14, %ymm10
-; AVX1-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
-; AVX1-NEXT:    vbroadcastsd 576(%rbp), %ymm10
-; AVX1-NEXT:    vmovapd 144(%rbp), %ymm4
-; AVX1-NEXT:    vmulpd %ymm4, %ymm10, %ymm11
-; AVX1-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
-; AVX1-NEXT:    vmulpd %ymm2, %ymm10, %ymm10
-; AVX1-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
-; AVX1-NEXT:    vbroadcastsd 584(%rbp), %ymm10
-; AVX1-NEXT:    vmovapd 240(%rbp), %ymm14
-; AVX1-NEXT:    vmulpd %ymm10, %ymm14, %ymm11
-; AVX1-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX1-NEXT:    vmovapd %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
-; AVX1-NEXT:    vmovapd 208(%rbp), %ymm2
-; AVX1-NEXT:    vmulpd %ymm2, %ymm10, %ymm1
-; AVX1-NEXT:    vaddpd %ymm1, %ymm0, %ymm0
-; AVX1-NEXT:    vmovapd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
-; AVX1-NEXT:    vbroadcastsd 592(%rbp), %ymm0
-; AVX1-NEXT:    vmulpd %ymm0, %ymm13, %ymm1
-; AVX1-NEXT:    vbroadcastsd 600(%rbp), %ymm10
-; AVX1-NEXT:    vmulpd %ymm6, %ymm10, %ymm11
-; AVX1-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX1-NEXT:    vmulpd %ymm0, %ymm9, %ymm0
-; AVX1-NEXT:    vmulpd %ymm5, %ymm10, %ymm10
-; AVX1-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
-; AVX1-NEXT:    vbroadcastsd 608(%rbp), %ymm10
-; AVX1-NEXT:    vmulpd %ymm10, %ymm12, %ymm11
-; AVX1-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
-; AVX1-NEXT:    vmulpd %ymm10, %ymm15, %ymm10
-; AVX1-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
-; AVX1-NEXT:    vbroadcastsd 616(%rbp), %ymm10
-; AVX1-NEXT:    vmulpd %ymm10, %ymm8, %ymm11
-; AVX1-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX1-NEXT:    vmulpd %ymm7, %ymm10, %ymm10
-; AVX1-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
-; AVX1-NEXT:    vbroadcastsd 624(%rbp), %ymm10
-; AVX1-NEXT:    vmulpd 16(%rbp), %ymm10, %ymm11
-; AVX1-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
-; AVX1-NEXT:    vmulpd %ymm3, %ymm10, %ymm10
-; AVX1-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
-; AVX1-NEXT:    vbroadcastsd 632(%rbp), %ymm10
-; AVX1-NEXT:    vmovapd 112(%rbp), %ymm3
-; AVX1-NEXT:    vmulpd %ymm3, %ymm10, %ymm11
-; AVX1-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX1-NEXT:    vmovapd 80(%rbp), %ymm3
-; AVX1-NEXT:    vmulpd %ymm3, %ymm10, %ymm10
-; AVX1-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
-; AVX1-NEXT:    vbroadcastsd 640(%rbp), %ymm10
-; AVX1-NEXT:    vmulpd %ymm4, %ymm10, %ymm11
-; AVX1-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
-; AVX1-NEXT:    vmovapd 176(%rbp), %ymm3
-; AVX1-NEXT:    vmulpd %ymm3, %ymm10, %ymm10
-; AVX1-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
-; AVX1-NEXT:    vbroadcastsd 648(%rbp), %ymm10
-; AVX1-NEXT:    vmovapd %ymm14, %ymm4
-; AVX1-NEXT:    vmulpd %ymm10, %ymm14, %ymm11
-; AVX1-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX1-NEXT:    vmovapd %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
-; AVX1-NEXT:    vmulpd %ymm2, %ymm10, %ymm1
-; AVX1-NEXT:    vaddpd %ymm1, %ymm0, %ymm0
-; AVX1-NEXT:    vmovapd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
-; AVX1-NEXT:    vbroadcastsd 656(%rbp), %ymm2
-; AVX1-NEXT:    vmovapd %ymm13, %ymm3
-; AVX1-NEXT:    vmulpd %ymm2, %ymm13, %ymm1
-; AVX1-NEXT:    vbroadcastsd 664(%rbp), %ymm0
-; AVX1-NEXT:    vmulpd %ymm0, %ymm6, %ymm14
-; AVX1-NEXT:    vmovapd %ymm6, %ymm10
-; AVX1-NEXT:    vaddpd %ymm1, %ymm14, %ymm1
-; AVX1-NEXT:    vmulpd %ymm2, %ymm9, %ymm2
-; AVX1-NEXT:    vmulpd %ymm0, %ymm5, %ymm0
-; AVX1-NEXT:    vmovapd %ymm5, %ymm6
-; AVX1-NEXT:    vaddpd %ymm0, %ymm2, %ymm0
-; AVX1-NEXT:    vbroadcastsd 672(%rbp), %ymm2
-; AVX1-NEXT:    vmulpd %ymm2, %ymm12, %ymm14
-; AVX1-NEXT:    vaddpd %ymm0, %ymm14, %ymm0
-; AVX1-NEXT:    vmulpd %ymm2, %ymm15, %ymm2
-; AVX1-NEXT:    vaddpd %ymm2, %ymm1, %ymm1
-; AVX1-NEXT:    vbroadcastsd 680(%rbp), %ymm2
-; AVX1-NEXT:    vmulpd %ymm2, %ymm8, %ymm14
-; AVX1-NEXT:    vaddpd %ymm1, %ymm14, %ymm1
-; AVX1-NEXT:    vmulpd %ymm2, %ymm7, %ymm2
-; AVX1-NEXT:    vaddpd %ymm2, %ymm0, %ymm0
-; AVX1-NEXT:    vbroadcastsd 688(%rbp), %ymm2
-; AVX1-NEXT:    vmovapd 16(%rbp), %ymm11
-; AVX1-NEXT:    vmulpd %ymm2, %ymm11, %ymm14
-; AVX1-NEXT:    vaddpd %ymm0, %ymm14, %ymm0
-; AVX1-NEXT:    vmulpd 48(%rbp), %ymm2, %ymm2
-; AVX1-NEXT:    vaddpd %ymm2, %ymm1, %ymm1
-; AVX1-NEXT:    vbroadcastsd 696(%rbp), %ymm2
-; AVX1-NEXT:    vmovapd 112(%rbp), %ymm5
-; AVX1-NEXT:    vmulpd %ymm2, %ymm5, %ymm14
-; AVX1-NEXT:    vaddpd %ymm1, %ymm14, %ymm1
-; AVX1-NEXT:    vmovapd 80(%rbp), %ymm5
-; AVX1-NEXT:    vmulpd %ymm2, %ymm5, %ymm2
-; AVX1-NEXT:    vaddpd %ymm2, %ymm0, %ymm0
-; AVX1-NEXT:    vbroadcastsd 704(%rbp), %ymm2
-; AVX1-NEXT:    vmulpd 144(%rbp), %ymm2, %ymm14
-; AVX1-NEXT:    vaddpd %ymm0, %ymm14, %ymm0
-; AVX1-NEXT:    vmovapd 176(%rbp), %ymm13
-; AVX1-NEXT:    vmulpd %ymm2, %ymm13, %ymm2
-; AVX1-NEXT:    vaddpd %ymm2, %ymm1, %ymm1
-; AVX1-NEXT:    vbroadcastsd 712(%rbp), %ymm2
-; AVX1-NEXT:    vmulpd %ymm2, %ymm4, %ymm14
-; AVX1-NEXT:    vaddpd %ymm1, %ymm14, %ymm1
-; AVX1-NEXT:    vmovapd 208(%rbp), %ymm14
-; AVX1-NEXT:    vmulpd %ymm2, %ymm14, %ymm2
-; AVX1-NEXT:    vaddpd %ymm2, %ymm0, %ymm0
-; AVX1-NEXT:    vbroadcastsd 720(%rbp), %ymm2
-; AVX1-NEXT:    vmulpd %ymm2, %ymm3, %ymm3
-; AVX1-NEXT:    vmulpd %ymm2, %ymm9, %ymm2
-; AVX1-NEXT:    vbroadcastsd 728(%rbp), %ymm4
-; AVX1-NEXT:    vmulpd %ymm4, %ymm10, %ymm5
-; AVX1-NEXT:    vaddpd %ymm5, %ymm3, %ymm3
-; AVX1-NEXT:    vmulpd %ymm4, %ymm6, %ymm4
-; AVX1-NEXT:    vaddpd %ymm4, %ymm2, %ymm2
-; AVX1-NEXT:    vbroadcastsd 736(%rbp), %ymm4
-; AVX1-NEXT:    vmulpd %ymm4, %ymm12, %ymm5
-; AVX1-NEXT:    vaddpd %ymm5, %ymm2, %ymm2
-; AVX1-NEXT:    vmulpd %ymm4, %ymm15, %ymm4
-; AVX1-NEXT:    vaddpd %ymm4, %ymm3, %ymm3
-; AVX1-NEXT:    vbroadcastsd 744(%rbp), %ymm4
-; AVX1-NEXT:    vmulpd %ymm4, %ymm8, %ymm5
-; AVX1-NEXT:    vaddpd %ymm5, %ymm3, %ymm3
-; AVX1-NEXT:    vmulpd %ymm4, %ymm7, %ymm4
-; AVX1-NEXT:    vaddpd %ymm4, %ymm2, %ymm2
-; AVX1-NEXT:    vbroadcastsd 752(%rbp), %ymm4
-; AVX1-NEXT:    vmulpd %ymm4, %ymm11, %ymm5
-; AVX1-NEXT:    vaddpd %ymm5, %ymm2, %ymm2
-; AVX1-NEXT:    vmulpd 48(%rbp), %ymm4, %ymm4
-; AVX1-NEXT:    vaddpd %ymm4, %ymm3, %ymm3
-; AVX1-NEXT:    vbroadcastsd 760(%rbp), %ymm4
-; AVX1-NEXT:    vmulpd 112(%rbp), %ymm4, %ymm5
-; AVX1-NEXT:    vaddpd %ymm5, %ymm3, %ymm3
-; AVX1-NEXT:    vmulpd 80(%rbp), %ymm4, %ymm4
-; AVX1-NEXT:    vaddpd %ymm4, %ymm2, %ymm2
-; AVX1-NEXT:    vbroadcastsd 768(%rbp), %ymm4
-; AVX1-NEXT:    vmulpd 144(%rbp), %ymm4, %ymm5
-; AVX1-NEXT:    vaddpd %ymm5, %ymm2, %ymm2
-; AVX1-NEXT:    vmulpd %ymm4, %ymm13, %ymm4
-; AVX1-NEXT:    vaddpd %ymm4, %ymm3, %ymm3
-; AVX1-NEXT:    vbroadcastsd 776(%rbp), %ymm4
-; AVX1-NEXT:    vmulpd 240(%rbp), %ymm4, %ymm5
-; AVX1-NEXT:    vaddpd %ymm5, %ymm3, %ymm3
-; AVX1-NEXT:    vmulpd %ymm4, %ymm14, %ymm4
-; AVX1-NEXT:    vaddpd %ymm4, %ymm2, %ymm2
-; AVX1-NEXT:    vmovapd %ymm3, 480(%rdi)
-; AVX1-NEXT:    vmovapd %ymm2, 448(%rdi)
-; AVX1-NEXT:    vmovapd %ymm1, 416(%rdi)
-; AVX1-NEXT:    vmovapd %ymm0, 384(%rdi)
-; AVX1-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
-; AVX1-NEXT:    vmovaps %ymm0, 352(%rdi)
-; AVX1-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
-; AVX1-NEXT:    vmovaps %ymm0, 320(%rdi)
-; AVX1-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
-; AVX1-NEXT:    vmovaps %ymm0, 288(%rdi)
-; AVX1-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
-; AVX1-NEXT:    vmovaps %ymm0, 256(%rdi)
-; AVX1-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
-; AVX1-NEXT:    vmovaps %ymm0, 224(%rdi)
-; AVX1-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
-; AVX1-NEXT:    vmovaps %ymm0, 192(%rdi)
-; AVX1-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
-; AVX1-NEXT:    vmovaps %ymm0, 160(%rdi)
-; AVX1-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
-; AVX1-NEXT:    vmovaps %ymm0, 128(%rdi)
-; AVX1-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
-; AVX1-NEXT:    vmovaps %ymm0, 96(%rdi)
-; AVX1-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
-; AVX1-NEXT:    vmovaps %ymm0, 64(%rdi)
-; AVX1-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
-; AVX1-NEXT:    vmovaps %ymm0, 32(%rdi)
-; AVX1-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
-; AVX1-NEXT:    vmovaps %ymm0, (%rdi)
-; AVX1-NEXT:    movq %rbp, %rsp
-; AVX1-NEXT:    popq %rbp
-; AVX1-NEXT:    vzeroupper
-; AVX1-NEXT:    retq
-;
-; AVX2-LABEL: test_mul8x8_f64:
-; AVX2:       # %bb.0: # %entry
-; AVX2-NEXT:    pushq %rbp
-; AVX2-NEXT:    movq %rsp, %rbp
-; AVX2-NEXT:    andq $-32, %rsp
-; AVX2-NEXT:    subq $448, %rsp # imm = 0x1C0
-; AVX2-NEXT:    vmovapd %ymm2, %ymm12
-; AVX2-NEXT:    vmovapd %ymm0, (%rsp) # 32-byte Spill
-; AVX2-NEXT:    movq %rdi, %rax
-; AVX2-NEXT:    vmovapd 144(%rbp), %ymm13
-; AVX2-NEXT:    vmovapd 112(%rbp), %ymm14
-; AVX2-NEXT:    vbroadcastsd 272(%rbp), %ymm10
-; AVX2-NEXT:    vmulpd %ymm1, %ymm10, %ymm8
-; AVX2-NEXT:    vmovapd %ymm1, %ymm9
-; AVX2-NEXT:    vmulpd %ymm0, %ymm10, %ymm0
-; AVX2-NEXT:    vbroadcastsd 280(%rbp), %ymm10
-; AVX2-NEXT:    vmulpd %ymm3, %ymm10, %ymm11
-; AVX2-NEXT:    vaddpd %ymm11, %ymm8, %ymm1
-; AVX2-NEXT:    vmulpd %ymm2, %ymm10, %ymm10
-; AVX2-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
-; AVX2-NEXT:    vbroadcastsd 288(%rbp), %ymm10
-; AVX2-NEXT:    vmulpd %ymm4, %ymm10, %ymm11
-; AVX2-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
-; AVX2-NEXT:    vmulpd %ymm5, %ymm10, %ymm10
-; AVX2-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
-; AVX2-NEXT:    vbroadcastsd 296(%rbp), %ymm10
-; AVX2-NEXT:    vmulpd %ymm7, %ymm10, %ymm11
-; AVX2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX2-NEXT:    vmulpd %ymm6, %ymm10, %ymm10
-; AVX2-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
-; AVX2-NEXT:    vbroadcastsd 304(%rbp), %ymm10
-; AVX2-NEXT:    vmulpd 16(%rbp), %ymm10, %ymm11
-; AVX2-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
-; AVX2-NEXT:    vmulpd 48(%rbp), %ymm10, %ymm10
-; AVX2-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
-; AVX2-NEXT:    vbroadcastsd 312(%rbp), %ymm10
-; AVX2-NEXT:    vmulpd %ymm10, %ymm14, %ymm11
-; AVX2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX2-NEXT:    vmulpd 80(%rbp), %ymm10, %ymm10
-; AVX2-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
-; AVX2-NEXT:    vbroadcastsd 320(%rbp), %ymm10
-; AVX2-NEXT:    vmulpd %ymm10, %ymm13, %ymm11
-; AVX2-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
-; AVX2-NEXT:    vmulpd 176(%rbp), %ymm10, %ymm10
-; AVX2-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
-; AVX2-NEXT:    vbroadcastsd 328(%rbp), %ymm10
-; AVX2-NEXT:    vmulpd 240(%rbp), %ymm10, %ymm11
-; AVX2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX2-NEXT:    vmovapd %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
-; AVX2-NEXT:    vmulpd 208(%rbp), %ymm10, %ymm1
-; AVX2-NEXT:    vaddpd %ymm1, %ymm0, %ymm0
-; AVX2-NEXT:    vmovapd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
-; AVX2-NEXT:    vbroadcastsd 336(%rbp), %ymm0
-; AVX2-NEXT:    vmulpd %ymm0, %ymm9, %ymm1
-; AVX2-NEXT:    vbroadcastsd 344(%rbp), %ymm10
-; AVX2-NEXT:    vmulpd %ymm3, %ymm10, %ymm11
-; AVX2-NEXT:    vmovapd %ymm3, %ymm8
-; AVX2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX2-NEXT:    vmovapd (%rsp), %ymm15 # 32-byte Reload
-; AVX2-NEXT:    vmulpd %ymm0, %ymm15, %ymm0
-; AVX2-NEXT:    vmulpd %ymm2, %ymm10, %ymm10
-; AVX2-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
-; AVX2-NEXT:    vbroadcastsd 352(%rbp), %ymm10
-; AVX2-NEXT:    vmulpd %ymm4, %ymm10, %ymm11
-; AVX2-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
-; AVX2-NEXT:    vmulpd %ymm5, %ymm10, %ymm10
-; AVX2-NEXT:    vmovapd %ymm5, %ymm3
-; AVX2-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
-; AVX2-NEXT:    vbroadcastsd 360(%rbp), %ymm10
-; AVX2-NEXT:    vmulpd %ymm7, %ymm10, %ymm11
-; AVX2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX2-NEXT:    vmulpd %ymm6, %ymm10, %ymm10
-; AVX2-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
-; AVX2-NEXT:    vbroadcastsd 368(%rbp), %ymm10
-; AVX2-NEXT:    vmovapd 16(%rbp), %ymm2
-; AVX2-NEXT:    vmulpd %ymm2, %ymm10, %ymm11
-; AVX2-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
-; AVX2-NEXT:    vmulpd 48(%rbp), %ymm10, %ymm10
-; AVX2-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
-; AVX2-NEXT:    vbroadcastsd 376(%rbp), %ymm10
-; AVX2-NEXT:    vmulpd %ymm10, %ymm14, %ymm11
-; AVX2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX2-NEXT:    vmovapd 80(%rbp), %ymm2
-; AVX2-NEXT:    vmulpd %ymm2, %ymm10, %ymm10
-; AVX2-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
-; AVX2-NEXT:    vbroadcastsd 384(%rbp), %ymm10
-; AVX2-NEXT:    vmulpd %ymm10, %ymm13, %ymm11
-; AVX2-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
-; AVX2-NEXT:    vmovapd 176(%rbp), %ymm14
-; AVX2-NEXT:    vmulpd %ymm10, %ymm14, %ymm10
-; AVX2-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
-; AVX2-NEXT:    vbroadcastsd 392(%rbp), %ymm10
-; AVX2-NEXT:    vmovapd 240(%rbp), %ymm2
-; AVX2-NEXT:    vmulpd %ymm2, %ymm10, %ymm11
-; AVX2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX2-NEXT:    vmovapd %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
-; AVX2-NEXT:    vmulpd 208(%rbp), %ymm10, %ymm1
-; AVX2-NEXT:    vaddpd %ymm1, %ymm0, %ymm0
-; AVX2-NEXT:    vmovapd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
-; AVX2-NEXT:    vbroadcastsd 400(%rbp), %ymm0
-; AVX2-NEXT:    vmulpd %ymm0, %ymm9, %ymm1
-; AVX2-NEXT:    vbroadcastsd 408(%rbp), %ymm10
-; AVX2-NEXT:    vmovapd %ymm8, %ymm5
-; AVX2-NEXT:    vmulpd %ymm10, %ymm8, %ymm11
-; AVX2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX2-NEXT:    vmulpd %ymm0, %ymm15, %ymm0
-; AVX2-NEXT:    vmulpd %ymm10, %ymm12, %ymm10
-; AVX2-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
-; AVX2-NEXT:    vbroadcastsd 416(%rbp), %ymm10
-; AVX2-NEXT:    vmulpd %ymm4, %ymm10, %ymm11
-; AVX2-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
-; AVX2-NEXT:    vmulpd %ymm3, %ymm10, %ymm10
-; AVX2-NEXT:    vmovapd %ymm3, %ymm2
-; AVX2-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
-; AVX2-NEXT:    vbroadcastsd 424(%rbp), %ymm10
-; AVX2-NEXT:    vmulpd %ymm7, %ymm10, %ymm11
-; AVX2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX2-NEXT:    vmulpd %ymm6, %ymm10, %ymm10
-; AVX2-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
-; AVX2-NEXT:    vbroadcastsd 432(%rbp), %ymm10
-; AVX2-NEXT:    vmulpd 16(%rbp), %ymm10, %ymm11
-; AVX2-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
-; AVX2-NEXT:    vmulpd 48(%rbp), %ymm10, %ymm10
-; AVX2-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
-; AVX2-NEXT:    vbroadcastsd 440(%rbp), %ymm10
-; AVX2-NEXT:    vmulpd 112(%rbp), %ymm10, %ymm11
-; AVX2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX2-NEXT:    vmulpd 80(%rbp), %ymm10, %ymm10
-; AVX2-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
-; AVX2-NEXT:    vbroadcastsd 448(%rbp), %ymm10
-; AVX2-NEXT:    vmulpd %ymm10, %ymm13, %ymm11
-; AVX2-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
-; AVX2-NEXT:    vmulpd %ymm10, %ymm14, %ymm10
-; AVX2-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
-; AVX2-NEXT:    vbroadcastsd 456(%rbp), %ymm10
-; AVX2-NEXT:    vmulpd 240(%rbp), %ymm10, %ymm11
-; AVX2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX2-NEXT:    vmovapd %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
-; AVX2-NEXT:    vmulpd 208(%rbp), %ymm10, %ymm1
-; AVX2-NEXT:    vaddpd %ymm1, %ymm0, %ymm0
-; AVX2-NEXT:    vmovapd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
-; AVX2-NEXT:    vbroadcastsd 464(%rbp), %ymm0
-; AVX2-NEXT:    vmulpd %ymm0, %ymm9, %ymm1
-; AVX2-NEXT:    vmovapd %ymm9, %ymm13
-; AVX2-NEXT:    vbroadcastsd 472(%rbp), %ymm10
-; AVX2-NEXT:    vmulpd %ymm10, %ymm8, %ymm11
-; AVX2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX2-NEXT:    vmulpd %ymm0, %ymm15, %ymm0
-; AVX2-NEXT:    vmovapd %ymm15, %ymm9
-; AVX2-NEXT:    vmulpd %ymm10, %ymm12, %ymm10
-; AVX2-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
-; AVX2-NEXT:    vbroadcastsd 480(%rbp), %ymm10
-; AVX2-NEXT:    vmulpd %ymm4, %ymm10, %ymm11
-; AVX2-NEXT:    vmovapd %ymm4, %ymm3
-; AVX2-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
-; AVX2-NEXT:    vmovapd %ymm2, %ymm15
-; AVX2-NEXT:    vmulpd %ymm2, %ymm10, %ymm10
-; AVX2-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
-; AVX2-NEXT:    vbroadcastsd 488(%rbp), %ymm10
-; AVX2-NEXT:    vmovapd %ymm7, %ymm8
-; AVX2-NEXT:    vmulpd %ymm7, %ymm10, %ymm11
-; AVX2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX2-NEXT:    vmovapd %ymm6, %ymm7
-; AVX2-NEXT:    vmulpd %ymm6, %ymm10, %ymm10
-; AVX2-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
-; AVX2-NEXT:    vbroadcastsd 496(%rbp), %ymm10
-; AVX2-NEXT:    vmulpd 16(%rbp), %ymm10, %ymm11
-; AVX2-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
-; AVX2-NEXT:    vmovapd 48(%rbp), %ymm4
-; AVX2-NEXT:    vmulpd %ymm4, %ymm10, %ymm10
-; AVX2-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
-; AVX2-NEXT:    vbroadcastsd 504(%rbp), %ymm10
-; AVX2-NEXT:    vmovapd 112(%rbp), %ymm2
-; AVX2-NEXT:    vmulpd %ymm2, %ymm10, %ymm11
-; AVX2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX2-NEXT:    vmovapd 80(%rbp), %ymm14
-; AVX2-NEXT:    vmulpd %ymm10, %ymm14, %ymm10
-; AVX2-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
-; AVX2-NEXT:    vbroadcastsd 512(%rbp), %ymm10
-; AVX2-NEXT:    vmulpd 144(%rbp), %ymm10, %ymm11
-; AVX2-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
-; AVX2-NEXT:    vmovapd 176(%rbp), %ymm2
-; AVX2-NEXT:    vmulpd %ymm2, %ymm10, %ymm10
-; AVX2-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
-; AVX2-NEXT:    vbroadcastsd 520(%rbp), %ymm10
-; AVX2-NEXT:    vmulpd 240(%rbp), %ymm10, %ymm11
-; AVX2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX2-NEXT:    vmovapd %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
-; AVX2-NEXT:    vmulpd 208(%rbp), %ymm10, %ymm1
-; AVX2-NEXT:    vaddpd %ymm1, %ymm0, %ymm0
-; AVX2-NEXT:    vmovapd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
-; AVX2-NEXT:    vbroadcastsd 528(%rbp), %ymm0
-; AVX2-NEXT:    vmulpd %ymm0, %ymm13, %ymm1
-; AVX2-NEXT:    vbroadcastsd 536(%rbp), %ymm10
-; AVX2-NEXT:    vmulpd %ymm5, %ymm10, %ymm11
-; AVX2-NEXT:    vmovapd %ymm5, %ymm6
-; AVX2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX2-NEXT:    vmulpd %ymm0, %ymm9, %ymm0
-; AVX2-NEXT:    vmulpd %ymm10, %ymm12, %ymm10
-; AVX2-NEXT:    vmovapd %ymm12, %ymm5
-; AVX2-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
-; AVX2-NEXT:    vbroadcastsd 544(%rbp), %ymm10
-; AVX2-NEXT:    vmulpd %ymm3, %ymm10, %ymm11
-; AVX2-NEXT:    vmovapd %ymm3, %ymm12
-; AVX2-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
-; AVX2-NEXT:    vmulpd %ymm10, %ymm15, %ymm10
-; AVX2-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
-; AVX2-NEXT:    vbroadcastsd 552(%rbp), %ymm10
-; AVX2-NEXT:    vmulpd %ymm10, %ymm8, %ymm11
-; AVX2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX2-NEXT:    vmulpd %ymm7, %ymm10, %ymm10
-; AVX2-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
-; AVX2-NEXT:    vbroadcastsd 560(%rbp), %ymm10
-; AVX2-NEXT:    vmulpd 16(%rbp), %ymm10, %ymm11
-; AVX2-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
-; AVX2-NEXT:    vmulpd %ymm4, %ymm10, %ymm10
-; AVX2-NEXT:    vmovapd %ymm4, %ymm3
-; AVX2-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
-; AVX2-NEXT:    vbroadcastsd 568(%rbp), %ymm10
-; AVX2-NEXT:    vmulpd 112(%rbp), %ymm10, %ymm11
-; AVX2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX2-NEXT:    vmulpd %ymm10, %ymm14, %ymm10
-; AVX2-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
-; AVX2-NEXT:    vbroadcastsd 576(%rbp), %ymm10
-; AVX2-NEXT:    vmovapd 144(%rbp), %ymm4
-; AVX2-NEXT:    vmulpd %ymm4, %ymm10, %ymm11
-; AVX2-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
-; AVX2-NEXT:    vmulpd %ymm2, %ymm10, %ymm10
-; AVX2-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
-; AVX2-NEXT:    vbroadcastsd 584(%rbp), %ymm10
-; AVX2-NEXT:    vmovapd 240(%rbp), %ymm14
-; AVX2-NEXT:    vmulpd %ymm10, %ymm14, %ymm11
-; AVX2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX2-NEXT:    vmovapd %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
-; AVX2-NEXT:    vmovapd 208(%rbp), %ymm2
-; AVX2-NEXT:    vmulpd %ymm2, %ymm10, %ymm1
-; AVX2-NEXT:    vaddpd %ymm1, %ymm0, %ymm0
-; AVX2-NEXT:    vmovapd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
-; AVX2-NEXT:    vbroadcastsd 592(%rbp), %ymm0
-; AVX2-NEXT:    vmulpd %ymm0, %ymm13, %ymm1
-; AVX2-NEXT:    vbroadcastsd 600(%rbp), %ymm10
-; AVX2-NEXT:    vmulpd %ymm6, %ymm10, %ymm11
-; AVX2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX2-NEXT:    vmulpd %ymm0, %ymm9, %ymm0
-; AVX2-NEXT:    vmulpd %ymm5, %ymm10, %ymm10
-; AVX2-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
-; AVX2-NEXT:    vbroadcastsd 608(%rbp), %ymm10
-; AVX2-NEXT:    vmulpd %ymm10, %ymm12, %ymm11
-; AVX2-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
-; AVX2-NEXT:    vmulpd %ymm10, %ymm15, %ymm10
-; AVX2-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
-; AVX2-NEXT:    vbroadcastsd 616(%rbp), %ymm10
-; AVX2-NEXT:    vmulpd %ymm10, %ymm8, %ymm11
-; AVX2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX2-NEXT:    vmulpd %ymm7, %ymm10, %ymm10
-; AVX2-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
-; AVX2-NEXT:    vbroadcastsd 624(%rbp), %ymm10
-; AVX2-NEXT:    vmulpd 16(%rbp), %ymm10, %ymm11
-; AVX2-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
-; AVX2-NEXT:    vmulpd %ymm3, %ymm10, %ymm10
-; AVX2-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
-; AVX2-NEXT:    vbroadcastsd 632(%rbp), %ymm10
-; AVX2-NEXT:    vmovapd 112(%rbp), %ymm3
-; AVX2-NEXT:    vmulpd %ymm3, %ymm10, %ymm11
-; AVX2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX2-NEXT:    vmovapd 80(%rbp), %ymm3
-; AVX2-NEXT:    vmulpd %ymm3, %ymm10, %ymm10
-; AVX2-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
-; AVX2-NEXT:    vbroadcastsd 640(%rbp), %ymm10
-; AVX2-NEXT:    vmulpd %ymm4, %ymm10, %ymm11
-; AVX2-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
-; AVX2-NEXT:    vmovapd 176(%rbp), %ymm3
-; AVX2-NEXT:    vmulpd %ymm3, %ymm10, %ymm10
-; AVX2-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
-; AVX2-NEXT:    vbroadcastsd 648(%rbp), %ymm10
-; AVX2-NEXT:    vmovapd %ymm14, %ymm4
-; AVX2-NEXT:    vmulpd %ymm10, %ymm14, %ymm11
-; AVX2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
-; AVX2-NEXT:    vmovapd %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
-; AVX2-NEXT:    vmulpd %ymm2, %ymm10, %ymm1
-; AVX2-NEXT:    vaddpd %ymm1, %ymm0, %ymm0
-; AVX2-NEXT:    vmovapd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
-; AVX2-NEXT:    vbroadcastsd 656(%rbp), %ymm2
-; AVX2-NEXT:    vmovapd %ymm13, %ymm3
-; AVX2-NEXT:    vmulpd %ymm2, %ymm13, %ymm1
-; AVX2-NEXT:    vbroadcastsd 664(%rbp), %ymm0
-; AVX2-NEXT:    vmulpd %ymm0, %ymm6, %ymm14
-; AVX2-NEXT:    vmovapd %ymm6, %ymm10
-; AVX2-NEXT:    vaddpd %ymm1, %ymm14, %ymm1
-; AVX2-NEXT:    vmulpd %ymm2, %ymm9, %ymm2
-; AVX2-NEXT:    vmulpd %ymm0, %ymm5, %ymm0
-; AVX2-NEXT:    vmovapd %ymm5, %ymm6
-; AVX2-NEXT:    vaddpd %ymm0, %ymm2, %ymm0
-; AVX2-NEXT:    vbroadcastsd 672(%rbp), %ymm2
-; AVX2-NEXT:    vmulpd %ymm2, %ymm12, %ymm14
-; AVX2-NEXT:    vaddpd %ymm0, %ymm14, %ymm0
-; AVX2-NEXT:    vmulpd %ymm2, %ymm15, %ymm2
-; AVX2-NEXT:    vaddpd %ymm2, %ymm1, %ymm1
-; AVX2-NEXT:    vbroadcastsd 680(%rbp), %ymm2
-; AVX2-NEXT:    vmulpd %ymm2, %ymm8, %ymm14
-; AVX2-NEXT:    vaddpd %ymm1, %ymm14, %ymm1
-; AVX2-NEXT:    vmulpd %ymm2, %ymm7, %ymm2
-; AVX2-NEXT:    vaddpd %ymm2, %ymm0, %ymm0
-; AVX2-NEXT:    vbroadcastsd 688(%rbp), %ymm2
-; AVX2-NEXT:    vmovapd 16(%rbp), %ymm11
-; AVX2-NEXT:    vmulpd %ymm2, %ymm11, %ymm14
-; AVX2-NEXT:    vaddpd %ymm0, %ymm14, %ymm0
-; AVX2-NEXT:    vmulpd 48(%rbp), %ymm2, %ymm2
-; AVX2-NEXT:    vaddpd %ymm2, %ymm1, %ymm1
-; AVX2-NEXT:    vbroadcastsd 696(%rbp), %ymm2
-; AVX2-NEXT:    vmovapd 112(%rbp), %ymm5
-; AVX2-NEXT:    vmulpd %ymm2, %ymm5, %ymm14
-; AVX2-NEXT:    vaddpd %ymm1, %ymm14, %ymm1
-; AVX2-NEXT:    vmovapd 80(%rbp), %ymm5
-; AVX2-NEXT:    vmulpd %ymm2, %ymm5, %ymm2
-; AVX2-NEXT:    vaddpd %ymm2, %ymm0, %ymm0
-; AVX2-NEXT:    vbroadcastsd 704(%rbp), %ymm2
-; AVX2-NEXT:    vmulpd 144(%rbp), %ymm2, %ymm14
-; AVX2-NEXT:    vaddpd %ymm0, %ymm14, %ymm0
-; AVX2-NEXT:    vmovapd 176(%rbp), %ymm13
-; AVX2-NEXT:    vmulpd %ymm2, %ymm13, %ymm2
-; AVX2-NEXT:    vaddpd %ymm2, %ymm1, %ymm1
-; AVX2-NEXT:    vbroadcastsd 712(%rbp), %ymm2
-; AVX2-NEXT:    vmulpd %ymm2, %ymm4, %ymm14
-; AVX2-NEXT:    vaddpd %ymm1, %ymm14, %ymm1
-; AVX2-NEXT:    vmovapd 208(%rbp), %ymm14
-; AVX2-NEXT:    vmulpd %ymm2, %ymm14, %ymm2
-; AVX2-NEXT:    vaddpd %ymm2, %ymm0, %ymm0
-; AVX2-NEXT:    vbroadcastsd 720(%rbp), %ymm2
-; AVX2-NEXT:    vmulpd %ymm2, %ymm3, %ymm3
-; AVX2-NEXT:    vmulpd %ymm2, %ymm9, %ymm2
-; AVX2-NEXT:    vbroadcastsd 728(%rbp), %ymm4
-; AVX2-NEXT:    vmulpd %ymm4, %ymm10, %ymm5
-; AVX2-NEXT:    vaddpd %ymm5, %ymm3, %ymm3
-; AVX2-NEXT:    vmulpd %ymm4, %ymm6, %ymm4
-; AVX2-NEXT:    vaddpd %ymm4, %ymm2, %ymm2
-; AVX2-NEXT:    vbroadcastsd 736(%rbp), %ymm4
-; AVX2-NEXT:    vmulpd %ymm4, %ymm12, %ymm5
-; AVX2-NEXT:    vaddpd %ymm5, %ymm2, %ymm2
-; AVX2-NEXT:    vmulpd %ymm4, %ymm15, %ymm4
-; AVX2-NEXT:    vaddpd %ymm4, %ymm3, %ymm3
-; AVX2-NEXT:    vbroadcastsd 744(%rbp), %ymm4
-; AVX2-NEXT:    vmulpd %ymm4, %ymm8, %ymm5
-; AVX2-NEXT:    vaddpd %ymm5, %ymm3, %ymm3
-; AVX2-NEXT:    vmulpd %ymm4, %ymm7, %ymm4
-; AVX2-NEXT:    vaddpd %ymm4, %ymm2, %ymm2
-; AVX2-NEXT:    vbroadcastsd 752(%rbp), %ymm4
-; AVX2-NEXT:    vmulpd %ymm4, %ymm11, %ymm5
-; AVX2-NEXT:    vaddpd %ymm5, %ymm2, %ymm2
-; AVX2-NEXT:    vmulpd 48(%rbp), %ymm4, %ymm4
-; AVX2-NEXT:    vaddpd %ymm4, %ymm3, %ymm3
-; AVX2-NEXT:    vbroadcastsd 760(%rbp), %ymm4
-; AVX2-NEXT:    vmulpd 112(%rbp), %ymm4, %ymm5
-; AVX2-NEXT:    vaddpd %ymm5, %ymm3, %ymm3
-; AVX2-NEXT:    vmulpd 80(%rbp), %ymm4, %ymm4
-; AVX2-NEXT:    vaddpd %ymm4, %ymm2, %ymm2
-; AVX2-NEXT:    vbroadcastsd 768(%rbp), %ymm4
-; AVX2-NEXT:    vmulpd 144(%rbp), %ymm4, %ymm5
-; AVX2-NEXT:    vaddpd %ymm5, %ymm2, %ymm2
-; AVX2-NEXT:    vmulpd %ymm4, %ymm13, %ymm4
-; AVX2-NEXT:    vaddpd %ymm4, %ymm3, %ymm3
-; AVX2-NEXT:    vbroadcastsd 776(%rbp), %ymm4
-; AVX2-NEXT:    vmulpd 240(%rbp), %ymm4, %ymm5
-; AVX2-NEXT:    vaddpd %ymm5, %ymm3, %ymm3
-; AVX2-NEXT:    vmulpd %ymm4, %ymm14, %ymm4
-; AVX2-NEXT:    vaddpd %ymm4, %ymm2, %ymm2
-; AVX2-NEXT:    vmovapd %ymm3, 480(%rdi)
-; AVX2-NEXT:    vmovapd %ymm2, 448(%rdi)
-; AVX2-NEXT:    vmovapd %ymm1, 416(%rdi)
-; AVX2-NEXT:    vmovapd %ymm0, 384(%rdi)
-; AVX2-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
-; AVX2-NEXT:    vmovaps %ymm0, 352(%rdi)
-; AVX2-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
-; AVX2-NEXT:    vmovaps %ymm0, 320(%rdi)
-; AVX2-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
-; AVX2-NEXT:    vmovaps %ymm0, 288(%rdi)
-; AVX2-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
-; AVX2-NEXT:    vmovaps %ymm0, 256(%rdi)
-; AVX2-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
-; AVX2-NEXT:    vmovaps %ymm0, 224(%rdi)
-; AVX2-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
-; AVX2-NEXT:    vmovaps %ymm0, 192(%rdi)
-; AVX2-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
-; AVX2-NEXT:    vmovaps %ymm0, 160(%rdi)
-; AVX2-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
-; AVX2-NEXT:    vmovaps %ymm0, 128(%rdi)
-; AVX2-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
-; AVX2-NEXT:    vmovaps %ymm0, 96(%rdi)
-; AVX2-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
-; AVX2-NEXT:    vmovaps %ymm0, 64(%rdi)
-; AVX2-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
-; AVX2-NEXT:    vmovaps %ymm0, 32(%rdi)
-; AVX2-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
-; AVX2-NEXT:    vmovaps %ymm0, (%rdi)
-; AVX2-NEXT:    movq %rbp, %rsp
-; AVX2-NEXT:    popq %rbp
-; AVX2-NEXT:    vzeroupper
-; AVX2-NEXT:    retq
+; AVX1OR2-LABEL: test_mul8x8_f64:
+; AVX1OR2:       # %bb.0: # %entry
+; AVX1OR2-NEXT:    pushq %rbp
+; AVX1OR2-NEXT:    movq %rsp, %rbp
+; AVX1OR2-NEXT:    andq $-32, %rsp
+; AVX1OR2-NEXT:    subq $448, %rsp # imm = 0x1C0
+; AVX1OR2-NEXT:    vmovapd %ymm2, %ymm12
+; AVX1OR2-NEXT:    vmovapd %ymm0, (%rsp) # 32-byte Spill
+; AVX1OR2-NEXT:    movq %rdi, %rax
+; AVX1OR2-NEXT:    vmovapd 144(%rbp), %ymm13
+; AVX1OR2-NEXT:    vmovapd 112(%rbp), %ymm14
+; AVX1OR2-NEXT:    vbroadcastsd 272(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmulpd %ymm1, %ymm10, %ymm8
+; AVX1OR2-NEXT:    vmovapd %ymm1, %ymm9
+; AVX1OR2-NEXT:    vmulpd %ymm0, %ymm10, %ymm0
+; AVX1OR2-NEXT:    vbroadcastsd 280(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmulpd %ymm3, %ymm10, %ymm11
+; AVX1OR2-NEXT:    vaddpd %ymm11, %ymm8, %ymm1
+; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm10, %ymm10
+; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
+; AVX1OR2-NEXT:    vbroadcastsd 288(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmulpd %ymm4, %ymm10, %ymm11
+; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
+; AVX1OR2-NEXT:    vmulpd %ymm5, %ymm10, %ymm10
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
+; AVX1OR2-NEXT:    vbroadcastsd 296(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmulpd %ymm7, %ymm10, %ymm11
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
+; AVX1OR2-NEXT:    vmulpd %ymm6, %ymm10, %ymm10
+; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
+; AVX1OR2-NEXT:    vbroadcastsd 304(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmulpd 16(%rbp), %ymm10, %ymm11
+; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
+; AVX1OR2-NEXT:    vmulpd 48(%rbp), %ymm10, %ymm10
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
+; AVX1OR2-NEXT:    vbroadcastsd 312(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmulpd %ymm10, %ymm14, %ymm11
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
+; AVX1OR2-NEXT:    vmulpd 80(%rbp), %ymm10, %ymm10
+; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
+; AVX1OR2-NEXT:    vbroadcastsd 320(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmulpd %ymm10, %ymm13, %ymm11
+; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
+; AVX1OR2-NEXT:    vmulpd 176(%rbp), %ymm10, %ymm10
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
+; AVX1OR2-NEXT:    vbroadcastsd 328(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmulpd 240(%rbp), %ymm10, %ymm11
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
+; AVX1OR2-NEXT:    vmovapd %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
+; AVX1OR2-NEXT:    vmulpd 208(%rbp), %ymm10, %ymm1
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm0, %ymm0
+; AVX1OR2-NEXT:    vmovapd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
+; AVX1OR2-NEXT:    vbroadcastsd 336(%rbp), %ymm0
+; AVX1OR2-NEXT:    vmulpd %ymm0, %ymm9, %ymm1
+; AVX1OR2-NEXT:    vbroadcastsd 344(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmulpd %ymm3, %ymm10, %ymm11
+; AVX1OR2-NEXT:    vmovapd %ymm3, %ymm8
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
+; AVX1OR2-NEXT:    vmovapd (%rsp), %ymm15 # 32-byte Reload
+; AVX1OR2-NEXT:    vmulpd %ymm0, %ymm15, %ymm0
+; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm10, %ymm10
+; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
+; AVX1OR2-NEXT:    vbroadcastsd 352(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmulpd %ymm4, %ymm10, %ymm11
+; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
+; AVX1OR2-NEXT:    vmulpd %ymm5, %ymm10, %ymm10
+; AVX1OR2-NEXT:    vmovapd %ymm5, %ymm3
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
+; AVX1OR2-NEXT:    vbroadcastsd 360(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmulpd %ymm7, %ymm10, %ymm11
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
+; AVX1OR2-NEXT:    vmulpd %ymm6, %ymm10, %ymm10
+; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
+; AVX1OR2-NEXT:    vbroadcastsd 368(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmovapd 16(%rbp), %ymm2
+; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm10, %ymm11
+; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
+; AVX1OR2-NEXT:    vmulpd 48(%rbp), %ymm10, %ymm10
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
+; AVX1OR2-NEXT:    vbroadcastsd 376(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmulpd %ymm10, %ymm14, %ymm11
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
+; AVX1OR2-NEXT:    vmovapd 80(%rbp), %ymm2
+; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm10, %ymm10
+; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
+; AVX1OR2-NEXT:    vbroadcastsd 384(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmulpd %ymm10, %ymm13, %ymm11
+; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
+; AVX1OR2-NEXT:    vmovapd 176(%rbp), %ymm14
+; AVX1OR2-NEXT:    vmulpd %ymm10, %ymm14, %ymm10
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
+; AVX1OR2-NEXT:    vbroadcastsd 392(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmovapd 240(%rbp), %ymm2
+; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm10, %ymm11
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
+; AVX1OR2-NEXT:    vmovapd %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
+; AVX1OR2-NEXT:    vmulpd 208(%rbp), %ymm10, %ymm1
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm0, %ymm0
+; AVX1OR2-NEXT:    vmovapd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
+; AVX1OR2-NEXT:    vbroadcastsd 400(%rbp), %ymm0
+; AVX1OR2-NEXT:    vmulpd %ymm0, %ymm9, %ymm1
+; AVX1OR2-NEXT:    vbroadcastsd 408(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmovapd %ymm8, %ymm5
+; AVX1OR2-NEXT:    vmulpd %ymm10, %ymm8, %ymm11
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
+; AVX1OR2-NEXT:    vmulpd %ymm0, %ymm15, %ymm0
+; AVX1OR2-NEXT:    vmulpd %ymm10, %ymm12, %ymm10
+; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
+; AVX1OR2-NEXT:    vbroadcastsd 416(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmulpd %ymm4, %ymm10, %ymm11
+; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
+; AVX1OR2-NEXT:    vmulpd %ymm3, %ymm10, %ymm10
+; AVX1OR2-NEXT:    vmovapd %ymm3, %ymm2
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
+; AVX1OR2-NEXT:    vbroadcastsd 424(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmulpd %ymm7, %ymm10, %ymm11
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
+; AVX1OR2-NEXT:    vmulpd %ymm6, %ymm10, %ymm10
+; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
+; AVX1OR2-NEXT:    vbroadcastsd 432(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmulpd 16(%rbp), %ymm10, %ymm11
+; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
+; AVX1OR2-NEXT:    vmulpd 48(%rbp), %ymm10, %ymm10
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
+; AVX1OR2-NEXT:    vbroadcastsd 440(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmulpd 112(%rbp), %ymm10, %ymm11
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
+; AVX1OR2-NEXT:    vmulpd 80(%rbp), %ymm10, %ymm10
+; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
+; AVX1OR2-NEXT:    vbroadcastsd 448(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmulpd %ymm10, %ymm13, %ymm11
+; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
+; AVX1OR2-NEXT:    vmulpd %ymm10, %ymm14, %ymm10
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
+; AVX1OR2-NEXT:    vbroadcastsd 456(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmulpd 240(%rbp), %ymm10, %ymm11
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
+; AVX1OR2-NEXT:    vmovapd %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
+; AVX1OR2-NEXT:    vmulpd 208(%rbp), %ymm10, %ymm1
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm0, %ymm0
+; AVX1OR2-NEXT:    vmovapd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
+; AVX1OR2-NEXT:    vbroadcastsd 464(%rbp), %ymm0
+; AVX1OR2-NEXT:    vmulpd %ymm0, %ymm9, %ymm1
+; AVX1OR2-NEXT:    vmovapd %ymm9, %ymm13
+; AVX1OR2-NEXT:    vbroadcastsd 472(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmulpd %ymm10, %ymm8, %ymm11
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
+; AVX1OR2-NEXT:    vmulpd %ymm0, %ymm15, %ymm0
+; AVX1OR2-NEXT:    vmovapd %ymm15, %ymm9
+; AVX1OR2-NEXT:    vmulpd %ymm10, %ymm12, %ymm10
+; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
+; AVX1OR2-NEXT:    vbroadcastsd 480(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmulpd %ymm4, %ymm10, %ymm11
+; AVX1OR2-NEXT:    vmovapd %ymm4, %ymm3
+; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
+; AVX1OR2-NEXT:    vmovapd %ymm2, %ymm15
+; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm10, %ymm10
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
+; AVX1OR2-NEXT:    vbroadcastsd 488(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmovapd %ymm7, %ymm8
+; AVX1OR2-NEXT:    vmulpd %ymm7, %ymm10, %ymm11
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
+; AVX1OR2-NEXT:    vmovapd %ymm6, %ymm7
+; AVX1OR2-NEXT:    vmulpd %ymm6, %ymm10, %ymm10
+; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
+; AVX1OR2-NEXT:    vbroadcastsd 496(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmulpd 16(%rbp), %ymm10, %ymm11
+; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
+; AVX1OR2-NEXT:    vmovapd 48(%rbp), %ymm4
+; AVX1OR2-NEXT:    vmulpd %ymm4, %ymm10, %ymm10
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
+; AVX1OR2-NEXT:    vbroadcastsd 504(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmovapd 112(%rbp), %ymm2
+; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm10, %ymm11
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
+; AVX1OR2-NEXT:    vmovapd 80(%rbp), %ymm14
+; AVX1OR2-NEXT:    vmulpd %ymm10, %ymm14, %ymm10
+; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
+; AVX1OR2-NEXT:    vbroadcastsd 512(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmulpd 144(%rbp), %ymm10, %ymm11
+; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
+; AVX1OR2-NEXT:    vmovapd 176(%rbp), %ymm2
+; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm10, %ymm10
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
+; AVX1OR2-NEXT:    vbroadcastsd 520(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmulpd 240(%rbp), %ymm10, %ymm11
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
+; AVX1OR2-NEXT:    vmovapd %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
+; AVX1OR2-NEXT:    vmulpd 208(%rbp), %ymm10, %ymm1
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm0, %ymm0
+; AVX1OR2-NEXT:    vmovapd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
+; AVX1OR2-NEXT:    vbroadcastsd 528(%rbp), %ymm0
+; AVX1OR2-NEXT:    vmulpd %ymm0, %ymm13, %ymm1
+; AVX1OR2-NEXT:    vbroadcastsd 536(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmulpd %ymm5, %ymm10, %ymm11
+; AVX1OR2-NEXT:    vmovapd %ymm5, %ymm6
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
+; AVX1OR2-NEXT:    vmulpd %ymm0, %ymm9, %ymm0
+; AVX1OR2-NEXT:    vmulpd %ymm10, %ymm12, %ymm10
+; AVX1OR2-NEXT:    vmovapd %ymm12, %ymm5
+; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
+; AVX1OR2-NEXT:    vbroadcastsd 544(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmulpd %ymm3, %ymm10, %ymm11
+; AVX1OR2-NEXT:    vmovapd %ymm3, %ymm12
+; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
+; AVX1OR2-NEXT:    vmulpd %ymm10, %ymm15, %ymm10
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
+; AVX1OR2-NEXT:    vbroadcastsd 552(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmulpd %ymm10, %ymm8, %ymm11
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
+; AVX1OR2-NEXT:    vmulpd %ymm7, %ymm10, %ymm10
+; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
+; AVX1OR2-NEXT:    vbroadcastsd 560(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmulpd 16(%rbp), %ymm10, %ymm11
+; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
+; AVX1OR2-NEXT:    vmulpd %ymm4, %ymm10, %ymm10
+; AVX1OR2-NEXT:    vmovapd %ymm4, %ymm3
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
+; AVX1OR2-NEXT:    vbroadcastsd 568(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmulpd 112(%rbp), %ymm10, %ymm11
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
+; AVX1OR2-NEXT:    vmulpd %ymm10, %ymm14, %ymm10
+; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
+; AVX1OR2-NEXT:    vbroadcastsd 576(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmovapd 144(%rbp), %ymm4
+; AVX1OR2-NEXT:    vmulpd %ymm4, %ymm10, %ymm11
+; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
+; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm10, %ymm10
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
+; AVX1OR2-NEXT:    vbroadcastsd 584(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmovapd 240(%rbp), %ymm14
+; AVX1OR2-NEXT:    vmulpd %ymm10, %ymm14, %ymm11
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
+; AVX1OR2-NEXT:    vmovapd %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
+; AVX1OR2-NEXT:    vmovapd 208(%rbp), %ymm2
+; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm10, %ymm1
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm0, %ymm0
+; AVX1OR2-NEXT:    vmovapd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
+; AVX1OR2-NEXT:    vbroadcastsd 592(%rbp), %ymm0
+; AVX1OR2-NEXT:    vmulpd %ymm0, %ymm13, %ymm1
+; AVX1OR2-NEXT:    vbroadcastsd 600(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmulpd %ymm6, %ymm10, %ymm11
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
+; AVX1OR2-NEXT:    vmulpd %ymm0, %ymm9, %ymm0
+; AVX1OR2-NEXT:    vmulpd %ymm5, %ymm10, %ymm10
+; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
+; AVX1OR2-NEXT:    vbroadcastsd 608(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmulpd %ymm10, %ymm12, %ymm11
+; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
+; AVX1OR2-NEXT:    vmulpd %ymm10, %ymm15, %ymm10
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
+; AVX1OR2-NEXT:    vbroadcastsd 616(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmulpd %ymm10, %ymm8, %ymm11
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
+; AVX1OR2-NEXT:    vmulpd %ymm7, %ymm10, %ymm10
+; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
+; AVX1OR2-NEXT:    vbroadcastsd 624(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmulpd 16(%rbp), %ymm10, %ymm11
+; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
+; AVX1OR2-NEXT:    vmulpd %ymm3, %ymm10, %ymm10
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
+; AVX1OR2-NEXT:    vbroadcastsd 632(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmovapd 112(%rbp), %ymm3
+; AVX1OR2-NEXT:    vmulpd %ymm3, %ymm10, %ymm11
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
+; AVX1OR2-NEXT:    vmovapd 80(%rbp), %ymm3
+; AVX1OR2-NEXT:    vmulpd %ymm3, %ymm10, %ymm10
+; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm10, %ymm0
+; AVX1OR2-NEXT:    vbroadcastsd 640(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmulpd %ymm4, %ymm10, %ymm11
+; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm11, %ymm0
+; AVX1OR2-NEXT:    vmovapd 176(%rbp), %ymm3
+; AVX1OR2-NEXT:    vmulpd %ymm3, %ymm10, %ymm10
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm10, %ymm1
+; AVX1OR2-NEXT:    vbroadcastsd 648(%rbp), %ymm10
+; AVX1OR2-NEXT:    vmovapd %ymm14, %ymm4
+; AVX1OR2-NEXT:    vmulpd %ymm10, %ymm14, %ymm11
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm1
+; AVX1OR2-NEXT:    vmovapd %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
+; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm10, %ymm1
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm0, %ymm0
+; AVX1OR2-NEXT:    vmovapd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill
+; AVX1OR2-NEXT:    vbroadcastsd 656(%rbp), %ymm2
+; AVX1OR2-NEXT:    vmovapd %ymm13, %ymm3
+; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm13, %ymm1
+; AVX1OR2-NEXT:    vbroadcastsd 664(%rbp), %ymm0
+; AVX1OR2-NEXT:    vmulpd %ymm0, %ymm6, %ymm14
+; AVX1OR2-NEXT:    vmovapd %ymm6, %ymm10
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm14, %ymm1
+; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm9, %ymm2
+; AVX1OR2-NEXT:    vmulpd %ymm0, %ymm5, %ymm0
+; AVX1OR2-NEXT:    vmovapd %ymm5, %ymm6
+; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm2, %ymm0
+; AVX1OR2-NEXT:    vbroadcastsd 672(%rbp), %ymm2
+; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm12, %ymm14
+; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm14, %ymm0
+; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm15, %ymm2
+; AVX1OR2-NEXT:    vaddpd %ymm2, %ymm1, %ymm1
+; AVX1OR2-NEXT:    vbroadcastsd 680(%rbp), %ymm2
+; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm8, %ymm14
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm14, %ymm1
+; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm7, %ymm2
+; AVX1OR2-NEXT:    vaddpd %ymm2, %ymm0, %ymm0
+; AVX1OR2-NEXT:    vbroadcastsd 688(%rbp), %ymm2
+; AVX1OR2-NEXT:    vmovapd 16(%rbp), %ymm11
+; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm11, %ymm14
+; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm14, %ymm0
+; AVX1OR2-NEXT:    vmulpd 48(%rbp), %ymm2, %ymm2
+; AVX1OR2-NEXT:    vaddpd %ymm2, %ymm1, %ymm1
+; AVX1OR2-NEXT:    vbroadcastsd 696(%rbp), %ymm2
+; AVX1OR2-NEXT:    vmovapd 112(%rbp), %ymm5
+; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm5, %ymm14
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm14, %ymm1
+; AVX1OR2-NEXT:    vmovapd 80(%rbp), %ymm5
+; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm5, %ymm2
+; AVX1OR2-NEXT:    vaddpd %ymm2, %ymm0, %ymm0
+; AVX1OR2-NEXT:    vbroadcastsd 704(%rbp), %ymm2
+; AVX1OR2-NEXT:    vmulpd 144(%rbp), %ymm2, %ymm14
+; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm14, %ymm0
+; AVX1OR2-NEXT:    vmovapd 176(%rbp), %ymm13
+; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm13, %ymm2
+; AVX1OR2-NEXT:    vaddpd %ymm2, %ymm1, %ymm1
+; AVX1OR2-NEXT:    vbroadcastsd 712(%rbp), %ymm2
+; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm4, %ymm14
+; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm14, %ymm1
+; AVX1OR2-NEXT:    vmovapd 208(%rbp), %ymm14
+; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm14, %ymm2
+; AVX1OR2-NEXT:    vaddpd %ymm2, %ymm0, %ymm0
+; AVX1OR2-NEXT:    vbroadcastsd 720(%rbp), %ymm2
+; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm3, %ymm3
+; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm9, %ymm2
+; AVX1OR2-NEXT:    vbroadcastsd 728(%rbp), %ymm4
+; AVX1OR2-NEXT:    vmulpd %ymm4, %ymm10, %ymm5
+; AVX1OR2-NEXT:    vaddpd %ymm5, %ymm3, %ymm3
+; AVX1OR2-NEXT:    vmulpd %ymm4, %ymm6, %ymm4
+; AVX1OR2-NEXT:    vaddpd %ymm4, %ymm2, %ymm2
+; AVX1OR2-NEXT:    vbroadcastsd 736(%rbp), %ymm4
+; AVX1OR2-NEXT:    vmulpd %ymm4, %ymm12, %ymm5
+; AVX1OR2-NEXT:    vaddpd %ymm5, %ymm2, %ymm2
+; AVX1OR2-NEXT:    vmulpd %ymm4, %ymm15, %ymm4
+; AVX1OR2-NEXT:    vaddpd %ymm4, %ymm3, %ymm3
+; AVX1OR2-NEXT:    vbroadcastsd 744(%rbp), %ymm4
+; AVX1OR2-NEXT:    vmulpd %ymm4, %ymm8, %ymm5
+; AVX1OR2-NEXT:    vaddpd %ymm5, %ymm3, %ymm3
+; AVX1OR2-NEXT:    vmulpd %ymm4, %ymm7, %ymm4
+; AVX1OR2-NEXT:    vaddpd %ymm4, %ymm2, %ymm2
+; AVX1OR2-NEXT:    vbroadcastsd 752(%rbp), %ymm4
+; AVX1OR2-NEXT:    vmulpd %ymm4, %ymm11, %ymm5
+; AVX1OR2-NEXT:    vaddpd %ymm5, %ymm2, %ymm2
+; AVX1OR2-NEXT:    vmulpd 48(%rbp), %ymm4, %ymm4
+; AVX1OR2-NEXT:    vaddpd %ymm4, %ymm3, %ymm3
+; AVX1OR2-NEXT:    vbroadcastsd 760(%rbp), %ymm4
+; AVX1OR2-NEXT:    vmulpd 112(%rbp), %ymm4, %ymm5
+; AVX1OR2-NEXT:    vaddpd %ymm5, %ymm3, %ymm3
+; AVX1OR2-NEXT:    vmulpd 80(%rbp), %ymm4, %ymm4
+; AVX1OR2-NEXT:    vaddpd %ymm4, %ymm2, %ymm2
+; AVX1OR2-NEXT:    vbroadcastsd 768(%rbp), %ymm4
+; AVX1OR2-NEXT:    vmulpd 144(%rbp), %ymm4, %ymm5
+; AVX1OR2-NEXT:    vaddpd %ymm5, %ymm2, %ymm2
+; AVX1OR2-NEXT:    vmulpd %ymm4, %ymm13, %ymm4
+; AVX1OR2-NEXT:    vaddpd %ymm4, %ymm3, %ymm3
+; AVX1OR2-NEXT:    vbroadcastsd 776(%rbp), %ymm4
+; AVX1OR2-NEXT:    vmulpd 240(%rbp), %ymm4, %ymm5
+; AVX1OR2-NEXT:    vaddpd %ymm5, %ymm3, %ymm3
+; AVX1OR2-NEXT:    vmulpd %ymm4, %ymm14, %ymm4
+; AVX1OR2-NEXT:    vaddpd %ymm4, %ymm2, %ymm2
+; AVX1OR2-NEXT:    vmovapd %ymm3, 480(%rdi)
+; AVX1OR2-NEXT:    vmovapd %ymm2, 448(%rdi)
+; AVX1OR2-NEXT:    vmovapd %ymm1, 416(%rdi)
+; AVX1OR2-NEXT:    vmovapd %ymm0, 384(%rdi)
+; AVX1OR2-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
+; AVX1OR2-NEXT:    vmovaps %ymm0, 352(%rdi)
+; AVX1OR2-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
+; AVX1OR2-NEXT:    vmovaps %ymm0, 320(%rdi)
+; AVX1OR2-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
+; AVX1OR2-NEXT:    vmovaps %ymm0, 288(%rdi)
+; AVX1OR2-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
+; AVX1OR2-NEXT:    vmovaps %ymm0, 256(%rdi)
+; AVX1OR2-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
+; AVX1OR2-NEXT:    vmovaps %ymm0, 224(%rdi)
+; AVX1OR2-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
+; AVX1OR2-NEXT:    vmovaps %ymm0, 192(%rdi)
+; AVX1OR2-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
+; AVX1OR2-NEXT:    vmovaps %ymm0, 160(%rdi)
+; AVX1OR2-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
+; AVX1OR2-NEXT:    vmovaps %ymm0, 128(%rdi)
+; AVX1OR2-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
+; AVX1OR2-NEXT:    vmovaps %ymm0, 96(%rdi)
+; AVX1OR2-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
+; AVX1OR2-NEXT:    vmovaps %ymm0, 64(%rdi)
+; AVX1OR2-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
+; AVX1OR2-NEXT:    vmovaps %ymm0, 32(%rdi)
+; AVX1OR2-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload
+; AVX1OR2-NEXT:    vmovaps %ymm0, (%rdi)
+; AVX1OR2-NEXT:    movq %rbp, %rsp
+; AVX1OR2-NEXT:    popq %rbp
+; AVX1OR2-NEXT:    vzeroupper
+; AVX1OR2-NEXT:    retq
 ;
 ; AVX512-LABEL: test_mul8x8_f64:
 ; AVX512:       # %bb.0: # %entry


        


More information about the llvm-commits mailing list