Why did the compiler even chose to fetch DWORDs only in the first place? It's unclear to me why the accumulator (apparently) determines the vectorization width?
After the loop it will do a horizontal add across the vector register to produce the final scalar result.