PAPI 7.1.0.0
Loading...
Searching...
No Matches
icc/ia64.h File Reference
Include dependency graph for icc/ia64.h:

Go to the source code of this file.

Macros

#define AO_INTEL_PTR_t   void *
 
#define AO_HAVE_load_acquire
 
#define AO_HAVE_store_release
 
#define AO_HAVE_char_load_acquire
 
#define AO_HAVE_char_store_release
 
#define AO_HAVE_short_load_acquire
 
#define AO_HAVE_short_store_release
 
#define AO_HAVE_int_load_acquire
 
#define AO_HAVE_int_store_release
 
#define AO_HAVE_nop_full
 
#define AO_HAVE_fetch_and_add1_acquire
 
#define AO_HAVE_fetch_and_add1_release
 
#define AO_HAVE_fetch_and_sub1_acquire
 
#define AO_HAVE_fetch_and_sub1_release
 
#define AO_HAVE_fetch_compare_and_swap_acquire
 
#define AO_HAVE_fetch_compare_and_swap_release
 
#define AO_HAVE_char_fetch_compare_and_swap_acquire
 
#define AO_HAVE_char_fetch_compare_and_swap_release
 
#define AO_HAVE_short_fetch_compare_and_swap_acquire
 
#define AO_HAVE_short_fetch_compare_and_swap_release
 
#define AO_HAVE_int_fetch_compare_and_swap_acquire
 
#define AO_HAVE_int_fetch_compare_and_swap_release
 

Functions

AO_INLINE AO_t AO_load_acquire (const volatile AO_t *p)
 
AO_INLINE void AO_store_release (volatile AO_t *p, AO_t val)
 
AO_INLINE unsigned char AO_char_load_acquire (const volatile unsigned char *p)
 
AO_INLINE void AO_char_store_release (volatile unsigned char *p, unsigned char val)
 
AO_INLINE unsigned short AO_short_load_acquire (const volatile unsigned short *p)
 
AO_INLINE void AO_short_store_release (volatile unsigned short *p, unsigned short val)
 
AO_INLINE unsigned int AO_int_load_acquire (const volatile unsigned int *p)
 
AO_INLINE void AO_int_store_release (volatile unsigned int *p, unsigned int val)
 
AO_INLINE void AO_nop_full (void)
 
AO_INLINE AO_t AO_fetch_and_add1_acquire (volatile AO_t *p)
 
AO_INLINE AO_t AO_fetch_and_add1_release (volatile AO_t *p)
 
AO_INLINE AO_t AO_fetch_and_sub1_acquire (volatile AO_t *p)
 
AO_INLINE AO_t AO_fetch_and_sub1_release (volatile AO_t *p)
 
AO_INLINE AO_t AO_fetch_compare_and_swap_acquire (volatile AO_t *addr, AO_t old_val, AO_t new_val)
 
AO_INLINE AO_t AO_fetch_compare_and_swap_release (volatile AO_t *addr, AO_t old_val, AO_t new_val)
 
AO_INLINE unsigned char AO_char_fetch_compare_and_swap_acquire (volatile unsigned char *addr, unsigned char old_val, unsigned char new_val)
 
AO_INLINE unsigned char AO_char_fetch_compare_and_swap_release (volatile unsigned char *addr, unsigned char old_val, unsigned char new_val)
 
AO_INLINE unsigned short AO_short_fetch_compare_and_swap_acquire (volatile unsigned short *addr, unsigned short old_val, unsigned short new_val)
 
AO_INLINE unsigned short AO_short_fetch_compare_and_swap_release (volatile unsigned short *addr, unsigned short old_val, unsigned short new_val)
 
AO_INLINE unsigned int AO_int_fetch_compare_and_swap_acquire (volatile unsigned int *addr, unsigned int old_val, unsigned int new_val)
 
AO_INLINE unsigned int AO_int_fetch_compare_and_swap_release (volatile unsigned int *addr, unsigned int old_val, unsigned int new_val)
 

Macro Definition Documentation

◆ AO_HAVE_char_fetch_compare_and_swap_acquire

#define AO_HAVE_char_fetch_compare_and_swap_acquire

Definition at line 160 of file icc/ia64.h.

◆ AO_HAVE_char_fetch_compare_and_swap_release

#define AO_HAVE_char_fetch_compare_and_swap_release

Definition at line 169 of file icc/ia64.h.

◆ AO_HAVE_char_load_acquire

#define AO_HAVE_char_load_acquire

Definition at line 61 of file icc/ia64.h.

◆ AO_HAVE_char_store_release

#define AO_HAVE_char_store_release

Definition at line 68 of file icc/ia64.h.

◆ AO_HAVE_fetch_and_add1_acquire

#define AO_HAVE_fetch_and_add1_acquire

