Simplify ix86_builtin_vectorized_function
authorRichard Sandiford <richard.sandiford@arm.com>
Tue, 17 Nov 2015 18:56:21 +0000 (18:56 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Tue, 17 Nov 2015 18:56:21 +0000 (18:56 +0000)
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.

Tested on x86_64-linux-gnu.

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

From-SVN: r230493

gcc/ChangeLog
gcc/config/i386/i386.c

index cdf4e6ed4ebdd2cd278702cb8e3f33dc4c22199a..05cb9db62d027d6bef2ae073a6c6d1899e657138 100644 (file)
@@ -1,3 +1,8 @@
+2015-11-17  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * config/i386/i386.c (ix86_builtin_vectorized_function): Remove
+       entries that map directly to optabs.
+
 2015-11-17  Richard Sandiford  <richard.sandiford@arm.com>
 
        * internal-fn.h (direct_internal_fn_info): Add vectorizable flag.
index 763230a7a385334f75a355340a2ebbbf3708df7d..e752e6217266bfd4a23e48b88c65bb0239042cb7 100644 (file)
@@ -42012,27 +42012,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)
        {
@@ -42135,27 +42114,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)
@@ -42240,27 +42198,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)
        {