3 # Check handling of HI16 and LO16 relocations for _gp_disp.
5 # R_MIPS_HI16: (AHL + GP - P) - (short)(AHL + GP - P)
6 # R_MIPS_LO16: AHL + GP - P + 4
7 # where AHL = (AHI << 16) + ALO
9 # RUN: llvm-mc -triple=mipsel -filetype=obj -o=%t-obj %s
10 # RUN: lld -flavor gnu -target mipsel -shared -o %t-so %t-obj
11 # RUN: llvm-objdump -t -disassemble %t-so | FileCheck %s
13 # CHECK: Disassembly of section .text:
15 # CHECK-NEXT: {{[0-9a-f]+}}: 01 00 08 3c lui $8, 1
16 # CHECK-NEXT: {{[0-9a-f]+}}: 01 8f 08 85 lh $8, -28927($8)
17 # CHECK-NEXT: {{[0-9a-f]+}}: 01 00 08 3c lui $8, 1
18 # CHECK-NEXT: {{[0-9a-f]+}}: f7 8e 08 85 lh $8, -28937($8)
19 # CHECK-NEXT: {{[0-9a-f]+}}: 01 00 08 3c lui $8, 1
20 # CHECK-NEXT: {{[0-9a-f]+}}: ef 90 08 85 lh $8, -28433($8)
21 # CHECK-NEXT: {{[0-9a-f]+}}: 01 00 08 3c lui $8, 1
22 # CHECK-NEXT: {{[0-9a-f]+}}: e9 8c 08 85 lh $8, -29463($8)
23 # CHECK-NEXT: {{[0-9a-f]+}}: 03 00 08 3c lui $8, 3
24 # CHECK-NEXT: {{[0-9a-f]+}}: df 8e 08 85 lh $8, -28961($8)
26 # CHECK: SYMBOL TABLE:
27 # CHECK: {{[0-9a-f]+}} g F .text 00000028 glob1
28 # CHECK: {{[0-9a-f]+}} g *ABS* 00000000 _gp_disp
32 lui $t0,%hi(_gp_disp+0x1)
33 lh $t0,%lo(_gp_disp+0x1)($t0)
35 lui $t0,%hi(_gp_disp+(-0x1))
36 lh $t0,%lo(_gp_disp+(-0x1))($t0)
38 lui $t0,%hi(_gp_disp+0x1ff)
39 lh $t0,%lo(_gp_disp+0x1ff)($t0)
41 lui $t0,%hi(_gp_disp+(-0x1ff))
42 lh $t0,%lo(_gp_disp+(-0x1ff))($t0)
44 lui $t0,%hi(_gp_disp+0x1ffff)
45 lh $t0,%lo(_gp_disp+0x1ffff)($t0)