Offloaded matvec to a generic sparse matrix kernel, all tests pass on gfortran