projects
/
oota-llvm.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
AVX-512: Implemented 256/128bit VALIGND/Q instructions for SKX and KNL
[oota-llvm.git]
/
test
/
CodeGen
/
X86
/
atomic64.ll
diff --git
a/test/CodeGen/X86/atomic64.ll
b/test/CodeGen/X86/atomic64.ll
index aa000455753fd15dc4b6fb905a859dd08ee672a9..c6b1c39d35dcf99c19c3ae41146100ab70a23496 100644
(file)
--- a/
test/CodeGen/X86/atomic64.ll
+++ b/
test/CodeGen/X86/atomic64.ll
@@
-3,7
+3,8
@@
@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
@@
-22,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
@@
-40,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
@@
-56,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
@@
-72,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
@@
-88,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
@@
-107,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
@@
-126,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
@@
-145,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
@@
-164,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
@@
-183,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
@@
-194,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
@@
-205,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