------- Comment #4 from uros at gcc dot gnu dot org  2008-05-07 13:12 -------
Subject: Bug 35714

Author: uros
Date: Wed May  7 13:12:02 2008
New Revision: 135041

URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=135041
Log:
        PR target/35714
        * config/i386/mmx.md (mmx_subv2sf3): New expander.
        (*mmx_subv2sf3): Rename from mmx_subv2sf3 insn pattern.
        (*mmx_eqv2sf3): Rename from mmx_eqv2sf3 insn pattern.
        (mmx_eqv2sf3): New expander.  Use ix86_fixup_binary_operands_no_copy
        to handle nonimmediate operands.
        (*mmx_paddwd): Rename from mmx_paddwd insn pattern.
        (mmx_paddwd): New expander.  Use ix86_fixup_binary_operands_no_copy
        to handle nonimmediate operands.
        (*mmx_pmulhrwv4hi3): Rename from mmx_pmulhrwv4hi3 insn pattern.
        (mmx_pmulhrwv4hi3): New expander.  Use
        ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
        (*sse2_umulv1siv1di3): Rename from sse2_umulv1siv1di3 insn pattern.
        (sse2_umulv1siv1di3): New expander.  Use
        ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
        (*mmx_eq<mode>3): Rename from mmx_eq<mode>3 insn pattern.
        (mmx_eq<mode>3): New expander.  Use
        ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
        (*mmx_uavgv8qi3): Rename from mmx_uavgv8qi3 insn pattern.
        (mmx_uavgv8qi3): New expander.  Use
        ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
        (*mmx_uavgv4hi3): Rename from mmx_uavgv4hi3 insn pattern.
        (mmx_uavgv4hi3): New expander.  Use
        ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.

        * config/i386/sse.md
        (*sse_movhlps): Rename from sse_movhlps insn pattern.
        (sse_movhlps): New expander.  Use ix86_fixup_binary_operands
        to handle nonimmediate operands.
        (*sse_movlhps): Rename from sse_movlhps insn pattern.
        (sse_movlhps): New expander.  Use ix86_fixup_binary_operands
        to handle nonimmediate operands.
        (*sse_loadhps): Rename from sse_loadhps insn pattern.
        (sse_loadhps): New expander.  Use ix86_fixup_binary_operands
        to handle nonimmediate operands.
        (*sse_loadlps): Rename from sse_loadlps insn pattern.
        (sse_loadlps): New expander.  Use ix86_fixup_binary_operands
        to handle nonimmediate operands.
        (*sse2_unpckhpd): Rename from sse2_unpckhpd insn pattern.
        (sse2_unpckhpd): New expander.  Use
        ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
        (*sse2_unpcklpd): Rename from sse2_unpcklpd insn pattern.
        (sse2_unpcklpd): New expander.  Use
        ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
        (*sse_loadhpd): Rename from sse_loadhpd insn pattern.
        (sse_loadhpd): New expander.  Use ix86_fixup_binary_operands
        to handle nonimmediate operands.
        (*sse_loadlpd): Rename from sse_loadlpd insn pattern.
        (sse_loadlpd): New expander.  Use ix86_fixup_binary_operands
        to handle nonimmediate operands.
        (*sse2_<plusminus_insn><mode>3): Rename from
        sse2_<plusminus_insn><mode>3 insn pattern.
        (sse2_<plusminus_insn><mode>3): New expander.  Use
        ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
        (*sse2_umulv2siv2di3): Rename from sse2_umulv2siv2di3 insn pattern.
        (sse2_umulv2siv2di3): New expander.  Use
        ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
        (*sse4_1_mulv2siv2di3): Rename from sse4_1_mulv2siv2di3 insn pattern.
        (sse4_1_mulv2siv2di3): New expander.  Use
        ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
        (*sse2_pmaddwd): Rename from sse2_pmaddwd insn pattern.
        (sse2_pmaddwd): New expander.  Use
        ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
        (*sse2_eq<mode>3): Rename from sse2_eq<mode>3 insn pattern.
        (sse2_eq<mode>3): New expander.  Use
        ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
        (*sse4_1_eqv2di3): Rename from sse4_1_eqv2di3 insn pattern.
        (sse4_1_eqv2di3): New expander.  Use
        ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
        (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
        (sse2_uavgv16qi3): New expander.  Use
        ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
        (*sse2_uavgv16qi3): Rename from sse2_uavgv16qi3 insn pattern.
        (sse2_uavgv16qi3): New expander.  Use
        ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
        (*sse2_uavgv8hi3): Rename from sse2_uavgv8hi3 insn pattern.
        (sse2_uavgv8hi3): New expander.  Use
        ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
        (*ssse3_pmulhrswv8hi3): Rename from ssse3_pmulhrswv8hi3 insn pattern.
        (ssse3_pmulhrswv8hi3): New expander.  Use
        ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.
        (*ssse3_pmulhrswv4hi3): Rename from ssse3_pmulhrswv4hi3 insn pattern.
        (ssse3_pmulhrswv4hi3): New expander.  Use
        ix86_fixup_binary_operands_no_copy to handle nonimmediate operands.

        (<sse>_vm<plusminus_insn><mode>3): Do not use ix86_binary_operator_ok.
        (<sse>_vmmul<mode>3): Ditto.
        (divv4sf3): Do not use ix86_fixup_binary_operands_no_copy.
        (divv2df3): Ditto.
        (ssse3_pmaddubsw128): Use register_operand for operand 1.
        (ssse3_pmaddubsw): Ditto.

        * config/i386/sse.md (ix86_fixup_binary_operands): Assert that src1
        and src2 must have the same mode when swapped.
        (ix86_expand_binop_builtin): Do not use ix86_fixup_binary_operands
        and ix86_binary_operator_ok.  Do not force operands in registers
        when optimizing.

testsuite/ChangeLog:

        PR target/35714
        * gcc.target/i386/pr35714.c: New test.


Added:
    trunk/gcc/testsuite/gcc.target/i386/pr35714.c
Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/i386/i386.c
    trunk/gcc/config/i386/mmx.md
    trunk/gcc/config/i386/sse.md
    trunk/gcc/testsuite/ChangeLog


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=35714

Reply via email to