| ; RUN: llc -mtriple=thumbv7k-apple-watchos7.0 -o - %s | FileCheck %s | |
| ; Since d11 doesn't get pushed with the aligned registers, its frameindex | |
| ; shouldn't be modified to say it has been. | |
| define void @foo() { | |
| ; CHECK-LABEL: foo: | |
| ; CHECK: push {r7, lr} | |
| ; CHECK: .cfi_offset r7, -8 | |
| ; CHECK: vpush {d11} | |
| ; CHECK: vpush {d8, d9} | |
| ; CHECK: .cfi_offset d11, -16 | |
| ; CHECK: .cfi_offset d9, -24 | |
| ; CHECK: .cfi_offset d8, -32 | |
| call void asm sideeffect "", "~{d8},~{d9},~{d11}"() | |
| call void @bar() | |
| ret void | |
| } | |
| define void @variadic_foo(i8, ...) { | |
| ; CHECK-LABEL: variadic_foo: | |
| ; CHECK: sub sp, #12 | |
| ; CHECK: push {r7, lr} | |
| ; CHECK: .cfi_offset r7, -20 | |
| ; CHECK: sub sp, #4 | |
| ; CHECK: vpush {d11} | |
| ; CHECK: vpush {d8, d9} | |
| ; CHECK: .cfi_offset d11, -32 | |
| ; CHECK: .cfi_offset d9, -40 | |
| ; CHECK: .cfi_offset d8, -48 | |
| call void asm sideeffect "", "~{d8},~{d9},~{d11}"() | |
| call void @llvm.va_start(i8* null) | |
| call void @bar() | |
| ret void | |
| } | |
| define void @test_maintain_stack_align() { | |
| ; CHECK-LABEL: test_maintain_stack_align: | |
| ; CHECK: push {r7, lr} | |
| ; CHECK: vpush {d8, d9} | |
| ; CHECK: sub sp, #8 | |
| call void asm sideeffect "", "~{d8},~{d9}"() | |
| call void @bar() | |
| ret void | |
| } | |
| declare void @bar() | |
| declare void @llvm.va_start(i8*) nounwind |