RISC-V: Declare TLSDESC clobbers for vector registers and CSRs per psABI

Per the RISC-V psABI, the TLSDESC resolver clobbers a0 and t0 in the
base case.  With the new psABI update
(https://github.com/riscv-non-isa/riscv-elf-psabi-doc/pull/496),
when the V extension is enabled, it additionally clobbers all vector
registers and vector CSRs.

This patch updates the clobbering of tlsdesc define_insn: clobbering
not only a0 and t0, but also all V-regs (using 4 x LMUL8 reg
groups covering all 32 physical V-regs), and 4 vector CSRs
(vl/vtype/vxrm/vxstat).

Three new tests are added covering GPR, vector register, and vector
CSR clobber behavior.

gcc/ChangeLog:

	* config/riscv/riscv.md (VXSAT_REGNUM): New constant.
	(@tlsdesc<mode>): update clobbering.

gcc/testsuite/ChangeLog:

	* gcc.target/riscv/tlsdesc_clobber.c: New test.
	* gcc.target/riscv/tlsdesc_clobber_v.c: New test.
	* gcc.target/riscv/tlsdesc_clobber_v_csr.c: New test.
4 files changed