diff mbox

Allow non-overflow ops in vect_is_simple_reduction_1

Message ID 55B5108B.4040400@mentor.com
State New
Headers show

Commit Message

Tom de Vries July 26, 2015, 4:53 p.m. UTC
On 26/07/15 18:49, Tom de Vries wrote:
> On 24/07/15 16:39, Tom de Vries wrote:
>> Hi,
>>
>> this patch allows parallelization and vectorization of reduction
>> operators that are guaranteed to not overflow (such as min and max
>> operators), independent of the overflow behaviour of the type.
>>
>> Bootstrapped and reg-tested on x86_64.
>>
>> OK for trunk?
>>
>> Thanks,
>> - Tom

[ Slip-of-the-keyboard ]

This is the graphite version of this patch.

Bootstrapped and reg-tested on x86_64.

OK for trunk?

Thanks,
- Tom

Comments

Tom de Vries July 28, 2015, 7:26 a.m. UTC | #1
On 26/07/15 18:53, Tom de Vries wrote:
> On 26/07/15 18:49, Tom de Vries wrote:
>> On 24/07/15 16:39, Tom de Vries wrote:
>>> Hi,
>>>
>>> this patch allows parallelization and vectorization of reduction
>>> operators that are guaranteed to not overflow (such as min and max
>>> operators), independent of the overflow behaviour of the type.
>>>
>>> Bootstrapped and reg-tested on x86_64.
>>>
>>> OK for trunk?
>>>
>>> Thanks,
>>> - Tom
>
> [ Slip-of-the-keyboard ]
>
> This is the graphite version of this patch.
>
> Bootstrapped and reg-tested on x86_64.
>
> OK for trunk?
>

Committed to gomp-4_0-branch.

Thanks,
- Tom

> 0002-Handle-non-overflow-reductions-in-graphite.patch
>
>
> Handle non-overflow reductions in graphite
>
> 2015-07-21  Tom de Vries<tom@codesourcery.com>
>
> 	* graphite-sese-to-poly.c (is_reduction_operation_p): Allow operations
> 	that do not overflow.
> ---
>   gcc/graphite-sese-to-poly.c | 15 +++++++++++++--
>   1 file changed, 13 insertions(+), 2 deletions(-)
>
> diff --git a/gcc/graphite-sese-to-poly.c b/gcc/graphite-sese-to-poly.c
> index c583f16..531c848 100644
> --- a/gcc/graphite-sese-to-poly.c
> +++ b/gcc/graphite-sese-to-poly.c
> @@ -2614,8 +2614,19 @@ is_reduction_operation_p (gimple stmt)
>     if (FLOAT_TYPE_P (type))
>       return flag_associative_math;
>
> -  return (INTEGRAL_TYPE_P (type)
> -	  && TYPE_OVERFLOW_WRAPS (type));
> +  if (ANY_INTEGRAL_TYPE_P (type))
> +    {
> +      if (INTEGRAL_TYPE_P (type)
> +	  && TYPE_OVERFLOW_WRAPS (type))
> +	return true;
> +
> +      if (no_overflow_tree_code (code, type))
> +	return true;
> +
> +      return false;
> +    }
> +
> +  return false;
>   }
>
>   /* Returns true when PHI contains an argument ARG.  */
> -- 1.9.1
>
diff mbox

Patch

Handle non-overflow reductions in graphite

2015-07-21  Tom de Vries  <tom@codesourcery.com>

	* graphite-sese-to-poly.c (is_reduction_operation_p): Allow operations
	that do not overflow.
---
 gcc/graphite-sese-to-poly.c | 15 +++++++++++++--
 1 file changed, 13 insertions(+), 2 deletions(-)

diff --git a/gcc/graphite-sese-to-poly.c b/gcc/graphite-sese-to-poly.c
index c583f16..531c848 100644
--- a/gcc/graphite-sese-to-poly.c
+++ b/gcc/graphite-sese-to-poly.c
@@ -2614,8 +2614,19 @@  is_reduction_operation_p (gimple stmt)
   if (FLOAT_TYPE_P (type))
     return flag_associative_math;
 
-  return (INTEGRAL_TYPE_P (type)
-	  && TYPE_OVERFLOW_WRAPS (type));
+  if (ANY_INTEGRAL_TYPE_P (type))
+    {
+      if (INTEGRAL_TYPE_P (type)
+	  && TYPE_OVERFLOW_WRAPS (type))
+	return true;
+
+      if (no_overflow_tree_code (code, type))
+	return true;
+
+      return false;
+    }
+
+  return false;
 }
 
 /* Returns true when PHI contains an argument ARG.  */
-- 
1.9.1