brintos

brintos / llvm-project-archived public Read only

0
0
Text · 203.8 KiB · f38b769 Raw
4153 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -disable-peephole -mtriple=x86_64-unknown-unknown | FileCheck %s --check-prefixes=SSE3; RUN: llc < %s -disable-peephole -mtriple=x86_64-unknown-unknown -mattr=+avx | FileCheck %s --check-prefixes=AVX1OR2,AVX14; RUN: llc < %s -disable-peephole -mtriple=x86_64-unknown-unknown -mattr=+avx2 | FileCheck %s --check-prefixes=AVX1OR2,AVX25; RUN: llc < %s -disable-peephole -mtriple=x86_64-unknown-unknown -mattr=+avx512f | FileCheck %s --check-prefixes=AVX512,AVX512F6; RUN: llc < %s -disable-peephole -mtriple=x86_64-unknown-unknown -mattr=+avx512vl | FileCheck %s --check-prefixes=AVX512,AVX512VL7 8;9; Basic matrix multiply tests based on the pattern:10;11; using matrix_ty = float __attribute__((matrix_type(2,2)));12; matrix_ty test_mul2x2(matrix_ty a0, matrix_ty a1) nounwind {13;     return a0 * a1;14; }15;16 17define <4 x float> @test_mul2x2_f32(<4 x float> %a0, <4 x float> %a1) nounwind {18; SSE-LABEL: test_mul2x2_f32:19; SSE:       # %bb.0: # %entry20; SSE-NEXT:    movaps %xmm1, %xmm221; SSE-NEXT:    unpcklps {{.*#+}} xmm2 = xmm2[0],xmm1[0],xmm2[1],xmm1[1]22; SSE-NEXT:    mulps %xmm0, %xmm223; SSE-NEXT:    movaps %xmm1, %xmm324; SSE-NEXT:    unpckhps {{.*#+}} xmm3 = xmm3[2],xmm1[2],xmm3[3],xmm1[3]25; SSE-NEXT:    mulps %xmm0, %xmm326; SSE-NEXT:    movaps %xmm0, %xmm427; SSE-NEXT:    unpckhpd {{.*#+}} xmm4 = xmm4[1],xmm0[1]28; SSE-NEXT:    movaps %xmm1, %xmm029; SSE-NEXT:    shufps {{.*#+}} xmm0 = xmm0[1,1],xmm1[1,1]30; SSE-NEXT:    mulps %xmm4, %xmm031; SSE-NEXT:    addps %xmm2, %xmm032; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[3,3,3,3]33; SSE-NEXT:    mulps %xmm4, %xmm134; SSE-NEXT:    addps %xmm3, %xmm135; SSE-NEXT:    movlhps {{.*#+}} xmm0 = xmm0[0],xmm1[0]36; SSE-NEXT:    retq37;38; AVX1-LABEL: test_mul2x2_f32:39; AVX1:       # %bb.0: # %entry40; AVX1-NEXT:    vshufpd {{.*#+}} xmm2 = xmm0[1,0]41; AVX1-NEXT:    vmovsldup {{.*#+}} xmm3 = xmm1[0,0,2,2]42; AVX1-NEXT:    vmulps %xmm3, %xmm0, %xmm343; AVX1-NEXT:    vmovshdup {{.*#+}} xmm4 = xmm1[1,1,3,3]44; AVX1-NEXT:    vmulps %xmm4, %xmm2, %xmm445; AVX1-NEXT:    vaddps %xmm4, %xmm3, %xmm346; AVX1-NEXT:    vshufps {{.*#+}} xmm4 = xmm1[2,2,2,2]47; AVX1-NEXT:    vmulps %xmm4, %xmm0, %xmm048; AVX1-NEXT:    vshufps {{.*#+}} xmm1 = xmm1[3,3,3,3]49; AVX1-NEXT:    vmulps %xmm1, %xmm2, %xmm150; AVX1-NEXT:    vaddps %xmm1, %xmm0, %xmm051; AVX1-NEXT:    vmovlhps {{.*#+}} xmm0 = xmm3[0],xmm0[0]52; AVX1-NEXT:    retq53;54; AVX2-LABEL: test_mul2x2_f32:55; AVX2:       # %bb.0: # %entry56; AVX2-NEXT:    vshufpd {{.*#+}} xmm2 = xmm0[1,0]57; AVX2-NEXT:    vbroadcastss %xmm1, %xmm358; AVX2-NEXT:    vmulps %xmm3, %xmm0, %xmm359; AVX2-NEXT:    vmovshdup {{.*#+}} xmm4 = xmm1[1,1,3,3]60; AVX2-NEXT:    vmulps %xmm4, %xmm2, %xmm461; AVX2-NEXT:    vaddps %xmm4, %xmm3, %xmm362; AVX2-NEXT:    vshufps {{.*#+}} xmm4 = xmm1[2,2,2,2]63; AVX2-NEXT:    vmulps %xmm4, %xmm0, %xmm064; AVX2-NEXT:    vshufps {{.*#+}} xmm1 = xmm1[3,3,3,3]65; AVX2-NEXT:    vmulps %xmm1, %xmm2, %xmm166; AVX2-NEXT:    vaddps %xmm1, %xmm0, %xmm067; AVX2-NEXT:    vmovlhps {{.*#+}} xmm0 = xmm3[0],xmm0[0]68; AVX2-NEXT:    retq69;70; AVX512-LABEL: test_mul2x2_f32:71; AVX512:       # %bb.0: # %entry72; AVX512-NEXT:    vshufpd {{.*#+}} xmm2 = xmm0[1,0]73; AVX512-NEXT:    vbroadcastss %xmm1, %xmm374; AVX512-NEXT:    vmulps %xmm3, %xmm0, %xmm375; AVX512-NEXT:    vmovshdup {{.*#+}} xmm4 = xmm1[1,1,3,3]76; AVX512-NEXT:    vmulps %xmm4, %xmm2, %xmm477; AVX512-NEXT:    vaddps %xmm4, %xmm3, %xmm378; AVX512-NEXT:    vshufps {{.*#+}} xmm4 = xmm1[2,2,2,2]79; AVX512-NEXT:    vmulps %xmm4, %xmm0, %xmm080; AVX512-NEXT:    vshufps {{.*#+}} xmm1 = xmm1[3,3,3,3]81; AVX512-NEXT:    vmulps %xmm1, %xmm2, %xmm182; AVX512-NEXT:    vaddps %xmm1, %xmm0, %xmm083; AVX512-NEXT:    vmovlhps {{.*#+}} xmm0 = xmm3[0],xmm0[0]84; AVX512-NEXT:    retq85entry:86  %split = shufflevector <4 x float> %a0, <4 x float> poison, <2 x i32> <i32 0, i32 1>87  %split1 = shufflevector <4 x float> %a0, <4 x float> poison, <2 x i32> <i32 2, i32 3>88  %splat.splat = shufflevector <4 x float> %a1, <4 x float> undef, <2 x i32> zeroinitializer89  %0 = fmul <2 x float> %split, %splat.splat90  %splat.splat6 = shufflevector <4 x float> %a1, <4 x float> undef, <2 x i32> <i32 1, i32 1>91  %1 = fmul <2 x float> %split1, %splat.splat692  %2 = fadd <2 x float> %0, %193  %splat.splat9 = shufflevector <4 x float> %a1, <4 x float> undef, <2 x i32> <i32 2, i32 2>94  %3 = fmul <2 x float> %split, %splat.splat995  %splat.splat12 = shufflevector <4 x float> %a1, <4 x float> undef, <2 x i32> <i32 3, i32 3>96  %4 = fmul <2 x float> %split1, %splat.splat1297  %5 = fadd <2 x float> %3, %498  %6 = shufflevector <2 x float> %2, <2 x float> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 3>99  ret <4 x float> %6100}101 102define <4 x double> @test_mul2x2_f64(<4 x double> %a0, <4 x double> %a1) nounwind {103; SSE-LABEL: test_mul2x2_f64:104; SSE:       # %bb.0: # %entry105; SSE-NEXT:    movapd %xmm2, %xmm4106; SSE-NEXT:    unpcklpd {{.*#+}} xmm4 = xmm4[0],xmm2[0]107; SSE-NEXT:    mulpd %xmm0, %xmm4108; SSE-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1,1]109; SSE-NEXT:    mulpd %xmm1, %xmm2110; SSE-NEXT:    addpd %xmm2, %xmm4111; SSE-NEXT:    movapd %xmm3, %xmm2112; SSE-NEXT:    unpcklpd {{.*#+}} xmm2 = xmm2[0],xmm3[0]113; SSE-NEXT:    mulpd %xmm0, %xmm2114; SSE-NEXT:    unpckhpd {{.*#+}} xmm3 = xmm3[1,1]115; SSE-NEXT:    mulpd %xmm3, %xmm1116; SSE-NEXT:    addpd %xmm2, %xmm1117; SSE-NEXT:    movapd %xmm4, %xmm0118; SSE-NEXT:    retq119;120; AVX1-LABEL: test_mul2x2_f64:121; AVX1:       # %bb.0: # %entry122; AVX1-NEXT:    vperm2f128 {{.*#+}} ymm2 = ymm0[2,3,2,3]123; AVX1-NEXT:    vshufpd {{.*#+}} ymm3 = ymm1[1,1,3,3]124; AVX1-NEXT:    vmulpd %ymm3, %ymm2, %ymm2125; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm0126; AVX1-NEXT:    vmovddup {{.*#+}} ymm1 = ymm1[0,0,2,2]127; AVX1-NEXT:    vmulpd %ymm1, %ymm0, %ymm0128; AVX1-NEXT:    vaddpd %ymm2, %ymm0, %ymm0129; AVX1-NEXT:    retq130;131; AVX2-LABEL: test_mul2x2_f64:132; AVX2:       # %bb.0: # %entry133; AVX2-NEXT:    vshufpd {{.*#+}} ymm2 = ymm1[1,1,3,3]134; AVX2-NEXT:    vpermpd {{.*#+}} ymm3 = ymm0[2,3,2,3]135; AVX2-NEXT:    vmulpd %ymm2, %ymm3, %ymm2136; AVX2-NEXT:    vmovddup {{.*#+}} ymm1 = ymm1[0,0,2,2]137; AVX2-NEXT:    vpermpd {{.*#+}} ymm0 = ymm0[0,1,0,1]138; AVX2-NEXT:    vmulpd %ymm1, %ymm0, %ymm0139; AVX2-NEXT:    vaddpd %ymm2, %ymm0, %ymm0140; AVX2-NEXT:    retq141;142; AVX512-LABEL: test_mul2x2_f64:143; AVX512:       # %bb.0: # %entry144; AVX512-NEXT:    vshufpd {{.*#+}} ymm2 = ymm1[1,1,3,3]145; AVX512-NEXT:    vpermpd {{.*#+}} ymm3 = ymm0[2,3,2,3]146; AVX512-NEXT:    vmulpd %ymm2, %ymm3, %ymm2147; AVX512-NEXT:    vmovddup {{.*#+}} ymm1 = ymm1[0,0,2,2]148; AVX512-NEXT:    vpermpd {{.*#+}} ymm0 = ymm0[0,1,0,1]149; AVX512-NEXT:    vmulpd %ymm1, %ymm0, %ymm0150; AVX512-NEXT:    vaddpd %ymm2, %ymm0, %ymm0151; AVX512-NEXT:    retq152entry:153  %split = shufflevector <4 x double> %a0, <4 x double> poison, <2 x i32> <i32 0, i32 1>154  %split1 = shufflevector <4 x double> %a0, <4 x double> poison, <2 x i32> <i32 2, i32 3>155  %splat.splat = shufflevector <4 x double> %a1, <4 x double> undef, <2 x i32> zeroinitializer156  %0 = fmul <2 x double> %split, %splat.splat157  %splat.splat6 = shufflevector <4 x double> %a1, <4 x double> undef, <2 x i32> <i32 1, i32 1>158  %1 = fmul <2 x double> %split1, %splat.splat6159  %2 = fadd <2 x double> %0, %1160  %splat.splat9 = shufflevector <4 x double> %a1, <4 x double> undef, <2 x i32> <i32 2, i32 2>161  %3 = fmul <2 x double> %split, %splat.splat9162  %splat.splat12 = shufflevector <4 x double> %a1, <4 x double> undef, <2 x i32> <i32 3, i32 3>163  %4 = fmul <2 x double> %split1, %splat.splat12164  %5 = fadd <2 x double> %3, %4165  %6 = shufflevector <2 x double> %2, <2 x double> %5, <4 x i32> <i32 0, i32 1, i32 2, i32 3>166  ret <4 x double> %6167}168 169define <9 x float> @test_mul3x3_f32(<9 x float> %a0, <9 x float> %a1) nounwind {170; SSE-LABEL: test_mul3x3_f32:171; SSE:       # %bb.0: # %entry172; SSE-NEXT:    movq %rdi, %rax173; SSE-NEXT:    movss {{.*#+}} xmm8 = mem[0],zero,zero,zero174; SSE-NEXT:    movss {{.*#+}} xmm10 = mem[0],zero,zero,zero175; SSE-NEXT:    movss {{.*#+}} xmm9 = mem[0],zero,zero,zero176; SSE-NEXT:    movss {{.*#+}} xmm11 = mem[0],zero,zero,zero177; SSE-NEXT:    movss {{.*#+}} xmm12 = mem[0],zero,zero,zero178; SSE-NEXT:    unpcklps {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]179; SSE-NEXT:    movaps %xmm2, %xmm13180; SSE-NEXT:    mulss %xmm12, %xmm13181; SSE-NEXT:    unpcklps {{.*#+}} xmm12 = xmm12[0,0,1,1]182; SSE-NEXT:    mulps %xmm0, %xmm12183; SSE-NEXT:    unpcklps {{.*#+}} xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1]184; SSE-NEXT:    movaps %xmm5, %xmm1185; SSE-NEXT:    mulss %xmm11, %xmm1186; SSE-NEXT:    unpcklps {{.*#+}} xmm11 = xmm11[0,0,1,1]187; SSE-NEXT:    mulps %xmm3, %xmm11188; SSE-NEXT:    addps %xmm12, %xmm11189; SSE-NEXT:    movss {{.*#+}} xmm4 = mem[0],zero,zero,zero190; SSE-NEXT:    unpcklps {{.*#+}} xmm6 = xmm6[0],xmm7[0],xmm6[1],xmm7[1]191; SSE-NEXT:    movaps %xmm9, %xmm7192; SSE-NEXT:    mulss %xmm4, %xmm7193; SSE-NEXT:    unpcklps {{.*#+}} xmm4 = xmm4[0,0,1,1]194; SSE-NEXT:    mulps %xmm6, %xmm4195; SSE-NEXT:    addps %xmm11, %xmm4196; SSE-NEXT:    movss {{.*#+}} xmm11 = mem[0],zero,zero,zero197; SSE-NEXT:    addss %xmm13, %xmm1198; SSE-NEXT:    addss %xmm7, %xmm1199; SSE-NEXT:    movaps %xmm2, %xmm7200; SSE-NEXT:    mulss %xmm11, %xmm7201; SSE-NEXT:    unpcklps {{.*#+}} xmm11 = xmm11[0,0,1,1]202; SSE-NEXT:    mulps %xmm0, %xmm11203; SSE-NEXT:    movaps %xmm5, %xmm12204; SSE-NEXT:    mulss %xmm10, %xmm12205; SSE-NEXT:    unpcklps {{.*#+}} xmm10 = xmm10[0,0,1,1]206; SSE-NEXT:    mulps %xmm3, %xmm10207; SSE-NEXT:    addps %xmm11, %xmm10208; SSE-NEXT:    movaps %xmm9, %xmm11209; SSE-NEXT:    mulss %xmm8, %xmm11210; SSE-NEXT:    unpcklps {{.*#+}} xmm8 = xmm8[0,0,1,1]211; SSE-NEXT:    mulps %xmm6, %xmm8212; SSE-NEXT:    addps %xmm10, %xmm8213; SSE-NEXT:    addss %xmm7, %xmm12214; SSE-NEXT:    addss %xmm11, %xmm12215; SSE-NEXT:    movaps %xmm8, %xmm7216; SSE-NEXT:    movlhps {{.*#+}} xmm7 = xmm7[0],xmm12[0]217; SSE-NEXT:    movss {{.*#+}} xmm10 = mem[0],zero,zero,zero218; SSE-NEXT:    mulss %xmm10, %xmm2219; SSE-NEXT:    unpcklps {{.*#+}} xmm10 = xmm10[0,0,1,1]220; SSE-NEXT:    mulps %xmm0, %xmm10221; SSE-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero222; SSE-NEXT:    mulss %xmm0, %xmm5223; SSE-NEXT:    unpcklps {{.*#+}} xmm0 = xmm0[0,0,1,1]224; SSE-NEXT:    mulps %xmm3, %xmm0225; SSE-NEXT:    addps %xmm10, %xmm0226; SSE-NEXT:    movss {{.*#+}} xmm3 = mem[0],zero,zero,zero227; SSE-NEXT:    mulss %xmm3, %xmm9228; SSE-NEXT:    unpcklps {{.*#+}} xmm3 = xmm3[0,0,1,1]229; SSE-NEXT:    mulps %xmm6, %xmm3230; SSE-NEXT:    addps %xmm0, %xmm3231; SSE-NEXT:    shufps {{.*#+}} xmm7 = xmm7[1,2],xmm3[0,1]232; SSE-NEXT:    addss %xmm2, %xmm5233; SSE-NEXT:    addss %xmm9, %xmm5234; SSE-NEXT:    movlhps {{.*#+}} xmm8 = xmm8[0],xmm1[0]235; SSE-NEXT:    shufps {{.*#+}} xmm4 = xmm4[0,1],xmm8[2,0]236; SSE-NEXT:    movss %xmm5, 32(%rdi)237; SSE-NEXT:    movaps %xmm7, 16(%rdi)238; SSE-NEXT:    movaps %xmm4, (%rdi)239; SSE-NEXT:    retq240;241; AVX1-LABEL: test_mul3x3_f32:242; AVX1:       # %bb.0: # %entry243; AVX1-NEXT:    movq %rdi, %rax244; AVX1-NEXT:    vmovss {{.*#+}} xmm8 = mem[0],zero,zero,zero245; AVX1-NEXT:    vinsertps {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[2,3]246; AVX1-NEXT:    vbroadcastss {{[0-9]+}}(%rsp), %xmm1247; AVX1-NEXT:    vmulps %xmm1, %xmm0, %xmm9248; AVX1-NEXT:    vinsertps {{.*#+}} xmm3 = xmm3[0],xmm4[0],xmm3[2,3]249; AVX1-NEXT:    vbroadcastss {{[0-9]+}}(%rsp), %xmm4250; AVX1-NEXT:    vmulps %xmm4, %xmm3, %xmm10251; AVX1-NEXT:    vaddps %xmm10, %xmm9, %xmm9252; AVX1-NEXT:    vinsertps {{.*#+}} xmm6 = xmm6[0],xmm7[0],xmm6[2,3]253; AVX1-NEXT:    vbroadcastss {{[0-9]+}}(%rsp), %xmm7254; AVX1-NEXT:    vmulps %xmm7, %xmm6, %xmm10255; AVX1-NEXT:    vaddps %xmm10, %xmm9, %xmm9256; AVX1-NEXT:    vmulss %xmm1, %xmm2, %xmm1257; AVX1-NEXT:    vmulss %xmm4, %xmm5, %xmm4258; AVX1-NEXT:    vaddss %xmm4, %xmm1, %xmm1259; AVX1-NEXT:    vmulss %xmm7, %xmm8, %xmm4260; AVX1-NEXT:    vaddss %xmm4, %xmm1, %xmm1261; AVX1-NEXT:    vinsertps {{.*#+}} xmm1 = xmm9[0,1],xmm1[0],xmm9[3]262; AVX1-NEXT:    vbroadcastss {{[0-9]+}}(%rsp), %xmm4263; AVX1-NEXT:    vmulps %xmm4, %xmm0, %xmm7264; AVX1-NEXT:    vbroadcastss {{[0-9]+}}(%rsp), %xmm9265; AVX1-NEXT:    vmulps %xmm3, %xmm9, %xmm10266; AVX1-NEXT:    vaddps %xmm7, %xmm10, %xmm7267; AVX1-NEXT:    vbroadcastss {{[0-9]+}}(%rsp), %xmm10268; AVX1-NEXT:    vmulps %xmm6, %xmm10, %xmm11269; AVX1-NEXT:    vaddps %xmm7, %xmm11, %xmm7270; AVX1-NEXT:    vmulss %xmm4, %xmm2, %xmm4271; AVX1-NEXT:    vmulss %xmm5, %xmm9, %xmm9272; AVX1-NEXT:    vaddss %xmm4, %xmm9, %xmm4273; AVX1-NEXT:    vmulss %xmm10, %xmm8, %xmm9274; AVX1-NEXT:    vaddss %xmm4, %xmm9, %xmm4275; AVX1-NEXT:    vinsertps {{.*#+}} xmm4 = xmm7[0,1],xmm4[0],xmm7[3]276; AVX1-NEXT:    vbroadcastss {{[0-9]+}}(%rsp), %xmm9277; AVX1-NEXT:    vmulps %xmm0, %xmm9, %xmm0278; AVX1-NEXT:    vbroadcastss {{[0-9]+}}(%rsp), %xmm10279; AVX1-NEXT:    vmulps %xmm3, %xmm10, %xmm3280; AVX1-NEXT:    vaddps %xmm3, %xmm0, %xmm0281; AVX1-NEXT:    vbroadcastss {{[0-9]+}}(%rsp), %xmm3282; AVX1-NEXT:    vmulps %xmm3, %xmm6, %xmm6283; AVX1-NEXT:    vaddps %xmm6, %xmm0, %xmm0284; AVX1-NEXT:    vshufps {{.*#+}} xmm0 = xmm4[1,2],xmm0[0,1]285; AVX1-NEXT:    vmulss %xmm2, %xmm9, %xmm2286; AVX1-NEXT:    vmulss %xmm5, %xmm10, %xmm4287; AVX1-NEXT:    vaddss %xmm4, %xmm2, %xmm2288; AVX1-NEXT:    vmulss %xmm3, %xmm8, %xmm3289; AVX1-NEXT:    vaddss %xmm3, %xmm2, %xmm2290; AVX1-NEXT:    vinsertps {{.*#+}} xmm1 = xmm1[0,1,2],xmm7[0]291; AVX1-NEXT:    vmovss %xmm2, 32(%rdi)292; AVX1-NEXT:    vmovaps %xmm0, 16(%rdi)293; AVX1-NEXT:    vmovaps %xmm1, (%rdi)294; AVX1-NEXT:    retq295;296; AVX2-LABEL: test_mul3x3_f32:297; AVX2:       # %bb.0: # %entry298; AVX2-NEXT:    movq %rdi, %rax299; AVX2-NEXT:    vmovss {{.*#+}} xmm8 = mem[0],zero,zero,zero300; AVX2-NEXT:    vinsertps {{.*#+}} xmm0 = xmm0[0],xmm1[0],xmm0[2,3]301; AVX2-NEXT:    vbroadcastss {{[0-9]+}}(%rsp), %xmm1302; AVX2-NEXT:    vmulps %xmm1, %xmm0, %xmm9303; AVX2-NEXT:    vinsertps {{.*#+}} xmm3 = xmm3[0],xmm4[0],xmm3[2,3]304; AVX2-NEXT:    vbroadcastss {{[0-9]+}}(%rsp), %xmm4305; AVX2-NEXT:    vmulps %xmm4, %xmm3, %xmm10306; AVX2-NEXT:    vaddps %xmm10, %xmm9, %xmm9307; AVX2-NEXT:    vinsertps {{.*#+}} xmm6 = xmm6[0],xmm7[0],xmm6[2,3]308; AVX2-NEXT:    vbroadcastss {{[0-9]+}}(%rsp), %xmm7309; AVX2-NEXT:    vmulps %xmm7, %xmm6, %xmm10310; AVX2-NEXT:    vaddps %xmm10, %xmm9, %xmm9311; AVX2-NEXT:    vmulss %xmm1, %xmm2, %xmm1312; AVX2-NEXT:    vmulss %xmm4, %xmm5, %xmm4313; AVX2-NEXT:    vaddss %xmm4, %xmm1, %xmm1314; AVX2-NEXT:    vmulss %xmm7, %xmm8, %xmm4315; AVX2-NEXT:    vaddss %xmm4, %xmm1, %xmm1316; AVX2-NEXT:    vinsertps {{.*#+}} xmm1 = xmm9[0,1],xmm1[0],xmm9[3]317; AVX2-NEXT:    vbroadcastss {{[0-9]+}}(%rsp), %xmm4318; AVX2-NEXT:    vmulps %xmm4, %xmm0, %xmm7319; AVX2-NEXT:    vbroadcastss {{[0-9]+}}(%rsp), %xmm9320; AVX2-NEXT:    vmulps %xmm3, %xmm9, %xmm10321; AVX2-NEXT:    vaddps %xmm7, %xmm10, %xmm7322; AVX2-NEXT:    vbroadcastss {{[0-9]+}}(%rsp), %xmm10323; AVX2-NEXT:    vmulps %xmm6, %xmm10, %xmm11324; AVX2-NEXT:    vaddps %xmm7, %xmm11, %xmm7325; AVX2-NEXT:    vmulss %xmm4, %xmm2, %xmm4326; AVX2-NEXT:    vmulss %xmm5, %xmm9, %xmm9327; AVX2-NEXT:    vaddss %xmm4, %xmm9, %xmm4328; AVX2-NEXT:    vmulss %xmm10, %xmm8, %xmm9329; AVX2-NEXT:    vaddss %xmm4, %xmm9, %xmm4330; AVX2-NEXT:    vinsertps {{.*#+}} xmm4 = xmm7[0,1],xmm4[0],xmm7[3]331; AVX2-NEXT:    vbroadcastss {{[0-9]+}}(%rsp), %xmm7332; AVX2-NEXT:    vmulps %xmm7, %xmm0, %xmm0333; AVX2-NEXT:    vbroadcastss {{[0-9]+}}(%rsp), %xmm9334; AVX2-NEXT:    vmulps %xmm3, %xmm9, %xmm3335; AVX2-NEXT:    vaddps %xmm3, %xmm0, %xmm0336; AVX2-NEXT:    vbroadcastss {{[0-9]+}}(%rsp), %xmm3337; AVX2-NEXT:    vmulps %xmm3, %xmm6, %xmm6338; AVX2-NEXT:    vaddps %xmm6, %xmm0, %xmm0339; AVX2-NEXT:    vmulss %xmm7, %xmm2, %xmm2340; AVX2-NEXT:    vmulss %xmm5, %xmm9, %xmm5341; AVX2-NEXT:    vaddss %xmm5, %xmm2, %xmm2342; AVX2-NEXT:    vmulss %xmm3, %xmm8, %xmm3343; AVX2-NEXT:    vaddss %xmm3, %xmm2, %xmm2344; AVX2-NEXT:    vinsertf128 $1, %xmm4, %ymm1, %ymm1345; AVX2-NEXT:    vmovaps {{.*#+}} ymm3 = [0,1,2,4,5,6,u,u]346; AVX2-NEXT:    vpermps %ymm1, %ymm3, %ymm1347; AVX2-NEXT:    vbroadcastsd %xmm0, %ymm0348; AVX2-NEXT:    vblendps {{.*#+}} ymm0 = ymm1[0,1,2,3,4,5],ymm0[6,7]349; AVX2-NEXT:    vmovss %xmm2, 32(%rdi)350; AVX2-NEXT:    vmovaps %ymm0, (%rdi)351; AVX2-NEXT:    vzeroupper352; AVX2-NEXT:    retq353;354; AVX512F-LABEL: test_mul3x3_f32:355; AVX512F:       # %bb.0: # %entry356; AVX512F-NEXT:    valignd {{.*#+}} zmm2 = zmm0[3,4,5,6,7,8,9,10,11,12,13,14,15,0,1,2]357; AVX512F-NEXT:    vbroadcastss %xmm1, %xmm3358; AVX512F-NEXT:    vmulps %xmm3, %xmm0, %xmm3359; AVX512F-NEXT:    vextractf128 $1, %ymm0, %xmm5360; AVX512F-NEXT:    vmovshdup {{.*#+}} xmm6 = xmm1[1,1,3,3]361; AVX512F-NEXT:    vmulps %xmm6, %xmm2, %xmm4362; AVX512F-NEXT:    vaddps %xmm4, %xmm3, %xmm4363; AVX512F-NEXT:    vshufpd {{.*#+}} xmm3 = xmm5[1,0]364; AVX512F-NEXT:    vshufps {{.*#+}} xmm7 = xmm1[3,3,3,3]365; AVX512F-NEXT:    vshufpd {{.*#+}} xmm8 = xmm1[1,0]366; AVX512F-NEXT:    vshufps {{.*#+}} xmm9 = xmm1[2,2,2,2]367; AVX512F-NEXT:    vmulps %xmm3, %xmm9, %xmm9368; AVX512F-NEXT:    vaddps %xmm4, %xmm9, %xmm9369; AVX512F-NEXT:    vshufpd {{.*#+}} xmm4 = xmm0[1,0]370; AVX512F-NEXT:    vmulss %xmm1, %xmm4, %xmm10371; AVX512F-NEXT:    vmovshdup {{.*#+}} xmm11 = xmm5[1,1,3,3]372; AVX512F-NEXT:    vmulss %xmm6, %xmm11, %xmm5373; AVX512F-NEXT:    vaddss %xmm5, %xmm10, %xmm5374; AVX512F-NEXT:    vextractf32x4 $2, %zmm0, %xmm6375; AVX512F-NEXT:    vmulss %xmm6, %xmm8, %xmm8376; AVX512F-NEXT:    vaddss %xmm5, %xmm8, %xmm5377; AVX512F-NEXT:    vinsertps {{.*#+}} xmm5 = xmm9[0,1],xmm5[0],xmm9[3]378; AVX512F-NEXT:    vmulps %xmm7, %xmm0, %xmm8379; AVX512F-NEXT:    vextractf128 $1, %ymm1, %xmm9380; AVX512F-NEXT:    vmovsldup {{.*#+}} xmm10 = xmm9[0,0,2,2]381; AVX512F-NEXT:    vmulps %xmm2, %xmm10, %xmm10382; AVX512F-NEXT:    vaddps %xmm10, %xmm8, %xmm8383; AVX512F-NEXT:    vmovshdup {{.*#+}} xmm10 = xmm9[1,1,3,3]384; AVX512F-NEXT:    vmulps %xmm3, %xmm10, %xmm12385; AVX512F-NEXT:    vaddps %xmm12, %xmm8, %xmm8386; AVX512F-NEXT:    vmulss %xmm7, %xmm4, %xmm7387; AVX512F-NEXT:    vmulss %xmm9, %xmm11, %xmm12388; AVX512F-NEXT:    vaddss %xmm7, %xmm12, %xmm7389; AVX512F-NEXT:    vmulss %xmm6, %xmm10, %xmm10390; AVX512F-NEXT:    vaddss %xmm7, %xmm10, %xmm7391; AVX512F-NEXT:    vshufps {{.*#+}} xmm10 = xmm9[3,3,3,3]392; AVX512F-NEXT:    vshufpd {{.*#+}} xmm12 = xmm9[1,0]393; AVX512F-NEXT:    vshufps {{.*#+}} xmm9 = xmm9[2,2,2,2]394; AVX512F-NEXT:    vmulps %xmm0, %xmm9, %xmm0395; AVX512F-NEXT:    vmulps %xmm2, %xmm10, %xmm2396; AVX512F-NEXT:    vaddps %xmm2, %xmm0, %xmm0397; AVX512F-NEXT:    vextractf32x4 $2, %zmm1, %xmm1398; AVX512F-NEXT:    vbroadcastss %xmm1, %xmm2399; AVX512F-NEXT:    vmulps %xmm2, %xmm3, %xmm2400; AVX512F-NEXT:    vaddps %xmm2, %xmm0, %xmm0401; AVX512F-NEXT:    vmulss %xmm4, %xmm12, %xmm2402; AVX512F-NEXT:    vmulss %xmm10, %xmm11, %xmm3403; AVX512F-NEXT:    vaddss %xmm3, %xmm2, %xmm2404; AVX512F-NEXT:    vmulss %xmm1, %xmm6, %xmm1405; AVX512F-NEXT:    vaddss %xmm1, %xmm2, %xmm1406; AVX512F-NEXT:    vmovshdup {{.*#+}} xmm2 = xmm8[1,1,3,3]407; AVX512F-NEXT:    vinsertps {{.*#+}} xmm2 = xmm2[0],xmm7[0],xmm2[2,3]408; AVX512F-NEXT:    vmovlhps {{.*#+}} xmm0 = xmm2[0],xmm0[0]409; AVX512F-NEXT:    vinsertps {{.*#+}} xmm2 = xmm5[0,1,2],xmm8[0]410; AVX512F-NEXT:    vinsertf128 $1, %xmm0, %ymm2, %ymm0411; AVX512F-NEXT:    vinsertf32x4 $2, %xmm1, %zmm0, %zmm0412; AVX512F-NEXT:    retq413;414; AVX512VL-LABEL: test_mul3x3_f32:415; AVX512VL:       # %bb.0: # %entry416; AVX512VL-NEXT:    valignd {{.*#+}} zmm2 = zmm0[3,4,5,6,7,8,9,10,11,12,13,14,15,0,1,2]417; AVX512VL-NEXT:    vbroadcastss %xmm1, %xmm3418; AVX512VL-NEXT:    vmulps %xmm3, %xmm0, %xmm3419; AVX512VL-NEXT:    vextractf128 $1, %ymm0, %xmm4420; AVX512VL-NEXT:    vmovshdup {{.*#+}} xmm5 = xmm1[1,1,3,3]421; AVX512VL-NEXT:    vmulps %xmm5, %xmm2, %xmm6422; AVX512VL-NEXT:    vaddps %xmm6, %xmm3, %xmm3423; AVX512VL-NEXT:    vshufpd {{.*#+}} xmm6 = xmm4[1,0]424; AVX512VL-NEXT:    vshufps {{.*#+}} xmm7 = xmm1[3,3,3,3]425; AVX512VL-NEXT:    vshufpd {{.*#+}} xmm8 = xmm1[1,0]426; AVX512VL-NEXT:    vshufps {{.*#+}} xmm9 = xmm1[2,2,2,2]427; AVX512VL-NEXT:    vmulps %xmm6, %xmm9, %xmm9428; AVX512VL-NEXT:    vaddps %xmm3, %xmm9, %xmm3429; AVX512VL-NEXT:    vshufpd {{.*#+}} xmm9 = xmm0[1,0]430; AVX512VL-NEXT:    vmulss %xmm1, %xmm9, %xmm10431; AVX512VL-NEXT:    vmovshdup {{.*#+}} xmm4 = xmm4[1,1,3,3]432; AVX512VL-NEXT:    vmulss %xmm5, %xmm4, %xmm5433; AVX512VL-NEXT:    vaddss %xmm5, %xmm10, %xmm5434; AVX512VL-NEXT:    vextractf32x4 $2, %zmm0, %xmm10435; AVX512VL-NEXT:    vmulss %xmm8, %xmm10, %xmm8436; AVX512VL-NEXT:    vaddss %xmm5, %xmm8, %xmm5437; AVX512VL-NEXT:    vinsertps {{.*#+}} xmm3 = xmm3[0,1],xmm5[0],xmm3[3]438; AVX512VL-NEXT:    vmulps %xmm7, %xmm0, %xmm5439; AVX512VL-NEXT:    vextractf128 $1, %ymm1, %xmm8440; AVX512VL-NEXT:    vmovsldup {{.*#+}} xmm11 = xmm8[0,0,2,2]441; AVX512VL-NEXT:    vmulps %xmm2, %xmm11, %xmm11442; AVX512VL-NEXT:    vaddps %xmm5, %xmm11, %xmm5443; AVX512VL-NEXT:    vmovshdup {{.*#+}} xmm11 = xmm8[1,1,3,3]444; AVX512VL-NEXT:    vmulps %xmm6, %xmm11, %xmm12445; AVX512VL-NEXT:    vaddps %xmm5, %xmm12, %xmm5446; AVX512VL-NEXT:    vmulss %xmm7, %xmm9, %xmm7447; AVX512VL-NEXT:    vmulss %xmm4, %xmm8, %xmm12448; AVX512VL-NEXT:    vaddss %xmm7, %xmm12, %xmm7449; AVX512VL-NEXT:    vmulss %xmm11, %xmm10, %xmm11450; AVX512VL-NEXT:    vaddss %xmm7, %xmm11, %xmm7451; AVX512VL-NEXT:    vshufps {{.*#+}} xmm11 = xmm8[3,3,3,3]452; AVX512VL-NEXT:    vshufpd {{.*#+}} xmm12 = xmm8[1,0]453; AVX512VL-NEXT:    vshufps {{.*#+}} xmm8 = xmm8[2,2,2,2]454; AVX512VL-NEXT:    vmulps %xmm0, %xmm8, %xmm0455; AVX512VL-NEXT:    vmulps %xmm2, %xmm11, %xmm2456; AVX512VL-NEXT:    vaddps %xmm2, %xmm0, %xmm0457; AVX512VL-NEXT:    vextractf32x4 $2, %zmm1, %xmm1458; AVX512VL-NEXT:    vbroadcastss %xmm1, %xmm2459; AVX512VL-NEXT:    vmulps %xmm2, %xmm6, %xmm2460; AVX512VL-NEXT:    vaddps %xmm2, %xmm0, %xmm0461; AVX512VL-NEXT:    vmulss %xmm12, %xmm9, %xmm2462; AVX512VL-NEXT:    vmulss %xmm4, %xmm11, %xmm4463; AVX512VL-NEXT:    vaddss %xmm4, %xmm2, %xmm2464; AVX512VL-NEXT:    vmulss %xmm1, %xmm10, %xmm1465; AVX512VL-NEXT:    vaddss %xmm1, %xmm2, %xmm1466; AVX512VL-NEXT:    vmovshdup {{.*#+}} xmm2 = xmm5[1,1,3,3]467; AVX512VL-NEXT:    vinsertps {{.*#+}} xmm2 = xmm2[0],xmm7[0],xmm2[2,3]468; AVX512VL-NEXT:    vmovlhps {{.*#+}} xmm0 = xmm2[0],xmm0[0]469; AVX512VL-NEXT:    vinsertps {{.*#+}} xmm2 = xmm3[0,1,2],xmm5[0]470; AVX512VL-NEXT:    vinsertf128 $1, %xmm0, %ymm2, %ymm0471; AVX512VL-NEXT:    vinsertf32x4 $2, %xmm1, %zmm0, %zmm0472; AVX512VL-NEXT:    retq473entry:474  %block = shufflevector <9 x float> %a0, <9 x float> poison, <2 x i32> <i32 0, i32 1>475  %splat.splat = shufflevector <9 x float> %a1, <9 x float> undef, <2 x i32> zeroinitializer476  %0 = fmul <2 x float> %block, %splat.splat477  %block6 = shufflevector <9 x float> %a0, <9 x float> poison, <2 x i32> <i32 3, i32 4>478  %splat.splat8 = shufflevector <9 x float> %a1, <9 x float> undef, <2 x i32> <i32 1, i32 1>479  %1 = fmul <2 x float> %block6, %splat.splat8480  %2 = fadd <2 x float> %0, %1481  %block9 = shufflevector <9 x float> %a0, <9 x float> poison, <2 x i32> <i32 6, i32 7>482  %splat.splat11 = shufflevector <9 x float> %a1, <9 x float> undef, <2 x i32> <i32 2, i32 2>483  %3 = fmul <2 x float> %block9, %splat.splat11484  %4 = fadd <2 x float> %2, %3485  %5 = shufflevector <2 x float> %4, <2 x float> poison, <3 x i32> <i32 0, i32 1, i32 undef>486  %block12 = shufflevector <9 x float> %a0, <9 x float> poison, <1 x i32> <i32 2>487  %splat.splatinsert13 = shufflevector <9 x float> %a1, <9 x float> undef, <1 x i32> zeroinitializer488  %6 = fmul <1 x float> %block12, %splat.splatinsert13489  %block15 = shufflevector <9 x float> %a0, <9 x float> poison, <1 x i32> <i32 5>490  %splat.splatinsert16 = shufflevector <9 x float> %a1, <9 x float> undef, <1 x i32> <i32 1>491  %7 = fmul <1 x float> %block15, %splat.splatinsert16492  %8 = fadd <1 x float> %6, %7493  %block18 = shufflevector <9 x float> %a0, <9 x float> poison, <1 x i32> <i32 8>494  %splat.splatinsert19 = shufflevector <9 x float> %a1, <9 x float> undef, <1 x i32> <i32 2>495  %9 = fmul <1 x float> %block18, %splat.splatinsert19496  %10 = fadd <1 x float> %8, %9497  %11 = shufflevector <1 x float> %10, <1 x float> poison, <3 x i32> <i32 0, i32 undef, i32 undef>498  %12 = shufflevector <3 x float> %5, <3 x float> %11, <3 x i32> <i32 0, i32 1, i32 3>499  %splat.splat23 = shufflevector <9 x float> %a1, <9 x float> undef, <2 x i32> <i32 3, i32 3>500  %13 = fmul <2 x float> %block, %splat.splat23501  %splat.splat26 = shufflevector <9 x float> %a1, <9 x float> undef, <2 x i32> <i32 4, i32 4>502  %14 = fmul <2 x float> %block6, %splat.splat26503  %15 = fadd <2 x float> %13, %14504  %splat.splat29 = shufflevector <9 x float> %a1, <9 x float> undef, <2 x i32> <i32 5, i32 5>505  %16 = fmul <2 x float> %block9, %splat.splat29506  %17 = fadd <2 x float> %15, %16507  %18 = shufflevector <2 x float> %17, <2 x float> poison, <3 x i32> <i32 0, i32 1, i32 undef>508  %splat.splatinsert31 = shufflevector <9 x float> %a1, <9 x float> undef, <1 x i32> <i32 3>509  %19 = fmul <1 x float> %block12, %splat.splatinsert31510  %splat.splatinsert34 = shufflevector <9 x float> %a1, <9 x float> undef, <1 x i32> <i32 4>511  %20 = fmul <1 x float> %block15, %splat.splatinsert34512  %21 = fadd <1 x float> %19, %20513  %splat.splatinsert37 = shufflevector <9 x float> %a1, <9 x float> undef, <1 x i32> <i32 5>514  %22 = fmul <1 x float> %block18, %splat.splatinsert37515  %23 = fadd <1 x float> %21, %22516  %24 = shufflevector <1 x float> %23, <1 x float> poison, <3 x i32> <i32 0, i32 undef, i32 undef>517  %25 = shufflevector <3 x float> %18, <3 x float> %24, <3 x i32> <i32 0, i32 1, i32 3>518  %splat.splat41 = shufflevector <9 x float> %a1, <9 x float> undef, <2 x i32> <i32 6, i32 6>519  %26 = fmul <2 x float> %block, %splat.splat41520  %splat.splat44 = shufflevector <9 x float> %a1, <9 x float> undef, <2 x i32> <i32 7, i32 7>521  %27 = fmul <2 x float> %block6, %splat.splat44522  %28 = fadd <2 x float> %26, %27523  %splat.splat47 = shufflevector <9 x float> %a1, <9 x float> undef, <2 x i32> <i32 8, i32 8>524  %29 = fmul <2 x float> %block9, %splat.splat47525  %30 = fadd <2 x float> %28, %29526  %31 = shufflevector <2 x float> %30, <2 x float> poison, <3 x i32> <i32 0, i32 1, i32 undef>527  %splat.splatinsert49 = shufflevector <9 x float> %a1, <9 x float> undef, <1 x i32> <i32 6>528  %32 = fmul <1 x float> %block12, %splat.splatinsert49529  %splat.splatinsert52 = shufflevector <9 x float> %a1, <9 x float> undef, <1 x i32> <i32 7>530  %33 = fmul <1 x float> %block15, %splat.splatinsert52531  %34 = fadd <1 x float> %32, %33532  %35 = fmul <9 x float> %a0, %a1533  %36 = shufflevector <9 x float> %35, <9 x float> poison, <1 x i32> <i32 8>534  %37 = fadd <1 x float> %34, %36535  %38 = shufflevector <1 x float> %37, <1 x float> poison, <3 x i32> <i32 0, i32 undef, i32 undef>536  %39 = shufflevector <3 x float> %31, <3 x float> %38, <3 x i32> <i32 0, i32 1, i32 3>537  %40 = shufflevector <3 x float> %12, <3 x float> %25, <6 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5>538  %41 = shufflevector <3 x float> %39, <3 x float> poison, <6 x i32> <i32 0, i32 1, i32 2, i32 undef, i32 undef, i32 undef>539  %42 = shufflevector <6 x float> %40, <6 x float> %41, <9 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8>540  ret <9 x float> %42541}542 543define <9 x double> @test_mul3x3_f64(<9 x double> %a0, <9 x double> %a1) nounwind {544; SSE-LABEL: test_mul3x3_f64:545; SSE:       # %bb.0: # %entry546; SSE-NEXT:    movq %rdi, %rax547; SSE-NEXT:    movsd {{.*#+}} xmm8 = mem[0],zero548; SSE-NEXT:    movsd {{.*#+}} xmm10 = mem[0],zero549; SSE-NEXT:    movsd {{.*#+}} xmm9 = mem[0],zero550; SSE-NEXT:    movsd {{.*#+}} xmm11 = mem[0],zero551; SSE-NEXT:    movsd {{.*#+}} xmm12 = mem[0],zero552; SSE-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm1[0]553; SSE-NEXT:    movapd %xmm2, %xmm13554; SSE-NEXT:    mulsd %xmm12, %xmm13555; SSE-NEXT:    unpcklpd {{.*#+}} xmm12 = xmm12[0,0]556; SSE-NEXT:    mulpd %xmm0, %xmm12557; SSE-NEXT:    unpcklpd {{.*#+}} xmm3 = xmm3[0],xmm4[0]558; SSE-NEXT:    movapd %xmm5, %xmm1559; SSE-NEXT:    mulsd %xmm11, %xmm1560; SSE-NEXT:    unpcklpd {{.*#+}} xmm11 = xmm11[0,0]561; SSE-NEXT:    mulpd %xmm3, %xmm11562; SSE-NEXT:    addpd %xmm12, %xmm11563; SSE-NEXT:    movsd {{.*#+}} xmm4 = mem[0],zero564; SSE-NEXT:    unpcklpd {{.*#+}} xmm6 = xmm6[0],xmm7[0]565; SSE-NEXT:    movapd %xmm9, %xmm7566; SSE-NEXT:    mulsd %xmm4, %xmm7567; SSE-NEXT:    unpcklpd {{.*#+}} xmm4 = xmm4[0,0]568; SSE-NEXT:    mulpd %xmm6, %xmm4569; SSE-NEXT:    addpd %xmm11, %xmm4570; SSE-NEXT:    movsd {{.*#+}} xmm11 = mem[0],zero571; SSE-NEXT:    addsd %xmm13, %xmm1572; SSE-NEXT:    addsd %xmm7, %xmm1573; SSE-NEXT:    movapd %xmm2, %xmm12574; SSE-NEXT:    mulsd %xmm11, %xmm12575; SSE-NEXT:    unpcklpd {{.*#+}} xmm11 = xmm11[0,0]576; SSE-NEXT:    mulpd %xmm0, %xmm11577; SSE-NEXT:    movapd %xmm5, %xmm7578; SSE-NEXT:    mulsd %xmm10, %xmm7579; SSE-NEXT:    unpcklpd {{.*#+}} xmm10 = xmm10[0,0]580; SSE-NEXT:    mulpd %xmm3, %xmm10581; SSE-NEXT:    addpd %xmm11, %xmm10582; SSE-NEXT:    movapd %xmm9, %xmm11583; SSE-NEXT:    mulsd %xmm8, %xmm11584; SSE-NEXT:    unpcklpd {{.*#+}} xmm8 = xmm8[0,0]585; SSE-NEXT:    mulpd %xmm6, %xmm8586; SSE-NEXT:    addpd %xmm10, %xmm8587; SSE-NEXT:    addsd %xmm12, %xmm7588; SSE-NEXT:    addsd %xmm11, %xmm7589; SSE-NEXT:    movsd {{.*#+}} xmm10 = mem[0],zero590; SSE-NEXT:    mulsd %xmm10, %xmm2591; SSE-NEXT:    unpcklpd {{.*#+}} xmm10 = xmm10[0,0]592; SSE-NEXT:    mulpd %xmm0, %xmm10593; SSE-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero594; SSE-NEXT:    mulsd %xmm0, %xmm5595; SSE-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0,0]596; SSE-NEXT:    mulpd %xmm3, %xmm0597; SSE-NEXT:    addpd %xmm10, %xmm0598; SSE-NEXT:    movsd {{.*#+}} xmm3 = mem[0],zero599; SSE-NEXT:    mulsd %xmm3, %xmm9600; SSE-NEXT:    unpcklpd {{.*#+}} xmm3 = xmm3[0,0]601; SSE-NEXT:    mulpd %xmm6, %xmm3602; SSE-NEXT:    addpd %xmm0, %xmm3603; SSE-NEXT:    addsd %xmm2, %xmm5604; SSE-NEXT:    addsd %xmm9, %xmm5605; SSE-NEXT:    unpcklpd {{.*#+}} xmm1 = xmm1[0],xmm8[0]606; SSE-NEXT:    shufpd {{.*#+}} xmm8 = xmm8[1],xmm7[0]607; SSE-NEXT:    movsd %xmm5, 64(%rdi)608; SSE-NEXT:    movapd %xmm3, 48(%rdi)609; SSE-NEXT:    movapd %xmm4, (%rdi)610; SSE-NEXT:    movapd %xmm8, 32(%rdi)611; SSE-NEXT:    movapd %xmm1, 16(%rdi)612; SSE-NEXT:    retq613;614; AVX1-LABEL: test_mul3x3_f64:615; AVX1:       # %bb.0: # %entry616; AVX1-NEXT:    movq %rdi, %rax617; AVX1-NEXT:    vmovsd {{.*#+}} xmm8 = mem[0],zero618; AVX1-NEXT:    vunpcklpd {{.*#+}} xmm1 = xmm0[0],xmm1[0]619; AVX1-NEXT:    vmovddup {{.*#+}} xmm9 = mem[0,0]620; AVX1-NEXT:    vmulpd %xmm1, %xmm9, %xmm0621; AVX1-NEXT:    vunpcklpd {{.*#+}} xmm3 = xmm3[0],xmm4[0]622; AVX1-NEXT:    vmovddup {{.*#+}} xmm4 = mem[0,0]623; AVX1-NEXT:    vmulpd %xmm4, %xmm3, %xmm10624; AVX1-NEXT:    vaddpd %xmm0, %xmm10, %xmm0625; AVX1-NEXT:    vunpcklpd {{.*#+}} xmm6 = xmm6[0],xmm7[0]626; AVX1-NEXT:    vmovddup {{.*#+}} xmm7 = mem[0,0]627; AVX1-NEXT:    vmulpd %xmm7, %xmm6, %xmm10628; AVX1-NEXT:    vaddpd %xmm0, %xmm10, %xmm0629; AVX1-NEXT:    vmulsd %xmm2, %xmm9, %xmm9630; AVX1-NEXT:    vmulsd %xmm4, %xmm5, %xmm4631; AVX1-NEXT:    vaddsd %xmm4, %xmm9, %xmm4632; AVX1-NEXT:    vmulsd %xmm7, %xmm8, %xmm7633; AVX1-NEXT:    vaddsd %xmm7, %xmm4, %xmm4634; AVX1-NEXT:    vinsertf128 $1, %xmm4, %ymm0, %ymm4635; AVX1-NEXT:    vmovddup {{.*#+}} xmm7 = mem[0,0]636; AVX1-NEXT:    vmulpd %xmm7, %xmm1, %xmm9637; AVX1-NEXT:    vmovddup {{.*#+}} xmm10 = mem[0,0]638; AVX1-NEXT:    vmulpd %xmm3, %xmm10, %xmm11639; AVX1-NEXT:    vaddpd %xmm11, %xmm9, %xmm9640; AVX1-NEXT:    vmovddup {{.*#+}} xmm11 = mem[0,0]641; AVX1-NEXT:    vmulpd %xmm6, %xmm11, %xmm12642; AVX1-NEXT:    vaddpd %xmm12, %xmm9, %xmm9643; AVX1-NEXT:    vmulsd %xmm7, %xmm2, %xmm7644; AVX1-NEXT:    vmulsd %xmm5, %xmm10, %xmm10645; AVX1-NEXT:    vaddsd %xmm7, %xmm10, %xmm7646; AVX1-NEXT:    vmulsd %xmm11, %xmm8, %xmm10647; AVX1-NEXT:    vaddsd %xmm7, %xmm10, %xmm7648; AVX1-NEXT:    vmovddup {{.*#+}} xmm10 = mem[0,0]649; AVX1-NEXT:    vmulpd %xmm1, %xmm10, %xmm1650; AVX1-NEXT:    vmovddup {{.*#+}} xmm11 = mem[0,0]651; AVX1-NEXT:    vmulpd %xmm3, %xmm11, %xmm3652; AVX1-NEXT:    vaddpd %xmm3, %xmm1, %xmm1653; AVX1-NEXT:    vmovddup {{.*#+}} xmm3 = mem[0,0]654; AVX1-NEXT:    vmulpd %xmm3, %xmm6, %xmm6655; AVX1-NEXT:    vaddpd %xmm6, %xmm1, %xmm1656; AVX1-NEXT:    vmulsd %xmm2, %xmm10, %xmm2657; AVX1-NEXT:    vmulsd %xmm5, %xmm11, %xmm5658; AVX1-NEXT:    vaddsd %xmm5, %xmm2, %xmm2659; AVX1-NEXT:    vmulsd %xmm3, %xmm8, %xmm3660; AVX1-NEXT:    vaddsd %xmm3, %xmm2, %xmm2661; AVX1-NEXT:    vinsertf128 $1, %xmm9, %ymm0, %ymm0662; AVX1-NEXT:    vshufpd {{.*#+}} ymm0 = ymm4[0],ymm0[1],ymm4[2],ymm0[2]663; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm7, %ymm3664; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm9, %ymm1665; AVX1-NEXT:    vshufpd {{.*#+}} ymm1 = ymm1[1],ymm3[0],ymm1[2],ymm3[3]666; AVX1-NEXT:    vmovsd %xmm2, 64(%rdi)667; AVX1-NEXT:    vmovapd %ymm1, 32(%rdi)668; AVX1-NEXT:    vmovapd %ymm0, (%rdi)669; AVX1-NEXT:    vzeroupper670; AVX1-NEXT:    retq671;672; AVX2-LABEL: test_mul3x3_f64:673; AVX2:       # %bb.0: # %entry674; AVX2-NEXT:    movq %rdi, %rax675; AVX2-NEXT:    vmovsd {{.*#+}} xmm8 = mem[0],zero676; AVX2-NEXT:    vunpcklpd {{.*#+}} xmm0 = xmm0[0],xmm1[0]677; AVX2-NEXT:    vmovddup {{.*#+}} xmm9 = mem[0,0]678; AVX2-NEXT:    vmulpd %xmm0, %xmm9, %xmm10679; AVX2-NEXT:    vunpcklpd {{.*#+}} xmm1 = xmm3[0],xmm4[0]680; AVX2-NEXT:    vmovddup {{.*#+}} xmm3 = mem[0,0]681; AVX2-NEXT:    vmulpd %xmm3, %xmm1, %xmm4682; AVX2-NEXT:    vaddpd %xmm4, %xmm10, %xmm4683; AVX2-NEXT:    vunpcklpd {{.*#+}} xmm6 = xmm6[0],xmm7[0]684; AVX2-NEXT:    vmovddup {{.*#+}} xmm7 = mem[0,0]685; AVX2-NEXT:    vmulpd %xmm7, %xmm6, %xmm10686; AVX2-NEXT:    vaddpd %xmm4, %xmm10, %xmm4687; AVX2-NEXT:    vmulsd %xmm2, %xmm9, %xmm9688; AVX2-NEXT:    vmulsd %xmm3, %xmm5, %xmm3689; AVX2-NEXT:    vaddsd %xmm3, %xmm9, %xmm3690; AVX2-NEXT:    vmulsd %xmm7, %xmm8, %xmm7691; AVX2-NEXT:    vaddsd %xmm7, %xmm3, %xmm3692; AVX2-NEXT:    vinsertf128 $1, %xmm3, %ymm4, %ymm3693; AVX2-NEXT:    vmovddup {{.*#+}} xmm4 = mem[0,0]694; AVX2-NEXT:    vmulpd %xmm4, %xmm0, %xmm7695; AVX2-NEXT:    vmovddup {{.*#+}} xmm9 = mem[0,0]696; AVX2-NEXT:    vmulpd %xmm1, %xmm9, %xmm10697; AVX2-NEXT:    vaddpd %xmm7, %xmm10, %xmm7698; AVX2-NEXT:    vmovddup {{.*#+}} xmm10 = mem[0,0]699; AVX2-NEXT:    vmulpd %xmm6, %xmm10, %xmm11700; AVX2-NEXT:    vaddpd %xmm7, %xmm11, %xmm7701; AVX2-NEXT:    vmulsd %xmm4, %xmm2, %xmm4702; AVX2-NEXT:    vmulsd %xmm5, %xmm9, %xmm9703; AVX2-NEXT:    vaddsd %xmm4, %xmm9, %xmm4704; AVX2-NEXT:    vmulsd %xmm10, %xmm8, %xmm9705; AVX2-NEXT:    vaddsd %xmm4, %xmm9, %xmm4706; AVX2-NEXT:    vmovddup {{.*#+}} xmm9 = mem[0,0]707; AVX2-NEXT:    vmulpd %xmm0, %xmm9, %xmm0708; AVX2-NEXT:    vmovddup {{.*#+}} xmm10 = mem[0,0]709; AVX2-NEXT:    vmulpd %xmm1, %xmm10, %xmm1710; AVX2-NEXT:    vaddpd %xmm1, %xmm0, %xmm0711; AVX2-NEXT:    vmovddup {{.*#+}} xmm1 = mem[0,0]712; AVX2-NEXT:    vmulpd %xmm1, %xmm6, %xmm6713; AVX2-NEXT:    vaddpd %xmm6, %xmm0, %xmm0714; AVX2-NEXT:    vmulsd %xmm2, %xmm9, %xmm2715; AVX2-NEXT:    vmulsd %xmm5, %xmm10, %xmm5716; AVX2-NEXT:    vaddsd %xmm5, %xmm2, %xmm2717; AVX2-NEXT:    vmulsd %xmm1, %xmm8, %xmm1718; AVX2-NEXT:    vaddsd %xmm1, %xmm2, %xmm1719; AVX2-NEXT:    vbroadcastsd %xmm7, %ymm2720; AVX2-NEXT:    vblendpd {{.*#+}} ymm2 = ymm3[0,1,2],ymm2[3]721; AVX2-NEXT:    vinsertf128 $1, %xmm0, %ymm4, %ymm3722; AVX2-NEXT:    vinsertf128 $1, %xmm0, %ymm7, %ymm0723; AVX2-NEXT:    vshufpd {{.*#+}} ymm0 = ymm0[1],ymm3[0],ymm0[2],ymm3[3]724; AVX2-NEXT:    vmovsd %xmm1, 64(%rdi)725; AVX2-NEXT:    vmovapd %ymm0, 32(%rdi)726; AVX2-NEXT:    vmovapd %ymm2, (%rdi)727; AVX2-NEXT:    vzeroupper728; AVX2-NEXT:    retq729;730; AVX512F-LABEL: test_mul3x3_f64:731; AVX512F:       # %bb.0: # %entry732; AVX512F-NEXT:    movq %rdi, %rax733; AVX512F-NEXT:    vmovsd {{.*#+}} xmm8 = mem[0],zero734; AVX512F-NEXT:    vunpcklpd {{.*#+}} xmm0 = xmm0[0],xmm1[0]735; AVX512F-NEXT:    vmovddup {{.*#+}} xmm9 = mem[0,0]736; AVX512F-NEXT:    vmulpd %xmm0, %xmm9, %xmm10737; AVX512F-NEXT:    vunpcklpd {{.*#+}} xmm1 = xmm3[0],xmm4[0]738; AVX512F-NEXT:    vmovddup {{.*#+}} xmm3 = mem[0,0]739; AVX512F-NEXT:    vmulpd %xmm3, %xmm1, %xmm4740; AVX512F-NEXT:    vaddpd %xmm4, %xmm10, %xmm4741; AVX512F-NEXT:    vunpcklpd {{.*#+}} xmm6 = xmm6[0],xmm7[0]742; AVX512F-NEXT:    vmovddup {{.*#+}} xmm7 = mem[0,0]743; AVX512F-NEXT:    vmulpd %xmm7, %xmm6, %xmm10744; AVX512F-NEXT:    vaddpd %xmm4, %xmm10, %xmm4745; AVX512F-NEXT:    vmulsd %xmm2, %xmm9, %xmm9746; AVX512F-NEXT:    vmulsd %xmm3, %xmm5, %xmm3747; AVX512F-NEXT:    vaddsd %xmm3, %xmm9, %xmm3748; AVX512F-NEXT:    vmulsd %xmm7, %xmm8, %xmm7749; AVX512F-NEXT:    vaddsd %xmm7, %xmm3, %xmm3750; AVX512F-NEXT:    vinsertf128 $1, %xmm3, %ymm4, %ymm3751; AVX512F-NEXT:    vmovddup {{.*#+}} xmm4 = mem[0,0]752; AVX512F-NEXT:    vmulpd %xmm4, %xmm0, %xmm7753; AVX512F-NEXT:    vmovddup {{.*#+}} xmm9 = mem[0,0]754; AVX512F-NEXT:    vmulpd %xmm1, %xmm9, %xmm10755; AVX512F-NEXT:    vaddpd %xmm7, %xmm10, %xmm7756; AVX512F-NEXT:    vmovddup {{.*#+}} xmm10 = mem[0,0]757; AVX512F-NEXT:    vmulpd %xmm6, %xmm10, %xmm11758; AVX512F-NEXT:    vaddpd %xmm7, %xmm11, %xmm7759; AVX512F-NEXT:    vmulsd %xmm4, %xmm2, %xmm4760; AVX512F-NEXT:    vmulsd %xmm5, %xmm9, %xmm9761; AVX512F-NEXT:    vaddsd %xmm4, %xmm9, %xmm4762; AVX512F-NEXT:    vmulsd %xmm10, %xmm8, %xmm9763; AVX512F-NEXT:    vaddsd %xmm4, %xmm9, %xmm4764; AVX512F-NEXT:    vinsertf128 $1, %xmm4, %ymm7, %ymm4765; AVX512F-NEXT:    vmovddup {{.*#+}} xmm7 = mem[0,0]766; AVX512F-NEXT:    vmulpd %xmm7, %xmm0, %xmm0767; AVX512F-NEXT:    vmovddup {{.*#+}} xmm9 = mem[0,0]768; AVX512F-NEXT:    vmulpd %xmm1, %xmm9, %xmm1769; AVX512F-NEXT:    vaddpd %xmm1, %xmm0, %xmm0770; AVX512F-NEXT:    vmovddup {{.*#+}} xmm1 = mem[0,0]771; AVX512F-NEXT:    vmulpd %xmm1, %xmm6, %xmm6772; AVX512F-NEXT:    vaddpd %xmm6, %xmm0, %xmm0773; AVX512F-NEXT:    vmulsd %xmm7, %xmm2, %xmm2774; AVX512F-NEXT:    vmulsd %xmm5, %xmm9, %xmm5775; AVX512F-NEXT:    vaddsd %xmm5, %xmm2, %xmm2776; AVX512F-NEXT:    vmulsd %xmm1, %xmm8, %xmm1777; AVX512F-NEXT:    vaddsd %xmm1, %xmm2, %xmm1778; AVX512F-NEXT:    vinsertf64x4 $1, %ymm4, %zmm3, %zmm2779; AVX512F-NEXT:    vpmovsxbq {{.*#+}} zmm3 = [0,1,2,4,5,6,8,9]780; AVX512F-NEXT:    vpermi2pd %zmm0, %zmm2, %zmm3781; AVX512F-NEXT:    vmovsd %xmm1, 64(%rdi)782; AVX512F-NEXT:    vmovapd %zmm3, (%rdi)783; AVX512F-NEXT:    vzeroupper784; AVX512F-NEXT:    retq785;786; AVX512VL-LABEL: test_mul3x3_f64:787; AVX512VL:       # %bb.0: # %entry788; AVX512VL-NEXT:    movq %rdi, %rax789; AVX512VL-NEXT:    vmovsd {{.*#+}} xmm8 = mem[0],zero790; AVX512VL-NEXT:    vunpcklpd {{.*#+}} xmm0 = xmm0[0],xmm1[0]791; AVX512VL-NEXT:    vmovddup {{.*#+}} xmm1 = mem[0,0]792; AVX512VL-NEXT:    vmulpd %xmm1, %xmm0, %xmm9793; AVX512VL-NEXT:    vunpcklpd {{.*#+}} xmm3 = xmm3[0],xmm4[0]794; AVX512VL-NEXT:    vmovddup {{.*#+}} xmm4 = mem[0,0]795; AVX512VL-NEXT:    vmulpd %xmm4, %xmm3, %xmm10796; AVX512VL-NEXT:    vaddpd %xmm10, %xmm9, %xmm9797; AVX512VL-NEXT:    vunpcklpd {{.*#+}} xmm6 = xmm6[0],xmm7[0]798; AVX512VL-NEXT:    vmovddup {{.*#+}} xmm7 = mem[0,0]799; AVX512VL-NEXT:    vmulpd %xmm7, %xmm6, %xmm10800; AVX512VL-NEXT:    vaddpd %xmm10, %xmm9, %xmm9801; AVX512VL-NEXT:    vmulsd %xmm1, %xmm2, %xmm1802; AVX512VL-NEXT:    vmulsd %xmm4, %xmm5, %xmm4803; AVX512VL-NEXT:    vaddsd %xmm4, %xmm1, %xmm1804; AVX512VL-NEXT:    vmulsd %xmm7, %xmm8, %xmm4805; AVX512VL-NEXT:    vaddsd %xmm4, %xmm1, %xmm1806; AVX512VL-NEXT:    vinsertf128 $1, %xmm1, %ymm9, %ymm1807; AVX512VL-NEXT:    vmovddup {{.*#+}} xmm4 = mem[0,0]808; AVX512VL-NEXT:    vmulpd %xmm4, %xmm0, %xmm7809; AVX512VL-NEXT:    vmovddup {{.*#+}} xmm9 = mem[0,0]810; AVX512VL-NEXT:    vmulpd %xmm3, %xmm9, %xmm10811; AVX512VL-NEXT:    vaddpd %xmm7, %xmm10, %xmm7812; AVX512VL-NEXT:    vmovddup {{.*#+}} xmm10 = mem[0,0]813; AVX512VL-NEXT:    vmulpd %xmm6, %xmm10, %xmm11814; AVX512VL-NEXT:    vaddpd %xmm7, %xmm11, %xmm7815; AVX512VL-NEXT:    vmulsd %xmm4, %xmm2, %xmm4816; AVX512VL-NEXT:    vmulsd %xmm5, %xmm9, %xmm9817; AVX512VL-NEXT:    vaddsd %xmm4, %xmm9, %xmm4818; AVX512VL-NEXT:    vmulsd %xmm10, %xmm8, %xmm9819; AVX512VL-NEXT:    vaddsd %xmm4, %xmm9, %xmm4820; AVX512VL-NEXT:    vinsertf128 $1, %xmm4, %ymm7, %ymm4821; AVX512VL-NEXT:    vmovddup {{.*#+}} xmm7 = mem[0,0]822; AVX512VL-NEXT:    vmulpd %xmm7, %xmm0, %xmm0823; AVX512VL-NEXT:    vmovddup {{.*#+}} xmm9 = mem[0,0]824; AVX512VL-NEXT:    vmulpd %xmm3, %xmm9, %xmm3825; AVX512VL-NEXT:    vaddpd %xmm3, %xmm0, %xmm0826; AVX512VL-NEXT:    vmovddup {{.*#+}} xmm3 = mem[0,0]827; AVX512VL-NEXT:    vmulpd %xmm3, %xmm6, %xmm6828; AVX512VL-NEXT:    vaddpd %xmm6, %xmm0, %xmm0829; AVX512VL-NEXT:    vmulsd %xmm7, %xmm2, %xmm2830; AVX512VL-NEXT:    vmulsd %xmm5, %xmm9, %xmm5831; AVX512VL-NEXT:    vaddsd %xmm5, %xmm2, %xmm2832; AVX512VL-NEXT:    vmulsd %xmm3, %xmm8, %xmm3833; AVX512VL-NEXT:    vaddsd %xmm3, %xmm2, %xmm2834; AVX512VL-NEXT:    vinsertf64x4 $1, %ymm4, %zmm1, %zmm1835; AVX512VL-NEXT:    vpmovsxbq {{.*#+}} zmm3 = [0,1,2,4,5,6,8,9]836; AVX512VL-NEXT:    vpermi2pd %zmm0, %zmm1, %zmm3837; AVX512VL-NEXT:    vmovsd %xmm2, 64(%rdi)838; AVX512VL-NEXT:    vmovapd %zmm3, (%rdi)839; AVX512VL-NEXT:    vzeroupper840; AVX512VL-NEXT:    retq841entry:842  %block = shufflevector <9 x double> %a0, <9 x double> poison, <2 x i32> <i32 0, i32 1>843  %splat.splat = shufflevector <9 x double> %a1, <9 x double> undef, <2 x i32> zeroinitializer844  %0 = fmul <2 x double> %block, %splat.splat845  %block6 = shufflevector <9 x double> %a0, <9 x double> poison, <2 x i32> <i32 3, i32 4>846  %splat.splat8 = shufflevector <9 x double> %a1, <9 x double> undef, <2 x i32> <i32 1, i32 1>847  %1 = fmul <2 x double> %block6, %splat.splat8848  %2 = fadd <2 x double> %0, %1849  %block9 = shufflevector <9 x double> %a0, <9 x double> poison, <2 x i32> <i32 6, i32 7>850  %splat.splat11 = shufflevector <9 x double> %a1, <9 x double> undef, <2 x i32> <i32 2, i32 2>851  %3 = fmul <2 x double> %block9, %splat.splat11852  %4 = fadd <2 x double> %2, %3853  %5 = shufflevector <2 x double> %4, <2 x double> poison, <3 x i32> <i32 0, i32 1, i32 undef>854  %block12 = shufflevector <9 x double> %a0, <9 x double> poison, <1 x i32> <i32 2>855  %splat.splatinsert13 = shufflevector <9 x double> %a1, <9 x double> undef, <1 x i32> zeroinitializer856  %6 = fmul <1 x double> %block12, %splat.splatinsert13857  %block15 = shufflevector <9 x double> %a0, <9 x double> poison, <1 x i32> <i32 5>858  %splat.splatinsert16 = shufflevector <9 x double> %a1, <9 x double> undef, <1 x i32> <i32 1>859  %7 = fmul <1 x double> %block15, %splat.splatinsert16860  %8 = fadd <1 x double> %6, %7861  %block18 = shufflevector <9 x double> %a0, <9 x double> poison, <1 x i32> <i32 8>862  %splat.splatinsert19 = shufflevector <9 x double> %a1, <9 x double> undef, <1 x i32> <i32 2>863  %9 = fmul <1 x double> %block18, %splat.splatinsert19864  %10 = fadd <1 x double> %8, %9865  %11 = shufflevector <1 x double> %10, <1 x double> poison, <3 x i32> <i32 0, i32 undef, i32 undef>866  %12 = shufflevector <3 x double> %5, <3 x double> %11, <3 x i32> <i32 0, i32 1, i32 3>867  %splat.splat23 = shufflevector <9 x double> %a1, <9 x double> undef, <2 x i32> <i32 3, i32 3>868  %13 = fmul <2 x double> %block, %splat.splat23869  %splat.splat26 = shufflevector <9 x double> %a1, <9 x double> undef, <2 x i32> <i32 4, i32 4>870  %14 = fmul <2 x double> %block6, %splat.splat26871  %15 = fadd <2 x double> %13, %14872  %splat.splat29 = shufflevector <9 x double> %a1, <9 x double> undef, <2 x i32> <i32 5, i32 5>873  %16 = fmul <2 x double> %block9, %splat.splat29874  %17 = fadd <2 x double> %15, %16875  %18 = shufflevector <2 x double> %17, <2 x double> poison, <3 x i32> <i32 0, i32 1, i32 undef>876  %splat.splatinsert31 = shufflevector <9 x double> %a1, <9 x double> undef, <1 x i32> <i32 3>877  %19 = fmul <1 x double> %block12, %splat.splatinsert31878  %splat.splatinsert34 = shufflevector <9 x double> %a1, <9 x double> undef, <1 x i32> <i32 4>879  %20 = fmul <1 x double> %block15, %splat.splatinsert34880  %21 = fadd <1 x double> %19, %20881  %splat.splatinsert37 = shufflevector <9 x double> %a1, <9 x double> undef, <1 x i32> <i32 5>882  %22 = fmul <1 x double> %block18, %splat.splatinsert37883  %23 = fadd <1 x double> %21, %22884  %24 = shufflevector <1 x double> %23, <1 x double> poison, <3 x i32> <i32 0, i32 undef, i32 undef>885  %25 = shufflevector <3 x double> %18, <3 x double> %24, <3 x i32> <i32 0, i32 1, i32 3>886  %splat.splat41 = shufflevector <9 x double> %a1, <9 x double> undef, <2 x i32> <i32 6, i32 6>887  %26 = fmul <2 x double> %block, %splat.splat41888  %splat.splat44 = shufflevector <9 x double> %a1, <9 x double> undef, <2 x i32> <i32 7, i32 7>889  %27 = fmul <2 x double> %block6, %splat.splat44890  %28 = fadd <2 x double> %26, %27891  %splat.splat47 = shufflevector <9 x double> %a1, <9 x double> undef, <2 x i32> <i32 8, i32 8>892  %29 = fmul <2 x double> %block9, %splat.splat47893  %30 = fadd <2 x double> %28, %29894  %31 = shufflevector <2 x double> %30, <2 x double> poison, <3 x i32> <i32 0, i32 1, i32 undef>895  %splat.splatinsert49 = shufflevector <9 x double> %a1, <9 x double> undef, <1 x i32> <i32 6>896  %32 = fmul <1 x double> %block12, %splat.splatinsert49897  %splat.splatinsert52 = shufflevector <9 x double> %a1, <9 x double> undef, <1 x i32> <i32 7>898  %33 = fmul <1 x double> %block15, %splat.splatinsert52899  %34 = fadd <1 x double> %32, %33900  %35 = fmul <9 x double> %a0, %a1901  %36 = shufflevector <9 x double> %35, <9 x double> poison, <1 x i32> <i32 8>902  %37 = fadd <1 x double> %34, %36903  %38 = shufflevector <1 x double> %37, <1 x double> poison, <3 x i32> <i32 0, i32 undef, i32 undef>904  %39 = shufflevector <3 x double> %31, <3 x double> %38, <3 x i32> <i32 0, i32 1, i32 3>905  %40 = shufflevector <3 x double> %12, <3 x double> %25, <6 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5>906  %41 = shufflevector <3 x double> %39, <3 x double> poison, <6 x i32> <i32 0, i32 1, i32 2, i32 undef, i32 undef, i32 undef>907  %42 = shufflevector <6 x double> %40, <6 x double> %41, <9 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8>908  ret <9 x double> %42909}910 911define <16 x float> @test_mul4x4_f32(<16 x float> %a0, <16 x float> %a1) nounwind {912; SSE-LABEL: test_mul4x4_f32:913; SSE:       # %bb.0: # %entry914; SSE-NEXT:    movaps %xmm0, %xmm9915; SSE-NEXT:    movaps %xmm4, %xmm0916; SSE-NEXT:    shufps {{.*#+}} xmm0 = xmm0[0,0],xmm4[0,0]917; SSE-NEXT:    mulps %xmm9, %xmm0918; SSE-NEXT:    movaps %xmm4, %xmm8919; SSE-NEXT:    shufps {{.*#+}} xmm8 = xmm8[1,1],xmm4[1,1]920; SSE-NEXT:    mulps %xmm1, %xmm8921; SSE-NEXT:    addps %xmm0, %xmm8922; SSE-NEXT:    movaps %xmm4, %xmm0923; SSE-NEXT:    shufps {{.*#+}} xmm0 = xmm0[2,2],xmm4[2,2]924; SSE-NEXT:    mulps %xmm2, %xmm0925; SSE-NEXT:    addps %xmm8, %xmm0926; SSE-NEXT:    shufps {{.*#+}} xmm4 = xmm4[3,3,3,3]927; SSE-NEXT:    mulps %xmm3, %xmm4928; SSE-NEXT:    addps %xmm4, %xmm0929; SSE-NEXT:    movaps %xmm5, %xmm4930; SSE-NEXT:    shufps {{.*#+}} xmm4 = xmm4[0,0],xmm5[0,0]931; SSE-NEXT:    mulps %xmm9, %xmm4932; SSE-NEXT:    movaps %xmm5, %xmm10933; SSE-NEXT:    shufps {{.*#+}} xmm10 = xmm10[1,1],xmm5[1,1]934; SSE-NEXT:    mulps %xmm1, %xmm10935; SSE-NEXT:    addps %xmm4, %xmm10936; SSE-NEXT:    movaps %xmm5, %xmm8937; SSE-NEXT:    shufps {{.*#+}} xmm8 = xmm8[2,2],xmm5[2,2]938; SSE-NEXT:    mulps %xmm2, %xmm8939; SSE-NEXT:    addps %xmm10, %xmm8940; SSE-NEXT:    shufps {{.*#+}} xmm5 = xmm5[3,3,3,3]941; SSE-NEXT:    mulps %xmm3, %xmm5942; SSE-NEXT:    addps %xmm5, %xmm8943; SSE-NEXT:    movaps %xmm6, %xmm4944; SSE-NEXT:    shufps {{.*#+}} xmm4 = xmm4[0,0],xmm6[0,0]945; SSE-NEXT:    mulps %xmm9, %xmm4946; SSE-NEXT:    movaps %xmm6, %xmm10947; SSE-NEXT:    shufps {{.*#+}} xmm10 = xmm10[1,1],xmm6[1,1]948; SSE-NEXT:    mulps %xmm1, %xmm10949; SSE-NEXT:    addps %xmm4, %xmm10950; SSE-NEXT:    movaps %xmm6, %xmm5951; SSE-NEXT:    shufps {{.*#+}} xmm5 = xmm5[2,2],xmm6[2,2]952; SSE-NEXT:    mulps %xmm2, %xmm5953; SSE-NEXT:    addps %xmm10, %xmm5954; SSE-NEXT:    shufps {{.*#+}} xmm6 = xmm6[3,3,3,3]955; SSE-NEXT:    mulps %xmm3, %xmm6956; SSE-NEXT:    addps %xmm6, %xmm5957; SSE-NEXT:    movaps %xmm7, %xmm4958; SSE-NEXT:    shufps {{.*#+}} xmm4 = xmm4[0,0],xmm7[0,0]959; SSE-NEXT:    mulps %xmm9, %xmm4960; SSE-NEXT:    movaps %xmm7, %xmm6961; SSE-NEXT:    shufps {{.*#+}} xmm6 = xmm6[1,1],xmm7[1,1]962; SSE-NEXT:    mulps %xmm1, %xmm6963; SSE-NEXT:    addps %xmm4, %xmm6964; SSE-NEXT:    movaps %xmm7, %xmm1965; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[2,2],xmm7[2,2]966; SSE-NEXT:    mulps %xmm2, %xmm1967; SSE-NEXT:    addps %xmm6, %xmm1968; SSE-NEXT:    shufps {{.*#+}} xmm7 = xmm7[3,3,3,3]969; SSE-NEXT:    mulps %xmm7, %xmm3970; SSE-NEXT:    addps %xmm1, %xmm3971; SSE-NEXT:    movaps %xmm8, %xmm1972; SSE-NEXT:    movaps %xmm5, %xmm2973; SSE-NEXT:    retq974;975; AVX1-LABEL: test_mul4x4_f32:976; AVX1:       # %bb.0: # %entry977; AVX1-NEXT:    vshufps {{.*#+}} ymm4 = ymm2[1,1,1,1,5,5,5,5]978; AVX1-NEXT:    vperm2f128 {{.*#+}} ymm5 = ymm0[2,3,2,3]979; AVX1-NEXT:    vmulps %ymm4, %ymm5, %ymm4980; AVX1-NEXT:    vshufps {{.*#+}} ymm6 = ymm2[0,0,0,0,4,4,4,4]981; AVX1-NEXT:    vinsertf128 $1, %xmm0, %ymm0, %ymm7982; AVX1-NEXT:    vmulps %ymm6, %ymm7, %ymm0983; AVX1-NEXT:    vaddps %ymm4, %ymm0, %ymm0984; AVX1-NEXT:    vshufps {{.*#+}} ymm4 = ymm2[2,2,2,2,6,6,6,6]985; AVX1-NEXT:    vinsertf128 $1, %xmm1, %ymm1, %ymm6986; AVX1-NEXT:    vmulps %ymm4, %ymm6, %ymm4987; AVX1-NEXT:    vaddps %ymm4, %ymm0, %ymm0988; AVX1-NEXT:    vshufps {{.*#+}} ymm2 = ymm2[3,3,3,3,7,7,7,7]989; AVX1-NEXT:    vperm2f128 {{.*#+}} ymm1 = ymm1[2,3,2,3]990; AVX1-NEXT:    vmulps %ymm2, %ymm1, %ymm2991; AVX1-NEXT:    vaddps %ymm2, %ymm0, %ymm0992; AVX1-NEXT:    vshufps {{.*#+}} ymm2 = ymm3[1,1,1,1,5,5,5,5]993; AVX1-NEXT:    vmulps %ymm2, %ymm5, %ymm2994; AVX1-NEXT:    vshufps {{.*#+}} ymm4 = ymm3[0,0,0,0,4,4,4,4]995; AVX1-NEXT:    vmulps %ymm4, %ymm7, %ymm4996; AVX1-NEXT:    vaddps %ymm2, %ymm4, %ymm2997; AVX1-NEXT:    vshufps {{.*#+}} ymm4 = ymm3[2,2,2,2,6,6,6,6]998; AVX1-NEXT:    vmulps %ymm4, %ymm6, %ymm4999; AVX1-NEXT:    vaddps %ymm4, %ymm2, %ymm21000; AVX1-NEXT:    vshufps {{.*#+}} ymm3 = ymm3[3,3,3,3,7,7,7,7]1001; AVX1-NEXT:    vmulps %ymm3, %ymm1, %ymm11002; AVX1-NEXT:    vaddps %ymm1, %ymm2, %ymm11003; AVX1-NEXT:    retq1004;1005; AVX2-LABEL: test_mul4x4_f32:1006; AVX2:       # %bb.0: # %entry1007; AVX2-NEXT:    vshufps {{.*#+}} ymm4 = ymm2[1,1,1,1,5,5,5,5]1008; AVX2-NEXT:    vpermpd {{.*#+}} ymm5 = ymm0[2,3,2,3]1009; AVX2-NEXT:    vmulps %ymm4, %ymm5, %ymm41010; AVX2-NEXT:    vshufps {{.*#+}} ymm6 = ymm2[0,0,0,0,4,4,4,4]1011; AVX2-NEXT:    vpermpd {{.*#+}} ymm7 = ymm0[0,1,0,1]1012; AVX2-NEXT:    vmulps %ymm6, %ymm7, %ymm01013; AVX2-NEXT:    vaddps %ymm4, %ymm0, %ymm01014; AVX2-NEXT:    vshufps {{.*#+}} ymm4 = ymm2[2,2,2,2,6,6,6,6]1015; AVX2-NEXT:    vpermpd {{.*#+}} ymm6 = ymm1[0,1,0,1]1016; AVX2-NEXT:    vmulps %ymm4, %ymm6, %ymm41017; AVX2-NEXT:    vaddps %ymm4, %ymm0, %ymm01018; AVX2-NEXT:    vshufps {{.*#+}} ymm2 = ymm2[3,3,3,3,7,7,7,7]1019; AVX2-NEXT:    vpermpd {{.*#+}} ymm1 = ymm1[2,3,2,3]1020; AVX2-NEXT:    vmulps %ymm2, %ymm1, %ymm21021; AVX2-NEXT:    vaddps %ymm2, %ymm0, %ymm01022; AVX2-NEXT:    vshufps {{.*#+}} ymm2 = ymm3[1,1,1,1,5,5,5,5]1023; AVX2-NEXT:    vmulps %ymm2, %ymm5, %ymm21024; AVX2-NEXT:    vshufps {{.*#+}} ymm4 = ymm3[0,0,0,0,4,4,4,4]1025; AVX2-NEXT:    vmulps %ymm4, %ymm7, %ymm41026; AVX2-NEXT:    vaddps %ymm2, %ymm4, %ymm21027; AVX2-NEXT:    vshufps {{.*#+}} ymm4 = ymm3[2,2,2,2,6,6,6,6]1028; AVX2-NEXT:    vmulps %ymm4, %ymm6, %ymm41029; AVX2-NEXT:    vaddps %ymm4, %ymm2, %ymm21030; AVX2-NEXT:    vshufps {{.*#+}} ymm3 = ymm3[3,3,3,3,7,7,7,7]1031; AVX2-NEXT:    vmulps %ymm3, %ymm1, %ymm11032; AVX2-NEXT:    vaddps %ymm1, %ymm2, %ymm11033; AVX2-NEXT:    retq1034;1035; AVX512-LABEL: test_mul4x4_f32:1036; AVX512:       # %bb.0: # %entry1037; AVX512-NEXT:    vshufps {{.*#+}} zmm2 = zmm1[1,1,1,1,5,5,5,5,9,9,9,9,13,13,13,13]1038; AVX512-NEXT:    vshuff64x2 {{.*#+}} zmm3 = zmm0[2,3,2,3,2,3,2,3]1039; AVX512-NEXT:    vmulps %zmm2, %zmm3, %zmm21040; AVX512-NEXT:    vshufps {{.*#+}} zmm3 = zmm1[0,0,0,0,4,4,4,4,8,8,8,8,12,12,12,12]1041; AVX512-NEXT:    vshuff64x2 {{.*#+}} zmm4 = zmm0[0,1,0,1,0,1,0,1]1042; AVX512-NEXT:    vmulps %zmm3, %zmm4, %zmm31043; AVX512-NEXT:    vaddps %zmm2, %zmm3, %zmm21044; AVX512-NEXT:    vshufps {{.*#+}} zmm3 = zmm1[2,2,2,2,6,6,6,6,10,10,10,10,14,14,14,14]1045; AVX512-NEXT:    vshuff64x2 {{.*#+}} zmm4 = zmm0[4,5,4,5,4,5,4,5]1046; AVX512-NEXT:    vmulps %zmm3, %zmm4, %zmm31047; AVX512-NEXT:    vaddps %zmm3, %zmm2, %zmm21048; AVX512-NEXT:    vshufps {{.*#+}} zmm1 = zmm1[3,3,3,3,7,7,7,7,11,11,11,11,15,15,15,15]1049; AVX512-NEXT:    vshuff64x2 {{.*#+}} zmm0 = zmm0[6,7,6,7,6,7,6,7]1050; AVX512-NEXT:    vmulps %zmm1, %zmm0, %zmm01051; AVX512-NEXT:    vaddps %zmm0, %zmm2, %zmm01052; AVX512-NEXT:    retq1053entry:1054  %split = shufflevector <16 x float> %a0, <16 x float> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 3>1055  %split1 = shufflevector <16 x float> %a0, <16 x float> poison, <4 x i32> <i32 4, i32 5, i32 6, i32 7>1056  %split2 = shufflevector <16 x float> %a0, <16 x float> poison, <4 x i32> <i32 8, i32 9, i32 10, i32 11>1057  %split3 = shufflevector <16 x float> %a0, <16 x float> poison, <4 x i32> <i32 12, i32 13, i32 14, i32 15>1058  %splat.splat = shufflevector <16 x float> %a1, <16 x float> undef, <4 x i32> zeroinitializer1059  %0 = fmul <4 x float> %split, %splat.splat1060  %splat.splat10 = shufflevector <16 x float> %a1, <16 x float> undef, <4 x i32> <i32 1, i32 1, i32 1, i32 1>1061  %1 = fmul <4 x float> %split1, %splat.splat101062  %2 = fadd <4 x float> %0, %11063  %splat.splat13 = shufflevector <16 x float> %a1, <16 x float> undef, <4 x i32> <i32 2, i32 2, i32 2, i32 2>1064  %3 = fmul <4 x float> %split2, %splat.splat131065  %4 = fadd <4 x float> %2, %31066  %splat.splat16 = shufflevector <16 x float> %a1, <16 x float> undef, <4 x i32> <i32 3, i32 3, i32 3, i32 3>1067  %5 = fmul <4 x float> %split3, %splat.splat161068  %6 = fadd <4 x float> %4, %51069  %splat.splat19 = shufflevector <16 x float> %a1, <16 x float> undef, <4 x i32> <i32 4, i32 4, i32 4, i32 4>1070  %7 = fmul <4 x float> %split, %splat.splat191071  %splat.splat22 = shufflevector <16 x float> %a1, <16 x float> undef, <4 x i32> <i32 5, i32 5, i32 5, i32 5>1072  %8 = fmul <4 x float> %split1, %splat.splat221073  %9 = fadd <4 x float> %7, %81074  %splat.splat25 = shufflevector <16 x float> %a1, <16 x float> undef, <4 x i32> <i32 6, i32 6, i32 6, i32 6>1075  %10 = fmul <4 x float> %split2, %splat.splat251076  %11 = fadd <4 x float> %9, %101077  %splat.splat28 = shufflevector <16 x float> %a1, <16 x float> undef, <4 x i32> <i32 7, i32 7, i32 7, i32 7>1078  %12 = fmul <4 x float> %split3, %splat.splat281079  %13 = fadd <4 x float> %11, %121080  %splat.splat31 = shufflevector <16 x float> %a1, <16 x float> undef, <4 x i32> <i32 8, i32 8, i32 8, i32 8>1081  %14 = fmul <4 x float> %split, %splat.splat311082  %splat.splat34 = shufflevector <16 x float> %a1, <16 x float> undef, <4 x i32> <i32 9, i32 9, i32 9, i32 9>1083  %15 = fmul <4 x float> %split1, %splat.splat341084  %16 = fadd <4 x float> %14, %151085  %splat.splat37 = shufflevector <16 x float> %a1, <16 x float> undef, <4 x i32> <i32 10, i32 10, i32 10, i32 10>1086  %17 = fmul <4 x float> %split2, %splat.splat371087  %18 = fadd <4 x float> %16, %171088  %splat.splat40 = shufflevector <16 x float> %a1, <16 x float> undef, <4 x i32> <i32 11, i32 11, i32 11, i32 11>1089  %19 = fmul <4 x float> %split3, %splat.splat401090  %20 = fadd <4 x float> %18, %191091  %splat.splat43 = shufflevector <16 x float> %a1, <16 x float> undef, <4 x i32> <i32 12, i32 12, i32 12, i32 12>1092  %21 = fmul <4 x float> %split, %splat.splat431093  %splat.splat46 = shufflevector <16 x float> %a1, <16 x float> undef, <4 x i32> <i32 13, i32 13, i32 13, i32 13>1094  %22 = fmul <4 x float> %split1, %splat.splat461095  %23 = fadd <4 x float> %21, %221096  %splat.splat49 = shufflevector <16 x float> %a1, <16 x float> undef, <4 x i32> <i32 14, i32 14, i32 14, i32 14>1097  %24 = fmul <4 x float> %split2, %splat.splat491098  %25 = fadd <4 x float> %23, %241099  %splat.splat52 = shufflevector <16 x float> %a1, <16 x float> undef, <4 x i32> <i32 15, i32 15, i32 15, i32 15>1100  %26 = fmul <4 x float> %split3, %splat.splat521101  %27 = fadd <4 x float> %25, %261102  %28 = shufflevector <4 x float> %6, <4 x float> %13, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>1103  %29 = shufflevector <4 x float> %20, <4 x float> %27, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>1104  %30 = shufflevector <8 x float> %28, <8 x float> %29, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>1105  ret <16 x float> %301106}1107 1108define <16 x double> @test_mul4x4_f64(<16 x double> %a0, <16 x double> %a1) nounwind {1109; SSE-LABEL: test_mul4x4_f64:1110; SSE:       # %bb.0: # %entry1111; SSE-NEXT:    movaps %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1112; SSE-NEXT:    movapd %xmm5, %xmm61113; SSE-NEXT:    movapd %xmm4, %xmm51114; SSE-NEXT:    movq %rdi, %rax1115; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm111116; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm91117; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm121118; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm81119; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm101120; SSE-NEXT:    movapd %xmm10, %xmm131121; SSE-NEXT:    unpcklpd {{.*#+}} xmm13 = xmm13[0],xmm10[0]1122; SSE-NEXT:    movapd %xmm1, %xmm141123; SSE-NEXT:    mulpd %xmm13, %xmm141124; SSE-NEXT:    mulpd %xmm0, %xmm131125; SSE-NEXT:    unpckhpd {{.*#+}} xmm10 = xmm10[1,1]1126; SSE-NEXT:    movapd %xmm3, %xmm151127; SSE-NEXT:    mulpd %xmm10, %xmm151128; SSE-NEXT:    addpd %xmm14, %xmm151129; SSE-NEXT:    mulpd %xmm2, %xmm101130; SSE-NEXT:    movapd %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1131; SSE-NEXT:    addpd %xmm13, %xmm101132; SSE-NEXT:    movapd %xmm8, %xmm131133; SSE-NEXT:    unpcklpd {{.*#+}} xmm13 = xmm13[0],xmm8[0]1134; SSE-NEXT:    movapd %xmm4, %xmm141135; SSE-NEXT:    mulpd %xmm13, %xmm141136; SSE-NEXT:    addpd %xmm10, %xmm141137; SSE-NEXT:    movapd %xmm6, %xmm41138; SSE-NEXT:    mulpd %xmm6, %xmm131139; SSE-NEXT:    addpd %xmm15, %xmm131140; SSE-NEXT:    unpckhpd {{.*#+}} xmm8 = xmm8[1,1]1141; SSE-NEXT:    movapd %xmm7, %xmm101142; SSE-NEXT:    mulpd %xmm8, %xmm101143; SSE-NEXT:    addpd %xmm13, %xmm101144; SSE-NEXT:    movapd {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload1145; SSE-NEXT:    mulpd %xmm6, %xmm81146; SSE-NEXT:    addpd %xmm14, %xmm81147; SSE-NEXT:    movapd %xmm12, %xmm131148; SSE-NEXT:    unpcklpd {{.*#+}} xmm13 = xmm13[0],xmm12[0]1149; SSE-NEXT:    movapd %xmm1, %xmm141150; SSE-NEXT:    mulpd %xmm13, %xmm141151; SSE-NEXT:    mulpd %xmm0, %xmm131152; SSE-NEXT:    unpckhpd {{.*#+}} xmm12 = xmm12[1,1]1153; SSE-NEXT:    movapd %xmm3, %xmm151154; SSE-NEXT:    mulpd %xmm12, %xmm151155; SSE-NEXT:    addpd %xmm14, %xmm151156; SSE-NEXT:    mulpd %xmm2, %xmm121157; SSE-NEXT:    addpd %xmm13, %xmm121158; SSE-NEXT:    movapd %xmm9, %xmm131159; SSE-NEXT:    unpcklpd {{.*#+}} xmm13 = xmm13[0],xmm9[0]1160; SSE-NEXT:    movapd %xmm5, %xmm141161; SSE-NEXT:    mulpd %xmm13, %xmm141162; SSE-NEXT:    addpd %xmm12, %xmm141163; SSE-NEXT:    mulpd %xmm4, %xmm131164; SSE-NEXT:    movapd %xmm4, %xmm21165; SSE-NEXT:    addpd %xmm15, %xmm131166; SSE-NEXT:    unpckhpd {{.*#+}} xmm9 = xmm9[1,1]1167; SSE-NEXT:    movapd %xmm7, %xmm121168; SSE-NEXT:    mulpd %xmm9, %xmm121169; SSE-NEXT:    addpd %xmm13, %xmm121170; SSE-NEXT:    mulpd %xmm6, %xmm91171; SSE-NEXT:    addpd %xmm14, %xmm91172; SSE-NEXT:    movapd %xmm11, %xmm141173; SSE-NEXT:    unpcklpd {{.*#+}} xmm14 = xmm14[0],xmm11[0]1174; SSE-NEXT:    movapd %xmm1, %xmm131175; SSE-NEXT:    mulpd %xmm14, %xmm131176; SSE-NEXT:    unpckhpd {{.*#+}} xmm11 = xmm11[1,1]1177; SSE-NEXT:    movapd %xmm3, %xmm151178; SSE-NEXT:    mulpd %xmm11, %xmm151179; SSE-NEXT:    addpd %xmm13, %xmm151180; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm131181; SSE-NEXT:    mulpd %xmm0, %xmm141182; SSE-NEXT:    movapd %xmm0, %xmm61183; SSE-NEXT:    movapd {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1184; SSE-NEXT:    mulpd %xmm0, %xmm111185; SSE-NEXT:    addpd %xmm14, %xmm111186; SSE-NEXT:    movapd %xmm13, %xmm141187; SSE-NEXT:    unpcklpd {{.*#+}} xmm14 = xmm14[0],xmm13[0]1188; SSE-NEXT:    movapd %xmm5, %xmm41189; SSE-NEXT:    mulpd %xmm14, %xmm41190; SSE-NEXT:    addpd %xmm11, %xmm41191; SSE-NEXT:    mulpd %xmm2, %xmm141192; SSE-NEXT:    addpd %xmm15, %xmm141193; SSE-NEXT:    unpckhpd {{.*#+}} xmm13 = xmm13[1,1]1194; SSE-NEXT:    movapd %xmm7, %xmm111195; SSE-NEXT:    mulpd %xmm13, %xmm111196; SSE-NEXT:    addpd %xmm14, %xmm111197; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm141198; SSE-NEXT:    movapd {{[-0-9]+}}(%r{{[sb]}}p), %xmm15 # 16-byte Reload1199; SSE-NEXT:    mulpd %xmm15, %xmm131200; SSE-NEXT:    addpd %xmm4, %xmm131201; SSE-NEXT:    movapd %xmm14, %xmm41202; SSE-NEXT:    unpcklpd {{.*#+}} xmm4 = xmm4[0],xmm14[0]1203; SSE-NEXT:    mulpd %xmm4, %xmm11204; SSE-NEXT:    mulpd %xmm6, %xmm41205; SSE-NEXT:    unpckhpd {{.*#+}} xmm14 = xmm14[1,1]1206; SSE-NEXT:    mulpd %xmm14, %xmm31207; SSE-NEXT:    addpd %xmm1, %xmm31208; SSE-NEXT:    mulpd %xmm0, %xmm141209; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm01210; SSE-NEXT:    addpd %xmm4, %xmm141211; SSE-NEXT:    movapd %xmm0, %xmm11212; SSE-NEXT:    unpcklpd {{.*#+}} xmm1 = xmm1[0],xmm0[0]1213; SSE-NEXT:    mulpd %xmm1, %xmm51214; SSE-NEXT:    addpd %xmm14, %xmm51215; SSE-NEXT:    mulpd %xmm2, %xmm11216; SSE-NEXT:    addpd %xmm3, %xmm11217; SSE-NEXT:    unpckhpd {{.*#+}} xmm0 = xmm0[1,1]1218; SSE-NEXT:    mulpd %xmm0, %xmm71219; SSE-NEXT:    addpd %xmm1, %xmm71220; SSE-NEXT:    mulpd %xmm15, %xmm01221; SSE-NEXT:    addpd %xmm5, %xmm01222; SSE-NEXT:    movapd %xmm7, 112(%rdi)1223; SSE-NEXT:    movapd %xmm0, 96(%rdi)1224; SSE-NEXT:    movapd %xmm11, 80(%rdi)1225; SSE-NEXT:    movapd %xmm13, 64(%rdi)1226; SSE-NEXT:    movapd %xmm12, 48(%rdi)1227; SSE-NEXT:    movapd %xmm9, 32(%rdi)1228; SSE-NEXT:    movapd %xmm10, 16(%rdi)1229; SSE-NEXT:    movapd %xmm8, (%rdi)1230; SSE-NEXT:    retq1231;1232; AVX1-LABEL: test_mul4x4_f64:1233; AVX1:       # %bb.0: # %entry1234; AVX1-NEXT:    vmovddup {{.*#+}} xmm8 = xmm4[0,0]1235; AVX1-NEXT:    vinsertf128 $1, %xmm8, %ymm8, %ymm81236; AVX1-NEXT:    vmulpd %ymm0, %ymm8, %ymm81237; AVX1-NEXT:    vshufpd {{.*#+}} xmm9 = xmm4[1,1]1238; AVX1-NEXT:    vinsertf128 $1, %xmm9, %ymm9, %ymm91239; AVX1-NEXT:    vmulpd %ymm1, %ymm9, %ymm91240; AVX1-NEXT:    vaddpd %ymm9, %ymm8, %ymm81241; AVX1-NEXT:    vperm2f128 {{.*#+}} ymm4 = ymm4[2,3,2,3]1242; AVX1-NEXT:    vmovddup {{.*#+}} ymm9 = ymm4[0,0,2,2]1243; AVX1-NEXT:    vmulpd %ymm2, %ymm9, %ymm91244; AVX1-NEXT:    vaddpd %ymm9, %ymm8, %ymm81245; AVX1-NEXT:    vshufpd {{.*#+}} ymm4 = ymm4[1,1,3,3]1246; AVX1-NEXT:    vmulpd %ymm4, %ymm3, %ymm41247; AVX1-NEXT:    vaddpd %ymm4, %ymm8, %ymm41248; AVX1-NEXT:    vmovddup {{.*#+}} xmm8 = xmm5[0,0]1249; AVX1-NEXT:    vinsertf128 $1, %xmm8, %ymm8, %ymm81250; AVX1-NEXT:    vmulpd %ymm0, %ymm8, %ymm81251; AVX1-NEXT:    vshufpd {{.*#+}} xmm9 = xmm5[1,1]1252; AVX1-NEXT:    vinsertf128 $1, %xmm9, %ymm9, %ymm91253; AVX1-NEXT:    vmulpd %ymm1, %ymm9, %ymm91254; AVX1-NEXT:    vaddpd %ymm9, %ymm8, %ymm81255; AVX1-NEXT:    vperm2f128 {{.*#+}} ymm5 = ymm5[2,3,2,3]1256; AVX1-NEXT:    vmovddup {{.*#+}} ymm9 = ymm5[0,0,2,2]1257; AVX1-NEXT:    vmulpd %ymm2, %ymm9, %ymm91258; AVX1-NEXT:    vaddpd %ymm9, %ymm8, %ymm81259; AVX1-NEXT:    vshufpd {{.*#+}} ymm5 = ymm5[1,1,3,3]1260; AVX1-NEXT:    vmulpd %ymm5, %ymm3, %ymm51261; AVX1-NEXT:    vaddpd %ymm5, %ymm8, %ymm51262; AVX1-NEXT:    vmovddup {{.*#+}} xmm8 = xmm6[0,0]1263; AVX1-NEXT:    vinsertf128 $1, %xmm8, %ymm8, %ymm81264; AVX1-NEXT:    vmulpd %ymm0, %ymm8, %ymm81265; AVX1-NEXT:    vshufpd {{.*#+}} xmm9 = xmm6[1,1]1266; AVX1-NEXT:    vinsertf128 $1, %xmm9, %ymm9, %ymm91267; AVX1-NEXT:    vmulpd %ymm1, %ymm9, %ymm91268; AVX1-NEXT:    vaddpd %ymm9, %ymm8, %ymm81269; AVX1-NEXT:    vperm2f128 {{.*#+}} ymm6 = ymm6[2,3,2,3]1270; AVX1-NEXT:    vmovddup {{.*#+}} ymm9 = ymm6[0,0,2,2]1271; AVX1-NEXT:    vmulpd %ymm2, %ymm9, %ymm91272; AVX1-NEXT:    vaddpd %ymm9, %ymm8, %ymm81273; AVX1-NEXT:    vshufpd {{.*#+}} ymm6 = ymm6[1,1,3,3]1274; AVX1-NEXT:    vmulpd %ymm6, %ymm3, %ymm61275; AVX1-NEXT:    vaddpd %ymm6, %ymm8, %ymm61276; AVX1-NEXT:    vmovddup {{.*#+}} xmm8 = xmm7[0,0]1277; AVX1-NEXT:    vinsertf128 $1, %xmm8, %ymm8, %ymm81278; AVX1-NEXT:    vmulpd %ymm0, %ymm8, %ymm01279; AVX1-NEXT:    vshufpd {{.*#+}} xmm8 = xmm7[1,1]1280; AVX1-NEXT:    vinsertf128 $1, %xmm8, %ymm8, %ymm81281; AVX1-NEXT:    vmulpd %ymm1, %ymm8, %ymm11282; AVX1-NEXT:    vaddpd %ymm1, %ymm0, %ymm01283; AVX1-NEXT:    vperm2f128 {{.*#+}} ymm1 = ymm7[2,3,2,3]1284; AVX1-NEXT:    vmovddup {{.*#+}} ymm7 = ymm1[0,0,2,2]1285; AVX1-NEXT:    vmulpd %ymm7, %ymm2, %ymm21286; AVX1-NEXT:    vaddpd %ymm2, %ymm0, %ymm01287; AVX1-NEXT:    vshufpd {{.*#+}} ymm1 = ymm1[1,1,3,3]1288; AVX1-NEXT:    vmulpd %ymm1, %ymm3, %ymm11289; AVX1-NEXT:    vaddpd %ymm1, %ymm0, %ymm31290; AVX1-NEXT:    vmovapd %ymm4, %ymm01291; AVX1-NEXT:    vmovapd %ymm5, %ymm11292; AVX1-NEXT:    vmovapd %ymm6, %ymm21293; AVX1-NEXT:    retq1294;1295; AVX2-LABEL: test_mul4x4_f64:1296; AVX2:       # %bb.0: # %entry1297; AVX2-NEXT:    vbroadcastsd %xmm4, %ymm81298; AVX2-NEXT:    vmulpd %ymm0, %ymm8, %ymm81299; AVX2-NEXT:    vpermpd {{.*#+}} ymm9 = ymm4[1,1,1,1]1300; AVX2-NEXT:    vmulpd %ymm1, %ymm9, %ymm91301; AVX2-NEXT:    vaddpd %ymm9, %ymm8, %ymm81302; AVX2-NEXT:    vpermpd {{.*#+}} ymm9 = ymm4[2,2,2,2]1303; AVX2-NEXT:    vmulpd %ymm2, %ymm9, %ymm91304; AVX2-NEXT:    vaddpd %ymm9, %ymm8, %ymm81305; AVX2-NEXT:    vpermpd {{.*#+}} ymm4 = ymm4[3,3,3,3]1306; AVX2-NEXT:    vmulpd %ymm4, %ymm3, %ymm41307; AVX2-NEXT:    vaddpd %ymm4, %ymm8, %ymm41308; AVX2-NEXT:    vbroadcastsd %xmm5, %ymm81309; AVX2-NEXT:    vmulpd %ymm0, %ymm8, %ymm81310; AVX2-NEXT:    vpermpd {{.*#+}} ymm9 = ymm5[1,1,1,1]1311; AVX2-NEXT:    vmulpd %ymm1, %ymm9, %ymm91312; AVX2-NEXT:    vaddpd %ymm9, %ymm8, %ymm81313; AVX2-NEXT:    vpermpd {{.*#+}} ymm9 = ymm5[2,2,2,2]1314; AVX2-NEXT:    vmulpd %ymm2, %ymm9, %ymm91315; AVX2-NEXT:    vaddpd %ymm9, %ymm8, %ymm81316; AVX2-NEXT:    vpermpd {{.*#+}} ymm5 = ymm5[3,3,3,3]1317; AVX2-NEXT:    vmulpd %ymm5, %ymm3, %ymm51318; AVX2-NEXT:    vaddpd %ymm5, %ymm8, %ymm51319; AVX2-NEXT:    vbroadcastsd %xmm6, %ymm81320; AVX2-NEXT:    vmulpd %ymm0, %ymm8, %ymm81321; AVX2-NEXT:    vpermpd {{.*#+}} ymm9 = ymm6[1,1,1,1]1322; AVX2-NEXT:    vmulpd %ymm1, %ymm9, %ymm91323; AVX2-NEXT:    vaddpd %ymm9, %ymm8, %ymm81324; AVX2-NEXT:    vpermpd {{.*#+}} ymm9 = ymm6[2,2,2,2]1325; AVX2-NEXT:    vmulpd %ymm2, %ymm9, %ymm91326; AVX2-NEXT:    vaddpd %ymm9, %ymm8, %ymm81327; AVX2-NEXT:    vpermpd {{.*#+}} ymm6 = ymm6[3,3,3,3]1328; AVX2-NEXT:    vmulpd %ymm6, %ymm3, %ymm61329; AVX2-NEXT:    vaddpd %ymm6, %ymm8, %ymm61330; AVX2-NEXT:    vbroadcastsd %xmm7, %ymm81331; AVX2-NEXT:    vmulpd %ymm0, %ymm8, %ymm01332; AVX2-NEXT:    vpermpd {{.*#+}} ymm8 = ymm7[1,1,1,1]1333; AVX2-NEXT:    vmulpd %ymm1, %ymm8, %ymm11334; AVX2-NEXT:    vaddpd %ymm1, %ymm0, %ymm01335; AVX2-NEXT:    vpermpd {{.*#+}} ymm1 = ymm7[2,2,2,2]1336; AVX2-NEXT:    vmulpd %ymm1, %ymm2, %ymm11337; AVX2-NEXT:    vaddpd %ymm1, %ymm0, %ymm01338; AVX2-NEXT:    vpermpd {{.*#+}} ymm1 = ymm7[3,3,3,3]1339; AVX2-NEXT:    vmulpd %ymm1, %ymm3, %ymm11340; AVX2-NEXT:    vaddpd %ymm1, %ymm0, %ymm31341; AVX2-NEXT:    vmovapd %ymm4, %ymm01342; AVX2-NEXT:    vmovapd %ymm5, %ymm11343; AVX2-NEXT:    vmovapd %ymm6, %ymm21344; AVX2-NEXT:    retq1345;1346; AVX512-LABEL: test_mul4x4_f64:1347; AVX512:       # %bb.0: # %entry1348; AVX512-NEXT:    vpermpd {{.*#+}} zmm4 = zmm2[1,1,1,1,5,5,5,5]1349; AVX512-NEXT:    vshuff64x2 {{.*#+}} zmm5 = zmm0[4,5,6,7,4,5,6,7]1350; AVX512-NEXT:    vmulpd %zmm4, %zmm5, %zmm41351; AVX512-NEXT:    vpermpd {{.*#+}} zmm6 = zmm2[0,0,0,0,4,4,4,4]1352; AVX512-NEXT:    vinsertf64x4 $1, %ymm0, %zmm0, %zmm71353; AVX512-NEXT:    vmulpd %zmm6, %zmm7, %zmm01354; AVX512-NEXT:    vaddpd %zmm4, %zmm0, %zmm01355; AVX512-NEXT:    vpermpd {{.*#+}} zmm4 = zmm2[2,2,2,2,6,6,6,6]1356; AVX512-NEXT:    vinsertf64x4 $1, %ymm1, %zmm1, %zmm61357; AVX512-NEXT:    vmulpd %zmm4, %zmm6, %zmm41358; AVX512-NEXT:    vaddpd %zmm4, %zmm0, %zmm01359; AVX512-NEXT:    vpermpd {{.*#+}} zmm2 = zmm2[3,3,3,3,7,7,7,7]1360; AVX512-NEXT:    vshuff64x2 {{.*#+}} zmm1 = zmm1[4,5,6,7,4,5,6,7]1361; AVX512-NEXT:    vmulpd %zmm2, %zmm1, %zmm21362; AVX512-NEXT:    vaddpd %zmm2, %zmm0, %zmm01363; AVX512-NEXT:    vpermpd {{.*#+}} zmm2 = zmm3[1,1,1,1,5,5,5,5]1364; AVX512-NEXT:    vmulpd %zmm2, %zmm5, %zmm21365; AVX512-NEXT:    vpermpd {{.*#+}} zmm4 = zmm3[0,0,0,0,4,4,4,4]1366; AVX512-NEXT:    vmulpd %zmm4, %zmm7, %zmm41367; AVX512-NEXT:    vaddpd %zmm2, %zmm4, %zmm21368; AVX512-NEXT:    vpermpd {{.*#+}} zmm4 = zmm3[2,2,2,2,6,6,6,6]1369; AVX512-NEXT:    vmulpd %zmm4, %zmm6, %zmm41370; AVX512-NEXT:    vaddpd %zmm4, %zmm2, %zmm21371; AVX512-NEXT:    vpermpd {{.*#+}} zmm3 = zmm3[3,3,3,3,7,7,7,7]1372; AVX512-NEXT:    vmulpd %zmm3, %zmm1, %zmm11373; AVX512-NEXT:    vaddpd %zmm1, %zmm2, %zmm11374; AVX512-NEXT:    retq1375entry:1376  %split = shufflevector <16 x double> %a0, <16 x double> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 3>1377  %split1 = shufflevector <16 x double> %a0, <16 x double> poison, <4 x i32> <i32 4, i32 5, i32 6, i32 7>1378  %split2 = shufflevector <16 x double> %a0, <16 x double> poison, <4 x i32> <i32 8, i32 9, i32 10, i32 11>1379  %split3 = shufflevector <16 x double> %a0, <16 x double> poison, <4 x i32> <i32 12, i32 13, i32 14, i32 15>1380  %splat.splat = shufflevector <16 x double> %a1, <16 x double> undef, <4 x i32> zeroinitializer1381  %0 = fmul <4 x double> %split, %splat.splat1382  %splat.splat10 = shufflevector <16 x double> %a1, <16 x double> undef, <4 x i32> <i32 1, i32 1, i32 1, i32 1>1383  %1 = fmul <4 x double> %split1, %splat.splat101384  %2 = fadd <4 x double> %0, %11385  %splat.splat13 = shufflevector <16 x double> %a1, <16 x double> undef, <4 x i32> <i32 2, i32 2, i32 2, i32 2>1386  %3 = fmul <4 x double> %split2, %splat.splat131387  %4 = fadd <4 x double> %2, %31388  %splat.splat16 = shufflevector <16 x double> %a1, <16 x double> undef, <4 x i32> <i32 3, i32 3, i32 3, i32 3>1389  %5 = fmul <4 x double> %split3, %splat.splat161390  %6 = fadd <4 x double> %4, %51391  %splat.splat19 = shufflevector <16 x double> %a1, <16 x double> undef, <4 x i32> <i32 4, i32 4, i32 4, i32 4>1392  %7 = fmul <4 x double> %split, %splat.splat191393  %splat.splat22 = shufflevector <16 x double> %a1, <16 x double> undef, <4 x i32> <i32 5, i32 5, i32 5, i32 5>1394  %8 = fmul <4 x double> %split1, %splat.splat221395  %9 = fadd <4 x double> %7, %81396  %splat.splat25 = shufflevector <16 x double> %a1, <16 x double> undef, <4 x i32> <i32 6, i32 6, i32 6, i32 6>1397  %10 = fmul <4 x double> %split2, %splat.splat251398  %11 = fadd <4 x double> %9, %101399  %splat.splat28 = shufflevector <16 x double> %a1, <16 x double> undef, <4 x i32> <i32 7, i32 7, i32 7, i32 7>1400  %12 = fmul <4 x double> %split3, %splat.splat281401  %13 = fadd <4 x double> %11, %121402  %splat.splat31 = shufflevector <16 x double> %a1, <16 x double> undef, <4 x i32> <i32 8, i32 8, i32 8, i32 8>1403  %14 = fmul <4 x double> %split, %splat.splat311404  %splat.splat34 = shufflevector <16 x double> %a1, <16 x double> undef, <4 x i32> <i32 9, i32 9, i32 9, i32 9>1405  %15 = fmul <4 x double> %split1, %splat.splat341406  %16 = fadd <4 x double> %14, %151407  %splat.splat37 = shufflevector <16 x double> %a1, <16 x double> undef, <4 x i32> <i32 10, i32 10, i32 10, i32 10>1408  %17 = fmul <4 x double> %split2, %splat.splat371409  %18 = fadd <4 x double> %16, %171410  %splat.splat40 = shufflevector <16 x double> %a1, <16 x double> undef, <4 x i32> <i32 11, i32 11, i32 11, i32 11>1411  %19 = fmul <4 x double> %split3, %splat.splat401412  %20 = fadd <4 x double> %18, %191413  %splat.splat43 = shufflevector <16 x double> %a1, <16 x double> undef, <4 x i32> <i32 12, i32 12, i32 12, i32 12>1414  %21 = fmul <4 x double> %split, %splat.splat431415  %splat.splat46 = shufflevector <16 x double> %a1, <16 x double> undef, <4 x i32> <i32 13, i32 13, i32 13, i32 13>1416  %22 = fmul <4 x double> %split1, %splat.splat461417  %23 = fadd <4 x double> %21, %221418  %splat.splat49 = shufflevector <16 x double> %a1, <16 x double> undef, <4 x i32> <i32 14, i32 14, i32 14, i32 14>1419  %24 = fmul <4 x double> %split2, %splat.splat491420  %25 = fadd <4 x double> %23, %241421  %splat.splat52 = shufflevector <16 x double> %a1, <16 x double> undef, <4 x i32> <i32 15, i32 15, i32 15, i32 15>1422  %26 = fmul <4 x double> %split3, %splat.splat521423  %27 = fadd <4 x double> %25, %261424  %28 = shufflevector <4 x double> %6, <4 x double> %13, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>1425  %29 = shufflevector <4 x double> %20, <4 x double> %27, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>1426  %30 = shufflevector <8 x double> %28, <8 x double> %29, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>1427  ret <16 x double> %301428}1429 1430define <64 x float> @test_mul8x8_f32(<64 x float> %a0, <64 x float> %a1) nounwind {1431; SSE-LABEL: test_mul8x8_f32:1432; SSE:       # %bb.0: # %entry1433; SSE-NEXT:    subq $120, %rsp1434; SSE-NEXT:    movaps %xmm5, %xmm111435; SSE-NEXT:    movaps %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1436; SSE-NEXT:    movaps %xmm1, %xmm91437; SSE-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1438; SSE-NEXT:    movq %rdi, %rax1439; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm81440; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm131441; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm141442; SSE-NEXT:    movaps %xmm14, %xmm151443; SSE-NEXT:    shufps {{.*#+}} xmm15 = xmm15[0,0],xmm14[0,0]1444; SSE-NEXT:    movaps %xmm1, %xmm51445; SSE-NEXT:    mulps %xmm15, %xmm51446; SSE-NEXT:    mulps %xmm0, %xmm151447; SSE-NEXT:    movaps %xmm14, %xmm01448; SSE-NEXT:    shufps {{.*#+}} xmm0 = xmm0[1,1],xmm14[1,1]1449; SSE-NEXT:    movaps %xmm3, %xmm101450; SSE-NEXT:    movaps %xmm3, %xmm121451; SSE-NEXT:    mulps %xmm0, %xmm101452; SSE-NEXT:    addps %xmm5, %xmm101453; SSE-NEXT:    mulps %xmm2, %xmm01454; SSE-NEXT:    addps %xmm15, %xmm01455; SSE-NEXT:    movaps %xmm14, %xmm11456; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[2,2],xmm14[2,2]1457; SSE-NEXT:    movaps %xmm4, %xmm21458; SSE-NEXT:    movaps %xmm4, %xmm151459; SSE-NEXT:    mulps %xmm1, %xmm21460; SSE-NEXT:    addps %xmm0, %xmm21461; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm51462; SSE-NEXT:    mulps %xmm11, %xmm11463; SSE-NEXT:    addps %xmm10, %xmm11464; SSE-NEXT:    shufps {{.*#+}} xmm14 = xmm14[3,3,3,3]1465; SSE-NEXT:    movaps %xmm7, %xmm31466; SSE-NEXT:    mulps %xmm14, %xmm31467; SSE-NEXT:    addps %xmm1, %xmm31468; SSE-NEXT:    mulps %xmm6, %xmm141469; SSE-NEXT:    addps %xmm2, %xmm141470; SSE-NEXT:    movaps %xmm5, %xmm11471; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[0,0],xmm5[0,0]1472; SSE-NEXT:    movaps %xmm13, %xmm21473; SSE-NEXT:    mulps %xmm1, %xmm21474; SSE-NEXT:    addps %xmm14, %xmm21475; SSE-NEXT:    mulps {{[0-9]+}}(%rsp), %xmm11476; SSE-NEXT:    addps %xmm3, %xmm11477; SSE-NEXT:    movaps %xmm5, %xmm01478; SSE-NEXT:    shufps {{.*#+}} xmm0 = xmm0[1,1],xmm5[1,1]1479; SSE-NEXT:    movaps %xmm8, %xmm31480; SSE-NEXT:    mulps %xmm0, %xmm31481; SSE-NEXT:    addps %xmm1, %xmm31482; SSE-NEXT:    mulps {{[0-9]+}}(%rsp), %xmm01483; SSE-NEXT:    addps %xmm2, %xmm01484; SSE-NEXT:    movaps %xmm5, %xmm11485; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[2,2],xmm5[2,2]1486; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm21487; SSE-NEXT:    mulps %xmm1, %xmm21488; SSE-NEXT:    addps %xmm0, %xmm21489; SSE-NEXT:    mulps {{[0-9]+}}(%rsp), %xmm11490; SSE-NEXT:    addps %xmm3, %xmm11491; SSE-NEXT:    shufps {{.*#+}} xmm5 = xmm5[3,3,3,3]1492; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm01493; SSE-NEXT:    mulps %xmm5, %xmm01494; SSE-NEXT:    addps %xmm1, %xmm01495; SSE-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1496; SSE-NEXT:    mulps {{[0-9]+}}(%rsp), %xmm51497; SSE-NEXT:    addps %xmm2, %xmm51498; SSE-NEXT:    movaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1499; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm01500; SSE-NEXT:    movaps %xmm0, %xmm11501; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[0,0],xmm0[0,0]1502; SSE-NEXT:    movaps %xmm9, %xmm21503; SSE-NEXT:    mulps %xmm1, %xmm21504; SSE-NEXT:    movaps %xmm0, %xmm31505; SSE-NEXT:    shufps {{.*#+}} xmm3 = xmm3[1,1],xmm0[1,1]1506; SSE-NEXT:    movaps %xmm12, %xmm41507; SSE-NEXT:    mulps %xmm3, %xmm41508; SSE-NEXT:    addps %xmm2, %xmm41509; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload1510; SSE-NEXT:    mulps %xmm10, %xmm11511; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload1512; SSE-NEXT:    mulps %xmm13, %xmm31513; SSE-NEXT:    addps %xmm1, %xmm31514; SSE-NEXT:    movaps %xmm0, %xmm11515; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[2,2],xmm0[2,2]1516; SSE-NEXT:    movaps %xmm15, %xmm21517; SSE-NEXT:    mulps %xmm1, %xmm21518; SSE-NEXT:    addps %xmm3, %xmm21519; SSE-NEXT:    movaps %xmm11, %xmm81520; SSE-NEXT:    mulps %xmm11, %xmm11521; SSE-NEXT:    addps %xmm4, %xmm11522; SSE-NEXT:    shufps {{.*#+}} xmm0 = xmm0[3,3,3,3]1523; SSE-NEXT:    movaps %xmm7, %xmm31524; SSE-NEXT:    mulps %xmm0, %xmm31525; SSE-NEXT:    addps %xmm1, %xmm31526; SSE-NEXT:    movaps %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1527; SSE-NEXT:    mulps %xmm6, %xmm01528; SSE-NEXT:    addps %xmm2, %xmm01529; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm41530; SSE-NEXT:    movaps %xmm4, %xmm11531; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[0,0],xmm4[0,0]1532; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm141533; SSE-NEXT:    movaps %xmm14, %xmm21534; SSE-NEXT:    mulps %xmm1, %xmm21535; SSE-NEXT:    addps %xmm0, %xmm21536; SSE-NEXT:    mulps {{[0-9]+}}(%rsp), %xmm11537; SSE-NEXT:    addps %xmm3, %xmm11538; SSE-NEXT:    movaps %xmm4, %xmm01539; SSE-NEXT:    shufps {{.*#+}} xmm0 = xmm0[1,1],xmm4[1,1]1540; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm111541; SSE-NEXT:    movaps %xmm11, %xmm31542; SSE-NEXT:    mulps %xmm0, %xmm31543; SSE-NEXT:    addps %xmm1, %xmm31544; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm11545; SSE-NEXT:    mulps %xmm1, %xmm01546; SSE-NEXT:    addps %xmm2, %xmm01547; SSE-NEXT:    movaps %xmm4, %xmm11548; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[2,2],xmm4[2,2]1549; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm21550; SSE-NEXT:    mulps %xmm1, %xmm21551; SSE-NEXT:    addps %xmm0, %xmm21552; SSE-NEXT:    mulps {{[0-9]+}}(%rsp), %xmm11553; SSE-NEXT:    addps %xmm3, %xmm11554; SSE-NEXT:    shufps {{.*#+}} xmm4 = xmm4[3,3,3,3]1555; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm01556; SSE-NEXT:    mulps %xmm4, %xmm01557; SSE-NEXT:    addps %xmm1, %xmm01558; SSE-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1559; SSE-NEXT:    mulps {{[0-9]+}}(%rsp), %xmm41560; SSE-NEXT:    addps %xmm2, %xmm41561; SSE-NEXT:    movaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1562; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm01563; SSE-NEXT:    movaps %xmm0, %xmm11564; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[0,0],xmm0[0,0]1565; SSE-NEXT:    movaps %xmm9, %xmm21566; SSE-NEXT:    mulps %xmm1, %xmm21567; SSE-NEXT:    movaps %xmm0, %xmm31568; SSE-NEXT:    shufps {{.*#+}} xmm3 = xmm3[1,1],xmm0[1,1]1569; SSE-NEXT:    movaps %xmm12, %xmm41570; SSE-NEXT:    mulps %xmm3, %xmm41571; SSE-NEXT:    addps %xmm2, %xmm41572; SSE-NEXT:    mulps %xmm10, %xmm11573; SSE-NEXT:    mulps %xmm13, %xmm31574; SSE-NEXT:    addps %xmm1, %xmm31575; SSE-NEXT:    movaps %xmm0, %xmm11576; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[2,2],xmm0[2,2]1577; SSE-NEXT:    movaps %xmm15, %xmm21578; SSE-NEXT:    movaps %xmm15, %xmm51579; SSE-NEXT:    mulps %xmm1, %xmm21580; SSE-NEXT:    addps %xmm3, %xmm21581; SSE-NEXT:    mulps %xmm8, %xmm11582; SSE-NEXT:    addps %xmm4, %xmm11583; SSE-NEXT:    shufps {{.*#+}} xmm0 = xmm0[3,3,3,3]1584; SSE-NEXT:    movaps %xmm7, %xmm31585; SSE-NEXT:    mulps %xmm0, %xmm31586; SSE-NEXT:    addps %xmm1, %xmm31587; SSE-NEXT:    mulps %xmm6, %xmm01588; SSE-NEXT:    addps %xmm2, %xmm01589; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm41590; SSE-NEXT:    movaps %xmm4, %xmm11591; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[0,0],xmm4[0,0]1592; SSE-NEXT:    movaps %xmm14, %xmm21593; SSE-NEXT:    mulps %xmm1, %xmm21594; SSE-NEXT:    addps %xmm0, %xmm21595; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm141596; SSE-NEXT:    mulps %xmm14, %xmm11597; SSE-NEXT:    addps %xmm3, %xmm11598; SSE-NEXT:    movaps %xmm4, %xmm01599; SSE-NEXT:    shufps {{.*#+}} xmm0 = xmm0[1,1],xmm4[1,1]1600; SSE-NEXT:    movaps %xmm11, %xmm31601; SSE-NEXT:    mulps %xmm0, %xmm31602; SSE-NEXT:    addps %xmm1, %xmm31603; SSE-NEXT:    mulps {{[0-9]+}}(%rsp), %xmm01604; SSE-NEXT:    addps %xmm2, %xmm01605; SSE-NEXT:    movaps %xmm4, %xmm11606; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[2,2],xmm4[2,2]1607; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm21608; SSE-NEXT:    mulps %xmm1, %xmm21609; SSE-NEXT:    addps %xmm0, %xmm21610; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm111611; SSE-NEXT:    mulps %xmm11, %xmm11612; SSE-NEXT:    addps %xmm3, %xmm11613; SSE-NEXT:    shufps {{.*#+}} xmm4 = xmm4[3,3,3,3]1614; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm01615; SSE-NEXT:    mulps %xmm4, %xmm01616; SSE-NEXT:    addps %xmm1, %xmm01617; SSE-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1618; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm01619; SSE-NEXT:    mulps %xmm0, %xmm41620; SSE-NEXT:    addps %xmm2, %xmm41621; SSE-NEXT:    movaps %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1622; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm01623; SSE-NEXT:    movaps %xmm0, %xmm11624; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[0,0],xmm0[0,0]1625; SSE-NEXT:    movaps %xmm9, %xmm21626; SSE-NEXT:    mulps %xmm1, %xmm21627; SSE-NEXT:    movaps %xmm0, %xmm31628; SSE-NEXT:    shufps {{.*#+}} xmm3 = xmm3[1,1],xmm0[1,1]1629; SSE-NEXT:    movaps %xmm12, %xmm41630; SSE-NEXT:    mulps %xmm3, %xmm41631; SSE-NEXT:    addps %xmm2, %xmm41632; SSE-NEXT:    movaps %xmm10, %xmm151633; SSE-NEXT:    mulps %xmm10, %xmm11634; SSE-NEXT:    mulps %xmm13, %xmm31635; SSE-NEXT:    addps %xmm1, %xmm31636; SSE-NEXT:    movaps %xmm0, %xmm11637; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[2,2],xmm0[2,2]1638; SSE-NEXT:    movaps %xmm5, %xmm21639; SSE-NEXT:    mulps %xmm1, %xmm21640; SSE-NEXT:    addps %xmm3, %xmm21641; SSE-NEXT:    mulps %xmm8, %xmm11642; SSE-NEXT:    addps %xmm4, %xmm11643; SSE-NEXT:    shufps {{.*#+}} xmm0 = xmm0[3,3,3,3]1644; SSE-NEXT:    movaps %xmm7, %xmm41645; SSE-NEXT:    movaps %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1646; SSE-NEXT:    movaps %xmm7, %xmm31647; SSE-NEXT:    mulps %xmm0, %xmm31648; SSE-NEXT:    addps %xmm1, %xmm31649; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload1650; SSE-NEXT:    mulps %xmm6, %xmm01651; SSE-NEXT:    addps %xmm2, %xmm01652; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm101653; SSE-NEXT:    movaps %xmm10, %xmm11654; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[0,0],xmm10[0,0]1655; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm21656; SSE-NEXT:    mulps %xmm1, %xmm21657; SSE-NEXT:    addps %xmm0, %xmm21658; SSE-NEXT:    mulps %xmm14, %xmm11659; SSE-NEXT:    addps %xmm3, %xmm11660; SSE-NEXT:    movaps %xmm10, %xmm01661; SSE-NEXT:    shufps {{.*#+}} xmm0 = xmm0[1,1],xmm10[1,1]1662; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm31663; SSE-NEXT:    mulps %xmm0, %xmm31664; SSE-NEXT:    addps %xmm1, %xmm31665; SSE-NEXT:    mulps {{[0-9]+}}(%rsp), %xmm01666; SSE-NEXT:    addps %xmm2, %xmm01667; SSE-NEXT:    movaps %xmm10, %xmm11668; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[2,2],xmm10[2,2]1669; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm21670; SSE-NEXT:    mulps %xmm1, %xmm21671; SSE-NEXT:    addps %xmm0, %xmm21672; SSE-NEXT:    mulps %xmm11, %xmm11673; SSE-NEXT:    addps %xmm3, %xmm11674; SSE-NEXT:    shufps {{.*#+}} xmm10 = xmm10[3,3,3,3]1675; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm111676; SSE-NEXT:    movaps %xmm11, %xmm01677; SSE-NEXT:    mulps %xmm10, %xmm01678; SSE-NEXT:    addps %xmm1, %xmm01679; SSE-NEXT:    movaps %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1680; SSE-NEXT:    mulps {{[0-9]+}}(%rsp), %xmm101681; SSE-NEXT:    addps %xmm2, %xmm101682; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm01683; SSE-NEXT:    movaps %xmm0, %xmm11684; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[0,0],xmm0[0,0]1685; SSE-NEXT:    movaps %xmm9, %xmm21686; SSE-NEXT:    movaps %xmm9, %xmm141687; SSE-NEXT:    mulps %xmm1, %xmm21688; SSE-NEXT:    movaps %xmm0, %xmm31689; SSE-NEXT:    shufps {{.*#+}} xmm3 = xmm3[1,1],xmm0[1,1]1690; SSE-NEXT:    movaps %xmm12, %xmm71691; SSE-NEXT:    mulps %xmm3, %xmm71692; SSE-NEXT:    addps %xmm2, %xmm71693; SSE-NEXT:    mulps %xmm15, %xmm11694; SSE-NEXT:    mulps %xmm13, %xmm31695; SSE-NEXT:    addps %xmm1, %xmm31696; SSE-NEXT:    movaps %xmm0, %xmm11697; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[2,2],xmm0[2,2]1698; SSE-NEXT:    movaps %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1699; SSE-NEXT:    movaps %xmm5, %xmm21700; SSE-NEXT:    mulps %xmm1, %xmm21701; SSE-NEXT:    addps %xmm3, %xmm21702; SSE-NEXT:    movaps %xmm8, %xmm91703; SSE-NEXT:    mulps %xmm8, %xmm11704; SSE-NEXT:    addps %xmm7, %xmm11705; SSE-NEXT:    shufps {{.*#+}} xmm0 = xmm0[3,3,3,3]1706; SSE-NEXT:    movaps %xmm4, %xmm71707; SSE-NEXT:    mulps %xmm0, %xmm71708; SSE-NEXT:    addps %xmm1, %xmm71709; SSE-NEXT:    movaps %xmm6, %xmm31710; SSE-NEXT:    mulps %xmm6, %xmm01711; SSE-NEXT:    addps %xmm2, %xmm01712; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm41713; SSE-NEXT:    movaps %xmm4, %xmm11714; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[0,0],xmm4[0,0]1715; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm21716; SSE-NEXT:    mulps %xmm1, %xmm21717; SSE-NEXT:    addps %xmm0, %xmm21718; SSE-NEXT:    mulps {{[0-9]+}}(%rsp), %xmm11719; SSE-NEXT:    addps %xmm7, %xmm11720; SSE-NEXT:    movaps %xmm4, %xmm01721; SSE-NEXT:    shufps {{.*#+}} xmm0 = xmm0[1,1],xmm4[1,1]1722; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm71723; SSE-NEXT:    mulps %xmm0, %xmm71724; SSE-NEXT:    addps %xmm1, %xmm71725; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm11726; SSE-NEXT:    mulps %xmm1, %xmm01727; SSE-NEXT:    addps %xmm2, %xmm01728; SSE-NEXT:    movaps %xmm4, %xmm11729; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[2,2],xmm4[2,2]1730; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm21731; SSE-NEXT:    mulps %xmm1, %xmm21732; SSE-NEXT:    addps %xmm0, %xmm21733; SSE-NEXT:    mulps {{[0-9]+}}(%rsp), %xmm11734; SSE-NEXT:    addps %xmm7, %xmm11735; SSE-NEXT:    shufps {{.*#+}} xmm4 = xmm4[3,3,3,3]1736; SSE-NEXT:    movaps %xmm11, %xmm01737; SSE-NEXT:    mulps %xmm4, %xmm01738; SSE-NEXT:    addps %xmm1, %xmm01739; SSE-NEXT:    movaps %xmm0, (%rsp) # 16-byte Spill1740; SSE-NEXT:    mulps {{[0-9]+}}(%rsp), %xmm41741; SSE-NEXT:    addps %xmm2, %xmm41742; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm01743; SSE-NEXT:    movaps %xmm0, %xmm11744; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[0,0],xmm0[0,0]1745; SSE-NEXT:    movaps %xmm14, %xmm61746; SSE-NEXT:    movaps %xmm14, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1747; SSE-NEXT:    movaps %xmm14, %xmm21748; SSE-NEXT:    mulps %xmm1, %xmm21749; SSE-NEXT:    movaps %xmm0, %xmm141750; SSE-NEXT:    shufps {{.*#+}} xmm14 = xmm14[1,1],xmm0[1,1]1751; SSE-NEXT:    movaps %xmm12, %xmm151752; SSE-NEXT:    movaps %xmm12, %xmm131753; SSE-NEXT:    movaps %xmm12, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill1754; SSE-NEXT:    mulps %xmm14, %xmm151755; SSE-NEXT:    addps %xmm2, %xmm151756; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload1757; SSE-NEXT:    mulps %xmm8, %xmm11758; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm7 # 16-byte Reload1759; SSE-NEXT:    mulps %xmm7, %xmm141760; SSE-NEXT:    addps %xmm1, %xmm141761; SSE-NEXT:    movaps %xmm0, %xmm11762; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[2,2],xmm0[2,2]1763; SSE-NEXT:    movaps %xmm5, %xmm21764; SSE-NEXT:    mulps %xmm1, %xmm21765; SSE-NEXT:    addps %xmm14, %xmm21766; SSE-NEXT:    mulps %xmm9, %xmm11767; SSE-NEXT:    movaps %xmm9, %xmm111768; SSE-NEXT:    addps %xmm15, %xmm11769; SSE-NEXT:    shufps {{.*#+}} xmm0 = xmm0[3,3,3,3]1770; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm5 # 16-byte Reload1771; SSE-NEXT:    movaps %xmm5, %xmm141772; SSE-NEXT:    mulps %xmm0, %xmm141773; SSE-NEXT:    addps %xmm1, %xmm141774; SSE-NEXT:    mulps %xmm3, %xmm01775; SSE-NEXT:    movaps %xmm3, %xmm121776; SSE-NEXT:    addps %xmm2, %xmm01777; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm31778; SSE-NEXT:    movaps %xmm3, %xmm11779; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[0,0],xmm3[0,0]1780; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm151781; SSE-NEXT:    mulps %xmm1, %xmm151782; SSE-NEXT:    addps %xmm0, %xmm151783; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm01784; SSE-NEXT:    mulps %xmm0, %xmm11785; SSE-NEXT:    addps %xmm14, %xmm11786; SSE-NEXT:    movaps %xmm3, %xmm01787; SSE-NEXT:    shufps {{.*#+}} xmm0 = xmm0[1,1],xmm3[1,1]1788; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm141789; SSE-NEXT:    mulps %xmm0, %xmm141790; SSE-NEXT:    addps %xmm1, %xmm141791; SSE-NEXT:    mulps {{[0-9]+}}(%rsp), %xmm01792; SSE-NEXT:    addps %xmm15, %xmm01793; SSE-NEXT:    movaps %xmm3, %xmm11794; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[2,2],xmm3[2,2]1795; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm151796; SSE-NEXT:    mulps %xmm1, %xmm151797; SSE-NEXT:    addps %xmm0, %xmm151798; SSE-NEXT:    mulps {{[0-9]+}}(%rsp), %xmm11799; SSE-NEXT:    addps %xmm14, %xmm11800; SSE-NEXT:    shufps {{.*#+}} xmm3 = xmm3[3,3,3,3]1801; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm141802; SSE-NEXT:    mulps %xmm3, %xmm141803; SSE-NEXT:    addps %xmm1, %xmm141804; SSE-NEXT:    mulps {{[0-9]+}}(%rsp), %xmm31805; SSE-NEXT:    addps %xmm15, %xmm31806; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm01807; SSE-NEXT:    movaps %xmm0, %xmm11808; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[0,0],xmm0[0,0]1809; SSE-NEXT:    mulps %xmm1, %xmm61810; SSE-NEXT:    movaps %xmm0, %xmm151811; SSE-NEXT:    shufps {{.*#+}} xmm15 = xmm15[1,1],xmm0[1,1]1812; SSE-NEXT:    mulps %xmm15, %xmm131813; SSE-NEXT:    addps %xmm6, %xmm131814; SSE-NEXT:    mulps %xmm8, %xmm11815; SSE-NEXT:    mulps %xmm7, %xmm151816; SSE-NEXT:    addps %xmm1, %xmm151817; SSE-NEXT:    movaps %xmm0, %xmm11818; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[2,2],xmm0[2,2]1819; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload1820; SSE-NEXT:    movaps %xmm6, %xmm21821; SSE-NEXT:    mulps %xmm1, %xmm21822; SSE-NEXT:    addps %xmm15, %xmm21823; SSE-NEXT:    mulps %xmm9, %xmm11824; SSE-NEXT:    addps %xmm13, %xmm11825; SSE-NEXT:    shufps {{.*#+}} xmm0 = xmm0[3,3,3,3]1826; SSE-NEXT:    movaps %xmm5, %xmm91827; SSE-NEXT:    mulps %xmm0, %xmm91828; SSE-NEXT:    addps %xmm1, %xmm91829; SSE-NEXT:    mulps %xmm12, %xmm01830; SSE-NEXT:    movaps %xmm12, %xmm51831; SSE-NEXT:    addps %xmm2, %xmm01832; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm11833; SSE-NEXT:    movaps %xmm1, %xmm21834; SSE-NEXT:    shufps {{.*#+}} xmm2 = xmm2[0,0],xmm1[0,0]1835; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm151836; SSE-NEXT:    mulps %xmm2, %xmm151837; SSE-NEXT:    addps %xmm0, %xmm151838; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm01839; SSE-NEXT:    mulps %xmm0, %xmm21840; SSE-NEXT:    addps %xmm9, %xmm21841; SSE-NEXT:    movaps %xmm1, %xmm01842; SSE-NEXT:    shufps {{.*#+}} xmm0 = xmm0[1,1],xmm1[1,1]1843; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm91844; SSE-NEXT:    mulps %xmm0, %xmm91845; SSE-NEXT:    addps %xmm2, %xmm91846; SSE-NEXT:    mulps {{[0-9]+}}(%rsp), %xmm01847; SSE-NEXT:    addps %xmm15, %xmm01848; SSE-NEXT:    movaps %xmm1, %xmm21849; SSE-NEXT:    shufps {{.*#+}} xmm2 = xmm2[2,2],xmm1[2,2]1850; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm131851; SSE-NEXT:    mulps %xmm2, %xmm131852; SSE-NEXT:    addps %xmm0, %xmm131853; SSE-NEXT:    mulps {{[0-9]+}}(%rsp), %xmm21854; SSE-NEXT:    addps %xmm9, %xmm21855; SSE-NEXT:    shufps {{.*#+}} xmm1 = xmm1[3,3,3,3]1856; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm151857; SSE-NEXT:    mulps %xmm1, %xmm151858; SSE-NEXT:    addps %xmm2, %xmm151859; SSE-NEXT:    mulps {{[0-9]+}}(%rsp), %xmm11860; SSE-NEXT:    addps %xmm13, %xmm11861; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm01862; SSE-NEXT:    movaps %xmm0, %xmm21863; SSE-NEXT:    shufps {{.*#+}} xmm2 = xmm2[0,0],xmm0[0,0]1864; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload1865; SSE-NEXT:    mulps %xmm2, %xmm131866; SSE-NEXT:    mulps %xmm8, %xmm21867; SSE-NEXT:    movaps %xmm0, %xmm91868; SSE-NEXT:    shufps {{.*#+}} xmm9 = xmm9[1,1],xmm0[1,1]1869; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload1870; SSE-NEXT:    mulps %xmm9, %xmm81871; SSE-NEXT:    addps %xmm13, %xmm81872; SSE-NEXT:    mulps %xmm7, %xmm91873; SSE-NEXT:    addps %xmm2, %xmm91874; SSE-NEXT:    movaps %xmm0, %xmm21875; SSE-NEXT:    shufps {{.*#+}} xmm2 = xmm2[2,2],xmm0[2,2]1876; SSE-NEXT:    mulps %xmm2, %xmm61877; SSE-NEXT:    addps %xmm9, %xmm61878; SSE-NEXT:    mulps %xmm11, %xmm21879; SSE-NEXT:    addps %xmm8, %xmm21880; SSE-NEXT:    shufps {{.*#+}} xmm0 = xmm0[3,3,3,3]1881; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload1882; SSE-NEXT:    mulps %xmm0, %xmm91883; SSE-NEXT:    addps %xmm2, %xmm91884; SSE-NEXT:    movaps %xmm9, %xmm121885; SSE-NEXT:    mulps %xmm5, %xmm01886; SSE-NEXT:    addps %xmm6, %xmm01887; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm91888; SSE-NEXT:    movaps %xmm9, %xmm21889; SSE-NEXT:    shufps {{.*#+}} xmm2 = xmm2[0,0],xmm9[0,0]1890; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm131891; SSE-NEXT:    mulps %xmm2, %xmm131892; SSE-NEXT:    addps %xmm0, %xmm131893; SSE-NEXT:    mulps {{[0-9]+}}(%rsp), %xmm21894; SSE-NEXT:    addps %xmm12, %xmm21895; SSE-NEXT:    movaps %xmm9, %xmm01896; SSE-NEXT:    shufps {{.*#+}} xmm0 = xmm0[1,1],xmm9[1,1]1897; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm121898; SSE-NEXT:    mulps %xmm0, %xmm121899; SSE-NEXT:    addps %xmm2, %xmm121900; SSE-NEXT:    mulps {{[0-9]+}}(%rsp), %xmm01901; SSE-NEXT:    addps %xmm13, %xmm01902; SSE-NEXT:    movaps %xmm9, %xmm21903; SSE-NEXT:    shufps {{.*#+}} xmm2 = xmm2[2,2],xmm9[2,2]1904; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm51905; SSE-NEXT:    mulps %xmm2, %xmm51906; SSE-NEXT:    addps %xmm0, %xmm51907; SSE-NEXT:    mulps {{[0-9]+}}(%rsp), %xmm21908; SSE-NEXT:    addps %xmm12, %xmm21909; SSE-NEXT:    shufps {{.*#+}} xmm9 = xmm9[3,3,3,3]1910; SSE-NEXT:    movaps {{[0-9]+}}(%rsp), %xmm01911; SSE-NEXT:    mulps %xmm9, %xmm01912; SSE-NEXT:    addps %xmm2, %xmm01913; SSE-NEXT:    mulps {{[0-9]+}}(%rsp), %xmm91914; SSE-NEXT:    addps %xmm5, %xmm91915; SSE-NEXT:    movaps %xmm0, 240(%rdi)1916; SSE-NEXT:    movaps %xmm9, 224(%rdi)1917; SSE-NEXT:    movaps %xmm15, 208(%rdi)1918; SSE-NEXT:    movaps %xmm1, 192(%rdi)1919; SSE-NEXT:    movaps %xmm14, 176(%rdi)1920; SSE-NEXT:    movaps %xmm3, 160(%rdi)1921; SSE-NEXT:    movaps (%rsp), %xmm0 # 16-byte Reload1922; SSE-NEXT:    movaps %xmm0, 144(%rdi)1923; SSE-NEXT:    movaps %xmm4, 128(%rdi)1924; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1925; SSE-NEXT:    movaps %xmm0, 112(%rdi)1926; SSE-NEXT:    movaps %xmm10, 96(%rdi)1927; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1928; SSE-NEXT:    movaps %xmm0, 80(%rdi)1929; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1930; SSE-NEXT:    movaps %xmm0, 64(%rdi)1931; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1932; SSE-NEXT:    movaps %xmm0, 48(%rdi)1933; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1934; SSE-NEXT:    movaps %xmm0, 32(%rdi)1935; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1936; SSE-NEXT:    movaps %xmm0, 16(%rdi)1937; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload1938; SSE-NEXT:    movaps %xmm0, (%rdi)1939; SSE-NEXT:    addq $120, %rsp1940; SSE-NEXT:    retq1941;1942; AVX1OR2-LABEL: test_mul8x8_f32:1943; AVX1OR2:       # %bb.0: # %entry1944; AVX1OR2-NEXT:    pushq %rbp1945; AVX1OR2-NEXT:    movq %rsp, %rbp1946; AVX1OR2-NEXT:    andq $-32, %rsp1947; AVX1OR2-NEXT:    subq $32, %rsp1948; AVX1OR2-NEXT:    movq %rdi, %rax1949; AVX1OR2-NEXT:    vbroadcastss 16(%rbp), %ymm81950; AVX1OR2-NEXT:    vmulps %ymm0, %ymm8, %ymm81951; AVX1OR2-NEXT:    vbroadcastss 20(%rbp), %ymm91952; AVX1OR2-NEXT:    vmulps %ymm1, %ymm9, %ymm91953; AVX1OR2-NEXT:    vaddps %ymm9, %ymm8, %ymm81954; AVX1OR2-NEXT:    vbroadcastss 24(%rbp), %ymm91955; AVX1OR2-NEXT:    vmulps %ymm2, %ymm9, %ymm91956; AVX1OR2-NEXT:    vaddps %ymm9, %ymm8, %ymm81957; AVX1OR2-NEXT:    vbroadcastss 28(%rbp), %ymm91958; AVX1OR2-NEXT:    vmulps %ymm3, %ymm9, %ymm91959; AVX1OR2-NEXT:    vaddps %ymm9, %ymm8, %ymm81960; AVX1OR2-NEXT:    vbroadcastss 32(%rbp), %ymm91961; AVX1OR2-NEXT:    vmulps %ymm4, %ymm9, %ymm91962; AVX1OR2-NEXT:    vaddps %ymm9, %ymm8, %ymm81963; AVX1OR2-NEXT:    vbroadcastss 36(%rbp), %ymm91964; AVX1OR2-NEXT:    vmulps %ymm5, %ymm9, %ymm91965; AVX1OR2-NEXT:    vaddps %ymm9, %ymm8, %ymm81966; AVX1OR2-NEXT:    vbroadcastss 40(%rbp), %ymm91967; AVX1OR2-NEXT:    vmulps %ymm6, %ymm9, %ymm91968; AVX1OR2-NEXT:    vaddps %ymm9, %ymm8, %ymm81969; AVX1OR2-NEXT:    vbroadcastss 44(%rbp), %ymm91970; AVX1OR2-NEXT:    vmulps %ymm7, %ymm9, %ymm91971; AVX1OR2-NEXT:    vaddps %ymm9, %ymm8, %ymm81972; AVX1OR2-NEXT:    vbroadcastss 48(%rbp), %ymm91973; AVX1OR2-NEXT:    vmulps %ymm0, %ymm9, %ymm91974; AVX1OR2-NEXT:    vbroadcastss 52(%rbp), %ymm101975; AVX1OR2-NEXT:    vmulps %ymm1, %ymm10, %ymm101976; AVX1OR2-NEXT:    vaddps %ymm10, %ymm9, %ymm91977; AVX1OR2-NEXT:    vbroadcastss 56(%rbp), %ymm101978; AVX1OR2-NEXT:    vmulps %ymm2, %ymm10, %ymm101979; AVX1OR2-NEXT:    vaddps %ymm10, %ymm9, %ymm91980; AVX1OR2-NEXT:    vbroadcastss 60(%rbp), %ymm101981; AVX1OR2-NEXT:    vmulps %ymm3, %ymm10, %ymm101982; AVX1OR2-NEXT:    vaddps %ymm10, %ymm9, %ymm91983; AVX1OR2-NEXT:    vbroadcastss 64(%rbp), %ymm101984; AVX1OR2-NEXT:    vmulps %ymm4, %ymm10, %ymm101985; AVX1OR2-NEXT:    vaddps %ymm10, %ymm9, %ymm91986; AVX1OR2-NEXT:    vbroadcastss 68(%rbp), %ymm101987; AVX1OR2-NEXT:    vmulps %ymm5, %ymm10, %ymm101988; AVX1OR2-NEXT:    vaddps %ymm10, %ymm9, %ymm91989; AVX1OR2-NEXT:    vbroadcastss 72(%rbp), %ymm101990; AVX1OR2-NEXT:    vmulps %ymm6, %ymm10, %ymm101991; AVX1OR2-NEXT:    vaddps %ymm10, %ymm9, %ymm91992; AVX1OR2-NEXT:    vbroadcastss 76(%rbp), %ymm101993; AVX1OR2-NEXT:    vmulps %ymm7, %ymm10, %ymm101994; AVX1OR2-NEXT:    vaddps %ymm10, %ymm9, %ymm91995; AVX1OR2-NEXT:    vbroadcastss 80(%rbp), %ymm101996; AVX1OR2-NEXT:    vmulps %ymm0, %ymm10, %ymm101997; AVX1OR2-NEXT:    vbroadcastss 84(%rbp), %ymm111998; AVX1OR2-NEXT:    vmulps %ymm1, %ymm11, %ymm111999; AVX1OR2-NEXT:    vaddps %ymm11, %ymm10, %ymm102000; AVX1OR2-NEXT:    vbroadcastss 88(%rbp), %ymm112001; AVX1OR2-NEXT:    vmulps %ymm2, %ymm11, %ymm112002; AVX1OR2-NEXT:    vaddps %ymm11, %ymm10, %ymm102003; AVX1OR2-NEXT:    vbroadcastss 92(%rbp), %ymm112004; AVX1OR2-NEXT:    vmulps %ymm3, %ymm11, %ymm112005; AVX1OR2-NEXT:    vaddps %ymm11, %ymm10, %ymm102006; AVX1OR2-NEXT:    vbroadcastss 96(%rbp), %ymm112007; AVX1OR2-NEXT:    vmulps %ymm4, %ymm11, %ymm112008; AVX1OR2-NEXT:    vaddps %ymm11, %ymm10, %ymm102009; AVX1OR2-NEXT:    vbroadcastss 100(%rbp), %ymm112010; AVX1OR2-NEXT:    vmulps %ymm5, %ymm11, %ymm112011; AVX1OR2-NEXT:    vaddps %ymm11, %ymm10, %ymm102012; AVX1OR2-NEXT:    vbroadcastss 104(%rbp), %ymm112013; AVX1OR2-NEXT:    vmulps %ymm6, %ymm11, %ymm112014; AVX1OR2-NEXT:    vaddps %ymm11, %ymm10, %ymm102015; AVX1OR2-NEXT:    vbroadcastss 108(%rbp), %ymm112016; AVX1OR2-NEXT:    vmulps %ymm7, %ymm11, %ymm112017; AVX1OR2-NEXT:    vaddps %ymm11, %ymm10, %ymm102018; AVX1OR2-NEXT:    vbroadcastss 112(%rbp), %ymm112019; AVX1OR2-NEXT:    vmulps %ymm0, %ymm11, %ymm112020; AVX1OR2-NEXT:    vbroadcastss 116(%rbp), %ymm122021; AVX1OR2-NEXT:    vmulps %ymm1, %ymm12, %ymm122022; AVX1OR2-NEXT:    vaddps %ymm12, %ymm11, %ymm112023; AVX1OR2-NEXT:    vbroadcastss 120(%rbp), %ymm122024; AVX1OR2-NEXT:    vmulps %ymm2, %ymm12, %ymm122025; AVX1OR2-NEXT:    vaddps %ymm12, %ymm11, %ymm112026; AVX1OR2-NEXT:    vbroadcastss 124(%rbp), %ymm122027; AVX1OR2-NEXT:    vmulps %ymm3, %ymm12, %ymm122028; AVX1OR2-NEXT:    vaddps %ymm12, %ymm11, %ymm112029; AVX1OR2-NEXT:    vbroadcastss 128(%rbp), %ymm122030; AVX1OR2-NEXT:    vmulps %ymm4, %ymm12, %ymm122031; AVX1OR2-NEXT:    vaddps %ymm12, %ymm11, %ymm112032; AVX1OR2-NEXT:    vbroadcastss 132(%rbp), %ymm122033; AVX1OR2-NEXT:    vmulps %ymm5, %ymm12, %ymm122034; AVX1OR2-NEXT:    vaddps %ymm12, %ymm11, %ymm112035; AVX1OR2-NEXT:    vbroadcastss 136(%rbp), %ymm122036; AVX1OR2-NEXT:    vmulps %ymm6, %ymm12, %ymm122037; AVX1OR2-NEXT:    vaddps %ymm12, %ymm11, %ymm112038; AVX1OR2-NEXT:    vbroadcastss 140(%rbp), %ymm122039; AVX1OR2-NEXT:    vmulps %ymm7, %ymm12, %ymm122040; AVX1OR2-NEXT:    vaddps %ymm12, %ymm11, %ymm112041; AVX1OR2-NEXT:    vbroadcastss 144(%rbp), %ymm122042; AVX1OR2-NEXT:    vmulps %ymm0, %ymm12, %ymm122043; AVX1OR2-NEXT:    vbroadcastss 148(%rbp), %ymm132044; AVX1OR2-NEXT:    vmulps %ymm1, %ymm13, %ymm132045; AVX1OR2-NEXT:    vaddps %ymm13, %ymm12, %ymm122046; AVX1OR2-NEXT:    vbroadcastss 152(%rbp), %ymm132047; AVX1OR2-NEXT:    vmulps %ymm2, %ymm13, %ymm132048; AVX1OR2-NEXT:    vaddps %ymm13, %ymm12, %ymm122049; AVX1OR2-NEXT:    vbroadcastss 156(%rbp), %ymm132050; AVX1OR2-NEXT:    vmulps %ymm3, %ymm13, %ymm132051; AVX1OR2-NEXT:    vaddps %ymm13, %ymm12, %ymm122052; AVX1OR2-NEXT:    vbroadcastss 160(%rbp), %ymm132053; AVX1OR2-NEXT:    vmulps %ymm4, %ymm13, %ymm132054; AVX1OR2-NEXT:    vaddps %ymm13, %ymm12, %ymm122055; AVX1OR2-NEXT:    vbroadcastss 164(%rbp), %ymm132056; AVX1OR2-NEXT:    vmulps %ymm5, %ymm13, %ymm132057; AVX1OR2-NEXT:    vaddps %ymm13, %ymm12, %ymm122058; AVX1OR2-NEXT:    vbroadcastss 168(%rbp), %ymm132059; AVX1OR2-NEXT:    vmulps %ymm6, %ymm13, %ymm132060; AVX1OR2-NEXT:    vaddps %ymm13, %ymm12, %ymm122061; AVX1OR2-NEXT:    vbroadcastss 172(%rbp), %ymm132062; AVX1OR2-NEXT:    vmulps %ymm7, %ymm13, %ymm132063; AVX1OR2-NEXT:    vaddps %ymm13, %ymm12, %ymm122064; AVX1OR2-NEXT:    vbroadcastss 176(%rbp), %ymm132065; AVX1OR2-NEXT:    vmulps %ymm0, %ymm13, %ymm132066; AVX1OR2-NEXT:    vbroadcastss 180(%rbp), %ymm142067; AVX1OR2-NEXT:    vmulps %ymm1, %ymm14, %ymm142068; AVX1OR2-NEXT:    vaddps %ymm14, %ymm13, %ymm132069; AVX1OR2-NEXT:    vbroadcastss 184(%rbp), %ymm142070; AVX1OR2-NEXT:    vmulps %ymm2, %ymm14, %ymm142071; AVX1OR2-NEXT:    vaddps %ymm14, %ymm13, %ymm132072; AVX1OR2-NEXT:    vbroadcastss 188(%rbp), %ymm142073; AVX1OR2-NEXT:    vmulps %ymm3, %ymm14, %ymm142074; AVX1OR2-NEXT:    vaddps %ymm14, %ymm13, %ymm132075; AVX1OR2-NEXT:    vbroadcastss 192(%rbp), %ymm142076; AVX1OR2-NEXT:    vmulps %ymm4, %ymm14, %ymm142077; AVX1OR2-NEXT:    vaddps %ymm14, %ymm13, %ymm132078; AVX1OR2-NEXT:    vbroadcastss 196(%rbp), %ymm142079; AVX1OR2-NEXT:    vmulps %ymm5, %ymm14, %ymm142080; AVX1OR2-NEXT:    vaddps %ymm14, %ymm13, %ymm132081; AVX1OR2-NEXT:    vbroadcastss 200(%rbp), %ymm142082; AVX1OR2-NEXT:    vmulps %ymm6, %ymm14, %ymm142083; AVX1OR2-NEXT:    vaddps %ymm14, %ymm13, %ymm132084; AVX1OR2-NEXT:    vbroadcastss 204(%rbp), %ymm142085; AVX1OR2-NEXT:    vmulps %ymm7, %ymm14, %ymm142086; AVX1OR2-NEXT:    vaddps %ymm14, %ymm13, %ymm132087; AVX1OR2-NEXT:    vbroadcastss 208(%rbp), %ymm142088; AVX1OR2-NEXT:    vmulps %ymm0, %ymm14, %ymm142089; AVX1OR2-NEXT:    vbroadcastss 212(%rbp), %ymm152090; AVX1OR2-NEXT:    vmulps %ymm1, %ymm15, %ymm152091; AVX1OR2-NEXT:    vaddps %ymm15, %ymm14, %ymm142092; AVX1OR2-NEXT:    vbroadcastss 216(%rbp), %ymm152093; AVX1OR2-NEXT:    vmulps %ymm2, %ymm15, %ymm152094; AVX1OR2-NEXT:    vaddps %ymm15, %ymm14, %ymm142095; AVX1OR2-NEXT:    vbroadcastss 220(%rbp), %ymm152096; AVX1OR2-NEXT:    vmulps %ymm3, %ymm15, %ymm152097; AVX1OR2-NEXT:    vaddps %ymm15, %ymm14, %ymm142098; AVX1OR2-NEXT:    vbroadcastss 224(%rbp), %ymm152099; AVX1OR2-NEXT:    vmulps %ymm4, %ymm15, %ymm152100; AVX1OR2-NEXT:    vaddps %ymm15, %ymm14, %ymm142101; AVX1OR2-NEXT:    vbroadcastss 228(%rbp), %ymm152102; AVX1OR2-NEXT:    vmulps %ymm5, %ymm15, %ymm152103; AVX1OR2-NEXT:    vaddps %ymm15, %ymm14, %ymm142104; AVX1OR2-NEXT:    vbroadcastss 232(%rbp), %ymm152105; AVX1OR2-NEXT:    vmulps %ymm6, %ymm15, %ymm152106; AVX1OR2-NEXT:    vaddps %ymm15, %ymm14, %ymm142107; AVX1OR2-NEXT:    vbroadcastss 236(%rbp), %ymm152108; AVX1OR2-NEXT:    vmulps %ymm7, %ymm15, %ymm152109; AVX1OR2-NEXT:    vaddps %ymm15, %ymm14, %ymm142110; AVX1OR2-NEXT:    vbroadcastss 240(%rbp), %ymm152111; AVX1OR2-NEXT:    vmulps %ymm0, %ymm15, %ymm02112; AVX1OR2-NEXT:    vbroadcastss 244(%rbp), %ymm152113; AVX1OR2-NEXT:    vmulps %ymm1, %ymm15, %ymm12114; AVX1OR2-NEXT:    vaddps %ymm1, %ymm0, %ymm02115; AVX1OR2-NEXT:    vbroadcastss 248(%rbp), %ymm12116; AVX1OR2-NEXT:    vmulps %ymm1, %ymm2, %ymm12117; AVX1OR2-NEXT:    vaddps %ymm1, %ymm0, %ymm02118; AVX1OR2-NEXT:    vbroadcastss 252(%rbp), %ymm12119; AVX1OR2-NEXT:    vmulps %ymm1, %ymm3, %ymm12120; AVX1OR2-NEXT:    vaddps %ymm1, %ymm0, %ymm02121; AVX1OR2-NEXT:    vbroadcastss 256(%rbp), %ymm12122; AVX1OR2-NEXT:    vmulps %ymm1, %ymm4, %ymm12123; AVX1OR2-NEXT:    vaddps %ymm1, %ymm0, %ymm02124; AVX1OR2-NEXT:    vbroadcastss 260(%rbp), %ymm12125; AVX1OR2-NEXT:    vmulps %ymm1, %ymm5, %ymm12126; AVX1OR2-NEXT:    vaddps %ymm1, %ymm0, %ymm02127; AVX1OR2-NEXT:    vbroadcastss 264(%rbp), %ymm12128; AVX1OR2-NEXT:    vmulps %ymm1, %ymm6, %ymm12129; AVX1OR2-NEXT:    vaddps %ymm1, %ymm0, %ymm02130; AVX1OR2-NEXT:    vbroadcastss 268(%rbp), %ymm12131; AVX1OR2-NEXT:    vmulps %ymm1, %ymm7, %ymm12132; AVX1OR2-NEXT:    vaddps %ymm1, %ymm0, %ymm02133; AVX1OR2-NEXT:    vmovaps %ymm0, 224(%rdi)2134; AVX1OR2-NEXT:    vmovaps %ymm14, 192(%rdi)2135; AVX1OR2-NEXT:    vmovaps %ymm13, 160(%rdi)2136; AVX1OR2-NEXT:    vmovaps %ymm12, 128(%rdi)2137; AVX1OR2-NEXT:    vmovaps %ymm11, 96(%rdi)2138; AVX1OR2-NEXT:    vmovaps %ymm10, 64(%rdi)2139; AVX1OR2-NEXT:    vmovaps %ymm9, 32(%rdi)2140; AVX1OR2-NEXT:    vmovaps %ymm8, (%rdi)2141; AVX1OR2-NEXT:    movq %rbp, %rsp2142; AVX1OR2-NEXT:    popq %rbp2143; AVX1OR2-NEXT:    vzeroupper2144; AVX1OR2-NEXT:    retq2145;2146; AVX512-LABEL: test_mul8x8_f32:2147; AVX512:       # %bb.0: # %entry2148; AVX512-NEXT:    vshufps {{.*#+}} zmm12 = zmm4[1,1,1,1,5,5,5,5,9,9,9,9,13,13,13,13]2149; AVX512-NEXT:    vpermpd {{.*#+}} zmm9 = zmm12[0,1,0,1,4,5,4,5]2150; AVX512-NEXT:    vshuff64x2 {{.*#+}} zmm8 = zmm0[4,5,6,7,4,5,6,7]2151; AVX512-NEXT:    vmulps %zmm9, %zmm8, %zmm102152; AVX512-NEXT:    vshufps {{.*#+}} zmm11 = zmm4[0,0,0,0,4,4,4,4,8,8,8,8,12,12,12,12]2153; AVX512-NEXT:    vpermpd {{.*#+}} zmm13 = zmm11[0,1,0,1,4,5,4,5]2154; AVX512-NEXT:    vinsertf64x4 $1, %ymm0, %zmm0, %zmm92155; AVX512-NEXT:    vmulps %zmm13, %zmm9, %zmm02156; AVX512-NEXT:    vaddps %zmm10, %zmm0, %zmm02157; AVX512-NEXT:    vshufps {{.*#+}} zmm13 = zmm4[2,2,2,2,6,6,6,6,10,10,10,10,14,14,14,14]2158; AVX512-NEXT:    vpermpd {{.*#+}} zmm14 = zmm13[0,1,0,1,4,5,4,5]2159; AVX512-NEXT:    vinsertf64x4 $1, %ymm1, %zmm1, %zmm102160; AVX512-NEXT:    vmulps %zmm14, %zmm10, %zmm142161; AVX512-NEXT:    vaddps %zmm14, %zmm0, %zmm02162; AVX512-NEXT:    vshufps {{.*#+}} zmm14 = zmm4[3,3,3,3,7,7,7,7,11,11,11,11,15,15,15,15]2163; AVX512-NEXT:    vpermpd {{.*#+}} zmm15 = zmm14[0,1,0,1,4,5,4,5]2164; AVX512-NEXT:    vshuff64x2 {{.*#+}} zmm4 = zmm1[4,5,6,7,4,5,6,7]2165; AVX512-NEXT:    vmulps %zmm15, %zmm4, %zmm12166; AVX512-NEXT:    vaddps %zmm1, %zmm0, %zmm02167; AVX512-NEXT:    vpermpd {{.*#+}} zmm1 = zmm11[2,3,2,3,6,7,6,7]2168; AVX512-NEXT:    vinsertf64x4 $1, %ymm2, %zmm2, %zmm112169; AVX512-NEXT:    vmulps %zmm1, %zmm11, %zmm12170; AVX512-NEXT:    vaddps %zmm1, %zmm0, %zmm02171; AVX512-NEXT:    vpermpd {{.*#+}} zmm1 = zmm12[2,3,2,3,6,7,6,7]2172; AVX512-NEXT:    vshuff64x2 {{.*#+}} zmm12 = zmm2[4,5,6,7,4,5,6,7]2173; AVX512-NEXT:    vmulps %zmm1, %zmm12, %zmm12174; AVX512-NEXT:    vaddps %zmm1, %zmm0, %zmm02175; AVX512-NEXT:    vpermpd {{.*#+}} zmm1 = zmm13[2,3,2,3,6,7,6,7]2176; AVX512-NEXT:    vinsertf64x4 $1, %ymm3, %zmm3, %zmm132177; AVX512-NEXT:    vmulps %zmm1, %zmm13, %zmm12178; AVX512-NEXT:    vaddps %zmm1, %zmm0, %zmm02179; AVX512-NEXT:    vpermpd {{.*#+}} zmm1 = zmm14[2,3,2,3,6,7,6,7]2180; AVX512-NEXT:    vshuff64x2 {{.*#+}} zmm3 = zmm3[4,5,6,7,4,5,6,7]2181; AVX512-NEXT:    vmulps %zmm1, %zmm3, %zmm12182; AVX512-NEXT:    vaddps %zmm1, %zmm0, %zmm02183; AVX512-NEXT:    vshufps {{.*#+}} zmm1 = zmm5[1,1,1,1,5,5,5,5,9,9,9,9,13,13,13,13]2184; AVX512-NEXT:    vpermpd {{.*#+}} zmm2 = zmm1[0,1,0,1,4,5,4,5]2185; AVX512-NEXT:    vmulps %zmm2, %zmm8, %zmm22186; AVX512-NEXT:    vshufps {{.*#+}} zmm14 = zmm5[0,0,0,0,4,4,4,4,8,8,8,8,12,12,12,12]2187; AVX512-NEXT:    vpermpd {{.*#+}} zmm15 = zmm14[0,1,0,1,4,5,4,5]2188; AVX512-NEXT:    vmulps %zmm15, %zmm9, %zmm152189; AVX512-NEXT:    vaddps %zmm2, %zmm15, %zmm22190; AVX512-NEXT:    vshufps {{.*#+}} zmm15 = zmm5[2,2,2,2,6,6,6,6,10,10,10,10,14,14,14,14]2191; AVX512-NEXT:    vpermpd {{.*#+}} zmm16 = zmm15[0,1,0,1,4,5,4,5]2192; AVX512-NEXT:    vmulps %zmm16, %zmm10, %zmm162193; AVX512-NEXT:    vaddps %zmm16, %zmm2, %zmm22194; AVX512-NEXT:    vshufps {{.*#+}} zmm5 = zmm5[3,3,3,3,7,7,7,7,11,11,11,11,15,15,15,15]2195; AVX512-NEXT:    vpermpd {{.*#+}} zmm16 = zmm5[0,1,0,1,4,5,4,5]2196; AVX512-NEXT:    vmulps %zmm16, %zmm4, %zmm162197; AVX512-NEXT:    vaddps %zmm16, %zmm2, %zmm22198; AVX512-NEXT:    vpermpd {{.*#+}} zmm14 = zmm14[2,3,2,3,6,7,6,7]2199; AVX512-NEXT:    vmulps %zmm14, %zmm11, %zmm142200; AVX512-NEXT:    vaddps %zmm14, %zmm2, %zmm22201; AVX512-NEXT:    vpermpd {{.*#+}} zmm1 = zmm1[2,3,2,3,6,7,6,7]2202; AVX512-NEXT:    vmulps %zmm1, %zmm12, %zmm12203; AVX512-NEXT:    vaddps %zmm1, %zmm2, %zmm12204; AVX512-NEXT:    vpermpd {{.*#+}} zmm2 = zmm15[2,3,2,3,6,7,6,7]2205; AVX512-NEXT:    vmulps %zmm2, %zmm13, %zmm22206; AVX512-NEXT:    vaddps %zmm2, %zmm1, %zmm12207; AVX512-NEXT:    vpermpd {{.*#+}} zmm2 = zmm5[2,3,2,3,6,7,6,7]2208; AVX512-NEXT:    vmulps %zmm2, %zmm3, %zmm22209; AVX512-NEXT:    vaddps %zmm2, %zmm1, %zmm12210; AVX512-NEXT:    vshufps {{.*#+}} zmm2 = zmm6[1,1,1,1,5,5,5,5,9,9,9,9,13,13,13,13]2211; AVX512-NEXT:    vpermpd {{.*#+}} zmm5 = zmm2[0,1,0,1,4,5,4,5]2212; AVX512-NEXT:    vmulps %zmm5, %zmm8, %zmm52213; AVX512-NEXT:    vshufps {{.*#+}} zmm14 = zmm6[0,0,0,0,4,4,4,4,8,8,8,8,12,12,12,12]2214; AVX512-NEXT:    vpermpd {{.*#+}} zmm15 = zmm14[0,1,0,1,4,5,4,5]2215; AVX512-NEXT:    vmulps %zmm15, %zmm9, %zmm152216; AVX512-NEXT:    vaddps %zmm5, %zmm15, %zmm52217; AVX512-NEXT:    vshufps {{.*#+}} zmm15 = zmm6[2,2,2,2,6,6,6,6,10,10,10,10,14,14,14,14]2218; AVX512-NEXT:    vpermpd {{.*#+}} zmm16 = zmm15[0,1,0,1,4,5,4,5]2219; AVX512-NEXT:    vmulps %zmm16, %zmm10, %zmm162220; AVX512-NEXT:    vaddps %zmm16, %zmm5, %zmm52221; AVX512-NEXT:    vshufps {{.*#+}} zmm6 = zmm6[3,3,3,3,7,7,7,7,11,11,11,11,15,15,15,15]2222; AVX512-NEXT:    vpermpd {{.*#+}} zmm16 = zmm6[0,1,0,1,4,5,4,5]2223; AVX512-NEXT:    vmulps %zmm16, %zmm4, %zmm162224; AVX512-NEXT:    vaddps %zmm16, %zmm5, %zmm52225; AVX512-NEXT:    vpermpd {{.*#+}} zmm14 = zmm14[2,3,2,3,6,7,6,7]2226; AVX512-NEXT:    vmulps %zmm14, %zmm11, %zmm142227; AVX512-NEXT:    vaddps %zmm14, %zmm5, %zmm52228; AVX512-NEXT:    vpermpd {{.*#+}} zmm2 = zmm2[2,3,2,3,6,7,6,7]2229; AVX512-NEXT:    vmulps %zmm2, %zmm12, %zmm22230; AVX512-NEXT:    vaddps %zmm2, %zmm5, %zmm22231; AVX512-NEXT:    vpermpd {{.*#+}} zmm5 = zmm15[2,3,2,3,6,7,6,7]2232; AVX512-NEXT:    vmulps %zmm5, %zmm13, %zmm52233; AVX512-NEXT:    vaddps %zmm5, %zmm2, %zmm22234; AVX512-NEXT:    vpermpd {{.*#+}} zmm5 = zmm6[2,3,2,3,6,7,6,7]2235; AVX512-NEXT:    vmulps %zmm5, %zmm3, %zmm52236; AVX512-NEXT:    vaddps %zmm5, %zmm2, %zmm22237; AVX512-NEXT:    vshufps {{.*#+}} zmm5 = zmm7[1,1,1,1,5,5,5,5,9,9,9,9,13,13,13,13]2238; AVX512-NEXT:    vpermpd {{.*#+}} zmm6 = zmm5[0,1,0,1,4,5,4,5]2239; AVX512-NEXT:    vmulps %zmm6, %zmm8, %zmm62240; AVX512-NEXT:    vshufps {{.*#+}} zmm8 = zmm7[0,0,0,0,4,4,4,4,8,8,8,8,12,12,12,12]2241; AVX512-NEXT:    vpermpd {{.*#+}} zmm14 = zmm8[0,1,0,1,4,5,4,5]2242; AVX512-NEXT:    vmulps %zmm14, %zmm9, %zmm92243; AVX512-NEXT:    vaddps %zmm6, %zmm9, %zmm62244; AVX512-NEXT:    vshufps {{.*#+}} zmm9 = zmm7[2,2,2,2,6,6,6,6,10,10,10,10,14,14,14,14]2245; AVX512-NEXT:    vpermpd {{.*#+}} zmm14 = zmm9[0,1,0,1,4,5,4,5]2246; AVX512-NEXT:    vmulps %zmm14, %zmm10, %zmm102247; AVX512-NEXT:    vaddps %zmm10, %zmm6, %zmm62248; AVX512-NEXT:    vshufps {{.*#+}} zmm7 = zmm7[3,3,3,3,7,7,7,7,11,11,11,11,15,15,15,15]2249; AVX512-NEXT:    vpermpd {{.*#+}} zmm10 = zmm7[0,1,0,1,4,5,4,5]2250; AVX512-NEXT:    vmulps %zmm10, %zmm4, %zmm42251; AVX512-NEXT:    vaddps %zmm4, %zmm6, %zmm42252; AVX512-NEXT:    vpermpd {{.*#+}} zmm6 = zmm8[2,3,2,3,6,7,6,7]2253; AVX512-NEXT:    vmulps %zmm6, %zmm11, %zmm62254; AVX512-NEXT:    vaddps %zmm6, %zmm4, %zmm42255; AVX512-NEXT:    vpermpd {{.*#+}} zmm5 = zmm5[2,3,2,3,6,7,6,7]2256; AVX512-NEXT:    vmulps %zmm5, %zmm12, %zmm52257; AVX512-NEXT:    vaddps %zmm5, %zmm4, %zmm42258; AVX512-NEXT:    vpermpd {{.*#+}} zmm5 = zmm9[2,3,2,3,6,7,6,7]2259; AVX512-NEXT:    vmulps %zmm5, %zmm13, %zmm52260; AVX512-NEXT:    vaddps %zmm5, %zmm4, %zmm42261; AVX512-NEXT:    vpermpd {{.*#+}} zmm5 = zmm7[2,3,2,3,6,7,6,7]2262; AVX512-NEXT:    vmulps %zmm5, %zmm3, %zmm32263; AVX512-NEXT:    vaddps %zmm3, %zmm4, %zmm32264; AVX512-NEXT:    retq2265entry:2266  %split = shufflevector <64 x float> %a0, <64 x float> poison, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>2267  %split1 = shufflevector <64 x float> %a0, <64 x float> poison, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>2268  %split2 = shufflevector <64 x float> %a0, <64 x float> poison, <8 x i32> <i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23>2269  %split3 = shufflevector <64 x float> %a0, <64 x float> poison, <8 x i32> <i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>2270  %split4 = shufflevector <64 x float> %a0, <64 x float> poison, <8 x i32> <i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39>2271  %split5 = shufflevector <64 x float> %a0, <64 x float> poison, <8 x i32> <i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47>2272  %split6 = shufflevector <64 x float> %a0, <64 x float> poison, <8 x i32> <i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55>2273  %split7 = shufflevector <64 x float> %a0, <64 x float> poison, <8 x i32> <i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63>2274  %splat.splat = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> zeroinitializer2275  %0 = fmul <8 x float> %split, %splat.splat2276  %splat.splat18 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>2277  %1 = fmul <8 x float> %split1, %splat.splat182278  %2 = fadd <8 x float> %0, %12279  %splat.splat21 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2>2280  %3 = fmul <8 x float> %split2, %splat.splat212281  %4 = fadd <8 x float> %2, %32282  %splat.splat24 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3>2283  %5 = fmul <8 x float> %split3, %splat.splat242284  %6 = fadd <8 x float> %4, %52285  %splat.splat27 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4>2286  %7 = fmul <8 x float> %split4, %splat.splat272287  %8 = fadd <8 x float> %6, %72288  %splat.splat30 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5>2289  %9 = fmul <8 x float> %split5, %splat.splat302290  %10 = fadd <8 x float> %8, %92291  %splat.splat33 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6>2292  %11 = fmul <8 x float> %split6, %splat.splat332293  %12 = fadd <8 x float> %10, %112294  %splat.splat36 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7>2295  %13 = fmul <8 x float> %split7, %splat.splat362296  %14 = fadd <8 x float> %12, %132297  %splat.splat39 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8>2298  %15 = fmul <8 x float> %split, %splat.splat392299  %splat.splat42 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 9, i32 9, i32 9, i32 9, i32 9, i32 9, i32 9, i32 9>2300  %16 = fmul <8 x float> %split1, %splat.splat422301  %17 = fadd <8 x float> %15, %162302  %splat.splat45 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10>2303  %18 = fmul <8 x float> %split2, %splat.splat452304  %19 = fadd <8 x float> %17, %182305  %splat.splat48 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 11, i32 11, i32 11, i32 11, i32 11, i32 11, i32 11, i32 11>2306  %20 = fmul <8 x float> %split3, %splat.splat482307  %21 = fadd <8 x float> %19, %202308  %splat.splat51 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12>2309  %22 = fmul <8 x float> %split4, %splat.splat512310  %23 = fadd <8 x float> %21, %222311  %splat.splat54 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 13, i32 13, i32 13, i32 13, i32 13, i32 13, i32 13, i32 13>2312  %24 = fmul <8 x float> %split5, %splat.splat542313  %25 = fadd <8 x float> %23, %242314  %splat.splat57 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 14, i32 14, i32 14, i32 14, i32 14, i32 14, i32 14, i32 14>2315  %26 = fmul <8 x float> %split6, %splat.splat572316  %27 = fadd <8 x float> %25, %262317  %splat.splat60 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15>2318  %28 = fmul <8 x float> %split7, %splat.splat602319  %29 = fadd <8 x float> %27, %282320  %splat.splat63 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16>2321  %30 = fmul <8 x float> %split, %splat.splat632322  %splat.splat66 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 17, i32 17, i32 17, i32 17, i32 17, i32 17, i32 17, i32 17>2323  %31 = fmul <8 x float> %split1, %splat.splat662324  %32 = fadd <8 x float> %30, %312325  %splat.splat69 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 18, i32 18, i32 18, i32 18, i32 18, i32 18, i32 18, i32 18>2326  %33 = fmul <8 x float> %split2, %splat.splat692327  %34 = fadd <8 x float> %32, %332328  %splat.splat72 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 19, i32 19, i32 19, i32 19, i32 19, i32 19, i32 19, i32 19>2329  %35 = fmul <8 x float> %split3, %splat.splat722330  %36 = fadd <8 x float> %34, %352331  %splat.splat75 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 20, i32 20, i32 20, i32 20, i32 20, i32 20, i32 20, i32 20>2332  %37 = fmul <8 x float> %split4, %splat.splat752333  %38 = fadd <8 x float> %36, %372334  %splat.splat78 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 21, i32 21, i32 21, i32 21, i32 21, i32 21, i32 21, i32 21>2335  %39 = fmul <8 x float> %split5, %splat.splat782336  %40 = fadd <8 x float> %38, %392337  %splat.splat81 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 22, i32 22, i32 22, i32 22, i32 22, i32 22, i32 22, i32 22>2338  %41 = fmul <8 x float> %split6, %splat.splat812339  %42 = fadd <8 x float> %40, %412340  %splat.splat84 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 23, i32 23, i32 23, i32 23, i32 23, i32 23, i32 23, i32 23>2341  %43 = fmul <8 x float> %split7, %splat.splat842342  %44 = fadd <8 x float> %42, %432343  %splat.splat87 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24>2344  %45 = fmul <8 x float> %split, %splat.splat872345  %splat.splat90 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25>2346  %46 = fmul <8 x float> %split1, %splat.splat902347  %47 = fadd <8 x float> %45, %462348  %splat.splat93 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 26, i32 26, i32 26, i32 26, i32 26, i32 26, i32 26, i32 26>2349  %48 = fmul <8 x float> %split2, %splat.splat932350  %49 = fadd <8 x float> %47, %482351  %splat.splat96 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 27, i32 27, i32 27, i32 27, i32 27, i32 27, i32 27, i32 27>2352  %50 = fmul <8 x float> %split3, %splat.splat962353  %51 = fadd <8 x float> %49, %502354  %splat.splat99 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 28, i32 28, i32 28, i32 28, i32 28, i32 28, i32 28, i32 28>2355  %52 = fmul <8 x float> %split4, %splat.splat992356  %53 = fadd <8 x float> %51, %522357  %splat.splat102 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 29, i32 29, i32 29, i32 29, i32 29, i32 29, i32 29, i32 29>2358  %54 = fmul <8 x float> %split5, %splat.splat1022359  %55 = fadd <8 x float> %53, %542360  %splat.splat105 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 30, i32 30, i32 30, i32 30, i32 30, i32 30, i32 30, i32 30>2361  %56 = fmul <8 x float> %split6, %splat.splat1052362  %57 = fadd <8 x float> %55, %562363  %splat.splat108 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31>2364  %58 = fmul <8 x float> %split7, %splat.splat1082365  %59 = fadd <8 x float> %57, %582366  %splat.splat111 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32>2367  %60 = fmul <8 x float> %split, %splat.splat1112368  %splat.splat114 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 33, i32 33, i32 33, i32 33, i32 33, i32 33, i32 33, i32 33>2369  %61 = fmul <8 x float> %split1, %splat.splat1142370  %62 = fadd <8 x float> %60, %612371  %splat.splat117 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 34, i32 34, i32 34, i32 34, i32 34, i32 34, i32 34, i32 34>2372  %63 = fmul <8 x float> %split2, %splat.splat1172373  %64 = fadd <8 x float> %62, %632374  %splat.splat120 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 35, i32 35, i32 35, i32 35, i32 35, i32 35, i32 35, i32 35>2375  %65 = fmul <8 x float> %split3, %splat.splat1202376  %66 = fadd <8 x float> %64, %652377  %splat.splat123 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 36, i32 36, i32 36, i32 36, i32 36, i32 36, i32 36, i32 36>2378  %67 = fmul <8 x float> %split4, %splat.splat1232379  %68 = fadd <8 x float> %66, %672380  %splat.splat126 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37>2381  %69 = fmul <8 x float> %split5, %splat.splat1262382  %70 = fadd <8 x float> %68, %692383  %splat.splat129 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 38, i32 38, i32 38, i32 38, i32 38, i32 38, i32 38, i32 38>2384  %71 = fmul <8 x float> %split6, %splat.splat1292385  %72 = fadd <8 x float> %70, %712386  %splat.splat132 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 39, i32 39, i32 39, i32 39, i32 39, i32 39, i32 39, i32 39>2387  %73 = fmul <8 x float> %split7, %splat.splat1322388  %74 = fadd <8 x float> %72, %732389  %splat.splat135 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 40, i32 40, i32 40, i32 40, i32 40, i32 40, i32 40, i32 40>2390  %75 = fmul <8 x float> %split, %splat.splat1352391  %splat.splat138 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 41, i32 41, i32 41, i32 41, i32 41, i32 41, i32 41, i32 41>2392  %76 = fmul <8 x float> %split1, %splat.splat1382393  %77 = fadd <8 x float> %75, %762394  %splat.splat141 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 42, i32 42, i32 42, i32 42, i32 42, i32 42, i32 42, i32 42>2395  %78 = fmul <8 x float> %split2, %splat.splat1412396  %79 = fadd <8 x float> %77, %782397  %splat.splat144 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 43, i32 43, i32 43, i32 43, i32 43, i32 43, i32 43, i32 43>2398  %80 = fmul <8 x float> %split3, %splat.splat1442399  %81 = fadd <8 x float> %79, %802400  %splat.splat147 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 44, i32 44, i32 44, i32 44, i32 44, i32 44, i32 44, i32 44>2401  %82 = fmul <8 x float> %split4, %splat.splat1472402  %83 = fadd <8 x float> %81, %822403  %splat.splat150 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 45, i32 45, i32 45, i32 45, i32 45, i32 45, i32 45, i32 45>2404  %84 = fmul <8 x float> %split5, %splat.splat1502405  %85 = fadd <8 x float> %83, %842406  %splat.splat153 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 46, i32 46, i32 46, i32 46, i32 46, i32 46, i32 46, i32 46>2407  %86 = fmul <8 x float> %split6, %splat.splat1532408  %87 = fadd <8 x float> %85, %862409  %splat.splat156 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 47, i32 47, i32 47, i32 47, i32 47, i32 47, i32 47, i32 47>2410  %88 = fmul <8 x float> %split7, %splat.splat1562411  %89 = fadd <8 x float> %87, %882412  %splat.splat159 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 48, i32 48, i32 48, i32 48, i32 48, i32 48, i32 48, i32 48>2413  %90 = fmul <8 x float> %split, %splat.splat1592414  %splat.splat162 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 49, i32 49, i32 49, i32 49, i32 49, i32 49, i32 49, i32 49>2415  %91 = fmul <8 x float> %split1, %splat.splat1622416  %92 = fadd <8 x float> %90, %912417  %splat.splat165 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 50, i32 50, i32 50, i32 50, i32 50, i32 50, i32 50, i32 50>2418  %93 = fmul <8 x float> %split2, %splat.splat1652419  %94 = fadd <8 x float> %92, %932420  %splat.splat168 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 51, i32 51, i32 51, i32 51, i32 51, i32 51, i32 51, i32 51>2421  %95 = fmul <8 x float> %split3, %splat.splat1682422  %96 = fadd <8 x float> %94, %952423  %splat.splat171 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 52, i32 52, i32 52, i32 52, i32 52, i32 52, i32 52, i32 52>2424  %97 = fmul <8 x float> %split4, %splat.splat1712425  %98 = fadd <8 x float> %96, %972426  %splat.splat174 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 53, i32 53, i32 53, i32 53, i32 53, i32 53, i32 53, i32 53>2427  %99 = fmul <8 x float> %split5, %splat.splat1742428  %100 = fadd <8 x float> %98, %992429  %splat.splat177 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 54, i32 54, i32 54, i32 54, i32 54, i32 54, i32 54, i32 54>2430  %101 = fmul <8 x float> %split6, %splat.splat1772431  %102 = fadd <8 x float> %100, %1012432  %splat.splat180 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 55, i32 55, i32 55, i32 55, i32 55, i32 55, i32 55, i32 55>2433  %103 = fmul <8 x float> %split7, %splat.splat1802434  %104 = fadd <8 x float> %102, %1032435  %splat.splat183 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 56, i32 56, i32 56, i32 56, i32 56, i32 56, i32 56, i32 56>2436  %105 = fmul <8 x float> %split, %splat.splat1832437  %splat.splat186 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 57, i32 57, i32 57, i32 57, i32 57, i32 57, i32 57, i32 57>2438  %106 = fmul <8 x float> %split1, %splat.splat1862439  %107 = fadd <8 x float> %105, %1062440  %splat.splat189 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 58, i32 58, i32 58, i32 58, i32 58, i32 58, i32 58, i32 58>2441  %108 = fmul <8 x float> %split2, %splat.splat1892442  %109 = fadd <8 x float> %107, %1082443  %splat.splat192 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 59, i32 59, i32 59, i32 59, i32 59, i32 59, i32 59, i32 59>2444  %110 = fmul <8 x float> %split3, %splat.splat1922445  %111 = fadd <8 x float> %109, %1102446  %splat.splat195 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 60, i32 60, i32 60, i32 60, i32 60, i32 60, i32 60, i32 60>2447  %112 = fmul <8 x float> %split4, %splat.splat1952448  %113 = fadd <8 x float> %111, %1122449  %splat.splat198 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 61, i32 61, i32 61, i32 61, i32 61, i32 61, i32 61, i32 61>2450  %114 = fmul <8 x float> %split5, %splat.splat1982451  %115 = fadd <8 x float> %113, %1142452  %splat.splat201 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 62, i32 62, i32 62, i32 62, i32 62, i32 62, i32 62, i32 62>2453  %116 = fmul <8 x float> %split6, %splat.splat2012454  %117 = fadd <8 x float> %115, %1162455  %splat.splat204 = shufflevector <64 x float> %a1, <64 x float> undef, <8 x i32> <i32 63, i32 63, i32 63, i32 63, i32 63, i32 63, i32 63, i32 63>2456  %118 = fmul <8 x float> %split7, %splat.splat2042457  %119 = fadd <8 x float> %117, %1182458  %120 = shufflevector <8 x float> %14, <8 x float> %29, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>2459  %121 = shufflevector <8 x float> %44, <8 x float> %59, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>2460  %122 = shufflevector <8 x float> %74, <8 x float> %89, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>2461  %123 = shufflevector <8 x float> %104, <8 x float> %119, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>2462  %124 = shufflevector <16 x float> %120, <16 x float> %121, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>2463  %125 = shufflevector <16 x float> %122, <16 x float> %123, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>2464  %126 = shufflevector <32 x float> %124, <32 x float> %125, <64 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63>2465  ret <64 x float> %1262466}2467 2468define <64 x double> @test_mul8x8_f64(<64 x double> %a0, <64 x double> %a1) nounwind {2469; SSE-LABEL: test_mul8x8_f64:2470; SSE:       # %bb.0: # %entry2471; SSE-NEXT:    subq $328, %rsp # imm = 0x1482472; SSE-NEXT:    movapd %xmm7, %xmm152473; SSE-NEXT:    movapd %xmm5, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2474; SSE-NEXT:    movapd %xmm4, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2475; SSE-NEXT:    movapd %xmm3, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2476; SSE-NEXT:    movapd %xmm2, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2477; SSE-NEXT:    movapd %xmm1, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2478; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2479; SSE-NEXT:    movq %rdi, %rax2480; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm142481; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm112482; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm132483; SSE-NEXT:    movapd %xmm13, %xmm122484; SSE-NEXT:    unpcklpd {{.*#+}} xmm12 = xmm12[0],xmm13[0]2485; SSE-NEXT:    movapd %xmm3, %xmm102486; SSE-NEXT:    mulpd %xmm12, %xmm102487; SSE-NEXT:    movapd %xmm2, %xmm82488; SSE-NEXT:    mulpd %xmm12, %xmm82489; SSE-NEXT:    movapd %xmm1, %xmm92490; SSE-NEXT:    mulpd %xmm12, %xmm92491; SSE-NEXT:    mulpd %xmm0, %xmm122492; SSE-NEXT:    unpckhpd {{.*#+}} xmm13 = xmm13[1,1]2493; SSE-NEXT:    movapd %xmm7, %xmm22494; SSE-NEXT:    mulpd %xmm13, %xmm22495; SSE-NEXT:    addpd %xmm10, %xmm22496; SSE-NEXT:    movapd %xmm6, %xmm72497; SSE-NEXT:    movapd %xmm6, %xmm102498; SSE-NEXT:    mulpd %xmm13, %xmm72499; SSE-NEXT:    addpd %xmm8, %xmm72500; SSE-NEXT:    movapd %xmm5, %xmm82501; SSE-NEXT:    mulpd %xmm13, %xmm82502; SSE-NEXT:    addpd %xmm9, %xmm82503; SSE-NEXT:    mulpd %xmm4, %xmm132504; SSE-NEXT:    addpd %xmm12, %xmm132505; SSE-NEXT:    movapd %xmm11, %xmm62506; SSE-NEXT:    unpcklpd {{.*#+}} xmm6 = xmm6[0],xmm11[0]2507; SSE-NEXT:    movapd %xmm14, %xmm12508; SSE-NEXT:    mulpd %xmm6, %xmm12509; SSE-NEXT:    addpd %xmm13, %xmm12510; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm32511; SSE-NEXT:    mulpd %xmm6, %xmm32512; SSE-NEXT:    addpd %xmm8, %xmm32513; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm52514; SSE-NEXT:    mulpd %xmm6, %xmm52515; SSE-NEXT:    addpd %xmm7, %xmm52516; SSE-NEXT:    mulpd {{[0-9]+}}(%rsp), %xmm62517; SSE-NEXT:    addpd %xmm2, %xmm62518; SSE-NEXT:    unpckhpd {{.*#+}} xmm11 = xmm11[1,1]2519; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm22520; SSE-NEXT:    mulpd %xmm11, %xmm22521; SSE-NEXT:    addpd %xmm6, %xmm22522; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm42523; SSE-NEXT:    mulpd %xmm11, %xmm42524; SSE-NEXT:    addpd %xmm5, %xmm42525; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm52526; SSE-NEXT:    mulpd %xmm11, %xmm52527; SSE-NEXT:    addpd %xmm3, %xmm52528; SSE-NEXT:    mulpd {{[0-9]+}}(%rsp), %xmm112529; SSE-NEXT:    addpd %xmm1, %xmm112530; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm12531; SSE-NEXT:    movapd %xmm1, %xmm62532; SSE-NEXT:    unpcklpd {{.*#+}} xmm6 = xmm6[0],xmm1[0]2533; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm32534; SSE-NEXT:    mulpd %xmm6, %xmm32535; SSE-NEXT:    addpd %xmm11, %xmm32536; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm72537; SSE-NEXT:    mulpd %xmm6, %xmm72538; SSE-NEXT:    addpd %xmm5, %xmm72539; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm52540; SSE-NEXT:    mulpd %xmm6, %xmm52541; SSE-NEXT:    addpd %xmm4, %xmm52542; SSE-NEXT:    mulpd {{[0-9]+}}(%rsp), %xmm62543; SSE-NEXT:    addpd %xmm2, %xmm62544; SSE-NEXT:    unpckhpd {{.*#+}} xmm1 = xmm1[1,1]2545; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm02546; SSE-NEXT:    mulpd %xmm1, %xmm02547; SSE-NEXT:    addpd %xmm6, %xmm02548; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm42549; SSE-NEXT:    mulpd %xmm1, %xmm42550; SSE-NEXT:    addpd %xmm5, %xmm42551; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm52552; SSE-NEXT:    mulpd %xmm1, %xmm52553; SSE-NEXT:    addpd %xmm7, %xmm52554; SSE-NEXT:    mulpd {{[0-9]+}}(%rsp), %xmm12555; SSE-NEXT:    addpd %xmm3, %xmm12556; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm62557; SSE-NEXT:    movapd %xmm6, %xmm32558; SSE-NEXT:    unpcklpd {{.*#+}} xmm3 = xmm3[0],xmm6[0]2559; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm22560; SSE-NEXT:    mulpd %xmm3, %xmm22561; SSE-NEXT:    addpd %xmm1, %xmm22562; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm12563; SSE-NEXT:    mulpd %xmm3, %xmm12564; SSE-NEXT:    addpd %xmm5, %xmm12565; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm52566; SSE-NEXT:    mulpd %xmm3, %xmm52567; SSE-NEXT:    addpd %xmm4, %xmm52568; SSE-NEXT:    mulpd {{[0-9]+}}(%rsp), %xmm32569; SSE-NEXT:    addpd %xmm0, %xmm32570; SSE-NEXT:    unpckhpd {{.*#+}} xmm6 = xmm6[1,1]2571; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm02572; SSE-NEXT:    mulpd %xmm6, %xmm02573; SSE-NEXT:    addpd %xmm3, %xmm02574; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2575; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm02576; SSE-NEXT:    mulpd %xmm6, %xmm02577; SSE-NEXT:    addpd %xmm5, %xmm02578; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2579; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm02580; SSE-NEXT:    mulpd %xmm6, %xmm02581; SSE-NEXT:    addpd %xmm1, %xmm02582; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2583; SSE-NEXT:    mulpd {{[0-9]+}}(%rsp), %xmm62584; SSE-NEXT:    addpd %xmm2, %xmm62585; SSE-NEXT:    movapd %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2586; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm12587; SSE-NEXT:    movapd %xmm1, %xmm02588; SSE-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm1[0]2589; SSE-NEXT:    movapd {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload2590; SSE-NEXT:    movapd %xmm11, %xmm32591; SSE-NEXT:    mulpd %xmm0, %xmm32592; SSE-NEXT:    unpckhpd {{.*#+}} xmm1 = xmm1[1,1]2593; SSE-NEXT:    movapd %xmm15, %xmm82594; SSE-NEXT:    movapd %xmm15, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2595; SSE-NEXT:    movapd %xmm15, %xmm22596; SSE-NEXT:    mulpd %xmm1, %xmm22597; SSE-NEXT:    addpd %xmm3, %xmm22598; SSE-NEXT:    movapd {{[-0-9]+}}(%r{{[sb]}}p), %xmm9 # 16-byte Reload2599; SSE-NEXT:    movapd %xmm9, %xmm32600; SSE-NEXT:    mulpd %xmm0, %xmm32601; SSE-NEXT:    movapd %xmm10, %xmm152602; SSE-NEXT:    movapd %xmm10, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2603; SSE-NEXT:    movapd %xmm10, %xmm42604; SSE-NEXT:    mulpd %xmm1, %xmm42605; SSE-NEXT:    addpd %xmm3, %xmm42606; SSE-NEXT:    movapd {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload2607; SSE-NEXT:    movapd %xmm13, %xmm32608; SSE-NEXT:    mulpd %xmm0, %xmm32609; SSE-NEXT:    movapd {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload2610; SSE-NEXT:    movapd %xmm10, %xmm52611; SSE-NEXT:    mulpd %xmm1, %xmm52612; SSE-NEXT:    addpd %xmm3, %xmm52613; SSE-NEXT:    movapd {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload2614; SSE-NEXT:    mulpd %xmm12, %xmm02615; SSE-NEXT:    movapd {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload2616; SSE-NEXT:    mulpd %xmm14, %xmm12617; SSE-NEXT:    addpd %xmm0, %xmm12618; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm02619; SSE-NEXT:    movapd %xmm0, %xmm62620; SSE-NEXT:    unpcklpd {{.*#+}} xmm6 = xmm6[0],xmm0[0]2621; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm32622; SSE-NEXT:    mulpd %xmm6, %xmm32623; SSE-NEXT:    addpd %xmm1, %xmm32624; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm12625; SSE-NEXT:    mulpd %xmm6, %xmm12626; SSE-NEXT:    addpd %xmm5, %xmm12627; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm52628; SSE-NEXT:    mulpd %xmm6, %xmm52629; SSE-NEXT:    addpd %xmm4, %xmm52630; SSE-NEXT:    mulpd {{[0-9]+}}(%rsp), %xmm62631; SSE-NEXT:    addpd %xmm2, %xmm62632; SSE-NEXT:    unpckhpd {{.*#+}} xmm0 = xmm0[1,1]2633; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm22634; SSE-NEXT:    mulpd %xmm0, %xmm22635; SSE-NEXT:    addpd %xmm6, %xmm22636; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm42637; SSE-NEXT:    mulpd %xmm0, %xmm42638; SSE-NEXT:    addpd %xmm5, %xmm42639; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm52640; SSE-NEXT:    mulpd %xmm0, %xmm52641; SSE-NEXT:    addpd %xmm1, %xmm52642; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm12643; SSE-NEXT:    mulpd %xmm1, %xmm02644; SSE-NEXT:    addpd %xmm3, %xmm02645; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm12646; SSE-NEXT:    movapd %xmm1, %xmm62647; SSE-NEXT:    unpcklpd {{.*#+}} xmm6 = xmm6[0],xmm1[0]2648; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm32649; SSE-NEXT:    mulpd %xmm6, %xmm32650; SSE-NEXT:    addpd %xmm0, %xmm32651; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm72652; SSE-NEXT:    mulpd %xmm6, %xmm72653; SSE-NEXT:    addpd %xmm5, %xmm72654; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm52655; SSE-NEXT:    mulpd %xmm6, %xmm52656; SSE-NEXT:    addpd %xmm4, %xmm52657; SSE-NEXT:    mulpd {{[0-9]+}}(%rsp), %xmm62658; SSE-NEXT:    addpd %xmm2, %xmm62659; SSE-NEXT:    unpckhpd {{.*#+}} xmm1 = xmm1[1,1]2660; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm02661; SSE-NEXT:    mulpd %xmm1, %xmm02662; SSE-NEXT:    addpd %xmm6, %xmm02663; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm42664; SSE-NEXT:    mulpd %xmm1, %xmm42665; SSE-NEXT:    addpd %xmm5, %xmm42666; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm52667; SSE-NEXT:    mulpd %xmm1, %xmm52668; SSE-NEXT:    addpd %xmm7, %xmm52669; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm22670; SSE-NEXT:    mulpd %xmm2, %xmm12671; SSE-NEXT:    addpd %xmm3, %xmm12672; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm62673; SSE-NEXT:    movapd %xmm6, %xmm32674; SSE-NEXT:    unpcklpd {{.*#+}} xmm3 = xmm3[0],xmm6[0]2675; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm22676; SSE-NEXT:    mulpd %xmm3, %xmm22677; SSE-NEXT:    addpd %xmm1, %xmm22678; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm12679; SSE-NEXT:    mulpd %xmm3, %xmm12680; SSE-NEXT:    addpd %xmm5, %xmm12681; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm52682; SSE-NEXT:    mulpd %xmm3, %xmm52683; SSE-NEXT:    addpd %xmm4, %xmm52684; SSE-NEXT:    mulpd {{[0-9]+}}(%rsp), %xmm32685; SSE-NEXT:    addpd %xmm0, %xmm32686; SSE-NEXT:    unpckhpd {{.*#+}} xmm6 = xmm6[1,1]2687; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm02688; SSE-NEXT:    mulpd %xmm6, %xmm02689; SSE-NEXT:    addpd %xmm3, %xmm02690; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2691; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm02692; SSE-NEXT:    mulpd %xmm6, %xmm02693; SSE-NEXT:    addpd %xmm5, %xmm02694; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2695; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm02696; SSE-NEXT:    mulpd %xmm6, %xmm02697; SSE-NEXT:    addpd %xmm1, %xmm02698; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2699; SSE-NEXT:    mulpd {{[0-9]+}}(%rsp), %xmm62700; SSE-NEXT:    addpd %xmm2, %xmm62701; SSE-NEXT:    movapd %xmm6, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2702; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm12703; SSE-NEXT:    movapd %xmm1, %xmm02704; SSE-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm1[0]2705; SSE-NEXT:    movapd %xmm11, %xmm32706; SSE-NEXT:    mulpd %xmm0, %xmm32707; SSE-NEXT:    unpckhpd {{.*#+}} xmm1 = xmm1[1,1]2708; SSE-NEXT:    movapd %xmm8, %xmm22709; SSE-NEXT:    mulpd %xmm1, %xmm22710; SSE-NEXT:    addpd %xmm3, %xmm22711; SSE-NEXT:    movapd %xmm9, %xmm32712; SSE-NEXT:    mulpd %xmm0, %xmm32713; SSE-NEXT:    movapd %xmm15, %xmm42714; SSE-NEXT:    mulpd %xmm1, %xmm42715; SSE-NEXT:    addpd %xmm3, %xmm42716; SSE-NEXT:    movapd %xmm13, %xmm82717; SSE-NEXT:    movapd %xmm13, %xmm32718; SSE-NEXT:    mulpd %xmm0, %xmm32719; SSE-NEXT:    movapd %xmm10, %xmm52720; SSE-NEXT:    movapd %xmm10, %xmm152721; SSE-NEXT:    mulpd %xmm1, %xmm52722; SSE-NEXT:    addpd %xmm3, %xmm52723; SSE-NEXT:    movapd %xmm12, %xmm102724; SSE-NEXT:    mulpd %xmm12, %xmm02725; SSE-NEXT:    movapd %xmm14, %xmm92726; SSE-NEXT:    mulpd %xmm14, %xmm12727; SSE-NEXT:    addpd %xmm0, %xmm12728; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm02729; SSE-NEXT:    movapd %xmm0, %xmm62730; SSE-NEXT:    unpcklpd {{.*#+}} xmm6 = xmm6[0],xmm0[0]2731; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm32732; SSE-NEXT:    mulpd %xmm6, %xmm32733; SSE-NEXT:    addpd %xmm1, %xmm32734; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm12735; SSE-NEXT:    mulpd %xmm6, %xmm12736; SSE-NEXT:    addpd %xmm5, %xmm12737; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm52738; SSE-NEXT:    mulpd %xmm6, %xmm52739; SSE-NEXT:    addpd %xmm4, %xmm52740; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm42741; SSE-NEXT:    mulpd %xmm4, %xmm62742; SSE-NEXT:    addpd %xmm2, %xmm62743; SSE-NEXT:    unpckhpd {{.*#+}} xmm0 = xmm0[1,1]2744; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm22745; SSE-NEXT:    mulpd %xmm0, %xmm22746; SSE-NEXT:    addpd %xmm6, %xmm22747; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm42748; SSE-NEXT:    mulpd %xmm0, %xmm42749; SSE-NEXT:    addpd %xmm5, %xmm42750; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm52751; SSE-NEXT:    mulpd %xmm0, %xmm52752; SSE-NEXT:    addpd %xmm1, %xmm52753; SSE-NEXT:    mulpd {{[0-9]+}}(%rsp), %xmm02754; SSE-NEXT:    addpd %xmm3, %xmm02755; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm12756; SSE-NEXT:    movapd %xmm1, %xmm62757; SSE-NEXT:    unpcklpd {{.*#+}} xmm6 = xmm6[0],xmm1[0]2758; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm32759; SSE-NEXT:    mulpd %xmm6, %xmm32760; SSE-NEXT:    addpd %xmm0, %xmm32761; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm72762; SSE-NEXT:    mulpd %xmm6, %xmm72763; SSE-NEXT:    addpd %xmm5, %xmm72764; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm52765; SSE-NEXT:    mulpd %xmm6, %xmm52766; SSE-NEXT:    addpd %xmm4, %xmm52767; SSE-NEXT:    mulpd {{[0-9]+}}(%rsp), %xmm62768; SSE-NEXT:    addpd %xmm2, %xmm62769; SSE-NEXT:    unpckhpd {{.*#+}} xmm1 = xmm1[1,1]2770; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm02771; SSE-NEXT:    mulpd %xmm1, %xmm02772; SSE-NEXT:    addpd %xmm6, %xmm02773; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm42774; SSE-NEXT:    mulpd %xmm1, %xmm42775; SSE-NEXT:    addpd %xmm5, %xmm42776; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm52777; SSE-NEXT:    mulpd %xmm1, %xmm52778; SSE-NEXT:    addpd %xmm7, %xmm52779; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm22780; SSE-NEXT:    mulpd %xmm2, %xmm12781; SSE-NEXT:    addpd %xmm3, %xmm12782; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm72783; SSE-NEXT:    movapd %xmm7, %xmm32784; SSE-NEXT:    unpcklpd {{.*#+}} xmm3 = xmm3[0],xmm7[0]2785; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm22786; SSE-NEXT:    mulpd %xmm3, %xmm22787; SSE-NEXT:    addpd %xmm1, %xmm22788; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm12789; SSE-NEXT:    mulpd %xmm3, %xmm12790; SSE-NEXT:    addpd %xmm5, %xmm12791; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm52792; SSE-NEXT:    mulpd %xmm3, %xmm52793; SSE-NEXT:    addpd %xmm4, %xmm52794; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm42795; SSE-NEXT:    mulpd %xmm4, %xmm32796; SSE-NEXT:    addpd %xmm0, %xmm32797; SSE-NEXT:    unpckhpd {{.*#+}} xmm7 = xmm7[1,1]2798; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm02799; SSE-NEXT:    mulpd %xmm7, %xmm02800; SSE-NEXT:    addpd %xmm3, %xmm02801; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2802; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm02803; SSE-NEXT:    mulpd %xmm7, %xmm02804; SSE-NEXT:    addpd %xmm5, %xmm02805; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2806; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm02807; SSE-NEXT:    mulpd %xmm7, %xmm02808; SSE-NEXT:    addpd %xmm1, %xmm02809; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2810; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm02811; SSE-NEXT:    mulpd %xmm0, %xmm72812; SSE-NEXT:    addpd %xmm2, %xmm72813; SSE-NEXT:    movapd %xmm7, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2814; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm12815; SSE-NEXT:    movapd %xmm1, %xmm02816; SSE-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm1[0]2817; SSE-NEXT:    movapd %xmm11, %xmm32818; SSE-NEXT:    movapd %xmm11, %xmm122819; SSE-NEXT:    mulpd %xmm0, %xmm32820; SSE-NEXT:    unpckhpd {{.*#+}} xmm1 = xmm1[1,1]2821; SSE-NEXT:    movapd {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload2822; SSE-NEXT:    movapd %xmm6, %xmm22823; SSE-NEXT:    mulpd %xmm1, %xmm22824; SSE-NEXT:    addpd %xmm3, %xmm22825; SSE-NEXT:    movapd {{[-0-9]+}}(%r{{[sb]}}p), %xmm11 # 16-byte Reload2826; SSE-NEXT:    movapd %xmm11, %xmm32827; SSE-NEXT:    mulpd %xmm0, %xmm32828; SSE-NEXT:    movapd {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload2829; SSE-NEXT:    movapd %xmm13, %xmm42830; SSE-NEXT:    mulpd %xmm1, %xmm42831; SSE-NEXT:    addpd %xmm3, %xmm42832; SSE-NEXT:    movapd %xmm8, %xmm32833; SSE-NEXT:    movapd %xmm8, %xmm142834; SSE-NEXT:    mulpd %xmm0, %xmm32835; SSE-NEXT:    movapd %xmm15, %xmm82836; SSE-NEXT:    movapd %xmm15, %xmm52837; SSE-NEXT:    mulpd %xmm1, %xmm52838; SSE-NEXT:    addpd %xmm3, %xmm52839; SSE-NEXT:    mulpd %xmm10, %xmm02840; SSE-NEXT:    mulpd %xmm9, %xmm12841; SSE-NEXT:    movapd %xmm9, %xmm102842; SSE-NEXT:    addpd %xmm0, %xmm12843; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm02844; SSE-NEXT:    movapd %xmm0, %xmm72845; SSE-NEXT:    unpcklpd {{.*#+}} xmm7 = xmm7[0],xmm0[0]2846; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm32847; SSE-NEXT:    mulpd %xmm7, %xmm32848; SSE-NEXT:    addpd %xmm1, %xmm32849; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm12850; SSE-NEXT:    mulpd %xmm7, %xmm12851; SSE-NEXT:    addpd %xmm5, %xmm12852; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm52853; SSE-NEXT:    mulpd %xmm7, %xmm52854; SSE-NEXT:    addpd %xmm4, %xmm52855; SSE-NEXT:    mulpd {{[0-9]+}}(%rsp), %xmm72856; SSE-NEXT:    addpd %xmm2, %xmm72857; SSE-NEXT:    unpckhpd {{.*#+}} xmm0 = xmm0[1,1]2858; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm22859; SSE-NEXT:    mulpd %xmm0, %xmm22860; SSE-NEXT:    addpd %xmm7, %xmm22861; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm42862; SSE-NEXT:    mulpd %xmm0, %xmm42863; SSE-NEXT:    addpd %xmm5, %xmm42864; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm52865; SSE-NEXT:    mulpd %xmm0, %xmm52866; SSE-NEXT:    addpd %xmm1, %xmm52867; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm12868; SSE-NEXT:    mulpd %xmm1, %xmm02869; SSE-NEXT:    addpd %xmm3, %xmm02870; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm12871; SSE-NEXT:    movapd %xmm1, %xmm72872; SSE-NEXT:    unpcklpd {{.*#+}} xmm7 = xmm7[0],xmm1[0]2873; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm32874; SSE-NEXT:    mulpd %xmm7, %xmm32875; SSE-NEXT:    addpd %xmm0, %xmm32876; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm92877; SSE-NEXT:    mulpd %xmm7, %xmm92878; SSE-NEXT:    addpd %xmm5, %xmm92879; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm52880; SSE-NEXT:    mulpd %xmm7, %xmm52881; SSE-NEXT:    addpd %xmm4, %xmm52882; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm02883; SSE-NEXT:    mulpd %xmm0, %xmm72884; SSE-NEXT:    addpd %xmm2, %xmm72885; SSE-NEXT:    unpckhpd {{.*#+}} xmm1 = xmm1[1,1]2886; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm02887; SSE-NEXT:    mulpd %xmm1, %xmm02888; SSE-NEXT:    addpd %xmm7, %xmm02889; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm42890; SSE-NEXT:    mulpd %xmm1, %xmm42891; SSE-NEXT:    addpd %xmm5, %xmm42892; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm72893; SSE-NEXT:    mulpd %xmm1, %xmm72894; SSE-NEXT:    addpd %xmm9, %xmm72895; SSE-NEXT:    mulpd {{[0-9]+}}(%rsp), %xmm12896; SSE-NEXT:    addpd %xmm3, %xmm12897; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm152898; SSE-NEXT:    movapd %xmm15, %xmm32899; SSE-NEXT:    unpcklpd {{.*#+}} xmm3 = xmm3[0],xmm15[0]2900; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm22901; SSE-NEXT:    mulpd %xmm3, %xmm22902; SSE-NEXT:    addpd %xmm1, %xmm22903; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm12904; SSE-NEXT:    mulpd %xmm3, %xmm12905; SSE-NEXT:    addpd %xmm7, %xmm12906; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm72907; SSE-NEXT:    mulpd %xmm3, %xmm72908; SSE-NEXT:    addpd %xmm4, %xmm72909; SSE-NEXT:    mulpd {{[0-9]+}}(%rsp), %xmm32910; SSE-NEXT:    addpd %xmm0, %xmm32911; SSE-NEXT:    unpckhpd {{.*#+}} xmm15 = xmm15[1,1]2912; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm02913; SSE-NEXT:    mulpd %xmm15, %xmm02914; SSE-NEXT:    addpd %xmm3, %xmm02915; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2916; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm02917; SSE-NEXT:    mulpd %xmm15, %xmm02918; SSE-NEXT:    addpd %xmm7, %xmm02919; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2920; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm02921; SSE-NEXT:    mulpd %xmm15, %xmm02922; SSE-NEXT:    addpd %xmm1, %xmm02923; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill2924; SSE-NEXT:    mulpd {{[0-9]+}}(%rsp), %xmm152925; SSE-NEXT:    addpd %xmm2, %xmm152926; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm12927; SSE-NEXT:    movapd %xmm1, %xmm02928; SSE-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm1[0]2929; SSE-NEXT:    movapd %xmm12, %xmm32930; SSE-NEXT:    mulpd %xmm0, %xmm32931; SSE-NEXT:    unpckhpd {{.*#+}} xmm1 = xmm1[1,1]2932; SSE-NEXT:    movapd %xmm6, %xmm22933; SSE-NEXT:    movapd %xmm6, %xmm122934; SSE-NEXT:    mulpd %xmm1, %xmm22935; SSE-NEXT:    addpd %xmm3, %xmm22936; SSE-NEXT:    mulpd %xmm0, %xmm112937; SSE-NEXT:    movapd %xmm13, %xmm62938; SSE-NEXT:    movapd %xmm13, %xmm42939; SSE-NEXT:    mulpd %xmm1, %xmm42940; SSE-NEXT:    addpd %xmm11, %xmm42941; SSE-NEXT:    mulpd %xmm0, %xmm142942; SSE-NEXT:    movapd %xmm8, %xmm72943; SSE-NEXT:    mulpd %xmm1, %xmm72944; SSE-NEXT:    addpd %xmm14, %xmm72945; SSE-NEXT:    movapd {{[-0-9]+}}(%r{{[sb]}}p), %xmm8 # 16-byte Reload2946; SSE-NEXT:    mulpd %xmm8, %xmm02947; SSE-NEXT:    movapd %xmm10, %xmm52948; SSE-NEXT:    mulpd %xmm10, %xmm12949; SSE-NEXT:    addpd %xmm0, %xmm12950; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm02951; SSE-NEXT:    movapd %xmm0, %xmm92952; SSE-NEXT:    unpcklpd {{.*#+}} xmm9 = xmm9[0],xmm0[0]2953; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm32954; SSE-NEXT:    mulpd %xmm9, %xmm32955; SSE-NEXT:    addpd %xmm1, %xmm32956; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm12957; SSE-NEXT:    mulpd %xmm9, %xmm12958; SSE-NEXT:    addpd %xmm7, %xmm12959; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm72960; SSE-NEXT:    mulpd %xmm9, %xmm72961; SSE-NEXT:    addpd %xmm4, %xmm72962; SSE-NEXT:    mulpd {{[0-9]+}}(%rsp), %xmm92963; SSE-NEXT:    addpd %xmm2, %xmm92964; SSE-NEXT:    unpckhpd {{.*#+}} xmm0 = xmm0[1,1]2965; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm22966; SSE-NEXT:    mulpd %xmm0, %xmm22967; SSE-NEXT:    addpd %xmm9, %xmm22968; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm42969; SSE-NEXT:    mulpd %xmm0, %xmm42970; SSE-NEXT:    addpd %xmm7, %xmm42971; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm72972; SSE-NEXT:    mulpd %xmm0, %xmm72973; SSE-NEXT:    addpd %xmm1, %xmm72974; SSE-NEXT:    mulpd {{[0-9]+}}(%rsp), %xmm02975; SSE-NEXT:    addpd %xmm3, %xmm02976; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm12977; SSE-NEXT:    movapd %xmm1, %xmm92978; SSE-NEXT:    unpcklpd {{.*#+}} xmm9 = xmm9[0],xmm1[0]2979; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm32980; SSE-NEXT:    mulpd %xmm9, %xmm32981; SSE-NEXT:    addpd %xmm0, %xmm32982; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm102983; SSE-NEXT:    mulpd %xmm9, %xmm102984; SSE-NEXT:    addpd %xmm7, %xmm102985; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm72986; SSE-NEXT:    mulpd %xmm9, %xmm72987; SSE-NEXT:    addpd %xmm4, %xmm72988; SSE-NEXT:    mulpd {{[0-9]+}}(%rsp), %xmm92989; SSE-NEXT:    addpd %xmm2, %xmm92990; SSE-NEXT:    unpckhpd {{.*#+}} xmm1 = xmm1[1,1]2991; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm02992; SSE-NEXT:    mulpd %xmm1, %xmm02993; SSE-NEXT:    addpd %xmm9, %xmm02994; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm92995; SSE-NEXT:    mulpd %xmm1, %xmm92996; SSE-NEXT:    addpd %xmm7, %xmm92997; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm72998; SSE-NEXT:    mulpd %xmm1, %xmm72999; SSE-NEXT:    addpd %xmm10, %xmm73000; SSE-NEXT:    mulpd {{[0-9]+}}(%rsp), %xmm13001; SSE-NEXT:    addpd %xmm3, %xmm13002; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm113003; SSE-NEXT:    movapd %xmm11, %xmm33004; SSE-NEXT:    unpcklpd {{.*#+}} xmm3 = xmm3[0],xmm11[0]3005; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm23006; SSE-NEXT:    mulpd %xmm3, %xmm23007; SSE-NEXT:    addpd %xmm1, %xmm23008; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm13009; SSE-NEXT:    mulpd %xmm3, %xmm13010; SSE-NEXT:    addpd %xmm7, %xmm13011; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm73012; SSE-NEXT:    mulpd %xmm3, %xmm73013; SSE-NEXT:    addpd %xmm9, %xmm73014; SSE-NEXT:    mulpd {{[0-9]+}}(%rsp), %xmm33015; SSE-NEXT:    addpd %xmm0, %xmm33016; SSE-NEXT:    unpckhpd {{.*#+}} xmm11 = xmm11[1,1]3017; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm03018; SSE-NEXT:    mulpd %xmm11, %xmm03019; SSE-NEXT:    addpd %xmm3, %xmm03020; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3021; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm03022; SSE-NEXT:    mulpd %xmm11, %xmm03023; SSE-NEXT:    addpd %xmm7, %xmm03024; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3025; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm03026; SSE-NEXT:    mulpd %xmm11, %xmm03027; SSE-NEXT:    addpd %xmm1, %xmm03028; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3029; SSE-NEXT:    mulpd {{[0-9]+}}(%rsp), %xmm113030; SSE-NEXT:    addpd %xmm2, %xmm113031; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm13032; SSE-NEXT:    movapd %xmm1, %xmm03033; SSE-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm1[0]3034; SSE-NEXT:    movapd {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload3035; SSE-NEXT:    movapd %xmm13, %xmm33036; SSE-NEXT:    mulpd %xmm0, %xmm33037; SSE-NEXT:    unpckhpd {{.*#+}} xmm1 = xmm1[1,1]3038; SSE-NEXT:    movapd %xmm12, %xmm23039; SSE-NEXT:    mulpd %xmm1, %xmm23040; SSE-NEXT:    addpd %xmm3, %xmm23041; SSE-NEXT:    movapd {{[-0-9]+}}(%r{{[sb]}}p), %xmm14 # 16-byte Reload3042; SSE-NEXT:    movapd %xmm14, %xmm33043; SSE-NEXT:    mulpd %xmm0, %xmm33044; SSE-NEXT:    movapd %xmm6, %xmm73045; SSE-NEXT:    mulpd %xmm1, %xmm73046; SSE-NEXT:    addpd %xmm3, %xmm73047; SSE-NEXT:    movapd {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload3048; SSE-NEXT:    movapd %xmm4, %xmm33049; SSE-NEXT:    mulpd %xmm0, %xmm33050; SSE-NEXT:    movapd {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload3051; SSE-NEXT:    movapd %xmm6, %xmm93052; SSE-NEXT:    mulpd %xmm1, %xmm93053; SSE-NEXT:    addpd %xmm3, %xmm93054; SSE-NEXT:    mulpd %xmm8, %xmm03055; SSE-NEXT:    mulpd %xmm5, %xmm13056; SSE-NEXT:    addpd %xmm0, %xmm13057; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm03058; SSE-NEXT:    movapd %xmm0, %xmm103059; SSE-NEXT:    unpcklpd {{.*#+}} xmm10 = xmm10[0],xmm0[0]3060; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm33061; SSE-NEXT:    mulpd %xmm10, %xmm33062; SSE-NEXT:    addpd %xmm1, %xmm33063; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm123064; SSE-NEXT:    mulpd %xmm10, %xmm123065; SSE-NEXT:    addpd %xmm9, %xmm123066; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm93067; SSE-NEXT:    mulpd %xmm10, %xmm93068; SSE-NEXT:    addpd %xmm7, %xmm93069; SSE-NEXT:    mulpd {{[0-9]+}}(%rsp), %xmm103070; SSE-NEXT:    addpd %xmm2, %xmm103071; SSE-NEXT:    unpckhpd {{.*#+}} xmm0 = xmm0[1,1]3072; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm13073; SSE-NEXT:    mulpd %xmm0, %xmm13074; SSE-NEXT:    addpd %xmm10, %xmm13075; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm103076; SSE-NEXT:    mulpd %xmm0, %xmm103077; SSE-NEXT:    addpd %xmm9, %xmm103078; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm93079; SSE-NEXT:    mulpd %xmm0, %xmm93080; SSE-NEXT:    addpd %xmm12, %xmm93081; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm23082; SSE-NEXT:    mulpd %xmm2, %xmm03083; SSE-NEXT:    addpd %xmm3, %xmm03084; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm73085; SSE-NEXT:    movapd %xmm7, %xmm33086; SSE-NEXT:    unpcklpd {{.*#+}} xmm3 = xmm3[0],xmm7[0]3087; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm23088; SSE-NEXT:    mulpd %xmm3, %xmm23089; SSE-NEXT:    addpd %xmm0, %xmm23090; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm123091; SSE-NEXT:    mulpd %xmm3, %xmm123092; SSE-NEXT:    addpd %xmm9, %xmm123093; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm93094; SSE-NEXT:    mulpd %xmm3, %xmm93095; SSE-NEXT:    addpd %xmm10, %xmm93096; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm03097; SSE-NEXT:    mulpd %xmm0, %xmm33098; SSE-NEXT:    addpd %xmm1, %xmm33099; SSE-NEXT:    unpckhpd {{.*#+}} xmm7 = xmm7[1,1]3100; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm03101; SSE-NEXT:    mulpd %xmm7, %xmm03102; SSE-NEXT:    addpd %xmm3, %xmm03103; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm103104; SSE-NEXT:    mulpd %xmm7, %xmm103105; SSE-NEXT:    addpd %xmm9, %xmm103106; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm93107; SSE-NEXT:    mulpd %xmm7, %xmm93108; SSE-NEXT:    addpd %xmm12, %xmm93109; SSE-NEXT:    mulpd {{[0-9]+}}(%rsp), %xmm73110; SSE-NEXT:    addpd %xmm2, %xmm73111; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm83112; SSE-NEXT:    movapd %xmm8, %xmm23113; SSE-NEXT:    unpcklpd {{.*#+}} xmm2 = xmm2[0],xmm8[0]3114; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm13115; SSE-NEXT:    mulpd %xmm2, %xmm13116; SSE-NEXT:    addpd %xmm7, %xmm13117; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm123118; SSE-NEXT:    mulpd %xmm2, %xmm123119; SSE-NEXT:    addpd %xmm9, %xmm123120; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm73121; SSE-NEXT:    mulpd %xmm2, %xmm73122; SSE-NEXT:    addpd %xmm10, %xmm73123; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm33124; SSE-NEXT:    mulpd %xmm3, %xmm23125; SSE-NEXT:    addpd %xmm0, %xmm23126; SSE-NEXT:    unpckhpd {{.*#+}} xmm8 = xmm8[1,1]3127; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm03128; SSE-NEXT:    mulpd %xmm8, %xmm03129; SSE-NEXT:    addpd %xmm2, %xmm03130; SSE-NEXT:    movapd %xmm0, {{[-0-9]+}}(%r{{[sb]}}p) # 16-byte Spill3131; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm03132; SSE-NEXT:    mulpd %xmm8, %xmm03133; SSE-NEXT:    addpd %xmm7, %xmm03134; SSE-NEXT:    movapd %xmm0, (%rsp) # 16-byte Spill3135; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm93136; SSE-NEXT:    mulpd %xmm8, %xmm93137; SSE-NEXT:    addpd %xmm12, %xmm93138; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm03139; SSE-NEXT:    mulpd %xmm0, %xmm83140; SSE-NEXT:    addpd %xmm1, %xmm83141; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm13142; SSE-NEXT:    movapd %xmm1, %xmm03143; SSE-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm1[0]3144; SSE-NEXT:    movapd %xmm13, %xmm123145; SSE-NEXT:    mulpd %xmm0, %xmm123146; SSE-NEXT:    unpckhpd {{.*#+}} xmm1 = xmm1[1,1]3147; SSE-NEXT:    movapd {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload3148; SSE-NEXT:    mulpd %xmm1, %xmm33149; SSE-NEXT:    addpd %xmm12, %xmm33150; SSE-NEXT:    movapd %xmm14, %xmm123151; SSE-NEXT:    movapd %xmm14, %xmm53152; SSE-NEXT:    mulpd %xmm0, %xmm123153; SSE-NEXT:    movapd {{[-0-9]+}}(%r{{[sb]}}p), %xmm13 # 16-byte Reload3154; SSE-NEXT:    mulpd %xmm1, %xmm133155; SSE-NEXT:    addpd %xmm12, %xmm133156; SSE-NEXT:    mulpd %xmm0, %xmm43157; SSE-NEXT:    movapd %xmm6, %xmm143158; SSE-NEXT:    mulpd %xmm1, %xmm143159; SSE-NEXT:    addpd %xmm4, %xmm143160; SSE-NEXT:    movapd {{[-0-9]+}}(%r{{[sb]}}p), %xmm6 # 16-byte Reload3161; SSE-NEXT:    mulpd %xmm6, %xmm03162; SSE-NEXT:    movapd {{[-0-9]+}}(%r{{[sb]}}p), %xmm10 # 16-byte Reload3163; SSE-NEXT:    mulpd %xmm10, %xmm13164; SSE-NEXT:    addpd %xmm0, %xmm13165; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm23166; SSE-NEXT:    movapd %xmm2, %xmm03167; SSE-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm2[0]3168; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm123169; SSE-NEXT:    mulpd %xmm0, %xmm123170; SSE-NEXT:    addpd %xmm1, %xmm123171; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm13172; SSE-NEXT:    mulpd %xmm0, %xmm13173; SSE-NEXT:    addpd %xmm14, %xmm13174; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm143175; SSE-NEXT:    mulpd %xmm0, %xmm143176; SSE-NEXT:    addpd %xmm13, %xmm143177; SSE-NEXT:    mulpd {{[0-9]+}}(%rsp), %xmm03178; SSE-NEXT:    addpd %xmm3, %xmm03179; SSE-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1,1]3180; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm133181; SSE-NEXT:    mulpd %xmm2, %xmm133182; SSE-NEXT:    addpd %xmm0, %xmm133183; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm03184; SSE-NEXT:    mulpd %xmm2, %xmm03185; SSE-NEXT:    addpd %xmm14, %xmm03186; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm143187; SSE-NEXT:    mulpd %xmm2, %xmm143188; SSE-NEXT:    addpd %xmm1, %xmm143189; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm13190; SSE-NEXT:    mulpd %xmm1, %xmm23191; SSE-NEXT:    addpd %xmm12, %xmm23192; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm123193; SSE-NEXT:    movapd %xmm12, %xmm13194; SSE-NEXT:    unpcklpd {{.*#+}} xmm1 = xmm1[0],xmm12[0]3195; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm33196; SSE-NEXT:    mulpd %xmm1, %xmm33197; SSE-NEXT:    addpd %xmm2, %xmm33198; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm23199; SSE-NEXT:    mulpd %xmm1, %xmm23200; SSE-NEXT:    addpd %xmm14, %xmm23201; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm143202; SSE-NEXT:    mulpd %xmm1, %xmm143203; SSE-NEXT:    addpd %xmm0, %xmm143204; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm03205; SSE-NEXT:    mulpd %xmm0, %xmm13206; SSE-NEXT:    addpd %xmm13, %xmm13207; SSE-NEXT:    unpckhpd {{.*#+}} xmm12 = xmm12[1,1]3208; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm43209; SSE-NEXT:    mulpd %xmm12, %xmm43210; SSE-NEXT:    addpd %xmm1, %xmm43211; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm133212; SSE-NEXT:    mulpd %xmm12, %xmm133213; SSE-NEXT:    addpd %xmm14, %xmm133214; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm143215; SSE-NEXT:    mulpd %xmm12, %xmm143216; SSE-NEXT:    addpd %xmm2, %xmm143217; SSE-NEXT:    mulpd {{[0-9]+}}(%rsp), %xmm123218; SSE-NEXT:    addpd %xmm3, %xmm123219; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm23220; SSE-NEXT:    movapd %xmm2, %xmm33221; SSE-NEXT:    unpcklpd {{.*#+}} xmm3 = xmm3[0],xmm2[0]3222; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm13223; SSE-NEXT:    mulpd %xmm3, %xmm13224; SSE-NEXT:    addpd %xmm12, %xmm13225; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm123226; SSE-NEXT:    mulpd %xmm3, %xmm123227; SSE-NEXT:    addpd %xmm14, %xmm123228; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm03229; SSE-NEXT:    mulpd %xmm3, %xmm03230; SSE-NEXT:    addpd %xmm13, %xmm03231; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm73232; SSE-NEXT:    mulpd %xmm7, %xmm33233; SSE-NEXT:    addpd %xmm4, %xmm33234; SSE-NEXT:    unpckhpd {{.*#+}} xmm2 = xmm2[1,1]3235; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm143236; SSE-NEXT:    mulpd %xmm2, %xmm143237; SSE-NEXT:    addpd %xmm3, %xmm143238; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm133239; SSE-NEXT:    mulpd %xmm2, %xmm133240; SSE-NEXT:    addpd %xmm0, %xmm133241; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm73242; SSE-NEXT:    mulpd %xmm2, %xmm73243; SSE-NEXT:    addpd %xmm12, %xmm73244; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm03245; SSE-NEXT:    mulpd %xmm0, %xmm23246; SSE-NEXT:    addpd %xmm1, %xmm23247; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm13248; SSE-NEXT:    movapd %xmm1, %xmm03249; SSE-NEXT:    unpcklpd {{.*#+}} xmm0 = xmm0[0],xmm1[0]3250; SSE-NEXT:    movapd {{[-0-9]+}}(%r{{[sb]}}p), %xmm12 # 16-byte Reload3251; SSE-NEXT:    mulpd %xmm0, %xmm123252; SSE-NEXT:    mulpd %xmm0, %xmm53253; SSE-NEXT:    movapd {{[-0-9]+}}(%r{{[sb]}}p), %xmm3 # 16-byte Reload3254; SSE-NEXT:    mulpd %xmm0, %xmm33255; SSE-NEXT:    mulpd %xmm6, %xmm03256; SSE-NEXT:    unpckhpd {{.*#+}} xmm1 = xmm1[1,1]3257; SSE-NEXT:    movapd {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload3258; SSE-NEXT:    mulpd %xmm1, %xmm43259; SSE-NEXT:    addpd %xmm12, %xmm43260; SSE-NEXT:    movapd %xmm4, %xmm123261; SSE-NEXT:    movapd {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload3262; SSE-NEXT:    mulpd %xmm1, %xmm43263; SSE-NEXT:    addpd %xmm5, %xmm43264; SSE-NEXT:    movapd %xmm4, %xmm53265; SSE-NEXT:    movapd {{[-0-9]+}}(%r{{[sb]}}p), %xmm4 # 16-byte Reload3266; SSE-NEXT:    mulpd %xmm1, %xmm43267; SSE-NEXT:    addpd %xmm3, %xmm43268; SSE-NEXT:    movapd %xmm4, %xmm33269; SSE-NEXT:    mulpd %xmm10, %xmm13270; SSE-NEXT:    addpd %xmm0, %xmm13271; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm03272; SSE-NEXT:    movapd %xmm0, %xmm43273; SSE-NEXT:    unpcklpd {{.*#+}} xmm4 = xmm4[0],xmm0[0]3274; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm103275; SSE-NEXT:    mulpd %xmm4, %xmm103276; SSE-NEXT:    addpd %xmm1, %xmm103277; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm13278; SSE-NEXT:    mulpd %xmm4, %xmm13279; SSE-NEXT:    addpd %xmm3, %xmm13280; SSE-NEXT:    movapd %xmm1, %xmm33281; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm13282; SSE-NEXT:    mulpd %xmm4, %xmm13283; SSE-NEXT:    addpd %xmm5, %xmm13284; SSE-NEXT:    movapd %xmm1, %xmm53285; SSE-NEXT:    mulpd {{[0-9]+}}(%rsp), %xmm43286; SSE-NEXT:    addpd %xmm12, %xmm43287; SSE-NEXT:    unpckhpd {{.*#+}} xmm0 = xmm0[1,1]3288; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm13289; SSE-NEXT:    mulpd %xmm0, %xmm13290; SSE-NEXT:    addpd %xmm4, %xmm13291; SSE-NEXT:    movapd %xmm1, %xmm123292; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm63293; SSE-NEXT:    mulpd %xmm0, %xmm63294; SSE-NEXT:    addpd %xmm5, %xmm63295; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm13296; SSE-NEXT:    mulpd %xmm0, %xmm13297; SSE-NEXT:    addpd %xmm3, %xmm13298; SSE-NEXT:    movapd %xmm1, %xmm33299; SSE-NEXT:    mulpd {{[0-9]+}}(%rsp), %xmm03300; SSE-NEXT:    addpd %xmm10, %xmm03301; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm13302; SSE-NEXT:    movapd %xmm1, %xmm43303; SSE-NEXT:    unpcklpd {{.*#+}} xmm4 = xmm4[0],xmm1[0]3304; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm53305; SSE-NEXT:    mulpd %xmm4, %xmm53306; SSE-NEXT:    addpd %xmm0, %xmm53307; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm03308; SSE-NEXT:    mulpd %xmm4, %xmm03309; SSE-NEXT:    addpd %xmm3, %xmm03310; SSE-NEXT:    movapd %xmm0, %xmm103311; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm03312; SSE-NEXT:    mulpd %xmm4, %xmm03313; SSE-NEXT:    addpd %xmm6, %xmm03314; SSE-NEXT:    movapd %xmm0, %xmm63315; SSE-NEXT:    mulpd {{[0-9]+}}(%rsp), %xmm43316; SSE-NEXT:    addpd %xmm12, %xmm43317; SSE-NEXT:    unpckhpd {{.*#+}} xmm1 = xmm1[1,1]3318; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm03319; SSE-NEXT:    mulpd %xmm1, %xmm03320; SSE-NEXT:    addpd %xmm4, %xmm03321; SSE-NEXT:    movapd %xmm0, %xmm33322; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm03323; SSE-NEXT:    mulpd %xmm1, %xmm03324; SSE-NEXT:    addpd %xmm6, %xmm03325; SSE-NEXT:    movapd %xmm0, %xmm63326; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm03327; SSE-NEXT:    mulpd %xmm1, %xmm03328; SSE-NEXT:    addpd %xmm10, %xmm03329; SSE-NEXT:    movapd %xmm0, %xmm103330; SSE-NEXT:    mulpd {{[0-9]+}}(%rsp), %xmm13331; SSE-NEXT:    addpd %xmm5, %xmm13332; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm03333; SSE-NEXT:    movapd %xmm0, %xmm43334; SSE-NEXT:    unpcklpd {{.*#+}} xmm4 = xmm4[0],xmm0[0]3335; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm53336; SSE-NEXT:    mulpd %xmm4, %xmm53337; SSE-NEXT:    addpd %xmm1, %xmm53338; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm13339; SSE-NEXT:    mulpd %xmm4, %xmm13340; SSE-NEXT:    addpd %xmm10, %xmm13341; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm103342; SSE-NEXT:    mulpd %xmm4, %xmm103343; SSE-NEXT:    addpd %xmm6, %xmm103344; SSE-NEXT:    mulpd {{[0-9]+}}(%rsp), %xmm43345; SSE-NEXT:    addpd %xmm3, %xmm43346; SSE-NEXT:    unpckhpd {{.*#+}} xmm0 = xmm0[1,1]3347; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm33348; SSE-NEXT:    mulpd %xmm0, %xmm33349; SSE-NEXT:    addpd %xmm4, %xmm33350; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm43351; SSE-NEXT:    mulpd %xmm0, %xmm43352; SSE-NEXT:    addpd %xmm10, %xmm43353; SSE-NEXT:    movapd {{[0-9]+}}(%rsp), %xmm63354; SSE-NEXT:    mulpd %xmm0, %xmm63355; SSE-NEXT:    addpd %xmm1, %xmm63356; SSE-NEXT:    mulpd {{[0-9]+}}(%rsp), %xmm03357; SSE-NEXT:    addpd %xmm5, %xmm03358; SSE-NEXT:    movapd %xmm3, 496(%rdi)3359; SSE-NEXT:    movapd %xmm4, 480(%rdi)3360; SSE-NEXT:    movapd %xmm6, 464(%rdi)3361; SSE-NEXT:    movapd %xmm0, 448(%rdi)3362; SSE-NEXT:    movapd %xmm14, 432(%rdi)3363; SSE-NEXT:    movapd %xmm13, 416(%rdi)3364; SSE-NEXT:    movapd %xmm7, 400(%rdi)3365; SSE-NEXT:    movapd %xmm2, 384(%rdi)3366; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3367; SSE-NEXT:    movaps %xmm0, 368(%rdi)3368; SSE-NEXT:    movaps (%rsp), %xmm0 # 16-byte Reload3369; SSE-NEXT:    movaps %xmm0, 352(%rdi)3370; SSE-NEXT:    movapd %xmm9, 336(%rdi)3371; SSE-NEXT:    movapd %xmm8, 320(%rdi)3372; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3373; SSE-NEXT:    movaps %xmm0, 304(%rdi)3374; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3375; SSE-NEXT:    movaps %xmm0, 288(%rdi)3376; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3377; SSE-NEXT:    movaps %xmm0, 272(%rdi)3378; SSE-NEXT:    movapd %xmm11, 256(%rdi)3379; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3380; SSE-NEXT:    movaps %xmm0, 240(%rdi)3381; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3382; SSE-NEXT:    movaps %xmm0, 224(%rdi)3383; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3384; SSE-NEXT:    movaps %xmm0, 208(%rdi)3385; SSE-NEXT:    movapd %xmm15, 192(%rdi)3386; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3387; SSE-NEXT:    movaps %xmm0, 176(%rdi)3388; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3389; SSE-NEXT:    movaps %xmm0, 160(%rdi)3390; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3391; SSE-NEXT:    movaps %xmm0, 144(%rdi)3392; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3393; SSE-NEXT:    movaps %xmm0, 128(%rdi)3394; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3395; SSE-NEXT:    movaps %xmm0, 112(%rdi)3396; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3397; SSE-NEXT:    movaps %xmm0, 96(%rdi)3398; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3399; SSE-NEXT:    movaps %xmm0, 80(%rdi)3400; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3401; SSE-NEXT:    movaps %xmm0, 64(%rdi)3402; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3403; SSE-NEXT:    movaps %xmm0, 48(%rdi)3404; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3405; SSE-NEXT:    movaps %xmm0, 32(%rdi)3406; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3407; SSE-NEXT:    movaps %xmm0, 16(%rdi)3408; SSE-NEXT:    movaps {{[-0-9]+}}(%r{{[sb]}}p), %xmm0 # 16-byte Reload3409; SSE-NEXT:    movaps %xmm0, (%rdi)3410; SSE-NEXT:    addq $328, %rsp # imm = 0x1483411; SSE-NEXT:    retq3412;3413; AVX1OR2-LABEL: test_mul8x8_f64:3414; AVX1OR2:       # %bb.0: # %entry3415; AVX1OR2-NEXT:    pushq %rbp3416; AVX1OR2-NEXT:    movq %rsp, %rbp3417; AVX1OR2-NEXT:    andq $-32, %rsp3418; AVX1OR2-NEXT:    subq $448, %rsp # imm = 0x1C03419; AVX1OR2-NEXT:    vmovapd %ymm2, %ymm123420; AVX1OR2-NEXT:    vmovapd %ymm0, (%rsp) # 32-byte Spill3421; AVX1OR2-NEXT:    movq %rdi, %rax3422; AVX1OR2-NEXT:    vmovapd 144(%rbp), %ymm133423; AVX1OR2-NEXT:    vmovapd 112(%rbp), %ymm143424; AVX1OR2-NEXT:    vbroadcastsd 272(%rbp), %ymm103425; AVX1OR2-NEXT:    vmulpd %ymm1, %ymm10, %ymm83426; AVX1OR2-NEXT:    vmovapd %ymm1, %ymm93427; AVX1OR2-NEXT:    vmulpd %ymm0, %ymm10, %ymm03428; AVX1OR2-NEXT:    vbroadcastsd 280(%rbp), %ymm103429; AVX1OR2-NEXT:    vmulpd %ymm3, %ymm10, %ymm113430; AVX1OR2-NEXT:    vaddpd %ymm11, %ymm8, %ymm13431; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm10, %ymm103432; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm10, %ymm03433; AVX1OR2-NEXT:    vbroadcastsd 288(%rbp), %ymm103434; AVX1OR2-NEXT:    vmulpd %ymm4, %ymm10, %ymm113435; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm11, %ymm03436; AVX1OR2-NEXT:    vmulpd %ymm5, %ymm10, %ymm103437; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm10, %ymm13438; AVX1OR2-NEXT:    vbroadcastsd 296(%rbp), %ymm103439; AVX1OR2-NEXT:    vmulpd %ymm7, %ymm10, %ymm113440; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm13441; AVX1OR2-NEXT:    vmulpd %ymm6, %ymm10, %ymm103442; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm10, %ymm03443; AVX1OR2-NEXT:    vbroadcastsd 304(%rbp), %ymm103444; AVX1OR2-NEXT:    vmulpd 16(%rbp), %ymm10, %ymm113445; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm11, %ymm03446; AVX1OR2-NEXT:    vmulpd 48(%rbp), %ymm10, %ymm103447; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm10, %ymm13448; AVX1OR2-NEXT:    vbroadcastsd 312(%rbp), %ymm103449; AVX1OR2-NEXT:    vmulpd %ymm10, %ymm14, %ymm113450; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm13451; AVX1OR2-NEXT:    vmulpd 80(%rbp), %ymm10, %ymm103452; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm10, %ymm03453; AVX1OR2-NEXT:    vbroadcastsd 320(%rbp), %ymm103454; AVX1OR2-NEXT:    vmulpd %ymm10, %ymm13, %ymm113455; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm11, %ymm03456; AVX1OR2-NEXT:    vmulpd 176(%rbp), %ymm10, %ymm103457; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm10, %ymm13458; AVX1OR2-NEXT:    vbroadcastsd 328(%rbp), %ymm103459; AVX1OR2-NEXT:    vmulpd 240(%rbp), %ymm10, %ymm113460; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm13461; AVX1OR2-NEXT:    vmovapd %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3462; AVX1OR2-NEXT:    vmulpd 208(%rbp), %ymm10, %ymm13463; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm0, %ymm03464; AVX1OR2-NEXT:    vmovapd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3465; AVX1OR2-NEXT:    vbroadcastsd 336(%rbp), %ymm03466; AVX1OR2-NEXT:    vmulpd %ymm0, %ymm9, %ymm13467; AVX1OR2-NEXT:    vbroadcastsd 344(%rbp), %ymm103468; AVX1OR2-NEXT:    vmulpd %ymm3, %ymm10, %ymm113469; AVX1OR2-NEXT:    vmovapd %ymm3, %ymm83470; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm13471; AVX1OR2-NEXT:    vmovapd (%rsp), %ymm15 # 32-byte Reload3472; AVX1OR2-NEXT:    vmulpd %ymm0, %ymm15, %ymm03473; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm10, %ymm103474; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm10, %ymm03475; AVX1OR2-NEXT:    vbroadcastsd 352(%rbp), %ymm103476; AVX1OR2-NEXT:    vmulpd %ymm4, %ymm10, %ymm113477; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm11, %ymm03478; AVX1OR2-NEXT:    vmulpd %ymm5, %ymm10, %ymm103479; AVX1OR2-NEXT:    vmovapd %ymm5, %ymm33480; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm10, %ymm13481; AVX1OR2-NEXT:    vbroadcastsd 360(%rbp), %ymm103482; AVX1OR2-NEXT:    vmulpd %ymm7, %ymm10, %ymm113483; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm13484; AVX1OR2-NEXT:    vmulpd %ymm6, %ymm10, %ymm103485; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm10, %ymm03486; AVX1OR2-NEXT:    vbroadcastsd 368(%rbp), %ymm103487; AVX1OR2-NEXT:    vmovapd 16(%rbp), %ymm23488; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm10, %ymm113489; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm11, %ymm03490; AVX1OR2-NEXT:    vmulpd 48(%rbp), %ymm10, %ymm103491; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm10, %ymm13492; AVX1OR2-NEXT:    vbroadcastsd 376(%rbp), %ymm103493; AVX1OR2-NEXT:    vmulpd %ymm10, %ymm14, %ymm113494; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm13495; AVX1OR2-NEXT:    vmovapd 80(%rbp), %ymm23496; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm10, %ymm103497; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm10, %ymm03498; AVX1OR2-NEXT:    vbroadcastsd 384(%rbp), %ymm103499; AVX1OR2-NEXT:    vmulpd %ymm10, %ymm13, %ymm113500; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm11, %ymm03501; AVX1OR2-NEXT:    vmovapd 176(%rbp), %ymm143502; AVX1OR2-NEXT:    vmulpd %ymm10, %ymm14, %ymm103503; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm10, %ymm13504; AVX1OR2-NEXT:    vbroadcastsd 392(%rbp), %ymm103505; AVX1OR2-NEXT:    vmovapd 240(%rbp), %ymm23506; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm10, %ymm113507; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm13508; AVX1OR2-NEXT:    vmovapd %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3509; AVX1OR2-NEXT:    vmulpd 208(%rbp), %ymm10, %ymm13510; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm0, %ymm03511; AVX1OR2-NEXT:    vmovapd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3512; AVX1OR2-NEXT:    vbroadcastsd 400(%rbp), %ymm03513; AVX1OR2-NEXT:    vmulpd %ymm0, %ymm9, %ymm13514; AVX1OR2-NEXT:    vbroadcastsd 408(%rbp), %ymm103515; AVX1OR2-NEXT:    vmovapd %ymm8, %ymm53516; AVX1OR2-NEXT:    vmulpd %ymm10, %ymm8, %ymm113517; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm13518; AVX1OR2-NEXT:    vmulpd %ymm0, %ymm15, %ymm03519; AVX1OR2-NEXT:    vmulpd %ymm10, %ymm12, %ymm103520; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm10, %ymm03521; AVX1OR2-NEXT:    vbroadcastsd 416(%rbp), %ymm103522; AVX1OR2-NEXT:    vmulpd %ymm4, %ymm10, %ymm113523; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm11, %ymm03524; AVX1OR2-NEXT:    vmulpd %ymm3, %ymm10, %ymm103525; AVX1OR2-NEXT:    vmovapd %ymm3, %ymm23526; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm10, %ymm13527; AVX1OR2-NEXT:    vbroadcastsd 424(%rbp), %ymm103528; AVX1OR2-NEXT:    vmulpd %ymm7, %ymm10, %ymm113529; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm13530; AVX1OR2-NEXT:    vmulpd %ymm6, %ymm10, %ymm103531; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm10, %ymm03532; AVX1OR2-NEXT:    vbroadcastsd 432(%rbp), %ymm103533; AVX1OR2-NEXT:    vmulpd 16(%rbp), %ymm10, %ymm113534; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm11, %ymm03535; AVX1OR2-NEXT:    vmulpd 48(%rbp), %ymm10, %ymm103536; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm10, %ymm13537; AVX1OR2-NEXT:    vbroadcastsd 440(%rbp), %ymm103538; AVX1OR2-NEXT:    vmulpd 112(%rbp), %ymm10, %ymm113539; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm13540; AVX1OR2-NEXT:    vmulpd 80(%rbp), %ymm10, %ymm103541; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm10, %ymm03542; AVX1OR2-NEXT:    vbroadcastsd 448(%rbp), %ymm103543; AVX1OR2-NEXT:    vmulpd %ymm10, %ymm13, %ymm113544; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm11, %ymm03545; AVX1OR2-NEXT:    vmulpd %ymm10, %ymm14, %ymm103546; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm10, %ymm13547; AVX1OR2-NEXT:    vbroadcastsd 456(%rbp), %ymm103548; AVX1OR2-NEXT:    vmulpd 240(%rbp), %ymm10, %ymm113549; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm13550; AVX1OR2-NEXT:    vmovapd %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3551; AVX1OR2-NEXT:    vmulpd 208(%rbp), %ymm10, %ymm13552; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm0, %ymm03553; AVX1OR2-NEXT:    vmovapd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3554; AVX1OR2-NEXT:    vbroadcastsd 464(%rbp), %ymm03555; AVX1OR2-NEXT:    vmulpd %ymm0, %ymm9, %ymm13556; AVX1OR2-NEXT:    vmovapd %ymm9, %ymm133557; AVX1OR2-NEXT:    vbroadcastsd 472(%rbp), %ymm103558; AVX1OR2-NEXT:    vmulpd %ymm10, %ymm8, %ymm113559; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm13560; AVX1OR2-NEXT:    vmulpd %ymm0, %ymm15, %ymm03561; AVX1OR2-NEXT:    vmovapd %ymm15, %ymm93562; AVX1OR2-NEXT:    vmulpd %ymm10, %ymm12, %ymm103563; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm10, %ymm03564; AVX1OR2-NEXT:    vbroadcastsd 480(%rbp), %ymm103565; AVX1OR2-NEXT:    vmulpd %ymm4, %ymm10, %ymm113566; AVX1OR2-NEXT:    vmovapd %ymm4, %ymm33567; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm11, %ymm03568; AVX1OR2-NEXT:    vmovapd %ymm2, %ymm153569; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm10, %ymm103570; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm10, %ymm13571; AVX1OR2-NEXT:    vbroadcastsd 488(%rbp), %ymm103572; AVX1OR2-NEXT:    vmovapd %ymm7, %ymm83573; AVX1OR2-NEXT:    vmulpd %ymm7, %ymm10, %ymm113574; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm13575; AVX1OR2-NEXT:    vmovapd %ymm6, %ymm73576; AVX1OR2-NEXT:    vmulpd %ymm6, %ymm10, %ymm103577; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm10, %ymm03578; AVX1OR2-NEXT:    vbroadcastsd 496(%rbp), %ymm103579; AVX1OR2-NEXT:    vmulpd 16(%rbp), %ymm10, %ymm113580; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm11, %ymm03581; AVX1OR2-NEXT:    vmovapd 48(%rbp), %ymm43582; AVX1OR2-NEXT:    vmulpd %ymm4, %ymm10, %ymm103583; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm10, %ymm13584; AVX1OR2-NEXT:    vbroadcastsd 504(%rbp), %ymm103585; AVX1OR2-NEXT:    vmovapd 112(%rbp), %ymm23586; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm10, %ymm113587; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm13588; AVX1OR2-NEXT:    vmovapd 80(%rbp), %ymm143589; AVX1OR2-NEXT:    vmulpd %ymm10, %ymm14, %ymm103590; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm10, %ymm03591; AVX1OR2-NEXT:    vbroadcastsd 512(%rbp), %ymm103592; AVX1OR2-NEXT:    vmulpd 144(%rbp), %ymm10, %ymm113593; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm11, %ymm03594; AVX1OR2-NEXT:    vmovapd 176(%rbp), %ymm23595; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm10, %ymm103596; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm10, %ymm13597; AVX1OR2-NEXT:    vbroadcastsd 520(%rbp), %ymm103598; AVX1OR2-NEXT:    vmulpd 240(%rbp), %ymm10, %ymm113599; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm13600; AVX1OR2-NEXT:    vmovapd %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3601; AVX1OR2-NEXT:    vmulpd 208(%rbp), %ymm10, %ymm13602; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm0, %ymm03603; AVX1OR2-NEXT:    vmovapd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3604; AVX1OR2-NEXT:    vbroadcastsd 528(%rbp), %ymm03605; AVX1OR2-NEXT:    vmulpd %ymm0, %ymm13, %ymm13606; AVX1OR2-NEXT:    vbroadcastsd 536(%rbp), %ymm103607; AVX1OR2-NEXT:    vmulpd %ymm5, %ymm10, %ymm113608; AVX1OR2-NEXT:    vmovapd %ymm5, %ymm63609; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm13610; AVX1OR2-NEXT:    vmulpd %ymm0, %ymm9, %ymm03611; AVX1OR2-NEXT:    vmulpd %ymm10, %ymm12, %ymm103612; AVX1OR2-NEXT:    vmovapd %ymm12, %ymm53613; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm10, %ymm03614; AVX1OR2-NEXT:    vbroadcastsd 544(%rbp), %ymm103615; AVX1OR2-NEXT:    vmulpd %ymm3, %ymm10, %ymm113616; AVX1OR2-NEXT:    vmovapd %ymm3, %ymm123617; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm11, %ymm03618; AVX1OR2-NEXT:    vmulpd %ymm10, %ymm15, %ymm103619; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm10, %ymm13620; AVX1OR2-NEXT:    vbroadcastsd 552(%rbp), %ymm103621; AVX1OR2-NEXT:    vmulpd %ymm10, %ymm8, %ymm113622; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm13623; AVX1OR2-NEXT:    vmulpd %ymm7, %ymm10, %ymm103624; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm10, %ymm03625; AVX1OR2-NEXT:    vbroadcastsd 560(%rbp), %ymm103626; AVX1OR2-NEXT:    vmulpd 16(%rbp), %ymm10, %ymm113627; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm11, %ymm03628; AVX1OR2-NEXT:    vmulpd %ymm4, %ymm10, %ymm103629; AVX1OR2-NEXT:    vmovapd %ymm4, %ymm33630; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm10, %ymm13631; AVX1OR2-NEXT:    vbroadcastsd 568(%rbp), %ymm103632; AVX1OR2-NEXT:    vmulpd 112(%rbp), %ymm10, %ymm113633; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm13634; AVX1OR2-NEXT:    vmulpd %ymm10, %ymm14, %ymm103635; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm10, %ymm03636; AVX1OR2-NEXT:    vbroadcastsd 576(%rbp), %ymm103637; AVX1OR2-NEXT:    vmovapd 144(%rbp), %ymm43638; AVX1OR2-NEXT:    vmulpd %ymm4, %ymm10, %ymm113639; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm11, %ymm03640; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm10, %ymm103641; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm10, %ymm13642; AVX1OR2-NEXT:    vbroadcastsd 584(%rbp), %ymm103643; AVX1OR2-NEXT:    vmovapd 240(%rbp), %ymm143644; AVX1OR2-NEXT:    vmulpd %ymm10, %ymm14, %ymm113645; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm13646; AVX1OR2-NEXT:    vmovapd %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3647; AVX1OR2-NEXT:    vmovapd 208(%rbp), %ymm23648; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm10, %ymm13649; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm0, %ymm03650; AVX1OR2-NEXT:    vmovapd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3651; AVX1OR2-NEXT:    vbroadcastsd 592(%rbp), %ymm03652; AVX1OR2-NEXT:    vmulpd %ymm0, %ymm13, %ymm13653; AVX1OR2-NEXT:    vbroadcastsd 600(%rbp), %ymm103654; AVX1OR2-NEXT:    vmulpd %ymm6, %ymm10, %ymm113655; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm13656; AVX1OR2-NEXT:    vmulpd %ymm0, %ymm9, %ymm03657; AVX1OR2-NEXT:    vmulpd %ymm5, %ymm10, %ymm103658; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm10, %ymm03659; AVX1OR2-NEXT:    vbroadcastsd 608(%rbp), %ymm103660; AVX1OR2-NEXT:    vmulpd %ymm10, %ymm12, %ymm113661; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm11, %ymm03662; AVX1OR2-NEXT:    vmulpd %ymm10, %ymm15, %ymm103663; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm10, %ymm13664; AVX1OR2-NEXT:    vbroadcastsd 616(%rbp), %ymm103665; AVX1OR2-NEXT:    vmulpd %ymm10, %ymm8, %ymm113666; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm13667; AVX1OR2-NEXT:    vmulpd %ymm7, %ymm10, %ymm103668; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm10, %ymm03669; AVX1OR2-NEXT:    vbroadcastsd 624(%rbp), %ymm103670; AVX1OR2-NEXT:    vmulpd 16(%rbp), %ymm10, %ymm113671; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm11, %ymm03672; AVX1OR2-NEXT:    vmulpd %ymm3, %ymm10, %ymm103673; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm10, %ymm13674; AVX1OR2-NEXT:    vbroadcastsd 632(%rbp), %ymm103675; AVX1OR2-NEXT:    vmovapd 112(%rbp), %ymm33676; AVX1OR2-NEXT:    vmulpd %ymm3, %ymm10, %ymm113677; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm13678; AVX1OR2-NEXT:    vmovapd 80(%rbp), %ymm33679; AVX1OR2-NEXT:    vmulpd %ymm3, %ymm10, %ymm103680; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm10, %ymm03681; AVX1OR2-NEXT:    vbroadcastsd 640(%rbp), %ymm103682; AVX1OR2-NEXT:    vmulpd %ymm4, %ymm10, %ymm113683; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm11, %ymm03684; AVX1OR2-NEXT:    vmovapd 176(%rbp), %ymm33685; AVX1OR2-NEXT:    vmulpd %ymm3, %ymm10, %ymm103686; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm10, %ymm13687; AVX1OR2-NEXT:    vbroadcastsd 648(%rbp), %ymm103688; AVX1OR2-NEXT:    vmovapd %ymm14, %ymm43689; AVX1OR2-NEXT:    vmulpd %ymm10, %ymm14, %ymm113690; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm11, %ymm13691; AVX1OR2-NEXT:    vmovapd %ymm1, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3692; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm10, %ymm13693; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm0, %ymm03694; AVX1OR2-NEXT:    vmovapd %ymm0, {{[-0-9]+}}(%r{{[sb]}}p) # 32-byte Spill3695; AVX1OR2-NEXT:    vbroadcastsd 656(%rbp), %ymm23696; AVX1OR2-NEXT:    vmovapd %ymm13, %ymm33697; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm13, %ymm13698; AVX1OR2-NEXT:    vbroadcastsd 664(%rbp), %ymm03699; AVX1OR2-NEXT:    vmulpd %ymm0, %ymm6, %ymm143700; AVX1OR2-NEXT:    vmovapd %ymm6, %ymm103701; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm14, %ymm13702; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm9, %ymm23703; AVX1OR2-NEXT:    vmulpd %ymm0, %ymm5, %ymm03704; AVX1OR2-NEXT:    vmovapd %ymm5, %ymm63705; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm2, %ymm03706; AVX1OR2-NEXT:    vbroadcastsd 672(%rbp), %ymm23707; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm12, %ymm143708; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm14, %ymm03709; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm15, %ymm23710; AVX1OR2-NEXT:    vaddpd %ymm2, %ymm1, %ymm13711; AVX1OR2-NEXT:    vbroadcastsd 680(%rbp), %ymm23712; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm8, %ymm143713; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm14, %ymm13714; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm7, %ymm23715; AVX1OR2-NEXT:    vaddpd %ymm2, %ymm0, %ymm03716; AVX1OR2-NEXT:    vbroadcastsd 688(%rbp), %ymm23717; AVX1OR2-NEXT:    vmovapd 16(%rbp), %ymm113718; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm11, %ymm143719; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm14, %ymm03720; AVX1OR2-NEXT:    vmulpd 48(%rbp), %ymm2, %ymm23721; AVX1OR2-NEXT:    vaddpd %ymm2, %ymm1, %ymm13722; AVX1OR2-NEXT:    vbroadcastsd 696(%rbp), %ymm23723; AVX1OR2-NEXT:    vmovapd 112(%rbp), %ymm53724; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm5, %ymm143725; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm14, %ymm13726; AVX1OR2-NEXT:    vmovapd 80(%rbp), %ymm53727; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm5, %ymm23728; AVX1OR2-NEXT:    vaddpd %ymm2, %ymm0, %ymm03729; AVX1OR2-NEXT:    vbroadcastsd 704(%rbp), %ymm23730; AVX1OR2-NEXT:    vmulpd 144(%rbp), %ymm2, %ymm143731; AVX1OR2-NEXT:    vaddpd %ymm0, %ymm14, %ymm03732; AVX1OR2-NEXT:    vmovapd 176(%rbp), %ymm133733; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm13, %ymm23734; AVX1OR2-NEXT:    vaddpd %ymm2, %ymm1, %ymm13735; AVX1OR2-NEXT:    vbroadcastsd 712(%rbp), %ymm23736; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm4, %ymm143737; AVX1OR2-NEXT:    vaddpd %ymm1, %ymm14, %ymm13738; AVX1OR2-NEXT:    vmovapd 208(%rbp), %ymm143739; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm14, %ymm23740; AVX1OR2-NEXT:    vaddpd %ymm2, %ymm0, %ymm03741; AVX1OR2-NEXT:    vbroadcastsd 720(%rbp), %ymm23742; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm3, %ymm33743; AVX1OR2-NEXT:    vmulpd %ymm2, %ymm9, %ymm23744; AVX1OR2-NEXT:    vbroadcastsd 728(%rbp), %ymm43745; AVX1OR2-NEXT:    vmulpd %ymm4, %ymm10, %ymm53746; AVX1OR2-NEXT:    vaddpd %ymm5, %ymm3, %ymm33747; AVX1OR2-NEXT:    vmulpd %ymm4, %ymm6, %ymm43748; AVX1OR2-NEXT:    vaddpd %ymm4, %ymm2, %ymm23749; AVX1OR2-NEXT:    vbroadcastsd 736(%rbp), %ymm43750; AVX1OR2-NEXT:    vmulpd %ymm4, %ymm12, %ymm53751; AVX1OR2-NEXT:    vaddpd %ymm5, %ymm2, %ymm23752; AVX1OR2-NEXT:    vmulpd %ymm4, %ymm15, %ymm43753; AVX1OR2-NEXT:    vaddpd %ymm4, %ymm3, %ymm33754; AVX1OR2-NEXT:    vbroadcastsd 744(%rbp), %ymm43755; AVX1OR2-NEXT:    vmulpd %ymm4, %ymm8, %ymm53756; AVX1OR2-NEXT:    vaddpd %ymm5, %ymm3, %ymm33757; AVX1OR2-NEXT:    vmulpd %ymm4, %ymm7, %ymm43758; AVX1OR2-NEXT:    vaddpd %ymm4, %ymm2, %ymm23759; AVX1OR2-NEXT:    vbroadcastsd 752(%rbp), %ymm43760; AVX1OR2-NEXT:    vmulpd %ymm4, %ymm11, %ymm53761; AVX1OR2-NEXT:    vaddpd %ymm5, %ymm2, %ymm23762; AVX1OR2-NEXT:    vmulpd 48(%rbp), %ymm4, %ymm43763; AVX1OR2-NEXT:    vaddpd %ymm4, %ymm3, %ymm33764; AVX1OR2-NEXT:    vbroadcastsd 760(%rbp), %ymm43765; AVX1OR2-NEXT:    vmulpd 112(%rbp), %ymm4, %ymm53766; AVX1OR2-NEXT:    vaddpd %ymm5, %ymm3, %ymm33767; AVX1OR2-NEXT:    vmulpd 80(%rbp), %ymm4, %ymm43768; AVX1OR2-NEXT:    vaddpd %ymm4, %ymm2, %ymm23769; AVX1OR2-NEXT:    vbroadcastsd 768(%rbp), %ymm43770; AVX1OR2-NEXT:    vmulpd 144(%rbp), %ymm4, %ymm53771; AVX1OR2-NEXT:    vaddpd %ymm5, %ymm2, %ymm23772; AVX1OR2-NEXT:    vmulpd %ymm4, %ymm13, %ymm43773; AVX1OR2-NEXT:    vaddpd %ymm4, %ymm3, %ymm33774; AVX1OR2-NEXT:    vbroadcastsd 776(%rbp), %ymm43775; AVX1OR2-NEXT:    vmulpd 240(%rbp), %ymm4, %ymm53776; AVX1OR2-NEXT:    vaddpd %ymm5, %ymm3, %ymm33777; AVX1OR2-NEXT:    vmulpd %ymm4, %ymm14, %ymm43778; AVX1OR2-NEXT:    vaddpd %ymm4, %ymm2, %ymm23779; AVX1OR2-NEXT:    vmovapd %ymm3, 480(%rdi)3780; AVX1OR2-NEXT:    vmovapd %ymm2, 448(%rdi)3781; AVX1OR2-NEXT:    vmovapd %ymm1, 416(%rdi)3782; AVX1OR2-NEXT:    vmovapd %ymm0, 384(%rdi)3783; AVX1OR2-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3784; AVX1OR2-NEXT:    vmovaps %ymm0, 352(%rdi)3785; AVX1OR2-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3786; AVX1OR2-NEXT:    vmovaps %ymm0, 320(%rdi)3787; AVX1OR2-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3788; AVX1OR2-NEXT:    vmovaps %ymm0, 288(%rdi)3789; AVX1OR2-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3790; AVX1OR2-NEXT:    vmovaps %ymm0, 256(%rdi)3791; AVX1OR2-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3792; AVX1OR2-NEXT:    vmovaps %ymm0, 224(%rdi)3793; AVX1OR2-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3794; AVX1OR2-NEXT:    vmovaps %ymm0, 192(%rdi)3795; AVX1OR2-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3796; AVX1OR2-NEXT:    vmovaps %ymm0, 160(%rdi)3797; AVX1OR2-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3798; AVX1OR2-NEXT:    vmovaps %ymm0, 128(%rdi)3799; AVX1OR2-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3800; AVX1OR2-NEXT:    vmovaps %ymm0, 96(%rdi)3801; AVX1OR2-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3802; AVX1OR2-NEXT:    vmovaps %ymm0, 64(%rdi)3803; AVX1OR2-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3804; AVX1OR2-NEXT:    vmovaps %ymm0, 32(%rdi)3805; AVX1OR2-NEXT:    vmovaps {{[-0-9]+}}(%r{{[sb]}}p), %ymm0 # 32-byte Reload3806; AVX1OR2-NEXT:    vmovaps %ymm0, (%rdi)3807; AVX1OR2-NEXT:    movq %rbp, %rsp3808; AVX1OR2-NEXT:    popq %rbp3809; AVX1OR2-NEXT:    vzeroupper3810; AVX1OR2-NEXT:    retq3811;3812; AVX512-LABEL: test_mul8x8_f64:3813; AVX512:       # %bb.0: # %entry3814; AVX512-NEXT:    pushq %rbp3815; AVX512-NEXT:    movq %rsp, %rbp3816; AVX512-NEXT:    andq $-64, %rsp3817; AVX512-NEXT:    subq $64, %rsp3818; AVX512-NEXT:    movq %rdi, %rax3819; AVX512-NEXT:    vmulpd 16(%rbp){1to8}, %zmm0, %zmm83820; AVX512-NEXT:    vmulpd 24(%rbp){1to8}, %zmm1, %zmm93821; AVX512-NEXT:    vaddpd %zmm9, %zmm8, %zmm83822; AVX512-NEXT:    vmulpd 32(%rbp){1to8}, %zmm2, %zmm93823; AVX512-NEXT:    vaddpd %zmm9, %zmm8, %zmm83824; AVX512-NEXT:    vmulpd 40(%rbp){1to8}, %zmm3, %zmm93825; AVX512-NEXT:    vaddpd %zmm9, %zmm8, %zmm83826; AVX512-NEXT:    vmulpd 48(%rbp){1to8}, %zmm4, %zmm93827; AVX512-NEXT:    vaddpd %zmm9, %zmm8, %zmm83828; AVX512-NEXT:    vmulpd 56(%rbp){1to8}, %zmm5, %zmm93829; AVX512-NEXT:    vaddpd %zmm9, %zmm8, %zmm83830; AVX512-NEXT:    vmulpd 64(%rbp){1to8}, %zmm6, %zmm93831; AVX512-NEXT:    vaddpd %zmm9, %zmm8, %zmm83832; AVX512-NEXT:    vmulpd 72(%rbp){1to8}, %zmm7, %zmm93833; AVX512-NEXT:    vaddpd %zmm9, %zmm8, %zmm83834; AVX512-NEXT:    vmulpd 80(%rbp){1to8}, %zmm0, %zmm93835; AVX512-NEXT:    vmulpd 88(%rbp){1to8}, %zmm1, %zmm103836; AVX512-NEXT:    vaddpd %zmm10, %zmm9, %zmm93837; AVX512-NEXT:    vmulpd 96(%rbp){1to8}, %zmm2, %zmm103838; AVX512-NEXT:    vaddpd %zmm10, %zmm9, %zmm93839; AVX512-NEXT:    vmulpd 104(%rbp){1to8}, %zmm3, %zmm103840; AVX512-NEXT:    vaddpd %zmm10, %zmm9, %zmm93841; AVX512-NEXT:    vmulpd 112(%rbp){1to8}, %zmm4, %zmm103842; AVX512-NEXT:    vaddpd %zmm10, %zmm9, %zmm93843; AVX512-NEXT:    vmulpd 120(%rbp){1to8}, %zmm5, %zmm103844; AVX512-NEXT:    vaddpd %zmm10, %zmm9, %zmm93845; AVX512-NEXT:    vmulpd 128(%rbp){1to8}, %zmm6, %zmm103846; AVX512-NEXT:    vaddpd %zmm10, %zmm9, %zmm93847; AVX512-NEXT:    vmulpd 136(%rbp){1to8}, %zmm7, %zmm103848; AVX512-NEXT:    vaddpd %zmm10, %zmm9, %zmm93849; AVX512-NEXT:    vmulpd 144(%rbp){1to8}, %zmm0, %zmm103850; AVX512-NEXT:    vmulpd 152(%rbp){1to8}, %zmm1, %zmm113851; AVX512-NEXT:    vaddpd %zmm11, %zmm10, %zmm103852; AVX512-NEXT:    vmulpd 160(%rbp){1to8}, %zmm2, %zmm113853; AVX512-NEXT:    vaddpd %zmm11, %zmm10, %zmm103854; AVX512-NEXT:    vmulpd 168(%rbp){1to8}, %zmm3, %zmm113855; AVX512-NEXT:    vaddpd %zmm11, %zmm10, %zmm103856; AVX512-NEXT:    vmulpd 176(%rbp){1to8}, %zmm4, %zmm113857; AVX512-NEXT:    vaddpd %zmm11, %zmm10, %zmm103858; AVX512-NEXT:    vmulpd 184(%rbp){1to8}, %zmm5, %zmm113859; AVX512-NEXT:    vaddpd %zmm11, %zmm10, %zmm103860; AVX512-NEXT:    vmulpd 192(%rbp){1to8}, %zmm6, %zmm113861; AVX512-NEXT:    vaddpd %zmm11, %zmm10, %zmm103862; AVX512-NEXT:    vmulpd 200(%rbp){1to8}, %zmm7, %zmm113863; AVX512-NEXT:    vaddpd %zmm11, %zmm10, %zmm103864; AVX512-NEXT:    vmulpd 208(%rbp){1to8}, %zmm0, %zmm113865; AVX512-NEXT:    vmulpd 216(%rbp){1to8}, %zmm1, %zmm123866; AVX512-NEXT:    vaddpd %zmm12, %zmm11, %zmm113867; AVX512-NEXT:    vmulpd 224(%rbp){1to8}, %zmm2, %zmm123868; AVX512-NEXT:    vaddpd %zmm12, %zmm11, %zmm113869; AVX512-NEXT:    vmulpd 232(%rbp){1to8}, %zmm3, %zmm123870; AVX512-NEXT:    vaddpd %zmm12, %zmm11, %zmm113871; AVX512-NEXT:    vmulpd 240(%rbp){1to8}, %zmm4, %zmm123872; AVX512-NEXT:    vaddpd %zmm12, %zmm11, %zmm113873; AVX512-NEXT:    vmulpd 248(%rbp){1to8}, %zmm5, %zmm123874; AVX512-NEXT:    vaddpd %zmm12, %zmm11, %zmm113875; AVX512-NEXT:    vmulpd 256(%rbp){1to8}, %zmm6, %zmm123876; AVX512-NEXT:    vaddpd %zmm12, %zmm11, %zmm113877; AVX512-NEXT:    vmulpd 264(%rbp){1to8}, %zmm7, %zmm123878; AVX512-NEXT:    vaddpd %zmm12, %zmm11, %zmm113879; AVX512-NEXT:    vmulpd 272(%rbp){1to8}, %zmm0, %zmm123880; AVX512-NEXT:    vmulpd 280(%rbp){1to8}, %zmm1, %zmm133881; AVX512-NEXT:    vaddpd %zmm13, %zmm12, %zmm123882; AVX512-NEXT:    vmulpd 288(%rbp){1to8}, %zmm2, %zmm133883; AVX512-NEXT:    vaddpd %zmm13, %zmm12, %zmm123884; AVX512-NEXT:    vmulpd 296(%rbp){1to8}, %zmm3, %zmm133885; AVX512-NEXT:    vaddpd %zmm13, %zmm12, %zmm123886; AVX512-NEXT:    vmulpd 304(%rbp){1to8}, %zmm4, %zmm133887; AVX512-NEXT:    vaddpd %zmm13, %zmm12, %zmm123888; AVX512-NEXT:    vmulpd 312(%rbp){1to8}, %zmm5, %zmm133889; AVX512-NEXT:    vaddpd %zmm13, %zmm12, %zmm123890; AVX512-NEXT:    vmulpd 320(%rbp){1to8}, %zmm6, %zmm133891; AVX512-NEXT:    vaddpd %zmm13, %zmm12, %zmm123892; AVX512-NEXT:    vmulpd 328(%rbp){1to8}, %zmm7, %zmm133893; AVX512-NEXT:    vaddpd %zmm13, %zmm12, %zmm123894; AVX512-NEXT:    vmulpd 336(%rbp){1to8}, %zmm0, %zmm133895; AVX512-NEXT:    vmulpd 344(%rbp){1to8}, %zmm1, %zmm143896; AVX512-NEXT:    vaddpd %zmm14, %zmm13, %zmm133897; AVX512-NEXT:    vmulpd 352(%rbp){1to8}, %zmm2, %zmm143898; AVX512-NEXT:    vaddpd %zmm14, %zmm13, %zmm133899; AVX512-NEXT:    vmulpd 360(%rbp){1to8}, %zmm3, %zmm143900; AVX512-NEXT:    vaddpd %zmm14, %zmm13, %zmm133901; AVX512-NEXT:    vmulpd 368(%rbp){1to8}, %zmm4, %zmm143902; AVX512-NEXT:    vaddpd %zmm14, %zmm13, %zmm133903; AVX512-NEXT:    vmulpd 376(%rbp){1to8}, %zmm5, %zmm143904; AVX512-NEXT:    vaddpd %zmm14, %zmm13, %zmm133905; AVX512-NEXT:    vmulpd 384(%rbp){1to8}, %zmm6, %zmm143906; AVX512-NEXT:    vaddpd %zmm14, %zmm13, %zmm133907; AVX512-NEXT:    vmulpd 392(%rbp){1to8}, %zmm7, %zmm143908; AVX512-NEXT:    vaddpd %zmm14, %zmm13, %zmm133909; AVX512-NEXT:    vmulpd 400(%rbp){1to8}, %zmm0, %zmm143910; AVX512-NEXT:    vmulpd 408(%rbp){1to8}, %zmm1, %zmm153911; AVX512-NEXT:    vaddpd %zmm15, %zmm14, %zmm143912; AVX512-NEXT:    vmulpd 416(%rbp){1to8}, %zmm2, %zmm153913; AVX512-NEXT:    vaddpd %zmm15, %zmm14, %zmm143914; AVX512-NEXT:    vmulpd 424(%rbp){1to8}, %zmm3, %zmm153915; AVX512-NEXT:    vaddpd %zmm15, %zmm14, %zmm143916; AVX512-NEXT:    vmulpd 432(%rbp){1to8}, %zmm4, %zmm153917; AVX512-NEXT:    vaddpd %zmm15, %zmm14, %zmm143918; AVX512-NEXT:    vmulpd 440(%rbp){1to8}, %zmm5, %zmm153919; AVX512-NEXT:    vaddpd %zmm15, %zmm14, %zmm143920; AVX512-NEXT:    vmulpd 448(%rbp){1to8}, %zmm6, %zmm153921; AVX512-NEXT:    vaddpd %zmm15, %zmm14, %zmm143922; AVX512-NEXT:    vmulpd 456(%rbp){1to8}, %zmm7, %zmm153923; AVX512-NEXT:    vaddpd %zmm15, %zmm14, %zmm143924; AVX512-NEXT:    vmulpd 464(%rbp){1to8}, %zmm0, %zmm03925; AVX512-NEXT:    vmulpd 472(%rbp){1to8}, %zmm1, %zmm13926; AVX512-NEXT:    vaddpd %zmm1, %zmm0, %zmm03927; AVX512-NEXT:    vmulpd 480(%rbp){1to8}, %zmm2, %zmm13928; AVX512-NEXT:    vaddpd %zmm1, %zmm0, %zmm03929; AVX512-NEXT:    vmulpd 488(%rbp){1to8}, %zmm3, %zmm13930; AVX512-NEXT:    vaddpd %zmm1, %zmm0, %zmm03931; AVX512-NEXT:    vmulpd 496(%rbp){1to8}, %zmm4, %zmm13932; AVX512-NEXT:    vaddpd %zmm1, %zmm0, %zmm03933; AVX512-NEXT:    vmulpd 504(%rbp){1to8}, %zmm5, %zmm13934; AVX512-NEXT:    vaddpd %zmm1, %zmm0, %zmm03935; AVX512-NEXT:    vmulpd 512(%rbp){1to8}, %zmm6, %zmm13936; AVX512-NEXT:    vaddpd %zmm1, %zmm0, %zmm03937; AVX512-NEXT:    vmulpd 520(%rbp){1to8}, %zmm7, %zmm13938; AVX512-NEXT:    vaddpd %zmm1, %zmm0, %zmm03939; AVX512-NEXT:    vmovapd %zmm0, 448(%rdi)3940; AVX512-NEXT:    vmovapd %zmm14, 384(%rdi)3941; AVX512-NEXT:    vmovapd %zmm13, 320(%rdi)3942; AVX512-NEXT:    vmovapd %zmm12, 256(%rdi)3943; AVX512-NEXT:    vmovapd %zmm11, 192(%rdi)3944; AVX512-NEXT:    vmovapd %zmm10, 128(%rdi)3945; AVX512-NEXT:    vmovapd %zmm9, 64(%rdi)3946; AVX512-NEXT:    vmovapd %zmm8, (%rdi)3947; AVX512-NEXT:    movq %rbp, %rsp3948; AVX512-NEXT:    popq %rbp3949; AVX512-NEXT:    vzeroupper3950; AVX512-NEXT:    retq3951entry:3952  %split = shufflevector <64 x double> %a0, <64 x double> poison, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>3953  %split1 = shufflevector <64 x double> %a0, <64 x double> poison, <8 x i32> <i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>3954  %split2 = shufflevector <64 x double> %a0, <64 x double> poison, <8 x i32> <i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23>3955  %split3 = shufflevector <64 x double> %a0, <64 x double> poison, <8 x i32> <i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>3956  %split4 = shufflevector <64 x double> %a0, <64 x double> poison, <8 x i32> <i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39>3957  %split5 = shufflevector <64 x double> %a0, <64 x double> poison, <8 x i32> <i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47>3958  %split6 = shufflevector <64 x double> %a0, <64 x double> poison, <8 x i32> <i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55>3959  %split7 = shufflevector <64 x double> %a0, <64 x double> poison, <8 x i32> <i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63>3960  %splat.splat = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> zeroinitializer3961  %0 = fmul <8 x double> %split, %splat.splat3962  %splat.splat18 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1, i32 1>3963  %1 = fmul <8 x double> %split1, %splat.splat183964  %2 = fadd <8 x double> %0, %13965  %splat.splat21 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2, i32 2>3966  %3 = fmul <8 x double> %split2, %splat.splat213967  %4 = fadd <8 x double> %2, %33968  %splat.splat24 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3, i32 3>3969  %5 = fmul <8 x double> %split3, %splat.splat243970  %6 = fadd <8 x double> %4, %53971  %splat.splat27 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4, i32 4>3972  %7 = fmul <8 x double> %split4, %splat.splat273973  %8 = fadd <8 x double> %6, %73974  %splat.splat30 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5, i32 5>3975  %9 = fmul <8 x double> %split5, %splat.splat303976  %10 = fadd <8 x double> %8, %93977  %splat.splat33 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6, i32 6>3978  %11 = fmul <8 x double> %split6, %splat.splat333979  %12 = fadd <8 x double> %10, %113980  %splat.splat36 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7, i32 7>3981  %13 = fmul <8 x double> %split7, %splat.splat363982  %14 = fadd <8 x double> %12, %133983  %splat.splat39 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8, i32 8>3984  %15 = fmul <8 x double> %split, %splat.splat393985  %splat.splat42 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 9, i32 9, i32 9, i32 9, i32 9, i32 9, i32 9, i32 9>3986  %16 = fmul <8 x double> %split1, %splat.splat423987  %17 = fadd <8 x double> %15, %163988  %splat.splat45 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10, i32 10>3989  %18 = fmul <8 x double> %split2, %splat.splat453990  %19 = fadd <8 x double> %17, %183991  %splat.splat48 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 11, i32 11, i32 11, i32 11, i32 11, i32 11, i32 11, i32 11>3992  %20 = fmul <8 x double> %split3, %splat.splat483993  %21 = fadd <8 x double> %19, %203994  %splat.splat51 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12, i32 12>3995  %22 = fmul <8 x double> %split4, %splat.splat513996  %23 = fadd <8 x double> %21, %223997  %splat.splat54 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 13, i32 13, i32 13, i32 13, i32 13, i32 13, i32 13, i32 13>3998  %24 = fmul <8 x double> %split5, %splat.splat543999  %25 = fadd <8 x double> %23, %244000  %splat.splat57 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 14, i32 14, i32 14, i32 14, i32 14, i32 14, i32 14, i32 14>4001  %26 = fmul <8 x double> %split6, %splat.splat574002  %27 = fadd <8 x double> %25, %264003  %splat.splat60 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15, i32 15>4004  %28 = fmul <8 x double> %split7, %splat.splat604005  %29 = fadd <8 x double> %27, %284006  %splat.splat63 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16, i32 16>4007  %30 = fmul <8 x double> %split, %splat.splat634008  %splat.splat66 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 17, i32 17, i32 17, i32 17, i32 17, i32 17, i32 17, i32 17>4009  %31 = fmul <8 x double> %split1, %splat.splat664010  %32 = fadd <8 x double> %30, %314011  %splat.splat69 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 18, i32 18, i32 18, i32 18, i32 18, i32 18, i32 18, i32 18>4012  %33 = fmul <8 x double> %split2, %splat.splat694013  %34 = fadd <8 x double> %32, %334014  %splat.splat72 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 19, i32 19, i32 19, i32 19, i32 19, i32 19, i32 19, i32 19>4015  %35 = fmul <8 x double> %split3, %splat.splat724016  %36 = fadd <8 x double> %34, %354017  %splat.splat75 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 20, i32 20, i32 20, i32 20, i32 20, i32 20, i32 20, i32 20>4018  %37 = fmul <8 x double> %split4, %splat.splat754019  %38 = fadd <8 x double> %36, %374020  %splat.splat78 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 21, i32 21, i32 21, i32 21, i32 21, i32 21, i32 21, i32 21>4021  %39 = fmul <8 x double> %split5, %splat.splat784022  %40 = fadd <8 x double> %38, %394023  %splat.splat81 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 22, i32 22, i32 22, i32 22, i32 22, i32 22, i32 22, i32 22>4024  %41 = fmul <8 x double> %split6, %splat.splat814025  %42 = fadd <8 x double> %40, %414026  %splat.splat84 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 23, i32 23, i32 23, i32 23, i32 23, i32 23, i32 23, i32 23>4027  %43 = fmul <8 x double> %split7, %splat.splat844028  %44 = fadd <8 x double> %42, %434029  %splat.splat87 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24, i32 24>4030  %45 = fmul <8 x double> %split, %splat.splat874031  %splat.splat90 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25, i32 25>4032  %46 = fmul <8 x double> %split1, %splat.splat904033  %47 = fadd <8 x double> %45, %464034  %splat.splat93 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 26, i32 26, i32 26, i32 26, i32 26, i32 26, i32 26, i32 26>4035  %48 = fmul <8 x double> %split2, %splat.splat934036  %49 = fadd <8 x double> %47, %484037  %splat.splat96 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 27, i32 27, i32 27, i32 27, i32 27, i32 27, i32 27, i32 27>4038  %50 = fmul <8 x double> %split3, %splat.splat964039  %51 = fadd <8 x double> %49, %504040  %splat.splat99 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 28, i32 28, i32 28, i32 28, i32 28, i32 28, i32 28, i32 28>4041  %52 = fmul <8 x double> %split4, %splat.splat994042  %53 = fadd <8 x double> %51, %524043  %splat.splat102 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 29, i32 29, i32 29, i32 29, i32 29, i32 29, i32 29, i32 29>4044  %54 = fmul <8 x double> %split5, %splat.splat1024045  %55 = fadd <8 x double> %53, %544046  %splat.splat105 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 30, i32 30, i32 30, i32 30, i32 30, i32 30, i32 30, i32 30>4047  %56 = fmul <8 x double> %split6, %splat.splat1054048  %57 = fadd <8 x double> %55, %564049  %splat.splat108 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31, i32 31>4050  %58 = fmul <8 x double> %split7, %splat.splat1084051  %59 = fadd <8 x double> %57, %584052  %splat.splat111 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32, i32 32>4053  %60 = fmul <8 x double> %split, %splat.splat1114054  %splat.splat114 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 33, i32 33, i32 33, i32 33, i32 33, i32 33, i32 33, i32 33>4055  %61 = fmul <8 x double> %split1, %splat.splat1144056  %62 = fadd <8 x double> %60, %614057  %splat.splat117 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 34, i32 34, i32 34, i32 34, i32 34, i32 34, i32 34, i32 34>4058  %63 = fmul <8 x double> %split2, %splat.splat1174059  %64 = fadd <8 x double> %62, %634060  %splat.splat120 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 35, i32 35, i32 35, i32 35, i32 35, i32 35, i32 35, i32 35>4061  %65 = fmul <8 x double> %split3, %splat.splat1204062  %66 = fadd <8 x double> %64, %654063  %splat.splat123 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 36, i32 36, i32 36, i32 36, i32 36, i32 36, i32 36, i32 36>4064  %67 = fmul <8 x double> %split4, %splat.splat1234065  %68 = fadd <8 x double> %66, %674066  %splat.splat126 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37, i32 37>4067  %69 = fmul <8 x double> %split5, %splat.splat1264068  %70 = fadd <8 x double> %68, %694069  %splat.splat129 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 38, i32 38, i32 38, i32 38, i32 38, i32 38, i32 38, i32 38>4070  %71 = fmul <8 x double> %split6, %splat.splat1294071  %72 = fadd <8 x double> %70, %714072  %splat.splat132 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 39, i32 39, i32 39, i32 39, i32 39, i32 39, i32 39, i32 39>4073  %73 = fmul <8 x double> %split7, %splat.splat1324074  %74 = fadd <8 x double> %72, %734075  %splat.splat135 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 40, i32 40, i32 40, i32 40, i32 40, i32 40, i32 40, i32 40>4076  %75 = fmul <8 x double> %split, %splat.splat1354077  %splat.splat138 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 41, i32 41, i32 41, i32 41, i32 41, i32 41, i32 41, i32 41>4078  %76 = fmul <8 x double> %split1, %splat.splat1384079  %77 = fadd <8 x double> %75, %764080  %splat.splat141 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 42, i32 42, i32 42, i32 42, i32 42, i32 42, i32 42, i32 42>4081  %78 = fmul <8 x double> %split2, %splat.splat1414082  %79 = fadd <8 x double> %77, %784083  %splat.splat144 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 43, i32 43, i32 43, i32 43, i32 43, i32 43, i32 43, i32 43>4084  %80 = fmul <8 x double> %split3, %splat.splat1444085  %81 = fadd <8 x double> %79, %804086  %splat.splat147 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 44, i32 44, i32 44, i32 44, i32 44, i32 44, i32 44, i32 44>4087  %82 = fmul <8 x double> %split4, %splat.splat1474088  %83 = fadd <8 x double> %81, %824089  %splat.splat150 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 45, i32 45, i32 45, i32 45, i32 45, i32 45, i32 45, i32 45>4090  %84 = fmul <8 x double> %split5, %splat.splat1504091  %85 = fadd <8 x double> %83, %844092  %splat.splat153 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 46, i32 46, i32 46, i32 46, i32 46, i32 46, i32 46, i32 46>4093  %86 = fmul <8 x double> %split6, %splat.splat1534094  %87 = fadd <8 x double> %85, %864095  %splat.splat156 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 47, i32 47, i32 47, i32 47, i32 47, i32 47, i32 47, i32 47>4096  %88 = fmul <8 x double> %split7, %splat.splat1564097  %89 = fadd <8 x double> %87, %884098  %splat.splat159 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 48, i32 48, i32 48, i32 48, i32 48, i32 48, i32 48, i32 48>4099  %90 = fmul <8 x double> %split, %splat.splat1594100  %splat.splat162 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 49, i32 49, i32 49, i32 49, i32 49, i32 49, i32 49, i32 49>4101  %91 = fmul <8 x double> %split1, %splat.splat1624102  %92 = fadd <8 x double> %90, %914103  %splat.splat165 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 50, i32 50, i32 50, i32 50, i32 50, i32 50, i32 50, i32 50>4104  %93 = fmul <8 x double> %split2, %splat.splat1654105  %94 = fadd <8 x double> %92, %934106  %splat.splat168 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 51, i32 51, i32 51, i32 51, i32 51, i32 51, i32 51, i32 51>4107  %95 = fmul <8 x double> %split3, %splat.splat1684108  %96 = fadd <8 x double> %94, %954109  %splat.splat171 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 52, i32 52, i32 52, i32 52, i32 52, i32 52, i32 52, i32 52>4110  %97 = fmul <8 x double> %split4, %splat.splat1714111  %98 = fadd <8 x double> %96, %974112  %splat.splat174 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 53, i32 53, i32 53, i32 53, i32 53, i32 53, i32 53, i32 53>4113  %99 = fmul <8 x double> %split5, %splat.splat1744114  %100 = fadd <8 x double> %98, %994115  %splat.splat177 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 54, i32 54, i32 54, i32 54, i32 54, i32 54, i32 54, i32 54>4116  %101 = fmul <8 x double> %split6, %splat.splat1774117  %102 = fadd <8 x double> %100, %1014118  %splat.splat180 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 55, i32 55, i32 55, i32 55, i32 55, i32 55, i32 55, i32 55>4119  %103 = fmul <8 x double> %split7, %splat.splat1804120  %104 = fadd <8 x double> %102, %1034121  %splat.splat183 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 56, i32 56, i32 56, i32 56, i32 56, i32 56, i32 56, i32 56>4122  %105 = fmul <8 x double> %split, %splat.splat1834123  %splat.splat186 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 57, i32 57, i32 57, i32 57, i32 57, i32 57, i32 57, i32 57>4124  %106 = fmul <8 x double> %split1, %splat.splat1864125  %107 = fadd <8 x double> %105, %1064126  %splat.splat189 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 58, i32 58, i32 58, i32 58, i32 58, i32 58, i32 58, i32 58>4127  %108 = fmul <8 x double> %split2, %splat.splat1894128  %109 = fadd <8 x double> %107, %1084129  %splat.splat192 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 59, i32 59, i32 59, i32 59, i32 59, i32 59, i32 59, i32 59>4130  %110 = fmul <8 x double> %split3, %splat.splat1924131  %111 = fadd <8 x double> %109, %1104132  %splat.splat195 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 60, i32 60, i32 60, i32 60, i32 60, i32 60, i32 60, i32 60>4133  %112 = fmul <8 x double> %split4, %splat.splat1954134  %113 = fadd <8 x double> %111, %1124135  %splat.splat198 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 61, i32 61, i32 61, i32 61, i32 61, i32 61, i32 61, i32 61>4136  %114 = fmul <8 x double> %split5, %splat.splat1984137  %115 = fadd <8 x double> %113, %1144138  %splat.splat201 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 62, i32 62, i32 62, i32 62, i32 62, i32 62, i32 62, i32 62>4139  %116 = fmul <8 x double> %split6, %splat.splat2014140  %117 = fadd <8 x double> %115, %1164141  %splat.splat204 = shufflevector <64 x double> %a1, <64 x double> undef, <8 x i32> <i32 63, i32 63, i32 63, i32 63, i32 63, i32 63, i32 63, i32 63>4142  %118 = fmul <8 x double> %split7, %splat.splat2044143  %119 = fadd <8 x double> %117, %1184144  %120 = shufflevector <8 x double> %14, <8 x double> %29, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>4145  %121 = shufflevector <8 x double> %44, <8 x double> %59, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>4146  %122 = shufflevector <8 x double> %74, <8 x double> %89, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>4147  %123 = shufflevector <8 x double> %104, <8 x double> %119, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>4148  %124 = shufflevector <16 x double> %120, <16 x double> %121, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>4149  %125 = shufflevector <16 x double> %122, <16 x double> %123, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31>4150  %126 = shufflevector <32 x double> %124, <32 x double> %125, <64 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 16, i32 17, i32 18, i32 19, i32 20, i32 21, i32 22, i32 23, i32 24, i32 25, i32 26, i32 27, i32 28, i32 29, i32 30, i32 31, i32 32, i32 33, i32 34, i32 35, i32 36, i32 37, i32 38, i32 39, i32 40, i32 41, i32 42, i32 43, i32 44, i32 45, i32 46, i32 47, i32 48, i32 49, i32 50, i32 51, i32 52, i32 53, i32 54, i32 55, i32 56, i32 57, i32 58, i32 59, i32 60, i32 61, i32 62, i32 63>4151  ret <64 x double> %1264152}4153