brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.1 KiB · 90d2db4 Raw
47 lines · cpp
1// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 52// RUN: %clang_cc1 -emit-llvm -fopenmp -triple=x86_64-unknown-linux-gnu \3// RUN:   -DORDERING=seq_cst -o - %s \4// RUN: | FileCheck %s --check-prefix=SEQ_CST5// RUN: %clang_cc1 -emit-llvm -fopenmp -triple=x86_64-unknown-linux-gnu \6// RUN:   -DORDERING=acq_rel -o - %s \7// RUN: | FileCheck %s --check-prefix=ACQ_REL8// RUN: %clang_cc1 -emit-llvm -fopenmp -triple=x86_64-unknown-linux-gnu \9// RUN:   -DORDERING=relaxed -o - %s \10// RUN: | FileCheck %s --check-prefix=RELAXED11 12#pragma omp requires atomic_default_mem_order(ORDERING)13 14// SEQ_CST-LABEL: define dso_local void @_Z3fooPi(15// SEQ_CST-SAME: ptr noundef [[X:%.*]]) #[[ATTR0:[0-9]+]] {16// SEQ_CST-NEXT:  [[ENTRY:.*:]]17// SEQ_CST-NEXT:    [[X_ADDR:%.*]] = alloca ptr, align 818// SEQ_CST-NEXT:    store ptr [[X]], ptr [[X_ADDR]], align 819// SEQ_CST-NEXT:    [[TMP0:%.*]] = load ptr, ptr [[X_ADDR]], align 820// SEQ_CST-NEXT:    [[TMP1:%.*]] = atomicrmw add ptr [[TMP0]], i32 1 seq_cst, align 421// SEQ_CST-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1:[0-9]+]])22// SEQ_CST-NEXT:    ret void23//24// ACQ_REL-LABEL: define dso_local void @_Z3fooPi(25// ACQ_REL-SAME: ptr noundef [[X:%.*]]) #[[ATTR0:[0-9]+]] {26// ACQ_REL-NEXT:  [[ENTRY:.*:]]27// ACQ_REL-NEXT:    [[X_ADDR:%.*]] = alloca ptr, align 828// ACQ_REL-NEXT:    store ptr [[X]], ptr [[X_ADDR]], align 829// ACQ_REL-NEXT:    [[TMP0:%.*]] = load ptr, ptr [[X_ADDR]], align 830// ACQ_REL-NEXT:    [[TMP1:%.*]] = atomicrmw add ptr [[TMP0]], i32 1 release, align 431// ACQ_REL-NEXT:    call void @__kmpc_flush(ptr @[[GLOB1:[0-9]+]])32// ACQ_REL-NEXT:    ret void33//34// RELAXED-LABEL: define dso_local void @_Z3fooPi(35// RELAXED-SAME: ptr noundef [[X:%.*]]) #[[ATTR0:[0-9]+]] {36// RELAXED-NEXT:  [[ENTRY:.*:]]37// RELAXED-NEXT:    [[X_ADDR:%.*]] = alloca ptr, align 838// RELAXED-NEXT:    store ptr [[X]], ptr [[X_ADDR]], align 839// RELAXED-NEXT:    [[TMP0:%.*]] = load ptr, ptr [[X_ADDR]], align 840// RELAXED-NEXT:    [[TMP1:%.*]] = atomicrmw add ptr [[TMP0]], i32 1 monotonic, align 441// RELAXED-NEXT:    ret void42//43void foo(int *x) {44  #pragma omp atomic update45    *x = *x + 1;46}47