brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.9 KiB · 79353f2 Raw
162 lines · plain
1# REQUIRES: loongarch2 3# RUN: llvm-mc --filetype=obj --triple=loongarch32 --mattr=+relax %s -o %t.32.o4# RUN: llvm-mc --filetype=obj --triple=loongarch64 --mattr=+relax %s -o %t.64.o5# RUN: ld.lld --section-start=.text=0x10000 --section-start=.text2=0x20000 -e 0 %t.32.o -o %t.326# RUN: ld.lld --section-start=.text=0x10000 --section-start=.text2=0x20000 -e 0 %t.64.o -o %t.647# RUN: ld.lld --section-start=.text=0x10000 --section-start=.text2=0x20000 -e 0 --no-relax %t.32.o -o %t.32n8# RUN: ld.lld --section-start=.text=0x10000 --section-start=.text2=0x20000 -e 0 --no-relax %t.64.o -o %t.64n9# RUN: llvm-objdump -td --no-show-raw-insn %t.32 | FileCheck --check-prefixes=RELAX,NOOLD %s10# RUN: llvm-objdump -td --no-show-raw-insn %t.64 | FileCheck --check-prefixes=RELAX,NOOLD %s11# RUN: llvm-objdump -td --no-show-raw-insn %t.32n | FileCheck --check-prefixes=NORELAX,NOOLD %s12# RUN: llvm-objdump -td --no-show-raw-insn %t.64n | FileCheck --check-prefixes=NORELAX,NOOLD %s13 14## Test the R_LARCH_ALIGN without symbol index.15# RUN: llvm-mc --filetype=obj --triple=loongarch64 --mattr=+relax %s -o %t.o64.o --defsym=old=116# RUN: ld.lld --section-start=.text=0x10000 --section-start=.text2=0x20000 -e 0 %t.o64.o -o %t.o6417# RUN: ld.lld --section-start=.text=0x10000 --section-start=.text2=0x20000 -e 0 --no-relax %t.o64.o -o %t.o64n18# RUN: llvm-objdump -td --no-show-raw-insn %t.o64 | FileCheck --check-prefixes=RELAX,OLD %s19# RUN: llvm-objdump -td --no-show-raw-insn %t.o64n | FileCheck --check-prefixes=NORELAX,OLD %s20 21## -r keeps section contents unchanged.22# RUN: ld.lld -r %t.64.o -o %t.64.r23# RUN: llvm-objdump -dr --no-show-raw-insn %t.64.r | FileCheck %s --check-prefix=CHECKR24 25# NOOLD: {{0*}}10000 l .text  {{0*}}00 .Lalign_symbol26# OLD: {{0*}}00001 l *ABS*  {{0*}}00 old27 28# NORELAX-DAG: {{0*}}10000 l .text  {{0*}}44 .Ltext_start29# NORELAX-DAG: {{0*}}10038 l .text  {{0*}}0c .L130# NORELAX-DAG: {{0*}}10040 l .text  {{0*}}04 .L231# NORELAX-DAG: {{0*}}20000 l .text2 {{0*}}14 .Ltext2_start32 33# NORELAX:      <.Ltext_start>:34# NORELAX-NEXT:   break 135# NORELAX-NEXT:   break 236# NORELAX-NEXT:   nop37# NORELAX-NEXT:   nop38# NORELAX-NEXT:   break 339# NORELAX-NEXT:   break 440# NORELAX-NEXT:   nop41# NORELAX-NEXT:   nop42# NORELAX-NEXT:   pcalau12i     $a0, 043# NORELAX-NEXT:   addi.{{[dw]}} $a0, $a0, 044# NORELAX-NEXT:   pcalau12i     $a0, 045# NORELAX-NEXT:   addi.{{[dw]}} $a0, $a0, 5646# NORELAX-NEXT:   pcalau12i     $a0, 047# NORELAX-NEXT:   addi.{{[dw]}} $a0, $a0, 6448# NORELAX-EMPTY:49# NORELAX-NEXT: <.L1>:50# NORELAX-NEXT:   nop51# NORELAX-NEXT:   nop52# NORELAX-EMPTY:53# NORELAX-NEXT: <.L2>:54# NORELAX-NEXT:   break 555 56# NORELAX:      <.Ltext2_start>:57# NORELAX-NEXT:   pcalau12i     $a0, 058# NORELAX-NEXT:   addi.{{[dw]}} $a0, $a0, 059# NORELAX-NEXT:   nop60# NORELAX-NEXT:   nop61# NORELAX-NEXT:   break 662 63 64# RELAX-DAG: {{0*}}10000 l .text  {{0*}}34 .Ltext_start65# RELAX-DAG: {{0*}}1002c l .text  {{0*}}08 .L166# RELAX-DAG: {{0*}}10030 l .text  {{0*}}04 .L267# RELAX-DAG: {{0*}}20000 l .text2 {{0*}}14 .Ltext2_start68 69# RELAX:      <.Ltext_start>:70# RELAX-NEXT:   break 171# RELAX-NEXT:   break 272# RELAX-NEXT:   nop73# RELAX-NEXT:   nop74# RELAX-NEXT:   break 375# RELAX-NEXT:   break 476# RELAX-NEXT:   nop77# RELAX-NEXT:   nop78# RELAX-NEXT:   pcaddi     $a0, -879# RELAX-NEXT:   pcaddi     $a0, 280# RELAX-NEXT:   pcaddi     $a0, 281# RELAX-EMPTY:82# RELAX-NEXT: <.L1>:83# RELAX-NEXT:   nop84# RELAX-EMPTY:85# RELAX-NEXT: <.L2>:86# RELAX-NEXT:   break 587 88# RELAX:      <.Ltext2_start>:89# RELAX-NEXT:   pcaddi     $a0, 090# RELAX-NEXT:   nop91# RELAX-NEXT:   nop92# RELAX-NEXT:   nop93# RELAX-NEXT:   break 694 95# CHECKR:      <.Ltext2_start>:96# CHECKR-NEXT:   pcalau12i $a0, 097# CHECKR-NEXT:   {{0*}}00: R_LARCH_PCALA_HI20 .Ltext2_start98# CHECKR-NEXT:   {{0*}}00: R_LARCH_RELAX      *ABS*99# CHECKR-NEXT:   addi.d    $a0, $a0, 0100# CHECKR-NEXT:   {{0*}}04: R_LARCH_PCALA_LO12 .Ltext2_start101# CHECKR-NEXT:   {{0*}}04: R_LARCH_RELAX      *ABS*102# CHECKR-NEXT:   nop103# CHECKR-NEXT:   {{0*}}08: R_LARCH_ALIGN      .Lalign_symbol+0x4104# CHECKR-NEXT:   nop105# CHECKR-NEXT:   nop106# CHECKR-NEXT:   break 6107 108.macro .fake_p2align_4 max=0109  .ifdef old110    .if \max==0111      .reloc ., R_LARCH_ALIGN, 0xc112      nop; nop; nop113    .endif114  .else115    .reloc ., R_LARCH_ALIGN, .Lalign_symbol + 0x4 + (\max << 8)116    nop; nop; nop117  .endif118.endm119 120  .text121.Lalign_symbol:122.Ltext_start:123  break 1124  break 2125## +0x8: Emit 2 nops, delete 1 nop.126  .fake_p2align_4127 128  break 3129## +0x14: Emit 3 nops > 8 bytes, not emit.130  .fake_p2align_4 8131 132  break 4133  .fake_p2align_4 8134## +0x18: Emit 2 nops <= 8 bytes.135 136## Compensate137.ifdef old138  nop; nop139.endif140 141## +0x20: Test symbol value and symbol size can be handled.142  la.pcrel $a0, .Ltext_start143  la.pcrel $a0, .L1144  la.pcrel $a0, .L2145 146## +0x38: Emit 2 nops, delete 1 nop.147.L1:148  .fake_p2align_4149.L2:150  break 5151  .size .L1, . - .L1152  .size .L2, . - .L2153  .size .Ltext_start, . - .Ltext_start154 155## Test another text section.156  .section .text2,"ax",@progbits157.Ltext2_start:158  la.pcrel $a0, .Ltext2_start159  .fake_p2align_4160  break 6161  .size .Ltext2_start, . - .Ltext2_start162