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