https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83479

--- Comment #1 from Daniel Fruzynski <bugzi...@poradnik-webmastera.com> ---
Here is clang 5.0 output, it is also shorted than gcc one (213 lines, gcc
produced 247).

test(double const (*) [8]): # @test(double const (*) [8])
  vmovapd ymm3, ymmword ptr [rdi + 64]
  vmovapd ymm4, ymmword ptr [rdi + 128]
  vmovapd ymm5, ymmword ptr [rdi + 192]
  vmovapd ymm6, ymmword ptr [rdi + 256]
  vmovapd ymm8, ymmword ptr [rdi + 320]
  vmovapd ymm2, ymmword ptr [rdi + 384]
  vmovapd ymm1, ymmword ptr [rdi + 576]
  vsqrtpd ymm0, ymm1
  vmovupd ymmword ptr [rsp - 56], ymm0 # 32-byte Spill
  vpermpd ymm7, ymm1, 85 # ymm7 = ymm1[1,1,1,1]
  vsqrtpd ymm9, ymm7
  vmovapd ymm10, ymmword ptr [rdi + 448]
  vmulpd ymm7, ymm1, ymm7
  vsubpd ymm3, ymm3, ymm7
  vmulpd ymm3, ymm0, ymm3
  vpermpd ymm7, ymm1, 170 # ymm7 = ymm1[2,2,2,2]
  vsqrtpd ymm11, ymm7
  vmulpd ymm9, ymm9, ymm3
  vmulpd ymm3, ymm1, ymm7
  vsubpd ymm3, ymm4, ymm3
  vmulpd ymm3, ymm0, ymm3
  vpermpd ymm4, ymm1, 255 # ymm4 = ymm1[3,3,3,3]
  vsqrtpd ymm7, ymm4
  vmulpd ymm11, ymm3, ymm11
  vmulpd ymm3, ymm1, ymm4
  vsubpd ymm3, ymm5, ymm3
  vmulpd ymm3, ymm0, ymm3
  vmulpd ymm4, ymm3, ymm7
  vsqrtpd ymm7, ymm0
  vmulpd ymm3, ymm1, ymm0
  vsubpd ymm5, ymm6, ymm3
  vmulpd ymm5, ymm0, ymm5
  vmulpd ymm5, ymm5, ymm7
  vsubpd ymm6, ymm8, ymm3
  vmulpd ymm6, ymm0, ymm6
  vmulpd ymm6, ymm6, ymm7
  vsubpd ymm2, ymm2, ymm3
  vmulpd ymm2, ymm0, ymm2
  vmulpd ymm8, ymm2, ymm7
  vsubpd ymm2, ymm10, ymm3
  vmulpd ymm2, ymm0, ymm2
  vmulpd ymm3, ymm2, ymm7
  vsqrtpd ymm2, ymm3
  vpermpd ymm10, ymm3, 85 # ymm10 = ymm3[1,1,1,1]
  vsqrtpd ymm12, ymm10
  vmulpd ymm10, ymm3, ymm10
  vsubpd ymm9, ymm9, ymm10
  vmulpd ymm9, ymm2, ymm9
  vmulpd ymm9, ymm12, ymm9
  vpermpd ymm10, ymm3, 170 # ymm10 = ymm3[2,2,2,2]
  vsqrtpd ymm12, ymm10
  vmulpd ymm10, ymm3, ymm10
  vsubpd ymm10, ymm11, ymm10
  vmulpd ymm10, ymm2, ymm10
  vmulpd ymm10, ymm12, ymm10
  vpermpd ymm11, ymm3, 255 # ymm11 = ymm3[3,3,3,3]
  vsqrtpd ymm12, ymm11
  vmulpd ymm11, ymm3, ymm11
  vsubpd ymm4, ymm4, ymm11
  vmulpd ymm4, ymm2, ymm4
  vmulpd ymm11, ymm4, ymm12
  vmulpd ymm4, ymm3, ymm0
  vsubpd ymm5, ymm5, ymm4
  vmulpd ymm5, ymm2, ymm5
  vmulpd ymm12, ymm7, ymm5
  vsubpd ymm5, ymm6, ymm4
  vmulpd ymm6, ymm2, ymm5
  vsubpd ymm4, ymm8, ymm4
  vmulpd ymm4, ymm2, ymm4
  vmulpd ymm5, ymm7, ymm4
  vsqrtpd ymm4, ymm5
  vpermpd ymm8, ymm5, 85 # ymm8 = ymm5[1,1,1,1]
  vsqrtpd ymm13, ymm8
  vmulpd ymm6, ymm7, ymm6
  vmulpd ymm8, ymm5, ymm8
  vsubpd ymm8, ymm9, ymm8
  vmulpd ymm8, ymm4, ymm8
  vpermpd ymm9, ymm5, 170 # ymm9 = ymm5[2,2,2,2]
  vsqrtpd ymm14, ymm9
  vmulpd ymm13, ymm13, ymm8
  vmulpd ymm8, ymm5, ymm9
  vsubpd ymm8, ymm10, ymm8
  vmulpd ymm8, ymm4, ymm8
  vpermpd ymm9, ymm5, 255 # ymm9 = ymm5[3,3,3,3]
  vsqrtpd ymm10, ymm9
  vmulpd ymm14, ymm8, ymm14
  vmulpd ymm8, ymm5, ymm9
  vsubpd ymm8, ymm11, ymm8
  vmulpd ymm8, ymm4, ymm8
  vmulpd ymm9, ymm8, ymm10
  vmulpd ymm8, ymm5, ymm0
  vsubpd ymm10, ymm12, ymm8
  vmulpd ymm10, ymm4, ymm10
  vmulpd ymm10, ymm7, ymm10
  vsubpd ymm6, ymm6, ymm8
  vmulpd ymm6, ymm4, ymm6
  vmulpd ymm8, ymm7, ymm6
  vsqrtpd ymm6, ymm8
  vpermpd ymm11, ymm8, 85 # ymm11 = ymm8[1,1,1,1]
  vsqrtpd ymm12, ymm11
  vmulpd ymm11, ymm8, ymm11
  vsubpd ymm11, ymm13, ymm11
  vmulpd ymm11, ymm6, ymm11
  vmulpd ymm11, ymm11, ymm12
  vpermpd ymm12, ymm8, 170 # ymm12 = ymm8[2,2,2,2]
  vsqrtpd ymm13, ymm12
  vmulpd ymm12, ymm8, ymm12
  vsubpd ymm12, ymm14, ymm12
  vmulpd ymm12, ymm6, ymm12
  vmulpd ymm12, ymm12, ymm13
  vpermpd ymm13, ymm8, 255 # ymm13 = ymm8[3,3,3,3]
  vsqrtpd ymm14, ymm13
  vmulpd ymm13, ymm8, ymm13
  vsubpd ymm13, ymm9, ymm13
  vmulpd ymm9, ymm8, ymm0
  vsubpd ymm9, ymm10, ymm9
  vmulpd ymm9, ymm9, ymm6
  vmulpd ymm9, ymm7, ymm9
  vsqrtpd ymm7, ymm9
  vpermpd ymm10, ymm9, 85 # ymm10 = ymm9[1,1,1,1]
  vsqrtpd ymm15, ymm10
  vmulpd ymm13, ymm6, ymm13
  vmulpd ymm13, ymm13, ymm14
  vmulpd ymm10, ymm9, ymm10
  vsubpd ymm10, ymm11, ymm10
  vpermpd ymm11, ymm9, 170 # ymm11 = ymm9[2,2,2,2]
  vsqrtpd ymm14, ymm11
  vmulpd ymm10, ymm10, ymm7
  vmulpd ymm15, ymm10, ymm15
  vmulpd ymm10, ymm9, ymm11
  vsubpd ymm10, ymm12, ymm10
  vpermpd ymm11, ymm9, 255 # ymm11 = ymm9[3,3,3,3]
  vsqrtpd ymm12, ymm11
  vmulpd ymm0, ymm10, ymm7
  vmulpd ymm10, ymm9, ymm11
  vsubpd ymm10, ymm13, ymm10
  vmulpd ymm10, ymm7, ymm10
  vmulpd ymm11, ymm10, ymm12
  vsqrtpd ymm10, ymm11
  vpermpd ymm12, ymm11, 85 # ymm12 = ymm11[1,1,1,1]
  vsqrtpd ymm13, ymm12
  vmulpd ymm0, ymm0, ymm14
  vmulpd ymm12, ymm11, ymm12
  vsubpd ymm12, ymm15, ymm12
  vmulpd ymm12, ymm10, ymm12
  vpermpd ymm14, ymm11, 170 # ymm14 = ymm11[2,2,2,2]
  vsqrtpd ymm15, ymm14
  vmulpd ymm12, ymm13, ymm12
  vmulpd ymm13, ymm11, ymm14
  vsubpd ymm0, ymm0, ymm13
  vmulpd ymm0, ymm10, ymm0
  vmulpd ymm13, ymm15, ymm0
  vsqrtpd ymm0, ymm13
  vmovupd ymmword ptr [rsp - 88], ymm0 # 32-byte Spill
  vpermpd ymm14, ymm13, 85 # ymm14 = ymm13[1,1,1,1]
  vsqrtpd ymm15, ymm14
  vmulpd ymm14, ymm13, ymm14
  vsubpd ymm12, ymm12, ymm14
  vmulpd ymm12, ymm0, ymm12
  vmulpd ymm14, ymm15, ymm12
  vbroadcastsd ymm12, xmm1
  vmulpd ymm1, ymm1, ymm12
  vmovsd xmm0, qword ptr [rdi] # xmm0 = mem[0],zero
  vsubsd xmm0, xmm0, xmm1
  vmulsd xmm0, xmm0, qword ptr [rsp - 56] # 16-byte Folded Reload
  vsqrtpd ymm1, ymm12
  vmulsd xmm0, xmm1, xmm0
  vbroadcastsd ymm1, xmm3
  vmulpd ymm3, ymm3, ymm1
  vsubsd xmm0, xmm0, xmm3
  vmulsd xmm0, xmm2, xmm0
  vsqrtpd ymm1, ymm1
  vmulsd xmm0, xmm1, xmm0
  vbroadcastsd ymm1, xmm5
  vmulpd ymm2, ymm5, ymm1
  vsubsd xmm0, xmm0, xmm2
  vmulsd xmm0, xmm4, xmm0
  vsqrtpd ymm1, ymm1
  vmulsd xmm0, xmm1, xmm0
  vbroadcastsd ymm1, xmm8
  vmulpd ymm2, ymm8, ymm1
  vsubsd xmm0, xmm0, xmm2
  vmulsd xmm0, xmm6, xmm0
  vsqrtpd ymm1, ymm1
  vmulsd xmm0, xmm1, xmm0
  vbroadcastsd ymm1, xmm9
  vmulpd ymm2, ymm9, ymm1
  vsubsd xmm0, xmm0, xmm2
  vmulsd xmm0, xmm0, xmm7
  vsqrtpd ymm1, ymm1
  vmulsd xmm0, xmm0, xmm1
  vbroadcastsd ymm1, xmm11
  vmulpd ymm2, ymm11, ymm1
  vsubsd xmm0, xmm0, xmm2
  vmulsd xmm0, xmm10, xmm0
  vsqrtpd ymm1, ymm1
  vmulsd xmm0, xmm1, xmm0
  vbroadcastsd ymm1, xmm13
  vmulpd ymm2, ymm13, ymm1
  vsubsd xmm0, xmm0, xmm2
  vsqrtpd ymm1, ymm1
  vmulsd xmm0, xmm0, qword ptr [rsp - 88] # 16-byte Folded Reload
  vbroadcastsd ymm2, xmm14
  vmulsd xmm0, xmm1, xmm0
  vmulpd ymm1, ymm14, ymm2
  vsubsd xmm0, xmm0, xmm1
  vsqrtpd ymm1, ymm14
  vmulsd xmm0, xmm1, xmm0
  vsqrtpd ymm1, ymm2
  vmulsd xmm0, xmm1, xmm0
  vzeroupper
  ret

Reply via email to