Add missing ECF_NOTHROW flags to internal.def

Message ID 87o9refrvv.fsf@linaro.org
State New
Headers show

Commit Message

Richard Sandiford Aug. 17, 2017, 9:47 a.m.
This patch adds missing ECF_NOTHROW flags to the vectorisable
integer internal functions.  I noticed it while doing some SVE
work but don't have a testcase that's useful now.

Tested on aarch64-linux-gnu and x86_64-linux-gnu.  OK to install?

Richard


2017-08-17  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
	* internal-fn.def (CLRSB, CLZ, CTZ, FFS, PARITY, POPCOUNT): Add
	missing ECF_NOTHROW flags.

Comments

Richard Biener Aug. 17, 2017, 10:23 a.m. | #1
On Thu, Aug 17, 2017 at 11:47 AM, Richard Sandiford
<richard.sandiford@linaro.org> wrote:
> This patch adds missing ECF_NOTHROW flags to the vectorisable

> integer internal functions.  I noticed it while doing some SVE

> work but don't have a testcase that's useful now.

>

> Tested on aarch64-linux-gnu and x86_64-linux-gnu.  OK to install?


ECF_LEAF is missing as well.  Ok with adding them change.

Richard.

> Richard

>

>

> 2017-08-17  Richard Sandiford  <richard.sandiford@linaro.org>

>

> gcc/

>         * internal-fn.def (CLRSB, CLZ, CTZ, FFS, PARITY, POPCOUNT): Add

>         missing ECF_NOTHROW flags.

>

> Index: gcc/internal-fn.def

> ===================================================================

> --- gcc/internal-fn.def 2017-08-10 14:36:08.046471664 +0100

> +++ gcc/internal-fn.def 2017-08-17 09:05:10.128942687 +0100

