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