im2col can be applied via unfold. There should be no loops in the matrix multiplication and the unfolding should be implicit for performance reasons.
The usage of loops might slow down the execution in a lot of use cases, but there might be use cases, where it would make sense to use a loop instead of a dense operation.