vec_extract_even/odd are not implemented on ia64. They are used in
vectorization of strided loads, and are implemented only on powerpc (patch
http://gcc.gnu.org/ml/gcc-patches/2006-03/msg01679.html (revision 119088)).

The implementation exists on autovect-branch, but it possibly can be more
efficient (http://gcc.gnu.org/ml/gcc-patches/2006-09/msg01278.html):

2005-12-01  Richard Henderson  <[EMAIL PROTECTED]>

        * targhooks.c (interleave_vectorize_builtin_extract_evenodd): New.
        (interleave_vectorize_builtin_extract_even): New.
        (interleave_vectorize_builtin_extract_odd): New.
        * targhooks.h: Declare them.
        * config/i386/i386.c (TARGET_VECTORIZE_BUILTIN_EXTRACT_EVEN): New.
        (TARGET_VECTORIZE_BUILTIN_EXTRACT_ODD): New.

2005-12-02  Richard Henderson  <[EMAIL PROTECTED]>

        * config/ia64/ia64.c (TARGET_VECTORIZE_BUILTIN_EXTRACT_EVEN): New.
        (TARGET_VECTORIZE_BUILTIN_EXTRACT_ODD): New.

2006-09-28  Ira Rosen  <[EMAIL PROTECTED]>

        * targhooks.c (interleave_vectorize_builtin_extract_evenodd):
        Fix to produce a correct instructions sequence. 
        * tree-vect-transform.c (vect_permute_store_chain): Choose the
        correct instruction according to the endianness. Call
        mark_new_vars_to_rename.

Once the above is merged, we can add ia64 to the list of targets that support
check_effective_target_vect_extract_even_odd in
testsuite/lib/target-support.exp.

Ira


-- 
           Summary: missed optimization: model missing vec_extract_even/odd
                    idioms for ia64
           Product: gcc
           Version: 4.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: irar at il dot ibm dot com
 GCC build triplet: ia64-*-*
  GCC host triplet: ia64-*-*
GCC target triplet: ia64-*-*


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

Reply via email to