projects
/
oota-llvm.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[X86] Fast-ISel was incorrectly always killing the source of a truncate.
[oota-llvm.git]
/
test
/
CodeGen
/
X86
/
atomic8.ll
diff --git
a/test/CodeGen/X86/atomic8.ll
b/test/CodeGen/X86/atomic8.ll
index 412428406dcffc69f106caa7cf51e283a99a84bc..5eef9b295e806cb2c931d268a26cf6715f52c0f2 100644
(file)
--- a/
test/CodeGen/X86/atomic8.ll
+++ b/
test/CodeGen/X86/atomic8.ll
@@
-1,11
+1,11
@@
-; RUN: llc < %s -O0 -march=x86-64 -mcpu=corei7 | FileCheck %s --check-prefix X64
-; RUN: llc < %s -O0 -march=x86 -mcpu=corei7 | FileCheck %s --check-prefix X32
+; RUN: llc < %s -O0 -march=x86-64 -mcpu=corei7
-verify-machineinstrs
| FileCheck %s --check-prefix X64
+; RUN: llc < %s -O0 -march=x86 -mcpu=corei7
-verify-machineinstrs
| FileCheck %s --check-prefix X32
@sc8 = external global i8
define void @atomic_fetch_add8() nounwind {
@sc8 = external global i8
define void @atomic_fetch_add8() nounwind {
-; X64
: atomic_fetch_add8
-; X32
: atomic_fetch_add8
+; X64
-LABEL: atomic_fetch_add8:
+; X32
-LABEL: atomic_fetch_add8:
entry:
; 32-bit
%t1 = atomicrmw add i8* @sc8, i8 1 acquire
entry:
; 32-bit
%t1 = atomicrmw add i8* @sc8, i8 1 acquire
@@
-34,8
+34,8
@@
entry:
}
define void @atomic_fetch_sub8() nounwind {
}
define void @atomic_fetch_sub8() nounwind {
-; X64
: atomic_fetch_sub8
-; X32
: atomic_fetch_sub8
+; X64
-LABEL: atomic_fetch_sub8:
+; X32
-LABEL: atomic_fetch_sub8:
%t1 = atomicrmw sub i8* @sc8, i8 1 acquire
; X64: lock
; X64: decb
%t1 = atomicrmw sub i8* @sc8, i8 1 acquire
; X64: lock
; X64: decb
@@
-62,8
+62,8
@@
define void @atomic_fetch_sub8() nounwind {
}
define void @atomic_fetch_and8() nounwind {
}
define void @atomic_fetch_and8() nounwind {
-; X64
: atomic_fetch_and8
-; X32
: atomic_fetch_and8
+; X64
-LABEL: atomic_fetch_and8:
+; X32
-LABEL: atomic_fetch_and8:
%t1 = atomicrmw and i8* @sc8, i8 3 acquire
; X64: lock
; X64: andb $3
%t1 = atomicrmw and i8* @sc8, i8 3 acquire
; X64: lock
; X64: andb $3
@@
-87,8
+87,8
@@
define void @atomic_fetch_and8() nounwind {
}
define void @atomic_fetch_or8() nounwind {
}
define void @atomic_fetch_or8() nounwind {
-; X64
: atomic_fetch_or8
-; X32
: atomic_fetch_or8
+; X64
-LABEL: atomic_fetch_or8:
+; X32
-LABEL: atomic_fetch_or8:
%t1 = atomicrmw or i8* @sc8, i8 3 acquire
; X64: lock
; X64: orb $3
%t1 = atomicrmw or i8* @sc8, i8 3 acquire
; X64: lock
; X64: orb $3
@@
-112,8
+112,8
@@
define void @atomic_fetch_or8() nounwind {
}
define void @atomic_fetch_xor8() nounwind {
}
define void @atomic_fetch_xor8() nounwind {
-; X64
: atomic_fetch_xor8
-; X32
: atomic_fetch_xor8
+; X64
-LABEL: atomic_fetch_xor8:
+; X32
-LABEL: atomic_fetch_xor8:
%t1 = atomicrmw xor i8* @sc8, i8 3 acquire
; X64: lock
; X64: xorb $3
%t1 = atomicrmw xor i8* @sc8, i8 3 acquire
; X64: lock
; X64: xorb $3
@@
-137,8
+137,8
@@
define void @atomic_fetch_xor8() nounwind {
}
define void @atomic_fetch_nand8(i8 %x) nounwind {
}
define void @atomic_fetch_nand8(i8 %x) nounwind {
-; X64
: atomic_fetch_nand8
-; X32
: atomic_fetch_nand8
+; X64
-LABEL: atomic_fetch_nand8:
+; X32
-LABEL: atomic_fetch_nand8:
%t1 = atomicrmw nand i8* @sc8, i8 %x acquire
; X64: andb
; X64: notb
%t1 = atomicrmw nand i8* @sc8, i8 %x acquire
; X64: andb
; X64: notb
@@
-154,14
+154,18
@@
define void @atomic_fetch_nand8(i8 %x) nounwind {
}
define void @atomic_fetch_max8(i8 %x) nounwind {
}
define void @atomic_fetch_max8(i8 %x) nounwind {
+; X64-LABEL: atomic_fetch_max8:
+; X32-LABEL: atomic_fetch_max8:
%t1 = atomicrmw max i8* @sc8, i8 %x acquire
%t1 = atomicrmw max i8* @sc8, i8 %x acquire
-; X64: cmpb
-; X64: cmov
+; X64: movsbl
+; X64: movsbl
+; X64: subl
; X64: lock
; X64: cmpxchgb
; X64: lock
; X64: cmpxchgb
-; X32: cmpb
-; X32: cmov
+; X32: movsbl
+; X32: movsbl
+; X32: subl
; X32: lock
; X32: cmpxchgb
ret void
; X32: lock
; X32: cmpxchgb
ret void
@@
-170,14
+174,18
@@
define void @atomic_fetch_max8(i8 %x) nounwind {
}
define void @atomic_fetch_min8(i8 %x) nounwind {
}
define void @atomic_fetch_min8(i8 %x) nounwind {
+; X64-LABEL: atomic_fetch_min8:
+; X32-LABEL: atomic_fetch_min8:
%t1 = atomicrmw min i8* @sc8, i8 %x acquire
%t1 = atomicrmw min i8* @sc8, i8 %x acquire
-; X64: cmpb
-; X64: cmov
+; X64: movsbl
+; X64: movsbl
+; X64: subl
; X64: lock
; X64: cmpxchgb
; X64: lock
; X64: cmpxchgb
-; X32: cmpb
-; X32: cmov
+; X32: movsbl
+; X32: movsbl
+; X32: subl
; X32: lock
; X32: cmpxchgb
ret void
; X32: lock
; X32: cmpxchgb
ret void
@@
-186,14
+194,18
@@
define void @atomic_fetch_min8(i8 %x) nounwind {
}
define void @atomic_fetch_umax8(i8 %x) nounwind {
}
define void @atomic_fetch_umax8(i8 %x) nounwind {
+; X64-LABEL: atomic_fetch_umax8:
+; X32-LABEL: atomic_fetch_umax8:
%t1 = atomicrmw umax i8* @sc8, i8 %x acquire
%t1 = atomicrmw umax i8* @sc8, i8 %x acquire
-; X64: cmpb
-; X64: cmov
+; X64: movzbl
+; X64: movzbl
+; X64: subl
; X64: lock
; X64: cmpxchgb
; X64: lock
; X64: cmpxchgb
-; X32: cmpb
-; X32: cmov
+; X32: movzbl
+; X32: movzbl
+; X32: subl
; X32: lock
; X32: cmpxchgb
ret void
; X32: lock
; X32: cmpxchgb
ret void
@@
-202,13
+214,18
@@
define void @atomic_fetch_umax8(i8 %x) nounwind {
}
define void @atomic_fetch_umin8(i8 %x) nounwind {
}
define void @atomic_fetch_umin8(i8 %x) nounwind {
+; X64-LABEL: atomic_fetch_umin8:
+; X32-LABEL: atomic_fetch_umin8:
%t1 = atomicrmw umin i8* @sc8, i8 %x acquire
%t1 = atomicrmw umin i8* @sc8, i8 %x acquire
-; X64: cmpb
-; X64: cmov
+; X64: movzbl
+; X64: movzbl
+; X64: subl
; X64: lock
; X64: cmpxchgb
; X64: lock
; X64: cmpxchgb
-; X32: cmpb
-; X32: cmov
+
+; X32: movzbl
+; X32: movzbl
+; X32: subl
; X32: lock
; X32: cmpxchgb
ret void
; X32: lock
; X32: cmpxchgb
ret void
@@
-217,7
+234,9
@@
define void @atomic_fetch_umin8(i8 %x) nounwind {
}
define void @atomic_fetch_cmpxchg8() nounwind {
}
define void @atomic_fetch_cmpxchg8() nounwind {
- %t1 = cmpxchg i8* @sc8, i8 0, i8 1 acquire
+; X64-LABEL: atomic_fetch_cmpxchg8:
+; X32-LABEL: atomic_fetch_cmpxchg8:
+ %t1 = cmpxchg i8* @sc8, i8 0, i8 1 acquire acquire
; X64: lock
; X64: cmpxchgb
; X32: lock
; X64: lock
; X64: cmpxchgb
; X32: lock
@@
-228,6
+247,8
@@
define void @atomic_fetch_cmpxchg8() nounwind {
}
define void @atomic_fetch_store8(i8 %x) nounwind {
}
define void @atomic_fetch_store8(i8 %x) nounwind {
+; X64-LABEL: atomic_fetch_store8:
+; X32-LABEL: atomic_fetch_store8:
store atomic i8 %x, i8* @sc8 release, align 4
; X64-NOT: lock
; X64: movb
store atomic i8 %x, i8* @sc8 release, align 4
; X64-NOT: lock
; X64: movb
@@
-239,6
+260,8
@@
define void @atomic_fetch_store8(i8 %x) nounwind {
}
define void @atomic_fetch_swap8(i8 %x) nounwind {
}
define void @atomic_fetch_swap8(i8 %x) nounwind {
+; X64-LABEL: atomic_fetch_swap8:
+; X32-LABEL: atomic_fetch_swap8:
%t1 = atomicrmw xchg i8* @sc8, i8 %x acquire
; X64-NOT: lock
; X64: xchgb
%t1 = atomicrmw xchg i8* @sc8, i8 %x acquire
; X64-NOT: lock
; X64: xchgb