xref: /aosp_15_r20/external/llvm/test/Transforms/LowerAtomic/atomic-load.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -loweratomic -S | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -passes=loweratomic -S | FileCheck %s
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Workerdefine i8 @add() {
5*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @add(
6*9880d681SAndroid Build Coastguard Worker  %i = alloca i8
7*9880d681SAndroid Build Coastguard Worker  %j = atomicrmw add i8* %i, i8 42 monotonic
8*9880d681SAndroid Build Coastguard Worker; CHECK: [[INST:%[a-z0-9]+]] = load
9*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: add
10*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: store
11*9880d681SAndroid Build Coastguard Worker  ret i8 %j
12*9880d681SAndroid Build Coastguard Worker; CHECK: ret i8 [[INST]]
13*9880d681SAndroid Build Coastguard Worker}
14*9880d681SAndroid Build Coastguard Worker
15*9880d681SAndroid Build Coastguard Workerdefine i8 @nand() {
16*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @nand(
17*9880d681SAndroid Build Coastguard Worker  %i = alloca i8
18*9880d681SAndroid Build Coastguard Worker  %j = atomicrmw nand i8* %i, i8 42 monotonic
19*9880d681SAndroid Build Coastguard Worker; CHECK: [[INST:%[a-z0-9]+]] = load
20*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: and
21*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: xor
22*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: store
23*9880d681SAndroid Build Coastguard Worker  ret i8 %j
24*9880d681SAndroid Build Coastguard Worker; CHECK: ret i8 [[INST]]
25*9880d681SAndroid Build Coastguard Worker}
26*9880d681SAndroid Build Coastguard Worker
27*9880d681SAndroid Build Coastguard Workerdefine i8 @min() {
28*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @min(
29*9880d681SAndroid Build Coastguard Worker  %i = alloca i8
30*9880d681SAndroid Build Coastguard Worker  %j = atomicrmw min i8* %i, i8 42 monotonic
31*9880d681SAndroid Build Coastguard Worker; CHECK: [[INST:%[a-z0-9]+]] = load
32*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: icmp
33*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: select
34*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: store
35*9880d681SAndroid Build Coastguard Worker  ret i8 %j
36*9880d681SAndroid Build Coastguard Worker; CHECK: ret i8 [[INST]]
37*9880d681SAndroid Build Coastguard Worker}
38