[JITLink][PowerPC] Port rtdyld's tests to jitlink. NFC. (#65739)

This commit is contained in:
bzEq 2023-09-09 05:52:58 +08:00 committed by GitHub
parent db20592ffe
commit 0eeca5739a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 139 additions and 0 deletions

View File

@ -0,0 +1,42 @@
# This module contains a function with its local and global entry points
# exposed. It is used by the ppc64_elf test to verify that functions with
# different TOCs are called via their global entry points.
.text
.abiversion 2
.file "ppc64_elf_module_b.ll"
.section .rodata.cst4,"aM",@progbits,4
.p2align 2 # -- Begin function foo
.LCPI0_0:
.long 1093664768 # float 11
.text
.globl foo
.p2align 4
.type foo,@function
.Lfunc_toc0: # @foo
.quad .TOC.-foo_gep
foo:
.Lfunc_begin0:
.cfi_startproc
.globl foo_gep
foo_gep:
ld 2, .Lfunc_toc0-foo_gep(12)
add 2, 2, 12
.globl foo_lep
foo_lep:
.localentry foo, foo_lep-foo_gep
# %bb.0:
addis 3, 2, .LC0@toc@ha
ld 3, .LC0@toc@l(3)
lfsx 1, 0, 3
blr
.long 0
.quad 0
.Lfunc_end0:
.size foo, .Lfunc_end0-.Lfunc_begin0
.cfi_endproc
# -- End function
.section .toc,"aw",@progbits
.LC0:
.tc .LCPI0_0[TC],.LCPI0_0
.section ".note.GNU-stack","",@progbits

View File

@ -0,0 +1,47 @@
# RUN: rm -rf %t && mkdir -p %t
# RUN: llvm-mc -triple=powerpc64le-unknown-linux-gnu -filetype=obj -o %t/ppc64_elf.o %s
# RUN: llvm-mc -triple=powerpc64le-unknown-linux-gnu -filetype=obj -o %t/ppc64_elf_module_b.o %S/Inputs/ppc64_elf_module_b.s
# RUN: llvm-jitlink -noexec -check %s %t/ppc64_elf.o %t/ppc64_elf_module_b.o
.text
.abiversion 2
.file "Module2.ll"
.global main
.p2align 4
.type main,@function
main:
li 3, 0
blr
.size main, .-main
.globl bar # -- Begin function bar
.p2align 4
.type bar,@function
.Lfunc_toc0: # @bar
.quad .TOC.-.Lfunc_gep0
bar:
.Lfunc_begin0:
.Lfunc_gep0:
ld 2, .Lfunc_toc0-.Lfunc_gep0(12)
add 2, 2, 12
.Lfunc_lep0:
.localentry bar, .Lfunc_lep0-.Lfunc_gep0
# %bb.0:
mflr 0
std 0, 16(1)
stdu 1, -32(1)
# jitlink-check: (*{8}got_addr(ppc64_elf.o, foo)) = foo_gep
# jitlink-check: decode_operand(bar+20, 0) = (stub_addr(ppc64_elf.o, foo) - (bar+20)) >> 2
foo_call:
bl foo
nop
addi 1, 1, 32
ld 0, 16(1)
mtlr 0
blr
.long 0
.quad 0
.Lfunc_end0:
.size bar, .Lfunc_end0-.Lfunc_begin0
# -- End function
.section ".note.GNU-stack","",@progbits

View File

@ -0,0 +1,50 @@
# RUN: rm -rf %t && mkdir -p %t
# RUN: llvm-mc -triple=powerpc64le-unknown-linux-gnu -filetype=obj -o %t/ppc64_reloc.o %s
# RUN: llvm-mc -triple=powerpc64le-unknown-linux-gnu -filetype=obj -o %t/ppc64_elf_module_b.o %S/Inputs/ppc64_elf_module_b.s
# RUN: llvm-jitlink -noexec -check %s %t/ppc64_reloc.o %t/ppc64_elf_module_b.o
.text
.abiversion 2
.file "test.c"
.globl main
.p2align 4
.type main,@function
main:
li 3, 0
blr
.size main, .-main
.globl func
.p2align 4
.type func,@function
func: # @func
.Lfunc_begin0:
.Lfunc_gep0:
addis 2, 12, .TOC.-.Lfunc_gep0@ha
addi 2, 2, .TOC.-.Lfunc_gep0@l
.Lfunc_lep0:
.localentry func, .Lfunc_lep0-.Lfunc_gep0
mflr 0
std 31, -8(1)
std 0, 16(1)
stdu 1, -112(1)
mr 31, 1
# confirm that LK flag is set for bl
# jitlink-check: (*{4}(func+28)) & 1 = 1
call_bl:
bl foo
nop
li 3, 0
addi 1, 1, 112
ld 0, 16(1)
ld 31, -8(1)
mtlr 0
# confirm that LK flag is not set for b
# jitlink-check: (*{4}(func+56)) & 1 = 0
call_b:
b foo
nop
.long 0
.quad 0
.Lfunc_end0:
.size func, .Lfunc_end0-.Lfunc_begin0