> @@ -135,12 +135,12 @@ DEF_INTERNAL_OPTAB_FN (XORSIGN, ECF_CONS

>  DEF_INTERNAL_FLT_FN (LDEXP, ECF_CONST, ldexp, binary)

>

>  /* Unary integer ops.  */

> -DEF_INTERNAL_INT_FN (CLRSB, ECF_CONST, clrsb, unary)

> -DEF_INTERNAL_INT_FN (CLZ, ECF_CONST, clz, unary)

> -DEF_INTERNAL_INT_FN (CTZ, ECF_CONST, ctz, unary)

> -DEF_INTERNAL_INT_FN (FFS, ECF_CONST, ffs, unary)

> -DEF_INTERNAL_INT_FN (PARITY, ECF_CONST, parity, unary)

> -DEF_INTERNAL_INT_FN (POPCOUNT, ECF_CONST, popcount, unary)

> +DEF_INTERNAL_INT_FN (CLRSB, ECF_CONST | ECF_NOTHROW, clrsb, unary)

> +DEF_INTERNAL_INT_FN (CLZ, ECF_CONST | ECF_NOTHROW, clz, unary)

> +DEF_INTERNAL_INT_FN (CTZ, ECF_CONST | ECF_NOTHROW, ctz, unary)

> +DEF_INTERNAL_INT_FN (FFS, ECF_CONST | ECF_NOTHROW, ffs, unary)

> +DEF_INTERNAL_INT_FN (PARITY, ECF_CONST | ECF_NOTHROW, parity, unary)

> +DEF_INTERNAL_INT_FN (POPCOUNT, ECF_CONST | ECF_NOTHROW, popcount, unary)

>

>  DEF_INTERNAL_FN (GOMP_USE_SIMT, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)

>  DEF_INTERNAL_FN (GOMP_SIMT_ENTER, ECF_LEAF | ECF_NOTHROW, NULL)
Richard Sandiford Aug. 17, 2017, 10:39 a.m. | #2
Richard Biener <richard.guenther@gmail.com> writes:
> On Thu, Aug 17, 2017 at 11:47 AM, Richard Sandiford

> <richard.sandiford@linaro.org> wrote:

>> This patch adds missing ECF_NOTHROW flags to the vectorisable

>> integer internal functions.  I noticed it while doing some SVE

>> work but don't have a testcase that's useful now.

>>

>> Tested on aarch64-linux-gnu and x86_64-linux-gnu.  OK to install?

>

> ECF_LEAF is missing as well.  Ok with adding them change.


That's added automatically for all directly-mapped functions by:

#ifndef DEF_INTERNAL_OPTAB_FN
#define DEF_INTERNAL_OPTAB_FN(NAME, FLAGS, OPTAB, TYPE) \
  DEF_INTERNAL_FN (NAME, FLAGS | ECF_LEAF, NULL)
#endif

Thanks,
Richard

>

> Richard.

>

>> Richard

>>

>>

>> 2017-08-17  Richard Sandiford  <richard.sandiford@linaro.org>

>>

>> gcc/

>>         * internal-fn.def (CLRSB, CLZ, CTZ, FFS, PARITY, POPCOUNT): Add

>>         missing ECF_NOTHROW flags.

>>

>> Index: gcc/internal-fn.def

>> ===================================================================

>> --- gcc/internal-fn.def 2017-08-10 14:36:08.046471664 +0100

>> +++ gcc/internal-fn.def 2017-08-17 09:05:10.128942687 +0100

>> @@ -135,12 +135,12 @@ DEF_INTERNAL_OPTAB_FN (XORSIGN, ECF_CONS

>>  DEF_INTERNAL_FLT_FN (LDEXP, ECF_CONST, ldexp, binary)

>>

>>  /* Unary integer ops.  */

>> -DEF_INTERNAL_INT_FN (CLRSB, ECF_CONST, clrsb, unary)

>> -DEF_INTERNAL_INT_FN (CLZ, ECF_CONST, clz, unary)

>> -DEF_INTERNAL_INT_FN (CTZ, ECF_CONST, ctz, unary)

>> -DEF_INTERNAL_INT_FN (FFS, ECF_CONST, ffs, unary)

>> -DEF_INTERNAL_INT_FN (PARITY, ECF_CONST, parity, unary)

>> -DEF_INTERNAL_INT_FN (POPCOUNT, ECF_CONST, popcount, unary)

>> +DEF_INTERNAL_INT_FN (CLRSB, ECF_CONST | ECF_NOTHROW, clrsb, unary)

>> +DEF_INTERNAL_INT_FN (CLZ, ECF_CONST | ECF_NOTHROW, clz, unary)

>> +DEF_INTERNAL_INT_FN (CTZ, ECF_CONST | ECF_NOTHROW, ctz, unary)

>> +DEF_INTERNAL_INT_FN (FFS, ECF_CONST | ECF_NOTHROW, ffs, unary)

>> +DEF_INTERNAL_INT_FN (PARITY, ECF_CONST | ECF_NOTHROW, parity, unary)

>> +DEF_INTERNAL_INT_FN (POPCOUNT, ECF_CONST | ECF_NOTHROW, popcount, unary)

>>

>>  DEF_INTERNAL_FN (GOMP_USE_SIMT, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)

>>  DEF_INTERNAL_FN (GOMP_SIMT_ENTER, ECF_LEAF | ECF_NOTHROW, NULL)

Patch

Index: gcc/internal-fn.def
===================================================================
--- gcc/internal-fn.def	2017-08-10 14:36:08.046471664 +0100
+++ gcc/internal-fn.def	2017-08-17 09:05:10.128942687 +0100
@@ -135,12 +135,12 @@  DEF_INTERNAL_OPTAB_FN (XORSIGN, ECF_CONS
 DEF_INTERNAL_FLT_FN (LDEXP, ECF_CONST, ldexp, binary)
 
 /* Unary integer ops.  */
-DEF_INTERNAL_INT_FN (CLRSB, ECF_CONST, clrsb, unary)
-DEF_INTERNAL_INT_FN (CLZ, ECF_CONST, clz, unary)
-DEF_INTERNAL_INT_FN (CTZ, ECF_CONST, ctz, unary)
-DEF_INTERNAL_INT_FN (FFS, ECF_CONST, ffs, unary)
-DEF_INTERNAL_INT_FN (PARITY, ECF_CONST, parity, unary)
-DEF_INTERNAL_INT_FN (POPCOUNT, ECF_CONST, popcount, unary)
+DEF_INTERNAL_INT_FN (CLRSB, ECF_CONST | ECF_NOTHROW, clrsb, unary)
+DEF_INTERNAL_INT_FN (CLZ, ECF_CONST | ECF_NOTHROW, clz, unary)
+DEF_INTERNAL_INT_FN (CTZ, ECF_CONST | ECF_NOTHROW, ctz, unary)
+DEF_INTERNAL_INT_FN (FFS, ECF_CONST | ECF_NOTHROW, ffs, unary)
+DEF_INTERNAL_INT_FN (PARITY, ECF_CONST | ECF_NOTHROW, parity, unary)
+DEF_INTERNAL_INT_FN (POPCOUNT, ECF_CONST | ECF_NOTHROW, popcount, unary)
 
 DEF_INTERNAL_FN (GOMP_USE_SIMT, ECF_NOVOPS | ECF_LEAF | ECF_NOTHROW, NULL)
 DEF_INTERNAL_FN (GOMP_SIMT_ENTER, ECF_LEAF | ECF_NOTHROW, NULL)