ia64: Implement vec_perm_const.
* config/ia64/ia64.c (MAX_VECT_LEN): New. (struct expand_vec_perm_d): New. (TARGET_VECTORIZE_VEC_PERM_CONST_OK): New. (ia64_unpack_assemble): Use ia64_expand_vec_perm_const_1. (expand_vselect, expand_vselect_vconcat): New. (expand_vec_perm_identity, expand_vec_perm_shrp): New. (expand_vec_perm_1, expand_vec_perm_broadcast): New. (expand_vec_perm_interleave_2, expand_vec_perm_v4hi_5): New. (ia64_expand_vec_perm_const_1, ia64_expand_vec_perm_const): New. (ia64_vectorize_vec_perm_const_ok): New. (ia64_expand_vec_setv2sf, ia64_expand_vec_perm_even_odd): New. * config/ia64/ia64-protos.h: Update. * config/ia64/vect.md (VEC): New mode iterator. (vecint): New mode attribute. (vec_interleave_lowv8qi, vec_interleave_highv8qi): Privatize with '*'. (vec_interleave_lowv4hi, vec_interleave_highv4hi): Likewise. (vec_interleave_lowv2si, vec_interleave_highv2si): Likewise. (vec_interleave_lowv2sf, vec_interleave_highv2sf): Likewise. (mix1_even, mix1_odd, mux1_alt): Likewise. (mux1_brcst_qi): Remove '*' from name. (vec_extract_evenv8qi, vec_extract_oddv8qi): Remove. (vec_extract_evenv4hi, vec_extract_oddv4hi): Remove. (vec_extract_evenv2si, vec_extract_oddv2si): Remove. (vec_extract_evenv2sf, vec_extract_oddv2sf): Remove. (vec_extract_evenodd_helper): Remove. (vec_setv2sf): Use ia64_expand_vec_setv2sf. (vec_pack_trunc_v4hi): Use ia64_expand_vec_perm_even_odd. (vec_pack_trunc_v2si): Likewise. (vec_perm_const<VEC>): New. From-SVN: r182564
Showing
Please
register
or
sign in
to comment