This is the mail archive of the
mailing list for the GCC project.
Re: Reload generate invalid instruction on ppc64
- From: Carrot Wei <carrot at google dot com>
- To: Carrot Wei <carrot at google dot com>, vmakarov at redhat dot com, David Edelsohn <dje dot gcc at gmail dot com>, GCC Development <gcc at gcc dot gnu dot org>
- Date: Tue, 5 Aug 2014 10:06:35 -0700
- Subject: Re: Reload generate invalid instruction on ppc64
- Authentication-results: sourceware.org; auth=none
- References: <CAEe8uEDftFtsBzhrj5Ab2yj+-uqzAXF8bKZDjjFm8UG-KL24Uw at mail dot gmail dot com> <CAEe8uEB8ZntdO5uHQN-zSCE3fiVC=VyQ2pr_JF+01Jt+X0jVZg at mail dot gmail dot com> <20140805040200 dot GM8921 at bubble dot grove dot modra dot org>
On Mon, Aug 4, 2014 at 9:02 PM, Alan Modra <email@example.com> wrote:
> On Mon, Aug 04, 2014 at 05:54:04PM -0700, Carrot Wei wrote:
>> Another problem is in the definition of insn pattern "*movdi_internal64".
>> (define_insn "*movdi_internal64"
>> [(set (match_operand:DI 0 "nonimmediate_operand"
>> (match_operand:DI 1 "input_operand"
>> && (gpc_reg_operand (operands, DImode)
>> || gpc_reg_operand (operands, DImode))"
>> The predicates of this insn pattern allow the moving of an integer to
>> VSX register, but there is no constraint allow this case. Can this
>> cause problem in reload?
> Probably, just as you found with fprs. The underlying issue is that
> the operand predicates don't match the operand constraints. What's
> more, you can't make them match without breaking up the insn, or
> adding a whole lot of extra alternatives.
VSX instructions can't load integer constant to vsx registers. So I
will try to split this insn to see if it can fix the reload problem.
thanks a lot