blob: 5b110d6b7eba4b8527ede37dbdf830876c207264 [file] [log] [blame]
Peter Collingbourne3bababf2010-08-03 16:19:16 +00001; RUN: opt < %s -loweratomic -S | FileCheck %s
2
3declare i8 @llvm.atomic.load.add.i8.p0i8(i8* %ptr, i8 %delta)
4declare i8 @llvm.atomic.load.nand.i8.p0i8(i8* %ptr, i8 %delta)
5declare i8 @llvm.atomic.load.min.i8.p0i8(i8* %ptr, i8 %delta)
6
7define i8 @add() {
8; CHECK: @add
9 %i = alloca i8
10 %j = call i8 @llvm.atomic.load.add.i8.p0i8(i8* %i, i8 42)
11; CHECK: [[INST:%[a-z0-9]+]] = load
12; CHECK-NEXT: add
13; CHECK-NEXT: store
14 ret i8 %j
15; CHECK: ret i8 [[INST]]
16}
17
18define i8 @nand() {
19; CHECK: @nand
20 %i = alloca i8
21 %j = call i8 @llvm.atomic.load.nand.i8.p0i8(i8* %i, i8 42)
22; CHECK: [[INST:%[a-z0-9]+]] = load
23; CHECK-NEXT: and
24; CHECK-NEXT: xor
25; CHECK-NEXT: store
26 ret i8 %j
27; CHECK: ret i8 [[INST]]
28}
29
30define i8 @min() {
31; CHECK: @min
32 %i = alloca i8
33 %j = call i8 @llvm.atomic.load.min.i8.p0i8(i8* %i, i8 42)
34; CHECK: [[INST:%[a-z0-9]+]] = load
35; CHECK-NEXT: icmp
36; CHECK-NEXT: select
37; CHECK-NEXT: store
38 ret i8 %j
39; CHECK: ret i8 [[INST]]
40}