xref: /aosp_15_r20/external/llvm/test/CodeGen/X86/apm.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-linux -mattr=+sse3 | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker; RUN: llc < %s -mtriple=x86_64-win32 -mattr=+sse3 | FileCheck %s -check-prefix=WIN64
3*9880d681SAndroid Build Coastguard Worker; PR8573
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: foo:
6*9880d681SAndroid Build Coastguard Worker; CHECK: leaq    (%rdi), %rax
7*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movl    %esi, %ecx
8*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: monitor
9*9880d681SAndroid Build Coastguard Worker; WIN64-LABEL: foo:
10*9880d681SAndroid Build Coastguard Worker; WIN64:      leaq    (%rcx), %rax
11*9880d681SAndroid Build Coastguard Worker; WIN64-NEXT: movl    %edx, %ecx
12*9880d681SAndroid Build Coastguard Worker; WIN64-NEXT: movl    %r8d, %edx
13*9880d681SAndroid Build Coastguard Worker; WIN64-NEXT: monitor
14*9880d681SAndroid Build Coastguard Workerdefine void @foo(i8* %P, i32 %E, i32 %H) nounwind {
15*9880d681SAndroid Build Coastguard Workerentry:
16*9880d681SAndroid Build Coastguard Worker  tail call void @llvm.x86.sse3.monitor(i8* %P, i32 %E, i32 %H)
17*9880d681SAndroid Build Coastguard Worker  ret void
18*9880d681SAndroid Build Coastguard Worker}
19*9880d681SAndroid Build Coastguard Worker
20*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.sse3.monitor(i8*, i32, i32) nounwind
21*9880d681SAndroid Build Coastguard Worker
22*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: bar:
23*9880d681SAndroid Build Coastguard Worker; CHECK: movl    %edi, %ecx
24*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movl    %esi, %eax
25*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: mwait
26*9880d681SAndroid Build Coastguard Worker; WIN64-LABEL: bar:
27*9880d681SAndroid Build Coastguard Worker; WIN64:      movl    %edx, %eax
28*9880d681SAndroid Build Coastguard Worker; WIN64-NEXT: mwait
29*9880d681SAndroid Build Coastguard Workerdefine void @bar(i32 %E, i32 %H) nounwind {
30*9880d681SAndroid Build Coastguard Workerentry:
31*9880d681SAndroid Build Coastguard Worker  tail call void @llvm.x86.sse3.mwait(i32 %E, i32 %H)
32*9880d681SAndroid Build Coastguard Worker  ret void
33*9880d681SAndroid Build Coastguard Worker}
34*9880d681SAndroid Build Coastguard Worker
35*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.sse3.mwait(i32, i32) nounwind
36