using SomeVec = Vector<T>
for (size_t i=0; i<n; ++i) {
for (size_t j=0; k<n; j+=SomeVec::size()) {
SomeVec c_ij = A[i][0] * SomeVec(&B[0],j, Aligned);
for (size_t k = 1; k < n; ++k) {
c_ij += A[i][k] * SomeVec(&N[k][j], Aligned);
}
c_ij.store(&C[i][j], Aligned);
}
}
For my own work on vector languages and compilers I've had an easier time of it since they have been designed to enable simpler SIMD code generation.
I've moved into non-finance stuff for quite a while now though, so not sure what's become of it. Given business challenges in that particular sub-field, who knows..