8043d5a964
The ability to specify alignment was recently added, and it's an important property which we should ensure is set as expected by Clang. (Especially before making further changes to Clang's code in this area.) But, because it's on the end of the lines, the existing tests all ignore it. Therefore, update all the tests to also verify the expected alignment for atomicrmw and cmpxchg. While I was in there, I also updated uses of 'load atomic' and 'store atomic', and added the memory ordering, where that was missing.
40 lines
1.5 KiB
C++
40 lines
1.5 KiB
C++
// RUN: %clang_cc1 -verify -fopenmp -fopenmp-version=50 %s -triple x86_64-apple-darwin10 -x c++ -emit-llvm -o - | FileCheck %s
|
|
// RUN: %clang_cc1 -fopenmp -fopenmp-version=50 -x c++ -std=c++11 -emit-pch -o %t %s -triple x86_64-apple-darwin10
|
|
// RUN: %clang_cc1 -fopenmp -fopenmp-version=50 -std=c++11 -include-pch %t -verify %s -triple x86_64-apple-darwin10 -x c++ -emit-llvm -o -| FileCheck %s
|
|
|
|
// RUN: %clang_cc1 -verify -fopenmp-simd %s -fopenmp-version=50 -x c++ -emit-llvm -triple x86_64-apple-darwin10 -o -| FileCheck %s --check-prefix SIMD-ONLY0
|
|
// RUN: %clang_cc1 -fopenmp-simd -fopenmp-version=50 -x c++ -std=c++11 -emit-pch -o %t %s -triple x86_64-apple-darwin10
|
|
// RUN: %clang_cc1 -fopenmp-simd -fopenmp-version=50 -std=c++11 -include-pch %t -verify %s -emit-llvm -x c++ -emit-llvm -triple x86_64-apple-darwin10 -o -| FileCheck %s --check-prefix SIMD-ONLY0
|
|
// SIMD-ONLY0-NOT: {{__kmpc|__tgt}}
|
|
// expected-no-diagnostics
|
|
|
|
#ifndef HEADER
|
|
#define HEADER
|
|
|
|
#pragma omp requires atomic_default_mem_order(relaxed)
|
|
|
|
// CHECK-LABEL: foo
|
|
void foo() {
|
|
int a = 0, b = 0;
|
|
// CHECK: load atomic i32, {{.*}} monotonic, align 4
|
|
#pragma omp atomic read
|
|
a = b;
|
|
// CHECK: store atomic i32 {{.*}} monotonic, align 4
|
|
#pragma omp atomic write
|
|
a = b;
|
|
// CHECK: atomicrmw add i32* {{.*}} monotonic, align 4
|
|
#pragma omp atomic
|
|
a += 1;
|
|
// CHECK: atomicrmw add i32* {{.*}} monotonic, align 4
|
|
#pragma omp atomic update
|
|
a += 1;
|
|
// CHECK: atomicrmw add i32* {{.*}} monotonic, align 4
|
|
#pragma omp atomic capture
|
|
{
|
|
b = a;
|
|
a += 1;
|
|
}
|
|
}
|
|
|
|
#endif
|