Peter Collingbourne | ddaaf40 | 2010-08-03 16:19:16 +0000 | [diff] [blame] | 1 | ; RUN: opt < %s -loweratomic -S | FileCheck %s |
Davide Italiano | 9922344 | 2016-05-13 22:52:35 +0000 | [diff] [blame] | 2 | ; RUN: opt < %s -passes=loweratomic -S | FileCheck %s |
Peter Collingbourne | ddaaf40 | 2010-08-03 16:19:16 +0000 | [diff] [blame] | 3 | |
Peter Collingbourne | ddaaf40 | 2010-08-03 16:19:16 +0000 | [diff] [blame] | 4 | define i8 @add() { |
Stephen Lin | c1c7a13 | 2013-07-14 01:42:54 +0000 | [diff] [blame] | 5 | ; CHECK-LABEL: @add( |
Peter Collingbourne | ddaaf40 | 2010-08-03 16:19:16 +0000 | [diff] [blame] | 6 | %i = alloca i8 |
Eli Friedman | bda9e7a | 2011-09-26 20:15:56 +0000 | [diff] [blame] | 7 | %j = atomicrmw add i8* %i, i8 42 monotonic |
Peter Collingbourne | ddaaf40 | 2010-08-03 16:19:16 +0000 | [diff] [blame] | 8 | ; 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 | |
| 15 | define i8 @nand() { |
Stephen Lin | c1c7a13 | 2013-07-14 01:42:54 +0000 | [diff] [blame] | 16 | ; CHECK-LABEL: @nand( |
Peter Collingbourne | ddaaf40 | 2010-08-03 16:19:16 +0000 | [diff] [blame] | 17 | %i = alloca i8 |
Eli Friedman | bda9e7a | 2011-09-26 20:15:56 +0000 | [diff] [blame] | 18 | %j = atomicrmw nand i8* %i, i8 42 monotonic |
Peter Collingbourne | ddaaf40 | 2010-08-03 16:19:16 +0000 | [diff] [blame] | 19 | ; 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 | |
| 27 | define i8 @min() { |
Stephen Lin | c1c7a13 | 2013-07-14 01:42:54 +0000 | [diff] [blame] | 28 | ; CHECK-LABEL: @min( |
Peter Collingbourne | ddaaf40 | 2010-08-03 16:19:16 +0000 | [diff] [blame] | 29 | %i = alloca i8 |
Eli Friedman | bda9e7a | 2011-09-26 20:15:56 +0000 | [diff] [blame] | 30 | %j = atomicrmw min i8* %i, i8 42 monotonic |
Peter Collingbourne | ddaaf40 | 2010-08-03 16:19:16 +0000 | [diff] [blame] | 31 | ; 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 | } |