brintos

brintos / llvm-project-archived public Read only

0
0
Text · 7.2 KiB · 98faf1b Raw
240 lines · plain
1// REQUIRES: arm-registered-target2// RUN: llvm-mc -filetype=obj -triple thumbv7-windows-gnu %s -o %t.o3// RUN: llvm-readobj --unwind %t.o | FileCheck --strict-whitespace %s4 5// CHECK:       RuntimeFunction {6// CHECK-NEXT:    Function: func07// CHECK:           Prologue [8// CHECK-NEXT:        0xcb                ; mov r11, sp9// CHECK-NEXT:        0x95 0x00           ; push.w {r8, r10, r12}10// CHECK-NEXT:        0xf6 0x13           ; vpush {d17-d19}11// CHECK-NEXT:        0xfc                ; nop.w12// CHECK-NEXT:        0xf5 0x35           ; vpush {d3-d5}13// CHECK-NEXT:        0xfb                ; nop14// CHECK-NEXT:        0xe2                ; vpush {d8-d10}15// CHECK-NEXT:        0x08                ; sub sp, #(8 * 4)16// CHECK-NEXT:        0xd6                ; push {r4-r6, lr}17// CHECK-NEXT:      ]18// CHECK-NEXT:      EpilogueScopes [19// CHECK-NEXT:        EpilogueScope {20// CHECK-NEXT:          StartOffset: 1521// CHECK-NEXT:          Condition: 1422// CHECK-NEXT:          EpilogueStartIndex: 1323// CHECK-NEXT:          Opcodes [24// CHECK-NEXT:            0xe2                ; vpop {d8-d10}25// CHECK-NEXT:            0xcb                ; mov sp, r1126// CHECK-NEXT:            0x08                ; add sp, #(8 * 4)27// CHECK-NEXT:            0xd6                ; pop {r4-r6, pc}28// CHECK-NEXT:          ]29// CHECK-NEXT:        }30// CHECK-NEXT:      ]31// CHECK:       RuntimeFunction {32// CHECK-NEXT:    Function: func133// CHECK:           Prologue [34// CHECK-NEXT:        0xef 0x08           ; str.w lr, [sp, #-32]!35// CHECK-NEXT:        0xd1                ; push {r4-r5}36// CHECK-NEXT:        0xfd                ; bx <reg>37// CHECK-NEXT:      ]38// CHECK-NEXT:      EpilogueScopes [39// CHECK-NEXT:        EpilogueScope {40// CHECK-NEXT:          StartOffset: 441// CHECK-NEXT:          Condition: 1442// CHECK-NEXT:          EpilogueStartIndex: 443// CHECK-NEXT:          Opcodes [44// CHECK-NEXT:            0xef 0x08           ; ldr.w lr, [sp], #3245// CHECK-NEXT:            0xd1                ; pop {r4-r5}46// CHECK-NEXT:            0xfd                ; bx <reg>47// CHECK-NEXT:          ]48// CHECK-NEXT:        }49// CHECK-NEXT:      ]50// CHECK:       RuntimeFunction {51// CHECK-NEXT:    Function: func252// CHECK-NEXT:    ExceptionRecord:53// CHECK-NEXT:    ExceptionData {54// CHECK-NEXT:      FunctionLength:55// CHECK-NEXT:      Version:56// CHECK-NEXT:      ExceptionData: No57// CHECK-NEXT:      EpiloguePacked: Yes58// CHECK-NEXT:      Fragment: No59// CHECK-NEXT:      EpilogueOffset: 060// CHECK-NEXT:      ByteCodeLength:61// CHECK-NEXT:      Prologue [62// CHECK-NEXT:        0x04                ; sub sp, #(4 * 4)63// CHECK-NEXT:        0xec 0x80           ; push {r7}64// CHECK-NEXT:        0xc7                ; mov r7, sp65// CHECK-NEXT:        0xfe                ; b.w <target>66// CHECK-NEXT:      ]67// CHECK-NEXT:    }68// CHECK-NEXT:  }69// CHECK-NEXT:  RuntimeFunction {70// CHECK-NEXT:    Function: func371// CHECK-NEXT:    ExceptionRecord:72// CHECK-NEXT:    ExceptionData {73// CHECK-NEXT:      FunctionLength:74// CHECK-NEXT:      Version:75// CHECK-NEXT:      ExceptionData: No76// CHECK-NEXT:      EpiloguePacked: Yes77// CHECK-NEXT:      Fragment: Yes78// CHECK-NEXT:      EpilogueOffset: 179// CHECK-NEXT:      ByteCodeLength:80// CHECK-NEXT:      Prologue [81// CHECK-NEXT:        0x04                ; sub sp, #(4 * 4)82// CHECK-NEXT:        0xdf                ; push.w {r4-r11, lr}83// CHECK-NEXT:      ]84// CHECK-NEXT:      Epilogue [85// CHECK-NEXT:        0xdf                ; pop.w {r4-r11, pc}86// CHECK-NEXT:      ]87// CHECK-NEXT:    }88// CHECK-NEXT:  }89// CHECK-NEXT:  RuntimeFunction {90// CHECK-NEXT:    Function: func491// CHECK-NEXT:    ExceptionRecord:92// CHECK-NEXT:    ExceptionData {93// CHECK-NEXT:      FunctionLength:94// CHECK-NEXT:      Version:95// CHECK-NEXT:      ExceptionData: No96// CHECK-NEXT:      EpiloguePacked: Yes97// CHECK-NEXT:      Fragment: No98// CHECK-NEXT:      EpilogueOffset: 099// CHECK-NEXT:      ByteCodeLength:100// CHECK-NEXT:      Prologue [101// CHECK-NEXT:        0xec 0x50           ; push {r4, r6}102// CHECK-NEXT:        0xb5 0x00           ; push.w {r8, r10, r12, lr}103// CHECK-NEXT:      ]104// CHECK-NEXT:    }105// CHECK-NEXT:  }106// CHECK-NEXT:  RuntimeFunction {107// CHECK-NEXT:    Function: func5108// CHECK-NEXT:    ExceptionRecord:109// CHECK-NEXT:    ExceptionData {110// CHECK-NEXT:      FunctionLength:111// CHECK-NEXT:      Version:112// CHECK-NEXT:      ExceptionData: No113// CHECK-NEXT:      EpiloguePacked: Yes114// CHECK-NEXT:      Fragment: No115// CHECK-NEXT:      EpilogueOffset: 16116// CHECK-NEXT:      ByteCodeLength:117// CHECK-NEXT:      Prologue [118// CHECK-NEXT:        0xfa 0x00 0x00 0x20 ; sub.w sp, sp, #(32 * 4)119// CHECK-NEXT:        0xf9 0x00 0x10      ; sub.w sp, sp, #(16 * 4)120// CHECK-NEXT:        0xf8 0x00 0x00 0x08 ; sub sp, sp, #(8 * 4)121// CHECK-NEXT:        0xf7 0x00 0x04      ; sub sp, sp, #(4 * 4)122// CHECK-NEXT:        0xe8 0x02           ; sub.w sp, #(2 * 4)123// CHECK-NEXT:        0xed 0x50           ; push {r4, r6, lr}124// CHECK-NEXT:      ]125// CHECK-NEXT:      Epilogue [126// CHECK-NEXT:        0xed 0x50           ; pop {r4, r6, pc}127// CHECK-NEXT:      ]128// CHECK-NEXT:    }129// CHECK-NEXT:  }130 131        .thumb132        .syntax unified133func0:134        push {r4-r6, lr}135        sub sp, sp, #32136        vpush {d8-d10}137        nop138        vpush {d3-d5}139        nop.w140        vpush {d17-d19}141        push {r8, r10, r12}142        mov r11, sp143        nop144        vpop {d8-d10}145        mov sp, r11146        add sp, sp, #32147        pop {r4-r6, pc}148 149func1:150        push {r4-r5}151        str lr, [sp, #-32]!152        nop153        ldr lr, [sp], #32154        pop {r4-r5}155        bx lr156 157func2:158        mov r7, sp159        push {r7}160        sub sp, sp, #16161        nop162        add sp, sp, #16163        pop {r7}164        mov sp, r7165        b tailcall166 167func3:168        nop.w169        nop170        nop171        add sp, sp, #16172        pop {r4-r11, pc}173 174func4:175        push {r8, r10, r12, lr}176        push {r4, r6}177        nop178        pop {r4, r6}179        pop {r8, r10, r12, pc}180 181func5:182        push {r4, r6, lr}183        subw sp, sp, #8184        sub sp, sp, #16185        sub sp, sp, #32186        subw sp, sp, #64187        subw sp, sp, #128188        nop189        pop {r4, r6, pc}190 191        .section .pdata,"dr"192        .rva func0193        .rva .Lunwind_func0194        .rva func1195        .rva .Lunwind_func1196        .rva func2197        .rva .Lunwind_func2198        .rva func3199        .rva .Lunwind_func3200        .rva func4201        .rva .Lunwind_func4202        .rva func5203        .rva .Lunwind_func5204 205        .section .xdata,"dr"206.Lunwind_func0:207.byte 0x14, 0x00, 0x80, 0x50208.byte 0x0f, 0x00, 0xe0, 0x0d209.byte 0xcb, 0x95, 0x00, 0xf6210.byte 0x13, 0xfc, 0xf5, 0x35211.byte 0xfb, 0xe2, 0x08, 0xd6212.byte 0xff, 0xe2, 0xcb, 0x08213.byte 0xd6, 0xff, 0x00, 0x00214 215.Lunwind_func1:216.byte 0x08, 0x00, 0x00, 0x00217.byte 0x01, 0x00, 0x02, 0x00218.byte 0x04, 0x00, 0xe0, 0x04219.byte 0xef, 0x08, 0xd1, 0xfd220.byte 0xef, 0x08, 0xd1, 0xfd221 222.Lunwind_func2:223.byte 0x09, 0x00, 0x20, 0x20224.byte 0x04, 0xec, 0x80, 0xc7225.byte 0xfe, 0x00, 0x00, 0x00226.Lunwind_func3:227.byte 0x07, 0x00, 0xe0, 0x10228.byte 0x04, 0xdf, 0xff, 0x00229.Lunwind_func4:230.byte 0x07, 0x00, 0x20, 0x20231.byte 0xec, 0x50, 0xb5, 0x00232.byte 0xff, 0x00, 0x00, 0x00233.Lunwind_func5:234.byte 0x0b, 0x00, 0x20, 0x58235.byte 0xfa, 0x00, 0x00, 0x20236.byte 0xf9, 0x00, 0x10, 0xf8237.byte 0x00, 0x00, 0x08, 0xf7238.byte 0x00, 0x04, 0xe8, 0x02239.byte 0xed, 0x50, 0xff, 0x00240