140de0e013a456971697491b428fb903570e8766eCharles Davis# RUN: llvm-mc -triple x86_64-pc-win32 %s | FileCheck %s
240de0e013a456971697491b428fb903570e8766eCharles Davis
340de0e013a456971697491b428fb903570e8766eCharles Davis# CHECK: .seh_proc func
447268164f3d660f6357cc3a59d510efe3bc9152fCharles Davis# CHECK: .seh_pushframe @code
5309213279e5d95826d97b2ab2178db5ddea0ed80Charles Davis# CHECK: .seh_stackalloc 24
6575630ccb8a267405146a0c14fba7a5b74e1e4c3Charles Davis# CHECK: .seh_savereg 6, 16
7575630ccb8a267405146a0c14fba7a5b74e1e4c3Charles Davis# CHECK: .seh_savexmm 8, 0
8410ef2b263e92d3de1b2acff7437059400daed7dCharles Davis# CHECK: .seh_pushreg 3
9410ef2b263e92d3de1b2acff7437059400daed7dCharles Davis# CHECK: .seh_setframe 3, 0
1040de0e013a456971697491b428fb903570e8766eCharles Davis# CHECK: .seh_endprologue
11309213279e5d95826d97b2ab2178db5ddea0ed80Charles Davis# CHECK: .seh_handler __C_specific_handler, @except
12410ef2b263e92d3de1b2acff7437059400daed7dCharles Davis# CHECK-NOT: .section{{.*}}.xdata
13410ef2b263e92d3de1b2acff7437059400daed7dCharles Davis# CHECK: .seh_handlerdata
14410ef2b263e92d3de1b2acff7437059400daed7dCharles Davis# CHECK: .text
153ac7b034d65bb1b78795931287f634d4efd7e151Charles Davis# CHECK: .seh_startchained
163ac7b034d65bb1b78795931287f634d4efd7e151Charles Davis# CHECK: .seh_endprologue
173ac7b034d65bb1b78795931287f634d4efd7e151Charles Davis# CHECK: .seh_endchained
1840de0e013a456971697491b428fb903570e8766eCharles Davis# CHECK: .seh_endproc
1940de0e013a456971697491b428fb903570e8766eCharles Davis
2040de0e013a456971697491b428fb903570e8766eCharles Davis    .text
2140de0e013a456971697491b428fb903570e8766eCharles Davis    .globl func
2240de0e013a456971697491b428fb903570e8766eCharles Davis    .def func; .scl 2; .type 32; .endef
2340de0e013a456971697491b428fb903570e8766eCharles Davis    .seh_proc func
2440de0e013a456971697491b428fb903570e8766eCharles Davisfunc:
2547268164f3d660f6357cc3a59d510efe3bc9152fCharles Davis    .seh_pushframe @code
26309213279e5d95826d97b2ab2178db5ddea0ed80Charles Davis    subq $24, %rsp
27309213279e5d95826d97b2ab2178db5ddea0ed80Charles Davis    .seh_stackalloc 24
28575630ccb8a267405146a0c14fba7a5b74e1e4c3Charles Davis    movq %rsi, 16(%rsp)
29575630ccb8a267405146a0c14fba7a5b74e1e4c3Charles Davis    .seh_savereg %rsi, 16
30575630ccb8a267405146a0c14fba7a5b74e1e4c3Charles Davis    movups %xmm8, (%rsp)
31575630ccb8a267405146a0c14fba7a5b74e1e4c3Charles Davis    .seh_savexmm %xmm8, 0
32410ef2b263e92d3de1b2acff7437059400daed7dCharles Davis    pushq %rbx
33410ef2b263e92d3de1b2acff7437059400daed7dCharles Davis    .seh_pushreg 3
34410ef2b263e92d3de1b2acff7437059400daed7dCharles Davis    mov %rsp, %rbx
35410ef2b263e92d3de1b2acff7437059400daed7dCharles Davis    .seh_setframe 3, 0
3640de0e013a456971697491b428fb903570e8766eCharles Davis    .seh_endprologue
37309213279e5d95826d97b2ab2178db5ddea0ed80Charles Davis    .seh_handler __C_specific_handler, @except
38410ef2b263e92d3de1b2acff7437059400daed7dCharles Davis    .seh_handlerdata
39410ef2b263e92d3de1b2acff7437059400daed7dCharles Davis    .long 0
40410ef2b263e92d3de1b2acff7437059400daed7dCharles Davis    .text
41ca93138e11f404a19553049a569f1fa6ad491b67Charles Davis    .seh_startchained
42ca93138e11f404a19553049a569f1fa6ad491b67Charles Davis    .seh_endprologue
43ca93138e11f404a19553049a569f1fa6ad491b67Charles Davis    .seh_endchained
44410ef2b263e92d3de1b2acff7437059400daed7dCharles Davis    lea (%rbx), %rsp
45410ef2b263e92d3de1b2acff7437059400daed7dCharles Davis    pop %rbx
46309213279e5d95826d97b2ab2178db5ddea0ed80Charles Davis    addq $24, %rsp
4740de0e013a456971697491b428fb903570e8766eCharles Davis    ret
4840de0e013a456971697491b428fb903570e8766eCharles Davis    .seh_endproc
49