42 lines
1 KiB
ArmAsm
42 lines
1 KiB
ArmAsm
# REQUIRES: loongarch
|
|
|
|
# RUN: llvm-mc --filetype=obj --triple=loongarch32-unknown-elf %s -o %t.la32.o
|
|
# RUN: llvm-mc --filetype=obj --triple=loongarch64-unknown-elf %s -o %t.la64.o
|
|
|
|
# RUN: ld.lld %t.la32.o -o %t.la32
|
|
# RUN: ld.lld %t.la64.o -o %t.la64
|
|
# RUN: llvm-objdump -d --no-show-raw-insn %t.la32 | FileCheck %s
|
|
# RUN: llvm-objdump -d --no-show-raw-insn %t.la64 | FileCheck %s
|
|
# CHECK: pcalau12i $t0, -1
|
|
# CHECK-NEXT: jirl $ra, $t0, 564
|
|
# CHECK-NEXT: pcalau12i $t0, 0
|
|
# CHECK-NEXT: jirl $zero, $t0, -1348
|
|
|
|
## PLT shouldn't get generated in this case.
|
|
# CHECK-NOT: Disassembly of section .plt:
|
|
|
|
.p2align 12
|
|
.org 0x234
|
|
.global foo
|
|
foo:
|
|
li.w $a0, 42
|
|
ret
|
|
|
|
.org 0xabc
|
|
.global bar
|
|
bar:
|
|
li.w $a7, 94
|
|
syscall 0
|
|
|
|
.org 0x1000
|
|
.global _start
|
|
_start:
|
|
## The nops are for pushing the relocs off page boundary, to better see the
|
|
## page-aligned semantics in action.
|
|
nop
|
|
nop
|
|
nop
|
|
pcalau12i $t0, %pc_hi20(foo)
|
|
jirl $ra, $t0, %pc_lo12(foo)
|
|
pcalau12i $t0, %pc_hi20(bar)
|
|
jirl $zero, $t0, %pc_lo12(bar)
|