This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: PATCH: PR target/59458: alternative 13 in *movsf_internal is mishandled


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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]