This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
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:
0001-fix.patch
Description: 0001-fix.patch
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |