| # 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) |