From 4959a752881b69064fb988df23c10e14827099e9 Mon Sep 17 00:00:00 2001 From: Richard Sandiford Date: Tue, 17 Nov 2015 18:40:31 +0000 Subject: Add internal bitcount functions This patch adds internal function equivalents of all the INT_FN functions. Unlike the math functions, these functions never set errno and the internal functions should be exactly equivalent to the built-in ones. The reason for defining the internal functions is so that we can extend the functionality to other modes, in particular vector modes. Tested on x86_64-linux-gnu, aarch64-linux-gnu and arm-linux-gnueabi. gcc/ * internal-fn.def (DEF_INTERNAL_INT_FN): New macro. (CLRSB, CLZ, CTZ, FFS, PARITY, POPCOUNT): New functions. * builtins.c (associated_internal_fn): Handle them. From-SVN: r230475 --- gcc/builtins.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'gcc/builtins.c') diff --git a/gcc/builtins.c b/gcc/builtins.c index 0eef112..303a5b0 100644 --- a/gcc/builtins.c +++ b/gcc/builtins.c @@ -1916,6 +1916,8 @@ associated_internal_fn (tree fndecl) { #define DEF_INTERNAL_FLT_FN(NAME, FLAGS, OPTAB, TYPE) \ CASE_FLT_FN (BUILT_IN_##NAME): return IFN_##NAME; +#define DEF_INTERNAL_INT_FN(NAME, FLAGS, OPTAB, TYPE) \ + CASE_INT_FN (BUILT_IN_##NAME): return IFN_##NAME; #include "internal-fn.def" CASE_FLT_FN (BUILT_IN_POW10): -- cgit v1.1