diff options
Diffstat (limited to 'llvm/test/CodeGen/AArch64/aarch64-dynamic-stack-layout.ll')
-rw-r--r-- | llvm/test/CodeGen/AArch64/aarch64-dynamic-stack-layout.ll | 124 |
1 files changed, 62 insertions, 62 deletions
diff --git a/llvm/test/CodeGen/AArch64/aarch64-dynamic-stack-layout.ll b/llvm/test/CodeGen/AArch64/aarch64-dynamic-stack-layout.ll index 09eb5fe429d..d980bc09548 100644 --- a/llvm/test/CodeGen/AArch64/aarch64-dynamic-stack-layout.ll +++ b/llvm/test/CodeGen/AArch64/aarch64-dynamic-stack-layout.ll @@ -99,18 +99,18 @@ entry: ; CHECK: .cfi_startproc ; Check that used callee-saved registers are saved ; CHECK: sub sp, sp, #32 -; CHECK: stp x19, x30, [sp, #16] +; CHECK: stp x30, x19, [sp, #16] ; Check correctness of cfi pseudo-instructions ; CHECK: .cfi_def_cfa_offset 32 -; CHECK: .cfi_offset w30, -8 -; CHECK: .cfi_offset w19, -16 +; CHECK: .cfi_offset w19, -8 +; CHECK: .cfi_offset w30, -16 ; Check correct access to arguments passed on the stack, through stack pointer ; CHECK: ldr d[[DARG:[0-9]+]], [sp, #56] ; CHECK: ldr w[[IARG:[0-9]+]], [sp, #40] ; Check correct access to local variable on the stack, through stack pointer ; CHECK: ldr w[[ILOC:[0-9]+]], [sp, #12] ; Check epilogue: -; CHECK: ldp x19, x30, [sp, #16] +; CHECK: ldp x30, x19, [sp, #16] ; CHECK: ret ; CHECK: .cfi_endproc @@ -180,28 +180,28 @@ entry: ; CHECK-LABEL: novla_dynamicrealign_call ; CHECK: .cfi_startproc ; Check that used callee-saved registers are saved -; CHECK: str x19, [sp, #-32]! +; CHECK: stp x29, x30, [sp, #-32]! ; Check that the frame pointer is created: -; CHECK: stp x29, x30, [sp, #16] -; CHECK: add x29, sp, #16 +; CHECK: str x19, [sp, #16] +; CHECK: mov x29, sp ; Check the dynamic realignment of the stack pointer to a 128-byte boundary ; CHECK: sub x9, sp, #96 ; CHECK: and sp, x9, #0xffffffffffffff80 ; Check correctness of cfi pseudo-instructions -; CHECK: .cfi_def_cfa w29, 16 -; CHECK: .cfi_offset w30, -8 -; CHECK: .cfi_offset w29, -16 -; CHECK: .cfi_offset w19, -32 +; CHECK: .cfi_def_cfa w29, 32 +; CHECK: .cfi_offset w19, -16 +; CHECK: .cfi_offset w30, -24 +; CHECK: .cfi_offset w29, -32 ; Check correct access to arguments passed on the stack, through frame pointer -; CHECK: ldr d[[DARG:[0-9]+]], [x29, #40] -; CHECK: ldr w[[IARG:[0-9]+]], [x29, #24] +; CHECK: ldr d[[DARG:[0-9]+]], [x29, #56] +; CHECK: ldr w[[IARG:[0-9]+]], [x29, #40] ; Check correct access to local variable on the stack, through re-aligned stack pointer ; CHECK: ldr w[[ILOC:[0-9]+]], [sp] ; Check epilogue: ; Check that stack pointer get restored from frame pointer. -; CHECK: sub sp, x29, #16 // =16 -; CHECK: ldp x29, x30, [sp, #16] -; CHECK: ldr x19, [sp], #32 +; CHECK: mov sp, x29 +; CHECK: ldr x19, [sp, #16] +; CHECK: ldp x29, x30, [sp], #32 ; CHECK: ret ; CHECK: .cfi_endproc @@ -284,22 +284,22 @@ entry: ; CHECK-LABEL: vla_nodynamicrealign_call ; CHECK: .cfi_startproc ; Check that used callee-saved registers are saved -; CHECK: stp x20, x19, [sp, #-32]! +; CHECK: stp x29, x30, [sp, #-32]! ; Check that the frame pointer is created: -; CHECK: stp x29, x30, [sp, #16] -; CHECK: add x29, sp, #16 +; CHECK: stp x20, x19, [sp, #16] +; CHECK: mov x29, sp ; Check that space is reserved on the stack for the local variable, ; rounded up to a multiple of 16 to keep the stack pointer 16-byte aligned. ; CHECK: sub sp, sp, #16 ; Check correctness of cfi pseudo-instructions -; CHECK: .cfi_def_cfa w29, 16 -; CHECK: .cfi_offset w30, -8 -; CHECK: .cfi_offset w29, -16 -; CHECK: .cfi_offset w19, -24 -; CHECK: .cfi_offset w20, -32 +; CHECK: .cfi_def_cfa w29, 32 +; CHECK: .cfi_offset w19, -8 +; CHECK: .cfi_offset w20, -16 +; CHECK: .cfi_offset w30, -24 +; CHECK: .cfi_offset w29, -32 ; Check correct access to arguments passed on the stack, through frame pointer -; CHECK: ldr w[[IARG:[0-9]+]], [x29, #24] -; CHECK: ldr d[[DARG:[0-9]+]], [x29, #40] +; CHECK: ldr w[[IARG:[0-9]+]], [x29, #40] +; CHECK: ldr d[[DARG:[0-9]+]], [x29, #56] ; Check correct reservation of 16-byte aligned VLA (size in w0) on stack ; CHECK: mov w9, w0 ; CHECK: mov x10, sp @@ -309,14 +309,14 @@ entry: ; CHECK: sub x[[VLASPTMP:[0-9]+]], x10, x9 ; CHECK: mov sp, x[[VLASPTMP]] ; Check correct access to local variable, through frame pointer -; CHECK: ldur w[[ILOC:[0-9]+]], [x29, #-20] +; CHECK: ldur w[[ILOC:[0-9]+]], [x29, #-4] ; Check correct accessing of the VLA variable through the base pointer ; CHECK: ldr w[[VLA:[0-9]+]], [x[[VLASPTMP]]] ; Check epilogue: ; Check that stack pointer get restored from frame pointer. -; CHECK: sub sp, x29, #16 // =16 -; CHECK: ldp x29, x30, [sp, #16] -; CHECK: ldp x20, x19, [sp], #32 +; CHECK: mov sp, x29 +; CHECK: ldp x20, x19, [sp, #16] +; CHECK: ldp x29, x30, [sp], #32 ; CHECK: ret ; CHECK: .cfi_endproc @@ -385,11 +385,11 @@ entry: ; CHECK-LABEL: vla_dynamicrealign_call ; CHECK: .cfi_startproc ; Check that used callee-saved registers are saved -; CHECK: str x21, [sp, #-48]! -; CHECK: stp x20, x19, [sp, #16] +; CHECK: stp x29, x30, [sp, #-48]! +; CHECK: str x21, [sp, #16] +; CHECK: stp x20, x19, [sp, #32] ; Check that the frame pointer is created: -; CHECK: stp x29, x30, [sp, #32] -; CHECK: add x29, sp, #32 +; CHECK: mov x29, sp ; Check that the stack pointer gets re-aligned to 128 ; bytes & the base pointer (x19) gets initialized to ; this 128-byte aligned area for local variables & @@ -398,15 +398,15 @@ entry: ; CHECK: and sp, x9, #0xffffffffffffff80 ; CHECK: mov x19, sp ; Check correctness of cfi pseudo-instructions -; CHECK: .cfi_def_cfa w29, 16 -; CHECK: .cfi_offset w30, -8 -; CHECK: .cfi_offset w29, -16 -; CHECK: .cfi_offset w19, -24 -; CHECK: .cfi_offset w20, -32 -; CHECK: .cfi_offset w21, -48 +; CHECK: .cfi_def_cfa w29, 48 +; CHECK: .cfi_offset w19, -8 +; CHECK: .cfi_offset w20, -16 +; CHECK: .cfi_offset w21, -32 +; CHECK: .cfi_offset w30, -40 +; CHECK: .cfi_offset w29, -48 ; Check correct access to arguments passed on the stack, through frame pointer -; CHECK: ldr w[[IARG:[0-9]+]], [x29, #24] -; CHECK: ldr d[[DARG:[0-9]+]], [x29, #40] +; CHECK: ldr w[[IARG:[0-9]+]], [x29, #56] +; CHECK: ldr d[[DARG:[0-9]+]], [x29, #72] ; Check correct reservation of 16-byte aligned VLA (size in w0) on stack ; and set-up of base pointer (x19). ; CHECK: mov w9, w0 @@ -421,10 +421,10 @@ entry: ; CHECK: ldr w[[VLA:[0-9]+]], [x[[VLASPTMP]]] ; Check epilogue: ; Check that stack pointer get restored from frame pointer. -; CHECK: sub sp, x29, #32 -; CHECK: ldp x29, x30, [sp, #32] -; CHECK: ldp x20, x19, [sp, #16] -; CHECK: ldr x21, [sp], #48 +; CHECK: mov sp, x29 +; CHECK: ldp x20, x19, [sp, #32] +; CHECK: ldr x21, [sp, #16] +; CHECK: ldp x29, x30, [sp], #48 ; CHECK: ret ; CHECK: .cfi_endproc @@ -493,10 +493,10 @@ entry: ; CHECK-LABEL: vla_dynamicrealign_nocall ; Check that used callee-saved registers are saved -; CHECK: str x19, [sp, #-32]! +; CHECK: stp x29, x30, [sp, #-32]! +; CHECK: str x19, [sp, #16] ; Check that the frame pointer is created: -; CHECK: stp x29, x30, [sp, #16] -; CHECK: add x29, sp, #16 +; CHECK: mov x29, sp ; Check that the stack pointer gets re-aligned to 128 ; bytes & the base pointer (x19) gets initialized to ; this 128-byte aligned area for local variables & @@ -505,8 +505,8 @@ entry: ; CHECK: and sp, x9, #0xffffffffffffff80 ; CHECK: mov x19, sp ; Check correct access to arguments passed on the stack, through frame pointer -; CHECK: ldr w[[IARG:[0-9]+]], [x29, #24] -; CHECK: ldr d[[DARG:[0-9]+]], [x29, #40] +; CHECK: ldr w[[IARG:[0-9]+]], [x29, #40] +; CHECK: ldr d[[DARG:[0-9]+]], [x29, #56] ; Check correct reservation of 16-byte aligned VLA (size in w0) on stack ; and set-up of base pointer (x19). ; CHECK: mov w9, w0 @@ -521,9 +521,9 @@ entry: ; CHECK: ldr w[[VLA:[0-9]+]], [x[[VLASPTMP]]] ; Check epilogue: ; Check that stack pointer get restored from frame pointer. -; CHECK: sub sp, x29, #16 -; CHECK: ldp x29, x30, [sp, #16] -; CHECK: ldr x19, [sp], #32 +; CHECK: mov sp, x29 +; CHECK: ldr x19, [sp, #16] +; CHECK: ldp x29, x30, [sp], #32 ; CHECK: ret ; CHECK-MACHO-LABEL: _vla_dynamicrealign_nocall: @@ -579,10 +579,10 @@ entry: ; CHECK-LABEL: vla_dynamicrealign_nocall_large_align ; Check that used callee-saved registers are saved -; CHECK: stp x28, x19, [sp, #-32]! +; CHECK: stp x29, x30, [sp, #-32]! +; CHECK: str x19, [sp, #16] ; Check that the frame pointer is created: -; CHECK: stp x29, x30, [sp, #16] -; CHECK: add x29, sp, #16 +; CHECK: mov x29, sp ; Check that the stack pointer gets re-aligned to 128 ; bytes & the base pointer (x19) gets initialized to ; this 128-byte aligned area for local variables & @@ -591,8 +591,8 @@ entry: ; CHECK: and sp, x9, #0xffffffffffff8000 ; CHECK: mov x19, sp ; Check correct access to arguments passed on the stack, through frame pointer -; CHECK: ldr w[[IARG:[0-9]+]], [x29, #24] -; CHECK: ldr d[[DARG:[0-9]+]], [x29, #40] +; CHECK: ldr w[[IARG:[0-9]+]], [x29, #40] +; CHECK: ldr d[[DARG:[0-9]+]], [x29, #56] ; Check correct reservation of 16-byte aligned VLA (size in w0) on stack ; and set-up of base pointer (x19). ; CHECK: mov w9, w0 @@ -607,9 +607,9 @@ entry: ; CHECK: ldr w[[VLA:[0-9]+]], [x[[VLASPTMP]]] ; Check epilogue: ; Check that stack pointer get restored from frame pointer. -; CHECK: sub sp, x29, #16 -; CHECK: ldp x29, x30, [sp, #16] -; CHECK: ldp x28, x19, [sp], #32 +; CHECK: mov sp, x29 +; CHECK: ldr x19, [sp, #16] +; CHECK: ldp x29, x30, [sp], #32 ; CHECK: ret ; CHECK-MACHO-LABEL: _vla_dynamicrealign_nocall_large_align: |