01a926489be6035b66e217b5bcaae645efb65a05
[oota-llvm.git] / test / CodeGen / X86 / atomic-minmax-i6432.ll
1 ; RUN: llc -march=x86 -mattr=+cmov -mtriple=i386-pc-linux < %s | FileCheck %s
2 @sc64 = external global i64
3
4 define 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 }