79 lines · plain
1# REQUIRES: riscv2# RUN: rm -rf %t && split-file %s %t && cd %t3 4# RUN: llvm-mc -filetype=obj -triple=riscv32-unknown-elf -mattr=+relax a.s -o rv32.o5# RUN: llvm-mc -filetype=obj -triple=riscv64-unknown-elf -mattr=+relax a.s -o rv64.o6 7# RUN: ld.lld --relax-gp --undefined=__global_pointer$ --defsym baz=420 rv32.o lds -o rv328# RUN: ld.lld --relax-gp --undefined=__global_pointer$ --defsym baz=420 rv64.o lds -o rv649# RUN: llvm-objdump -td -M no-aliases --no-show-raw-insn rv32 | FileCheck %s10# RUN: llvm-objdump -td -M no-aliases --no-show-raw-insn rv64 | FileCheck %s11 12# CHECK: 00000040 l .text {{0*}}0 a13 14# CHECK-NOT: lui15# CHECK: addi a0, gp, -0x80016# CHECK-NEXT: lw a0, -0x800(gp)17# CHECK-NEXT: sw a0, -0x800(gp)18# CHECK-NOT: lui19# CHECK-NEXT: addi a0, gp, 0x7ff20# CHECK-NEXT: lb a0, 0x7ff(gp)21# CHECK-NEXT: sb a0, 0x7ff(gp)22# CHECK-NEXT: lui a0, 0x20123# CHECK-NEXT: addi a0, a0, 0x024# CHECK-NEXT: lw a0, 0x0(a0)25# CHECK-NEXT: sw a0, 0x0(a0)26# CHECK-NOT: lui27# CHECK: addi a0, zero, 0x028# CHECK-NEXT: lw a0, 0x0(zero)29# CHECK-NEXT: sw a0, 0x0(zero)30# CHECK-NOT: lui31# CHECK: addi a0, zero, 0x1a432# CHECK-NEXT: lw a0, 0x1a4(zero)33# CHECK-NEXT: sw a0, 0x1a4(zero)34# CHECK-EMPTY:35# CHECK-NEXT: <a>:36# CHECK-NEXT: addi a0, a0, 0x137 38#--- a.s39.global _start40_start:41 lui a0, %hi(foo)42 addi a0, a0, %lo(foo)43 lw a0, %lo(foo)(a0)44 sw a0, %lo(foo)(a0)45 lui a0, %hi(bar)46 addi a0, a0, %lo(bar)47 lb a0, %lo(bar)(a0)48 sb a0, %lo(bar)(a0)49 lui a0, %hi(norelax)50 addi a0, a0, %lo(norelax)51 lw a0, %lo(norelax)(a0)52 sw a0, %lo(norelax)(a0)53 lui a0, %hi(undefined_weak)54 addi a0, a0, %lo(undefined_weak)55 lw a0, %lo(undefined_weak)(a0)56 sw a0, %lo(undefined_weak)(a0)57 lui a0, %hi(baz)58 addi a0, a0, %lo(baz)59 lw a0, %lo(baz)(a0)60 sw a0, %lo(baz)(a0)61a:62 addi a0, a0, 163 64.section .sdata,"aw"65foo:66 .word 067 .space 409168bar:69 .byte 070norelax:71 .word 072.weak undefined_weak73 74#--- lds75SECTIONS {76 .text : {*(.text) }77 .sdata 0x200000 : { }78}79