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

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

From-SVN: r230494

gcc/ChangeLog
gcc/config/rs6000/rs6000.c

index 05cb9db62d027d6bef2ae073a6c6d1899e657138..c3229fc5789c6171832ccdfd3c47eb79e146320e 100644 (file)
@@ -1,3 +1,8 @@
+2015-11-17  Richard Sandiford  <richard.sandiford@arm.com>
+
+       * config/rs6000/rs6000.c (rs6000_builtin_vectorized_function): Remove
+       entries that map directly to optabs.
+
 2015-11-17  Richard Sandiford  <richard.sandiford@arm.com>
 
        * config/i386/i386.c (ix86_builtin_vectorized_function): Remove
index 688f1db3959af36f7cb4ce5d095ac6c935afee04..457e944225f38b82fcb7cbaaa98acc9af593c4a6 100644 (file)
@@ -5311,19 +5311,6 @@ rs6000_builtin_vectorized_function (unsigned int fn, tree type_out,
 
   switch (fn)
     {
-    CASE_CFN_CLZ:
-      if (TARGET_P8_VECTOR && in_mode == out_mode && out_n == in_n)
-       {
-         if (out_mode == QImode && out_n == 16)
-           return rs6000_builtin_decls[P8V_BUILTIN_VCLZB];
-         else if (out_mode == HImode && out_n == 8)
-           return rs6000_builtin_decls[P8V_BUILTIN_VCLZH];
-         else if (out_mode == SImode && out_n == 4)
-           return rs6000_builtin_decls[P8V_BUILTIN_VCLZW];
-         else if (out_mode == DImode && out_n == 2)
-           return rs6000_builtin_decls[P8V_BUILTIN_VCLZD];
-       }
-      break;
     CASE_CFN_COPYSIGN:
       if (VECTOR_UNIT_VSX_P (V2DFmode)
          && out_mode == DFmode && out_n == 2
@@ -5338,29 +5325,6 @@ rs6000_builtin_vectorized_function (unsigned int fn, tree type_out,
          && in_mode == SFmode && in_n == 4)
        return rs6000_builtin_decls[ALTIVEC_BUILTIN_COPYSIGN_V4SF];
       break;
-    CASE_CFN_POPCOUNT:
-      if (TARGET_P8_VECTOR && in_mode == out_mode && out_n == in_n)
-       {
-         if (out_mode == QImode && out_n == 16)
-           return rs6000_builtin_decls[P8V_BUILTIN_VPOPCNTB];
-         else if (out_mode == HImode && out_n == 8)
-           return rs6000_builtin_decls[P8V_BUILTIN_VPOPCNTH];
-         else if (out_mode == SImode && out_n == 4)
-           return rs6000_builtin_decls[P8V_BUILTIN_VPOPCNTW];
-         else if (out_mode == DImode && out_n == 2)
-           return rs6000_builtin_decls[P8V_BUILTIN_VPOPCNTD];
-       }
-      break;
-    CASE_CFN_SQRT:
-      if (VECTOR_UNIT_VSX_P (V2DFmode)
-         && out_mode == DFmode && out_n == 2
-         && in_mode == DFmode && in_n == 2)
-       return rs6000_builtin_decls[VSX_BUILTIN_XVSQRTDP];
-      if (VECTOR_UNIT_VSX_P (V4SFmode)
-         && out_mode == SFmode && out_n == 4
-         && in_mode == SFmode && in_n == 4)
-       return rs6000_builtin_decls[VSX_BUILTIN_XVSQRTSP];
-      break;
     CASE_CFN_CEIL:
       if (VECTOR_UNIT_VSX_P (V2DFmode)
          && out_mode == DFmode && out_n == 2