projects
/
oota-llvm.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[X86] update_llc_test_checks vector-shuffle-*. NFC.
[oota-llvm.git]
/
test
/
CodeGen
/
X86
/
2010-10-08-cmpxchg8b.ll
diff --git
a/test/CodeGen/X86/2010-10-08-cmpxchg8b.ll
b/test/CodeGen/X86/2010-10-08-cmpxchg8b.ll
index 0fd4a34862c64daf6fdb4570a8d8f5c2cbf1a19d..ee50cb13e63449bed91df859f05ee4bee7b3eb79 100644
(file)
--- a/
test/CodeGen/X86/2010-10-08-cmpxchg8b.ll
+++ b/
test/CodeGen/X86/2010-10-08-cmpxchg8b.ll
@@
-1,5
+1,5
@@
; RUN: llc < %s -march=x86 -mtriple=i386-apple-darwin | FileCheck %s
; RUN: llc < %s -march=x86 -mtriple=i386-apple-darwin | FileCheck %s
-;
bug
8297
+;
PR
8297
;
; On i386, i64 cmpxchg is lowered during legalize types to extract the
; 64-bit result into a pair of fixed regs. So creation of the DAG node
;
; On i386, i64 cmpxchg is lowered during legalize types to extract the
; 64-bit result into a pair of fixed regs. So creation of the DAG node
@@
-16,13
+16,11
@@
define void @foo(i64* %ptr) nounwind inlinehint {
entry:
br label %loop
loop:
entry:
br label %loop
loop:
-; CHECK: lock
-; CHECK-NEXT: cmpxchg8b
- %r =
call i64 @llvm.atomic.cmp.swap.i64.p0i64(i64* %ptr, i64 0, i64 1)
+; CHECK: lock
cmpxchg8b
+ %pair = cmpxchg i64* %ptr, i64 0, i64 1 monotonic monotonic
+ %r =
extractvalue { i64, i1 } %pair, 0
%stored1 = icmp eq i64 %r, 0
br i1 %stored1, label %loop, label %continue
continue:
ret void
}
%stored1 = icmp eq i64 %r, 0
br i1 %stored1, label %loop, label %continue
continue:
ret void
}
-
-declare i64 @llvm.atomic.cmp.swap.i64.p0i64(i64* nocapture, i64, i64) nounwind