227 lines
6.3 KiB
ArmAsm
227 lines
6.3 KiB
ArmAsm
@ RUN: llvm-mc -triple armv6t2-linux-eabi -filetype asm -o - %s 2>&1 \
|
|
@ RUN: | FileCheck %s
|
|
@ RUN: not llvm-mc -triple armv6t2-linux-eabi --fatal-warnings -filetype asm -o - %s 2>&1 \
|
|
@ RUN: | FileCheck -check-prefix CHECK-ERROR %s
|
|
|
|
@ RUN: not llvm-mc -triple armv7-linux-eabi -filetype asm -o - %s 2>&1 \
|
|
@ RUN: | FileCheck %s -check-prefix CHECK -check-prefix CHECK-V7
|
|
|
|
.syntax unified
|
|
.arm
|
|
|
|
.global stm
|
|
.type stm,%function
|
|
stm:
|
|
stm sp!, {r0, pc}
|
|
@ CHECK: warning: use of SP or PC in the list is deprecated
|
|
@ CHECK-ERROR: error: use of SP or PC in the list is deprecated
|
|
@ CHECK: stm sp!, {r0, pc}
|
|
@ CHECK: ^
|
|
stm r0!, {r0, sp}
|
|
@ CHECK: warning: use of SP or PC in the list is deprecated
|
|
@ CHECK-ERROR: error: use of SP or PC in the list is deprecated
|
|
@ CHECK: stm r0!, {r0, sp}
|
|
@ CHECK: ^
|
|
stm r1!, {r0, sp, pc}
|
|
@ CHECK: warning: use of SP or PC in the list is deprecated
|
|
@ CHECK: stm r1!, {r0, sp, pc}
|
|
@ CHECK: ^
|
|
stm r2!, {sp, pc}
|
|
@ CHECK: warning: use of SP or PC in the list is deprecated
|
|
@ CHECK: stm r2!, {sp, pc}
|
|
@ CHECK: ^
|
|
stm sp!, {pc}
|
|
@ CHECK: warning: use of SP or PC in the list is deprecated
|
|
@ CHECK: stm sp!, {pc}
|
|
@ CHECK: ^
|
|
stm r0!, {sp}
|
|
@ CHECK: warning: use of SP or PC in the list is deprecated
|
|
@ CHECK: stm r0!, {sp}
|
|
@ CHECK: ^
|
|
|
|
.global stmda
|
|
.type stmda,%function
|
|
stmda:
|
|
stmda sp!, {r0, pc}
|
|
@ CHECK: warning: use of SP or PC in the list is deprecated
|
|
@ CHECK: stmda sp!, {r0, pc}
|
|
@ CHECK: ^
|
|
stmda r0!, {r0, sp}
|
|
@ CHECK: warning: use of SP or PC in the list is deprecated
|
|
@ CHECK: stmda r0!, {r0, sp}
|
|
@ CHECK: ^
|
|
stmda r1!, {r0, sp, pc}
|
|
@ CHECK: warning: use of SP or PC in the list is deprecated
|
|
@ CHECK: stmda r1!, {r0, sp, pc}
|
|
@ CHECK: ^
|
|
stmda r2!, {sp, pc}
|
|
@ CHECK: warning: use of SP or PC in the list is deprecated
|
|
@ CHECK: stmda r2!, {sp, pc}
|
|
@ CHECK: ^
|
|
stmda sp!, {pc}
|
|
@ CHECK: warning: use of SP or PC in the list is deprecated
|
|
@ CHECK: stmda sp!, {pc}
|
|
@ CHECK: ^
|
|
stmda r0!, {sp}
|
|
@ CHECK: warning: use of SP or PC in the list is deprecated
|
|
@ CHECK: stmda r0!, {sp}
|
|
@ CHECK: ^
|
|
|
|
.global stmdb
|
|
.type stmdb,%function
|
|
stmdb:
|
|
stmdb sp!, {r0, pc}
|
|
@ CHECK: warning: use of SP or PC in the list is deprecated
|
|
@ CHECK: stmdb sp!, {r0, pc}
|
|
@ CHECK: ^
|
|
stmdb r0!, {r0, sp}
|
|
@ CHECK: warning: use of SP or PC in the list is deprecated
|
|
@ CHECK: stmdb r0!, {r0, sp}
|
|
@ CHECK: ^
|
|
stmdb r1!, {r0, sp, pc}
|
|
@ CHECK: warning: use of SP or PC in the list is deprecated
|
|
@ CHECK: stmdb r1!, {r0, sp, pc}
|
|
@ CHECK: ^
|
|
stmdb r2!, {sp, pc}
|
|
@ CHECK: warning: use of SP or PC in the list is deprecated
|
|
@ CHECK: stmdb r2!, {sp, pc}
|
|
@ CHECK: ^
|
|
stmdb sp!, {pc}
|
|
@ CHECK: warning: use of SP or PC in the list is deprecated
|
|
@ CHECK: stmdb sp!, {pc}
|
|
@ CHECK: ^
|
|
stmdb r0!, {sp}
|
|
@ CHECK: warning: use of SP or PC in the list is deprecated
|
|
@ CHECK: stmdb r0!, {sp}
|
|
@ CHECK: ^
|
|
|
|
.global stmib
|
|
.type stmib,%function
|
|
stmib:
|
|
stmib sp!, {r0, pc}
|
|
@ CHECK: warning: use of SP or PC in the list is deprecated
|
|
@ CHECK: stmib sp!, {r0, pc}
|
|
@ CHECK: ^
|
|
stmib r0!, {r0, sp}
|
|
@ CHECK: warning: use of SP or PC in the list is deprecated
|
|
@ CHECK: stmib r0!, {r0, sp}
|
|
@ CHECK: ^
|
|
stmib r1!, {r0, sp, pc}
|
|
@ CHECK: warning: use of SP or PC in the list is deprecated
|
|
@ CHECK: stmib r1!, {r0, sp, pc}
|
|
@ CHECK: ^
|
|
stmib r2!, {sp, pc}
|
|
@ CHECK: warning: use of SP or PC in the list is deprecated
|
|
@ CHECK: stmib r2!, {sp, pc}
|
|
@ CHECK: ^
|
|
stmib sp!, {pc}
|
|
@ CHECK: warning: use of SP or PC in the list is deprecated
|
|
@ CHECK: stmib sp!, {pc}
|
|
@ CHECK: ^
|
|
stmib r0!, {sp}
|
|
@ CHECK: warning: use of SP or PC in the list is deprecated
|
|
@ CHECK: stmib r0!, {sp}
|
|
@ CHECK: ^
|
|
|
|
|
|
.global push
|
|
.type push,%function
|
|
push:
|
|
push {r0, pc}
|
|
@ CHECK: warning: use of SP or PC in the list is deprecated
|
|
@ CHECK: push {r0, pc}
|
|
@ CHECK: ^
|
|
push {r0, sp}
|
|
@ CHECK: warning: use of SP or PC in the list is deprecated
|
|
@ CHECK: push {r0, sp}
|
|
@ CHECK: ^
|
|
push {r0, sp, pc}
|
|
@ CHECK: warning: use of SP or PC in the list is deprecated
|
|
@ CHECK: push {r0, sp, pc}
|
|
@ CHECK: ^
|
|
push {sp, pc}
|
|
@ CHECK: warning: use of SP or PC in the list is deprecated
|
|
@ CHECK: push {sp, pc}
|
|
@ CHECK: ^
|
|
push {pc}
|
|
@ CHECK: warning: use of SP or PC in the list is deprecated
|
|
@ CHECK: push {pc}
|
|
@ CHECK: ^
|
|
push {sp}
|
|
@ CHECK: warning: use of SP or PC in the list is deprecated
|
|
@ CHECK: push {sp}
|
|
@ CHECK: ^
|
|
|
|
.global ldm
|
|
.type ldm,%function
|
|
ldm:
|
|
ldm r0!, {r1, sp}
|
|
@ CHECK: warning: use of SP in the list is deprecated
|
|
ldm r0!, {sp}
|
|
@ CHECK: warning: use of SP in the list is deprecated
|
|
ldm r0!, {r1, lr, pc}
|
|
@ CHECK: warning: use of LR and PC simultaneously in the list is deprecated
|
|
ldm r0!, {lr, pc}
|
|
@ CHECK: warning: use of LR and PC simultaneously in the list is deprecated
|
|
|
|
.global ldmda
|
|
.type ldmda,%function
|
|
ldmda:
|
|
ldmda r0!, {r1, sp}
|
|
@ CHECK: warning: use of SP in the list is deprecated
|
|
ldmda r0!, {sp}
|
|
@ CHECK: warning: use of SP in the list is deprecated
|
|
ldmda r0!, {r1, lr, pc}
|
|
@ CHECK: warning: use of LR and PC simultaneously in the list is deprecated
|
|
ldmda r0!, {lr, pc}
|
|
@ CHECK: warning: use of LR and PC simultaneously in the list is deprecated
|
|
|
|
.global ldmdb
|
|
.type ldmdb,%function
|
|
ldmdb:
|
|
ldmdb r0!, {r1, sp}
|
|
@ CHECK: warning: use of SP in the list is deprecated
|
|
ldmdb r0!, {sp}
|
|
@ CHECK: warning: use of SP in the list is deprecated
|
|
ldmdb r0!, {r1, lr, pc}
|
|
@ CHECK: warning: use of LR and PC simultaneously in the list is deprecated
|
|
ldmdb r0!, {lr, pc}
|
|
@ CHECK: warning: use of LR and PC simultaneously in the list is deprecated
|
|
|
|
.global ldmib
|
|
.type ldmib,%function
|
|
ldmib:
|
|
ldmib r0!, {r1, sp}
|
|
@ CHECK: warning: use of SP in the list is deprecated
|
|
ldmib r0!, {sp}
|
|
@ CHECK: warning: use of SP in the list is deprecated
|
|
ldmib r0!, {r1, lr, pc}
|
|
@ CHECK: warning: use of LR and PC simultaneously in the list is deprecated
|
|
ldmib r0!, {lr, pc}
|
|
@ CHECK: warning: use of LR and PC simultaneously in the list is deprecated
|
|
|
|
.global pop
|
|
.type pop,%function
|
|
pop:
|
|
pop {r0, sp}
|
|
@ CHECK: warning: use of SP in the list is deprecated
|
|
@ CHECK-V7: error: writeback register not allowed in register list
|
|
pop {sp}
|
|
@ CHECK: warning: use of SP in the list is deprecated
|
|
@ CHECK-V7: error: writeback register not allowed in register list
|
|
pop {r0, lr, pc}
|
|
@ CHECK: warning: use of LR and PC simultaneously in the list is deprecated
|
|
pop {lr, pc}
|
|
@ CHECK: warning: use of LR and PC simultaneously in the list is deprecated
|
|
|
|
.global valid
|
|
.type valid,%function
|
|
valid:
|
|
stmdaeq r0, {r0}
|
|
@ CHECK: stmdaeq r0, {r0}
|
|
ldmdaeq r0, {r0}
|
|
@ CHECK: ldmdaeq r0, {r0}
|
|
pop {r0, pc}
|
|
@ CHECK: pop {r0, pc}
|
|
|