While svd() routine accepts AbstractMatrix, it passes that argument to bidiagonalize_tall!(), which accepts Matrix. It seems to me that bidiagonalization routine can take the abstract type as well. That would allow using GenericSVD on wider range of values.