On Mon, Oct 31, 2011 at 12:43:14PM -0700, Richard Henderson wrote: > I checked in the generic portion of Dmitry Plotnikov's patch > to the vectorizer and optabs that enables this patch. The ARM > portion of his patch is still outstanding, awaiting approval. > > This allows this target hook to be removed from other targets. > > Can I talk you into doing a similar patch for rs6000, Mike? > After that I can take care of removing the target hook entirely. > > Tested on x86_64-linux.
The rs6000 already uses the standard names, but it still defined the target hook. I came up with with quick patch to delete the rs6000 target hook, and it appears that the same code is now generated. I'll start a full bootstrap and make check comparison. 2011-11-08 Michael Meissner <meiss...@linux.vnet.ibm.com> * config/rs6000/rs6000.c (rs6000_builtin_conversion): Delete, target hook is not needed anymore to do conversion. (TARGET_VECTORIZE_BUILTIN_CONVERSION): Delete. Index: gcc/config/rs6000/rs6000.c =================================================================== --- gcc/config/rs6000/rs6000.c (revision 181174) +++ gcc/config/rs6000/rs6000.c (working copy) @@ -1403,8 +1403,6 @@ static const struct attribute_spec rs600 #define TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_EVEN rs6000_builtin_mul_widen_even #undef TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_ODD #define TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_ODD rs6000_builtin_mul_widen_odd -#undef TARGET_VECTORIZE_BUILTIN_CONVERSION -#define TARGET_VECTORIZE_BUILTIN_CONVERSION rs6000_builtin_conversion #undef TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT #define TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT \ rs6000_builtin_support_vector_misalignment @@ -3299,69 +3297,6 @@ rs6000_loop_align_max_skip (rtx label) return (1 << rs6000_loop_align (label)) - 1; } -/* Implement targetm.vectorize.builtin_conversion. - Returns a decl of a function that implements conversion of an integer vector - into a floating-point vector, or vice-versa. DEST_TYPE is the - destination type and SRC_TYPE the source type of the conversion. - Return NULL_TREE if it is not available. */ -static tree -rs6000_builtin_conversion (unsigned int tcode, tree dest_type, tree src_type) -{ - enum tree_code code = (enum tree_code) tcode; - - switch (code) - { - case FIX_TRUNC_EXPR: - switch (TYPE_MODE (dest_type)) - { - case V2DImode: - if (!VECTOR_UNIT_VSX_P (V2DFmode)) - return NULL_TREE; - - return TYPE_UNSIGNED (dest_type) - ? rs6000_builtin_decls[VSX_BUILTIN_XVCVDPUXDS_UNS] - : rs6000_builtin_decls[VSX_BUILTIN_XVCVDPSXDS]; - - case V4SImode: - if (VECTOR_UNIT_NONE_P (V4SImode) || VECTOR_UNIT_NONE_P (V4SFmode)) - return NULL_TREE; - - return TYPE_UNSIGNED (dest_type) - ? rs6000_builtin_decls[VECTOR_BUILTIN_FIXUNS_V4SF_V4SI] - : rs6000_builtin_decls[VECTOR_BUILTIN_FIX_V4SF_V4SI]; - - default: - return NULL_TREE; - } - - case FLOAT_EXPR: - switch (TYPE_MODE (src_type)) - { - case V2DImode: - if (!VECTOR_UNIT_VSX_P (V2DFmode)) - return NULL_TREE; - - return TYPE_UNSIGNED (src_type) - ? rs6000_builtin_decls[VSX_BUILTIN_XVCVUXDDP] - : rs6000_builtin_decls[VSX_BUILTIN_XVCVSXDDP]; - - case V4SImode: - if (VECTOR_UNIT_NONE_P (V4SImode) || VECTOR_UNIT_NONE_P (V4SFmode)) - return NULL_TREE; - - return TYPE_UNSIGNED (src_type) - ? rs6000_builtin_decls[VECTOR_BUILTIN_UNSFLOAT_V4SI_V4SF] - : rs6000_builtin_decls[VECTOR_BUILTIN_FLOAT_V4SI_V4SF]; - - default: - return NULL_TREE; - } - - default: - return NULL_TREE; - } -} - /* Implement targetm.vectorize.builtin_mul_widen_even. */ static tree rs6000_builtin_mul_widen_even (tree type) -- Michael Meissner, IBM 5 Technology Place Drive, M/S 2757, Westford, MA 01886-3141, USA meiss...@linux.vnet.ibm.com fax +1 (978) 399-6899