103 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
			
		
		
	
	
			103 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			ArmAsm
		
	
	
	
| @ RUN: not llvm-mc -triple armv7-eabi -filetype asm -o /dev/null 2>&1 %s \
 | |
| @ RUN:  | FileCheck %s
 | |
| 
 | |
| 	.syntax unified
 | |
| 	.thumb
 | |
| 
 | |
| 	.global false_start
 | |
| 	.type false_start,%function
 | |
| 	.thumb_func
 | |
| false_start:
 | |
| 	.movsp r7
 | |
| 
 | |
| @ CHECK: error: .fnstart must precede .movsp directive
 | |
| @ CHECK: 	.movsp r7
 | |
| @ CHECK:        ^
 | |
| 
 | |
| 	.global beyond_saving
 | |
| 	.type beyond_saving,%function
 | |
| 	.thumb_func
 | |
| beyond_saving:
 | |
| 	.fnstart
 | |
| 	.setfp r11, sp, #8
 | |
| 	add r11, sp, #8
 | |
| 	.movsp r7
 | |
| 	mov r7, r11
 | |
| 	.fnend
 | |
| 
 | |
| @ CHECK: error: unexpected .movsp directive
 | |
| @ CHECK: 	.movsp r7
 | |
| @ CHECK:        ^
 | |
| 
 | |
| 
 | |
| 	.global sp_invalid
 | |
| 	.type sp_invalid,%function
 | |
| 	.thumb_func
 | |
| sp_invalid:
 | |
| 	.fnstart
 | |
| 	.movsp r13
 | |
| 	mov sp, sp
 | |
| 	.fnend
 | |
| 
 | |
| @ CHECK: error: sp and pc are not permitted in .movsp directive
 | |
| @ CHECK: 	.movsp r13
 | |
| @ CHECK:               ^
 | |
| 
 | |
| 
 | |
| 	.global pc_invalid
 | |
| 	.type pc_invalid,%function
 | |
| 	.thumb_func
 | |
| pc_invalid:
 | |
| 	.fnstart
 | |
| 	.movsp r15
 | |
| 	mov sp, pc
 | |
| 	.fnend
 | |
| 
 | |
| @ CHECK: error: sp and pc are not permitted in .movsp directive
 | |
| @ CHECK: 	.movsp r15
 | |
| @ CHECK:               ^
 | |
| 
 | |
| 
 | |
| 	.global constant_required
 | |
| 	.type constant_required,%function
 | |
| 	.thumb_func
 | |
| constant_required:
 | |
| 	.fnstart
 | |
| 	.movsp r11,
 | |
| 	mov sp, r11
 | |
| 	.fnend
 | |
| 
 | |
| @ CHECK: error: expected #constant
 | |
| @ CHECK: 	.movsp r11,
 | |
| @ CHECK:                   ^
 | |
| 
 | |
| 
 | |
| 	.global constant_constant
 | |
| 	.type constant_constant,%function
 | |
| 	.thumb_func
 | |
| constant_constant:
 | |
| 	.fnstart
 | |
| 	.movsp r11, #constant
 | |
| 	mov sp, r11
 | |
| 	.fnend
 | |
| 
 | |
| @ CHECK: error: offset must be an immediate constant
 | |
| @ CHECK: 	.movsp r11, #constant
 | |
| @ CHECK:                     ^
 | |
| 
 | |
| 
 | |
| 	.arm
 | |
| 
 | |
| 	.global register_required
 | |
| 	.type register_required,%function
 | |
| register_required:
 | |
| 	.fnstart
 | |
| 	.movsp #42
 | |
| 	mov sp, #42
 | |
| 	.fnend
 | |
| 
 | |
| @ CHECK: error: register expected
 | |
| @ CHECK: 	.movsp #42
 | |
| @ CHECK:               ^
 | |
| 
 |