blob: 01a926489be6035b66e217b5bcaae645efb65a05 [file] [log] [blame]
Michael Liaode51caf2012-09-25 18:08:13 +00001; RUN: llc -march=x86 -mattr=+cmov -mtriple=i386-pc-linux < %s | FileCheck %s
2@sc64 = external global i64
3
4define void @atomic_maxmin_i6432() {
5; CHECK: atomic_maxmin_i6432
6 %1 = atomicrmw max i64* @sc64, i64 5 acquire
7; CHECK: [[LABEL:.LBB[0-9]+_[0-9]+]]
8; CHECK: cmpl
9; CHECK: setl
10; CHECK: cmpl
11; CHECK: setl
12; CHECK: cmovne
13; CHECK: cmovne
14; CHECK: lock
15; CHECK-NEXT: cmpxchg8b
16; CHECK: jne [[LABEL]]
17 %2 = atomicrmw min i64* @sc64, i64 6 acquire
18; CHECK: [[LABEL:.LBB[0-9]+_[0-9]+]]
19; CHECK: cmpl
20; CHECK: setg
21; CHECK: cmpl
22; CHECK: setg
23; CHECK: cmovne
24; CHECK: cmovne
25; CHECK: lock
26; CHECK-NEXT: cmpxchg8b
27; CHECK: jne [[LABEL]]
28 %3 = atomicrmw umax i64* @sc64, i64 7 acquire
29; CHECK: [[LABEL:.LBB[0-9]+_[0-9]+]]
30; CHECK: cmpl
31; CHECK: setb
32; CHECK: cmpl
33; CHECK: setb
34; CHECK: cmovne
35; CHECK: cmovne
36; CHECK: lock
37; CHECK-NEXT: cmpxchg8b
38; CHECK: jne [[LABEL]]
39 %4 = atomicrmw umin i64* @sc64, i64 8 acquire
40; CHECK: [[LABEL:.LBB[0-9]+_[0-9]+]]
41; CHECK: cmpl
42; CHECK: seta
43; CHECK: cmpl
44; CHECK: seta
45; CHECK: cmovne
46; CHECK: cmovne
47; CHECK: lock
48; CHECK-NEXT: cmpxchg8b
49; CHECK: jne [[LABEL]]
50 ret void
51}