This code
void foo(float * restrict a, float * restrict b, float * restrict c, unsigned n)
{
for (unsigned i = 0; i < n; ++i)
c[i] = a[i] * b[i];
}was compiled with "-march=knl" but used only %ymm registers.
With my fix applied the generated code will use %zmm registers as it should be.