45 lines · c
1// RUN: %clang_cc1 %s -emit-llvm -DDOUBLE -O0 -o - -triple=amdgcn-amd-amdhsa \2// RUN: | FileCheck -check-prefixes=FLOAT,DOUBLE %s3 4// RUN: %clang_cc1 %s -emit-llvm -DDOUBLE -O0 -o - -triple=aarch64-linux-gnu \5// RUN: | FileCheck -check-prefixes=FLOAT,DOUBLE %s6 7// RUN: %clang_cc1 %s -emit-llvm -O0 -o - -triple=armv8-apple-ios7.0 \8// RUN: | FileCheck -check-prefixes=FLOAT %s9 10// RUN: %clang_cc1 %s -emit-llvm -DDOUBLE -O0 -o - -triple=hexagon \11// RUN: | FileCheck -check-prefixes=FLOAT,DOUBLE %s12 13// RUN: %clang_cc1 %s -emit-llvm -DDOUBLE -O0 -o - -triple=mips64-mti-linux-gnu \14// RUN: | FileCheck -check-prefixes=FLOAT,DOUBLE %s15 16// RUN: %clang_cc1 %s -emit-llvm -O0 -o - -triple=i686-linux-gnu \17// RUN: | FileCheck -check-prefixes=FLOAT %s18 19// RUN: %clang_cc1 %s -emit-llvm -DDOUBLE -O0 -o - -triple=x86_64-linux-gnu \20// RUN: | FileCheck -check-prefixes=FLOAT,DOUBLE %s21 22typedef enum memory_order {23 memory_order_relaxed = __ATOMIC_RELAXED,24 memory_order_acquire = __ATOMIC_ACQUIRE,25 memory_order_release = __ATOMIC_RELEASE,26 memory_order_acq_rel = __ATOMIC_ACQ_REL,27 memory_order_seq_cst = __ATOMIC_SEQ_CST28} memory_order;29 30void test(float *f, float ff, double *d, double dd) {31 // FLOAT: atomicrmw fadd ptr {{.*}} monotonic32 __atomic_fetch_add(f, ff, memory_order_relaxed);33 34 // FLOAT: atomicrmw fsub ptr {{.*}} monotonic35 __atomic_fetch_sub(f, ff, memory_order_relaxed);36 37#ifdef DOUBLE38 // DOUBLE: atomicrmw fadd ptr {{.*}} monotonic39 __atomic_fetch_add(d, dd, memory_order_relaxed);40 41 // DOUBLE: atomicrmw fsub ptr {{.*}} monotonic42 __atomic_fetch_sub(d, dd, memory_order_relaxed);43#endif44}45