blob: 11add2242656954b8df10b64b9bbe5fe858f7894 [file] [log] [blame]
Tim Northoverf8e47e42015-10-28 22:56:36 +00001; RUN: llc -mtriple=thumbv7k-apple-watchos7.0 -o - %s | FileCheck %s
2
3; Since d11 doesn't get pushed with the aligned registers, its frameindex
4; shouldn't be modified to say it has been.
5
6define void @foo() {
7; CHECK-LABEL: foo:
8; CHECK: push {r7, lr}
9; CHECK: .cfi_offset r7, -8
10; CHECK: vpush {d11}
11; CHECK: vpush {d8, d9}
12; CHECK: .cfi_offset d11, -16
13; CHECK: .cfi_offset d9, -24
14; CHECK: .cfi_offset d8, -32
15 call void asm sideeffect "", "~{d8},~{d9},~{d11}"()
16 call void @bar()
17 ret void
18}
19
20define void @variadic_foo(i8, ...) {
21; CHECK-LABEL: variadic_foo:
22; CHECK: sub sp, #12
23; CHECK: push {r7, lr}
24; CHECK: .cfi_offset r7, -20
25; CHECK: sub sp, #4
26; CHECK: vpush {d11}
27; CHECK: vpush {d8, d9}
28; CHECK: .cfi_offset d11, -32
29; CHECK: .cfi_offset d9, -40
30; CHECK: .cfi_offset d8, -48
31 call void asm sideeffect "", "~{d8},~{d9},~{d11}"()
32 call void @llvm.va_start(i8* null)
33 call void @bar()
34 ret void
35}
36
37define void @test_maintain_stack_align() {
38; CHECK-LABEL: test_maintain_stack_align:
39; CHECK: push {r7, lr}
40; CHECK: vpush {d8, d9}
41; CHECK: sub sp, #8
42 call void asm sideeffect "", "~{d8},~{d9}"()
43 call void @bar()
44 ret void
45}
46
47declare void @bar()
48declare void @llvm.va_start(i8*) nounwind