[Bug tree-optimization/86625] funroll-loops doesn't unroll, producing >3x assembly and running 10x slower than manual complete unrolling
elrodc at gmail dot com
gcc-bugzilla@gcc.gnu.org
Mon Jul 23 14:28:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86625
--- Comment #5 from Chris Elrod <elrodc at gmail dot com> ---
Created attachment 44424
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=44424&action=edit
Smaller avx512 kernel that still spills into the stack
This generated 18 total `vmovapd` (I think there'd ideally be 0) when compiled
with:
gfortran -march=skylake-avx512 -mprefer-vector-width=512 -O2 -ftree-vectorize
-shared -fPIC -S kernels16x32x13.f90 -o kernels16x32x13.s
4 of which moved onto the stack, and one moved from the stack back into a
register.
(The others were transfered from the stack within vfmadd instructions:
`vfmadd213pd 72(%rsp), %zmm11, %zmm15`
)
Similar to the larger kernel, using `-O3` instead of `-O2 -ftree-vectorize`
eliminated two of the `vmovapd`instructions between registers, but none of the
spills.
More information about the Gcc-bugs
mailing list