[PATCH][X86] Fix rounding pattern similar to PR73350

Koval, Julia julia.koval@intel.com
Mon Jun 12 16:50:00 GMT 2017


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
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0001-fix.patch
Type: application/octet-stream
Size: 2684 bytes
Desc: 0001-fix.patch
URL: <http://gcc.gnu.org/pipermail/gcc-patches/attachments/20170612/43005866/attachment.obj>


More information about the Gcc-patches mailing list