736 lines
19 KiB
ArmAsm
736 lines
19 KiB
ArmAsm
// REQUIRES: arm-registered-target
|
|
// RUN: llvm-mc -filetype=obj -triple thumbv7-windows-gnu %s -o %t.o
|
|
// RUN: llvm-readobj --unwind %t.o | FileCheck --strict-whitespace %s
|
|
|
|
// CHECK: RuntimeFunction {
|
|
// CHECK-NEXT: Function: func6
|
|
// CHECK-NEXT: Fragment: No
|
|
// CHECK-NEXT: FunctionLength: 8
|
|
// CHECK-NEXT: ReturnType: bx <reg>
|
|
// CHECK-NEXT: HomedParameters: No
|
|
// CHECK-NEXT: Reg: 7
|
|
// CHECK-NEXT: R: 1
|
|
// CHECK-NEXT: LinkRegister: No
|
|
// CHECK-NEXT: Chaining: No
|
|
// CHECK-NEXT: StackAdjustment: 0
|
|
// CHECK-NEXT: Prologue [
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: Epilogue [
|
|
// CHECK-NEXT: bx <reg>
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: RuntimeFunction {
|
|
// CHECK-NEXT: Function: func7
|
|
// CHECK-NEXT: Fragment: No
|
|
// CHECK-NEXT: FunctionLength: 8
|
|
// CHECK-NEXT: ReturnType: bx <reg>
|
|
// CHECK-NEXT: HomedParameters: No
|
|
// CHECK-NEXT: Reg: 0
|
|
// CHECK-NEXT: R: 0
|
|
// CHECK-NEXT: LinkRegister: No
|
|
// CHECK-NEXT: Chaining: No
|
|
// CHECK-NEXT: StackAdjustment: 0
|
|
// CHECK-NEXT: Prologue [
|
|
// CHECK-NEXT: push {r4}
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: Epilogue [
|
|
// CHECK-NEXT: pop {r4}
|
|
// CHECK-NEXT: bx <reg>
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: RuntimeFunction {
|
|
// CHECK-NEXT: Function: func8
|
|
// CHECK-NEXT: Fragment: No
|
|
// CHECK-NEXT: FunctionLength: 10
|
|
// CHECK-NEXT: ReturnType: bx <reg>
|
|
// CHECK-NEXT: HomedParameters: No
|
|
// CHECK-NEXT: Reg: 0
|
|
// CHECK-NEXT: R: 0
|
|
// CHECK-NEXT: LinkRegister: Yes
|
|
// CHECK-NEXT: Chaining: No
|
|
// CHECK-NEXT: StackAdjustment: 0
|
|
// CHECK-NEXT: Prologue [
|
|
// CHECK-NEXT: push {r4, lr}
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: Epilogue [
|
|
// CHECK-NEXT: pop {r4, lr}
|
|
// CHECK-NEXT: bx <reg>
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: RuntimeFunction {
|
|
// CHECK-NEXT: Function: func9
|
|
// CHECK-NEXT: Fragment: No
|
|
// CHECK-NEXT: FunctionLength: 24
|
|
// CHECK-NEXT: ReturnType: b.w <target>
|
|
// CHECK-NEXT: HomedParameters: No
|
|
// CHECK-NEXT: Reg: 0
|
|
// CHECK-NEXT: R: 1
|
|
// CHECK-NEXT: LinkRegister: Yes
|
|
// CHECK-NEXT: Chaining: No
|
|
// CHECK-NEXT: StackAdjustment: 32
|
|
// CHECK-NEXT: Prologue [
|
|
// CHECK-NEXT: sub sp, sp, #32
|
|
// CHECK-NEXT: vpush {d8}
|
|
// CHECK-NEXT: push {lr}
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: Epilogue [
|
|
// CHECK-NEXT: add sp, sp, #32
|
|
// CHECK-NEXT: vpop {d8}
|
|
// CHECK-NEXT: pop {lr}
|
|
// CHECK-NEXT: b.w <target>
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: RuntimeFunction {
|
|
// CHECK-NEXT: Function: func10
|
|
// CHECK-NEXT: Fragment: No
|
|
// CHECK-NEXT: FunctionLength: 26
|
|
// CHECK-NEXT: ReturnType: bx <reg>
|
|
// CHECK-NEXT: HomedParameters: No
|
|
// CHECK-NEXT: Reg: 1
|
|
// CHECK-NEXT: R: 1
|
|
// CHECK-NEXT: LinkRegister: Yes
|
|
// CHECK-NEXT: Chaining: Yes
|
|
// CHECK-NEXT: StackAdjustment: 16
|
|
// CHECK-NEXT: Prologue [
|
|
// CHECK-NEXT: sub sp, sp, #16
|
|
// CHECK-NEXT: vpush {d8-d9}
|
|
// CHECK-NEXT: mov r11, sp
|
|
// CHECK-NEXT: push {r11, lr}
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: Epilogue [
|
|
// CHECK-NEXT: add sp, sp, #16
|
|
// CHECK-NEXT: vpop {d8-d9}
|
|
// CHECK-NEXT: pop {r11, lr}
|
|
// CHECK-NEXT: bx <reg>
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: RuntimeFunction {
|
|
// CHECK-NEXT: Function: func11
|
|
// CHECK-NEXT: Fragment: No
|
|
// CHECK-NEXT: FunctionLength: 24
|
|
// CHECK-NEXT: ReturnType: pop {pc}
|
|
// CHECK-NEXT: HomedParameters: No
|
|
// CHECK-NEXT: Reg: 1
|
|
// CHECK-NEXT: R: 1
|
|
// CHECK-NEXT: LinkRegister: Yes
|
|
// CHECK-NEXT: Chaining: Yes
|
|
// CHECK-NEXT: StackAdjustment: 16
|
|
// CHECK-NEXT: Prologue [
|
|
// CHECK-NEXT: sub sp, sp, #16
|
|
// CHECK-NEXT: vpush {d8-d9}
|
|
// CHECK-NEXT: mov r11, sp
|
|
// CHECK-NEXT: push {r11, lr}
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: Epilogue [
|
|
// CHECK-NEXT: add sp, sp, #16
|
|
// CHECK-NEXT: vpop {d8-d9}
|
|
// CHECK-NEXT: pop {r11, pc}
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: RuntimeFunction {
|
|
// CHECK-NEXT: Function: func12
|
|
// CHECK-NEXT: Fragment: No
|
|
// CHECK-NEXT: FunctionLength: 18
|
|
// CHECK-NEXT: ReturnType: b.w <target>
|
|
// CHECK-NEXT: HomedParameters: No
|
|
// CHECK-NEXT: Reg: 6
|
|
// CHECK-NEXT: R: 1
|
|
// CHECK-NEXT: LinkRegister: No
|
|
// CHECK-NEXT: Chaining: No
|
|
// CHECK-NEXT: StackAdjustment: 16
|
|
// CHECK-NEXT: Prologue [
|
|
// CHECK-NEXT: sub sp, sp, #16
|
|
// CHECK-NEXT: vpush {d8-d14}
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: Epilogue [
|
|
// CHECK-NEXT: add sp, sp, #16
|
|
// CHECK-NEXT: vpop {d8-d14}
|
|
// CHECK-NEXT: b.w <target>
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: RuntimeFunction {
|
|
// CHECK-NEXT: Function: func13
|
|
// CHECK-NEXT: Fragment: No
|
|
// CHECK-NEXT: FunctionLength: 18
|
|
// CHECK-NEXT: ReturnType: pop {pc}
|
|
// CHECK-NEXT: HomedParameters: No
|
|
// CHECK-NEXT: Reg: 6
|
|
// CHECK-NEXT: R: 0
|
|
// CHECK-NEXT: LinkRegister: Yes
|
|
// CHECK-NEXT: Chaining: Yes
|
|
// CHECK-NEXT: StackAdjustment: 20
|
|
// CHECK-NEXT: Prologue [
|
|
// CHECK-NEXT: sub sp, sp, #20
|
|
// CHECK-NEXT: add.w r11, sp, #28
|
|
// CHECK-NEXT: push {r4-r11, lr}
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: Epilogue [
|
|
// CHECK-NEXT: add sp, sp, #20
|
|
// CHECK-NEXT: pop {r4-r11, pc}
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: RuntimeFunction {
|
|
// CHECK-NEXT: Function: func14
|
|
// CHECK-NEXT: Fragment: No
|
|
// CHECK-NEXT: FunctionLength: 14
|
|
// CHECK-NEXT: ReturnType: pop {pc}
|
|
// CHECK-NEXT: HomedParameters: No
|
|
// CHECK-NEXT: Reg: 7
|
|
// CHECK-NEXT: R: 0
|
|
// CHECK-NEXT: LinkRegister: Yes
|
|
// CHECK-NEXT: Chaining: No
|
|
// CHECK-NEXT: StackAdjustment: 20
|
|
// CHECK-NEXT: Prologue [
|
|
// CHECK-NEXT: sub sp, sp, #20
|
|
// CHECK-NEXT: push {r4-r11, lr}
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: Epilogue [
|
|
// CHECK-NEXT: add sp, sp, #20
|
|
// CHECK-NEXT: pop {r4-r11, pc}
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: RuntimeFunction {
|
|
// CHECK-NEXT: Function: func15
|
|
// CHECK-NEXT: Fragment: No
|
|
// CHECK-NEXT: FunctionLength: 20
|
|
// CHECK-NEXT: ReturnType: pop {pc}
|
|
// CHECK-NEXT: HomedParameters: Yes
|
|
// CHECK-NEXT: Reg: 0
|
|
// CHECK-NEXT: R: 0
|
|
// CHECK-NEXT: LinkRegister: Yes
|
|
// CHECK-NEXT: Chaining: No
|
|
// CHECK-NEXT: StackAdjustment: 512
|
|
// CHECK-NEXT: Prologue [
|
|
// CHECK-NEXT: sub sp, sp, #512
|
|
// CHECK-NEXT: push {r4, lr}
|
|
// CHECK-NEXT: push {r0-r3}
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: Epilogue [
|
|
// CHECK-NEXT: add sp, sp, #512
|
|
// CHECK-NEXT: pop {r4}
|
|
// CHECK-NEXT: ldr pc, [sp], #20
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: RuntimeFunction {
|
|
// CHECK-NEXT: Function: func16
|
|
// CHECK-NEXT: Fragment: No
|
|
// CHECK-NEXT: FunctionLength: 20
|
|
// CHECK-NEXT: ReturnType: b.w <target>
|
|
// CHECK-NEXT: HomedParameters: Yes
|
|
// CHECK-NEXT: Reg: 7
|
|
// CHECK-NEXT: R: 1
|
|
// CHECK-NEXT: LinkRegister: Yes
|
|
// CHECK-NEXT: Chaining: Yes
|
|
// CHECK-NEXT: StackAdjustment: 0
|
|
// CHECK-NEXT: Prologue [
|
|
// CHECK-NEXT: mov r11, sp
|
|
// CHECK-NEXT: push {r11, lr}
|
|
// CHECK-NEXT: push {r0-r3}
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: Epilogue [
|
|
// CHECK-NEXT: pop {r11, lr}
|
|
// CHECK-NEXT: add sp, sp, #16
|
|
// CHECK-NEXT: b.w <target>
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: RuntimeFunction {
|
|
// CHECK-NEXT: Function: func17
|
|
// CHECK-NEXT: Fragment: No
|
|
// CHECK-NEXT: FunctionLength: 20
|
|
// CHECK-NEXT: ReturnType: bx <reg>
|
|
// CHECK-NEXT: HomedParameters: Yes
|
|
// CHECK-NEXT: Reg: 0
|
|
// CHECK-NEXT: R: 0
|
|
// CHECK-NEXT: LinkRegister: No
|
|
// CHECK-NEXT: Chaining: No
|
|
// CHECK-NEXT: StackAdjustment: 512
|
|
// CHECK-NEXT: Prologue [
|
|
// CHECK-NEXT: sub sp, sp, #512
|
|
// CHECK-NEXT: push {r4}
|
|
// CHECK-NEXT: push {r0-r3}
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: Epilogue [
|
|
// CHECK-NEXT: add sp, sp, #512
|
|
// CHECK-NEXT: pop {r4}
|
|
// CHECK-NEXT: add sp, sp, #16
|
|
// CHECK-NEXT: bx <reg>
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: RuntimeFunction {
|
|
// CHECK-NEXT: Function: func18
|
|
// CHECK-NEXT: Fragment: No
|
|
// CHECK-NEXT: FunctionLength: 6
|
|
// CHECK-NEXT: ReturnType: pop {pc}
|
|
// CHECK-NEXT: HomedParameters: No
|
|
// CHECK-NEXT: Reg: 7
|
|
// CHECK-NEXT: R: 1
|
|
// CHECK-NEXT: LinkRegister: Yes
|
|
// CHECK-NEXT: Chaining: No
|
|
// CHECK-NEXT: StackAdjustment: 4
|
|
// CHECK-NEXT: Prologue [
|
|
// CHECK-NEXT: push {r3, lr}
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: Epilogue [
|
|
// CHECK-NEXT: pop {r3, pc}
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: RuntimeFunction {
|
|
// CHECK-NEXT: Function: func19
|
|
// CHECK-NEXT: Fragment: No
|
|
// CHECK-NEXT: FunctionLength: 12
|
|
// CHECK-NEXT: ReturnType: bx <reg>
|
|
// CHECK-NEXT: HomedParameters: Yes
|
|
// CHECK-NEXT: Reg: 0
|
|
// CHECK-NEXT: R: 0
|
|
// CHECK-NEXT: LinkRegister: No
|
|
// CHECK-NEXT: Chaining: No
|
|
// CHECK-NEXT: StackAdjustment: 16
|
|
// CHECK-NEXT: Prologue [
|
|
// CHECK-NEXT: push {r0-r4}
|
|
// CHECK-NEXT: push {r0-r3}
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: Epilogue [
|
|
// CHECK-NEXT: pop {r0-r4}
|
|
// CHECK-NEXT: add sp, sp, #16
|
|
// CHECK-NEXT: bx <reg>
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: RuntimeFunction {
|
|
// CHECK-NEXT: Function: func20
|
|
// CHECK-NEXT: Fragment: No
|
|
// CHECK-NEXT: FunctionLength: 14
|
|
// CHECK-NEXT: ReturnType: bx <reg>
|
|
// CHECK-NEXT: HomedParameters: Yes
|
|
// CHECK-NEXT: Reg: 0
|
|
// CHECK-NEXT: R: 0
|
|
// CHECK-NEXT: LinkRegister: No
|
|
// CHECK-NEXT: Chaining: No
|
|
// CHECK-NEXT: StackAdjustment: 16
|
|
// CHECK-NEXT: Prologue [
|
|
// CHECK-NEXT: push {r0-r4}
|
|
// CHECK-NEXT: push {r0-r3}
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: Epilogue [
|
|
// CHECK-NEXT: add sp, sp, #16
|
|
// CHECK-NEXT: pop {r4}
|
|
// CHECK-NEXT: add sp, sp, #16
|
|
// CHECK-NEXT: bx <reg>
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: RuntimeFunction {
|
|
// CHECK-NEXT: Function: func21
|
|
// CHECK-NEXT: Fragment: No
|
|
// CHECK-NEXT: FunctionLength: 14
|
|
// CHECK-NEXT: ReturnType: bx <reg>
|
|
// CHECK-NEXT: HomedParameters: Yes
|
|
// CHECK-NEXT: Reg: 0
|
|
// CHECK-NEXT: R: 0
|
|
// CHECK-NEXT: LinkRegister: No
|
|
// CHECK-NEXT: Chaining: No
|
|
// CHECK-NEXT: StackAdjustment: 16
|
|
// CHECK-NEXT: Prologue [
|
|
// CHECK-NEXT: sub sp, sp, #16
|
|
// CHECK-NEXT: push {r4}
|
|
// CHECK-NEXT: push {r0-r3}
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: Epilogue [
|
|
// CHECK-NEXT: pop {r0-r4}
|
|
// CHECK-NEXT: add sp, sp, #16
|
|
// CHECK-NEXT: bx <reg>
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: RuntimeFunction {
|
|
// CHECK-NEXT: Function: func22
|
|
// CHECK-NEXT: Fragment: Yes
|
|
// CHECK-NEXT: FunctionLength: 14
|
|
// CHECK-NEXT: ReturnType: pop {pc}
|
|
// CHECK-NEXT: HomedParameters: Yes
|
|
// CHECK-NEXT: Reg: 0
|
|
// CHECK-NEXT: R: 0
|
|
// CHECK-NEXT: LinkRegister: Yes
|
|
// CHECK-NEXT: Chaining: No
|
|
// CHECK-NEXT: StackAdjustment: 512
|
|
// CHECK-NEXT: Prologue [
|
|
// CHECK-NEXT: sub sp, sp, #512
|
|
// CHECK-NEXT: push {r4, lr}
|
|
// CHECK-NEXT: push {r0-r3}
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: Epilogue [
|
|
// CHECK-NEXT: add sp, sp, #512
|
|
// CHECK-NEXT: pop {r4}
|
|
// CHECK-NEXT: ldr pc, [sp], #20
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: RuntimeFunction {
|
|
// CHECK-NEXT: Function: func23
|
|
// CHECK-NEXT: Fragment: No
|
|
// CHECK-NEXT: FunctionLength: 12
|
|
// CHECK-NEXT: ReturnType: (no epilogue)
|
|
// CHECK-NEXT: HomedParameters: Yes
|
|
// CHECK-NEXT: Reg: 0
|
|
// CHECK-NEXT: R: 0
|
|
// CHECK-NEXT: LinkRegister: Yes
|
|
// CHECK-NEXT: Chaining: No
|
|
// CHECK-NEXT: StackAdjustment: 512
|
|
// CHECK-NEXT: Prologue [
|
|
// CHECK-NEXT: sub sp, sp, #512
|
|
// CHECK-NEXT: push {r4, lr}
|
|
// CHECK-NEXT: push {r0-r3}
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: RuntimeFunction {
|
|
// CHECK-NEXT: Function: func24
|
|
// CHECK-NEXT: Fragment: No
|
|
// CHECK-NEXT: FunctionLength: 16
|
|
// CHECK-NEXT: ReturnType: pop {pc}
|
|
// CHECK-NEXT: HomedParameters: No
|
|
// CHECK-NEXT: Reg: 3
|
|
// CHECK-NEXT: R: 0
|
|
// CHECK-NEXT: LinkRegister: Yes
|
|
// CHECK-NEXT: Chaining: Yes
|
|
// CHECK-NEXT: StackAdjustment: 8
|
|
// CHECK-NEXT: Prologue [
|
|
// CHECK-NEXT: add.w r11, sp, #24
|
|
// CHECK-NEXT: push {r2-r7, r11, lr}
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: Epilogue [
|
|
// CHECK-NEXT: add sp, sp, #8
|
|
// CHECK-NEXT: pop {r4-r7, r11, pc}
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: RuntimeFunction {
|
|
// CHECK-NEXT: Function: func25
|
|
// CHECK-NEXT: Fragment: No
|
|
// CHECK-NEXT: FunctionLength: 16
|
|
// CHECK-NEXT: ReturnType: pop {pc}
|
|
// CHECK-NEXT: HomedParameters: No
|
|
// CHECK-NEXT: Reg: 3
|
|
// CHECK-NEXT: R: 0
|
|
// CHECK-NEXT: LinkRegister: Yes
|
|
// CHECK-NEXT: Chaining: Yes
|
|
// CHECK-NEXT: StackAdjustment: 8
|
|
// CHECK-NEXT: Prologue [
|
|
// CHECK-NEXT: sub sp, sp, #8
|
|
// CHECK-NEXT: add.w r11, sp, #16
|
|
// CHECK-NEXT: push {r4-r7, r11, lr}
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: Epilogue [
|
|
// CHECK-NEXT: pop {r2-r7, r11, pc}
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: RuntimeFunction {
|
|
// CHECK-NEXT: Function: func26
|
|
// CHECK-NEXT: Fragment: No
|
|
// CHECK-NEXT: FunctionLength: 8
|
|
// CHECK-NEXT: ReturnType: bx <reg>
|
|
// CHECK-NEXT: HomedParameters: No
|
|
// CHECK-NEXT: Reg: 7
|
|
// CHECK-NEXT: R: 1
|
|
// CHECK-NEXT: LinkRegister: No
|
|
// CHECK-NEXT: Chaining: No
|
|
// CHECK-NEXT: StackAdjustment: 12
|
|
// CHECK-NEXT: Prologue [
|
|
// CHECK-NEXT: push {r1-r3}
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: Epilogue [
|
|
// CHECK-NEXT: add sp, sp, #12
|
|
// CHECK-NEXT: bx <reg>
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: RuntimeFunction {
|
|
// CHECK-NEXT: Function: func27
|
|
// CHECK-NEXT: Fragment: No
|
|
// CHECK-NEXT: FunctionLength: 8
|
|
// CHECK-NEXT: ReturnType: bx <reg>
|
|
// CHECK-NEXT: HomedParameters: No
|
|
// CHECK-NEXT: Reg: 7
|
|
// CHECK-NEXT: R: 1
|
|
// CHECK-NEXT: LinkRegister: No
|
|
// CHECK-NEXT: Chaining: No
|
|
// CHECK-NEXT: StackAdjustment: 12
|
|
// CHECK-NEXT: Prologue [
|
|
// CHECK-NEXT: sub sp, sp, #12
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: Epilogue [
|
|
// CHECK-NEXT: pop {r1-r3}
|
|
// CHECK-NEXT: bx <reg>
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: RuntimeFunction {
|
|
// CHECK-NEXT: Function: func28
|
|
// CHECK-NEXT: Fragment: No
|
|
// CHECK-NEXT: FunctionLength: 8
|
|
// CHECK-NEXT: ReturnType: bx <reg>
|
|
// CHECK-NEXT: HomedParameters: No
|
|
// CHECK-NEXT: Reg: 0
|
|
// CHECK-NEXT: R: 1
|
|
// CHECK-NEXT: LinkRegister: No
|
|
// CHECK-NEXT: Chaining: No
|
|
// CHECK-NEXT: StackAdjustment: 4
|
|
// CHECK-NEXT: Prologue [
|
|
// CHECK-NEXT: vpush {d8}
|
|
// CHECK-NEXT: push {r3}
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: Epilogue [
|
|
// CHECK-NEXT: vpop {d8}
|
|
// CHECK-NEXT: pop {r3}
|
|
// CHECK-NEXT: bx <reg>
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: }
|
|
// CHECK-NEXT: RuntimeFunction {
|
|
// CHECK-NEXT: Function: func29
|
|
// CHECK-NEXT: Fragment: Yes
|
|
// CHECK-NEXT: FunctionLength: 6
|
|
// CHECK-NEXT: ReturnType: pop {pc}
|
|
// CHECK-NEXT: HomedParameters: No
|
|
// CHECK-NEXT: Reg: 2
|
|
// CHECK-NEXT: R: 0
|
|
// CHECK-NEXT: LinkRegister: Yes
|
|
// CHECK-NEXT: Chaining: No
|
|
// CHECK-NEXT: StackAdjustment: 16
|
|
// CHECK-NEXT: Prologue [
|
|
// CHECK-NEXT: sub sp, sp, #16
|
|
// CHECK-NEXT: push {r4-r6, lr}
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: Epilogue [
|
|
// CHECK-NEXT: add sp, sp, #16
|
|
// CHECK-NEXT: pop {r4-r6, pc}
|
|
// CHECK-NEXT: ]
|
|
// CHECK-NEXT: }
|
|
|
|
.thumb
|
|
.syntax unified
|
|
|
|
func6:
|
|
nop
|
|
nop
|
|
nop
|
|
bx lr
|
|
|
|
func7:
|
|
push {r4}
|
|
nop
|
|
pop {r4}
|
|
bx lr
|
|
|
|
func8:
|
|
push {r4,lr}
|
|
nop
|
|
pop {r4,lr}
|
|
bx lr
|
|
|
|
func9:
|
|
push {lr}
|
|
vpush {d8}
|
|
sub sp, sp, #32
|
|
nop
|
|
add sp, sp, #32
|
|
vpop {d8}
|
|
pop {lr}
|
|
b tailcall
|
|
|
|
func10:
|
|
push {r11,lr}
|
|
mov r11, sp
|
|
vpush {d8-d9}
|
|
sub sp, sp, #16
|
|
nop
|
|
add sp, sp, #16
|
|
vpop {d8-d9}
|
|
pop {r11,lr}
|
|
bx lr
|
|
|
|
func11:
|
|
push {r11,lr}
|
|
mov r11, sp
|
|
vpush {d8-d9}
|
|
sub sp, sp, #16
|
|
nop
|
|
add sp, sp, #16
|
|
vpop {d8-d9}
|
|
pop {r11,pc}
|
|
|
|
func12:
|
|
vpush {d8-d14}
|
|
sub sp, sp, #16
|
|
nop
|
|
add sp, sp, #16
|
|
vpop {d8-d14}
|
|
b tailcall
|
|
|
|
func13:
|
|
push {r4-r11,lr}
|
|
add r11, sp, #0x1c
|
|
sub sp, sp, #20
|
|
nop
|
|
add sp, sp, #20
|
|
pop {r4-r11,pc}
|
|
|
|
func14:
|
|
push {r4-r11,lr}
|
|
sub sp, sp, #20
|
|
nop
|
|
add sp, sp, #20
|
|
pop {r4-r11,pc}
|
|
|
|
func15:
|
|
push {r0-r3}
|
|
push {r4,lr}
|
|
sub sp, sp, #512
|
|
nop
|
|
add sp, sp, #512
|
|
pop {r4}
|
|
ldr pc, [sp], #20
|
|
|
|
func16:
|
|
push {r0-r3}
|
|
push {r11,lr}
|
|
mov r11, sp
|
|
nop
|
|
pop {r11, lr}
|
|
add sp, sp, #16
|
|
b tailcall
|
|
|
|
func17:
|
|
push {r0-r3}
|
|
push {r4}
|
|
sub sp, sp, #512
|
|
nop
|
|
add sp, sp, #512
|
|
pop {r4}
|
|
add sp, sp, #16
|
|
bx lr
|
|
|
|
func18:
|
|
push {r3,lr}
|
|
nop
|
|
pop {r3,pc}
|
|
|
|
func19:
|
|
push {r0-r3}
|
|
push {r0-r4}
|
|
nop
|
|
pop {r0-r4}
|
|
add sp, sp, #16
|
|
bx lr
|
|
|
|
func20:
|
|
push {r0-r3}
|
|
push {r0-r4}
|
|
nop
|
|
add sp, sp, #16
|
|
pop {r4}
|
|
add sp, sp, #16
|
|
bx lr
|
|
|
|
func21:
|
|
push {r0-r3}
|
|
push {r4}
|
|
sub sp, sp, #16
|
|
nop
|
|
pop {r0-r4}
|
|
add sp, sp, #16
|
|
bx lr
|
|
|
|
func22:
|
|
nop
|
|
nop
|
|
add sp, sp, #512
|
|
pop {r4}
|
|
ldr pc, [sp], #20
|
|
|
|
func23:
|
|
push {r0-r3}
|
|
push {r4,lr}
|
|
sub sp, sp, #512
|
|
nop
|
|
nop
|
|
|
|
func24:
|
|
push {r2-r7,r11,lr}
|
|
add r11, sp, #24
|
|
nop
|
|
add sp, sp, #8
|
|
pop {r4-r7,r11,pc}
|
|
|
|
func25:
|
|
push {r4-r7,r11,lr}
|
|
add r11, sp, #16
|
|
sub sp, sp, #8
|
|
nop
|
|
pop {r2-r7,r11,pc}
|
|
|
|
func26:
|
|
push {r1-r3}
|
|
nop
|
|
add sp, sp, #12
|
|
bx lr
|
|
|
|
func27:
|
|
sub sp, sp, #12
|
|
nop
|
|
pop {r1-r3}
|
|
bx lr
|
|
|
|
func28:
|
|
push {r3}
|
|
vpush {d8}
|
|
nop
|
|
vpop {d8}
|
|
pop {r3}
|
|
bx lr
|
|
|
|
func29:
|
|
nop
|
|
pop {r4-r11,pc}
|
|
|
|
.section .pdata,"dr"
|
|
.rva func6
|
|
.long 0x000f2011
|
|
.rva func7
|
|
.long 0x00002011
|
|
.rva func8
|
|
.long 0x00102015
|
|
.rva func9
|
|
.long 0x02184031
|
|
.rva func10
|
|
.long 0x01392035
|
|
.rva func11
|
|
.long 0x01390031
|
|
.rva func12
|
|
.long 0x010e4025
|
|
.rva func13
|
|
.long 0x01760025
|
|
.rva func14
|
|
.long 0x0157001d
|
|
.rva func15
|
|
.long 0x20108029
|
|
.rva func16
|
|
.long 0x003fc029
|
|
.rva func17
|
|
.long 0x2000a029
|
|
.rva func18
|
|
.long 0xff1f000d
|
|
.rva func19
|
|
.long 0xffc0a019
|
|
.rva func20
|
|
.long 0xfdc0a01d
|
|
.rva func21
|
|
.long 0xfec0a01d
|
|
.rva func22
|
|
.long 0x2010801e
|
|
.rva func23
|
|
.long 0x2010e019
|
|
.rva func24
|
|
.long 0xfd730021
|
|
.rva func25
|
|
.long 0xfe730021
|
|
.rva func26
|
|
.long 0xfd8f2011
|
|
.rva func27
|
|
.long 0xfe8f2011
|
|
.rva func28
|
|
.long 0xff082011
|
|
.rva func29
|
|
.long 0x0112000e
|