1  /* Test rint and related functions expanded inline for SSE2.  All
       2     should be expanded when spurious "inexact" allowed.  */
       3  /* { dg-do compile } */
       4  /* { dg-options "-O2 -msse2 -mfpmath=sse -ffp-int-builtin-inexact" } */
       5  /* { dg-require-effective-target sse2 } */
       6  
       7  #define TEST(FN, TYPE)				\
       8    do						\
       9      {						\
      10        volatile TYPE a = 1.5, b;			\
      11        b = FN (a);				\
      12      }						\
      13    while (0)
      14  
      15  #define FN_TESTS(FN)					\
      16    do							\
      17      {							\
      18        TEST (__builtin_ ## FN, double);			\
      19        TEST (__builtin_ ## FN ## f, float);		\
      20      }							\
      21    while (0)
      22  
      23  void
      24  test (void)
      25  {
      26    FN_TESTS (rint);
      27    FN_TESTS (ceil);
      28    FN_TESTS (floor);
      29    FN_TESTS (trunc);
      30  }
      31  
      32  /* { dg-final { scan-assembler-not "\[ \t\]rint" } } */
      33  /* { dg-final { scan-assembler-not "\[ \t\]ceil" } } */
      34  /* { dg-final { scan-assembler-not "\[ \t\]floor" } } */
      35  /* { dg-final { scan-assembler-not "\[ \t\]trunc" } } */