38 lines · c
1// RUN: %clang_cc1 %s -emit-llvm -o - -triple=thumbv7-none--eabi | FileCheck %s2// RUN: %clang_cc1 %s -emit-llvm -o - -triple=armv6-none--eabi | FileCheck %s3// RUN: %clang_cc1 %s -emit-llvm -o - -triple=armv7-unknown-openbsd | FileCheck %s4 5int i;6long long l;7 8typedef enum memory_order {9 memory_order_relaxed, memory_order_consume, memory_order_acquire,10 memory_order_release, memory_order_acq_rel, memory_order_seq_cst11} memory_order;12 13void test_presence(void)14{15 // CHECK-LABEL: @test_presence16 // CHECK: atomicrmw add ptr {{.*}} seq_cst, align 417 __atomic_fetch_add(&i, 1, memory_order_seq_cst);18 // CHECK: atomicrmw sub ptr {{.*}} seq_cst, align 419 __atomic_fetch_sub(&i, 1, memory_order_seq_cst);20 // CHECK: load atomic i32, ptr {{.*}} seq_cst, align 421 int r;22 __atomic_load(&i, &r, memory_order_seq_cst);23 // CHECK: store atomic i32 {{.*}} seq_cst, align 424 r = 0;25 __atomic_store(&i, &r, memory_order_seq_cst);26 27 // CHECK: atomicrmw add ptr {{.*}} seq_cst, align 828 __atomic_fetch_add(&l, 1, memory_order_seq_cst);29 // CHECK: atomicrmw sub ptr {{.*}} seq_cst, align 830 __atomic_fetch_sub(&l, 1, memory_order_seq_cst);31 // CHECK: load atomic i64, ptr {{.*}} seq_cst, align 832 long long rl;33 __atomic_load(&l, &rl, memory_order_seq_cst);34 // CHECK: store atomic i64 {{.*}} seq_cst, align 835 rl = 0;36 __atomic_store(&l, &rl, memory_order_seq_cst);37}38