|  | @ 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:               ^ | 
|  |  |