]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/ELF/amdgpu-relocs.s
Vendor import of lld trunk r290819:
[FreeBSD/FreeBSD.git] / test / ELF / amdgpu-relocs.s
1 # RUN: llvm-mc -filetype=obj -triple=amdgcn--amdhsa -mcpu=fiji %s -o %t.o
2 # RUN: ld.lld -shared %t.o -o %t.so
3 # RUN: llvm-readobj -r %t.so | FileCheck %s
4 # RUN: llvm-objdump -s %t.so | FileCheck %s --check-prefix=OBJDUMP
5
6 # REQUIRES: amdgpu
7
8 .text
9
10 kernel0:
11   s_mov_b32 s0, common_var0@GOTPCREL+4
12   s_mov_b32 s0, common_var1@gotpcrel32@lo+4
13   s_mov_b32 s0, common_var2@gotpcrel32@hi+4
14
15   s_mov_b32 s0, global_var0@GOTPCREL+4
16   s_mov_b32 s0, global_var1@gotpcrel32@lo+4
17   s_mov_b32 s0, global_var2@gotpcrel32@hi+4
18
19   s_mov_b32 s0, extern_var0@GOTPCREL+4
20   s_mov_b32 s0, extern_var1@gotpcrel32@lo+4
21   s_mov_b32 s0, extern_var2@gotpcrel32@hi+4
22
23   s_mov_b32 s0, weak_var0@GOTPCREL+4
24   s_mov_b32 s0, weak_var1@gotpcrel32@lo+4
25   s_mov_b32 s0, weak_var2@gotpcrel32@hi+4
26
27   s_mov_b32 s0, weakref_var0@GOTPCREL+4
28   s_mov_b32 s0, weakref_var1@gotpcrel32@lo+4
29   s_mov_b32 s0, weakref_var2@gotpcrel32@hi+4
30
31   s_mov_b32 s0, local_var0+4
32   s_mov_b32 s0, local_var1@rel32@lo+4
33   s_mov_b32 s0, local_var2@rel32@hi+4
34
35   s_endpgm
36
37   .comm    common_var0,1024,4
38   .comm    common_var1,1024,4
39   .comm    common_var2,1024,4
40   .globl   global_var0
41   .globl   global_var1
42   .globl   global_var1
43   .weak    weak_var0
44   .weak    weak_var1
45   .weak    weak_var2
46   .weakref weakref_var0, weakref_alias_var0
47   .weakref weakref_var1, weakref_alias_var1
48   .weakref weakref_var2, weakref_alias_var2
49   .local   local_var0
50   .local   local_var1
51   .local   local_var2
52
53 # R_AMDGPU_ABS32:
54 .section nonalloc, "w", @progbits
55   .long var0, common_var2+4
56   .long var1, common_var1+8
57   .long var2, common_var0+12
58
59 # R_AMDGPU_ABS64:
60 .type ptr, @object
61 .data
62   .globl ptr
63   .p2align 3
64 ptr:
65   .quad temp
66   .size ptr, 8
67
68 # The relocation for local_var{0, 1, 2} and var should be resolved by the
69 # linker.
70 # CHECK: Relocations [
71 # CHECK: .rela.dyn {
72 # CHECK-NEXT: R_AMDGPU_ABS64 common_var0 0x0
73 # CHECK-NEXT: R_AMDGPU_ABS64 common_var1 0x0
74 # CHECK-NEXT: R_AMDGPU_ABS64 common_var2 0x0
75 # CHECK-NEXT: R_AMDGPU_ABS64 extern_var0 0x0
76 # CHECK-NEXT: R_AMDGPU_ABS64 extern_var1 0x0
77 # CHECK-NEXT: R_AMDGPU_ABS64 extern_var2 0x0
78 # CHECK-NEXT: R_AMDGPU_ABS64 global_var0 0x0
79 # CHECK-NEXT: R_AMDGPU_ABS64 global_var1 0x0
80 # CHECK-NEXT: R_AMDGPU_ABS64 global_var2 0x0
81 # CHECK-NEXT: R_AMDGPU_ABS64 temp 0x0
82 # CHECK-NEXT: R_AMDGPU_ABS64 weak_var0 0x0
83 # CHECK-NEXT: R_AMDGPU_ABS64 weak_var1 0x0
84 # CHECK-NEXT: R_AMDGPU_ABS64 weak_var2 0x0
85 # CHECK-NEXT: R_AMDGPU_ABS64 weakref_alias_var0 0x0
86 # CHECK-NEXT: R_AMDGPU_ABS64 weakref_alias_var1 0x0
87 # CHECK-NEXT: R_AMDGPU_ABS64 weakref_alias_var2 0x0
88 # CHECK-NEXT: }
89 # CHECK-NEXT: ]
90
91 # OBJDUMP: Contents of section nonalloc:
92 # OBJDUMP-NEXT: 0000 00000000 14380000 00000000 18340000
93 # OBJDUMP-NEXT: 00000000 1c300000