public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH][X86] Fix rounding pattern similar to PR73350
@ 2017-06-12 13:21 Koval, Julia
  2017-06-12 13:42 ` H.J. Lu
  0 siblings, 1 reply; 12+ messages in thread
From: Koval, Julia @ 2017-06-12 13:21 UTC (permalink / raw)
  To: GCC Patches; +Cc: Uros Bizjak, Kirill Yukhin

[-- Attachment #1: Type: text/plain, Size: 1001 bytes --]

This is the same issue as PR73350 and PR80862 for disabling FP exceptions.

gcc -O0 -mavx512f -mavx512er returns exception
gcc -O2 -mavx512f -mavx512er returns nan

For this code:

#include <stdio.h>
#include <math.h>
#include <x86intrin.h>
#include <limits.h>
#include <float.h>

int main(int argc, char *argv[]) {
    __m512 a = _mm512_set1_ps((float) -1);
    __m512 b = _mm512_set1_ps((float) -1);
    _mm_setcsr( _MM_MASK_MASK &~
              (_MM_MASK_OVERFLOW|_MM_MASK_INVALID|_MM_MASK_DIV_ZERO) );
    __m512 result1 = _mm512_rsqrt28_round_ps(a, _MM_FROUND_NO_EXC );
    printf("%d %d\n", _MM_FROUND_CUR_DIRECTION, _MM_FROUND_NO_EXC);
    __m512 result2 = _mm512_rsqrt28_round_ps(a, _MM_FROUND_CUR_DIRECTION);

    printf("%g\n", result1[0] - result2[0]);

    return 0;
}

This patch fixes the issue.

gcc/
	* config/i386/i386.c: Fix rounding expand for new pattern
	* config/i386/subst.md: Fix pattern (parallel -> unspec)

Ok for trunk?

Thanks,
Julia

[-- Attachment #2: 0001-fix.patch --]
[-- Type: application/octet-stream, Size: 1527 bytes --]

From 239bb8c6d285c268d8f79fe6585def844eb46f7f Mon Sep 17 00:00:00 2001
From: julia <jkoval@gkticlel801.igk.intel.com>
Date: Mon, 12 Jun 2017 13:23:29 +0300
Subject: [PATCH] fix

---
 gcc/config/i386/i386.c   | 4 ++--
 gcc/config/i386/subst.md | 9 +++++----
 2 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index d5c2d46..9f7290a 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -36597,8 +36597,8 @@ ix86_expand_sse_comi_round (const struct builtin_description *d,
     }
   else
     {
-      gcc_assert (GET_CODE (XVECEXP (pat, 0, 0)) == SET);
-      set_dst = SET_DEST (XVECEXP (pat, 0, 0));
+      gcc_assert (GET_CODE (pat) == SET);
+      set_dst = SET_DEST (pat);
     }
 
   emit_insn (pat);
diff --git a/gcc/config/i386/subst.md b/gcc/config/i386/subst.md
index 57fb0d4..4685db3 100644
--- a/gcc/config/i386/subst.md
+++ b/gcc/config/i386/subst.md
@@ -177,10 +177,11 @@
   [(set (match_operand:SUBST_A 0)
         (match_operand:SUBST_A 1))]
   "TARGET_AVX512F"
-  [(parallel[
-     (set (match_dup 0)
-          (match_dup 1))
-     (unspec [(match_operand:SI 2 "const48_operand")] UNSPEC_EMBEDDED_ROUNDING)])])
+  [(set (match_dup 0)
+	(unspec:SUBST_A [(match_dup 1)
+	  (match_operand:SI 2 "const48_operand")]
+	  UNSPEC_EMBEDDED_ROUNDING))
+])
 
 (define_subst_attr "round_expand_name" "round_expand" "" "_round")
 (define_subst_attr "round_expand_nimm_predicate" "round_expand" "nonimmediate_operand" "register_operand")
-- 
2.5.5


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH][X86] Fix rounding pattern similar to PR73350
  2017-06-12 13:21 [PATCH][X86] Fix rounding pattern similar to PR73350 Koval, Julia
@ 2017-06-12 13:42 ` H.J. Lu
  2017-06-12 16:06   ` Koval, Julia
  0 siblings, 1 reply; 12+ messages in thread
From: H.J. Lu @ 2017-06-12 13:42 UTC (permalink / raw)
  To: Koval, Julia; +Cc: GCC Patches, Uros Bizjak, Kirill Yukhin

On Mon, Jun 12, 2017 at 6:21 AM, Koval, Julia <julia.koval@intel.com> wrote:
> This is the same issue as PR73350 and PR80862 for disabling FP exceptions.
>
> gcc -O0 -mavx512f -mavx512er returns exception
> gcc -O2 -mavx512f -mavx512er returns nan
>
> For this code:
>
> #include <stdio.h>
> #include <math.h>
> #include <x86intrin.h>
> #include <limits.h>
> #include <float.h>
>
> int main(int argc, char *argv[]) {
>     __m512 a = _mm512_set1_ps((float) -1);
>     __m512 b = _mm512_set1_ps((float) -1);
>     _mm_setcsr( _MM_MASK_MASK &~
>               (_MM_MASK_OVERFLOW|_MM_MASK_INVALID|_MM_MASK_DIV_ZERO) );
>     __m512 result1 = _mm512_rsqrt28_round_ps(a, _MM_FROUND_NO_EXC );
>     printf("%d %d\n", _MM_FROUND_CUR_DIRECTION, _MM_FROUND_NO_EXC);
>     __m512 result2 = _mm512_rsqrt28_round_ps(a, _MM_FROUND_CUR_DIRECTION);
>
>     printf("%g\n", result1[0] - result2[0]);
>
>     return 0;
> }
>
> This patch fixes the issue.
>
> gcc/
>         * config/i386/i386.c: Fix rounding expand for new pattern
>         * config/i386/subst.md: Fix pattern (parallel -> unspec)
>
> Ok for trunk?
>

Please include the testcase.

Thanks.

-- 
H.J.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* RE: [PATCH][X86] Fix rounding pattern similar to PR73350
  2017-06-12 13:42 ` H.J. Lu
@ 2017-06-12 16:06   ` Koval, Julia
  2017-06-12 16:08     ` H.J. Lu
  0 siblings, 1 reply; 12+ messages in thread
