| David Majnemer | 5aadde1 | 2016-03-02 06:46:52 +0000 | [diff] [blame] | 1 | ; RUN: llc -verify-machineinstrs < %s | FileCheck %s | 
| David Majnemer | 011980c | 2016-01-01 06:50:01 +0000 | [diff] [blame] | 2 | target triple = "x86_64-pc-win32" | 
|  | 3 |  | 
|  | 4 | declare i64 @llvm.x86.flags.read.u64() | 
|  | 5 | declare void @llvm.x86.flags.write.u64(i64) | 
|  | 6 |  | 
|  | 7 | define i64 @read_flags() { | 
|  | 8 | entry: | 
|  | 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 |  | 
|  | 23 | define void @write_flags(i64 %arg) { | 
|  | 24 | entry: | 
|  | 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 |