Right now memory dependencies checks and speculation for unit-strideness
are performed somewhat simultaneously. This is wrong because:
* Ideally, if accesses aren't unit-strided in runtime we might want to
take a version with gather/strided load (longer term). Those two loops
should share legality checks and the dispatch based on stride should
only happen after the legality condition has been satisfied.
* Even if we don't generate multiple vector loops (current situation),
not vectorizing at all is worse than generating gather-only vector loop.
This PR adds a test for the latter as that could be a first step in
adding full support for the former.
This isn't target-specific, but gathers aren't supported in generic
target and result in very ugly scalarized code/CHECKs, hence put the
test under RISCV/.
Co-authored-by: Florian Hahn <flo@fhahn.com>