Taints the non-acquire RMW's store address with the load part
[oota-llvm.git] / test / Transforms / LowerAtomic / atomic-load.ll
1 ; RUN: opt < %s -loweratomic -S | FileCheck %s
2
3 define i8 @add() {
4 ; CHECK-LABEL: @add(
5   %i = alloca i8
6   %j = atomicrmw add i8* %i, i8 42 monotonic
7 ; CHECK: [[INST:%[a-z0-9]+]] = load
8 ; CHECK-NEXT: add
9 ; CHECK-NEXT: store
10   ret i8 %j
11 ; CHECK: ret i8 [[INST]]
12 }
13
14 define i8 @nand() {
15 ; CHECK-LABEL: @nand(
16   %i = alloca i8
17   %j = atomicrmw nand i8* %i, i8 42 monotonic
18 ; CHECK: [[INST:%[a-z0-9]+]] = load
19 ; CHECK-NEXT: and
20 ; CHECK-NEXT: xor
21 ; CHECK-NEXT: store
22   ret i8 %j
23 ; CHECK: ret i8 [[INST]]
24 }
25
26 define i8 @min() {
27 ; CHECK-LABEL: @min(
28   %i = alloca i8
29   %j = atomicrmw min i8* %i, i8 42 monotonic
30 ; CHECK: [[INST:%[a-z0-9]+]] = load
31 ; CHECK-NEXT: icmp
32 ; CHECK-NEXT: select
33 ; CHECK-NEXT: store
34   ret i8 %j
35 ; CHECK: ret i8 [[INST]]
36 }