Revert r354244 "[DAGCombiner] Eliminate dead stores to stack."
[llvm-complete.git] / test / CodeGen / X86 / apm.ll
blob859f33ad357d44e263539e87b79fa67400cc1f2d
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -mtriple=i686-linux -mattr=+sse3 | FileCheck %s -check-prefixes=CHECK,X86
3 ; RUN: llc < %s -mtriple=x86_64-linux -mattr=+sse3 | FileCheck %s -check-prefixes=CHECK,X64
4 ; RUN: llc < %s -mtriple=x86_64-win32 -mattr=+sse3 | FileCheck %s -check-prefixes=CHECK,WIN64
6 ; PR8573
8 define void @foo(i8* %P, i32 %E, i32 %H) nounwind {
9 ; X86-LABEL: foo:
10 ; X86:       # %bb.0: # %entry
11 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx
12 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
13 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
14 ; X86-NEXT:    leal (%eax), %eax
15 ; X86-NEXT:    monitor
16 ; X86-NEXT:    retl
18 ; X64-LABEL: foo:
19 ; X64:       # %bb.0: # %entry
20 ; X64-NEXT:    movl %esi, %ecx
21 ; X64-NEXT:    leaq (%rdi), %rax
22 ; X64-NEXT:    monitor
23 ; X64-NEXT:    retq
25 ; WIN64-LABEL: foo:
26 ; WIN64:       # %bb.0: # %entry
27 ; WIN64-NEXT:    leaq (%rcx), %rax
28 ; WIN64-NEXT:    movl %edx, %ecx
29 ; WIN64-NEXT:    movl %r8d, %edx
30 ; WIN64-NEXT:    monitor
31 ; WIN64-NEXT:    retq
32 entry:
33   tail call void @llvm.x86.sse3.monitor(i8* %P, i32 %E, i32 %H)
34   ret void
37 declare void @llvm.x86.sse3.monitor(i8*, i32, i32) nounwind
39 define void @bar(i32 %E, i32 %H) nounwind {
40 ; X86-LABEL: bar:
41 ; X86:       # %bb.0: # %entry
42 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
43 ; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
44 ; X86-NEXT:    mwait
45 ; X86-NEXT:    retl
47 ; X64-LABEL: bar:
48 ; X64:       # %bb.0: # %entry
49 ; X64-NEXT:    movl %esi, %eax
50 ; X64-NEXT:    movl %edi, %ecx
51 ; X64-NEXT:    mwait
52 ; X64-NEXT:    retq
54 ; WIN64-LABEL: bar:
55 ; WIN64:       # %bb.0: # %entry
56 ; WIN64-NEXT:    movl %edx, %eax
57 ; WIN64-NEXT:    mwait
58 ; WIN64-NEXT:    retq
59 entry:
60   tail call void @llvm.x86.sse3.mwait(i32 %E, i32 %H)
61   ret void
64 declare void @llvm.x86.sse3.mwait(i32, i32) nounwind