(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
aarch64/
pr81647.c
       1  /* { dg-do run } */
       2  /* { dg-options "-O3 -fdump-tree-ssa" } */
       3  /* { dg-require-effective-target fenv_exceptions } */
       4  
       5  #include <fenv.h>
       6  
       7  double x[28], y[28];
       8  int res[28];
       9  
      10  int
      11  main (void)
      12  {
      13    int i;
      14    for (i = 0; i < 28; ++i)
      15      {
      16        x[i] = __builtin_nan ("");
      17        y[i] = i;
      18      }
      19    __asm__ volatile ("" ::: "memory");
      20    feclearexcept (FE_ALL_EXCEPT);
      21    for (i = 0; i < 4; ++i)
      22      res[i] = __builtin_isgreater (x[i], y[i]);
      23    for (i = 4; i < 8; ++i)
      24      res[i] = __builtin_isgreaterequal (x[i], y[i]);
      25    for (i = 8; i < 12; ++i)
      26      res[i] = __builtin_isless (x[i], y[i]);
      27    for (i = 12; i < 16; ++i)
      28      res[i] = __builtin_islessequal (x[i], y[i]);
      29    for (i = 16; i < 20; ++i)
      30      res[i] = __builtin_islessgreater (x[i], y[i]);
      31    for (i = 20; i < 24; ++i)
      32      res[i] = __builtin_isunordered (x[i], y[i]);
      33    for (i = 24; i < 28; ++i)
      34      res[i] = !(__builtin_isunordered (x[i], y[i]));
      35    __asm__ volatile ("" ::: "memory");
      36    return fetestexcept (FE_ALL_EXCEPT) != 0;
      37  }
      38  
      39  /* { dg-final { scan-tree-dump " u> " "ssa" } } */
      40  /* { dg-final { scan-tree-dump " u>= " "ssa" } } */
      41  /* { dg-final { scan-tree-dump " u< " "ssa" } } */
      42  /* { dg-final { scan-tree-dump " u<= " "ssa" } } */
      43  /* { dg-final { scan-tree-dump " u== " "ssa" } } */
      44  /* { dg-final { scan-tree-dump " unord " "ssa" } } */
      45  /* { dg-final { scan-tree-dump " ord " "ssa" } } */