1*67e74705SXin Li // RUN: %clang_cc1 %s -emit-llvm -o - -triple=armv7-unknown-linux | FileCheck %s 2*67e74705SXin Li // RUN: %clang_cc1 %s -emit-llvm -o - -triple=armv6-unknown-linux | FileCheck %s 3*67e74705SXin Li // RUN: %clang_cc1 %s -emit-llvm -o - -triple=thumbv7-unknown-linux | FileCheck %s 4*67e74705SXin Li // RUN: %clang_cc1 %s -emit-llvm -o - -triple=armv6-unknown-freebsd | FileCheck %s 5*67e74705SXin Li // RUN: %clang_cc1 %s -emit-llvm -o - -triple=armv6-unknown-bitrig | FileCheck %s 6*67e74705SXin Li 7*67e74705SXin Li typedef int _Atomic_word; exchange_and_add(volatile _Atomic_word * __mem,int __val)8*67e74705SXin Li_Atomic_word exchange_and_add(volatile _Atomic_word *__mem, int __val) { 9*67e74705SXin Li return __atomic_fetch_add(__mem, __val, __ATOMIC_ACQ_REL); 10*67e74705SXin Li } 11*67e74705SXin Li 12*67e74705SXin Li // CHECK: define {{.*}} @exchange_and_add 13*67e74705SXin Li // CHECK: atomicrmw {{.*}} add 14