On Mon, Jun 12, 2017 at 9:06 AM, Koval, Julia <julia.ko...@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.to...@gmail.com] >> Sent: Monday, June 12, 2017 3:43 PM >> To: Koval, Julia <julia.ko...@intel.com> >> Cc: GCC Patches <gcc-patches@gcc.gnu.org>; Uros Bizjak >> <ubiz...@gmail.com>; Kirill Yukhin <kirill.yuk...@gmail.com> >> Subject: Re: [PATCH][X86] Fix rounding pattern similar to PR73350 >> >> On Mon, Jun 12, 2017 at 6:21 AM, Koval, Julia <julia.ko...@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.