diff options
author | Petar Jovanovic <petar.jovanovic@imgtec.com> | 2014-02-04 18:41:57 +0000 |
---|---|---|
committer | Petar Jovanovic <petar.jovanovic@imgtec.com> | 2014-02-04 18:41:57 +0000 |
commit | 7f15e90281c9862e9084ff2197f8fe8f06823fb2 (patch) | |
tree | d7419c11a323f6bcc04357bf53762527f43315cc /test | |
parent | 5e47632b8fa1a98283c09ca88cf09600862e4849 (diff) | |
download | llvm-7f15e90281c9862e9084ff2197f8fe8f06823fb2.tar.gz llvm-7f15e90281c9862e9084ff2197f8fe8f06823fb2.tar.bz2 llvm-7f15e90281c9862e9084ff2197f8fe8f06823fb2.tar.xz |
[mips] Implement %hi(sym1 - sym2) and %lo(sym1 - sym2) expressions
Patch implements %hi(sym1 - sym2) and %lo(sym1 - sym2) expressions for MIPS
by creating target expression class MipsMCExpr.
Patch by Sasa Stankovic.
Differential Revision: http://llvm-reviews.chandlerc.com/D2592
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200783 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r-- | test/MC/Mips/hilo-addressing.s | 53 |
1 files changed, 42 insertions, 11 deletions
diff --git a/test/MC/Mips/hilo-addressing.s b/test/MC/Mips/hilo-addressing.s index 28459c2067..84b2104c5b 100644 --- a/test/MC/Mips/hilo-addressing.s +++ b/test/MC/Mips/hilo-addressing.s @@ -1,11 +1,42 @@ -# RUN: llvm-mc -show-encoding -triple mips-unknown-unknown %s | FileCheck %s - - .ent hilo_test - .equ addr, 0xdeadbeef -# CHECK: # encoding: [0x3c,0x04,0xde,0xae] - lui $4,%hi(addr) -# CHECK: # encoding: [0x03,0xe0,0x00,0x08] - jr $31 -# CHECK: # encoding: [0x80,0x82,0xbe,0xef] - lb $2,%lo(addr)($4) - .end hilo_test +# RUN: llvm-mc -show-encoding -triple mips-unknown-unknown %s \ +# RUN: | FileCheck %s -check-prefix=CHECK-ENC + +# RUN: llvm-mc -filetype=obj -triple=mipsel-unknown-linux %s \ +# RUN: | llvm-objdump -disassemble - | FileCheck %s -check-prefix=CHECK-INSTR + +# RUN: llvm-mc -filetype=obj -triple=mipsel-unknown-linux %s \ +# RUN: | llvm-readobj -r | FileCheck %s -check-prefix=CHECK-REL + + +# Check that 1 is added to the high 16 bits if bit 15 of the low part is 1. + + .equ addr, 0xdeadbeef + lui $4, %hi(addr) + lb $2, %lo(addr)($4) +# CHECK-ENC: # encoding: [0x3c,0x04,0xde,0xae] +# CHECK-ENC: # encoding: [0x80,0x82,0xbe,0xef] + + +# Check that assembler can handle %hi(label1 - label2) and %lo(label1 - label2) +# expressions. + +$L1: + # Emit zeros so that difference between $L3 and $L1 is 0x30124 bytes. + .fill 0x30124-8 +$L2: + lui $4, %hi($L3-$L1) + addiu $4, $4, %lo($L3-$L1) +# CHECK-INSTR: lui $4, 3 +# CHECK-INSTR: addiu $4, $4, 292 + +$L3: + lui $5, %hi($L2-$L3) + lw $5, %lo($L2-$L3)($5) +# CHECK-INSTR: lui $5, 0 +# CHECK-INSTR: lw $5, -8($5) + + +# Check that relocation is not emitted for %hi(label1 - label2) and +# %lo(label1 - label2) expressions. + +# CHECK-REL-NOT: R_MIPS |