(root)/
gcc-13.2.0/
libgomp/
testsuite/
libgomp.c/
target-simd-clone-3.c
       1  /* { dg-do link { target { offload_target_amdgcn } } } */
       2  /* { dg-additional-options "-O2 -foffload-options=-fdump-ipa-simdclone-details" } */
       3  
       4  /* Test that device simd clones are not generated for functions with the host
       5     "declare target" clause only.  */
       6  
       7  __attribute__ ((__noinline__)) int addit (int a, int b)
       8  {
       9    return a + b;
      10  }
      11  #pragma omp declare target to(addit) device_type(host)
      12  
      13  #pragma omp declare target
      14  void callit (int *a, int *b, int *c)
      15  {
      16    int i;
      17    #pragma omp for simd
      18    for (i = 0; i < 16; i++)
      19      c[i] = addit (a[i], b[i]);
      20  }
      21  #pragma omp end declare target
      22  
      23  int main (void)
      24  {
      25    int aa[16], bb[16], cc[16];
      26    int i;
      27    for (i = 0; i < 16; i++)
      28      {
      29        aa[i] = i;
      30        bb[i] = -i;
      31      }
      32    callit (aa, bb, cc);
      33    for (i = 0; i < 16; i++)
      34      if (cc[i] != 0)
      35        return 1;
      36    return 0;
      37  }
      38  
      39  /* { dg-final { scan-offload-ipa-dump "device doesn't match" "simdclone" { target x86_64-*-* } } } */
      40  /* { dg-final { scan-offload-ipa-dump-not "Generated .* clone" "simdclone" { target x86_64-*-* } } } */