1  /* { dg-do compile } */
       2  /* { dg-options "-fopenmp-simd -fdump-tree-original" } */
       3  
       4  #pragma omp declare simd
       5  float bar(float b) {
       6    return b*b;
       7  }
       8  
       9  void foo(int n, float *a, float *b)
      10  {
      11    int i; 
      12  #pragma omp simd
      13    for (i = 0; i < n ; i++)
      14      a[i] = b[i];
      15  #pragma omp for simd
      16    for (i = 0; i < n ; i++)
      17      a[i] = b[i];
      18  #pragma omp distribute simd
      19    for (i = 0; i < n ; i++)
      20      a[i] = b[i];
      21  #pragma omp distribute parallel for simd
      22    for (i = 0; i < n ; i++)
      23      a[i] = b[i];
      24  #pragma omp parallel for simd
      25    for (i = 0; i < n ; i++)
      26      a[i] = b[i];
      27  #pragma omp teams distribute simd
      28    for (i = 0; i < n ; i++)
      29      a[i] = b[i];
      30  #pragma omp target teams distribute simd
      31    for (i = 0; i < n ; i++)
      32      a[i] = b[i];
      33  #pragma omp teams distribute parallel for simd
      34    for (i = 0; i < n ; i++)
      35      a[i] = b[i];
      36  #pragma omp target teams distribute parallel for simd
      37    for (i = 0; i < n ; i++)
      38      a[i] = b[i];
      39  }
      40  
      41  /* { dg-final { scan-tree-dump-times "pragma omp simd" 9 "original" } } */
      42  /* { dg-final { scan-tree-dump-not "omp for" "original" } } */
      43  /* { dg-final { scan-tree-dump-not "omp distribute" "original" } } */
      44  /* { dg-final { scan-tree-dump-not "omp teams" "original" } } */
      45  /* { dg-final { scan-tree-dump-not "omp target" "original" } } */
      46  /* { dg-final { scan-tree-dump-not "omp parallel" "original" } } */