1 # RUN: llvm-mc -triple x86_64-pc-win32 %s | FileCheck %s 2 3 .text 4 .globl func 5 .def func; .scl 2; .type 32; .endef 6 .seh_proc func 7 # CHECK: .seh_proc func 8 func: 9 .seh_pushframe @code 10 # CHECK: .seh_pushframe @code 11 subq $24, %rsp 12 .seh_stackalloc 24 13 # CHECK: .seh_stackalloc 24 14 movq %rsi, 16(%rsp) 15 .seh_savereg %rsi, 16 16 # CHECK: .seh_savereg 6, 16 17 movups %xmm8, (%rsp) 18 .seh_savexmm %xmm8, 0 19 # CHECK: .seh_savexmm 8, 0 20 pushq %rbx 21 .seh_pushreg 3 22 # CHECK: .seh_pushreg 3 23 mov %rsp, %rbx 24 .seh_setframe 3, 0 25 .seh_endprologue 26 .seh_handler __C_specific_handler, @except 27 .seh_handlerdata 28 .long 0 29 .text 30 .seh_startchained 31 .seh_endprologue 32 .seh_endchained 33 # CHECK: .seh_setframe 3, 0 34 # CHECK: .seh_endprologue 35 # CHECK: .seh_handler __C_specific_handler, @except 36 # CHECK-NOT: .section{{.*}}.xdata 37 # CHECK: .seh_handlerdata 38 # CHECK: .text 39 # CHECK: .seh_startchained 40 # CHECK: .seh_endprologue 41 # CHECK: .seh_endchained 42 lea (%rbx), %rsp 43 pop %rbx 44 addq $24, %rsp 45 ret 46 .seh_endproc 47 # CHECK: .seh_endproc 48