forked from OSchip/llvm-project
48 lines
1.3 KiB
ArmAsm
48 lines
1.3 KiB
ArmAsm
# RUN: llvm-mc -triple=powerpc-unknown-linux-gnu -filetype=obj -o %T/ppc32_elf_rel_addr16.o %s
|
|
# RUN: llvm-rtdyld -triple=powerpc-unknown-linux-gnu -verify -check=%s %T/ppc32_elf_rel_addr16.o
|
|
.text
|
|
.file "ppc32_elf_rel_addr16.ll"
|
|
.globl lookup
|
|
.align 2
|
|
.type lookup,@function
|
|
lookup: # @lookup
|
|
.Lfunc_begin0:
|
|
# BB#0:
|
|
stw 31, -4(1)
|
|
stwu 1, -16(1)
|
|
insn_hi:
|
|
# Check the higher 16-bits of the symbol's absolute address
|
|
# rtdyld-check: decode_operand(insn_hi, 1) = elements[31:16]
|
|
lis 4, elements@ha
|
|
slwi 3, 3, 2
|
|
mr 31, 1
|
|
insn_lo:
|
|
# Check the lower 16-bits of the symbol's absolute address
|
|
# rtdyld-check: decode_operand(insn_lo, 2) = elements[15:0]
|
|
la 4, elements@l(4)
|
|
lwzx 3, 4, 3
|
|
addi 1, 1, 16
|
|
lwz 31, -4(1)
|
|
blr
|
|
.Lfunc_end0:
|
|
.size lookup, .Lfunc_end0-.Lfunc_begin0
|
|
|
|
.type elements,@object # @elements
|
|
.data
|
|
.globl elements
|
|
.align 2
|
|
elements:
|
|
.long 14 # 0xe
|
|
.long 4 # 0x4
|
|
.long 1 # 0x1
|
|
.long 3 # 0x3
|
|
.long 13 # 0xd
|
|
.long 0 # 0x0
|
|
.long 32 # 0x20
|
|
.long 334 # 0x14e
|
|
.size elements, 32
|
|
|
|
|
|
.ident "clang version 3.7.0 "
|
|
.section ".note.GNU-stack","",@progbits
|