RISC-V: Optimize branches testing a bit-range or a shifted immediate

gcc/ChangeLog:

	* config/riscv/predicates.md (shifted_const_arith_operand): New predicate.
	(uimm_extra_bit_operand): New predicate.
	* config/riscv/riscv.md (*branch<ANYI:mode>_shiftedarith_equals_zero):
	New pattern.
	(*branch<ANYI:mode>_shiftedmask_equals_zero): New pattern.

gcc/testsuite/ChangeLog:

	* gcc.target/riscv/branch-1.c: New test.
3 files changed