Tim Northover | f8e47e4 | 2015-10-28 22:56:36 +0000 | [diff] [blame] | 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 | |
| 6 | define 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 | |
| 20 | define 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 | |
| 37 | define 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 | |
| 47 | declare void @bar() |
| 48 | declare void @llvm.va_start(i8*) nounwind |