projects
/
oota-llvm.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Switch lowering: enable whole-switch jump tables at -O0.
[oota-llvm.git]
/
test
/
CodeGen
/
X86
/
atomic64.ll
diff --git
a/test/CodeGen/X86/atomic64.ll
b/test/CodeGen/X86/atomic64.ll
index d362c31e6db80d568c6e6aa0d44da5e233f855b1..c6b1c39d35dcf99c19c3ae41146100ab70a23496 100644
(file)
--- a/
test/CodeGen/X86/atomic64.ll
+++ b/
test/CodeGen/X86/atomic64.ll
@@
-1,11
+1,10
@@
; RUN: llc < %s -O0 -march=x86-64 -mcpu=corei7 -verify-machineinstrs | FileCheck %s --check-prefix X64
; RUN: llc < %s -O0 -march=x86-64 -mcpu=corei7 -verify-machineinstrs | FileCheck %s --check-prefix X64
-; XFAIL: cygwin,mingw32,win32
-
@sc64 = external global i64
define void @atomic_fetch_add64() nounwind {
@sc64 = external global i64
define void @atomic_fetch_add64() nounwind {
-; X64: atomic_fetch_add64
+; X64-LABEL: atomic_fetch_add64:
+; X32-LABEL: atomic_fetch_add64:
entry:
%t1 = atomicrmw add i64* @sc64, i64 1 acquire
; X64: lock
entry:
%t1 = atomicrmw add i64* @sc64, i64 1 acquire
; X64: lock
@@
-24,7
+23,8
@@
entry:
}
define void @atomic_fetch_sub64() nounwind {
}
define void @atomic_fetch_sub64() nounwind {
-; X64: atomic_fetch_sub64
+; X64-LABEL: atomic_fetch_sub64:
+; X32-LABEL: atomic_fetch_sub64:
%t1 = atomicrmw sub i64* @sc64, i64 1 acquire
; X64: lock
; X64: decq
%t1 = atomicrmw sub i64* @sc64, i64 1 acquire
; X64: lock
; X64: decq
@@
-42,12
+42,13
@@
define void @atomic_fetch_sub64() nounwind {
}
define void @atomic_fetch_and64() nounwind {
}
define void @atomic_fetch_and64() nounwind {
-; X64: atomic_fetch_and64
+; X64-LABEL: atomic_fetch_and64:
+; X32-LABEL: atomic_fetch_and64:
%t1 = atomicrmw and i64* @sc64, i64 3 acquire
; X64: lock
; X64: andq $3
%t2 = atomicrmw and i64* @sc64, i64 5 acquire
%t1 = atomicrmw and i64* @sc64, i64 3 acquire
; X64: lock
; X64: andq $3
%t2 = atomicrmw and i64* @sc64, i64 5 acquire
-; X64: and
q
+; X64: and
l
; X64: lock
; X64: cmpxchgq
%t3 = atomicrmw and i64* @sc64, i64 %t2 acquire
; X64: lock
; X64: cmpxchgq
%t3 = atomicrmw and i64* @sc64, i64 %t2 acquire
@@
-58,7
+59,8
@@
define void @atomic_fetch_and64() nounwind {
}
define void @atomic_fetch_or64() nounwind {
}
define void @atomic_fetch_or64() nounwind {
-; X64: atomic_fetch_or64
+; X64-LABEL: atomic_fetch_or64:
+; X32-LABEL: atomic_fetch_or64:
%t1 = atomicrmw or i64* @sc64, i64 3 acquire
; X64: lock
; X64: orq $3
%t1 = atomicrmw or i64* @sc64, i64 3 acquire
; X64: lock
; X64: orq $3
@@
-74,7
+76,8
@@
define void @atomic_fetch_or64() nounwind {
}
define void @atomic_fetch_xor64() nounwind {
}
define void @atomic_fetch_xor64() nounwind {
-; X64: atomic_fetch_xor64
+; X64-LABEL: atomic_fetch_xor64:
+; X32-LABEL: atomic_fetch_xor64:
%t1 = atomicrmw xor i64* @sc64, i64 3 acquire
; X64: lock
; X64: xorq $3
%t1 = atomicrmw xor i64* @sc64, i64 3 acquire
; X64: lock
; X64: xorq $3
@@
-90,8
+93,8
@@
define void @atomic_fetch_xor64() nounwind {
}
define void @atomic_fetch_nand64(i64 %x) nounwind {
}
define void @atomic_fetch_nand64(i64 %x) nounwind {
-; X64
: atomic_fetch_nand64
-; X32
: atomic_fetch_nand64
+; X64
-LABEL: atomic_fetch_nand64:
+; X32
-LABEL: atomic_fetch_nand64:
%t1 = atomicrmw nand i64* @sc64, i64 %x acquire
; X64: andq
; X64: notq
%t1 = atomicrmw nand i64* @sc64, i64 %x acquire
; X64: andq
; X64: notq
@@
-109,8
+112,10
@@
define void @atomic_fetch_nand64(i64 %x) nounwind {
}
define void @atomic_fetch_max64(i64 %x) nounwind {
}
define void @atomic_fetch_max64(i64 %x) nounwind {
+; X64-LABEL: atomic_fetch_max64:
+; X32-LABEL: atomic_fetch_max64:
%t1 = atomicrmw max i64* @sc64, i64 %x acquire
%t1 = atomicrmw max i64* @sc64, i64 %x acquire
-; X64:
cmp
q
+; X64:
sub
q
; X64: cmov
; X64: lock
; X64: cmpxchgq
; X64: cmov
; X64: lock
; X64: cmpxchgq
@@
-128,8
+133,10
@@
define void @atomic_fetch_max64(i64 %x) nounwind {
}
define void @atomic_fetch_min64(i64 %x) nounwind {
}
define void @atomic_fetch_min64(i64 %x) nounwind {
+; X64-LABEL: atomic_fetch_min64:
+; X32-LABEL: atomic_fetch_min64:
%t1 = atomicrmw min i64* @sc64, i64 %x acquire
%t1 = atomicrmw min i64* @sc64, i64 %x acquire
-; X64:
cmp
q
+; X64:
sub
q
; X64: cmov
; X64: lock
; X64: cmpxchgq
; X64: cmov
; X64: lock
; X64: cmpxchgq
@@
-147,8
+154,10
@@
define void @atomic_fetch_min64(i64 %x) nounwind {
}
define void @atomic_fetch_umax64(i64 %x) nounwind {
}
define void @atomic_fetch_umax64(i64 %x) nounwind {
+; X64-LABEL: atomic_fetch_umax64:
+; X32-LABEL: atomic_fetch_umax64:
%t1 = atomicrmw umax i64* @sc64, i64 %x acquire
%t1 = atomicrmw umax i64* @sc64, i64 %x acquire
-; X64:
cmp
q
+; X64:
sub
q
; X64: cmov
; X64: lock
; X64: cmpxchgq
; X64: cmov
; X64: lock
; X64: cmpxchgq
@@
-166,8
+175,10
@@
define void @atomic_fetch_umax64(i64 %x) nounwind {
}
define void @atomic_fetch_umin64(i64 %x) nounwind {
}
define void @atomic_fetch_umin64(i64 %x) nounwind {
+; X64-LABEL: atomic_fetch_umin64:
+; X32-LABEL: atomic_fetch_umin64:
%t1 = atomicrmw umin i64* @sc64, i64 %x acquire
%t1 = atomicrmw umin i64* @sc64, i64 %x acquire
-; X64:
cmp
q
+; X64:
sub
q
; X64: cmov
; X64: lock
; X64: cmpxchgq
; X64: cmov
; X64: lock
; X64: cmpxchgq
@@
-185,7
+196,9
@@
define void @atomic_fetch_umin64(i64 %x) nounwind {
}
define void @atomic_fetch_cmpxchg64() nounwind {
}
define void @atomic_fetch_cmpxchg64() nounwind {
- %t1 = cmpxchg i64* @sc64, i64 0, i64 1 acquire
+; X64-LABEL: atomic_fetch_cmpxchg64:
+; X32-LABEL: atomic_fetch_cmpxchg64:
+ %t1 = cmpxchg i64* @sc64, i64 0, i64 1 acquire acquire
; X64: lock
; X64: cmpxchgq
; X32: lock
; X64: lock
; X64: cmpxchgq
; X32: lock
@@
-196,6
+209,8
@@
define void @atomic_fetch_cmpxchg64() nounwind {
}
define void @atomic_fetch_store64(i64 %x) nounwind {
}
define void @atomic_fetch_store64(i64 %x) nounwind {
+; X64-LABEL: atomic_fetch_store64:
+; X32-LABEL: atomic_fetch_store64:
store atomic i64 %x, i64* @sc64 release, align 8
; X64-NOT: lock
; X64: movq
store atomic i64 %x, i64* @sc64 release, align 8
; X64-NOT: lock
; X64: movq
@@
-207,6
+222,8
@@
define void @atomic_fetch_store64(i64 %x) nounwind {
}
define void @atomic_fetch_swap64(i64 %x) nounwind {
}
define void @atomic_fetch_swap64(i64 %x) nounwind {
+; X64-LABEL: atomic_fetch_swap64:
+; X32-LABEL: atomic_fetch_swap64:
%t1 = atomicrmw xchg i64* @sc64, i64 %x acquire
; X64-NOT: lock
; X64: xchgq
%t1 = atomicrmw xchg i64* @sc64, i64 %x acquire
; X64-NOT: lock
; X64: xchgq