https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68973

--- Comment #4 from Michael Meissner <meissner at gcc dot gnu.org> ---
I haven't looked at the bug, but on PowerPC systems before power8, the
following is illegal:

(insn 258 153 259 8 (set (reg:DI 9 9)
        (reg/f:DI 63 31 [orig:185 p3$_M_node ] [185])) pr67211.C:28 540
{*movdi_internal64}
     (nil))

That is because register 9 is a GPR register and register 63 is a FPR register.
 Power8 systems in 64-bit mode have the ability to move values between GPRs and
FPRs/VSX registers, but earlier systems don't.  In order to transfer stuff
between the two register sets, you would need to do a store and a load.  Power8
32-bit (big endian only) would need scratch registers and multiple instructions
to transfer 64-bit values.

Reply via email to