1*0a6a1f1dSLionel Sambuc/* $NetBSD: atomic.S,v 1.17 2014/05/22 15:23:11 uebayasi Exp $ */ 2b6cbf720SGianluca Guida 3b6cbf720SGianluca Guida/*- 4b6cbf720SGianluca Guida * Copyright (c) 2007 The NetBSD Foundation, Inc. 5b6cbf720SGianluca Guida * All rights reserved. 6b6cbf720SGianluca Guida * 7b6cbf720SGianluca Guida * This code is derived from software contributed to The NetBSD Foundation 8b6cbf720SGianluca Guida * by Jason R. Thorpe, and by Andrew Doran. 9b6cbf720SGianluca Guida * 10b6cbf720SGianluca Guida * Redistribution and use in source and binary forms, with or without 11b6cbf720SGianluca Guida * modification, are permitted provided that the following conditions 12b6cbf720SGianluca Guida * are met: 13b6cbf720SGianluca Guida * 1. Redistributions of source code must retain the above copyright 14b6cbf720SGianluca Guida * notice, this list of conditions and the following disclaimer. 15b6cbf720SGianluca Guida * 2. Redistributions in binary form must reproduce the above copyright 16b6cbf720SGianluca Guida * notice, this list of conditions and the following disclaimer in the 17b6cbf720SGianluca Guida * documentation and/or other materials provided with the distribution. 18b6cbf720SGianluca Guida * 19b6cbf720SGianluca Guida * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 20b6cbf720SGianluca Guida * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 21b6cbf720SGianluca Guida * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 22b6cbf720SGianluca Guida * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 23b6cbf720SGianluca Guida * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 24b6cbf720SGianluca Guida * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 25b6cbf720SGianluca Guida * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 26b6cbf720SGianluca Guida * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 27b6cbf720SGianluca Guida * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 28b6cbf720SGianluca Guida * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 29b6cbf720SGianluca Guida * POSSIBILITY OF SUCH DAMAGE. 30b6cbf720SGianluca Guida */ 31b6cbf720SGianluca Guida 32b6cbf720SGianluca Guida#include <sys/param.h> 33b6cbf720SGianluca Guida#include <machine/asm.h> 34b6cbf720SGianluca Guida 35b6cbf720SGianluca Guida#ifdef _KERNEL 36b6cbf720SGianluca Guida#define ALIAS(f, t) STRONG_ALIAS(f,t) 37b6cbf720SGianluca Guida#else 38b6cbf720SGianluca Guida#define ALIAS(f, t) WEAK_ALIAS(f,t) 39b6cbf720SGianluca Guida#endif 40b6cbf720SGianluca Guida 41b6cbf720SGianluca Guida#ifdef _HARDKERNEL 42b6cbf720SGianluca Guida#define LOCK(n) .Lpatch ## n: lock 43b6cbf720SGianluca Guida#define ENDLABEL(a) _ALIGN_TEXT; LABEL(a) 44b6cbf720SGianluca Guida#else 45b6cbf720SGianluca Guida#define LOCK(n) lock 46b6cbf720SGianluca Guida#define ENDLABEL(a) /* nothing */ 47b6cbf720SGianluca Guida#endif 48b6cbf720SGianluca Guida 49b6cbf720SGianluca Guida .text 50b6cbf720SGianluca Guida 51b6cbf720SGianluca Guida/* 32-bit */ 52b6cbf720SGianluca Guida 53b6cbf720SGianluca GuidaENTRY(_atomic_add_32) 54b6cbf720SGianluca Guida LOCK(1) 55b6cbf720SGianluca Guida addl %esi, (%rdi) 56b6cbf720SGianluca Guida ret 57*0a6a1f1dSLionel SambucEND(_atomic_add_32) 58b6cbf720SGianluca Guida 59b6cbf720SGianluca GuidaENTRY(_atomic_add_32_nv) 60b6cbf720SGianluca Guida movl %esi, %eax 61b6cbf720SGianluca Guida LOCK(2) 62b6cbf720SGianluca Guida xaddl %eax, (%rdi) 63b6cbf720SGianluca Guida addl %esi, %eax 64b6cbf720SGianluca Guida ret 65*0a6a1f1dSLionel SambucEND(_atomic_add_32_nv) 66b6cbf720SGianluca Guida 67b6cbf720SGianluca GuidaENTRY(_atomic_and_32) 68b6cbf720SGianluca Guida LOCK(3) 69b6cbf720SGianluca Guida andl %esi, (%rdi) 70b6cbf720SGianluca Guida ret 71*0a6a1f1dSLionel SambucEND(_atomic_and_32) 72b6cbf720SGianluca Guida 73b6cbf720SGianluca GuidaENTRY(_atomic_and_32_nv) 74b6cbf720SGianluca Guida movl (%rdi), %eax 75b6cbf720SGianluca Guida1: 76b6cbf720SGianluca Guida movl %eax, %ecx 77b6cbf720SGianluca Guida andl %esi, %ecx 78b6cbf720SGianluca Guida LOCK(4) 79b6cbf720SGianluca Guida cmpxchgl %ecx, (%rdi) 80b6cbf720SGianluca Guida jnz 1b 81b6cbf720SGianluca Guida movl %ecx, %eax 82b6cbf720SGianluca Guida ret 83*0a6a1f1dSLionel SambucEND(_atomic_and_32_nv) 84b6cbf720SGianluca Guida 85b6cbf720SGianluca GuidaENTRY(_atomic_dec_32) 86b6cbf720SGianluca Guida LOCK(5) 87b6cbf720SGianluca Guida decl (%rdi) 88b6cbf720SGianluca Guida ret 89*0a6a1f1dSLionel SambucEND(_atomic_dec_32) 90b6cbf720SGianluca Guida 91b6cbf720SGianluca GuidaENTRY(_atomic_dec_32_nv) 92b6cbf720SGianluca Guida movl $-1, %eax 93b6cbf720SGianluca Guida LOCK(6) 94b6cbf720SGianluca Guida xaddl %eax, (%rdi) 95b6cbf720SGianluca Guida decl %eax 96b6cbf720SGianluca Guida ret 97*0a6a1f1dSLionel SambucEND(_atomic_dec_32_nv) 98b6cbf720SGianluca Guida 99b6cbf720SGianluca GuidaENTRY(_atomic_inc_32) 100b6cbf720SGianluca Guida LOCK(7) 101b6cbf720SGianluca Guida incl (%rdi) 102b6cbf720SGianluca Guida ret 103*0a6a1f1dSLionel SambucEND(_atomic_inc_32) 104b6cbf720SGianluca Guida 105b6cbf720SGianluca GuidaENTRY(_atomic_inc_32_nv) 106b6cbf720SGianluca Guida movl $1, %eax 107b6cbf720SGianluca Guida LOCK(8) 108b6cbf720SGianluca Guida xaddl %eax, (%rdi) 109b6cbf720SGianluca Guida incl %eax 110b6cbf720SGianluca Guida ret 111*0a6a1f1dSLionel SambucEND(_atomic_inc_32_nv) 112b6cbf720SGianluca Guida 113b6cbf720SGianluca GuidaENTRY(_atomic_or_32) 114b6cbf720SGianluca Guida LOCK(9) 115b6cbf720SGianluca Guida orl %esi, (%rdi) 116b6cbf720SGianluca Guida ret 117*0a6a1f1dSLionel SambucEND(_atomic_or_32) 118b6cbf720SGianluca Guida 119b6cbf720SGianluca GuidaENTRY(_atomic_or_32_nv) 120b6cbf720SGianluca Guida movl (%rdi), %eax 121b6cbf720SGianluca Guida1: 122b6cbf720SGianluca Guida movl %eax, %ecx 123b6cbf720SGianluca Guida orl %esi, %ecx 124b6cbf720SGianluca Guida LOCK(10) 125b6cbf720SGianluca Guida cmpxchgl %ecx, (%rdi) 126b6cbf720SGianluca Guida jnz 1b 127b6cbf720SGianluca Guida movl %ecx, %eax 128b6cbf720SGianluca Guida ret 129*0a6a1f1dSLionel SambucEND(_atomic_or_32_nv) 130b6cbf720SGianluca Guida 131b6cbf720SGianluca GuidaENTRY(_atomic_swap_32) 132b6cbf720SGianluca Guida movl %esi, %eax 133b6cbf720SGianluca Guida xchgl %eax, (%rdi) 134b6cbf720SGianluca Guida ret 135*0a6a1f1dSLionel SambucEND(_atomic_swap_32) 136b6cbf720SGianluca Guida 137b6cbf720SGianluca GuidaENTRY(_atomic_cas_32) 138b6cbf720SGianluca Guida movl %esi, %eax 139b6cbf720SGianluca Guida LOCK(12) 140b6cbf720SGianluca Guida cmpxchgl %edx, (%rdi) 141b6cbf720SGianluca Guida /* %eax now contains the old value */ 142b6cbf720SGianluca Guida ret 143*0a6a1f1dSLionel SambucEND(_atomic_cas_32) 144b6cbf720SGianluca Guida 145b6cbf720SGianluca GuidaENTRY(_atomic_cas_32_ni) 146b6cbf720SGianluca Guida movl %esi, %eax 147b6cbf720SGianluca Guida cmpxchgl %edx, (%rdi) 148b6cbf720SGianluca Guida /* %eax now contains the old value */ 149b6cbf720SGianluca Guida ret 150*0a6a1f1dSLionel SambucEND(_atomic_cas_32_ni) 151b6cbf720SGianluca Guida 152b6cbf720SGianluca Guida/* 64-bit */ 153b6cbf720SGianluca Guida 154b6cbf720SGianluca GuidaENTRY(_atomic_add_64) 155b6cbf720SGianluca Guida LOCK(13) 156b6cbf720SGianluca Guida addq %rsi, (%rdi) 157b6cbf720SGianluca Guida ret 158*0a6a1f1dSLionel SambucEND(_atomic_add_64) 159b6cbf720SGianluca Guida 160b6cbf720SGianluca GuidaENTRY(_atomic_add_64_nv) 161b6cbf720SGianluca Guida movq %rsi, %rax 162b6cbf720SGianluca Guida LOCK(14) 163b6cbf720SGianluca Guida xaddq %rax, (%rdi) 164b6cbf720SGianluca Guida addq %rsi, %rax 165b6cbf720SGianluca Guida ret 166*0a6a1f1dSLionel SambucEND(_atomic_add_64_nv) 167b6cbf720SGianluca Guida 168b6cbf720SGianluca GuidaENTRY(_atomic_and_64) 169b6cbf720SGianluca Guida LOCK(15) 170b6cbf720SGianluca Guida andq %rsi, (%rdi) 171b6cbf720SGianluca Guida ret 172*0a6a1f1dSLionel SambucEND(_atomic_and_64) 173b6cbf720SGianluca Guida 174b6cbf720SGianluca GuidaENTRY(_atomic_and_64_nv) 175b6cbf720SGianluca Guida movq (%rdi), %rax 176b6cbf720SGianluca Guida1: 177b6cbf720SGianluca Guida movq %rax, %rcx 178b6cbf720SGianluca Guida andq %rsi, %rcx 179b6cbf720SGianluca Guida LOCK(16) 180b6cbf720SGianluca Guida cmpxchgq %rcx, (%rdi) 181b6cbf720SGianluca Guida jnz 1b 182b6cbf720SGianluca Guida movq %rcx, %rax 183b6cbf720SGianluca Guida ret 184*0a6a1f1dSLionel SambucEND(_atomic_and_64_nv) 185b6cbf720SGianluca Guida 186b6cbf720SGianluca GuidaENTRY(_atomic_dec_64) 187b6cbf720SGianluca Guida LOCK(17) 188b6cbf720SGianluca Guida decq (%rdi) 189b6cbf720SGianluca Guida ret 190*0a6a1f1dSLionel SambucEND(_atomic_dec_64) 191b6cbf720SGianluca Guida 192b6cbf720SGianluca GuidaENTRY(_atomic_dec_64_nv) 193b6cbf720SGianluca Guida movq $-1, %rax 194b6cbf720SGianluca Guida LOCK(18) 195b6cbf720SGianluca Guida xaddq %rax, (%rdi) 196b6cbf720SGianluca Guida decq %rax 197b6cbf720SGianluca Guida ret 198*0a6a1f1dSLionel SambucEND(_atomic_dec_64_nv) 199b6cbf720SGianluca Guida 200b6cbf720SGianluca GuidaENTRY(_atomic_inc_64) 201b6cbf720SGianluca Guida LOCK(19) 202b6cbf720SGianluca Guida incq (%rdi) 203b6cbf720SGianluca Guida ret 204*0a6a1f1dSLionel SambucEND(_atomic_inc_64) 205b6cbf720SGianluca Guida 206b6cbf720SGianluca GuidaENTRY(_atomic_inc_64_nv) 207b6cbf720SGianluca Guida movq $1, %rax 208b6cbf720SGianluca Guida LOCK(20) 209b6cbf720SGianluca Guida xaddq %rax, (%rdi) 210b6cbf720SGianluca Guida incq %rax 211b6cbf720SGianluca Guida ret 212*0a6a1f1dSLionel SambucEND(_atomic_inc_64_nv) 213b6cbf720SGianluca Guida 214b6cbf720SGianluca GuidaENTRY(_atomic_or_64) 215b6cbf720SGianluca Guida LOCK(21) 216b6cbf720SGianluca Guida orq %rsi, (%rdi) 217b6cbf720SGianluca Guida ret 218*0a6a1f1dSLionel SambucEND(_atomic_or_64) 219b6cbf720SGianluca Guida 220b6cbf720SGianluca GuidaENTRY(_atomic_or_64_nv) 221b6cbf720SGianluca Guida movq (%rdi), %rax 222b6cbf720SGianluca Guida1: 223b6cbf720SGianluca Guida movq %rax, %rcx 224b6cbf720SGianluca Guida orq %rsi, %rcx 225b6cbf720SGianluca Guida LOCK(22) 226b6cbf720SGianluca Guida cmpxchgq %rcx, (%rdi) 227b6cbf720SGianluca Guida jnz 1b 228b6cbf720SGianluca Guida movq %rcx, %rax 229b6cbf720SGianluca Guida ret 230*0a6a1f1dSLionel SambucEND(_atomic_or_64_nv) 231b6cbf720SGianluca Guida 232b6cbf720SGianluca GuidaENTRY(_atomic_swap_64) 233b6cbf720SGianluca Guida movq %rsi, %rax 234b6cbf720SGianluca Guida xchgq %rax, (%rdi) 235b6cbf720SGianluca Guida ret 236*0a6a1f1dSLionel SambucEND(_atomic_swap_64) 237b6cbf720SGianluca Guida 238b6cbf720SGianluca GuidaENTRY(_atomic_cas_64) 239b6cbf720SGianluca Guida movq %rsi, %rax 240b6cbf720SGianluca Guida LOCK(24) 241b6cbf720SGianluca Guida cmpxchgq %rdx, (%rdi) 242b6cbf720SGianluca Guida /* %eax now contains the old value */ 243b6cbf720SGianluca Guida ret 244*0a6a1f1dSLionel SambucEND(_atomic_cas_64) 245b6cbf720SGianluca Guida 246b6cbf720SGianluca GuidaENTRY(_atomic_cas_64_ni) 247b6cbf720SGianluca Guida movq %rsi, %rax 248b6cbf720SGianluca Guida cmpxchgq %rdx, (%rdi) 249b6cbf720SGianluca Guida /* %eax now contains the old value */ 250b6cbf720SGianluca Guida ret 251*0a6a1f1dSLionel SambucEND(_atomic_cas_64_ni) 252b6cbf720SGianluca Guida 253b6cbf720SGianluca Guida/* memory barriers */ 254b6cbf720SGianluca Guida 255b6cbf720SGianluca GuidaENTRY(_membar_consumer) 256b6cbf720SGianluca Guida LOCK(25) 257b6cbf720SGianluca Guida addq $0, -8(%rsp) 258b6cbf720SGianluca Guida ret 259*0a6a1f1dSLionel SambucEND(_membar_consumer) 260b6cbf720SGianluca GuidaENDLABEL(membar_consumer_end) 261b6cbf720SGianluca Guida 262b6cbf720SGianluca GuidaENTRY(_membar_producer) 263b6cbf720SGianluca Guida /* A store is enough */ 264b6cbf720SGianluca Guida movq $0, -8(%rsp) 265b6cbf720SGianluca Guida ret 266*0a6a1f1dSLionel SambucEND(_membar_producer) 267b6cbf720SGianluca GuidaENDLABEL(membar_producer_end) 268b6cbf720SGianluca Guida 269b6cbf720SGianluca GuidaENTRY(_membar_sync) 270b6cbf720SGianluca Guida LOCK(26) 271b6cbf720SGianluca Guida addq $0, -8(%rsp) 272b6cbf720SGianluca Guida ret 273*0a6a1f1dSLionel SambucEND(_membar_sync) 274b6cbf720SGianluca GuidaENDLABEL(membar_sync_end) 275b6cbf720SGianluca Guida 276b6cbf720SGianluca Guida#ifdef _HARDKERNEL 277b6cbf720SGianluca GuidaENTRY(sse2_lfence) 278b6cbf720SGianluca Guida lfence 279b6cbf720SGianluca Guida ret 280*0a6a1f1dSLionel SambucEND(sse2_lfence) 281b6cbf720SGianluca GuidaENDLABEL(sse2_lfence_end) 282b6cbf720SGianluca Guida 283b6cbf720SGianluca GuidaENTRY(sse2_mfence) 284b6cbf720SGianluca Guida mfence 285b6cbf720SGianluca Guida ret 286*0a6a1f1dSLionel SambucEND(sse2_mfence) 287b6cbf720SGianluca GuidaENDLABEL(sse2_mfence_end) 288b6cbf720SGianluca Guida 289b6cbf720SGianluca Guidaatomic_lockpatch: 290b6cbf720SGianluca Guida .globl atomic_lockpatch 291b6cbf720SGianluca Guida .quad .Lpatch1, .Lpatch2, .Lpatch3, .Lpatch4, .Lpatch5 292b6cbf720SGianluca Guida .quad .Lpatch6, .Lpatch7, .Lpatch8, .Lpatch9, .Lpatch10 293b6cbf720SGianluca Guida .quad .Lpatch12, .Lpatch13, .Lpatch14, .Lpatch15 294b6cbf720SGianluca Guida .quad .Lpatch16, .Lpatch17, .Lpatch18, .Lpatch19, .Lpatch20 295b6cbf720SGianluca Guida .quad .Lpatch21, .Lpatch22, .Lpatch24, .Lpatch25 296b6cbf720SGianluca Guida .quad .Lpatch26, 0 297b6cbf720SGianluca Guida#endif /* _HARDKERNEL */ 298b6cbf720SGianluca Guida 299b6cbf720SGianluca GuidaALIAS(atomic_add_32,_atomic_add_32) 300b6cbf720SGianluca GuidaALIAS(atomic_add_64,_atomic_add_64) 301b6cbf720SGianluca GuidaALIAS(atomic_add_int,_atomic_add_32) 302b6cbf720SGianluca GuidaALIAS(atomic_add_long,_atomic_add_64) 303b6cbf720SGianluca GuidaALIAS(atomic_add_ptr,_atomic_add_64) 304b6cbf720SGianluca Guida 305b6cbf720SGianluca GuidaALIAS(atomic_add_32_nv,_atomic_add_32_nv) 306b6cbf720SGianluca GuidaALIAS(atomic_add_64_nv,_atomic_add_64_nv) 307b6cbf720SGianluca GuidaALIAS(atomic_add_int_nv,_atomic_add_32_nv) 308b6cbf720SGianluca GuidaALIAS(atomic_add_long_nv,_atomic_add_64_nv) 309b6cbf720SGianluca GuidaALIAS(atomic_add_ptr_nv,_atomic_add_64_nv) 310b6cbf720SGianluca Guida 311b6cbf720SGianluca GuidaALIAS(atomic_and_32,_atomic_and_32) 312b6cbf720SGianluca GuidaALIAS(atomic_and_64,_atomic_and_64) 313b6cbf720SGianluca GuidaALIAS(atomic_and_uint,_atomic_and_32) 314b6cbf720SGianluca GuidaALIAS(atomic_and_ulong,_atomic_and_64) 315b6cbf720SGianluca GuidaALIAS(atomic_and_ptr,_atomic_and_64) 316b6cbf720SGianluca Guida 317b6cbf720SGianluca GuidaALIAS(atomic_and_32_nv,_atomic_and_32_nv) 318b6cbf720SGianluca GuidaALIAS(atomic_and_64_nv,_atomic_and_64_nv) 319b6cbf720SGianluca GuidaALIAS(atomic_and_uint_nv,_atomic_and_32_nv) 320b6cbf720SGianluca GuidaALIAS(atomic_and_ulong_nv,_atomic_and_64_nv) 321b6cbf720SGianluca GuidaALIAS(atomic_and_ptr_nv,_atomic_and_64_nv) 322b6cbf720SGianluca Guida 323b6cbf720SGianluca GuidaALIAS(atomic_dec_32,_atomic_dec_32) 324b6cbf720SGianluca GuidaALIAS(atomic_dec_64,_atomic_dec_64) 325b6cbf720SGianluca GuidaALIAS(atomic_dec_uint,_atomic_dec_32) 326b6cbf720SGianluca GuidaALIAS(atomic_dec_ulong,_atomic_dec_64) 327b6cbf720SGianluca GuidaALIAS(atomic_dec_ptr,_atomic_dec_64) 328b6cbf720SGianluca Guida 329b6cbf720SGianluca GuidaALIAS(atomic_dec_32_nv,_atomic_dec_32_nv) 330b6cbf720SGianluca GuidaALIAS(atomic_dec_64_nv,_atomic_dec_64_nv) 331b6cbf720SGianluca GuidaALIAS(atomic_dec_uint_nv,_atomic_dec_32_nv) 332b6cbf720SGianluca GuidaALIAS(atomic_dec_ulong_nv,_atomic_dec_64_nv) 333b6cbf720SGianluca GuidaALIAS(atomic_dec_ptr_nv,_atomic_dec_64_nv) 334b6cbf720SGianluca Guida 335b6cbf720SGianluca GuidaALIAS(atomic_inc_32,_atomic_inc_32) 336b6cbf720SGianluca GuidaALIAS(atomic_inc_64,_atomic_inc_64) 337b6cbf720SGianluca GuidaALIAS(atomic_inc_uint,_atomic_inc_32) 338b6cbf720SGianluca GuidaALIAS(atomic_inc_ulong,_atomic_inc_64) 339b6cbf720SGianluca GuidaALIAS(atomic_inc_ptr,_atomic_inc_64) 340b6cbf720SGianluca Guida 341b6cbf720SGianluca GuidaALIAS(atomic_inc_32_nv,_atomic_inc_32_nv) 342b6cbf720SGianluca GuidaALIAS(atomic_inc_64_nv,_atomic_inc_64_nv) 343b6cbf720SGianluca GuidaALIAS(atomic_inc_uint_nv,_atomic_inc_32_nv) 344b6cbf720SGianluca GuidaALIAS(atomic_inc_ulong_nv,_atomic_inc_64_nv) 345b6cbf720SGianluca GuidaALIAS(atomic_inc_ptr_nv,_atomic_inc_64_nv) 346b6cbf720SGianluca Guida 347b6cbf720SGianluca GuidaALIAS(atomic_or_32,_atomic_or_32) 348b6cbf720SGianluca GuidaALIAS(atomic_or_uint,_atomic_or_32) 349b6cbf720SGianluca GuidaALIAS(atomic_or_ulong,_atomic_or_64) 350b6cbf720SGianluca GuidaALIAS(atomic_or_ptr,_atomic_or_64) 351b6cbf720SGianluca Guida 352b6cbf720SGianluca GuidaALIAS(atomic_or_32_nv,_atomic_or_32_nv) 353b6cbf720SGianluca GuidaALIAS(atomic_or_64_nv,_atomic_or_64_nv) 354b6cbf720SGianluca GuidaALIAS(atomic_or_uint_nv,_atomic_or_32_nv) 355b6cbf720SGianluca GuidaALIAS(atomic_or_ulong_nv,_atomic_or_64_nv) 356b6cbf720SGianluca GuidaALIAS(atomic_or_ptr_nv,_atomic_or_64_nv) 357b6cbf720SGianluca Guida 358b6cbf720SGianluca GuidaALIAS(atomic_swap_32,_atomic_swap_32) 359b6cbf720SGianluca GuidaALIAS(atomic_swap_64,_atomic_swap_64) 360b6cbf720SGianluca GuidaALIAS(atomic_swap_uint,_atomic_swap_32) 361b6cbf720SGianluca GuidaALIAS(atomic_swap_ulong,_atomic_swap_64) 362b6cbf720SGianluca GuidaALIAS(atomic_swap_ptr,_atomic_swap_64) 363b6cbf720SGianluca Guida 364b6cbf720SGianluca GuidaALIAS(atomic_cas_32,_atomic_cas_32) 365b6cbf720SGianluca GuidaALIAS(atomic_cas_64,_atomic_cas_64) 366b6cbf720SGianluca GuidaALIAS(atomic_cas_uint,_atomic_cas_32) 367b6cbf720SGianluca GuidaALIAS(atomic_cas_ulong,_atomic_cas_64) 368b6cbf720SGianluca GuidaALIAS(atomic_cas_ptr,_atomic_cas_64) 369b6cbf720SGianluca Guida 370b6cbf720SGianluca GuidaALIAS(atomic_cas_32_ni,_atomic_cas_32_ni) 371b6cbf720SGianluca GuidaALIAS(atomic_cas_64_ni,_atomic_cas_64_ni) 372b6cbf720SGianluca GuidaALIAS(atomic_cas_uint_ni,_atomic_cas_32_ni) 373b6cbf720SGianluca GuidaALIAS(atomic_cas_ulong_ni,_atomic_cas_64_ni) 374b6cbf720SGianluca GuidaALIAS(atomic_cas_ptr_ni,_atomic_cas_64_ni) 375b6cbf720SGianluca Guida 376b6cbf720SGianluca GuidaALIAS(membar_consumer,_membar_consumer) 377b6cbf720SGianluca GuidaALIAS(membar_producer,_membar_producer) 378b6cbf720SGianluca GuidaALIAS(membar_enter,_membar_consumer) 379b6cbf720SGianluca GuidaALIAS(membar_exit,_membar_producer) 380b6cbf720SGianluca GuidaALIAS(membar_sync,_membar_sync) 381b6cbf720SGianluca Guida 382b6cbf720SGianluca GuidaSTRONG_ALIAS(_atomic_add_int,_atomic_add_32) 383b6cbf720SGianluca GuidaSTRONG_ALIAS(_atomic_add_long,_atomic_add_64) 384b6cbf720SGianluca GuidaSTRONG_ALIAS(_atomic_add_ptr,_atomic_add_64) 385b6cbf720SGianluca Guida 386b6cbf720SGianluca GuidaSTRONG_ALIAS(_atomic_add_int_nv,_atomic_add_32_nv) 387b6cbf720SGianluca GuidaSTRONG_ALIAS(_atomic_add_long_nv,_atomic_add_64_nv) 388b6cbf720SGianluca GuidaSTRONG_ALIAS(_atomic_add_ptr_nv,_atomic_add_64_nv) 389b6cbf720SGianluca Guida 390b6cbf720SGianluca GuidaSTRONG_ALIAS(_atomic_and_uint,_atomic_and_32) 391b6cbf720SGianluca GuidaSTRONG_ALIAS(_atomic_and_ulong,_atomic_and_64) 392b6cbf720SGianluca GuidaSTRONG_ALIAS(_atomic_and_ptr,_atomic_and_64) 393b6cbf720SGianluca Guida 394b6cbf720SGianluca GuidaSTRONG_ALIAS(_atomic_and_uint_nv,_atomic_and_32_nv) 395b6cbf720SGianluca GuidaSTRONG_ALIAS(_atomic_and_ulong_nv,_atomic_and_64_nv) 396b6cbf720SGianluca GuidaSTRONG_ALIAS(_atomic_and_ptr_nv,_atomic_and_64_nv) 397b6cbf720SGianluca Guida 398b6cbf720SGianluca GuidaSTRONG_ALIAS(_atomic_dec_uint,_atomic_dec_32) 399b6cbf720SGianluca GuidaSTRONG_ALIAS(_atomic_dec_ulong,_atomic_dec_64) 400b6cbf720SGianluca GuidaSTRONG_ALIAS(_atomic_dec_ptr,_atomic_dec_64) 401b6cbf720SGianluca Guida 402b6cbf720SGianluca GuidaSTRONG_ALIAS(_atomic_dec_uint_nv,_atomic_dec_32_nv) 403b6cbf720SGianluca GuidaSTRONG_ALIAS(_atomic_dec_ulong_nv,_atomic_dec_64_nv) 404b6cbf720SGianluca GuidaSTRONG_ALIAS(_atomic_dec_ptr_nv,_atomic_dec_64_nv) 405b6cbf720SGianluca Guida 406b6cbf720SGianluca GuidaSTRONG_ALIAS(_atomic_inc_uint,_atomic_inc_32) 407b6cbf720SGianluca GuidaSTRONG_ALIAS(_atomic_inc_ulong,_atomic_inc_64) 408b6cbf720SGianluca GuidaSTRONG_ALIAS(_atomic_inc_ptr,_atomic_inc_64) 409b6cbf720SGianluca Guida 410b6cbf720SGianluca GuidaSTRONG_ALIAS(_atomic_inc_uint_nv,_atomic_inc_32_nv) 411b6cbf720SGianluca GuidaSTRONG_ALIAS(_atomic_inc_ulong_nv,_atomic_inc_64_nv) 412b6cbf720SGianluca GuidaSTRONG_ALIAS(_atomic_inc_ptr_nv,_atomic_inc_64_nv) 413b6cbf720SGianluca Guida 414b6cbf720SGianluca GuidaSTRONG_ALIAS(_atomic_or_uint,_atomic_or_32) 415b6cbf720SGianluca GuidaSTRONG_ALIAS(_atomic_or_ulong,_atomic_or_64) 416b6cbf720SGianluca GuidaSTRONG_ALIAS(_atomic_or_ptr,_atomic_or_64) 417b6cbf720SGianluca Guida 418b6cbf720SGianluca GuidaSTRONG_ALIAS(_atomic_or_uint_nv,_atomic_or_32_nv) 419b6cbf720SGianluca GuidaSTRONG_ALIAS(_atomic_or_ulong_nv,_atomic_or_64_nv) 420b6cbf720SGianluca GuidaSTRONG_ALIAS(_atomic_or_ptr_nv,_atomic_or_64_nv) 421b6cbf720SGianluca Guida 422b6cbf720SGianluca GuidaSTRONG_ALIAS(_atomic_swap_uint,_atomic_swap_32) 423b6cbf720SGianluca GuidaSTRONG_ALIAS(_atomic_swap_ulong,_atomic_swap_64) 424b6cbf720SGianluca GuidaSTRONG_ALIAS(_atomic_swap_ptr,_atomic_swap_64) 425b6cbf720SGianluca Guida 426b6cbf720SGianluca GuidaSTRONG_ALIAS(_atomic_cas_uint,_atomic_cas_32) 427b6cbf720SGianluca GuidaSTRONG_ALIAS(_atomic_cas_ulong,_atomic_cas_64) 428b6cbf720SGianluca GuidaSTRONG_ALIAS(_atomic_cas_ptr,_atomic_cas_64) 429b6cbf720SGianluca Guida 430b6cbf720SGianluca GuidaSTRONG_ALIAS(_atomic_cas_uint_ni,_atomic_cas_32_ni) 431b6cbf720SGianluca GuidaSTRONG_ALIAS(_atomic_cas_ulong_ni,_atomic_cas_64_ni) 432b6cbf720SGianluca GuidaSTRONG_ALIAS(_atomic_cas_ptr_ni,_atomic_cas_64_ni) 433b6cbf720SGianluca Guida 434b6cbf720SGianluca GuidaSTRONG_ALIAS(_membar_enter,_membar_consumer) 435b6cbf720SGianluca GuidaSTRONG_ALIAS(_membar_exit,_membar_producer) 436