brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · c8fa877 Raw
69 lines · cpp
1// RUN: %clang_cc1 %s -std=c++11 -emit-llvm -o - -triple=x86_64-linux-gnu | FileCheck %s2// RUN: %clang_cc1 %s -std=c++11 -emit-llvm -o - -triple=x86_64-linux-gnu -target-cpu core2 | FileCheck %s --check-prefix=CORE23// Check the atomic code generation for cpu targets w/wo cx16 support.4 5struct alignas(8) AM8 {6  int f1, f2;7};8AM8 m8;9AM8 load8() {10  AM8 am;11  // CHECK-LABEL: @_Z5load8v12  // CHECK: load atomic i64, {{.*}} monotonic, align 813  // CORE2-LABEL: @_Z5load8v14  // CORE2: load atomic i64, {{.*}} monotonic, align 815  __atomic_load(&m8, &am, 0);16  return am;17}18 19AM8 s8;20void store8() {21  // CHECK-LABEL: @_Z6store8v22  // CHECK: store atomic i64 {{.*}} monotonic, align 823  // CORE2-LABEL: @_Z6store8v24  // CORE2: store atomic i64 {{.*}} monotonic, align 825  __atomic_store(&m8, &s8, 0);26}27 28bool cmpxchg8() {29  AM8 am;30  // CHECK-LABEL: @_Z8cmpxchg8v31  // CHECK: cmpxchg ptr {{.*}} monotonic, align 832  // CORE2-LABEL: @_Z8cmpxchg8v33  // CORE2: cmpxchg ptr {{.*}} monotonic, align 834  return __atomic_compare_exchange(&m8, &s8, &am, 0, 0, 0);35}36 37struct alignas(16) AM16 {38  long f1, f2;39};40 41AM16 m16;42AM16 load16() {43  AM16 am;44  // CHECK-LABEL: @_Z6load16v45  // CHECK: load atomic i128, {{.*}} monotonic, align 1646  // CORE2-LABEL: @_Z6load16v47  // CORE2: load atomic i128, {{.*}} monotonic, align 1648  __atomic_load(&m16, &am, 0);49  return am;50}51 52AM16 s16;53void store16() {54  // CHECK-LABEL: @_Z7store16v55  // CHECK: store atomic i128 {{.*}} monotonic, align 1656  // CORE2-LABEL: @_Z7store16v57  // CORE2: store atomic i128 {{.*}} monotonic, align 1658  __atomic_store(&m16, &s16, 0);59}60 61bool cmpxchg16() {62  AM16 am;63  // CHECK-LABEL: @_Z9cmpxchg16v64  // CHECK: cmpxchg ptr {{.*}} monotonic monotonic, align 1665  // CORE2-LABEL: @_Z9cmpxchg16v66  // CORE2: cmpxchg ptr {{.*}} monotonic monotonic, align 1667  return __atomic_compare_exchange(&m16, &s16, &am, 0, 0, 0);68}69