brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.6 KiB · e2ea869 Raw
111 lines · plain
1# RUN: llvm-mc %s -triple=riscv32 | FileCheck -check-prefixes=ASM %s2# RUN: llvm-mc %s -triple=riscv64 | FileCheck -check-prefixes=ASM %s3# RUN: llvm-mc %s -triple=riscv32 -mattr=+relax | FileCheck -check-prefix=ASM %s4# RUN: llvm-mc %s -triple=riscv64 -mattr=+relax | FileCheck -check-prefix=ASM %s5# RUN: llvm-mc -filetype=obj -triple riscv32 < %s \6# RUN:   | llvm-objdump -d -M no-aliases - | FileCheck --check-prefixes=DISASM,DISASM-NORELAX %s7# RUN: llvm-mc -filetype=obj -triple riscv64 < %s \8# RUN:   | llvm-objdump -d -M no-aliases - | FileCheck --check-prefixes=DISASM,DISASM-NORELAX %s9# RUN: llvm-mc -filetype=obj -triple riscv32 -mattr=+relax < %s \10# RUN:   | llvm-objdump -d -M no-aliases - | FileCheck --check-prefixes=DISASM,DISASM-RELAX %s11# RUN: llvm-mc -filetype=obj -triple riscv64 -mattr=+relax < %s \12# RUN:   | llvm-objdump -d -M no-aliases - | FileCheck --check-prefixes=DISASM,DISASM-RELAX %s13 14# Checks change of options does not cause error: could not find corresponding %pcrel_hi15# when assembling pseudoinstruction and its extended form. Also checks that we16# evaluate the correct value for local symbols in such a situation.17 18.option push19.option norelax20  la a0, a_symbol21.option pop22  la a1, another_symbol23 24# ASM-LABEL: .Lpcrel_hi0{{>?}}:25# ASM-NEXT: auipc   a0, %pcrel_hi(a_symbol)26# ASM-NEXT: addi    a0, a0, %pcrel_lo(.Lpcrel_hi0)27# ASM-LABEL: .Lpcrel_hi1{{>?}}:28# ASM-NEXT: auipc   a1, %pcrel_hi(another_symbol)29# ASM-NEXT: addi    a1, a1, %pcrel_lo(.Lpcrel_hi1)30 31# DISASM-LABEL: <.Lpcrel_hi0>:32# DISASM-NEXT: auipc   a0, 0x033# DISASM-NEXT: addi    a0, a0, 0x034# DISASM-LABEL: <.Lpcrel_hi1>:35# DISASM-NEXT: auipc   a1, 0x036# DISASM-NEXT: addi    a1, a1, 0x037 38.option push39.option norelax401:auipc   a0, %pcrel_hi(a_symbol)41  addi    a0, a0, %pcrel_lo(1b)42.option pop432:auipc   a1, %pcrel_hi(another_symbol)44  addi    a1, a1, %pcrel_lo(2b)45 46# ASM-LABEL: .Ltmp0{{>?}}:47# ASM-NEXT: auipc   a0, %pcrel_hi(a_symbol)48# ASM-NEXT: addi    a0, a0, %pcrel_lo(.Ltmp0)49# ASM-LABEL: .Ltmp1{{>?}}:50# ASM-NEXT: auipc   a1, %pcrel_hi(another_symbol)51# ASM-NEXT: addi    a1, a1, %pcrel_lo(.Ltmp1)52 53# DISASM-LABEL: .Ltmp0{{>?}}:54# DISASM-NEXT: auipc   a0, 0x055# DISASM-NEXT: addi    a0, a0, 0x056# DISASM-LABEL: .Ltmp1{{>?}}:57# DISASM-NEXT: auipc   a1, 0x058# DISASM-NEXT: addi    a1, a1, 0x059 60.option push61.option norelax62  la a0, a_symbol63.option pop64  la a1, local_symbol165 66local_symbol1:67  nop68 69# ASM-LABEL: .Lpcrel_hi2{{>?}}:70# ASM-NEXT: auipc   a0, %pcrel_hi(a_symbol)71# ASM-NEXT: addi    a0, a0, %pcrel_lo(.Lpcrel_hi2)72# ASM-LABEL: .Lpcrel_hi3{{>?}}:73# ASM-NEXT: auipc   a1, %pcrel_hi(local_symbol1)74# ASM-NEXT: addi    a1, a1, %pcrel_lo(.Lpcrel_hi3)75 76# DISASM-LABEL: .Lpcrel_hi2{{>?}}:77# DISASM-NEXT: auipc   a0, 0x078# DISASM-NEXT: addi    a0, a0, 0x079# DISASM-NORELAX-NEXT: auipc   a1, 0x080# DISASM-NORELAX-NEXT: addi    a1, a1, 0x881# DISASM-RELAX-LABEL: .Lpcrel_hi3{{>?}}:82# DISASM-RELAX-NEXT: auipc   a1, 0x083# DISASM-RELAX-NEXT: addi    a1, a1, 0x084 85.option push86.option norelax871:auipc   a0, %pcrel_hi(a_symbol)88  addi    a0, a0, %pcrel_lo(1b)89.option pop902:auipc   a1, %pcrel_hi(local_symbol2)91  addi    a1, a1, %pcrel_lo(2b)92 93local_symbol2:94  nop95 96# ASM-LABEL: .Ltmp2{{>?}}:97# ASM-NEXT: auipc   a0, %pcrel_hi(a_symbol)98# ASM-NEXT: addi    a0, a0, %pcrel_lo(.Ltmp2)99# ASM-LABEL: .Ltmp3{{>?}}:100# ASM-NEXT: auipc   a1, %pcrel_hi(local_symbol2)101# ASM-NEXT: addi    a1, a1, %pcrel_lo(.Ltmp3)102 103# DISASM-LABEL: .Ltmp2{{>?}}:104# DISASM-NEXT: auipc   a0, 0x0105# DISASM-NEXT: addi    a0, a0, 0x0106# DISASM-NORELAX-NEXT: auipc   a1, 0x0107# DISASM-NORELAX-NEXT: addi    a1, a1, 0x8108# DISASM-RELAX-LABEL: .Ltmp3{{>?}}:109# DISASM-RELAX-NEXT: auipc   a1, 0x0110# DISASM-RELAX-NEXT: addi    a1, a1, 0x0111