blob: e73417f3d407a42579c7ade36c5a25f27323f280 [file] [log] [blame]
Peter Collingbourneddaaf402010-08-03 16:19:16 +00001; RUN: opt < %s -loweratomic -S | FileCheck %s
Davide Italiano99223442016-05-13 22:52:35 +00002; RUN: opt < %s -passes=loweratomic -S | FileCheck %s
Peter Collingbourneddaaf402010-08-03 16:19:16 +00003
Peter Collingbourneddaaf402010-08-03 16:19:16 +00004define i8 @add() {
Stephen Linc1c7a132013-07-14 01:42:54 +00005; CHECK-LABEL: @add(
Peter Collingbourneddaaf402010-08-03 16:19:16 +00006 %i = alloca i8
Eli Friedmanbda9e7a2011-09-26 20:15:56 +00007 %j = atomicrmw add i8* %i, i8 42 monotonic
Peter Collingbourneddaaf402010-08-03 16:19:16 +00008; CHECK: [[INST:%[a-z0-9]+]] = load
9; CHECK-NEXT: add
10; CHECK-NEXT: store
11 ret i8 %j
12; CHECK: ret i8 [[INST]]
13}
14
15define i8 @nand() {
Stephen Linc1c7a132013-07-14 01:42:54 +000016; CHECK-LABEL: @nand(
Peter Collingbourneddaaf402010-08-03 16:19:16 +000017 %i = alloca i8
Eli Friedmanbda9e7a2011-09-26 20:15:56 +000018 %j = atomicrmw nand i8* %i, i8 42 monotonic
Peter Collingbourneddaaf402010-08-03 16:19:16 +000019; CHECK: [[INST:%[a-z0-9]+]] = load
20; CHECK-NEXT: and
21; CHECK-NEXT: xor
22; CHECK-NEXT: store
23 ret i8 %j
24; CHECK: ret i8 [[INST]]
25}
26
27define i8 @min() {
Stephen Linc1c7a132013-07-14 01:42:54 +000028; CHECK-LABEL: @min(
Peter Collingbourneddaaf402010-08-03 16:19:16 +000029 %i = alloca i8
Eli Friedmanbda9e7a2011-09-26 20:15:56 +000030 %j = atomicrmw min i8* %i, i8 42 monotonic
Peter Collingbourneddaaf402010-08-03 16:19:16 +000031; CHECK: [[INST:%[a-z0-9]+]] = load
32; CHECK-NEXT: icmp
33; CHECK-NEXT: select
34; CHECK-NEXT: store
35 ret i8 %j
36; CHECK: ret i8 [[INST]]
37}