From: Koval, Julia @ 2017-06-12 16:06 UTC (permalink / raw)
  To: H.J. Lu; +Cc: GCC Patches, Uros Bizjak, Kirill Yukhin

I would like to, but as far as I know the only testcase possible is below, and as far as I know there is no possibility to use dg-error for runtime exceptions(Sorry, if I'm wrong). There are only 2 versions of the flag exception or no exception and the error is, when they are combined in CSE.

> -----Original Message-----
> From: H.J. Lu [mailto:hjl.tools@gmail.com]
> Sent: Monday, June 12, 2017 3:43 PM
> To: Koval, Julia <julia.koval@intel.com>
> Cc: GCC Patches <gcc-patches@gcc.gnu.org>; Uros Bizjak
> <ubizjak@gmail.com>; Kirill Yukhin <kirill.yukhin@gmail.com>
> Subject: Re: [PATCH][X86] Fix rounding pattern similar to PR73350
> 
> On Mon, Jun 12, 2017 at 6:21 AM, Koval, Julia <julia.koval@intel.com> wrote:
> > This is the same issue as PR73350 and PR80862 for disabling FP exceptions.
> >
> > gcc -O0 -mavx512f -mavx512er returns exception
> > gcc -O2 -mavx512f -mavx512er returns nan
> >
> > For this code:
> >
> > #include <stdio.h>
> > #include <math.h>
> > #include <x86intrin.h>
> > #include <limits.h>
> > #include <float.h>
> >
> > int main(int argc, char *argv[]) {
> >     __m512 a = _mm512_set1_ps((float) -1);
> >     __m512 b = _mm512_set1_ps((float) -1);
> >     _mm_setcsr( _MM_MASK_MASK &~
> >
> (_MM_MASK_OVERFLOW|_MM_MASK_INVALID|_MM_MASK_DIV_ZERO) );
> >     __m512 result1 = _mm512_rsqrt28_round_ps(a, _MM_FROUND_NO_EXC );
> >     printf("%d %d\n", _MM_FROUND_CUR_DIRECTION,
> _MM_FROUND_NO_EXC);
> >     __m512 result2 = _mm512_rsqrt28_round_ps(a,
> _MM_FROUND_CUR_DIRECTION);
> >
> >     printf("%g\n", result1[0] - result2[0]);
> >
> >     return 0;
> > }
> >
> > This patch fixes the issue.
> >
> > gcc/
> >         * config/i386/i386.c: Fix rounding expand for new pattern
> >         * config/i386/subst.md: Fix pattern (parallel -> unspec)
> >
> > Ok for trunk?
> >
> 
> Please include the testcase.
> 
> Thanks.
> 
> --
> H.J.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH][X86] Fix rounding pattern similar to PR73350
  2017-06-12 16:06   ` Koval, Julia
@ 2017-06-12 16:08     ` H.J. Lu
  2017-06-12 16:18       ` Jakub Jelinek
  0 siblings, 1 reply; 12+ messages in thread
From: H.J. Lu @ 2017-06-12 16:08 UTC (permalink / raw)
  To: Koval, Julia; +Cc: GCC Patches, Uros Bizjak, Kirill Yukhin

On Mon, Jun 12, 2017 at 9:06 AM, Koval, Julia <julia.koval@intel.com> wrote:
> I would like to, but as far as I know the only testcase possible is below, and as far as I know there is no possibility to use dg-error for runtime exceptions(Sorry, if I'm wrong). There are only 2 versions of the flag exception or no exception and the error is, when they are combined in CSE.

Can you use

if (wrong)
  abort ();

in testcase?

>> -----Original Message-----
>> From: H.J. Lu [mailto:hjl.tools@gmail.com]
>> Sent: Monday, June 12, 2017 3:43 PM
>> To: Koval, Julia <julia.koval@intel.com>
>> Cc: GCC Patches <gcc-patches@gcc.gnu.org>; Uros Bizjak
>> <ubizjak@gmail.com>; Kirill Yukhin <kirill.yukhin@gmail.com>
>> Subject: Re: [PATCH][X86] Fix rounding pattern similar to PR73350
>>
>> On Mon, Jun 12, 2017 at 6:21 AM, Koval, Julia <julia.koval@intel.com> wrote:
>> > This is the same issue as PR73350 and PR80862 for disabling FP exceptions.
>> >
>> > gcc -O0 -mavx512f -mavx512er returns exception
>> > gcc -O2 -mavx512f -mavx512er returns nan
>> >
>> > For this code:
>> >
>> > #include <stdio.h>
>> > #include <math.h>
>> > #include <x86intrin.h>
>> > #include <limits.h>
>> > #include <float.h>
>> >
>> > int main(int argc, char *argv[]) {
>> >     __m512 a = _mm512_set1_ps((float) -1);
>> >     __m512 b = _mm512_set1_ps((float) -1);
>> >     _mm_setcsr( _MM_MASK_MASK &~
>> >
>> (_MM_MASK_OVERFLOW|_MM_MASK_INVALID|_MM_MASK_DIV_ZERO) );
>> >     __m512 result1 = _mm512_rsqrt28_round_ps(a, _MM_FROUND_NO_EXC );
>> >     printf("%d %d\n", _MM_FROUND_CUR_DIRECTION,
>> _MM_FROUND_NO_EXC);
>> >     __m512 result2 = _mm512_rsqrt28_round_ps(a,
>> _MM_FROUND_CUR_DIRECTION);
>> >
>> >     printf("%g\n", result1[0] - result2[0]);
>> >
>> >     return 0;
>> > }
>> >
>> > This patch fixes the issue.
>> >
>> > gcc/
>> >         * config/i386/i386.c: Fix rounding expand for new pattern
>> >         * config/i386/subst.md: Fix pattern (parallel -> unspec)
>> >
>> > Ok for trunk?
>> >
>>
>> Please include the testcase.
>>
>> Thanks.
>>
>> --
>> H.J.



-- 
H.J.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH][X86] Fix rounding pattern similar to PR73350
  2017-06-12 16:08     ` H.J. Lu
@ 2017-06-12 16:18       ` Jakub Jelinek
  2017-06-12 16:50         ` Koval, Julia
  0 siblings, 1 reply; 12+ messages in thread
From: Jakub Jelinek @ 2017-06-12 16:18 UTC (permalink / raw)
  To: H.J. Lu; +Cc: Koval, Julia, GCC Patches, Uros Bizjak, Kirill Yukhin

