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.