This patch simplifies the DAGs generated when using the intrinsic @llvm.vscale.* as follows:
- Fold (add (vscale * C0), (vscale * C1)) to (vscale * (C0 + C1)).
- Canonicalize (sub X, (vscale * C)) to (add X, (vscale * -C)).
- Fold (mul (vscale * C0), C1) to (vscale * (C0 * C1)).
- Fold (shl (vscale * C0), C1) to (vscale * (C0 << C1)).
The test sve-gep-ll have been updated to reflect the folding introduced by this patch.
[nit] Missing opening bracket: (vscale * C0 + C1)) --> (vscale * (C0 + C1))