• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; 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
49