blob: 1279bf72201c413b6c8e395bd9e6a11d21910479 [file] [log] [blame]
Peter Collingbourneddaaf402010-08-03 16:19:16 +00001; RUN: opt < %s -loweratomic -S | FileCheck %s
2
Peter Collingbourneddaaf402010-08-03 16:19:16 +00003define i8 @add() {
Stephen Linc1c7a132013-07-14 01:42:54 +00004; CHECK-LABEL: @add(
Peter Collingbourneddaaf402010-08-03 16:19:16 +00005 %i = alloca i8
Eli Friedmanbda9e7a2011-09-26 20:15:56 +00006 %j = atomicrmw add i8* %i, i8 42 monotonic
Peter Collingbourneddaaf402010-08-03 16:19:16 +00007; 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
14define i8 @nand() {
Stephen Linc1c7a132013-07-14 01:42:54 +000015; CHECK-LABEL: @nand(
Peter Collingbourneddaaf402010-08-03 16:19:16 +000016 %i = alloca i8
Eli Friedmanbda9e7a2011-09-26 20:15:56 +000017 %j = atomicrmw nand i8* %i, i8 42 monotonic
Peter Collingbourneddaaf402010-08-03 16:19:16 +000018; 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
26define i8 @min() {
Stephen Linc1c7a132013-07-14 01:42:54 +000027; CHECK-LABEL: @min(
Peter Collingbourneddaaf402010-08-03 16:19:16 +000028 %i = alloca i8
Eli Friedmanbda9e7a2011-09-26 20:15:56 +000029 %j = atomicrmw min i8* %i, i8 42 monotonic
Peter Collingbourneddaaf402010-08-03 16:19:16 +000030; 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}