[RISCV] Optimize multiplication with constant
- Break MUL with specific constant to a SLLI and an ADD/SUB on riscv32 with the M extension.
- Break MUL with specific constant to two SLLI and an ADD/SUB, if the constant needs a pair of LUI/ADDI to construct.
Reviewed by: craig.topper
Differential Revision: https://reviews.llvm.org/D93619