1 @ RUN: not llvm-mc -triple armv7-eabi -filetype asm -o /dev/null 2>&1 %s \ 2 @ RUN: | FileCheck %s 3 4 .syntax unified 5 .thumb 6 7 .global false_start 8 .type false_start,%function 9 .thumb_func 10 false_start: 11 .movsp r7 12 13 @ CHECK: error: .fnstart must precede .movsp directive 14 @ CHECK: .movsp r7 15 @ CHECK: ^ 16 17 .global beyond_saving 18 .type beyond_saving,%function 19 .thumb_func 20 beyond_saving: 21 .fnstart 22 .setfp r11, sp, #8 23 add r11, sp, #8 24 .movsp r7 25 mov r7, r11 26 .fnend 27 28 @ CHECK: error: unexpected .movsp directive 29 @ CHECK: .movsp r7 30 @ CHECK: ^ 31 32 33 .global sp_invalid 34 .type sp_invalid,%function 35 .thumb_func 36 sp_invalid: 37 .fnstart 38 .movsp r13 39 mov sp, sp 40 .fnend 41 42 @ CHECK: error: sp and pc are not permitted in .movsp directive 43 @ CHECK: .movsp r13 44 @ CHECK: ^ 45 46 47 .global pc_invalid 48 .type pc_invalid,%function 49 .thumb_func 50 pc_invalid: 51 .fnstart 52 .movsp r15 53 mov sp, pc 54 .fnend 55 56 @ CHECK: error: sp and pc are not permitted in .movsp directive 57 @ CHECK: .movsp r15 58 @ CHECK: ^ 59 60 61 .global constant_required 62 .type constant_required,%function 63 .thumb_func 64 constant_required: 65 .fnstart 66 .movsp r11, 67 mov sp, r11 68 .fnend 69 70 @ CHECK: error: expected #constant 71 @ CHECK: .movsp r11, 72 @ CHECK: ^ 73 74 75 .global constant_constant 76 .type constant_constant,%function 77 .thumb_func 78 constant_constant: 79 .fnstart 80 .movsp r11, #constant 81 mov sp, r11 82 .fnend 83 84 @ CHECK: error: offset must be an immediate constant 85 @ CHECK: .movsp r11, #constant 86 @ CHECK: ^ 87 88 89 .arm 90 91 .global register_required 92 .type register_required,%function 93 register_required: 94 .fnstart 95 .movsp #42 96 mov sp, #42 97 .fnend 98 99 @ CHECK: error: register expected 100 @ CHECK: .movsp #42 101 @ CHECK: ^ 102 103