This patch begins the process of supporting the vscale_range attribute
for RVV. It implements it according to our supported v0.10 version of
the specification, as opposed to the imminent v1.0.
Most notably, this patch implements the attribute conservatively
according to the minimum and maximum values of VLEN according to the
specification. However, the backend can be given more information about
VLEN using the -riscv-v-vector-bits-min and -riscv-v-vector-bits-max
flags. This means that the API it aims to replace,
TargetTransformInfo::getMaxVScale, may still generate better code with
its better knowledge.
It is unclear whether we want to move those backend options up into the
frontend, whether we are able to allow the backend to infer all
information from the IR attribute, or whether we even want to do that;
that's a wider discussion.