1  /* Check that atomic ops utilize insns with immediate values.  */
       2  
       3  #define emitfuncs(name)\
       4    void test_ ## name ## _0 (char* mem)\
       5    {\
       6      name (mem, 1, __ATOMIC_ACQ_REL);\
       7    }\
       8    void test_ ## name ## _1 (short* mem)\
       9    {\
      10      name (mem, 1, __ATOMIC_ACQ_REL);\
      11    }\
      12    void test_ ## name ##_2 (int* mem)\
      13    {\
      14      name (mem, 1, __ATOMIC_ACQ_REL);\
      15    }\
      16  
      17  emitfuncs (__atomic_add_fetch)
      18  emitfuncs (__atomic_fetch_add)
      19  
      20  emitfuncs (__atomic_sub_fetch)
      21  emitfuncs (__atomic_fetch_sub)
      22  
      23  emitfuncs (__atomic_and_fetch)
      24  emitfuncs (__atomic_fetch_and)
      25  
      26  emitfuncs (__atomic_or_fetch)
      27  emitfuncs (__atomic_fetch_or)
      28  
      29  emitfuncs (__atomic_xor_fetch)
      30  emitfuncs (__atomic_fetch_xor)
      31  
      32  emitfuncs (__atomic_nand_fetch)
      33  emitfuncs (__atomic_fetch_nand)
      34  
      35  void
      36  test___atomic_compare_exchange_0 (char* mem)
      37  {
      38    char expected = 1;
      39    char desired = 5;
      40    __atomic_compare_exchange (mem, &expected, &desired, 0, __ATOMIC_ACQ_REL,
      41  			     __ATOMIC_RELAXED);
      42  }
      43  
      44  void
      45  test___atomic_compare_exchange_1 (short* mem)
      46  {
      47    short expected = 1;
      48    short desired = 5;
      49    __atomic_compare_exchange (mem, &expected, &desired, 0, __ATOMIC_ACQ_REL,
      50  			     __ATOMIC_RELAXED);
      51  }
      52  
      53  void
      54  test___atomic_compare_exchange_2 (int* mem)
      55  {
      56    int expected = 1;
      57    int desired = 5;
      58    __atomic_compare_exchange (mem, &expected, &desired, 0, __ATOMIC_ACQ_REL,
      59  			     __ATOMIC_RELAXED);
      60  }