Run DCE after a LoopFlatten test to reduce spurious output [nfc]
[llvm-project.git] / llvm / test / CodeGen / X86 / x86-flags-intrinsics.ll
blob67cf0ef6e8b8f42e3f8484662c85f2a76bc0daaa
1 ; RUN: llc -verify-machineinstrs < %s | FileCheck %s
2 target triple = "i686-pc-win32"
4 ; Check that pushf/popf intrinsics on win32 don't need a frame pointer.
5 ; FIXME: These can't be autogenerated due to the fastcall function name label,
6 ; it seems.
8 declare i32 @llvm.x86.flags.read.u32()
9 declare void @llvm.x86.flags.write.u32(i32)
11 define i32 @read_flags() {
12 entry:
13   %flags = call i32 @llvm.x86.flags.read.u32()
14   ret i32 %flags
17 ; CHECK-LABEL: _read_flags:
18 ; CHECK:      pushfl
19 ; CHECK-NEXT: popl    %eax
20 ; CHECK-NEXT: retl
22 define x86_fastcallcc void @write_flags(i32 inreg %arg) {
23 entry:
24   call void @llvm.x86.flags.write.u32(i32 %arg)
25   ret void
28 ; CHECK-LABEL: @write_flags@4:
29 ; CHECK:      pushl   %ecx
30 ; CHECK-NEXT: popfl
31 ; CHECK-NEXT: retl