Definition at line 113 of file icc/ia64.h.

◆ AO_HAVE_fetch_and_add1_release

#define AO_HAVE_fetch_and_add1_release

Definition at line 120 of file icc/ia64.h.

◆ AO_HAVE_fetch_and_sub1_acquire

#define AO_HAVE_fetch_and_sub1_acquire

Definition at line 127 of file icc/ia64.h.

◆ AO_HAVE_fetch_and_sub1_release

#define AO_HAVE_fetch_and_sub1_release

Definition at line 134 of file icc/ia64.h.

◆ AO_HAVE_fetch_compare_and_swap_acquire

#define AO_HAVE_fetch_compare_and_swap_acquire

Definition at line 143 of file icc/ia64.h.

◆ AO_HAVE_fetch_compare_and_swap_release

#define AO_HAVE_fetch_compare_and_swap_release

Definition at line 151 of file icc/ia64.h.

◆ AO_HAVE_int_fetch_compare_and_swap_acquire

#define AO_HAVE_int_fetch_compare_and_swap_acquire

Definition at line 196 of file icc/ia64.h.

◆ AO_HAVE_int_fetch_compare_and_swap_release

#define AO_HAVE_int_fetch_compare_and_swap_release

Definition at line 205 of file icc/ia64.h.

◆ AO_HAVE_int_load_acquire

#define AO_HAVE_int_load_acquire

Definition at line 91 of file icc/ia64.h.

◆ AO_HAVE_int_store_release

#define AO_HAVE_int_store_release

Definition at line 98 of file icc/ia64.h.

◆ AO_HAVE_load_acquire

#define AO_HAVE_load_acquire

Definition at line 46 of file icc/ia64.h.

◆ AO_HAVE_nop_full

#define AO_HAVE_nop_full

Definition at line 105 of file icc/ia64.h.

◆ AO_HAVE_short_fetch_compare_and_swap_acquire

#define AO_HAVE_short_fetch_compare_and_swap_acquire

Definition at line 178 of file icc/ia64.h.

◆ AO_HAVE_short_fetch_compare_and_swap_release

#define AO_HAVE_short_fetch_compare_and_swap_release

Definition at line 187 of file icc/ia64.h.

◆ AO_HAVE_short_load_acquire

#define AO_HAVE_short_load_acquire

Definition at line 76 of file icc/ia64.h.

◆ AO_HAVE_short_store_release

#define AO_HAVE_short_store_release

Definition at line 83 of file icc/ia64.h.

◆ AO_HAVE_store_release

#define AO_HAVE_store_release

Definition at line 53 of file icc/ia64.h.

◆ AO_INTEL_PTR_t

#define AO_INTEL_PTR_t   void *

Definition at line 39 of file icc/ia64.h.

Function Documentation

◆ AO_char_fetch_compare_and_swap_acquire()

AO_INLINE unsigned char AO_char_fetch_compare_and_swap_acquire ( volatile unsigned char *  addr,
unsigned char  old_val,
unsigned char  new_val 
)

Definition at line 154 of file icc/ia64.h.

157{
158 return _InterlockedCompareExchange8_acq(addr, new_val, old_val);
159}

◆ AO_char_fetch_compare_and_swap_release()

AO_INLINE unsigned char AO_char_fetch_compare_and_swap_release ( volatile unsigned char *  addr,
unsigned char  old_val,
unsigned char  new_val 
)

Definition at line 163 of file icc/ia64.h.

166{
167 return _InterlockedCompareExchange8_rel(addr, new_val, old_val);
168}

◆ AO_char_load_acquire()

AO_INLINE unsigned char AO_char_load_acquire ( const volatile unsigned char *  p)

Definition at line 56 of file icc/ia64.h.

57{
58 /* A normal volatile load generates an ld.acq */
59 return (__ld1_acq((AO_INTEL_PTR_t)p));
60}
#define AO_INTEL_PTR_t
Definition: icc/ia64.h:39

◆ AO_char_store_release()

AO_INLINE void AO_char_store_release ( volatile unsigned char *  p,
unsigned char  val 
)

Definition at line 64 of file icc/ia64.h.

65{
66 __st1_rel((AO_INTEL_PTR_t)p, val);
67}

◆ AO_fetch_and_add1_acquire()

AO_INLINE AO_t AO_fetch_and_add1_acquire ( volatile AO_t p)

Definition at line 109 of file icc/ia64.h.

110{
111 return __fetchadd8_acq((unsigned __int64 *)p, 1);
112}

◆ AO_fetch_and_add1_release()

AO_INLINE AO_t AO_fetch_and_add1_release ( volatile AO_t p)

Definition at line 116 of file icc/ia64.h.

117{
118 return __fetchadd8_rel((unsigned __int64 *)p, 1);
119}

