text: /* { dg-do compile } */
  /* { dg-options "-Ofast -mavx -mno-avx2" } */
  
  #include <x86intrin.h>
  
  __attribute__((noinline, noclone)) double
  f1 (double x)
  {
    return __builtin_round (x);
  }
  
  __attribute__((noinline, noclone)) float
  f2 (float x)
  {
    return __builtin_roundf (x);
  }
  
  __attribute__((noinline, noclone)) __m128d
  f3 (__m128d x, __m128d y)
  {
    return _mm_round_sd (x, y, _MM_FROUND_NINT);
  }
  
  __attribute__((noinline, noclone)) __m128
  f4 (__m128 x, __m128 y)
  {
    return _mm_round_ss (x, y, _MM_FROUND_NINT);
  }
  
  __attribute__((noinline, noclone)) __m128d
  f5 (__m128d x)
  {
    return _mm_round_pd (x, _MM_FROUND_NINT);
  }
  
  __attribute__((noinline, noclone)) __m128
  f6 (__m128 x)
  {
    return _mm_round_ps (x, _MM_FROUND_NINT);
  }
  
  __attribute__((noinline, noclone)) __m256d
  f7 (__m256d x)
  {
    return _mm256_round_pd (x, _MM_FROUND_NINT);
  }
  
  __attribute__((noinline, noclone)) __m256
  f8 (__m256 x)
  {
    return _mm256_round_ps (x, _MM_FROUND_NINT);
  }
  
  /* { dg-final { scan-assembler-times "vroundsd\[^\n\r\]*xmm" 2 } } */
  /* { dg-final { scan-assembler-times "vroundss\[^\n\r\]*xmm" 2 } } */
  /* { dg-final { scan-assembler-times "vroundpd\[^\n\r\]*xmm" 1 } } */
  /* { dg-final { scan-assembler-times "vroundps\[^\n\r\]*xmm" 1 } } */
  /* { dg-final { scan-assembler-times "vroundpd\[^\n\r\]*ymm" 1 } } */
  /* { dg-final { scan-assembler-times "vroundps\[^\n\r\]*ymm" 1 } } */
  