1 # RUN: llvm-mc -triple x86_64-pc-win32 %s | FileCheck %s
3 # Round trip via intel syntax printing and back.
4 # RUN: llvm-mc -triple x86_64-pc-win32 %s -output-asm-variant=1 | \
5 # RUN: llvm-mc -triple x86_64-pc-win32 -x86-asm-syntax=intel | FileCheck %s
9 .def func; .scl 2; .type 32; .endef
11 # CHECK: .seh_proc func
14 # CHECK: .seh_pushframe @code
17 # CHECK: .seh_stackalloc 24
20 # CHECK: .seh_savereg %rsi, 16
22 # CHECK: .seh_savereg %rsi, 16
25 # CHECK: .seh_savexmm %xmm8, 0
27 # CHECK: .seh_savexmm %xmm8, 0
30 # CHECK: .seh_pushreg %rbx
32 # CHECK: .seh_pushreg %rbx
35 # CHECK: .seh_setframe %rbx, 0
37 # CHECK: .seh_endprologue
38 .seh_handler __C_specific_handler, @except
39 # CHECK: .seh_handler __C_specific_handler, @except
41 # CHECK-NOT: .section{{.*}}.xdata
42 # CHECK: .seh_handlerdata
49 # CHECK: .seh_startchained
50 # CHECK: .seh_endprologue
51 # CHECK: .seh_endchained
59 # Re-run more or less the same test, but with intel syntax. Previously LLVM
60 # required percent prefixing in the .seh_* directives that take registers.
62 .intel_syntax noprefix
65 .def func_intel; .scl 2; .type 32; .endef
67 # CHECK: .seh_proc func_intel
71 # CHECK: .seh_stackalloc 24
74 # CHECK: .seh_savereg %rsi, 16
76 # CHECK: .seh_savereg %rsi, 16
79 # CHECK: .seh_savexmm %xmm8, 0
81 # CHECK: .seh_savexmm %xmm8, 0
84 # CHECK: .seh_pushreg %rbx
86 # CHECK: .seh_pushreg %rbx
89 # CHECK: .seh_setframe %rbx, 0
91 # CHECK: .seh_endprologue
92 .seh_handler __C_specific_handler, @except
93 # CHECK: .seh_handler __C_specific_handler, @except
95 # CHECK-NOT: .section{{.*}}.xdata
96 # CHECK: .seh_handlerdata