diff mbox

[4/6] Simplify ix86_builtin_vectorized_function

Message ID 871tbznnlq.fsf@e105548-lin.cambridge.arm.com
State New
Headers show

Commit Message

Richard Sandiford Nov. 9, 2015, 4:28 p.m. UTC
After the previous patches it's no longer necessary for
TARGET_BUILTIN_VECTORIZED_FUNCTION to return functions that
map to the vector optab of the original operation.  We'll use
a vector form of the internal function instead.


gcc/
	* config/i386/i386.c (ix86_builtin_vectorized_function): Remove
	entries that map directly to optabs.

Comments

Uros Bizjak Nov. 9, 2015, 7:55 p.m. UTC | #1
On Mon, Nov 9, 2015 at 5:28 PM, Richard Sandiford
<richard.sandiford@arm.com> wrote:
> After the previous patches it's no longer necessary for
> TARGET_BUILTIN_VECTORIZED_FUNCTION to return functions that
> map to the vector optab of the original operation.  We'll use
> a vector form of the internal function instead.
>
>
> gcc/
>         * config/i386/i386.c (ix86_builtin_vectorized_function): Remove
>         entries that map directly to optabs.

OK.

Thanks,
Uros.

> diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
> index a1d59a5..1003ce1 100644
> --- a/gcc/config/i386/i386.c
> +++ b/gcc/config/i386/i386.c
> @@ -41746,27 +41746,6 @@ ix86_builtin_vectorized_function (unsigned int fn, tree type_out,
>
>    switch (fn)
>      {
> -    CASE_CFN_SQRT:
> -      if (out_mode == DFmode && in_mode == DFmode)
> -       {
> -         if (out_n == 2 && in_n == 2)
> -           return ix86_get_builtin (IX86_BUILTIN_SQRTPD);
> -         else if (out_n == 4 && in_n == 4)
> -           return ix86_get_builtin (IX86_BUILTIN_SQRTPD256);
> -         else if (out_n == 8 && in_n == 8)
> -           return ix86_get_builtin (IX86_BUILTIN_SQRTPD512);
> -       }
> -      if (out_mode == SFmode && in_mode == SFmode)
> -       {
> -         if (out_n == 4 && in_n == 4)
> -           return ix86_get_builtin (IX86_BUILTIN_SQRTPS_NR);
> -         else if (out_n == 8 && in_n == 8)
> -           return ix86_get_builtin (IX86_BUILTIN_SQRTPS_NR256);
> -         else if (out_n == 16 && in_n == 16)
> -           return ix86_get_builtin (IX86_BUILTIN_SQRTPS_NR512);
> -       }
> -      break;
> -
>      CASE_CFN_EXP2:
>        if (out_mode == SFmode && in_mode == SFmode)
>         {
> @@ -41869,27 +41848,6 @@ ix86_builtin_vectorized_function (unsigned int fn, tree type_out,
>         }
>        break;
>
> -    CASE_CFN_COPYSIGN:
> -      if (out_mode == DFmode && in_mode == DFmode)
> -       {
> -         if (out_n == 2 && in_n == 2)
> -           return ix86_get_builtin (IX86_BUILTIN_CPYSGNPD);
> -         else if (out_n == 4 && in_n == 4)
> -           return ix86_get_builtin (IX86_BUILTIN_CPYSGNPD256);
> -         else if (out_n == 8 && in_n == 8)
> -           return ix86_get_builtin (IX86_BUILTIN_CPYSGNPD512);
> -       }
> -      if (out_mode == SFmode && in_mode == SFmode)
> -       {
> -         if (out_n == 4 && in_n == 4)
> -           return ix86_get_builtin (IX86_BUILTIN_CPYSGNPS);
> -         else if (out_n == 8 && in_n == 8)
> -           return ix86_get_builtin (IX86_BUILTIN_CPYSGNPS256);
> -         else if (out_n == 16 && in_n == 16)
> -           return ix86_get_builtin (IX86_BUILTIN_CPYSGNPS512);
> -       }
> -      break;
> -
>      CASE_CFN_FLOOR:
>        /* The round insn does not trap on denormals.  */
>        if (flag_trapping_math || !TARGET_ROUND)
> @@ -41974,27 +41932,6 @@ ix86_builtin_vectorized_function (unsigned int fn, tree type_out,
>         }
>        break;
>
> -    CASE_CFN_ROUND:
> -      /* The round insn does not trap on denormals.  */
> -      if (flag_trapping_math || !TARGET_ROUND)
> -       break;
> -
> -      if (out_mode == DFmode && in_mode == DFmode)
> -       {
> -         if (out_n == 2 && in_n == 2)
> -           return ix86_get_builtin (IX86_BUILTIN_ROUNDPD_AZ);
> -         else if (out_n == 4 && in_n == 4)
> -           return ix86_get_builtin (IX86_BUILTIN_ROUNDPD_AZ256);
> -       }
> -      if (out_mode == SFmode && in_mode == SFmode)
> -       {
> -         if (out_n == 4 && in_n == 4)
> -           return ix86_get_builtin (IX86_BUILTIN_ROUNDPS_AZ);
> -         else if (out_n == 8 && in_n == 8)
> -           return ix86_get_builtin (IX86_BUILTIN_ROUNDPS_AZ256);
> -       }
> -      break;
> -
>      CASE_CFN_FMA:
>        if (out_mode == DFmode && in_mode == DFmode)
>         {
>
diff mbox

Patch

diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index a1d59a5..1003ce1 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -41746,27 +41746,6 @@  ix86_builtin_vectorized_function (unsigned int fn, tree type_out,
 
   switch (fn)
     {
-    CASE_CFN_SQRT:
-      if (out_mode == DFmode && in_mode == DFmode)
-	{
-	  if (out_n == 2 && in_n == 2)
-	    return ix86_get_builtin (IX86_BUILTIN_SQRTPD);
-	  else if (out_n == 4 && in_n == 4)
-	    return ix86_get_builtin (IX86_BUILTIN_SQRTPD256);
-	  else if (out_n == 8 && in_n == 8)
-	    return ix86_get_builtin (IX86_BUILTIN_SQRTPD512);
-	}
-      if (out_mode == SFmode && in_mode == SFmode)
-	{
-	  if (out_n == 4 && in_n == 4)
-	    return ix86_get_builtin (IX86_BUILTIN_SQRTPS_NR);
-	  else if (out_n == 8 && in_n == 8)
-	    return ix86_get_builtin (IX86_BUILTIN_SQRTPS_NR256);
-	  else if (out_n == 16 && in_n == 16)
-	    return ix86_get_builtin (IX86_BUILTIN_SQRTPS_NR512);
-	}
-      break;
-
     CASE_CFN_EXP2:
       if (out_mode == SFmode && in_mode == SFmode)
 	{
@@ -41869,27 +41848,6 @@  ix86_builtin_vectorized_function (unsigned int fn, tree type_out,
 	}
       break;
 
-    CASE_CFN_COPYSIGN:
-      if (out_mode == DFmode && in_mode == DFmode)
-	{
-	  if (out_n == 2 && in_n == 2)
-	    return ix86_get_builtin (IX86_BUILTIN_CPYSGNPD);
-	  else if (out_n == 4 && in_n == 4)
-	    return ix86_get_builtin (IX86_BUILTIN_CPYSGNPD256);
-	  else if (out_n == 8 && in_n == 8)
-	    return ix86_get_builtin (IX86_BUILTIN_CPYSGNPD512);
-	}
-      if (out_mode == SFmode && in_mode == SFmode)
-	{
-	  if (out_n == 4 && in_n == 4)
-	    return ix86_get_builtin (IX86_BUILTIN_CPYSGNPS);
-	  else if (out_n == 8 && in_n == 8)
-	    return ix86_get_builtin (IX86_BUILTIN_CPYSGNPS256);
-	  else if (out_n == 16 && in_n == 16)
-	    return ix86_get_builtin (IX86_BUILTIN_CPYSGNPS512);
-	}
-      break;
-
     CASE_CFN_FLOOR:
       /* The round insn does not trap on denormals.  */
       if (flag_trapping_math || !TARGET_ROUND)
@@ -41974,27 +41932,6 @@  ix86_builtin_vectorized_function (unsigned int fn, tree type_out,
 	}
       break;
 
-    CASE_CFN_ROUND:
-      /* The round insn does not trap on denormals.  */
-      if (flag_trapping_math || !TARGET_ROUND)
-	break;
-
-      if (out_mode == DFmode && in_mode == DFmode)
-	{
-	  if (out_n == 2 && in_n == 2)
-	    return ix86_get_builtin (IX86_BUILTIN_ROUNDPD_AZ);
-	  else if (out_n == 4 && in_n == 4)
-	    return ix86_get_builtin (IX86_BUILTIN_ROUNDPD_AZ256);
-	}
-      if (out_mode == SFmode && in_mode == SFmode)
-	{
-	  if (out_n == 4 && in_n == 4)
-	    return ix86_get_builtin (IX86_BUILTIN_ROUNDPS_AZ);
-	  else if (out_n == 8 && in_n == 8)
-	    return ix86_get_builtin (IX86_BUILTIN_ROUNDPS_AZ256);
-	}
-      break;
-
     CASE_CFN_FMA:
       if (out_mode == DFmode && in_mode == DFmode)
 	{