The second argument of these builtins is an unsigned immediate. For
vec_rli the API allows immediates up to 64 bits whereas the instruction
verll only allows immediates up to 32 bits. Since the shift count
equals the immediate modulo vector element size, truncating those
immediates is fine.
Passing a non-immediate argument to vec_rli already results in an error
message without this patch:
t.c: In function ‘foo’:
t.c:7:10: error: invalid argument 2 for builtin ‘__builtin_s390_verllf’
7 | return __builtin_s390_vec_rli (v, x);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Whereas with this patch
t.c: In function 'foo':
t.c:7:10: error: constant value required for builtin '__builtin_s390_verllf' argument 2
7 | return __builtin_s390_vec_rli (v, x);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
the error message, generated by s390_const_operand_ok, clearly speaks
about a constant argument value.