This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: PATCH: PR target/59458: alternative 13 in *movsf_internal is mishandled
- From: Uros Bizjak <ubizjak at gmail dot com>
- To: "H.J. Lu" <hjl dot tools at gmail dot com>
- Cc: "gcc-patches at gcc dot gnu dot org" <gcc-patches at gcc dot gnu dot org>
- Date: Wed, 11 Dec 2013 00:19:35 +0100
- Subject: Re: PATCH: PR target/59458: alternative 13 in *movsf_internal is mishandled
- Authentication-results: sourceware.org; auth=none
- References: <20131210222328 dot GA6495 at intel dot com>
On Tue, Dec 10, 2013 at 11:23 PM, H.J. Lu <hongjiu.lu@intel.com> wrote:
> Hi,
>
> We have
>
> (define_insn "*movsf_internal"
> [(set (match_operand:SF 0 "nonimmediate_operand"
> "=Yf*f,m ,Yf*f,?r ,?m,v,v,v,m,?r,?Yi,!*y,!*y,!m,!r ,!*Ym")
> (match_operand:SF 1 "general_operand"
> "Yf*fm,Yf*f,G ,rmF,rF,C,v,m,v,Yj,r ,*y ,m ,*y,*Yn,r"))]
>
> alternative 13 is MMXMOV instruction to store "*y" to "!m". But
> alternative 13 gets the default mode, SF. But MMXMOV is
>
> case TYPE_MMXMOV:
> switch (get_attr_mode (insn))
> {
> case MODE_DI:
> return "movq\t{%1, %0|%0, %1}";
> case MODE_SI:
> return "movd\t{%1, %0|%0, %1}";
>
> default:
> gcc_unreachable ();
> }
>
> MODE_SF gets gcc_unreachable. This patch sets mode to SI for
> alternative 13. Tested on Linux/x86-64. OK to install?
>
> Thanks.
>
>
> H.J.
> ---
> 2013-12-10 H.J. Lu <hongjiu.lu@intel.com>
>
> PR target/59458
> * config/i386/i386.md (*movsf_internal): Set mode to SI for
> alternative 13.
OK for mainline and release branches.
Thanks,
Uros.