◆ AO_fetch_and_sub1_acquire()

AO_INLINE AO_t AO_fetch_and_sub1_acquire ( volatile AO_t p)

Definition at line 123 of file icc/ia64.h.

124{
125 return __fetchadd8_acq((unsigned __int64 *)p, -1);
126}

◆ AO_fetch_and_sub1_release()

AO_INLINE AO_t AO_fetch_and_sub1_release ( volatile AO_t p)

Definition at line 130 of file icc/ia64.h.

131{
132 return __fetchadd8_rel((unsigned __int64 *)p, -1);
133}

◆ AO_fetch_compare_and_swap_acquire()

AO_INLINE AO_t AO_fetch_compare_and_swap_acquire ( volatile AO_t addr,
AO_t  old_val,
AO_t  new_val 
)

Definition at line 138 of file icc/ia64.h.

140{
141 return _InterlockedCompareExchange64_acq(addr, new_val, old_val);
142}

◆ AO_fetch_compare_and_swap_release()

AO_INLINE AO_t AO_fetch_compare_and_swap_release ( volatile AO_t addr,
AO_t  old_val,
AO_t  new_val 
)

Definition at line 146 of file icc/ia64.h.

148{
149 return _InterlockedCompareExchange64_rel(addr, new_val, old_val);
150}

◆ AO_int_fetch_compare_and_swap_acquire()

AO_INLINE unsigned int AO_int_fetch_compare_and_swap_acquire ( volatile unsigned int addr,
unsigned int  old_val,
unsigned int  new_val 
)

Definition at line 190 of file icc/ia64.h.

193{
194 return _InterlockedCompareExchange_acq(addr, new_val, old_val);
195}

◆ AO_int_fetch_compare_and_swap_release()

AO_INLINE unsigned int AO_int_fetch_compare_and_swap_release ( volatile unsigned int addr,
unsigned int  old_val,
unsigned int  new_val 
)

Definition at line 199 of file icc/ia64.h.

202{
203 return _InterlockedCompareExchange_rel(addr, new_val, old_val);
204}

◆ AO_int_load_acquire()

AO_INLINE unsigned int AO_int_load_acquire ( const volatile unsigned int p)

Definition at line 86 of file icc/ia64.h.

87{
88 /* A normal volatile load generates an ld.acq */
89 return (__ld4_acq((AO_INTEL_PTR_t)p));
90}

◆ AO_int_store_release()

AO_INLINE void AO_int_store_release ( volatile unsigned int p,
unsigned int  val 
)

Definition at line 94 of file icc/ia64.h.

95{
96 __st4_rel((AO_INTEL_PTR_t)p, val);
97}

◆ AO_load_acquire()

AO_INLINE AO_t AO_load_acquire ( const volatile AO_t p)

Definition at line 42 of file icc/ia64.h.

43{
44 return (AO_t)(__ld8_acq((AO_INTEL_PTR_t)p));
45}
#define AO_t
Definition: atomic_ops.h:156

◆ AO_nop_full()

AO_INLINE void AO_nop_full ( void  )

Definition at line 101 of file icc/ia64.h.

102{
103 __mf();
104}

◆ AO_short_fetch_compare_and_swap_acquire()

AO_INLINE unsigned short AO_short_fetch_compare_and_swap_acquire ( volatile unsigned short *  addr,
unsigned short  old_val,
unsigned short  new_val 
)

Definition at line 172 of file icc/ia64.h.

175{
176 return _InterlockedCompareExchange16_acq(addr, new_val, old_val);
177}

◆ AO_short_fetch_compare_and_swap_release()

AO_INLINE unsigned short AO_short_fetch_compare_and_swap_release ( volatile unsigned short *  addr,
unsigned short  old_val,
unsigned short  new_val 
)

Definition at line 181 of file icc/ia64.h.

184{
185 return _InterlockedCompareExchange16_rel(addr, new_val, old_val);
186}

◆ AO_short_load_acquire()

AO_INLINE unsigned short AO_short_load_acquire ( const volatile unsigned short *  p)

Definition at line 71 of file icc/ia64.h.

72{
73 /* A normal volatile load generates an ld.acq */
74 return (__ld2_acq((AO_INTEL_PTR_t)p));
75}

◆ AO_short_store_release()

AO_INLINE void AO_short_store_release ( volatile unsigned short *  p,
unsigned short  val 
)

Definition at line 79 of file icc/ia64.h.

80{
81 __st2_rel((AO_INTEL_PTR_t)p, val);
82}

◆ AO_store_release()

AO_INLINE void AO_store_release ( volatile AO_t p,
AO_t  val 
)

Definition at line 49 of file icc/ia64.h.

50{
51 __st8_rel((AO_INTEL_PTR_t)p, (__int64)val);
52}