On Mon, Jun 12, 2017 at 09:08:00AM -0700, H.J. Lu wrote:
> On Mon, Jun 12, 2017 at 9:06 AM, Koval, Julia <julia.koval@intel.com> wrote:
> > I would like to, but as far as I know the only testcase possible is below, and as far as I know there is no possibility to use dg-error for runtime exceptions(Sorry, if I'm wrong). There are only 2 versions of the flag exception or no exception and the error is, when they are combined in CSE.
> 
> Can you use
> 
> if (wrong)
>   abort ();
> 
> in testcase?

Where wrong can also be if (__builtin_fabsf (somefloatval - expectedval) < epsilon)
or similar if needed.  Also, the testcase contains many unnecessary
includes, if you use __builtin_abort, I'd hope you only need x86intrin.h and
nothing else.  And, main can be just int main (), argc and argv aren't used.
> 
> >> -----Original Message-----
> >> From: H.J. Lu [mailto:hjl.tools@gmail.com]
> >> Sent: Monday, June 12, 2017 3:43 PM
> >> To: Koval, Julia <julia.koval@intel.com>
> >> Cc: GCC Patches <gcc-patches@gcc.gnu.org>; Uros Bizjak
> >> <ubizjak@gmail.com>; Kirill Yukhin <kirill.yukhin@gmail.com>
> >> Subject: Re: [PATCH][X86] Fix rounding pattern similar to PR73350
> >>
> >> On Mon, Jun 12, 2017 at 6:21 AM, Koval, Julia <julia.koval@intel.com> wrote:
> >> > This is the same issue as PR73350 and PR80862 for disabling FP exceptions.
> >> >
> >> > gcc -O0 -mavx512f -mavx512er returns exception
> >> > gcc -O2 -mavx512f -mavx512er returns nan
> >> >
> >> > For this code:
> >> >
> >> > #include <stdio.h>
> >> > #include <math.h>
> >> > #include <x86intrin.h>
> >> > #include <limits.h>
> >> > #include <float.h>
> >> >
> >> > int main(int argc, char *argv[]) {
> >> >     __m512 a = _mm512_set1_ps((float) -1);
> >> >     __m512 b = _mm512_set1_ps((float) -1);
> >> >     _mm_setcsr( _MM_MASK_MASK &~
> >> >
> >> (_MM_MASK_OVERFLOW|_MM_MASK_INVALID|_MM_MASK_DIV_ZERO) );
> >> >     __m512 result1 = _mm512_rsqrt28_round_ps(a, _MM_FROUND_NO_EXC );
> >> >     printf("%d %d\n", _MM_FROUND_CUR_DIRECTION,
> >> _MM_FROUND_NO_EXC);
> >> >     __m512 result2 = _mm512_rsqrt28_round_ps(a,
> >> _MM_FROUND_CUR_DIRECTION);
> >> >
> >> >     printf("%g\n", result1[0] - result2[0]);
> >> >
> >> >     return 0;
> >> > }

	Jakub

^ permalink raw reply	[flat|nested] 12+ messages in thread

* RE: [PATCH][X86] Fix rounding pattern similar to PR73350
  2017-06-12 16:18       ` Jakub Jelinek
@ 2017-06-12 16:50         ` Koval, Julia
  2017-06-13  8:08           ` Richard Biener
  0 siblings, 1 reply; 12+ messages in thread
From: Koval, Julia @ 2017-06-12 16:50 UTC (permalink / raw)
  To: Jakub Jelinek, H.J. Lu; +Cc: GCC Patches, Uros Bizjak, Kirill Yukhin

[-- Attachment #1: Type: text/plain, Size: 3283 bytes --]

I'm so sorry, but I really don't get it. The right result of the test is: Floating point exception (core dumped). The wrong result of the test is: nan(no exception). If I get an exception(which is right) - the test is failed anyway. The exception is raised in one instruction, I can't get any intermediate value there..

I tried to replaced it with compile time test(attached), which shows, that both instruction are generated(not combined) - is it ok?

Thanks,
Julia

> -----Original Message-----
> From: Jakub Jelinek [mailto:jakub@redhat.com]
> Sent: Monday, June 12, 2017 6:18 PM
> To: H.J. Lu <hjl.tools@gmail.com>
> Cc: Koval, Julia <julia.koval@intel.com>; GCC Patches <gcc-
> patches@gcc.gnu.org>; Uros Bizjak <ubizjak@gmail.com>; Kirill Yukhin
> <kirill.yukhin@gmail.com>
> Subject: Re: [PATCH][X86] Fix rounding pattern similar to PR73350
> 
> On Mon, Jun 12, 2017 at 09:08:00AM -0700, H.J. Lu wrote:
> > On Mon, Jun 12, 2017 at 9:06 AM, Koval, Julia <julia.koval@intel.com> wrote:
> > > I would like to, but as far as I know the only testcase possible is below, and
> as far as I know there is no possibility to use dg-error for runtime
> exceptions(Sorry, if I'm wrong). There are only 2 versions of the flag exception
> or no exception and the error is, when they are combined in CSE.
> >
> > Can you use
> >
> > if (wrong)
> >   abort ();
> >
> > in testcase?
> 
> Where wrong can also be if (__builtin_fabsf (somefloatval - expectedval) <
> epsilon)
> or similar if needed.  Also, the testcase contains many unnecessary
> includes, if you use __builtin_abort, I'd hope you only need x86intrin.h and
> nothing else.  And, main can be just int main (), argc and argv aren't used.
> >
> > >> -----Original Message-----
> > >> From: H.J. Lu [mailto:hjl.tools@gmail.com]
> > >> Sent: Monday, June 12, 2017 3:43 PM
> > >> To: Koval, Julia <julia.koval@intel.com>
> > >> Cc: GCC Patches <gcc-patches@gcc.gnu.org>; Uros Bizjak
> > >> <ubizjak@gmail.com>; Kirill Yukhin <kirill.yukhin@gmail.com>
> > >> Subject: Re: [PATCH][X86] Fix rounding pattern similar to PR73350
> > >>
> > >> On Mon, Jun 12, 2017 at 6:21 AM, Koval, Julia <julia.koval@intel.com>
> wrote:
> > >> > This is the same issue as PR73350 and PR80862 for disabling FP
> exceptions.
> > >> >
> > >> > gcc -O0 -mavx512f -mavx512er returns exception
> > >> > gcc -O2 -mavx512f -mavx512er returns nan
> > >> >
> > >> > For this code:
> > >> >
> > >> > #include <stdio.h>
> > >> > #include <math.h>
> > >> > #include <x86intrin.h>
> > >> > #include <limits.h>
> > >> > #include <float.h>
> > >> >
> > >> > int main(int argc, char *argv[]) {
> > >> >     __m512 a = _mm512_set1_ps((float) -1);
> > >> >     __m512 b = _mm512_set1_ps((float) -1);
> > >> >     _mm_setcsr( _MM_MASK_MASK &~
> > >> >
> > >> (_MM_MASK_OVERFLOW|_MM_MASK_INVALID|_MM_MASK_DIV_ZERO)
> );
> > >> >     __m512 result1 = _mm512_rsqrt28_round_ps(a,
> _MM_FROUND_NO_EXC );
> > >> >     printf("%d %d\n", _MM_FROUND_CUR_DIRECTION,
> > >> _MM_FROUND_NO_EXC);
> > >> >     __m512 result2 = _mm512_rsqrt28_round_ps(a,
> > >> _MM_FROUND_CUR_DIRECTION);
> > >> >
> > >> >     printf("%g\n", result1[0] - result2[0]);
> > >> >
> > >> >     return 0;
> > >> > }
> 
> 	Jakub

[-- Attachment #2: 0001-fix.patch --]
[-- Type: application/octet-stream, Size: 2684 bytes --]

From 8239fd51d39ec9aac5d68d0e49c1aa074410307a Mon Sep 17 00:00:00 2001
From: julia <jkoval@gkticlel801.igk.intel.com>
Date: Mon, 12 Jun 2017 13:23:29 +0300
Subject: [PATCH] fix

---
 gcc/config/i386/i386.c                    |  4 ++--
 gcc/config/i386/subst.md                  |  9 +++++----
 gcc/testsuite/gcc.target/i386/pr73350-2.c | 18 ++++++++++++++++++
 3 files changed, 25 insertions(+), 6 deletions(-)
 create mode 100644 gcc/testsuite/gcc.target/i386/pr73350-2.c

diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index d5c2d46..9f7290a 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -36597,8 +36597,8 @@ ix86_expand_sse_comi_round (const struct builtin_description *d,
     }
   else
     {
-      gcc_assert (GET_CODE (XVECEXP (pat, 0, 0)) == SET);
-      set_dst = SET_DEST (XVECEXP (pat, 0, 0));
+      gcc_assert (GET_CODE (pat) == SET);
+      set_dst = SET_DEST (pat);
     }
 
   emit_insn (pat);
diff --git a/gcc/config/i386/subst.md b/gcc/config/i386/subst.md
index 57fb0d4..4685db3 100644
--- a/gcc/config/i386/subst.md
+++ b/gcc/config/i386/subst.md
@@ -177,10 +177,11 @@
   [(set (match_operand:SUBST_A 0)
         (match_operand:SUBST_A 1))]
   "TARGET_AVX512F"
-  [(parallel[
-     (set (match_dup 0)
-          (match_dup 1))
-     (unspec [(match_operand:SI 2 "const48_operand")] UNSPEC_EMBEDDED_ROUNDING)])])
+  [(set (match_dup 0)
+	(unspec:SUBST_A [(match_dup 1)
+	  (match_operand:SI 2 "const48_operand")]
+	  UNSPEC_EMBEDDED_ROUNDING))
+])
 
 (define_subst_attr "round_expand_name" "round_expand" "" "_round")
 (define_subst_attr "round_expand_nimm_predicate" "round_expand" "nonimmediate_operand" "register_operand")
diff --git a/gcc/testsuite/gcc.target/i386/pr73350-2.c b/gcc/testsuite/gcc.target/i386/pr73350-2.c
new file mode 100644
index 0000000..cd5d599
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr73350-2.c
@@ -0,0 +1,18 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -mavx512f -mavx512er" } */
+/* { dg-final { scan-assembler-times "vrsqrt28ps\[ \\t\]+\[^\{\n\]*\{sae\}\[^\n\]*%zmm\[0-9\]+\[^\n\]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
+/* { dg-final { scan-assembler-times "vrsqrt28ps\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
+
+#include <x86intrin.h>
+
+void
+avx512f_test (void)
+{
+  __m512 a = _mm512_set1_ps((float) -1);
+  __m512 b = _mm512_set1_ps((float) -1);
+  _mm_setcsr (_MM_MASK_MASK & (_MM_MASK_OVERFLOW|_MM_MASK_INVALID|_MM_MASK_DIV_ZERO));
+  __m512 result1 = _mm512_rsqrt28_round_ps (a, _MM_FROUND_NO_EXC);
+  __m512 result2 = _mm512_rsqrt28_round_ps (a, _MM_FROUND_CUR_DIRECTION);
+  if (result1[0] == result2[0])
+    abort ();
+}
-- 
2.5.5


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH][X86] Fix rounding pattern similar to PR73350
  2017-06-12 16:50         ` Koval, Julia
@ 2017-06-13  8:08           ` Richard Biener
  2017-06-13 11:37             ` Koval, Julia
  0 siblings, 1 reply; 12+ messages in thread
From: Richard Biener @ 2017-06-13  8:08 UTC (permalink / raw)
  To: Koval, Julia
  Cc: Jakub Jelinek, H.J. Lu, GCC Patches, Uros Bizjak, Kirill Yukhin

On Mon, Jun 12, 2017 at 6:50 PM, Koval, Julia <julia.koval@intel.com> wrote:
> I'm so sorry, but I really don't get it. The right result of the test is: Floating point exception (core dumped). The wrong result of the test is: nan(no exception). If I get an exception(which is right) - the test is failed anyway. The exception is raised in one instruction, I can't get any intermediate value there..

We do have a few testcases catching these cases by installing a signal
handler (grep for sigaction in testsuite/)

Richard.

> I tried to replaced it with compile time test(attached), which shows, that both instruction are generated(not combined) - is it ok?
>
> Thanks,
> Julia
>
>> -----Original Message-----
>> From: Jakub Jelinek [mailto:jakub@redhat.com]
>> Sent: Monday, June 12, 2017 6:18 PM
>> To: H.J. Lu <hjl.tools@gmail.com>
>> Cc: Koval, Julia <julia.koval@intel.com>; GCC Patches <gcc-
>> patches@gcc.gnu.org>; Uros Bizjak <ubizjak@gmail.com>; Kirill Yukhin
>> <kirill.yukhin@gmail.com>
>> Subject: Re: [PATCH][X86] Fix rounding pattern similar to PR73350
>>
>> On Mon, Jun 12, 2017 at 09:08:00AM -0700, H.J. Lu wrote:
>> > On Mon, Jun 12, 2017 at 9:06 AM, Koval, Julia <julia.koval@intel.com> wrote:
>> > > I would like to, but as far as I know the only testcase possible is below, and
>> as far as I know there is no possibility to use dg-error for runtime
>> exceptions(Sorry, if I'm wrong). There are only 2 versions of the flag exception
>> or no exception and the error is, when they are combined in CSE.
>> >
>> > Can you use
>> >
>> > if (wrong)
>> >   abort ();
>> >
>> > in testcase?
>>
>> Where wrong can also be if (__builtin_fabsf (somefloatval - expectedval) <
>> epsilon)
>> or similar if needed.  Also, the testcase contains many unnecessary
>> includes, if you use __builtin_abort, I'd hope you only need x86intrin.h and
>> nothing else.  And, main can be just int main (), argc and argv aren't used.
>> >
>> > >> -----Original Message-----
>> > >> From: H.J. Lu [mailto:hjl.tools@gmail.com]
>> > >> Sent: Monday, June 12, 2017 3:43 PM
>> > >> To: Koval, Julia <julia.koval@intel.com>
>> > >> Cc: GCC Patches <gcc-patches@gcc.gnu.org>; Uros Bizjak
>> > >> <ubizjak@gmail.com>; Kirill Yukhin <kirill.yukhin@gmail.com>
>> > >> Subject: Re: [PATCH][X86] Fix rounding pattern similar to PR73350
>> > >>
>> > >> On Mon, Jun 12, 2017 at 6:21 AM, Koval, Julia <julia.koval@intel.com>
>> wrote:
>> > >> > This is the same issue as PR73350 and PR80862 for disabling FP
>> exceptions.
>> > >> >
>> > >> > gcc -O0 -mavx512f -mavx512er returns exception
>> > >> > gcc -O2 -mavx512f -mavx512er returns nan
>> > >> >
>> > >> > For this code:
>> > >> >
>> > >> > #include <stdio.h>
>> > >> > #include <math.h>
>> > >> > #include <x86intrin.h>
>> > >> > #include <limits.h>
>> > >> > #include <float.h>
>> > >> >
>> > >> > int main(int argc, char *argv[]) {
>> > >> >     __m512 a = _mm512_set1_ps((float) -1);
>> > >> >     __m512 b = _mm512_set1_ps((float) -1);
>> > >> >     _mm_setcsr( _MM_MASK_MASK &~
>> > >> >
>> > >> (_MM_MASK_OVERFLOW|_MM_MASK_INVALID|_MM_MASK_DIV_ZERO)
>> );
>> > >> >     __m512 result1 = _mm512_rsqrt28_round_ps(a,
>> _MM_FROUND_NO_EXC );
>> > >> >     printf("%d %d\n", _MM_FROUND_CUR_DIRECTION,
>> > >> _MM_FROUND_NO_EXC);
>> > >> >     __m512 result2 = _mm512_rsqrt28_round_ps(a,
>> > >> _MM_FROUND_CUR_DIRECTION);
>> > >> >
>> > >> >     printf("%g\n", result1[0] - result2[0]);
>> > >> >
>> > >> >     return 0;
>> > >> > }
>>
>>       Jakub

^ permalink raw reply	[flat|nested] 12+ messages in thread

* RE: [PATCH][X86] Fix rounding pattern similar to PR73350
  2017-06-13  8:08           ` Richard Biener
@ 2017-06-13 11:37             ` Koval, Julia
  2017-06-14  9:54               ` Uros Bizjak
  0 siblings, 1 reply; 12+ messages in thread
From: Koval, Julia @ 2017-06-13 11:37 UTC (permalink / raw)
  To: Richard Biener
  Cc: Jakub Jelinek, H.J. Lu, GCC Patches, Uros Bizjak, Kirill Yukhin

[-- Attachment #1: Type: text/plain, Size: 4498 bytes --]

Thank you for your help. I fixed the test similar to existing sigaction tests.

gcc/
	* config/i386/i386.c: Fix rounding expand for new pattern.
	* config/i386/subst.md: Fix pattern (parallel -> unspec).
gcc/testsuite/
	* gcc.target/i386/pr73350-2.c: New test.

Thanks,
Julia

> -----Original Message-----
> From: Richard Biener [mailto:richard.guenther@gmail.com]
> Sent: Tuesday, June 13, 2017 10:09 AM
> To: Koval, Julia <julia.koval@intel.com>
> Cc: Jakub Jelinek <jakub@redhat.com>; H.J. Lu <hjl.tools@gmail.com>; GCC
> Patches <gcc-patches@gcc.gnu.org>; Uros Bizjak <ubizjak@gmail.com>; Kirill
> Yukhin <kirill.yukhin@gmail.com>
> Subject: Re: [PATCH][X86] Fix rounding pattern similar to PR73350
> 
> On Mon, Jun 12, 2017 at 6:50 PM, Koval, Julia <julia.koval@intel.com> wrote:
> > I'm so sorry, but I really don't get it. The right result of the test is: Floating
> point exception (core dumped). The wrong result of the test is: nan(no
> exception). If I get an exception(which is right) - the test is failed anyway. The
> exception is raised in one instruction, I can't get any intermediate value there..
> 
> We do have a few testcases catching these cases by installing a signal
> handler (grep for sigaction in testsuite/)
> 
> Richard.
> 
> > I tried to replaced it with compile time test(attached), which shows, that both
> instruction are generated(not combined) - is it ok?
> >
> > Thanks,
> > Julia
> >
> >> -----Original Message-----
> >> From: Jakub Jelinek [mailto:jakub@redhat.com]
> >> Sent: Monday, June 12, 2017 6:18 PM
> >> To: H.J. Lu <hjl.tools@gmail.com>
> >> Cc: Koval, Julia <julia.koval@intel.com>; GCC Patches <gcc-
> >> patches@gcc.gnu.org>; Uros Bizjak <ubizjak@gmail.com>; Kirill Yukhin
> >> <kirill.yukhin@gmail.com>
> >> Subject: Re: [PATCH][X86] Fix rounding pattern similar to PR73350
> >>
> >> On Mon, Jun 12, 2017 at 09:08:00AM -0700, H.J. Lu wrote:
> >> > On Mon, Jun 12, 2017 at 9:06 AM, Koval, Julia <julia.koval@intel.com>
> wrote:
> >> > > I would like to, but as far as I know the only testcase possible is below,
> and
> >> as far as I know there is no possibility to use dg-error for runtime
> >> exceptions(Sorry, if I'm wrong). There are only 2 versions of the flag
> exception
> >> or no exception and the error is, when they are combined in CSE.
> >> >
> >> > Can you use
> >> >
> >> > if (wrong)
> >> >   abort ();
> >> >
> >> > in testcase?
> >>
> >> Where wrong can also be if (__builtin_fabsf (somefloatval - expectedval) <
> >> epsilon)
> >> or similar if needed.  Also, the testcase contains many unnecessary
> >> includes, if you use __builtin_abort, I'd hope you only need x86intrin.h and
> >> nothing else.  And, main can be just int main (), argc and argv aren't used.
> >> >
> >> > >> -----Original Message-----
> >> > >> From: H.J. Lu [mailto:hjl.tools@gmail.com]
> >> > >> Sent: Monday, June 12, 2017 3:43 PM
> >> > >> To: Koval, Julia <julia.koval@intel.com>
> >> > >> Cc: GCC Patches <gcc-patches@gcc.gnu.org>; Uros Bizjak
> >> > >> <ubizjak@gmail.com>; Kirill Yukhin <kirill.yukhin@gmail.com>
> >> > >> Subject: Re: [PATCH][X86] Fix rounding pattern similar to PR73350
> >> > >>
> >> > >> On Mon, Jun 12, 2017 at 6:21 AM, Koval, Julia <julia.koval@intel.com>
> >> wrote:
> >> > >> > This is the same issue as PR73350 and PR80862 for disabling FP
> >> exceptions.
> >> > >> >
> >> > >> > gcc -O0 -mavx512f -mavx512er returns exception
> >> > >> > gcc -O2 -mavx512f -mavx512er returns nan
> >> > >> >
> >> > >> > For this code:
> >> > >> >
> >> > >> > #include <stdio.h>
> >> > >> > #include <math.h>
> >> > >> > #include <x86intrin.h>
> >> > >> > #include <limits.h>
> >> > >> > #include <float.h>
> >> > >> >
> >> > >> > int main(int argc, char *argv[]) {
> >> > >> >     __m512 a = _mm512_set1_ps((float) -1);
> >> > >> >     __m512 b = _mm512_set1_ps((float) -1);
> >> > >> >     _mm_setcsr( _MM_MASK_MASK &~
> >> > >> >
> >> > >>
> (_MM_MASK_OVERFLOW|_MM_MASK_INVALID|_MM_MASK_DIV_ZERO)
> >> );
> >> > >> >     __m512 result1 = _mm512_rsqrt28_round_ps(a,
> >> _MM_FROUND_NO_EXC );
> >> > >> >     printf("%d %d\n", _MM_FROUND_CUR_DIRECTION,
> >> > >> _MM_FROUND_NO_EXC);
> >> > >> >     __m512 result2 = _mm512_rsqrt28_round_ps(a,
> >> > >> _MM_FROUND_CUR_DIRECTION);
> >> > >> >
> >> > >> >     printf("%g\n", result1[0] - result2[0]);
> >> > >> >
> >> > >> >     return 0;
> >> > >> > }
> >>
> >>       Jakub

[-- Attachment #2: 0001-fix.patch --]
[-- Type: application/octet-stream, Size: 2753 bytes --]

From 7844ba15defae9fb4c276cb796158d5a60938d18 Mon Sep 17 00:00:00 2001
From: julia <jkoval@gkticlel801.igk.intel.com>
Date: Mon, 12 Jun 2017 13:23:29 +0300
Subject: [PATCH] fix

---
 gcc/config/i386/i386.c                    |  4 ++--
 gcc/config/i386/subst.md                  |  9 +++++----
 gcc/testsuite/gcc.target/i386/pr73350-2.c | 33 +++++++++++++++++++++++++++++++
 3 files changed, 40 insertions(+), 6 deletions(-)
 create mode 100644 gcc/testsuite/gcc.target/i386/pr73350-2.c

diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index d5c2d46..9f7290a 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -36597,8 +36597,8 @@ ix86_expand_sse_comi_round (const struct builtin_description *d,
     }
   else
     {
-      gcc_assert (GET_CODE (XVECEXP (pat, 0, 0)) == SET);
-      set_dst = SET_DEST (XVECEXP (pat, 0, 0));
+      gcc_assert (GET_CODE (pat) == SET);
+      set_dst = SET_DEST (pat);
     }
 
   emit_insn (pat);
diff --git a/gcc/config/i386/subst.md b/gcc/config/i386/subst.md
index 57fb0d4..4685db3 100644
--- a/gcc/config/i386/subst.md
+++ b/gcc/config/i386/subst.md
@@ -177,10 +177,11 @@
   [(set (match_operand:SUBST_A 0)
         (match_operand:SUBST_A 1))]
   "TARGET_AVX512F"
-  [(parallel[
-     (set (match_dup 0)
-          (match_dup 1))
-     (unspec [(match_operand:SI 2 "const48_operand")] UNSPEC_EMBEDDED_ROUNDING)])])
+  [(set (match_dup 0)
+	(unspec:SUBST_A [(match_dup 1)
+	  (match_operand:SI 2 "const48_operand")]
+	  UNSPEC_EMBEDDED_ROUNDING))
+])
 
 (define_subst_attr "round_expand_name" "round_expand" "" "_round")
 (define_subst_attr "round_expand_nimm_predicate" "round_expand" "nonimmediate_operand" "register_operand")
diff --git a/gcc/testsuite/gcc.target/i386/pr73350-2.c b/gcc/testsuite/gcc.target/i386/pr73350-2.c
new file mode 100644
index 0000000..e7137f7
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr73350-2.c
@@ -0,0 +1,33 @@
+/* { dg-do run { target *-*-linux* *-*-gnu* } } */
+/* { dg-options "-O2 -mavx512f -mavx512er" } */
+/* { dg-require-effective-target avx512f } */
+
+#include <x86intrin.h>
+#include <unistd.h>
+#include <signal.h>
+#include <stdlib.h>
+
+void do_exit (int i)
+{
+  exit (0);
+}
+
+void
+main (void)
+{
+  struct sigaction s;
+  sigemptyset (&s.sa_mask);
+  s.sa_handler = do_exit;
+  s.sa_flags = 0;
+  sigaction (SIGFPE, &s, NULL);
+  alarm (1);
+
+  __m512 a = _mm512_set1_ps ((float) -1);
+  __m512 b = _mm512_set1_ps ((float) -1);
+  _mm_setcsr ( _MM_MASK_MASK &~ (_MM_MASK_OVERFLOW|_MM_MASK_INVALID|_MM_MASK_DIV_ZERO) );
+  __m512 result1 = _mm512_rsqrt28_round_ps (a, _MM_FROUND_NO_EXC);
+  __m512 result2 = _mm512_rsqrt28_round_ps (a, _MM_FROUND_CUR_DIRECTION);
+  
+  if (result1[0] + result2[0])
+    abort ();
+}
-- 
2.5.5


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH][X86] Fix rounding pattern similar to PR73350
  2017-06-13 11:37             ` Koval, Julia
@ 2017-06-14  9:54               ` Uros Bizjak
  2017-06-16  6:46                 ` Koval, Julia
  0 siblings, 1 reply; 12+ messages in thread
From: Uros Bizjak @ 2017-06-14  9:54 UTC (permalink / raw)
  To: Koval, Julia
  Cc: Richard Biener, Jakub Jelinek, H.J. Lu, GCC Patches, Kirill Yukhin

[-- Attachment #1: Type: text/plain, Size: 478 bytes --]

On Tue, Jun 13, 2017 at 1:37 PM, Koval, Julia <julia.koval@intel.com> wrote:
> Thank you for your help. I fixed the test similar to existing sigaction tests.
>
> gcc/
>         * config/i386/i386.c: Fix rounding expand for new pattern.
>         * config/i386/subst.md: Fix pattern (parallel -> unspec).
> gcc/testsuite/
>         * gcc.target/i386/pr73350-2.c: New test.

The test will fail at runtime on non-avx512er targets. Can you please
test the attached testcase?

Uros.

[-- Attachment #2: t.c --]
[-- Type: text/x-csrc, Size: 729 bytes --]

/* { dg-do run { target *-*-linux* *-*-gnu* } } */
/* { dg-options "-O2 -mavx512er" } */
/* { dg-require-effective-target avx512er } */

#include "avx512er-check.h"

#include <x86intrin.h>
#include <unistd.h>
#include <signal.h>

static int counter;

void handler (int i)
{
  counter++;
}

static void
avx512er_test (void)
{
  struct sigaction s;
  sigemptyset (&s.sa_mask);
  s.sa_handler = handler;
  s.sa_flags = 0;
  sigaction (SIGFPE, &s, NULL);

  __m512 a = _mm512_set1_ps (-1.f);

  _mm_setcsr ( _MM_MASK_MASK & ~_MM_MASK_INVALID );
  volatile __m512 r1 = _mm512_rsqrt28_round_ps (a, _MM_FROUND_NO_EXC);
  volatile __m512 r2 = _mm512_rsqrt28_round_ps (a, _MM_FROUND_CUR_DIRECTION);
  
  if (counter != 1)
    abort ();
}

^ permalink raw reply	[flat|nested] 12+ messages in thread

* RE: [PATCH][X86] Fix rounding pattern similar to PR73350
  2017-06-14  9:54               ` Uros Bizjak
@ 2017-06-16  6:46                 ` Koval, Julia
  2017-06-16  7:05                   ` Uros Bizjak
  0 siblings, 1 reply; 12+ messages in thread
From: Koval, Julia @ 2017-06-16  6:46 UTC (permalink / raw)
  To: Uros Bizjak
  Cc: Richard Biener, Jakub Jelinek, H.J. Lu, GCC Patches, Kirill Yukhin

[-- Attachment #1: Type: text/plain, Size: 1305 bytes --]

Hi,

This test hangs on avx512er, maybe that's why:
> According to POSIX, the behavior of a process is undefined after it ignores a SIGFPE, SIGILL, or SIGSEGV signal that was not generated by kill(2) or raise(3).

And volatile make it work even without a patch(r1 and r2 are not combined then).

Added other changes.

Thanks,
Julia


> -----Original Message-----
> From: Uros Bizjak [mailto:ubizjak@gmail.com]
> Sent: Wednesday, June 14, 2017 11:54 AM
> To: Koval, Julia <julia.koval@intel.com>
> Cc: Richard Biener <richard.guenther@gmail.com>; Jakub Jelinek
> <jakub@redhat.com>; H.J. Lu <hjl.tools@gmail.com>; GCC Patches <gcc-
> patches@gcc.gnu.org>; Kirill Yukhin <kirill.yukhin@gmail.com>
> Subject: Re: [PATCH][X86] Fix rounding pattern similar to PR73350
> 
> On Tue, Jun 13, 2017 at 1:37 PM, Koval, Julia <julia.koval@intel.com> wrote:
> > Thank you for your help. I fixed the test similar to existing sigaction tests.
> >
> > gcc/
> >         * config/i386/i386.c: Fix rounding expand for new pattern.
> >         * config/i386/subst.md: Fix pattern (parallel -> unspec).
> > gcc/testsuite/
> >         * gcc.target/i386/pr73350-2.c: New test.
> 
> The test will fail at runtime on non-avx512er targets. Can you please
> test the attached testcase?
> 
> Uros.

[-- Attachment #2: 0001-fix.patch --]
[-- Type: application/octet-stream, Size: 2675 bytes --]

From aa67411b55098487c22d9ea86a51377ec5514743 Mon Sep 17 00:00:00 2001
From: julia <jkoval@gkticlel801.igk.intel.com>
Date: Mon, 12 Jun 2017 13:23:29 +0300
Subject: [PATCH] fix

---
 gcc/config/i386/i386.c                    |  4 ++--
 gcc/config/i386/subst.md                  |  9 ++++----
 gcc/testsuite/gcc.target/i386/pr73350-2.c | 35 +++++++++++++++++++++++++++++++
 3 files changed, 42 insertions(+), 6 deletions(-)
 create mode 100644 gcc/testsuite/gcc.target/i386/pr73350-2.c

diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index d5c2d46..9f7290a 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -36597,8 +36597,8 @@ ix86_expand_sse_comi_round (const struct builtin_description *d,
     }
   else
     {
-      gcc_assert (GET_CODE (XVECEXP (pat, 0, 0)) == SET);
-      set_dst = SET_DEST (XVECEXP (pat, 0, 0));
+      gcc_assert (GET_CODE (pat) == SET);
+      set_dst = SET_DEST (pat);
     }
 
   emit_insn (pat);
diff --git a/gcc/config/i386/subst.md b/gcc/config/i386/subst.md
index 57fb0d4..4685db3 100644
--- a/gcc/config/i386/subst.md
+++ b/gcc/config/i386/subst.md
@@ -177,10 +177,11 @@
   [(set (match_operand:SUBST_A 0)
         (match_operand:SUBST_A 1))]
   "TARGET_AVX512F"
-  [(parallel[
-     (set (match_dup 0)
-          (match_dup 1))
-     (unspec [(match_operand:SI 2 "const48_operand")] UNSPEC_EMBEDDED_ROUNDING)])])
+  [(set (match_dup 0)
+	(unspec:SUBST_A [(match_dup 1)
+	  (match_operand:SI 2 "const48_operand")]
+	  UNSPEC_EMBEDDED_ROUNDING))
+])
 
 (define_subst_attr "round_expand_name" "round_expand" "" "_round")
 (define_subst_attr "round_expand_nimm_predicate" "round_expand" "nonimmediate_operand" "register_operand")
diff --git a/gcc/testsuite/gcc.target/i386/pr73350-2.c b/gcc/testsuite/gcc.target/i386/pr73350-2.c
new file mode 100644
index 0000000..c1faab4
--- /dev/null
+++ b/gcc/testsuite/gcc.target/i386/pr73350-2.c
@@ -0,0 +1,35 @@
+/* { dg-do run { target *-*-linux* *-*-gnu* } } */
+/* { dg-options "-O2 -mavx512er" } */
+/* { dg-require-effective-target avx512er } */
+
+#include "avx512er-check.h"
+
+#include <x86intrin.h>
+#include <unistd.h>
+#include <signal.h>
+
+static int counter;
+
+void handler (int i)
+{
+  exit (0);
+}
+
+static void
+avx512er_test (void)
+{
+  struct sigaction s;
+  sigemptyset (&s.sa_mask);
+  s.sa_handler = handler;
+  s.sa_flags = 0;
+  sigaction (SIGFPE, &s, NULL);
+
+  __m512 a = _mm512_set1_ps (-1.f);
+
+  _mm_setcsr ( _MM_MASK_MASK & ~_MM_MASK_INVALID );
+  __m512 r1 = _mm512_rsqrt28_round_ps (a, _MM_FROUND_NO_EXC);
+  __m512 r2 = _mm512_rsqrt28_round_ps (a, _MM_FROUND_CUR_DIRECTION);
+  
+  if (r1[0] + r2[0])
+    abort ();
+}
-- 
1.8.3.1


^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH][X86] Fix rounding pattern similar to PR73350
  2017-06-16  6:46                 ` Koval, Julia
@ 2017-06-16  7:05                   ` Uros Bizjak
  2017-06-20 18:26                     ` Kirill Yukhin
  0 siblings, 1 reply; 12+ messages in thread
From: Uros Bizjak @ 2017-06-16  7:05 UTC (permalink / raw)
  To: Koval, Julia
  Cc: Richard Biener, Jakub Jelinek, H.J. Lu, GCC Patches, Kirill Yukhin

On Fri, Jun 16, 2017 at 8:46 AM, Koval, Julia <julia.koval@intel.com> wrote:
> Hi,
>
> This test hangs on avx512er, maybe that's why:
>> According to POSIX, the behavior of a process is undefined after it ignores a SIGFPE, SIGILL, or SIGSEGV signal that was not generated by kill(2) or raise(3).
>
> And volatile make it work even without a patch(r1 and r2 are not combined then).
>
> Added other changes.

The testcase LGTM. I'll leave the final approval to Kirill.

Uros.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH][X86] Fix rounding pattern similar to PR73350
  2017-06-16  7:05                   ` Uros Bizjak
@ 2017-06-20 18:26                     ` Kirill Yukhin
  0 siblings, 0 replies; 12+ messages in thread
From: Kirill Yukhin @ 2017-06-20 18:26 UTC (permalink / raw)
  To: Uros Bizjak
  Cc: Koval, Julia, Richard Biener, Jakub Jelinek, H.J. Lu, GCC Patches

Hello Julia, Uroš,
On 16 Jun 09:05, Uros Bizjak wrote:
> On Fri, Jun 16, 2017 at 8:46 AM, Koval, Julia <julia.koval@intel.com> wrote:
> > Hi,
> >
> > This test hangs on avx512er, maybe that's why:
> >> According to POSIX, the behavior of a process is undefined after it ignores a SIGFPE, SIGILL, or SIGSEGV signal that was not generated by kill(2) or raise(3).
> >
> > And volatile make it work even without a patch(r1 and r2 are not combined then).
> >
> > Added other changes.
> 
> The testcase LGTM. I'll leave the final approval to Kirill.
The change and the case are fine to me. I've committed it to main trunk.
> 
> Uros.

=-
Thanks, K

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2017-06-20 18:26 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-06-12 13:21 [PATCH][X86] Fix rounding pattern similar to PR73350 Koval, Julia
2017-06-12 13:42 ` H.J. Lu
2017-06-12 16:06   ` Koval, Julia
2017-06-12 16:08     ` H.J. Lu
2017-06-12 16:18       ` Jakub Jelinek
2017-06-12 16:50         ` Koval, Julia
2017-06-13  8:08           ` Richard Biener
2017-06-13 11:37             ` Koval, Julia
2017-06-14  9:54               ` Uros Bizjak
2017-06-16  6:46                 ` Koval, Julia
2017-06-16  7:05                   ` Uros Bizjak
2017-06-20 18:26                     ` Kirill Yukhin

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).