We need to port the ia64 support for vectorization of multiple-datatypes from
autovect-branch. This is the patch missing from mainline (wasn't included in
http://gcc.gnu.org/ml/gcc-patches/2006-08/msg00166.html cause I cauldn't test
this):

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

        * config/ia64/ia64.c (TARGET_VECTORIZE_BUILTIN_EXTRACT_EVEN): New.
        (TARGET_VECTORIZE_BUILTIN_EXTRACT_ODD): New.
        (TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_EVEN,
        TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_ODD, ia64_builtin_mul_widen_even,
        ia64_builtin_mul_widen_odd, builtin_ia64_pmpy_r, builtin_ia64_pmpy_l,
        IA64_BUILTIN_PMPY_R, IA64_BUILTIN_PMPY_L): New
        (ia64_init_builtins): Initialize builtin_ia64_pmpy_[rl].
        (ia64_expand_builtin): Expand them.
        (ia64_expand_unpack): New.
        * config/ia64/vect.md (smulv4hi3_highpart, umulv4hi3_highpart): New.
        (vec_pack_ssat_v4hi): Rename from pack2_sss.
        (vec_pack_usat_v4hi): Rename from pack2_uss.
        (vec_pack_ssat_v2si): Rename from pack4_sss.
        (vec_pack_mod_v4hi, vec_pack_mod_v2si): New.
        (vec_interleave_lowv8qi): Rename from unpack1_l.
        (vec_interleave_highv8qi): Rename from unpack1_h.
        (vec_interleave_lowv4hi): Rename from unpack2_l.
        (vec_interleave_highv4hi): Rename from unpack2_h.
        (vec_interleave_lowv2si): Rename from unpack4_l.
        (vec_interleave_highv2si): Rename from unpack4_h.
        (vec_unpacku_hi_v8qi, vec_unpacks_hi_v8qi): New.
        (vec_unpacku_lo_v8qi, vec_unpacks_lo_v8qi): New.
        (vec_unpacku_hi_v4hi, vec_unpacks_hi_v4hi): New.
        (vec_unpacku_lo_v4hi, vec_unpacks_lo_v4hi): New.
        * config/ia64/ia64-protos.h (ia64_expand_unpack): Declare.

Once the above is merged, we can add ia64 to the lists of targets that support
the following functions in testsuite/lib/target-support.exp:
check_effective_target_vect_sdot_hi
check_effective_target_vect_udot_qi
check_effective_target_vect_sdot_qi
check_effective_target_vect_widen_sum_qi_to_hi
check_effective_target_vect_widen_sum_hi_to_si


-- 
           Summary: missed optimization: model missing vec_pack/unpack
                    idioms for ia64
           Product: gcc
           Version: 4.3.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: dorit 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=29778

Reply via email to