| # RUN: not llvm-mc -triple x86_64-windows-msvc %s -filetype=obj -o /dev/null 2>&1 | FileCheck %s --implicit-check-not=error: |
| .text |
| |
| .seh_pushreg 6 |
| # CHECK: :[[@LINE-1]]:{{[0-9]+}}: error: .seh_ directive must appear within an active frame |
| |
| .seh_stackalloc 32 |
| # CHECK: :[[@LINE-1]]:{{[0-9]+}}: error: .seh_ directive must appear within an active frame |
| |
| .def f; |
| .scl 2; |
| .type 32; |
| .endef |
| .globl f # -- Begin function f |
| .p2align 4, 0x90 |
| f: # @f |
| .seh_proc f |
| pushq %rsi |
| .seh_pushreg 6 |
| pushq %rdi |
| .seh_pushreg 7 |
| pushq %rbx |
| .seh_pushreg 3 |
| subq $32, %rsp |
| .seh_stackalloc 0 |
| # CHECK: :[[@LINE-1]]:{{[0-9]+}}: error: stack allocation size must be non-zero |
| .seh_stackalloc 7 |
| # CHECK: :[[@LINE-1]]:{{[0-9]+}}: error: stack allocation size is not a multiple of 8 |
| .seh_stackalloc 32 |
| .seh_endprologue |
| nop |
| addq $32, %rsp |
| popq %rbx |
| popq %rdi |
| popq %rsi |
| retq |
| .seh_handlerdata |
| .text |
| .seh_endproc |
| |
| |
| .seh_pushreg 6 |
| # CHECK: :[[@LINE-1]]:{{[0-9]+}}: error: .seh_ directive must appear within an active frame |
| |
| g: |
| .seh_proc g |
| pushq %rbp |
| .seh_pushreg 3 |
| pushq %rsi |
| .seh_pushreg 6 |
| .seh_endprologue |
| .seh_setframe 3 255 |
| # CHECK: :[[@LINE-1]]:{{[0-9]+}}: error: you must specify a stack pointer offset |
| .seh_setframe 3, 255 |
| # CHECK: :[[@LINE-1]]:{{[0-9]+}}: error: offset is not a multiple of 16 |
| .seh_setframe 3, 256 |
| # CHECK: :[[@LINE-1]]:{{[0-9]+}}: error: frame offset must be less than or equal to 240 |
| .seh_setframe 3, 128 |
| .seh_setframe 3, 128 |
| # CHECK: :[[@LINE-1]]:{{[0-9]+}}: error: frame register and offset can be set at most once |
| nop |
| popq %rsi |
| popq %rbp |
| retq |
| .seh_endproc |
| |
| .globl h # -- Begin function h |
| .p2align 4, 0x90 |
| h: # @h |
| .seh_proc h |
| # %bb.0: # %entry |
| subq $72, %rsp |
| .seh_stackalloc 72 |
| movaps %xmm7, 48(%rsp) # 16-byte Spill |
| .seh_savexmm 7 44 |
| # CHECK: :[[@LINE-1]]:{{[0-9]+}}: error: you must specify an offset on the stack |
| .seh_savexmm 7, 44 |
| # CHECK: :[[@LINE-1]]:{{[0-9]+}}: error: offset is not a multiple of 16 |
| .seh_savexmm 7, 48 |
| movaps %xmm6, 32(%rsp) # 16-byte Spill |
| .seh_savexmm 6, 32 |
| .seh_endprologue |
| movapd %xmm0, %xmm6 |
| callq getdbl |
| movapd %xmm0, %xmm7 |
| addsd %xmm6, %xmm7 |
| callq getdbl |
| addsd %xmm7, %xmm0 |
| movaps 32(%rsp), %xmm6 # 16-byte Reload |
| movaps 48(%rsp), %xmm7 # 16-byte Reload |
| addq $72, %rsp |
| retq |
| .seh_handlerdata |
| .text |
| .seh_endproc |
| # -- End function |