blob: 2852ef49e0a578c5a91fe08ad420f31dead8db1c [file] [log] [blame]
David Majnemer5aadde12016-03-02 06:46:52 +00001; RUN: llc -verify-machineinstrs < %s | FileCheck %s
David Majnemer011980c2016-01-01 06:50:01 +00002target triple = "x86_64-pc-win32"
3
4declare i64 @llvm.x86.flags.read.u64()
5declare void @llvm.x86.flags.write.u64(i64)
6
7define i64 @read_flags() {
8entry:
9 %flags = call i64 @llvm.x86.flags.read.u64()
10 ret i64 %flags
11}
12
13; CHECK-LABEL: read_flags:
14; CHECK: pushq %rbp
15; CHECK: .seh_pushreg 5
16; CHECK: movq %rsp, %rbp
17; CHECK: .seh_setframe 5, 0
18; CHECK: .seh_endprologue
19; CHECK-NEXT: pushfq
20; CHECK-NEXT: popq %rax
21; CHECK-NEXT: popq %rbp
22
23define void @write_flags(i64 %arg) {
24entry:
25 call void @llvm.x86.flags.write.u64(i64 %arg)
26 ret void
27}
28
29; CHECK-LABEL: write_flags:
30; CHECK: pushq %rbp
31; CHECK: .seh_pushreg 5
32; CHECK: movq %rsp, %rbp
33; CHECK: .seh_setframe 5, 0
34; CHECK: .seh_endprologue
35; CHECK-NEXT: pushq %rcx
36; CHECK-NEXT: popfq
37; CHECK-NEXT: popq %rbp