(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
nvptx/
atomic-exchange-2.c
       1  /* Test the atomic exchange expansion, global state space.  */
       2  
       3  /* { dg-do compile } */
       4  /* { dg-options "-Wno-long-long" } */
       5  
       6  enum memmodel
       7  {
       8    MEMMODEL_SEQ_CST = 5
       9  };
      10  
      11  unsigned char u8;
      12  unsigned short u16;
      13  unsigned int u32;
      14  unsigned long long int u64;
      15  
      16  int
      17  main()
      18  {
      19    __atomic_exchange_n (&u8, 0, MEMMODEL_SEQ_CST);
      20    __atomic_exchange_n (&u16, 0, MEMMODEL_SEQ_CST);
      21    __atomic_exchange_n (&u32, 0, MEMMODEL_SEQ_CST);
      22    __atomic_exchange_n (&u64, 0, MEMMODEL_SEQ_CST);
      23  
      24    return 0;
      25  }
      26  
      27  /* Not ptx-native, fallback to libatomic.  */
      28  /* { dg-final { scan-assembler-times "(?n)call .* __atomic_exchange_1" 1 } } */
      29  /* { dg-final { scan-assembler-times "(?n)call .* __atomic_exchange_2" 1 } } */
      30  
      31  /* { dg-final { scan-assembler-times "atom.global.exch.b32" 1 } } */
      32  /* { dg-final { scan-assembler-times "atom.global.exch.b64" 1 } } */
      33  /* { dg-final { scan-assembler-times "membar.sys" 4 } } */