llvm-project/compiler-rt/lib/xray/xray_trampoline_powerpc64_a...

236 lines
3.9 KiB
ArmAsm

.text
.abiversion 2
.globl __xray_FunctionEntry
.p2align 4
__xray_FunctionEntry:
std 0, 16(1)
stdu 1, -408(1)
# Spill r3-r10, f1-f13, and vsr34-vsr45, which are parameter registers.
# If this appears to be slow, the caller needs to pass in number of generic,
# floating point, and vector parameters, so that we only spill those live ones.
std 3, 32(1)
ld 3, 400(1) # FuncId
std 4, 40(1)
std 5, 48(1)
std 6, 56(1)
std 7, 64(1)
std 8, 72(1)
std 9, 80(1)
std 10, 88(1)
addi 4, 1, 96
stxsdx 1, 0, 4
addi 4, 1, 104
stxsdx 2, 0, 4
addi 4, 1, 112
stxsdx 3, 0, 4
addi 4, 1, 120
stxsdx 4, 0, 4
addi 4, 1, 128
stxsdx 5, 0, 4
addi 4, 1, 136
stxsdx 6, 0, 4
addi 4, 1, 144
stxsdx 7, 0, 4
addi 4, 1, 152
stxsdx 8, 0, 4
addi 4, 1, 160
stxsdx 9, 0, 4
addi 4, 1, 168
stxsdx 10, 0, 4
addi 4, 1, 176
stxsdx 11, 0, 4
addi 4, 1, 184
stxsdx 12, 0, 4
addi 4, 1, 192
stxsdx 13, 0, 4
addi 4, 1, 200
stxvd2x 34, 0, 4
addi 4, 1, 216
stxvd2x 35, 0, 4
addi 4, 1, 232
stxvd2x 36, 0, 4
addi 4, 1, 248
stxvd2x 37, 0, 4
addi 4, 1, 264
stxvd2x 38, 0, 4
addi 4, 1, 280
stxvd2x 39, 0, 4
addi 4, 1, 296
stxvd2x 40, 0, 4
addi 4, 1, 312
stxvd2x 41, 0, 4
addi 4, 1, 328
stxvd2x 42, 0, 4
addi 4, 1, 344
stxvd2x 43, 0, 4
addi 4, 1, 360
stxvd2x 44, 0, 4
addi 4, 1, 376
stxvd2x 45, 0, 4
std 2, 392(1)
mflr 0
std 0, 400(1)
li 4, 0
bl _ZN6__xray23CallXRayPatchedFunctionEi13XRayEntryType
nop
addi 4, 1, 96
lxsdx 1, 0, 4
addi 4, 1, 104
lxsdx 2, 0, 4
addi 4, 1, 112
lxsdx 3, 0, 4
addi 4, 1, 120
lxsdx 4, 0, 4
addi 4, 1, 128
lxsdx 5, 0, 4
addi 4, 1, 136
lxsdx 6, 0, 4
addi 4, 1, 144
lxsdx 7, 0, 4
addi 4, 1, 152
lxsdx 8, 0, 4
addi 4, 1, 160
lxsdx 9, 0, 4
addi 4, 1, 168
lxsdx 10, 0, 4
addi 4, 1, 176
lxsdx 11, 0, 4
addi 4, 1, 184
lxsdx 12, 0, 4
addi 4, 1, 192
lxsdx 13, 0, 4
addi 4, 1, 200
lxvd2x 34, 0, 4
addi 4, 1, 216
lxvd2x 35, 0, 4
addi 4, 1, 232
lxvd2x 36, 0, 4
addi 4, 1, 248
lxvd2x 37, 0, 4
addi 4, 1, 264
lxvd2x 38, 0, 4
addi 4, 1, 280
lxvd2x 39, 0, 4
addi 4, 1, 296
lxvd2x 40, 0, 4
addi 4, 1, 312
lxvd2x 41, 0, 4
addi 4, 1, 328
lxvd2x 42, 0, 4
addi 4, 1, 344
lxvd2x 43, 0, 4
addi 4, 1, 360
lxvd2x 44, 0, 4
addi 4, 1, 376
lxvd2x 45, 0, 4
ld 0, 400(1)
mtlr 0
ld 2, 392(1)
ld 3, 32(1)
ld 4, 40(1)
ld 5, 48(1)
ld 6, 56(1)
ld 7, 64(1)
ld 8, 72(1)
ld 9, 80(1)
ld 10, 88(1)
addi 1, 1, 408
ld 0, 16(1)
blr
.globl __xray_FunctionExit
.p2align 4
__xray_FunctionExit:
std 0, 16(1)
stdu 1, -256(1)
# Spill r3-r4, f1-f8, and vsr34-vsr41, which are return registers.
# If this appears to be slow, the caller needs to pass in number of generic,
# floating point, and vector parameters, so that we only spill those live ones.
std 3, 32(1)
ld 3, 248(1) # FuncId
std 4, 40(1)
addi 4, 1, 48
stxsdx 1, 0, 4
addi 4, 1, 56
stxsdx 2, 0, 4
addi 4, 1, 64
stxsdx 3, 0, 4
addi 4, 1, 72
stxsdx 4, 0, 4
addi 4, 1, 80
stxsdx 5, 0, 4
addi 4, 1, 88
stxsdx 6, 0, 4
addi 4, 1, 96
stxsdx 7, 0, 4
addi 4, 1, 104
stxsdx 8, 0, 4
addi 4, 1, 112
stxvd2x 34, 0, 4
addi 4, 1, 128
stxvd2x 35, 0, 4
addi 4, 1, 144
stxvd2x 36, 0, 4
addi 4, 1, 160
stxvd2x 37, 0, 4
addi 4, 1, 176
stxvd2x 38, 0, 4
addi 4, 1, 192
stxvd2x 39, 0, 4
addi 4, 1, 208
stxvd2x 40, 0, 4
addi 4, 1, 224
stxvd2x 41, 0, 4
std 2, 240(1)
mflr 0
std 0, 248(1)
li 4, 1
bl _ZN6__xray23CallXRayPatchedFunctionEi13XRayEntryType
nop
addi 4, 1, 48
lxsdx 1, 0, 4
addi 4, 1, 56
lxsdx 2, 0, 4
addi 4, 1, 64
lxsdx 3, 0, 4
addi 4, 1, 72
lxsdx 4, 0, 4
addi 4, 1, 80
lxsdx 5, 0, 4
addi 4, 1, 88
lxsdx 6, 0, 4
addi 4, 1, 96
lxsdx 7, 0, 4
addi 4, 1, 104
lxsdx 8, 0, 4
addi 4, 1, 112
lxvd2x 34, 0, 4
addi 4, 1, 128
lxvd2x 35, 0, 4
addi 4, 1, 144
lxvd2x 36, 0, 4
addi 4, 1, 160
lxvd2x 37, 0, 4
addi 4, 1, 176
lxvd2x 38, 0, 4
addi 4, 1, 192
lxvd2x 39, 0, 4
addi 4, 1, 208
lxvd2x 40, 0, 4
addi 4, 1, 224
lxvd2x 41, 0, 4
ld 0, 248(1)
mtlr 0
ld 2, 240(1)
ld 3, 32(1)
ld 4, 40(1)
addi 1, 1, 256
ld 0, 16(1)
blr