xref: /aosp_15_r20/external/llvm/test/MC/Mips/elf-tls.s (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker// RUN: llvm-mc -filetype=obj -triple mipsel-unknown-linux %s -o - | llvm-readobj -r | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Worker// Check that the appropriate relocations were created.
4*9880d681SAndroid Build Coastguard Worker
5*9880d681SAndroid Build Coastguard Worker// CHECK: Relocations [
6*9880d681SAndroid Build Coastguard Worker// CHECK:   Section {{.*}} .rel.text {
7*9880d681SAndroid Build Coastguard Worker// CHECK:     R_MIPS_TLS_LDM
8*9880d681SAndroid Build Coastguard Worker// CHECK:     R_MIPS_TLS_DTPREL_HI16
9*9880d681SAndroid Build Coastguard Worker// CHECK:     R_MIPS_TLS_DTPREL_LO16
10*9880d681SAndroid Build Coastguard Worker// CHECK:   }
11*9880d681SAndroid Build Coastguard Worker// CHECK: ]
12*9880d681SAndroid Build Coastguard Worker
13*9880d681SAndroid Build Coastguard Worker	.text
14*9880d681SAndroid Build Coastguard Worker	.abicalls
15*9880d681SAndroid Build Coastguard Worker	.section	.mdebug.abi32,"",@progbits
16*9880d681SAndroid Build Coastguard Worker	.file	"/home/espindola/llvm/llvm/test/MC/Mips/elf-tls.ll"
17*9880d681SAndroid Build Coastguard Worker	.text
18*9880d681SAndroid Build Coastguard Worker	.globl	f1
19*9880d681SAndroid Build Coastguard Worker	.align	2
20*9880d681SAndroid Build Coastguard Worker	.type	f1,@function
21*9880d681SAndroid Build Coastguard Worker	.set	nomips16
22*9880d681SAndroid Build Coastguard Worker	.ent	f1
23*9880d681SAndroid Build Coastguard Workerf1:                                     # @f1
24*9880d681SAndroid Build Coastguard Worker	.frame	$sp,24,$ra
25*9880d681SAndroid Build Coastguard Worker	.mask 	0x80000000,-4
26*9880d681SAndroid Build Coastguard Worker	.fmask	0x00000000,0
27*9880d681SAndroid Build Coastguard Worker	.set	noreorder
28*9880d681SAndroid Build Coastguard Worker	.set	nomacro
29*9880d681SAndroid Build Coastguard Worker	.set	noat
30*9880d681SAndroid Build Coastguard Worker# BB#0:                                 # %entry
31*9880d681SAndroid Build Coastguard Worker	lui	$2, %hi(_gp_disp)
32*9880d681SAndroid Build Coastguard Worker	addiu	$2, $2, %lo(_gp_disp)
33*9880d681SAndroid Build Coastguard Worker	addiu	$sp, $sp, -24
34*9880d681SAndroid Build Coastguard Worker	sw	$ra, 20($sp)            # 4-byte Folded Spill
35*9880d681SAndroid Build Coastguard Worker	addu	$gp, $2, $25
36*9880d681SAndroid Build Coastguard Worker	lw	$25, %call16(__tls_get_addr)($gp)
37*9880d681SAndroid Build Coastguard Worker	jalr	$25
38*9880d681SAndroid Build Coastguard Worker	addiu	$4, $gp, %tlsgd(t1)
39*9880d681SAndroid Build Coastguard Worker	lw	$2, 0($2)
40*9880d681SAndroid Build Coastguard Worker	lw	$ra, 20($sp)            # 4-byte Folded Reload
41*9880d681SAndroid Build Coastguard Worker	jr	$ra
42*9880d681SAndroid Build Coastguard Worker	addiu	$sp, $sp, 24
43*9880d681SAndroid Build Coastguard Worker	.set	at
44*9880d681SAndroid Build Coastguard Worker	.set	macro
45*9880d681SAndroid Build Coastguard Worker	.set	reorder
46*9880d681SAndroid Build Coastguard Worker	.end	f1
47*9880d681SAndroid Build Coastguard Worker$tmp0:
48*9880d681SAndroid Build Coastguard Worker	.size	f1, ($tmp0)-f1
49*9880d681SAndroid Build Coastguard Worker
50*9880d681SAndroid Build Coastguard Worker	.globl	f2
51*9880d681SAndroid Build Coastguard Worker	.align	2
52*9880d681SAndroid Build Coastguard Worker	.type	f2,@function
53*9880d681SAndroid Build Coastguard Worker	.set	nomips16
54*9880d681SAndroid Build Coastguard Worker	.ent	f2
55*9880d681SAndroid Build Coastguard Workerf2:                                     # @f2
56*9880d681SAndroid Build Coastguard Worker	.frame	$sp,24,$ra
57*9880d681SAndroid Build Coastguard Worker	.mask 	0x80000000,-4
58*9880d681SAndroid Build Coastguard Worker	.fmask	0x00000000,0
59*9880d681SAndroid Build Coastguard Worker	.set	noreorder
60*9880d681SAndroid Build Coastguard Worker	.set	nomacro
61*9880d681SAndroid Build Coastguard Worker	.set	noat
62*9880d681SAndroid Build Coastguard Worker# BB#0:                                 # %entry
63*9880d681SAndroid Build Coastguard Worker	lui	$2, %hi(_gp_disp)
64*9880d681SAndroid Build Coastguard Worker	addiu	$2, $2, %lo(_gp_disp)
65*9880d681SAndroid Build Coastguard Worker	addiu	$sp, $sp, -24
66*9880d681SAndroid Build Coastguard Worker	sw	$ra, 20($sp)            # 4-byte Folded Spill
67*9880d681SAndroid Build Coastguard Worker	addu	$gp, $2, $25
68*9880d681SAndroid Build Coastguard Worker	lw	$25, %call16(__tls_get_addr)($gp)
69*9880d681SAndroid Build Coastguard Worker	jalr	$25
70*9880d681SAndroid Build Coastguard Worker	addiu	$4, $gp, %tlsgd(t2)
71*9880d681SAndroid Build Coastguard Worker	lw	$2, 0($2)
72*9880d681SAndroid Build Coastguard Worker	lw	$ra, 20($sp)            # 4-byte Folded Reload
73*9880d681SAndroid Build Coastguard Worker	jr	$ra
74*9880d681SAndroid Build Coastguard Worker	addiu	$sp, $sp, 24
75*9880d681SAndroid Build Coastguard Worker	.set	at
76*9880d681SAndroid Build Coastguard Worker	.set	macro
77*9880d681SAndroid Build Coastguard Worker	.set	reorder
78*9880d681SAndroid Build Coastguard Worker	.end	f2
79*9880d681SAndroid Build Coastguard Worker$tmp1:
80*9880d681SAndroid Build Coastguard Worker	.size	f2, ($tmp1)-f2
81*9880d681SAndroid Build Coastguard Worker
82*9880d681SAndroid Build Coastguard Worker	.globl	f3
83*9880d681SAndroid Build Coastguard Worker	.align	2
84*9880d681SAndroid Build Coastguard Worker	.type	f3,@function
85*9880d681SAndroid Build Coastguard Worker	.set	nomips16
86*9880d681SAndroid Build Coastguard Worker	.ent	f3
87*9880d681SAndroid Build Coastguard Workerf3:                                     # @f3
88*9880d681SAndroid Build Coastguard Worker	.frame	$sp,24,$ra
89*9880d681SAndroid Build Coastguard Worker	.mask 	0x80000000,-4
90*9880d681SAndroid Build Coastguard Worker	.fmask	0x00000000,0
91*9880d681SAndroid Build Coastguard Worker	.set	noreorder
92*9880d681SAndroid Build Coastguard Worker	.set	nomacro
93*9880d681SAndroid Build Coastguard Worker	.set	noat
94*9880d681SAndroid Build Coastguard Worker# BB#0:                                 # %entry
95*9880d681SAndroid Build Coastguard Worker	lui	$2, %hi(_gp_disp)
96*9880d681SAndroid Build Coastguard Worker	addiu	$2, $2, %lo(_gp_disp)
97*9880d681SAndroid Build Coastguard Worker	addiu	$sp, $sp, -24
98*9880d681SAndroid Build Coastguard Worker	sw	$ra, 20($sp)            # 4-byte Folded Spill
99*9880d681SAndroid Build Coastguard Worker	addu	$gp, $2, $25
100*9880d681SAndroid Build Coastguard Worker	lw	$25, %call16(__tls_get_addr)($gp)
101*9880d681SAndroid Build Coastguard Worker	jalr	$25
102*9880d681SAndroid Build Coastguard Worker	addiu	$4, $gp, %tlsldm(f3.i)
103*9880d681SAndroid Build Coastguard Worker	lui	$1, %dtprel_hi(f3.i)
104*9880d681SAndroid Build Coastguard Worker	addu	$1, $1, $2
105*9880d681SAndroid Build Coastguard Worker	lw	$2, %dtprel_lo(f3.i)($1)
106*9880d681SAndroid Build Coastguard Worker	addiu	$2, $2, 1
107*9880d681SAndroid Build Coastguard Worker	sw	$2, %dtprel_lo(f3.i)($1)
108*9880d681SAndroid Build Coastguard Worker	lw	$ra, 20($sp)            # 4-byte Folded Reload
109*9880d681SAndroid Build Coastguard Worker	jr	$ra
110*9880d681SAndroid Build Coastguard Worker	addiu	$sp, $sp, 24
111*9880d681SAndroid Build Coastguard Worker	.set	at
112*9880d681SAndroid Build Coastguard Worker	.set	macro
113*9880d681SAndroid Build Coastguard Worker	.set	reorder
114*9880d681SAndroid Build Coastguard Worker	.end	f3
115*9880d681SAndroid Build Coastguard Worker$tmp2:
116*9880d681SAndroid Build Coastguard Worker	.size	f3, ($tmp2)-f3
117*9880d681SAndroid Build Coastguard Worker
118*9880d681SAndroid Build Coastguard Worker	.type	t1,@object              # @t1
119*9880d681SAndroid Build Coastguard Worker	.section	.tbss,"awT",@nobits
120*9880d681SAndroid Build Coastguard Worker	.globl	t1
121*9880d681SAndroid Build Coastguard Worker	.align	2
122*9880d681SAndroid Build Coastguard Workert1:
123*9880d681SAndroid Build Coastguard Worker	.4byte	0                       # 0x0
124*9880d681SAndroid Build Coastguard Worker	.size	t1, 4
125*9880d681SAndroid Build Coastguard Worker
126*9880d681SAndroid Build Coastguard Worker	.type	f3.i,@object            # @f3.i
127*9880d681SAndroid Build Coastguard Worker	.section	.tdata,"awT",@progbits
128*9880d681SAndroid Build Coastguard Worker	.align	2
129*9880d681SAndroid Build Coastguard Workerf3.i:
130*9880d681SAndroid Build Coastguard Worker	.4byte	1                       # 0x1
131*9880d681SAndroid Build Coastguard Worker	.size	f3.i, 4
132*9880d681SAndroid Build Coastguard Worker
133*9880d681SAndroid Build Coastguard Worker
134*9880d681SAndroid Build Coastguard Worker	.text
135