88 lines · plain
1## The file testing Nop insertion with R_LARCH_ALIGN for relaxation.2 3# RUN: llvm-mc --filetype=obj --triple=loongarch64 --mattr=-relax %s -o %t4# RUN: llvm-objdump -d %t | FileCheck %s --check-prefix=INSTR5# RUN: llvm-readobj -r %t | FileCheck %s --check-prefix=RELOC6# RUN: llvm-mc --filetype=obj --triple=loongarch64 --mattr=+relax %s -o %t.r7# RUN: llvm-objdump -d %t.r | FileCheck %s --check-prefixes=INSTR,RELAX-INSTR8# RUN: llvm-readobj -r %t.r | FileCheck %s --check-prefixes=RELOC,RELAX-RELOC9 10.text11call36 foo12# INSTR: pcaddu18i $ra, 013# INSTR-NEXT: jirl $ra, $ra, 014 15## Not emit R_LARCH_ALIGN if alignment directive is less than or equal to16## minimum code alignment(a.k.a 4).17.p2align 218.p2align 119.p2align 020 21## Not emit instructions if max emit bytes less than min nop size.22.p2align 4, , 223 24## Not emit R_LARCH_ALIGN if alignment directive with specific padding value.25## The behavior is the same as GNU assembler.26break 127.p2align 4, 128# INSTR-NEXT: break 129# INSTR-NEXT: 01 01 01 0130 31break 232.p2align 4, 1, 1233# INSTR-NEXT: break 234# INSTR-COUNT-3: 01 01 01 0135 36break 337.p2align 438# INSTR-NEXT: break 339# INSTR-COUNT-3: nop40 41break 442.p2align 543.p2align 444# INSTR-NEXT: break 445# INSTR-COUNT-3: nop46# RELAX-INSTR-COUNT-7: nop47 48break 549.p2align 4, , 1150# INSTR-NEXT: break 551# RELAX-INSTR-COUNT-3: nop52 53break 654## Not emit the third parameter.55.p2align 4, , 1256# INSTR-NEXT: break 657# INSTR-NEXT: nop58# INSTR-NEXT: nop59# RELAX-INSTR-NEXT: nop60 61ret62# INSNR-NEXT: ret63 64## Test the symbol index is different from .text.65.section .text2, "ax"66call36 foo67.p2align 468.p2align 4, , 469break 770 71# RELOC: Relocations [72# RELOC-NEXT: Section ({{.*}}) .rela.text {73# RELOC-NEXT: 0x0 R_LARCH_CALL36 foo 0x074# RELAX-RELOC-NEXT: 0x0 R_LARCH_RELAX - 0x075# RELAX-RELOC-NEXT: 0x24 R_LARCH_ALIGN - 0xC76# RELAX-RELOC-NEXT: 0x34 R_LARCH_ALIGN - 0x1C77# RELAX-RELOC-NEXT: 0x50 R_LARCH_ALIGN - 0xC78# RELAX-RELOC-NEXT: 0x60 R_LARCH_ALIGN .Lla-relax-align0 0xB0479# RELAX-RELOC-NEXT: 0x70 R_LARCH_ALIGN - 0xC80# RELOC-NEXT: }81# RELOC-NEXT: Section ({{.*}}) .rela.text2 {82# RELOC-NEXT: 0x0 R_LARCH_CALL36 foo 0x083# RELAX-RELOC-NEXT: 0x0 R_LARCH_RELAX - 0x084# RELAX-RELOC-NEXT: 0x8 R_LARCH_ALIGN - 0xC85# RELAX-RELOC-NEXT: 0x14 R_LARCH_ALIGN .Lla-relax-align1 0x40486# RELOC-NEXT: }87# RELOC-NEXT: ]88