https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104868
Segher Boessenkool <segher at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |segher at gcc dot gnu.org --- Comment #1 from Segher Boessenkool <segher at gcc dot gnu.org> --- operands[1] is "b", but is given GPR 0 here. The instruction pattern should handle that case. Luckily it can just use "r" here. === diff --git a/gcc/config/rs6000/vsx.md b/gcc/config/rs6000/vsx.md index b53de1038725..a84ae5df7c0c 100644 --- a/gcc/config/rs6000/vsx.md +++ b/gcc/config/rs6000/vsx.md @@ -4576,7 +4576,7 @@ (define_expand "vsx_splat_<mode>" (define_insn "vsx_splat_<mode>_reg" [(set (match_operand:VSX_D 0 "vsx_register_operand" "=wa,we") (vec_duplicate:VSX_D - (match_operand:<VS_scalar> 1 "gpc_reg_operand" "wa,b")))] + (match_operand:<VS_scalar> 1 "gpc_reg_operand" "wa,r")))] "VECTOR_MEM_VSX_P (<MODE>mode)" "@ xxpermdi %x0,%x1,%x1,0 === Try with that?