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