https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104698
--- Comment #3 from Michael Meissner <meissner at gcc dot gnu.org> --- It goes beyond 'just use RTL'. The problem is the code only generates an altivec instruction. So if the __int128_t value is in a GPR, the compiler will need to do a move to the vector registers (1 insn), the instruction, and then move back to the GPRs (2 insns). What it needs to do is have code paths for when the __int128_t is in a GPR and a code path when it is in an altivec register. I have patches that I'm testing that does this (i.e. handles both GPR and Altivec registers) to avoid having to do direct moves.