1*9880d681SAndroid Build Coastguard Worker; RUN: llc -verify-machineinstrs < %s | FileCheck %s 2*9880d681SAndroid Build Coastguard Workertarget triple = "i686-pc-win32" 3*9880d681SAndroid Build Coastguard Worker 4*9880d681SAndroid Build Coastguard Workerdeclare i32 @llvm.x86.flags.read.u32() 5*9880d681SAndroid Build Coastguard Workerdeclare void @llvm.x86.flags.write.u32(i32) 6*9880d681SAndroid Build Coastguard Worker 7*9880d681SAndroid Build Coastguard Workerdefine i32 @read_flags() { 8*9880d681SAndroid Build Coastguard Workerentry: 9*9880d681SAndroid Build Coastguard Worker %flags = call i32 @llvm.x86.flags.read.u32() 10*9880d681SAndroid Build Coastguard Worker ret i32 %flags 11*9880d681SAndroid Build Coastguard Worker} 12*9880d681SAndroid Build Coastguard Worker 13*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: _read_flags: 14*9880d681SAndroid Build Coastguard Worker; CHECK: pushl %ebp 15*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movl %esp, %ebp 16*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: pushfl 17*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: popl %eax 18*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: popl %ebp 19*9880d681SAndroid Build Coastguard Worker 20*9880d681SAndroid Build Coastguard Workerdefine x86_fastcallcc void @write_flags(i32 inreg %arg) { 21*9880d681SAndroid Build Coastguard Workerentry: 22*9880d681SAndroid Build Coastguard Worker call void @llvm.x86.flags.write.u32(i32 %arg) 23*9880d681SAndroid Build Coastguard Worker ret void 24*9880d681SAndroid Build Coastguard Worker} 25*9880d681SAndroid Build Coastguard Worker 26*9880d681SAndroid Build Coastguard Worker; CHECK-LABEL: @write_flags@4: 27*9880d681SAndroid Build Coastguard Worker; CHECK: pushl %ebp 28*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: movl %esp, %ebp 29*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: pushl %ecx 30*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: popfl 31*9880d681SAndroid Build Coastguard Worker; CHECK-NEXT: popl %ebp 32