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