diff mbox

[i386] Remove TARGET_VECTORIZE_BUILTIN_CONVERSION

Message ID 20111108230011.GA21496@meissner-tiger.homedns.org
State New
Headers show

Commit Message

Michael Meissner Nov. 8, 2011, 11 p.m. UTC
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  <meissner@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.
diff mbox

Patch

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)