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