mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-22 07:32:48 +00:00
7a38b33dec
.movsp is an ARM unwinding directive that indicates to the unwinder that a register contains an offset from the current stack pointer. If the offset is unspecified, it defaults to zero. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200449 91177308-0d34-0410-b5e6-96231b3b80d8
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: ^
|
|
|