97 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
| # 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
 |