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: PR 8878


On Wed, Jul 23, 2003 at 04:06:10PM -0700, Mark Mitchell wrote:
> 
> Aldy --
> 
> Last week, you indicated that you would try to get a patch for PR 8878
> on the 3.3 branch.  (This is a regression with SIMD stuff on x86.)
> 
> What is the status of that?

Oops, sorry, long week.  Working on it right now.

I have found the patch that fixes the problem on 3.3, and I am running
tests.

The patch adds a whole bunch of PPC specific code which I will leave
out of the backport since they are just optimizations, and I don't want
to make such changes this late in the game.

Mark, can I assume the follwing patch is OK to backport to 3.3?

Also, I will be changing the date on the patch below, since it was
really committed on the 1st of April.

Aldy

2003-02-31  Aldy Hernandez  <aldyh@redhat.com>
                                                                                
        * testsuite/gcc.c-torture/execute/simd-3.c: New.
                                                                                
        * expr.c (expand_expr): Handle VECTOR_CST.
        (const_vector_from_tree): New.
 
        * varasm.c (output_constant): Handle VECTOR_CST.
 
        * c-typeck.c (digest_init): Build a vector constant from a
        VECTOR_TYPE.
 
        * config/rs6000/rs6000.c: Remove prototype for
        easy_vector_constant.
        (easy_vector_constant): Add mode parameter.  Rewrite to handle
        more easy constants.
        (rs6000_emit_move): Pass mode to easy_vector_constant.
        Call emit_easy_vector_insn for SPE V2SI vector constant moves.
        (emit_easy_vector_insn): New.
        (easy_vector_same): New.
        (EASY_VECTOR_15): New macro.
        (EASY_VECTOR_15_ADD_SELF): New macro.
        (bdesc_2arg): Rename to xorv2si3.
        (easy_vector_constant_add_self): New.
        (input_operand): Allow vector constants.
 
        * config/rs6000/rs6000.h (PREDICATE_CODES): Add
        easy_vector_constant, easy_vector_constant_add_self.
        (EXTRA_CONSTRAINT): Add 'W'.
        * config/rs6000/rs6000-protos.h: Add prototype for
        easy_vector_constant, emit_easy_vector_insn.
 
        * config/rs6000/altivec.md (xorv8hi3): New.
        (xorv16qi3): New.
        Remove all _const0 patterns.
        (movv4si_internal): Rewrite to use code.  Add vector constant to
        vector alternative.  Add splitter.
        (movv8hi_internal): Same.
        (movv16qi_internal): Same.
        (movv4sf_internal): Same.
        Change the unspecs for vspltis* to use constants.
 
        * config/rs6000/spe.md ("xorv4hi3"): New.
        ("spe_evxor"): Rename to xorv2si3.
        ("xorv1di3"): New.
        Remove all _const0 patterns.
        (movv2si_internal): Rewrite to use code.  Add vector constant to
        alternatives.  Add splitter.
        (movv4hi_internal): Add vector constant to alternatives.
        (movv1di_internal): Same.
        (movv2sf_internal): Same.


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