diff options
Diffstat (limited to 'test/MC/ARM/arm-load-store-multiple-deprecated.s')
-rw-r--r-- | test/MC/ARM/arm-load-store-multiple-deprecated.s | 222 |
1 files changed, 222 insertions, 0 deletions
diff --git a/test/MC/ARM/arm-load-store-multiple-deprecated.s b/test/MC/ARM/arm-load-store-multiple-deprecated.s new file mode 100644 index 0000000..9354822 --- /dev/null +++ b/test/MC/ARM/arm-load-store-multiple-deprecated.s @@ -0,0 +1,222 @@ +@ RUN: llvm-mc -triple armv6t2-linux-eabi -filetype asm -o - %s 2>&1 \ +@ RUN: | FileCheck %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: stm sp!, {r0, pc} +@ CHECK: ^ + stm r0!, {r0, sp} +@ CHECK: warning: 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} + |