(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
pr73350-2.c
       1  /* { dg-do run { target *-*-linux* *-*-gnu* } } */
       2  /* { dg-options "-O2 -mavx512er" } */
       3  /* { dg-require-effective-target avx512er } */
       4  
       5  #include "avx512er-check.h"
       6  
       7  #include <x86intrin.h>
       8  #include <unistd.h>
       9  #include <signal.h>
      10  
      11  static int counter;
      12  
      13  void handler (int i)
      14  {
      15    exit (0);
      16  }
      17  
      18  static void
      19  avx512er_test (void)
      20  {
      21    struct sigaction s;
      22    sigemptyset (&s.sa_mask);
      23    s.sa_handler = handler;
      24    s.sa_flags = 0;
      25    sigaction (SIGFPE, &s, NULL);
      26  
      27    __m512 a = _mm512_set1_ps (-1.f);
      28  
      29    _mm_setcsr ( _MM_MASK_MASK & ~_MM_MASK_INVALID );
      30    __m512 r1 = _mm512_rsqrt28_round_ps (a, _MM_FROUND_NO_EXC);
      31    __m512 r2 = _mm512_rsqrt28_round_ps (a, _MM_FROUND_CUR_DIRECTION);
      32    
      33    if (r1[0] + r2[0])
      34      abort ();
      35  }