1*9880d681SAndroid Build Coastguard Worker@ RUN: llvm-mc -triple=thumbv7k-apple-watchos2.0.0 -filetype=obj -o %t < %s && llvm-objdump -unwind-info %t | FileCheck %s 2*9880d681SAndroid Build Coastguard Worker 3*9880d681SAndroid Build Coastguard Worker@ CHECK: Contents of __compact_unwind section: 4*9880d681SAndroid Build Coastguard Worker 5*9880d681SAndroid Build Coastguard Worker .syntax unified 6*9880d681SAndroid Build Coastguard Worker .align 2 7*9880d681SAndroid Build Coastguard Worker .code 16 8*9880d681SAndroid Build Coastguard Worker 9*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: start: {{.*}} _test_r4_r5_r6 10*9880d681SAndroid Build Coastguard Worker@ CHECK: compact encoding: 0x01000007 11*9880d681SAndroid Build Coastguard Worker .thumb_func _test_r4_r5_r6 12*9880d681SAndroid Build Coastguard Worker_test_r4_r5_r6: 13*9880d681SAndroid Build Coastguard Worker .cfi_startproc 14*9880d681SAndroid Build Coastguard Worker push {r4, r5, r6, r7, lr} 15*9880d681SAndroid Build Coastguard Worker add r7, sp, #12 16*9880d681SAndroid Build Coastguard Worker sub sp, #16 17*9880d681SAndroid Build Coastguard Worker .cfi_def_cfa r7, 8 18*9880d681SAndroid Build Coastguard Worker .cfi_offset lr, -4 19*9880d681SAndroid Build Coastguard Worker .cfi_offset r7, -8 20*9880d681SAndroid Build Coastguard Worker .cfi_offset r6, -12 21*9880d681SAndroid Build Coastguard Worker .cfi_offset r5, -16 22*9880d681SAndroid Build Coastguard Worker .cfi_offset r4, -20 23*9880d681SAndroid Build Coastguard Worker .cfi_endproc 24*9880d681SAndroid Build Coastguard Worker 25*9880d681SAndroid Build Coastguard Worker 26*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: start: {{.*}} _test_r4_r5_r10_r11 27*9880d681SAndroid Build Coastguard Worker@ CHECK: compact encoding: 0x01000063 28*9880d681SAndroid Build Coastguard Worker .thumb_func _test_r4_r5_r10_r11 29*9880d681SAndroid Build Coastguard Worker_test_r4_r5_r10_r11: 30*9880d681SAndroid Build Coastguard Worker .cfi_startproc 31*9880d681SAndroid Build Coastguard Worker push {r4, r5, r7, lr} 32*9880d681SAndroid Build Coastguard Worker add r7, sp, #8 33*9880d681SAndroid Build Coastguard Worker .cfi_def_cfa r7, 8 34*9880d681SAndroid Build Coastguard Worker .cfi_offset lr, -4 35*9880d681SAndroid Build Coastguard Worker .cfi_offset r7, -8 36*9880d681SAndroid Build Coastguard Worker .cfi_offset r5, -12 37*9880d681SAndroid Build Coastguard Worker .cfi_offset r4, -16 38*9880d681SAndroid Build Coastguard Worker push.w {r10, r11} 39*9880d681SAndroid Build Coastguard Worker .cfi_offset r11, -20 40*9880d681SAndroid Build Coastguard Worker .cfi_offset r10, -24 41*9880d681SAndroid Build Coastguard Worker .cfi_endproc 42*9880d681SAndroid Build Coastguard Worker 43*9880d681SAndroid Build Coastguard Worker 44*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: start: {{.*}} _test_d8 45*9880d681SAndroid Build Coastguard Worker@ CHECK: compact encoding: 0x02000000 46*9880d681SAndroid Build Coastguard Worker .thumb_func _test_d8 47*9880d681SAndroid Build Coastguard Worker_test_d8: 48*9880d681SAndroid Build Coastguard Worker .cfi_startproc 49*9880d681SAndroid Build Coastguard Worker push {r7, lr} 50*9880d681SAndroid Build Coastguard Worker mov r7, sp 51*9880d681SAndroid Build Coastguard Worker .cfi_def_cfa r7, 8 52*9880d681SAndroid Build Coastguard Worker .cfi_offset lr, -4 53*9880d681SAndroid Build Coastguard Worker .cfi_offset r7, -8 54*9880d681SAndroid Build Coastguard Worker vpush {d8} 55*9880d681SAndroid Build Coastguard Worker .cfi_offset d8, -16 56*9880d681SAndroid Build Coastguard Worker .cfi_endproc 57*9880d681SAndroid Build Coastguard Worker 58*9880d681SAndroid Build Coastguard Worker 59*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: start: {{.*}} _test_d8_d10_d12_d14 60*9880d681SAndroid Build Coastguard Worker@ CHECK: compact encoding: 0x02000300 61*9880d681SAndroid Build Coastguard Worker .thumb_func _test_d8_d10_d12_d14 62*9880d681SAndroid Build Coastguard Worker_test_d8_d10_d12_d14: 63*9880d681SAndroid Build Coastguard Worker .cfi_startproc 64*9880d681SAndroid Build Coastguard Worker push {r7, lr} 65*9880d681SAndroid Build Coastguard Worker mov r7, sp 66*9880d681SAndroid Build Coastguard Worker .cfi_def_cfa r7, 8 67*9880d681SAndroid Build Coastguard Worker .cfi_offset lr, -4 68*9880d681SAndroid Build Coastguard Worker .cfi_offset r7, -8 69*9880d681SAndroid Build Coastguard Worker vpush {d14} 70*9880d681SAndroid Build Coastguard Worker vpush {d12} 71*9880d681SAndroid Build Coastguard Worker vpush {d10} 72*9880d681SAndroid Build Coastguard Worker vpush {d8} 73*9880d681SAndroid Build Coastguard Worker .cfi_offset d14, -16 74*9880d681SAndroid Build Coastguard Worker .cfi_offset d12, -24 75*9880d681SAndroid Build Coastguard Worker .cfi_offset d10, -32 76*9880d681SAndroid Build Coastguard Worker .cfi_offset d8, -40 77*9880d681SAndroid Build Coastguard Worker .cfi_endproc 78*9880d681SAndroid Build Coastguard Worker 79*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: start: {{.*}} _test_varargs 80*9880d681SAndroid Build Coastguard Worker@ CHECK: compact encoding: 0x01c00001 81*9880d681SAndroid Build Coastguard Worker .thumb_func _test_varargs 82*9880d681SAndroid Build Coastguard Worker_test_varargs: 83*9880d681SAndroid Build Coastguard Worker .cfi_startproc 84*9880d681SAndroid Build Coastguard Worker sub sp, #12 85*9880d681SAndroid Build Coastguard Worker push {r4, r7, lr} 86*9880d681SAndroid Build Coastguard Worker add r7, sp, #4 87*9880d681SAndroid Build Coastguard Worker .cfi_def_cfa r7, 20 88*9880d681SAndroid Build Coastguard Worker .cfi_offset lr, -16 89*9880d681SAndroid Build Coastguard Worker .cfi_offset r7, -20 90*9880d681SAndroid Build Coastguard Worker .cfi_offset r4, -24 91*9880d681SAndroid Build Coastguard Worker add.w r9, r7, #8 92*9880d681SAndroid Build Coastguard Worker mov r4, r0 93*9880d681SAndroid Build Coastguard Worker stm.w r9, {r1, r2, r3} 94*9880d681SAndroid Build Coastguard Worker .cfi_endproc 95*9880d681SAndroid Build Coastguard Worker 96*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: start: {{.*}} _test_missing_lr 97*9880d681SAndroid Build Coastguard Worker@ CHECK: compact encoding: 0x04000000 98*9880d681SAndroid Build Coastguard Worker .thumb_func _test_missing_lr 99*9880d681SAndroid Build Coastguard Worker_test_missing_lr: 100*9880d681SAndroid Build Coastguard Worker .cfi_startproc 101*9880d681SAndroid Build Coastguard Worker push {r7} 102*9880d681SAndroid Build Coastguard Worker .cfi_def_cfa r7, 4 103*9880d681SAndroid Build Coastguard Worker .cfi_offset r7, -4 104*9880d681SAndroid Build Coastguard Worker pop {r7} 105*9880d681SAndroid Build Coastguard Worker bx lr 106*9880d681SAndroid Build Coastguard Worker .cfi_endproc 107*9880d681SAndroid Build Coastguard Worker 108*9880d681SAndroid Build Coastguard Worker@ CHECK-LABEL: start: {{.*}} _test_swapped_offsets 109*9880d681SAndroid Build Coastguard Worker@ CHECK: compact encoding: 0x04000000 110*9880d681SAndroid Build Coastguard Worker .thumb_func _test_swapped_offsets 111*9880d681SAndroid Build Coastguard Worker_test_swapped_offsets: 112*9880d681SAndroid Build Coastguard Worker .cfi_startproc 113*9880d681SAndroid Build Coastguard Worker push {r7, lr} 114*9880d681SAndroid Build Coastguard Worker push {r10} 115*9880d681SAndroid Build Coastguard Worker push {r4} 116*9880d681SAndroid Build Coastguard Worker .cfi_def_cfa r7, 8 117*9880d681SAndroid Build Coastguard Worker .cfi_offset lr, -4 118*9880d681SAndroid Build Coastguard Worker .cfi_offset r7, -8 119*9880d681SAndroid Build Coastguard Worker .cfi_offset r10, -12 120*9880d681SAndroid Build Coastguard Worker .cfi_offset r4, -16 121*9880d681SAndroid Build Coastguard Worker pop {r4} 122*9880d681SAndroid Build Coastguard Worker pop {r10} 123*9880d681SAndroid Build Coastguard Worker pop {r7, pc} 124*9880d681SAndroid Build Coastguard Worker .cfi_endproc 125