rs6000.c (output_vec_const_move): Find all cases of EASY_VECTOR_15_ADD_SELF.
authorHartmut Penner <hpenner@de.ibm.com>
Tue, 30 Mar 2004 08:25:30 +0000 (08:25 +0000)
committerHartmut Penner <hpenner@gcc.gnu.org>
Tue, 30 Mar 2004 08:25:30 +0000 (08:25 +0000)
commit452a7d365084a8dc318c005e2a312217ab43c719
tree83efd8553d09111a4a7bdf99ac19f4d1fe4aed48
parent708d2456294faee1a7dbbebee014e889f2b525d6
rs6000.c (output_vec_const_move): Find all cases of EASY_VECTOR_15_ADD_SELF.

        * config/rs6000/rs6000.c (output_vec_const_move):
        Find all cases of EASY_VECTOR_15_ADD_SELF.
        (easy_vector_constant_add_self): Accept
        all vector constant loadable by vsplt* and vadd*.
        (easy_vector_same): Use easy_vector_splat_const.
        (easy_vector_const): Use easy_vector_splat_const.
        (easy_vector_splat_const): New function.
        (gen_easy_vector_constant_add_self): New function.

        * config/rs6000/rs6000-protos.c (gen_easy_vector_constant_add_self):
        New prototype.

        * config/rs6000/altivec.md (movv4si splitter): Change to
        emit move insn with halfed vector constant.
        (*movv8hi splitter): Likewise.
        (*movv16qi splitter): Likewise.

From-SVN: r80077
gcc/ChangeLog
gcc/config/rs6000/altivec.md
gcc/config/rs6000/rs6000-protos.h
gcc/config/rs6000/rs6000.c