blob: aaedf18481b5d48326bb9772102baf055acf0806 [file] [log] [blame]
Craig Topperde9e4c72012-01-01 19:40:22 +00001; RUN: llc < %s -mtriple=x86_64-linux -mattr=+sse3 | FileCheck %s
2; RUN: llc < %s -mtriple=x86_64-win32 -mattr=+sse3 | FileCheck %s -check-prefix=WIN64
Eric Christopher228232b2010-11-30 07:20:12 +00003; PR8573
4
Eric Christopherc459d062010-11-30 09:23:54 +00005; CHECK: foo:
Eric Christopher228232b2010-11-30 07:20:12 +00006; CHECK: leaq (%rdi), %rax
7; CHECK-NEXT: movl %esi, %ecx
8; CHECK-NEXT: monitor
NAKAMURA Takumi37947c62011-03-16 13:52:51 +00009; WIN64: foo:
10; WIN64: leaq (%rcx), %rax
11; WIN64-NEXT: movl %edx, %ecx
12; WIN64-NEXT: movl %r8d, %edx
13; WIN64-NEXT: monitor
Eric Christopher228232b2010-11-30 07:20:12 +000014define void @foo(i8* %P, i32 %E, i32 %H) nounwind {
15entry:
16 tail call void @llvm.x86.sse3.monitor(i8* %P, i32 %E, i32 %H)
17 ret void
18}
19
20declare void @llvm.x86.sse3.monitor(i8*, i32, i32) nounwind
21
Eric Christopherc459d062010-11-30 09:23:54 +000022; CHECK: bar:
Eric Christopher228232b2010-11-30 07:20:12 +000023; CHECK: movl %edi, %ecx
24; CHECK-NEXT: movl %esi, %eax
25; CHECK-NEXT: mwait
NAKAMURA Takumi37947c62011-03-16 13:52:51 +000026; WIN64: bar:
27; WIN64: movl %edx, %eax
28; WIN64-NEXT: mwait
Eric Christopher228232b2010-11-30 07:20:12 +000029define void @bar(i32 %E, i32 %H) nounwind {
30entry:
31 tail call void @llvm.x86.sse3.mwait(i32 %E, i32 %H)
32 ret void
33}
34
35declare void @llvm.x86.sse3.mwait(i32, i32) nounwind