78 lines · plain
1# RUN: llvm-mc --filetype=obj --triple=loongarch64 --mattr=-relax %s \2# RUN: | llvm-readobj -r - | FileCheck %s --check-prefixes=CHECK,NORELAX3# RUN: llvm-mc --filetype=obj --triple=loongarch64 --mattr=+relax %s \4# RUN: | llvm-readobj -r - | FileCheck %s --check-prefixes=CHECK,RELAX5 6## Check that subtraction expressions emit R_LARCH_32_PCREL and R_LARCH_64_PCREL relocations.7 8## TODO: 1- or 2-byte data relocations are not supported for now.9 10# CHECK: Relocations [11# NORELAX-NEXT: Section ({{.*}}) .rela.sx {12# NORELAX-NEXT: 0x4 R_LARCH_PCALA_HI20 z 0x013# NORELAX-NEXT: 0x8 R_LARCH_PCALA_LO12 z 0x014# NORELAX-NEXT: 0xC R_LARCH_32_PCREL y 0x815# NORELAX-NEXT: }16# RELAX-NEXT: Section ({{.*}}) .rela.sx {17# RELAX-NEXT: 0x4 R_LARCH_PCALA_HI20 z 0x018# RELAX-NEXT: 0x4 R_LARCH_RELAX - 0x019# RELAX-NEXT: 0x8 R_LARCH_PCALA_LO12 z 0x020# RELAX-NEXT: 0x8 R_LARCH_RELAX - 0x021# RELAX-NEXT: 0xC R_LARCH_ADD32 y 0x022# RELAX-NEXT: 0xC R_LARCH_SUB32 x 0x023# RELAX-NEXT: }24# CHECK-NEXT: Section ({{.*}}) .rela.data {25# CHECK-NEXT: 0x0 R_LARCH_64_PCREL x 0x026# CHECK-NEXT: 0x8 R_LARCH_64_PCREL y 0x027# CHECK-NEXT: 0x10 R_LARCH_32_PCREL x 0x028# CHECK-NEXT: 0x14 R_LARCH_32_PCREL y 0x029# CHECK-NEXT: 0x18 R_LARCH_ADD64 x 0x030# CHECK-NEXT: 0x18 R_LARCH_SUB64 y 0x031# CHECK-NEXT: 0x20 R_LARCH_ADD64 y 0x032# CHECK-NEXT: 0x20 R_LARCH_SUB64 x 0x033# CHECK-NEXT: 0x28 R_LARCH_ADD32 x 0x034# CHECK-NEXT: 0x28 R_LARCH_SUB32 y 0x035# CHECK-NEXT: 0x2C R_LARCH_ADD32 y 0x036# CHECK-NEXT: 0x2C R_LARCH_SUB32 x 0x037# CHECK-NEXT: 0x30 R_LARCH_ADD64 {{.*}} 0x038# CHECK-NEXT: 0x30 R_LARCH_SUB64 x 0x039# CHECK-NEXT: 0x38 R_LARCH_ADD32 {{.*}} 0x040# CHECK-NEXT: 0x38 R_LARCH_SUB32 y 0x041# CHECK-NEXT: }42# NORELAX-NEXT: Section ({{.*}}) .rela.sy {43# NORELAX-NEXT: 0x0 R_LARCH_CALL36 foo 0x044# NORELAX-NEXT: 0x10 R_LARCH_32_PCREL x 0x845# NORELAX-NEXT: }46# RELAX-NEXT: Section ({{.*}}) .rela.sy {47# RELAX-NEXT: 0x0 R_LARCH_CALL36 foo 0x048# RELAX-NEXT: 0x0 R_LARCH_RELAX - 0x049# RELAX-NEXT: 0x8 R_LARCH_ALIGN - 0xC50# RELAX-NEXT: 0x14 R_LARCH_ADD32 x 0x051# RELAX-NEXT: 0x14 R_LARCH_SUB32 y 0x052# RELAX-NEXT: }53# CHECK-NEXT: ]54 55.section .sx,"ax"56nop57x:58la.pcrel $a0, z59.4byte y-x60 61.data62.8byte x-.63.8byte y-.64.4byte x-.65.4byte y-.66.8byte x-y67.8byte y-x68.4byte x-y69.4byte y-x70.8byte .-x71.4byte .-y72 73.section .sy,"ax"74call36 foo75y:76.p2align 477.4byte x-y78