https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88234
--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
The problem is that the builtin has __vector signed int arguments:
<function_decl 0x7fffefda2700 __builtin_altivec_vadduwm
type <function_type 0x7fffefda07e0
type <vector_type 0x7fffefd547e0 __vector signed int type <integer_type
0x7fffefc8f5e8 int>
V4SI
size <integer_cst 0x7fffefc91000 constant 128>
unit-size <integer_cst 0x7fffefc91018 constant 16>
align:128 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type
0x7fffefd54738 nunits:4>
SI
size <integer_cst 0x7fffefc911f8 constant 32>
unit-size <integer_cst 0x7fffefc91210 constant 4>
align:32 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type
0x7fffefd742a0
arg-types <tree_list 0x7fffefd9d618 value <vector_type 0x7fffefd547e0
__vector signed int>
chain <tree_list 0x7fffefd9d640 value <vector_type 0x7fffefd547e0
__vector signed int>
chain <tree_list 0x7fffefc92050 value <void_type 0x7fffefc8ff18
void>>>>
pointer_to_this <pointer_type 0x7fffefe53348>>
readonly nothrow public external built-in decl_6 SI <built-in>:0:0
align:32 warn_if_not_align:0 built-in: BUILT_IN_MD:48 context
<translation_unit_decl 0x7fffefe1aac8 pr88234.c> chain <function_decl
0x7fffefda2800 __builtin_altivec_vaddfp>>
Guess most of the builtins have those, so the easiest fix to me seems to be to
cast it in the gimple_fold targhook.