[RISCV] Canonicalize mask-producing SETCC for easier conversion on the consuming instruction to be VL-predicate (#214877)
Split out from #214350 .
This patch canonicalizes
```
%b = splat %base
%s = <%offset, %offset + 1, %offset + 2, %offset + 3, ...>
%a = add nuw %b, %s
%N = splat %n
%p = setcc ult %a, %N
```
into
```
%s = <0, 1, 2, 3, ...>
%m = sub %n, min(%n, %base + %offset)
%M = splat %m
%p = setcc ult %s, %M
```
so that if `%p` is later used by masked operations like `masked.load`,
we can easily convert the latter to using VL-predicate rather than using
mask.