85 lines · plain
1# RUN: llvm-mc --triple=riscv32 -mattr=+relax,+experimental-xqcilb,+experimental-xqcibi \2# RUN: %s -filetype=obj -o - -riscv-add-build-attributes \3# RUN: | llvm-objdump -dr -M no-aliases - \4# RUN: | FileCheck %s5 6## This tests that we correctly emit relocations for linker relaxation when7## relaxing `JAL` to `QC.E.JAL`.8 9## PR15007110 11.global foo12 13# CHECK-LABEL: <branch_over_relaxable>:14branch_over_relaxable:15 jal x1, foo16# CHECK: qc.e.jal 0x0 <branch_over_relaxable>17# CHECK-NEXT: R_RISCV_VENDOR QUALCOMM18# CHECK-NEXT: R_RISCV_CUSTOM195 foo19# CHECK-NEXT: R_RISCV_RELAX *ABS*20 bne a0, a1, branch_over_relaxable21# CHECK-NEXT: bne a0, a1, 0x6 <branch_over_relaxable+0x6>22# CHECK-NEXT: R_RISCV_BRANCH branch_over_relaxable23# CHECK-NOT: R_RISCV_RELAX24 qc.e.bnei a0, 0x21, branch_over_relaxable25# CHECK-NEXT: qc.e.bnei a0, 0x21, 0xa <branch_over_relaxable+0xa>26# CHECK-NEXT: R_RISCV_VENDOR QUALCOMM27# CHECK-NEXT: R_RISCV_CUSTOM193 branch_over_relaxable28# CHECK-NOT: R_RISCV_RELAX29 ret30# CHECK-NEXT: c.jr ra31 32# CHECK-LABEL: <short_jump_over_fixed>:33short_jump_over_fixed:34 nop35# CHECK: c.nop36 j short_jump_over_fixed37# CHECK-NEXT: c.j 0x12 <short_jump_over_fixed>38# CHECK-NOT: R_RISCV_RVC_JUMP39# CHECK-NOT: R_RISCV_RELAX40 ret41# CHECK-NEXT: c.jr ra42 43# CHECK-LABEL: <short_jump_over_relaxable>:44short_jump_over_relaxable:45 call foo46# CHECK: auipc ra, 0x047# CHECK-NEXT: R_RISCV_CALL_PLT foo48# CHECK-NEXT: R_RISCV_RELAX *ABS*49# CHECK-NEXT: jalr ra, 0x0(ra) <short_jump_over_relaxable>50 j short_jump_over_relaxable51# CHECK-NEXT: c.j 0x20 <short_jump_over_relaxable+0x8>52# CHECK-NEXT: R_RISCV_RVC_JUMP short_jump_over_relaxable53# CHECK-NOT: R_RISCV_RELAX54 ret55# CHECK-NEXT: c.jr ra56 57# CHECK-LABEL: <mid_jump_over_fixed>:58mid_jump_over_fixed:59 nop60# CHECK: c.nop61 .space 0x100062# CHECK-NEXT: ...63 j mid_jump_over_fixed64# CHECK-NEXT: jal zero, 0x24 <mid_jump_over_fixed>65# CHECK-NOT: R_RISCV_JAL66# CHECK-NOT: R_RISCV_RELAX67 ret68# CHECK-NEXT: c.jr ra69 70# CHECK-LABEL: <mid_jump_over_relaxable>:71mid_jump_over_relaxable:72 call foo73# CHECK: auipc ra, 0x074# CHECK-NEXT: R_RISCV_CALL_PLT foo75# CHECK-NEXT: R_RISCV_RELAX *ABS*76# CHECK-NEXT: jalr ra, 0x0(ra) <mid_jump_over_relaxable>77 .space 0x100078# CHECK-NEXT: ...79 j mid_jump_over_relaxable80# CHECK-NEXT: jal zero, 0x2034 <mid_jump_over_relaxable+0x1008>81# CHECK-NEXT: R_RISCV_JAL mid_jump_over_relaxable82# CHECK-NOT: R_RISCV_RELAX83 ret84# CHECK-NEXT: c.jr ra85